diff --git a/1-js/01-getting-started/1-intro/article.md b/1-js/01-getting-started/1-intro/article.md index 2f4f518f3..748c03bc6 100644 --- a/1-js/01-getting-started/1-intro/article.md +++ b/1-js/01-getting-started/1-intro/article.md @@ -1,72 +1,119 @@ -# An Introduction to JavaScript +# জাভাস্ক্রিপ্ট পরিচিতি +<<<<<<< HEAD +চলুন দেখে নেওয়া যাক জাভাস্ক্রিপ্ট এর বিশেষ বিশেষ দিকগুলো, আমরা এটি দিয়ে কী করতে পারি, এবং অন্যান্য প্রযুক্তিগুলি যা এর সাথে ভালো কাজ করে। +======= Let's see what's so special about JavaScript, what we can achieve with it, and what other technologies play well with it. +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d -## What is JavaScript? +## জাভাস্ক্রিপ্ট কী? -*JavaScript* was initially created to "make web pages alive". +শুরুতে *জাভাস্ক্রিপ্ট* তৈরি করা হয়েছিল "ওয়েব পেইজগুলি প্রাণবন্ত করতে"। -The programs in this language are called *scripts*. They can be written right in a web page's HTML and run automatically as the page loads. +এই ভাষায় প্রোগ্রামগুলিকে বলা হয় স্ক্রিপ্ট। এগুলি সরাসরি কোনও ওয়েব পেজের HTML এর ভিতরে লেখা হয় এবং পেজটি লোড হওয়ার সাথে সাথে স্বয়ংক্রিয়ভাবে চালু হয়ে যায়। -Scripts are provided and executed as plain text. They don't need special preparation or compilation to run. +স্ক্রিপ্টগুলি সাধারণ টেক্সট এর মতো সরবরাহ এবং এক্সিকিউট হয়। চালানোর জন্য তাদের বিশেষ প্রস্তুতি বা কম্পাইল করার প্রয়োজন নেই। -In this aspect, JavaScript is very different from another language called [Java](https://en.wikipedia.org/wiki/Java_(programming_language)). +এই দিক থেকে, জাভাস্ক্রিপ্ট অন্য একটি প্রোগ্রামিং ভাষা [জাভা](https://bn.wikipedia.org/wiki/Java_(programming_language) থেকে অনেকটাই আলাদা। -```smart header="Why is it called JavaScript?" -When JavaScript was created, it initially had another name: "LiveScript". But Java was very popular at that time, so it was decided that positioning a new language as a "younger brother" of Java would help. +```smart header="কেন এটিকে জাভাস্ক্রিপ বলা হয়?" +যখন জাভাস্ক্রিপ্ট তৈরি করা হয়েছিল, তখন এটির আর একটি নাম ছিল: "লাইভ স্ক্রিপ্ট"। কিন্তু জাভা তখন খুব জনপ্রিয় ছিল, তাই সিদ্ধান্ত নেওয়া হয়েছিল যে জাভার একটি "ছোট ভাই" হিসাবে একটি নতুন ভাষার অবস্থান তৈরিতে সহায়তা করবে। -But as it evolved, JavaScript became a fully independent language with its own specification called [ECMAScript](http://en.wikipedia.org/wiki/ECMAScript), and now it has no relation to Java at all. +তবে বিকশিত হওয়ার সাথে সাথে জাভাস্ক্রিপ্ট [একমা স্ক্রিপ্ট](http://bn.wikipedia.org/wiki/ECMAScript) নামক নিজস্ব স্পেসিফিকেশন সহকারে সম্পূর্ণ স্বাধীন প্রোগ্রামিং ভাষাতে পরিণত হয় এবং এখন জাভার সাথে এর কোনই সম্পর্ক নেই। ``` -Today, JavaScript can execute not only in the browser, but also on the server, or actually on any device that has a special program called [the JavaScript engine](https://en.wikipedia.org/wiki/JavaScript_engine). +বর্তমানে, জাভাস্ক্রিপ্ট শুধু ব্রাউজারেই নয়, বরং সার্ভারে বা [জাভাস্ক্রিপ্ট ইঞ্জিন](https://bn.wikipedia.org/wiki/JavaScript_engine) নামক একটি বিশেষ প্রোগ্রাম রয়েছে এমন যে কোনও যন্ত্রে কাজ করতে পারে। -The browser has an embedded engine sometimes called a "JavaScript virtual machine". +ব্রাউজারে "জাভাস্ক্রিপ্ট ভার্চুয়াল মেশিন" নামে পরিচিত একটি মেশিন সংযুক্ত থাকে। -Different engines have different "codenames". For example: +বিভিন্ন ইঞ্জিনের আলাদা আলাদা "কোডনাম" রয়েছে । উদাহরণ স্বরূপ: +<<<<<<< HEAD +<<<<<<< HEAD +- [V8](https://bn.wikipedia.org/wiki/V8_(JavaScript_engine) -- ক্রোম এবং অপেরা +- [স্পাইডার মাংকি](https://bn.wikipedia.org/wiki/SpiderMonkey) -- ফায়ারফক্স. +- ...আরও অনেক কোডনাম রয়েছে যেমন ইন্টারনেট এক্সপ্লোরার এর বিভিন্ন ভার্সন এর জন্য "Trident" এবং "Chakra", মাইক্রোসফ্ট এজের জন্য "ChakraCore", সাফারির জন্য "Nitro" এবং "SquirrelFish" ইত্যাদি। +======= +- [V8](https://en.wikipedia.org/wiki/V8_(JavaScript_engine)) -- in Chrome and Opera. +- [SpiderMonkey](https://en.wikipedia.org/wiki/SpiderMonkey) -- in Firefox. +- ...There are other codenames like "Chakra" for IE, "ChakraCore" for Microsoft Edge, "Nitro" and "SquirrelFish" for Safari, etc. +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d + +উপরের টার্ম গুলি মনে রাখা ভাল, কারণ সেগুলি ইন্টারনেটে ডেভেলপার আর্টিকেলে ব্যবহৃত হয়। আমরাও সেগুলো ব্যবহার করব। উদাহরণস্বরূপ, যদি "একটি X ফিচার V8 এ সাপোর্ট করে", তবে সম্ভবত এটি ক্রোম এবং অপেরাতেও কাজ করে। +======= - [V8](https://en.wikipedia.org/wiki/V8_(JavaScript_engine)) -- in Chrome, Opera and Edge. - [SpiderMonkey](https://en.wikipedia.org/wiki/SpiderMonkey) -- in Firefox. - ...There are other codenames like "Chakra" for IE, "JavaScriptCore", "Nitro" and "SquirrelFish" for Safari, etc. The terms above are good to remember because they are used in developer articles on the internet. We'll use them too. For instance, if "a feature X is supported by V8", then it probably works in Chrome, Opera and Edge. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -```smart header="How do engines work?" +```smart header="ইঞ্জিনগুলি কিভাবে কাজ করে?" -Engines are complicated. But the basics are easy. +ইঞ্জিনগুলি জটিল। তবে বেসিকগুলি সহজ +<<<<<<< HEAD +১. ইঞ্জিন (ব্রাউজারের সাথে সংযুক্ত থাকে) স্ক্রিপ্টটি পড়ে ("পার্স করে")। +২. তারপরে এটি স্ক্রিপ্টটিকে মেশিনের ভাষায় রূপান্তর ("কম্পাইল") করে। +৩. এবং তারপরে মেশিন খুব দ্রুত কোডটি চালায় +======= 1. The engine (embedded if it's a browser) reads ("parses") the script. 2. Then it converts ("compiles") the script to machine code. 3. And then the machine code runs, pretty fast. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -The engine applies optimizations at each step of the process. It even watches the compiled script as it runs, analyzes the data that flows through it, and further optimizes the machine code based on that knowledge. +ইঞ্জিনটি এই প্রক্রিয়ার প্রতিটি ধাপে অপ্টিমাইজেশন করে। এমনকি এটি স্ক্রিপ্ট চলার সময়ও পর্যবেক্ষন করতে থাকে, এর মধ্য দিয়ে প্রবাহিত ডেটা বিশ্লেষণ করে এবং সেই ধারনার উপর ভিত্তি করে মেশিন কোড অপ্টিমাইজ করে। ``` -## What can in-browser JavaScript do? +## জাভাস্ক্রিপ্ট ব্রাউজারে কী করতে পারে ? +<<<<<<< HEAD +আধুনিক জাভাস্ক্রিপ্ট একটি "নিরাপদ" প্রোগ্রামিং ভাষা। এটি মেমরি বা সিপিইউতে নিম্ন-স্তরের এক্সেস দেয় না, কারণ এটি প্রাথমিকভাবে ব্রাউজারগুলির জন্য তৈরি করা হয়েছিল যার এসব এক্সেস এর প্রয়োজন হত না। +======= Modern JavaScript is a "safe" programming language. It does not provide low-level access to memory or the CPU, because it was initially created for browsers which do not require it. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -JavaScript's capabilities greatly depend on the environment it's running in. For instance, [Node.js](https://wikipedia.org/wiki/Node.js) supports functions that allow JavaScript to read/write arbitrary files, perform network requests, etc. +জাভাস্ক্রিপ্টের সামর্থ যে এনভায়রনমেন্ট এ চলছে তার উপর অনেক বেশি নির্ভর করে। উদাহরণস্বরূপ, [Node.js](https://wikipedia.org/wiki/Node.js) এমন কিছু ফাংশন সমর্থন করে যা জাভাস্ক্রিপ্ট কে যেকোনো ফাইল পড়তে/এডিট করতে, নেটওয়ার্ক রিকুয়েস্ট ইত্যাদি করার সুবিধা দেয়। -In-browser JavaScript can do everything related to webpage manipulation, interaction with the user, and the webserver. +ব্রাউজারে জাভাস্ক্রিপ্ট ওয়েবপেইজ পরিবর্তন, ব্যবহারকারীর সাথে যোগাযোগ এবং ওয়েবসার্ভার সম্পর্কিত সব কিছুই করতে পারে। -For instance, in-browser JavaScript is able to: +উদাহরণস্বরূপ, ব্রাউজারে জাভাস্ক্রিপ্ট যা করতে সক্ষম: -- Add new HTML to the page, change the existing content, modify styles. -- React to user actions, run on mouse clicks, pointer movements, key presses. -- Send requests over the network to remote servers, download and upload files (so-called [AJAX](https://en.wikipedia.org/wiki/Ajax_(programming)) and [COMET](https://en.wikipedia.org/wiki/Comet_(programming)) technologies). -- Get and set cookies, ask questions to the visitor, show messages. -- Remember the data on the client-side ("local storage"). +- ওয়েবপেজে নতুন HTML যুক্ত করা, পেইজ এর কন্টেন্ট পরিবর্তন করা, ডিজাইনে সংশোধন করা । +- ব্যবহারকারীর একশন, মাউসের ক্লিক, মাউস পয়েন্টার এর নড়াচড়া এবং কীবোর্ড এ কি চাপলে প্রতিক্রিয়া জানানো। +- রিমোট সার্ভার এ রিকুয়েস্ট পাঠানো, ফাইল ডাউনলোড এবং আপলোড করা (উল্লেখযোগ্য [AJAX](https://bn.wikipedia.org/wiki/Ajax_(programming) এবং [COMET]() technologies). +- কুকিজ আনা এবং সেট করা, ব্যবহারকারীদের কাছে প্রশ্ন জিজ্ঞাসা করা, ম্যাসেজ দেখানো। +- ক্লায়েন্ট-সাইড ("লোকাল স্টোরেজ") এ ডেটা সংরক্ষণ করা। -## What CAN'T in-browser JavaScript do? +## জাভাস্ক্রিপ্ট ব্রাউজারে কী করতে পারে না? +<<<<<<< HEAD +ব্রাউজারে জাভাস্ক্রিপ্টের ক্ষমতাগুলি ব্যবহারকারীর সুরক্ষার জন্য সীমাবদ্ধ। উদ্দেশ্যটি হ'ল কোনও খারাপ ওয়েবপেজকে ব্যক্তিগত তথ্যে প্রবেশ করা বা ব্যবহারকারীর ডেটা ক্ষতিগ্রস্থ করা থেকে বিরত রাখা। +======= JavaScript's abilities in the browser are limited to protect the user's safety. The aim is to prevent an evil webpage from accessing private information or harming the user's data. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 + +এই জাতীয় বিধিনিষেধের উদাহরণগুলির মধ্যে রয়েছে: + +একটি ওয়েবপেজে জাভাস্ক্রিপ্ট হার্ড ডিস্কে যেকোনো ফাইল পড়তে / লিখতে, সেগুলি কপি করতে বা প্রোগ্রামগুলি চালাতে পারে না। এটির ওএস এর সিস্টেম ফাংশন গুলির সরাসরি এক্সেস নেই। + + আধুনিক ব্রাউজারগুলি এটিকে ফাইল নিয়ে কাজ করার অনুমতি দেয়, তবে এর এক্সেস সীমাবদ্ধ এবং কেবলমাত্র যদি ব্যবহারকারী নির্দিষ্ট কিছু কাজ করেন যেমন ব্রাউজার উইন্ডোতে একটি ফাইল "ড্রপ" করা বা একটি "" `ট্যাগের মাধ্যমে ফাইল সিলেক্ট করা। + +<<<<<<< HEAD + ক্যামেরা / মাইক্রোফোন এবং অন্যান্য যন্ত্রগুলির সাথে ইন্টারঅ্যাক্ট করার উপায় রয়েছে তবে তাদের ব্যবহারকারীর সুস্পষ্ট অনুমতি প্রয়োজন। সুতরাং একটি জাভাস্ক্রিপ্ট-সক্ষম ওয়েবপেজ চাইলেই কোনও ওয়েব-ক্যামেরা চালু করতে পারে না, আশেপাশের কোন কিছু দেখতে পারে না এবং [NSA](https://bn.wikedia.org/wiki/National_Security_Agency) এর কাছে সেগুলি পাঠাতে পারে না। -Examples of such restrictions include: +- ভিন্ন ভিন্ন ট্যাব / উইন্ডো সাধারণত একে অপরের সম্পর্কে জানে না। কখনও কখনও তারা জানে, যেমন, যখন একটি উইন্ডো জাভাস্ক্রিপ্ট ব্যবহার করে আরেকটি উইন্ডো খুলে। তবে এই ক্ষেত্রেও, যদি ভিন্ন কোন সাইট থেকে (অন্য কোনও ডোমেন, প্রোটোকল বা পোর্ট থেকে) আসে তবে এক পেইজের জাভাস্ক্রিপ্ট অন্য পেইজের এক্সেস পায় না। -- JavaScript on a webpage may not read/write arbitrary files on the hard disk, copy them or execute programs. It has no direct access to OS functions. + একে "same source policy" বলা হয়। এই কাজটি করার জন্য, _ উভয় পেজে _ অবশ্যই ডেটা আদান-প্রদান এর সাথে সম্মতি থাকতে হবে এবং একটি বিশেষ জাভাস্ক্রিপ্ট কোড থাকতে পারে যা এটি পরিচালনা করে। আমরা এগুলো টিউটোরিয়ালে আলোচনা করব। - Modern browsers allow it to work with files, but the access is limited and only provided if the user does certain actions, like "dropping" a file into a browser window or selecting it via an `` tag. + এই সীমাবদ্ধতাটিও ব্যবহারকারীর সুরক্ষার জন্য। এই সাইটটির `http: // anysite.com` একটি পেজে যা ব্যাবহারকারী খুলে রেখেছে অবশ্যই তা অন্য কোনো ট্যাবে খুলে রাখা সাইটে URL- `http: // gmail.com` প্রবেশ করতে এবং সেখান থেকে তথ্য চুরি করতে সক্ষম হবে না। +- জাভাস্ক্রিপ্ট সহজেই ইন্টারনেট এর মাধ্যমে সার্ভারে যোগাযোগ করতে পারে যেখান থেকে বর্তমান পেজটি এসেছে। তবে অন্যান্য সাইট / ডোমেন থেকে ডেটা গ্রহণের ক্ষমতা এর নেই। যদিও এটি সম্ভব, তবে এর জন্যে রিমোট সার্ভার এর সাথে আলাদা চুক্তি (HTTP headers এ বর্ণনা করা হয়েছে) থাকতে হবে। এটিও একটি সুরক্ষা সীমাবদ্ধতা। + +![](limitations.svg) + +জাভাস্ক্রিপ্ট যদি ব্রাউজারের বাইরে ব্যবহার করা হয় তবে এসব সীমাবদ্ধতা থাকে না, যেমন সার্ভার। আধুনিক ব্রাউজারগুলি প্লাগইন / এক্সটেনশন গুলিকে অতিরিক্ত পার্মিশন চেয়ে নিতে দেয়। +======= There are ways to interact with the camera/microphone and other devices, but they require a user's explicit permission. So a JavaScript-enabled page may not sneakily enable a web-camera, observe the surroundings and send the information to the [NSA](https://en.wikipedia.org/wiki/National_Security_Agency). - Different tabs/windows generally do not know about each other. Sometimes they do, for example when one window uses JavaScript to open the other one. But even in this case, JavaScript from one page may not access the other page if they come from different sites (from a different domain, protocol or port). @@ -78,34 +125,67 @@ Examples of such restrictions include: ![](limitations.svg) Such limitations do not exist if JavaScript is used outside of the browser, for example on a server. Modern browsers also allow plugins/extensions which may ask for extended permissions. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -## What makes JavaScript unique? +## কী জাভাস্ক্রিপ্টকে অতুলনীয় করে তোলে? -There are at least *three* great things about JavaScript: +জাভাস্ক্রিপ্ট সম্পর্কে কমপক্ষে _ তিনটি _ দুর্দান্ত জিনিস রয়েছে: +<<<<<<< HEAD +```তুলনা ++ HTML/CSS এর সাথে সম্পূর্ণ ইন্টিগ্রেশন। ++ সহজ জিনিস সহজভাবে করা হয়। ++ প্রত্যেকটা প্রধান ব্রাউজারেই স্বাভাবিক ভাবে চলে। +======= ```compare + Full integration with HTML/CSS. + Simple things are done simply. + Supported by all major browsers and enabled by default. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ``` -JavaScript is the only browser technology that combines these three things. -That's what makes JavaScript unique. That's why it's the most widespread tool for creating browser interfaces. +জাভাস্ক্রিপ্ট একমাত্র ব্রাউজার প্রযুক্তি যা এই তিনটি জিনিসকে একত্রিত করে। +<<<<<<< HEAD +এটিই জাভাস্ক্রিপ্টকে অনন্য করে তোলে। এ কারণেই এটি ব্রাউজার ইন্টারফেস তৈরির জন্য সবচেয়ে জনপ্রিয় টুল। +======= That said, JavaScript can be used to create servers, mobile applications, etc. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -## Languages "over" JavaScript +বলা হয়ে থাকে, জাভাস্ক্রিপ্ট দিয়ে সার্ভার, মোবাইল অ্যাপ্লিকেশন ইত্যাদি তৈরি করা যায়। -The syntax of JavaScript does not suit everyone's needs. Different people want different features. +## জাভাস্ক্রিপ্ট এর "উপর" প্রোগ্রামিং ভাষাগুলো -That's to be expected, because projects and requirements are different for everyone. +জাভাস্ক্রিপ্টের সিনট্যাক্স সবার প্রয়োজনের সাথে খাপ খায় না। বিভিন্ন লোক বিভিন্ন বৈশিষ্ট্য চায়। +<<<<<<< HEAD +এটাই অবশ্য স্বাভাবিক, কারণ প্রজেক্ট এবং প্রয়োজনীয়তা সবার জন্য আলাদা। +======= So, recently a plethora of new languages appeared, which are *transpiled* (converted) to JavaScript before they run in the browser. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Modern tools make the transpilation very fast and transparent, actually allowing developers to code in another language and auto-converting it "under the hood". +সুতরাং সম্প্রতি নতুন ভাষাগুলির আধিক্য উপস্থিত হয়েছে, যা ব্রাউজারে চালানোর আগে জাভাস্ক্রিপ্টে _ট্রান্সপাইল_ (রূপান্তরিত) হয়। -Examples of such languages: +আধুনিক টুলগুলি এই ট্রান্সপাইলেশনকে খুব দ্রুত এবং স্বচ্ছ করে তোলে, যা আসলে ডেভেলপার দের অন্য প্রোগ্রামিং ভাষায় কোড করার সুযোগ দেয় এবং এটিকে অভ্যন্তরে ("Under the hood") স্বয়ংক্রিয়ভাবে রূপান্তরিত করে। + +<<<<<<< HEAD +এই জাতীয় প্রোগ্রামিং ভাষার উদাহরণ: + +<<<<<<< HEAD +- [কফিস্ক্রিপ্ট](http://coffeescript.org/) জাভাস্ক্রিপ্টের জন্য একটি "সিনট্যাকটিক সুগার"। এটি সংক্ষিপ্ত সিনট্যাক্স নিয়ে আসে, আমাদের আরও পরিষ্কার এবং আরও সুনির্দিষ্ট কোড লেখার সুযোগ দেয়। সাধারণত, রুবি (একটি প্রোগ্রামিং ভাষা) ডেভেলপার রা এটি পছন্দ করে। +- [টাইপস্ক্রিপ্ট](http://www.typescriptlang.org/) "স্ট্রিক্ট ডাটা টাইপিং" এ জোর দিয়েছিলো ডেভেলপমেন্ট ও জটিল সমস্যা গুলোকে সহজ করার জন্য। এটি মাইক্রোসফ্ট তৈরি করেছে। +- [ফ্লো](http://flow.org/) ডাটা টাইপিং যুক্ত করে, তবে একটু অন্যভাবে। ফেইসবুক এটি তৈরি করেছে। +- [ডার্ট](https://www.dartlang.org/) একটি স্বতন্ত্র প্রোগ্রামিং ভাষা যার নিজস্ব ইঞ্জিন রয়েছে যা ব্রাউজার ছাড়াও (মোবাইল অ্যাপ্লিকেশন হিসাবে) চালানো হয়, তবে এটি জাভাস্ক্রিপ্টে স্থানান্তরিত করা যায়। এটি গুগল তৈরী করছে। +======= +- [CoffeeScript](http://coffeescript.org/) is a "syntactic sugar" for JavaScript. It introduces shorter syntax, allowing us to write clearer and more precise code. Usually, Ruby devs like it. +- [TypeScript](http://www.typescriptlang.org/) is concentrated on adding "strict data typing" to simplify the development and support of complex systems. It is developed by Microsoft. +- [Flow](http://flow.org/) also adds data typing, but in a different way. Developed by Facebook. +- [Dart](https://www.dartlang.org/) is a standalone language that has its own engine that runs in non-browser environments (like mobile apps), but also can be transpiled to JavaScript. Developed by Google. +- [Brython](https://brython.info/) is a Python transpiler to JavaScript that allow to write application in pure Python without JavaScript. +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d +আরো অনেক আছে। যদিও আমরা যদি ট্রান্সপাইলড ল্যাঙ্গুয়েজ গুলির মধ্যে যেকোনো একটি ব্যবহার করি তবে আমরা কী করছি তা বুঝতে আমাদের জাভাস্ক্রিপ্ট জানা উচিত। +======= - [CoffeeScript](https://coffeescript.org/) is "syntactic sugar" for JavaScript. It introduces shorter syntax, allowing us to write clearer and more precise code. Usually, Ruby devs like it. - [TypeScript](https://www.typescriptlang.org/) is concentrated on adding "strict data typing" to simplify the development and support of complex systems. It is developed by Microsoft. - [Flow](https://flow.org/) also adds data typing, but in a different way. Developed by Facebook. @@ -114,9 +194,16 @@ Examples of such languages: - [Kotlin](https://kotlinlang.org/docs/reference/js-overview.html) is a modern, concise and safe programming language that can target the browser or Node. There are more. Of course, even if we use one of these transpiled languages, we should also know JavaScript to really understand what we're doing. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -## Summary +## সারাংশ +<<<<<<< HEAD +- জাভাস্ক্রিপ্ট প্রথমে শুধুমাত্র-ব্রাউজার ভাষা হিসাবে তৈরি করা হয়েছিল, তবে এখন এটি অন্যান্য অনেক জায়গাতেই ব্যবহৃত হয়। +- বর্তমানে, জাভাস্ক্রিপ্ট HTML / CSS সম্পূর্ণ ইন্টিগ্রেশনের সাথে ব্রাউজারের বহুল প্রচারিত প্রোগ্রামিং ভাষা হিসাবে একটি বিশেষ অবস্থানে রয়েছে। +- এমন অনেক প্রোগ্রামিং ভাষা রয়েছে যা জাভাস্ক্রিপ্টে "রূপান্তরিত" হয়ে যায় এবং নির্দিষ্ট বৈশিষ্ট্য সরবরাহ করে। জাভাস্ক্রিপ্টে দক্ষতা অর্জনের পরে কমপক্ষে সংক্ষেপে এগুলি একবার দেখার পরামর্শ দেওয়া হয়। +======= - JavaScript was initially created as a browser-only language, but it is now used in many other environments as well. - Today, JavaScript has a unique position as the most widely-adopted browser language, fully integrated with HTML/CSS. - There are many languages that get "transpiled" to JavaScript and provide certain features. It is recommended to take a look at them, at least briefly, after mastering JavaScript. +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d diff --git a/1-js/01-getting-started/2-manuals-specifications/article.md b/1-js/01-getting-started/2-manuals-specifications/article.md index 3fa243336..5a30fdddd 100644 --- a/1-js/01-getting-started/2-manuals-specifications/article.md +++ b/1-js/01-getting-started/2-manuals-specifications/article.md @@ -1,37 +1,69 @@ -# Manuals and specifications +# ম্যানুয়াল ও স্পেসিফিকেশন +<<<<<<< HEAD +এই বইটি একটি _টিউটরিয়াল।_ এর উদ্দেশ্য হল আপনাকে আস্তে আস্তে ভাষাটি শিখতে সাহায্য করা। কিন্তু আপনি ব্যাসিকগুলো একবার মোটামুটি শিখে গেলে অন্য আরো সোর্সের প্রয়োজন পড়বে। +======= This book is a *tutorial*. It aims to help you gradually learn the language. But once you're familiar with the basics, you'll need other resources. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -## Specification +## স্পেসিফিকেশন -[The ECMA-262 specification](https://www.ecma-international.org/publications/standards/Ecma-262.htm) contains the most in-depth, detailed and formalized information about JavaScript. It defines the language. +[ECMA-262 স্পেসিফিকেশনে](https://www.ecma-international.org/publications/standards/Ecma-262.htm) জাভাস্ক্রিপ্টের সবচেয়ে গভীর, বিস্তারিত ও আনুষ্ঠানিক তথ্য আছে। এটাই ভাষাটিকে সংজ্ঞায়িত করে। -But being that formalized, it's difficult to understand at first. So if you need the most trustworthy source of information about the language details, the specification is the right place. But it's not for everyday use. +কিন্তু এত বেশি আনুষ্ঠানিক হওয়ার কারণে প্রথমদিকে এটি বুঝতে বেশ অসুবিধা হয়। তাই আপনার যদি ভাষার বিস্তারিত ব্যাপারগুলোতে সবচেয়ে বিশ্বস্ত সোর্সের প্রয়োজন হয়, তাহলে এই স্পেসিফিকেশনটি দেখতে হবে। কিন্তু এটি দৈনন্দিন ব্যবহারের জন্য নয়। +<<<<<<< HEAD +প্রতি বছর একটি করে নতুন স্পেসিফিকেশন ভার্সন রিলিজ হয়। মধ্যবর্তী রিলিজসমূহ, সর্বশেষ স্পেসিফিকেশনের খসড়া এখানে পাওয়া যাবে: . +======= A new specification version is released every year. Between these releases, the latest specification draft is at . +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -To read about new bleeding-edge features, including those that are "almost standard" (so-called "stage 3"), see proposals at . +"প্রায় স্ট্যান্ডার্ড" (তথাকথিত "স্টেজ-৩") ফিচারগুলোসহ একেবারে নতুন ও প্রান্তীয় ফিচারগুলোর ব্যাপারে পড়তে এখানকার প্রস্তাবগুলো দেখুন: +<<<<<<< HEAD +আর আপনি যদি ব্রাউজারের জন্য ডেভেলাপ করেন তাহলে এ বিষয়ে বিস্তারিত ভাবে এই বইয়ের [দ্বিতীয় অংশে](info:browser-environment) আলোচনা করা হয়েছে। +======= Also, if you're developing for the browser, then there are other specifications covered in the [second part](info:browser-environment) of the tutorial. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -## Manuals +## ম্যানুয়াল +<<<<<<< HEAD +- **MDN (Mozilla) JavaScript Reference** হচ্ছে উদাহরণ ও অন্যান্য তথ্যসহ একটি ম্যানুয়াল। ভাষার নির্দিষ্ট কোন ফাংশন, মেথড ইত্যাদির ব্যাপারে বিস্তারিত তথ্যের জন্য এটি খুবই ভাল। + + পাওয়া যাবে এখানে: . + + যদিও বেশিরভাগ সময় ইন্টারনেটে সার্চ করলেই ভাল হয়। সার্চ করার সময় "MDN [term]" ব্যবহার করুন। যেমন `parseInt` ফাংশনের জন্য সার্চ করতে + + +* **MSDN** – জাভাস্ক্রিপ্টসহ অনেক তথ্যসমৃদ্ধ মাইক্রোসফ্টের ম্যানুয়াল (ওরা অনেকসময় বলে JScript)। যদি নির্দিষ্টভাবে ইন্টারনেট এক্সপ্লোরারের ব্যাপারে কিছু লাগে তাহলে ঐখানে যাওয়াই ভাল: . + + আর "RegExp MSDN" অথবা "RegExp MSDN jscript" আকারেও ইন্টারনেট সার্চ করতে পারেন। +======= - **MDN (Mozilla) JavaScript Reference** is the main manual with examples and other information. It's great to get in-depth information about individual language functions, methods etc. You can find it at . Although, it's often best to use an internet search instead. Just use "MDN [term]" in the query, e.g. to search for the `parseInt` function. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 + +## কম্প্যাটিবিলিটি টেবিল -## Compatibility tables +জাভাস্ক্রিপ্ট একটি উন্নয়ণশীল ভাষা, নতুন নতুন ফিচার নিয়মিত যোগ করা হয়। -JavaScript is a developing language, new features get added regularly. +ব্রাউজার ভিত্তিক বা অন্যান্য ইন্জিনগুলোতে এগুলোর সাপোর্ট দেখুন: -To see their support among browser-based and other engines, see: +<<<<<<< HEAD +- - ফিচারভিত্তিক সাপোর্টের টেবিল। যেমন- কোন ইন্জিনগুলো অধুনিক ক্রিপ্টোগ্রাফি ফাংশনগুলো সাপোর্ট করে দেখতে: . +- - ভাষার ফিচারসমূহ ও কোন ইন্জিনগুলো সেগুলো সাপোর্ট করে বা করে না তার উপর একটি টেবিল। +এই সবগুলো রিসোর্সই সত্যিকারের ডেভেলাপমেন্টে কাজে লাগে। যেহেতু এগুলো ভাষার বিস্তারিত, সেগুলোর সাপোর্ট ইত্যাদি ব্যাপারে মূল্যবান তথ্য ধারণ করে। +======= - - per-feature tables of support, e.g. to see which engines support modern cryptography functions: . - - a table with language features and engines that support those or don't support. All these resources are useful in real-life development, as they contain valuable information about language details, their support, etc. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Please remember them (or this page) for the cases when you need in-depth information about a particular feature. +দয়া করে এগুলো মনে রাখবেন (অথবা এই পেজটি)। যখন কোন একটি নির্দিষ্ট ফিচারের ব্যাপারে বিস্তারিত তথ্য লাগবে তখন এগুলো কাজে আসবে। diff --git a/1-js/01-getting-started/3-code-editors/article.md b/1-js/01-getting-started/3-code-editors/article.md index ca6194741..c3f11df83 100644 --- a/1-js/01-getting-started/3-code-editors/article.md +++ b/1-js/01-getting-started/3-code-editors/article.md @@ -1,49 +1,68 @@ -# Code editors +# কোড এডিটরঃ -A code editor is the place where programmers spend most of their time. +একজন প্রোগ্রামার তার জীবনের বড় একটা সময় কাঁটায় কোড এডিটরের সাথে। -There are two main types of code editors: IDEs and lightweight editors. Many people use one tool of each type. +প্রধানত দুই প্রকারের কোড এডিটর রয়েছে। IDE ও লাইটওয়েট এডিটর সমূহ। প্রায় অনেকেই একটি IDE ও একটি লাইটওয়েট এডিটর ব্যবহার করে থাকেন। ## IDE -The term [IDE](https://en.wikipedia.org/wiki/Integrated_development_environment) (Integrated Development Environment) refers to a powerful editor with many features that usually operates on a "whole project." As the name suggests, it's not just an editor, but a full-scale "development environment." +[IDE](https://en.wikipedia.org/wiki/Integrated_development_environment) বলতে মুলত বুঝায় যে - (একটি সমন্বিত ডেভেলপমেন্ট পরিবেশ) যার সাথে একটি পাওয়ারফুল এডিটরও থাকে, যাতে অনেক অনেক কার্যকারী ফিচারসমূহ থাকে। যেগুলো একজন ডেভেলপারের জন্য একটি পূর্ণ প্রোজেক্ট সম্পূর্ণ করতে অনেক সহায়তা করে। নাম থেকে যা বুঝা যায় তা হল এটি শুধুমাত্র একটি এডিটর নয়, বরং একটি প্রোজেক্ট করার জন্য স্বয়ংসম্পূর্ণ ডেভেলপমেন্ট পরিবেশ। -An IDE loads the project (which can be many files), allows navigation between files, provides autocompletion based on the whole project (not just the open file), and integrates with a version management system (like [git](https://git-scm.com/)), a testing environment, and other "project-level" stuff. +একটি IDE একটি সম্পূর্ণ প্রোজেক্ট কে লোড করতে পারে, যাতে অনেক অনেক ফাইল থাকতে পারে। ইহা ফাইল গুলো নেভিগেট করতে সাহায্য করবে এবং অটোকমপ্লিট সাজেসন দিবে পুরো প্রোজেক্টের উপর ধারণা করে, শুধু মাত্র ওপেন করা ফাইলের উপর ধারণা করে নয়। এটি একটি ভার্শন কন্ট্রোল সিস্টেমের (যেমনঃ [গিট](https://git-scm.com/) সাথে সমন্বিত ভাবে কাজ করবে। এতে একটি টেস্টিং পরিবেশ থাকবে। এছাড়াও একটি প্রোজেক্ট সম্পূর্ণ করতে প্রয়োজনীয় অন্যান্য সুবিধা সমূহ থাকবে। -If you haven't selected an IDE yet, consider the following options: +আপনি যদি এখনো কোন IDE নির্বাচন না করে থাকেন, তবে নিচের যেকোন একটি ব্যবহার করে দেখতে পারেনঃ +<<<<<<< HEAD +- [Visual Studio Code](https://code.visualstudio.com/) (এটি ক্রস প্ল্যাটফর্ম ও সম্পূর্ণ ফ্রি) +- [WebStorm](http://www.jetbrains.com/webstorm/) (এটিও ক্রস প্ল্যাটফর্ম তবে পেইড) +======= - [Visual Studio Code](https://code.visualstudio.com/) (cross-platform, free). - [WebStorm](https://www.jetbrains.com/webstorm/) (cross-platform, paid). +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -For Windows, there's also "Visual Studio", not to be confused with "Visual Studio Code". "Visual Studio" is a paid and mighty Windows-only editor, well-suited for the .NET platform. It's also good at JavaScript. There's also a free version [Visual Studio Community](https://www.visualstudio.com/vs/community/). +উইন্ডোজ ব্যবহার কারীদের জন্য "Visual Studio" নামের আরও একটি IDE রয়েছে, তবে "Visual Studio Code" র সাথে কনফিউজ হওয়ার দরকার নাই। এটি সম্পূর্ণ আলাদা একটি IDE, যদিও দুইটাই মাইক্রোসফট এর ডেভেলপ করা। "Visual Studio" একটি পেইড ও উইন্ডোজ ফ্রেন্ডলি এডিটর, এটি সবচেয়ে ভালো কাজ করে ডট নেট প্ল্যাটফর্মে। এটি জাভাস্ক্রিপ্ট এর জন্যও ভালো কাজ করে। একটি ফ্রি কমিউনিটি ভার্শনও আছে [Visual Studio Community](https://www.visualstudio.com/vs/community/) নামে। -Many IDEs are paid, but have a trial period. Their cost is usually negligible compared to a qualified developer's salary, so just choose the best one for you. +বেশির ভাগ IDE সমূহ পেইড, তবে তাদের প্রায় সবার ট্রায়াল ভার্শন রয়েছে। এসবের মূল্যও একজন কোয়ালিফাইড ডেভেলপারের বেতনের তুলনায় খুবই নগণ্য। সুতরাং আপনার যেটা ভালো লাগে সেটা পছন্দ করতে পারেন। -## Lightweight editors +## লাইটওয়েট এডিটর সমূহ -"Lightweight editors" are not as powerful as IDEs, but they're fast, elegant and simple. +"লাইটওয়েট এডিটর সমূহ" IDE গুলোর মত এতটা পাওয়ারফুল নয়। তবে অনেক ফাস্ট, এলিগেনট ও সিম্পল হয়ে থাকে। -They are mainly used to open and edit a file instantly. +প্রধানত দ্রুত কোন ফাইল ওপেন ও এডিট করার ক্ষেত্রে এসব এডিটর ব্যবহার করা হয়ে থাকে। -The main difference between a "lightweight editor" and an "IDE" is that an IDE works on a project-level, so it loads much more data on start, analyzes the project structure if needed and so on. A lightweight editor is much faster if we need only one file. +লাইটওয়েট এডিটর সমূহের সাথে IDE গুলোর প্রধান পার্থক্য হল যে, IDE গুলো ব্যবহার করা হয় প্রোজেক্ট লেভেলের কাজে। সুতরাং এগুলো শুরুতেই অনেক বেশি ডাটা লোড করে, প্রোজেক্টের গঠন পর্যবেক্ষণ করে ইত্যাদি। এদিক থেকে লাইটওয়েট এডিটর অনেক বেশি দ্রুততর হয়ে থাকে শুধুমাত্র একটি ফাইলে কাজ করার ক্ষেত্রে। -In practice, lightweight editors may have a lot of plugins including directory-level syntax analyzers and autocompleters, so there's no strict border between a lightweight editor and an IDE. +কাজের ক্ষেত্রে, লাইটওয়েট এডিটর সমূহের জন্য অনেক অনেক প্লাগিনস রয়েছে - ডিরেক্টরি লেভেল সিনট্যাক্স এনালাইজার থেকে শুরু করে অটোকমপ্লিট সহ নানান কাজ খুব সহজেই করা যায় এসব প্লাগিনস ব্যবহার করে। সুতরাং একটি লাইটওয়েট এডিটর ও IDE এর মধ্যে তেমন বিশাল কোন সীমারেখা নাই। +<<<<<<< HEAD +নিচের লিংক গুলো আপনার মনোযোগ আকর্ষণ করবেঃ + +- [Atom](https://atom.io/) (এটি ক্রস প্ল্যাটফর্ম ও সম্পূর্ণ ফ্রি)। +- [Visual Studio Code](https://code.visualstudio.com/) (এটি ক্রস প্ল্যাটফর্ম ও সম্পূর্ণ ফ্রি)। +- [Sublime Text](http://www.sublimetext.com) (এটি ক্রস প্ল্যাটফর্ম ও কিছু ক্ষেত্রে ফ্রি)। +- [Notepad++](https://notepad-plus-plus.org/) (উইন্ডোজ, ফ্রি)। +- [Vim](http://www.vim.org/) এবং [Emacs](https://www.gnu.org/software/emacs/) ও অসাধারণ এডিটর, যদি আপনি এদের সঠিক ব্যবহার করতে জানেন। +======= There are many options, for instance: - [Sublime Text](https://www.sublimetext.com/) (cross-platform, shareware). - [Notepad++](https://notepad-plus-plus.org/) (Windows, free). - [Vim](https://www.vim.org/) and [Emacs](https://www.gnu.org/software/emacs/) are also cool if you know how to use them. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -## Let's not argue +## চলুন ঝগড়া বাদ দিয়ে কিছু কথা বলিঃ -The editors in the lists above are those that either I or my friends whom I consider good developers have been using for a long time and are happy with. +উপরে উল্লেখিত এডিটর সমূহ আমি অথবা আমার বন্ধু যাদের আমি ভালো ডেভেলপার মনে করি, তারা অনেক দিন যাবৎ বেশ স্বাচ্ছন্দ্যে ব্যবহার করছে। -There are other great editors in our big world. Please choose the one you like the most. +আমাদের এই বৃহৎ পৃথিবীতে আরও অনেক ভালো ভালো এডিটর আছে। আপনি আপনার পছন্দ অনুযায়ী যেকোন একটা ব্যবহার করতে পারেন। +<<<<<<< HEAD +একটি এডিটর বাছাই করা অনেক সময় আপনার প্রোজেক্ট, পূর্ব-অভিজ্ঞতা, কাজের স্বাচ্ছন্দ্য এসবের উপর নির্ভর করে। +======= The choice of an editor, like any other tool, is individual and depends on your projects, habits, and personal preferences. The author's personal opinion: - I'd use [Visual Studio Code](https://code.visualstudio.com/) if I develop mostly frontend. - Otherwise, if it's mostly another language/platform and partially frontend, then consider other editors, such as XCode (Mac), Visual Studio (Windows) or Jetbrains family (Webstorm, PHPStorm, RubyMine etc, depending on the language). +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 diff --git a/1-js/01-getting-started/4-devtools/article.md b/1-js/01-getting-started/4-devtools/article.md index bbe8af920..ea5cd5fc4 100644 --- a/1-js/01-getting-started/4-devtools/article.md +++ b/1-js/01-getting-started/4-devtools/article.md @@ -1,63 +1,67 @@ -# Developer console +# ডেভেলপার কনসোল -Code is prone to errors. You will quite likely make errors... Oh, what am I talking about? You are *absolutely* going to make errors, at least if you're a human, not a [robot](https://en.wikipedia.org/wiki/Bender_(Futurama)). +কোড ভুলপ্রবণ। কোড করতে গিয়ে আপনি খুব সম্ভবত কিছু ভুল করবেন... নাহ, কি বলি? *অবশ্যই* ভুল করবেন। অন্তত আপনি যদি [রোবট](https://en.wikipedia.org/wiki/Bender_(Futurama)) না হয়ে মানুষ হয়ে থাকেন। -But in the browser, users don't see errors by default. So, if something goes wrong in the script, we won't see what's broken and can't fix it. +কিন্তু ব্যবহারকারীরা ব্রাউজারে ডিফল্টভাবে ভুল বা এরর দেখে না। তাই স্ক্রিপ্টে কোনকিছু ঠিকমত না হলে আমারা জানব না সমস্যাটা কোথায়, আর সেটা ঠিকও করতে পারব না। -To see errors and get a lot of other useful information about scripts, "developer tools" have been embedded in browsers. +ভুল দেখতে ও স্ক্রিপ্টের বিভিন্ন দরকারী তথ্য পেতে ব্রাউজারগুলোতে 'ডেভেলপার টুলস' সংযুক্ত করে দেয়া হয়েছে। -Most developers lean towards Chrome or Firefox for development because those browsers have the best developer tools. Other browsers also provide developer tools, sometimes with special features, but are usually playing "catch-up" to Chrome or Firefox. So most developers have a "favorite" browser and switch to others if a problem is browser-specific. +ডেভেলপমেন্টের জন্য বেশিরভাগ ডেভেলপাররা ক্রোম কিংবা ফায়ারফক্সের দিকে ঝোঁকে, কারণ এদের ডেভেলপার টুলগুলো সবচেয়ে ভাল। অন্য ব্রাউজারগুলোও ডেভেলপার টুল দেয়, অনেকসময় বাড়তি সুবিধাসহ। কিন্তু তারা মূলত ক্রোম অথবা ফায়ারফক্সের পর্যায়ে যাওয়ার চেষ্টাই করছে। বেশিরভাগ ডেভেলপারেরই ডেভেলপমেন্টের জন্য একটা 'প্রিয়' ব্রাউজার থাকে, নির্দিষ্ট ব্রাউজারের সাথে জড়িত কোন সমস্যা দেখা দিলে তখন অন্যগুলোতে যায়। -Developer tools are potent; they have many features. To start, we'll learn how to open them, look at errors, and run JavaScript commands. +ডেভেলপার টুলগুলো বেশ কার্যকর; এগুলোতে অনেক ফিচার থাকে। শুরুতে আমরা শিখব এগুলো কিভাবে খুলতে হয়, কিভাবে ভুল দেখতে হয় আর কিভাবে সেগুলোতে জাভাস্ক্রিপ্ট কমান্ড চালানো যায়। -## Google Chrome +## গুগল ক্রোম -Open the page [bug.html](bug.html). +[bug.html](bug.html) পেজটি খুলুন। -There's an error in the JavaScript code on it. It's hidden from a regular visitor's eyes, so let's open developer tools to see it. +এর জাভাস্ক্রিপ্টে একটি ভুল আছে। একজন সাধারণ ব্যবহারকারী সেটা দেখবে না। তাই সেটা দেখার জন্য ডেভেলপার টুল খোলা যাক। -Press `key:F12` or, if you're on Mac, then `key:Cmd+Opt+J`. +`key:F12` চাপুন, অথবা ম্যাকে হলে `key:Cmd+Opt+J`। -The developer tools will open on the Console tab by default. +ডিফল্টভাবে ডেভেলপার টুলটি কনসোল ট্যাবে খুলবে। -It looks somewhat like this: +দেখতে অনেকটা এমন হবে: ![chrome](chrome.webp) -The exact look of developer tools depends on your version of Chrome. It changes from time to time but should be similar. +দেখতে ঠিক কেমন হবে সেটা আপনার ক্রোম ভার্সনের উপর নির্ভর করবে। এটা প্রায়ই বদলায়। তবে কিছুটা এমনই হওয়ার কথা। -- Here we can see the red-colored error message. In this case, the script contains an unknown "lalala" command. -- On the right, there is a clickable link to the source `bug.html:12` with the line number where the error has occurred. +- এখানে এরর মেসেজটি লাল রঙে দেখতে পাচ্ছেন। এক্ষেত্রে স্ক্রিপ্টটিতে একটি অজানা "lalala" কমান্ড আছে। +- ডানে `bug.html:12` সোর্সটির একটি ক্লিক-উপযোগী লিঙ্ক আছে, যে লাইনে ভুলটি হয়েছে সেই লাইন নাম্বার সহ। -Below the error message, there is a blue `>` symbol. It marks a "command line" where we can type JavaScript commands. Press `key:Enter` to run them. +এরর মেসেজটির নিচে নীল একটি `>` চিহ্ন আছে। এটি একটি "কমান্ড লাইন" নির্দেশ করে, যেখানে আপনি জাভাস্ক্রিপ্ট কমান্ড টাইপ করতে পারবেন। কমান্ডগুলো চালাতে `key:Enter` চাপুন। -Now we can see errors, and that's enough for a start. We'll come back to developer tools later and cover debugging more in-depth in the chapter . +এখন আমরা এরর দেখতে পাচ্ছি। আপাতত এইটুকুই চলবে। সামনে ডেভেলপার টুল আবার আসবে। অধ্যায়ে ডিবাগিং নিয়ে গভীর আলোচনা হবে। ```smart header="Multi-line input" -Usually, when we put a line of code into the console, and then press `key:Enter`, it executes. +সাধারণভাবে যখন আপনি কনসোলে এক লাইন কোড দিয়ে `key:Enter` চাপেন, সেটা এক্সিকিউট হয়ে যায়। -To insert multiple lines, press `key:Shift+Enter`. This way one can enter long fragments of JavaScript code. +একাধিক লাইন দিতে `key:Shift+Enter` চাপতে হয়। এভাবে বড় বড় জাভাস্ক্রিপ্ট কোড ইনপুট দেয়া যায়। ``` -## Firefox, Edge, and others +## ফায়ারফক্স, এডজ্ ও অন্যান্য -Most other browsers use `key:F12` to open developer tools. +অন্য বেশিরভাগ ব্রাউজার ডেভেলপার টুলস খোলার জন্য `key:F12` ব্যবহার করে। -The look & feel of them is quite similar. Once you know how to use one of these tools (you can start with Chrome), you can easily switch to another. +সেগুলো দেখতেও কাছাকাছি। যেকোন একটা একবার ব্যবহার করতে শিখে গেলে (ক্রোম দিয়ে শুরু করা যেতে পারে) পরে সহজেই অন্যগুলোতে যাওয়া যায়। -## Safari +## সাফারি -Safari (Mac browser, not supported by Windows/Linux) is a little bit special here. We need to enable the "Develop menu" first. +সাফারি (ম্যাকের ব্রাউজার, উইন্ডোজ/লিনাক্সে সাপোর্ট করে না) এখানে একটু অন্যরকম। প্রথমে আমাদের "Develop menu" সক্রিয় করতে হবে। +<<<<<<< HEAD +Preferences খুলে "Advanced" প্যানে যান. নিচের দিকে একটি চেকবক্স আছে: +======= Open Settings and go to the "Advanced" pane. There's a checkbox at the bottom: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ![safari](safari.png) -Now `key:Cmd+Opt+C` can toggle the console. Also, note that the new top menu item named "Develop" has appeared. It has many commands and options. +এখন `key:Cmd+Opt+C` দিয়ে কনসোল টোগল করা যাব। আর খেয়াল করুন, "Develop" নামে টপ মেনুতে নতুন একটা আইটেম এসেছে। এটাতে অনেক কমান্ড ও অপশন আছে। -## Summary +## সারাংশ -- Developer tools allow us to see errors, run commands, examine variables, and much more. -- They can be opened with `key:F12` for most browsers on Windows. Chrome for Mac needs `key:Cmd+Opt+J`, Safari: `key:Cmd+Opt+C` (need to enable first). +- ডেভেলপার টুল আমাদের অনেককিছু করতে দেয়, যোমন কমান্ড চালানো, ভ্যারিয়েবল পরীক্ষা করা ইত্যাদি। +- উইন্ডোজে বেশিরভাগ ব্রাউজারে `key:F12` চেপে এগুলো খোলা যায়। ম্যাকের ক্রোমে `key:Cmd+Opt+J`, সাফারিতে: `key:Cmd+Opt+C` (প্রথমে সক্রিয় করে নিতে হয়)। -Now we have the environment ready. In the next section, we'll get down to JavaScript. +এখন আমাদের পরিবেশ তৈরী। পরবর্তী অধ্যায়ে আমরা পুরোপুরি জাভাস্ক্রিপ্টে ঢুকে যাব। diff --git a/1-js/02-first-steps/01-hello-world/1-hello-alert/task.md b/1-js/02-first-steps/01-hello-world/1-hello-alert/task.md index afed6a91d..42823dae5 100644 --- a/1-js/02-first-steps/01-hello-world/1-hello-alert/task.md +++ b/1-js/02-first-steps/01-hello-world/1-hello-alert/task.md @@ -2,11 +2,11 @@ importance: 5 --- -# Show an alert +# একটি এলার্ট দেখাও -Create a page that shows a message "I'm JavaScript!". +একটি পেজ তৈরি করো যেটি "I'm JavaScript!" এই ম্যাসেজটি দেখাবে। -Do it in a sandbox, or on your hard drive, doesn't matter, just ensure that it works. +এটা sandbox, অথবা তোমার hard drive যেখানে খুশি সেখানে করো সমস্যা নেই, শুধু মাত্র এটা নিশ্চিত করো এটি কাজ করছে। [demo src="solution"] diff --git a/1-js/02-first-steps/01-hello-world/2-hello-alert-ext/solution.md b/1-js/02-first-steps/01-hello-world/2-hello-alert-ext/solution.md index f42c41e6d..645dd651b 100644 --- a/1-js/02-first-steps/01-hello-world/2-hello-alert-ext/solution.md +++ b/1-js/02-first-steps/01-hello-world/2-hello-alert-ext/solution.md @@ -1,8 +1,8 @@ -The HTML code: +এইচটিএমএল কোড: [html src="index.html"] -For the file `alert.js` in the same folder: +একই ফোল্ডারের `alert.js` ফাইল এর জন্যঃ [js src="alert.js"] diff --git a/1-js/02-first-steps/01-hello-world/2-hello-alert-ext/task.md b/1-js/02-first-steps/01-hello-world/2-hello-alert-ext/task.md index 26168d6a7..3dc62408a 100644 --- a/1-js/02-first-steps/01-hello-world/2-hello-alert-ext/task.md +++ b/1-js/02-first-steps/01-hello-world/2-hello-alert-ext/task.md @@ -2,8 +2,8 @@ importance: 5 --- -# Show an alert with an external script +# বাহিরের একটি স্ক্রিপ্ট দিয়ে একটি এলার্ট দেখাও -Take the solution of the previous task . Modify it by extracting the script content into an external file `alert.js`, residing in the same folder. +পূর্ববর্তী কাজের সমাধানটি নাও। . একই ফোল্ডারে একটি আলাদা `alert.js ফাইলে কোডটি রাখো। -Open the page, ensure that the alert works. +পেজটি খুলো এবং, নিশ্চিত করো এলার্ট টি কাজ করছে। diff --git a/1-js/02-first-steps/01-hello-world/article.md b/1-js/02-first-steps/01-hello-world/article.md index 35f82bf5d..e963f6282 100644 --- a/1-js/02-first-steps/01-hello-world/article.md +++ b/1-js/02-first-steps/01-hello-world/article.md @@ -1,17 +1,21 @@ -# Hello, world! +# হ্যালো, বিশ্ব! -This part of the tutorial is about core JavaScript, the language itself. +এই টিউটোরিয়াল অংশটি মুলত জাভাস্ক্রিপ্ট প্রোগ্রামিং ভাষার মূল বিষয় সমূহ নিয়ে। -But we need a working environment to run our scripts and, since this book is online, the browser is a good choice. We'll keep the amount of browser-specific commands (like `alert`) to a minimum so that you don't spend time on them if you plan to concentrate on another environment (like Node.js). We'll focus on JavaScript in the browser in the [next part](/ui) of the tutorial. +কিন্তু আমাদের স্ক্রিপ্টগুলো চালানোর জন্য একটি কাজের পরিবেশ দরকার এবং যেহেতু এই বইটি অনলাইনে রয়েছে, তাই ব্রাউজার একটি ভাল পছন্দ হবে। আমরা ব্রাউজার-নির্দিষ্ট কমান্ড গুলো (যেমনঃ `এলার্ট`) সর্বনিম্ন পরিমান রাখবো যাতে করে এতে আপনাদের সময় নষ্ট না হয়, যদি আপনারা অন্য পরিবেশে মনোনিবেশ করার পরিকল্পনা করে থাকেন(যেমনঃ Node.js)। আমরা এই টিউটরিয়ালের [পরবর্তী অংশে](/ui) ব্রাউজারে জাভাস্ক্রিপ্ট উপর গুরুত্ব দিব। -So first, let's see how we attach a script to a webpage. For server-side environments (like Node.js), you can execute the script with a command like `"node my.js"`. +তাই প্রথমে, চলুন আমরা দেখি কিভাবে ওয়েবপেজে একটি স্ক্রিপ্ট সংযুক্ত করে। সার্ভার-সাইড পরিবেশ গুলোর জন্য (যেমনঃ Node.js), আপনি একটা কমান্ড দিয়ে স্ক্রিপ্ট চালাতে পারবেন `"node my.js"` এর মত করে। -## The "script" tag +## "script" ট্যাগ +<<<<<<< HEAD +জাভাস্ক্রিপ্ট এর কার্যক্রম গুলো এইচটিএমএল ডকুমেন্টের যেকোনো অংশে রাখা যেতে পারে ` */!* -

...After the script.

+

...স্ক্রিপ্টের পরে.

@@ -35,53 +39,57 @@ For instance: ``` ```online -You can run the example by clicking the "Play" button in the right-top corner of the box above. +বক্সের উপরের ডান পাশের মাথায় "প্লে" বাটনের ক্লিক করে আপনি উদাহরণটি চালিয়ে দেখতে পারেন। ``` -The ` ``` + + আধুনিক জাভাস্ক্রিপ্টে এই কৌশলটি আর ব্যবহার করা হয় না। এই মন্তব্যগুলি জাভাস্ক্রিপ্ট কোডগুলো কে লুকিয়ে রাখে পুরনো ব্রাউজার গুলো থেকে যারা জানে না কিভাবে ` ``` +<<<<<<< HEAD +এখানে, `/path/to/script.js` এই পথটি হয় সাইট এর মূল থেকে স্ক্রিপ্টের জন্য একটি সঠিক পথ। বর্তমান পৃষ্ঠা থেকে যে কেউ আপেক্ষিক পথ সরবরাহ করতে পারে. উদাহরণস্বরূপ, `src="script.js"` এই `"script.js"` ফাইল দিয়ে বর্তমান ফোল্ডার থেকে বুঝায়। +======= Here, `/path/to/script.js` is an absolute path to the script from the site root. One can also provide a relative path from the current page. For instance, `src="script.js"`, just like `src="./script.js"`, would mean a file `"script.js"` in the current folder. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -We can give a full URL as well. For instance: +আমরা পুরো URL টিও দিতে পারি। উদাহরণস্বরূপ: ```html ``` -To attach several scripts, use multiple tags: +একাধিক ট্যাগ ব্যবহার করে, একাধিক স্ক্রিপ্টগুলো সংযুক্ত করতে পারিঃ ```html @@ -90,19 +98,19 @@ To attach several scripts, use multiple tags: ``` ```smart -As a rule, only the simplest scripts are put into HTML. More complex ones reside in separate files. +বেশিরভাগ ক্ষেত্রেই, শুধু মাত্র সহজ স্ক্রিপ্ট গুলোই এইচটিএমএল এর মধ্যে রাখা হয় এবং অনেক জটিল গুলোকে আলাদা ফাইলে রাখা হয়। -The benefit of a separate file is that the browser will download it and store it in its [cache](https://en.wikipedia.org/wiki/Web_cache). +বিভিন্ন ফাইলে রাখার সুবিধাগুলো হল, ব্রাউজার এটাকে ডাউনলোড করে রাখবে এবং [cache](https://en.wikipedia.org/wiki/Web_cache) হিসেবে রেখে দিবে। -Other pages that reference the same script will take it from the cache instead of downloading it, so the file is actually downloaded only once. +অন্যান্য পেইজ যা একই স্ক্রিপ্টকেই উল্লেখ করে এটি ডাউনলোড করার পরিবর্তে এটি ক্যাশে থেকে নেবে, সুতরাং ফাইলটি শুধু মাত্র একবারই ডাউনলোড করা হবে। -That reduces traffic and makes pages faster. +যা ট্রাফিক কমায় এবং পেজকে অনেক দ্রুততর করে। ``` -````warn header="If `src` is set, the script content is ignored." -A single ` ``` -We must choose either an external ` @@ -122,11 +130,11 @@ The example above can be split into two scripts to work: ``` ```` -## Summary +## সারাংশ -- We can use a ``. +- আমরা একটি পেজে জাভাস্ক্রিপ্ট যোগ করতে `` এইভাবে রাখা যেতে পারে। -There is much more to learn about browser scripts and their interaction with the webpage. But let's keep in mind that this part of the tutorial is devoted to the JavaScript language, so we shouldn't distract ourselves with browser-specific implementations of it. We'll be using the browser as a way to run JavaScript, which is very convenient for online reading, but only one of many. +ব্রাউজার স্ক্রিপ্ট এবং ওয়েবপেজের সাথে এদের ইন্টারেকশন সম্পর্কে অনেক কিছু শেখার আছে। তবে, মাথায় রাখা উচিত যে টিউটোরিয়ালটির এই অংশটি উৎসর্গ করা হয় জাভাস্ক্রিপ্ট ভাষার প্রতি, তাই এটির ব্রাউজার-নির্দিষ্ট বাস্তবায়ন দেখে আমাদের নিজেদেরকে বিভ্রান্ত করা উচিত হবে না। আমরা ব্রাউজার শুধু জাভাস্ক্রিপ্ট চালানোর জন্য ব্যবহার করবো, যেটা অনলাইনে পড়ার জন্য সহজ। কিন্তু এটি অনেকগুলি উপায়ের মধ্যে একটি। \ No newline at end of file diff --git a/1-js/02-first-steps/02-structure/article.md b/1-js/02-first-steps/02-structure/article.md index e81fd343d..ed674f6e9 100644 --- a/1-js/02-first-steps/02-structure/article.md +++ b/1-js/02-first-steps/02-structure/article.md @@ -1,44 +1,44 @@ -# Code structure +# কোডের গঠন -The first thing we'll study is the building blocks of code. +প্রথমেই আমরা শিখে নিব কোড লিখতে কি কি লাগে। -## Statements +## স্টেটমেন্ট -Statements are syntax constructs and commands that perform actions. +স্টেটমেন্ট হল কাজ করার জন্য নির্দেশনা দেয়ার উপায়। -We've already seen a statement, `alert('Hello, world!')`, which shows the message "Hello, world!". +আমরা ইতিমধ্যেই একটি স্টেটমেন্ট দেখেছি, `alert('হ্যালো, ওয়ার্ল্ড!')`, যা এই ম্যাসেজটি দেখায় - "হ্যালো, ওয়ার্ল্ড!". -We can have as many statements in our code as we want. Statements can be separated with a semicolon. +যতগুলি ইচ্ছা ততগুলি স্টেটমেন্ট আমরা আমাদের কোডে রাখতে পারি। প্রতিটি স্টেটমেন্ট সেমিকোলন দিয়ে বিভক্ত করা যায়। -For example, here we split "Hello World" into two alerts: +যেমন, এখানে আমরা "হ্যালো ওয়ার্ল্ড" - কে দুটি আলাদা alert এ দেখাচ্ছিঃ ```js run no-beautify -alert('Hello'); alert('World'); +alert('হ্যালো'); alert('ওয়ার্ল্ড'); ``` -Usually, statements are written on separate lines to make the code more readable: +সাধারণত, স্টেটমেন্টগুলোকে বোঝার সুবিধার্থে আলাদা লাইনে লেখা হয়ঃ ```js run no-beautify -alert('Hello'); -alert('World'); +alert('হ্যালো'); +alert('ওয়ার্ল্ড'); ``` -## Semicolons [#semicolon] +## সেমিকোলন [#semicolon] -A semicolon may be omitted in most cases when a line break exists. +অধিকাংশ ক্ষেত্রে লাইনের শেষে সেমিকোলনকে ঊহ্য রাখা যায়। -This would also work: +যেমন এটাও কাজ করবেঃ ```js run no-beautify -alert('Hello') -alert('World') +alert('হ্যালো') +alert('ওয়ার্ল্ড') ``` -Here, JavaScript interprets the line break as an "implicit" semicolon. This is called an [automatic semicolon insertion](https://tc39.github.io/ecma262/#sec-automatic-semicolon-insertion). +এখানে, জাভাস্ক্রিপ্ট লাইনের শেষে একটি "ঊহ্য" সেমিকোলন আছে বলে ধরে নেয়। এটাকে বলা হয় [স্বয়ংক্রিয় ভাবে সেমিকোলন যুক্ত করন](https://tc39.github.io/ecma262/#sec-automatic-semicolon-insertion). -**In most cases, a newline implies a semicolon. But "in most cases" does not mean "always"!** +**অধিকাংশ সময়, নতুন লাইন মানেই একটি সেমিকোলন। কিন্তু "অধিকাংশ সময়" মানে "সবসময়" নয়!** -There are cases when a newline does not mean a semicolon. For example: +কিছু ক্ষেত্রে নতুন লাইন মানেই সেমিকোলন নয়। যেমনঃ ```js run no-beautify alert(3 + @@ -46,14 +46,18 @@ alert(3 + + 2); ``` +<<<<<<< HEAD +উপরের কোডের আউটপুট `6` কারণ জাভাস্ক্রিপ্ট এখানে সেমিকোলন ব্যবহার করবে না। এটি খুবই স্পষ্ট বোঝা যাচ্ছে, যেহেতু লাইন `"+"` দিয়ে শেষ হয়েছে, সেহেতু এটি একটি "অসম্পূর্ণ এক্সপ্রেশন", সুতরাং সেমিকোলনের প্রয়োজন নেই। এবং এই ক্ষেত্রে কোডটি যেভাবে কাজ করা উচিত সেভাবেই কাজ করছে। +======= The code outputs `6` because JavaScript does not insert semicolons here. It is intuitively obvious that if the line ends with a plus `"+"`, then it is an "incomplete expression", so a semicolon there would be incorrect. And in this case, that works as intended. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -**But there are situations where JavaScript "fails" to assume a semicolon where it is really needed.** +**কিন্তু কিছু পরিস্থিতিতে যেখানে সেমিকোলন অবশ্যই প্রয়োজন, জাভাস্ক্রিপ্ট তা বুঝে নিতে ব্যর্থ হয়।** -Errors which occur in such cases are quite hard to find and fix. +এরকম কারণে যেসব এরর তৈরি হয় তা খুঁজে বের করা এবং ঠিক করা বেশ কঠিন। -````smart header="An example of an error" -If you're curious to see a concrete example of such an error, check this code out: +````smart header="এররের একটি উদাহরণ" +আপনি যদি এধরণের এররের একটি উদাহরণ দেখতে আগ্রহী হন, তাহলে এই কোডটি দেখুনঃ ```js run alert("Hello"); @@ -61,16 +65,48 @@ alert("Hello"); [1, 2].forEach(alert); ``` +<<<<<<< HEAD +`[]` এবং `forEach` এর মানে কি তা এখনই চিন্তা করার দরকার নেই। আমরা পরবর্তীতে তাদের নিয়ে জানব। আপাতত, শুধু মনে রাখুন এই কোডের আউটপুটঃ প্রথমে `1` এবং এরপর `2`। + +এবার, কোডের শুরুতে একটি `alert` বসাই এবং সেমিকোলন ছাড়াই লাইনটি শেষ করিঃ + +```js run no-beautify +alert("একটি এরর তৈরি হবে") +======= No need to think about the meaning of the brackets `[]` and `forEach` yet. We'll study them later. For now, just remember the result of running the code: it shows `Hello`, then `1`, then `2`. Now let's remove the semicolon after the `alert`: ```js run no-beautify alert("Hello") +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 [1, 2].forEach(alert); ``` +<<<<<<< HEAD +এখন যদি আমরা কোডটি রান করি, শুধুমাত্র শুরুর `alert` টি দেখায় এবং এরপর আমরা একটি এরর পাই! + +কিন্তু আমরা যদি `alert` এর পর একটি সেমিকোলন দেই, তাহলে সব ঠিকঠাক কাজ করেঃ +```js run +alert("সবকিছু ঠিক আছে"); + +[1, 2].forEach(alert) +``` + +এখন আমরা "সবকিছু ঠিক আছে" বার্তাটি এবং তার সাথে `1` ও `2` পাই। + + +সেমিকোলন ছাড়া কোডে এরর হয়েছে তার কারণ জাভাস্ক্রিপ্ট তৃতীয় বন্ধনীর `[...]` আগে সেমিকোলন হবে তা অনুমান করতে পারে নি। + +সুতরাং, যেহেতু সেমিকোলন স্বয়ংক্রিয়ভাবে বসানো হয়নি, তাই প্রথম উদাহরণের কোড পুরোটাই একটি স্টেটমেন্ট হিসেবে গণ্য করা হয়েছে। জাভাস্ক্রিপ্ট ইঞ্জিন কোডটাকে এভাবে দেখছেঃ + +```js run no-beautify +alert("একটি এরর তৈরি হবে")[1, 2].forEach(alert) +``` + +কিন্তু এখানে একটি নয়, দুটো আলাদা স্টেটমেন্ট হবে। এভাবে একটি লাইনে যোগ করে ফেলাটা পুরোপুরি ভুল, তাই এররটি তৈরি হয়েছে। এমনটা আরও অনেক পরিস্থিতিতে হতে পারে। +======= The difference compared to the code above is only one character: the semicolon at the end of the first line is gone. If we run this code, only the first `Hello` shows (and there's an error, you may need to open the console to see it). There are no numbers any more. @@ -86,70 +122,71 @@ alert("Hello")[1, 2].forEach(alert); Looks weird, right? Such merging in this case is just wrong. We need to put a semicolon after `alert` for the code to work correctly. This can happen in other situations also. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```` -We recommend putting semicolons between statements even if they are separated by newlines. This rule is widely adopted by the community. Let's note once again -- *it is possible* to leave out semicolons most of the time. But it's safer -- especially for a beginner -- to use them. +আমরা স্টেটমেন্টের শেষে সেমিকোলন দিতে পরামর্শ দেই, এমনকি যদি স্টেটমেন্টগুলো আলাদা লাইনেও হয়ে থাকে। এই রুলটি কমিউনিটিতে ব্যাপকভাবে গ্রহণ করা হয়েছে। আরও একবার এভাবে বলা যায় -- অধিকাংশ সময় সেমিকোলন ঊহ্য রাখা **সম্ভব**। কিন্তু এটি ব্যবহার করা নিরাপদ -- বিশেষ করে শিক্ষানবিশ/অনভিজ্ঞদের জন্য। -## Comments [#code-comments] +## কমেন্ট/মন্তব্য [#code-comments] -As time goes on, programs become more and more complex. It becomes necessary to add *comments* which describe what the code does and why. +সময়ের সাথে সাথে প্রোগ্রামগুলো অধিক থেকে অধিকতর জটিল হতে থাকে। *কমেন্ট/মন্তব্য* লিখার মাধ্যমে কোড কি কাজ করে এবং কেন করে তা প্রয়োজনীয় হয়ে দাঁড়ায়। -Comments can be put into any place of a script. They don't affect its execution because the engine simply ignores them. +কমেন্ট স্ক্রিপ্টের যেকোনো জায়গায় লেখা যায়। কমেন্ট কোড এক্সিকিউশনে কোন প্রভাব ফেলে না কারণ জাভাস্ক্রিপ্ট ইঞ্জিন কমেন্টগুলো উপেক্ষা করে। -**One-line comments start with two forward slash characters `//`.** +**এক-লাইনের কমেন্টগুলো দুটি ফরওয়ার্ড স্লাশ ক্যারেক্টার `//` দিয়ে শুরু হয়।** -The rest of the line is a comment. It may occupy a full line of its own or follow a statement. +লাইনের পরবর্তী অংশ একটি কমেন্ট। কমেন্ট নিজেই পুরো একটি লাইন নিয়ে নিতে পারে বা একটি স্টেটমেন্টের পরে বসতে পারে। -Like here: +যেমনটা এখানেঃ ```js run -// This comment occupies a line of its own -alert('Hello'); +// এই কমেন্টটি নিজেই পুরো লাইন নিয়ে নিয়েছে +alert('হ্যালো'); -alert('World'); // This comment follows the statement +alert('ওয়ার্ল্ড'); // এই কমেন্টটি স্টেটমেন্টের পরে বসেছে ``` -**Multiline comments start with a forward slash and an asterisk /* and end with an asterisk and a forward slash */.** +**একাধিক লাইনের কমেন্টগুলো একটি ফরওয়ার্ড স্লাশ ও একটি তারকাচিহ্ন /* দিয়ে শুরু হয় এবং একটি তারকাচিহ্ন ও একটি ফরওয়ার্ড স্লাশ */ দিয়ে শেষ হয়।** -Like this: +যেমনটা এখানেঃ ```js run -/* An example with two messages. -This is a multiline comment. +/* দুটো বার্তার একটি উদাহরণ +এটি একটি একাধিক লাইনের কমেন্ট */ -alert('Hello'); -alert('World'); +alert('হ্যালো'); +alert('ওয়ার্ল্ড'); ``` -The content of comments is ignored, so if we put code inside /* ... */, it won't execute. +কমেন্টের বিষয়বস্তু উপেক্ষা করা হয়, তাই আমরা যদি /* ... */ এর ভেতরে কোড লিখি, তা কাজ করবে না। -Sometimes it can be handy to temporarily disable a part of code: +মাঝে মাঝে কোডের কিছু অংশ সাময়িকভাবে অচল করার জন্য কমেন্ট খুব কাজে আসেঃ ```js run -/* Commenting out the code -alert('Hello'); +/* কোডকে কমেন্ট করা হচ্ছে +alert('হ্যালো'); */ -alert('World'); +alert('ওয়ার্ল্ড'); ``` ```smart header="Use hotkeys!" -In most editors, a line of code can be commented out by pressing the `key:Ctrl+/` hotkey for a single-line comment and something like `key:Ctrl+Shift+/` -- for multiline comments (select a piece of code and press the hotkey). For Mac, try `key:Cmd` instead of `key:Ctrl` and `key:Option` instead of `key:Shift`. +অধিকাংশ এডিটরে, কোডের কোন অংশ কমেন্ট করতে, এক লাইনের কমেন্টের জন্য `key:Ctrl+/` হট-কী এবং একাধিক লাইনের কমেন্টের জন্য `key:Ctrl+Shift+/` হট-কী ব্যবহার করা হয় (কোডের অংশটি সিলেক্ট করে হট-কী প্রেস করা হয়)। ম্যাকের জন্য `key:Ctrl` এর পরিবর্তে `key:Cmd` ব্যবহার করে চেষ্টা করে দেখুন। ``` -````warn header="Nested comments are not supported!" -There may not be `/*...*/` inside another `/*...*/`. +````warn header="জাভাস্ক্রিপ্ট নেস্টেড কমেন্ট সাপোর্ট করে না!" +একটি `/*...*/` এর ভেতর আরেকটি `/*...*/` থাকবে না। -Such code will die with an error: +এধরণের কোড একটি এরর দিয়ে বন্ধ হয়ে যাবে। ```js run no-beautify /* - /* nested comment ?!? */ + /* নেস্টেড কমেন্ট ?!? */ */ -alert( 'World' ); +alert('ওয়ার্ল্ড'); ``` ```` -Please, don't hesitate to comment your code. +দয়া করে কোডে কমেন্ট লিখতে দ্বিধাবোধ করবেন না। -Comments increase the overall code footprint, but that's not a problem at all. There are many tools which minify code before publishing to a production server. They remove comments, so they don't appear in the working scripts. Therefore, comments do not have negative effects on production at all. +যদিও কমেন্ট সম্পূর্ণ কোডকে ভারী করে, কিন্তু তা কোন সমস্যাই না। প্রোডাকশন সার্ভারে কোড পাবলিশ করার আগে কোড মিনিফাই করার জন্য অনেক টুল রয়েছে। এসব টুল কমেন্ট মুছে দেয়, তাই কমেন্টগুলো পাবলিশ করা কোডে থাকে না। সুতরাং, প্রোডাকশন এনভাইরনমেন্টে কমেন্টের কোন খারাপ প্রভাব নেই। -Later in the tutorial there will be a chapter that also explains how to write better comments. +এই টিউটোরিয়ালে পরবর্তীতে একটি অধ্যায় থাকবে, যেখানে কিভাবে ভালো কমেন্ট লিখতে হয় তা নিয়ে আলোচনা করা হবে। diff --git a/1-js/02-first-steps/03-strict-mode/article.md b/1-js/02-first-steps/03-strict-mode/article.md index 9586733cc..9e396e03a 100644 --- a/1-js/02-first-steps/03-strict-mode/article.md +++ b/1-js/02-first-steps/03-strict-mode/article.md @@ -1,73 +1,108 @@ -# The modern mode, "use strict" +# আধুনিক মোড, "use strict" -For a long time, JavaScript evolved without compatibility issues. New features were added to the language while old functionality didn't change. +অনেক লম্বা সময় ধরে কোন কম্প্যাটিবিলিটি ইস্যু ছাড়াই জাভাস্ক্রিপ্টের পর্যায়ক্রমিক উন্নতি হয়েছে। ভাষাটিতে নতুন নতুন ফিচার যোগ করা হত, পুরনো ফাংশনালিটি বদলাত না। -That had the benefit of never breaking existing code. But the downside was that any mistake or an imperfect decision made by JavaScript's creators got stuck in the language forever. +এর একটি সুবিধা ছিল যে, কখনোই পুরনো কোড নস্ট হত না, মানে পুরনো কোডও নতুন জাভাস্ক্রিপ্ট ভার্সনে চলত। তবে অসুবিধা হল জাভাস্ক্রিপ্টের উদ্ভাবকদের করা কোন ভুল বা ত্রুটিপূর্ণ সিদ্ধান্ত চিরতরে ভাষাটিতে থেকে যেত। -This was the case until 2009 when ECMAScript 5 (ES5) appeared. It added new features to the language and modified some of the existing ones. To keep the old code working, most such modifications are off by default. You need to explicitly enable them with a special directive: `"use strict"`. +২০০৯ সালে ECMAScript 5 (ES5) আসার আগ পর্যন্ত এভাবেই চলছিল। ES5 ভাষাটিতে নতুন কিছু ফিচার যোগ করার পাশাপাশি পুরনো কিছু ফিচারও পরিবর্তন করে। পুরনো কোড সচল রাখতে এই পরিবর্তনগুলোর বেশিরভাগই ডিফল্টভাবে বন্ধ রাখা হয়। একটি বিশেষ নির্দেশক `"use strict"` ব্যবহার করে এগুলো আলাদাভাবে সক্রিয় করতে হয়। ## "use strict" -The directive looks like a string: `"use strict"` or `'use strict'`. When it is located at the top of a script, the whole script works the "modern" way. +নির্দেশকটি দেখতে স্ট্রিং এর মত: `"use strict"` অথবা `'use strict'`। যখন কোন স্ক্রিপ্টের সবার উপরে এটা থাকে, পুরো স্ক্রিপ্টটি 'আধুনিকভাবে' কাজ করে। -For example: +উদাহরণ: ```js "use strict"; -// this code works the modern way +// এই কোডটি আধুনিকভাবে কাজ করবে ... ``` +<<<<<<< HEAD +শিঘ্রই আমরা ফাংশন (কমান্ড গ্রুপ করার একটি উপায়) শিখব। একটু এগিয়ে গিয়ে নোট করে নেয়া যাক, `"use strict"` কোন ফাংশনের বডির শুরুতেও দেয়া যায়। এতে করে শুধু ঐ ফাংশনে স্ট্রিক্ট মোড সক্রিয় হয়। তবে সাধারণত পুরো স্ক্রিপ্টের জন্যই স্ট্রিক্ট মোড ব্যবহার করা হয়। + +======= Quite soon we're going to learn functions (a way to group commands), so let's note in advance that `"use strict"` can be put at the beginning of a function. Doing that enables strict mode in that function only. But usually people use it for the whole script. +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d -````warn header="Ensure that \"use strict\" is at the top" -Please make sure that `"use strict"` is at the top of your scripts, otherwise strict mode may not be enabled. +````warn header="\"use strict\" সবার শুরুতে থাকতে হবে" +নিশ্চিত করুন যেন `"use strict"` আপনার স্ক্রিপ্টগুলোর একেবারে সবার উপরে থাকে। নাহলে স্ট্রিক্ট মোড নাও সক্রিয় হতে পারে। -Strict mode isn't enabled here: +এখানে স্ট্রিক্ট মোড সক্রিয় হয়নি: ```js no-strict alert("some code"); -// "use strict" below is ignored--it must be at the top +// নিচের "use strict" উপেক্ষা করা হবে--এটি সবার উপরে থাকতে হবে "use strict"; -// strict mode is not activated +// স্ট্রিক্ট মোড সক্রিয় হয়নি ``` -Only comments may appear above `"use strict"`. +`"use strict"` এর উপরে শুধুমাত্র কমেন্ট থাকতে পারবে। ```` -```warn header="There's no way to cancel `use strict`" -There is no directive like `"no use strict"` that reverts the engine to old behavior. +```warn header="`use strict` বাতিল করার কোন উপায় নেই" +`"no use strict"`-র মত কোন নির্দেশক নেই যা ইন্জিনটিকে পুরনো চরিত্রে ফিরিয়ে নেবে। -Once we enter strict mode, there's no going back. +একবার স্ট্রিক্ট মোডে ঢুকে গেলে আর ফিরে যাওয়ার কোন সুযোগ থাকে না। ``` -## Browser console +## ব্রাউজার কনসোল +<<<<<<< HEAD +ভবিষ্যতে আপনি যখন ব্রাউজার কনসোলে কোন ফিচার পরীক্ষা করতে যাবেন, মনে রাখবেন ডিফল্টভাবে সেটা স্ট্রিক্ট মোডে থাকে না। +======= When you use a [developer console](info:devtools) to run code, please note that it doesn't `use strict` by default. +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d -Sometimes, when `use strict` makes a difference, you'll get incorrect results. +কখনো কখনো যখন `use strict`-এ পার্থক্য হয়, আপনি ভুল ফলাফল পাবেন। +<<<<<<< HEAD +একাধিক লাইন দেয়ার জন্য `key:Shift+Enter` চেপে সবার উপরে `use strict` দিয়ে দেখতে পারেন, এভাবে: +======= So, how to actually `use strict` in the console? First, you can try to press `key:Shift+Enter` to input multiple lines, and put `use strict` on top, like this: +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d ```js -'use strict'; -// ...your code - +'use strict'; <নতুন লাইনের জন্য Shift+Enter> +// ...আপনার কোড +<চালানোর জন্য Enter> ``` -It works in most browsers, namely Firefox and Chrome. +বেশিরভাগ ব্রাউজার যেমন ক্রোম, ফায়ারফক্সে এটা কাজ করে। +<<<<<<< HEAD +যদি কাজ না করে তাহলে `use strict` নিশ্চিত করার সবচেয়ে নির্ভরযোগ্য উপায় হল কোডটাকে কনসোলে এভাবে ইনপুট দেয়া: +======= If it doesn't, e.g. in an old browser, there's an ugly, but reliable way to ensure `use strict`. Put it inside this kind of wrapper: +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d ```js (function() { 'use strict'; +<<<<<<< HEAD + // ...আপনার কোড... +})() +``` + +## সবসময় "use strict" করুন + +আমাদের এখনো স্ট্রিক্ট মোড আর "ডিফল্ট" মোডের পার্থক্য আলোচনা করা বাকি রয়ে গেছে। + +পরবর্তী অধ্যাগুলোতে যখন আমরা ভাষার ফিচারগুলো শিখব তখন স্ট্রিক্ট মোড আর ডিফল্ট মোডের পার্থক্যগুলো দেখতে পাব। সৌভাগ্যবশত খুব বেশি পার্থক্য নেই। আর যা আছে সেগুলো আসলে আমাদের জীবন সুন্দর করে। + +আপাতত এ ব্যাপারে সাধাণভাবে জানা যথেষ্ট: + +১. `"use strict"` নির্দেশকটি বিল্ট-ইন ফিচারগুলোর চরিত্র বদলে ইন্জিনকে "আধুনিক" মোডে নিয়ে যায়। পরবর্তীতে আমরা এর বিস্তারিত দেখব। +২. একটি স্ক্রিপ্ট কিংবা ফাংশনের সবার উপরে `"use strict"` দিয়ে স্ট্রিক্ট মোড সক্রিয় করা যায়। ভাষার কিছু ফিচার, যেমন "classes" এবং "modules" স্বয়ংক্রিয়ভাবে স্ট্রিক্ট মোড সক্রিয় করে। +৩. সব মর্ডান ব্রাউজারই স্ট্রিক্ট মোড সমর্থন করে। +৪. আমরা পরামর্শ দিয়েছি সব সময় `"use strict"` দিয়ে স্ক্রিপ্ট শুরু করতে। এই টিউটোরিয়ালের সকল উদাহরণ ধরে নেয় যে স্ট্রিক্ট মোড চালু আছে, যদিনা অন্যথা (খুবই বিরল) উল্লেখ করে দেয়া থাকে। +======= // ...your code here... })() ``` @@ -87,3 +122,4 @@ As of now, we've got to know about `use strict` in general. In the next chapters, as we learn language features, we'll see the differences between the strict and old modes. Luckily, there aren't many and they actually make our lives better. All examples in this tutorial assume strict mode unless (very rarely) specified otherwise. +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d diff --git a/1-js/02-first-steps/06-alert-prompt-confirm/1-simple-page/task.md b/1-js/02-first-steps/06-alert-prompt-confirm/1-simple-page/task.md index a65a654e0..7dd3ac9e1 100644 --- a/1-js/02-first-steps/06-alert-prompt-confirm/1-simple-page/task.md +++ b/1-js/02-first-steps/06-alert-prompt-confirm/1-simple-page/task.md @@ -2,8 +2,8 @@ importance: 4 --- -# A simple page +# একটি সহজ পৃষ্ঠা -Create a web-page that asks for a name and outputs it. +একটি ওয়েব পেজ তৈরী করুন, যেটা একটি নাম জিজ্ঞেস করবে এবং নামটি দেখাবে। [demo] diff --git a/1-js/02-first-steps/06-alert-prompt-confirm/article.md b/1-js/02-first-steps/06-alert-prompt-confirm/article.md index ef0f333cb..10ee88e52 100644 --- a/1-js/02-first-steps/06-alert-prompt-confirm/article.md +++ b/1-js/02-first-steps/06-alert-prompt-confirm/article.md @@ -1,105 +1,128 @@ -# Interaction: alert, prompt, confirm +# ইন্টারেকশন: alert, prompt, confirm +<<<<<<< HEAD:1-js/02-first-steps/09-alert-prompt-confirm/article.md +টিউটোরিয়ালের এই পর্যায়ে আমরা কোনো বিশেষ পরিবেশ সমন্বয় ছাড়া জাভাস্ক্রিপ্ট দেখবো। + +কিন্তু আমরা এখনো ব্রাউজার ব্যবহার করবো আমাদের ডেমো পরিবেশ হিসেবে, এখন আমাদের জানা উচিত এর কিছু ব্যবহারকারী ইন্টারফেস ফাংশন সম্পর্কে। এই চ্যাপ্টারে আমরা পরিচিত হবো ব্রাউজার ফাংশন `alert`, `prompt` এবং `confirm` এর সাথে। + +## alert + +গঠন: + +```js +alert(message); +``` + +এটি একটি বার্তা প্রদর্শন করে বাকি স্ক্রিপ্ট আটকে রাখে ব্যবহারকারী OK প্রেস করার আগ পর্যন্ত। +======= As we'll be using the browser as our demo environment, let's see a couple of functions to interact with the user: `alert`, `prompt` and `confirm`. ## alert This one we've seen already. It shows a message and waits for the user to press "OK". +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d:1-js/02-first-steps/06-alert-prompt-confirm/article.md -For example: +যেমন: ```js run -alert("Hello"); +alert("হ্যালো"); ``` +<<<<<<< HEAD:1-js/02-first-steps/09-alert-prompt-confirm/article.md +বার্তা সহ ছোট উইন্ডোকে *মডাল উইন্ডো* বলে। মডাল মানে হলো, ব্যবহারকারী যতক্ষণ না এই উইন্ডো এর কাজ না করছেন ততক্ষন বাকি পেজ এর কোনো কাজ করতে পারবেন না, অন্য কোনো বাটন চাপতে পারবেন না ইত্যাদি। এইক্ষেত্রে, --যতক্ষণ না তিনি OK চাপছেন। +======= The mini-window with the message is called a *modal window*. The word "modal" means that the visitor can't interact with the rest of the page, press other buttons, etc, until they have dealt with the window. In this case -- until they press "OK". +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d:1-js/02-first-steps/06-alert-prompt-confirm/article.md ## prompt -The function `prompt` accepts two arguments: +এই `prompt` ফাংশন দুটি আর্গুমেন্ট নেয়। ```js no-beautify result = prompt(title, [default]); ``` -It shows a modal window with a text message, an input field for the visitor, and the buttons OK/Cancel. +এটি একটি মডাল উইন্ডো, যা একটি বার্তা, একটি ইনপুট ফিল্ড এবং OK/Cancel বাটন দেখায়। `title` -: The text to show the visitor. +: যে বার্তা ব্যবহারকারীকে দেখাতে চান। `default` -: An optional second parameter, the initial value for the input field. +: এটি একটি ঐচ্ছিক প্যারামিটার, এর প্রাথমিক মান ইনপুট ফিল্ড হতে প্রাপ্ত মান। +<<<<<<< HEAD:1-js/02-first-steps/09-alert-prompt-confirm/article.md +ব্যবহারকারী চাইলে ইনপুট ফিল্ডে কিছু টাইপ করে OK চাপতে পারে। অথবা চাইলে ইনপুট টি বাতিল করতে পারে Cancel চেপে অথবা `key:Esc` চেপে। +======= ```smart header="The square brackets in syntax `[...]`" The square brackets around `default` in the syntax above denote that the parameter is optional, not required. ``` The visitor can type something in the prompt input field and press OK. Then we get that text in the `result`. Or they can cancel the input by pressing Cancel or hitting the `key:Esc` key, then we get `null` as the `result`. +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d:1-js/02-first-steps/06-alert-prompt-confirm/article.md -The call to `prompt` returns the text from the input field or `null` if the input was canceled. +`prompt` ফাংশন ইনপুট ফিল্ড এর লেখা রিটার্ন করে অথবা `null` রিটার্ন করে যদি ইনপুট বাতিল করা হয়। -For instance: +যেমন: ```js run -let age = prompt('How old are you?', 100); +let age = prompt('তোমার বয়স কত?', 100); -alert(`You are ${age} years old!`); // You are 100 years old! +alert(`তোমার বয়স ${age} বছর!`); // তোমার বয়স ১০০ বছর! ``` -````warn header="In IE: always supply a `default`" -The second parameter is optional, but if we don't supply it, Internet Explorer will insert the text `"undefined"` into the prompt. +````warn header="ইন্টারনেট এক্সপ্লোরার এ সব সময় `default` দিয়ে দিন" +দ্বিতীয় প্যারামিটারটি ঐচ্ছিক কিন্তু যদি আমরা এটি না দেই তাহলে ইন্টারনেট এক্সপ্লোরার লেখাটিকে প্রম্পটের মধ্যে `"undefined"` সেট করে দিবে। -Run this code in Internet Explorer to see: +এই কোডটা ইন্টারনেট এক্সপ্লোরারে রান করে দেখুন: ```js run -let test = prompt("Test"); +let test = prompt("পরীক্ষা"); ``` -So, for prompts to look good in IE, we recommend always providing the second argument: +তাই, প্রমপ্টকে ইন্টারনেট এক্সপ্লোরারে সুন্দর দেখানোর জন্য আমরা সুপারিশ করছি সবসময় দ্বিতীয় আর্গুমেন্টটি দেয়ার জন্য। ```js run -let test = prompt("Test", ''); // <-- for IE +let test = prompt("পরীক্ষা", ''); // <-- ইন্টারনেট এক্সপ্লোরারের জন্য। ``` -```` ## confirm -The syntax: +গঠন: ```js result = confirm(question); ``` -The function `confirm` shows a modal window with a `question` and two buttons: OK and Cancel. +`confirm` ফাংশন একটি মডাল, একটি দেখায় যেখানে একটি `question` এবং দুইটি OK ও Cancel বাটন আছে। -The result is `true` if OK is pressed and `false` otherwise. +যদি Ok চাপা হয় তাহলে ফলাফল `true`, অন্যথায় `false` হয়ে থাকে। -For example: +যেমন: ```js run -let isBoss = confirm("Are you the boss?"); +let isBoss = confirm("আপনি কি বস?"); -alert( isBoss ); // true if OK is pressed +alert( isBoss ); // true যদি Ok চেপে থাকেন। ``` -## Summary +## সারমর্ম -We covered 3 browser-specific functions to interact with visitors: +আমরা আজকে ব্যবহারকারীদের সাথে মতবিনিময় করার জন্য ব্রাউজার-নির্দিষ্ট তিনটি ফাংশন সম্পর্কে জানলাম। `alert` -: shows a message. +: একটি বার্তা দেখায়। `prompt` -: shows a message asking the user to input text. It returns the text or, if Cancel button or `key:Esc` is clicked, `null`. +: একটি বার্তা দেখায় যাতে ব্যবহারকারী কিছু `input`দিতে পারে। এটি `input` টিকে স্ট্রিং হিসেবে রিটার্ন করে অথবা `Cancel` বা `key:Esc` চাপ দিলে `null` রিটার্ন করে। `confirm` -: shows a message and waits for the user to press "OK" or "Cancel". It returns `true` for OK and `false` for Cancel/`key:Esc`. +: একটি বার্তা দেখায় এবং ব্যবহারকারীর নির্দেশের অপেক্ষা করে। যদি Ok চাপা হয় তাহলে `true` রিটার্ন করে। আর Cancel/`key:Esc` চাপলে `false` রিটার্ন করে। -All these methods are modal: they pause script execution and don't allow the visitor to interact with the rest of the page until the window has been dismissed. +এই সব পদ্ধতি-ই মডাল। তারা স্ক্রিপ্ট চালানো বন্ধ রাখে এবং ব্যবহারকারীকে অন্যকিছু করতে দেয় না, যতক্ষণ না এই মডাল বাতিল করা না হচ্ছে। -There are two limitations shared by all the methods above: +উপরে উল্লিখিত পদ্ধতি গুলোতে দুইটি সীমাবদ্ধতা আছে: -1. The exact location of the modal window is determined by the browser. Usually, it's in the center. -2. The exact look of the window also depends on the browser. We can't modify it. +১. মডাল উইন্ডো প্রদর্শন এর স্থান নির্দেশিত হয় ব্রাউজার দ্বারা। সাধারণত এটি মাঝখানে হয়। +২. মডাল এর ডিজাইনও ব্রাউজারের উপর নির্ভর করে। আমরা চাইলে এটি বদলাতে পারি না। -That is the price for simplicity. There are other ways to show nicer windows and richer interaction with the visitor, but if "bells and whistles" do not matter much, these methods work just fine. +ব্যবহারকারীর সাথে মতবিনিময় করার এটিই সবচেয়ে সহজ উপায় তাই কিছুতো ছাড় দিতেই হবে। তবে যদি খুব বেশি সমস্যা না থাকে আপনি এগুলো ব্যবহার করতে পারেন। অবশ্য আরো অনেক পদ্ধতি আছে আরো সুন্দর ও সমৃদ্ধ উইন্ডো তৈরী করে ব্যবহারকারীর সাথে মতবিনিময় করার। diff --git a/1-js/02-first-steps/07-type-conversions/article.md b/1-js/02-first-steps/07-type-conversions/article.md index 329556141..882455eb3 100644 --- a/1-js/02-first-steps/07-type-conversions/article.md +++ b/1-js/02-first-steps/07-type-conversions/article.md @@ -1,102 +1,120 @@ -# Type Conversions +# টাইপ রূপান্তর -Most of the time, operators and functions automatically convert the values given to them to the right type. +বেশীরভাগ সময়, অপারেটর ও ফাংশন সমুহ নিজে থেকেই তাদের কাছে দেয়া ভ্যালুগুলো রূপান্তর করে থাকে। -For example, `alert` automatically converts any value to a string to show it. Mathematical operations convert values to numbers. +উদাহারণ হিসাবে , `alert` নিজে থেকেই ভ্যালুকে স্ট্রিংয়ে রূপান্তর করে নেয়। অন্যদিকে, গানিতিক অপারেটরগুলি ভ্যালুকে সংখ্যায় রূপান্তর করে। -There are also cases when we need to explicitly convert a value to the expected type. +যদিও কিছু কিছু ক্ষেত্রে আমাদেরকেই ভ্যালুগুলোকে নিজেদের মত করে রূপান্তর করে নিতে হয়। +<<<<<<< HEAD:1-js/02-first-steps/06-type-conversions/article.md +```smart header="এখনো অবজেক্টসমূহ নিয়ে আলোচনা হয় নি" +এই অধ্যায়ে, আমরা অবজেক্ট নয় বরং, প্রিমিটিভ বিষয়গূলো জানবো। পরবর্তিতে, অবজেক্টের ধারণা পেলে, আমরা অবজেক্ট রূপান্তর নিয়ে আলোচনা করবো। . +======= ```smart header="Not talking about objects yet" In this chapter, we won't cover objects. For now, we'll just be talking about primitives. Later, after we learn about objects, in the chapter we'll see how objects fit in. +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d:1-js/02-first-steps/07-type-conversions/article.md ``` -## String Conversion +## স্ট্রিং রূপান্তর -String conversion happens when we need the string form of a value. +কোন ভ্যালু থেকে স্ট্রিং দরকার হলে স্ট্রিং রূপান্তর করা হয়। -For example, `alert(value)` does it to show the value. +উদাহরণ স্বরূপ, `alert(value)` ভ্যালুটিকে স্ট্রিংয়ে রুপান্তর করে নেয়। -We can also call the `String(value)` function to convert a value to a string: +আমরা একে `String(value)` ফাংশন ব্যবহার করেও স্ট্রিংয়ে রুপান্তর করতে পারিঃ ```js run let value = true; -alert(typeof value); // boolean +alert(typeof value); // বুলিয়ান *!* -value = String(value); // now value is a string "true" -alert(typeof value); // string +value = String(value); // এখন ভ্যালুটি একটি স্ট্রিং "true" +alert(typeof value); // স্ট্রিং */!* ``` -String conversion is mostly obvious. A `false` becomes `"false"`, `null` becomes `"null"`, etc. +প্রায় সব স্ট্রিং রুপান্তর সুস্পষ্ট। এখানে, `false` হয়ে যায় `"false"`, `null` হয়ে যায় `"null"`, ইত্যাদি। -## Numeric Conversion +## সংখ্যা রূপান্তর +<<<<<<< HEAD +গানিতিক ফাংশন এবং এক্সপ্রেশনের ক্ষেত্রে সংখ্যায় রুপান্তর নিজে থেকেই হয়ে থাকে। +======= Numeric conversion in mathematical functions and expressions happens automatically. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -For example, when division `/` is applied to non-numbers: +যেমন, ভাগের `/` সময় দুটি স্ট্রিং: ```js run -alert( "6" / "2" ); // 3, strings are converted to numbers +alert( "6" / "2" ); // 3, স্ট্রিংয়ের সংখ্যায় বদলে যাওয়া ``` -We can use the `Number(value)` function to explicitly convert a `value` to a number: +আমরা `Number(value)` ব্যাবহার করেও স্পষ্ট করে `value` কে সংখ্যায় রূপান্তর করতে পারি: ```js run let str = "123"; -alert(typeof str); // string +alert(typeof str); // স্ট্রিং -let num = Number(str); // becomes a number 123 +let num = Number(str); // সংখ্যায় 123 হয়ে গেছে -alert(typeof num); // number +alert(typeof num); // সংখ্যা ``` -Explicit conversion is usually required when we read a value from a string-based source like a text form but expect a number to be entered. +স্পট করে এই রুপান্তরের পন্থাটি তখনই কাজে লাগে, যখন এমন কোন সোর্স থেকে ভ্যালু পাই, যা স্ট্রিং দেয় অথচ যেটাকে কোন সংখ্যায় দেয়ার কথা, যেমন ঃ টেক্সট ফর্ম । -If the string is not a valid number, the result of such a conversion is `NaN`. For instance: +যদি স্টীং কোন ভ্যালিড সংখ্যা না হয়, তবে তা `NaN` হয়ে যায়। যথা: ```js run let age = Number("an arbitrary string instead of a number"); -alert(age); // NaN, conversion failed +alert(age); // NaN, রূপান্তর হয়নি ``` -Numeric conversion rules: +সংখ্যা রুপান্তরের নিয়ম: +<<<<<<< HEAD +| ভ্যালু | পরিবর্তিত রুপ... | +| ----------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `undefined` | `NaN` | +| `null` | `0` | +| true ও false | `1` ও `0` | +| `string` | স্ট্রিংয়ের শুরু ও শেষের স্পেস থেকে তা মুছে ফেলা হয়। বাকিটা ফাঁকা স্ট্রিং হলে, তা `0` হবে। নাহয় নাম্বারগুলি স্ট্রিং থেকে নেয়া হয়। এরর হলে `NaN` আসে। | +======= | Value | Becomes... | |-------|-------------| |`undefined`|`NaN`| |`null`|`0`| |true and false | `1` and `0` | | `string` | Whitespaces (includes spaces, tabs `\t`, newlines `\n` etc.) from the start and end are removed. If the remaining string is empty, the result is `0`. Otherwise, the number is "read" from the string. An error gives `NaN`. | +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 Examples: ```js run alert( Number(" 123 ") ); // 123 -alert( Number("123z") ); // NaN (error reading a number at "z") +alert( Number("123z") ); // NaN ("z" এর সংখ্যা রুপান্তরে এরর) alert( Number(true) ); // 1 alert( Number(false) ); // 0 ``` -Please note that `null` and `undefined` behave differently here: `null` becomes zero while `undefined` becomes `NaN`. +এখানে জেনে রাখি `null` ও `undefined` এক্ষেত্রে ভিন্ন আচরণ করে: `null` হয়ে যাবে শূন্য আর `undefined` হবে `NaN`. -Most mathematical operators also perform such conversion, we'll see that in the next chapter. +বেশিরভাগ গাণিতিক অপারেটর এমন পরিবর্তন করে থাকে, আমরা পরবর্তি চ্যাপ্টার এ তা দেখবো। -## Boolean Conversion +## বুলিয়ান রূপান্তর -Boolean conversion is the simplest one. +বুলিয়ানের রূপান্তর সবচেয়ে সহজতম। -It happens in logical operations (later we'll meet condition tests and other similar things) but can also be performed explicitly with a call to `Boolean(value)`. +এটি লজিকাল এক্সপ্রেশনের ক্ষেত্রে হয় (পরবর্তিতে কণ্ডিশনাল টেস্ট সহ অন্যগুলি দেখবো) তবে এটি সুস্পট করেও রূপান্তর করা যায় `Boolean(value)`. -The conversion rule: +রূপান্তর নীতি: -- Values that are intuitively "empty", like `0`, an empty string, `null`, `undefined`, and `NaN`, become `false`. -- Other values become `true`. +- ফাঁকা ভ্যালু, যেমনঃ `0`, ফাঁকা স্ট্রিং, `null`, `undefined`, ও `NaN`, হবে `false`. +- অন্যসব হয়ে যায় `true`. -For instance: +এক্ষেত্রে: ```js run alert( Boolean(1) ); // true @@ -107,44 +125,53 @@ alert( Boolean("") ); // false ``` ````warn header="Please note: the string with zero `\"0\"` is `true`" -Some languages (namely PHP) treat `"0"` as `false`. But in JavaScript, a non-empty string is always `true`. +কিছু প্রোগ্রামিং ভাষায় (PHP) তে `"0"` কে `false` ধরে, কিন্তু জাভাস্ক্রিপ্ট, স্ট্রিং ফাঁকা না হলে `true` ধরে নেয়। ```js run alert( Boolean("0") ); // true -alert( Boolean(" ") ); // spaces, also true (any non-empty string is true) +alert( Boolean(" ") ); // স্পেস, এটাও true (স্ট্রিং ফাঁকা না হলেই true) ``` ```` -## Summary +## সারসংক্ষেপ -The three most widely used type conversions are to string, to number, and to boolean. +বহুল ব্যাবহৃত ৩টি রূপান্তরসমূহ হচ্ছে স্ট্রিং ,সংখ্যায় এবং বুলিয়ানে রুপান্তর। -**`String Conversion`** -- Occurs when we output something. Can be performed with `String(value)`. The conversion to string is usually obvious for primitive values. +**`স্ট্রিংয়ে রূপান্তর`** -- আউটপুট দেখতে হলে হয়। অথবা `String(value)` দিয়ে করা যায়। প্রায় সব মৌলিক ভ্যালুর জন্য এটা খুব স্পষ্ট। -**`Numeric Conversion`** -- Occurs in math operations. Can be performed with `Number(value)`. +**`সংখ্যায় রূপান্তর`** -- গানিতিক অপারেশনে হয়। `Number(value)` দিয়েও করতে পারি। -The conversion follows the rules: + রূপান্তর নীতি: +<<<<<<< HEAD +| ভ্যালু | বদলে যায়... | +| ----------------------------------- | ------------------------------------------------------------------------------------------------------------------ | +| `undefined` | `NaN` | +| `null` | `0` | +| true / false | `1 / 0` | +| `string` | স্ট্রিংয়ে যা তাই আসে, স্ট্রিংয়ের শুরু ও শেষের স্পেস থেকে তা মুছে ফেলা হয়। বাকিটা ফাঁকা স্ট্রিং হলে, তা `0` হবে। নাহয় নাম্বারগুলি স্ট্রিং থেকে নেয়া হয়। এরর হলে `NaN` আসে। | +======= | Value | Becomes... | |-------|-------------| |`undefined`|`NaN`| |`null`|`0`| |true / false | `1 / 0` | | `string` | The string is read "as is", whitespaces (includes spaces, tabs `\t`, newlines `\n` etc.) from both sides are ignored. An empty string becomes `0`. An error gives `NaN`. | +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -**`Boolean Conversion`** -- Occurs in logical operations. Can be performed with `Boolean(value)`. +**`বুলিয়ানে রূপান্তর`** -- লজিকাল অপারেশনে হয়। আবার `Boolean(value)` দিয়েও করা যায। Follows the rules: -| Value | Becomes... | -|-------|-------------| -|`0`, `null`, `undefined`, `NaN`, `""` |`false`| -|any other value| `true` | +| ভ্যালু | বদলে যায়... | +| ------------------------------------- | --------- | +| `0`, `null`, `undefined`, `NaN`, `""` | `false` | +| অন্য যেকোন ভ্যালু | `true` | -Most of these rules are easy to understand and memorize. The notable exceptions where people usually make mistakes are: +প্রায় সব নীতিই বুঝা অ মনে রাখা সোজা। তবে কিছু কমন ভুল হলো: -- `undefined` is `NaN` as a number, not `0`. -- `"0"` and space-only strings like `" "` are true as a boolean. +- `undefined` হয় `NaN` সংখ্যা হিসাব করলে, `0` নয় +- `"0"` ও স্পেস `" "` বুলিয়ানে true -Objects aren't covered here. We'll return to them later in the chapter that is devoted exclusively to objects after we learn more basic things about JavaScript. +অবজেক্ট এখানে কভার করা হয় নি। আমরা এখানে আবার আসবো। এটা শুধুই অব্জেক্টের জন্য যখন আমরা আরো ভালো করে জাভাস্ক্রিপ্ট শিখে ফেলবো. diff --git a/1-js/02-first-steps/08-operators/1-increment-order/solution.md b/1-js/02-first-steps/08-operators/1-increment-order/solution.md index 8a44d798e..574c2a8ca 100644 --- a/1-js/02-first-steps/08-operators/1-increment-order/solution.md +++ b/1-js/02-first-steps/08-operators/1-increment-order/solution.md @@ -1,5 +1,5 @@ -The answer is: +উত্তর হচ্ছে: - `a = 2` - `b = 2` @@ -9,10 +9,10 @@ The answer is: ```js run no-beautify let a = 1, b = 1; -alert( ++a ); // 2, prefix form returns the new value -alert( b++ ); // 1, postfix form returns the old value +alert( ++a ); // 2, প্রিফিক্স ফর্ম নতুন ভ্যালু রিটার্ন করে +alert( b++ ); // 1, পোস্টফিক্স ফর্ম পুরনো ভ্যালু রিটার্ন করে -alert( a ); // 2, incremented once -alert( b ); // 2, incremented once +alert( a ); // 2, একবার বৃদ্ধি পেয়েছে +alert( b ); // 2, একবার বৃদ্ধি পেয়েছে ``` diff --git a/1-js/02-first-steps/08-operators/1-increment-order/task.md b/1-js/02-first-steps/08-operators/1-increment-order/task.md index 7db092389..a15233b71 100644 --- a/1-js/02-first-steps/08-operators/1-increment-order/task.md +++ b/1-js/02-first-steps/08-operators/1-increment-order/task.md @@ -2,9 +2,9 @@ importance: 5 --- -# The postfix and prefix forms +# পোস্টফিক্স এবং প্রিফিক্স ফর্ম -What are the final values of all variables `a`, `b`, `c` and `d` after the code below? +নিচের কোডে `a`, `b`, `c` ও `d` এর ফাইনাল ভ্যালু কী হবে? ```js let a = 1, b = 1; diff --git a/1-js/02-first-steps/08-operators/2-assignment-result/solution.md b/1-js/02-first-steps/08-operators/2-assignment-result/solution.md index e3113b4cd..329b03692 100644 --- a/1-js/02-first-steps/08-operators/2-assignment-result/solution.md +++ b/1-js/02-first-steps/08-operators/2-assignment-result/solution.md @@ -1,5 +1,5 @@ -The answer is: +উত্তর হচ্ছে: -- `a = 4` (multiplied by 2) -- `x = 5` (calculated as 1 + 4) +- `a = 4` (২ দিয়ে গুণ) +- `x = 5` (১ + ৪ হিসেবে) diff --git a/1-js/02-first-steps/08-operators/2-assignment-result/task.md b/1-js/02-first-steps/08-operators/2-assignment-result/task.md index 5345c9485..79501bd26 100644 --- a/1-js/02-first-steps/08-operators/2-assignment-result/task.md +++ b/1-js/02-first-steps/08-operators/2-assignment-result/task.md @@ -2,9 +2,9 @@ importance: 3 --- -# Assignment result +# অ্যাসাইনমেন্টের ফলাফল -What are the values of `a` and `x` after the code below? +নিচের কোডে `a` এবং `x` এর মান কী হবে? ```js let a = 2; diff --git a/1-js/02-first-steps/08-operators/3-primitive-conversions-questions/solution.md b/1-js/02-first-steps/08-operators/3-primitive-conversions-questions/solution.md index 7370b66af..1b9b79040 100644 --- a/1-js/02-first-steps/08-operators/3-primitive-conversions-questions/solution.md +++ b/1-js/02-first-steps/08-operators/3-primitive-conversions-questions/solution.md @@ -16,6 +16,15 @@ undefined + 1 = NaN // (6) " \t \n" - 2 = -2 // (7) ``` +<<<<<<< HEAD +1. কোন স্ট্রিংয়ের সাথে যোগের ক্ষেত্রে `"" + 1` তে `1` রূপান্তর হয়ে `"" + 1 = "1"` হয়। তাই এখানে পায় `"1" + 0`, এক্ষেত্রেও একই নিয়ম প্রযোজ্য। +2. বিয়োগ `-` (প্রায় অন্যসব অপারেটরের মতই) শুধুমাত্র সংখ্যা নিয়ে কাজ করে, এটি ফাঁকা স্ট্রিংকে শূন্য তে রূপান্তর করে নেয় `""` থেকে `0` হবে। +3. স্ট্রিং সংযুক্তকরণ নীতি অনুসারে `5` স্ট্রিংয়ে রূপান্তর হবে। +4. বিয়োগের সময় স্ট্রিং সবসময় সংখ্যায় রূপান্তর হয়, তাই এক্ষেত্রে `" -9 "` সংখ্যা `-9` তে পরিবর্তন হয় (এখানে স্পেসগুলিকে উপেক্ষা করে)। +5. `null` হবে `0` সংখ্যায় রুপান্তরের পর। +6. `undefined` হয়ে যায় `NaN` সংখ্যায় রূপান্তর করা হলে। +7. স্পেসসমূহ বাদ দেয়া হয় সংখ্যায় রুপান্তর করলে, এখানে পুরো স্ট্রিংটাই বিভিন্ন স্পেসে তৈরি, যেমনঃ `\t`, `\n` এবং তাদের মাঝের "রেগুলার" স্পেসসমূহ। সুতরাং এটি ফাঁকা স্ট্রিংয়ের মতই, যা শুন্যতে (`0`) রুপান্তর হয়। +======= 1. The addition with a string `"" + 1` converts `1` to a string: `"" + 1 = "1"`, and then we have `"1" + 0`, the same rule is applied. 2. The subtraction `-` (like most math operations) only works with numbers, it converts an empty string `""` to `0`. 3. The addition with a string appends the number `5` to the string. @@ -23,3 +32,4 @@ undefined + 1 = NaN // (6) 5. `null` becomes `0` after the numeric conversion. 6. `undefined` becomes `NaN` after the numeric conversion. 7. Space characters are trimmed off string start and end when a string is converted to a number. Here the whole string consists of space characters, such as `\t`, `\n` and a "regular" space between them. So, similarly to an empty string, it becomes `0`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 diff --git a/1-js/02-first-steps/08-operators/3-primitive-conversions-questions/task.md b/1-js/02-first-steps/08-operators/3-primitive-conversions-questions/task.md index 068420c7d..8c7ca90a4 100644 --- a/1-js/02-first-steps/08-operators/3-primitive-conversions-questions/task.md +++ b/1-js/02-first-steps/08-operators/3-primitive-conversions-questions/task.md @@ -2,9 +2,9 @@ importance: 5 --- -# Type conversions +# টাইপ রূপান্তর -What are results of these expressions? +এক্সপ্রেশনগুলির ফলাফল কী হবে? ```js no-beautify "" + 1 + 0 @@ -23,4 +23,4 @@ undefined + 1 " \t \n" - 2 ``` -Think well, write down and then compare with the answer. +ভালো করে ভাবুন, লিখে রাখুন এবং আমাদের উত্তরের সাথে মিলিয়ে দেখুন। diff --git a/1-js/02-first-steps/08-operators/4-fix-prompt/solution.md b/1-js/02-first-steps/08-operators/4-fix-prompt/solution.md index 209a0702c..9fe18624c 100644 --- a/1-js/02-first-steps/08-operators/4-fix-prompt/solution.md +++ b/1-js/02-first-steps/08-operators/4-fix-prompt/solution.md @@ -1,6 +1,6 @@ -The reason is that prompt returns user input as a string. +কারণ prompt ইউজার ইনপুটকে স্ট্রিং হিসেবে রিটার্ন করে। -So variables have values `"1"` and `"2"` respectively. +তাই ভ্যারিয়েবল দুটোর ভ্যালু হচ্ছে যথাক্রমে `"1"` এবং `"2"`। ```js run let a = "1"; // prompt("First number?", 1); @@ -9,9 +9,9 @@ let b = "2"; // prompt("Second number?", 2); alert(a + b); // 12 ``` -What we should do is to convert strings to numbers before `+`. For example, using `Number()` or prepending them with `+`. +আমাদের `+` এর আগে স্ট্রিংকে নাম্বারে রূপান্তর করে নেয়া উচিৎ। যেমন, `Number()` ব্যবহার করে বা আগে `+` বসিয়ে। -For example, right before `prompt`: +যেমন একদম `prompt` এর আগে: ```js run let a = +prompt("First number?", 1); @@ -20,7 +20,7 @@ let b = +prompt("Second number?", 2); alert(a + b); // 3 ``` -Or in the `alert`: +অথবা `alert` এ: ```js run let a = prompt("First number?", 1); @@ -29,4 +29,4 @@ let b = prompt("Second number?", 2); alert(+a + +b); // 3 ``` -Using both unary and binary `+` in the latest code. Looks funny, doesn't it? +শেষ কোডে ইউনারি আর বাইনারি `+` দুটোই আছে। মজার দেখাচ্ছে, তাই না? diff --git a/1-js/02-first-steps/08-operators/4-fix-prompt/task.md b/1-js/02-first-steps/08-operators/4-fix-prompt/task.md index b3ea4a3a3..d41d8b189 100644 --- a/1-js/02-first-steps/08-operators/4-fix-prompt/task.md +++ b/1-js/02-first-steps/08-operators/4-fix-prompt/task.md @@ -2,13 +2,13 @@ importance: 5 --- -# Fix the addition +# যোগটি ঠিক করুন -Here's a code that asks the user for two numbers and shows their sum. +নিচের কোডটি ইউজারের কাছ থেকে দুটি সংখ্যা নিয়ে তাদের যোগফল দেখায়। -It works incorrectly. The output in the example below is `12` (for default prompt values). +এটা ঠিকমতো কাজ করছে না। নিচের উদাহরণে আউটপুট আসছে `12` (ডিফল্ট prompt ভ্যালুর জন্য)। -Why? Fix it. The result should be `3`. +কেন? এটি ঠিক করুন। ফলাফল `3` হওয়া উচিৎ। ```js run let a = prompt("First number?", 1); diff --git a/1-js/02-first-steps/08-operators/article.md b/1-js/02-first-steps/08-operators/article.md index 0c1663619..ed1058025 100644 --- a/1-js/02-first-steps/08-operators/article.md +++ b/1-js/02-first-steps/08-operators/article.md @@ -1,15 +1,15 @@ -# Basic operators, maths +# বেসিক অপারেটর আর গণিত -We know many operators from school. They are things like addition `+`, multiplication `*`, subtraction `-`, and so on. +আমরা স্কুলে অনেক অপারেটর সম্পর্কে জেনেছি। যেমন যোগ `+`, গুণ `*`, বিয়োগ `-`, এরকম আরও। -In this chapter, we’ll start with simple operators, then concentrate on JavaScript-specific aspects, not covered by school arithmetic. +এই অধ্যায়ে আমরা সহজ কিছু অপারেটর দিয়ে শুরু করবো, তারপর জাভাস্ক্রিপ্টের বিশেষ কিছু অপারেটরের দেখবো যেগুলো স্কুলের পাটিগণিতে ছিল না। -## Terms: "unary", "binary", "operand" +## টার্মস: "ইউনারি", "বাইনারি", "অপারেন্ড" -Before we move on, let's grasp some common terminology. +শুরু করার আগে সাধারণ কিছু টার্মিনোলজি জেনে নিই। -- *An operand* -- is what operators are applied to. For instance, in the multiplication of `5 * 2` there are two operands: the left operand is `5` and the right operand is `2`. Sometimes, people call these "arguments" instead of "operands". -- An operator is *unary* if it has a single operand. For example, the unary negation `-` reverses the sign of a number: +- *অপারেন্ড* -- হচ্ছে অপারেটর যার বা যাদের ওপর কাজ করে। যেমন, `৫ * ২` এর গুণে দুইটি অপারেন্ড আছে: বামের অপারেন্ড হচ্ছে `৫` এবং ডানের অপারেন্ড হচ্ছে `২`। অনেকে অপারেন্ডকে আর্গুমেন্টও বলে থাকে। +- কোনো অপারেটরকে *ইউনারি* বলা হয় যদি এর শুধু একটিই অপারেটর থাকে। যেমন, ইউনারি নেগেশন `-` কোনো সংখ্যার চিহ্ন পরিবর্তন করে: ```js run let x = 1; @@ -17,53 +17,70 @@ Before we move on, let's grasp some common terminology. *!* x = -x; */!* - alert( x ); // -1, unary negation was applied + alert( x ); // -১, ইউনারি নেগেশনের পর ``` -- An operator is *binary* if it has two operands. The same minus exists in binary form as well: +- কোনো অপারেটরকে *বাইনারি* বলা হয় যদি এর দুইটি অপারেটর থাকে। একই মাইনাস চিহ্নর বাইনারি রূপ: ```js run no-beautify let x = 1, y = 3; - alert( y - x ); // 2, binary minus subtracts values + alert( y - x ); // ২, বাইনারি মাইনাস বিয়োগের কাজ করে ``` - Formally, in the examples above we have two different operators that share the same symbol: the negation operator, a unary operator that reverses the sign, and the subtraction operator, a binary operator that subtracts one number from another. + ভালোভাবে বলতে গেলে, উপরের উদাহরণ দুটোয় আমরা দুইটি অপারেটর দেখিয়েছে যাদের চিহ্ন একই: ইউনারি নেগেশন অপারেটর, যেই অপারেটর কোনো সংখ্যার চিহ্ন পরিবর্তন করে, এবং বিয়োগ অপারেটর, যেই বাইনারি অপারেটর একটি সংখ্যা থেকে অন্য সংখ্যা বিয়োগ করে। -## Maths +## গণিত -The following math operations are supported: +নিচের গাণিতিক অপারেটরগুলো ব্যবহার করা যাবে: -- Addition `+`, -- Subtraction `-`, -- Multiplication `*`, -- Division `/`, -- Remainder `%`, -- Exponentiation `**`. +- যোগ `+`, +- বিয়োগ `-`, +- গুণ `*`, +- ভাগ `/`, +- ভাগশেষ `%`, +- সূচক `**`. -The first four are straightforward, while `%` and `**` need a few words about them. +প্রথম চারটি অপারেশন দেখেই বুঝা যাচ্ছে, `%` আর `**` নিয়ে আরও কিছু বলার দরকার। -### Remainder % +### ভাগশেষ % -The remainder operator `%`, despite its appearance, is not related to percents. +ভাগশেষ অপারেটর `%`, দেখে শতকরার মতো মনে হলেও শতকরার সাথে এর কোনো সম্পর্ক নেই। -The result of `a % b` is the [remainder](https://en.wikipedia.org/wiki/Remainder) of the integer division of `a` by `b`. +`a % b` এই অপারেশনের রেজাল্ট হচ্ছে `a` কে `b` দিয়ে ভাগ করার পর যা অবশিষ্ট থাকে, বা [ভাগশেষ](https://en.wikipedia.org/wiki/Remainder)। -For instance: +যেমন: ```js run +<<<<<<< HEAD +alert( 5 % 2 ); // ১, ৫ কে ২ দিয়ে ভাগ করার পর ভাগশেষ +alert( 8 % 3 ); // ২, ৮ কে ৩ দিয়ে ভাগ করার পর ভাগশেষ +======= alert( 5 % 2 ); // 1, the remainder of 5 divided by 2 alert( 8 % 3 ); // 2, the remainder of 8 divided by 3 alert( 8 % 4 ); // 0, the remainder of 8 divided by 4 +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ``` -### Exponentiation ** +### সূচক ** +<<<<<<< HEAD +সূচক অপারেটর `a ** b`, `a` কে `b` বার নিজেকে নিজে গুণ করে। +======= The exponentiation operator `a ** b` raises `a` to the power of `b`. In school maths, we write that as ab. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -For instance: +যেমন: ```js run +<<<<<<< HEAD +alert( 2 ** 2 ); // ৪ (দুইকে দুইবার গুণ) +alert( 2 ** 3 ); // ৮ (২ * ২ * ২, ৩ বার) +alert( 2 ** 4 ); // ১৬ (২ * ২ * ২ * ২, ৪ বার) +``` + +গণিতে সূচক নন-ইন্টিজার বা অপূর্ণ সংখ্যার জন্যও প্রযোজ্য। যেমন, বর্গমূল হচ্ছে `১/২` দিয়ে ঘাত করা: +======= alert( 2 ** 2 ); // 2² = 4 alert( 2 ** 3 ); // 2³ = 8 alert( 2 ** 4 ); // 2⁴ = 16 @@ -72,129 +89,152 @@ alert( 2 ** 4 ); // 2⁴ = 16 Just like in maths, the exponentiation operator is defined for non-integer numbers as well. For example, a square root is an exponentiation by ½: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run -alert( 4 ** (1/2) ); // 2 (power of 1/2 is the same as a square root) -alert( 8 ** (1/3) ); // 2 (power of 1/3 is the same as a cubic root) +alert( 4 ** (1/2) ); // ২ (কোনো সংখ্যার সূচক ১/২ আর সংখ্যাটির বর্গমূল একই) +alert( 8 ** (1/3) ); // ২ (কোনো সংখ্যার সূচক ১/৩ আর সংখ্যাটির ঘনমূল একই) ``` -## String concatenation with binary + +## বাইনারি + দিয়ে স্ট্রিং জোড়া দেয়া +<<<<<<< HEAD +এবার আমরা জাভাস্ক্রিপ্ট অপারেটরের কিছু বিশেষত্ব দেখি যেগুলো স্কুলের পাটিগণিতের বাইরে। +======= Let's meet the features of JavaScript operators that are beyond school arithmetics. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Usually, the plus operator `+` sums numbers. +সাধারণত, প্লাস অপারেটর `+` সংখ্যা যোগ করে। -But, if the binary `+` is applied to strings, it merges (concatenates) them: +কিন্তু যদি এই বাইনারি `+` স্ট্রিংয়ের সাথে ব্যবহার করা হয়, তাহলে এই অপারেটর স্ট্রিং দুটোকে জোড়া দেয়: ```js let s = "my" + "string"; alert(s); // mystring ``` -Note that if any of the operands is a string, then the other one is converted to a string too. +খেয়াল রাখতে হবে, যদি কোনো অপারেটর স্ট্রিং হয়, তাহলে অন্য অপারেটরটিও আগে স্ট্রিং এ রূপান্তরিত হবে। -For example: +যেমন: ```js run alert( '1' + 2 ); // "12" alert( 2 + '1' ); // "21" ``` -See, it doesn't matter whether the first operand is a string or the second one. +লক্ষ্য করুন, কোন অপারেন্ডটি স্ট্রিং সেটা কোনো বিষয় না। -Here's a more complex example: +আরেকটি একটু জটিল উদাহরণ: ```js run -alert(2 + 2 + '1' ); // "41" and not "221" +alert(2 + 2 + '1' ); // "41", "221" না ``` +<<<<<<< HEAD +এখানে অপারেটরগুলো একটির পর আরেকটি কাজ করেছে। প্রথম `+` দুইটি সংখ্যাকে যোগ করেছে, তাই এটা `4` রিটার্ন করে, তারপর পরের `+` এর সাথে স্ট্রিং `1` যোগ করে, তাই `4 + '1' = 41`। +======= Here, operators work one after another. The first `+` sums two numbers, so it returns `4`, then the next `+` adds the string `1` to it, so it's like `4 + '1' = '41'`. ```js run alert('1' + 2 + 2); // "122" and not "14" ``` Here, the first operand is a string, the compiler treats the other two operands as strings too. The `2` gets concatenated to `'1'`, so it's like `'1' + 2 = "12"` and `"12" + 2 = "122"`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -The binary `+` is the only operator that supports strings in such a way. Other arithmetic operators work only with numbers and always convert their operands to numbers. +বাইনারি `+` ই একমাত্র অপারেটর যেটি স্ট্রিং সাপোর্ট করে। অন্যন্য অপারেটর শুধু সংখ্যা নিয়ে কাজ করে আর সবসময় এর অপারেন্ডগুলোকে সংখ্যায় রূপান্তর করে নেয়। -Here's the demo for subtraction and division: +এখানে বিয়োগ আর ভাগ করে দেখানো হলো: ```js run -alert( 6 - '2' ); // 4, converts '2' to a number -alert( '6' / '2' ); // 3, converts both operands to numbers +alert( 6 - '2' ); // 4, '2' কে আগে সংখ্যায় রূপান্তর করে নিয়েছে +alert( '6' / '2' ); // 3, দুটো অপারেটরকেই সংখ্যায় রূপান্তর করে নিয়েছে ``` -## Numeric conversion, unary + +## গাণিতিক রূপান্তর, ইউনারি + -The plus `+` exists in two forms: the binary form that we used above and the unary form. +প্লাস `+` অপারেটরের দুইটি ফর্ম আছে: বাইনারি ফর্ম যা আমরা উপরে দেখলাম, আর ইউনারি ফর্ম। -The unary plus or, in other words, the plus operator `+` applied to a single value, doesn't do anything to numbers. But if the operand is not a number, the unary plus converts it into a number. +ইউনারি প্লাস, বা, অন্য কথায়, প্লাস অপারেটর `+` যা একটি সংখ্যার সাথে ব্যবহার করা হয়, সংখ্যাটিকে কিছুই করে না। কিন্তু অপারেন্ড যদি সংখ্যা না হয়, তবে সেটিকে সংখ্যায় রূপান্তর করে। -For example: +উদাহরণ: ```js run -// No effect on numbers +// সংখ্যার উপর কোনো প্রভাব নাই let x = 1; -alert( +x ); // 1 +alert( +x ); // ১ let y = -2; -alert( +y ); // -2 +alert( +y ); // -২ *!* -// Converts non-numbers -alert( +true ); // 1 -alert( +"" ); // 0 +// সংখ্যায় রূপান্তর করা +alert( +true ); // ১ +alert( +"" ); // ০ */!* ``` -It actually does the same thing as `Number(...)`, but is shorter. +এটা আসলে `Number(...)` যা করে ঠিক তাই করে, শুধু সংক্ষিপ্ত রূপ। -The need to convert strings to numbers arises very often. For example, if we are getting values from HTML form fields, they are usually strings. What if we want to sum them? +প্রায় সময়ই স্ট্রিংকে নাম্বারে রূপান্তর করার দরকার হতে পারে। যেমন, যদি আমরা HTML এর ফর্ম ফিল্ড থেকে ভ্যালু নিই, সেগুলো বেশিরভাগ সময়ই স্ট্রিং হয়। কিন্তু যদি সেগুলো যোগ করার দরকার পড়ে? -The binary plus would add them as strings: +বাইনারি `+` স্ট্রিং হিসেবেই যোগ করবে: ```js run let apples = "2"; let oranges = "3"; -alert( apples + oranges ); // "23", the binary plus concatenates strings +alert( apples + oranges ); // "23", বাইনারি প্লাস স্ট্রিং জোড়া দেয় ``` -If we want to treat them as numbers, we need to convert and then sum them: +যদি আমরা এদেরকে সংখ্যা হিসেবে ব্যবহার করতে চাই, তাহলে আগে এদের সংখ্যায় রূপান্তর করতে হবে: ```js run let apples = "2"; let oranges = "3"; *!* -// both values converted to numbers before the binary plus -alert( +apples + +oranges ); // 5 +// দুইটি মানই বাইনারি প্লাসের আগে সংখ্যায় রূপান্তরিত হয়েছে +alert( +apples + +oranges ); // ৫ */!* -// the longer variant -// alert( Number(apples) + Number(oranges) ); // 5 +// একটু বড় ভার্সন +// alert( Number(apples) + Number(oranges) ); // ৫ ``` -From a mathematician's standpoint, the abundance of pluses may seem strange. But from a programmer's standpoint, there's nothing special: unary pluses are applied first, they convert strings to numbers, and then the binary plus sums them up. +একজন গণিতবিদের দিক থেকে চিন্তা করলে, অযথা প্লাসের ব্যবহার অদ্ভুত লাগতে পারে। কিন্তু একজন প্রোগ্রামারের কাছে এটা তেমন কিছুই না: ইউনারি প্লাস আগে কাজ করে স্ট্রিংকে সংখ্যায় রূপান্তর করে, তারপর বাইনারি প্লাস তাদের যোগ করে। -Why are unary pluses applied to values before the binary ones? As we're going to see, that's because of their *higher precedence*. +কেন বাইনারি প্লাসের আগে ইউনারি প্লাস কাজ করে? আমরা যেমনটা দেখতে যাচ্ছি, এর কারণ ইউনারি প্লাসের *প্রিসিডেন্স বেশি*। -## Operator precedence +## অপারেটরের প্রিসিডেন্স -If an expression has more than one operator, the execution order is defined by their *precedence*, or, in other words, the default priority order of operators. +একটা এক্সপ্রেশনে যদি একাধিক অপারেটর থাকে, তবে তাদের এক্সিকিউশন অর্ডার তাদের *প্রিসিডেন্স* দিয়ে নির্ধারিত হয়, বা অন্য কথায়, অপারেটরদের ডিফল্ট প্রায়োরিটি অর্ডার অনুযায়ী। -From school, we all know that the multiplication in the expression `1 + 2 * 2` should be calculated before the addition. That's exactly the precedence thing. The multiplication is said to have *a higher precedence* than the addition. +স্কুলে আমরা শিখেছি `1 + 2 * 2` এক্সপ্রেশনের গুণের কাজ যোগের আগে করতে হয়। এই জিনিসটাই হচ্ছে প্রিসিডেন্স। গুণের প্রিসিডেন্স যোগের চেয়ে *বেশি*। -Parentheses override any precedence, so if we're not satisfied with the default order, we can use them to change it. For example, write `(1 + 2) * 2`. +ব্র্যাকেট যেকোনো প্রিসিডেন্সকে ওভাররাইড করে, সেজন্য আমরা যদি ডিফল্ট প্রিসিডেন্স নিয়ে খুশি না হই, আমরা ব্র্যাকেট ব্যবহার করে সেটা বদলাতে পারি। যেমন লিখতে পারেন `(1 + 2) * 2`। -There are many operators in JavaScript. Every operator has a corresponding precedence number. The one with the larger number executes first. If the precedence is the same, the execution order is from left to right. +জাভাস্ক্রিপ্টে অনেক অপারেটর আছে। প্রত্যেক অপারেটরের একটি প্রিসিডেন্স নাম্বার আছে। যাদের নাম্বার বেশি তারা আগে এক্সিকিউট হবে। প্রিসিডেন্স এক হলে বাম থেকে ডানে এক্সিকিউট হবে। -Here's an extract from the [precedence table](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence) (you don't need to remember this, but note that unary operators are higher than corresponding binary ones): +এটা [প্রিসিডেন্স টেবিলের](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence) একটা অংশ (আপনার এটা মনে রাখতে হবে না, শুধু লক্ষ্য করুন ইউনারি অপারেটরদের প্রিসিডেন্স তাদের সংশ্লিষ্ট বাইনারি অপারেটরের চেয়ে বেশি): -| Precedence | Name | Sign | +| প্রিসিডেন্স | নাম | চিহ্ন | |------------|------|------| | ... | ... | ... | +<<<<<<< HEAD +| ১৭ | ইউনারি প্লাস | `+` | +| ১৭ | ইউনারি নেগেশন | `-` | +| ১৬ | সূচক | `**` | +| ১৫ | গুণ | `*` | +| ১৫ | ভাগ | `/` | +| ১৩ | যোগ | `+` | +| ১৩ | বিয়োগ | `-` | +| ... | ... | ... | +| ৩ | অ্যাসাইনমেন্ট | `=` | +| ... | ... | ... | + +আমরা দেখতে পাচ্ছি, "ইউনারি প্লাসের" প্রায়োরিটি `১৭` যা যোগের (বাইনারি প্লাস) `১৩` এর চেয়ে বেশি। এজন্য `"+apples + +oranges"` এক্সপ্রেশনে ইউনারি প্লাস বাইনারি প্লাসের আগে কাজ করেছিলো। +======= | 14 | unary plus | `+` | | 14 | unary negation | `-` | | 13 | exponentiation | `**` | @@ -207,28 +247,37 @@ Here's an extract from the [precedence table](https://developer.mozilla.org/en-U | ... | ... | ... | As we can see, the "unary plus" has a priority of `14` which is higher than the `11` of "addition" (binary plus). That's why, in the expression `"+apples + +oranges"`, unary pluses work before the addition. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -## Assignment +## অ্যাসাইনমেন্ট +<<<<<<< HEAD +খেয়াল রাখবেন অ্যাসাইনমেন্টও `=` একটি অপারেটর। এটা প্রিসিডেন্স টেবিলের প্রায় নিচের দিকে খুব কম প্রায়োরিটি `৩` নিয়ে অবস্থান করছে। +======= Let's note that an assignment `=` is also an operator. It is listed in the precedence table with the very low priority of `2`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -That's why, when we assign a variable, like `x = 2 * 2 + 1`, the calculations are done first and then the `=` is evaluated, storing the result in `x`. +এজন্য যখন আমরা `x = 2 * 2 + 1` এভাবে ভ্যারিয়েবল অ্যাসাইন করি তখন ক্যালকুলেশন আগে করা হয় আর তারপর `=` এর কাজ হয় যা হলো `x` এ ফলাফলটা জমা রাখা। ```js let x = 2 * 2 + 1; -alert( x ); // 5 +alert( x ); // ৫ ``` -### Assignment = returns a value +### অ্যাসাইনমেন্ট = একটা ভ্যালু রিটার্ন করা -The fact of `=` being an operator, not a "magical" language construct has an interesting implication. +`=` যে একট অপারেটর, কোনো জাদুকরি ল্যাঙ্গুয়েজ কনস্ট্রাকট না, তার একটা মজার প্রমাণ আছে। +<<<<<<< HEAD +জাভাস্ক্রিপ্টের বেশিরভাগ অপারেটরই একটি ভ্যালু রিটার্ন করে। আমরা `+` আর `-` এর ক্ষেত্রে তো বুঝতেই পারছি, কিন্তু এটা `=` এর জন্যও প্রযোজ্য। +======= All operators in JavaScript return a value. That's obvious for `+` and `-`, but also true for `=`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -The call `x = value` writes the `value` into `x` *and then returns it*. +`x = value` এক্সপ্রেশন কল `value` কে `x` এ লিখে *এবং তারপর সেটা রিটার্ন করে*। -Here's a demo that uses an assignment as part of a more complex expression: +এখানে আরেকটু জটিল এক্সপ্রেশনে অ্যাসাইনমেন্ট ব্যবহার করে দেখানো হলো: ```js run let a = 1; @@ -238,19 +287,19 @@ let b = 2; let c = 3 - (a = b + 1); */!* -alert( a ); // 3 -alert( c ); // 0 +alert( a ); // ৩ +alert( c ); // ০ ``` -In the example above, the result of expression `(a = b + 1)` is the value which was assigned to `a` (that is `3`). It is then used for further evaluations. +এই উদাহরণে, এক্সপ্রেশন `(a = b + 1)` এর ফলাফল হচ্ছে যেই ভ্যালুটি `a` তে অ্যাসাইন করা হলো (যা হচ্ছে `৩`)। এটা এরপর আরও ইভ্যালুয়েশনের জন্য ব্যবহার করা হয়েছে। -Funny code, isn't it? We should understand how it works, because sometimes we see it in JavaScript libraries. +মজার কোড, তাই না? আমাদের এটা কীভাবে কাজ করে তা বুঝা উচিৎ, কারণ আমরা অনেক সময় এটা জাভাস্ক্রিপ্ট লাইব্রেরিগুলোতে দেখতে পাবো। -Although, please don't write the code like that. Such tricks definitely don't make code clearer or readable. +যদিও দয়া করে এরকম কোড লিখবেন না। এরকম ট্রিক কোড একদমই পরিষ্কার বা পড়ার মতো রাখে না। -### Chaining assignments +### চেইনিং অ্যাসাইনমেন্ট -Another interesting feature is the ability to chain assignments: +আরেকটা মজার বৈশিষ্ট্য হচ্ছে অ্যাসাইনমেন্ট চেইন করা: ```js run let a, b, c; @@ -259,27 +308,31 @@ let a, b, c; a = b = c = 2 + 2; */!* -alert( a ); // 4 -alert( b ); // 4 -alert( c ); // 4 +alert( a ); // ৪ +alert( b ); // ৪ +alert( c ); // ৪ ``` -Chained assignments evaluate from right to left. First, the rightmost expression `2 + 2` is evaluated and then assigned to the variables on the left: `c`, `b` and `a`. At the end, all the variables share a single value. +চেইন করা অ্যাসাইনমেন্ট ডান থেকে বামে ইভ্যালুয়েট হয়। প্রথমে, একদম ডানের এক্সপ্রেশন `2 + 2` ইভ্যালুয়েট হয় আর বামের ভ্যারিয়েবলগুলো: `c`, `b` এবং `a` তে অ্যাসাইন হয়। সবশেষে সবগুলো ভ্যারিয়েবল একটি ভ্যালুই শেয়ার করে। +<<<<<<< HEAD +আবারও, কোড রিডেবল রাখার জন্য এরকম কোডকে একাধিক লাইনে ভাগ করে নেয়া ভালো: +======= Once again, for the purposes of readability it's better to split such code into a few lines: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js c = 2 + 2; b = c; a = c; ``` -That's easier to read, especially when eye-scanning the code fast. +এটা পড়তে সহজ, বিশেষ করে যখন কোড পড়ার আগে প্রথমে চোখ বুলিয়ে নিচ্ছেন। -## Modify-in-place +## ইন-প্লেসে মডিফাই করা -We often need to apply an operator to a variable and store the new result in that same variable. +মাঝেমধ্যেই আমাদের একটি ভ্যারিয়েবলের উপর অপারেটর ব্যবহার করে আবার একই ভ্যারিয়েবলেই ফলাফলটি রাখা লাগতে পারে। -For example: +যেমন: ```js let n = 2; @@ -287,67 +340,71 @@ n = n + 5; n = n * 2; ``` -This notation can be shortened using the operators `+=` and `*=`: +এই নোটেশনটি `+=` আর `*=` অপারেটর ব্যবহার করে ছোট করা যেতে পারে: ```js run let n = 2; -n += 5; // now n = 7 (same as n = n + 5) -n *= 2; // now n = 14 (same as n = n * 2) +n += 5; // এখন n = 7 (n = n + 5 এর মতই) +n *= 2; // এখন n = 14 (n = n * 2 এর মতই) alert( n ); // 14 ``` -Short "modify-and-assign" operators exist for all arithmetical and bitwise operators: `/=`, `-=`, etc. +সংক্ষিপ্ত "মডিফাই-এবং-অ্যাসাইন" অপারেটর আছে সব গাণিতিক ও বিটওয়াইজ অপারেটরের জন্যই: `/=`, `-=`, ইত্যাদি। -Such operators have the same precedence as a normal assignment, so they run after most other calculations: +নরমাল অ্যাসাইনমেন্টের মতই এদের প্রিসিডেন্স, তাই এরা অন্যান্য ক্যালকুলেশনের পর কাজ করে: ```js run let n = 2; n *= 3 + 5; // right part evaluated first, same as n *= 8 +<<<<<<< HEAD +alert( n ); // 16 (ডান অংশ আগে ইভ্যালুয়েট হয়, n *= 8 এর অনুরূপ) +======= alert( n ); // 16 +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ``` -## Increment/decrement +## ইনক্রিমেন্ট/ডিক্রিমেন্ট - + -Increasing or decreasing a number by one is among the most common numerical operations. +কোনো সংখ্যাকে এক বাড়ানো বা কমানো কমন গাণিতিক অপারেশনগুলোর মধ্যে একটি। -So, there are special operators for it: +এজন্য এর জন্য বিশেষ অপারেটর আছে: -- **Increment** `++` increases a variable by 1: +- **ইনক্রিমেন্ট** `++` একটি ভ্যারিয়েবলকে ১ বাড়ায়: ```js run no-beautify let counter = 2; - counter++; // works the same as counter = counter + 1, but is shorter + counter++; // counter = counter + 1 এর মত একই কাজ করে, শুধু সংক্ষিপ্ত alert( counter ); // 3 ``` -- **Decrement** `--` decreases a variable by 1: +- **ডিক্রিমেন্ট** `--` একটি ভ্যারিয়েবলকে ১ কমায়: ```js run no-beautify let counter = 2; - counter--; // works the same as counter = counter - 1, but is shorter + counter--; // counter = counter - 1 এর মত একই কাজ করে, শুধু সংক্ষিপ্ত alert( counter ); // 1 ``` ```warn -Increment/decrement can only be applied to variables. Trying to use it on a value like `5++` will give an error. +ইনক্রিমেন্ট/ডিক্রিমেন্ট শুধু ভ্যারিয়েবলের সাথে ব্যবহার করা যাবে। `5++` এর মত কোনো ভ্যালুর সাথে এটি ব্যবহার করলে এরর দিবে। ``` -The operators `++` and `--` can be placed either before or after a variable. +অপারেটর `++` and `--` কোনো ভ্যারিয়েবলের আগে বা পরে বসানো যাবে। -- When the operator goes after the variable, it is in "postfix form": `counter++`. -- The "prefix form" is when the operator goes before the variable: `++counter`. +- যখন অপারেটরটি ভ্যারিয়েবলের পর বসে, তখন এটা "পোস্টফিক্স ফর্মে" আছে বলা হয়: `counter++`. +- "প্রিফিক্স ফর্ম হচ্ছে" যখন অপারেটরটি ভ্যারিয়েবলের আগে বসে: `++counter`. -Both of these statements do the same thing: increase `counter` by `1`. +দুইটি স্টেটমেন্টই একই কাজ করে: `counter` কে `১` বাড়ায়। -Is there any difference? Yes, but we can only see it if we use the returned value of `++/--`. +কোনো পার্থক্য আছে কি? হ্যাঁ, কিন্তু সেটা আমরা শুধু যখন `++/--` অপারেটরদের রিটার্ন ভ্যালু ব্যবহার করবো তখনই দেখতে পাবো। -Let's clarify. As we know, all operators return a value. Increment/decrement is no exception. The prefix form returns the new value while the postfix form returns the old value (prior to increment/decrement). +পরিষ্কার করা যাক। আমরা যেমনটা জানি, সব অপারেটরই একটি ভ্যালু রিটার্ন করে। ইনক্রিমেন্ট/ডিক্রিমেন্টও কোনো ব্যতিক্রম নয়। প্রিফিক্স ফর্ম নতুন ভ্যালুটি রিটার্ন করে, অন্যদিকে পোস্টফিক্স ফর্ম পুরনো ভ্যালুটিই রিটার্ন করে (ইনক্রিমেন্ট/ডিক্রিমেন্ট করার আগে)। -To see the difference, here's an example: +উদাহরণ দিয়ে পার্থক্যটা বুঝা যাক: ```js run let counter = 1; @@ -356,64 +413,64 @@ let a = ++counter; // (*) alert(a); // *!*2*/!* ``` -In the line `(*)`, the *prefix* form `++counter` increments `counter` and returns the new value, `2`. So, the `alert` shows `2`. +লাইন `(*)` এ, *প্রিফিক্স* ফর্ম `++counter` `counter` এর ভ্যালু এক বাড়ায় এবং নতুন ভ্যালু, `২` রিটার্ন করে। তাই, `alert` `2` দেখায়। -Now, let's use the postfix form: +এখন আমরা পোস্টফিক্স ফর্মটি ব্যবহার করে দেখি: ```js run let counter = 1; -let a = counter++; // (*) changed ++counter to counter++ +let a = counter++; // (*) ++counter কে counter++ এ পরিবর্তন করেছি alert(a); // *!*1*/!* ``` -In the line `(*)`, the *postfix* form `counter++` also increments `counter` but returns the *old* value (prior to increment). So, the `alert` shows `1`. +লাইন `(*)` তে, *পোস্টফিক্স* ফর্ম `counter++`ও `counter` এর মান `১` বাড়ায় কিন্তু *পুরনো* ভ্যালুটি রিটার্ন করে (ইনক্রিমেন্টের আগের)। তাই, `alert` `1` দেখায়। -To summarize: +সংক্ষেপে: -- If the result of increment/decrement is not used, there is no difference in which form to use: +- যদি ইনক্রিমেন্ট/ডিক্রিমেন্টের রিটার্ন ভ্যালু ব্যবহার না করা হয়, দুই ফর্মের কোনো পার্থক্য নেই: ```js run let counter = 0; counter++; ++counter; - alert( counter ); // 2, the lines above did the same + alert( counter ); // 2, উপরের লাইন দুটো একই কাজ করেছে ``` -- If we'd like to increase a value *and* immediately use the result of the operator, we need the prefix form: +- যদি আমরা ভ্যালু বাড়াতে চাই *এবং* সাথে সাথে অপারেটরটির ফলাফল ব্যবহার করতে চাই, আমাদের দরকার হবে প্রিফিক্স ফর্ম: ```js run let counter = 0; alert( ++counter ); // 1 ``` -- If we'd like to increment a value but use its previous value, we need the postfix form: +- যদি আমরা ভ্যালু বাড়াতে চাই কিন্তু পুরনো ভ্যালু ব্যবহার করতে চাই তাহলে আমাদের লাগবে পোস্টফিক্স ফর্ম: ```js run let counter = 0; alert( counter++ ); // 0 ``` -````smart header="Increment/decrement among other operators" -The operators `++/--` can be used inside expressions as well. Their precedence is higher than most other arithmetical operations. +````smart header="অন্য অপারেটরদের মধ্যে ইনক্রিমেন্ট/ডিক্রিমেন্ট" +অপারেটর `++/--` এক্সপ্রেশনের মধ্যেও ব্যবহার করা যাবে। এদের প্রিসিডেন্স অন্যান্য গাণিতিক অপারেটরের চেয়ে বেশি। -For instance: +উদাহরণস্বরূপ: ```js run let counter = 1; alert( 2 * ++counter ); // 4 ``` -Compare with: +এর সাথে তুলনা করুন: ```js run let counter = 1; -alert( 2 * counter++ ); // 2, because counter++ returns the "old" value +alert( 2 * counter++ ); // 2, কারণ counter++ "পুরনো" ভ্যালু রিটার্ন করে ``` -Though technically okay, such notation usually makes code less readable. One line does multiple things -- not good. +যদিও টেকনিকালি ঠিক, এইরকম নোটেশন কোড পড়া কঠিন করে। একটি লাইনে একাধিক কাজ হচ্ছে -- যা ভালো না. -While reading code, a fast "vertical" eye-scan can easily miss something like `counter++` and it won't be obvious that the variable increased. +কোড পড়ার সময়, দ্রুত "উপর থেকে নিচে" চোখ বুলানোর সময় `counter++` এর মতো কিছু সহজেই মিস করে যেতে পারে এবং এটা পরিষ্কার হবে না যে ভ্যারিয়েবলের মান বেড়েছে। -We advise a style of "one line -- one action": +আমরা "একটি লাইন -- একটি কাজ" এই স্টাইল ব্যবহারের পরামর্শ দিই: ```js run let counter = 1; @@ -422,13 +479,13 @@ counter++; ``` ```` -## Bitwise operators +## বিটওয়াইজ অপারেটর -Bitwise operators treat arguments as 32-bit integer numbers and work on the level of their binary representation. +বিটওয়াইজ অপারেটর আর্গুমেন্টগুলোকে ৩২-বিট পূর্ণ সংখ্যা হিসেবে বিবেচনা করে এবং তাদের বাইনারি রূপের উপর কাজ করে। -These operators are not JavaScript-specific. They are supported in most programming languages. +এই অপারেটরগুলো জাভাস্ক্রিপ্ট-স্পেসিফিক নয়। বেশিরভাগ প্রোগ্রামিং ল্যাংগুয়েজেই এগুলো সাপোর্ট করবে। -The list of operators: +অপারেটরের লিস্ট: - AND ( `&` ) - OR ( `|` ) @@ -438,43 +495,47 @@ The list of operators: - RIGHT SHIFT ( `>>` ) - ZERO-FILL RIGHT SHIFT ( `>>>` ) +<<<<<<< HEAD +এই অপারেটরগুলো খুব কম ক্ষেত্রে যখন আমাদের সংখ্যা নিয়ে খুব নিচের (বিটওয়াইজ) লেভেলে কাজ করতে হয় তখনই শুধু ব্যবহার হয়। আমাদের এই অপারেটরগুলো এরপর আর দরকার হচ্ছে না, যেহেতু ওয়েব ডেভেলপমেন্টে এদের খুব কম কাজই আছে, কিন্তু বিশেষ কিছু ক্ষেত্র, যেমন ক্রিপ্টোগ্রাফিতে এদের দরকার হবে। আপনি MDN এর [বিটওয়াইজ অপারেটর](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Bitwise) অধ্যায়টি পড়তে পারেন যখন দরকার পড়বে। +======= These operators are used very rarely, when we need to fiddle with numbers on the very lowest (bitwise) level. We won't need these operators any time soon, as web development has little use of them, but in some special areas, such as cryptography, they are useful. You can read the [Bitwise Operators](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#bitwise_operators) chapter on MDN when a need arises. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -## Comma +## কমা -The comma operator `,` is one of the rarest and most unusual operators. Sometimes, it's used to write shorter code, so we need to know it in order to understand what's going on. +কমা অপারেটর `,` দুর্লভ আর সচরাচর দেখা যায় না এমন একটি অপারেটর। মাঝেমধ্যে সংক্ষিপ্ত কোড লিখতে এটি দরকার হয়, তাই আমাদের এটি জানতে হবে কী হচ্ছে বুঝার জন্য। -The comma operator allows us to evaluate several expressions, dividing them with a comma `,`. Each of them is evaluated but only the result of the last one is returned. +কমা অপারেটর আমাদের একাধিক এক্সপ্রেশন ইভ্যালুয়েট করতে দেয়, এদেরকে কমা `,` দিয়ে ভাগ করে। প্রত্যেকেই ইভ্যালুয়েট হয়, শুধু শেষটির ফলাফল রিটার্ন হয়। -For example: +যেমন: ```js run *!* let a = (1 + 2, 3 + 4); */!* -alert( a ); // 7 (the result of 3 + 4) +alert( a ); // 7 (3 + 4 এর ফলাফল) ``` -Here, the first expression `1 + 2` is evaluated and its result is thrown away. Then, `3 + 4` is evaluated and returned as the result. +এখানে, প্রথম এক্সপ্রেশন `1 + 2` ইভ্যালুয়েট হয়েছে এবং এর ফলাফল ফেলে দেয়া হয়েছে। এরপর, `3 + 4` ইভ্যালুয়েট হয়েছে এবং ফলাফল হিসেবে রিটার্ন করা হয়েছে। -```smart header="Comma has a very low precedence" -Please note that the comma operator has very low precedence, lower than `=`, so parentheses are important in the example above. +```smart header="কমার প্রিসিডেন্স খুব কম" +খেয়াল রাখবেন কমার প্রিসিডেন্স খুব কম, `=` এর চেয়েও কম, তাই উপরের উদাহরণগুলোতে ব্র্যাকেট ব্যবহার করা হয়েছে। -Without them: `a = 1 + 2, 3 + 4` evaluates `+` first, summing the numbers into `a = 3, 7`, then the assignment operator `=` assigns `a = 3`, and the rest is ignored. It's like `(a = 1 + 2), 3 + 4`. +ব্র্যাকেট ছাড়া: `a = 1 + 2, 3 + 4` প্রথমে `+` ইভ্যালুয়েট করবে, সংখ্যাগুলো যোগ করে দাঁড়াবে `a = 3, 7`, তারপর অ্যাসাইনমেন্ট অপারেটর `=` `a = 3` অ্যাসাইন করবে, আর বাকিটা কোনো কাজেই আসবে না। অনেকটা এরকম `(a = 1 + 2), 3 + 4`. ``` -Why do we need an operator that throws away everything except the last expression? +কেন আমাদের এমন একটি অপারেটর দরকার হবে যেটি শেষ এক্সপ্রেশন বাদে সব ফেলে দেয়? -Sometimes, people use it in more complex constructs to put several actions in one line. +মাঝেমধ্যে অনেকে একে জটিল কনস্ট্রাক্টে ব্যবহার করে একাধিক কাজ এক লাইনে করতে। -For example: +যেমন: ```js -// three operations in one line +// এক লাইনে তিনটি কাজ for (*!*a = 1, b = 3, c = a * b*/!*; a < 10; a++) { ... } ``` -Such tricks are used in many JavaScript frameworks. That's why we're mentioning them. But usually they don't improve code readability so we should think well before using them. +এরকম ট্রিক অনেক জাভাস্ক্রিপ্ট ফ্রেমওয়ার্কে দেখা যায়। যে কারণে আমরা এটার কথা বললাম। কিন্তু সচরাচর এটা কোডের রিডেবিলিটি বাড়ায় না তাই এটা ব্যবহারের আগে আমাদের একটু চিন্তা করে নেয়া উচিৎ। diff --git a/1-js/02-first-steps/09-comparison/1-comparison-questions/solution.md b/1-js/02-first-steps/09-comparison/1-comparison-questions/solution.md index 632b1cf4e..7ac84055f 100644 --- a/1-js/02-first-steps/09-comparison/1-comparison-questions/solution.md +++ b/1-js/02-first-steps/09-comparison/1-comparison-questions/solution.md @@ -10,8 +10,17 @@ null == "\n0\n" → false null === +"\n0\n" → false ``` -Some of the reasons: +কিছু কারণ: +<<<<<<< HEAD:1-js/02-first-steps/08-comparison/1-comparison-questions/solution.md +1. অবশ্যই true হবে। +2. আভিধানিকভাবে তুলনা তাই false। `"a"` `"p"` থেকে ছোট। +3. আবারও, আভিধানিকভাবে তুলনা, প্রথম স্ট্রিংয়ের `"2"` দ্বিতীয় স্ট্রিংয়ের `"1"` এর থেকে বড়। +4. `null` এবং `undefined` একমাত্র একে অপরের সমান। +5. যথাযথ সমতায় `===` দুটি ভ্যালু একই টাইপের হতে হয়। উভয় পাশের টাইপ ভিন্ন হলে false হবে। +6. এটি `(4)` নং এর মতো। `null` একমাত্র `undefined` এর সমান। +7. দুটি ভিন্ন টাইপের ভ্যালু বা মান। +======= 1. Obviously, true. 2. Dictionary comparison, hence false. `"a"` is smaller than `"p"`. 3. Again, dictionary comparison, first char `"2"` is greater than the first char `"1"`. @@ -19,3 +28,4 @@ Some of the reasons: 5. Strict equality is strict. Different types from both sides lead to false. 6. Similar to `(4)`, `null` only equals `undefined`. 7. Strict equality of different types. +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d:1-js/02-first-steps/09-comparison/1-comparison-questions/solution.md diff --git a/1-js/02-first-steps/09-comparison/1-comparison-questions/task.md b/1-js/02-first-steps/09-comparison/1-comparison-questions/task.md index be7f75ddd..c084193e9 100644 --- a/1-js/02-first-steps/09-comparison/1-comparison-questions/task.md +++ b/1-js/02-first-steps/09-comparison/1-comparison-questions/task.md @@ -2,9 +2,9 @@ importance: 5 --- -# Comparisons +# তুলনা -What will be the result for these expressions? +নিচের লাইন গুলোর ফলাফল কী হবে? ```js no-beautify 5 > 4 @@ -15,4 +15,3 @@ undefined === null null == "\n0\n" null === +"\n0\n" ``` - diff --git a/1-js/02-first-steps/09-comparison/article.md b/1-js/02-first-steps/09-comparison/article.md index a24af5688..59e8e4fef 100644 --- a/1-js/02-first-steps/09-comparison/article.md +++ b/1-js/02-first-steps/09-comparison/article.md @@ -1,5 +1,13 @@ -# Comparisons +# তুলনা +<<<<<<< HEAD:1-js/02-first-steps/08-comparison/article.md +আমরা গণিতের অনেক তুলনা করার অপারেটর সম্পর্কে জানি: + +- বৃহত্তম / ক্ষুদ্রতম: a > b, a < b. +- বৃহত্তম / ক্ষুদ্রতম অথবা সমান: a >= b, a <= b. +- সমান: `a == b` (মনে রাখবেন, দুইটি সমান চিহ্ন `=`। একটি সমান চিহ্ন এসাইনমেন্ট বুঝায় `a = b`।) +- সমান নয়: গণিতে সমান নয় কে লেখা হয় ভাবে। কিন্তু জাভাস্ক্রিপ্টে সমান চিহ্নের আগে বিস্ময়সূচক চিহ্ন দিয়ে লেখা হয়: a != b। +======= We know many comparison operators from maths. In JavaScript they are written like this: @@ -12,92 +20,101 @@ In JavaScript they are written like this: In this article we'll learn more about different types of comparisons, how JavaScript makes them, including important peculiarities. At the end you'll find a good recipe to avoid "JavaScript quirks"-related issues. +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d:1-js/02-first-steps/09-comparison/article.md -## Boolean is the result +## বুলিয়ান ফলাফল +<<<<<<< HEAD:1-js/02-first-steps/08-comparison/article.md +অন্য সকল অপারেটরের মতো তুলনা করার অপারেটর একটি মান রিটার্ন করে। এক্ষেত্রে মানটি হবে বুলিয়ান। +======= All comparison operators return a boolean value: +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d:1-js/02-first-steps/09-comparison/article.md -- `true` -- means "yes", "correct" or "the truth". -- `false` -- means "no", "wrong" or "not the truth". +- `true` -- মানে "হ্যাঁ", "ঠিক" অথবা "সত্য"। +- `false` -- মানে "না", "ভুল" অথবা "মিথ্যা"। -For example: +উদাহরণস্বরূপ: ```js run -alert( 2 > 1 ); // true (correct) -alert( 2 == 1 ); // false (wrong) -alert( 2 != 1 ); // true (correct) +alert(2 > 1); // true (ঠিক) +alert(2 == 1); // false (ভুল) +alert(2 != 1); // true (ঠিক) ``` -A comparison result can be assigned to a variable, just like any value: +কোনো তুলনার ভ্যালুকে যেকোনো ভ্যারিয়েবলে এসাইন করা যাবে। অন্য সকল ভ্যালুর মতো: ```js run -let result = 5 > 4; // assign the result of the comparison -alert( result ); // true +let result = 5 > 4; // তুলনার মানকে এসাইন করা হয়েছে +alert(result); // true ``` -## String comparison +## স্ট্রিং এর তুলনা -To see whether a string is greater than another, JavaScript uses the so-called "dictionary" or "lexicographical" order. +কোনো স্ট্রিং ছোট বা বড় কিনা তা তুলনা করার জন্য জাভাস্ক্রিপ্ট "অভিধান" বা "আভিধানিক" ক্রম ব্যবহার করে। -In other words, strings are compared letter-by-letter. +অর্থাৎ, স্ট্রিং তুলনা করা হয় একটি অক্ষরের পর আরেকটি অক্ষরের সাথে। -For example: +উদাহরণস্বরূপ: ```js run -alert( 'Z' > 'A' ); // true -alert( 'Glow' > 'Glee' ); // true -alert( 'Bee' > 'Be' ); // true +alert("Z" > "A"); // true +alert("Glow" > "Glee"); // true +alert("Bee" > "Be"); // true ``` -The algorithm to compare two strings is simple: +দুটি স্ট্রিং তুলনা করার অ্যালগরিদম খুব সহজ: -1. Compare the first character of both strings. -2. If the first character from the first string is greater (or less) than the other string's, then the first string is greater (or less) than the second. We're done. -3. Otherwise, if both strings' first characters are the same, compare the second characters the same way. -4. Repeat until the end of either string. -5. If both strings end at the same length, then they are equal. Otherwise, the longer string is greater. +1. উভয় স্ট্রিং এর প্রথম অক্ষর দুটির তুলনা করতে হবে। +2. যদি প্রথম স্ট্রিং এর প্রথম অক্ষরটি দ্বিতীয়টির প্রথম অক্ষরের থেকে বড় হয়, তবে প্রথম স্ট্রিংটি দ্বিতীয়টির থেকে বড়। তুলনা করা শেষ। +3. অন্যথায়, যদি উভয় স্ট্রিংয়ের প্রথম অক্ষর দুটি একই হয়, তবে উভয় স্ট্রিংয়ের দ্বিতীয় অক্ষর দুটিকে একই ভাবে তুলনা করতে হবে। +4. যেকোনো একটি স্ট্রিংয়ের শেষ পর্যন্ত উপেরের নিয়মে তুলনা করতে হবে। +5. যদি উভয় স্ট্রিং এর দৈর্ঘ্য সমান হয়, তবে স্ট্রিং দুটি সমান। অন্যথায়, বেশি দৈর্ঘ্যের স্ট্রিংটি বড়। +<<<<<<< HEAD:1-js/02-first-steps/08-comparison/article.md +উপরের উদাহরণে,`'Z' > 'A'` এই তুলনার প্রথম ধাপেই ফলাফল পাওয়া যায়। অন্যদিকে, এই `"Glow"` এবং `"Glee"` স্ট্রিং দুটি অক্ষরের পর অক্ষর তুলনা করা হয়েছে। +======= In the first example above, the comparison `'Z' > 'A'` gets to a result at the first step. The second comparison `'Glow'` and `'Glee'` needs more steps as strings are compared character-by-character: +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d:1-js/02-first-steps/09-comparison/article.md -1. `G` is the same as `G`. -2. `l` is the same as `l`. -3. `o` is greater than `e`. Stop here. The first string is greater. +1. `G` আর `G` একই বা সমান। +2. `l` আর `l` একই বা সমান। +3. `o` এর থেকে `e` বড়। তুলনা করা এখানে শেষ। প্রথম স্ট্রিং টি বৃহত্তম। -```smart header="Not a real dictionary, but Unicode order" -The comparison algorithm given above is roughly equivalent to the one used in dictionaries or phone books, but it's not exactly the same. +```smart header="বাস্তব অভিধান নয়, কিন্তু ইউনিকোড ক্রম" +উপরে উল্লেখ করা এলগোরিদমটি প্রায় একই রকম যেই এলগোরিদমটি অভিধানগুলোতে বা ফোন বুককে ব্যবহার করা হয়। তবে এটি সম্পূর্ণ এক নয়। -For instance, case matters. A capital letter `"A"` is not equal to the lowercase `"a"`. Which one is greater? The lowercase `"a"`. Why? Because the lowercase character has a greater index in the internal encoding table JavaScript uses (Unicode). We'll get back to specific details and consequences of this in the chapter . +উদাহরণস্বরূপ, বড় ও ছোট হাতের অক্ষরের উপর নির্ভরশীল। বড় হাতের `"A"` আর ছোট হাতের `"a"` সমান নয়। তাহলে কোনটি বড়? ছোট হাতের `"a"`। কেন? কারণ ছোট হাতের অক্ষর এনকোডিং এর জন্য জাভাস্ক্রিপ্ট ইউনিকোড ব্যবহার করে। যেই ইউনিকোড নম্বর বড় হাতের অক্ষরের থেকে বড়। আমরা এই সম্পর্কে বিস্তারিত আলোচনা করবো অধ্যায়ে। ``` -## Comparison of different types +## ভিন্ন ধরণের মানের মধ্যে তুলনা -When comparing values of different types, JavaScript converts the values to numbers. +যখন দুটি ভিন্ন ধরনের মানের মধ্যে তুলনা করা হয় তখন জাভাস্ক্রিপ্ট এই মানকে সংখ্যায় রূপান্তর করে। -For example: +উদাহরণস্বরূপ: ```js run -alert( '2' > 1 ); // true, string '2' becomes a number 2 -alert( '01' == 1 ); // true, string '01' becomes a number 1 +alert("2" > 1); // true, স্ট্রিং '2' সংখ্যায় রূপান্তরিত হয়ে 2 হয়েছে। +alert("01" == 1); // true, স্ট্রিং '01' সংখ্যায় রূপান্তরিত হয়ে 1 হয়েছে। ``` -For boolean values, `true` becomes `1` and `false` becomes `0`. +বুলিয়ান মানের জন্য `true` হয় `1` আর `false` হয় `0`। -For example: +উদাহরণস্বরূপ: ```js run -alert( true == 1 ); // true -alert( false == 0 ); // true +alert(true == 1); // true +alert(false == 0); // true ``` -````smart header="A funny consequence" -It is possible that at the same time: +````smart header="একটি মজার ঘটনা" +এটি একই সাথে সম্ভব: -- Two values are equal. -- One of them is `true` as a boolean and the other one is `false` as a boolean. +- দুটি মান সমান। +- তাদের মধ্য বুলিয়ান মান হিসেবে একটি `true` আর অন্যটি `false`। -For example: +উদাহরণস্বরূপ: ```js run let a = 0; @@ -109,108 +126,126 @@ alert( Boolean(b) ); // true alert(a == b); // true! ``` -From JavaScript's standpoint, this result is quite normal. An equality check converts values using the numeric conversion (hence `"0"` becomes `0`), while the explicit `Boolean` conversion uses another set of rules. +জাভাস্ক্রিপ্টের দৃর্ষ্টিকোণ থেকে, এটি একটি স্বাভাবিক বিষয়। সমতা নির্নয় করার জন্য মানকে সংখ্যায় রূপান্তরিত করা হয়(তাই `"0"` রূপান্তরিত হয়েছে `0` তে)। কোনো মানকে নিদির্ষ্টভাবে `বুলিয়ান` মানে(ভ্যালু তে) রূপান্তরিত করতে ভিন্ন ধরণের নিয়ম অনুসরণ করা হয়। ```` -## Strict equality +## যথাযথ সমতা -A regular equality check `==` has a problem. It cannot differentiate `0` from `false`: +সাধারণভাবে সমতা নির্ণয়ে `==` একটি সমস্যা আছে। এভাবে `0` এবং `false` কে আলাদা করতে পারে না। ```js run -alert( 0 == false ); // true +alert(0 == false); // true ``` -The same thing happens with an empty string: +একই ঘটনা ঘটে ফাঁকা স্ট্রিং এর ক্ষেত্রে। ```js run -alert( '' == false ); // true +alert("" == false); // true ``` -This happens because operands of different types are converted to numbers by the equality operator `==`. An empty string, just like `false`, becomes a zero. +এটি ঘটে কারণ, `==` অপারেটর ভিন্ন ধরণের অপারেন্ড গুলোকে সংখ্যায় রূপান্তরিত করে। একটি ফাঁকা স্ট্রিং `false` এর মতো, তাই এটি শূন্য তে রূপান্তরিত হয়। -What to do if we'd like to differentiate `0` from `false`? +যদি আমরা `0` আর `false` কে আলাদা করতে চাই তবে কি করতে পারি? -**A strict equality operator `===` checks the equality without type conversion.** +**যথাযথ সমতা অপারেটর `===` সমতা নির্ণয় করে ভ্যালু বা মানের টাইপ পরিবর্তন না করে।** -In other words, if `a` and `b` are of different types, then `a === b` immediately returns `false` without an attempt to convert them. +অন্যভাবে, যদি `a` এবং `b` ভিন্ন টাইপ বা ধরণের হয় তবে `a === b` তাৎক্ষণিকভাবে `false` রিটার্ন করবে তাদের টাইপ পরিবর্তন করার চেষ্টা ছাড়াই। -Let's try it: +চেষ্টা করা দেখা যাক। ```js run -alert( 0 === false ); // false, because the types are different +alert(0 === false); // false, কারণ টাইপ আলাদা। ``` -There is also a "strict non-equality" operator `!==` analogous to `!=`. +এছাড়াও যথাযথ সমতা নয় `!==` অপারেটর আছে `!=` এর মতো। -The strict equality operator is a bit longer to write, but makes it obvious what's going on and leaves less room for errors. +যথাযথ সমতার অপারেটরে `(===)` একটু বেশি লিখতে হয় তবে এটি আসলেই কি ঘটছে বুঝতে সাহায্য করে এবং ভুল হওয়ার সম্ভাবনা কমায়। -## Comparison with null and undefined +## Null এবং Undefined এর সাথে তুলনা। -There's a non-intuitive behavior when `null` or `undefined` are compared to other values. +`null` এবং `undefined` এর সাথে অন্য ভ্যালু এর তুলনা করলে ধারণাতীত ঘটনা ঘটে। -For a strict equality check `===` -: These values are different, because each of them is a different type. +যথাযথ সমতা নির্ণয়ে `===` +: তাদের মান ভিন্ন কারণ তারা ভিন্ন টাইপের। ```js run alert( null === undefined ); // false ``` -For a non-strict check `==` -: There's a special rule. These two are a "sweet couple": they equal each other (in the sense of `==`), but not any other value. +সাধারণ সমতা নির্ণয়ে `==` +: এখানে একটি বিশেষ নিয়ম আছে। তারা একে অপরের সমান (`==` এর হিসেবে) কিন্তু অন্য কিছুর সমান নয়। ```js run alert( null == undefined ); // true ``` -For maths and other comparisons `< > <= >=` -: `null/undefined` are converted to numbers: `null` becomes `0`, while `undefined` becomes `NaN`. +গণিতের অন্য সকল তুলনার ক্ষেত্রে `< > <= >=` +: `null/undefined` রূপান্তরিত হয় সংখ্যায়: `null` রূপান্তরিত হয় `0`, আর `undefined` রূপান্তরিত হয় `NaN` এ। -Now let's see some funny things that happen when we apply these rules. And, what's more important, how to not fall into a trap with them. +এখন চলুন কিছু মজার ঘটনা দেখি, ঘটনাগুলো ঘটে যখন এই নিয়মগুলো প্রয়োগ করা হয়। গুরুত্বপূর্ণ হলো, কিভাবে এই সকল ফাঁদে না পড়া যায়। -### Strange result: null vs 0 +### অদ্ভুত ফলাফল: null vs 0 -Let's compare `null` with a zero: +চলুন, `null` এর সাথে শূন্য এর তুলনা করি। ```js run -alert( null > 0 ); // (1) false -alert( null == 0 ); // (2) false -alert( null >= 0 ); // (3) *!*true*/!* +alert(null > 0); // (1) false +alert(null == 0); // (2) false +alert(null >= 0); // (3) *!*true*/!* ``` -Mathematically, that's strange. The last result states that "`null` is greater than or equal to zero", so in one of the comparisons above it must be `true`, but they are both false. +গাণিতিক ভাবে, এটি অদ্ভুত। শেষের তুলনার ফলাফল হলো "`null` শূন্য এর থেকে বড় বা সমান।", উপরের দুটি তুলনার মধ্যে যেকোনো একটিকে অবশ্যই `true` হতে হবে। কিন্তু তাদের মধ্যে দুটি `false`। -The reason is that an equality check `==` and comparisons `> < >= <=` work differently. Comparisons convert `null` to a number, treating it as `0`. That's why (3) `null >= 0` is true and (1) `null > 0` is false. +এর কারণ হলো, সমতা নির্ণয় `==` এবং `> < >= <=` তুলনা দুটি ভিন্ন ভাবে কাজ করে। তুলনা করার সময় `null` কে সংখ্যায় রূপান্তরিত করে, সংখ্যাটিকে `0` ধরা হয়। এজন্যই, (3) `null >= 0` ঠিক বা true। (1) `null > 0` ভুল বা false। -On the other hand, the equality check `==` for `undefined` and `null` is defined such that, without any conversions, they equal each other and don't equal anything else. That's why (2) `null == 0` is false. +অন্য দিকে, সমতা নির্ণয়ের (`==`) ক্ষেত্রে, `undefined` এবং `null` নির্দিষ্ট থাকে অন্য কোন কিছুতে রূপান্তরিত করা হয় না। তারা একে অপরের সমান কিন্তু অন্য কিছুর সমান সমান নয়। এ জন্যই, (2) `null == 0` ভুল বা false। -### An incomparable undefined +### undefined তুলনার অযোগ্য। -The value `undefined` shouldn't be compared to other values: +`undefined` কে অন্য কোন ভ্যালু এর সাথে তুলনা করা উচিত না। ```js run -alert( undefined > 0 ); // false (1) -alert( undefined < 0 ); // false (2) -alert( undefined == 0 ); // false (3) +alert(undefined > 0); // false (1) +alert(undefined < 0); // false (2) +alert(undefined == 0); // false (3) ``` -Why does it dislike zero so much? Always false! +কেন এটি শূন্য কে এতো অপছন্দ করে? সব সময় ভুল বা false! + +আমরা ঐ সকল ফলাফল পাচ্ছি তার কারণটি হলো: + +- তুলনা `(1)` এবং `(2)` ভুল বা false রিটার্ন করে কারণ `undefined` রূপান্তরিত হয় `NaN` এ। `NaN` একটি বিশেষ ধরণের সংখ্যামান যেটি যেকোনো তুলনায় false বা ভুল রিটার্ন করে। +- সমতা নির্ণয়ে `(3)` ভুল বা false রিটার্ন করছে কারণ `undefined` একমাত্র `null`, `undefined` এর সমান। অন্য কোনো কিছুর নয়। + +<<<<<<< HEAD:1-js/02-first-steps/08-comparison/article.md +### সমস্যা এড়ানো -We get these results because: +কেন আমরা ওই সকল উদাহরণ দেখলাম? আমরা কি ওই গুলো সবসময় মনে রাখতে পারবো? আসলে, পারবো না। প্রকৃতপক্ষে, এই ব্যতিক্রম জিনিসগুলি ধীরে ধীরে সময়ের সাথে পরিচিত হয়ে উঠবে। তবে এ সমস্যাগুলি থেকে বাঁচার একটি উত্তম উপায় রয়েছে: -- Comparisons `(1)` and `(2)` return `false` because `undefined` gets converted to `NaN` and `NaN` is a special numeric value which returns `false` for all comparisons. -- The equality check `(3)` returns `false` because `undefined` only equals `null`, `undefined`, and no other value. +যেকোনো ধরনের তুলনা করতে যথাযথ সমতা `===` ব্যবহার করুন শুধু মাত্র `undefined/null` ক্ষেত্রে নয়। +কখনোই কোন ভ্যারিয়েবল এর সাথে অন্য কিছুর তুলনা (`>= > < <=`) করবেন না। যেই ভ্যারিয়েবলের মান `null/undefined` হতে পারে বা হওয়ার সম্ভাবনা থাকে। যদি হওয়ার সম্ভাবনা থাকে তবে সেগুলোকে আলাদা ভাবে যাচাই করে নিতে হবে। +======= ### Avoid problems Why did we go over these examples? Should we remember these peculiarities all the time? Well, not really. Actually, these tricky things will gradually become familiar over time, but there's a solid way to avoid problems with them: - Treat any comparison with `undefined/null` except the strict equality `===` with exceptional care. - Don't use comparisons `>= > < <=` with a variable which may be `null/undefined`, unless you're really sure of what you're doing. If a variable can have these values, check for them separately. +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d:1-js/02-first-steps/09-comparison/article.md -## Summary +## সারাংশ +<<<<<<< HEAD +- তুলনা করার অপারেটর একটি ভ্যালু রিটার্ন করে। +- স্ট্রিং তুলনা করা হয় একটি অক্ষরের পর আরেকটি অক্ষরের সাথে। "আভিধানিক" ক্রম অনুসারে। +- যখন দুটি ভিন্ন টাইপের ভ্যালু এর সাথে তুলনা করা হয় তখন তাদেরকে সংখ্যায় রূপান্তরিত করা হয়। (যথাযথ সমতার `===` ক্ষেত্রে সংখ্যায় রূপান্তর করা হয় না।) +- `null` এবং `undefined` একে অপরের সমান (`==`)। কিন্তু অন্য কোনো কিছুর সমান নয়। +- সাবধান! যখন বৃহত্তম ও ক্ষুদ্রতম নির্ণয় করবেন কোনো ভ্যারিয়েবলের সাথে তুলনা করে। যেই ভ্যারিয়েবলের মান `null/undefined` হতে পারে, সেই ভ্যারিয়েবলকে আলাদাভাবে `null/undefined` কিনা তা যাচাই করে নেওয়া ভালো অনুশীলন। +======= - Comparison operators return a boolean value. - Strings are compared letter-by-letter in the "dictionary" order. - When values of different types are compared, they get converted to numbers (with the exclusion of a strict equality check). - The values `null` and `undefined` are equal `==` to themselves and each other, but do not equal any other value. - Be careful when using comparisons like `>` or `<` with variables that can occasionally be `null/undefined`. Checking for `null/undefined` separately is a good idea. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 diff --git a/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/solution.md b/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/solution.md index 8869d32e6..35878eea9 100644 --- a/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/solution.md +++ b/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/solution.md @@ -1,4 +1,4 @@ -The answer is `2`, that's the first truthy value. +প্রথম সত্য মানের জন্য উত্তর ২ হবে। ```js run alert( null || 2 || undefined ); diff --git a/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/task.md b/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/task.md index a7c9addfc..7d5cc97cf 100644 --- a/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/task.md +++ b/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/task.md @@ -2,9 +2,9 @@ importance: 5 --- -# What's the result of OR? +# OR এর ফলাফল কি? -What is the code below going to output? +নিচের কোডটির আউটপুট কি হবে? ```js alert( null || 2 || undefined ); diff --git a/1-js/02-first-steps/11-logical-operators/2-alert-or/solution.md b/1-js/02-first-steps/11-logical-operators/2-alert-or/solution.md index f85b56366..3083c8e86 100644 --- a/1-js/02-first-steps/11-logical-operators/2-alert-or/solution.md +++ b/1-js/02-first-steps/11-logical-operators/2-alert-or/solution.md @@ -1,13 +1,13 @@ -The answer: first `1`, then `2`. +উত্তর প্রথমে ১ তারপর ২ । ```js run alert( alert(1) || 2 || alert(3) ); ``` -The call to `alert` does not return a value. Or, in other words, it returns `undefined`. +alert কল করলে কোন মান রিটার্ন করে না. অথবা, এক কথায় undefined দেখায়। -1. The first OR `||` evaluates its left operand `alert(1)`. That shows the first message with `1`. -2. The `alert` returns `undefined`, so OR goes on to the second operand searching for a truthy value. -3. The second operand `2` is truthy, so the execution is halted, `2` is returned and then shown by the outer alert. +১। OR || অপারেশনে প্রথমে বাম দিক `alert(1)` মূল্যায়ন করে। সেজন্য এখানে প্রথম ফলাফল দেখায় `1`। +২। `alert` `undefined` রিটার্ন করে, সুতরাং OR সত্য মানের খোঁজে দ্বিতীয় অপারেন্ড এ যায়। +৩। দ্বিতীয় অপারেন্ড `2` সত্য হয়, সুতরাং এক্সিকিউশন স্থগিত, `2` ফিরে আসে এবং তারপরে বাইরের alert দ্বারা দেখানো হয়। -There will be no `3`, because the evaluation does not reach `alert(3)`. +কোনও `3` থাকবে না, কারণ মূল্যায়ন `alert(3)` তে পৌঁছায় না। diff --git a/1-js/02-first-steps/11-logical-operators/2-alert-or/task.md b/1-js/02-first-steps/11-logical-operators/2-alert-or/task.md index 3908fa2ec..a6bb38dd4 100644 --- a/1-js/02-first-steps/11-logical-operators/2-alert-or/task.md +++ b/1-js/02-first-steps/11-logical-operators/2-alert-or/task.md @@ -2,9 +2,9 @@ importance: 3 --- -# What's the result of OR'ed alerts? +# OR এলার্ট এর ফলাফল কি? -What will the code below output? +নিচের কোডটির আউটপুট কি হবে? ```js alert( alert(1) || 2 || alert(3) ); diff --git a/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/solution.md b/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/solution.md index 368b59409..b10cbfc79 100644 --- a/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/solution.md +++ b/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/solution.md @@ -1,4 +1,4 @@ -The answer: `null`, because it's the first falsy value from the list. +উত্তর: `null`, কারণ এটি তালিকা থেকে প্রথম মিথ্যা মান ```js run alert(1 && null && 2); diff --git a/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/task.md b/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/task.md index 043d431e4..546703fda 100644 --- a/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/task.md +++ b/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/task.md @@ -2,9 +2,9 @@ importance: 5 --- -# What is the result of AND? +# AND এর ফলাফল কি? -What is this code going to show? +নিচের কোডটির আউটপুট কি হবে? ```js alert( 1 && null && 2 ); diff --git a/1-js/02-first-steps/11-logical-operators/4-alert-and/solution.md b/1-js/02-first-steps/11-logical-operators/4-alert-and/solution.md index b6fb10d72..7b72208af 100644 --- a/1-js/02-first-steps/11-logical-operators/4-alert-and/solution.md +++ b/1-js/02-first-steps/11-logical-operators/4-alert-and/solution.md @@ -1,10 +1,12 @@ -The answer: `1`, and then `undefined`. +উত্তর: 1, এবং তারপর undefined। ```js run alert( alert(1) && alert(2) ); ``` -The call to `alert` returns `undefined` (it just shows a message, so there's no meaningful return). +`alert` কল `undefined` দেখায় (এটি কেবল একটি বার্তা দেখায়, যাতে কোনও অর্থবহ রিটার্ন নেই)। + +কারণ, && অপারেশনেও সর্বদা বাম দিক থেকে মূল্যায়ন করা হয়। এজন্য (আউটপুট 1), এ সঙ্গে সঙ্গে থেমে যায়, কারণ undefined একটি মিথ্যা মান. এবং && অপারেশনে কোন একটি মান মিথ্যা হলে পুরো স্টেটমেন্টটি মিথ্যা হয়ে যায়। + -Because of that, `&&` evaluates the left operand (outputs `1`), and immediately stops, because `undefined` is a falsy value. And `&&` looks for a falsy value and returns it, so it's done. diff --git a/1-js/02-first-steps/11-logical-operators/4-alert-and/task.md b/1-js/02-first-steps/11-logical-operators/4-alert-and/task.md index 69f877b95..d6a42e3dd 100644 --- a/1-js/02-first-steps/11-logical-operators/4-alert-and/task.md +++ b/1-js/02-first-steps/11-logical-operators/4-alert-and/task.md @@ -2,9 +2,9 @@ importance: 3 --- -# What is the result of AND'ed alerts? +# AND এলার্ট এর ফলাফল কি? -What will this code show? +নিচের কোডটির আউটপুট কি হবে? ```js alert( alert(1) && alert(2) ); diff --git a/1-js/02-first-steps/11-logical-operators/5-alert-and-or/solution.md b/1-js/02-first-steps/11-logical-operators/5-alert-and-or/solution.md index 25e3568f8..93f61a23b 100644 --- a/1-js/02-first-steps/11-logical-operators/5-alert-and-or/solution.md +++ b/1-js/02-first-steps/11-logical-operators/5-alert-and-or/solution.md @@ -1,16 +1,16 @@ -The answer: `3`. +উত্তর: 3 । ```js run alert( null || 2 && 3 || 4 ); ``` -The precedence of AND `&&` is higher than `||`, so it executes first. +এর প্রাধান্য AND `&&` এর চেয়ে বেশি `||`, সুতরাং এটি প্রথম চালায়। -The result of `2 && 3 = 3`, so the expression becomes: +`2 && 3 = 3` এর ফলাফল, তাই প্রকাশ হয়ে যায়: ``` null || 3 || 4 ``` -Now the result is the first truthy value: `3`. +এখন, প্রথম সত্য মানের ফলাফল: `3`। diff --git a/1-js/02-first-steps/11-logical-operators/5-alert-and-or/task.md b/1-js/02-first-steps/11-logical-operators/5-alert-and-or/task.md index b18bb9c51..02f22b0cc 100644 --- a/1-js/02-first-steps/11-logical-operators/5-alert-and-or/task.md +++ b/1-js/02-first-steps/11-logical-operators/5-alert-and-or/task.md @@ -2,9 +2,9 @@ importance: 5 --- -# The result of OR AND OR +# OR AND OR এর ফলাফল -What will the result be? +নিচের কোডটির আউটপুট কি হবে? ```js alert( null || 2 && 3 || 4 ); diff --git a/1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md b/1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md index fc9e336c1..6b1cddaed 100644 --- a/1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md +++ b/1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md @@ -2,8 +2,12 @@ importance: 3 --- -# Check the range between +# নির্দিষ্ট পরিসীমার মধ্যে পরীক্ষা করুন +<<<<<<< HEAD +একটি "if" কন্ডিশন লেখো যেখানে `age` `14` এবং `90` এর অন্তর্ভুক্ত কিনা। +======= Write an `if` condition to check that `age` is between `14` and `90` inclusively. +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d -"Inclusively" means that `age` can reach the edges `14` or `90`. +"Inclusively" এর অর্থ বুঝায় `age` `14` অথবা `90` প্রান্তে পৌঁছতে পারে। diff --git a/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/solution.md b/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/solution.md index d1946a967..4fc3eb915 100644 --- a/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/solution.md +++ b/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/solution.md @@ -1,10 +1,10 @@ -The first variant: +প্রথম রূপ: ```js if (!(age >= 14 && age <= 90)) ``` -The second variant: +দ্বিতীয় রূপ: ```js if (age < 14 || age > 90) diff --git a/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/task.md b/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/task.md index 9b947d00f..a9056fd48 100644 --- a/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/task.md +++ b/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/task.md @@ -2,8 +2,12 @@ importance: 3 --- -# Check the range outside +# নির্দিষ্ট পরিসীমার মধ্যে পরীক্ষা করুন +<<<<<<< HEAD +একটি "if" কন্ডিশন লেখো যেখানে `age` `14` এবং `90` এর অন্তর্ভুক্ত নয়। +======= Write an `if` condition to check that `age` is NOT between `14` and `90` inclusively. +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d -Create two variants: the first one using NOT `!`, the second one -- without it. +দুটি রূপ তৈরি করুন: প্রথমটি NOT! `ব্যবহার করে, দ্বিতীয়টি -- এটি ছাড়াই। diff --git a/1-js/02-first-steps/11-logical-operators/8-if-question/solution.md b/1-js/02-first-steps/11-logical-operators/8-if-question/solution.md index 210509758..697902122 100644 --- a/1-js/02-first-steps/11-logical-operators/8-if-question/solution.md +++ b/1-js/02-first-steps/11-logical-operators/8-if-question/solution.md @@ -1,6 +1,6 @@ -The answer: the first and the third will execute. +উত্তর: প্রথম এবং তৃতীয়টি কার্যকর করা হবে। -Details: +বিস্তারিত: ```js run // Runs. diff --git a/1-js/02-first-steps/11-logical-operators/8-if-question/task.md b/1-js/02-first-steps/11-logical-operators/8-if-question/task.md index 55987121b..ec10e51ce 100644 --- a/1-js/02-first-steps/11-logical-operators/8-if-question/task.md +++ b/1-js/02-first-steps/11-logical-operators/8-if-question/task.md @@ -2,11 +2,11 @@ importance: 5 --- -# A question about "if" +# if সম্পর্কে একটি প্রশ্ন -Which of these `alert`s are going to execute? +এই alert এর মধ্যে কোনটি কার্যকর করতে চলেছে? -What will the results of the expressions be inside `if(...)`? +এক্সপ্রেশনগুলির ফলাফল কী হবে `if(...)` এর ভিতরে ? ```js if (-1 || 0) alert( 'first' ); diff --git a/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md b/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md index 604606259..32880e6c5 100644 --- a/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md +++ b/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md @@ -22,4 +22,4 @@ if (userName === 'Admin') { } ``` -Note the vertical indents inside the `if` blocks. They are technically not required, but make the code more readable. +If ব্লকের ভিতরে উল্লম্ব ইনডেন্টগুলি নোট করুন। এগুলি প্রযুক্তিগতভাবে প্রয়োজন হয় না, তবে কোডটি আরও পাঠযোগ্য হয়। diff --git a/1-js/02-first-steps/11-logical-operators/9-check-login/task.md b/1-js/02-first-steps/11-logical-operators/9-check-login/task.md index 290a52642..e6c58980d 100644 --- a/1-js/02-first-steps/11-logical-operators/9-check-login/task.md +++ b/1-js/02-first-steps/11-logical-operators/9-check-login/task.md @@ -2,24 +2,24 @@ importance: 3 --- -# Check the login +# লগইন চেক করুন -Write the code which asks for a login with `prompt`. +কোডটি লিখুন যা prompt দিয়ে লগিনের জন্য জিজ্ঞাসা করে। -If the visitor enters `"Admin"`, then `prompt` for a password, if the input is an empty line or `key:Esc` -- show "Canceled", if it's another string -- then show "I don't know you". +যদি ভিজিটর Admin প্রবেশ করে, তবে একটি পাসওয়ার্ডের জন্য prompt করুন, যদি ইনপুটটি খালি লাইন হয় বা key:Esc - যদি এটি অন্য স্ট্রিং থাকে - তবে I don't know you দেখাবে। -The password is checked as follows: +পাসওয়ার্ডটি নিম্নলিখিত হিসাবে পরীক্ষা করা হয়েছে: -- If it equals "TheMaster", then show "Welcome!", -- Another string -- show "Wrong password", -- For an empty string or cancelled input, show "Canceled" +- যদি এটি "TheMaster" এর সমান হয়, তবে "Welcome!" দেখাবে, +- অন্য স্ট্রিং"Wrong password" দেখাবে, +- খালি স্ট্রিং বা বাতিল ইনপুটটির জন্য, "Cancelled" দেখাবে -The schema: +উদাহরণ: -![](ifelse_task.svg) +![](ifelse_task.png) -Please use nested `if` blocks. Mind the overall readability of the code. +নেস্টেড if ব্লক ব্যবহার করুন। কোড সামগ্রিক পঠনযোগ্যতা হবে। -Hint: passing an empty input to a prompt returns an empty string `''`. Pressing `key:ESC` during a prompt returns `null`. +ইঙ্গিত: প্রম্পটে একটি খালি ইনপুট পাস করা একটি খালি স্ট্রিং দেয় ''। null প্রম্পট রিটার্ণ এর সময় key:ESC প্রেস করুন। -[demo] +[demo] \ No newline at end of file diff --git a/1-js/02-first-steps/11-logical-operators/article.md b/1-js/02-first-steps/11-logical-operators/article.md index 78c4fd2f1..0b7e3aeb9 100644 --- a/1-js/02-first-steps/11-logical-operators/article.md +++ b/1-js/02-first-steps/11-logical-operators/article.md @@ -1,24 +1,28 @@ # Logical operators +<<<<<<< HEAD +জাভাস্ক্রিপ্টে তিনটি লজিক্যাল অপারেটর রয়েছে: `||` (OR), `&&` (AND), `!` (NOT). +======= There are four logical operators in JavaScript: `||` (OR), `&&` (AND), `!` (NOT), `??` (Nullish Coalescing). Here we cover the first three, the `??` operator is in the next article. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Although they are called "logical", they can be applied to values of any type, not only boolean. Their result can also be of any type. +যদিও তাদের "লজিক্যাল" বলা হয়, সেগুলি কেবল বুলিয়ান নয়, যে কোনও ধরণের মানগুলিতে প্রয়োগ করা যেতে পারে। তাদের ফলাফলও যে কোনও ধরণের হতে পারে। -Let's see the details. +আসুন বিস্তারিত দেখি। ## || (OR) -The "OR" operator is represented with two vertical line symbols: +"OR" অপারেটরটি দুটি উল্লম্ব লাইন চিহ্ন সহ উপস্থাপিত হয়: ```js result = a || b; ``` -In classical programming, the logical OR is meant to manipulate boolean values only. If any of its arguments are `true`, it returns `true`, otherwise it returns `false`. +ক্লাসিকাল প্রোগ্রামিংয়ে, লজিক্যাল OR বোঝানো হয় কেবল বুলিয়ান মানগুলি চালিত করার জন্য। যদি এর কোন যুক্তি থাকে `true`, এটি দেখাবে `true`, নতুবা এটি দেখাবে `false`. -In JavaScript, the operator is a little bit trickier and more powerful. But first, let's see what happens with boolean values. +জাভাস্ক্রিপ্টে অপারেটরটি কিছুটা কৌতুকপূর্ণ এবং আরও শক্তিশালী। তবে প্রথমে, আসুন দেখি বুলিয়ান মানগুলির সাথে কী ঘটে। -There are four possible logical combinations: +এখানে চারটি সম্ভাব্য যৌক্তিক সমন্বয় রয়েছে: ```js run alert( true || true ); // true @@ -27,11 +31,11 @@ alert( true || false ); // true alert( false || false ); // false ``` -As we can see, the result is always `true` except for the case when both operands are `false`. +যেমনটি আমরা দেখতে পাচ্ছি, ফলাফলটি সর্বদা `true` ক্ষেত্রে বাদে সর্বদা উভয় `true` হয় অথবা যখন উভয় অপারেশন `false` থাকে। -If an operand is not a boolean, it's converted to a boolean for the evaluation. +যদি কোনও অপারেন্ড বুলিয়ান না হয় তবে তা মূল্যায়নের জন্য বুলিয়ানে রূপান্তরিত হয়। -For instance, the number `1` is treated as `true`, the number `0` as `false`: +উদাহরণস্বরূপ, `1` সংখ্যাটিকে `true` হিসাবে গণ্য করা হয়, `0` সংখ্যাটিকে `false` হিসাবে ধরা হয়: ```js run if (1 || 0) { // works just like if( true || false ) @@ -39,9 +43,9 @@ if (1 || 0) { // works just like if( true || false ) } ``` -Most of the time, OR `||` is used in an `if` statement to test if *any* of the given conditions is `true`. +অধিকাংশ সময়, OR `||` একটি `if` বিবৃতিতে ব্যবহৃত হয় পরীক্ষা যদি *any* প্রদত্ত শর্তগুলির মধ্যে `true` হয়। -For example: +উদাহরণ স্বরূপ: ```js run let hour = 9; @@ -53,7 +57,7 @@ if (hour < 10 || hour > 18) { } ``` -We can pass more conditions: +আমরা আরও শর্তগুলি পাস করতে পারি: ```js run let hour = 12; @@ -66,27 +70,31 @@ if (hour < 10 || hour > 18 || isWeekend) { ## OR "||" finds the first truthy value [#or-finds-the-first-truthy-value] -The logic described above is somewhat classical. Now, let's bring in the "extra" features of JavaScript. +উপরে বর্ণিত যুক্তি কিছুটা ক্লাসিকাল। এখন, জাভাস্ক্রিপ্টের "অতিরিক্ত" বৈশিষ্ট্যগুলি নিয়ে আসি। -The extended algorithm works as follows. +বর্ধিত অ্যালগরিদম নিম্নলিখিত হিসাবে কাজ করে। -Given multiple OR'ed values: +একাধিক OR'এর মান দেওয়া হয়েছে: ```js result = value1 || value2 || value3; ``` -The OR `||` operator does the following: +OR `||` অপারেটর নিম্নলিখিতটি করে: -- Evaluates operands from left to right. -- For each operand, converts it to boolean. If the result is `true`, stops and returns the original value of that operand. -- If all operands have been evaluated (i.e. all were `false`), returns the last operand. +- বাম থেকে ডানে অপারেশনগুলির মূল্যায়ন করে। +- প্রতিটি অপারেন্ডের জন্য, এটিকে বুলিয়ান রূপান্তর করে। যদি ফলাফলটি `true` হয়, থামে এবং সেই অপারেন্ডের মূল মানটি প্রদান করে। +- যদি সমস্ত অপারেটর মূল্যায়ন করা হয় (যেমন সমস্তগুলি `false` ছিল), সর্বশেষ অপারেন্ডটি প্রদান করে। -A value is returned in its original form, without the conversion. +কোনও মান রূপান্তর ছাড়াই মূল আকারে ফিরে আসে। +<<<<<<< HEAD +অন্য কথায়, OR `" || "` এর একটি শৃঙ্খলা truthy মান না পাওয়া গেলে প্রথম truthy মান বা শেষটি প্রদান করে। +======= In other words, a chain of OR `||` returns the first truthy value or the last one if no truthy value is found. +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d -For instance: +এই ক্ষেত্রে: ```js run alert( 1 || 0 ); // 1 (1 is truthy) @@ -97,13 +105,19 @@ alert( null || 0 || 1 ); // 1 (the first truthy value) alert( undefined || null || 0 ); // 0 (all falsy, returns the last value) ``` -This leads to some interesting usage compared to a "pure, classical, boolean-only OR". +এটি "pure, classical, boolean-only OR" এর তুলনায় কিছু আকর্ষণীয় ব্যবহারের দিকে নিয়ে যায়। -1. **Getting the first truthy value from a list of variables or expressions.** +1. **ভেরিয়েবল বা এক্সপ্রেশনগুলির একটি তালিকা থেকে প্রথম truthy মান পাওয়া।** +<<<<<<< HEAD + কল্পনা করুন যে আমাদের ভেরিয়েবলের একটি তালিকা রয়েছে যা হয় তথ্য ধারণ করতে পারে বা `null/undefined`। আমরা ডেটা সহ প্রথমটি কীভাবে খুঁজে পাব? + + আমরা OR ব্যবহার করতে পারি `||`: +======= For instance, we have `firstName`, `lastName` and `nickName` variables, all optional (i.e. can be undefined or have falsy values). Let's use OR `||` to choose the one that has the data and show it (or `"Anonymous"` if nothing set): +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d ```js run let firstName = ""; @@ -115,36 +129,62 @@ This leads to some interesting usage compared to a "pure, classical, boolean-onl */!* ``` +<<<<<<< HEAD + যদি `currentUser` এবং `defaultUser` উভয়ই মিথ্যা হয়ে থাকে তবে, `"unnamed"` ফলাফল হবে। +2. **শর্ট সার্কিট মূল্যায়ন।** + + অপারেন্ডগুলি কেবল মানগুলিই নয়, স্বেচ্ছাসেবী অভিব্যক্তি হতে পারে। বা তাদের বাম থেকে ডানে মূল্যায়ন করে এবং পরীক্ষা করে। সত্যবাদী মান পৌঁছালে মূল্যায়ন বন্ধ হয়ে যায় এবং মানটি ফিরে আসে। এই প্রক্রিয়াটিকে "একটি সংক্ষিপ্ত-সার্কিট মূল্যায়ন" বলা হয় কারণ এটি বাম থেকে ডানে যতটা সম্ভব সংক্ষিপ্ত হয়ে যায়। + + দ্বিতীয় আর্গুমেন্ট হিসাবে দেওয়া এক্সপ্রেশনটির একটি ভেরিয়েবল অ্যাসাইনমেন্টের মতো পার্শ্ব প্রতিক্রিয়া থাকলে এটি স্পষ্টভাবে দেখা যায়। + + নীচের উদাহরণে, `x` নির্ধারিত হয় না: +======= If all variables were falsy, `"Anonymous"` would show up. 2. **Short-circuit evaluation.** Another feature of OR `||` operator is the so-called "short-circuit" evaluation. +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d It means that `||` processes its arguments until the first truthy value is reached, and then the value is returned immediately, without even touching the other argument. The importance of this feature becomes obvious if an operand isn't just a value, but an expression with a side effect, such as a variable assignment or a function call. +<<<<<<< HEAD + alert(x); // undefined, because (x = 1) not evaluated + ``` + + পরিবর্তে, যদি প্রথম যুক্তিটি হল `false`, `|| one দ্বিতীয়টির মূল্যায়ন করে, সুতরাং এই নিয়োগটি চালাবেন: +======= In the example below, only the second message is printed: +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d ```js run no-beautify *!*true*/!* || alert("not printed"); *!*false*/!* || alert("printed"); ``` +<<<<<<< HEAD + একটি অ্যাসাইনমেন্ট একটি সহজ কেস। পার্শ্ব প্রতিক্রিয়া থাকতে পারে, মূল্যায়ন যদি না পৌঁছে যায় তবে তা প্রদর্শিত হবে না। + + আমরা দেখতে পাচ্ছি, এরকম ব্যবহারের কেসটি "`if`" করার ছোট উপায়। প্রথম অপারেন্ড বুলেয়ানে রূপান্তরিত হয়। যদি এটি মিথ্যা হয় তবে দ্বিতীয়টি মূল্যায়ন করা হয়। + + বেশিরভাগ সময়, কোডটি সহজেই বোঝার জন্য "নিয়মিত" `if` ব্যবহার করা আরও ভাল তবে কখনও কখনও এটি কার্যকরও হতে পারে। +======= In the first line, the OR `||` operator stops the evaluation immediately upon seeing `true`, so the `alert` isn't run. Sometimes, people use this feature to execute commands only if the condition on the left part is falsy. +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d ## && (AND) -The AND operator is represented with two ampersands `&&`: +অ্যান্ড অপারেটরটি দুটি এম্পারস্যান্ডের সাথে প্রতিনিধিত্ব করে `&&`: ```js result = a && b; ``` -In classical programming, AND returns `true` if both operands are truthy and `false` otherwise: +ক্লাসিকাল প্রোগ্রামিংয়ে, এবং উভয় অপারেন্ড truthy এবং অন্যথায় `মিথ্যা` যদি সত্য হয় - ফেরত দেয়: ```js run alert( true && true ); // true @@ -153,7 +193,7 @@ alert( true && false ); // false alert( false && false ); // false ``` -An example with `if`: +`If` এর সাথে একটি উদাহরণ: ```js run let hour = 12; @@ -164,7 +204,7 @@ if (hour == 12 && minute == 30) { } ``` -Just as with OR, any value is allowed as an operand of AND: +ঠিক যেমন OR এর সাথে, কোনও মান AND এর অপারেন্ড হিসাবে অনুমোদিত: ```js run if (1 && 0) { // evaluated as true && false @@ -175,23 +215,23 @@ if (1 && 0) { // evaluated as true && false ## AND "&&" finds the first falsy value -Given multiple AND'ed values: +একাধিক AND'এর মান দেওয়া: ```js result = value1 && value2 && value3; ``` -The AND `&&` operator does the following: +AND `&&` অপারেটর নিম্নলিখিতগুলি করে: -- Evaluates operands from left to right. -- For each operand, converts it to a boolean. If the result is `false`, stops and returns the original value of that operand. -- If all operands have been evaluated (i.e. all were truthy), returns the last operand. +- বাম থেকে ডানে অপারেশনগুলির মূল্যায়ন করে। +- প্রতিটি অপারেন্ডের জন্য, এটিকে বুলিয়ান রূপান্তরিত করে। যদি ফলাফলটি `false` হয় তবে থামিয়ে দেয় এবং সেই অপারেন্ডের মূল মানটি দেয়। +- যদি সমস্ত অপারেন্ডের মূল্যায়ন করা হয় (যেমন সমস্ত truthy ছিল), সর্বশেষ অপারেন্ডটি ফেরত দেয়। -In other words, AND returns the first falsy value or the last value if none were found. +অন্য কথায়, এবং যদি কোনওটি না পাওয়া যায় তবে প্রথম মিথ্যা মান বা শেষ মানটি প্রদান করে। -The rules above are similar to OR. The difference is that AND returns the first *falsy* value while OR returns the first *truthy* one. +উপরের নিয়মগুলি OR এর মতো। পার্থক্যটি হল এবং প্রথম *falsy* মান প্রদান করে বা OR প্রথম *truthy* দেয়। -Examples: +উদাহরণ: ```js run // if the first operand is truthy, @@ -205,28 +245,32 @@ alert( null && 5 ); // null alert( 0 && "no matter what" ); // 0 ``` -We can also pass several values in a row. See how the first falsy one is returned: +আমরা একটি সারিতে বেশ কয়েকটি মান পাস করতে পারি। প্রথম falsy কীভাবে ফিরে আসে দেখুন: ```js run alert( 1 && 2 && null && 3 ); // null ``` -When all values are truthy, the last value is returned: +সমস্ত মান truthy হলে শেষ মানটি ফিরে আসে: ```js run alert( 1 && 2 && 3 ); // 3, the last one ``` ````smart header="Precedence of AND `&&` is higher than OR `||`" -The precedence of AND `&&` operator is higher than OR `||`. +এবং `&&` অপারেটরের অগ্রাধিকার OR `||` এর চেয়ে বেশি। -So the code `a && b || c && d` is essentially the same as if the `&&` expressions were in parentheses: `(a && b) || (c && d)`. -```` +সুতরাং কোড `a && b || c && d` মূলত একই হিসাবে যদি `&&` এক্সপ্রেশনগুলি প্রথম বন্ধনে ছিল: `(a && b) || (c && d)`।```` +<<<<<<< HEAD +======= ````warn header="Don't replace `if` with `||` or `&&`" Sometimes, people use the AND `&&` operator as a "shorter way to write `if`". +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d -For instance: +ঠিক যেমন OR, এবং AND && অপারেটর কখনও কখনও `if` প্রতিস্থাপন করতে পারে। + +এই ক্ষেত্রে: ```js run let x = 1; @@ -234,9 +278,9 @@ let x = 1; (x > 0) && alert( 'Greater than zero!' ); ``` -The action in the right part of `&&` would execute only if the evaluation reaches it. That is, only if `(x > 0)` is true. +কেবল ডান অংশের ক্রিয়াটি `&&` এর তখনই চালিত হবে যদি মূল্যায়ন পৌছে যায়। এটি কেবলমাত্র যদি `(x> 0)` সত্য হয়। -So we basically have an analogue for: +সুতরাং আমাদের কাছে মূলত এর জন্য একটি অনুরূপ উদাহরণ রয়েছে: ```js run let x = 1; @@ -244,46 +288,52 @@ let x = 1; if (x > 0) alert( 'Greater than zero!' ); ``` +<<<<<<< HEAD +সংক্ষিপ্ত প্রদর্শিত হয় `&&` এর সঙ্গে ভিন্ন। তবে `if` আরও সুস্পষ্ট এবং কিছুটা বেশি পাঠযোগ্য। + +সুতরাং আমরা প্রতিটি নির্মাণকে এর লক্ষ্যে ব্যবহার করার পরামর্শ দিচ্ছি: আমরা চাইলে `if` ব্যবহার করি এবং যদি আমরা চাইলে `&&` ব্যবহার করি। +======= Although, the variant with `&&` appears shorter, `if` is more obvious and tends to be a little bit more readable. So we recommend using every construct for its purpose: use `if` if we want `if` and use `&&` if we want AND. ```` +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d ## ! (NOT) -The boolean NOT operator is represented with an exclamation sign `!`. +বুলিয়ান `NOT` অপারেটরকে বিস্মৃত চিহ্ন হিসাবে উপস্থাপন করা হয় `!`। -The syntax is pretty simple: +বাক্য গঠনটি বেশ সহজ: ```js result = !value; ``` -The operator accepts a single argument and does the following: +অপারেটর একটি একক যুক্তি গ্রহণ করে এবং নিম্নলিখিতটি করে: -1. Converts the operand to boolean type: `true/false`. -2. Returns the inverse value. +1. অপারেন্ডকে বুলিয়ান ধরণে রূপান্তর করে: `true/false`. +2. বিপরীত মান প্রদান করে। -For instance: +এই ক্ষেত্রে: ```js run alert( !true ); // false alert( !0 ); // true ``` -A double NOT `!!` is sometimes used for converting a value to boolean type: +একটি ডাবল NOT `!!` কখনও কখনও বুলিয়ান ধরণের মান রূপান্তর করার জন্য ব্যবহৃত হয়: ```js run alert( !!"non-empty string" ); // true alert( !!null ); // false ``` -That is, the first NOT converts the value to boolean and returns the inverse, and the second NOT inverses it again. In the end, we have a plain value-to-boolean conversion. +অর্থাত্‍, প্রথমটি NOT বুলিয়ানকে রূপান্তর করে এবং বিপরীতটি দেয় এবং দ্বিতীয়টি এটি আবার বিপরীত হয় না। শেষ পর্যন্ত, আমাদের কাছে বুলিয়ান রূপান্তর রয়েছে। -There's a little more verbose way to do the same thing -- a built-in `Boolean` function: +একই জিনিসটি করার জন্য আরও কিছু শব্দবহুল উপায় রয়েছে - একটি অন্তর্নির্মিত `Boolean` ফাংশন: ```js run alert( Boolean("non-empty string") ); // true alert( Boolean(null) ); // false ``` -The precedence of NOT `!` is the highest of all logical operators, so it always executes first, before `&&` or `||`. +NOT `!` এর নজির সমস্ত লজিকাল অপারেটরগুলির মধ্যে সর্বোচ্চ, সুতরাং এটি সর্বদা প্রথম `&&` অথবা `||` এর আগে কার্যকর করে। diff --git a/1-js/02-first-steps/12-nullish-coalescing-operator/article.md b/1-js/02-first-steps/12-nullish-coalescing-operator/article.md index 0b2f092ab..4bbd70627 100644 --- a/1-js/02-first-steps/12-nullish-coalescing-operator/article.md +++ b/1-js/02-first-steps/12-nullish-coalescing-operator/article.md @@ -1,7 +1,19 @@ -# Nullish coalescing operator '??' +# নাল-ঈশ কোয়েলেসিং অপারেটর '??' [recent browser="new"] +<<<<<<< HEAD +এই নিবন্ধে আমরা কোন একটা এক্সপ্রেশান কে তখনি "সংজ্ঞায়িত" বলবো যখন সেটা `নাল` অথবা `অসঙ্গায়িত` কোনটাই হবে না । + +নাল-ঈশ কোয়েলেসিং অপারেটর কে দুইটি প্রশ্নবোধক চিহ্ন দ্বারা এভাবে লেখা হয় `??`। + +`a ?? b` এটার উত্তর হবে : + +- যখন `a` সংজ্ঞায়িত, তখন `a`, +- যখন `a` সংজ্ঞায়িত না, তখন `b`। + +অন্যকথায় বলতে গেলে, যদি প্রথম আর্গুমেন্ট `নাল/অসঙ্গায়িত` না হয় তাহলে `??` এটা প্রথম আর্গুমেন্ট রিটার্ন করবে । তানাহলে , দ্বিতীয়টা রিটার্ন করবে। +======= The nullish coalescing operator is written as two question marks `??`. As it treats `null` and `undefined` similarly, we'll use a special term here, in this article. For brevity, we'll say that a value is "defined" when it's neither `null` nor `undefined`. @@ -11,20 +23,27 @@ The result of `a ?? b` is: - if `a` isn't defined, then `b`. In other words, `??` returns the first argument if it's not `null/undefined`. Otherwise, the second one. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -The nullish coalescing operator isn't anything completely new. It's just a nice syntax to get the first "defined" value of the two. +নাল-ঈশ কোয়েলেসিং অপারেটরটা নতুন কিছু নয়। এটা শুধুমাত্র একটা সুন্দর সিনট্যাক্স যেটা দুইটা মানের মধ্যে প্রথম সংজ্ঞায়িত মানটা বের করে দেয়। -We can rewrite `result = a ?? b` using the operators that we already know, like this: +আমরা ইতোমধ্যে জানা এমন অপারেটর দ্বারা `result = a ?? b` এই এক্সপ্রেশেন টাকে লিখতে পারি, এই ভাবেঃ ```js -result = (a !== null && a !== undefined) ? a : b; +result = a !== null && a !== undefined ? a : b; ``` +<<<<<<< HEAD +সম্ভাব্য অসঙ্গায়িত ভ্যরিয়াবল এর ডিফল্ট মান সরবরাহ করা, `??` এটার সাধারণ ব্যাবহারের ক্ষেত্র । + +উদাহরণ হিসেবে বলা যায়, যদি `user` defined না হয় তাহলে আমরা `Anonymous`দেখাবো। +======= Now it should be absolutely clear what `??` does. Let's see where it helps. The common use case for `??` is to provide a default value. For example, here we show `user` if its value isn't `null/undefined`, otherwise `Anonymous`: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run let user; @@ -32,7 +51,11 @@ let user; alert(user ?? "Anonymous"); // Anonymous (user is undefined) ``` +<<<<<<< HEAD +অবশ্য, যদি `user` এ `নাল/অসঙ্গায়িত` ছাড়া অন্য কোন মান থাকে তাহলে আমরা `user` কেই দেখবো: +======= Here's the example with `user` assigned to a name: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run let user = "John"; @@ -40,55 +63,66 @@ let user = "John"; alert(user ?? "Anonymous"); // John (user is not null/undefined) ``` -We can also use a sequence of `??` to select the first value from a list that isn't `null/undefined`. +একটা তালিকা থেকে প্রথম মান, যেটা `নাল/অসঙ্গায়িত` হবে না সেটাও আমরা `??` এর পর্যায়াক্রম ব্যবহার করে বের করতে পারি । +<<<<<<< HEAD +মনে করি আমাদের কাছে একজন ব্যবহারকারী এর তথ্য আছে `firstName`, `lastName` অথবা `nickName` ভ্যারিয়েবল এ। সব গুলোর মানই অসঙ্গায়িত হতে পারি যদি ব্যবহারকারী কোন তথ্য না দেয়। + +আমরা চাই যেকোনো একটি ভ্যারিয়েবল নিয়ে ব্যবহারকারীর নাম দেখাতে, অথবা "Anonymous" দেখাতে যদি সব ভ্যারিয়েবল অসঙ্গায়িত হয় । +======= Let's say we have a user's data in variables `firstName`, `lastName` or `nickName`. All of them may be not defined, if the user decided not to fill in the corresponding values. We'd like to display the user name using one of these variables, or show "Anonymous" if all of them are `null/undefined`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Let's use the `??` operator for that: +এটা করার জন্যে `??` অপারেটর টা ব্যবহার করা যাক: ```js run let firstName = null; let lastName = null; let nickName = "Supercoder"; -// shows the first defined value: +// প্রথম সংজ্ঞায়িত মানটি দেখাবে: *!* alert(firstName ?? lastName ?? nickName ?? "Anonymous"); // Supercoder */!* ``` -## Comparison with || +## || এর সাথে তুলনা -The OR `||` operator can be used in the same way as `??`, as it was described in the [previous chapter](info:logical-operators#or-finds-the-first-truthy-value). +অর `||` অপারেটর টা `??` এই অপারেটর এর মতই ব্যবহার করা যাবে,যা [পূর্ববর্তী অধ্যায়](info:logical-operators#or-finds-the-first-truthy-value) এ বর্ণনা করা হয়েছে। -For example, in the code above we could replace `??` with `||` and still get the same result: +উদাহরণ স্বরূপ, উপরের কোড এ আমরা `??` এটার পরিবর্তে `||` এটা ব্যবহার করলেও একই ফল পাওয়া যাবে: ```js run let firstName = null; let lastName = null; let nickName = "Supercoder"; -// shows the first truthy value: +// প্রথম ট্রুথি মান দেখাবে: *!* alert(firstName || lastName || nickName || "Anonymous"); // Supercoder */!* ``` +<<<<<<< HEAD +অর `||` অপারেটর জাভাস্ক্রিপ্ট এর শুরু থেকেই ছিল, তাই ডেভোলপাররা এটিই ব্যবহার করে আসছে অনেক লম্বা সময় ধরে । +======= Historically, the OR `||` operator was there first. It's been there since the beginning of JavaScript, so developers were using it for such purposes for a long time. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 + +অপরপক্ষে কোয়েলেসিং অপারেটর `??` সাম্প্রতিক সময়ে কেবল মাত্রই যুক্ত হল জাভাস্ক্রিপ্ট এ এবং এর কারণ হলে `||` এটা দ্বারা মানুষজন খুশি ছিল না। -On the other hand, the nullish coalescing operator `??` was added to JavaScript only recently, and the reason for that was that people weren't quite happy with `||`. +দুইটার মধ্যে গুরুত্বপূর্ণ পার্থক্য হল: -The important difference between them is that: -- `||` returns the first *truthy* value. -- `??` returns the first *defined* value. +- `||` এটা রিটার্ন করে প্রথম _ট্রুথি_ মান। +- `??` এটা রিটার্ন করে প্রথম _সংজ্ঞায়িত_ মান। -In other words, `||` doesn't distinguish between `false`, `0`, an empty string `""` and `null/undefined`. They are all the same -- falsy values. If any of these is the first argument of `||`, then we'll get the second argument as the result. +অন্য কথায় বলতে গেলে, `||` এই অপারেটর `false`, `0`, an empty string `""` and `নাল/অসঙ্গায়িত`, এগুলোর মধ্যে কোন পার্থক্য করে না। এর এগুলা সব একই -- ফলছি ভ্যালু। এগুলোর কোনটা যদি `||` এই অপারেটর এর প্রথম আর্গুমেন্ট হিসেবে থাকে তাহলে আমরা ফলাফল হিসেবে দ্বিতীয় আর্গুমেন্ট টা পাবো। -In practice though, we may want to use default value only when the variable is `null/undefined`. That is, when the value is really unknown/not set. +বাস্তবিক ক্ষেত্রে, আমরা হয়তোবা ডিফল্ট চাইব তখনি যখন ভ্যরিয়েবল এর মান `নাল/অসঙ্গায়িত` হয়। অর্থাৎ মান আসলে অজানা বা ঠিক করে দেওয়া হয় নি । -For example, consider this: +উদাহরণস্বরূপ, এটি বিবেচনা করি: ```js run let height = 0; @@ -97,73 +131,97 @@ alert(height || 100); // 100 alert(height ?? 100); // 0 ``` +<<<<<<< HEAD +- `height || 100` এটি দেখে যে `height` ফলছি ভ্যালু কিনা এবং ফলছি ভ্যালু হিসেবেই পায় । + - তাই উত্তর হল দ্বিতীয় আর্গুমেন্ট, `100`। +- `height ?? 100` এটি দেখে যে `height` `নাল/অসঙ্গায়িত` কিনা এবং দেখে যে এটি এমন না । + - তাই উত্তর হিসেবে `height` এর মান দেখায়, যেটা হল `0`। + +যদি শূন্য উচ্চতা একটি বৈধ মান হয়ে যেটি কিনা ডিফল্ট মান দ্বারা পরিবর্তিত হবে না সেক্ষেত্রে `??` এই অপারেটর টা যথার্থ কাজ করছে । +======= - The `height || 100` checks `height` for being a falsy value, and it's `0`, falsy indeed. - so the result of `||` is the second argument, `100`. - The `height ?? 100` checks `height` for being `null/undefined`, and it's not, - so the result is `height` "as is", that is `0`. In practice, the zero height is often a valid value, that shouldn't be replaced with the default. So `??` does just the right thing. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -## Precedence +## প্রাধান্য +<<<<<<< HEAD +`??` অপারেটর এর প্রাধান্য কিছুটা কম। [MDN table](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table) এ `৫` নাম্বার। । তাই `??` অপারেটর, `=` এবং `?` এর আগে মুল্যায়িত হবে, কিন্তু অন্যান্য বেশীর ভাগ অপারেশন, যেমন `+`, `*`, এর পরে মুল্যায়িত হবে। + +তাই আমরা যদি `??` এই এক্সপ্রেশন এর মাধ্যমে কোন ভ্যালু নির্বাচন করতে চাই তাহলে বন্ধনীর ব্যবহার বিবেচনা করা উচিত: +======= The precedence of the `??` operator is the same as `||`. They both equal `3` in the [MDN table](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table). That means that, just like `||`, the nullish coalescing operator `??` is evaluated before `=` and `?`, but after most other operations, such as `+`, `*`. So we may need to add parentheses in expressions like this: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run let height = null; let width = null; -// important: use parentheses +// গুরুত্বপূর্ণ : বন্ধনী ব্যবহার করুন let area = (height ?? 100) * (width ?? 50); -alert(area); // 5000 +alert(area); // ৫০০০ ``` -Otherwise, if we omit parentheses, then as `*` has the higher precedence than `??`, it would execute first, leading to incorrect results. +অন্যথায়, বন্ধনী উপেক্ষা করি তাহলে `*`, `??` থেকে বেশী প্রাধান্য পাবে, এটি আগে কার্যকর কর হবে যা ভুল ফলাফল দিবে । ```js -// without parentheses +// বন্ধনী ব্যতীত let area = height ?? 100 * width ?? 50; +<<<<<<< HEAD +// ...এটির মতই কাজ করে (যা খুব সম্ভবত আমরা চাই না): +let area = height ?? 100 * width ?? 50; +======= // ...works this way (not what we want): let area = height ?? (100 * width) ?? 50; +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ``` -### Using ?? with && or || +### && or || এর সাথে ?? ব্যবহার -Due to safety reasons, JavaScript forbids using `??` together with `&&` and `||` operators, unless the precedence is explicitly specified with parentheses. +নিরাপত্তা জনিত কারণে, যদি বন্ধনী দ্বারা প্রাধান্য নির্ধারণ করে দেওয়া না হয়, তাহলে জাভাস্ক্রিপ্ট `??` টাকে `&&` এবং `||` অপারেটর এর সাথে ব্যবহার করাকে নিষেধ করে। -The code below triggers a syntax error: +নিচের কোড সিনট্যাক্স ইরর দেখাবে: ```js run -let x = 1 && 2 ?? 3; // Syntax error +let x = 1 && 2 ?? 3; // সিনট্যাক্স ইরর ``` +<<<<<<< HEAD +এটির সীমাবদ্ধতা অবশ্যই তর্কসাপেক্ষ কিন্তু যখন মানুষজন `||` এর পরিবর্তে `??` ব্যবহার করা শুরু করল তখন প্রোগ্রামিং ভুল দুর করার জন্যে এটি ল্যাঙ্গুয়েজ স্পেছিফিকেশন এ যুক্ত করা হয়। +======= The limitation is surely debatable, it was added to the language specification with the purpose to avoid programming mistakes, when people start to switch from `||` to `??`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Use explicit parentheses to work around it: +ভুল এড়ানোর জন্যে পরিষ্কারভাবে বর্ণিত বন্ধনী ব্যবহার করুন: ```js run *!* -let x = (1 && 2) ?? 3; // Works +let x = (1 && 2) ?? 3; // কাজ করে */!* -alert(x); // 2 +alert(x); // ২ ``` -## Summary +## সারসংক্ষেপ -- The nullish coalescing operator `??` provides a short way to choose the first "defined" value from a list. +- একটি তালিকা থেকে সংজ্ঞায়িত মান বের করার জন্যে একটি সংক্ষিপ্ত উপায় দেয় নাল-ঈশ কোয়েলেসিং অপারেটর `??`। - It's used to assign default values to variables: + এটি ভ্যারিয়েবল কে ডিফল্ট মান এসাইন করার জন্যে ব্যবহার করা হয়: - ```js - // set height=100, if height is null or undefined - height = height ?? 100; - ``` + ```js + // height=100 নির্ধারণ করবে, যদি height নাল অথবা অসঙ্গায়িত হয় + height = height ?? 100; + ``` -- The operator `??` has a very low precedence, only a bit higher than `?` and `=`, so consider adding parentheses when using it in an expression. -- It's forbidden to use it with `||` or `&&` without explicit parentheses. +- `??` অপারেটর খুবই কম প্রাধান্যসম্পন্ন , `?` and `=` থেকে একটু বেশী প্রাধান্য পায় তাই একটি এক্সপ্রেশান এ এটি ব্যবহার এর সময় বন্ধনীর ব্যবহার বিবেচনা করা উচিত। +- পরিষ্কারভাবে বর্ণিত বন্ধনী ছাড়া `||` অথবা `&&` সাথে এটি ব্যবহার করা নিষিদ্ধ। diff --git a/1-js/02-first-steps/15-function-basics/1-if-else-required/solution.md b/1-js/02-first-steps/15-function-basics/1-if-else-required/solution.md index e3a0df77c..cdfa8d349 100644 --- a/1-js/02-first-steps/15-function-basics/1-if-else-required/solution.md +++ b/1-js/02-first-steps/15-function-basics/1-if-else-required/solution.md @@ -1,3 +1,7 @@ +<<<<<<< HEAD +পার্থক্য নেই. +======= No difference! -In both cases, `return confirm('Did parents allow you?')` executes exactly when the `if` condition is falsy. \ No newline at end of file +In both cases, `return confirm('Did parents allow you?')` executes exactly when the `if` condition is falsy. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 diff --git a/1-js/02-first-steps/15-function-basics/1-if-else-required/task.md b/1-js/02-first-steps/15-function-basics/1-if-else-required/task.md index 4f69a5c8c..ea8dad4ff 100644 --- a/1-js/02-first-steps/15-function-basics/1-if-else-required/task.md +++ b/1-js/02-first-steps/15-function-basics/1-if-else-required/task.md @@ -2,11 +2,11 @@ importance: 4 --- -# Is "else" required? +# "else" কি দরকারি? -The following function returns `true` if the parameter `age` is greater than `18`. +নিচের ফাংশন `true` রিটার্ন করে যদি প্যারামিটার `age` `18` এর চেয়ে বড় হয়। -Otherwise it asks for a confirmation and returns its result: +নতুবা এটা কনফার্মেশন চায় ও ভ্যালু রিটার্ন করে। ```js function checkAge(age) { @@ -21,7 +21,7 @@ function checkAge(age) { } ``` -Will the function work differently if `else` is removed? +`else` না থাকলে কি ফাংশন আগের মতো কাজ করবে? ```js function checkAge(age) { @@ -35,4 +35,4 @@ function checkAge(age) { } ``` -Is there any difference in the behavior of these two variants? +দুই ফাংশনের মধ্যে কোনো কাজের পার্থক্য আছে কি? \ No newline at end of file diff --git a/1-js/02-first-steps/15-function-basics/2-rewrite-function-question-or/solution.md b/1-js/02-first-steps/15-function-basics/2-rewrite-function-question-or/solution.md index e48502642..a6cb42f5b 100644 --- a/1-js/02-first-steps/15-function-basics/2-rewrite-function-question-or/solution.md +++ b/1-js/02-first-steps/15-function-basics/2-rewrite-function-question-or/solution.md @@ -1,4 +1,4 @@ -Using a question mark operator `'?'`: +প্রশ্নবোধক চিহ্ন `'?'` ব্যবহার করেঃ ```js function checkAge(age) { @@ -6,7 +6,7 @@ function checkAge(age) { } ``` -Using OR `||` (the shortest variant): +OR `||` ব্যবহার করে (সবচেয়ে ছোট): ```js function checkAge(age) { @@ -14,4 +14,8 @@ function checkAge(age) { } ``` +<<<<<<< HEAD +নোটঃ `age > 18` দুপাশে প্রথম ব্রাকেট প্রয়োজনীয় না। শুধুই বুঝার সুবিধার্থে দেওয়া। +======= Note that the parentheses around `age > 18` are not required here. They exist for better readability. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 diff --git a/1-js/02-first-steps/15-function-basics/2-rewrite-function-question-or/task.md b/1-js/02-first-steps/15-function-basics/2-rewrite-function-question-or/task.md index 46da079c0..1571082a0 100644 --- a/1-js/02-first-steps/15-function-basics/2-rewrite-function-question-or/task.md +++ b/1-js/02-first-steps/15-function-basics/2-rewrite-function-question-or/task.md @@ -2,11 +2,11 @@ importance: 4 --- -# Rewrite the function using '?' or '||' +# '?' অথবা '||' এর ব্যবহার -The following function returns `true` if the parameter `age` is greater than `18`. +নিচের ফাংশন `true` রিটার্ন করে যদি `age` `18` এর চেয়ে বড় হয়। -Otherwise it asks for a confirmation and returns its result. +নতুবা এটা কনফার্মেশন চায় ও ভ্যালু রিটার্ন করে। ```js function checkAge(age) { @@ -18,9 +18,9 @@ function checkAge(age) { } ``` -Rewrite it, to perform the same, but without `if`, in a single line. +এটাকে পূনরায় লিখুন, যেন ফাংশন একই কাজ করে, কিন্তু সম্পুর্ণভাবে `if` ছাড়া। -Make two variants of `checkAge`: +`checkAge` এর দুইটা ভিন্ন ফাংশন বানান, যা একই কাজ করবেঃ -1. Using a question mark operator `?` -2. Using OR `||` +1. প্রশ্নবোধক `?` চিহ্ন ব্যবহার করে +2. OR `||` ব্যবহার করে diff --git a/1-js/02-first-steps/15-function-basics/3-min/solution.md b/1-js/02-first-steps/15-function-basics/3-min/solution.md index 2236d9203..976bcdf17 100644 --- a/1-js/02-first-steps/15-function-basics/3-min/solution.md +++ b/1-js/02-first-steps/15-function-basics/3-min/solution.md @@ -1,4 +1,4 @@ -A solution using `if`: +`if` ব্যবহার করে সমাধানঃ ```js function min(a, b) { @@ -10,7 +10,7 @@ function min(a, b) { } ``` -A solution with a question mark operator `'?'`: +`'?'` ব্যবহার করে সমাধানঃ ```js function min(a, b) { @@ -18,4 +18,4 @@ function min(a, b) { } ``` -P.S. In the case of an equality `a == b` it does not matter what to return. \ No newline at end of file +নোটঃ সমানের ক্ষেত্রে `a == b` কী রিটার্ন করা লাগবে সে বিষয়ে সমস্যাতে কিছু বলা হয়নি। diff --git a/1-js/02-first-steps/15-function-basics/3-min/task.md b/1-js/02-first-steps/15-function-basics/3-min/task.md index 50edd0d36..b48227c14 100644 --- a/1-js/02-first-steps/15-function-basics/3-min/task.md +++ b/1-js/02-first-steps/15-function-basics/3-min/task.md @@ -2,15 +2,14 @@ importance: 1 --- -# Function min(a, b) +# min(a, b) ফাংশন -Write a function `min(a,b)` which returns the least of two numbers `a` and `b`. +একটা ফাংশন লিখুন `min(a,b)` যা সবচেয়ে ছোট ভ্যালু রিটার্ন করবে `a` ও `b` এর মধ্যে থেকে। -For instance: +উদাহরণস্বরূপঃ ```js -min(2, 5) == 2 -min(3, -1) == -1 -min(1, 1) == 1 +min(2, 5) == 2; +min(3, -1) == -1; +min(1, 1) == 1; ``` - diff --git a/1-js/02-first-steps/15-function-basics/4-pow/task.md b/1-js/02-first-steps/15-function-basics/4-pow/task.md index f569320c7..7ba291f5c 100644 --- a/1-js/02-first-steps/15-function-basics/4-pow/task.md +++ b/1-js/02-first-steps/15-function-basics/4-pow/task.md @@ -2,9 +2,9 @@ importance: 4 --- -# Function pow(x,n) +# pow(x,n) ফাংশন -Write a function `pow(x,n)` that returns `x` in power `n`. Or, in other words, multiplies `x` by itself `n` times and returns the result. +একটা ফাংশন লিখুন `pow(x,n)` যা ভ্যালু রিটার্ন করে `x` এর পাওয়ার `n` ধরে। অন্যভাবে, `x` কে `n` বার গুণ করে ফলাফল রিটার্ন করে। ```js pow(3, 2) = 3 * 3 = 9 @@ -12,8 +12,8 @@ pow(3, 3) = 3 * 3 * 3 = 27 pow(1, 100) = 1 * 1 * ...* 1 = 1 ``` -Create a web-page that prompts for `x` and `n`, and then shows the result of `pow(x,n)`. +একটা ওয়েব পেইজ বানান যেখান থেকে ইউজারের কাছ থেকে `x` ও `n` নেওয়া যাবে, সেখান থেকে `pow(x,n)` এর ভ্যালু রিটার্ন করুন। [demo] -P.S. In this task the function should support only natural values of `n`: integers up from `1`. +নোটঃ এই ক্ষেত্রে `n` এর মান স্বাভাবিক হওয়া উচিৎ: ইন্টিজার `1` বা তার বেশি। diff --git a/1-js/02-first-steps/15-function-basics/article.md b/1-js/02-first-steps/15-function-basics/article.md index 415fed3e0..3c8259ebd 100644 --- a/1-js/02-first-steps/15-function-basics/article.md +++ b/1-js/02-first-steps/15-function-basics/article.md @@ -1,18 +1,18 @@ -# Functions +# ফাংশন -Quite often we need to perform a similar action in many places of the script. +একই প্রোজেক্টে এক রকমের কাজ আমাদের করা লাগতে পারে। -For example, we need to show a nice-looking message when a visitor logs in, logs out and maybe somewhere else. +যেমন ধরুন, একটা মজাদার ম্যাসেজ দেখাতে হবে ইউজারকে, যখন লগ ইন করবে, লগ আউট করবে, বা অন্য কোনো জায়গায়। -Functions are the main "building blocks" of the program. They allow the code to be called many times without repetition. +ফাংশন হলো সেট অফ প্রোগ্রাম বা কিছু রিলেটেড কোডের সমষ্টি যা কোনো নির্দিষ্ট কাজ করতে পারে বার বার, প্রোজেক্টে লেখা পুরো কোডের সামগ্রিক স্ট্র্যাকচার ঠিক রেখে। -We've already seen examples of built-in functions, like `alert(message)`, `prompt(message, default)` and `confirm(question)`. But we can create functions of our own as well. +আমরা ইতোমধ্যে জাভাস্ক্রিপ্টের নিজস্ব কিছু ফাংশনের ব্যাবহার দেখেছি। যেমনঃ `alert(message)`, `prompt(message, default)` and `confirm(question)`। কিন্তু আমরা নিজেরাই এমন ফাংশন বানাতে পারি! -## Function Declaration +## ফাংশন ডিক্লিয়ার করা -To create a function we can use a *function declaration*. +পরিপূর্ণ ফাংশন বানাতে প্রথমে আমাদের ফাংশনের একটা প্রোটোটাইপ বা ডেমো বানাতে হবে। -It looks like this: +যা দেখতে হবে এমনঃ ```js function showMessage() { @@ -20,7 +20,11 @@ function showMessage() { } ``` +<<<<<<< HEAD +ফাংশন বানাতে প্রথমের `function` কীওয়ার্ডটা লিখে বুঝিয়ে দিতে হবে জাভাস্ক্রিপ্ট ইঞ্জিনকে যা এখন আমরা যা লিখতে যাচ্ছি তা একসাথে একটা কাজ সমাধান করতে যাচ্ছে। এরপরে _ফাংশনের নাম_ লিখে ফাংশনকে যে কোনো জায়গা থেকে ডাকার ব্যবস্থা করতে হবে। এরপর দুই প্রথম ব্রাকেটের মাঝে কিছু জিনিস দিতে হবে প্রয়োজন অনুসারে, যেটাকে বলে _প্যারামিটার_ (প্যারামিটার যে দিতেই হবে তার বাধ্যবাধকতা নেই। যেমন উপরের উদাহরণে দেওয়া হয় নাই। যদি প্যারামিটার লাগে তাহলে কমা দিয়ে আলাদা করে হয় প্যারামিটারগুলো। একটা ফাংশনে একাধিক প্যারামিটার থাকতে পারে।) সবশেষে দুই সেকেন্ড ব্রাকেটের মাঝে কোড লিখতে হয়, যা কিনা কোনো নির্দিষ্ট কাজ করতে সাহায্য করবে। এই অংশকে বলা হয় _ফাংশন বডি_। +======= The `function` keyword goes first, then goes the *name of the function*, then a list of *parameters* between the parentheses (comma-separated, empty in the example above, we'll see examples later) and finally the code of the function, also named "the function body", between curly braces. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js function name(parameter1, parameter2, ... parameterN) { @@ -28,9 +32,9 @@ function name(parameter1, parameter2, ... parameterN) { } ``` -Our new function can be called by its name: `showMessage()`. +কোনো ফাংশনকে কল করতে সেই ফাংশনকে তার নাম ধরে এইভাবে ডাকা লাগেঃ `showMessage()`। -For instance: +যেমনঃ ```js run function showMessage() { @@ -43,106 +47,114 @@ showMessage(); */!* ``` -The call `showMessage()` executes the code of the function. Here we will see the message two times. +এখানে আমরা `showMessage()` কে দুইবার ডেকেছি। আমাদের ফাংশনের কাজ একবার Hello everyone! লিখে এলার্ট দেওয়া। তাই দুইবার ডাকলে আমরা দুইবার এলার্ট দেখতে পাবো। -This example clearly demonstrates one of the main purposes of functions: to avoid code duplication. +এই উদাহরণ একটা বিষয়কে স্পষ্ট করে, তাহলো- একই কোডের বহুব্যবহার (রিপিট) এড়ানো। -If we ever need to change the message or the way it is shown, it's enough to modify the code in one place: the function which outputs it. +যদি আমাদের কখনো ম্যাসেজ পরিবর্তন করা লাগে তাহলে আমাদের কাজ শুধু ফাংশনের ভিতরের কোডটুকু পরিবর্তন করে দিলেই হয়ে যাবে। -## Local variables +## লোকাল ভ্যারিয়েবল -A variable declared inside a function is only visible inside that function. +কোনো ফাংশনের ভিতরে ডিক্লিয়ার করা ভ্যারিয়েবল শুধুমাত্র সেই ফাংশনের ভিতরেই এক্সেস করা সম্ভব। -For example: +যেমনঃ ```js run function showMessage() { *!* - let message = "Hello, I'm JavaScript!"; // local variable + let message = "Hello, I'm JavaScript!"; // লোকাল ভ্যারিয়েবল */!* alert( message ); } -showMessage(); // Hello, I'm JavaScript! +showMessage(); // এইটা Hello, I'm JavaScript! এলার্ট দিবে -alert( message ); // <-- Error! The variable is local to the function +alert( message ); // <-- Error! এখানে meesage ভ্যারিয়েবলকে এক্সেস করা সম্ভব না। ``` -## Outer variables +## আউটার ভ্যারিয়েবল -A function can access an outer variable as well, for example: +কোনো ফাংশন নিজের ব্লকের বাইরের ভ্যারিয়েবলও এক্সেস করতে পারে। যেমনঃ ```js run no-beautify -let *!*userName*/!* = 'John'; +let *!*userName*/!* = 'Rahim'; function showMessage() { let message = 'Hello, ' + *!*userName*/!*; alert(message); } -showMessage(); // Hello, John +showMessage(); // Hello, Rahim ``` -The function has full access to the outer variable. It can modify it as well. +ফাংশনের যে আউটার ভ্যারিয়েবলের শুধু এক্সেস আছে তাই না, ফাংশন আউটার ভ্যারিয়েবলের মানও পরিবর্তন করতে পারে। -For instance: +যেমনঃ ```js run -let *!*userName*/!* = 'John'; +let *!*userName*/!* = 'Rahim'; function showMessage() { - *!*userName*/!* = "Bob"; // (1) changed the outer variable + *!*userName*/!* = "Karim"; // (১) আউটার ভ্যারিয়েবলের মান পরিবর্তন করা হয়েছে let message = 'Hello, ' + *!*userName*/!*; alert(message); } -alert( userName ); // *!*John*/!* before the function call +alert( userName ); // ফাংশন কল করার আগে *!*Rahim*/!* এলার্ট দিবে showMessage(); -alert( userName ); // *!*Bob*/!*, the value was modified by the function +alert( userName ); // *!*Karim*/!* এলার্ট দিবে। কারণ, ভ্যারিয়েবলের মান ফাবগশনের মধ্যে পরিবর্তন করা হয়েছে ``` -The outer variable is only used if there's no local one. +যদি কোনো লোকাল ভ্যারিয়েবল না থাকে, সেক্ষেত্রেই কেবল আউটার ভ্যারিয়েবল ব্যবহার করা হয়। -If a same-named variable is declared inside the function then it *shadows* the outer one. For instance, in the code below the function uses the local `userName`. The outer one is ignored: +যদি একই নামে লোকাল ও আউটার ভ্যারিয়েবল ডিক্লিয়ার করা হয়, তাহলে প্রোগ্রাম আউটার ভ্যারিয়েবলকে কম গুরুত্ব দেয়। যেমন, নিচের কোডে `userName` নামে ভ্যারিয়েবল নেওয়া হয়েছে। প্রোগ্রাম আউটার ভ্যারিয়েবলকে এড়িয়ে গেছে। ```js run -let userName = 'John'; +let userName = 'Rahim'; function showMessage() { *!* - let userName = "Bob"; // declare a local variable + let userName = "Karim"; // লোকাল ভ্যারিয়েবল declare করা হয়েছে ও initialize করা হয়েছে */!* - let message = 'Hello, ' + userName; // *!*Bob*/!* + let message = 'Hello, ' + userName; // *!*Karim*/!* alert(message); } -// the function will create and use its own userName +// ফাংশন তার লোকাল ভ্যারিয়েবল রিটার্ণ করবে showMessage(); -alert( userName ); // *!*John*/!*, unchanged, the function did not access the outer variable +alert( userName ); // *!*Rahim*/!*, অপরিবর্তনীয়, ফাংশন আউটার ভ্যারিয়েবল এড়িয়ে গেছে ``` ```smart header="Global variables" -Variables declared outside of any function, such as the outer `userName` in the code above, are called *global*. +ফাংশনের বাইরে declare করা কোনো ভ্যারিয়েবলকে *গ্লোবাল* ভ্যারিয়েবলও বলা হয়। -Global variables are visible from any function (unless shadowed by locals). +গ্লোবাল ভ্যারিয়েবল যে কোনো জায়গা থেকে এক্সেস করা যায় (যদি না ফাংশনে লোকাল ভ্যারিয়েবল একই নামে থাকে)। -It's a good practice to minimize the use of global variables. Modern code has few or no globals. Most variables reside in their functions. Sometimes though, they can be useful to store project-level data. +গ্লোবাল ভ্যারিয়েবল যত কম ব্যবহার ও ডিক্লিয়ার করা যায় ততই ভালো। বর্তমান সময়ের বেশিরভাগ প্রোগ্রামে গ্লোবাল ভ্যারিয়েবল খুব কম অথবা একদমই নাই। বেশিরভাগ ভ্যারিয়েবল স্ব স্ব ফাংশনেই ডিক্লিয়ার করা হয়। মাঝে মাঝে যদিও গ্লোবাল ভ্যারিয়েবল project-level ডাটা ধরে রাখতে ব্যবহার করা হয়। ``` -## Parameters +## প্যারামিটার +<<<<<<< HEAD +আমরা প্রয়োজনীয় ডাটা প্যারামিটার এর মাধ্যমে কোনো ফাংশনে ব্যবহার করতে পারি। (এদেরকে _ফাংশন আর্গুমেন্টস_ ও বলা হয়)। +======= We can pass arbitrary data to functions using parameters. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -In the example below, the function has two parameters: `from` and `text`. +নিচের উদাহরণে দুইটা প্যারামিটার আছে। একটা `from` এবং অন্যটা `text`। ```js run +<<<<<<< HEAD +function showMessage(*!*from, text*/!*) { // আর্গুমেন্টসঃ from, text +======= function showMessage(*!*from, text*/!*) { // parameters: from, text +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 alert(from + ': ' + text); } @@ -150,15 +162,15 @@ function showMessage(*!*from, text*/!*) { // parameters: from, text *!*showMessage('Ann', "What's up?");*/!* // Ann: What's up? (**) ``` -When the function is called in lines `(*)` and `(**)`, the given values are copied to local variables `from` and `text`. Then the function uses them. +যখন ফাংশন লাইন `(*)` এবং `(**)` কল করে, ভ্যালুগুলো `from` এবং `text` এ এসাইন হয়। পরবর্তিতে প্রয়োজনানুসারে ফাংশন তাদেরকে ব্যবহার করে। -Here's one more example: we have a variable `from` and pass it to the function. Please note: the function changes `from`, but the change is not seen outside, because a function always gets a copy of the value: +আরেকটা উদাহরণ দেখা যাকঃ ভ্যারিয়েবল `from` ফাংশনে ডিক্লিয়ার করলাম। নোটঃ ফাংশন `from` কে পরিবর্তন করে, কিন্তু এই পরিবর্তন বাইরে কোথাও দেখা যাবে না। কারণ, ফাংশন সবসময় ভ্যাল্যুর একটা কপি নিজের কাছে রেখে দিবে। ```js run function showMessage(from, text) { *!* - from = '*' + from + '*'; // make "from" look nicer + from = '*' + from + '*'; // "from" কে দেখতে সুন্দর লাগছে না এখন? */!* alert( from + ': ' + text ); @@ -168,10 +180,15 @@ let from = "Ann"; showMessage(from, "Hello"); // *Ann*: Hello -// the value of "from" is the same, the function modified a local copy +// "from" এর ভেল্যু একই, ফাংশন শুধু লোকাল কপিকে মোডিফাই করেছে alert( from ); // Ann ``` +<<<<<<< HEAD +## ডিফল্ট ভ্যালু + +যদি কোনো প্যারামিটার এর মান দেওয়া না থাকে, তাহলে সেটার ভ্যালু `undefined` ধরে নেওয়া হয়। +======= When a value is passed as a function parameter, it's also called an *argument*. In other words, to put these terms straight: @@ -187,16 +204,27 @@ In the example above, one might say: "the function `showMessage` is declared wit ## Default values If a function is called, but an argument is not provided, then the corresponding value becomes `undefined`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -For instance, the aforementioned function `showMessage(from, text)` can be called with a single argument: +তাই একাধিক প্যারামিটারের ক্ষেত্রে `showMessage(from, text)` একটা আর্গুমেন্ট দিলেও প্রোগ্রাম চলবে। যেমনঃ ```js showMessage("Ann"); ``` +<<<<<<< HEAD +<<<<<<< HEAD:1-js/02-first-steps/14-function-basics/article.md +এইখানে কোনো ভুল নেই। এমন ফাংশন কল `"Ann: undefined"` রিটার্ন করবে। এখানে `text` প্যারামিটারের মান বলে দেওয়া হয় নাই। তাই `text === undefined` ধরে নিবে প্রোগ্রাম। +======= +That's not an error. Such a call would output `"*Ann*: undefined"`. There's no `text`, so it's assumed that `text === undefined`. +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d:1-js/02-first-steps/15-function-basics/article.md + +যদি কোনো মান সেট না হলে ডিফল্টভাবে একটা মান ধরে নিয়ে প্রোগ্রাম চালাতে চাই, তাহলে প্যারামিটারেই মানটা এসাইন করে দিতে পারবো। যেমনঃ +======= That's not an error. Such a call would output `"*Ann*: undefined"`. As the value for `text` isn't passed, it becomes `undefined`. We can specify the so-called "default" (to use if omitted) value for a parameter in the function declaration, using `=`: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run function showMessage(from, *!*text = "no text given"*/!*) { @@ -206,6 +234,9 @@ function showMessage(from, *!*text = "no text given"*/!*) { showMessage("Ann"); // Ann: no text given ``` +<<<<<<< HEAD +এখানে যদি `text` প্যারামিটারের মান ইউজার না দেয়, তাহলে ডিফল্টভাবে `"no text given"` সেট হয়ে থাকবে। +======= Now if the `text` parameter is not passed, it will get the value `"no text given"`. The default value also jumps in if the parameter exists, but strictly equals `undefined`, like this: @@ -213,19 +244,35 @@ The default value also jumps in if the parameter exists, but strictly equals `un ```js showMessage("Ann", undefined); // Ann: no text given ``` +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Here `"no text given"` is a string, but it can be a more complex expression, which is only evaluated and assigned if the parameter is missing. So, this is also possible: +এখানে `"no text given"` একটা স্ট্রিং। কিন্তু আমরা চাইলে এখানে যে কোনো কিছু ব্যবহার করতে পারি। এমনকি জটিল লজিক্যাল অপারেশনও। যদি প্যারামিটার মিসিং থাকে তাহলে বাই ডিফল্ট সেই অপারেশন কাজ করবে। যেমনঃ ```js run function showMessage(from, text = anotherFunction()) { - // anotherFunction() only executed if no text given - // its result becomes the value of text + // anotherFunction() কেবলমাত্র তখনই চলবে যখন কোনো প্যারামিটার ভ্যালু দেওয়া হবে না। + // যদি দেওয়া হয়, তাহলে এই ফাংশন রিপ্লেস হয়ে ইউজার প্রদত্ত ভ্যালু সেট হয়ে যাবে। } ``` ```smart header="Evaluation of default parameters" -In JavaScript, a default parameter is evaluated every time the function is called without the respective parameter. +জাভাস্ক্রিপ্টে কোনো প্যারামিটারের বিপরীতে কোনো মান সেট করে না দিলে প্যারামিটারে ডিফল্টভাবে এসাইন করা মান কল হবে যতবার পুরো ফাংশন কল করা হবে। + +<<<<<<< HEAD +উপরের উদাহরণ টেনে বলা যায়, `anotherFunction()` ততবার কল হবে যতবার `showMessage()` কল করা হবে `text` প্যারামিটারের মান দেওয়া ছাড়াই। +``` + +<<<<<<< HEAD:1-js/02-first-steps/14-function-basics/article.md +````smart header="Default parameters old-style" +জাভাস্ক্রিপ্টের আগের ভার্সনগুলো ডিফল্ট প্যারামিটার সাপোর্ট করে না। কিন্তু অন্যভাবে কাজ চালিয়ে নেওয়া যায়। + +যেমন, `undefined` এর মান পরিবর্তন করেঃ +======= +### Alternative default parameters +Sometimes it makes sense to set default values for parameters not in the function declaration, but at a later stage, during its execution. +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d:1-js/02-first-steps/15-function-basics/article.md +======= In the example above, `anotherFunction()` isn't called at all, if the `text` parameter is provided. On the other hand, it's independently called every time when `text` is missing. @@ -266,6 +313,7 @@ function showMessage(from, text) { ### Alternative default parameters Sometimes it makes sense to assign default values for parameters at a later stage after the function declaration. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 We can check if the parameter is passed during the function execution, by comparing it with `undefined`: @@ -288,9 +336,19 @@ showMessage(); // empty message ...Or we could use the `||` operator: ```js +<<<<<<< HEAD +<<<<<<< HEAD:1-js/02-first-steps/14-function-basics/article.md +function showMessage(from, text) { + // যদি `text` এর মান না দেওয়া হয় তাহলে "default" ভ্যালু সেট করে নিবে + text = text || 'no text given'; +======= +// if text parameter is omitted or "" is passed, set it to 'empty' +======= +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 function showMessage(text) { // if text is undefined or otherwise falsy, set it to 'empty' text = text || 'empty'; +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d:1-js/02-first-steps/15-function-basics/article.md ... } ``` @@ -308,11 +366,11 @@ showCount(null); // unknown showCount(); // unknown ``` -## Returning a value +## ভ্যালু রিটার্ন করা -A function can return a value back into the calling code as the result. +ফাংশন যে কোনো ভ্যালু রিটার্ন করতে পারে। -The simplest example would be a function that sums two values: +যেমন, দুইটা ভ্যালু যোগ করতে তাদের যোগফল রিটার্ন করাঃ ```js run no-beautify function sum(a, b) { @@ -323,9 +381,9 @@ let result = sum(1, 2); alert( result ); // 3 ``` -The directive `return` can be in any place of the function. When the execution reaches it, the function stops, and the value is returned to the calling code (assigned to `result` above). +`return` কীওয়ার্ড একটা ফাংশনের যে কোনো স্থানে ব্যবহার করা যেতে পারে। যখনই ফাংশন `return` খুঁজে পাবে, সাথে সাথে সেই ফাংশনের কাজ করা বন্ধ করে দিবে। এবং রেজাল্ট রিটার্ন করবে। (উপরে `result` এ রাখা হয়েছে রিটার্ন ভ্যালু)। -There may be many occurrences of `return` in a single function. For instance: +একটা ফাংশনে অনেক `return` কীওয়ার্ড থাকতে পারে। উদাহরণস্বরূপঃ ```js run function checkAge(age) { @@ -349,9 +407,9 @@ if ( checkAge(age) ) { } ``` -It is possible to use `return` without a value. That causes the function to exit immediately. +এমনকি `return` ইউজ করা যেতে পারে কোনো রকম ভ্যালু রিটার্ন করা ছাড়াই। এতে করে ফাংশন সাথে সাথেই থেমে যাবে। -For example: +যেমনঃ ```js function showMovie(age) { @@ -366,45 +424,45 @@ function showMovie(age) { } ``` -In the code above, if `checkAge(age)` returns `false`, then `showMovie` won't proceed to the `alert`. +উপরের প্রোগ্রামে, যদি `checkAge(age)` রিটার্ন করে `false`, তাহলে `showMovie` কখনোই `alert` অব্ধি যাবে না। -````smart header="A function with an empty `return` or without it returns `undefined`" -If a function does not return a value, it is the same as if it returns `undefined`: +``smart header="A function with an empty `return` or without it returns `undefined`" +যদি কোনো ফাংশন কোনো ভ্যালু রিটার্ন না করে, তাহলে `undefined` রিটার্ন করবে। ```js run function doNothing() { /* empty */ } -alert( doNothing() === undefined ); // true +alert(doNothing() === undefined); // true ``` -An empty `return` is also the same as `return undefined`: +কোনো ফাঁকা `return` একদমই একই রকম আচরণ করে যেমন `return undefined` করে। ```js run function doNothing() { return; } -alert( doNothing() === undefined ); // true +alert(doNothing() === undefined); // true ``` -```` +````` ````warn header="Never add a newline between `return` and the value" -For a long expression in `return`, it might be tempting to put it on a separate line, like this: +যদি কোনো বড় এক্সপ্রেশন `return` করা লাগে সেক্ষেত্রে হয়তো পরের লাইনে লেখার প্রবণতা তৈরি হতে পারে। যেমনঃ ```js return (some + long + expression + or + whatever * f(a) + f(b)) ``` -That doesn't work, because JavaScript assumes a semicolon after `return`. That'll work the same as: +কিন্তু এভাবে কাজ করবে না, কারণ জাভাস্ক্রিপ্ট ধরে নিবে `return` এর পরে সেমিকোলন আছে। (জাভাস্ক্রিপ্ট কিন্তু সেমিকোলন বাদেও কাজ করে। সেক্ষেত্রে প্রতিটা লাইনের শেষে সেমিকোলন ধরে নেয় ডিফল্টভাবে। একারণেই রিটার্নের পরে পরের লাইনে চলে গেলে সেমিকোলন করে নিয়ে কাজ করবে ফাংশন।) এটা সেক্ষেত্রে এইভাবে কাজ করবেঃ ```js return*!*;*/!* (some + long + expression + or + whatever * f(a) + f(b)) ``` -So, it effectively becomes an empty return. +তাই স্বাভাবিকভাবেই পুরো প্রোগ্রাম ফাঁকা (undefined) রিটার্ন করবে। -If we want the returned expression to wrap across multiple lines, we should start it at the same line as `return`. Or at least put the opening parentheses there as follows: +যদি বড় কোনো এক্সপ্রেশন রিটার্ন করা লাগে তাহলে একই লাইনে লেখা জরুরি। অথবা প্রথম বন্ধনীর ভিতরে লিখতে হবে পুরো এক্সপ্রেশন। যেমনঃ ```js return ( @@ -414,66 +472,72 @@ return ( ) ``` And it will work just as we expect it to. -```` +````` -## Naming a function [#function-naming] +## ফাংশনের নামকরণ [#function-naming] -Functions are actions. So their name is usually a verb. It should be brief, as accurate as possible and describe what the function does, so that someone reading the code gets an indication of what the function does. +প্রতিটা ফাংশন হলো এক একটা এ্যাকশন। তাই তাদের নাম "ক্রিয়া" বাচক হওয়া যুক্তিযুক্ত। একই সাথে বিস্তারিত ও অর্থপূর্ণ হওয়া অত্যন্ত জরুরি যেন প্রোগ্রামার (নিজেও) শুধু নাম দেখে বুঝে নিতে পারে পুরো ফাংশন কোন ধরনের কাজ করছে। -It is a widespread practice to start a function with a verbal prefix which vaguely describes the action. There must be an agreement within the team on the meaning of the prefixes. +এটাই সবচেয়ে যুক্তিযুক্ত যে ফাংশনের নাম "ক্রিয়া বাচক" শব্দ দিয়ে শুরু করা। যখন কোনো টিমে কাজ করা হবে, তখন সবার মধ্যে একটা এগ্রিমেন্ট করে ফাংশনের নামের প্যাটার্ণ নির্ধারণ করা উচিৎ। -For instance, functions that start with `"show"` usually show something. +উদাহরণস্বরূপ, যে ফাংশন `"show"` দিয়ে শুরু হয় তা স্বাভাবিকভাবেই কিছু দেখাবে বলে ধরে নেওয়া যেতে পারে। -Function starting with... +যদি ফাংশন নিম্নোক্ত শব্দ দিয়ে শুরু হয় তাহলে... -- `"get…"` -- return a value, -- `"calc…"` -- calculate something, -- `"create…"` -- create something, -- `"check…"` -- check something and return a boolean, etc. +- `"get…"` -- কোনো ভ্যালু রিটার্ন করে, +- `"calc…"` -- কোনো ধরনের ক্যালকুলেশন করে থাকে, +- `"create…"` -- কিছু তৈরি করে, +- `"check…"` -- কোনো কিছু কম্পেয়ার করে বা বুলিয়ান টাইপের কিছু রিটার্ন করে। -Examples of such names: +কিছু নামের উদাহরণ দেখা যাকঃ ```js no-beautify -showMessage(..) // shows a message -getAge(..) // returns the age (gets it somehow) -calcSum(..) // calculates a sum and returns the result -createForm(..) // creates a form (and usually returns it) -checkPermission(..) // checks a permission, returns true/false +showMessage(..) // কোনো ম্যাসেজ দেখায় +getAge(..) // বয়স রিটার্ন করে +calcSum(..) // যোগ করে +createForm(..) // কোনো ফর্ম তৈরি করে (সাধারণত রিটার্ন করে) +checkPermission(..) // পারমিশন চেক করে, true/false রিটার্ন করে ``` -With prefixes in place, a glance at a function name gives an understanding what kind of work it does and what kind of value it returns. +ফাংশন যে ধরনের শব্দ দিয়ে শুরু হয় তা একনজরে বুঝিয়ে দেয় কী ধরনের ভ্যালু সেখান থেকে পাওয়া যেতে পারে। ```smart header="One function -- one action" -A function should do exactly what is suggested by its name, no more. +কোনো ফাংশনের নামে ও কাজে সম্পূর্নভাবে মিল থাকা লাগবে। -Two independent actions usually deserve two functions, even if they are usually called together (in that case we can make a 3rd function that calls those two). +দুইটা কাজ অবশ্যই আলাদা আলাদা দুইটা ফাংশন দিয়ে করা যুক্তিযুক্ত। যদি দুইটাকে এক হয়ে একটা নির্দিষ্ট কাজ করা লাগে তাহলে তৃতীয় কোনো ফাংশনে তাদের কল করে কাজ করাটা অর্থপূর্ণ। -A few examples of breaking this rule: +এই নিয়ম ভাঙ্গলে যে জটিলতা হতে পারে তার উদাহরণঃ -- `getAge` -- would be bad if it shows an `alert` with the age (should only get). -- `createForm` -- would be bad if it modifies the document, adding a form to it (should only create it and return). -- `checkPermission` -- would be bad if it displays the `access granted/denied` message (should only perform the check and return the result). +- `getAge` -- এটা খুব বাজে প্র্যাকটিস হবে যদি বয়স রিটার্ণ করে তা `alert` দেখায়। (শুধুই রিটার্ন করা উচিৎ ছিলো) +- `createForm` -- এইধরনের নামযুক্ত ফাংশন কোনো ডকুমেন্ট মডিফাই করা অযৌক্তিক, এমনকি কোনো কিছুতে কোনো ফর্ম এ্যাড করাও (শুধুই ফর্ম বানিয়ে রিটার্ন করে দেওয়া অব্ধিই এর কাজ চলা উচিৎ) +- `checkPermission` -- যদি এই ফাংশন `access granted/denied` ম্যাসেজ দেখায় তাহলে অযৌক্তিক হবে। (শুধুই পারমিশন চেক করে রিটার্ন করা উচিৎ) -These examples assume common meanings of prefixes. You and your team are free to agree on other meanings, but usually they're not much different. In any case, you should have a firm understanding of what a prefix means, what a prefixed function can and cannot do. All same-prefixed functions should obey the rules. And the team should share the knowledge. +এই উদাহরণ থেকে ফাংশনের নামেরর সূচনা শব্দ কেমন হওয়া উচিৎ সম্পর্কে ধারণা পাওয়া যায়। আপনি ও আপনার টিম মিলে নিজেরা কোনো নিয়ম বানাতে পারেন, কিন্তু খুব বেশি পার্থক্য হয়তো হবে না। একটা সূচনা শব্দ ফাংশনের অনেক কিছুই বলে দিতে পারে। প্রতিটা একই ধরনের সূচনা শব্দ একই ধরনের কাজ করবে। ``` ```smart header="Ultrashort function names" -Functions that are used *very often* sometimes have ultrashort names. +যে ফাংশনগুলো *খুব বেশি* কল করা হয়, তাকে মাঝে মাঝে স্পেশাল কিছু সূচনা নাম দেওয়া হয়ে থাকে। + +<<<<<<< HEAD +যেমন, [jQuery](http://jquery.com) ফ্রেমওয়ার্ক `$` দিয়ে শুরু করে তাদের ফাংশন নাম। আবার [Lodash](http://lodash.com/) লাইব্রেরি `_` দিয়ে শুরু করে। +এগুলো এক্সেপশন। বেশিরভাগ সময় ফাংশন নাম অর্থপূর্ন ও বিস্তারিত হওয়া উচিৎ। +======= For example, the [jQuery](https://jquery.com/) framework defines a function with `$`. The [Lodash](https://lodash.com/) library has its core function named `_`. These are exceptions. Generally function names should be concise and descriptive. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ``` -## Functions == Comments +## ফাংশন == কমেন্টস -Functions should be short and do exactly one thing. If that thing is big, maybe it's worth it to split the function into a few smaller functions. Sometimes following this rule may not be that easy, but it's definitely a good thing. +ফাংশন ছোট হওয়া উচিৎ ও একটা নির্দিষ্ট কাজ করা উচিৎ। যদি কোনো ফাংশন বড় কাজ করে থাকে, তাহলে তাকে ছোট ছোট অংশে ভাগ করে ফেলা জরুরি। মাঝে মাঝে এই ব্যাপারটা বিরক্তিকর লাগতে পারে, কিন্তু অবশ্যই ভবিষ্যতের জন্য অত্যন্ত ভালো অভ্যাস। -A separate function is not only easier to test and debug -- its very existence is a great comment! +ছোট ছোট ফাংশন যে টেস্ট ও ডিবাগ করতে সুবিধাজনক তা-ই শুধু না, বরং -- এটা প্রোগ্রামকে অর্থপূর্ন কমেন্টের কাজে সাহায্য করে থাকে! -For instance, compare the two functions `showPrimes(n)` below. Each one outputs [prime numbers](https://en.wikipedia.org/wiki/Prime_number) up to `n`. +উদাহরণস্বরূপ, দুইটা ফাংশন `showPrimes(n)` এর পার্থক্য নিচে দেখানো হলো। প্রতিটা-ই [মৌলিক সংখ্যা](https://en.wikipedia.org/wiki/Prime_number) রিটার্ন করে `n` অব্ধি। -The first variant uses a label: +প্রথমটা একবারে কাজ করেঃ ```js function showPrimes(n) { @@ -483,12 +547,12 @@ function showPrimes(n) { if (i % j == 0) continue nextPrime; } - alert( i ); // a prime + alert(i); // a prime } } ``` -The second variant uses an additional function `isPrime(n)` to test for primality: +পরেরটা নতুন ফাংশন `isPrime(n)` কল করে মৌলিক সংখ্যা চেক করার জন্যঃ ```js function showPrimes(n) { @@ -508,13 +572,13 @@ function isPrime(n) { } ``` -The second variant is easier to understand, isn't it? Instead of the code piece we see a name of the action (`isPrime`). Sometimes people refer to such code as *self-describing*. +দ্বিতীয়টা বুঝতে সুবিধাজনক, তাই না? ভিতরের ফাংশন (`isPrime`) দেখে এর কাজ বুঝে যাওয়া যায়। মাঝে মাঝে প্রোগ্রামাররা এইধরনের কোডকে _স্ব-বর্ণনাকারী (সেলফ-ডেস্ক্রাইবিং)_ বলে থাকে। -So, functions can be created even if we don't intend to reuse them. They structure the code and make it readable. +এর মানে ফাংশন তৈরি করা যেতে পারে যদি আমরা পরে ব্যাবহার না করতে চাই তবুও। সেটা কোডকে সাজাতে ও বুঝতে সাহায্য করে। -## Summary +## সারসংক্ষেপ -A function declaration looks like this: +ফাংশন এই ফরমেটে তৈরি করা হয়ঃ ```js function name(parameters, delimited, by, comma) { @@ -522,18 +586,22 @@ function name(parameters, delimited, by, comma) { } ``` -- Values passed to a function as parameters are copied to its local variables. -- A function may access outer variables. But it works only from inside out. The code outside of the function doesn't see its local variables. -- A function can return a value. If it doesn't, then its result is `undefined`. +- প্যারামিটারে এসাইন করা ভ্যালু ফাংশনে লোকাল ভ্যারিয়েবলের মতো কাজ করে। +- ফাংশন বাইরের ভ্যারিয়েবল এক্সেস করতে পারে, কিন্তু ফাংশনের ভিতরে থাকা কোনো ভ্যারিয়েবল (লোকাল ভ্যারিয়েবল) বাইরে থেকে এক্সেস করা যায় না। +- ফাংশন ভ্যালু রিটার্ন করতে পারে। যদি ভ্যালু রিটার্ন না করে তাহলে ফাংশন রিটার্ন ভ্যালু হিসেবে `undefined` রিটার্ন করে। -To make the code clean and easy to understand, it's recommended to use mainly local variables and parameters in the function, not outer variables. +কোডকে অর্থপূর্ন ও গোছালো রাখতে লোকাল ভ্যারিয়েবল ইউজ করা উচিৎ, গ্লোবাল ভ্যারিয়েবল ইউজ না করে। +<<<<<<< HEAD +বাইরের ভ্যারিয়েবল মডিফাই করে ও কোনো প্যারামিটার না রেখে ফাংশন ইউজ করার চেয়ে প্যারামিটারসহ ফাংশন নিয়ে কাজ করা অনেক বেশি অর্থপূর্ন ও সহজ। +======= It is always easier to understand a function which gets parameters, works with them and returns a result than a function which gets no parameters, but modifies outer variables as a side effect. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Function naming: +ফাংশন নামকরণঃ -- A name should clearly describe what the function does. When we see a function call in the code, a good name instantly gives us an understanding what it does and returns. -- A function is an action, so function names are usually verbal. -- There exist many well-known function prefixes like `create…`, `show…`, `get…`, `check…` and so on. Use them to hint what a function does. +- কোনো ফাংশনের নাম দেখেই তার কাজ বুঝে যাওয়া উচিৎ আর এমনভাবেই ফাংশনের নামকরণ করা দরকারি। +- প্রতিটা ফাংশন একটা কাজ, তাই ফাংশনের নাম অবশ্যই "ক্রিয়াবাচক" হতে হবে। +- ফাংশনের নামে সূচনা শব্দ `create…`, `show…`, `get…`, `check…` অনেক জনপ্রিয়। এমন ধরনের শব্দ ব্যবহার করা উচিৎ ফাংশন কী করে তা বুঝাতে। -Functions are the main building blocks of scripts. Now we've covered the basics, so we actually can start creating and using them. But that's only the beginning of the path. We are going to return to them many times, going more deeply into their advanced features. +ফাংশন হলো কোনো প্রোগ্রামের প্রধান ভিত্তি। এখানে আমরা স্ট্র্যাকচার নিয়ে বেসিক শেষ করেছি। এখন আমরা ফাংশন বানাতে পারি ও ইউজ করতে পারি। এটা শুধুই শুরু। আমরা অনেকবার ফাংশনের কাছে ফিরে আসবো এটা নিয়ে আরো গভীরে জানার জন্য। diff --git a/1-js/02-first-steps/17-arrow-functions-basics/1-rewrite-arrow/solution.md b/1-js/02-first-steps/17-arrow-functions-basics/1-rewrite-arrow/solution.md index 041db18bc..8e3cfc49a 100644 --- a/1-js/02-first-steps/17-arrow-functions-basics/1-rewrite-arrow/solution.md +++ b/1-js/02-first-steps/17-arrow-functions-basics/1-rewrite-arrow/solution.md @@ -6,12 +6,12 @@ function ask(question, yes, no) { } ask( - "Do you agree?", + "আপনি কি রাজি?", *!* - () => alert("You agreed."), - () => alert("You canceled the execution.") + () => alert("আপনি রাজি হয়েছেন।"), + () => alert("আপনি কাজটি বাতিল করেছেন।") */!* ); ``` -Looks short and clean, right? +দেখতে ছোট এবং ঝকঝকে লাগছে, তাই না? \ No newline at end of file diff --git a/1-js/02-first-steps/17-arrow-functions-basics/1-rewrite-arrow/task.md b/1-js/02-first-steps/17-arrow-functions-basics/1-rewrite-arrow/task.md index e18c08a83..565ded7cc 100644 --- a/1-js/02-first-steps/17-arrow-functions-basics/1-rewrite-arrow/task.md +++ b/1-js/02-first-steps/17-arrow-functions-basics/1-rewrite-arrow/task.md @@ -1,7 +1,7 @@ -# Rewrite with arrow functions +# এ্যারো ফাংশন দিয়ে পুনরায় লিখা -Replace Function Expressions with arrow functions in the code below: +নিচের কোডের ফাংশন এক্সপ্রেশনটি এ্যারো ফাংশন দিয়ে পরিবর্তন করুনঃ ```js run function ask(question, yes, no) { @@ -10,8 +10,8 @@ function ask(question, yes, no) { } ask( - "Do you agree?", - function() { alert("You agreed."); }, - function() { alert("You canceled the execution."); } + "আপনি কি রাজি?", + function() { alert("আপনি রাজি হয়েছেন।"); }, + function() { alert("আপনি কাজটি বাতিল করেছেন।"); } ); ``` diff --git a/1-js/02-first-steps/17-arrow-functions-basics/article.md b/1-js/02-first-steps/17-arrow-functions-basics/article.md index 50c0d475d..3f0cf31e2 100644 --- a/1-js/02-first-steps/17-arrow-functions-basics/article.md +++ b/1-js/02-first-steps/17-arrow-functions-basics/article.md @@ -1,16 +1,21 @@ -# Arrow functions, the basics +# এ্যারো ফাংশনের মূল বিষয়াবলি -There's another very simple and concise syntax for creating functions, that's often better than Function Expressions. +এটা ফাংশন তৈরির আরেকটা খুব সহজ এবং সংক্ষিপ্ত কিন্তু খুবই কার্যকরী একটি রূপ, প্রায়ই দেখা যায়, সাধারণ যে ফাংশন আছে তার থেকে এটা ভাল। -It's called "arrow functions", because it looks like this: + +একে "এ্যারো ফাংশন" বলা হয় কারণ এটা দেখতে অনেকটা এই রকমঃ ```js let func = (arg1, arg2, ..., argN) => expression; ``` +<<<<<<< HEAD +এখানে `func` নামে একটা ফাংশন তৈরি করা হয়েছে যা `arg1..argN` আর্গুমেন্ট হিসেবে নিচ্ছে, তারপর ডানপাশের `expression` টি সম্পাদন করে তার যে রেজাল্ট হয় সেটা রিটার্ন করছে। +======= This creates a function `func` that accepts arguments `arg1..argN`, then evaluates the `expression` on the right side with their use and returns its result. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -In other words, it's the shorter version of: +অন্যথায় বলতে গেলে, এটা নিম্নোক্ত কোডটির সংক্ষিপ্ত রূপ। ```js let func = function(arg1, arg2, ..., argN) { @@ -18,12 +23,12 @@ let func = function(arg1, arg2, ..., argN) { }; ``` -Let's see a concrete example: +চলুন, একটা বাস্তবিক উদাহরণ দেখা যাকঃ ```js run let sum = (a, b) => a + b; -/* This arrow function is a shorter form of: +/* এই এ্যারো ফাংশনটা নিচের কোডটির সংক্ষিপ্ত রূপঃ let sum = function(a, b) { return a + b; @@ -33,60 +38,83 @@ let sum = function(a, b) { alert( sum(1, 2) ); // 3 ``` +<<<<<<< HEAD +এখানে আপনি যেমনটি দেখতে পাচ্ছেন, `(a, b) => a + b` ফাংশনটি দুইটা আর্গুমেন্ট নিচ্ছে যথাক্রমে `a` ও `b` এবং সম্পাদনের সময় এটি `a + b` এক্সপ্রেশনটির মান নির্ণয় করছে এবং তার রেজাল্টটি রিটার্ন করছে। +======= As you can see, `(a, b) => a + b` means a function that accepts two arguments named `a` and `b`. Upon the execution, it evaluates the expression `a + b` and returns the result. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -- If we have only one argument, then parentheses around parameters can be omitted, making that even shorter. +- যদি আমাদের কেবল একটি মাত্র আর্গুমেন্ট থাকে তাহলে প্যারামিটারগুলোর দুই পাশে যে প্যারেন্থেসিস বা প্রথম বন্ধনী থাকে সেটি না দিলেও চলে, যেটা কোডটাকে আরও সংক্ষিপ্ত করে নিয়ে আসে। - For example: + উদাহরণ স্বরূপঃ ```js run *!* let double = n => n * 2; - // roughly the same as: let double = function(n) { return n * 2 } + // এটা বলেতে গেলে let double = function(n) { return n * 2 } এর একটি অন্যরূপ। */!* alert( double(3) ); // 6 ``` +<<<<<<< HEAD +- যদি ফাংশনের কোন আর্গুমেন্ট না থাকে তাহলে প্যারেন্থেসিস বা প্রথম বন্ধনীদ্বয় খালি থাকবে (কিন্তু তারা উপস্থিত থাকবে) +======= - If there are no arguments, parentheses are empty, but they must be present: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run - let sayHi = () => alert("Hello!"); + let sayHi = () => alert("হ্যালো!"); sayHi(); ``` -Arrow functions can be used in the same way as Function Expressions. +এ্যারো ফাংশন, ফাংশন এক্সপ্রেশনের মত একই ভাবে ব্যবহার করা যায়। -For instance, to dynamically create a function: +এই ক্ষেত্রে, ডাইন্যামিকভাবে একটা ফাংশন তৈরি করতে গেলেঃ ```js run -let age = prompt("What is your age?", 18); +let age = prompt("আপনার বয়স কত?", 18); let welcome = (age < 18) ? +<<<<<<< HEAD + () => alert('হ্যালো') : + () => alert("অভিবাদন!"); +======= () => alert('Hello!') : () => alert("Greetings!"); +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 welcome(); ``` -Arrow functions may appear unfamiliar and not very readable at first, but that quickly changes as the eyes get used to the structure. +এ্যারো ফাংশন হয়ত শুরুর দিকে কিছুটা অন্য রকম এবং খুব একটা পাঠযোগ্য নাও লাগতে পারে, কিন্তু আমাদের এই মনোভাব খুব তাড়াতাড়ি বদলে যাবে যেহেতু খুব দ্রুতই আমরা এর গঠনের সাথে অভ্যস্থ হয়ে যাব। + +এটা এক লাইনের কাজের জন্য খুবই সুবিধাজনক যখন আমরা খুব বেশি একটা লিখতে চাই না। -They are very convenient for simple one-line actions, when we're just too lazy to write many words. +## অনেক লাইনের এ্যারো ফাংশন -## Multiline arrow functions +<<<<<<< HEAD +উপড়ের উদাহরণগুলোতে (`=>`) এই চিহ্নের বাম পাশে আর্গুমেন্ট সমূহ নিয়েছে এবং তাদের সাহায্যে ডান পাশের এক্সপ্রেশনটির মান নির্ধারন করেছে। +কিন্তু কখনো সখনো আমাদের এর থেকে কিছুটা বেশি জটিল কাজ করতে হয়, যেমন একের অধিক এক্সপ্রেশন অথবা স্টেটমেন্ট সম্পাদন করা। এটাও সম্ভব, কিন্তু তার জন্য তাদের কার্লি ব্র্যাসেস বা দ্বিতীয় বন্ধনীর ভিতরে লিখতে হবে। তারপর সেখানে একটা সাধারন `return` ব্যবহার করতে হবে। +======= The arrow functions that we've seen so far were very simple. They took arguments from the left of `=>`, evaluated and returned the right-side expression with them. Sometimes we need a more complex function, with multiple expressions and statements. In that case, we can enclose them in curly braces. The major difference is that curly braces require a `return` within them to return a value (just like a regular function does). +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Like this: +অনেকটা এইরকমঃ ```js run -let sum = (a, b) => { // the curly brace opens a multiline function +let sum = (a, b) => { // এই কার্লি ব্র্যাসটা শুরু করে একটা বহুলাইন ফাংশনের। let result = a + b; *!* +<<<<<<< HEAD + return result; // যদি আমরা কার্লি ব্র্যাসেস ব্যবহার করি, তাহলে আমাদের আলাদাকরে একটা "return" ব্যবহার করা লাগবে। +======= return result; // if we use curly braces, then we need an explicit "return" +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 */!* }; @@ -94,18 +122,26 @@ alert( sum(1, 2) ); // 3 ``` ```smart header="More to come" -Here we praised arrow functions for brevity. But that's not all! +এখানে আমরা এ্যারো ফাংশনের "সংক্ষিপ্ত রূপের" প্রশংসা করলাম। কিন্তু এইটাই এর সবকিছু নয়! -Arrow functions have other interesting features. +এ্যারো ফাংশনের আরও খুব মজার মজার অন্যান্য ফিচার রয়েছে। -To study them in-depth, we first need to get to know some other aspects of JavaScript, so we'll return to arrow functions later in the chapter . +এদের আরও গভীর ভাবে জানতে হলে প্রথমে আমাদের জাভাস্ক্রিপ্টের কিছু অন্যান্য বিষয়াবলি সম্পর্কে জানতে হবে। সুতরাং পরবর্তিতে আমরা এই চ্যাপ্টারে এ্যারো ফাংশন নিয়ে ফিরে আসব। -For now, we can already use arrow functions for one-line actions and callbacks. +তো এখন পর্যন্ত দেখতে গেলে, আমরা এ্যারো ফাংশন ব্যবহার করে এক লাইনের কোন কাজ এবং কলব্যাক সম্পাদন করতে পারি। ``` ## Summary +## মূলকথা + +<<<<<<< HEAD +এ্যারো ফাংশন এক লাইনের কাজের জন্য খুব সুবিধাজনক। এটা দুই প্রকার হতে পারেঃ +1. কোন কার্লি ব্র্যাসেস ছাড়াঃ `(...args) => expression` -- ডান পাশের অংশটা একটা এক্সপ্রেশন এবং ফাংশনটি এই এক্সপ্রেশনের মান নির্ণয় করে এবং সেটা রিটার্ন করে। +2. কার্লি ব্র্যাসেস সহঃ `(...args) => { body }` -- বন্ধনীসমূহ ফাংশনের ভিতরে একের অধিক স্ট্যাটমেন্ট লিখতে দিচ্ছে, কিন্তু আমাদের কোন কিছু রিটার্ন করার জন্য আলাদা করে `return` ব্যবহার করতে হবে। +======= Arrow functions are handy for simple actions, especially for one-liners. They come in two flavors: 1. Without curly braces: `(...args) => expression` -- the right side is an expression: the function evaluates it and returns the result. Parentheses can be omitted, if there's only a single argument, e.g. `n => n*2`. 2. With curly braces: `(...args) => { body }` -- brackets allow us to write multiple statements inside the function, but we need an explicit `return` to return something. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 diff --git a/1-js/03-code-quality/01-debugging-chrome/article.md b/1-js/03-code-quality/01-debugging-chrome/article.md index 4f50fb428..d007247d8 100644 --- a/1-js/03-code-quality/01-debugging-chrome/article.md +++ b/1-js/03-code-quality/01-debugging-chrome/article.md @@ -1,76 +1,93 @@ +<<<<<<< HEAD +# ক্রোমে ডিবাগিং +======= # Debugging in the browser +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Before writing more complex code, let's talk about debugging. +আরো জটিল জটিল কোড লিখার আগে ডিভাগিং সম্পর্কে জানা যাক - -[Debugging](https://en.wikipedia.org/wiki/Debugging) is the process of finding and fixing errors within a script. All modern browsers and most other environments support debugging tools -- a special UI in developer tools that makes debugging much easier. It also allows to trace the code step by step to see what exactly is going on. +[ডিবাগিং](https://en.wikipedia.org/wiki/Debugging) হল একটি স্ক্রিপ্টের মধ্যে ত্রুটিগুলি খুঁজে বের করার এবং ঠিক করার একটি প্রক্রিয়া। এখনকার সকল মর্ডান ব্রাউজার এবং বেশিরভাগ অন্যান্য এনভার্নমেন্ট গুলো ডিভাগিং সাপোর্ট করে থাকে -- ডেভেলপমন্ট টুলসে কিছু স্পেশাল (UI) এর কারনে ডিভাগিং করা আরো সহজ হয়েছে. এমনকি এটির মাধ্যমে কোড স্টেপ বাই স্টেপ ট্রেস করা যায় যার কারনে বুজা যায় যে কোথায় কি হচ্ছে । -We'll be using Chrome here, because it has enough features, most other browsers have a similar process. +আমরা এখানে ক্রোম ব্রাউজার ব্যবহার করব , কারন এতে যথেষ্ট ফিচারস রয়েছে আর এমনিতেও অন্যান্য সকল ব্রাউজার গুলায় একই প্রসেস । -## The "Sources" panel +## সোর্স প্যানেল ( Sources ) -Your Chrome version may look a little bit different, but it still should be obvious what's there. +আপনার ক্রোম ভার্সনটি হয়ত একটু ভিন্ন হতে পারে, তবে সবকিছুই একই রকম থাকতে পারে । -- Open the [example page](debugging/index.html) in Chrome. -- Turn on developer tools with `key:F12` (Mac: `key:Cmd+Opt+I`). -- Select the `Sources` panel. +- ক্রোমে এই [উদাহরণ পেজটি](debugging/index.html) খুলুন । +- ডেভেলপার টুলস ওপেন করুন এই কিবোর্ড শর্টকাটের মাধ্যমে `key:F12` (Mac: `key:Cmd+Opt+I`) । +- `Sources` প্যানেল সিলেক্ট করুন । -Here's what you should see if you are doing it for the first time: +আপনি যদি প্রথম এটি করে থাকেন তাহলে নিচের মত দেখতে পাবেন ঃ ![](chrome-open-sources.svg) -The toggler button opens the tab with files. +এই টগলার বাটনটিতে ক্লিক করলে ফাইল সহ একটি টেব ওপেন হয় । -Let's click it and select `hello.js` in the tree view. Here's what should show up: +ট্রি ভিউ থেকে `hello.js` ফাইলটি সিলেক্ট করুন তাহলে নিচের মত দেখতে পাবেন ঃ ![](chrome-tabs.svg) -The Sources panel has 3 parts: +এই সোর্স প্যানেলটির তিনটি পার্ট রয়েছে ঃ -1. The **File Navigator** pane lists HTML, JavaScript, CSS and other files, including images that are attached to the page. Chrome extensions may appear here too. -2. The **Code Editor** pane shows the source code. -3. The **JavaScript Debugging** pane is for debugging, we'll explore it soon. +1. **File Navigator** এই সেকশনে এইচটিএমল, জাভাস্ক্রিপ্ট , সিএসস এবং অন্যান্য ফাইল এমনকি ইমেজ সহ দেখায় । ক্রোমের এক্সটেনশন গুলো হয়ত এখানেও দেখাতে পারে । +2. **Code Editor** এই সেকশনে সোর্স কোড গুলো দেখায় । +3. **JavaScript Debugging** এই সেকশনটি ডিভাগিং এর জন্য আর আমরা খুব শিগ্রই এটা নিয়ে আলোচনা করবো । -Now you could click the same toggler again to hide the resources list and give the code some space. +এখন চাইলে কোড এডিটরে স্পেস বাড়ানোর জন্য টগল বাটনটিতে ক্লিক করে রিসোর্স ট্যাবটি হাইড করতে পারেন । -## Console +## কন্সোল ( Console ) -If we press `key:Esc`, then a console opens below. We can type commands there and press `key:Enter` to execute. +যদি আমরা কিবোর্ডের `key:Esc` ক্লিক করি তাহলে নিচে কন্সোল ওপেন হবে । অইখানে আমরা কমান্ড টাইপ করে `key:Enter` প্রেস করে এক্সিকিউট করতে পারবো । -After a statement is executed, its result is shown below. +একটি স্টেটমেন্ট এক্সিকিউট করার পর তার রেজাল্ট নিচেই দেখতে পাবো । +<<<<<<< HEAD +উদাহরণ হিসেবে এখানে `1+2` এর রেজাল্ট `3` এবং `hello("debugger")` কিছুই রিটার্ন করে না , সেক্ষেত্রে রেজাল্ট হবে `undefined` : +======= For example, here `1+2` results in `3`, while the function call `hello("debugger")` returns nothing, so the result is `undefined`: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ![](chrome-sources-console.svg) -## Breakpoints +## ব্রেকপয়েন্টস ( Breakpoints ) -Let's examine what's going on within the code of the [example page](debugging/index.html). In `hello.js`, click at line number `4`. Yes, right on the `4` digit, not on the code. +চলুন [উদাহরণ পেজ](debugging/index.html) টি পরীক্ষা করে দেখা যাক । `hello.js` ফাইলে লাইন নং `4` এ ক্লিক করুন তবে কোডে নয় শুধুমাত্র ডিজিট `4` এর উপর । -Congratulations! You've set a breakpoint. Please also click on the number for line `8`. +অভিনন্দন ! আপনি একটি ব্রেকপয়েন্ট সেট করেছেন । ঠিক একই ভাবে আবারো ক্লিক করুন লাইন নং `8` । -It should look like this (blue is where you should click): +এটা অনেকটা নিচের মত দেখাবে (নীল যেখানে আপনাকে ক্লিক করা উচিত): ![](chrome-sources-breakpoint.svg) -A *breakpoint* is a point of code where the debugger will automatically pause the JavaScript execution. +একটি ব্রেকপয়েন্ট হল কোডের একটি পয়েন্ট যেখানে ডিবাগার স্বয়ংক্রিয়ভাবে জাভাস্ক্রিপ্ট এক্সিকিউশনকে বিরতি দেবে । -While the code is paused, we can examine current variables, execute commands in the console etc. In other words, we can debug it. +যখন কোডটি পজ অবস্থায় থাকে তখন আমরা বর্তমান ভেরিয়েবল গুলো পরীক্ষা করতে পারি, কনসোলে কমান্ড চালাতে পারি এছাড়াও অনেক কিছু করতে পারি । অন্য কথায়, আমরা এটি ডিবাগ করতে পারি। -We can always find a list of breakpoints in the right panel. That's useful when we have many breakpoints in various files. It allows us to: -- Quickly jump to the breakpoint in the code (by clicking on it in the right panel). -- Temporarily disable the breakpoint by unchecking it. -- Remove the breakpoint by right-clicking and selecting Remove. -- ...And so on. +আমরা সবসময় ডান প্যানেলে ব্রেকপয়েন্টের একটি তালিকা খুঁজে পেতে পারি। এটি আসলে অনেক দরকারী যখন আমাদের বিভিন্ন ফাইলে অনেক ব্রেকপয়েন্ট থাকে। এটি আমাদের যা অনুমতি দেয় তা হল ঃ + +- যেকোন সময় যেকোন ব্রেকপয়েন্টে জাম্প করা যাবে ( ডান পাশের প্যানেলে ক্লিক করে ) । +- আনচেকের মাধ্যমে ব্রেকপয়েন্টকে সাময়িকের জন্য ডিজেবল করা যাবে । +- রাইট ক্লিক করে রিমুভ সিলেক্টের মাধ্যমে ব্রেকপয়েন্ট রিমুভ করা যায় । +- ...ইত্যাদি । ```smart header="Conditional breakpoints" +<<<<<<< HEAD +লাইন নাম্বারে *Right click* করে *conditional* ব্রেক পয়েন্ট তৈরি করা যায় । এটা তখনি ট্রিগ্রার করে যখন এক্সপ্রেশনটি সত্য হয় । +======= *Right click* on the line number allows to create a *conditional* breakpoint. It only triggers when the given expression, that you should provide when you create it, is truthy. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -That's handy when we need to stop only for a certain variable value or for certain function parameters. +এটা আসলেই কার্যকর যখন আমাদের একটি নির্দিষ্ট ভেরিয়বল ভেলুতে থামা দরকার অথবা নির্দিষ্ট ফাংসন প্যারামিটারে । ``` +<<<<<<< HEAD +## ডিভাগার কমান্ড +======= ## The command "debugger" +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -We can also pause the code by using the `debugger` command in it, like this: +আমরা নিচের মত `debugger` কমান্ড ব্যবহার করেও কোড পজ করতে পারি ঃ ```js function hello(name) { @@ -84,89 +101,121 @@ function hello(name) { } ``` -Such command works only when the development tools are open, otherwise the browser ignores it. +<<<<<<< HEAD +এটি খুবই সুবিধাজনক যখন আমরা একটি কোড এডিটরে থাকি এবং ব্রেকপয়েন্ট সেট করতে ব্রাউজারের ডেভলপার টুলে যাওয়া লাগে না । -## Pause and look around +## পজ করুন এবং চারদিকে লক্ষ্য করুন +======= +Such command works only when the development tools are open, otherwise the browser ignores it. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -In our example, `hello()` is called during the page load, so the easiest way to activate the debugger (after we've set the breakpoints) is to reload the page. So let's press `key:F5` (Windows, Linux) or `key:Cmd+R` (Mac). +আমাদের উদাহরণে পেজ লোডের সময় `hello()` কল করা হয়েছে, তো সবচাইতে সহজ উপায় ডিবাগারটি একটিভ করার জন্য (ব্রেকপয়েন্ট সেট করার পর) পেজটি রিলোড করতে হবে । কিবোর্ড থেকে `key:F5` (Windows, Linux) or `key:Cmd+R` (Mac) প্রেস করুন । -As the breakpoint is set, the execution pauses at the 4th line: +ব্রেকপয়েন্ট সেট করা হলে, এক্সিকিউশন ৪নং লাইনে থামে ঃ ![](chrome-sources-debugger-pause.svg) -Please open the informational dropdowns to the right (labeled with arrows). They allow you to examine the current code state: +ডানদিকে ইনফরম্যাশনাল ড্রপডাউনটি খুলুন ( এরো চিহ্নের আইকন )। আর এখান থেকেই বর্তমান কোড গুলো পরীক্ষা করার যায়: -1. **`Watch` -- shows current values for any expressions.** +1. **`Watch` -- যেকোনো এক্সপ্রেশনের জন্য বর্তমান মান দেখায় ।** +<<<<<<< HEAD + আপনি চাইলে প্লাসে `+` ক্লিক করে একটি এক্সপ্রেশন ইনপুট দিতে পারেন । ডিবাগার যেকোনো মুহূর্তে এটির মান দেখাবে এবং অটোম্যাটিক্যালি এক্সিকিশন প্রসেস গুলো পুনরায় ক্যালকুলেট হবে । +======= You can click the plus `+` and input an expression. The debugger will show its value, automatically recalculating it in the process of execution. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 + +2. **`Call Stack` -- নেস্টেড কল গুলো দেখায়.** -2. **`Call Stack` -- shows the nested calls chain.** + এই মূহুর্তে ডিভাগার `hello()` কল এর ভিতর রয়েছে , আর এটি `index.html` এর মধ্যে থাকা স্ক্রিপ্ট থেকে কল হয়েছে ( কোন ফাংশন ছিলো না , তাই এটাকে এননিমাউস বলা হয় ) । - At the current moment the debugger is inside `hello()` call, called by a script in `index.html` (no function there, so it's called "anonymous"). + যদি আপনি কল স্ট্যাক থেকে যেকোন স্ট্যাক আইটেম (e.g. "anonymous") ক্লিক করেন তাহলে ডিভাগার ঠিক সেই কোডেই জাম্প করবে এবং থাকা সকল ভেরিয়েবল গুলো পরিক্ষা করে দেখা যাবে। - If you click on a stack item (e.g. "anonymous"), the debugger jumps to the corresponding code, and all its variables can be examined as well. -3. **`Scope` -- current variables.** +3. **`Scope` -- বর্তমান ভেরিয়েবল.** - `Local` shows local function variables. You can also see their values highlighted right over the source. + `Local` লোকাল ফাংশনের ভেরিয়েবল গুলো দেখায় । সেই সাথে সোর্স কোডে ভেলু গুলো হাইলাইট করে দেখানো হয় । - `Global` has global variables (out of any functions). + `Global` গ্লোবাল ভেরিয়েবল গুলো দেখায় (যেকোন ফাংসনের বাহিরের ভেরিয়েবল). - There's also `this` keyword there that we didn't study yet, but we'll do that soon. + সেখানে এই `this` কিউয়ার্ডটিও রয়েছে যা আমরা এখনো আলোচনা করিনি কিন্তু খুব শিগ্রই এটা নিয়ে আলোচনা হবে । -## Tracing the execution +## এক্সিকিউশান গুলো ট্রেস করা -Now it's time to *trace* the script. +এখন স্ক্রিপ্ট ট্রেস করার সময় - + +ডান প্যানেলের উপরে এটির জন্য বাটন রয়েছে । চলুন ক্লিক করা যাক -There are buttons for it at the top of the right panel. Let's engage them. - -- "Resume": continue the execution, hotkey `key:F8`. -: Resumes the execution. If there are no additional breakpoints, then the execution just continues and the debugger loses control. - Here's what we can see after a click on it: + -- "Resume": এক্সিকিউশান চলমানের জন্য, hotkey `key:F8`. + +পুনরায় এক্সকিউশান করুন । যদি কোন অতিরিক্ত ব্রেকপয়েন্ট না থাকে, তাহলে এক্সিকিউশান কন্টিনিউ হতে থাকবে আর ডিভাগার তার কন্ট্রল হারাবে । - ![](chrome-sources-debugger-trace-1.svg) +ক্লিক করার পর আমরা যা দেখতে পাই এখানে ঃ - The execution has resumed, reached another breakpoint inside `say()` and paused there. Take a look at the "Call Stack" at the right. It has increased by one more call. We're inside `say()` now. +![](chrome-sources-debugger-trace-1.svg) - -- "Step": run the next command, hotkey `key:F9`. -: Run the next statement. If we click it now, `alert` will be shown. +এক্সিকিউশনটি আবার শুরু হয়েছে এবং অন্য একটি ব্রেকপয়েন্টে `say()` যেয়ে থেমেছে । এখন কল স্ট্যাকে লক্ষ্য করুন এখানে আরেকটি কল বৃদ্ধি পেয়েছে । এখন আমরা `say()` এর মধ্যে । - Clicking this again and again will step through all script statements one by one. +<<<<<<< HEAD + -- "Step": পরবর্তী কমান্ড চালান, hotkey `key:F9`. +পরবর্তী স্টেটমেন্টটি চালান । যদি আমরা এখন এটি ক্লিক করি তাহলে `alert` দেখাবে । + +বার বার এটিতে ক্লিক করলে স্টেটমেন্টগুলো একের পর এক এক্সিকিউশান হতে থাকবে । +======= -- "Step over": run the next command, but *don't go into a function*, hotkey `key:F10`. : Similar to the previous "Step" command, but behaves differently if the next statement is a function call (not a built-in, like `alert`, but a function of our own). If we compare them, the "Step" command goes into a nested function call and pauses the execution at its first line, while "Step over" executes the nested function call invisibly to us, skipping the function internals. The execution is then paused immediately after that function call. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 + + -- "Step over": পরবর্তী কমান্ড চালান তবে ফাংশানে যাবেন না, hotkey `key:F10`. - That's good if we're not interested to see what happens inside the function call. +অনেকটা আগের কমান্ডের "Step" মতই কিন্তু একটু অন্যভাবে আচরন করে যদি পরবর্তি স্টেটমেন্টটি একটি ফাংশন কল হয়ে থাকে ( এটা বিল্ট ইন না `alert` এর মত কিন্তু এটি আমাদের নিজস্ব একটি ফাংশন ) + +যদি আমরা সেগুলি তুলনা করি, “Step” কমান্ডটি একটি নেস্টেড ফাংশন কলে যায় এবং তার প্রথম লাইনে এক্সিকিউশনকে পজ করে, যখন “Step over” এক্সিকিউট হয় তখন নেস্টেড ফাংশন অদৃশ্যভাবে কল হয়ে থাকে সেই সাথে ফাংশন ইন্টারনাল গুলো এড়িয়ে যায়। + +সেই ফাংশন কলের পরপরই এক্সিকিউশান আবার পজ হয়। + +তবে সমস্যা নাই যদি আমরা ফাংশনের ভিতর কি হচ্ছে না হচ্ছে তা না দেখতে চাই । -- "Step into", hotkey `key:F11`. -: That's similar to "Step", but behaves differently in case of asynchronous function calls. If you're only starting to learn JavaScript, then you can ignore the difference, as we don't have asynchronous calls yet. - For the future, just note that "Step" command ignores async actions, such as `setTimeout` (scheduled function call), that execute later. The "Step into" goes into their code, waiting for them if necessary. See [DevTools manual](https://developers.google.com/web/updates/2018/01/devtools#async) for more details. +এটিও "Step" এর মত , কিন্তু এটি এসিনক্রোনাস ফাংসন কল এর ক্ষেত্রে একটু অন্য রকম বিহেভ করে । যদি আপনি সবে মাত্র জাভাস্ক্রিপ্ট শিখা শুরু করছেন তাহলে আপনি চাইলে এটি ইগনোর করতে পারেন , যদিও আমাদের কোন এসিনক্রোনাস ফাংসন কল নেই । + +ফিউচারের জন্য নোট করে রাখতে পারেন যে "Step" কমান্ড এসিনক্রোনাস একশান ইগনোর করে থাকে , যেমন `setTimeout` (scheduled function call) যেট পরে এক্সিকিউট করে থাকে । "Step into" কোডের ভেতর যায় এবং প্রয়োজন হলে অপেক্ষা করে । আরো তথ্যের জন্য এটা দেখতে পারেন [DevTools manual](https://developers.google.com/web/updates/2018/01/devtools#async) । - -- "Step out": continue the execution till the end of the current function, hotkey `key:Shift+F11`. -: Continue the execution and stop it at the very last line of the current function. That's handy when we accidentally entered a nested call using , but it does not interest us, and we want to continue to its end as soon as possible. + -- "Step out": বর্তমান ফাংশন শেষ না হওয়া পর্যন্ত এক্সিকিউশান চালিয়ে যান, hotkey `key:Shift+F11`. - -- enable/disable all breakpoints. -: That button does not move the execution. Just a mass on/off for breakpoints. +<<<<<<< HEAD +এক্সিকিউশন চালিয়ে যান এবং বর্তমান ফাংশনের একেবারে শেষ লাইনে এটি বন্ধ করুন। এটি তখন কার্যকর যখন আমরা ভুলবশত একটি নেস্টেড কল ব্যবহার করে প্রবেশ করি । আর এটি আমাদের উপর ইন্টারেস্ট রাখে না যার কারনে আমরা শেষ না হওয়া পর্যন্ত কন্টিনিউ করতে থাকি যত দ্রুত সম্ভব । + -- enable/disable সকল ব্রেক পয়েন্টগুলো + +এই বাটনটি এক্সিকিউশন করে না , শুধুমাত্র ব্রেকপয়েন্টকে অন/অফ করার জন্য ব্যবহার হয় । + + -- enable/disable অটোম্যাটিক পজ হয় যদি কোন ত্রুটি ধরা পড়ে + +অন থাকা অবস্থায় এবং ডেভলপার টুল ওপেন থাকলে স্ক্রিপ্ট এক্সিকিউশনের সময় একটি ত্রুটি ধরা পড়লে স্বয়ংক্রিয়ভাবে এটি পজ হয় ৷ তারপর আমরা ডিবাগারে ভেরিয়েবল বিশ্লেষণ করে দেখতে পারি কি ভুল হয়েছে। সুতরাং যদি আমাদের স্ক্রিপ্ট একটি ত্রুটির জন্য এক্সিকিউশান বন্ধ হয়ে যায় তাহলে আমরা ডিবাগার খুলতে পারি এবং এই অপশানটি অন করে পেজ রিলোড দিয়ে দেখতে পারি যে কোথায় এটি বন্ধ হয় এবং বর্তমান অবস্থা কি তা জানতে পারি । +======= -- enable/disable automatic pause in case of an error. : When enabled, if the developer tools is open, an error during the script execution automatically pauses it. Then we can analyze variables in the debugger to see what went wrong. So if our script dies with an error, we can open debugger, enable this option and reload the page to see where it dies and what's the context at that moment. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```smart header="Continue to here" -Right click on a line of code opens the context menu with a great option called "Continue to here". +একটি লাইনের উপর রাইট ক্লিক করে কন্টেক্সট মেনু ওপেন করলে একটা "Continue to here" অপশান পাবো । -That's handy when we want to move multiple steps forward to the line, but we're too lazy to set a breakpoint. +লাইনে যখন একাধিক স্টেপ এগিয়ে নিয়ে যেতে চাই তখন এটি সুবিধাজনক, কিন্তু একটি ব্রেকপয়েন্ট সেট করতে আমরা খুব অলসতা করি ``` -## Logging +## লগিং ( Logging ) -To output something to console from our code, there's `console.log` function. +আমাদের কোড থেকে কিছু আউটপুটের জন্য এই `console.log` ফাংশনটি রয়েছে । -For instance, this outputs values from `0` to `4` to console: +এক্ষেত্রে `0` থেকে `4` পর্যন্ত কন্সলে ভেলু আউটপুটের জন্য ঃ ```js run // open console to see @@ -175,21 +224,26 @@ for (let i = 0; i < 5; i++) { } ``` -Regular users don't see that output, it is in the console. To see it, either open the Console panel of developer tools or press `key:Esc` while in another panel: that opens the console at the bottom. +রেগুলা ইউজাররা কোন আউটপুট দেখতে পাচ্ছেন না কারন এটি কন্সোলে প্রিন্ট হয়েছে । এটি দেখার জন্য আপনাকে কন্সোল প্যানেল ওপেন করতে হবে `key:Esc` প্রেস করুন । তাহলে নিচে কন্সোল প্যানেল ওপেন হবে । -If we have enough logging in our code, then we can see what's going on from the records, without the debugger. +যদি আমাদের কোডে যথেষ্ট লগিং থাকে, তাহলে আমরা ডিবাগার ছাড়াই রেকর্ড থেকে কী ঘটছে তা দেখতে পারি। -## Summary +## সারসংক্ষেপ -As we can see, there are three main ways to pause a script: -1. A breakpoint. -2. The `debugger` statements. -3. An error (if dev tools are open and the button is "on"). +তো আমারা যা দেখলাম এখানে ৩ টি প্রধান উপায় রয়েছে স্ক্রিপ্ট থামানোর জন্য ঃ +<<<<<<< HEAD +1. ব্রেকপয়েন্ট +2. `debugger` স্টেটমেন্ট +3. এরর ( যদি ডেভটুল ওপেন থাকে এবং বাটন অন থাকলে). +======= When paused, we can debug: examine variables and trace the code to see where the execution goes wrong. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 + +যখন পজ হয় তখন আমরা ডিবাগ করতে পারি - ভেরিয়েবল পরীক্ষা করে এবং কোডটি ট্রেস করে দেখতে পারি যে এক্সিকিউশনটি কোথায় ভুল হয়েছে। -There are many more options in developer tools than covered here. The full manual is at . +এখানে আরো অনেক অপশান রয়েছে ডেভটুলসের যা আমরা কভার করিনি । সম্পূর্ণ তথ্য এখানে রয়েছে - -The information from this chapter is enough to begin debugging, but later, especially if you do a lot of browser stuff, please go there and look through more advanced capabilities of developer tools. +এই অধ্যায়ের তথ্যগুলি ডিবাগিং শুরু করার জন্য যথেষ্ট, কিন্তু পরে বিশেষ করে যদি আপনি অনেক ব্রাউজার ব্যবহার করেন তাহলে অনুগ্রহ করে সেই ব্রাউজার গুলোর ডেভটুল গুলোর ফিচারস চেক করবেন । -Oh, and also you can click at various places of dev tools and just see what's showing up. That's probably the fastest route to learn dev tools. Don't forget about the right click and context menus! +ওহ, এবং এছাড়াও আপনি ডেভ টুলের বিভিন্ন জায়গায় ক্লিক করতে পারেন এবং শুধু দেখতে পারেন কি দেখাচ্ছে। এটি সম্ভবত ডেভ টুল শেখার দ্রুততম রাস্তা । আর ডান ক্লিক এবং কন্টেক্সট মেনু সম্পর্কে ভুলবেন না! diff --git a/1-js/03-code-quality/01-debugging-chrome/chrome-open-sources.svg b/1-js/03-code-quality/01-debugging-chrome/chrome-open-sources.svg index 5fc6dce3a..a3c7db6ec 100644 --- a/1-js/03-code-quality/01-debugging-chrome/chrome-open-sources.svg +++ b/1-js/03-code-quality/01-debugging-chrome/chrome-open-sources.svg @@ -1 +1 @@ -open sources \ No newline at end of file +open sources \ No newline at end of file diff --git a/1-js/03-code-quality/01-debugging-chrome/chrome-sources-breakpoint.svg b/1-js/03-code-quality/01-debugging-chrome/chrome-sources-breakpoint.svg index 63bf4966e..6e7b60f85 100644 --- a/1-js/03-code-quality/01-debugging-chrome/chrome-sources-breakpoint.svg +++ b/1-js/03-code-quality/01-debugging-chrome/chrome-sources-breakpoint.svg @@ -1 +1 @@ -here's the listbreakpoints \ No newline at end of file +here's the listbreakpoints \ No newline at end of file diff --git a/1-js/03-code-quality/01-debugging-chrome/chrome-sources-console.svg b/1-js/03-code-quality/01-debugging-chrome/chrome-sources-console.svg index 3fe5f124f..d5d2a0b93 100644 --- a/1-js/03-code-quality/01-debugging-chrome/chrome-sources-console.svg +++ b/1-js/03-code-quality/01-debugging-chrome/chrome-sources-console.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/1-js/03-code-quality/01-debugging-chrome/chrome-sources-debugger-pause.svg b/1-js/03-code-quality/01-debugging-chrome/chrome-sources-debugger-pause.svg index 0147c2e0a..83468fddb 100644 --- a/1-js/03-code-quality/01-debugging-chrome/chrome-sources-debugger-pause.svg +++ b/1-js/03-code-quality/01-debugging-chrome/chrome-sources-debugger-pause.svg @@ -1 +1 @@ -213see the outer call detailswatch expressionscurrent variables \ No newline at end of file +213see the outer call detailswatch expressionscurrent variables \ No newline at end of file diff --git a/1-js/03-code-quality/01-debugging-chrome/chrome-sources-debugger-trace-1.svg b/1-js/03-code-quality/01-debugging-chrome/chrome-sources-debugger-trace-1.svg index 9fa1b3b8c..23937e0d6 100644 --- a/1-js/03-code-quality/01-debugging-chrome/chrome-sources-debugger-trace-1.svg +++ b/1-js/03-code-quality/01-debugging-chrome/chrome-sources-debugger-trace-1.svg @@ -1 +1 @@ -nested calls \ No newline at end of file +nested calls \ No newline at end of file diff --git a/1-js/03-code-quality/01-debugging-chrome/chrome-tabs.svg b/1-js/03-code-quality/01-debugging-chrome/chrome-tabs.svg index 016708256..41a3d8784 100644 --- a/1-js/03-code-quality/01-debugging-chrome/chrome-tabs.svg +++ b/1-js/03-code-quality/01-debugging-chrome/chrome-tabs.svg @@ -1 +1 @@ -213 \ No newline at end of file +213 \ No newline at end of file diff --git a/1-js/03-code-quality/02-coding-style/1-style-errors/solution.md b/1-js/03-code-quality/02-coding-style/1-style-errors/solution.md index 31b3bb7ae..32c917207 100644 --- a/1-js/03-code-quality/02-coding-style/1-style-errors/solution.md +++ b/1-js/03-code-quality/02-coding-style/1-style-errors/solution.md @@ -1,25 +1,41 @@ -You could note the following: +নিচের বিষয়গুলি টুকে রাখতে পারেন: ```js no-beautify +<<<<<<< HEAD +function pow(x,n) // <- আর্গুমেন্টেগুলোর মাঝে ফাঁকা নেই +{ // <- আলাদা লাইনে ব্যাকেট লিখা + let result=1; // <- সমান এর = আগে / পরে ফাঁকা নেই + for(let i=0;i>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 return result; } +<<<<<<< HEAD +let x=prompt("x?",''), n=prompt("n?",'') // <-- টেকনিক্যালি সম্ভব, +// কিন্তু ২ লাইনে লিখা ভালো, এছাড়াও কোন ফাঁকা নেই এবং সেলিকোমন (;) নেই +if (n<0) // <- ভেতরে কোন ফাঁকা নেই (n < 0), এবং উপড়ে কোন বাড়তি লাইন থাকা উচিৎ নয় +{ // <- আলাদা মাইলে ব্যাকেট + // নিচে- বড় লাইনগূলি কিছু খন্ডে ভাগ করে নিতে পারেন পাঠযোগ্যতা বাড়াতে। +======= let x=prompt("x?",''), n=prompt("n?",'') // <-- technically possible, // but better make it 2 lines, also there's no spaces and missing ; if (n<=0) // <- no spaces inside (n <= 0), and should be extra line above it { // <- curly brace on a separate line // below - long lines can be split into multiple lines for improved readability +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d alert(`Power ${n} is not supported, please enter an integer number greater than zero`); } -else // <- could write it on a single line like "} else {" +else // <- এভাবে এক লাইনে লিখতে পারেন "} else {" { - alert(pow(x,n)) // no spaces and missing ; + alert(pow(x,n)) // কোন ফাঁকা নেই, এবং সেলিকোমন (;) নেই } ``` diff --git a/1-js/03-code-quality/02-coding-style/1-style-errors/task.md b/1-js/03-code-quality/02-coding-style/1-style-errors/task.md index b750962c9..6ed83ce47 100644 --- a/1-js/03-code-quality/02-coding-style/1-style-errors/task.md +++ b/1-js/03-code-quality/02-coding-style/1-style-errors/task.md @@ -2,9 +2,9 @@ importance: 4 --- -# Bad style +# বাজে স্টাইল -What's wrong with the code style below? +নিচের কোডে কি সমস্যা আছে? ```js no-beautify function pow(x,n) @@ -25,4 +25,4 @@ else } ``` -Fix it. +ঠিক করুন। diff --git a/1-js/03-code-quality/02-coding-style/article.md b/1-js/03-code-quality/02-coding-style/article.md index 904f0a939..6ae39b9d2 100644 --- a/1-js/03-code-quality/02-coding-style/article.md +++ b/1-js/03-code-quality/02-coding-style/article.md @@ -1,12 +1,12 @@ -# Coding Style +# কোডিং স্টাইল -Our code must be as clean and easy to read as possible. +আমাদের কোড যতটুকু সম্ভব পড়ার জন্য পরিচ্ছন্ন ও সহজ রাখতে হবে। -That is actually the art of programming -- to take a complex task and code it in a way that is both correct and human-readable. A good code style greatly assists in that. +একটি জটিল কাজ নিয়ে এমনভাবে কোড করা যা একাধারে সঠিক ও মানুষের জন্য পাঠযোগ্য -- এটাই প্রোগ্রামিংয়ের আর্ট । একটি ভালো কোডিং স্টাইল এতে অনেকটাই সহযোগিতা করে । -## Syntax +## শব্দবিন্যাস ( সিনট্যাক্স ) -Here is a cheat sheet with some suggested rules (see below for more details): +এখানে কিছু সাজেশন দেয়া হল (বিস্তারিত নিচে দেয়া দেখুন): ![](code-style.svg) -Now let's discuss the rules and reasons for them in detail. +এখন চলুন কিছু নিয়ম ও তার কারণ সম্বন্ধে জেনে নেইঃ ```warn header="There are no \"you must\" rules" -Nothing is set in stone here. These are style preferences, not religious dogmas. +এখনে পাথরে খোদাই করে লিছু বলা নেই। এগুলো কোডিং স্টাইলের পছন্দ মাত্র, কোন ধর্মীয় মতবাদ নয়। ``` -### Curly Braces +### দ্বিতীয় বন্ধনী -In most JavaScript projects curly braces are written in "Egyptian" style with the opening brace on the same line as the corresponding keyword -- not on a new line. There should also be a space before the opening bracket, like this: +বেশিরভাগ জাভাস্ক্রিপ্ট প্রজেক্টেই দ্বিতীয় বন্ধনীগুলোকে "মিশরীয়" কায়দায় লেখা হয় যাতে শুরুর বন্ধনীটি অনুরূপ কিওয়ার্ডের সাথে একই লাইনে থাকে -- নতুন লাইনে নয়। তবে শুরুর বন্ধনীটি আগে একটি ফাঁকা স্পেস থাকা উচিৎ। +কিছুটা এমন ঃ ```js if (condition) { - // do this - // ...and that - // ...and that + // কিছু কোড + // ...আরও কিছু কোড + // ...আরও কিছু কোড } ``` -A single-line construct, such as `if (condition) doSomething()`, is an important edge case. Should we use braces at all? +একটি একলাইনের কনস্ট্রাকটর, যেমন `if (condition) doSomething()`, একটি গুরুত্বপূর্ণ কেইস। এখানে কি বন্ধনী দেয়া উচিৎ ? -Here are the annotated variants so you can judge their readability for yourself: +এখানে বিভিন্ন টীকা যুক্ত করা হলো যাতে আপনি নিজেই পঠনযোগ্যতা যাচাই করতে পারেনঃ -1. 😠 Beginners sometimes do that. Bad! Curly braces are not needed: +1. 😠অনভিজ্ঞরা প্রায়ই এটা করে। বাজে! এখানে ২য় বন্ধনির দরকার নেই: ```js if (n < 0) *!*{*/!*alert(`Power ${n} is not supported`);*!*}*/!* ``` -2. 😠 Split to a separate line without braces. Never do that, easy to make an error when adding new lines: +2. 😠 দ্বিতীয় বন্ধনী ছাড়াই নতুন লাইনে চলে যাওয়া। কখনই এটা করবেন না, নতুন লাইন করতে গেলে ভুলের সম্বাবনা বেড়ে যায়: ```js if (n < 0) alert(`Power ${n} is not supported`); ``` -3. 😏 One line without braces - acceptable, if it's short: +3. 😏 দ্বিতীয় বন্ধনী ছাড়াই একলাইনের কোড - কোড ছোট হলে, গ্রহণযোগ্য: ```js if (n < 0) alert(`Power ${n} is not supported`); ``` -4. 😃 The best variant: +4. 😃 সবচেয়ে ভালো পন্থা: ```js if (n < 0) { alert(`Power ${n} is not supported`); } ``` -For a very brief code, one line is allowed, e.g. `if (cond) return null`. But a code block (the last variant) is usually more readable. +সংক্ষিপ্ত কোডের জন্য একলাইনে লিখা গ্রহণযোগ্য, যথাঃ `if (cond) return null`. কিন্তু একটা কোড ব্লক (সবশেষে যেটা দেখলাম) সাধারণত বেশী পাঠযোগ্য। -### Line Length +### লাইনের দৈর্ঘ্য -No one likes to read a long horizontal line of code. It's best practice to split them. +কেউই লম্বা অনুভূমিক লাইন পড়তে পছন্দ করে না। একে ভাগ করে দেয়াই উত্তম। -For example: +উদাহারণস্বরুপ: ```js -// backtick quotes ` allow to split the string into multiple lines +// ব্যাকটিক কোট ` এর সাহায্যে একটা স্ট্রিংকে ভাগ করা যায় let str = ` ECMA International's TC39 is a group of JavaScript developers, implementers, academics, and more, collaborating with the community @@ -92,7 +93,7 @@ let str = ` `; ``` -And, for `if` statements: +এবং `if` স্টেট্মেন্টগুলোয় : ```js if ( @@ -104,23 +105,27 @@ if ( } ``` -The maximum line length should be agreed upon at the team-level. It's usually 80 or 120 characters. +লাইনের দৈর্ঘ্য নিজেদের টিমের সাথে অলোচনা করে নেয়া উচিৎ। সাধারণত এটা ৮০ থেকে ১২০ অক্ষরের হয়। -### Indents +### ইন্ডেন্ট (খাঁজ) -There are two types of indents: +ইন্ডেন্ট ২ ধরণের হয়: -- **Horizontal indents: 2 or 4 spaces.** +- **আনুভুমিক ইন্ডেন্ট: ২ অথবা ৪ টি স্পেস** - A horizontal indentation is made using either 2 or 4 spaces or the horizontal tab symbol (key `key:Tab`). Which one to choose is an old holy war. Spaces are more common nowadays. + একটি আনুভুমিক ইন্ডেন্ট ২ থেকে ৪ টি স্পেস নিয়ে গঠিত অথবা আনুভুমিক ট্যাব চিহ্ন (কী `key:Tab`)। কোনটা ভাল একটি বিতর্কের বিষয়। যদিও স্পেসের ব্যাবহার এখন বেশি। - One advantage of spaces over tabs is that spaces allow more flexible configurations of indents than the tab symbol. + ইন্ডেন্টশনের ক্ষেত্রে ট্যাব চিহ্ন থেকে স্পেস ব্যাবহারের একটি বাড়তি সুবিধা হল এর বেশি ফ্ল্যাক্সিবল কনফিগারেশনের +<<<<<<< HEAD + যেমন, এভাবে আমরা আর্গুমেন্টগুলোকে শুরুর ব্যাকেটের সাথে লম্বভাবে রাখতে পারি : +======= For instance, we can align the parameters with the opening bracket, like this: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js no-beautify show(parameters, - aligned, // 5 spaces padding at the left + aligned, // বামপাশে ৫টি স্পেস দেয়া one, after, another @@ -129,9 +134,9 @@ There are two types of indents: } ``` -- **Vertical indents: empty lines for splitting code into logical blocks.** +- **উল্লম্ব ইন্ডেন্ট : কোডকে লজিকাল ব্লকে ভাগ করতে ফাঁকা লাইন** - Even a single function can often be divided into logical blocks. In the example below, the initialization of variables, the main loop and returning the result are split vertically: + এমনকি শুধুমাত্র একটা ফাংশনকে কয়েকটি লজিকাল ব্লকে ভাগ করা যেতে পারে। নিচে উদাহারনে, চলক নির্ধারণ করতে, প্রধান লুপ ও তার ফলাফল রিটার্নকে একাধিক উল্লম্ব খণ্ডে ভাগ করা হয়েছে: ```js function pow(x, n) { @@ -145,23 +150,23 @@ There are two types of indents: } ``` - Insert an extra newline where it helps to make the code more readable. There should not be more than nine lines of code without a vertical indentation. + একটি বাড়তি লাইন এখানে কোডকে আরও পড়ার উপযোগী করেছে। উল্লম্ব ইন্ডেন্ট ছাড়া ৯ লাইনের বেশী কোড থাকা উচিৎ নয়। -### Semicolons +### সেমিকোলন -A semicolon should be present after each statement, even if it could possibly be skipped. +একটি সেমিকোলন থাকা উচিৎ প্রতিটি স্টেট্মেন্টের শেষে, যদিও এটা বাদও দেয়া যায়। -There are languages where a semicolon is truly optional and it is rarely used. In JavaScript, though, there are cases where a line break is not interpreted as a semicolon, leaving the code vulnerable to errors. See more about that in the chapter . +কিছু প্রোগ্রামিং ভাষায় সত্যিই সেমিকোলন মূখ্য নয় এবং কম ব্যাবহার হয়। যদিও জাভাস্ক্রিপ্টে কিছু সময় লাইনের শেষকে সেমিকোলন হিসেবে ধরা হয় না, এটি কোডে পরে এরর করে দিতে পারে। এব্যাপারে আরও জানতেঃ . -If you're an experienced JavaScript programmer, you may choose a no-semicolon code style like [StandardJS](https://standardjs.com/). Otherwise, it's best to use semicolons to avoid possible pitfalls. The majority of developers put semicolons. +আপনি জাভাস্ক্রিপ্টে দক্ষ হলে, সেমিকোলন ছাড়া স্টাইল পছন্দ করতে পারেন [StandardJS](https://standardjs.com/). অন্যথায়,ফাঁদে পরতে না চাইলে সেমিকোলন দেয়াই শ্রেয়। বেশিরভাগ ডেভ্লপারই এটি দেয়। -### Nesting Levels +### নেস্টিং লেভেল -Try to avoid nesting code too many levels deep. +বেশি গভীর নেস্টিং কোড লিখা থেকে বিরত থাকুন। -For example, in the loop, it's sometimes a good idea to use the [`continue`](info:while-for#continue) directive to avoid extra nesting. +যথা, লুপে, বাড়তি নেস্টিং বাদ দিতে [`continue`](info:while-for#continue) ডিরেক্টিভ ব্যাবহার করা ভালো -For example, instead of adding a nested `if` conditional like this: +যেমন, নিচের মত একটা নেস্টিং `if` যোগ করা থেকে: ```js for (let i = 0; i < 10; i++) { @@ -171,7 +176,7 @@ for (let i = 0; i < 10; i++) { } ``` -We can write: +আমরা লিখতে পারি: ```js for (let i = 0; i < 10; i++) { @@ -180,11 +185,11 @@ for (let i = 0; i < 10; i++) { } ``` -A similar thing can be done with `if/else` and `return`. +একই জিনিস করা যাবে `if/else` ও `return` এর সাথে -For example, two constructs below are identical. +উদাহারণ হিসেবে, নিচে অনুরুপ ২টি কন্সট্রাক্টর -Option 1: +অপশন ১: ```js function pow(x, n) { @@ -202,7 +207,7 @@ function pow(x, n) { } ``` -Option 2: +অপশন ২: ```js function pow(x, n) { @@ -221,13 +226,13 @@ function pow(x, n) { } ``` -The second one is more readable because the "special case" of `n < 0` is handled early on. Once the check is done we can move on to the "main" code flow without the need for additional nesting. +২য় টি বেশী পাঠযোগ্য কারণ "বিশেষ কেস" `n < 0` আগেই বিবেচনা করা হচ্ছে, একবার দেখা শেষ হলে আমরা পরের "আসল" কোডে যেতে পারি, কোন বাড়তি নেস্টিং ছাড়াই। -## Function Placement +## ফাংশন স্থাননির্ণয় -If you are writing several "helper" functions and the code that uses them, there are three ways to organize the functions. +যদি আমরা একধিক "হেল্পার" ফাংশন লিখি ও কোডে ব্যাবহার করি, ৩টি পন্থা আছে ফাংশনসমূহকে বিন্যস্ত করার। -1. Declare the functions *above* the code that uses them: +1. কোডে ব্যাবহারের আগেই ফাংশন "উপরে" নির্ধারণ করুন: ```js // *!*function declarations*/!* @@ -248,7 +253,7 @@ If you are writing several "helper" functions and the code that uses them, there setHandler(elem); walkAround(); ``` -2. Code first, then functions +2. আগে কোড পরে ফাংশনঃ ```js // *!*the code which uses the functions*/!* @@ -269,21 +274,21 @@ If you are writing several "helper" functions and the code that uses them, there ... } ``` -3. Mixed: a function is declared where it's first used. +3. মিশ্রণঃ কোডে প্রথমে ব্যাবহারের আগে নির্ধারণ করুন -Most of time, the second variant is preferred. +প্রায়শই ২য় পন্থাটিই ব্যাবহার হয়। -That's because when reading code, we first want to know *what it does*. If the code goes first, then it becomes clear from the start. Then, maybe we won't need to read the functions at all, especially if their names are descriptive of what they actually do. +এর কারন যখন এটি পড়া হয়, আমরা আগে থেকে জানতে চাই *এটি কি করে*। আগে কোড করলে, শুরু থেকেই এটা বুঝা যায়। তখন হয়ত, আমরা আর ফাংশন পড়ার দরকারও হয় না। বিশেষত, যদি ফাংশ্নের নাম তার কাজ সম্পর্কে যথেষ্ট বিস্তারিত হয়। -## Style Guides +## স্টাইল গাইড -A style guide contains general rules about "how to write" code, e.g. which quotes to use, how many spaces to indent, the maximal line length, etc. A lot of minor things. +স্টাইল গাইড "কিভাবে কোড লিখতে হয়" এমন রীতি নিয়ে গঠিত, যেমনঃ কোন কোট ব্যাবহার করতে হবে, কতগুলি স্পেসে ইন্ডেন্ট, সর্বোচ্চ লাইন লেন্থ, ইত্যাদি সহ অনেক গৌণ বিষয়। -When all members of a team use the same style guide, the code looks uniform, regardless of which team member wrote it. +যখন একটি টিমের সবাই একই গাইড মেনে চলে, তা যতজন সদস্যাই লিখুক না কেন, কোড অভিন্ন মনে হয়। -Of course, a team can always write their own style guide, but usually there's no need to. There are many existing guides to choose from. +অবশ্যই একটা টীম নিজের মত গাইড লিখতে পারে,কিন্তু তার তেমন দরকার নেই। অনেক গাইড আছে বেছে নেয়ার জন্য। -Some popular choices: +কিছু জনপ্রিয় নীতি: - [Google JavaScript Style Guide](https://google.github.io/styleguide/jsguide.html) - [Airbnb JavaScript Style Guide](https://github.com/airbnb/javascript) @@ -291,32 +296,36 @@ Some popular choices: - [StandardJS](https://standardjs.com/) - (plus many more) -If you're a novice developer, start with the cheat sheet at the beginning of this chapter. Then you can browse other style guides to pick up more ideas and decide which one you like best. +আপনি নতুন ডেভেলপার হলে, অধ্যায়ের আরম্ভে দেয়া সাজেশ্ন থেকে শুরু করতে পারেন। তারপর আপনি এই গাইডগুলো থেকে দেখে নিয়ে একটা পছন্দ করে নিতে পারেন। -## Automated Linters +## স্বয়ংক্রিয় লিন্টারস -Linters are tools that can automatically check the style of your code and make improving suggestions. +লিন্টারস এমন টুল যা স্বয়ংক্রিয়ভাবে কোড স্টাইল চেক করে সাজেশন দেয়। -The great thing about them is that style-checking can also find some bugs, like typos in variable or function names. Because of this feature, using a linter is recommended even if you don't want to stick to one particular "code style". +মজার ব্যাপার হল স্টাইল চেক অনেক সময় বাগ পেতে সাহায্য করে, যেমন ভ্যারিএবল টাইপ বা ফাংশনের নাম. এই ফিচারটির জন্য, লিন্টারস ব্যাবহারে উৎসাহ দেয়া হয়, এমনকি যদি আপনি একটি "কোডিং স্টাইলে" আজীবন থাকতে নাও চান। -Here are some well-known linting tools: +এখনে কিছু পরিচিত লিন্টারস টুলঃ - [JSLint](https://www.jslint.com/) -- one of the first linters. - [JSHint](https://jshint.com/) -- more settings than JSLint. - [ESLint](https://eslint.org/) -- probably the newest one. +<<<<<<< HEAD +সবগুলিই তাদের কাজ ভালো করে। লেখন ব্যাবহার করেঃ [ESLint](http://eslint.org/). +======= All of them can do the job. The author uses [ESLint](https://eslint.org/). +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Most linters are integrated with many popular editors: just enable the plugin in the editor and configure the style. +অনেক কোড এডিটরে এটা আগে থেকেই থাকে: শুধুমাত্র প্লাগইন এনেবল করে কোড স্টাইল কনফিগার করলেই হয়। -For instance, for ESLint you should do the following: +যেমন ESLint এর জন্য দেখতে পারেনঃ -1. Install [Node.js](https://nodejs.org/). -2. Install ESLint with the command `npm install -g eslint` (npm is a JavaScript package installer). -3. Create a config file named `.eslintrc` in the root of your JavaScript project (in the folder that contains all your files). -4. Install/enable the plugin for your editor that integrates with ESLint. The majority of editors have one. +1. ইন্সটল [Node.js](https://nodejs.org/). +2. ইন্সটল ESLint এই কমান্ড দিয়ে `npm install -g eslint` (npm is a JavaScript package installer). +3. একটি কনফিগ ফাইল বানান `.eslintrc` জাভাস্ক্রিপ্টের রুটে প্রজেক্ট (যে ফোল্ডার সব ফাইল রাখছে). +4. ইন্সটল/এনেবল সেই প্লাগইন যা আপনার এডিটরে ESLint যোগ করবে। সিংহভাগ এডিটরে এটা আছে। -Here's an example of an `.eslintrc` file: +একটি উদাহারণ `.eslintrc` ফাইল: ```js { @@ -333,16 +342,20 @@ Here's an example of an `.eslintrc` file: } ``` -Here the directive `"extends"` denotes that the configuration is based on the "eslint:recommended" set of settings. After that, we specify our own. +এখানে ডিরেক্টিভ `"extends"` মানে সেটিংসে কনফিগারেশনটির বেস "eslint:recommended" সেট করা. এরপর, আমরা আমাদেরটা নির্দিষ্ট করে দেই। +<<<<<<< HEAD +অয়েব থেকে স্টাইল রুলস ডাউনলোড করে এক্সটেন্ডও করা যায়। আরও জানতে দেখুন +======= It is also possible to download style rule sets from the web and extend them instead. See for more details about installation. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Also certain IDEs have built-in linting, which is convenient but not as customizable as ESLint. +এছাড়া কিছু IDE তে লিন্টারস বিল্ট-ইন থাকে,যেটা সুবিধাজনক কিন্তু ESLint মত চাহিদা মত পরিবর্তন করতে পারি না। -## Summary +## সারসংক্ষেপ -All syntax rules described in this chapter (and in the style guides referenced) aim to increase the readability of your code. All of them are debatable. +সব সিনট্যাক্স রুলস বর্ননা করা হয়েছে (স্টাইল গাইডও তুলে ধরা হয়েছে) নিজ থেকেই কোডের পাঠযোগ্যতা বাড়ান। প্রায় সবই বিতর্কিত। -When we think about writing "better" code, the questions we should ask ourselves are: "What makes the code more readable and easier to understand?" and "What can help us avoid errors?" These are the main things to keep in mind when choosing and debating code styles. +যখন আমরা আরও "ভালো কোড" লিখার কথা ভাবি, আমাদের নিজেদের জিজ্ঞাসা করা উচিৎ: "কোনটি কোদকে আরও সহজ ও পাঠযোগ্য করে তোলে??" ও "কোনটা আমাদের এরর এড়াতে সাহায্য করবে?" এইদিকগুলো মাথায় রাখতে হবে যখন কোড স্টাইল বেছে নিব ও তার পক্ষে যুক্তি দিবো। -Reading popular style guides will allow you to keep up to date with the latest ideas about code style trends and best practices. +কোডিং স্টাইল গাইড নিয়ে পড়লে আপনি সময়ের সাথে তাল মিলিয়ে, কোডিং স্টাইলের ট্রেন্ড ও সবচেয়ে ভালো অনুশীলন নিয়ে নতুন ধারনাগুলো সম্বন্ধে জানতে পারবেন। \ No newline at end of file diff --git a/1-js/03-code-quality/02-coding-style/code-style.svg b/1-js/03-code-quality/02-coding-style/code-style.svg index 739d9f1ed..12a755c97 100644 --- a/1-js/03-code-quality/02-coding-style/code-style.svg +++ b/1-js/03-code-quality/02-coding-style/code-style.svg @@ -1 +1 @@ -2No space between the function name and parentheses between the parentheses and the parameterIndentation 2 spacesA space after for/if/while…} else { without a line breakSpaces around a nested callAn empty line between logical blocksLines are not very longA semicolon ; is mandatorySpaces around operatorsCurly brace { on the same line, after a spaceA space between argumentsA space between parameters \ No newline at end of file +2No space between the function name and parentheses between the parentheses and the parameterIndentation 2 spacesA space after for/if/while…} else { without a line breakSpaces around a nested callAn empty line between logical blocksLines are not very longA semicolon ; is mandatorySpaces around operatorsCurly brace { on the same line, after a spaceA space between argumentsA space between parameters \ No newline at end of file diff --git a/1-js/03-code-quality/03-comments/article.md b/1-js/03-code-quality/03-comments/article.md index af3a06c80..0ab9eea09 100644 --- a/1-js/03-code-quality/03-comments/article.md +++ b/1-js/03-code-quality/03-comments/article.md @@ -1,14 +1,14 @@ -# Comments +# কমেন্ট -As we know from the chapter , comments can be single-line: starting with `//` and multiline: `/* ... */`. +ইতপূর্বে আমরা কোডের গঠন চ্যাপ্টারে দেখেছি যে কমেন্ট এক লাইনের (সিংগেল লাইন) যা `//` দিয়ে শুরু এবং একাধিক লাইনের (মাল্টি লাইন) যা `/* ... */` শুরু হতে পারে. -We normally use them to describe how and why the code works. +সাধারণত আমরা কোডটি কিভাবে এবং কেনো কাজ করছে তার বর্ণনা দেবার জন্য কমেন্ট ব্যাবহার করে থাকি। -At first sight, commenting might be obvious, but novices in programming often use them wrongly. +প্রাথমিকভাবে কমেন্ট সুস্পষ্ট মনে হতে পারে, তবে প্রোগ্রামিং এ নবাগতরা প্রায়শই কমেন্ট ভুলভাবে ব্যবহার করে থাকে। -## Bad comments +## ত্রুটিপূর্ণ কমেন্ট -Novices tend to use comments to explain "what is going on in the code". Like this: +নবাগতদের মাঝে কমেন্ট ব্যবহার করে "এই কোডে কি ঘটছে" তা ব্যাখ্যা করার প্রবণতা দেখা যায়। এরকমঃ ```js // This code will do this thing (...) and that thing (...) @@ -18,13 +18,13 @@ complex; code; ``` -But in good code, the amount of such "explanatory" comments should be minimal. Seriously, the code should be easy to understand without them. +কিন্ত ভালো কোডে এরকম "ব্যাখ্যামূলক" কমেন্টে এর উপস্থিতি হওয়া উচিৎ ন্যূনতম। কমেন্ট ছাড়াই কোড সহজবোধ্য হওয়াটা গুরুত্বপূর্ণ। -There's a great rule about that: "if the code is so unclear that it requires a comment, then maybe it should be rewritten instead". +এ ব্যাপারে একটি সুন্দর নিয়ম আছেঃ "কোডটি যদি এতটাই অস্পষ্ট হয় যে এর জন্য একটি কমেন্ট প্রয়োজন, তবে সম্ভবত কমেন্ট এর পরিবর্তে এটি পুনরায় লেখা উচিত" -### Recipe: factor out functions +### কৌশল: ফাংশন পুনর্গঠন -Sometimes it's beneficial to replace a code piece with a function, like here: +অনেক ক্ষেত্রে কোডের অংশবিশেষ এর বদলে ফাংশন ব্যবহার করাটা সুবিধাজনক। যেমনঃ ```js function showPrimes(n) { @@ -43,8 +43,7 @@ function showPrimes(n) { } ``` -The better variant, with a factored out function `isPrime`: - + `isPrime` ফাংশন দিয়ে এর শ্রেয়তর বিকল্পঃ ```js function showPrimes(n) { @@ -65,11 +64,11 @@ function isPrime(n) { } ``` -Now we can understand the code easily. The function itself becomes the comment. Such code is called *self-descriptive*. +এখন আমরা খুব সহজেই কোডটি বুঝতে পারছি। ফাংশনটি নিজেই কমেন্ট হিসবে কাজ করছে। এ ধরনের কোড কে বলা হয় "স্ব-বর্ণনামূলক" -### Recipe: create functions +### কৌশলঃ ফাংশন তৈরি -And if we have a long "code sheet" like this: +এবং যদি আমাদের নিচের মত এরকম দীর্ঘ কোড শিট থাকেঃ ```js // here we add whiskey @@ -90,7 +89,7 @@ for(let t = 0; t < 3; t++) { // ... ``` -Then it might be a better variant to refactor it into functions like: +সেক্ষেত্রে শ্রেয়তর বিকল্পের জন্য কোডটি কে নিচের মত ফাংশনে পুনর্ঘঠন করা যেতে পারেঃ ```js addWhiskey(glass); @@ -111,21 +110,20 @@ function addJuice(container) { } ``` -Once again, functions themselves tell what's going on. There's nothing to comment. And also the code structure is better when split. It's clear what every function does, what it takes and what it returns. +ফাংশন নিজেরাই কি ঘটছে ব্যাখ্যা করে। এখানে কমেন্ট লেখার কিছু নেই। এছাড়াও আলাদা আলাদা থাকলে কোডের গঠন ভালো হয়। এটা সুপষ্ট যে প্রতিটি ফাংশন কি করে, কি গ্রহণ করে এবং কি রিটার্ন করে। + +বাস্তবে,আমরা সম্পুর্ণরূপে ব্যখ্যা সম্বলিত কমেন্ট পরিহার করতে পারি না। এখানে উৎকর্ষতা সাধনের জন্য অনেক জটিল অ্যালগরিদম এবং অনেক সুক্ষ্ম সমন্বয় করা হয়। কিন্ত সাধারণভাবে আমাদের উচিৎ কোড কে সহজ-সরল এবং স্ব-বর্ণ্নামূলক রাখার জন্য চেষ্টা করা । -In reality, we can't totally avoid "explanatory" comments. There are complex algorithms. And there are smart "tweaks" for purposes of optimization. But generally we should try to keep the code simple and self-descriptive. +## ভালো কমেন্ট -## Good comments +সুতরাং, ব্যাখ্যামূলক কমেন্ট সাধারণত খারাপ। সেক্ষেত্রে কোন ধরণের কমেন্ট ভালো? -So, explanatory comments are usually bad. Which comments are good? +গঠনপ্রণালী বর্ণনা করুনঃ কম্পোনেন্ট এর সার্বিক একটি রূপরেখা উল্লেখ করুন, এদের পারষ্পরিক মিথষ্ক্রিয়া এবং ভিন্ন ভিন্ন কন্ট্রোল ফ্লো সম্পর্কে বলুন। সংক্ষেপে, কোড এর বার্ডস আই ভিউ। কোড সহজবোধ্য উপস্থাপন করার জন্য সার্বিক রূপরেখা তৈরির বিশেষ ধরনের ল্যাংগুয়েজ [UML](http://wikipedia.org/wiki/Unified_Modeling_Language) রয়েছে। -Describe the architecture -: Provide a high-level overview of components, how they interact, what's the control flow in various situations... In short -- the bird's eye view of the code. There's a special language [UML](http://wikipedia.org/wiki/Unified_Modeling_Language) to build high-level architecture diagrams explaining the code. Definitely worth studying. +ফাংশন এর প্যারামিটার এবং ব্যাবহার লিপিবদ্ধ করুনঃ ফাংশন এর প্যারামিটার, ব্যাবহার, রিটার্ন ভ্যালু লিপিবদ্ধ করার জন্য বিশেষ ধরনের ল্যাংগুয়েজ [JSDoc](http://en.wikipedia.org/wiki/JSDoc) রয়েছে। -Document function parameters and usage -: There's a special syntax [JSDoc](http://en.wikipedia.org/wiki/JSDoc) to document a function: usage, parameters, returned value. +উদাহরণস্বরূপঃ -For instance: ```js /** * Returns x raised to the n-th power. @@ -139,42 +137,44 @@ function pow(x, n) { } ``` -Such comments allow us to understand the purpose of the function and use it the right way without looking in its code. +এই ধরনের কমেন্ট এর মাধ্যমে আমরা কোড না দেখেই ফাংশনটির কাজ এবং ব্যবহার বুঝতে পারি। -By the way, many editors like [WebStorm](https://www.jetbrains.com/webstorm/) can understand them as well and use them to provide autocomplete and some automatic code-checking. +প্রসঙ্গত উল্লেখ্য, অনেক এডিটর যেমন [WebStorm](https://www.jetbrains.com/webstorm/) এই ধরনের ল্যাংগুয়েজ বুঝতে পারে এবং অটোকমপ্লিট ও স্বয়ংক্রিয় কোড-পরীক্ষায় তা ব্যবহার করে থাকে। +<<<<<<< HEAD +এছাড়াও, কমেন্ট থেকে এইচটিএমএল-ডকুমেন্টেশন তৈরির জন্য [JSDoc 3](https://github.com/jsdoc3/jsdoc) এর মত টুল রয়েছে। JSDoc সম্পর্কে আরো জানতে দেখতে পারেন। +======= Also, there are tools like [JSDoc 3](https://github.com/jsdoc/jsdoc) that can generate HTML-documentation from the comments. You can read more information about JSDoc at . +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Why is the task solved this way? -: What's written is important. But what's *not* written may be even more important to understand what's going on. Why is the task solved exactly this way? The code gives no answer. +কাজটি কেনো এভাবে সমাধান করা হয়েছে? : যা লিখিত থাকে তা গুরুত্বপূর্ণ। তবে যা *অলিখিত* সেটা কি ঘটছে তা বোঝার জন্য অধিক গুরুত্বপূর্ণ হতে পারে। এই কাজটি কেনো ঠিক এইভাবেই সমাধান করা হয়েছে? এক্ষেত্রে কোড কোন উত্তর দেয় না। - If there are many ways to solve the task, why this one? Especially when it's not the most obvious one. + যদি কাজটি সমাধানের অনেকগুলো উপায় থাকে, সেক্ষেত্রে কেনো এইটি? বিশেষভাবে যখন এটি আপাতদৃষ্টিতে সবচেয়ে সুস্পষ্ট সমাধান নয় - Without such comments the following situation is possible: - 1. You (or your colleague) open the code written some time ago, and see that it's "suboptimal". - 2. You think: "How stupid I was then, and how much smarter I'm now", and rewrite using the "more obvious and correct" variant. - 3. ...The urge to rewrite was good. But in the process you see that the "more obvious" solution is actually lacking. You even dimly remember why, because you already tried it long ago. You revert to the correct variant, but the time was wasted. + এইধরনের কমেন্ট ছাড়া নিম্নলিখিত পরস্থিতি হতে পারেঃ + ১। আপনি অথবা আপনার সহকর্মীরা কিছুক্ষণ পূর্বে লিখিত কোডটি দেখলেন এবং ভাবলেন কোডটি সাব-অপটিমাল + ২। আপনি ভাবলেনঃ " আমি কতটা বোকাটা ছিলাম,আর এখন কতটা বুদ্ধিমান ", এবং "আরো সুস্পষ্ট এবং সঠিক" বিকল্প ব্যবহার করে পুনরায় কোডটি লিখলেন + ৩। ... কোড পুনরায় লেখার তাগিদ থাকা ভালো। কিন্তু কাজকরার প্রক্রিয়াআপনি দেখলেন "অধিক সুস্পষ্ট" সমাধানটি তে আসলে ঘাটতি রয়েছে। এমনকি আপনি খুব অস্পষ্টভাবে মনে করতে পারবেন কেনো এমন হচ্ছে, কারণ আপনি অনেক সময় আগে এই চেষ্টা করেছেন। আপনি আবার সঠিক বিকল্পে ফিরে আসবেন কিন্তু এর মাঝে কিছু সময় অপচয় হলো। - Comments that explain the solution are very important. They help to continue development the right way. + সমাধান কে ব্যখ্যাকারী কমেন্ট খুব গুরুত্বপূর্ণ। এই ধরনের কমেন্ট সঠিক প্রক্রিয়ায় ডেভেলপমেন্ট করতে সাহাজ্য করে। -Any subtle features of the code? Where they are used? -: If the code has anything subtle and counter-intuitive, it's definitely worth commenting. +কোড এ কোন সূক্ষ্ম বৈশিষ্ট রয়েছে? কেনো এই ধরনের বৈশিষ্ট ব্যবহার করা হয়েছে?: যদি কোড এ কোন সূক্ষ্ম অথবা সহজাত নয় এরকম কিছু থাকে তা অবশ্যই মন্তব্যে অন্তর্ভূক্ত করা উচিত। -## Summary +## সারসংক্ষেপ -An important sign of a good developer is comments: their presence and even their absence. +কমেন্ট এর উপস্থিতি/অনুপস্থিতি একজন ভালো ডেভেলপার এর বৈশিষ্ট। -Good comments allow us to maintain the code well, come back to it after a delay and use it more effectively. +ভালো কমেন্ট আমাদের সঠিকভাবে কোড রক্ষণাবেক্ষণ এবং কিছু সময় এর ব্যবধানে কোডটিকে কার্যকরভাবে ব্যবহার করতে সাহাজ্য করে। -**Comment this:** +**কমেন্ট করুনঃ** -- Overall architecture, high-level view. -- Function usage. -- Important solutions, especially when not immediately obvious. +- সামগ্রিক গঠনকৌশল, বাহ্যিক কাঠামো। +- ফাংশনের ব্যবহার। +- গুরুত্বপূর্ণ সমাধান, বিশেষভাবে যখন তা সুস্পষ্টভাবে প্রতীয়মান নয়। -**Avoid comments:** +**কমেন্ট পরিত্যাগ করুনঃ** -- That tell "how code works" and "what it does". -- Put them in only if it's impossible to make the code so simple and self-descriptive that it doesn't require them. +- যে কমেন্ট "কোড কিভাবে কাজ করে" এবং "কি কাজ করে" সেটা উপস্থাপন করে। +- সহজ এবং স্ব-ব্যখ্যায়িত কোড, যা তে কমেন্ট প্রয়োজন হয় না, তা যদি অসম্ভব হয় কেবলমাত্র সেক্ষেত্রে কমেন্ট করুন। -Comments are also used for auto-documenting tools like JSDoc3: they read them and generate HTML-docs (or docs in another format). +অধিকন্ত JSDoc3 এর মত স্বয়ংক্রিয়-লিপিবদ্ধ করার টুল () কাজে কমেন্ট ব্যবহার করা হয়ে থাকে। এরা কমেন্ট থেকে এইচটিএমএল ডকুমেন্ট তৈরি করে (অথবা অন্য কোন ফরম্যাট এর ডকুমেন্ট) diff --git a/1-js/03-code-quality/06-polyfills/article.md b/1-js/03-code-quality/06-polyfills/article.md index 5ca123908..4e2acabfa 100644 --- a/1-js/03-code-quality/06-polyfills/article.md +++ b/1-js/03-code-quality/06-polyfills/article.md @@ -1,10 +1,63 @@ +<<<<<<< HEAD +# পলিফিল (Polyfills) + +জাভাস্ক্রিপ্ট ভাষাটি ধীরে ধীরে উন্নত হচ্ছে। নিয়মিত নতুন নতুন প্রস্তাবনা আসছে, সেগুলো বিশ্লেষণ করা হচ্ছে এবং, যদি যোগ্য বলে বিবেচিত হয় তাহলে এই তালিকাতে নিবন্ধিত হচ্ছে, এবং তারপর [স্পেসিফিকেশন](http://www.ecma-international.org/publications/standards/Ecma-262.htm) এ উন্নীত হচ্ছে। +======= # Polyfills and transpilers The JavaScript language steadily evolves. New proposals to the language appear regularly, they are analyzed and, if considered worthy, are appended to the list at and then progress to the [specification](https://www.ecma-international.org/publications-and-standards/standards/ecma-262/). +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 + +জাভাস্ক্রিপ্টের পেছনে যে দলটি কাজ করছে তারা তাদের মত বিবেচনা করছে কোনটিকে আগে বাস্তবায়ন করা দরকার। তারা হয়তো সিদ্ধান্ত নিতে পারে, যেগুলো খসড়া তালিকাভুক্ত সেগুলো আগে করার এবং যেগুলো ইতিমধ্যে স্পেসিফিকেশনে আছে সেগুলো পরে করার, কারণ সেগুলো কম আকর্ষণীয় বা করা কঠিন। + +<<<<<<< HEAD +তাই প্রায়শ ইঞ্জিনগুলো স্ট্যান্ডার্ড এর শুধু আংশিক বাস্তবায়ন করে। + +ভাষার কোন কোন বৈশিষ্ট্য বর্তমানে সমর্থিত সেটি জানার একটি ভাল পেইজ হল এটি (এটি অনেক বড়, আমাদের এখনও অনেককিছুই জানতে হবে)। + +## ব্যাবেল (Babel) + +যখন আমরা ভাষার আধুনিক ফিচারগুলো ব্যবহার করি, কিছু ইঞ্জিন হয়তো এধরণের কোড সমর্থন করবে না। যেমনটা কিচ্ছুক্ষণ আগে বলেছি, সব ফিচার সব যায়গায় সমর্থিত নয়। + +এখানে ব্যাবেল আমাদের সাহায্য করতে পারে। + +[ব্যাবেল](https://babeljs.io) একটি [ট্রান্সপাইলার](https://en.wikipedia.org/wiki/Source-to-source_compiler)। এটি আধুনিক জাভাস্ক্রিপ্ট কোডকে পুরাতন স্ট্যান্ডার্ড এ পুনরায় লিখে দেয়। + +আসলে, ব্যাবেলের দুটি অংশ আছেঃ + +1. প্রথমত, ট্রান্সপাইলার প্রোগ্রামটি, যেটি কোডকে পুনরায় লিখে। ডেভেলপার তার নিজের কম্পিউটারে এটি রান করে। এটি কোডকে পুরাতন স্ট্যান্ডার্ড এ পরিবর্তন করে। এবং তারপর কোডটি ইউজারদের জন্য ওয়েবসাইটে প্রেরণ করা হয়। আধুনিক প্রজেক্ট বিল্ড সিস্টেম যেমন [ওয়েবপ্যাক](http://webpack.github.io/) প্রতিবার কোড লেখার সাথে সাথে ট্রান্সপাইলারকে স্বয়ংক্রিয়ভাবে রান করে, তাই ডেভেলপমেন্টের সময় এটিকে ইন্টিগ্রেট করা সহজ হয়। + +2. দ্বিতীয়ত, পলিফিল। -Teams behind JavaScript engines have their own ideas about what to implement first. They may decide to implement proposals that are in draft and postpone things that are already in the spec, because they are less interesting or just harder to do. + ভাষার নতুন ফিচারে হয়তো নতুন কোন বিল্ড-ইন ফাংশন এবং সিনট্যাক্স কন্সট্রাক্ট থাকতে পারে। ট্রান্সপাইলার কোড পুনরায় লিখার সময়, সিনট্যাক্স কন্সট্রাক্টকে পুরাতন সিনট্যাক্সে পরিবর্তন করে। কিন্তু নতুন বিল্ড-ইন ফাংশনের ক্ষেত্রে, আমাদের সেগুলো ইমপ্লিমেন্ট করতে হবে। জাভাস্ক্রিপ্ট অত্যন্ত ডাইনামিক ভাষা, যেকোনো ফাংশনকে আধুনিক স্ট্যান্ডার্ডের মত আচরণ করানোর জন্য স্ক্রিপ্ট তাদের এড/মডিফাই করতে পারে। + যে স্ক্রিপ্টটি নতুন ফাংশনকে আপডেট/এড করে থাকে তাকে "পলিফিল" বলা হয়। কারণ এটি "fills in" বা দূরত্বটি দূর করে এবং পুরাতন স্ট্যান্ডার্ড এ নেই এমন ইমপ্লিমেন্টেশন প্রদান করে। + + দুটি মজার পলিফিল হলঃ + - [core js](https://github.com/zloirock/core-js) অনেককিছুই সমর্থন করে, শুধু যেটা প্রয়োজন সেটা ব্যবহার করা যায়। that supports a lot, allows to include only needed features. + - [polyfill.io](http://polyfill.io) ফিচার এবং ইউজারের ব্রাউজারের উপর ভিতটি করে পলিফিলের স্ক্রিপ্ট প্রদান করার একটি সার্ভিস। + +তাই, যদি আমরা ভাষার আধুনিক ফিচার ব্যবহার করতে চাই, তাহলে আমাদের একটি ট্রান্সপাইলার এবং পলিফিল ব্যবহার করতে হবে। + +## এই টিউটেরিয়ালের উদাহরণসমূহ + + +````online +অধিকাংশ উদাহরণ যেখানে আছে সেখানেই রান করা যাবে, যেমনঃ + +```js run +alert('Press the "Play" button in the upper-right corner to run'); +``` + +যেসব উদাহরণে আধুনিক জাভাস্ক্রিপ্ট ব্যবহার করা হয়েছে সেগুলো শুধু আপনার ব্রাউজার সমর্থন করলেই রান করা যাবে। +```` + +```offline +এমনি যদি অফলাইন ভার্সনটি ব্যবহার করেন, পিডিএফ এর উদাহরণগুলো রান করা যাবে না। EPUB এ কিছু উদাহরণ রান করা যাবে। +``` +গুগল ক্রোম সাধারণত ভাষার ফিচারগুলোর সাথে সবচাইতে বেশী আপ-টু-ডেট থাকে, এটি ব্লিডিং-এজ ডেমোগুলো ট্রান্সপাইলার ছাড়াই রান করার জন্য খুবই ভালো, কিন্তু যেকোনো আধুনিক ব্রাউজারই ভালভাবেই কাজ করবে। +======= So it's quite common for an engine to implement only part of the standard. A good page to see the current state of support for language features is (it's big, we have a lot to study yet). @@ -87,3 +140,4 @@ Good resources that show the current state of support for various features: P.S. Google Chrome is usually the most up-to-date with language features, try it if a tutorial demo fails. Most tutorial demos work with any modern browser though. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 diff --git a/1-js/04-object-basics/01-object/2-hello-object/task.md b/1-js/04-object-basics/01-object/2-hello-object/task.md index 2841a058f..19c39a9ca 100644 --- a/1-js/04-object-basics/01-object/2-hello-object/task.md +++ b/1-js/04-object-basics/01-object/2-hello-object/task.md @@ -1,14 +1,13 @@ -importance: 5 +গুরুত্বঃ ৫ --- -# Hello, object +# হ্যালো, অবজেক্ট -Write the code, one line for each action: - -1. Create an empty object `user`. -2. Add the property `name` with the value `John`. -3. Add the property `surname` with the value `Smith`. -4. Change the value of the `name` to `Pete`. -5. Remove the property `name` from the object. +নিন্মে বর্ণিত প্রতিটি একশনের জন্য এক একটি লাইনে কোড লিখুনঃ +1. `user` নামে একটি খালি অবজেক্ট তৈরি করুন। +2. `name` নামে একটি প্রোপার্টি `John` ভ্যালু সহ সংযুক্ত করুন। +3. `surname` নামে একটি প্রোপার্টি `Smith` ভ্যালু সহ সংযুক্ত করুন। +4. `name` নামের প্রোপার্টির ভ্যালু পরিবর্তন করে `Pete` রাখুন। +5. `name` নামের প্রোপার্টিটি অবজেক্ট থেকে মুছে দিন। diff --git a/1-js/04-object-basics/01-object/3-is-empty/_js.view/solution.js b/1-js/04-object-basics/01-object/3-is-empty/_js.view/solution.js index db3283e49..594039258 100644 --- a/1-js/04-object-basics/01-object/3-is-empty/_js.view/solution.js +++ b/1-js/04-object-basics/01-object/3-is-empty/_js.view/solution.js @@ -1,6 +1,6 @@ function isEmpty(obj) { for (let key in obj) { - // if the loop has started, there is a property + // যদি লুপ শুরু হয় তাহলে অবজেক্টে প্রোপার্টি আছে return false; } return true; diff --git a/1-js/04-object-basics/01-object/3-is-empty/solution.md b/1-js/04-object-basics/01-object/3-is-empty/solution.md index b876973b5..da18bfc15 100644 --- a/1-js/04-object-basics/01-object/3-is-empty/solution.md +++ b/1-js/04-object-basics/01-object/3-is-empty/solution.md @@ -1 +1 @@ -Just loop over the object and `return false` immediately if there's at least one property. +অবজেক্টের উপর লুপ চালান এবং যদি কোন প্রোপার্টি পাওয়া যায় সাথে সাথে `return false` করুন। \ No newline at end of file diff --git a/1-js/04-object-basics/01-object/3-is-empty/task.md b/1-js/04-object-basics/01-object/3-is-empty/task.md index c438d36a2..ffc22ef60 100644 --- a/1-js/04-object-basics/01-object/3-is-empty/task.md +++ b/1-js/04-object-basics/01-object/3-is-empty/task.md @@ -1,12 +1,12 @@ -importance: 5 +গুরুত্বঃ ৫ --- -# Check for emptiness +# খালি কিনা পরীক্ষা করুন -Write the function `isEmpty(obj)` which returns `true` if the object has no properties, `false` otherwise. +একটি ফাংশন `isEmpty(obj)` লিখুন যেটি `true` রিটার্ন করে যদি অবজেক্টে কোন প্রোপার্টি না থাকে, অন্যথায় `false` রিটার্ন করুন। -Should work like that: +কোডটি এভাবে কাজ করা উচিতঃ ```js let schedule = {}; @@ -17,4 +17,3 @@ schedule["8:30"] = "get up"; alert( isEmpty(schedule) ); // false ``` - diff --git a/1-js/04-object-basics/01-object/4-const-object/solution.md b/1-js/04-object-basics/01-object/4-const-object/solution.md new file mode 100644 index 000000000..fac42de60 --- /dev/null +++ b/1-js/04-object-basics/01-object/4-const-object/solution.md @@ -0,0 +1,19 @@ +অবশ্যই, কোন সমস্যা ছাড়াই কাজ করে। + +`const` শুধুমাত্র ওই ভেরিয়েবলকে পরিবর্তন থেকে রক্ষা করে। + +অন্যভাবে বললে, `user` অবজেক্টটির একটি রেফারেন্স সংরক্ষণ করে। এবং রেফারেন্স পরিবর্তন করা যাবে না। কিন্তু অবজেক্টের কন্টেন্ট পরিবর্তন করা যাবে। + +```js run +const user = { + name: "John" +}; + +*!* +// কাজ করে +user.name = "Pete"; +*/!* + +// এরর +user = 123; +``` diff --git a/1-js/04-object-basics/01-object/4-const-object/task.md b/1-js/04-object-basics/01-object/4-const-object/task.md new file mode 100644 index 000000000..ac1ddb6c1 --- /dev/null +++ b/1-js/04-object-basics/01-object/4-const-object/task.md @@ -0,0 +1,18 @@ +গুরুত্বঃ ৫ + +--- + +# ধ্রুবক / কন্সটেন্ট অবজেক্ট? + +`const` দিয়ে ডিক্লেয়ার করা অবজেক্ট কি পরিবর্তন করা সম্ভব? আপনার কি ধারণা? + +```js +const user = { + name: "John" +}; + +*!* +// এটা কাজ করে? +user.name = "Pete"; +*/!* +``` diff --git a/1-js/04-object-basics/01-object/5-sum-object/task.md b/1-js/04-object-basics/01-object/5-sum-object/task.md index 7e3e048d0..37d6c1942 100644 --- a/1-js/04-object-basics/01-object/5-sum-object/task.md +++ b/1-js/04-object-basics/01-object/5-sum-object/task.md @@ -1,10 +1,10 @@ -importance: 5 +গুরুত্বঃ ৫ --- -# Sum object properties +# অবজেক্টের প্রোপার্টিগুলো যোগ করা -We have an object storing salaries of our team: +আমাদের অবজেক্টে আমাদের টিমের সবার বেতন রাখা আছেঃ ```js let salaries = { @@ -14,6 +14,6 @@ let salaries = { } ``` -Write the code to sum all salaries and store in the variable `sum`. Should be `390` in the example above. +সব বেতনের যোগফল বের করে `sum` ভেরিয়েবলে রাখার কোড লিখুন। উপরের উদাহরণের যোগফল `390` হওয়া উচিত। -If `salaries` is empty, then the result must be `0`. \ No newline at end of file +যদি `salaries` খালি হয়, তাহলে ফলাফল `0` হতে হবে। \ No newline at end of file diff --git a/1-js/04-object-basics/01-object/8-multiply-numeric/_js.view/source.js b/1-js/04-object-basics/01-object/8-multiply-numeric/_js.view/source.js index a02b1e1cb..35a3b6f3d 100644 --- a/1-js/04-object-basics/01-object/8-multiply-numeric/_js.view/source.js +++ b/1-js/04-object-basics/01-object/8-multiply-numeric/_js.view/source.js @@ -6,12 +6,11 @@ let menu = { function multiplyNumeric(obj) { - - /* your code */ + + /* আপনার কোড এখানে লিখুন */ } multiplyNumeric(menu); alert( "menu width=" + menu.width + " height=" + menu.height + " title=" + menu.title ); - diff --git a/1-js/04-object-basics/01-object/8-multiply-numeric/task.md b/1-js/04-object-basics/01-object/8-multiply-numeric/task.md index 6878ca088..c40c71b1c 100644 --- a/1-js/04-object-basics/01-object/8-multiply-numeric/task.md +++ b/1-js/04-object-basics/01-object/8-multiply-numeric/task.md @@ -1,15 +1,21 @@ -importance: 3 +গুরুত্বঃ ৩ --- +<<<<<<< HEAD +# যেসব প্রোপার্টি ভ্যালু একটি সংখ্যা তাদের `2` দিয়ে গুন করুন + +একটি ফাংশন `multiplyNumeric(obj)` লিখুন যেটি `obj` এর সব সংখ্যাভিত্তিক/numeric প্রোপার্টিগুলো কে `2` দিয়ে গুন করে। +======= # Multiply numeric property values by 2 Create a function `multiplyNumeric(obj)` that multiplies all numeric property values of `obj` by `2`. +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d -For instance: +উদাহরণস্বরূপঃ ```js -// before the call +// কল করার আগে let menu = { width: 200, height: 300, @@ -18,7 +24,7 @@ let menu = { multiplyNumeric(menu); -// after the call +// কল করার পর menu = { width: 400, height: 600, @@ -26,8 +32,6 @@ menu = { }; ``` -Please note that `multiplyNumeric` does not need to return anything. It should modify the object in-place. - -P.S. Use `typeof` to check for a number here. - +মনে রাখবেন `multiplyNumeric` এর কিছুই রিটার্ন করার দরকার নেই। এটা শুধুই অবজেক্টকে ইন-প্লেস পরিবর্তন করবে। +পুনশ্চঃ `typeof` ব্যবহার করে নাম্বার কিনা পরীক্ষা করুন। diff --git a/1-js/04-object-basics/01-object/article.md b/1-js/04-object-basics/01-object/article.md index dc3ec1a64..9a9cc8c71 100644 --- a/1-js/04-object-basics/01-object/article.md +++ b/1-js/04-object-basics/01-object/article.md @@ -1,60 +1,72 @@ -# Objects +# অবজেক্ট -As we know from the chapter , there are eight data types in JavaScript. Seven of them are called "primitive", because their values contain only a single thing (be it a string or a number or whatever). + অধ্যায়ে আমরা জেনেছি, জাভাস্ক্রিপ্টে আটটি ডাটা টাইপ রয়েছে। তাদের মধ্যে সাতটিকে বলা হয় "প্রিমিটিভ", কারণ তাদের ভ্যালুতে শুধু একটি জিনিসই (হোক তা স্ট্রিং, নাম্বার বা অন্য যেকোনো কিছু) থেকে থাকে। -In contrast, objects are used to store keyed collections of various data and more complex entities. In JavaScript, objects penetrate almost every aspect of the language. So we must understand them first before going in-depth anywhere else. +অন্যদিকে, বিভিন্ন ধরনের ডাটার কালেকশন ও একটু জটিল ধরনের জিনিস রাখার জন্য অবজেক্ট ব্যবহৃত হয়। জাভাস্ক্রিপ্টের প্রতিটি বিষয়ে অবজেক্টের আধিক্য এবং প্রভাব বিদ্যমান। সুতরাং অন্য কিছু নিয়ে গভীরে জানার আগে আমাদের অবশ্যই অবজেক্ট সম্পর্কে জানতে হবে। +<<<<<<< HEAD +দ্বিতীয় বন্ধনী `{…}` ও তার সাথে একগুচ্ছ ঐচ্ছিক *প্রোপার্টি* এর সাহায্যে একটি অবজেক্ট তৈরি করা যায়। একটি প্রপার্টি "key: value" জোড়ায় হয়ে থাকে, যেখানে `key` একটি স্ট্রিং (একে প্রোপার্টির নামও বলা হয়), এবং `value` হতে পারে যেকোনো কিছু। +======= An object can be created with curly braces `{…}` with an optional list of *properties*. A property is a "key: value" pair, where `key` is a string (also called a "property name"), and `value` can be anything. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -We can imagine an object as a cabinet with signed files. Every piece of data is stored in its file by the key. It's easy to find a file by its name or add/remove a file. +আমরা অবজেক্টকে তুলনা করতে পারি একটি সাইন করা ফাইলের কেবিনেটের সাথে। যেখানে প্রতিটি ফাইল একটি key (ফাইলের নাম) দিয়ে সংরক্ষণ করা আছে। সুতরাং ফাইলের নাম দিয়ে ফাইল খুঁজে বের করা বা নতুন ফাইল যুক্ত করা অথবা মুছে ফেলা খুবই সহজ। ![](object.svg) -An empty object ("empty cabinet") can be created using one of two syntaxes: +একটি খালি অবজেক্ট ("খালি কেবিনেট"), এ দুটি সিনট্যাক্সের যেকোনো একটি দিয়ে তৈরি করা যায়ঃ ```js -let user = new Object(); // "object constructor" syntax -let user = {}; // "object literal" syntax +let user = new Object(); // "অবজেক্ট কন্সট্রাক্টর" সিনট্যাক্স +let user = {}; // "অবজেক্ট লিটারেল" সিনট্যাক্স ``` ![](object-user-empty.svg) +<<<<<<< HEAD +অবজেক্ট তৈরিতে সচরাচর দ্বিতীয় বন্ধনী `{...}` ব্যবহৃত হয়। এধরণের ডিক্লারেশনকে বলে "অবজেক্ট লিটারেল"। +======= Usually, the curly braces `{...}` are used. That declaration is called an *object literal*. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -## Literals and properties +## লিটারেল এবং প্রোপার্টি -We can immediately put some properties into `{...}` as "key: value" pairs: +আমরা একই সঙ্গে কিছু প্রোপার্টি "key: value" জোড়ায় `{...}` এর ভেতর দিয়ে দিতে পারিঃ ```js -let user = { // an object - name: "John", // by key "name" store value "John" - age: 30 // by key "age" store value 30 +let user = { // একটি অবজেক্ট + name: "John", // "name" key তে "John" ভ্যালুটি সংরক্ষণ করা হয়েছে + age: 30 // "age" key তে 30 ভ্যালুটি সংরক্ষণ করা হয়েছে }; ``` -A property has a key (also known as "name" or "identifier") before the colon `":"` and a value to the right of it. +কোলনের `":"` আগে প্রোপার্টির key ("নাম" অথবা "আইডেন্টিফায়ার" ও বলা হয়) থাকে এবং এর ডানে একটি ভ্যালু থাকে। -In the `user` object, there are two properties: +`user` অবজেক্টে দুটো প্রপার্টি আছেঃ -1. The first property has the name `"name"` and the value `"John"`. -2. The second one has the name `"age"` and the value `30`. +1. প্রথম প্রোপার্টির কী হল `"name"` এবং ভ্যালু `"John"`। +2. দ্বিতীয় প্রোপার্টির নাম হল `"age"` এবং ভ্যালু `30`। -The resulting `user` object can be imagined as a cabinet with two signed files labeled "name" and "age". +`user` কে এভাবে কল্পনা করা যায়, একটি ফাইলের কেবিনেট যেখানে "name" এবং "age" লেবেলের দুটি সাইন করা ফাইল আছে। ![user object](object-user.svg) +<<<<<<< HEAD +আমরা যেকোনো সময় ফাইল যুক্ত করা, মুছে দেয়া বা পড়তে পারি। +======= We can add, remove and read files from it at any time. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Property values are accessible using the dot notation: +প্রোপার্টির ভ্যালুগুলো ডট নোটেশন দিয়ে এক্সেস করা যায়ঃ ```js -// get property values of the object: +// অবজেক্ট থেকে প্রোপার্টি ভ্যালু গুলো নেয়া হচ্ছেঃ alert( user.name ); // John alert( user.age ); // 30 ``` -The value can be of any type. Let's add a boolean one: +ভ্যালুগুলো যেকোনো টাইপের হতে পারে। একটি বুলিয়ান প্রোপার্টি যুক্ত করা যাকঃ ```js user.isAdmin = true; @@ -62,7 +74,11 @@ user.isAdmin = true; ![user object 2](object-user-isadmin.svg) +<<<<<<< HEAD +কোন একটা প্রোপার্টিকে মুছে দিতে আমরা `delete` অপারেটরটি ব্যবহার করতে পারিঃ +======= To remove a property, we can use the `delete` operator: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js delete user.age; @@ -70,42 +86,72 @@ delete user.age; ![user object 3](object-user-delete.svg) -We can also use multiword property names, but then they must be quoted: +আমরা প্রোপার্টির নাম হিসেবে একাধিক শব্দও ব্যবহার করতে পারি, তবে সেক্ষেত্রে শব্দগুলো উদ্ধৃতি চিহ্নের ভেতর রাখতে হবেঃ ```js let user = { name: "John", age: 30, - "likes birds": true // multiword property name must be quoted + "likes birds": true // একাধিক শব্দের প্রোপার্টির নাম অবশ্যই উদ্ধৃতি চিহ্নের ভেতর রাখতে হবে }; ``` ![](object-user-props.svg) -The last property in the list may end with a comma: +শেষ প্রোপার্টিটি একটি কমা দিয়ে শেষ হতে পারেঃ ```js let user = { name: "John", age: 30*!*,*/!* } ``` -That is called a "trailing" or "hanging" comma. Makes it easier to add/remove/move around properties, because all lines become alike. +একে বলা হয় "ট্রেইলিং" বা "হ্যাঙ্গিং" কমা। এটি এড/রিমুভ এবং পরিবর্তন করা সহজ করে, কারণ সবগুলো লাইন দেখতে একই রকম হয়। +<<<<<<< HEAD +<<<<<<< HEAD +## তৃতীয় বন্ধনী +======= +````smart header="Object with const can be changed" +Please note: an object declared as `const` *can* be modified. + +For instance: + +```js run +const user = { + name: "John" +}; + +*!* +user.name = "Pete"; // (*) +*/!* + +alert(user.name); // Pete +``` + +It might seem that the line `(*)` would cause an error, but no. The `const` fixes the value of `user`, but not its contents. + +The `const` would give an error only if we try to set `user=...` as a whole. + +There's another way to make constant object properties, we'll cover it later in the chapter . +```` + +======= +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ## Square brackets +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d -For multiword properties, the dot access doesn't work: +একাধিক শব্দের প্রোপার্টি গুলোকে ডট দিয়ে এক্সেস করা যায় নাঃ ```js run -// this would give a syntax error +// এটি একটি সিনট্যাক্স এরর দেখাবে user.likes birds = true ``` -JavaScript doesn't understand that. It thinks that we address `user.likes`, and then gives a syntax error when comes across unexpected `birds`. +জাভাস্ক্রিপ্ট এটি বুঝে না। এটি মনে করে আমরা `user.likes` কে এড্রেস করেছি, এবং সিনট্যাক্স এরর দেয় যখন অসঙ্গত `birds` দেখতে পায়। -The dot requires the key to be a valid variable identifier. That implies: contains no spaces, doesn't start with a digit and doesn't include special characters (`$` and `_` are allowed). - -There's an alternative "square bracket notation" that works with any string: +এটার কারণ, ডট নোটেশন ব্যবহার করার জন্য key - কে একটি ভেরিয়েবল আইডেন্টিফায়ার হতে হবে। যার জন্য এতে কোন স্পেস থাকতে পারবে না, কোন সংখ্যা দিয়ে শুরু হতে পারবে না এবং স্পেশাল ক্যারেক্টার থাকবে না (`$` এবং `_` দেয়া যাবে) +তৃতীয় বন্ধনী ব্যবহার করে আরেকটি পদ্ধতি রয়েছে, যা যেকোনো স্ট্রিং এ কাজ করেঃ ```js run let user = {}; @@ -120,9 +166,9 @@ alert(user["likes birds"]); // true delete user["likes birds"]; ``` -Now everything is fine. Please note that the string inside the brackets is properly quoted (any type of quotes will do). +এখন সবকিছু কাজ করে। বন্ধনীর ভেতর স্ট্রিংটি ঠিকমত উদ্ধৃতি চিহ্নের ভেতর রয়েছে (যেকোনো উদ্ধৃতি চিহ্ন কাজ করবে)। -Square brackets also provide a way to obtain the property name as the result of any expression -- as opposed to a literal string -- like from a variable as follows: +লিটারেল স্ট্রিং এর বিপরীতে তৃতীয় বন্ধনী ব্যবহারের পদ্ধতিটি এক্সপ্রেশনের রেজাল্টকে ব্যবহার করে প্রোপার্টির নাম বের করার সুযোগ দেয় -- যেমনটা নিচের ভেরিয়েবল থেকেঃ ```js let key = "likes birds"; @@ -131,9 +177,9 @@ let key = "likes birds"; user[key] = true; ``` -Here, the variable `key` may be calculated at run-time or depend on the user input. And then we use it to access the property. That gives us a great deal of flexibility. +এখানে, `key` ভেরিয়েবলটি রান-টাইমে ক্যালকুলেট করে বা ইউজারের ইনপুট এর উপর ভিত্তি করে তৈরি হতে পারে। এবং পরে আমরা এটাকে প্রোপার্টি এক্সেস করার জন্য ব্যবহার করতে পারি। এটি প্রোগ্রাম করার সময় খুব ভাল স্বাধীনতা দেয়। -For instance: +যেমনঃ ```js run let user = { @@ -143,11 +189,11 @@ let user = { let key = prompt("What do you want to know about the user?", "name"); -// access by variable +// ভেরিয়েবলের মাধ্যমে এক্সেস করা হচ্ছে alert( user[key] ); // John (if enter "name") ``` -The dot notation cannot be used in a similar way: +ডট নোটেশনকে একই ভাবে ব্যবহার করা যায় নাঃ ```js run let user = { @@ -156,43 +202,47 @@ let user = { }; let key = "name"; -alert( user.key ) // undefined +alert( user.key ) // আনডিফাইন্ড ``` -### Computed properties +### কম্পুটেড প্রোপার্টি +<<<<<<< HEAD +আমরা অবজেক্ট লিটারেলে তৃতীয় বন্ধনী ব্যবহার করতে পারি। একে বলে *কম্পিউটেড প্রোপার্টি*। +======= We can use square brackets in an object literal, when creating an object. That's called *computed properties*. +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d -For instance: +উদাহরণস্বরূপঃ ```js run let fruit = prompt("Which fruit to buy?", "apple"); let bag = { *!* - [fruit]: 5, // the name of the property is taken from the variable fruit + [fruit]: 5, // প্রোপার্টির নাম fruit ভেরিয়েবল থেকে নেয়া হয়েছে */!* }; alert( bag.apple ); // 5 if fruit="apple" ``` -The meaning of a computed property is simple: `[fruit]` means that the property name should be taken from `fruit`. +কম্পিউটেড প্রোপার্টির মানে খুবই সহজঃ `[fruit]` মানে প্রোপার্টির নামটি `fruit` ভেরিয়েবল থেকে নেয়া হবে। -So, if a visitor enters `"apple"`, `bag` will become `{apple: 5}`. +সুতরাং, যদি ভিজিটর `"apple"` লিখে, `bag` হয়ে যাবে `{apple: 5}`। -Essentially, that works the same as: +মূলত, নিচের কোডটিও একই কাজ করেঃ ```js run let fruit = prompt("Which fruit to buy?", "apple"); let bag = {}; -// take property name from the fruit variable +// প্রোপার্টির নাম fruit ভেরিয়েবল থেকে নাও bag[fruit] = 5; ``` -...But looks nicer. +...কিন্তু আগেরটি দেখতে সুন্দর। -We can use more complex expressions inside square brackets: +আমরা তৃতীয় বন্ধনীর ভেতরে আরও জটিল এক্সপ্রেশন ব্যবহার করতে পারিঃ ```js let fruit = 'apple'; @@ -201,22 +251,67 @@ let bag = { }; ``` +<<<<<<< HEAD +তৃতীয় বন্ধনী ডট নোটেশনের চাইতে অনেক বেশী শক্তিশালী। কিন্তু তাদের লেখাটা একটু কষ্টকর। +======= Square brackets are much more powerful than dot notation. They allow any property names and variables. But they are also more cumbersome to write. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -So most of the time, when property names are known and simple, the dot is used. And if we need something more complex, then we switch to square brackets. +সুতরাং অধিকাংশ সময়, যখন প্রোপার্টির নাম সহজ এবং আগে থেকেই জানা, ডট নোটেশন ব্যবহৃত হয়। এবং যদি আমাদের জটিল কিছু করতে হয়, তখন আমরা তৃতীয় বন্ধনী ব্যবহার করি। -## Property value shorthand +<<<<<<< HEAD +======= In real code, we often use existing variables as values for property names. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -For instance: +````smart header="সংরক্ষিত শব্দগুলো প্রোপার্টির নাম হিসেবে ব্যবহার করা যায়" +ভেরিয়েবল এর নাম ভাষা কর্তৃক সংরক্ষিত শব্দ, যেমন "for", "let", "return" ইত্যাদি হতে পারবে না। + +কিন্তু অবজেক্টের প্রোপার্টির জন্য তেমন কোন বাধ্যবাধকতা নেই। যেকোনো নাম ব্যবহার করা যায়ঃ + +```js run +let obj = { + for: 1, + let: 2, + return: 3 +}; + +alert( obj.for + obj.let + obj.return ); // 6 +``` + +মূলত, যেকোনো নাম ব্যবহার করা যায়, কিন্তু একটি বিশেষ নাম আছেঃ `"__proto__"` যেটি ঐতিহাসিক কারণে বিশেষভাবে ব্যবহৃত হয়। যেমন, আমরা এটি অবজেক্ট নয় এমন কোন ভ্যালুতে ব্যবহার করে পারি নাঃ + +```js run +let obj = {}; +obj.__proto__ = 5; +alert(obj.__proto__); // [object Object], didn't work as intended +``` + +যেমনটি আমরা কোডে দেখতে পাচ্ছি, প্রিমিটিভ `5` এর সাথে সংযুক্তিটি উপেক্ষা করা হয়েছে। + +যদি আমরা ইচ্ছামত কী ভ্যালু একটি অবজেক্টে রাখতে যাই, এবং ভিজিটরদের কী প্রদান করতে দিতে দেই, তাহলে এটির কারণে অনেক বাগ এবং এমনকি ভলনারেবিলিটির উৎস তৈরি হতে পারে। + +এরকম ক্ষেত্রে ভিজিটর `__proto__` কে কী হিসেবে দিয়ে দিতে পারে, এবং এসাইনমেন্ট এর লজিকটা নষ্ট হয়ে যেতে পারে (যেমনটা উপরে দেখানো হয়েছে)। + +অবজেক্টকে `__proto__` কে সাধারণ প্রোপার্টি হিসেবে গণ্য করতে বাধ্য করা যায়, যা আমরা পরে দেখব, কিন্তু তার আগে আমাদের অবজেক্ট সম্পর্কে আরও জানতে হবে। + +[Map](info:map-set) নামে আরও একটি ডাটা স্ট্রাকচার রয়েছে, যেটি সম্পর্কে আমরা অধ্যায়ে জানব, যা যেকোনো কী গ্রহণ করে। +```` + + +## প্রোপার্টি ভ্যালু সর্টহ্যান্ড + +প্রায়সময় আমরা বর্তমানে বিদ্যমান ভেরিয়েবলগুলোকে প্রোপার্টি নামের ভ্যালু হিসেবে ব্যবহার করি। + +যেমনঃ ```js run function makeUser(name, age) { return { name: name, age: age, - // ...other properties + // ...অন্যান্য প্রোপার্টি }; } @@ -224,9 +319,9 @@ let user = makeUser("John", 30); alert(user.name); // John ``` -In the example above, properties have the same names as variables. The use-case of making a property from a variable is so common, that there's a special *property value shorthand* to make it shorter. +উপরের উদাহরণে, প্রোপার্টি এবং ভেরিয়েবলের নাম একই। এই ব্যবহারটি এত বেশী হয়ে থাকে যে একটি বিশেষ *প্রোপার্টি ভ্যালু সর্টহ্যান্ড* আছে এটিকে ছোট করে লিখার জন্য। -Instead of `name:name` we can just write `name`, like this: +`name:name` এর পরিবর্তে আমরা সরাসরি `name` লিখতে পারি, এরকম ভাবেঃ ```js function makeUser(name, age) { @@ -240,7 +335,7 @@ function makeUser(name, age) { } ``` -We can use both normal properties and shorthands in the same object: +আমরা একই অবজেক্টে একই সাথে সাধারণ প্রোপার্টি এবং সর্টহ্যান্ড ব্যবহার করতে পারিঃ ```js let user = { @@ -295,79 +390,115 @@ As we see from the code, the assignment to a primitive `5` is ignored. We'll cover the special nature of `__proto__` in [subsequent chapters](info:prototype-inheritance), and suggest the [ways to fix](info:prototype-methods) such behavior. -## Property existence test, "in" operator +## প্রোপার্টি আছে কিনা পরীক্ষা করা। "in" অপারেটর। +<<<<<<< HEAD +অবজেক্টের একটি উল্লেখযোগ্য ফিচার হল এর যেকোনো প্রোপার্টিকে এক্সেস করা যায়। যদি প্রোপার্টি না থাকে তাহলে কোন এরর হয় না। বরং অবজেক্টে নেই এমন প্রোপার্টিকে এক্সেস করলে `undefined` রিটার্ন করে। প্রোপার্টি আছে কি নেই পরীক্ষার জন্য সাধারনত - আনডিফাইন্ড এর সাথে তুলনা করা হয়ে থাকেঃ +======= A notable feature of objects in JavaScript, compared to many other languages, is that it's possible to access any property. There will be no error if the property doesn't exist! Reading a non-existing property just returns `undefined`. So we can easily test whether the property exists: +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d ```js run let user = {}; -alert( user.noSuchProperty === undefined ); // true means "no such property" +alert( user.noSuchProperty === undefined ); // true মানে "এরকম কোন প্রোপার্টি নেই" ``` +<<<<<<< HEAD +একটি বিশেষ অপারেটর `"in"` ও রয়েছে প্রোপার্টি আছে কিনা পরীক্ষা করার জন্য। +======= There's also a special operator `"in"` for that. +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d -The syntax is: +সিনট্যাক্সঃ ```js "key" in object ``` -For instance: +যেমনঃ ```js run let user = { name: "John", age: 30 }; -alert( "age" in user ); // true, user.age exists -alert( "blabla" in user ); // false, user.blabla doesn't exist +alert( "age" in user ); // true, user.age আছে +alert( "blabla" in user ); // false, user.blabla নেই ``` -Please note that on the left side of `in` there must be a *property name*. That's usually a quoted string. +মনে রাখবেন `in` অপারেটরের বাম পাশে অবশ্যই একটি  "প্রোপার্টির নাম" থাকতে হবে। সাধারণত এটিকে উদ্ধৃতি চিহ্নের ভেতর রাখা হয়। +<<<<<<< HEAD +<<<<<<< HEAD +উদ্ধৃতি চিহ্ন না দিলে এটিকে একটি ভেরিয়েবল হিসেবে ধরা হবে, এবং ওই ভেরিয়েবলের ভ্যালুর সাথে তুলনা করা হবে। যেমনঃ +======= +If we omit quotes, that means a variable, it should contain the actual name to be tested. For instance: +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d +======= If we omit quotes, that means a variable should contain the actual name to be tested. For instance: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run let user = { age: 30 }; let key = "age"; +<<<<<<< HEAD +alert( *!*key*/!* in user ); // true, key থেকে নামটি নিয়ে, ওই নামে প্রোপার্টি আছে কিনা দেখা হচ্ছে +``` + +````smart header="Using \"in\" for properties that store `undefined`" +সাধারণত, `"=== undefined"` এভাবে প্রোপার্টি আছে কিনা পরীক্ষা করা ঠিকঠাক কাজ করে, কিছু বিশেষ ক্ষেত্রে এটি ভুল ফলাফল দেয়, কিন্তু `"in"` অপারেটর ঠিকমত কাজ করে। +======= alert( *!*key*/!* in user ); // true, property "age" exists ``` Why does the `in` operator exist? Isn't it enough to compare against `undefined`? Well, most of the time the comparison with `undefined` works fine. But there's a special case when it fails, but `"in"` works correctly. +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d -It's when an object property exists, but stores `undefined`: +এটি ঘটে যখন অবজেক্টের প্রোপার্টি আছে কিন্তু তা অলরেডি `undefined` হয়ে আছেঃ ```js run let obj = { test: undefined }; -alert( obj.test ); // it's undefined, so - no such property? +alert( obj.test ); // এটি undefined, তাই - প্রোপার্টি নেই? -alert( "test" in obj ); // true, the property does exist! +alert( "test" in obj ); // true, প্রোপার্টি আছে! ``` +<<<<<<< HEAD + +উপরের কোডে, `obj.test` এই প্রোপার্টি কিন্তু টেকনিক্যালি অবজেক্টে আছে। সুতরাং `in` অপারেটর ঠিকভাবে কাজ করছে। + +এধরেন পরিস্থিতি কিছুটা বিরল, কারণ `undefined` আসলে এসাইন করা হয় না। আমরা বেশীরভাগ সময় "অজানা" বা "খালি" বুঝাতে `null` ব্যবহার করি। তাই `in` অপারেটরের ব্যবহার কদাচিৎ দেখা যায়। +```` +======= In the code above, the property `obj.test` technically exists. So the `in` operator works right. Situations like this happen very rarely, because `undefined` should not be explicitly assigned. We mostly use `null` for "unknown" or "empty" values. So the `in` operator is an exotic guest in the code. +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d +<<<<<<< HEAD +## "for..in" লুপ +======= ## The "for..in" loop [#forin] +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -To walk over all keys of an object, there exists a special form of the loop: `for..in`. This is a completely different thing from the `for(;;)` construct that we studied before. +অবজেক্টের সবগুলো কী এর উপর ভিজিট করার জন্য একটি বিশেষ ধরণের লুপ আছেঃ `for..in`। এটি `for(;;)` এর চাইতে পুরোপুরি আলাদা, যেটি আমরা পূর্বে দেখেছি। -The syntax: +সিনট্যাক্সঃ ```js for (key in object) { - // executes the body for each key among object properties + // অবজেক্টের প্রতিটি কী এর জন্য এই বডিটি এক্সিকিউট হবে } ``` -For instance, let's output all properties of `user`: +যেমন, `user` এর সব প্রোপার্টি বের করা যাকঃ ```js run let user = { @@ -384,17 +515,22 @@ for (let key in user) { } ``` -Note that all "for" constructs allow us to declare the looping variable inside the loop, like `let key` here. +উল্লেখ্য, সব "for" লুপ কন্সট্রাক্ট, লুপের মধ্যে লুপিং ভেরিয়েবল ঘোষণা করতে দেয়, যেমন এখানে `let key`। + +এছাড়াও, আমরা এখানে `key` এর পরিবর্তে অন্য ভেরিয়েবলও ব্যবহার করতে পারব। উদাহরণস্বরূপ, `"for (let prop in obj)"` এটিও ব্যপকভাবে ব্যবহৃত হয়। -Also, we could use another variable name here instead of `key`. For instance, `"for (let prop in obj)"` is also widely used. +<<<<<<< HEAD +### অবজেক্ট এ প্রোপার্টির অর্ডার +======= ### Ordered like an object +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d -Are objects ordered? In other words, if we loop over an object, do we get all properties in the same order they were added? Can we rely on this? +আমরা যদি অবজেক্টের উপর লুপ চালাই, আমরা কি সবগুলো প্রোপার্টি একই ভাবে সাজানো পাবো যেভাবে আমরা সংযুক্ত করেছি? আমরা কি এই বিষয়ে ভরসা রাখতে পারি? -The short answer is: "ordered in a special fashion": integer properties are sorted, others appear in creation order. The details follow. +সংক্ষেপে বললেঃ "বিশেষ ভাবে সাজানো" ঃ যেসব প্রোপার্টি ইন্টেজার সেসব ক্রমানুসারে সাজানো, অন্যেরা তৈরি করার সময় যে অর্ডারে ছিল সেই অর্ডারে সাজানো পাওয়া যাবে। বিস্তারিত নিচে। -As an example, let's consider an object with the phone codes: +উদাহরণ হিসেবে, ধরি ফোন কোডের একটি অবজেক্টঃ ```js run let codes = { @@ -412,19 +548,27 @@ for (let code in codes) { */!* ``` +<<<<<<< HEAD +এই অবজেক্টটি হয়তো ইউজারকে একটি অপশনের লিস্ট দেখানোর জন্য ব্যবহার করা হবে। যদি সাইটটি মূলত জার্মান ইউজারদের জন্য হয়, তাহলে আমরা চাইব `49` যেন প্রথমেই থাকে। +======= The object may be used to suggest a list of options to the user. If we're making a site mainly for a German audience then we probably want `49` to be the first. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -But if we run the code, we see a totally different picture: +কিন্তু কোড রান করলে আমরা পুরোপুরি অন্যরকম অবস্থা দেখিঃ - USA (1) goes first - then Switzerland (41) and so on. -The phone codes go in the ascending sorted order, because they are integers. So we see `1, 41, 44, 49`. +ফোন কোডগুলো ঊর্ধ্বগামী (ascending) ক্রমে সাজানো, কারণ তারা ইন্টিজার। তাই আমরা পাই `1, 41, 44, 49`। -````smart header="Integer properties? What's that?" -The "integer property" term here means a string that can be converted to-and-from an integer without a change. +````smart header="ইন্টিজার প্রোপার্টি?" +"ইন্টিজার প্রোপার্টি" হল একটি স্ট্রিং যেটি ইন্টিজার (পূর্ণসংখ্যা) থেকে বা ইন্টিজারে কোন পরিবর্তন ছাড়াই পরিবর্তন করা যায়। +<<<<<<< HEAD +তাই, "49" একটি ইন্টিজার প্রোপার্টির নাম, কারণ যখন এটিকে ইন্টিজারে পরিবর্তন এবং ইন্টিজার থেকে স্ট্রিং এ পরিবর্তন করা হয় এটি একই থাকে। কিন্তু "+49" এবং "1.2" ইন্টিজার নয়ঃ +======= So, `"49"` is an integer property name, because when it's transformed to an integer number and back, it's still the same. But `"+49"` and `"1.2"` are not: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run // Number(...) explicitly converts to a number @@ -435,7 +579,7 @@ alert( String(Math.trunc(Number("1.2"))) ); // "1", not same "1.2" ⇒ not integ ``` ```` -...On the other hand, if the keys are non-integer, then they are listed in the creation order, for instance: +...অপরদিকে, যদি কী ইন্টিজার না হয়, তাহলে তারা তৈরির সময় যে ক্রমে ছিল সেভাবেই থাকবে, যেমনঃ ```js run let user = { @@ -445,16 +589,16 @@ let user = { user.age = 25; // add one more *!* -// non-integer properties are listed in the creation order +// যদি কী ইন্টিজার না হয়, তাহলে তারা তৈরির সময় যে ক্রমে ছিল সেভাবেই থাকবে */!* for (let prop in user) { alert( prop ); // name, surname, age } ``` -So, to fix the issue with the phone codes, we can "cheat" by making the codes non-integer. Adding a plus `"+"` sign before each code is enough. +তাই, ফোন কোডের ইস্যু ঠিক করতে আমরা একটু "ধূর্ততার" সাহায্য নিতে পারি। প্রতিটি কোডের আগে `"+"` চিহ্ন ব্যবহার করে তাদের নন-ইন্টিজার করে দেয়াই যথেষ্ট। -Like this: +এভাবেঃ ```js run let codes = { @@ -470,34 +614,308 @@ for (let code in codes) { } ``` -Now it works as intended. +এখন যেভাবে কাজ করা উচিত সেভাবেই কাজ করছে। + +<<<<<<< HEAD +## রেফারেন্সের মাধ্যমে কপি করা + +অবজেক্ট আর প্রিমিটিভ এর মধ্যে একটি মৌলিক পার্থক্য হল, অবজেক্ট রেফারেন্সের ("by reference") মাধ্যমে সংরক্ষণ এবং কপি করা হয়। + +প্রিমিটিভ ভ্যালুগুলোঃ স্ট্রিং, নাম্বার, বুলিয়ান -- এসব সংরক্ষণ এবং কপি হয়ে থাকে সম্পূর্ণ/সরাসরি ভ্যালু হিসেবে। + +উদাহরণঃ + +```js +let message = "Hello!"; +let phrase = message; +``` + +এর ফলে, আমাদের কাছে দুটি স্বাধীন ভেরিয়েবল আছে, যাদের প্রত্যেকে `"Hello!"` স্ট্রিংটি সংরক্ষণ করে। + +![](variable-copy-value.svg) + +অবজেক্টগুলো এই রকম না। + +**ভেরিয়েবল সরাসরি অবজেক্টকে সংরক্ষণ করে না, অবজেক্টের "মেমোরি এড্রেস", বা অবজেক্টের "রেফারেন্স" সংরক্ষণ করে।** + +এখানে অবজেক্টটির গঠনের ছবি দেয়া হলঃ + +```js +let user = { + name: "John" +}; +``` + +![](variable-contains-reference.svg) + +এখানে, অবজেক্টটি মেমোরিতে কোথাও সংরক্ষিত রয়েছে। এবং `user` ভেরিয়েবলের কাছে এই অবজেক্টের "রেফারেন্স" রয়েছে। + +**যখন একটি অবজেক্ট ভেরিয়েবলকে কপি করা হয় -- রেফারেন্সটি কপি হয়। অবজেক্টটি দ্বিতীয়বার তৈরি হয় না।** + +অবজেক্টকে যদি কেবিনেট ধরি, তাহলে ভেরিয়েবলের কাছে এর চাবি থাকে। ভেরিয়েবল কপি করা মানে চাবি কপি করা, পুরো কেবিনেটকে কপি করা নয়। + +উদাহরণস্বরূপঃ + +```js no-beautify +let user = { name: "John" }; + +let admin = user; // রেফারেন্স কপি হচ্ছে +``` + +এখন আমাদের কাছে দুটি ভেরিয়েবল আছে, প্রত্যেকের কাছে একই অবজেক্টের রেফারেন্স আছেঃ + +![](variable-copy-reference.svg) + +আমরা যেকোনো ভেরিয়েবল ব্যবহার করে কেবিনেটকে এক্সেস এবং এর কন্টেন্টকে মডিফাই করতে পারিঃ + +```js run +let user = { name: 'John' }; + +let admin = user; + +*!* +admin.name = 'Pete'; // "admin" রেফারেন্সের মাধ্যমে পরিবর্তন করা হচ্ছে +*/!* + +alert(*!*user.name*/!*); // 'Pete', "user" রেফারেন্সের মাধ্যমে পরিবর্তনটা দেখা হচ্ছে +``` + +উপরের উদাহরণটি প্রমাণ করে যে শুধু একটিই অবজেক্ট রয়েছে। অনেকটা যেন আমাদের কাছে একই কেবিনেটের দুইটা চাবি আছে এবং একটা চাবি (`admin`) ব্যবহার করা হয়েছে কেবিনেট খুলার জন্য। এরপর, আমরা যদি অন্য চাবি (`user`) ব্যবহার করি, আমরা কি পরিবর্তন হয়েছে তা দেখতে পাই। + +### রেফারেন্সের সাহায্যে তুলনা + +ইকুয়ালিটি `==` and স্ট্রিক্ট ইকুয়ালিটি `===` অপারেটর অবজেক্টের জন্য একই ভাবে কাজ করে। + +**দুটি অবজেক্ট ইকুয়াল বা সমান হবে শুধুমাত্র তারা যদি একই অবজেক্ট হয়ে থাকে।** + +যেমন, যদি দুটি ভেরিয়েবলের রেফারেন্স একই অবজেক্টকে পয়েন্ট করে, তাহলে তারা সমানঃ + +```js run +let a = {}; +let b = a; // copy the reference + +alert( a == b ); // true, দুটি ভেরিয়েবলে একই অবজেক্টের পয়েন্ট রাখা আছে +alert( a === b ); // true +``` + +এবং এখানে দুটি আলাদা অবজেক্ট দেখানো হচ্ছে যারা সমান না, যদিও দুটিই খালি অবজেক্ট। + +```js run +let a = {}; +let b = {}; // দুটি আলাদা অবজেক্ট + +alert( a == b ); // false +``` +`obj1 > obj2` এ রকম তুলনা বা প্রিমিটিভের সাথে তুলনা `obj == 5` এর সময় অবজেক্ট প্রিমিটিভে রূপান্তরিত হয়। আমরা শীঘ্রই অবজেক্ট কিভাবে রূপান্তর হয় তা জানব, কিন্তু সত্যি বলতে, এরকম তুলনা বাস্তবে খুবই কম প্রয়োজন হয় এবং সাধারণত কোডে ভুলের কারণে হয়ে থাকে। + +### কন্সটেন্ট/ধ্রুবক অবজেক্ট + +`const` দিয়ে ঘোষণা করা অবজেক্ট পরিবর্তিত *হতে পারে*। + +উদাহরণস্বরূপঃ + +```js run +const user = { + name: "John" +}; + +*!* +user.age = 25; // (*) +*/!* + +alert(user.age); // 25 +``` + +এটা মনে হতে পারে `(*)` এই লাইনে একটি এরর হবে, কিন্তু না, কোন এরর নেই। কারণ `const` শুধুমাত্র `user` এর ভ্যালুকে পরিবর্তন হতে বাধা দেয়। এখানে `user` সবসময় একই অবজেক্টের রেফারেন্স রাখছে। `(*)` এই লাইনে অবজেক্টের *ভেতরে* পরিবর্তন করা হয়েছে, `user` এর ভ্যালু অপরিবর্তিত রয়ে গেছে। + +`const` এরর দিবে যদি আমরা `user` এর ভ্যালু পরিবর্তন করতে চাই, যেমনঃ + +```js run +const user = { + name: "John" +}; + +*!* +// Error (can't reassign user) +*/!* +user = { + name: "Pete" +}; +``` + +...কিন্তু আমরা যদি অবজেক্টের প্রোপার্টিকে ধ্রুবক হিসেবে রাখতে চাই? যাতে `user.age = 25` এটা এরর দেয়। এটা করাও সম্ভব। আমরা অধ্যায়ে তা দেখব। + +## ক্লোন এবং মার্জ করা, Object.assign + +অবজেক্টের ভেরিয়েবল কপি করা মানে, একই অবজেক্টের আরেকটি রেফারেন্স তৈরি করা। + +কিন্তু আমরা যদি অবজেক্টের প্রতিলিপি/ডুপ্লিকেট তৈরি করতে চাই? একটি সম্পূর্ণ আলাদা কপি তৈরি করতে চাই? + +অবশ্যই করা যাবে, কিন্তু প্রক্রিয়াটি একটু জটিল, কারণ জাভাস্ক্রিপ্টে এ কাজের জন্য কোন বিল্ড-ইন মেথড নেই। আসলে এটি কদাচিৎ প্রয়োজন হয়। রেফারেন্স দিয়ে কপি করাই বেশিরভাগ কাজের জন্য যথেষ্ট। + +কিন্তু আমরা যদি আসলেই এটা করতে চাই, তাহলে আমাদের একটি নতুন অবজেক্ট তৈরি করতে হবে এবং আগের অবজেক্টের স্ট্রাকচার/গঠন নতুন অবজেক্টে কপি করতে হবে। এটা করতে আগের অবজেক্টের প্রতিটি প্রোপার্টিকে প্রিমিটিভ স্তর থেকে নতুন অবজেক্টে কপি করতে হবে। + +এভাবেঃ + +```js run +let user = { + name: "John", + age: 30 +}; + +*!* +let clone = {}; // নতুন খালি অবজেক্ট + +// user এর সব প্রোপার্টি নতুন অবজেক্টে কপি করা যাক +for (let key in user) { + clone[key] = user[key]; +} +*/!* + +// এখন clone হচ্ছে পুরো আলাদা একটি অবজেক্ট +clone.name = "Pete"; // এটির ডাটা পরিবর্তন করা হচ্ছে + +alert( user.name ); // এখনও আগের অবজেক্টের ভ্যালু John +``` + +এ কাজের জন্য আমরা [Object.assign](mdn:js/Object/assign) মেথডটাও ব্যবহার করতে পারি। + +সিনট্যাক্সঃ + +```js +Object.assign(dest, [src1, src2, src3...]) +``` + +- `dest`, এবং `src1, ..., srcN` আর্গুমেন্টগুলো (যতগুলো ইচ্ছা হতে পারে) হল অবজেক্ট। +- এটি `src1, ..., srcN` অবজেক্টগুলোর প্রোপার্টি `dest` অবজেক্টে কপি করে। অন্যভাবে বললে, দ্বিতীয় আর্গুমেন্ট থেকে শুরু করে সব আর্গুমেন্ট এর প্রোপার্টিগুলো প্রথম আর্গুমেন্টে কপি হবে। তারপরত এটি `dest` কে রিটার্ন করে। + +যেমন, আমরা এটিকে একাধিক অবজেক্টকে মার্জ করার জন্য ব্যবহার করতে পারিঃ +```js +let user = { name: "John" }; + +let permissions1 = { canView: true }; +let permissions2 = { canEdit: true }; + +*!* +// permissions1 এবং permissions2 অবজেক্টদ্বয় থেকে সকল প্রোপার্টি user এ কপি করা হচ্ছে +Object.assign(user, permissions1, permissions2); +*/!* + +// এখন user = { name: "John", canView: true, canEdit: true } +``` + +যদি শেষোক্ত অবজেক্টে (`user`) একই নামে প্রোপার্টি আগে থেকেই থেকে থাকে, সেটি ওভাররাইড হয়ে যাবেঃ + +```js +let user = { name: "John" }; + +// overwrite name, add isAdmin +Object.assign(user, { name: "Pete", isAdmin: true }); + +// now user = { name: "Pete", isAdmin: true } +``` + +সাধারণ ক্লোনিং এর ক্ষেত্রে আমরা লুপ এর পরিবর্তে `Object.assign` কে ব্যবহার করতে পারিঃ + +```js +let user = { + name: "John", + age: 30 +}; + +*!* +let clone = Object.assign({}, user); +*/!* +``` + +এটি `user` এর সকল প্রোপার্টিকে খালি অবজেক্টে কপি করে এবং রিটার্ন করে। আসলে, এটি লুপের মতই, কিন্তু ছোট করে লেখা যায়। + +এতক্ষণ পর্যন্ত আমরা ধরে নিয়েছি `user` এর সব প্রোপার্টিগুলো প্রিমিটিভ। কিন্তু প্রোপার্টিতে অন্য অবজেক্টের রেফারেন্স থাকতে পারে। তাদের কিভাবে কপি করা যায়? + +Like this: +```js run +let user = { + name: "John", + sizes: { + height: 182, + width: 50 + } +}; + +alert( user.sizes.height ); // 182 +``` + +এখন `clone.sizes = user.sizes` এভাবে কপি করা যথেষ্ট না, কারণ `user.sizes` একটি অবজেক্ট, এটির রেফারেন্স কপি হবে। সুতরাং `clone` এবং `user` এর size প্রোপার্টি একই অবজেক্ট হবেঃ + +Like this: +```js run +let user = { + name: "John", + sizes: { + height: 182, + width: 50 + } +}; + +let clone = Object.assign({}, user); + +alert( user.sizes === clone.sizes ); // true, একই অবজেক্ট + +// user and clone share sizes +user.sizes.width++; // একজায়গায় প্রোপার্টিকে পরিবর্তন করা হচ্ছে +alert(clone.sizes.width); // 51, অন্য জায়গায় পরিবর্তিত হয়ে গেছে +``` + +এটা ঠিক করার জন্য, আমাদের ক্লোন করার জন্য একটি লুপ চালাতে হবে, যেটি প্রতিটি `user[key]` ভ্যালুকে পরীক্ষা করে দেখবে - এটি অবজেক্ট কিনা, তারপর অবজেক্ট হলে সেই অবজেক্টের স্ট্রাকচারও কপি করা হবে। এটাকে বলে "ডিপ ক্লোনিং"। + +একটি স্ট্যান্ডার্ড এলগরিদম আছে যা উপরে বর্ণিত ডিপ ক্লোনিং এর কেসটি এবং আরও অনেক জটিল কেস হ্যান্ডেল করে, যাকে বলা হয় [স্ট্যান্ডার্ড ক্লোনিং এলগরিদম](https://html.spec.whatwg.org/multipage/structured-data.html#safe-passing-of-structured-data)। বার বার একই কাজটি না করার জন্য আমরা এর একটি ইমপ্লিমেন্টেশন ব্যবহার করতে পারি এই লাইব্রেরী থেকে - [lodash](https://lodash.com), মেথডটির নাম [_.cloneDeep(obj)](https://lodash.com/docs#cloneDeep). + + + +## সারাংশ +======= ## Summary +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d -Objects are associative arrays with several special features. +অবজেক্ট হল কিছু বিশেষ ফিচার যুক্ত এসোসিয়েটিভ অ্যারে। -They store properties (key-value pairs), where: -- Property keys must be strings or symbols (usually strings). -- Values can be of any type. +তারা কিছু প্রোপার্টি সংরক্ষণ করে (key-value pairs), যেখানেঃ +- প্রোপার্টির কী অবশ্যই স্ট্রিং বা সিম্বল হতে হবে (সাধারণত স্ট্রিং)। +- ভ্যালু যেকোনো টাইপের হতে পারে। +<<<<<<< HEAD +একটি প্রোপার্টিকে এক্সেস করতে আমরা ব্যবহার করিঃ +- ডট নোটেশনঃ `obj.property`. +- তৃতীয় বন্ধনী `obj["property"]`। তৃতীয় বন্ধনী নোটেশন আমাদের ভেরিয়েবল থেকে কী ব্যবহার করতে দেয়, এভাবে `obj[varWithKey]`। +======= To access a property, we can use: - The dot notation: `obj.property`. - Square brackets notation `obj["property"]`. Square brackets allow taking the key from a variable, like `obj[varWithKey]`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 + +অন্যান্য অপারেটরসমূহঃ +- প্রোপার্টি মুছে দিতেঃ `delete obj.prop`। +- নির্দিষ্ট কী এর কোন প্রোপার্টি আছে কিনা পরীক্ষা করতেঃ `"key" in obj`। +- অবজেক্টের উপর ইটারেট বা প্রতিটি কী বের করতেঃ `for (let key in obj)` লুপ ব্যবহার করা হয়। + +<<<<<<< HEAD +অবজেক্টকে রেফারেন্সের মাধ্যমে এসাইন বা কপি করা হয়। অন্যভাবে বললে, ভেরিয়েবল "অবজেক্ট ভ্যালু" রাখে না, কিন্তু ভ্যালুর "রেফারেন্স" (মেমোরি এড্রেস) রাখে। সুতরাং এরকম ভেরিয়েবল কপি করা বা ফাংশন আর্গুমেন্টে পাঠালে রেফারেন্সটা কপি হয়, অবজেক্টটা নয়। কপি করা রেফারেন্সের মাধ্যমে করা সকল অপারেশন (যেমন প্রোপার্টি এড/রিমুভ করা) মূল অবজেক্টেই হয়। -Additional operators: -- To delete a property: `delete obj.prop`. -- To check if a property with the given key exists: `"key" in obj`. -- To iterate over an object: `for (let key in obj)` loop. +"আসলেই কপি" (ক্লোন) করার জন্য আমরা `Object.assign` অথবা [_.cloneDeep(obj)](https://lodash.com/docs#cloneDeep) ব্যবহার করতে পারি। +আমরা এই অধ্যায়ে যা জেনেছি তাকে "প্লেইন অবজেক্ট", বা শুধু or `Object` বলা হয়। +======= What we've studied in this chapter is called a "plain object", or just `Object`. +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d -There are many other kinds of objects in JavaScript: +জাভাস্ক্রিপ্টে অনেক অন্যান্য অবজেক্ট রয়েছেঃ -- `Array` to store ordered data collections, -- `Date` to store the information about the date and time, -- `Error` to store the information about an error. -- ...And so on. +- `Array` ডাটা কালেকশন সংরক্ষণের জন্য, +- `Date` তারিখ ও সময় সংক্রান্ত তথ্য সংরক্ষণের জন্য, +- `Error` এরর সম্পর্কিত তথ্য সংরক্ষণের জন্য, +- ...ইত্যাদি। -They have their special features that we'll study later. Sometimes people say something like "Array type" or "Date type", but formally they are not types of their own, but belong to a single "object" data type. And they extend it in various ways. +তাদের কিছু বিশেষ বৈশিষ্ট্য আছে যা আমরা পরে জানব। মাঝে মাঝে অনেকে "Array type" বা "Date type" বলে, কিন্তু এসব নিজেরা কোন আলাদা টাইপ না, এগুলো সব "অবজেক্ট" ডাটা টাইপ। এবং তাদের নানা ভাবে বর্ধিত করা হয়েছে। -Objects in JavaScript are very powerful. Here we've just scratched the surface of a topic that is really huge. We'll be closely working with objects and learning more about them in further parts of the tutorial. +জাভাস্ক্রিপ্ট এ অবজেক্ট খুবই শক্তিশালী। আমরা অনেক বড় একটি বিষয় সংক্ষিপ্তভাবে আলোচনা করেছি। আমরা অবজেক্ট নিয়ে প্রচুর কাজ করব এবং এই টিউটেরিয়ালের অন্যান্য অংশে অবজেক্ট সম্পর্কে আরও জানব। diff --git a/1-js/04-object-basics/02-object-copy/article.md b/1-js/04-object-basics/02-object-copy/article.md index e80f748ab..e24d2ec65 100644 --- a/1-js/04-object-basics/02-object-copy/article.md +++ b/1-js/04-object-basics/02-object-copy/article.md @@ -1,3 +1,4 @@ + # Object references and copying One of the fundamental differences of objects versus primitives is that objects are stored and copied "by reference", whereas primitive values: strings, numbers, booleans, etc -- are always copied "as a whole value". @@ -8,6 +9,7 @@ Let's start with a primitive, such as a string. Here we put a copy of `message` into `phrase`: + ```js let message = "Hello!"; let phrase = message; @@ -25,12 +27,14 @@ Objects are not like that. Let's look at an example of such a variable: + ```js let user = { name: "John" }; ``` + And here's how it's actually stored in memory: ![](variable-contains-reference.svg) @@ -50,6 +54,7 @@ For instance: ```js no-beautify let user = { name: "John" }; + let admin = user; // copy the reference ``` @@ -61,6 +66,7 @@ As you can see, there's still one object, but now with two variables that refere We can use either variable to access the object and modify its contents: + ```js run let user = { name: 'John' }; @@ -95,10 +101,16 @@ And here two independent objects are not equal, even though they look alike (bot let a = {}; let b = {}; // two independent objects + alert( a == b ); // false ``` +<<<<<<< HEAD + +For comparisons like `obj1 > obj2` or for a comparison against a primitive `obj == 5`, objects are converted to primitives. We'll study how object conversions work very soon, but to tell the truth, such comparisons are needed very rarely, usually they appear as a result of a programming mistake. +======= For comparisons like `obj1 > obj2` or for a comparison against a primitive `obj == 5`, objects are converted to primitives. We'll study how object conversions work very soon, but to tell the truth, such comparisons are needed very rarely -- usually they appear as a result of a programming mistake. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ````smart header="Const objects can be modified" An important side effect of storing objects as references is that an object declared as `const` *can* be modified. @@ -141,6 +153,7 @@ let user = { }; *!* + let clone = {}; // the new empty object // let's copy all user properties into it @@ -149,6 +162,7 @@ for (let key in user) { } */!* + // now clone is a fully independent object with the same content clone.name = "Pete"; // changed the data in it @@ -163,6 +177,7 @@ The syntax is: Object.assign(dest, ...sources) ``` + - The first argument `dest` is a target object. - Further arguments is a list of source objects. @@ -199,7 +214,12 @@ alert(user.name); // now user = { name: "Pete" } We also can use `Object.assign` to perform a simple object cloning: +<<<<<<< HEAD + +```js +======= ```js run +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 let user = { name: "John", age: 30 @@ -222,6 +242,7 @@ There are also other methods of cloning an object, e.g. using the [spread syntax Until now we assumed that all properties of `user` are primitive. But properties can be references to other objects. Like this: + ```js run let user = { name: "John", @@ -236,6 +257,7 @@ alert( user.sizes.height ); // 182 Now it's not enough to copy `clone.sizes = user.sizes`, because `user.sizes` is an object, and will be copied by reference, so `clone` and `user` will share the same sizes: + ```js run let user = { name: "John", diff --git a/1-js/04-object-basics/06-constructor-new/article.md b/1-js/04-object-basics/06-constructor-new/article.md index a335464f1..d0736fb8d 100644 --- a/1-js/04-object-basics/06-constructor-new/article.md +++ b/1-js/04-object-basics/06-constructor-new/article.md @@ -1,17 +1,21 @@ -# Constructor, operator "new" +# কন্সট্রাকটর এবং "new" অপারেটর +<<<<<<< HEAD +সাধারণত আমরা `{...}` এর সাহায্যে শুধুমাত্র একটি অবজেক্ট তৈরি করতে পারি। কিন্তু প্রায়সময় আমাদের একই ধরণের অনেক অবজেক্ট তৈরি করা লাগে, যেমন ইউজার বা টিচার অবজেক্ট। +======= The regular `{...}` syntax allows us to create one object. But often we need to create many similar objects, like multiple users or menu items and so on. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -That can be done using constructor functions and the `"new"` operator. +আমরা এটি করতে পারি কনস্ট্রাকটর ফাংশনের `"new"` অপারেটরের সাহায্যে। -## Constructor function +## কন্সট্রাকটর ফাংশন -Constructor functions technically are regular functions. There are two conventions though: +কন্সট্রাকটর ফাংশন দেখতে সাধারণ ফাংশনগুলোর মতই, তবে এটি দুটি নিয়ম মেনে চলে: -1. They are named with capital letter first. -2. They should be executed only with `"new"` operator. +1. ফাংশনের নামটি বড় হাতের অক্ষর দিয়ে শুরু হয়। যেমন `user` এর পরিবর্তে `User` +2. এদের ডিক্লেয়ার করার সময় অর্থাৎ ফাংশন কল করার সময় `"new"` অপারেটর দিয়ে কল করতে হবে। -For instance: +যেমন: ```js run function User(name) { @@ -27,31 +31,31 @@ alert(user.name); // Jack alert(user.isAdmin); // false ``` -When a function is executed with `new`, it does the following steps: +যখন কোন ফাংশন এ `new` অপারেটর ব্যবহার করা হয়, এটি নিম্নোক্ত বিষয়গুলো মেনে চলে: -1. A new empty object is created and assigned to `this`. -2. The function body executes. Usually it modifies `this`, adds new properties to it. -3. The value of `this` is returned. +1. একটি নতুন খালি অবজেক্ট তৈরি `this` এ অ্যাসাইন হবে। +2. এরপর ফাংশনের বডি এক্সিকিউট হবে। সাধারণত এটি `this` এ রূপান্তর হবে, এবং নতুন প্রপার্টি সংযুক্ত হবে। +3. এবং সবার শেষে `this` এর মান রিটার্ন করবে। -In other words, `new User(...)` does something like: +নিচে `new User(...)` কীভাবে কাজ করছে তা দেখানো হয়েছে: ```js function User(name) { *!* - // this = {}; (implicitly) + // this = {}; (ইঞ্জিন এখানে this এ একটি খালি অবজেক্ট অ্যাসাইন করছে) */!* - // add properties to this + // প্রপার্টিযুক্ত হচ্ছে this.name = name; this.isAdmin = false; *!* - // return this; (implicitly) + // return this; (সবার শেষে ইঞ্জিন this এর মান রিটার্ন করছে) */!* } ``` -So `let user = new User("Jack")` gives the same result as: +তাই `let user = new User("Jack")` এর মানটি হবে আমাদের নিচের `{...}` এর সাহায্যে ডিক্লেয়ার করা অবজেক্টের মত: ```js let user = { @@ -60,14 +64,21 @@ let user = { }; ``` -Now if we want to create other users, we can call `new User("Ann")`, `new User("Alice")` and so on. Much shorter than using literals every time, and also easy to read. +এখন আমরা যদি অন্য ইউজার তৈরি করতে চাই, তাহলে এভাবে কল করতে পারে `new User("Ann")`, `new User("Alice")` ইত্যাদি। সাধারণত এটি আরো বেশি পঠনযোগ্য এবং পরিবর্তনযোগ্য। -That's the main purpose of constructors -- to implement reusable object creation code. +কন্সট্রাকটর ব্যবহারের প্রধান উদ্দেশ্যই হল পুনরায় ব্যবহারযোগ্য অবজেক্ট তৈরি সহজ করা। +<<<<<<< HEAD +একটি ব্যাপার সম্পর্কে পরিষ্কার ধারণা থাকা দরকার। সাধারণত, যে কোন ফাংশনকে আমরা কন্সট্রাকটর ফাংশন হিসেবে ব্যবহার করতে পারি। অর্থাৎ যেকোন ফাংশনকে `new` দ্বারা কল করা হলে এটি কন্সট্রাকটর ফাংশন হিসেবে কাজ করবে। অর্থাৎ আপনি যদি ফাংশনের নামের সব অক্ষর ছোট হাতের ব্যবহার করেন তাও কাজ করবে, তবে কন্সট্রাকটর ফাংশনকে বড় হাতের অক্ষর দিয়ে শুরু করা সার্বজনীন স্বীকৃত, এবং এটি নির্দেশ করে আমাদের ফাংশনটি ডিক্লেয়ার করতে হবে `new` কী-ওয়ার্ড দ্বারা। + +````smart header="new function() { ... }" +যদি আমাদের একটি কমপ্লেক্স অবজেক্ট শুধুমাত্র একবার তৈরি করা লাগে, তাহলে এটি অ্যানোনিমাস ফাংশন কন্ট্রাকটরের সাহায্যে তৈরি করতে পারি, এভাবে: +======= Let's note once again -- technically, any function (except arrow functions, as they don't have `this`) can be used as a constructor. It can be run with `new`, and it will execute the algorithm above. The "capital letter first" is a common agreement, to make it clear that a function is to be run with `new`. ````smart header="new function() { ... }" If we have many lines of code all about creation of a single complex object, we can wrap them in an immediately called constructor function, like this: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js // create a function and immediately call it with new @@ -75,74 +86,82 @@ let user = new function() { this.name = "John"; this.isAdmin = false; - // ...other code for user creation - // maybe complex logic and statements - // local variables etc + // ...user এর অন্যান্য প্রপার্টি + // লজিক এবং স্টেটমেন্ট + // লোকাল ভ্যারিয়েবল ইত্যাদি }; ``` +<<<<<<< HEAD +এখানে আমরা কন্সট্রাকটরটিকে পুনরায় কল করতে পারব না, কেননা এটি কোথাও সংরক্ষন করা হয়নি, তৈরি করেই কল করা হয়ে গিয়েছে। এই ধরণের এনক্যাপসুলেশন প্রয়োজন হয় একটি অবজেক্টের জন্য, যা পুনরায় ব্যবহার করা যাবে না। +======= This constructor can't be called again, because it is not saved anywhere, just created and called. So this trick aims to encapsulate the code that constructs the single object, without future reuse. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```` -## Constructor mode test: new.target +## Constructor কিনা যাচাই: new.target -```smart header="Advanced stuff" -The syntax from this section is rarely used, skip it unless you want to know everything. +```smart header="অ্যাডভান্স টপিক" +এটি সাধারণত তেমন ব্যবহার করা হয়না, চাইলে এটি বাদ দিতে পারেন, তবে জেনে রাখা ভালো। ``` -Inside a function, we can check whether it was called with `new` or without it, using a special `new.target` property. +একটি ফাংশনের মধ্যে আমরা চাইলে যাচাই করতে পারি, এটি `new` দ্বারা কল করা হয়েছে নাকি হয়নি, এজন্য একটি বিশেষ প্রপার্টি আছে `new.target`। +<<<<<<< HEAD +নিচের কোডে আমরা `User` কে `new` দ্বারা কল করলে `new.target` এর মান পাব একটি খালি অবজেক্ট অন্যথায় `undefined`: +======= It is undefined for regular calls and equals the function if called with `new`: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run function User() { alert(new.target); } -// without "new": +// "new" বাদে কল: *!* User(); // undefined */!* -// with "new": +// "new" অপারেটরের সাহায্যে কল: *!* new User(); // function User { ... } */!* ``` -That can be used inside the function to know whether it was called with `new`, "in constructor mode", or without it, "in regular mode". +উপরের টেকনিকটি খাটিয়ে আমরা কোন ফাংশনকে "constructor mode" এ নাকি "regular mode" কল করা হচ্ছে তা জানতে পারব। -We can also make both `new` and regular calls to do the same, like this: +এবং আমরা চাইলে আমাদের "regular mode" এ কল করা ফাংশনকেও `new` দ্বারা আবদ্ধ করতে পারি, এভাবে: ```js run function User(name) { - if (!new.target) { // if you run me without new - return new User(name); // ...I will add new for you + if (!new.target) { // new ব্যাতীত কল করলে এটি এক্সিকিউট হবে + return new User(name); // ...new অ্যাসাইন হচ্ছে } this.name = name; } -let john = User("John"); // redirects call to new User +let john = User("John"); // new User কল হবে alert(john.name); // John ``` -This approach is sometimes used in libraries to make the syntax more flexible. So that people may call the function with or without `new`, and it still works. +অনেকসময় এটি ব্যবহার করা হয় লাইব্রেরীগুলোর সিনট্যাক্স আরো সহজবোধ্য করতে। ফলে আমরা কোন ফাংশনকে `new` ছাড়া কল করলেও কাজ করবে। -Probably not a good thing to use everywhere though, because omitting `new` makes it a bit less obvious what's going on. With `new` we all know that the new object is being created. +তবে এটি কোন ভালো আইডিয়া না, কেননা `new` বাদে কল করলে আমাদের কোড কীভাবে কাজ করছে তা জানা কিছুটা দুর্বোধ্য হয়ে যাবে। কেননা `new` দ্বারা কল করলে আমরা বুঝতে পারি একটি `Object` তৈরি হচ্ছে। -## Return from constructors +## কন্সট্রাকটরের রিটার্ন -Usually, constructors do not have a `return` statement. Their task is to write all necessary stuff into `this`, and it automatically becomes the result. +সাধারণত কন্সট্রাকটরের `return` স্টেটমেন্ট থাকে না। এর সব কাজ `this` এ সম্পন্ন হয়ে সবার শেষে `this` কে রিটার্ন করে। -But if there is a `return` statement, then the rule is simple: +কিন্তু যদি `return` স্টেটমেন্ট থাকে, তাহলে এটি নিম্নোক্ত নিয়ম মেনে চলে: -- If `return` is called with an object, then the object is returned instead of `this`. -- If `return` is called with a primitive, it's ignored. +- যদি কোন অবজেক্টকে `return` করা হয় তাহলে এটি `this` এর পরিবর্তে ঐ অবজেক্টকে রিটার্ন করবে। +- যদি কোন প্রিমিটিভ ভ্যালু `return` করা হয় তাহলে এটি উপেক্ষা করবে। -In other words, `return` with an object returns that object, in all other cases `this` is returned. +অন্যভাবে বলতে গেলে, যদি আমরা `this` এর পরিবর্তে কোন অবজেক্ট `return` করি তাহলে এটি ঐ অবজেক্টকেই রিটার্ন করে, অন্যথায় `this` রিটার্ন হয়। -For instance, here `return` overrides `this` by returning an object: +যেমন, এখানে `return` এ `this` কে অন্য একটি অবজেক্ট দ্বারা ওভাররাইড করা হচ্ছে: ```js run function BigUser() { @@ -155,7 +174,7 @@ function BigUser() { alert( new BigUser().name ); // Godzilla, got that object ``` -And here's an example with an empty `return` (or we could place a primitive after it, doesn't matter): +আরো একটি উদাহরণ দেখা যাক যেখানে আমরা শুধু `return` স্টেটমেন্ট ব্যবহার করছি (অথবা এটি প্রিমিটিভ ভ্যালুও হতে পারে, যা উপেক্ষা করবে): ```js run function SmallUser() { @@ -168,10 +187,15 @@ function SmallUser() { alert( new SmallUser().name ); // John ``` -Usually constructors don't have a `return` statement. Here we mention the special behavior with returning objects mainly for the sake of completeness. +সাধারণত কন্সট্রাকটরে `return` স্টেটমেন্ট ব্যবহার করা হয়না। তারপরও আমরা এটি আলোচনা করেছি যদি ব্যবহার করি তাহলে তা কেমন আচরণ করে তা জানার জন্য। +<<<<<<< HEAD +````smart header="প্রথমবন্ধনী ছাড়া কল" +আমরা new অপারেটর ব্যবহারের সময় `()` ছাড়াও কন্সট্রাকটর ফাংশনকে কল করতে পারি, যদি এতে কোন আর্গুমেন্ট না থাকে: +======= ````smart header="Omitting parentheses" By the way, we can omit parentheses after `new`: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js let user = new User; // <-- no parentheses @@ -179,16 +203,16 @@ let user = new User; // <-- no parentheses let user = new User(); ``` -Omitting parentheses here is not considered a "good style", but the syntax is permitted by specification. +যদিও বন্ধনী ছাড়া কন্সট্রাকটর স্টেটমেন্ট লিখা উচিত না, তারপরও যে এই সিনট্যাক্স কাজ করে তা বুঝার জন্য এটি আলোচনা করা হল। ```` -## Methods in constructor +## কনস্ট্রাকটরে মেথড কল -Using constructor functions to create objects gives a great deal of flexibility. The constructor function may have parameters that define how to construct the object, and what to put in it. +কনস্ট্রাকটর ফাংশনের মাধ্যমে আমরা সহজে রিইউজেবল অবজেক্ট তৈরি করতে পারি। এতে প্যারামিটার থাকতে পারে, যার মাধ্যমে নির্ধারণ করে দিতে পারি অবজেক্টটি কীভাবে তৈরি হবে। -Of course, we can add to `this` not only properties, but methods as well. +অবশ্যই, আমরা `this` এ শুধুমাত্র প্রপার্টি না, মেথডও রাখতে পারি। -For instance, `new User(name)` below creates an object with the given `name` and the method `sayHi`: +যেমন নিচের কোডে `new User(name)` এর একটি `name` প্রপার্টি আছে এবং একটি মেথড `sayHi`: ```js run function User(name) { @@ -213,19 +237,19 @@ john = { */ ``` -To create complex objects, there's a more advanced syntax, [classes](info:classes), that we'll cover later. +কমপ্লেক্স অবজেক্ট তৈরিতে আমরা [classes](info:classes) সিনট্যাক্স ব্যবহার করতে পারব, যার সম্পর্কে পরবর্তী অধ্যায়ে বিস্তারিত জানতে পারব। -## Summary +## সারাংশ -- Constructor functions or, briefly, constructors, are regular functions, but there's a common agreement to name them with capital letter first. -- Constructor functions should only be called using `new`. Such a call implies a creation of empty `this` at the start and returning the populated one at the end. +- কন্সট্রাকটর ফাংশন এবং রেগুলার ফাংশনের মাঝে পার্থক্য হল কন্সট্রাকটর ফাংশন ক্যামেল কেসে লিখা হয়। +- কন্সট্রাকটর ফাংশনকে `new` দ্বারা কল করা হয়। এইক্ষেত্রে ফাংশনের শুরুতে একটি খালি `this` অবজেক্ট তৈরি হবে এবং সবার শেষে `this` অবজেক্ট রিটার্ন হবে। -We can use constructor functions to make multiple similar objects. +সাধারণত কনস্ট্রাকটর ফাংশন ব্যবহার করি একই টাইপের অনেক অবজেক্ট ডিক্লেয়ার করতে। -JavaScript provides constructor functions for many built-in language objects: like `Date` for dates, `Set` for sets and others that we plan to study. +জাভাস্ক্রিপ্টে অনেক বিল্ট-ইন কনস্ট্রাকটর ফাংশন আছে, যেমন `Date`, `Set`, `Map` ইত্যাদি। যার সম্পর্কে সামনের অধ্যায়গুলোতে বিস্তারিত জানতে পারব। -```smart header="Objects, we'll be back!" -In this chapter we only cover the basics about objects and constructors. They are essential for learning more about data types and functions in the next chapters. +```smart header="পরবর্তী অধ্যায়গুলোতে অবজেক্ট নিয়ে আরো বিস্তারিত জানব!" +এই অধ্যায়ে আমরা বেসিক অবজেক্ট এবং কনস্ট্রাকটর সম্পর্কে জেনেছি। যা পরবর্তী অধ্যায়ে বিভিন্ন ডাটা টাইপ এবং ফাংশন সম্পর্কে বুঝতে জানা থাকা উচিত। -After we learn that, we return to objects and cover them in-depth in the chapters and . +এর শেষে আমরা অবজেক্ট নিয়ে আরো বিষদ আলোচনা করেছি এবং এর অধ্যায়ে। ``` diff --git a/1-js/04-object-basics/08-symbol/article.md b/1-js/04-object-basics/08-symbol/article.md index 10a98af0a..5bacf1b51 100644 --- a/1-js/04-object-basics/08-symbol/article.md +++ b/1-js/04-object-basics/08-symbol/article.md @@ -1,6 +1,11 @@ -# Symbol type +# সিম্বল টাইপ +<<<<<<< HEAD +অবজেক্টের স্পেসিফিকেশন অনুযায়ী আমরা জেনেছি প্রপার্টি কি(key) হতে পারে স্ট্রিং অথবা সিম্বল টাইপ। নাম্বার, বুলিয়ান বা অন্য কোন ধরণের প্রিমিটিভ টাইপ কি(key) হিসেবে রাখা যায় না, শুধুমাত্র স্ট্রিং অথবা সিম্বল এই দুটি টাইপ অ্যাক্সেপ্টবেল। + +পূর্বের অনুচ্ছেদগুলোতে আমরা প্রপার্টি হিসেবে শুধুমাত্র স্ট্রিং ব্যবহার করেছি, এই অনুচ্ছেদে আমরা সিম্বল টাইপ কিভাবে ব্যবহার করা যায় এবং এর ব্যবহারের সুবিধা কি তা নিয়ে আলোচনা করব। +======= By specification, only two primitive types may serve as object property keys: - string type, or @@ -11,27 +16,40 @@ Otherwise, if one uses another type, such as number, it's autoconverted to strin Until now we've been using only strings. Now let's explore symbols, see what they can do for us. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -## Symbols +## সিম্বল -A "symbol" represents a unique identifier. +"সিম্বল (symbol)" একটি ইউনিক আইডেন্টিটির নিশ্চয়তা প্রদান করে। -A value of this type can be created using `Symbol()`: +এই ধরণের টাইপ তৈরি করতে আমরা ব্যবহার করি `Symbol()`: ```js +<<<<<<< HEAD +// এখানে id হল একটি symbol +let id = Symbol(); +``` + +তৈরির সময়, আমরা সিম্বলের একটি নাম প্রদান করি, যা ডিবাগিংয়ের জন্য সুবিধাজনক: +======= let id = Symbol(); ``` Upon creation, we can give symbols a description (also called a symbol name), mostly useful for debugging purposes: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js -// id is a symbol with the description "id" +// এখানে id হল একটি Symbol যার নাম হল "id" let id = Symbol("id"); ``` +<<<<<<< HEAD +Symbol আমাদের নিশ্চয়তা প্রদান করে এর মান হবে ইউনিক। যদি আমরা একই নাম দ্বারা একাধিক সিম্বল তৈরি করি, তাদের প্রত্যেকের মান হবে আলাদা। সিম্বলের প্রদানকৃত নামটি শুধুমাত্র একটি লেভেল। +======= Symbols are guaranteed to be unique. Even if we create many symbols with exactly the same description, they are different values. The description is just a label that doesn't affect anything. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -For instance, here are two symbols with the same description -- they are not equal: +যেমন, এখানে আমরা এখানে একই নামের দুটি সিম্বল তৈরি করেছি -- কন্ডিশনালি এদের মান সমান হবে না: ```js run let id1 = Symbol("id"); @@ -42,14 +60,19 @@ alert(id1 == id2); // false */!* ``` -If you are familiar with Ruby or another language that also has some sort of "symbols" -- please don't be misguided. JavaScript symbols are different. +রুবি বা অন্য যেকোন ল্যাংগুয়েজের "symbols" এর সাথে এটিকে গুলিয়ে ফেলবেন না। জাভাস্ক্রিপ্টের সিম্বল আলাদা। +<<<<<<< HEAD +````warn header="Symbols স্বয়ংক্রিয়ভাবে স্ট্রিং এ কনভার্ট হয়না" +জাভস্ক্রিপ্টের বেশিরভাগ মান স্ট্রিংয়ে টাইপ কাস্টিং হতে পারে। যেমন `alert` প্রায় সবধরণের মানকে স্ট্রিংয়ে রূপান্তর করতে পারে। তবে সিম্বল অটো কনভার্ট হতে পারে না। +======= So, to summarize, a symbol is a "primitive unique value" with an optional description. Let's see where we can use them. ````warn header="Symbols don't auto-convert to a string" Most values in JavaScript support implicit conversion to a string. For instance, we can `alert` almost any value, and it will work. Symbols are special. They don't auto-convert. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -For instance, this `alert` will show an error: +যেমন, নিচের কোডটিতে `alert` এর জন্য এরর দেখাবে: ```js run let id = Symbol("id"); @@ -58,19 +81,27 @@ alert(id); // TypeError: Cannot convert a Symbol value to a string */!* ``` -That's a "language guard" against messing up, because strings and symbols are fundamentally different and should not accidentally convert one into another. +এটি একটি ল্যাংগুয়েজ ডিজাইন, কেননা স্ট্রিং এবং সিম্বল মৌলিকভাবে আলাদা যার জন্য এদের নিজেদের মধ্যে পরিবর্তন গ্রহণযোগ্য নয়। +<<<<<<< HEAD +যদি আমরা কোন একটি সিম্বল দেখাতে চাই, তাহলে `.toString()` মেথডের মাধ্যমে দেখাতে পারি, এভাবে: +======= If we really want to show a symbol, we need to explicitly call `.toString()` on it, like here: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run let id = Symbol("id"); *!* -alert(id.toString()); // Symbol(id), now it works +alert(id.toString()); // Symbol(id), এখন এটি কাজ করবে */!* ``` +<<<<<<< HEAD +অথবা নাম জানতে `symbol.description`: +======= Or get `symbol.description` property to show the description only: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run let id = Symbol("id"); *!* @@ -80,34 +111,44 @@ alert(id.description); // id ```` -## "Hidden" properties +## "হিডেন" প্রপার্টি +<<<<<<< HEAD +সিম্বল অবজেক্টের মধ্যে একটি "hidden" প্রপার্টি রাখার সুবিধা প্রদান করে, যাতে অনিচ্ছাকৃত কোন প্রপার্টি অ্যাক্সেস বা ওভাররাইট করা না যায়। +======= Symbols allow us to create "hidden" properties of an object, that no other part of code can accidentally access or overwrite. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -For instance, if we're working with `user` objects, that belong to a third-party code. We'd like to add identifiers to them. +যেমন, মনে করুন আমরা একটি প্যাকেজ ডেভলাপ করতেছি এবং আমরা আর্গুমেন্ট হিসেবে একটি অবজেক্ট নিয়ে তার মধ্যে আমাদের লজিকগুলো ইমপ্লিমেন্ট করি, যেমন একটি `user` অবজেক্ট আছে, এখন এটি আমরা আমাদের প্যাকেজে আর্গুমেন্ট হিসেবে। এখন আমরা আমাদের সুবিধার জন্য এর একটি আইডেন্টিফায়ার সেট করতে চাই। -Let's use a symbol key for it: +চলুন এর জন্য একটি সিম্বল প্রপার্টি ব্যবহার করি: ```js run -let user = { // belongs to another code +let user = { // মূল অবজেক্ট এর কোড name: "John" }; -let id = Symbol("id"); +let id = Symbol("id"); // আমাদের প্যাকেজের কোড user[id] = 1; -alert( user[id] ); // we can access the data using the symbol as the key +alert( user[id] ); // এখন আমরা এর ডাটাকে সিম্বল কী(Key) দ্বারা অ্যাক্সেস করতে পারব ``` -What's the benefit of using `Symbol("id")` over a string `"id"`? +এটিতো আমরা চাইলে স্ট্রিং প্রপার্টি `"id"` দ্বারাও করতে পারতাম তার পরিবর্তে `Symbol("id")` ব্যবহার সুবিধাজনক কেন? +<<<<<<< HEAD +যেহেতু `user` অবজেক্টটি অন্য আরেকটি স্ক্রিপ্ট হতে এসেছে এবং ঐ কোডটিও যেহেতু `user` অবজেক্ট নিয়ে কাজ করে, আমরা চাইনা এর মধ্যে আমাদের আইডেন্টিফিকেশনের জন্য ব্যবহার করা প্রপার্টিটি অন্য স্ক্রিপ্টে অ্যাক্সেসবল হোক। এবং নিরাপত্তার খাতিরে এটি ভিন্ন স্ক্রিপ্টের জন্য অ্যাক্সেসবল হওয়াও উচিত নয়, সিম্বল ব্যবহার করায় আমরা এই ব্যাপারে নিশ্চিত থাকতে পারি সিম্বল ডাটাসমূহ এক স্ক্রিপ্টের সাথে অন্য স্ক্রিপ্টের মধ্যে আদান প্রদান হবে না। + +এছাড়াও, মনে করুন মূল স্ক্রিপ্টে আইডেন্টিফিকেশনের জন্য `user` অবজেক্টে একই নামের একটি আইডেন্টিটি সেট করে। এক্ষেত্রে আমরা নিশ্চিন্ত থাকতে পারি দুটি সিম্বলের নাম একই হওয়ার পরও স্ক্রিপ্টদুটির মধ্যে ডাটা লিক বা ওভাররাইড হবে না। +======= As `user` objects belong to another codebase, it's unsafe to add fields to them, since we might affect pre-defined behavior in that other codebase. However, symbols cannot be accessed accidentally. The third-party code won't be aware of newly defined symbols, so it's safe to add symbols to the `user` objects. Also, imagine that another script wants to have its own identifier inside `user`, for its own purposes. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Then that script can create its own `Symbol("id")`, like this: +এক্ষেত্রে মূল স্ক্রিপ্ট তার নিজস্ব আইডেন্টিটিরে জন্য সিম্বল তৈরি করতে পারে এভাবে, `Symbol("id")`: ```js // ... @@ -116,27 +157,28 @@ let id = Symbol("id"); user[id] = "Their id value"; ``` -There will be no conflict between our and their identifiers, because symbols are always different, even if they have the same name. +এক্ষেত্রে দুটি স্ক্রিপ্টের মধ্যে কোন কনফ্লিক্ট হবে না, কেননা সিম্বলের নাম এক হলেও সিম্বলসমূহ হবে ইউনিক, -...But if we used a string `"id"` instead of a symbol for the same purpose, then there *would* be a conflict: +...যদি তার পরিবর্তে আমরা প্রপার্টি হিসেবে স্ট্রিং`"id"` ব্যবহার করি, তাহলে উভয়ের মাঝে কনফ্লিক্ট হবে: ```js let user = { name: "John" }; -// Our script uses "id" property +// আমাদের user এর "id" প্রপার্টি user.id = "Our id value"; -// ...Another script also wants "id" for its purposes... +// ...অন্য আরেকটি স্ক্রিপ্টও কোন কারণে "id" প্রপার্টি ব্যবহার করছে user.id = "Their id value" -// Boom! overwritten by another script! +// ওহহহ! আরেকটি স্ক্রিপ্ট দ্বারা ওভাররাইড হয়ে গেল :( ``` -### Symbols in an object literal +### অবজেক্ট লিটারেল এ `{...}` সিম্বল প্রপার্টি + -If we want to use a symbol in an object literal `{...}`, we need square brackets around it. +যদি আমরা অবজেক্ট লিটারেলে `{...}` সিম্বল প্রপার্টি ব্যবহার করতে চাই, এর জন্য আমরা এটি তৃতীয় বন্ধনীর মধ্যে লিখতে হবে। -Like this: +যেমন: ```js let id = Symbol("id"); @@ -148,13 +190,13 @@ let user = { */!* }; ``` -That's because we need the value from the variable `id` as the key, not the string "id". +কেননা এটি দ্বারা আমরা নিশ্চিত করতে পারি, এখানের `id` হল একটি সিম্বল টাইপের ভ্যারিয়েবল, প্রপার্টির নাম স্ট্রিং "id" না। -### Symbols are skipped by for..in +### for..in লুপের মধ্যে সিম্বল প্রপার্টি অ্যাক্সেসিবল না -Symbolic properties do not participate in `for..in` loop. +সিম্বল প্রপার্টি সমূহ `for..in` লুপের মধ্যে অ্যাক্সেসিবল না। -For instance: +যেমন: ```js run let id = Symbol("id"); @@ -165,16 +207,24 @@ let user = { }; *!* -for (let key in user) alert(key); // name, age (no symbols) +for (let key in user) alert(key); // name, age (সিম্বল প্রপার্টি দেখাবে না) */!* +<<<<<<< HEAD +// তবে সরাসরি এটি অ্যাক্সেসবল +alert( "Direct: " + user[id] ); +``` + +`Object.keys(user)` এর জন্যও সিম্বল প্রপার্টি অ্যাক্সেসিবল না। কেননা এটি "হাইড সিম্বল প্রপার্টির" নিয়ম মেনে চলে। অন্যথায় অন্য আরেকটি স্ক্রিপ্ট হতে আমাদের অবজেক্টের মধ্যে লুপ চালিয়ে আমরা সিম্বল প্রপার্টির মান জেনে যেতে পারি, যা উচিত নয়। +======= // the direct access by the symbol works alert( "Direct: " + user[id] ); // Direct: 123 ``` [Object.keys(user)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys) also ignores them. That's a part of the general "hiding symbolic properties" principle. If another script or a library loops over our object, it won't unexpectedly access a symbolic property. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -In contrast, [Object.assign](mdn:js/Object/assign) copies both string and symbol properties: +তবে, [Object.assign](mdn:js/Object/assign) এর ক্ষেত্রে উভয় টাইপের প্রপার্টি কপি হয়, যেমন: ```js run let id = Symbol("id"); @@ -187,60 +237,72 @@ let clone = Object.assign({}, user); alert( clone[id] ); // 123 ``` -There's no paradox here. That's by design. The idea is that when we clone an object or merge objects, we usually want *all* properties to be copied (including symbols like `id`). +তবে এ নিয়ে চিন্তিত হওয়া উচিত নই। কেননা এদের এমনভাবে ডিজাইন করা হয়েছে যেন আমরা কোন অবজেক্টকে ক্লোন বা মার্জ করতে পারি। সাধারণত এজন্য আমরা চাই সকল ধরণের প্রপার্টি(সিম্বল সহ) কপি হোক। -## Global symbols +## গ্লোবাল সিম্বল -As we've seen, usually all symbols are different, even if they have the same name. But sometimes we want same-named symbols to be same entities. For instance, different parts of our application want to access symbol `"id"` meaning exactly the same property. +ইতোমধ্যে আমরা জেনেছি নাম একই হওয়া সত্বেও সিম্বল সমূহ প্রত্যেকেই আলাদা। কিন্তু অনেক সময় আমরা একই নামের জন্য একাধিক সিম্বল ব্যবহার করতে চাই। যেমন আমরা অ্যাপ্লিকেশনের আলাদা আলাদা অংশের `"id"` নামের প্রপার্টিকে অ্যাক্সেস করতে চাই। -To achieve that, there exists a *global symbol registry*. We can create symbols in it and access them later, and it guarantees that repeated accesses by the same name return exactly the same symbol. +এজন্য একটি পদ্ধতি আছে *global symbol registry*। যার মাধ্যমে আমরা সিম্বল তৈরি করতে পারি, এবং পরবর্তীতে একে অ্যাক্সেস করতে পারি যা আমাদের নিশ্চয়তা প্রদান করে একই নামের আরেকটি সিম্বল ডিক্লেয়ার হলেও এটি প্রথম সিম্বলটিকে রিটার্ন করে। -In order to read (create if absent) a symbol from the registry, use `Symbol.for(key)`. +global symbol registry হতে সিম্বলের মান পড়তে ব্যবহার হয় `Symbol.for(key)`। -That call checks the global registry, and if there's a symbol described as `key`, then returns it, otherwise creates a new symbol `Symbol(key)` and stores it in the registry by the given `key`. +অর্থাৎ এটি প্রথমে গ্লোবাল রেজিস্ট্রিতে চেক করবে ঐ `key`(নামের) কোন সিম্বল ডিক্লেয়ার করা হয়েছে কিনা যদি ডিক্লেয়ার হয় তাহলে ঐ সিম্বলকে রিটার্ন করবে অন্যথায় ঐ `key` নামের একটি সিম্বল তৈরি করে তা রেজিস্ট্রিতে সংরক্ষন করবে। -For instance: +যেমন: ```js run -// read from the global registry -let id = Symbol.for("id"); // if the symbol did not exist, it is created +// গ্লোবাল রেজিস্ট্রিতে আছে কিনা যাচাই করবে +let id = Symbol.for("id"); // যেহেতু এই নামের সিম্বল নাই তাই নতুন সিম্বল তৈরি হবে এবং রেজিস্ট্রিতে সংরক্ষন করবে -// read it again (maybe from another part of the code) +// গ্লোবাল রেজিস্ট্রিতে আছে কিনা যাচাই করবে (এটি হতে পারে অন্য কোন স্ক্রিপ্টের কোড) let idAgain = Symbol.for("id"); -// the same symbol +// দুইটি সিম্বল একই alert( id === idAgain ); // true ``` -Symbols inside the registry are called *global symbols*. If we want an application-wide symbol, accessible everywhere in the code -- that's what they are for. +যেসব সিম্বল গ্লোবাল রেজিস্ট্রিতে স্টোর হবে তাদের বলা হয় *global symbols*। যদি আমরা কোন সিম্বলকে সকল স্ক্রিপ্টের জন্য অ্যাক্সেস দিতে চাই তাহলে *global symbols* ব্যবহার করব। -```smart header="That sounds like Ruby" -In some programming languages, like Ruby, there's a single symbol per name. +```smart header="শুনতে কী Ruby এর মত মনে হচ্ছে?" +কিছু প্রোগ্রামিং ল্যাংগুয়েজে যেমন Ruby তে একটি `key` শুধুমাত্র একটি সিম্বলের জন্য। +<<<<<<< HEAD +আমরা দেখেছি জাভাস্ক্রিপ্টে, গ্লোবাল সিম্বল ডিক্লেয়ার করতে পারি। +======= In JavaScript, as we can see, that's true for global symbols. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ``` ### Symbol.keyFor +<<<<<<< HEAD +গ্লোবাল সিম্বলের জন্য `Symbol.for(key)` এর বিপরীতে আরেকটি মেথড আছে যা সিম্বলের নাম রিটার্ন করে `Symbol.keyFor(sym)`। +======= We have seen that for global symbols, `Symbol.for(key)` returns a symbol by name. To do the opposite -- return a name by global symbol -- we can use: `Symbol.keyFor(sym)`: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -For instance: +যেমন: ```js run -// get symbol by name +// সিম্বল ডিক্লেয়ার let sym = Symbol.for("name"); let sym2 = Symbol.for("id"); -// get name by symbol +// সিম্বলের নাম alert( Symbol.keyFor(sym) ); // name alert( Symbol.keyFor(sym2) ); // id ``` -The `Symbol.keyFor` internally uses the global symbol registry to look up the key for the symbol. So it doesn't work for non-global symbols. If the symbol is not global, it won't be able to find it and returns `undefined`. +`Symbol.keyFor` ব্যবহার করা হয় ইন্টারনালি ঐ নামের কোন গ্লোবাল ইতোমধ্যে সিম্বল ডিক্লেয়ার করা হয়েছে কিনা তা জানতে। সুতরাং এটি নন-গ্লোবাল সিম্বলের জন্য কাজ করবে না। যদি কোন গ্লোবাল সিম্বল না থাকে তাহলে `undefined` রিটার্ন করবে। +<<<<<<< HEAD +তবে সব সিম্বলের `description` প্রপার্টি আছে। +======= That said, all symbols have the `description` property. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -For instance: +যেমন: ```js run let globalSymbol = Symbol.for("name"); @@ -254,36 +316,45 @@ alert( localSymbol.description ); // name ## System symbols -There exist many "system" symbols that JavaScript uses internally, and we can use them to fine-tune various aspects of our objects. +এছাড়াও ইন্টারনালি অবজেক্টের বিভিন্ন বিষয় নিয়ে কাজ করতে সিম্বলের আরো কিছু মেথড আছে। -They are listed in the specification in the [Well-known symbols](https://tc39.github.io/ecma262/#sec-well-known-symbols) table: +এ সম্পর্কে স্পেশিফিকেশনে আলোচনা করা হয়েছে [Well-known symbols](https://tc39.github.io/ecma262/#sec-well-known-symbols): - `Symbol.hasInstance` - `Symbol.isConcatSpreadable` - `Symbol.iterator` - `Symbol.toPrimitive` -- ...and so on. +- ...ইত্যাদি. -For instance, `Symbol.toPrimitive` allows us to describe object to primitive conversion. We'll see its use very soon. +যেমন, `Symbol.toPrimitive` অবজেক্টকে প্রিমিটিভ কনভার্শন করতে ব্যবহার করা হয়। যা নিয়ে পরবর্তী অনুচ্ছেদে আলোচনা করা হয়েছে। -Other symbols will also become familiar when we study the corresponding language features. +আমরা অন্যান্য সিম্বল সমূহ নিয়েও পরিচিত হয়ে যাব আরো ভিবিন্ন ল্যাংগুয়েজ ফিচার নিয়ে আলোচনার সময়। -## Summary +## সারাংশ -`Symbol` is a primitive type for unique identifiers. +`Symbol` হল ইউনিক আইডেন্টিফায়ারের একটি প্রিমিটিভ টাইপ। -Symbols are created with `Symbol()` call with an optional description (name). +সিম্বল তৈরি করা হয় `Symbol()` দ্বারা যেটির একটি অপশনাল প্যারামিটার(name) আছে। -Symbols are always different values, even if they have the same name. If we want same-named symbols to be equal, then we should use the global registry: `Symbol.for(key)` returns (creates if needed) a global symbol with `key` as the name. Multiple calls of `Symbol.for` with the same `key` return exactly the same symbol. +প্রতিটি সিম্বল স্বতন্ত্র। এমনকি যদি দুটি সিম্বলের মান একইও হয়। এছাড়াও যদি আমরা কোন সিম্বলকে একই নামে ইনিশিয়ালাইজ করতে চাই তাহলে আমাদের গ্লোবাল রেজিস্ট্রি ব্যবহার করতে হবে: `Symbol.for(key)` এটি চেক করবে একই নামের আগে কোন সিম্বল ডিক্লেয়ার করা হয়েছে কিনা, যদি হয়ে থাকে তাহলে ঐ সিম্বলকে রেফারেন্স করে অন্যথায় `undefined`। -Symbols have two main use cases: +সিম্বলের দুটি প্রধান ব্যবহার হল: +<<<<<<< HEAD +1. "হিডেন" অবজেক্ট প্রপার্টি। + যদি আমরা কোন একটি অবজেক্টে কোন প্রপার্টি সংযুক্ত করতে চাই যেটি অন্য আরেকটি স্ক্রিপ্ট বা লাইব্রেরিতে ব্যবহার হয়, এবং আমরা চাই প্রপার্টিসমূহ যেন উভয়ের মধ্যে হিডেন থাকে, তখন আমরা সিম্বল প্রপার্টি ব্যবহার করি। সিম্বলিক প্রপার্টিসমূহ `for..in` বা `Object.keys(user)` দ্বারা অ্যাক্সেসিবল না। এছাড়াও সরাসরিও এক স্ক্রিপ্টের সিম্বল অন্য স্ক্রিপ্ট থেকে অ্যাক্সেসিবল হবে না, কেননা অন্য স্ক্রিপ্টে সিম্বল অ্যাক্সেস হবে না। ফলে স্ক্রিপ্টের মধ্যে মধ্যে ডাটা লিক বা ওভাররাইড হওয়ার সম্ভাবনা থাকে না। +======= 1. "Hidden" object properties. If we want to add a property into an object that "belongs" to another script or a library, we can create a symbol and use it as a property key. A symbolic property does not appear in `for..in`, so it won't be accidentally processed together with other properties. Also it won't be accessed directly, because another script does not have our symbol. So the property will be protected from accidental use or overwrite. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 - So we can "covertly" hide something into objects that we need, but others should not see, using symbolic properties. + সুতরাং অবজেক্টের কোন কিছু হিডেন রাখতে আমরা সিম্বল ব্যবহার করতে পারি। -2. There are many system symbols used by JavaScript which are accessible as `Symbol.*`. We can use them to alter some built-in behaviors. For instance, later in the tutorial we'll use `Symbol.iterator` for [iterables](info:iterable), `Symbol.toPrimitive` to setup [object-to-primitive conversion](info:object-toprimitive) and so on. +2. এছাড়াও আরো অনেক সিম্বল সিস্টেম আছে যেগুলো জাভাস্ক্রিপ্টের সাহায্যে অ্যাক্সেসিবল `Symbol.*`। অবজেক্টের কিছু বিহেভিয়ার পরিবর্তনের জন্য আমরা এদের ব্যবহার করি। যেমন [iterables](info:iterable) টিউটোরিয়ালে `Symbol.iterator` এবং [object-to-primitive conversion](info:object-toprimitive) এ `Symbol.toPrimitive` এর ব্যবহার দেখব।. +<<<<<<< HEAD +তবে, সিম্বল কিন্তু প্রকৃতপক্ষে ১০০% হিডেন না। একটি বিল্ট ইন মেথড আছে ` Object.getOwnPropertySymbols(obj)`যেটি সকল সিম্বলকে রিটার্ন করে, এছাড়াও আরেকটি মেথড আছে [Reflect.ownKeys(obj)](mdn:js/Reflect/ownKeys) যেটি সকল প্রপার্টি (সিম্বল সহ) রিটার্ন করে। সুতরাং বলা যায় এরা প্রকৃতপক্ষে হিডেন না। তবে বেশিরভাগ লাইব্রেরী এই মেথডগুলো নিয়ে কাজ করেনা। +======= Technically, symbols are not 100% hidden. There is a built-in method [Object.getOwnPropertySymbols(obj)](mdn:js/Object/getOwnPropertySymbols) that allows us to get all symbols. Also there is a method named [Reflect.ownKeys(obj)](mdn:js/Reflect/ownKeys) that returns *all* keys of an object including symbolic ones. But most libraries, built-in functions and syntax constructs don't use these methods. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 diff --git a/1-js/04-object-basics/09-object-toprimitive/article.md b/1-js/04-object-basics/09-object-toprimitive/article.md index fa68da583..832589a81 100644 --- a/1-js/04-object-basics/09-object-toprimitive/article.md +++ b/1-js/04-object-basics/09-object-toprimitive/article.md @@ -1,8 +1,11 @@ -# Object to primitive conversion +# অবজেক্ট হতে প্রিমিটিভে রূপান্তর -What happens when objects are added `obj1 + obj2`, subtracted `obj1 - obj2` or printed using `alert(obj)`? +দুটি অবজেক্টের মধ্যে যোগ `obj1 + obj2`, বিয়োগ `obj1 - obj2` বা অবজেক্টকে প্রিন্ট করার সময় `alert(obj)` কীভাবে কাজ করে? +<<<<<<< HEAD +এইক্ষেত্রে, অবজেক্ট শুরুতে প্রিমিটিভ ভ্যালুতে রূপান্তর হয়, এবং তারপর এদের মধ্যের অপারেশন গুলো সংগঠিত হয়। +======= JavaScript doesn't allow you to customize how operators work on objects. Unlike some other programming languages, such as Ruby or C++, we can't implement a special object method to handle addition (or other operators). In case of such operations, objects are auto-converted to primitives, and then the operation is carried out over these primitives and results in a primitive value. @@ -21,15 +24,27 @@ We have two purposes: 2. There are exceptions, where such operations are possible and look good. E.g. subtracting or comparing dates (`Date` objects). We'll come across them later. ## Conversion rules +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -In the chapter we've seen the rules for numeric, string and boolean conversions of primitives. But we left a gap for objects. Now, as we know about methods and symbols it becomes possible to fill it. +এই অধ্যায়ে আমরা স্ট্রিং, বুলিয়ান এবং সাংখ্যিক পদ্ধতির রূপান্তরের নিয়ম দেখেছি। তবে অবজেক্ট নিয়ে আলোচনা করা হয়নি। ইতোমধ্যে যেহেতু আমরা সিম্বল এবং মেথড সম্পর্কে পড়েছি সুতরাং আমরা অবজেক্ট রূপান্তর নিয়ে জানতে পারব। +<<<<<<< HEAD +1. বুলিয়ানের জন্য সকল অবজেক্ট `true` রিটার্ন করবে। এক্ষেত্রে শুধুমাত্র সাংখ্যিক এবং স্ট্রিং রূপান্তর আছে। +2. সাংখ্যিক রূপান্তর ঘটবে যখন দুটি অবজেক্টের মধ্যে বিয়োগ অপারেশন বা অন্যান্য গাণিতিক অপারেশন চালানো হয়। যেমন দুটি `Date` (এইখানে আলোচনা করা হয়েছে) অবজেক্টের পার্থক্য নির্ণয়ে এবং এর ফলে দুটি তারিখ অবেজেক্টের `date1 - date2` পার্থক্য জানা যাবে। +3. সাধারণত স্ট্রিংয়ের রূপান্তর ঘটে যখন আমরা কোন অবজেক্টের মান দেখাতে চাই যেমন `alert(obj)` অথবা এই ধরণের অন্যান্য অপারেশনের জন্য। +======= 1. There's no conversion to boolean. All objects are `true` in a boolean context, as simple as that. There exist only numeric and string conversions. 2. The numeric conversion happens when we subtract objects or apply mathematical functions. For instance, `Date` objects (to be covered in the chapter ) can be subtracted, and the result of `date1 - date2` is the time difference between two dates. 3. As for the string conversion -- it usually happens when we output an object with `alert(obj)` and in similar contexts. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 We can implement string and numeric conversion by ourselves, using special object methods. +<<<<<<< HEAD +আমরা স্ট্রিং এবং সাংখ্যিক রূপান্তরকে বিশেষ অবজেক্ট মেথডের সাহায্যে নিয়ন্ত্রন করতে পারি। + +৩ ধরণের টাইপ কাস্টিং আছে, এদের বলা হয় "hints", এখানে বিস্তারিত আলোচনা করা হয়েছে [specification](https://tc39.github.io/ecma262/#sec-toprimitive): +======= Now let's get into technical details, because it's the only way to cover the topic in-depth. ## Hints @@ -37,72 +52,103 @@ Now let's get into technical details, because it's the only way to cover the top How does JavaScript decide which conversion to apply? There are three variants of type conversion, that happen in various situations. They're called "hints", as described in the [specification](https://tc39.github.io/ecma262/#sec-toprimitive): +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 `"string"` -: For an object-to-string conversion, when we're doing an operation on an object that expects a string, like `alert`: +: অবজেক্ট হতে স্ট্রিংয়ে রূপান্তরের জন্য, যখন আমরা এমন কোন অপারেশন এক্সিকিউট করি যেটি মান হিসেবে স্ট্রিং আশা করে, যেমন `alert` বা অবজেক্টের প্রপার্টির নাম: ```js - // output + // আউটপুট alert(obj); - // using object as a property key + // প্রপার্টি হিসেবে স্ট্রিং নিতে পারে anotherObj[obj] = 123; ``` `"number"` -: For an object-to-number conversion, like when we're doing maths: +: অবজেক্ট হতে সাংখ্যিক রূপান্তর, যেমন বিভিন্ন গাণিতিক অপারেশনের জন্য: ```js - // explicit conversion + // সরাসরি রূপান্তর let num = Number(obj); - // maths (except binary plus) - let n = +obj; // unary plus + // গাণিতিক অপারেশন(বাইনারি যোগ ব্যাতিত অর্থাৎ obj1 + obj2 কাজ করবে না) + let n = +obj; // ইউনারি যোগ let delta = date1 - date2; - // less/greater comparison + // বড়/ছোট যাচাই let greater = user1 > user2; ``` Most built-in mathematical functions also include such conversion. `"default"` -: Occurs in rare cases when the operator is "not sure" what type to expect. +: যখন অপারেশনটি কী ধরনের মান আশা করে এ ব্যাপারে নিশ্চিত নই। +<<<<<<< HEAD + যেমন স্ট্রিং কনক্যাটেনেশন বা যোগফল উভয়ের জন্য বাইনারি যোগ `+` অপারেশন ব্যবহার করা হয়, সুতরাং এটি স্ট্রিং বা নাম্বার যেকোনটার জন্য কাজ করে। সুতরাং যখন বাইনারি যোগ একটি অবজেক্টকে আর্গুমেন্ট হিসেবে নেয়, এটি `"default"` হিন্ট হিসেবে কনভার্ট হয়। +======= For instance, binary plus `+` can work both with strings (concatenates them) and numbers (adds them). So if a binary plus gets an object as an argument, it uses the `"default"` hint to convert it. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 - Also, if an object is compared using `==` with a string, number or a symbol, it's also unclear which conversion should be done, so the `"default"` hint is used. + এছাড়াও যখন আমরা সমান যাচাইয়ের জন্য `==` ব্যবহার করি এটি সংখ্যা বা নাম্বার উভয় টাইপের জন্য কাজ করে, এক্ষেত্রেও এটি "default"` হিন্ট ব্যবহার করে। ```js - // binary plus uses the "default" hint + // বাইনারি যোগের জন্য ব্যবহার হয় "default" হিন্ট let total = obj1 + obj2; - // obj == number uses the "default" hint + // obj == number এক্ষেত্রেও ব্যবহার হয় "default" হিন্ট if (user == 1) { ... }; ``` - The greater and less comparison operators, such as `<` `>`, can work with both strings and numbers too. Still, they use the `"number"` hint, not `"default"`. That's for historical reasons. + কম্পারিশন অপারেটর যেমন `<` `>`, এটিও নাম্বার এবং স্ট্রিংয়ের জন্য কাজ করে। তবে এটি `"default"` এর বদলে `"number"` হিন্ট ব্যবহার করে। ঐতিহাসিক কারণে এমন হয়। + +<<<<<<< HEAD + তবে প্রাত্যহিক কাজে, আমাদের এই সূক্ষ্ণ ব্যাপারগুলো এত বিশদ মনে রাখার কোন দরকার নেই, কেননা সকল বিল্ট-ইন অবজেক্টে (শুধুমাত্র `Date` অবজেক্ট ব্যাতীত) `"default"` আর `"number"` কে একই ধরা হয়েছে। এবং আমরাও আমাদের অবজেক্টে এভাবে করতে পারি। + +```smart header="কোন `\"boolean\"` হিন্ট নেই" +দয়া করে মনে রাখুন, শুধুমাত্র উপরে উল্লেখিত তিনটি হিন্ট আছে। +কোন ধরণের "boolean" বা অন্য কোন ধরণের হিন্ট নেই, (বুলিয়ানের জন্য যেকোন অবজেক্টের জন্য `true` রিটার্ন করবে। এবং যদি আমরা `"default"` এবং `"number"` কে একটি হিন্ট ধরে নেই, তাহলে বলতে পারি শুধুমাত্র দুই ধরণের কনভার্শন আছে। +``` +======= In practice though, things are a bit simpler. All built-in objects except for one case (`Date` object, we'll learn it later) implement `"default"` conversion the same way as `"number"`. And we probably should do the same. Still, it's important to know about all 3 hints, soon we'll see why. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -**To do the conversion, JavaScript tries to find and call three object methods:** +**এই কনভার্শনের জন্য জাভাস্ক্রিপ্ট ইঞ্জিন অবজেক্টের তিনটি মেথড কল করার চেষ্টা করে:** +<<<<<<< HEAD +1. প্রথমে কল করবে `obj[Symbol.toPrimitive](hint)` - যদি মেথডটি অবজেক্টে প্রপার্টি হিসেবে থাকে তাহলে এটি কল হবে এটি একটি সিম্বল কী(key) `Symbol.toPrimitive` (system symbol)। +2. অন্যথায় যদি হিন্ট `"string"` হয় + - তাহলে `obj.toString()` কে কল করবে না হয় `obj.valueOf()`। +3. অন্যথায় যদি হিন্ট `"number"` বা `"default"` হয় + - তাহলে প্রথমে `obj.valueOf()` কে কল করবে না হয় `obj.toString()`। +======= 1. Call `obj[Symbol.toPrimitive](hint)` - the method with the symbolic key `Symbol.toPrimitive` (system symbol), if such method exists, 2. Otherwise if hint is `"string"` - try calling `obj.toString()` or `obj.valueOf()`, whatever exists. 3. Otherwise if hint is `"number"` or `"default"` - try calling `obj.valueOf()` or `obj.toString()`, whatever exists. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ## Symbol.toPrimitive -Let's start from the first method. There's a built-in symbol named `Symbol.toPrimitive` that should be used to name the conversion method, like this: +চলুন প্রথম মেথডটি সম্পর্কে জানি। একটি বিল্ট-ইন সিম্বল আছে `Symbol.toPrimitive` যেটি টাইপ কনভার্শনের জন্য ব্যবহার করা হয়, এভাবে: ```js obj[Symbol.toPrimitive] = function(hint) { +<<<<<<< HEAD + // অবশ্যই রিটার্ন ভ্যালু প্রিমিটিভ হতে হবে + // hint হতে পারে "string", "number" বা "default" +}; +``` + +এখানে আমরা `user` অবজেক্ট এর জন্য এটি ইমপ্লিমেন্ট করছি: +======= // here goes the code to convert this object to a primitive // it must return a primitive value // hint = one of "string", "number", "default" @@ -112,6 +158,7 @@ obj[Symbol.toPrimitive] = function(hint) { If the method `Symbol.toPrimitive` exists, it's used for all hints, and no more methods are needed. For instance, here `user` object implements it: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run let user = { @@ -124,12 +171,26 @@ let user = { } }; -// conversions demo: alert(user); // hint: string -> {name: "John"} alert(+user); // hint: number -> 1000 alert(user + 500); // hint: default -> 1500 ``` +<<<<<<< HEAD +উপরের কোডে আমরা দেখেছি `user` এটি অটোমেটিক স্ট্রিং কনভার্শনে নাম বা গাণিতিক অপারেশনের জন্য টাকার পরিমান রিটার্ন করে। তিন ধরণের হিন্টকে একটিমাত্র `user[Symbol.toPrimitive]` মেথড দ্বারা নিয়ন্ত্রন করা হচ্ছে। + + +## toString/valueOf + +পুরনো জাভাস্ক্রিপ্টে`toString` এবং `valueOf` নামের দুটি মেথড ছিল। `Symbol` মডার্ন জাভাস্ক্রিপ্টের একটি প্রিমিটিভ টাইপ। সুতরাং আমরা চাইলে es5 স্টাইলেও এটি ইমপ্লিমেন্ট করতে পারি। + +যদি `Symbol.toPrimitive` ইমপ্লিমেন্ট করা না থাকে তখন ইঞ্জিন নিচের মেথডগুলো খুঁজ করে: + +- `toString -> valueOf` "string" কনভার্শনের জন্য। +- অন্যথায় `valueOf -> toString`। + +মেথডগুলো একটি প্রিমিটিভ ভ্যালু রিটার্ন করে। যদি `toString` বা `valueOf` কোন অবজেক্ট রিটার্ন করে, তাহলে এটি উপেক্ষা করে (অনেকটা কোন কনভার্শন মেথড না থাকার মত)। +======= As we can see from the code, `user` becomes a self-descriptive string or a money amount, depending on the conversion. The single method `user[Symbol.toPrimitive]` handles all conversion cases. ## toString/valueOf @@ -142,13 +203,14 @@ If there's no `Symbol.toPrimitive` then JavaScript tries to find methods `toStri Methods `toString` and `valueOf` come from ancient times. They are not symbols (symbols did not exist that long ago), but rather "regular" string-named methods. They provide an alternative "old-style" way to implement the conversion. These methods must return a primitive value. If `toString` or `valueOf` returns an object, then it's ignored (same as if there were no method). +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -By default, a plain object has following `toString` and `valueOf` methods: +ডিফল্টভাবে, একটি অবজেক্ট এভাবে কাজ করে প্রথমে `toString` মেথডকে কল করবে তারপর `valueOf` মেথড: -- The `toString` method returns a string `"[object Object]"`. -- The `valueOf` method returns the object itself. +- `toString` মেথড একটি স্ট্রিং রিটার্ন করে `"[object Object]"`। +- আর `valueOf` মেথড অবজেক্টটিকে রিটার্ন করে। -Here's the demo: +এখানে দেখুন: ```js run let user = {name: "John"}; @@ -157,13 +219,19 @@ alert(user); // [object Object] alert(user.valueOf() === user); // true ``` -So if we try to use an object as a string, like in an `alert` or so, then by default we see `[object Object]`. +যখন আমরা কোন একটি অবজেক্টকে `alert` এর মাধ্যমে দেখাতে চাই, ডিফল্টভাবে এটি দেখাই `[object Object]`। + +<<<<<<< HEAD +এবং `valueOf` কে দেখানো হয়েছে এটি কি রিটার্ন করছে দেখানোর জন্য। আমরা দেখছি এটি অবজেক্টটিকে রিটার্ন করে। +এবার চলুন মেথডসমূহকে ইমপ্লিমেন্ট করি। +======= The default `valueOf` is mentioned here only for the sake of completeness, to avoid any confusion. As you can see, it returns the object itself, and so is ignored. Don't ask me why, that's for historical reasons. So we can assume it doesn't exist. Let's implement these methods to customize the conversion. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -For instance, here `user` does the same as above using a combination of `toString` and `valueOf` instead of `Symbol.toPrimitive`: +যেমন, এখানে `user` এর জন্য `Symbol.toPrimitive` এর পরিবর্তে `toString` এবং `valueOf` ইমপ্লিমেন্ট করছি: ```js run let user = { @@ -187,9 +255,9 @@ alert(+user); // valueOf -> 1000 alert(user + 500); // valueOf -> 1500 ``` -As we can see, the behavior is the same as the previous example with `Symbol.toPrimitive`. +এখানে আমরা দেখতে পাচ্ছি এরা `Symbol.toPrimitive` এর মতই কাজ করছে। -Often we want a single "catch-all" place to handle all primitive conversions. In this case, we can implement `toString` only, like this: +অনেক সময় সব ধরণের কনভার্শনের জন্য আমরা শুধুমাত্র একটি মান পেতে চাই। এক্ষেত্রে আমরা `toString` ব্যবহার করতে পারি, এভাবে: ```js run let user = { @@ -204,47 +272,61 @@ alert(user); // toString -> John alert(user + 500); // toString -> John500 ``` -In the absence of `Symbol.toPrimitive` and `valueOf`, `toString` will handle all primitive conversions. +অর্থাৎ `Symbol.toPrimitive` না থাকলে এটি প্রিমিটিভ কনভার্শনের জন্য `valueOf`, `toString` কে কল করে। ### A conversion can return any primitive type -The important thing to know about all primitive-conversion methods is that they do not necessarily return the "hinted" primitive. +সকল ধরণের প্রিমিটিভ কনভার্শনের জন্য একটি গুরুত্বপূর্ন ব্যাপার জেনে রাখা উচিত এটি হিন্ট অনুযায়ী মান রিটার্ন করবে এমন নিশ্চয়তা নেই। +<<<<<<< HEAD +যেমন `toString` এর জন্য স্ট্রিং রিটার্ন অথবা `Symbol.toPrimitive` মেথডটি সাংখ্যিক হিন্টের জন্য `"number"` রিটার্ন করবে এমন নই। +======= There is no control whether `toString` returns exactly a string, or whether `Symbol.toPrimitive` method returns a number for the hint `"number"`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -The only mandatory thing: these methods must return a primitive, not an object. +শুধুমাত্র একটি বিষয় আবশ্যক: এই মেথডসমূহ অবশ্যই একটি প্রিমিটিভ মান রিটার্ন করবে, কোন অবজেক্ট না। -```smart header="Historical notes" -For historical reasons, if `toString` or `valueOf` returns an object, there's no error, but such value is ignored (like if the method didn't exist). That's because in ancient times there was no good "error" concept in JavaScript. +```smart header="ঐতিহাসিক নোট" +পুরনো জাভাস্ক্রিপ্ট এ `toString` বা `valueOf` অবজেক্ট রিটার্ন করতে পারত, এজন্য কোন এরর দেখাত না। এর মানটি উপেক্ষা করত। কেননা আগে জাভাস্ক্রিপ্টের "error" হ্যান্ডেলিং তেমন স্মার্ট ছিল না। +<<<<<<< HEAD +বিপরীতে, `Symbol.toPrimitive` এ *অবশ্যই* একটি প্রিমিটিভ ভ্যালু রিটার্ন করতে হবে, অন্যথায় এরর দেখাবে। +======= In contrast, `Symbol.toPrimitive` is stricter, it *must* return a primitive, otherwise there will be an error. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ``` -## Further conversions +## আরো কনভার্শন -As we know already, many operators and functions perform type conversions, e.g. multiplication `*` converts operands to numbers. +ইতোমধ্যে আমরা জেনেছি, অনেক অপারেটর এবং ফাংশন এর জন্য টাইপ কনভার্শন কাজ করে, যেমন গুনফল `*` বের করতে টাইপ কনভার্শন হয়। +<<<<<<< HEAD +যদি আমরা কোন অবজেক্টকে আর্গুমেন্ট হিসেবে পাঠায়, তাহলে এটি দুটি ধাপ মেনে চলে: +1. উপরে বর্ণিত নিয়ম অনুযায়ী এটি প্রিমিটিভে রূপান্তর হবে। +2. যদি প্রিমিটিভের টাইপ সঠিক না হয় তাহলে এটি সঠিক টাইপে কনভার্ট হবে। +======= If we pass an object as an argument, then there are two stages of calculations: 1. The object is converted to a primitive (using the rules described above). 2. If necessary for further calculations, the resulting primitive is also converted. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -For instance: +যেমন: ```js run let obj = { - // toString handles all conversions in the absence of other methods + // সকল ধরণের কনভার্শনের জন্য এটি কল হবে toString() { return "2"; } }; -alert(obj * 2); // 4, object converted to primitive "2", then multiplication made it a number +alert(obj * 2); // 4, প্রথমে এটি স্ট্রিংয়ে রূপান্তর হবে "2", তারপর নাম্বারে পরিবর্তন হয়ে গুনের কাজ করবে ``` -1. The multiplication `obj * 2` first converts the object to primitive (that's a string `"2"`). -2. Then `"2" * 2` becomes `2 * 2` (the string is converted to number). +1. প্রথম এটি প্রিমিটিভে রূপান্তর হবে `obj * 2` (যেটি একটি স্ট্রিং `"2"`)। +2. তারপর `"2" * 2` হবে `2 * 2` (স্ট্রিংটি নাম্বারে কনভার্ট হবে)। -Binary plus will concatenate strings in the same situation, as it gladly accepts a string: +বাইনারি যোগের জন্য স্ট্রিং কনক্যাট হবে, যেহেতু এটি স্ট্রিং গ্রহণ করে: ```js run let obj = { @@ -253,22 +335,44 @@ let obj = { } }; +<<<<<<< HEAD +alert(obj + 2); // 22 ("2" + 2), স্ট্রিং প্রিমিটিভে রূপান্তর হয়ে কনক্যাট হবে +======= alert(obj + 2); // "22" ("2" + 2), conversion to primitive returned a string => concatenation +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ``` -## Summary +## সারাংশ -The object-to-primitive conversion is called automatically by many built-in functions and operators that expect a primitive as a value. +অনেক বিল্ট-ইন ফাংশনের জন্য অবজেক্ট থেকে প্রিমিটিভ স্বয়ংক্রিয়ভাবে কল হয় এবং এরা ভ্যালু হিসেবে একটি প্রিমিটিভ আশা করে। +<<<<<<< HEAD +৩ ধরণের টাইপ(এদের হিন্ট বলা হয়) আছে: +- `"string"` (`alert` এবং অন্যান্য কিছু অপারেশনের জন্য স্ট্রিং প্রয়োজন হয় যেমন অবজেক্টে প্রপার্টি সেট করতে) +- `"number"` (গাণিতিক কাজে) +- `"default"` (কিছু অনিশ্চিত অপারেশন আছে যেমন বাইনারি যোগ কনক্যাট এবং যোগের জন্য ব্যবহার হয়) + +বেশিরভাগ অপারেশন কী টাইপের অপারেটর প্রয়োজন তা সুনির্দিষ্টভাবে উল্লেখ আছে। তবে কিছু অপারেশন আছে যারা অপারেটর এর ব্যাপারে অনিশ্চিত এক্ষেত্রে `"default"` হিন্ট ব্যবহার হয়। সাধারণত বেশিরভাগ বিল্ট-ইন অবজেক্ট `"default"` এর জন্য `"number"` হিন্ট ব্যবহার করে, সুতরাং আমরাও এই দুটি টাইপকে একত্রে করে নিতে পারি। +======= There are 3 types (hints) of it: - `"string"` (for `alert` and other operations that need a string) - `"number"` (for maths) - `"default"` (few operators, usually objects implement it the same way as `"number"`) The specification describes explicitly which operator uses which hint. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 + +কনভার্শন অ্যালগরিদম: -The conversion algorithm is: +<<<<<<< HEAD +1. প্রথমে `obj[Symbol.toPrimitive](hint)` কে কল করবে, যদি এটি থাকে। +2. অন্যথায় যদি হিন্ট `"string"` হয় + - তাহলে `obj.toString()` কে কল করবে না হয় `obj.valueOf()`। +3. অন্যথায় যদি হিন্ট `"number"` বা `"default"` হয় + - তাহলে প্রথমে `obj.valueOf()` কে কল করবে না হয় `obj.toString()`। +তবে, প্রায়সময় সকল ধরণের হিন্টের জন্য `obj.toString()` কে ব্যবহার করতে পারি, কেননা এটি অবজেক্টের পঠনযোগ্য একটি মান প্রধানে সক্ষম, যার ফলে সহজে ডিবাগ বা লগ করা যায়। +======= 1. Call `obj[Symbol.toPrimitive](hint)` if the method exists, 2. Otherwise if hint is `"string"` - try calling `obj.toString()` or `obj.valueOf()`, whatever exists. @@ -278,3 +382,4 @@ The conversion algorithm is: All these methods must return a primitive to work (if defined). In practice, it's often enough to implement only `obj.toString()` as a "catch-all" method for string conversions that should return a "human-readable" representation of an object, for logging or debugging purposes. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 diff --git a/1-js/05-data-types/04-array/article.md b/1-js/05-data-types/04-array/article.md index 629a7c77f..f2121a308 100644 --- a/1-js/05-data-types/04-array/article.md +++ b/1-js/05-data-types/04-array/article.md @@ -1,31 +1,31 @@ -# Arrays +# অ্যারে -Objects allow you to store keyed collections of values. That's fine. +আমরা দেখেছি অবজেক্ট এর কালেকশনসমূহ কী এবং ভ্যালু হিসেবে থাকে। -But quite often we find that we need an *ordered collection*, where we have a 1st, a 2nd, a 3rd element and so on. For example, we need that to store a list of something: users, goods, HTML elements etc. +কিন্তু প্রায় সময় আমাদের *ordered collection* এরও দরকার হয়, যেখানে এলিমেন্টসমূহ ক্রম অনুযায়ী ১ম, ২য়, ৩য় এভাবে থাকবে। উদাহরণস্বরূপ users, goods, HTML elements ইত্যাদির লিস্ট। -It is not convenient to use an object here, because it provides no methods to manage the order of elements. We can’t insert a new property “between” the existing ones. Objects are just not meant for such use. +এক্ষেত্রে অবজেক্ট ব্যবহার করা তেমন সুবিধাজনক না, কেননা অবজেক্ট ক্রম নিয়ন্ত্রণের কোন মেথড প্রদান করে না। এভং আমরা দুটি এলিমেন্টের মাঝে নতুন কোন উপাদান সংযুক্ত করতে পারব না। -There exists a special data structure named `Array`, to store ordered collections. +তবে জাভাস্ক্রিপ্টে এই ধরণের ক্রম কালেকশন নিয়ন্ত্রণের জন্য আরেকটি বিশেষ ডাটা স্ট্রাকচার আছে যার নাম `Array`। -## Declaration +## অ্যারে ডিক্লেয়ার -There are two syntaxes for creating an empty array: +আমরা দুইভাবে অ্যারে ডিক্লেয়ার করতে পারি: ```js let arr = new Array(); let arr = []; ``` -Almost all the time, the second syntax is used. We can supply initial elements in the brackets: +বেশিরভাগ সময় আমরা দ্বিতীয় সিন্ট্যাক্সটি ব্যবহার করি। আমরা শুরুতে এলিমেন্ট সমূহও অ্যাসাইন করে দিতে পারি: ```js let fruits = ["Apple", "Orange", "Plum"]; ``` -Array elements are numbered, starting with zero. +অ্যারের এলিমেন্ট সমূহ ক্রম নাম্বার অনুসারে থাকে, এবং এটি শুন্য থেকে শুরু হয়, এদের বলা হয় *index*। -We can get an element by its number in square brackets: +আমরা তৃতীয় বন্ধনীতে *index* নাম্বার লিখার মাধ্যমে এলিমেন্ট সমূহ অ্যাক্সেস করতে পারি: ```js run let fruits = ["Apple", "Orange", "Plum"]; @@ -35,19 +35,19 @@ alert( fruits[1] ); // Orange alert( fruits[2] ); // Plum ``` -We can replace an element: +আমরা কোন একটি এলিমেন্টের মান পরিবর্তনও করতে পারি: ```js fruits[2] = 'Pear'; // now ["Apple", "Orange", "Pear"] ``` -...Or add a new one to the array: +...অথবা নতুন একটি এলিমেন্ট সংযুক্ত করতে পারি: ```js fruits[3] = 'Lemon'; // now ["Apple", "Orange", "Pear", "Lemon"] ``` -The total count of the elements in the array is its `length`: +কোন অ্যারেতে সর্বমোট কতটি এলিমেন্ট আছে তা অ্যারের `length` প্রপার্টির মাধ্যমে জানতে পারি: ```js run let fruits = ["Apple", "Orange", "Plum"]; @@ -55,7 +55,7 @@ let fruits = ["Apple", "Orange", "Plum"]; alert( fruits.length ); // 3 ``` -We can also use `alert` to show the whole array. +এছাড়াও `alert` এর মাধ্যমে সম্পূর্ণ অ্যারেটি দেখতে পারি। ```js run let fruits = ["Apple", "Orange", "Plum"]; @@ -63,24 +63,24 @@ let fruits = ["Apple", "Orange", "Plum"]; alert( fruits ); // Apple,Orange,Plum ``` -An array can store elements of any type. +অ্যারেতে যেকোন টাইপের এলিমেন্ট রাখতে পারি। -For instance: +উদাহরণস্বরূপ: ```js run no-beautify -// mix of values +// বিভিন্ন টাইপের এলিমেন্ট let arr = [ 'Apple', { name: 'John' }, true, function() { alert('hello'); } ]; -// get the object at index 1 and then show its name +// অ্যারের দ্বিতীয় এলিমেন্টটি একটি অবজেক্ট যার একটি প্রপার্টি name alert( arr[1].name ); // John -// get the function at index 3 and run it +// index 3 একটি ফাংশন চলুন আমরা এটিকে এভাবে এক্সিকিউট করতে পারি arr[3](); // hello ``` ````smart header="Trailing comma" -An array, just like an object, may end with a comma: +অ্যারে অবজেক্টের মত, যার শেষে কমা থাকতে পারে, এটিকে বলা হয় "trailing comma" রুলস বা স্ট্যাইল: ```js let fruits = [ "Apple", @@ -89,7 +89,7 @@ let fruits = [ ]; ``` -The "trailing comma" style makes it easier to insert/remove items, because all lines become alike. +"trailing comma" স্ট্যাইল এর জন্য কোন আইটেম সংযোগ বা বাদ দেয়া সহজ হয়। ```` ## Get last elements with "at" @@ -125,47 +125,53 @@ In other words, `arr.at(i)`: - is exactly the same as `arr[i]`, if `i >= 0`. - for negative values of `i`, it steps back from the end of the array. -## Methods pop/push, shift/unshift +## pop/push, shift/unshift মেথডস -A [queue](https://en.wikipedia.org/wiki/Queue_(abstract_data_type)) is one of the most common uses of an array. In computer science, this means an ordered collection of elements which supports two operations: +কিউ হল অ্যারের সবচেয়ে বেশি ব্যবহৃত একটি ডাটা স্ট্রাকচার [queue](https://en.wikipedia.org/wiki/Queue_(abstract_data_type))। কম্পিউটার সায়েন্সে, এটি দ্বারা বুঝায় কোন ক্রম এলিমেন্টে এর দুটি অপারেশন আছে: -- `push` appends an element to the end. -- `shift` get an element from the beginning, advancing the queue, so that the 2nd element becomes the 1st. +- `push` কালেকশনে সবার শেষে একটি এলিমেন্ট যোগ করা। +- `shift` কালেকশনের প্রথম এলিমেন্টটি রিটার্ন করবে, সুতরাং দ্বিতীয় এলিমেন্টটি প্রথম এলিমেন্ট হিসেবে বিবেচিত হবে। ![](queue.svg) -Arrays support both operations. +অ্যারে উভয়ই অপারেশন সাপোর্ট করে। -In practice we need it very often. For example, a queue of messages that need to be shown on-screen. +এটি আমরা প্রায়ই ব্যবহার করি। উদাহরণস্বরপ, স্ক্রীনে কোন মেসেজ কিউ হিসেবে দেখাতে। -There's another use case for arrays -- the data structure named [stack](https://en.wikipedia.org/wiki/Stack_(abstract_data_type)). +আরো একটি ডাটা স্ট্রাকচার আছে [stack](https://en.wikipedia.org/wiki/Stack_(abstract_data_type)) এটিও অ্যারের সাহায্যে ইমপ্লিমেন্ট করা যায়। -It supports two operations: +এরও দুটি অপারেশন আছে: -- `push` adds an element to the end. -- `pop` takes an element from the end. +- `push` সবার শেষে একটি এলিমেন্ট সংযুক্ত করে। +- `pop` সবার শেষ হতে একটি এলিমেন্ট গ্রহন করে। -So new elements are added or taken always from the "end". +সুতরাং এটি অ্যারের সর্বশেষে একটি এলিমেন্ট সংযুক্ত বা গ্রহন করে। -A stack is usually illustrated as a pack of cards: new cards are added to the top or taken from the top: +স্ট্যাককে আপনে কার্ডের প্যাকেটের সাথে তুলনা করতে পারেন: নতুন কার্ড সবার উপরে থাকবে অথবা কোন একটি কার্ড নেয়া লাগলে সবার উপর হতে নেয়া লাগবে: ![](stack.svg) -For stacks, the latest pushed item is received first, that's also called LIFO (Last-In-First-Out) principle. For queues, we have FIFO (First-In-First-Out). +স্ট্যাক LIFO (Last-In-First-Out) প্রিন্সিপাল অনুসারে কাজ করে, অন্যদিকে কিউ FIFO (First-In-First-Out) অনুসারে কাজ করে। +<<<<<<< HEAD +জাভাস্ক্রিপ্টে অ্যারের সাহায্যে স্ট্যাক বা কিউ উভয়ই ইমপ্লিমেন্ট করা যায়। কেননা অ্যারেতে সবার শেষে বা শুরুতে কোন আইটেম সংযুক্ত বা বাদ করা যায়। + +কম্পিউটার সায়েন্সে এই ধরণের ডাটা স্ট্রাকচার সমূহকে বলা হয় [deque](https://en.wikipedia.org/wiki/Double-ended_queue)ওঁ। +======= Arrays in JavaScript can work both as a queue and as a stack. They allow you to add/remove elements, both to/from the beginning or the end. In computer science, the data structure that allows this, is called [deque](https://en.wikipedia.org/wiki/Double-ended_queue). +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -**Methods that work with the end of the array:** +**অ্যারের শেষ এলিমেন্ট নিয়ে কাজ করে মেথডদুটি হল:** `pop` -: Extracts the last element of the array and returns it: +: অ্যারের শেষ এলিমেন্টটি রিমুভড করে এবং এলিমেন্টটি রিটার্ন করে: ```js run let fruits = ["Apple", "Orange", "Pear"]; - alert( fruits.pop() ); // remove "Pear" and alert it + alert( fruits.pop() ); // অ্যারে হতে "Pear" রিমুভড হবে এবং "Pear" রিটার্ন করবে alert( fruits ); // Apple, Orange ``` @@ -173,7 +179,7 @@ In computer science, the data structure that allows this, is called [deque](http Both `fruits.pop()` and `fruits.at(-1)` return the last element of the array, but `fruits.pop()` also modifies the array by removing it. `push` -: Append the element to the end of the array: +: অ্যারেতে সবার শেষে নতুন একটি এলিমেন্ট যোগ করবে: ```js run let fruits = ["Apple", "Orange"]; @@ -183,23 +189,23 @@ In computer science, the data structure that allows this, is called [deque](http alert( fruits ); // Apple, Orange, Pear ``` - The call `fruits.push(...)` is equal to `fruits[fruits.length] = ...`. + `fruits.push(...)` এর পরিবর্তে `fruits[fruits.length] = ...` এভাবেও এলিমেন্ট যোগ করতে পারি। -**Methods that work with the beginning of the array:** +**অ্যারের শুরুর এলিমেন্ট নিয়ে কাজ করে মেথডদুটি হল:** `shift` -: Extracts the first element of the array and returns it: +: অ্যারের প্রথম এলিমেন্টটি রিমুভড করে এবং এলিমেন্টটি রিটার্ন করে: ```js run let fruits = ["Apple", "Orange", "Pear"]; - alert( fruits.shift() ); // remove Apple and alert it + alert( fruits.shift() ); // অ্যারে হতে "Apple" রিমুভড হবে এবং "Apple" রিটার্ন করবে alert( fruits ); // Orange, Pear ``` `unshift` -: Add the element to the beginning of the array: +: অ্যারেতে সবার শুরুতে নতুন একটি এলিমেন্ট যোগ করবে: ```js run let fruits = ["Orange", "Pear"]; @@ -209,7 +215,7 @@ In computer science, the data structure that allows this, is called [deque](http alert( fruits ); // Apple, Orange, Pear ``` -Methods `push` and `unshift` can add multiple elements at once: +`push` এবং `unshift` এর সাহায্যে একবারে একাধিক এলিমেন্ট যোগ করতে পারি: ```js run let fruits = ["Apple"]; @@ -221,20 +227,20 @@ fruits.unshift("Pineapple", "Lemon"); alert( fruits ); ``` -## Internals +## ইন্টারনাল -An array is a special kind of object. The square brackets used to access a property `arr[0]` actually come from the object syntax. That's essentially the same as `obj[key]`, where `arr` is the object, while numbers are used as keys. +অ্যারে হল একটি বিশেষ ধরণের অবজেক্ট। সাধারণত অ্যারের কোন প্রপার্টি আমরা এভাবে অ্যাক্সেস করি `arr[0]`, আসলে এটি অবজেক্ট অ্যাক্সেসের একটি সিনট্যাক্স `obj[key]` এর মত। এখানে `arr` হল একটি অবজেক্ট আর *index* হল তার `key`. -They extend objects providing special methods to work with ordered collections of data and also the `length` property. But at the core it's still an object. +এটি অবজেক্ট কে এক্সট্যান্ড করে বিভিন্ন বিশেষ মেথড ডিক্লেয়ার করে এবং সাথে `length` প্রপার্টিও। -Remember, there are only eight basic data types in JavaScript (see the [Data types](info:types) chapter for more info). Array is an object and thus behaves like an object. +মনে রাখুন, জাভাস্ক্রিপ্টে শুধুমাত্র বেসিক আটটি ডাটা টাইপ আছে (আরো বিস্তারিত এখানে দেখুন [Data types](info:types))। যেহেতু অ্যারে একটি অবজেক্ট সুতরাং এরা অবজেক্টের মত আচরণ করে। -For instance, it is copied by reference: +উদাহরণস্বরূপ, অ্যারে কপি হয় রেফারেন্স অনুসারে: ```js run let fruits = ["Banana"] -let arr = fruits; // copy by reference (two variables reference the same array) +let arr = fruits; // copy by reference (এখানে দুটি ভ্যারিয়েবলই একই রেফারেন্স নির্দেশ করে) alert( arr === fruits ); // true @@ -243,75 +249,81 @@ arr.push("Pear"); // modify the array by reference alert( fruits ); // Banana, Pear - 2 items now ``` +<<<<<<< HEAD +...তবে ইন্টারনাল রিফ্রেশেন্টেশন অ্যারেকে বিশেষ সুবিধা দেয়। জাভাস্ক্রিপ্ট ইঞ্জিন এলিমেন্ট সমূহকে মেমোরিতে পাশাপাশি ক্রম অনুসারে সংরক্ষণ করে, যার ফলে এদের মধ্যে বিভিন্ন অপারেশন অপ্টিমাইজ করে চালানো যায়, এবং এরা দ্রুত কাজ করে। +======= ...But what makes arrays really special is their internal representation. The engine tries to store its elements in the contiguous memory area, one after another, just as depicted on the illustrations in this chapter, and there are other optimizations as well, to make arrays work really fast. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -But they all break if we quit working with an array as with an "ordered collection" and start working with it as if it were a regular object. +তবে যদি আমরা কোন একটি অ্যারের "ordered collection" কে নষ্ট করে ফেলি, এবং এদের সাধারণ অবজেক্ট হিসেবে ডিক্লেয়ার করি তাহলে অ্যারের সুবিধাগুলো থেকে আমরা বঞ্চিত হব। -For instance, technically we can do this: +উদাহরণস্বরূপ, এটি করা সম্ভব: ```js let fruits = []; // make an array -fruits[99999] = 5; // assign a property with the index far greater than its length +fruits[99999] = 5; // আমরা ইন্ডেক্স হিসেবে একটি প্রপার্টি সেট করেছি যার length অনেক বড় -fruits.age = 25; // create a property with an arbitrary name +fruits.age = 25; // এবং এখানে কী হিসেবে একটি স্ট্রিং সেট করেছি ``` -That's possible, because arrays are objects at their base. We can add any properties to them. +এটি করা সম্ভব, কেননা অ্যারে হল একটি অবজেক্ট। সুতরাং আমরা চাইলে এভাবে প্রপার্টি সেট করতে পারি। -But the engine will see that we're working with the array as with a regular object. Array-specific optimizations are not suited for such cases and will be turned off, their benefits disappear. +এক্ষেত্রে ইঞ্জিন দেখবে আমরা অ্যারেকে রেগুলার অবজেক্ট হিসেবে ব্যবহার করছি, যার ফলে অ্যারেটি আর অপ্টিমাইজ উপায়ে কাজ করবে না, তখন এটি সাধারণ অবজেক্টের মত কাজ করবে, এবং আমরা অ্যারের সুবিধা সমূহ আর পাব না। -The ways to misuse an array: +নিম্নোক্ত কারনে অ্যারে অপ্টিমাইজ উপায়ে কাজ করবে না: -- Add a non-numeric property like `arr.test = 5`. -- Make holes, like: add `arr[0]` and then `arr[1000]` (and nothing between them). -- Fill the array in the reverse order, like `arr[1000]`, `arr[999]` and so on. +- প্রপার্টি হিসেবে সংখ্যা ব্যাতীত অন্য কিছু অ্যাসাইন করা `arr.test = 5`। +- যথাযথ ইনডেক্সিং না করা, যেমন: `arr[0]` এর পর `arr[1000]` (এখানে মাঝখানে আর কোন ইনডেক্স ব্যবহারকরা হয়নি)। +- অ্যারের ইন্ডেক্সিংকে কে অধঃক্রমে সাজালে, যেমন `arr[1000]`, `arr[999]` এভাবে। -Please think of arrays as special structures to work with the *ordered data*. They provide special methods for that. Arrays are carefully tuned inside JavaScript engines to work with contiguous ordered data, please use them this way. And if you need arbitrary keys, chances are high that you actually require a regular object `{}`. +আমাদের মনে রাখতে হবে জাভাস্ক্রিপ্টে অ্যারে একটি স্পেশাল স্ট্রাকচার যা আমাদের ডাটাকে উর্ধক্রমে সংরক্ষণ করতে দেয়। এবং এটি কিছু বিশেষ মেথড প্রদান করে। যেহুতু জাভাস্ক্রিপ্ট ইঞ্জিন অ্যারের ডাটাগুলো মেমোরিতে পাশাপাশি সংরক্ষণ করে সুতরাং এদের এভাবেই ব্যবহার করা উচিত, অন্যথায় আমরা বিশেষ সুবিধাসমূহ পাব না, যদি আমাদের কী ভ্যালু অনুযায়ী কালেকশন লাগে তাহলে আমরা রেগুলার অবজেক্ট `{}` ব্যবহার করব। -## Performance +## পারফরম্যান্স -Methods `push/pop` run fast, while `shift/unshift` are slow. +`push/pop` মেথড দুটি দ্রুত কাজ করে, অন্যদিকে `shift/unshift` এর পারফরম্যান্স ধীরগতির। ![](array-speed.svg) -Why is it faster to work with the end of an array than with its beginning? Let's see what happens during the execution: +কেন অ্যারের শুরুর দিকের এলিমেন্ট সমূহ নিয়ে চালানো অপারেশনসমূহের পারফরম্যান্স ধীরগতির? চলুন এক্সিকিউশন টাইমে কিভাবে কাজ করে তা দেখি: ```js fruits.shift(); // take 1 element from the start ``` +<<<<<<< HEAD +এটি শুধুমাত্র অ্যারের `0` নং ইনডেক্স প্রদান করে রিমুভ করে না পাশাপাশি অ্যারের বাকী এলিমেন্ট সমূহকে পুনরায় ইনডেক্সিং করে। +======= It's not enough to take and remove the element with the index `0`. Other elements need to be renumbered as well. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -The `shift` operation must do 3 things: +`shift` অপারেশনে ৩টি ব্যাপার ঘটে: -1. Remove the element with the index `0`. -2. Move all elements to the left, renumber them from the index `1` to `0`, from `2` to `1` and so on. -3. Update the `length` property. +1. `0` নং ইনডেক্স এর এলিমেন্টটি রিমুভড করে। +2. বাকী এলিমেন্ট সমূহকে পুনরায় ইনডেক্সিং করে, ইনডেক্স `1` হবে `0`, ইনডেক্স `2` হবে `1` এভাবে শেষ এলিমেন্টটি পর্যন্ত চলতে থাকে। +3. `length` প্রপার্টিটি আপডেট করে। ![](array-shift.svg) -**The more elements in the array, the more time to move them, more in-memory operations.** +**অসংখ্য এলিমেন্টের জন্য সম্পূর্ণ অ্যারেটি পুনরায় ইন্ডেক্সিং হয়, যার ফলে মেমোরিতে অসংখ্য অপারেশন চলে** -The similar thing happens with `unshift`: to add an element to the beginning of the array, we need first to move existing elements to the right, increasing their indexes. +`unshift` এর ক্ষেত্রেও একই ব্যাপার ঘটে: অ্যারের শুরুর ইনডেক্স কে প্রতিস্থাপন করে, এবং বাকী এলিমেন্ট সমূহকে প্রতিটিকে ডানে এক ঘর করে সরায়। -And what's with `push/pop`? They do not need to move anything. To extract an element from the end, the `pop` method cleans the index and shortens `length`. +`push/pop` এর ক্ষেত্রে কি ঘটে? এক্ষেত্রে এলিমেন্ট সমূহকে সরানো লাগেনা। `push` মেথডের জন্য অ্যারের `length` প্রপার্টির মান এক বাড়াবে এবং নতুন ইনডেক্স এ একটি এলিমেন্ট সংযুক্ত করবে। `pop` মেথডের জন্য অ্যারের শেষ এলিমেন্টটি নির্ণয় করে অ্যারে হতে ডিলিট করবে, এবং `length` প্রপার্টির মান এক কমাবে। -The actions for the `pop` operation: +`pop` মেথডটি এভাবে কাজ করে: ```js -fruits.pop(); // take 1 element from the end +fruits.pop(); // শেষ হতে একটি এলিমেন্ট নেয় ``` ![](array-pop.svg) -**The `pop` method does not need to move anything, because other elements keep their indexes. That's why it's blazingly fast.** - -The similar thing with the `push` method. +**`push/pop` মেথডের ক্ষেত্রে এলিমেন্ট সমূহের ইনডেক্স এ কোন পরিবর্তন হয় না, ফলে এই অপারেশন দুটি দ্রুতগতির** ## Loops -One of the oldest ways to cycle array items is the `for` loop over indexes: +কোন একটি অ্যারের আইটেম সমূহকে `for` লুপে অ্যাক্সেস করার উপায় হল ইনডেক্স ব্যবহার করা: ```js run let arr = ["Apple", "Orange", "Pear"]; @@ -323,7 +335,7 @@ for (let i = 0; i < arr.length; i++) { } ``` -But for arrays there is another form of loop, `for..of`: +তবে আমরা আরো একটি উপায়ে ইটারেট করতে পারি, `for..of`: ```js run let fruits = ["Apple", "Orange", "Plum"]; @@ -334,9 +346,9 @@ for (let fruit of fruits) { } ``` -The `for..of` doesn't give access to the number of the current element, just its value, but in most cases that's enough. And it's shorter. +`for..of` এটি আমাদের কারেন্ট এলিমেন্ট এর ইনডেক্স রিটার্ন এর পরিবর্তে শুধুমাত্র ভ্যালু টা রিটার্ন করে, এবং বেশিরভাগ ক্ষেত্রে এটি দ্বারাই কাজ হয়ে যায়, এবং এটি শর্টহ্যান্ডও। -Technically, because arrays are objects, it is also possible to use `for..in`: +আবার, যেহেতু অ্যারে একটি অবজেক্ট, সুতরাং `for..in` এর সাহায্যেও আমরা একে ইটারেট করতে পারি: ```js run let arr = ["Apple", "Orange", "Pear"]; @@ -348,7 +360,7 @@ for (let key in arr) { } ``` -But that's actually a bad idea. There are potential problems with it: +তবে এই উপায়টি খুব ভাল না, এটির কিছু সমস্যা হতে পারে: 1. The loop `for..in` iterates over *all properties*, not only the numeric ones. @@ -359,11 +371,11 @@ But that's actually a bad idea. There are potential problems with it: Generally, we shouldn't use `for..in` for arrays. -## A word about "length" +## "length" নিয়ে বিস্তারিত -The `length` property automatically updates when we modify the array. To be precise, it is actually not the count of values in the array, but the greatest numeric index plus one. +যখন আমরা অ্যারেতে কোন পরিবর্তন করি তখন `length` প্রপার্টিটি পরিবর্তন হয়। তবে একটি ব্যাপার এটি আমাদের অ্যারের মোট এলিমেন্ট নির্দেশ করে না, তবে সবচেয়ে বড় ইনডেক্স এর সাথে ১ যোগ করে মানটি `length` প্রপার্টিটি সেট হয়। -For instance, a single element with a large index gives a big length: +উদাহরণস্বরূপ, কোন একটি খালি অ্যারেকে র‍্যান্ডম একটি সংখ্যা দ্বারা ইনডেক্স করলাম: ```js run let fruits = []; @@ -372,38 +384,46 @@ fruits[123] = "Apple"; alert( fruits.length ); // 124 ``` -Note that we usually don't use arrays like that. +তবে সাধারণত অ্যারেকে আমরা এভাবে ব্যবহার করিনা। -Another interesting thing about the `length` property is that it's writable. +এছাড়াও আরো একটি মজার ব্যাপার হল আমরা `length` প্রপার্টিকে পরিবর্তন করতে পারব। -If we increase it manually, nothing interesting happens. But if we decrease it, the array is truncated. The process is irreversible, here's the example: +যদি আমরা `length` প্রপার্টির মান বৃদ্ধি করি তাহলে কিছু ঘটবে না, তবে যদি আমরা মানটি হ্রাস করি, তখন অ্যারেটি কেটে যাবে। এবং এটি অপরিবর্তনীয়, নিচের উদাহরণটি দেখুন: ```js run let arr = [1, 2, 3, 4, 5]; -arr.length = 2; // truncate to 2 elements +arr.length = 2; // অ্যারের শুরুর দুটি উপাদান কেটে নিলাম alert( arr ); // [1, 2] -arr.length = 5; // return length back -alert( arr[3] ); // undefined: the values do not return +arr.length = 5; // পুনরায় আপডেট করলাম +alert( arr[3] ); // পূর্বের ভ্যালু আর ফেরত পাব না ``` -So, the simplest way to clear the array is: `arr.length = 0;`. +সুতরাং কোন অ্যারেকে ক্লিয়ার করার সহজ উপায় হল: `arr.length = 0;` সেট করা। ## new Array() [#new-array] -There is one more syntax to create an array: +অ্যারে ডিক্লেয়ার করার আরো একটি উপায় আছে: ```js let arr = *!*new Array*/!*("Apple", "Pear", "etc"); ``` +<<<<<<< HEAD +এটির ব্যবহার কদাচিৎ, কেননা স্কয়ার ব্রাকেট সংক্ষিপ্ত `[]`। Also there's a tricky feature with it. +======= It's rarely used, because square brackets `[]` are shorter. Also, there's a tricky feature with it. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -If `new Array` is called with a single argument which is a number, then it creates an array *without items, but with the given length*. +`new Array` একটি `number` টাইপ আর্গুমেন্ট নিতে পারে, যদি আমরা `number` প্রদান করি তাহলে অ্যারেটি এভাবে তৈরি হবে: *একটি নির্দিষ্ট length থাকবে তবে কোন আইটেম থাকবে না*। +<<<<<<< HEAD +উদাহরণস্বরূপ: +======= Let's see how one can shoot themselves in the foot: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run let arr = new Array(2); // will it create an array of [2] ? @@ -413,11 +433,17 @@ alert( arr[0] ); // undefined! no elements. alert( arr.length ); // length 2 ``` +<<<<<<< HEAD +উপরের কোডে, `new Array(number)` এর সকল ইনডেক্স এর মান `undefined` দেখাবে। + +এই ধরণের সারপ্রাইজ এড়াতে আমরা স্কয়ার ব্রাকেট ব্যবহার করি। +======= To avoid such surprises, we usually use square brackets, unless we really know what we're doing. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ## Multidimensional arrays -Arrays can have items that are also arrays. We can use it for multidimensional arrays, for example to store matrices: +অ্যারের এলিমেন্টসমূহ অ্যারে হতে পারে, এদের বলা হয় মাল্টিডাইমেনশন অ্যারে। মাল্টিডাইমেনশন অ্যারের সাহায্যে আমরা ম্যাট্রিক্স ডিক্লেয়ার করতে পারি: ```js run let matrix = [ @@ -431,9 +457,9 @@ alert( matrix[0][1] ); // 2, the second value of the first inner array ## toString -Arrays have their own implementation of `toString` method that returns a comma-separated list of elements. +অ্যারের একটি নিজস্ব `toString` মেথড আছে যা অ্যারের ভ্যালু সমূহকে কমা-সেপারেটেড স্ট্রিং হিসেবে রিটার্ন করে। -For instance: +উদাহরণস্বরূপ: ```js run @@ -443,7 +469,7 @@ alert( arr ); // 1,2,3 alert( String(arr) === '1,2,3' ); // true ``` -Also, let's try this: +এছাড়াও, এটি দেখুন: ```js run alert( [] + 1 ); // "1" @@ -451,9 +477,9 @@ alert( [1] + 1 ); // "11" alert( [1,2] + 1 ); // "1,21" ``` -Arrays do not have `Symbol.toPrimitive`, neither a viable `valueOf`, they implement only `toString` conversion, so here `[]` becomes an empty string, `[1]` becomes `"1"` and `[1,2]` becomes `"1,2"`. +অ্যারেতে `Symbol.toPrimitive` বা `valueOf` মেথড নেয়, শুধুমাত্র `toString` মেথড আছে, যার ফলে `[]` হয়ে যায় এম্পটি স্ট্রিং, `[1]` হয় `"1"` এবং `[1,2]` হয় `"1,2"`। -When the binary plus `"+"` operator adds something to a string, it converts it to a string as well, so the next step looks like this: +যখন আমরা `"+"` এর সাহায্যে দুটি স্ট্রিং কনক্যাটেনাইট করি, এরা এভাবে কাজ করে: ```js run alert( "" + 1 ); // "1" @@ -461,31 +487,39 @@ alert( "1" + 1 ); // "11" alert( "1,2" + 1 ); // "1,21" ``` -## Don't compare arrays with == +## দুটি অ্যারের মধ্যে তুলনা == + +জাভাস্ক্রিপ্টে দুটি অ্যারের মধ্যে `==` এর সাহায্যে তুলনা করা যায় না। -Arrays in JavaScript, unlike some other programming languages, shouldn't be compared with operator `==`. +অ্যারের জন্য এই অপারেটরটি আলাদা কোন বৈশিষ্ট্য প্রদান করে না, অন্যান্য অবজেক্টের মত এটিও `==` এর সাহায্যে তুলনা করা যায় না। -This operator has no special treatment for arrays, it works with them as with any objects. +চলুন পুনরায় অবজেক্ট তুলনার নিয়মগুলো দেখি: -Let's recall the rules: +<<<<<<< HEAD +- দুটি অবজেক্ট `==` সমান হবে যদি তারা একই অবজেক্ট কে রেফারেন্স করে। +- `==` এর সাহায্যে তুলনা করার সময় যদি একটি অবজেক্ট হয় এবং অন্যটি primitive হয়, তাহলে অবজেক্টটি primitive ভ্যালুতে পরিবর্তন হয়ে যায়, বিস্তারিত এই অধ্যায়ে । +- ...তবে `null` এবং `undefined` এরা সমান হবে `==`। +strict comparison `===` আর সহজবোধ্য, এটি ডাটা টাইপও তুলনা করে। +======= - Two objects are equal `==` only if they're references to the same object. - If one of the arguments of `==` is an object, and the other one is a primitive, then the object gets converted to primitive, as explained in the chapter . - ...With an exception of `null` and `undefined` that equal `==` each other and nothing else. The strict comparison `===` is even simpler, as it doesn't convert types. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -So, if we compare arrays with `==`, they are never the same, unless we compare two variables that reference exactly the same array. +সুতরাং আমরা যদি দুটি অ্যারের তুলনা `==` করতে চায়, তাহলে তারা সমান হবে না, যদিনা অ্যারে দুটির রেফারেন্স একই হয়। -For example: +উদাহরণস্বরূপ: ```js run alert( [] == [] ); // false alert( [0] == [0] ); // false ``` -These arrays are technically different objects. So they aren't equal. The `==` operator doesn't do item-by-item comparison. +এখানে দুটি অ্যারেই আলাদা আলাদা দুটি অবজেক্ট, সুতরাং তারা একই হবে না। এবং `==` অপারেটর false রিটার্ন করবে। -Comparison with primitives may give seemingly strange results as well: +তবে primitives তুলনার সময় অদ্ভুত ফলাফল পেতে পারি: ```js run alert( 0 == [] ); // true @@ -493,9 +527,13 @@ alert( 0 == [] ); // true alert('0' == [] ); // false ``` +<<<<<<< HEAD +এখানে উভয়ই ক্ষেত্রে আমরা একটি primitive ভ্যালু কে একটি অবজেক্টের সাথে তুলনা করছি। সুতরাং অবজেক্টটি `[]` primitive এ পরিবর্তন হয়ে একটি এম্পটি `''` স্ট্রিং এ রুপান্তর হবে। +======= Here, in both cases, we compare a primitive with an array object. So the array `[]` gets converted to primitive for the purpose of comparison and becomes an empty string `''`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Then the comparison process goes on with the primitives, as described in the chapter : +এবং তুলনাটি দুটি primitive ভ্যালুতে করা হয়, বিস্তারিত এই অধ্যায়ে : ```js run // after [] was converted to '' @@ -504,15 +542,19 @@ alert( 0 == '' ); // true, as '' becomes converted to number 0 alert('0' == '' ); // false, no type conversion, different strings ``` -So, how to compare arrays? +তাহলে, আমরা দুটি অ্যারের তুলনা করব কিভাবে? -That's simple: don't use the `==` operator. Instead, compare them item-by-item in a loop or using iteration methods explained in the next chapter. +`==` অপারেটরের সাহায্যে তুলনা করব না। তার পরিবর্তে দুটি অ্যারের আইটেম সমূহকে লুপের সাহায্যে তুলনা করব অথবা ইটারেশনের সাহায্যে যা বিস্তারিত পরবর্তী অধ্যয়ে জানতে পারব। -## Summary +## সারাংশ -Array is a special kind of object, suited to storing and managing ordered data items. +অ্যারে হল একটি বিশেষ ধরণের অবজেক্ট, যার সাহায্যে আমরা ডাটা কে উর্ধক্রমে রাখতে পারি। +<<<<<<< HEAD +- অ্যারে ডিক্লেয়ার করার উপায়: +======= The declaration: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js // square brackets (usual) @@ -522,30 +564,38 @@ let arr = [item1, item2...]; let arr = new Array(item1, item2...); ``` +<<<<<<< HEAD + `new Array(number)` এর আর্গুমেন্ট number পাস করলে তাহলে এটি অ্যারের length বুঝায়, তবে কোন এলিমেন্ট থাকবে না। +======= The call to `new Array(number)` creates an array with the given length, but without elements. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -- The `length` property is the array length or, to be precise, its last numeric index plus one. It is auto-adjusted by array methods. +- `length` প্রপার্টি দ্বারা অ্যারের দৈর্ঘ্য বুঝায়, নির্দিষ্ট করে বলতে গেলে শেষ ইনডেক্সে এর সাথে ১ যোগ। অ্যারের মেথড সমূহের জন্য এটি স্বয়ংক্রিয়ভাবে পরিবর্তন হয়। - If we shorten `length` manually, the array is truncated. +<<<<<<< HEAD +আমরা অ্যারেকে deque হিসেবে ব্যবহার করতে পারব, এর জন্য নিম্নোক্ত মেথডসমূহ আছে: +======= Getting the elements: - we can get element by its index, like `arr[0]` - also we can use `at(i)` method that allows negative indexes. For negative values of `i`, it steps back from the end of the array. If `i >= 0`, it works same as `arr[i]`. We can use an array as a deque with the following operations: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -- `push(...items)` adds `items` to the end. -- `pop()` removes the element from the end and returns it. -- `shift()` removes the element from the beginning and returns it. -- `unshift(...items)` adds `items` to the beginning. +- `push(...items)` কালেকশনে সবার শেষে একটি `items` যোগ করে। +- `pop()` সবার শেষ এলিমেন্টটি রিটার্ন করে এবং অ্যারে হতে এলিমেন্টটি বাদ দেয়। +- `shift()` কালেকশনের প্রথম এলিমেন্টটি রিটার্ন করবে এবং অ্যারে হতে এলিমেন্টটি বাদ দেয়। +- `unshift(...items)` কালেকশনের প্রথমে একটি `items` যোগ করে। -To loop over the elements of the array: - - `for (let i=0; i`, `<` and others), as they have no special treatment for arrays. They handle them as any objects, and it's not what we usually want. +অ্যারেকে কম্পেয়ার করতে কম্পারিশন এবং লজিকাল অপারেটর গুলো ব্যবহার করা উচিত নয়, কেননা অ্যারে একটি অবজেক্ট, এবং অবজেক্ট কে আমরা এভাবে তলনা করতে পারি না। -Instead you can use `for..of` loop to compare arrays item-by-item. +তার পরিবর্তে আমরা `for..of` এর সাহায্যে প্রতিটি আইটেমকে তুলনা করতে পারি। -We will continue with arrays and study more methods to add, remove, extract elements and sort arrays in the next chapter . +পরবর্তী অধ্যায়ে আমরা অ্যারের আরো বিভিন্ন মেথড সম্পর্কে জানতে পারব । diff --git a/1-js/05-data-types/05-array-methods/article.md b/1-js/05-data-types/05-array-methods/article.md index 853645958..90a1845a1 100644 --- a/1-js/05-data-types/05-array-methods/article.md +++ b/1-js/05-data-types/05-array-methods/article.md @@ -1,23 +1,27 @@ -# Array methods +# অ্যারে মেথডস +<<<<<<< HEAD +অ্যারের বিল্ট-ইন আরো কিছু মেথড আছে, যার সাহায্যে আমরা সহজে অনেক অপারেশন চালাতে পারি। +======= Arrays provide a lot of methods. To make things easier, in this chapter, they are split into groups. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -## Add/remove items +## এলিমেন্ট সংযুক্ত করা বা বাদ দেয়া -We already know methods that add and remove items from the beginning or the end: +পূর্বের অধ্যায়ে আমরা দেখেছি কিভাবে অ্যারের শুরুতে বা শেষে কোন এলিমেন্ট যুক্ত করতে বা বাদ দিতে পারি: -- `arr.push(...items)` -- adds items to the end, -- `arr.pop()` -- extracts an item from the end, -- `arr.shift()` -- extracts an item from the beginning, -- `arr.unshift(...items)` -- adds items to the beginning. +- `arr.push(...items)` -- অ্যারের শেষে এলিমেন্ট যুক্ত করতে, +- `arr.pop()` -- অ্যারের শেষে এলিমেন্টটি বাদ দিতে, +- `arr.shift()` -- অ্যারের শুরুর এলিমেন্টটি বাদ দিতে, +- `arr.unshift(...items)` -- অ্যারের শুরুতে এলিমেন্ট যুক্ত করতে. -Here are a few others. +এছাড়াও আরো কিছু মেথড আছে ### splice -How to delete an element from the array? +অ্যারের কোন একটি এলিমেন্ট কিভাবে ডিলিট করা যায়? -The arrays are objects, so we can try to use `delete`: +যেহেতু অ্যারে একটি অবজেক্ট, সুতরাং এলিমেন্ট রিমুভ করতে `delete` ব্যবহার করতে পারি: ```js run let arr = ["I", "go", "home"]; @@ -30,50 +34,62 @@ alert( arr[1] ); // undefined alert( arr.length ); // 3 ``` -The element was removed, but the array still has 3 elements, we can see that `arr.length == 3`. +যদিওবা আমরা এলিমেন্টটি রিমুভ করেছি তারপরও অ্যারেতে ৩টি এলিমেন্ট আছে, ইতোমধ্যে যা আমরা দেখেছি `arr.length == 3`। +<<<<<<< HEAD +এটি স্বাভাবিক, কেননা `delete obj.key` এর দ্বারা আমরা `key` এর মান রিমুভ করি। এবং এটি অবজেক্টের জন্য ঠিক আছে। কিন্তু অ্যারের জন্য আমাদের অ্যারেটিকে পুনরায় সাজাতে হবে। +======= That's natural, because `delete obj.key` removes a value by the `key`. It's all it does. Fine for objects. But for arrays we usually want the rest of the elements to shift and occupy the freed place. We expect to have a shorter array now. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -So, special methods should be used. +এজন্য, আমরা একটি বিশেষ মেথডের সাহায্য নেব। +<<<<<<< HEAD +[arr.splice](mdn:js/Array/splice) মেথড যার সাহায্যে অ্যারেতে আমরা বিভিন্ন অপারেশন চালাতে পারি। যেমন: কোন এলিমেন্ট insert, remove বা replace। +======= The [arr.splice](mdn:js/Array/splice) method is a Swiss army knife for arrays. It can do everything: insert, remove and replace elements. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -The syntax is: +সিনট্যাক্সটি হল: ```js arr.splice(start[, deleteCount, elem1, ..., elemN]) ``` -It modifies `arr` starting from the index `start`: removes `deleteCount` elements and then inserts `elem1, ..., elemN` at their place. Returns the array of removed elements. +এখানে `start` দ্বারা বুঝায় কোন index হতে এলিমেন্ট ডিলিট হবে: এরপর `deleteCount` দ্বারা বুঝায় কতটি এলিমেন্ট ডিলিট হবে এরপর `elem1, ..., elemN` দ্বারা বুঝায় ঐ ইনডেক্সে নতুন এলিমেন্ট যুক্ত হবে। এবং মেথডটি রিমুভড হওয়া এলিমেন্টসমূহ রিটার্ন করে। -This method is easy to grasp by examples. +চলুন উদাহরণের সাহায্যে শিখি: -Let's start with the deletion: +চলুন, প্রথমে এলিমেন্ট ডিলিট করা দেখি: ```js run let arr = ["I", "study", "JavaScript"]; *!* -arr.splice(1, 1); // from index 1 remove 1 element +arr.splice(1, 1); // ১ নং ইনডেক্স হতে ১ টি এলিমেন্ট ডিলিট */!* alert( arr ); // ["I", "JavaScript"] ``` -Easy, right? Starting from the index `1` it removed `1` element. +সহজ, তাই না? এখানে আমরা ১ নং ইনডেক্স হতে ১ টি এলিমেন্ট ডিলিট করেছি। +<<<<<<< HEAD +পরবর্তী উদাহরণে আমরা প্রথম ৩টি এলিমেন্ট ডিলিট করব, এবং ঐ ইনডেক্সে নতুন দুটি এলিমেন্ট সংযুক্ত করব: +======= In the next example, we remove 3 elements and replace them with the other two: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run let arr = [*!*"I", "study", "JavaScript",*/!* "right", "now"]; -// remove 3 first elements and replace them with another +// প্রথম ৩টি এলিমেন্ট বাদ যাবে এবং নতুন ২টি এলিমেন্ট ঐ ইনডেক্সে যুক্ত হবে arr.splice(0, 3, "Let's", "dance"); -alert( arr ) // now [*!*"Let's", "dance"*/!*, "right", "now"] +alert( arr ) // পরিবর্তিত অ্যারেটি [*!*"Let's", "dance"*/!*, "right", "now"] ``` -Here we can see that `splice` returns the array of removed elements: +এখন আমরা দেখি `splice` রিটার্ন হওয়া এলিমেন্ট রিটার্ন করে: ```js run let arr = [*!*"I", "study",*/!* "JavaScript", "right", "now"]; @@ -81,31 +97,35 @@ let arr = [*!*"I", "study",*/!* "JavaScript", "right", "now"]; // remove 2 first elements let removed = arr.splice(0, 2); -alert( removed ); // "I", "study" <-- array of removed elements +alert( removed ); // ডিলিট হওয়া এলিমেন্ট "I", "study" ``` +<<<<<<< HEAD +এছাড়াও `splice` এর সাহায্যে আমরা কোন এলিমেন্ট ডিলিট না করে নির্দিষ্ট ইনডেক্সে নতুন এলিমেন্ট সংযুক্ত করতে পারি এক্ষেত্রে আমরা `deleteCount` এর মান `0` সেট করব: +======= The `splice` method is also able to insert the elements without any removals. For that, we need to set `deleteCount` to `0`: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run let arr = ["I", "study", "JavaScript"]; -// from index 2 -// delete 0 -// then insert "complex" and "language" +// 2 নং ইনডেক্স হতে +// 0 ডিলেট হবে এবং +// "complex" এবং "language" যুক্ত হবে arr.splice(2, 0, "complex", "language"); alert( arr ); // "I", "study", "complex", "language", "JavaScript" ``` -````smart header="Negative indexes allowed" -Here and in other array methods, negative indexes are allowed. They specify the position from the end of the array, like here: +````smart header="নেগেটিভ ইনডেক্স" +অ্যারে মেথডসমূহে নেগেটিভ ইনডেক্স ব্যবহার করতে পারি। নেগেটিভ ইনডেক্স দ্বারা বুঝায় গণনা অ্যারের শেষ হতে শুরু হবে, যেমন: ```js run let arr = [1, 2, 5]; -// from index -1 (one step from the end) -// delete 0 elements, -// then insert 3 and 4 +// এখানে -1 দ্বারা বুঝাচ্ছে অ্যারের শেষ পজিশনের পরের পজিশন, +// এখানে কোন এলিমেন্ট ডিলেট হবে না, +// ২টি নতুন এলিমেন্ট `3, 4` যুক্ত হবে। arr.splice(-1, 0, 3, 4); alert( arr ); // 1,2,3,4,5 @@ -114,19 +134,27 @@ alert( arr ); // 1,2,3,4,5 ### slice +<<<<<<< HEAD +[arr.slice](mdn:js/Array/slice) মেথড অনেকটা `arr.splice` এর মত। +======= The method [arr.slice](mdn:js/Array/slice) is much simpler than the similar-looking `arr.splice`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -The syntax is: +এর সিনট্যাক্স হল: ```js arr.slice([start], [end]) ``` -It returns a new array copying to it all items from index `start` to `end` (not including `end`). Both `start` and `end` can be negative, in that case position from array end is assumed. +এটি অ্যারের `start` হতে `end` ইনডেক্স পর্যন্ত এলিমেন্ট সমূহকে অ্যারে হিসেবে রিটার্ন করে। `start` এবং `end` এর ইনডেক্স মান নেগেটিভ হতে পারে, যা দ্বারা রিভার্স কাউন্ট করে। +<<<<<<< HEAD +এটি `str.slice` এর মত, তবে সাবস্ট্রিংয়ের পরিবর্তে এটি সাবঅ্যারে রিটার্ন করে। +======= It's similar to a string method `str.slice`, but instead of substrings, it makes subarrays. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -For instance: +যেমন: ```js run let arr = ["t", "e", "s", "t"]; @@ -136,40 +164,40 @@ alert( arr.slice(1, 3) ); // e,s (copy from 1 to 3) alert( arr.slice(-2) ); // s,t (copy from -2 till the end) ``` -We can also call it without arguments: `arr.slice()` creates a copy of `arr`. That's often used to obtain a copy for further transformations that should not affect the original array. +এছাড়াও আমরা কোন একটি অ্যারেকে কপি করতে `arr.slice()` মেথডটি কোন আর্গুমেন্ট ছাড়া কল করতে পারি। যার ফলে এটি একটি নতুন অ্যারে রিটার্ন করবে এবং আমরা একে পরিবর্তন করলে অরিজিনাল অ্যারেতে কোন পরিবর্তন হবে না। ### concat -The method [arr.concat](mdn:js/Array/concat) creates a new array that includes values from other arrays and additional items. +দুই বা ততোধিক অ্যারে যোগ করার জন্য [arr.concat](mdn:js/Array/concat) মেথড ব্যবহার করা হয়। -The syntax is: +এর সিনট্যাক্স হল: ```js arr.concat(arg1, arg2...) ``` -It accepts any number of arguments -- either arrays or values. +এটি এক বা একাধিক অ্যারে বা ভ্যালু আর্গুমেন্ট হিসবে নেই। -The result is a new array containing items from `arr`, then `arg1`, `arg2` etc. +যার ফলে নতুন অ্যারের এলিমেন্টগুলো হবে `arr` এবং `arg1`, `arg2` ইত্যাদি সকল এলিমেন্টের সমষ্টি। -If an argument `argN` is an array, then all its elements are copied. Otherwise, the argument itself is copied. +যদি একটি আর্গুমেন্ট `argN` একটি অ্যারে হয়, তবে সেই অ্যারের সকল এলিমেন্ট কপি হবে। অন্যথায়, আর্গুমেন্টটি নিজেই কপি হবে। -For instance: +যেমন: ```js run let arr = [1, 2]; -// create an array from: arr and [3,4] +// নতুন অ্যারেটি হবে দুটি অ্যারের সমষ্টি [3,4] alert( arr.concat([3, 4]) ); // 1,2,3,4 -// create an array from: arr and [3,4] and [5,6] +// নতুন অ্যারেটি হবে তিনটি অ্যারের সমষ্টি [3,4] এবং [5,6] alert( arr.concat([3, 4], [5, 6]) ); // 1,2,3,4,5,6 -// create an array from: arr and [3,4], then add values 5 and 6 +// নতুন অ্যারেটি হবে একটি অ্যারে [3,4], এবং দুটি ভ্যালু 5 এবং 6 এর সমষ্টি alert( arr.concat([3, 4], 5, 6) ); // 1,2,3,4,5,6 ``` -Normally, it only copies elements from arrays. Other objects, even if they look like arrays, are added as a whole: +সাধারণত, এটি শুধুমাত্র অ্যারে বা প্রিমিটিভ ভ্যালুগুলো কপি করে। যদি কোন অবজেক্টের আর্কিটেকচার অ্যারের মত হয় তাহলে এটি অবজেক্টটিকেই সংযুক্ত করে: ```js run let arr = [1, 2]; @@ -182,7 +210,7 @@ let arrayLike = { alert( arr.concat(arrayLike) ); // 1,2,[object Object] ``` -...But if an array-like object has a special `Symbol.isConcatSpreadable` property, then it's treated as an array by `concat`: its elements are added instead: +...কিন্তু যদি অব্জেক্টটি দেখতে অ্যারের মত হয় এবং এর মধ্যে একটি বিশেষ প্রপার্টি `Symbol.isConcatSpreadable` থাকে, তাহলে `concat` এ এরা অ্যারের মত সংযুক্ত হবে: ```js run let arr = [1, 2]; @@ -201,23 +229,23 @@ alert( arr.concat(arrayLike) ); // 1,2,something,else ## Iterate: forEach -The [arr.forEach](mdn:js/Array/forEach) method allows to run a function for every element of the array. +[arr.forEach](mdn:js/Array/forEach) মেথডটি আর্গুমেন্ট হিসেবে একটি কলব্যাক ফাংশন নেয়, এবং প্রতিটি এলিমেন্টের জন্য এটি কল হয়। -The syntax: +এর সিনট্যাক্স হল: ```js arr.forEach(function(item, index, array) { // ... do something with an item }); ``` -For instance, this shows each element of the array: +যেমন, নিচের কোডটিতে প্রতিটি এলিমেন্ট এর জন্য একটি অ্যালার্ট কল হবে: ```js run // for each element call alert ["Bilbo", "Gandalf", "Nazgul"].forEach(alert); ``` -And this code is more elaborate about their positions in the target array: +এখানে আমরা এলিমেন্টের পজিশন নিয়ে আরো বিস্তারিত জানতে পারি: ```js run ["Bilbo", "Gandalf", "Nazgul"].forEach((item, index, array) => { @@ -225,15 +253,24 @@ And this code is more elaborate about their positions in the target array: }); ``` -The result of the function (if it returns any) is thrown away and ignored. +যদি ফাংশন কোন কিছু রিটার্ন করে তাহলে এটি তা অগ্রাহ্য করে। -## Searching in array +## অ্যারেতে অনুসন্ধান -Now let's cover methods that search in an array. +এখন আমরা অ্যারের বিভিন্ন সার্চ মেথড সম্পর্কে জানব। ### indexOf/lastIndexOf and includes +<<<<<<< HEAD +[arr.indexOf](mdn:js/Array/indexOf), [arr.lastIndexOf](mdn:js/Array/lastIndexOf) এবং [arr.includes](mdn:js/Array/includes) এদের সিনট্যাক্স এবং কাজ স্ট্রিং এর মেথডগুলোর মত, তবে এখানে আর্গুমেন্ট হিসেবে ক্যারাক্টারের পরিবর্তে এলিমেন্ট নেয়: + +- `arr.indexOf(item, from)` -- অ্যারেতে `from` ইনডেক্স হতে একটি `item` অনুসন্ধান করে, যদি পাই তাহলে ইনডেক্সটি রিটার্ন করে, অন্যথায় `-1`। +- `arr.lastIndexOf(item, from)` -- একই তবে এটি রিভার্স হতে অনুসন্ধান চালায়। +- `arr.includes(item, from)` -- অ্যারেতে `from` ইনডেক্স হতে একটি `item` অনুসন্ধান করে, যদি পাই তাহলে `true` রিটার্ন করে। + +যেমন: +======= The methods [arr.indexOf](mdn:js/Array/indexOf) and [arr.includes](mdn:js/Array/includes) have the similar syntax and do essentially the same as their string counterparts, but operate on items instead of characters: - `arr.indexOf(item, from)` -- looks for `item` starting from index `from`, and returns the index where it was found, otherwise `-1`. @@ -242,6 +279,7 @@ The methods [arr.indexOf](mdn:js/Array/indexOf) and [arr.includes](mdn:js/Array/ Usually, these methods are used with only one argument: the `item` to search. By default, the search is from the beginning. For instance: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run let arr = [1, 0, false]; @@ -253,6 +291,17 @@ alert( arr.indexOf(null) ); // -1 alert( arr.includes(1) ); // true ``` +<<<<<<< HEAD +এরা কম্পারিশনের সময় `===` ব্যবহার করে। সুতরাং , যদি আমরা একটি স্ট্রিং `'0'` খুঁজি, তাহলে এটি এলিমেন্ট ডাটা টাইপ একই না হওয়ায় `-1` রিটার্ন করবে। + +যদি অ্যারেতে কোন একটি এলিমেন্ট আছে কিনা নিশ্চিত হতে চায়, তাহলে `arr.includes` ব্যবহার করা শ্রেয়। + +এছাড়াও `includes` এর একটি পার্থক্য আছে যা সঠিকভাবে `NaN` কে হ্যান্ডেল করে, যা `indexOf/lastIndexOf` পারে না: + +```js run +const arr = [NaN]; +alert( arr.indexOf(NaN) ); // -1 (0 রিটার্ন করা উচিত, কিন্তু === NaN এর জন্য কাজ করে না) +======= Please note that `indexOf` uses the strict equality `===` for comparison. So, if we look for `false`, it finds exactly `false` and not the zero. If we want to check if `item` exists in the array and don't need the index, then `arr.includes` is preferred. @@ -272,34 +321,45 @@ A minor, but noteworthy feature of `includes` is that it correctly handles `NaN` ```js run const arr = [NaN]; alert( arr.indexOf(NaN) ); // -1 (wrong, should be 0) +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 alert( arr.includes(NaN) );// true (correct) ``` That's because `includes` was added to JavaScript much later and uses the more up-to-date comparison algorithm internally. ```` +<<<<<<< HEAD +### find এবং findIndex + +মনে করুন আমাদের অ্যারের এলিমেন্টগুলো অবজেক্ট। কিভাবে কোন একটি নির্দিষ্ট শর্তের জন্য আমরা অবজেক্ট খুঁজতে পারি? +======= ### find and findIndex/findLastIndex Imagine we have an array of objects. How do we find an object with a specific condition? +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Here the [arr.find(fn)](mdn:js/Array/find) method comes in handy. +এক্ষেত্রে [arr.find(fn)](mdn:js/Array/find) মেথড ব্যবহার করি। -The syntax is: +এর সিনট্যাক্স হল: ```js let result = arr.find(function(item, index, array) { - // if true is returned, item is returned and iteration is stopped - // for falsy scenario returns undefined + // যদি শর্ত পূরন হয়, তাহলে এলিমেন্টটি রিটার্ন করবে এবং ইটারেশন বন্ধ হয়ে যাবে + // falsy এর জন্য রিটার্ন হবে undefined }); ``` -The function is called for elements of the array, one after another: +প্রতিটি এলিমেন্টের জন্য ফাংশনটি কল হবে : -- `item` is the element. -- `index` is its index. -- `array` is the array itself. +- `item` এলিমেন্টটি।. +- `index` এলিমেন্টের ইনডেক্স +- `array` অ্যারেটি +<<<<<<< HEAD +যদি `true` রিটার্ন করে, তাহলে অনুসন্ধানটি বন্ধ হয়ে যাবে, এবং `item` টি রিটার্ন করবে। যদি কোন এলিমেন্ট না পাই, তাহলে `undefined` রিটার্ন করবে। +======= If it returns `true`, the search is stopped, the `item` is returned. If nothing is found, `undefined` is returned. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -For example, we have an array of users, each with the fields `id` and `name`. Let's find the one with `id == 1`: +যেমন, আমাদের `users` এর একটি অ্যারে আছে, যার প্রপার্টিগুলো হল `id` এবং `name`। এখন চলুন আমরা একটি এলিমেন্ট খুঁজি যার `id` হল `1`, `id == 1`: ```js run let users = [ @@ -313,10 +373,17 @@ let user = users.find(item => item.id == 1); alert(user.name); // John ``` +<<<<<<< HEAD +বাস্তবিকক্ষেত্রে আমাদের প্রায় সময় অ্যারের অবজেক্ট নিয়ে কাজ করতে হয়, এক্ষেত্রে এই ধরণের অ্যারেতে অবজেক্ট অনুসন্ধানে `find` মেথডটি ব্যবহার করতে পারি। +======= In real life, arrays of objects are a common thing, so the `find` method is very useful. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Note that in the example we provide to `find` the function `item => item.id == 1` with one argument. That's typical, other arguments of this function are rarely used. +নোট: বেশিরভাগক্ষেত্রে কলব্যাক ফাংশনটিতে আমরা শুধুমাত্র একটি আর্গুমেন্ট পাস করি `item => item.id == 1`। অন্যান্য আর্গুমেন্টগুলো তেমন ব্যবহার করিনা। +<<<<<<< HEAD +[arr.findIndex](mdn:js/Array/findIndex) মেথডটিও অনুরূপ, তবে এটি এলিমেন্টের পরিবর্তে এলিমেন্টের `index` রিটার্ন করে। +======= The [arr.findIndex](mdn:js/Array/findIndex) method has the same syntax but returns the index where the element was found instead of the element itself. The value of `-1` is returned if nothing is found. The [arr.findLastIndex](mdn:js/Array/findLastIndex) method is like `findIndex`, but searches from right to left, similar to `lastIndexOf`. @@ -337,23 +404,24 @@ alert(users.findIndex(user => user.name == 'John')); // 0 // Find the index of the last John alert(users.findLastIndex(user => user.name == 'John')); // 3 ``` +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ### filter -The `find` method looks for a single (first) element that makes the function return `true`. +`true` রিটার্নের জন্য `find` মেথডটি শুধুমাত্র একটি (প্রথম) এলিমেন্ট রিটার্ন করে। -If there may be many, we can use [arr.filter(fn)](mdn:js/Array/filter). +অনেক সময় আমাদের কোন একটি শর্তের জন্য একাধিক এলিমেন্ট থাকতে পারে, এক্ষেত্রে আমরা ব্যবহার করি [arr.filter(fn)](mdn:js/Array/filter)। -The syntax is similar to `find`, but `filter` returns an array of all matching elements: +এর সিনট্যাক্স হল `find` এর মত, তবে `filter` যেসকল এলিমেন্ট শর্ত পূরণ করে তাদের সকলকে রিটার্ন করে: ```js let results = arr.filter(function(item, index, array) { - // if true item is pushed to results and the iteration continues - // returns empty array if nothing found + // যদি শর্ত পূরন হয়, তাহলে এলিমেন্টটি results এ push করবে এবং ইটারেশন চালিয়ে যাবে + // কোন এলিমেন্ট না পেলে এম্পটি অ্যারে রিটার্ন করবে }); ``` -For instance: +উদাহরনস্বরূপ: ```js run let users = [ @@ -362,31 +430,31 @@ let users = [ {id: 3, name: "Mary"} ]; -// returns array of the first two users +// প্রথম দুইটি এলিমেন্টকে রিটার্ন করবে let someUsers = users.filter(item => item.id < 3); alert(someUsers.length); // 2 ``` -## Transform an array +## অ্যারের রূপান্তর -Let's move on to methods that transform and reorder an array. +চলুন অ্যারে রূপান্তর করার মেথডগুলো দেখি। ### map -The [arr.map](mdn:js/Array/map) method is one of the most useful and often used. +[arr.map](mdn:js/Array/map) মেথডটি আমাদের প্রায় দরকার হয় এবং প্রায় ব্যবহার করে থাকি। -It calls the function for each element of the array and returns the array of results. +এটি অ্যারের প্রতিটি এলিমেন্টের জন্য কলব্যাক ফাংশনটি কল করবে এবং প্রতিটি এলিমেন্ট `results` এ `push` করবে। -The syntax is: +এর সিনট্যাক্স হল: ```js let result = arr.map(function(item, index, array) { - // returns the new value instead of item + // নতুন একটি এলিমেন্ট রিটার্ন করবে }); ``` -For instance, here we transform each element into its length: +যেমন, এখানে আমরা প্রতিটি এলিমেন্টে যতটি ক্যারেক্টার আছে তা রিটার্ন করছি, এবং আমাদের নতুন `results` অ্যারেটি হবে এলিমেন্টের ক্যারেক্টার সংখ্যা: ```js run let lengths = ["Bilbo", "Gandalf", "Nazgul"].map(item => item.length); @@ -395,42 +463,46 @@ alert(lengths); // 5,7,6 ### sort(fn) -The call to [arr.sort()](mdn:js/Array/sort) sorts the array *in place*, changing its element order. +[arr.sort()](mdn:js/Array/sort) অ্যারের এলিমেন্টগুলো বিভিন্ন ক্রমে যেমন উর্ধক্রম বা অধঃক্রমে সাজাতে আমরা এই মেথডটি ব্যবহার করি। -It also returns the sorted array, but the returned value is usually ignored, as `arr` itself is modified. +এটি পুনর্বিন্যাস্ত অ্যারে রিটার্ন করে, কিন্তু সাধারণত আমরা এটি অগ্রাহ্য করি, কেননা `arr` ভ্যারিয়েবলটি নিজেই পুনর্বিন্যস্ত হয়। -For instance: +যেমন: ```js run let arr = [ 1, 2, 15 ]; -// the method reorders the content of arr +// arr এর এলিমেন্টগুলো পুনর্বিন্যাস্ত হয় arr.sort(); alert( arr ); // *!*1, 15, 2*/!* ``` -Did you notice anything strange in the outcome? +অ্যারেটিকে কি গোলমেলে লাগছে? -The order became `1, 15, 2`. Incorrect. But why? +এখানে পুনর্বিন্যাস্ত ক্রমটি ভুল `1, 15, 2` । কিন্তু কেন? -**The items are sorted as strings by default.** +**এলিমেন্টগুলো ডিফল্ট স্ট্রিং হিসাবে তুলনা করে পুনর্বিন্যাস্ত হয়** -Literally, all elements are converted to strings for comparisons. For strings, lexicographic ordering is applied and indeed `"2" > "15"`. +সাধারণত, তুলনা করার জন্য সকল এলিমেন্টকে স্ট্রিংয়ে রূপান্তর করা হয়। প্রকৃতপক্ষে, স্ট্রিংয়ের জন্য লেক্সিগ্রাফিকক্রমে তুলনা করা হয় `"2" > "15"`। -To use our own sorting order, we need to supply a function as the argument of `arr.sort()`. +আমাদের নিজস্ব ক্রম অনুযায়ী সাজাতে, `arr.sort()` এ আর্গুমেন্ট হিসেবে একটি ফাংশন পাঠাতে পারি। +<<<<<<< HEAD +ফাংশনটি দুটি ভ্যালুর মধ্যে তুলনা করে: +======= The function should compare two arbitrary values and return: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js function compare(a, b) { - if (a > b) return 1; // if the first value is greater than the second - if (a == b) return 0; // if values are equal - if (a < b) return -1; // if the first value is less than the second + if (a > b) return 1; // যদি প্রথম ভ্যালুটি দ্বিতীয়টি থেকে বড় হয় + if (a == b) return 0; // যদি ভ্যালু দুটি সমান হয় + if (a < b) return -1; // যদি প্রথম ভ্যালুটি দ্বিতীয়টি থেকে ছোট হয় } ``` -For instance, to sort as numbers: +উদাহরণস্বরূপ, উপরের উদাহরণটি আবার দেখি: ```js run function compareNumeric(a, b) { @@ -448,13 +520,21 @@ arr.sort(compareNumeric); alert(arr); // *!*1, 2, 15*/!* ``` -Now it works as intended. +এখন এটি সঠিকভাবে কাজ করছে। +<<<<<<< HEAD +চলুন এটি কিভাবে কাজ করছে তা বুঝার চেষ্টা করি। `arr` এর এলিমেন্টগুলো যেকোন ডাটাটাইপের হতে পারে, তাই না? এলিমেন্টগুলো হতে পারে নাম্বার বা স্ট্রিং কিংবা অবজেক্ট অথবা যেকোন কিছু। আমাদের *কিছু এলিমেন্টের* একটি সেট আছে। পুনর্বিন্যাস্ত করার জন্য এলিমেন্টগুলোকে কিভাবে তুলনা করবে তার জন্য একটি *ordering function* লাগবে। যা সাধারণত ডিফল্ট স্ট্রিং হিসাবে পুনর্বিন্যাস্ত হয়। +======= Let's step aside and think about what's happening. The `arr` can be an array of anything, right? It may contain numbers or strings or objects or whatever. We have a set of *some items*. To sort it, we need an *ordering function* that knows how to compare its elements. The default is a string order. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -The `arr.sort(fn)` method implements a generic sorting algorithm. We don't need to care how it internally works (an optimized [quicksort](https://en.wikipedia.org/wiki/Quicksort) or [Timsort](https://en.wikipedia.org/wiki/Timsort) most of the time). It will walk the array, compare its elements using the provided function and reorder them, all we need is to provide the `fn` which does the comparison. +`arr.sort(fn)` মেথডটি একটি জেনেরিক সর্টিং অ্যালগরিদম ইমপ্লিমেন্ট করে। ইন্টারনালি এটি কিভাবে কাজ করে তা আমাদের জানা লাগবে না ([quicksort](https://en.wikipedia.org/wiki/Quicksort) বা [Timsort](https://en.wikipedia.org/wiki/Timsort))। এটি অ্যারের মধ্যে ইটারেট করবে, প্রদত্ত ফাংশন অনুযায়ী এলিমেন্টগুলোর মধ্যে তুলনা করবে এবং অ্যারেটিকে পুনর্বিন্যস্ত করবে, আমাদের জানা লাগবে আমাদের প্রদত্ত `fn` কিভাবে তুলনা করছে। +<<<<<<< HEAD +যা হোক, আমরা যদি জানতে চাই কোন এলিমেন্টেগুলোর মধ্যে তুলনা করা হচ্ছে -- তাহলে এভাবে জানতে পারি: +======= By the way, if we ever want to know which elements are compared -- nothing prevents us from alerting them: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run [1, -2, 15, 2, 0, 8].sort(function(a, b) { @@ -463,12 +543,12 @@ By the way, if we ever want to know which elements are compared -- nothing preve }); ``` -The algorithm may compare an element with multiple others in the process, but it tries to make as few comparisons as possible. +সর্টিংয়ের সময় একটি এলিমেন্ট একাধিক এলিমেন্টের সাথে তুলনা করতে পারে, তবে এটি যথাসম্ভব সর্টিং টিকে অপ্টিমাইজ করার চেষ্টা করে। -````smart header="A comparison function may return any number" -Actually, a comparison function is only required to return a positive number to say "greater" and a negative number to say "less". +````smart header="কম্পারিজন ফাংশন যেকোন নাম্বার রিটার্ন করতে পারে" +সাধারণত, তুলনা করার সময় কাস্টম ফাংশনটি "বড়" বুঝাতে ধনাত্নক সংখ্যা এবং "ছোট" বুঝাতে ঋনাত্নক সংখ্যা রিটার্ন করে। -That allows to write shorter functions: +আমরা আরো সংক্ষিপ্তভাবে ফাংশনটিকে লিখতে পারি: ```js run let arr = [ 1, 2, 15 ]; @@ -479,37 +559,37 @@ alert(arr); // *!*1, 2, 15*/!* ``` ```` -````smart header="Arrow functions for the best" -Remember [arrow functions](info:arrow-functions-basics)? We can use them here for neater sorting: +````smart header="আরো সংক্ষেপের জন্য অ্যারো ফাংশন" +[arrow functions](info:arrow-functions-basics) সিনট্যাক্স মনে আছে? আরো সংক্ষেপের জন্য আমরা এটি ব্যবহার করতে পারি: ```js arr.sort( (a, b) => a - b ); ``` -This works exactly the same as the longer version above. +এটি রেগুলার ফাংশনের মতই কাজ করে। ```` -````smart header="Use `localeCompare` for strings" -Remember [strings](info:string#correct-comparisons) comparison algorithm? It compares letters by their codes by default. +````smart header="স্ট্রিংয়ের জন্য `localeCompare`" +[strings](info:string#correct-comparisons) তুলনার অ্যালগরিদমটি মনে আছে? এটি ডিফল্টভাবে তাদের কোড অনুসারে তুলনা করে। -For many alphabets, it's better to use `str.localeCompare` method to correctly sort letters, such as `Ö`. +অনেক বর্ণমালার জন্য , সঠিকভাবে সর্টিংয়ের জন্য `str.localeCompare` মেথডটি ব্যবহার করা উচিত, যেমন `Ö`। -For example, let's sort a few countries in German: +উদাহরণস্বরূপ, চলুন আমরা জার্মান বর্ণমালা দ্বারা তৈরি একটি অ্যারেকে পুনর্বিন্যস্ত করি: ```js run let countries = ['Österreich', 'Andorra', 'Vietnam']; -alert( countries.sort( (a, b) => a > b ? 1 : -1) ); // Andorra, Vietnam, Österreich (wrong) +alert( countries.sort( (a, b) => a > b ? 1 : -1) ); // Andorra, Vietnam, Österreich (ভুল) -alert( countries.sort( (a, b) => a.localeCompare(b) ) ); // Andorra,Österreich,Vietnam (correct!) +alert( countries.sort( (a, b) => a.localeCompare(b) ) ); // Andorra,Österreich,Vietnam (সঠিক!) ``` ```` ### reverse -The method [arr.reverse](mdn:js/Array/reverse) reverses the order of elements in `arr`. +[arr.reverse](mdn:js/Array/reverse) মেথডটি `arr` এর এলিমেন্টগুলোকে উল্টোভাবে পুনর্বিন্যস্ত করে। -For instance: +উদাহরণস্বরুপ: ```js run let arr = [1, 2, 3, 4, 5]; @@ -518,15 +598,19 @@ arr.reverse(); alert( arr ); // 5,4,3,2,1 ``` -It also returns the array `arr` after the reversal. +এটিও `arr` এর রিভার্স অ্যারেটি রিটার্ন করে। -### split and join +### split এবং join -Here's the situation from real life. We are writing a messaging app, and the person enters the comma-delimited list of receivers: `John, Pete, Mary`. But for us an array of names would be much more comfortable than a single string. How to get it? +একটি বাস্তব সমস্যার কথা চিন্তা করুন। আমরা একটি মেসেজিং অ্যাপ ডেভলাপ করছি, এখন একজন ইউজার মেসেজটি যাদের পাঠাবে তাদের নাম কমা দ্বারা আলাদা আলাদা করে লিখল: `John, Pete, Mary`। এখন আমাদের রিসিভারের নামগুলো স্ট্রিংয়ের তুলনায় অ্যারে দ্বারা ইটারেট করা সহজ। এখন একটি স্ট্রিংকে কিভাবে অ্যারেতে রূপান্তর করতে পারি? -The [str.split(delim)](mdn:js/String/split) method does exactly that. It splits the string into an array by the given delimiter `delim`. +[str.split(delim)](mdn:js/String/split) মেথড স্ট্রিংকে অ্যারেতে রূপান্তর করে। এটি স্ট্রিংকে কোন একটি ডেলিমিটারের `delim` সাপেক্ষে অ্যারেতে রূপান্তর করে। +<<<<<<< HEAD +নিচের উদাহরণে আমরা একটি কমা এবং একটি স্পেসের সাপেক্ষে স্ট্রিংকে অ্যারেতে বিভক্ত করব: +======= In the example below, we split by a comma followed by a space: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run let names = 'Bilbo, Gandalf, Nazgul'; @@ -538,7 +622,7 @@ for (let name of arr) { } ``` -The `split` method has an optional second numeric argument -- a limit on the array length. If it is provided, then the extra elements are ignored. In practice it is rarely used though: +`split` মেথডের দ্বিতীয় আর্গুমেন্টটি অপশনাল -- যা অ্যারের length নির্ধারণ করে দেয়। যদি `length` নির্দিষ্ট করে দেয়া হয়, তাহলে অতিরিক্ত এলিমেন্টগুলো উপেক্ষা করবে। তবে বাস্তবিক ক্ষেত্রে এটি খুব কম ব্যবহার করা হয়: ```js run let arr = 'Bilbo, Gandalf, Nazgul, Saruman'.split(', ', 2); @@ -546,8 +630,8 @@ let arr = 'Bilbo, Gandalf, Nazgul, Saruman'.split(', ', 2); alert(arr); // Bilbo, Gandalf ``` -````smart header="Split into letters" -The call to `split(s)` with an empty `s` would split the string into an array of letters: +````smart header="স্ট্রিংয়ের প্রতিটি বর্নমালার অ্যারে" +যদি আমরা একটি এম্পটি স্ট্রিং ডেলিমিটার `s` হিসেবে পাঠায় `split(s)` তাহলে স্ট্রিংটির বর্ণমালা গুলো দ্বারা একটি অ্যারে তৈরি হবে: ```js run let str = "test"; @@ -556,27 +640,27 @@ alert( str.split('') ); // t,e,s,t ``` ```` -The call [arr.join(glue)](mdn:js/Array/join) does the reverse to `split`. It creates a string of `arr` items joined by `glue` between them. +`split` এর বিপরীত মেথডটি হল [arr.join(glue)](mdn:js/Array/join)। এটি `arr` এর এলিমেন্ট সমূহকে একটি গ্লু `glue` সাপেক্ষে স্ট্রিংয়ে রূপান্তর করে। -For instance: +উদাহরণস্বরুপ: ```js run let arr = ['Bilbo', 'Gandalf', 'Nazgul']; -let str = arr.join(';'); // glue the array into a string using ; +let str = arr.join(';'); // অ্যারেকে ; সাপেক্ষে জোড়া দিয়ে স্ট্রিংয়ে রূপান্তর alert( str ); // Bilbo;Gandalf;Nazgul ``` ### reduce/reduceRight -When we need to iterate over an array -- we can use `forEach`, `for` or `for..of`. +কোন একটি অ্যারেকে ইটারেট করতে আমরা ব্যবহার করতে পারি `forEach`, `for` বা `for..of`। -When we need to iterate and return the data for each element -- we can use `map`. +ইটারেটের সময় আমাদের প্রতিটি এলিমেন্ট রিটার্ন করতে ব্যবহার করি `map`। -The methods [arr.reduce](mdn:js/Array/reduce) and [arr.reduceRight](mdn:js/Array/reduceRight) also belong to that breed, but are a little bit more intricate. They are used to calculate a single value based on the array. +[arr.reduce](mdn:js/Array/reduce) এবং [arr.reduceRight](mdn:js/Array/reduceRight) মেথডগুলোও একই ভাবে অ্যারের প্রতিটি এলিমেন্ট ইটারেট করে, তবে এটি কিছুটা জটিল। অ্যারের সাপেক্ষে আমরা কোন একটি ভ্যালুর মান গণনা করতে পারি। -The syntax is: +এর সিনট্যাক্স হল: ```js let value = arr.reduce(function(accumulator, item, index, array) { @@ -584,24 +668,30 @@ let value = arr.reduce(function(accumulator, item, index, array) { }, [initial]); ``` -The function is applied to all array elements one after another and "carries on" its result to the next call. +অ্যারের প্রতিটি এলিমেন্টের জন্য ফাংশনটি কল হবে এবং পূর্বের মানটি সংরক্ষন করে পরবর্তী কলে আগের মানটি প্রদান করে। -Arguments: +আর্গুমেন্টস: -- `accumulator` -- is the result of the previous function call, equals `initial` the first time (if `initial` is provided). -- `item` -- is the current array item. -- `index` -- is its position. -- `array` -- is the array. +- `accumulator` -- পূর্ববর্তী ফাংশন কলের রিটার্নকৃত মানটি, প্রথম এলিমেন্টের জন্য `initial` মানটি (যদি `initial` ডিক্লেয়ার করা হয়)। +- `item` -- ইটারেটকৃত এলিমেন্টটি। +- `index` -- ইটারেটকৃত এলিমেন্টের পজিশন। +- `array` -- অ্যারেটি। +<<<<<<< HEAD +ফাংশন কল হলে, পূর্ববর্তী ফাংশন কলের রিটার্নকৃত মানটি পরবর্তী কলের জন্য প্রথম আর্গুমেন্ট হিসেবে পাস হবে। + +সুতরাং, প্রথম আর্গুমেন্টটি মূলত আমাদের পূর্ববর্তী সকল এক্সিকিউশনের মানটি ফলাফল হিসেবে সংরক্ষণ করে। এবং সর্বশেষে এটি `reduce` এর রেজাল্ট হয়। +======= As the function is applied, the result of the previous function call is passed to the next one as the first argument. So, the first argument is essentially the accumulator that stores the combined result of all previous executions. And at the end, it becomes the result of `reduce`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Sounds complicated? +জটিল মনে হচ্ছে? -The easiest way to grasp that is by example. +চলুন, উদাহরণের সাহায্যে বুঝার চেষ্টা করি। -Here we get a sum of an array in one line: +নিচের উদাহরণে আমরা অ্যারের সকল এলিমেন্টের যোগফল বের করছি: ```js run let arr = [1, 2, 3, 4, 5]; @@ -611,73 +701,78 @@ let result = arr.reduce((sum, current) => sum + current, 0); alert(result); // 15 ``` -The function passed to `reduce` uses only 2 arguments, that's typically enough. +সাধারণত `reduce` ফাংশনের দুটি আর্গুমেন্ট। -Let's see the details of what's going on. +চলুন এটি কিভাবে কাজ করছে তা বিস্তারিত দেখি। -1. On the first run, `sum` is the `initial` value (the last argument of `reduce`), equals `0`, and `current` is the first array element, equals `1`. So the function result is `1`. -2. On the second run, `sum = 1`, we add the second array element (`2`) to it and return. -3. On the 3rd run, `sum = 3` and we add one more element to it, and so on... +1. ১ম বার কল হলে, `sum` হল `initial` মানটি (`reduce` এর ২য় আর্গুমেন্টটি), অর্থাৎ `0`, এবং `current` হল ১ম এলিমেন্টটি, অর্থাৎ `1`। সুতরাং ১ম বার এক্সিকিউশনে এর মান হবে `1`। +2. ২য় এক্সিকিউশনে, `sum = 1`, এখন `sum` এর সাথে ২য় এলিমেন্টটি (`2`) যোগ হবে (`2+1`) এবং মানটি রিটার্ন করবে। +3. ৩য় এক্সিকিউশনে, `sum = 3` এবং পূর্বের মত ৩য় এলিমেন্টটি যোগ হবে, এভাবে প্রতিটি এলিমেন্ট ইটারেট করবে... -The calculation flow: +ক্যালকুলেশন ফ্লো: ![](reduce.svg) -Or in the form of a table, where each row represents a function call on the next array element: +এখানে আরো বিস্তারিত আলোচনা করা হল: -| |`sum`|`current`|result| +| |`sum`|`current`|ফলাফল| |---|-----|---------|---------| -|the first call|`0`|`1`|`1`| -|the second call|`1`|`2`|`3`| -|the third call|`3`|`3`|`6`| -|the fourth call|`6`|`4`|`10`| -|the fifth call|`10`|`5`|`15`| +|১ম এক্সিকিউশনে|`0`|`1`|`1`| +|২য় এক্সিকিউশনে|`1`|`2`|`3`| +|৩য় এক্সিকিউশনে|`3`|`3`|`6`| +|৪র্থ এক্সিকিউশনে|`6`|`4`|`10`| +|৫ম এক্সিকিউশনে|`10`|`5`|`15`| -Here we can clearly see how the result of the previous call becomes the first argument of the next one. +এখানে আমরা দেখছি কিভাবে প্রতিবার এক্সিকিউশনের রিটার্নকৃত মানটি এর পরের এক্সিকিউশনে যাচ্ছে। -We also can omit the initial value: +দ্বিতীয় আর্গুমেন্টটি অপশনাল: ```js run let arr = [1, 2, 3, 4, 5]; -// removed initial value from reduce (no 0) +// প্রাথমিক মানটি পাস করছি না let result = arr.reduce((sum, current) => sum + current); alert( result ); // 15 ``` -The result is the same. That's because if there's no initial, then `reduce` takes the first element of the array as the initial value and starts the iteration from the 2nd element. +ফলাফল একই আসবে। কেননা এখানে কোন প্রাথমিক মান নাই। যদি কোন প্রাথমিক মান না থাকে, তাহলে `reduce` প্রথম এলিমেন্টকে প্রাথমিক মান হিসেবে ধরে নিবে এবং ইটারেশন শুরু হবে ২য় এলিমেন্ট হতে। -The calculation table is the same as above, minus the first row. +উপরের ক্যালকুলেশন টেবলের মত তবে এক্ষেত্রে দ্বিতীয় সারি হতে। -But such use requires an extreme care. If the array is empty, then `reduce` call without initial value gives an error. +তবে এটি ব্যবহারে সময় আমাদের সতর্ক থাকতে হবে। যদি অ্যারেটিতে কোন এলিমেন্ট না থাকে, তাহলে `reduce` কোন প্রাথমিক মান ছাড়া কল হবে এবং এরর থ্রো করবে। -Here's an example: +যেমন, এখানে দেখুন: ```js run let arr = []; // Error: Reduce of empty array with no initial value -// if the initial value existed, reduce would return it for the empty arr. +// যদি প্রাথমিক মানটি পাস করি, তাহলে খালি অ্যারের জন্য প্রাথমিক মানটি রিটার্ন করবে arr.reduce((sum, current) => sum + current); ``` -So it's advised to always specify the initial value. +সুতরাং অনাকাঙ্ক্ষিত এরর এড়াতে সবসময় প্রাথমিক মানটি আর্গুমেন্টে পাস করা উচিত। + +<<<<<<< HEAD +[arr.reduceRight](mdn:js/Array/reduceRight) মেথডটিও একই কাজ করে, তবে এটি অ্যারের উল্টোদিক হতে ইটারেট করে। +======= The method [arr.reduceRight](mdn:js/Array/reduceRight) does the same but goes from right to left. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ## Array.isArray -Arrays do not form a separate language type. They are based on objects. +পূর্বের অধ্যায়ে জেনেছি জাভাস্ক্রিপ্টে অ্যারে আলাদা কোন টাইপ না। এটি মূলত একটি বিশেষ ধরণের অবজেক্ট। -So `typeof` does not help to distinguish a plain object from an array: +সুতরাং `typeof` অ্যারে ও অবজেক্টের মধ্যে পার্থক্য করতে পারে না: ```js run alert(typeof {}); // object alert(typeof []); // object (same) ``` -...But arrays are used so often that there's a special method for that: [Array.isArray(value)](mdn:js/Array/isArray). It returns `true` if the `value` is an array, and `false` otherwise. +...তবে এর জন্য আমাদের আরেকটি বিশেষ মেথড আছে: [Array.isArray(value)](mdn:js/Array/isArray)। যদি `value` একটি অ্যারে হয় তাহলে `true` রিটার্ন করবে, অন্যথায় `false`। ```js run alert(Array.isArray({})); // false @@ -685,25 +780,29 @@ alert(Array.isArray({})); // false alert(Array.isArray([])); // true ``` -## Most methods support "thisArg" +## বেশিরভাগ মেথড "thisArg" সাপোর্ট করে -Almost all array methods that call functions -- like `find`, `filter`, `map`, with a notable exception of `sort`, accept an optional additional parameter `thisArg`. +বেশিরভাগ অ্যারে মেথড -- যেমন `find`, `filter`, `map` ইত্যাদি আরেকটি অপশনাল আর্গুমেন্ট `thisArg` নিতে পারে। +<<<<<<< HEAD +উপরে আমরা প্যারামিটারটি সম্পর্কে আলোচনা করিনি, কেননা এটি কদাচিৎ ব্যবহার হয়। তবে আমাদের এটিও জেনে রাখা উচিত। +======= That parameter is not explained in the sections above, because it's rarely used. But for completeness, we have to cover it. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Here's the full syntax of these methods: +মেথডগুলোর সিনট্যাক্স হবে: ```js arr.find(func, thisArg); arr.filter(func, thisArg); arr.map(func, thisArg); // ... -// thisArg is the optional last argument +// thisArg হল একটি অপশনাল আর্গুমেন্ট ``` -The value of `thisArg` parameter becomes `this` for `func`. +`thisArg` প্যারামিটারের মান হবে ঐ `func` এর `this`। -For example, here we use a method of `army` object as a filter, and `thisArg` passes the context: +যেমন, অ্যারের অবজেক্টকে ফিল্টার করতে `army` অবজেক্টের একটি মেথড ব্যবহার করছি, এবং এটিকে `thisArg` এর দ্বারা কন্টেক্সে পাস করছি: ```js run let army = { @@ -722,7 +821,7 @@ let users = [ ]; *!* -// find users, for who army.canJoin returns true +// যেসব users এর জন্য army.canJoin এর true রিটার্ন করে let soldiers = users.filter(army.canJoin, army); */!* @@ -731,54 +830,75 @@ alert(soldiers[0].age); // 20 alert(soldiers[1].age); // 23 ``` -If in the example above we used `users.filter(army.canJoin)`, then `army.canJoin` would be called as a standalone function, with `this=undefined`, thus leading to an instant error. +উপরের উদাহরণে আমরা যদি শুধুমাত্র `users.filter(army.canJoin)` দ্বারা চেষ্টা করি, তাহলে `army.canJoin` একটি স্বতন্ত্র ফাংশন কল করবে যেখানে `this=undefined`, এবং প্রোগ্রামটি একটি এরর থ্রো করবে। -A call to `users.filter(army.canJoin, army)` can be replaced with `users.filter(user => army.canJoin(user))`, that does the same. The latter is used more often, as it's a bit easier to understand for most people. +`users.filter(army.canJoin, army)` এর বদলে এভাবেও `users.filter(user => army.canJoin(user))` কল করতে পারি, যা একই কাজ করে। পরবর্তী নিয়মেই বেশিরভাগ কল করা হয়, এবং এটি পড়তে ও বুঝতেও বেশি সুবিধাজনক। -## Summary +## সারাংশ -A cheat sheet of array methods: +অ্যারের মেথডের চিটশীট: -- To add/remove elements: - - `push(...items)` -- adds items to the end, - - `pop()` -- extracts an item from the end, - - `shift()` -- extracts an item from the beginning, - - `unshift(...items)` -- adds items to the beginning. - - `splice(pos, deleteCount, ...items)` -- at index `pos` deletes `deleteCount` elements and inserts `items`. - - `slice(start, end)` -- creates a new array, copies elements from index `start` till `end` (not inclusive) into it. - - `concat(...items)` -- returns a new array: copies all members of the current one and adds `items` to it. If any of `items` is an array, then its elements are taken. +- এলিমেন্ট add/remove এর জন্য: + - `arr.push(...items)` -- অ্যারের শেষে এলিমেন্ট যুক্ত করতে, + - `arr.pop()` -- অ্যারের শেষে এলিমেন্টটি বাদ দিতে, + - `arr.shift()` -- অ্যারের শুরুর এলিমেন্টটি বাদ দিতে, + - `arr.unshift(...items)` -- অ্যারের শুরুতে এলিমেন্ট যুক্ত করতে. + - `splice(pos, deleteCount, ...items)` -- `pos` ইনডেক্স হতে `deleteCount` অনুযায়ী এলিমেন্ট ডিলিট করে এবং `items` যুক্ত করে। + - `slice(start, end)` -- অ্যারের `start` হতে `end` ইনডেক্স পর্যন্ত এলিমেন্ট সমূহকে একটি নতুন অ্যারে হিসেবে রিটার্ন করে। + - `concat(...items)` -- কোন একটি অ্যারের সাথে আরেকটি নতুন অ্যারে বা নতুন `items` সংযুক্ত করে, এটিও একটি নতুন অ্যারে রিটার্ন করে। +<<<<<<< HEAD +- এলিমেন্ট অনুসন্ধানের মেথড: + - `indexOf/lastIndexOf(item, pos)` -- কোন একটি নির্দিষ্ট পজিশন `pos` থেকে একটি `item` অনুসন্ধান করে, এলিমেন্ট পাওয়া গেলে `index` পাওয়া না গেলে `-1` রিটার্ন করে। + - `includes(value)` -- অ্যারেতে `value` টি থাকলে `true` রিটার্ন করবে, অন্যথায় `false`। + - `find/filter(func)` -- এলিমেন্ট সমূহকে কাস্টম ফাংশনের উপর ভিত্তি করে অনুসন্ধান চালায়, ফাংশনের `true` রিটার্নের জন্য প্রথম/সকল এলিমেন্ট রিটার্ন করে। + - `findIndex` -- এটি `find` এর মত, তবে এটি ভ্যালুর পরিবর্তে `index` রিটার্ন করে। +======= - To search among elements: - `indexOf/lastIndexOf(item, pos)` -- look for `item` starting from position `pos`, and return the index or `-1` if not found. - `includes(value)` -- returns `true` if the array has `value`, otherwise `false`. - `find/filter(func)` -- filter elements through the function, return first/all values that make it return `true`. - `findIndex` is like `find`, but returns the index instead of a value. - -- To iterate over elements: - - `forEach(func)` -- calls `func` for every element, does not return anything. - -- To transform the array: - - `map(func)` -- creates a new array from results of calling `func` for every element. - - `sort(func)` -- sorts the array in-place, then returns it. - - `reverse()` -- reverses the array in-place, then returns it. - - `split/join` -- convert a string to array and back. - - `reduce/reduceRight(func, initial)` -- calculate a single value over the array by calling `func` for each element and passing an intermediate result between the calls. - +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 + +- প্রতিটি এলিমেন্ট ইটারেট করতে: + - `forEach(func)` -- প্রতিটি এলিমেন্টের জন্য একটি `func` কল হয়, কোন কিছু রিটার্ন করে না। + +- অ্যারের রুপান্তরের জন্য: + - `map(func)` -- প্রতিটি এলিমেন্টের জন্য একটি `func` কল হয় এবং রূপান্তরিত এলিমেন্টগুলো অ্যারে হিসেবে রিটার্ন করে। + - `sort(func)` -- অ্যারেকে সর্ট করতে, সর্টিং অ্যারেটি রিটার্ন করে। + - `reverse()` -- অ্যারের এলিমেন্টসমূহকে বিপরীতক্রমে পেতে। + - `split/join` -- স্ট্রিংকে অ্যারেতে আর অ্যারেকে স্ট্রিংয়ে রূপান্তর করতে। + - `reduce/reduceRight(func, initial)` -- অ্যারের প্রতিটি এলিমেন্টের জন্য `func` কল হবে এবং পূর্বের মানটি সংরক্ষন করে পরবর্তী কলে আগের মানটি প্রদান করে এবং সর্বশেষে একটি ফলাফল রিটার্ন করে। + +<<<<<<< HEAD +- অতিরিক্ত: + - `Array.isArray(arr)` এটি `arr` কে যাচাই করে অ্যারে কিনা। +======= - Additionally: - `Array.isArray(value)` checks `value` for being an array, if so returns `true`, otherwise `false`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 + +দয়া করে মনে রাখুন `sort`, `reverse` এবং `splice` অরিজিনাল অ্যারেকে রূপান্তর করে। + +প্রাত্যহিকক্ষেত্রে বেশিরভাগ সময় এই মেথড সমূহ ব্যবহার করি। তবে আরো কিছু মেথড আছে: -Please note that methods `sort`, `reverse` and `splice` modify the array itself. +- [arr.some(fn)](mdn:js/Array/some)/[arr.every(fn)](mdn:js/Array/every) অ্যারেটিকে যাচাই করে। -These methods are the most used ones, they cover 99% of use cases. But there are few others: +<<<<<<< HEAD + `fn` ফাংশনটি `map` এর মত সকল এলিমেন্টকে ইটারেট করে। যদি কোন/সকল রেজাল্ট `true` হয়, তাহলে `true` রিটার্ন করবে, অন্যথায় `false`। -- [arr.some(fn)](mdn:js/Array/some)/[arr.every(fn)](mdn:js/Array/every) check the array. + মেথডগুলো `||` এবং `&&` অপারেটরের মত কাজ করে: যদি `fn` কোন একটি এলিমেন্টের জন্য `true` রিটার্ন করে, `arr.some()` সাথে সাথে ইটারেশন থামিয়ে `true` রিটার্ন করবে অর্থাৎ `arr.some()` অ্যারের কোন একটি এলিমেন্টের জন্য শর্ত পূরণ হলে `true` রিটার্ন করে। আবার যদি `fn` কোন একটি এলিমেন্টের জন্য `false` রিটার্ন করে `arr.every()` সাথে সাথে ইটারেশন থামিয়ে `false` রিটার্ন করবে অর্থাৎ `arr.every()` অ্যারের প্রতিটি এলিমেন্টের জন্য শর্ত পূরণ হলে `true` রিটার্ন করে। + দুটি অ্যারেকে তুলনা করতে ব্যবহার করতে পারি `every` মেথড: +======= The function `fn` is called on each element of the array similar to `map`. If any/all results are `true`, returns `true`, otherwise `false`. These methods behave sort of like `||` and `&&` operators: if `fn` returns a truthy value, `arr.some()` immediately returns `true` and stops iterating over the rest of items; if `fn` returns a falsy value, `arr.every()` immediately returns `false` and stops iterating over the rest of items as well. We can use `every` to compare arrays: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run function arraysEqual(arr1, arr2) { return arr1.length === arr2.length && arr1.every((value, index) => value === arr2[index]); @@ -787,16 +907,20 @@ These methods are the most used ones, they cover 99% of use cases. But there are alert( arraysEqual([1, 2], [1, 2])); // true ``` -- [arr.fill(value, start, end)](mdn:js/Array/fill) -- fills the array with repeating `value` from index `start` to `end`. +- [arr.fill(value, start, end)](mdn:js/Array/fill) -- ইনডেক্স `start` হতে `end` পর্যন্ত `value` দ্বারা পূর্ন হবে। -- [arr.copyWithin(target, start, end)](mdn:js/Array/copyWithin) -- copies its elements from position `start` till position `end` into *itself*, at position `target` (overwrites existing). +- [arr.copyWithin(target, start, end)](mdn:js/Array/copyWithin) -- অ্যারের নিজের এলিমেন্ট ঐ অ্যারের অন্য একটি পজিশনে কপি করতে এই মেথডটি ব্যবহার করি, `target` (বর্তমান ভ্যালুকে প্রতিস্থাপন করবে) `start` যে পজিশন থেকে কপি হবে এবং যে পজিশন পর্যন্ত `end` কপি হবে। -- [arr.flat(depth)](mdn:js/Array/flat)/[arr.flatMap(fn)](mdn:js/Array/flatMap) create a new flat array from a multidimensional array. +- [arr.flat(depth)](mdn:js/Array/flat)/[arr.flatMap(fn)](mdn:js/Array/flatMap) মাল্টিডাইমেনশনাল অ্যারে থেকে ফ্লাট অর্থাৎ একমাত্রিক অ্যারেতে রূপান্তর। -For the full list, see the [manual](mdn:js/Array). +অ্যারের সম্পূর্ণ মেথডের তালিকাটি দেখতে, [manual](mdn:js/Array)। +<<<<<<< HEAD +প্রথম দেখায় মনে হতে পারে অনেক মেথড আছে, এবং এদের মনে রাখা কঠিন। আসলে এটি তেমন কঠিন কিছু না। +======= At first sight, it may seem that there are so many methods, quite difficult to remember. But actually, that's much easier. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Look through the cheat sheet just to be aware of them. Then solve the tasks of this chapter to practice, so that you have experience with array methods. +চিটশীটটি আবার লক্ষ্য করুন। তারপর এই অধ্যায়ের সমস্যাগুলো সমাধান করুন, তাহলে মেথডসমূহ সম্পর্কে আপনার ধারণা হবে। -Afterwards whenever you need to do something with an array, and you don't know how -- come here, look at the cheat sheet and find the right method. Examples will help you to write it correctly. Soon you'll automatically remember the methods, without specific efforts from your side. +এরপর যখন আপনি অ্যারে নিয়ে কাজ করবেন, এবং কিভাবে করবেন তা জানেন না তখন এখানে আসুন, এবং চিটশীটটি আবার দেখুন এবং সঠিক মেথডটি ব্যবহার করুন। উদাহরণগুলো আপনাকে সঠিকভাবে মেথডগুলোর ব্যবহার শিখতে সাহায্য করবে। এভাবে ব্যবহার করতে করতে আপনি মেথডগুলো শিখে যাবেন, দয়া করে একবার পড়েই মেথডগুলো মুখস্থ করতে যাবেন না, ব্যবহার করতে করতেই এগুলো শিখা হয়ে যাবে। diff --git a/1-js/05-data-types/06-iterable/article.md b/1-js/05-data-types/06-iterable/article.md index e2c0d4f97..3cb11ef7e 100644 --- a/1-js/05-data-types/06-iterable/article.md +++ b/1-js/05-data-types/06-iterable/article.md @@ -1,20 +1,24 @@ -# Iterables +# ইটারেবলস +<<<<<<< HEAD +*Iterable* অবজেক্ট হল একধরণের অ্যারের ধারণা। এটি এমন একটি ধারণা যার সাহায্যে আমরা কোন একটি অবজেক্টকে `for..of` লুপের সাহায্যে অ্যাক্সেস করতে পারব। +======= *Iterable* objects are a generalization of arrays. That's a concept that allows us to make any object useable in a `for..of` loop. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Of course, Arrays are iterable. But there are many other built-in objects, that are iterable as well. For instance, strings are also iterable. +আমরা ইতোমধ্যে জানি অ্যারে ইটারেবল। এছাড়াও আরো বিভিন্ন বিল্ট-ইন ইটারেবল অবজেক্ট আছে। যেমন: স্ট্রিং। -If an object isn't technically an array, but represents a collection (list, set) of something, then `for..of` is a great syntax to loop over it, so let's see how to make it work. +যদি কোন একটি অবজেক্ট অ্যারে না হয়, কিন্তু এটি একটি কালেকশনকে প্রকাশ করে যেমন:list, set ইত্যাদি, তাহলে আমরা `for..of` লুপের সাহায্যে প্রপার্টিগুলো অ্যাক্সেস করতে পারি, চলুন দেখি এটি কিভাবে করা যায়। ## Symbol.iterator -We can easily grasp the concept of iterables by making one of our own. +আমরা নিজেরা একটি ইটারেবল অবজেক্ট বানানোর মাধ্যমে ধারণাটি নিতে পারি। -For instance, we have an object that is not an array, but looks suitable for `for..of`. +উদাহরণস্বরূপ, আমাদের একটি অবজেক্ট আছে যা ইটারেবল নই, এখন এটিকে আমরা `for..of` এর জন্য ইমপ্লিমেন্ট করব। -Like a `range` object that represents an interval of numbers: +যেমন নিচের `range` অবজেক্টটি দুটি নাম্বারের ব্যবধান দেখায়: ```js let range = { @@ -22,18 +26,27 @@ let range = { to: 5 }; -// We want the for..of to work: +// আমরা চায় এখানে for..of কাজ করুক: // for(let num of range) ... num=1,2,3,4,5 ``` +<<<<<<< HEAD +`range` কে ইটারেবল করতে (এবং `for..of` লুপ কে কাজ করাতে) আমাদের একটি মেথড যুক্ত করতে হবে `Symbol.iterator` (একটি বিশেষ বিল্ট-ইন সিম্বল)। + +1. যখন `for..of` শুরু হয়, তখন মেথডটিকে একবার কল করে (অথবা না পেলে এরর থ্রো করে)। মেথডটি একটি *iterator* অবজেক্ট রিটার্ন করে -- যার `next` নামের একটি মেথড থাকে। +2. এরপর, `for..of` কাজ করবে *ঐ রিটার্নকৃত অবজেক্টটি নিয়ে*। +3. যখন `for..of` পরবর্তী মানটি জানতে চাইবে, তখন এটি ঐ অবজেক্টের `next()` মেথডকে কল করে। +4. `next()` এর রিটার্নকৃত মান হবে এভাবে `{done: Boolean, value: any}`, যেখানে `done=true` দ্বারা বুঝায় আমাদের ইটারেশনটি সম্পন্ন হয়েছে। +======= To make the `range` object iterable (and thus let `for..of` work) we need to add a method to the object named `Symbol.iterator` (a special built-in symbol just for that). 1. When `for..of` starts, it calls that method once (or errors if not found). The method must return an *iterator* -- an object with the method `next`. 2. Onward, `for..of` works *only with that returned object*. 3. When `for..of` wants the next value, it calls `next()` on that object. 4. The result of `next()` must have the form `{done: Boolean, value: any}`, where `done=true` means that the loop is finished, otherwise `value` is the next value. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Here's the full implementation for `range` with remarks: +নিচে `range` অবজেক্টকে আমরা ইটারেবল হিসেবে ইমপ্লিমেন্ট করেছি: ```js run let range = { @@ -41,18 +54,23 @@ let range = { to: 5 }; -// 1. call to for..of initially calls this +// 1. for..of প্রথমবার এটিকে কল করবে range[Symbol.iterator] = function() { +<<<<<<< HEAD + // ...এটি ইটারেটর অবজেক্ট রিটার্ন করে: + // 2. এরপর, for..of শুধুমাত্র এই ইটারেটরটি নিয়ে কাজ করবে, এবং পরবর্তী মানটি জানতে চাইবে +======= // ...it returns the iterator object: // 2. Onward, for..of works only with the iterator object below, asking it for next values +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 return { current: this.from, last: this.to, - // 3. next() is called on each iteration by the for..of loop + // 3. প্রতিবার for..of এর ইটারেশনে next() মেথডটি কল হবে next() { - // 4. it should return the value as an object {done:.., value :...} + // 4. এটি এই ফর্মে একটি অবজেক্ট রিটার্ন করে {done:.., value :...} এবং ইটারেশন শেষ হলে রিটার্ন করে {done: true} if (this.current <= this.last) { return { done: false, value: this.current++ }; } else { @@ -62,22 +80,22 @@ range[Symbol.iterator] = function() { }; }; -// now it works! +// এখন এটি কাজ করবে! for (let num of range) { alert(num); // 1, then 2, 3, 4, 5 } ``` -Please note the core feature of iterables: separation of concerns. +দয়া করে ইটারেবলের কোর ফিচার সম্পর্কে জেনে রাখুন। -- The `range` itself does not have the `next()` method. -- Instead, another object, a so-called "iterator" is created by the call to `range[Symbol.iterator]()`, and its `next()` generates values for the iteration. +- `range` এর নিজের কোন `next()` মেথড নেই। +- তার পরিবর্তে অন্য একটি ইটারেটর অবজেক্ট তৈরি করা হয়েছে `range[Symbol.iterator]()` এর দ্বারা, এবং এর `next()` মেথডটি প্রতিবার ইটারেশনে মানটি রিটার্ন করে। -So, the iterator object is separate from the object it iterates over. +সুতরাং ইটারেটর অবজেক্টটি ইটারেশন শেষে `range` অবজেক্টটি হতে আলাদা। -Technically, we may merge them and use `range` itself as the iterator to make the code simpler. +আমরা কোড কে আরো সহজবোধ্য করতে এদের একসাথে লিখতে পারি। -Like this: +এভাবে: ```js run let range = { @@ -103,33 +121,33 @@ for (let num of range) { } ``` -Now `range[Symbol.iterator]()` returns the `range` object itself: it has the necessary `next()` method and remembers the current iteration progress in `this.current`. Shorter? Yes. And sometimes that's fine too. +এখন `range[Symbol.iterator]()` রিটার্ন করবে `range` অবজেক্টটিকেই: এটির `next()` মেথড থাকে এবং এটি কারেন্ট ইটারেশন সংরক্ষণ করবে `this.current` এ। এটি আরো সংক্ষিপ্ত তাই না? হ্যাঁ। অনেক সময় এভাবে করা ভাল। -The downside is that now it's impossible to have two `for..of` loops running over the object simultaneously: they'll share the iteration state, because there's only one iterator -- the object itself. But two parallel for-ofs is a rare thing, even in async scenarios. +তবে এটির একটি সীমাবদ্ধতা আছে, আমরা একইসাথে দুটি `for..of` লুপ চালাতে পারব না: তারা তাদের ইটারেশন স্টেট শেয়ার করবে কেননা এখানে অবজেক্টটিতে শুধুমাত্র একটি ইটারেটর আছে। তবে বাস্তব ক্ষেত্রে একইসাথে দুটি `for..of` ব্যবহার করা হয় না বললেই চলে, এমনকি অ্যাসিঙ্ক্রোনাসও। -```smart header="Infinite iterators" -Infinite iterators are also possible. For instance, the `range` becomes infinite for `range.to = Infinity`. Or we can make an iterable object that generates an infinite sequence of pseudorandom numbers. Also can be useful. +```smart header="ইনফিনিট ইটারেটর" +ইনিফিনিট ইটারেটর তৈরি করাও সম্ভব। যেমন `range.to = Infinity` এর জন্য `range` ইনফিনিট ইটারেটর হবে। অথবা এমন একটি ইটারেবল অবজেক্ট তৈরি করতে পারি যা ইনিফিনিট সিক্যুয়েন্সে র‍্যান্ডম নাম্বার জেনারেট করবে। -There are no limitations on `next`, it can return more and more values, that's normal. +`next` এর কোন নির্দিষ্ট সীমা নেই, এটি একের পর এক ভ্যালু রিটার্ন করতে পারে, এটি স্বাভাবিক। -Of course, the `for..of` loop over such an iterable would be endless. But we can always stop it using `break`. +অবশ্যই, আমরা `for..of` লুপকে ইনিফিনিট হিসেবে তৈরি করতে পারি, তবে অন্যান্য লুপের মত এটিকেও `break` এর সাহায্যে থামাতে পারি। ``` -## String is iterable +## স্ট্রিংও ইটারেবল -Arrays and strings are most widely used built-in iterables. +সবচেয়ে বেশি ব্যবহৃত ইটারেবল হল অ্যারে এবং স্ট্রিং। -For a string, `for..of` loops over its characters: +একটি স্ট্রিংয়ের জন্য, `for..of` এর সাহায্যে এর ক্যারেক্টারকে ইটারেট করতে পারি: ```js run for (let char of "test") { - // triggers 4 times: once for each character - alert( char ); // t, then e, then s, then t + // ৪ বার ইটারেশন হবে: প্রতিটি ক্যারেক্টারের জন্য + alert( char ); // t, তারপর e, তারপর s, তারপর t } ``` -And it works correctly with surrogate pairs! +এছাড়াও এটি *surrogate pairs* এর জন্যও কাজ করবে! ```js run let str = '𝒳😂'; @@ -138,16 +156,20 @@ for (let char of str) { } ``` -## Calling an iterator explicitly +## অন্য ভাবে ইটারেটরকে কল +<<<<<<< HEAD +ইটারেটর কীভাবে কাজ করে তা আরো গভীরভাবে বুঝতে চলুন অন্যভাবে একটি স্ট্রিংকে ইটারেশন করি। +======= For deeper understanding, let's see how to use an iterator explicitly. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -We'll iterate over a string in exactly the same way as `for..of`, but with direct calls. This code creates a string iterator and gets values from it "manually": +আমরা একটি স্ট্রিংকে `for..of` এর মত করে ইটারেট করব, তবে সরাসরি কলের মাধ্যমে। নিচে কোডটি একটি স্ট্রিং ইটারেটর তৈরি করবে এবং এর মান আমরা ম্যানুয়ালি ইটারেট করব: ```js run let str = "Hello"; -// does the same as +// কাজ করবে এটির মত // for (let char of str) alert(char); *!* @@ -157,28 +179,40 @@ let iterator = str[Symbol.iterator](); while (true) { let result = iterator.next(); if (result.done) break; - alert(result.value); // outputs characters one by one + alert(result.value); // প্রতিটি ক্যারেক্টারের একের পর এক দেখাবে } ``` -That is rarely needed, but gives us more control over the process than `for..of`. For instance, we can split the iteration process: iterate a bit, then stop, do something else, and then resume later. +এটি কদাচিৎ প্রয়োজন হতে পারে, তবে এভাবে `for..of` এর চেয়ে বেশি কন্ট্রোল থাকে। যেমন, আমরা আমাদের ইটারেশন প্রসেসকে বিভক্ত করে নিতে পারি: কয়েকবার ইটারেশন চালিয়ে, তারপর থামাব, এরপর অন্যান্য কাজ করে ইটারেটরটি পুনরায় চালু করব। -## Iterables and array-likes [#array-like] +## ইটারেবলস এবং array-likes [#array-like] +<<<<<<< HEAD +ইটারেবল এবং অ্যারে দুটিই দেখতে একই, তবে তাদের মধ্যে ভিন্নতা রয়েছে। বিভ্রান্তি এড়াতে নিশ্চিত হন আপনি এদের পার্থক্যটি ভালোভাবে বুঝতে পেরেছেন। +======= Two official terms look similar, but are very different. Please make sure you understand them well to avoid the confusion. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -- *Iterables* are objects that implement the `Symbol.iterator` method, as described above. -- *Array-likes* are objects that have indexes and `length`, so they look like arrays. +- *Iterables* একটি অবজেক্ট যার `Symbol.iterator` মেথড আছে। +- *Array-likes* একটি অবজেক্ট যার প্রপার্টিগুলো নিউমেরিক ইনডেক্স আকারে এবং `length` প্রপার্টি আছে, সুতরাং এটি দেখতে অ্যারের মত। +<<<<<<< HEAD +বাস্তবক্ষেত্রে জাভাস্ক্রিপ্ট ব্যবহারের সময় আমরা এই ধরণের অবজেক্ট নিয়ে কাজ করি যারা হয়ত ইটারেবল অথবা দেখতে অ্যারের মত, অথবা উভয়ই। +======= When we use JavaScript for practical tasks in a browser or any other environment, we may meet objects that are iterables or array-likes, or both. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -For instance, strings are both iterable (`for..of` works on them) and array-like (they have numeric indexes and `length`). +যেমন, স্ট্রিং ইটারেবল আবার এটি দেখতে অ্যারের মতও (কেননা এর numeric index ও `length` আছে)। +<<<<<<< HEAD +কিন্তু একটি ইটারেবল দেখতে অ্যারের মত নাও হতে পারে। আবার অন্য দিকে অ্যারের মত হলেও এটি ইটারেবল নাও হতে পারে। +======= But an iterable may not be array-like. And vice versa an array-like may not be iterable. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -For example, the `range` in the example above is iterable, but not array-like, because it does not have indexed properties and `length`. +যেমন, উপরের `range` উদাহরণটি ইটারেবল, কিন্তু এটি দেখতে অ্যারের মত না কেননা এর numeric index ও `length` প্রপার্টি নেই। -And here's the object that is array-like, but not iterable: +এবং নিচে একটি অবজেক্ট ডিক্লেয়ার করা হয়েছে যা দেখতে অ্যারের মত, কিন্তু ইটারেবল না: ```js run let arrayLike = { // has indexes and length => array-like @@ -193,13 +227,13 @@ for (let item of arrayLike) {} */!* ``` -Both iterables and array-likes are usually *not arrays*, they don't have `push`, `pop` etc. That's rather inconvenient if we have such an object and want to work with it as with an array. E.g. we would like to work with `range` using array methods. How to achieve that? +ইটারেবল এবং *array-likes* সাধারণত *array* না, কেননা এদের মধ্যে অ্যারের মেথডগুলো পাব না যেমন `push`, `pop` ইত্যাদি। এটি কিছুটা অসুবিধাজনক, মনে করুন আমাদের একটি ইটারেবল অবজেক্ট আছে যাকে আমরা অ্যারের মত ব্যবহার করতে চাই। যেমন উপরের `range` এর মধ্যে অ্যারের মেথডগুলো ইমপ্লিমেন্ট করা। কিভাবে আমরা এটি করতে পারি? ## Array.from -There's a universal method [Array.from](mdn:js/Array/from) that takes an iterable or array-like value and makes a "real" `Array` from it. Then we can call array methods on it. +এক্ষেত্রে একটি মেথড আছে [Array.from](mdn:js/Array/from) যা একটি ইটারেবল বা একটি অ্যারের মত ভ্যালু নিবে এবং একে `Array` হিসেবে রিটার্ন করে। তাহলে আমরা অ্যারের সকল ফিচার এর মধ্যে পাব। -For instance: +যেমন: ```js run let arrayLike = { @@ -214,40 +248,50 @@ let arr = Array.from(arrayLike); // (*) alert(arr.pop()); // World (method works) ``` -`Array.from` at the line `(*)` takes the object, examines it for being an iterable or array-like, then makes a new array and copies all items to it. +`(*)` লাইনে `Array.from` একটি অবজেক্ট নেয়, তারপর এটির স্ট্রাকচার অ্যারের মত বা ইটারেবল হলে একটি নতুন অ্যারে তৈরি করে তার মধ্যে সকল আইটেম কপি করে। -The same happens for an iterable: +ইটারেবলের ক্ষেত্রেও এটি ঘটবে: +<<<<<<< HEAD +```js +// মনে করুন এখানের range একটি ইটারেবল +======= ```js run // assuming that range is taken from the example above +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 let arr = Array.from(range); -alert(arr); // 1,2,3,4,5 (array toString conversion works) +alert(arr); // 1,2,3,4,5 (অ্যারে থেকে toString কনভার্শন কাজ করছে) ``` -The full syntax for `Array.from` also allows us to provide an optional "mapping" function: +`Array.from` অপশনাল আর্গুমেন্ট "mapping" ফাংশন আছে: ```js Array.from(obj[, mapFn, thisArg]) ``` -The optional second argument `mapFn` can be a function that will be applied to each element before adding it to the array, and `thisArg` allows us to set `this` for it. +দ্বিতীয় আর্গুমেন্ট `mapFn` প্রতিটি এলিমেন্ট নতুন অ্যারেতে সংযুক্ত হওয়ার পূর্বে কল হবে, এবং `thisArg` এটির জন্য `this` সেট করতে দেয়। -For instance: +উদাহরণস্বরূপ: +<<<<<<< HEAD +```js +// মনে করুন এখানের range ভ্যারিয়েবলটা নেয়া হচ্ছে +======= ```js run // assuming that range is taken from the example above +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -// square each number +// প্রতিটি নাম্বারের বর্গ let arr = Array.from(range, num => num * num); alert(arr); // 1,4,9,16,25 ``` -Here we use `Array.from` to turn a string into an array of characters: +`Array.from` এর সাহায্যে স্ট্রিংয়ের প্রতিটি ক্যারেকটারকে অ্যারের আইটেমে রূপান্তর: ```js run let str = '𝒳😂'; -// splits str into array of characters +// স্ট্রিংয়ের ক্যারেক্টারকে অ্যারের এলিমেন্ট হিসেবে নেয়া let chars = Array.from(str); alert(chars[0]); // 𝒳 @@ -255,14 +299,14 @@ alert(chars[1]); // 😂 alert(chars.length); // 2 ``` -Unlike `str.split`, it relies on the iterable nature of the string and so, just like `for..of`, correctly works with surrogate pairs. +`str.split` আলাদা, এটি স্ট্রিংয়ের ইটারেবলের উপর নির্ভর করে, ঠিক `for..of` এর মত, সঠিকভাবে *surrogate pairs* এর সাথে কাজ করে। -Technically here it does the same as: +এটি এভাবে কাজ করে: ```js run let str = '𝒳😂'; -let chars = []; // Array.from internally does the same loop +let chars = []; // ইন্টারনালি Array.from এভাবে কাজ করে for (let char of str) { chars.push(char); } @@ -270,9 +314,13 @@ for (let char of str) { alert(chars); ``` +<<<<<<< HEAD +...তবে এটি সংক্ষিপ্ত। +======= ...But it is shorter. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -We can even build surrogate-aware `slice` on it: +আমরা surrogate-pairs এর জন্য `slice` তৈরি করতে পারি: ```js run function slice(str, start, end) { @@ -283,25 +331,34 @@ let str = '𝒳😂𩷶'; alert( slice(str, 1, 3) ); // 😂𩷶 -// the native method does not support surrogate pairs -alert( str.slice(1, 3) ); // garbage (two pieces from different surrogate pairs) +// বিল্ট ইন মেথড surrogate pairs সাপোর্ট করে না +alert( str.slice(1, 3) ); // garbage (দুটি আলাদা surrogate pairs এর অংশ) ``` -## Summary +## সারাংশ -Objects that can be used in `for..of` are called *iterable*. +যেসব অবজেক্টে `for..of` লুপ কাজ করে তাদের বলা হয় *iterable*। +<<<<<<< HEAD +- ইটারেবল অবজেক্টে `Symbol.iterator` নামের একটি মেথড অবশ্যই থাকা লাগবে। + - `obj[Symbol.iterator]()` এর ফলে এটি একটি *iterator* কল করবে। এটি অন্যান্য ইটারেশন প্রসেস গুলো হ্যান্ডেল করবে। + - ইটারেটর অবজেক্টে অবশ্যই `next()` নামের একটি মেথড থাকতে হবে যা রিটার্ন করবে একটি অবজেক্ট `{done: Boolean, value: any}`, এখানে `done:true` দ্বারা বুঝায় ইটারেশন সম্পন্ন হয়েছে, অন্যথায় `value` টি হবে পরবর্তী ভ্যালু। +- `Symbol.iterator` মেথডটি `for..of` এর জন্য স্বয়ংক্রিয়ভাবে কল হয়, তবে আমরা এটি ম্যানুয়ালিও করতে পারব। +- বিল্ট ইন ইটারেটর যেমন স্ট্রিং বা অ্যারে এরাও `Symbol.iterator` ইমপ্লিমেন্ট করে। +- স্ট্রিংয়ের ইটারেটর *surrogate pairs* সম্পর্কে জানে। +======= - Technically, iterables must implement the method named `Symbol.iterator`. - The result of `obj[Symbol.iterator]()` is called an *iterator*. It handles further iteration process. - An iterator must have the method named `next()` that returns an object `{done: Boolean, value: any}`, here `done:true` denotes the end of the iteration process, otherwise the `value` is the next value. - The `Symbol.iterator` method is called automatically by `for..of`, but we also can do it directly. - Built-in iterables like strings or arrays, also implement `Symbol.iterator`. - String iterator knows about surrogate pairs. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Objects that have indexed properties and `length` are called *array-like*. Such objects may also have other properties and methods, but lack the built-in methods of arrays. +যেসব অবজেক্টের প্রপার্টি হল ক্রমিক সংখ্যা এবং `length` প্রপার্টি আছে তাদের বলা হয় *array-like*। যদিও এরা দেখতে অ্যারের মত তারপরও আমরা এদের মধ্যে অ্যারের বিল্ট-ইন মেথড গুলো ব্যবহার করতে পারব না। -If we look inside the specification -- we'll see that most built-in methods assume that they work with iterables or array-likes instead of "real" arrays, because that's more abstract. +যদি আমরা স্পেসিফিকেশন দেখি তাহলে দেখব বেশিরভাগ বিল্ট ইন মেথড "real" অ্যারের পরিবর্তে কাজ করে ইটারেবল বা *array-like* এর মত। কেননা এরা আরো বেশি অ্যাবস্ট্রাক্ট। -`Array.from(obj[, mapFn, thisArg])` makes a real `Array` from an iterable or array-like `obj`, and we can then use array methods on it. The optional arguments `mapFn` and `thisArg` allow us to apply a function to each item. +ইটারেবল বা *array-like* এর মত অবজেক্ট সমূহকে `Array` তে কনভার্ট করতে আমরা ব্যবহার করি `Array.from(obj[, mapFn, thisArg])`, তাহলে আমরা অ্যারের মেথডসমূহ ব্যবহার করতে পারব। অপশনাল আর্গুমেন্ট `mapFn` ফাংশন প্রতিটি এলিমেন্ট অ্যারেতে সংযুক্ত হওয়ার আগে ফাংশনটি কল করে এবং `thisArg` এটির জন্য `this` সেট করতে দেয়। diff --git a/1-js/05-data-types/07-map-set/article.md b/1-js/05-data-types/07-map-set/article.md index 37f5e48c2..328fa0bcb 100644 --- a/1-js/05-data-types/07-map-set/article.md +++ b/1-js/05-data-types/07-map-set/article.md @@ -1,19 +1,39 @@ -# Map and Set +# Map এবং Set +<<<<<<< HEAD +এ পর্যন্ত আমরা নিম্নোক্ত কমপ্লেক্স ডাটা স্ট্রাকচার সমূহ শিখেছি: + +- অবজেক্টস যা একটি কালেকশনকে কী/ভ্যালু আকারে সংরক্ষণ করে। +- অ্যারে যা একটি কালেকশনকে ইনডেক্সক্রমে সংরক্ষণ করে। +======= Till now, we've learned about the following complex data structures: - Objects are used for storing keyed collections. - Arrays are used for storing ordered collections. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -But that's not enough for real life. That's why `Map` and `Set` also exist. +কিন্তু বাস্তবক্ষেত্রে এরা পর্যাপ্ত না। যার ফলে `Map` এবং `Set` নামের আরো দুটি ডাটা স্ট্রাকচার বিদ্যমান। ## Map +<<<<<<< HEAD +[Map](mdn:js/Map) হল `Object` এর মত কী/ভ্যালু আকারের একটি কালেকশন। তবে এর প্রধান পার্থক্যটি হল `Map` এ যেকোন টাইপের কী(Key) রাখা যায়। +======= [Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) is a collection of keyed data items, just like an `Object`. But the main difference is that `Map` allows keys of any type. - -Methods and properties are: - +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 + +এর মেথড এবং প্রপার্টিসমূহ হল: + +<<<<<<< HEAD +- `new Map()` -- নতুন Map তৈরি। +- `map.set(key, value)` -- Map এ `key` অনুসারে নতুন একটি রেকর্ড সংযুক্ত করবে। +- `map.get(key)` -- Map এর কোন একটি রেকর্ড রিটার্ন করতে, যদি `key` টি Map এ না থাকে তাহলে `undefined` রিটার্ন করে। +- `map.has(key)` -- Map এ `key` বিদ্যমান থাকলে `true` রিটার্ন করবে অন্যথায় `false`। +- `map.delete(key)` -- Map এ `key` অনুসারে কোন একটি রেকর্ড ডিলিট করবে। +- `map.clear()` -- সম্পূর্ণ Map কালেকশনকে ডিলিট করবে। +- `map.size` -- Map এর টোটাল কালেকশন সংখ্যা রিটার্ন করে। +======= - [`new Map()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/Map) -- creates the map. - [`map.set(key, value)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/set) -- stores the value by the key. - [`map.get(key)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/get) -- returns the value by the key, `undefined` if `key` doesn't exist in map. @@ -21,8 +41,9 @@ Methods and properties are: - [`map.delete(key)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/delete) -- removes the element (the key/value pair) by the key. - [`map.clear()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/clear) -- removes everything from the map. - [`map.size`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/size) -- returns the current element count. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -For instance: +উদাহরণস্বরূপ: ```js run let map = new Map(); @@ -31,48 +52,68 @@ map.set('1', 'str1'); // a string key map.set(1, 'num1'); // a numeric key map.set(true, 'bool1'); // a boolean key -// remember the regular Object? it would convert keys to string -// Map keeps the type, so these two are different: +// অবজেক্টের ক্ষেত্রে কী হত মনে আছে? এক্ষেত্রে এটি স্ট্রিংয়ে কনভার্ট হত +// আর এখানে Map এটিকে অপরিবর্তনীয় রাখে, দুটির মূল পার্থক্য এটিই: alert( map.get(1) ); // 'num1' alert( map.get('1') ); // 'str1' alert( map.size ); // 3 ``` -As we can see, unlike objects, keys are not converted to strings. Any type of key is possible. +এখানে আমরা দেখছি এটি কী(Key) কে অবজেক্টের মত স্ট্রিংয়ে রূপান্তর করে না। সুতরাং যেকোন ডাটা টাইপের কী রাখা সম্ভব। +<<<<<<< HEAD +```smart header=" `Map` এর মধ্যে `map[key]` ব্যবহার করা উচিত নই" +যদিও `map[key]` এটি কাজ করে, যেমন আমরা `map[key] = 2` সেট করতে পারি, এক্ষেত্রে ইঞ্জিন `map` কে plain JavaScript object হিসেবে বিবেচনা করে, সুতরাং এভাবে ব্যবহার করা উচিত নয়। +======= ```smart header="`map[key]` isn't the right way to use a `Map`" Although `map[key]` also works, e.g. we can set `map[key] = 2`, this is treating `map` as a plain JavaScript object, so it implies all corresponding limitations (only string/symbol keys and so on). +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -So we should use `map` methods: `set`, `get` and so on. +তার পরিবর্তে আমরা `map` মেথড সমূহঃ `set`, `get` ইত্যাদি ব্যবহার করবো। ``` -**Map can also use objects as keys.** +**Map এ কী(Key) হিসেবে অবজেক্টও সেট করা যায়** -For instance: +যেমন: ```js run let john = { name: "John" }; -// for every user, let's store their visits count +// প্রতিটি ইউজারের ভিজিট এর গণনা সংরক্ষণ করি let visitsCountMap = new Map(); -// john is the key for the map +// john হল কী(Key) visitsCountMap.set(john, 123); alert( visitsCountMap.get(john) ); // 123 ``` +<<<<<<< HEAD +`Map` এর অন্যতম গুরুত্বপূর্ন সুবিধা হল আমরা অবজেক্টকে কী(Key) হিসেবে সংরক্ষন করতে পারি। আবার, `Object` এ আমরা কী(Key) হিসেবে একটি অবজেক্টকে সেট করতে পারি, তবে এটি অবজেক্ট কী(Key) হিসেবে কাজ করবে না। +======= Using objects as keys is one of the most notable and important `Map` features. The same does not count for `Object`. String as a key in `Object` is fine, but we can't use another `Object` as a key in `Object`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Let's try: +চলুন দেখা যাক: ```js run let john = { name: "John" }; let ben = { name: "Ben" }; -let visitsCountObj = {}; // try to use an object +let visitsCountObj = {}; // একটি অবজেক্ট + +<<<<<<< HEAD +visitsCountObj[john] = 123; // কী হিসেবে একটি অবজেক্ট সেট করছি + +*!* +// এটি এভাবে সেট হয় +alert( visitsCountObj["[object Object]"] ); // 123 +*/!* +``` +যেহেতু `visitsCountObj` একটি অবজেক্ট, এটি কোন একটি প্রপার্টি সেট হওয়ার সময় কী(Key) কে স্ট্রিংয়ে রূপান্তর করে নেয়, যেমন `john` অবজেক্টের স্ট্রিং কনভার্শন হবে `"[object Object]"`। যা আমাদের লক্ষ্য নয়। +======= visitsCountObj[ben] = 234; // try to use ben object as the key visitsCountObj[john] = 123; // try to use john object as the key, ben object will get replaced @@ -83,15 +124,16 @@ alert( visitsCountObj["[object Object]"] ); // 123 ``` As `visitsCountObj` is an object, it converts all `Object` keys, such as `john` and `ben` above, to same string `"[object Object]"`. Definitely not what we want. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -```smart header="How `Map` compares keys" -To test keys for equivalence, `Map` uses the algorithm [SameValueZero](https://tc39.github.io/ecma262/#sec-samevaluezero). It is roughly the same as strict equality `===`, but the difference is that `NaN` is considered equal to `NaN`. So `NaN` can be used as the key as well. +```smart header="`Map` কীভাবে কী(Key) যাচাই করে" +দুটি কী(Key) কে যাচাই করতে, `Map` এই অ্যালগরিদমটি ব্যবহার করে [SameValueZero](https://tc39.github.io/ecma262/#sec-samevaluezero)। এটি অনেকটা `===` এর মত, তবে এটি `NaN` এর ক্ষেত্রে ভিন্ন সাধারণত (`NaN` === `NaN`) এর মান হয় `false` তবে `Map` এ `NaN` কে যাচায় করতে পারে। সুতরাং কী(Key) হিসেবে `NaN` রাখা যাবে। -This algorithm can't be changed or customized. +আমরা এই অ্যালগরিদমটি পরিবর্তন বা পরিমার্জন করতে পারব না। ``` ````smart header="Chaining" -Every `map.set` call returns the map itself, so we can "chain" the calls: +প্রতিটি `map.set` রিটার্ন করে বিদ্যমান `map` টিকে, তাই আমরা এদের চেইন করতে পারব: ```js map.set('1', 'str1') @@ -100,15 +142,26 @@ map.set('1', 'str1') ``` ```` +<<<<<<< HEAD + +## Map এর ইটারেশন +======= ## Iteration over Map +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -For looping over a `map`, there are 3 methods: +একটি `map` কে ইটারেট করতে ৩টি মেথড আছে: +<<<<<<< HEAD +- `map.keys()` -- কালেকশনের কী(Key) এর একটি ইটারেবল রিটার্ন করে। +- `map.values()` -- কালেকশনের ভ্যালু একটি ইটারেবল রিটার্ন করে। +- `map.entries()` -- কালেকশনের `[key, value]` এর একটি ইটারেবল রিটার্ন করে। +======= - [`map.keys()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/keys) -- returns an iterable for keys, - [`map.values()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/values) -- returns an iterable for values, - [`map.entries()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/entries) -- returns an iterable for entries `[key, value]`, it's used by default in `for..of`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -For instance: +উদাহরণস্বরূপ: ```js run let recipeMap = new Map([ @@ -117,27 +170,27 @@ let recipeMap = new Map([ ['onion', 50] ]); -// iterate over keys (vegetables) +// সকল কী কে ইটারেট (vegetables) for (let vegetable of recipeMap.keys()) { alert(vegetable); // cucumber, tomatoes, onion } -// iterate over values (amounts) +// সকল ভ্যালুকে ইটারেট (amounts) for (let amount of recipeMap.values()) { alert(amount); // 500, 350, 50 } -// iterate over [key, value] entries -for (let entry of recipeMap) { // the same as of recipeMap.entries() +// সম্পূর্ণ কালেকশনকে [key, value] আকারে ইটারেট +for (let entry of recipeMap) { // এটি recipeMap.entries() এর মত alert(entry); // cucumber,500 (and so on) } ``` -```smart header="The insertion order is used" -The iteration goes in the same order as the values were inserted. `Map` preserves this order, unlike a regular `Object`. +```smart header="ইনশার্সন ক্রম হিসেবে মানগুলো দেখায়" +ইটারেশনের সময় মানগুলো দেখাবে যে ক্রমে ডাটা ইনসার্ট হয়েছিল সেভাবে। `Map` ক্রমটি সংরক্ষণ করে, এটি `Object` এর মত না। ``` -Besides that, `Map` has a built-in `forEach` method, similar to `Array`: +এছাড়াও, `Map` এর `Array` এর মত বিল্ট-ইন `forEach` মেথড আছে: ```js // runs the function for each (key, value) pair @@ -148,7 +201,7 @@ recipeMap.forEach( (value, key, map) => { ## Object.entries: Map from Object -When a `Map` is created, we can pass an array (or another iterable) with key/value pairs for initialization, like this: +`Map` ইনিশিয়ালাইজের সময় আমরা একটি অ্যারে (বা যেকোন ইটারেটর) key/value আকারে সেট করতে পারি, যেমন: ```js run // array of [key, value] pairs @@ -161,9 +214,13 @@ let map = new Map([ alert( map.get('1') ); // str1 ``` +<<<<<<< HEAD +যদি আমরা কোন একটি `Object` হতে `Map` কে ইনিশিয়ালাইজ করতে চায়, সেক্ষেত্রে আমরা এই মেথডটি [Object.entries(obj)](mdn:js/Object/entries) ব্যবহার করতে পারি, কেননা এটি key/value আকারে একটি অ্যারে রিটার্ন করে। +======= If we have a plain object, and we'd like to create a `Map` from it, then we can use built-in method [Object.entries(obj)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries) that returns an array of key/value pairs for an object exactly in that format. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -So we can create a map from an object like this: +সুতরাং আমরা `Object` হতে `Map` কে এভাবে তৈরি করতে পারি: ```js run let obj = { @@ -178,14 +235,14 @@ let map = new Map(Object.entries(obj)); alert( map.get('name') ); // John ``` -Here, `Object.entries` returns the array of key/value pairs: `[ ["name","John"], ["age", 30] ]`. That's what `Map` needs. +এখানে, `Object.entries` রিটার্ন করে: `[ ["name","John"], ["age", 30] ]`। যা একটি key/value অ্যারে। -## Object.fromEntries: Object from Map +## Object.fromEntries: Map হতে Object এ রূপান্তর -We've just seen how to create `Map` from a plain object with `Object.entries(obj)`. +আমরা দেখেছি কিভাবে `Object` হতে `Object.entries(obj)` এর সাহায্যে `Map` তৈরি করা যায়। -There's `Object.fromEntries` method that does the reverse: given an array of `[key, value]` pairs, it creates an object from them: +`Object` এর একটি মেথড আছে `Object.fromEntries` যা এর উল্টোটা করে: অর্থাৎ একটি `[key, value]` অ্যারেকে `Object` এ রূপান্তর করে: ```js run let prices = Object.fromEntries([ @@ -199,11 +256,11 @@ let prices = Object.fromEntries([ alert(prices.orange); // 2 ``` -We can use `Object.fromEntries` to get a plain object from `Map`. +আমরা `Map` কে `Object` এ রূপান্তর করতে `Object.fromEntries` ব্যবহার করতে পারি। -E.g. we store the data in a `Map`, but we need to pass it to a 3rd-party code that expects a plain object. +যেমন আমরা কোন একটি ডাটা সংরক্ষণ করছি `Map` এ, কিন্তু সার্ভারে বা অন্য কোন থার্ড পার্টি কোডে আমাদের ডাটা পাস করতে পারি `Object` হিসেবে। -Here we go: +এখানে দেখুন: ```js run let map = new Map(); @@ -212,7 +269,7 @@ map.set('orange', 2); map.set('meat', 4); *!* -let obj = Object.fromEntries(map.entries()); // make a plain object (*) +let obj = Object.fromEntries(map.entries()); // একটি Object (*) */!* // done! @@ -221,33 +278,46 @@ let obj = Object.fromEntries(map.entries()); // make a plain object (*) alert(obj.orange); // 2 ``` -A call to `map.entries()` returns an iterable of key/value pairs, exactly in the right format for `Object.fromEntries`. +`map.entries()` রিটার্ন করে একটি key/value ইটারেবল, যার রূপটা হল `Object.fromEntries` এর মত। -We could also make line `(*)` shorter: +আমরা `(*)` লাইনটিকে আরো ছোট করে লিখতে পারি: ```js let obj = Object.fromEntries(map); // omit .entries() ``` -That's the same, because `Object.fromEntries` expects an iterable object as the argument. Not necessarily an array. And the standard iteration for `map` returns same key/value pairs as `map.entries()`. So we get a plain object with same key/values as the `map`. +এটিও কাজ করবে, কেননা `Object.fromEntries` আর্গুমেন্ট হিসেবে একটি key/value ইটারেবল নেয়। অ্যারে হতে হবে এমন বাধ্যবাধকতা নেই। এবং `map` রিটার্ন করে `map.entries()` এর মত key/value ইটারেবল। সুতরাং আমরা `map` এর মত একটি `Object` পায়। ## Set +<<<<<<< HEAD +`Set` একটি বিশেষ কালেকশন - "ভ্যালুর সেট" (কী(Key) ছাড়া), যেখানে একটি ভ্যালু শুধুমাত্র একবার থাকবে। +======= A [`Set`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) is a special type collection - "set of values" (without keys), where each value may occur only once. - -Its main methods are: - +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 + +এটির মেথডগুলো হল: + +<<<<<<< HEAD +- `new Set(iterable)` -- সেট তৈরি, যদি কোন একটি `iterable` (অ্যারেও হতে পারে) আর্গুমেন্ট হিসেবে পাস করা হয়, তাহলে ইটারেবল এর ভ্যালুগুলো সেট এর ভ্যালু হবে। +- `set.add(value)` -- `value` টি সংযুক্ত করবে, বিদ্যমান সেটকে রিটার্ন করে। +- `set.delete(value)` -- `value` টি রিমুভ করবে, যদি `value` রিমুভড হয় তাহলে `true` অন্যথায় `false` রিটার্ন করবে। +- `set.has(value)` -- Set এ `value` বিদ্যমান থাকলে রিটার্ন করবে `true` অন্যথায় `false`। +- `set.clear()` -- সম্পূর্ণ Set এর কালেকশনকে রিমুভড করে। +- `set.size` -- Set এর টোটাল কালেকশন সংখ্যা রিটার্ন করে। +======= - [`new Set([iterable])`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/Set) -- creates the set, and if an `iterable` object is provided (usually an array), copies values from it into the set. - [`set.add(value)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/add) -- adds a value, returns the set itself. - [`set.delete(value)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/delete) -- removes the value, returns `true` if `value` existed at the moment of the call, otherwise `false`. - [`set.has(value)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/has) -- returns `true` if the value exists in the set, otherwise `false`. - [`set.clear()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/clear) -- removes everything from the set. - [`set.size`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/size) -- is the elements count. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -The main feature is that repeated calls of `set.add(value)` with the same value don't do anything. That's the reason why each value appears in a `Set` only once. +`Set` এর প্রধান সুবিধাটি হল `set.add(value)` এ একই ভ্যালু একের অধিক সংরক্ষন হয় না। যার ফলে `Set` এর প্রতিটি `value` হয় স্বতন্ত্র। -For example, we have visitors coming, and we'd like to remember everyone. But repeated visits should not lead to duplicates. A visitor must be "counted" only once. +যেমন, আমাদের একটি ভিজিটর কাউন্ট সিস্টেম আছে, এবং আমরা সবার ভিজিট সংরক্ষণ করতে চায়। কিন্তু একজনকে শুধুমাত্র একবার কাউন্ট করবে। -`Set` is just the right thing for that: +এক্ষেত্রে `Set` এর সাহায্যে এটি করতে পারব: ```js run let set = new Set(); @@ -256,14 +326,14 @@ let john = { name: "John" }; let pete = { name: "Pete" }; let mary = { name: "Mary" }; -// visits, some users come multiple times +// ভিজিট, একই ইউজার একাধিকবার আসতে পারে set.add(john); set.add(pete); set.add(mary); set.add(john); set.add(mary); -// set keeps only unique values +// `Set` এর প্রতিটি `value` স্বতন্ত্র alert( set.size ); // 3 for (let user of set) { @@ -271,11 +341,15 @@ for (let user of set) { } ``` +<<<<<<< HEAD +একটি ইউনিক অ্যারের জন্য `Set` ব্যবহার করা যেতে পারে, অন্যথায় ডুপ্লিকেট ভ্যালু এড়াতে আমাদের প্রতিবার [arr.find](mdn:js/Array/find) ব্যবহার করা লাগবে। তবে এটির পারফরম্যান্স `Set` এর তুলনায় অনেক খারাপ, কেননা প্রতিবার এলিমেন্ট সংযুক্ত করার আগে আমাদের অ্যারেটিকে ইটারেট করা লাগে এবং যাচাই করা লাগে ভ্যালুটি আছে কিনা। এক্ষেত্রে `Set` ইন্টারনালি ইউনিক ভ্যালু যাচায় করে। +======= The alternative to `Set` could be an array of users, and the code to check for duplicates on every insertion using [arr.find](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find). But the performance would be much worse, because this method walks through the whole array checking every element. `Set` is much better optimized internally for uniqueness checks. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -## Iteration over Set +## Set এ ইটারেশন -We can loop over a set either with `for..of` or using `forEach`: +আমরা `Set` কে `for..of` বা `forEach` এর সাহায্যে ইটারেট করতে পারি: ```js run let set = new Set(["oranges", "apples", "bananas"]); @@ -288,22 +362,45 @@ set.forEach((value, valueAgain, set) => { }); ``` -Note the funny thing. The callback function passed in `forEach` has 3 arguments: a `value`, then *the same value* `valueAgain`, and then the target object. Indeed, the same value appears in the arguments twice. +একটি মজার ব্যাপার লক্ষ্য করুন। কলব্যাকে আমরা ৩টি আর্গুমেন্ট পাস করছি `value`, `valueAgain`, `set` এখানে ২য় আর্গুমেন্ট `valueAgain` টিতে `value` পুনরায় পাস হচ্ছে। আসলে ১ম ও ২য় আর্গুমেন্টের মান একই। +<<<<<<< HEAD +`Map` এর সাথে সামঞ্জস্য রাখতে `forEach` এর কলব্যাকে ৩টি আর্গুমেন্ট পাস হয়। যদিও দেখতে কিছুটা অদ্ভুত তবে `Map` কে `Set` এ প্রতিস্থাপন করতে এটি সহায়তা করে বা এর উল্টোটা করতে। +======= That's for compatibility with `Map` where the callback passed `forEach` has three arguments. Looks a bit strange, for sure. But this may help to replace `Map` with `Set` in certain cases with ease, and vice versa. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -The same methods `Map` has for iterators are also supported: +`Map` এর মত `Set` ও কিছু ইটারেটর মেথড সাপোর্ট করে: +<<<<<<< HEAD +- `set.keys()` -- কালেকশনের ভ্যালু এর একটি ইটারেবল রিটার্ন করে +- `set.values()` -- `set.keys()` এর মত, `Map` এর সাথে সামঞ্জস্য রাখতে এটি ইমপ্লিমেন্ট করা হয়েছে +- `set.entries()` -- কালেকশনের `[key, value]` এর একটি ইটারেবল রিটার্ন করে, এটিও `Map` এর সাথে সামঞ্জস্য রাখতে এটি ইমপ্লিমেন্ট করা হয়েছে। +======= - [`set.keys()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/keys) -- returns an iterable object for values, - [`set.values()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/values) -- same as `set.keys()`, for compatibility with `Map`, - [`set.entries()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/entries) -- returns an iterable object for entries `[value, value]`, exists for compatibility with `Map`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -## Summary +## সারাংশ +<<<<<<< HEAD +`Map` -- হল key/value এর কালেকশন +======= [`Map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) -- is a collection of keyed values. - -Methods and properties: - +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 + +মেথডস এবং প্রপার্টি: + +<<<<<<< HEAD +- `new Map()` -- নতুন Map তৈরি। +- `map.set(key, value)` -- Map এ নতুন একটি রেকর্ড সংযুক্ত করতে। +- `map.get(key)` -- Map এর কোন একটি রেকর্ড রিটার্ন করতে, যদি `key` টি Map এ না থাকে তাহলে `undefined` রিটার্ন করে। +- `map.has(key)` -- Map এ `key` বিদ্যমান থাকলে রিটার্ন করবে `true` অন্যথায় `false`। +- `map.delete(key)` -- Map এর কোন একটি রেকর্ড ডিলিট করতে। +- `map.clear()` -- সম্পূর্ণ Map কালেকশনকে ডিলিট করতে। +- `map.size` -- Map এর টোটাল কালেকশন সংখ্যা রিটার্ন করে। +======= - [`new Map([iterable])`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/Map) -- creates the map, with optional `iterable` (e.g. array) of `[key,value]` pairs for initialization. - [`map.set(key, value)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/set) -- stores the value by the key, returns the map itself. - [`map.get(key)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/get) -- returns the value by the key, `undefined` if `key` doesn't exist in map. @@ -311,21 +408,35 @@ Methods and properties: - [`map.delete(key)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/delete) -- removes the element by the key, returns `true` if `key` existed at the moment of the call, otherwise `false`. - [`map.clear()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/clear) -- removes everything from the map. - [`map.size`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/size) -- returns the current element count. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -The differences from a regular `Object`: +রেগুলার `Object` এর সাথে পার্থক্য: -- Any keys, objects can be keys. -- Additional convenient methods, the `size` property. +- যেকোন ডাটা টাইপ কী হতে পারে এমনকি অবজেক্টেও। +- এছাড়াও অতিরিক্ত কিছু মেথড এবং `size` প্রপার্টি। +<<<<<<< HEAD +`Set` -- স্বতন্ত্র ভ্যালু এর কালেকশন। +======= [`Set`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) -- is a collection of unique values. - -Methods and properties: - +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 + +মেথডস এবং প্রপার্টি: + +<<<<<<< HEAD +- `new Set(iterable)` -- সেট তৈরি, যদি কোন একটি `iterable` (অ্যারেও হতে পারে) আর্গুমেন্ট হিসেবে পাস করা হয়, তাহলে ইটারেবল এর ভ্যালুগুলো সেট এর ভ্যালু হবে। +- `set.add(value)` -- `value` টি সংযুক্ত করবে, বিদ্যমান সেটকে রিটার্ন করে। +- `set.delete(value)` -- `value` টি রিমুভ করবে, যদি `value` রিমুভড হয় তাহলে `true` অন্যথায় `false` রিটার্ন করবে। +- `set.has(value)` -- Set এ `value` বিদ্যমান থাকলে রিটার্ন করবে `true` অন্যথায় `false`। +- `set.clear()` -- সম্পূর্ণ সেটের কালেকশনকে রিমুভড করে। +- `set.size` -- Set এর টোটাল কালেকশন সংখ্যা রিটার্ন করে। +======= - [`new Set([iterable])`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/Set) -- creates the set, with optional `iterable` (e.g. array) of values for initialization. - [`set.add(value)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/add) -- adds a value (does nothing if `value` exists), returns the set itself. - [`set.delete(value)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/delete) -- removes the value, returns `true` if `value` existed at the moment of the call, otherwise `false`. - [`set.has(value)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/has) -- returns `true` if the value exists in the set, otherwise `false`. - [`set.clear()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/clear) -- removes everything from the set. - [`set.size`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/size) -- is the elements count. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Iteration over `Map` and `Set` is always in the insertion order, so we can't say that these collections are unordered, but we can't reorder elements or directly get an element by its number. +`Map` এবং `Set` সর্বদায় ইনশার্সন অর্ডার অনুযায়ী ইটারেট হবে, সুতরাং আমরা বলতে পারি এই কালেকশন সর্বদা একই ক্রমে থাকে, এবং আমরা এদের সরাসরি পুনরায় সাজাতে পারব না তাদের ক্রমতালিকা অনুযায়ী। diff --git a/1-js/05-data-types/08-weakmap-weakset/article.md b/1-js/05-data-types/08-weakmap-weakset/article.md index 9795017d4..631e0ae6b 100644 --- a/1-js/05-data-types/08-weakmap-weakset/article.md +++ b/1-js/05-data-types/08-weakmap-weakset/article.md @@ -1,3 +1,10 @@ +<<<<<<< HEAD +# WeakMap এবং WeakSet + +জাভাস্ক্রিপ্ট ইঞ্জিন কোন একটি মানকে সংরক্ষন করে যতক্ষণ মানটি রিচেবল হয়, এই সম্পর্কে বিস্তারিত জেনেছিলাম এখানে । + +উদাহরণস্বরূপ: +======= # WeakMap and WeakSet @@ -5,42 +12,48 @@ As we know from the chapter , JavaScript engine keeps a For instance: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js let john = { name: "John" }; -// the object can be accessed, john is the reference to it +// john অবজেক্টটিকে রেফারেন্স হিসেবে ব্যবহার করার কারণে অবজেক্টটি অ্যাক্সেস করা যাবে -// overwrite the reference +// রেফারেন্সকে null করা হল john = null; *!* -// the object will be removed from memory +// অবজেক্টটি মেমোরি হতে মুছে যাবে */!* ``` -Usually, properties of an object or elements of an array or another data structure are considered reachable and kept in memory while that data structure is in memory. +সাধারণত, কোন অবজেক্টের প্রপার্টি বা অ্যারের এলিমেন্টকে বা অন্যান্য ডাটা স্ট্রাকচারকে রিচেবল হিসেবে গন্য করা হয় যতক্ষন ডাটা স্ট্রাকচারটি মেমোরিতে থাকে। -For instance, if we put an object into an array, then while the array is alive, the object will be alive as well, even if there are no other references to it. +যেমন, যদি আমরা অ্যারেতে কোন একটি অবজেক্ট রাখি, তাহলে যতক্ষণ অ্যারেটি রিচেবল হবে ততক্ষণ অবজেক্টটিও রিচেবল হবে, যদিও আমরা রেফারেন্সটি রিমুভড করে দেয় তাও অবজেক্টটিও রিচেবল থাকবে। -Like this: +যেমন: ```js let john = { name: "John" }; let array = [ john ]; -john = null; // overwrite the reference +john = null; // রেফারেন্সকে null করা হল *!* +<<<<<<< HEAD +// যেহেতু john অ্যারেতে আছে, সুতরাং একে গার্বেজ কালেক্টর মেমোরি থেকে মুছবে না +// array[0] এর সাহায্যে একে অ্যাক্সেস করতে পারি +======= // the object previously referenced by john is stored inside the array // therefore it won't be garbage-collected // we can get it as array[0] +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 */!* ``` -Similar to that, if we use an object as the key in a regular `Map`, then while the `Map` exists, that object exists as well. It occupies memory and may not be garbage collected. +একই ভাবে, যদি আমরা কোন একটি অবজেক্টকে `Map` এর কী(key) হিসেবে ব্যবহার করি, তাহলে যতক্ষণ `Map` টি রিচেবল হবে ততক্ষন অবজেক্টটিকেও কালেক্ট করা যাবে। এটি মেমোরিতে থেকে যাবে, সুতরাং একে গার্বেজ কালেক্টর মেমোরি থেকে মুছবে না। -For instance: +যেমন: ```js let john = { name: "John" }; @@ -48,36 +61,44 @@ let john = { name: "John" }; let map = new Map(); map.set(john, "..."); -john = null; // overwrite the reference +john = null; // রেফারেন্সকে null করা হল *!* -// john is stored inside the map, -// we can get it by using map.keys() +// john এর মান map এ সংরক্ষিত আছে, +// map.keys() এর সাহায্যে একে অ্যাক্সেস করতে পারি */!* ``` +<<<<<<< HEAD +`WeakMap` এবং `WeakSet` এদের থেকে ভিন্ন। কেননা এরা আনরিচেবল অবজেক্টসমূহের মান সংরক্ষন করে না। +======= [`WeakMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap) is fundamentally different in this aspect. It doesn't prevent garbage-collection of key objects. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Let's see what it means on examples. +উদাহরণের সাহায্যে বুঝার চেষ্টা করি। ## WeakMap +<<<<<<< HEAD +`Map` এবং `WeakMap` এর প্রধান পার্থক্য হলো `WeakMap` এর কী(key) কখনো প্রিমিটিভ টাইপ হতে পারবে না শুধুমাত্র অবজেক্ট হবে: +======= The first difference between [`Map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) and [`WeakMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap) is that keys must be objects, not primitive values: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run let weakMap = new WeakMap(); let obj = {}; -weakMap.set(obj, "ok"); // works fine (object key) +weakMap.set(obj, "ok"); // (কী হিসেবে object) কাজ করবে *!* -// can't use a string as the key -weakMap.set("test", "Whoops"); // Error, because "test" is not an object +// কী হিসেবে string ব্যবহার করতে পারব না +weakMap.set("test", "Whoops"); // এরর, কেননা "test" এর টাইপ অবজেক্ট না */!* ``` -Now, if we use an object as the key in it, and there are no other references to that object -- it will be removed from memory (and from the map) automatically. +এখন, যদি আমরা কোন অবজেক্টকে কী(key) হিসেবে ব্যবহার করি এবং এটির রেফারেন্স রিমুভড করে দেয়া হয়, তাহলে এটি মেমোরি (এবং map) হতেও রিমুভড হয়ে যাবে। ```js let john = { name: "John" }; @@ -85,46 +106,52 @@ let john = { name: "John" }; let weakMap = new WeakMap(); weakMap.set(john, "..."); -john = null; // overwrite the reference +john = null; // reference কে ওভাররাইট করা হল -// john is removed from memory! +// মেমোরি হতে john মুছে যাবে ``` -Compare it with the regular `Map` example above. Now if `john` only exists as the key of `WeakMap` -- it will be automatically deleted from the map (and memory). +উপরের উদাহরণটিকে `Map` এর সাথে তুলনা করে দেখুন। যদিও `john` শুধুমাত্র `WeakMap` এর কী(key) হিসেবে উপস্থিত থাকবে, তবে এটি স্বয়ংক্রিয়ভাবে weakMap এবং মেমোরি হতে মুছে যাবে। -`WeakMap` does not support iteration and methods `keys()`, `values()`, `entries()`, so there's no way to get all keys or values from it. +`WeakMap` ইটারেশন মেথডগুলো সাপোর্ট করে না, যেমন `keys()`, `values()`, `entries()`, সুতরাং আমরা কোনভাবে সকল কী(key) বা ভ্যালুকে ইটারেট করতে পারব না। -`WeakMap` has only the following methods: +`WeakMap` এর মেথড: - [`weakMap.set(key, value)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/set) - [`weakMap.get(key)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/get) - [`weakMap.delete(key)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/delete) - [`weakMap.has(key)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/has) -Why such a limitation? That's for technical reasons. If an object has lost all other references (like `john` in the code above), then it is to be garbage-collected automatically. But technically it's not exactly specified *when the cleanup happens*. +মেথডের এই সীমাবদ্ধতাটি প্রযুক্তিগত কারণে। যদি কোন অবজেক্ট তার রেফারেন্স হারিয়ে ফেলে (যেমন উপরের কোডে `john` এর মত)। তাহলে গার্বেজ কালেক্টেড স্বয়ংক্রিয়ভাবে হবে। তবে এটি নির্দিষ্ট নয় কখন গার্বেজ কালেকশন সম্পন্ন হবে। +<<<<<<< HEAD +কখন গার্বেজ কালেক্টর প্রসেস হবে এই সিদ্ধান্তটি জাভাস্ক্রিপ্ট ইঞ্জিন নেয়। তাই আমরা `WeakMap` এর এলিমেন্টকে গণনা করতে পারব না। একারণে keys/values অ্যাক্সেসের মেথডগুলো সাপোর্ট করে না। + +এখন কথা হল কী ধরণের কাজে এদের ব্যবহার করতে পারি? +======= The JavaScript engine decides that. It may choose to perform the memory cleanup immediately or to wait and do the cleaning later when more deletions happen. So, technically, the current element count of a `WeakMap` is not known. The engine may have cleaned it up or not, or did it partially. For that reason, methods that access all keys/values are not supported. Now, where do we need such a data structure? +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -## Use case: additional data +## ব্যবহারের ক্ষেত্র: অতিরিক্ত ডাটা সংরক্ষণ -The main area of application for `WeakMap` is an *additional data storage*. +অতিরিক্ত ডাটা সংরক্ষণ করতে আমরা `WeakMap` ব্যবহার করে থাকি। -If we're working with an object that "belongs" to another code, maybe even a third-party library, and would like to store some data associated with it, that should only exist while the object is alive - then `WeakMap` is exactly what's needed. +যখন আমরা কোন একটি অবজেক্ট নিয়ে কাজ করি যা অন্য কোডের সাথে সম্পর্ক রাখে, হতে পারে কোন একটি থার্ড-পার্টি লাইব্রেরী, যা এর সাথে সম্পর্কিত কিছু ডাটা সংরক্ষণ করতে চায়, তাহলে অবজেক্টটিকে ততক্ষণ পর্যন্ত মেমোরিতে সংরক্ষণ রাখা উচিত যতক্ষণ অবজেক্টটি রিচেবল হয়, এক্ষেত্রে আমরা `WeakMap` ব্যবহার করি। -We put the data to a `WeakMap`, using the object as the key, and when the object is garbage collected, that data will automatically disappear as well. +আমরা `WeakMap` এ কিছু ডাটা সংরক্ষণ করব, অবজেক্টকে কী(key) হিসেবে ব্যবহার করব, এবং যখন অবজেক্টটির রেফারেন্স মুছে যাবে তখন গার্বেজ কালেক্টরের কারণে weakMap এ ঐ অবজেক্টের ডাটাও স্বয়ংক্রিয়ভাবে মুছে যাবে। ```js weakMap.set(john, "secret documents"); -// if john dies, secret documents will be destroyed automatically +// john এর রেফারেন্স মুছে গেলে, স্বয়ংক্রিয়ভাবে john কী(key) এবং ভ্যালু মুছে যাবে ``` -Let's look at an example. +চলুন একটি উদাহরণ দেখি। -For instance, we have code that keeps a visit count for users. The information is stored in a map: a user object is the key and the visit count is the value. When a user leaves (its object gets garbage collected), we don't want to store their visit count anymore. +যেমন, আমাদের ভিজিটর কাউন্টের জন্য একটি ফাংশন আছে। এবং আমরা ডাটাগুলোকে `Map` এ সংরক্ষণ করি: অবজেক্টকে কী(key) হিসেবে এবং ভ্যালু হিসেবে ভিজিটের মান সংরক্ষন করছি। যখন অবজেক্টটি `null` হবে (অবজেক্টটি গার্বেজ কালেক্টরে যাবে), এইক্ষেত্রে আমরা ঐ অবজেক্টের মান আর `map` এ সংরক্ষন রাখতে চায় না। -Here's an example of a counting function with `Map`: +এখানে `Map` এর সাহায্যে ডাটা সংরক্ষন করা হচ্ছে: ```js // 📁 visitsCount.js @@ -137,42 +164,56 @@ function countUser(user) { } ``` -And here's another part of the code, maybe another file using it: +এবং এখানে একটি অবজেক্টের ডাটা সংরক্ষন করা হচ্ছে: ```js // 📁 main.js let john = { name: "John" }; -countUser(john); // count his visits +countUser(john); // ভিজিট গননা -// later john leaves us +// রেফারেন্স মুছে দেয়া হল john = null; ``` +<<<<<<< HEAD +এখন `john` অবজেক্টটি গার্বেজ কালেক্টরে যাবে হবে, তবে অবজেক্টটিকে মেমোরিতে সংরক্ষণ করা হবে, যেহেতু এটি `visitsCountMap` এর কী(key)। +======= Now, `john` object should be garbage collected, but remains in memory, as it's a key in `visitsCountMap`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -We need to clean `visitsCountMap` when we remove users, otherwise it will grow in memory indefinitely. Such cleaning can become a tedious task in complex architectures. +আমাদের users রিমুভ হলে `visitsCountMap` এর কী(key) টিকেও ডিলিট করা লাগবে, অন্যথায় মেমোরির মান বৃদ্ধি পেতে থাকবে। এইক্ষেত্রে মেমোরি ম্যানেজমেন্টের কাজ বিরক্তিকর এবং কিছুটা জটিল। -We can avoid it by switching to `WeakMap` instead: +তবে `WeakMap` এর সাহায্যে এটি খুব সহজে প্রয়োগ করা যায়: ```js // 📁 visitsCount.js let visitsCountMap = new WeakMap(); // weakmap: user => visits count -// increase the visits count +// ভিজিট কাউন্ট ফাংশনালিটি function countUser(user) { let count = visitsCountMap.get(user) || 0; visitsCountMap.set(user, count + 1); } ``` +<<<<<<< HEAD +এখন আমাদের `visitsCountMap` কে ম্যনুয়ালী ম্যানেজ করা লাগবে না। কেননা `john` আনরিচেবল হলে আমরা `WeakMap` হতে কী(key) টাকে আর কোন ভাবে অ্যাক্সেস করতে পারব না, `WeakMap` হতে আনরিচেবল হওয়ার সাথে সাথে মেমোরি হতেও রিমুভড হয়ে যাবে। +======= Now we don't have to clean `visitsCountMap`. After `john` object becomes unreachable, by all means except as a key of `WeakMap`, it gets removed from memory, along with the information by that key from `WeakMap`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 + +## ব্যবহারের ক্ষেত্র: caching -## Use case: caching +<<<<<<< HEAD +আমাদের প্রায় সময় ডাটা cache করা লাগে: যদি কোন একটি মান ("cached") করে রাখি তাহলে পরবর্তীতে একই অবজেক্টকে পুনরায় ব্যবহার করতে পারি। +এক্ষেত্রে আমরা ডাটা সংরক্ষণ করতে `Map` ব্যবহার করি: +======= Another common example is caching. We can store ("cache") results from a function, so that future calls on the same object can reuse it. To achieve that, we can use `Map` (not optimal scenario): +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run // 📁 cache.js @@ -208,9 +249,13 @@ obj = null; alert(cache.size); // 1 (Ouch! The object is still in cache, taking memory!) ``` -For multiple calls of `process(obj)` with the same object, it only calculates the result the first time, and then just takes it from `cache`. The downside is that we need to clean `cache` when the object is not needed any more. +একই অবজেক্ট দ্বারা `process(obj)` কে একাধিকবার এক্সিকিউট করা করা হলে এটি প্রথম এক্সিকিউশনে `cache` এ ঐ অবজেক্টের ডাটা সংরক্ষণ করবে, এবং পরবর্তী এক্সিকিউশনগুলোর জন্য `cache` হতে ঐ অবজেক্টের ডাটা রিটার্ন করবে। তবে এর একটি সীমাবদ্ধতা রয়েছে, ভেবে দেখুন তো যদি কোন কারণে অবজেক্টটি ডিলিট করে দিই তাহলে কি ঐ অবজেক্টের মান `cache` এ সংরক্ষণ করার প্রয়োজন আছে কি? +<<<<<<< HEAD +এটি সমাধানের জন্য আমরা `Map` এর বদলে `WeakMap` ব্যবহার করব, তাহলে আমাদের অপ্রয়োজনীয় ডাটা মেমোরিতে সংরক্ষণ নিয়ে চিন্তা করতে হবে না, যখন কোন অবজেক্ট ডিলিট করা হবে তখন গার্বেজ কালেক্টর প্রসেসের কারণে ঐ অবজেক্টের ডাটা স্বয়ংক্রিয়ভাবে মুছে যাবে। +======= If we replace `Map` with `WeakMap`, then this problem disappears. The cached result will be removed from memory automatically after the object gets garbage collected. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run // 📁 cache.js @@ -246,6 +291,15 @@ obj = null; ## WeakSet +<<<<<<< HEAD +`WeakSet` এর বৈশিষ্ট্য: + +- এটি `Set` এর সাথে সদৃশপূর্ণ, তবে `WeakSet` এ প্রিমিটিভ টাইপ ডাটা সংরক্ষণ করা যায় না শুধুমাত্র অবজেক্ট সংরক্ষন করা যায়। +- যতক্ষন পর্যন্ত কোন অবজেক্ট রিচেবল থাকে ততক্ষন অবজেক্টটি সেট এর মধ্যে উপস্থিত থাকবে, অন্যথায় ঐ অবজেক্টের ডাটা স্বয়ংক্রিয়ভাবে মুছে যাবে। +- `Set` এর মত, এর `add`, `has` এবং `delete` মেথড আছে, তবে ইটারেশন মেথড বা প্রপার্টি `size`, `keys()` নেই। + +"weak" এর কারণে এটিকে আমরা অতিরিক্ত ডাটা সংরক্ষনের জন্য ব্যবহার করতে পারি। তবে যেকোন ধরণের ডাটার জন্য না, তার পরিবর্তে "yes/no" এই ধরণের তথ্য বুঝাতে। কোন একটি অবজেক্ট `WeakSet` এর এলিমেন্ট হওয়া দ্বারা এর সম্পর্কে কোন কিছু বুঝায়। +======= [`WeakSet`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet) behaves similarly: - It is analogous to `Set`, but we may only add objects to `WeakSet` (not primitives). @@ -253,8 +307,9 @@ obj = null; - Like `Set`, it supports [`add`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Weakset/add), [`has`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Weakset/has) and [`delete`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Weakset/delete), but not `size`, `keys()` and no iterations. Being "weak", it also serves as additional storage. But not for arbitrary data, rather for "yes/no" facts. A membership in `WeakSet` may mean something about the object. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -For instance, we can add users to `WeakSet` to keep track of those who visited our site: +উদাহরণস্বরূপ, আমরা `WeakSet` এর সাহায্যে ভিজিটেড ইউজারদের ট্র্যাক করব: ```js run let visitedSet = new WeakSet(); @@ -280,10 +335,23 @@ john = null; // visitedSet will be cleaned automatically ``` +<<<<<<< HEAD +`WeakMap` এবং `WeakSet` এর উল্লেখযোগ্য পার্থক্যটি হল এরা কোন ধরনের ইটারশন সাপোর্ট করে না, আবার এর সকল ডাটাকে অ্যাক্সেস করতে পারি না। এটি অসুবিধাজনক মনে হতে পারে, তবে `WeakMap/WeakSet` এর মূল কাজের জন্য এটি তেমন সমস্যা নই, যা আমাদের কন্টেক্সটের অবজক্টের মান সংরক্ষন করার সুবিধা দেয়। +======= The most notable limitation of `WeakMap` and `WeakSet` is the absence of iterations, and the inability to get all current content. That may appear inconvenient, but does not prevent `WeakMap/WeakSet` from doing their main job -- be an "additional" storage of data for objects which are stored/managed at another place. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 + +## সারাংশ + +<<<<<<< HEAD +`WeakMap` হল `Map` এর মত একটি কালেকশন যা কী(key) হিসেবে শুধুমাত্র অবজেক্ট সাপোর্ট করে এবং যতক্ষন অবজেক্টটি রিচেবল থাকবে ততক্ষন ঐ অবজেক্টের কী(key) `WeakMap` এ সংরক্ষিত থাকবে, আর যখন অবজেক্টটি আনরিচেবল হবে তখন স্বয়ংক্রিয়ভাবে কী(key) টি মুছে যাবে। + +`WeakSet` হল `Set`এর মত একটি কালেকশন সেট এর এলিমেন্ট হিসেবে শুধুমাত্র অবজেক্ট সাপোর্ট করে এবং যতক্ষন অবজেক্টটি রিচেবল থাকবে ততক্ষন ঐ অবজেক্টের মান `WeakSet` এ সংরক্ষিত থাকবে, আর যখন অবজেক্টটি আনরিচেবল হবে তখন স্বয়ংক্রিয়ভাবে এলিমেন্টটি মুছে যাবে। -## Summary +`WeakMap` এবং `WeakSet` ইটারেশন মেথড বা প্রপার্টি সাপোর্ট করে না। শুধুমাত্র কিছু নির্দিষ্ট অপারেশন চালানো যায়। +`WeakMap` এবং `WeakSet` মূল অবজেক্টের সেকেন্ডারী ডাটা স্ট্রাকচার হিসেবে ব্যবহার করা হয়। যখন কোন অবজেক্ট মেমোরি হতে রিমুভ করা হয় তখন তা `WeakMap` বা `WeakSet` হতে স্বয়ংক্রিয়ভাবে মুছে যাবে। +======= [`WeakMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap) is `Map`-like collection that allows only objects as keys and removes them together with associated value once they become inaccessible by other means. [`WeakSet`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet) is `Set`-like collection that stores only objects and removes them once they become inaccessible by other means. @@ -293,3 +361,4 @@ Their main advantages are that they have weak reference to objects, so they can That comes at the cost of not having support for `clear`, `size`, `keys`, `values`... `WeakMap` and `WeakSet` are used as "secondary" data structures in addition to the "primary" object storage. Once the object is removed from the primary storage, if it is only found as the key of `WeakMap` or in a `WeakSet`, it will be cleaned up automatically. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 diff --git a/1-js/05-data-types/10-destructuring-assignment/article.md b/1-js/05-data-types/10-destructuring-assignment/article.md index c8693b2c4..e8ecfc4e4 100644 --- a/1-js/05-data-types/10-destructuring-assignment/article.md +++ b/1-js/05-data-types/10-destructuring-assignment/article.md @@ -1,7 +1,22 @@ # Destructuring assignment -The two most used data structures in JavaScript are `Object` and `Array`. +জাভাস্ক্রিপ্টে সবচেয়ে বেশি ব্যবহৃত দুটি ডাটা স্ট্রাকচার হল `Object` এবং `Array`। +<<<<<<< HEAD +সাধারণত অবজেক্ট কী(key) এবং ভ্যালু আকারে এবং অ্যারে ক্রম অনুসারে ডাটা সংরক্ষণ করে। + +কিন্তু, অনেক সময় এদের কোন একটি ফাংশনে আর্গুমেন্ট হিসেবে পাঠাতে চাইলে সম্পূর্ণ অবজেক্ট বা অ্যারের পরিবর্তে নির্দিষ্ট অংশ প্রয়োজন হয়। + +*Destructuring assignment* একটি বিশেষ সিনট্যাক্স যার মাধ্যমে অবজেক্ট বা অ্যারের নির্দিষ্ট অংশকে সহজে ভ্যারিয়েবলে অ্যাসাইন করতে পারি, যা অনেক সময় সুবিধাজনক। এছাড়াও অনেক প্যারামিটার, ডিফল্ট ভ্যালু ইত্যাদি আছে এমন জটিল ফাংশনকে *Destructuring* সহজে হ্যান্ডেল করার সুবিধা দেয়। + +## Array destructuring + +অ্যারেকে কিভাবে destructured করে ভ্যারিয়েবলে সেট করতে পারি তার একটি উদাহরণ দেখুন: + +```js +// name এবং surname এর একটি অ্যারে আছে +let arr = ["Ilya", "Kantor"] +======= - Objects allow us to create a single entity that stores data items by key. - Arrays allow us to gather data items into an ordered list. @@ -18,11 +33,12 @@ Here's an example of how an array is destructured into variables: ```js // we have an array with a name and surname let arr = ["John", "Smith"] +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 *!* // destructuring assignment -// sets firstName = arr[0] -// and surname = arr[1] +// firstName = arr[0] সেট হল +// এবং surname = arr[1] let [firstName, surname] = arr; */!* @@ -30,9 +46,9 @@ alert(firstName); // John alert(surname); // Smith ``` -Now we can work with variables instead of array members. +এখন আমরা অ্যারের আইটেমগুলোর পরিবর্তে ভ্যারিয়েবল নিয়ে কাজ করতে পারি। -It looks great when combined with `split` or other array-returning methods: +এছাড়াও `split` বা যেসব মেথড অ্যারে রিটার্ন করে এদের সাথেও এটি কাজ করে। ```js run let [firstName, surname] = "John Smith".split(' '); @@ -40,12 +56,17 @@ alert(firstName); // John alert(surname); // Smith ``` +<<<<<<< HEAD +````smart header="\"Destructuring\" দ্বারা \"destructive\" বুঝানো হয় না" +এটিকে বলা হয় "destructuring assignment", কেননা এটি "destructurizes" এর মাধ্যমে আইটেমকে ভ্যারিয়েবলে রূপান্তর করে। কিন্তু অরিজিনাল অ্যারের কোন পরিবর্তন হয় না। +======= As you can see, the syntax is simple. There are several peculiar details though. Let's see more examples to understand it better. ````smart header="\"Destructuring\" does not mean \"destructive\"." It's called "destructuring assignment," because it "destructurizes" by copying items into variables. However, the array itself is not modified. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -It's just a shorter way to write: +আসলে এটি সংক্ষেপে লেখার একটি পদ্ধতি, যেমন: ```js // let [firstName, surname] = arr; let firstName = arr[0]; @@ -53,24 +74,28 @@ let surname = arr[1]; ``` ```` -````smart header="Ignore elements using commas" -Unwanted elements of the array can also be thrown away via an extra comma: +````smart header="অপ্রয়োজনীয় এলিমেন্টকে কমার সাহায্যে বাদ দেয়া" +অ্যারের অপ্রয়োজনীয় এলিমেন্টকে অতিরিক্ত কমা সংযুক্ত করে বাদ দিতে পারি: ```js run *!* -// second element is not needed +// দ্বিতীয় এলিমেন্টকে বাদ দিতে চাই let [firstName, , title] = ["Julius", "Caesar", "Consul", "of the Roman Republic"]; */!* alert( title ); // Consul ``` +<<<<<<< HEAD +উপরের কোডে, দ্বিতীয় এলিমেন্টকে উপেক্ষা করা হয়েছে, এবং তৃতীয় এলিমেন্টটি `title` এ সংযুক্ত হয়েছে, এছাড়াও অ্যারের অন্যান্য এলিমেন্টও উপেক্ষা হবে (যেহেতু তাদের জন্য কোন ভ্যারিয়েবলে অ্যাসাইন করা হয়নি)। +======= In the code above, the second element of the array is skipped, the third one is assigned to `title`, and the rest of the array items are also skipped (as there are no variables for them). +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```` -````smart header="Works with any iterable on the right-side" +````smart header="যেকোন ধরণের ইটারেবলের সাথে এই ধরণের অ্যাসাইনমেন্ট কাজ করে" -...Actually, we can use it with any iterable, not only arrays: +...এটি শুধুমাত্র অ্যারে না যেকোন ধরণের ইটারেবলের সাথে কাজ করে: ```js let [a, b, c] = "abc"; // ["a", "b", "c"] @@ -80,10 +105,16 @@ That works, because internally a destructuring assignment works by iterating ove ```` +<<<<<<< HEAD +````smart header="এছাড়াও বাম পাশের প্যাটার্নের কোন কিছুকে অ্যাসাইন করতে পারি" + +আমরা বাম পাশের প্যাটার্নের কোন কিছুকে অ্যাসাইন করতে পারি। +======= ````smart header="Assign to anything on the left-side" We can use any "assignables" on the left side. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -For instance, an object property: +যেমন একটি অবজেক্টের প্রপার্টি হিসেবে: ```js run let user = {}; [user.name, user.surname] = "John Smith".split(' '); @@ -94,10 +125,18 @@ alert(user.surname); // Smith ```` +<<<<<<< HEAD +````smart header=".entries() লুপ" + +পূর্বের অধ্যায়ে আমরা এই মেথডটি দেখেছি [Object.entries(obj)](mdn:js/Object/entries)। + +আমরা লুপের মধ্যে অবজেক্টকে keys-values আকারে destructuring করতে পারি: +======= ````smart header="Looping with .entries()" In the previous chapter, we saw the [Object.entries(obj)](mdn:js/Object/entries) method. We can use it with destructuring to loop over the keys-and-values of an object: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run let user = { @@ -105,7 +144,11 @@ let user = { age: 30 }; +<<<<<<< HEAD +// লুপে keys-and-values +======= // loop over the keys-and-values +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 *!* for (let [key, value] of Object.entries(user)) { */!* @@ -113,7 +156,11 @@ for (let [key, value] of Object.entries(user)) { } ``` +<<<<<<< HEAD +...অনুরূপ Map এর ক্ষেত্রেও: +======= The similar code for a `Map` is simpler, as it's iterable: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run let user = new Map(); @@ -129,21 +176,39 @@ for (let [key, value] of user) { ``` ```` +<<<<<<< HEAD +```smart header="ভ্যারিয়েবল অদল বদল" +দুটি ভ্যারিয়েবলের মান অদল বদল(swap) করার শর্টকার্ট পদ্ধতি: +======= ````smart header="Swap variables trick" There's a well-known trick for swapping values of two variables using a destructuring assignment: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run let guest = "Jane"; let admin = "Pete"; +<<<<<<< HEAD +// দুটি ভ্যারিয়েবলের মান অদল বদল করছি: guest=Pete, admin=Jane +======= // Let's swap the values: make guest=Pete, admin=Jane *!* +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 [guest, admin] = [admin, guest]; */!* -alert(`${guest} ${admin}`); // Pete Jane (successfully swapped!) +alert(`${guest} ${admin}`); // Pete Jane (এটি কাজ করছে) ``` +<<<<<<< HEAD +এখানে একটি টেম্পোরারি অ্যারের সাহায্যে ভ্যারিয়েবল গুলোকে destructure করে তাদের মধ্যে swap করা হল। + +এভাবে আমরা একাধিক ভ্যারিয়েবলকেও swap করতে পারি। + +### The rest '...' + +যদি আমরা শুধুমাত্র প্রথম বা দ্বিতীয় ভ্যালুর পাশাপাশি বাকী কালেকশনকে destructuring করতে চাই, তাহলে আমরা আরো একটি ভ্যারিয়েবলকে `"..."` তিনটি ডট সহ `"...rest"` লিখব, একে বলা হয় "rest", যেমন: +======= Here we create a temporary array of two variables and immediately destructure it in swapped order. We can swap more than two variables this way. @@ -164,18 +229,26 @@ alert(name2); // Caesar ``` If we'd like also to gather all that follows -- we can add one more parameter that gets "the rest" using three dots `"..."`: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run let [name1, name2, *!*...rest*/!*] = ["Julius", "Caesar", *!*"Consul", "of the Roman Republic"*/!*]; *!* +<<<<<<< HEAD +// নোট `rest` হল একটি অ্যারে। +======= // rest is an array of items, starting from the 3rd one +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 alert(rest[0]); // Consul alert(rest[1]); // of the Roman Republic alert(rest.length); // 2 */!* ``` +<<<<<<< HEAD +`rest` এর মান হবে অ্যারের অবশিষ্ট এলিমেন্টসমূহের একটি অ্যারে। আমরা ভ্যারিয়েবলটির মান `rest` এর পরিবর্তে যেকোন কিছু দিতে পারি, তবে মনে রাখতে হবে যেন ভ্যারিয়েবলের আগে যেন তিনটি ডট থাকে এবং এটি যেন destructuring এর শেষ এলিমেন্ট হয়। +======= The value of `rest` is the array of the remaining array elements. We can use any other variable name in place of `rest`, just make sure it has three dots before it and goes last in the destructuring assignment. @@ -184,10 +257,15 @@ We can use any other variable name in place of `rest`, just make sure it has thr let [name1, name2, *!*...titles*/!*] = ["Julius", "Caesar", "Consul", "of the Roman Republic"]; // now titles = ["Consul", "of the Roman Republic"] ``` +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -### Default values +### ডিফল্ট ভ্যালু +<<<<<<< HEAD +যদি অ্যারের `length` এর চেয়ে আমাদের অ্যাসাইনমেন্ট ভ্যারিয়েবলের সংখ্যা বেশি হয়, তাহলে কোন এরর থ্রো হবে না। তার পরিবর্তে ভ্যারিয়েবলের মান হবে undefined: +======= If the array is shorter than the list of variables on the left, there will be no errors. Absent values are considered undefined: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run *!* @@ -198,7 +276,7 @@ alert(firstName); // undefined alert(surname); // undefined ``` -If we want a "default" value to replace the missing one, we can provide it using `=`: +যদি আমরা undefined এর পরিবর্তে কোন একটি ডিফল্ট মান অ্যাসাইন করতে চাই, তাহলে এভাবে করতে পারি: ```js run *!* @@ -210,33 +288,41 @@ alert(name); // Julius (from array) alert(surname); // Anonymous (default used) ``` -Default values can be more complex expressions or even function calls. They are evaluated only if the value is not provided. +ডিফল্ট ভ্যালু জটিল এক্সপ্রেশন বা ফাংশন কলের সাথেও কাজ করবে। ডিফল্ট ভ্যালু অ্যাসাইন হবে যদি কোন কারণে মানটি অনুপস্থিত থাকে। +<<<<<<< HEAD +যেমন, এখানে `prompt` এর সাহায্যে দুটি ডিফল্ট মান অ্যাসাইন করা হচ্ছে। তবে এখানে শুধুমাত্র দ্বিতীয়টির জন্য ডিফল্ট মানটি কাজ করবে: +======= For instance, here we use the `prompt` function for two defaults: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run -// runs only prompt for surname +// শুধুমাত্র surname এর জন্য prompt এক্সিকিউট হবে let [name = prompt('name?'), surname = prompt('surname?')] = ["Julius"]; alert(name); // Julius (from array) -alert(surname); // whatever prompt gets +alert(surname); // prompt এর মান ``` Please note: the `prompt` will run only for the missing value (`surname`). ## Object destructuring -The destructuring assignment also works with objects. +destructuring assignment অবজেক্টের সাথেও কাজ করে। -The basic syntax is: +এর সিন্ট্যাক্সটি হল: ```js let {var1, var2} = {var1:…, var2:…} ``` +<<<<<<< HEAD +আমাদের ডান পাশে একটি অবজেক্ট আছে, এর মানকে আমরা ভ্যারিয়েবলে অ্যাসাইন করতে চাই। বাম পাশে প্রপার্টিগুলোর জন্য একটি প্যাটার্ন আছে। সাধারণত `{...}` প্যারেন্টেসিসের মধ্যে অবজেক্টের প্রপার্টিগুলো ভ্যারিয়েবল হিসেবে ডিক্লেয়ার করা হয়। +======= We should have an existing object on the right side, that we want to split into variables. The left side contains an object-like "pattern" for corresponding properties. In the simplest case, that's a list of variable names in `{...}`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -For instance: +যেমন: ```js run let options = { @@ -254,18 +340,26 @@ alert(width); // 100 alert(height); // 200 ``` +<<<<<<< HEAD +`options.title`, `options.width` এবং `options.height` প্রপার্টিগুলো একই নামের ভ্যারিয়েবলে অ্যাসাইন হবে। এখানে অ্যাসাইন ক্রম মূখ্য নই। এটিও কাজ করবে: +======= Properties `options.title`, `options.width` and `options.height` are assigned to the corresponding variables. The order does not matter. This works too: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js -// changed the order in let {...} +// let {...} এর মধ্যে ভ্যারিয়েবলের ক্রম পরিবর্তন let {height, width, title} = { title: "Menu", height: 200, width: 100 } ``` -The pattern on the left side may be more complex and specify the mapping between properties and variables. +বাম পাশের প্যাটার্নটিতে প্রপার্টি এবং ভ্যারিয়েবল আরো জটিল হতে পারে। +<<<<<<< HEAD +যদি আমরা কোন একটি প্রপার্টিকে অন্য নামে অ্যাসাইন করতে চায়, ধরুন `options.width` কে `w` নামে, তাহলে আমরা কোলন দ্বারা লিখতে পারি, যেমন: +======= If we want to assign a property to a variable with another name, for instance, make `options.width` go into the variable named `w`, then we can set the variable name using a colon: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run let options = { @@ -288,9 +382,9 @@ alert(w); // 100 alert(h); // 200 ``` -The colon shows "what : goes where". In the example above the property `width` goes to `w`, property `height` goes to `h`, and `title` is assigned to the same name. +কোলন দ্বারা বুঝায় "what : goes where"। উপরের উদাহরণে `width` হয়ে যাবে `w`, এবং `height` হবে `h`, এবং `title` একই নামে অ্যাসাইন হবে। -For potentially missing properties we can set default values using `"="`, like this: +অনুপস্থিত প্রপার্টির ডিফল্ট মান সেট করতে পারি `"="` এর মাধ্যমে, যেমন: ```js run let options = { @@ -306,9 +400,9 @@ alert(width); // 100 alert(height); // 200 ``` -Just like with arrays or function parameters, default values can be any expressions or even function calls. They will be evaluated if the value is not provided. +অ্যারের মত ডিফল্ট ভ্যালু জটিল এক্সপ্রেশন বা ফাংশন কলের সাথেও কাজ করবে। ডিফল্ট ভ্যালু অ্যাসাইন হবে যদি কোন কারণে প্রপার্টি অনুপস্থিত থাকে। -In the code below `prompt` asks for `width`, but not for `title`: +নিচের কোডে `title` এর জন্য `prompt` রান হবে না, হবে `width` এর জন্য: ```js run let options = { @@ -323,7 +417,7 @@ alert(title); // Menu alert(width); // (whatever the result of prompt is) ``` -We also can combine both the colon and equality: +এছাড়াও আমরা কোলন এবং ডিফল্ট অ্যাসাইনমেন্ট একসাথে লিখতে পারি: ```js run let options = { @@ -339,7 +433,7 @@ alert(w); // 100 alert(h); // 200 ``` -If we have a complex object with many properties, we can extract only what we need: +যদি আমাদের একাধিক প্রপার্টি হতে শুধুমাত্র একটি মান লাগে তাহলে সেটিও করা সম্ভব: ```js run let options = { @@ -348,7 +442,7 @@ let options = { height: 200 }; -// only extract title as a variable +// শুধুমাত্র title এর মান অ্যাসাইন হবে let { title } = options; alert(title); // Menu @@ -356,11 +450,11 @@ alert(title); // Menu ### The rest pattern "..." -What if the object has more properties than we have variables? Can we take some and then assign the "rest" somewhere? +আমরা নির্দিষ্ট প্রপার্টিকে ভ্যারিয়েবলে সেটের পাশাপাশি যদি বাকী প্রপার্টিগুলোকে কোন একটি ভ্যারিয়েবলে destructuring করতে চায় তা কী সম্ভব? -We can use the rest pattern, just like we did with arrays. It's not supported by some older browsers (IE, use Babel to polyfill it), but works in modern ones. +হ্যা সম্ভব, এক্ষেত্রে আমরা *rest pattern* ব্যবহার করতে পারি, যা ইতোমধ্যে অ্যারের ক্ষেত্রে দেখেছি। তবে এটি মডার্ন ব্রাউজারে কাজ করে, কিন্তু কিছু পুরনো ব্রাউজারে কাজ করে না (IE, পলিফিলের জন্য Babel ব্যবহার করতে পারি)। -It looks like this: +নিচের উদাহরণটি দেখুন: ```js run let options = { @@ -370,8 +464,8 @@ let options = { }; *!* -// title = property named title -// rest = object with the rest of properties +// title = title প্রপার্টি অ্যাসাইন হবে +// rest = অবজেক্টের বাকী প্রপার্টি অ্যাসাইন হবে let {title, ...rest} = options; */!* @@ -380,10 +474,10 @@ alert(rest.height); // 200 alert(rest.width); // 100 ``` -````smart header="Gotcha if there's no `let`" -In the examples above variables were declared right in the assignment: `let {…} = {…}`. Of course, we could use existing variables too, without `let`. But there's a catch. +````smart header="যদি `let` ব্যবহার না করি কি হবে!" +উপরের কোডে আমরা ভ্যারিয়েবলকে ডিক্লেয়ার করছি destructuring অ্যাসাইনমেন্টের সময়: `let {…} = {…}`। আমরা আমাদের পূর্বে ডিক্লেয়ারকৃত ভ্যারিয়েবলকে `let` ছাড়া ব্যবহার করতে পারি। তবে এক্ষেত্রে একটি সীমাবদ্ধতা রয়েছে। -This won't work: +এটি কাজ করবে না: ```js run let title, width, height; @@ -391,7 +485,7 @@ let title, width, height; {title, width, height} = {title: "Menu", width: 200, height: 100}; ``` -The problem is that JavaScript treats `{...}` in the main code flow (not inside another expression) as a code block. Such code blocks can be used to group statements, like this: +জাভাস্ক্রিপ্ট `{...}` কে আমাদের মূল কোডের কোড ব্লক হিসেবে ধরে নেয়। এই ধরণের কোড ব্লক আমরা গ্রুপ স্টেটমেন্টের জন্য ব্যবহার করি, যেমন: ```js run { @@ -402,9 +496,9 @@ The problem is that JavaScript treats `{...}` in the main code flow (not inside } ``` -So here JavaScript assumes that we have a code block, that's why there's an error. We want destructuring instead. +এখানে জাভাস্ক্রিপ্ট `{...}` কে কোড ব্লক হিসেবে ধরে নেয়, যার ফলে এটি এরর থ্রো করে। -To show JavaScript that it's not a code block, we can wrap the expression in parentheses `(...)`: +এটি আলাদা কোড ব্লক না তা জাভাস্ক্রিপ্টকে বুঝাতে একে প্যারেন্টেসিসের মধ্যে `(...)` লিখব: ```js run let title, width, height; @@ -418,9 +512,15 @@ alert( title ); // Menu ## Nested destructuring +<<<<<<< HEAD +নেস্টেড অবজেক্ট বা অ্যারের জন্য আমরা বাম পাশের প্যাটার্নকে আরো জটিল ভাবে ডিক্লেয়ার করতে পারি। + +নিচের কোডে `options` অবজেক্টের একটি নেস্টেড অবজেক্ট আছে `size` এবং আরো একটি অ্যারে প্রপার্টি আছে `items`। এক্ষেত্রে আমাদের বামের অ্যাসাইনমেন্ট প্যাটার্নটি ডানের স্ট্রাকচারের মত হতে হবে: +======= If an object or an array contains other nested objects and arrays, we can use more complex left-side patterns to extract deeper portions. In the code below `options` has another object in the property `size` and an array in the property `items`. The pattern on the left side of the assignment has the same structure to extract values from them: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run let options = { @@ -432,7 +532,7 @@ let options = { extra: true }; -// destructuring assignment split in multiple lines for clarity +// কোড পাঠযোগ্য হওয়ার জন্য destructuring assignment কে একাধিক লাইনে লিখেছি let { size: { // put size here width, @@ -449,19 +549,29 @@ alert(item1); // Cake alert(item2); // Donut ``` +<<<<<<< HEAD +এখন আমরা `options` অবজেক্টের সকল প্রপার্টিকে(`extra` বাদে ) বাম পাশে অ্যাসাইন করছি: +======= All properties of `options` object except `extra` which is absent in the left part, are assigned to corresponding variables: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ![](destructuring-complex.svg) -Finally, we have `width`, `height`, `item1`, `item2` and `title` from the default value. +এখন আমরা `width`, `height`, `item1`, `item2` এবং `title` এর ডিফল্ট মান পাব। -Note that there are no variables for `size` and `items`, as we take their content instead. +নোট: এখানে আমরা আলাদা করে `size` এবং `items` নামের আলাদা ভ্যারিয়েবল পাব না, তার পরিবর্তে তাদের কন্টেন্ট সেট হবে। ## Smart function parameters +<<<<<<< HEAD +অনেক সময় আমাদের এমন ফাংশন থাকে, যাদের বেশিরভাগ প্যারামিটার অপশনাল। বিশেষত UI এর ফাংশনের জন্য। মনে করুন আমরা একটি মেনু তৈরি করব। যার width, height, title, items ইত্যাদি প্যারামিটার আছে। + +এই ধরণের ফাংশন অনেক সময় এভাবে লিখা হয়, যা bad practice: +======= There are times when a function has many parameters, most of which are optional. That's especially true for user interfaces. Imagine a function that creates a menu. It may have a width, a height, a title, an item list and so on. Here's a bad way to write such a function: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js function showMenu(title = "Untitled", width = 200, height = 100, items = []) { @@ -469,20 +579,24 @@ function showMenu(title = "Untitled", width = 200, height = 100, items = []) { } ``` +<<<<<<< HEAD +বাস্তবিকক্ষেত্রে আমাদের আর্গুমেন্ট মনে রাখা কষ্টসাধ্য। সাধারণত ডকুমেন্টেড কোডের জন্য IDE সহায়ক হতে পারে, কিন্তু তারপরও সমস্যা আছে যদি ফাংশনের বেশিরভাগ প্যারামিটার ডিফল্ট হয় সেক্ষেত্রে কি হবে? +======= In real-life, the problem is how to remember the order of arguments. Usually, IDEs try to help us, especially if the code is well-documented, but still... Another problem is how to call a function when most parameters are ok by default. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Like this? +যেমন এটি দেখুন। ```js // undefined where default values are fine showMenu("My Menu", undefined, undefined, ["Item1", "Item2"]) ``` -That's ugly. And becomes unreadable when we deal with more parameters. +এছাড়াও, এটি আর পঠনযোগ্য থাকে না। -Destructuring comes to the rescue! +এক্ষেত্রে Destructuring আমাদের জন্য সুবিধাজনক! -We can pass parameters as an object, and the function immediately destructurizes them into variables: +আমরা ফাংশনের আর্গুমেন্ট হিসেবে অবজেক্টকে পাঠাতে পারি, এবং ফাংশনে তাদের কে destructurizes করে নিতে পারি: ```js run // we pass object to function @@ -502,7 +616,7 @@ function showMenu(*!*{title = "Untitled", width = 200, height = 100, items = []} showMenu(options); ``` -We can also use more complex destructuring with nested objects and colon mappings: +এছাড়াও আমরা destructurizes এর সময় নেস্টেড এবং কোলন ম্যাপিং করতে পারি, যেমন: ```js run let options = { @@ -526,7 +640,7 @@ function showMenu({ showMenu(options); ``` -The full syntax is the same as for a destructuring assignment: +এটির সিনট্যাক্স সম্পূর্ন destructuring assignment এর মত: ```js function({ incomingProperty: varName = defaultValue @@ -534,9 +648,13 @@ function({ }) ``` +<<<<<<< HEAD +এখানে একটি অবজেক্টকে প্যারামিটার হিসেবে নেয়, এবং `incomingProperty` প্রপার্টিটি `varName` ভ্যারিয়েবল হিসেবে সেট হবে, এবং ডিফল্ট ভ্যালু হবে `defaultValue`। +======= Then, for an object of parameters, there will be a variable `varName` for the property `incomingProperty`, with `defaultValue` by default. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Please note that such destructuring assumes that `showMenu()` does have an argument. If we want all values by default, then we should specify an empty object: +নোট: মনে করুন আমরা ফাংশন ডিক্লেয়ারেশনে destructuring করেছি এক্ষেত্রে আমাদের অবশ্যই প্যারামিটার হিসেবে একটি এম্পটি অবজেক্ট `{}` পাস করতে হবে, অন্যথায় একটি এরর থ্রো হবে: ```js showMenu({}); // ok, all values are default @@ -544,7 +662,7 @@ showMenu({}); // ok, all values are default showMenu(); // this would give an error ``` -We can fix this by making `{}` the default value for the whole object of parameters: +আমরা অন্যভাবে এটিকে সমাধান করতে পারি, প্যারামিটারের ডিফল্ট ভ্যালু হিসেবে অবজেক্ট অ্যাসাইন করার মাধ্যমে `{}`: ```js run function showMenu({ title = "Menu", width = 100, height = 200 }*!* = {}*/!*) { @@ -554,26 +672,30 @@ function showMenu({ title = "Menu", width = 100, height = 200 }*!* = {}*/!*) { showMenu(); // Menu 100 200 ``` -In the code above, the whole arguments object is `{}` by default, so there's always something to destructurize. +উপরের কোডে আমরা ফাংশন ডিক্লেয়ারেশনে অবজেক্ট আর্গুমেন্টটি ডিফল্ট হিসেবে `{}` সেট করছি, সুতরাং এটি প্যারামিটার পাস না করলে ডিফল্ট অবজেক্টকে destructuring করবে। -## Summary +## সারাংশ -- Destructuring assignment allows for instantly mapping an object or array onto many variables. -- The full object syntax: +- Destructuring assignment এর সাহায্যে অবজেক্ট বা অ্যারের কালেকশনের কোন একটি বা সম্পূর্ণ অংশকে ভ্যারিয়েবলে রূপান্তর করতে পারি। +- সিনট্যাক্স: ```js let {prop : varName = defaultValue, ...rest} = object ``` - This means that property `prop` should go into the variable `varName` and, if no such property exists, then the `default` value should be used. + এখানে বুঝানো হচ্ছে `prop` এর ভ্যারিয়েবল হবে `varName` এবং, যদি অবজেক্টে `prop` প্রপার্টি না থাকে তাহলে ডিফল্ট মানটি অ্যাসাইন হবে। - Object properties that have no mapping are copied to the `rest` object. + অবজেক্টের যেসব মান Destructuring হবে না তারা `rest` এ অবজেক্ট হিসেবে কপি হবে। -- The full array syntax: +- অ্যারের সিনট্যাক্স: ```js let [item1 = defaultValue, item2, ...rest] = array ``` +<<<<<<< HEAD + অ্যারের প্রথম আইটেমটি অ্যাসাইন হবে `item1` এ; অ্যারের দ্বিতীয় আইটেমটি অ্যাসাইন হবে `item2` এ, এবং অবশিষ্ট আইটেম `rest` এ অ্যারে হিসেবে কপি হবে। +======= The first item goes to `item1`; the second goes into `item2`, and all the rest makes the array `rest`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -- It's possible to extract data from nested arrays/objects, for that the left side must have the same structure as the right one. +- নেস্টেড arrays/objects কেও এক্সট্রাক্ট করা সম্ভব, এক্ষেত্রে আমাদের বামের প্যাটার্নটি ডানের স্ট্রাকচারের মত হতে হবে। diff --git a/1-js/05-data-types/10-destructuring-assignment/destructuring-complex.svg b/1-js/05-data-types/10-destructuring-assignment/destructuring-complex.svg index 8a1ff1a93..8f6bcc033 100644 --- a/1-js/05-data-types/10-destructuring-assignment/destructuring-complex.svg +++ b/1-js/05-data-types/10-destructuring-assignment/destructuring-complex.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/1-js/05-data-types/11-date/article.md b/1-js/05-data-types/11-date/article.md index 6958a3a97..82b0a5673 100644 --- a/1-js/05-data-types/11-date/article.md +++ b/1-js/05-data-types/11-date/article.md @@ -1,39 +1,39 @@ -# Date and time +# তারিখ এবং সময় -Let's meet a new built-in object: [Date](mdn:js/Date). It stores the date, time and provides methods for date/time management. +এই অধ্যায়ে আমরা নতুন আরেকটি বিল্ট-ইন অবজেক্ট [Date](mdn:js/Date) সম্পর্কে জানব। এর সাহায্যে আমরা তারিখ/সময় এর বিভিন্ন মেথড নিয়ে কাজ করতে পারি। -For instance, we can use it to store creation/modification times, to measure time, or just to print out the current date. +যেমন, আমরা কোন ডাটা তৈরির বা পরিবর্তন এর সময় সংরক্ষণ করতে, অথবা বর্তমান সময় বা তারিখ জানার জন্য এদের ব্যবহার করি। -## Creation +## অবজেক্ট তৈরি -To create a new `Date` object call `new Date()` with one of the following arguments: +নতুন একটি `Date` অবজেক্ট তৈরি করতে আমরা `new Date()` কে কল করব, যেটি কিছু আর্গুমেন্ট নেয়: `new Date()` -: Without arguments -- create a `Date` object for the current date and time: +: কোন আর্গুমেন্ট ছাড়া `Date` অবজেক্ট কল করলে এটি বর্তমান সময় এবং তারিখ দেখাবে: ```js run let now = new Date(); - alert( now ); // shows current date/time + alert( now ); // বর্তমান সময় এবং তারিখ দেখাবে ``` `new Date(milliseconds)` -: Create a `Date` object with the time equal to number of milliseconds (1/1000 of a second) passed after the Jan 1st of 1970 UTC+0. +: `Date` অবজেক্ট তৈরির সময় আমরা মিলিসেকেন্ড(১ সেকেন্ডের ১০০০ ভাগ) আর্গুমেন্ট হিসেবে পাঠাতে পারি, যা ১৯৭০ সালের ১লা জানুয়ারি(UTC+0) থেকে সময় গণনা করে। ```js run - // 0 means 01.01.1970 UTC+0 + // ০ দ্বারা বুঝায় 01.01.1970 UTC+0 let Jan01_1970 = new Date(0); alert( Jan01_1970 ); - // now add 24 hours, get 02.01.1970 UTC+0 + // এখন আরো ২৪ ঘন্টা যোগ করলে পাই, 02.01.1970 UTC+0 let Jan02_1970 = new Date(24 * 3600 * 1000); alert( Jan02_1970 ); ``` - An integer number representing the number of milliseconds that has passed since the beginning of 1970 is called a *timestamp*. + ১৯৭০ এর শুরু থেকে অতিক্রান্ত সময়কে মিলিসেকেন্ড দ্বারা প্রকাশ করাকে বলা হয় *timestamp*। - It's a lightweight numeric representation of a date. We can always create a date from a timestamp using `new Date(timestamp)` and convert the existing `Date` object to a timestamp using the `date.getTime()` method (see below). + কোন একটি তারিখকে আমরা এভাবে সংখ্যা দ্বারা প্রকাশ করতে পারি। `new Date(timestamp)` অবজেক্ট তৈরিতে আমরা সর্বদা কোন একটি টাইমস্ট্যাম্প আর্গুমেন্ট হিসেবে পাঠাব যা আমাদের ঐ টাইমস্ট্যাম্প হিসেবে `Date` অবজেক্ট রিটার্ন করে এবং `Date` অবজেক্ট থেকে টাইমস্ট্যাম্প পেতে আমরা `date.getTime()` মেথড ব্যবহার করতে পারি (নিম্নে বিস্তারিত আলোচনা করা হয়েছে)। - Dates before 01.01.1970 have negative timestamps, e.g.: + ০১-০১-১৯৭০ এর আগের তারিখের জন্য আমরা ঋণাত্নক টাইমস্ট্যাম্প ব্যবহার করতে পারি, যেমন: ```js run // 31 Dec 1969 let Dec31_1969 = new Date(-24 * 3600 * 1000); @@ -41,101 +41,111 @@ To create a new `Date` object call `new Date()` with one of the following argume ``` `new Date(datestring)` -: If there is a single argument, and it's a string, then it is parsed automatically. The algorithm is the same as `Date.parse` uses, we'll cover it later. +: যদি প্রথম একটি আর্গুমেন্টে কোন একটি তারিখ স্ট্রিং হিসেবে পাঠাই, তাহলে এটি স্বয়ংক্রিয়ভাবে তারিখে রূপান্তর হয়ে যায়। এক্ষেত্রে `Date.parse` অ্যালগরিদম ব্যবহার হয়(নিম্নে বিস্তারিত আলোচনা করা হয়েছে)। ```js run let date = new Date("2017-01-26"); alert(date); - // The time is not set, so it's assumed to be midnight GMT and - // is adjusted according to the timezone the code is run in - // So the result could be + // যেহেতু কোন সময়ের উল্লেখ নেই, সুতরাং এটি GMT রাত ১২.০০ টা হিসেব করে নেয় + // এবং স্থানীয় সময়মান অনুসারে দেখায় + // সময়টি হতে পারে // Thu Jan 26 2017 11:00:00 GMT+1100 (Australian Eastern Daylight Time) - // or + // অথবা // Wed Jan 25 2017 16:00:00 GMT-0800 (Pacific Standard Time) + // অথবা + // Thu Jan 26 2017 06:00:00 GMT+0600 (Bangladesh Standard Time) ``` `new Date(year, month, date, hours, minutes, seconds, ms)` -: Create the date with the given components in the local time zone. Only the first two arguments are obligatory. - +: স্থানীয় সময়মান হিসেবে `Date` অবজেক্ট তৈরীর জন্য আমরা উপরের নিয়ম অনুযায়ী কল করতে পারি, এক্ষেত্রে প্রথম দুটি আর্গুমেন্ট অবশ্যই দিতে হবে, শুধুমাত্র একটি আর্গুমেন্ট পাঠালে তখন এটি টাইমস্ট্যাম্প হিসেবে ধরে নিবে। + +<<<<<<< HEAD + - `year` অবশ্যই পূর্ণভাবে লিখতে হবে: `1998` এর বদলে `98` লিখা সঠিক নয়। + - `month` `0` (Jan) থেকে শুরু হয়, সর্বোচ্চ `11` (Dec)। + - `date` প্যারামিটার মাসের দিন হিসেব করে, যদি আর্গুমেন্ট পাস করা না হয় ডিফল্ট `1` তারিখ সেট হয়। + - যদি আর্গুমেন্ট `hours/minutes/seconds/ms` পাস করা না হয় ডিফল্ট `0` সেট হয়। +======= - The `year` should have 4 digits. For compatibility, 2 digits are also accepted and considered `19xx`, e.g. `98` is the same as `1998` here, but always using 4 digits is strongly encouraged. - The `month` count starts with `0` (Jan), up to `11` (Dec). - The `date` parameter is actually the day of month, if absent then `1` is assumed. - If `hours/minutes/seconds/ms` is absent, they are assumed to be equal `0`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 - For instance: + উদাহরণস্বরূপ: ```js new Date(2011, 0, 1, 0, 0, 0, 0); // 1 Jan 2011, 00:00:00 - new Date(2011, 0, 1); // the same, hours etc are 0 by default + new Date(2011, 0, 1); // দুইটার মান একই ``` - The maximal precision is 1 ms (1/1000 sec): + সর্বাধিক নির্ভুল মান পেতে 1ms (1/1000 sec) ব্যবহার করা যায়: ```js run let date = new Date(2011, 0, 1, 2, 3, 4, 567); alert( date ); // 1.01.2011, 02:03:04.567 ``` -## Access date components +## তারিখের বিভিন্ন মেথড -There are methods to access the year, month and so on from the `Date` object: +`Date` অবজেক্ট এর তারিখ, মাস, সময় ইত্যাদি জানার জন্য বিভিন্ন বিল্ট-ইন মেথড রয়েছে: [getFullYear()](mdn:js/Date/getFullYear) -: Get the year (4 digits) +: এটি সাল রিটার্ন করে (৪ অঙ্কের) [getMonth()](mdn:js/Date/getMonth) -: Get the month, **from 0 to 11**. +: এটি মাসের ক্রম রিটার্ন করে, **0 হতে 11 পর্যন্ত** [getDate()](mdn:js/Date/getDate) -: Get the day of month, from 1 to 31, the name of the method does look a little bit strange. +: এটি মাসের কততম দিন তা রিটার্ন করে, 1 হতে 31 পর্যন্ত, যদিও এই মেথডের নামটি কিছুটা সাংঘর্ষিক মনে হয়। [getHours()](mdn:js/Date/getHours), [getMinutes()](mdn:js/Date/getMinutes), [getSeconds()](mdn:js/Date/getSeconds), [getMilliseconds()](mdn:js/Date/getMilliseconds) -: Get the corresponding time components. +: ঘন্টা, মিনিট, সেকেন্ড, মিলিসেকেন্ড ইত্যাদি রিটার্ন করে। -```warn header="Not `getYear()`, but `getFullYear()`" -Many JavaScript engines implement a non-standard method `getYear()`. This method is deprecated. It returns 2-digit year sometimes. Please never use it. There is `getFullYear()` for the year. +```warn header="`getYear()` নয়, বরং `getFullYear()`" +অনেক জাভাস্ক্রিপ্ট ইঞ্জিন একটি নন-স্ট্যান্ডার্ড মেথড `getYear()` সাপোর্ট করে, তবে এটি বর্তমানে অচল। এটি অনেক সময় ২ অঙ্কের সাল রিটার্ন করে, দয়া করে এটি ব্যবহার করবেন না। তার পরিবর্তে `getFullYear()` ব্যবহার করুন। ``` -Additionally, we can get a day of week: +এছাড়াও, আমরা সপ্তাহের নামও জানতে পারি: [getDay()](mdn:js/Date/getDay) -: Get the day of week, from `0` (Sunday) to `6` (Saturday). The first day is always Sunday, in some countries that's not so, but can't be changed. +: এটি বারের নাম রিটার্ন করে, `0` (Sunday বা রবিবার) হতে `6` (Saturday বা শনিবার), যদিও অনেক দেশে সপ্তাহের শুরু অন্য কোন দিন দিয়ে হয়, এক্ষেত্রে আপনাকে নিজস্ব মেথড ব্যবহার করতে হতে পারে যেমন: বাংলাদেশ। -**All the methods above return the components relative to the local time zone.** +**উপরে উল্লেখিত সকল মেথড স্থানীয় সময় এর উপর ভিত্তি করে মান রিটার্ন করে।** -There are also their UTC-counterparts, that return day, month, year and so on for the time zone UTC+0: [getUTCFullYear()](mdn:js/Date/getUTCFullYear), [getUTCMonth()](mdn:js/Date/getUTCMonth), [getUTCDay()](mdn:js/Date/getUTCDay). Just insert the `"UTC"` right after `"get"`. +এছাড়াও আমরা চাইলে UTC হিসেবে মান পেতে পারি, যা UTC+0 সময় অনুযায়ী তারিখ, সময় ও দিন রিটার্ন করে: [getUTCFullYear()](mdn:js/Date/getUTCFullYear), [getUTCMonth()](mdn:js/Date/getUTCMonth), [getUTCDay()](mdn:js/Date/getUTCDay)। এক্ষেত্রে `"get"` এর পর `"UTC"` যোগ করলেই হবে। -If your local time zone is shifted relative to UTC, then the code below shows different hours: +UTC এর সময় অনুযায়ী আপনার স্থানীয় সময় পরিবর্তন হলে, নিচের কোডের জন্য আলাদা আলাদা মান দেখাবে: ```js run // current date let date = new Date(); -// the hour in your current time zone +// স্থানীয় সময় অনুযায়ী দেখাবে alert( date.getHours() ); -// the hour in UTC+0 time zone (London time without daylight savings) +// UTC+0 এর সময় অনুযায়ী দেখাবে (লন্ডনের সময়) alert( date.getUTCHours() ); ``` -Besides the given methods, there are two special ones that do not have a UTC-variant: +উপরে উল্লেখিত মেথড গুলো ছাড়া আরো দুটি বিশেষ মেথড আছে যাদের আলাদা করে UTC মেথড নাই: [getTime()](mdn:js/Date/getTime) -: Returns the timestamp for the date -- a number of milliseconds passed from the January 1st of 1970 UTC+0. +: ঐ তারিখের টাইমস্ট্যাম্প রিটার্ন করবে -- অর্থাৎ ১লা জানুয়ারী ১৯৭০ এর ০০.০০ (UTC+0) হতে অতিক্রান্ত মিলিসেকেন্ড। [getTimezoneOffset()](mdn:js/Date/getTimezoneOffset) -: Returns the difference between UTC and the local time zone, in minutes: +: UTC+0 এবং স্থানীয় সময়ের পার্থক্য মিনেটের মধ্যে দেখাবে: ```js run - // if you are in timezone UTC-1, outputs 60 - // if you are in timezone UTC+3, outputs -180 + // যদি আপনার স্থানীয় সময় UTC-1 অনুযায়ী হয় দেখাবে 60 + // যদি আপনার স্থানীয় সময় UTC+3 অনুযায়ী হয় দেখাবে -180 + // বাংলাদেশের জন্য দেখাবে UTC+6 অনুযায়ী -360 alert( new Date().getTimezoneOffset() ); ``` -## Setting date components +## সময়ের বিভিন্ন অংশ সেট করা -The following methods allow to set date/time components: +নিচের মেথড গুলোর সাহায্যে আমরা সময়ের বিভিন্ন প্রপার্টি সেট করতে পারব: - [`setFullYear(year, [month], [date])`](mdn:js/Date/setFullYear) - [`setMonth(month, [date])`](mdn:js/Date/setMonth) @@ -146,36 +156,36 @@ The following methods allow to set date/time components: - [`setMilliseconds(ms)`](mdn:js/Date/setMilliseconds) - [`setTime(milliseconds)`](mdn:js/Date/setTime) (sets the whole date by milliseconds since 01.01.1970 UTC) -Every one of them except `setTime()` has a UTC-variant, for instance: `setUTCHours()`. +`setTime()` ব্যতীত সকল মেথডের আরো একটি UTC মেথড আছে, যেমন: `setUTCHours()`. -As we can see, some methods can set multiple components at once, for example `setHours`. The components that are not mentioned are not modified. +আমরা দেখছি, কিছু মেথড আছে যারা বিভিন্ন মান একসাথে নিতে পারে, যেমন `setHours`। এক্ষেত্রে শুধুমাত্র আর্গুমেন্ট পাঠানো অংশটুকুই পরিবর্তন হবে, বাকীগুলো হবে না। -For instance: +যেমন: ```js run let today = new Date(); today.setHours(0); -alert(today); // still today, but the hour is changed to 0 +alert(today); // বর্তমান তারিখ দেখাবে এবং ঘন্টা পরিবর্তন হবে, কিন্তু মিনিট বা সেকেন্ডের কোন পরিবর্তন হবে না today.setHours(0, 0, 0, 0); -alert(today); // still today, now 00:00:00 sharp. +alert(today); // বর্তমান তারিখ দেখাবে এবং সময় দেখাবে 00:00:00। ``` -## Autocorrection +## অটোকারেকশন -The *autocorrection* is a very handy feature of `Date` objects. We can set out-of-range values, and it will auto-adjust itself. +`Date` অবজেক্ট এর দারুন একটি ফিচার হল এটি আমাদের ভুল সময়কে *অটোকারেকশন* করে নিতে পারে। যদি আমরা অনিচ্ছাকৃতভাবে কোন ভুল ইনপুট দিয়ে ফেলি, তাহলে এটি স্বয়ংক্রিয়ভাবে সময় ঠিক করে নেয়। -For instance: +যেমন: ```js run -let date = new Date(2013, 0, *!*32*/!*); // 32 Jan 2013 ?!? -alert(date); // ...is 1st Feb 2013! +let date = new Date(2013, 0, *!*32*/!*); // 32 জানুয়ারী 2013 ?!? +alert(date); // ...অর্থাৎ এটি হবে ১লা ফেব্রুয়ারী 2013! ``` -Out-of-range date components are distributed automatically. +এই অটোকারেকশন ফিচারটি মেথডের ক্ষেত্রেও কাজ করবে। -Let's say we need to increase the date "28 Feb 2016" by 2 days. It may be "2 Mar" or "1 Mar" in case of a leap-year. We don't need to think about it. Just add 2 days. The `Date` object will do the rest: +মনে করুন আমরা "28 ফেব্রুয়ারী 2016" এর সাথে ২দিন যোগ করব, এক্ষেত্রে এটি অধিবর্ষের(লিপ ইয়ার) জন্য "২রা মার্চ" অথবা "১লা মার্চ" হতে পারে। আমাদের এ ব্যাপারে চিন্তা করতে হবে না, কেননা `Date` অবজেক্ট স্বয়ংক্রিয়ভাবে এটি ব্যবস্থা নিতে পারে: ```js run let date = new Date(2016, 1, 28); @@ -186,68 +196,68 @@ date.setDate(date.getDate() + 2); alert( date ); // 1 Mar 2016 ``` -That feature is often used to get the date after the given period of time. For instance, let's get the date for "70 seconds after now": +এই ফিচারটি আমরা একটি নির্দিষ্ট সময়ের পরের সময় জানতেও কাজে আসে, মনে করুন আমরা "বর্তমান সময়ের 70 সেকেন্ড পরের সময়টি" জানতে চাই: ```js run let date = new Date(); date.setSeconds(date.getSeconds() + 70); -alert( date ); // shows the correct date +alert( date ); ``` -We can also set zero or even negative values. For example: +আমরা শুন্য অথবা ঋণাত্নক মানও সেট করতে পারি, যেমন: ```js run -let date = new Date(2016, 0, 2); // 2 Jan 2016 +let date = new Date(2016, 0, 2); // 2রা জানুয়ারি 2016 -date.setDate(1); // set day 1 of month +date.setDate(1); // এখন ১ তারিখ সেট করলাম alert( date ); -date.setDate(0); // min day is 1, so the last day of the previous month is assumed +date.setDate(0); // যেহেতু সর্বনিম্ন তারিখ হতে পারে 1, সুতরাং এটি এর আগের দিন দেখাবে alert( date ); // 31 Dec 2015 ``` -## Date to number, date diff +## তারিখের পার্থক্য এবং তারিখ এর টাইমস্ট্যাম্প -When a `Date` object is converted to number, it becomes the timestamp same as `date.getTime()`: +যখন `Date` অবজেক্টকে নাম্বারে রূপান্তর করা হয় তখন এটি `date.getTime()` এর মত টাইমস্ট্যাম্প রিটার্ন করে: ```js run let date = new Date(); -alert(+date); // the number of milliseconds, same as date.getTime() +alert(+date); // date.getTime() এর মত মিলিসেকেন্ড রিটার্ন করে ``` -The important side effect: dates can be subtracted, the result is their difference in ms. +তবে গুরুত্বপূর্ন ব্যাপার হল আমরা এর সাহায্যে দুটি সময়ের মিলিসেকেন্ডের পার্থক্যও বের করতে পারি। -That can be used for time measurements: +আমরা এটি সময় এর পার্থক্য নির্ণয়ের জন্য ব্যবহার করি: ```js run -let start = new Date(); // start measuring time +let start = new Date(); // শুরু // do the job for (let i = 0; i < 100000; i++) { let doSomething = i * i * i; } -let end = new Date(); // end measuring time +let end = new Date(); // শেষ alert( `The loop took ${end - start} ms` ); ``` ## Date.now() -If we only want to measure time, we don't need the `Date` object. +তবে শুধুমাত্র সময় পরিমাপের জন্য `Date` অবজেক্ট এর প্রয়োজন নেই। -There's a special method `Date.now()` that returns the current timestamp. +একটি বিশেষ মেথড আছে `Date.now()` যা বর্তমান টাইমস্ট্যাম্প রিটার্ন করে। -It is semantically equivalent to `new Date().getTime()`, but it doesn't create an intermediate `Date` object. So it's faster and doesn't put pressure on garbage collection. +এটি অনেকটা `new Date().getTime()` এর মতই, কিন্তু এটি প্রথমে `Date` অবজেক্ট তৈরি করে না। সুতরাং এটি `new Date().getTime()` এর তুলনায় দ্রুত কাজ করে এবং গার্বেজ কালেকশনের জন্য অতিরিক্ত সময় ব্যয় করে না। -It is used mostly for convenience or when performance matters, like in games in JavaScript or other specialized applications. +বেশিরভাগ ক্ষেত্রে এটি ব্যবহার করা হয় পারফরম্যান্সের জন্য, যেমন গেম বা অন্যান্য বিশেষ অ্যাপ্লিকেশন। -So this is probably better: +এক্ষেত্রে এটি ব্যবহার করা উচিত: ```js run *!* -let start = Date.now(); // milliseconds count from 1 Jan 1970 +let start = Date.now(); */!* // do the job @@ -259,36 +269,36 @@ for (let i = 0; i < 100000; i++) { let end = Date.now(); // done */!* -alert( `The loop took ${end - start} ms` ); // subtract numbers, not dates +alert( `The loop took ${end - start} ms` ); ``` -## Benchmarking +## বেঞ্চমার্কিং -If we want a reliable benchmark of CPU-hungry function, we should be careful. +যদি আমরা অধিক CPU ব্যবহার করে, এমন ফাংশনের বেঞ্চমার্ক করতে চাই, আমাদের সতর্ক থাকা উচিত। -For instance, let's measure two functions that calculate the difference between two dates: which one is faster? +যেমন, আমরা আমাদের দুটি ফাংশন আছে যারা দুটি সময়ের পার্থক্য ক্যালকুলেশন করে, এক্ষেত্রে কোনটি দ্রুত কাজ করবে? -Such performance measurements are often called "benchmarks". +এই ধরণের পারফরম্যান্স পরিমাপকে বলা হয় "benchmarks"। ```js -// we have date1 and date2, which function faster returns their difference in ms? +// নিচের দুটি ফাংশনের একটি `Date` অবজেক্ট ব্যবহার করে ক্যালকুলেশন করছে, অন্যটি `getTime()` ব্যবহার করে, কোনটি দ্রুত কাজ করবে? function diffSubtract(date1, date2) { return date2 - date1; } -// or +// অথবা function diffGetTime(date1, date2) { return date2.getTime() - date1.getTime(); } ``` -These two do exactly the same thing, but one of them uses an explicit `date.getTime()` to get the date in ms, and the other one relies on a date-to-number transform. Their result is always the same. +এখানে দুটি ফাংশনের কাজ একই, তবে একটি ক্যাল্কুলেট করছে `date.getTime()` এর সাহায্যে অন্যটি `Date` অবজেক্ট কে নাম্বারে(টাইপ কাস্টিং) কনভার্ট করে। এরা উভয়ই সঠিক রেজাল্ট দেখাবে। -So, which one is faster? +কোনটি দ্রুত কাজ করবে? -The first idea may be to run them many times in a row and measure the time difference. For our case, functions are very simple, so we have to do it at least 100000 times. +যেহুতু ফাংশন দুটি একেবারে সাধারণ সুতরাং আমরা দুটি ফাংশনকে অনেকবার কল করে তাদের মাঝের সময় নির্ণয় করতে পারি, এক্ষেত্রে চলুন এদের কমপক্ষে ১০০০০০ বার কল করি। -Let's measure: +সম্পূর্ন ক্যালকুলেশনটি হবে এমন: ```js run function diffSubtract(date1, date2) { @@ -312,19 +322,19 @@ alert( 'Time of diffSubtract: ' + bench(diffSubtract) + 'ms' ); alert( 'Time of diffGetTime: ' + bench(diffGetTime) + 'ms' ); ``` -Wow! Using `getTime()` is so much faster! That's because there's no type conversion, it is much easier for engines to optimize. +এখানে কি দেখলেন!? `getTime()` অনেক দ্রুত কাজ করছে! কেননা এটির ক্ষেত্রে আলাদা করে কোন টাইপ কনভার্শন করা লাগছে না, যার জন্য ইঞ্জিন সহজে অপ্টিমাইজ করতে পারছে। -Okay, we have something. But that's not a good benchmark yet. +ইতোমধ্যে, আমরা ব্যাপারটি বুঝতে পারলাম। তবে এটিকে এখনো ভালো বেঞ্চমার্কিং বলা যাবে না। -Imagine that at the time of running `bench(diffSubtract)` CPU was doing something in parallel, and it was taking resources. And by the time of running `bench(diffGetTime)` that work has finished. +মনে করুন `bench(diffSubtract)` কোডটি রান করার সময় আমাদের CPU প্যারালাল ভাবে অন্য কোন কাজ করে, এবং আলাদা কিছু রিসোর্স ব্যবহার করে। এবং ঐ সময়ের মাঝে `bench(diffGetTime)` এর কাজ শেষ হচ্ছে। -A pretty real scenario for a modern multi-process OS. +যা বর্তমান আধুনিক OS গুলোর ক্ষেত্রে হরহামেশাই হয়। -As a result, the first benchmark will have less CPU resources than the second. That may lead to wrong results. +যার ফলে, আমাদের বেঞ্চমার্কিং এর ফলাফল ভুল দেখাতে পারে। -**For more reliable benchmarking, the whole pack of benchmarks should be rerun multiple times.** +**এজন্য নির্ভুলভাবে বেঞ্চমার্কিং এর জন্য, আমাদের বেঞ্চমার্কিং কোডটিকে কয়েকবার চালানো উচিত** -For example, like this: +এইভাবে: ```js run function diffSubtract(date1, date2) { @@ -359,7 +369,7 @@ alert( 'Total time for diffSubtract: ' + time1 ); alert( 'Total time for diffGetTime: ' + time2 ); ``` -Modern JavaScript engines start applying advanced optimizations only to "hot code" that executes many times (no need to optimize rarely executed things). So, in the example above, first executions are not well-optimized. We may want to add a heat-up run: +আধুনিক জাভাস্ক্রিপ্ট ইঞ্জিন গুলোতে "hot code" (যেখানে কম্পাইলারের বেশি সময় লাগতে পারে) এর জন্য এই ধরণের কোডের ক্ষেত্রে আমরা একটি "heat-up" সংযুক্ত করতে পারি: ```js // added for "heating up" prior to the main loop @@ -373,28 +383,39 @@ for (let i = 0; i < 10; i++) { } ``` -```warn header="Be careful doing microbenchmarking" -Modern JavaScript engines perform many optimizations. They may tweak results of "artificial tests" compared to "normal usage", especially when we benchmark something very small, such as how an operator works, or a built-in function. So if you seriously want to understand performance, then please study how the JavaScript engine works. And then you probably won't need microbenchmarks at all. +```warn header="মাইক্রোবেঞ্চমার্কিং এর সময় আরো সতর্ক থাকা উচিত" +মডার্ন জাভাস্ক্রিপ্ট ইঞ্জিন সমূহ যথেষ্ট অপ্টিমাইজভাবে কাজ করে। এক্ষেত্রে সাধারণ ব্যবহার যোগ্য সমস্যা গুলোর সাথে আর্টিফিশিয়াল টেস্ট এর রেজাল্টে অসামাঞ্জস্য দেখা দিতে পারে, যেমন যদি আমরা একেবারে মাইক্রোবেঞ্চমার্কিং অর্থাৎ একটি অপারেটর কিভাবে কাজ করছে, অথবা বিল্ট-ইন ফাংশন কেমন সময় নিবে। আপনি যদি এমন পারফরম্যন্স সম্পর্কে জানতে আরো বেশি আগ্রহী হন মাইক্রোবেঞ্চমার্কিং না করে জাভাস্ক্রিপ্ট ইঞ্জিন কীভাবে কাজ করে তা বুঝলে হবে। +<<<<<<< HEAD +V8 ইঞ্জিন সম্পর্কে জানতে এটি একটি দারুন রিসোর্স । +======= The great pack of articles about V8 can be found at . +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ``` -## Date.parse from a string +## স্ট্রিং হতে সময় বের করার মেথড Date.parse() -The method [Date.parse(str)](mdn:js/Date/parse) can read a date from a string. +[Date.parse(str)](mdn:js/Date/parse) মেথডটি স্ট্রিং হতে সময় রূপান্তর করতে পারে। -The string format should be: `YYYY-MM-DDTHH:mm:ss.sssZ`, where: +স্ট্রিংয়ের ফরম্যট হবে: `YYYY-MM-DDTHH:mm:ss.sssZ`, যেখানে: +<<<<<<< HEAD +- `YYYY-MM-DD` -- তারিখ: year-month-day. +- ক্যারাক্টার `"T"` ব্যবহার হয় ডেলিমিটার হিসেবে। +- `HH:mm:ss.sss` -- সময়: hours, minutes, seconds এবং milliseconds. +- `'Z'` অপশনাল যা টাইমজোনকে নির্দেশ করে `+-hh:mm`, যেমন বাংলাদেশের (UTC+6) জন্য '2020-01-26T13:51:50.417+06:00'। শুধুমাত্র `Z` বুঝায় UTC+0 +======= - `YYYY-MM-DD` -- is the date: year-month-day. - The character `"T"` is used as the delimiter. - `HH:mm:ss.sss` -- is the time: hours, minutes, seconds and milliseconds. - The optional `'Z'` part denotes the time zone in the format `+-hh:mm`. A single letter `Z` would mean UTC+0. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Shorter variants are also possible, like `YYYY-MM-DD` or `YYYY-MM` or even `YYYY`. +এছাড়াও আমরা সংক্ষিপ্তভাবে এদের কল করতে পারি, যেমন `YYYY-MM-DD` বা `YYYY-MM` এমনকি `YYYY`। -The call to `Date.parse(str)` parses the string in the given format and returns the timestamp (number of milliseconds from 1 Jan 1970 UTC+0). If the format is invalid, returns `NaN`. +`Date.parse(str)` স্ট্রিং হতে টাইমস্ট্যাম্পকে মিলিসেকেন্ড হিসেবে রিটার্ন করে (১৯৭০ সালের ১লা জানুয়ারি(UTC+0) হতে অতিক্রান্ত মিলিসেকেন্ড)। ইনভ্যালিড স্ট্রিং ফরম্যাটের জন্য রিটার্ন করবে `NaN`। -For instance: +যেমন: ```js run let ms = Date.parse('2012-01-26T13:51:50.417-07:00'); @@ -402,7 +423,7 @@ let ms = Date.parse('2012-01-26T13:51:50.417-07:00'); alert(ms); // 1327611110417 (timestamp) ``` -We can instantly create a `new Date` object from the timestamp: +আমরা টাইমস্ট্যাম্প হতে `new Date` অবজেক্ট তৈরি করতে পারি: ```js run let date = new Date( Date.parse('2012-01-26T13:51:50.417-07:00') ); @@ -410,24 +431,30 @@ let date = new Date( Date.parse('2012-01-26T13:51:50.417-07:00') ); alert(date); ``` -## Summary +## সারাংশ -- Date and time in JavaScript are represented with the [Date](mdn:js/Date) object. We can't create "only date" or "only time": `Date` objects always carry both. -- Months are counted from zero (yes, January is a zero month). -- Days of week in `getDay()` are also counted from zero (that's Sunday). -- `Date` auto-corrects itself when out-of-range components are set. Good for adding/subtracting days/months/hours. -- Dates can be subtracted, giving their difference in milliseconds. That's because a `Date` becomes the timestamp when converted to a number. -- Use `Date.now()` to get the current timestamp fast. +- জাভাস্ক্রিপ্টে সময় এবং তারিখ উভয়ই কাজ করে [Date](mdn:js/Date) অবজেক্ট দ্বারা। আমরা শুধুমাত্র সময় বা তারিখকে আলাদা করে কল করতে পারব না `Date` অবজেক্ট উভয়ই সংরক্ষণ করে। +- মাসের গণনা শুরু হয় শূন্য হতে (০ দ্বারা বুঝায় জানুয়ারি). +- সপ্তাহের বারও শুরু হয় শূন্য হতে `getDay()`(০ দ্বারা বুঝায় রবিবার). +- `Date` অবজেক্ট এর সাথে সময় বা দিন যোগ বিয়োগের সময় তারিখ স্বয়ংক্রিয়ভাবে ঠিক করে নেই। +- দুটি সময়ের মধ্যে মিলিসেকেন্ডের পার্থক্যও বের করা সম্ভব। কারণ `Date` টাইপ কাস্টিং হয়ে টাইমস্ট্যাম্পে রূপান্তর হতে পারে। +- বর্তমান টাইমস্ট্যাম্প পেতে `Date.now()` `new Date()` হতে অধিক দ্রুত কাজ করে। -Note that unlike many other systems, timestamps in JavaScript are in milliseconds, not in seconds. +আমাদের মনে রাখা উচিত, জাভাস্ক্রিপ্ট টাইমস্ট্যাম্পকে মিলিসেকেন্ডে রিটার্ন করে, সেকেন্ডে নয়। -Sometimes we need more precise time measurements. JavaScript itself does not have a way to measure time in microseconds (1 millionth of a second), but most environments provide it. For instance, browser has [performance.now()](mdn:api/Performance/now) that gives the number of milliseconds from the start of page loading with microsecond precision (3 digits after the point): +অনেক সময় আমাদের আরো নির্ভুলভাবে পরিমাপ করা লাগতে পারে। এজন্য জাভাস্ক্রিপ্টের মাইক্রোসেকেন্ডে (১ সেকেন্ডের ১০লাখ ভাগ) ক্যালকুলেশনের কোন বিল্ট-ইন মেথড নাই। তবে বেশিরভাগ এইভাইরনমেন্টের কিছু মেথড আছে। যেমন ব্রাউজারের ক্ষেত্রে [performance.now()](mdn:api/Performance/now) যা পেজ লোডিংয়ের পর থেকে মাইক্রোসেকেন্ডের সময় রিটার্ন করতে পারে। ```js run alert(`Loading started ${performance.now()}ms ago`); +<<<<<<< HEAD +// এটি দেখাবে এমন কিছু: "Loading started 34731.26000000001ms ago" +// .26 হল মাইক্রোসেকেন্ড (260 microseconds) +// দশমিকের পর ৩ ঘর পর্যন্ত সঠিক মান দেখাতে পারে +======= // Something like: "Loading started 34731.26000000001ms ago" // .26 is microseconds (260 microseconds) // more than 3 digits after the decimal point are precision errors, only the first 3 are correct +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ``` -Node.js has `microtime` module and other ways. Technically, almost any device and environment allows to get more precision, it's just not in `Date`. +Node.js এর আছে `microtime` মডুইল। সাধারণত প্রতিটি এনভায়রনমেন্টের নিজস্ব মেথড আছে যা `Date` এর তুলনায় আরো নির্দিষ্ট সময় নির্ভুলভাবে প্রদান করতে পারে। diff --git a/1-js/05-data-types/12-json/article.md b/1-js/05-data-types/12-json/article.md index 133ffb353..ea391db31 100644 --- a/1-js/05-data-types/12-json/article.md +++ b/1-js/05-data-types/12-json/article.md @@ -1,10 +1,10 @@ -# JSON methods, toJSON +# জেসন মেথড, toJSON -Let's say we have a complex object, and we'd like to convert it into a string, to send it over a network, or just to output it for logging purposes. +মনে করুন আমাদের একটি কমপ্লেক্স অবজেক্ট আছে, এবং আমরা এটিকে সার্ভারে সেন্ড করতে বা লগ করতে স্ট্রিংয়ে রূপান্তর করতে চাই। -Naturally, such a string should include all important properties. +সাধারণত, এক্ষেত্রে অবজেক্টের সকল প্রপার্টি স্ট্রিংয়ে রূপান্তর করতে হবে। -We could implement the conversion like this: +এটি আমরা `toString()` এর সাহায্যে এভাবে করতে পারি: ```js run let user = { @@ -21,20 +21,24 @@ let user = { alert(user); // {name: "John", age: 30} ``` -...But in the process of development, new properties are added, old properties are renamed and removed. Updating such `toString` every time can become a pain. We could try to loop over properties in it, but what if the object is complex and has nested objects in properties? We'd need to implement their conversion as well. +...তবে এক্ষেত্রে সমস্যা হল, ডেভলাপমেন্টের সময় অবজেক্টে আরো নতুন প্রপার্টি যুক্ত বা বাদ বা প্রপার্টির নাম সংশোধন করা লাগতে পারে। এবং অবজেক্টে কোন পরিবর্তন করলে আমাদের `toString` এ ম্যানুয়ালী পরিবর্তন করতে হবে, যা আসলে কষ্টসাধ্য এবং বিরক্তিকর। তবে চাইলে আমরা লুপের সাহায্যে আমাদের কাঙ্খীত স্ট্রিং পেতে পারি, তবে এক্ষেত্রে আমাদের কমপ্লেক্স নেস্টেড অবজেক্টের জন্যও কাজ করা লাগতে পারে। -Luckily, there's no need to write the code to handle all this. The task has been solved already. +সৌভাগ্যক্রমে, ইতোমধ্যে একটি বিল্ট-ইন একটি অবজেক্ট আছে `JSON`। যার সাহায্যে আমরা এটি সমাধান করতে পারি। ## JSON.stringify +<<<<<<< HEAD +[JSON](http://en.wikipedia.org/wiki/JSON) (JavaScript Object Notation) হল ভ্যালু বা অবজেক্টকে একটি সাধারণ ফর্মে দেখানোর পদ্ধতি [RFC 4627](http://tools.ietf.org/html/rfc4627)। এটি সর্বপ্রথম জাভাস্ক্রিপ্টের জন্য তৈরি করা হয়েছিল, তবে বর্তমানে অন্যান্য সকল ল্যাংগুয়েজে `JSON` নিয়ে কাজ করার নিজস্ব লাইব্রেরী আছে। তাই এখন ক্লায়েন্ট থেকে সার্ভারের (যেমন পাইথন, রুবি, জাভা, পিএইচপি ইত্যাদির) সাথে সহজেই `JSON` ডাটা আদান-প্রদান করা যায়। +======= The [JSON](https://en.wikipedia.org/wiki/JSON) (JavaScript Object Notation) is a general format to represent values and objects. It is described as in [RFC 4627](https://tools.ietf.org/html/rfc4627) standard. Initially it was made for JavaScript, but many other languages have libraries to handle it as well. So it's easy to use JSON for data exchange when the client uses JavaScript and the server is written on Ruby/PHP/Java/Whatever. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -JavaScript provides methods: +জাভাস্ক্রিপ্টে `JSON` এর দুটি মেথড আছে: -- `JSON.stringify` to convert objects into JSON. -- `JSON.parse` to convert JSON back into an object. +- `JSON.stringify` অবজেক্ট বা ভ্যালুকে JSON এ রূপান্তর করে। +- `JSON.parse` JSON হতে অবজেক্ট বা ভ্যালুতে রূপান্তর করে। -For instance, here we `JSON.stringify` a student: +উদাহরণস্বরূপ, এখানে `student` অবজেক্টকে `JSON.stringify` দ্বারা `JSON` এ রূপান্তর: ```js run let student = { name: 'John', @@ -48,7 +52,7 @@ let student = { let json = JSON.stringify(student); */!* -alert(typeof json); // we've got a string! +alert(typeof json); // টাইপ স্ট্রিং alert(json); *!* @@ -64,35 +68,34 @@ alert(json); */!* ``` -The method `JSON.stringify(student)` takes the object and converts it into a string. +`JSON.stringify(student)` মেথডটি `student` অবজেক্টকে স্ট্রিংয়ে রূপান্তর করছে। -The resulting `json` string is called a *JSON-encoded* or *serialized* or *stringified* or *marshalled* object. We are ready to send it over the wire or put into a plain data store. +`json` স্ট্রিংটিকে বলা হয় *JSON-encoded* বা *serialized* বা *stringified* বা *marshalled* অবজেক্ট। এটি এখন সার্ভারে পাঠানোর জন্য অথবা কোন টেক্সট আকারে কোথাও সংরক্ষনের জন্য প্রস্তুত। +দয়া করে মনে রাখুন একটি JSON-encoded অবজেক্ট আর সাধারণ অবজেক্টের কিছু পার্থক্য আছে: -Please note that a JSON-encoded object has several important differences from the object literal: +- JSON এ কোন একক উদ্ধৃতি (single quotes '') চিহ্ন বা ব্যাকটিকস (` `` `) থাকে না। সুতরাং `'John'` হবে `"John"`। +- অবশ্যই অবজেক্টের প্রপার্টি দ্বৈত উদ্ধৃতি(double quoted "") চিহ্ন দ্বারা আবদ্ধ থাকবে। সুতরাং `age:30` হবে `"age":30`। -- Strings use double quotes. No single quotes or backticks in JSON. So `'John'` becomes `"John"`. -- Object property names are double-quoted also. That's obligatory. So `age:30` becomes `"age":30`. +প্রিমিটিভ ডাটা টাইপের জন্যও `JSON.stringify` কাজ করবে। -`JSON.stringify` can be applied to primitives as well. - -JSON supports following data types: +JSON নিম্নোক্ত ডাটাটাইপ সাপোর্ট করে: - Objects `{ ... }` - Arrays `[ ... ]` - Primitives: - strings, - numbers, - - boolean values `true/false`, + - boolean ভ্যালু `true/false`, - `null`. -For instance: +যেমন: ```js run -// a number in JSON is just a number +// নাম্বারের JSON হবে নাম্বার alert( JSON.stringify(1) ) // 1 -// a string in JSON is still a string, but double-quoted +// স্ট্রিংয়ের JSON হবে স্ট্রিংয়ের, তবে এটি দ্বৈত উদ্ধৃতি(double quoted "") চিহ্ন দ্বারা আবদ্ধ থাকবে alert( JSON.stringify('test') ) // "test" alert( JSON.stringify(true) ); // true @@ -100,13 +103,19 @@ alert( JSON.stringify(true) ); // true alert( JSON.stringify([1, 2, 3]) ); // [1,2,3] ``` -JSON is data-only language-independent specification, so some JavaScript-specific object properties are skipped by `JSON.stringify`. +JSON ল্যাংগুয়েজের উপর সীমাবদ্ধ নই, তাই `JSON.stringify` JavaScript-specific অবজেক্ট প্রপার্টি সমূহকে উপেক্ষা করবে। -Namely: +সাধারণত: +<<<<<<< HEAD +- ফাংশন প্রপার্টি (methods)। +- Symbolic প্রপার্টি। +- অথবা প্রপার্টির ভ্যালু `undefined` হলে। +======= - Function properties (methods). - Symbolic keys and values. - Properties that store `undefined`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run let user = { @@ -120,11 +129,11 @@ let user = { alert( JSON.stringify(user) ); // {} (empty object) ``` -Usually that's fine. If that's not what we want, then soon we'll see how to customize the process. +যেহেতু এখানের সকল প্রপার্টি জাভাস্ক্রিপ্টের নিজস্ব পদ্ধতি, তাই খালি অবজেক্ট রিটার্ন করেছে, তবে আমরা চাইলে এদের কাস্টমাইজ করতে পারি, যা নিচে আলোচনা করা হয়েছে। -The great thing is that nested objects are supported and converted automatically. +তবে আনন্দের বিষয় হল এটি নেস্টেড অবজেক্টের জন্যও কাজ করে। -For instance: +যেমন: ```js run let meetup = { @@ -138,7 +147,7 @@ let meetup = { }; alert( JSON.stringify(meetup) ); -/* The whole structure is stringified: +/* সম্পূর্ণ অবজেক্টটি stringified করা হয়েছে: { "title":"Conference", "room":{"number":23,"participants":["john","ann"]}, @@ -146,9 +155,9 @@ alert( JSON.stringify(meetup) ); */ ``` -The important limitation: there must be no circular references. +তবে এর একটি সীমাবদ্ধতা আছে, এক্ষেত্রে কোন সার্কুলার রেফারেন্স থাকা যাবে না। -For instance: +যেমন: ```js run let room = { @@ -168,33 +177,33 @@ JSON.stringify(meetup); // Error: Converting circular structure to JSON */!* ``` -Here, the conversion fails, because of circular reference: `room.occupiedBy` references `meetup`, and `meetup.place` references `room`: +এখানে এটি এরর হবে, কেননা এদের মাঝে উভমুখী রেফারেন্স ডিক্লেয়ার করা হয়েছে, যেমন `room.occupiedBy` রেফারেন্স করছে `meetup` কে, এবং `meetup.place` রেফারেন্স করছে `room` কে: ![](json-meetup.svg) -## Excluding and transforming: replacer +## প্রপার্টির রূপান্তর: replacer -The full syntax of `JSON.stringify` is: +`JSON.stringify` এর সম্পূর্ণ সিনট্যাক্সটি হল: ```js let json = JSON.stringify(value[, replacer, space]) ``` value -: A value to encode. +: এনকোড করার জন্য ভ্যালু। replacer -: Array of properties to encode or a mapping function `function(key, value)`. +: প্রপার্টিসমূহের অ্যারে বা একটি ম্যাপ ফাংশন `function(key, value)`। space -: Amount of space to use for formatting +: ফরম্যাটিংয়ে ব্যবহৃত স্পেস -Most of the time, `JSON.stringify` is used with the first argument only. But if we need to fine-tune the replacement process, like to filter out circular references, we can use the second argument of `JSON.stringify`. +বেশিরভাগ সময় আমরা `JSON.stringify` এ শুধুমাত্র প্রথম আর্গুমেন্টটি ব্যবহার করি। তবে যদি আমরা এনকোডের সময় কোন প্রপার্টি কাস্টমাইজ করতে চাই, তাহলে `JSON.stringify` এর দ্বিতীয় আর্গুমেন্টটি ব্যবহার করব। -If we pass an array of properties to it, only these properties will be encoded. +যদি আমরা দ্বিতীয় আর্গুমেন্টে প্রপার্টির নামের অ্যারে পাঠাই, তাহলে শুধুমাত্র ঐ প্রপার্টিগুলো সেট হবে। -For instance: +যেমন: ```js run let room = { @@ -213,9 +222,9 @@ alert( JSON.stringify(meetup, *!*['title', 'participants']*/!*) ); // {"title":"Conference","participants":[{},{}]} ``` -Here we are probably too strict. The property list is applied to the whole object structure. So the objects in `participants` are empty, because `name` is not in the list. +এক্ষেত্রে আমরা একটি অদ্ভুত ব্যাপার লক্ষ্য করছি, যদিও আমরা সম্পূর্ণ অবজেক্টটি পাস করেছি, কিন্তু `participants` এর মান খালি দেখায়, কেননা আমরা আর্গুমেন্ট অ্যারেতে `name` প্রপার্টি সংযুক্ত করিনি। -Let's include in the list every property except `room.occupiedBy` that would cause the circular reference: +এখন চলুন আমাদের অবজেক্টের সার্কুলার রেফারেন্সের জন্য `room.occupiedBy` বাদে বাকী সকল প্রপার্টিযুক্ত করি: ```js run let room = { @@ -240,13 +249,13 @@ alert( JSON.stringify(meetup, *!*['title', 'participants', 'place', 'name', 'num */ ``` -Now everything except `occupiedBy` is serialized. But the list of properties is quite long. +এখন আমরা `occupiedBy` বাদে বাকী সকল প্রপার্টিকে সিরিয়ালাইজড করেছি, কিন্তু এভাবে করায় আমাদের অ্যারে লিস্টের প্রপার্টি বেড়েই চলছে যা কমপ্লেক্স অবজেক্টের জন্য নিয়ন্ত্রন করা কষ্টসাধ্য। -Fortunately, we can use a function instead of an array as the `replacer`. +তবে, এজন্য আমরা চাইলে অ্যারের পরিবর্তে একটি `replacer` ফাংশন ব্যবহার করতে পারি। -The function will be called for every `(key, value)` pair and should return the "replaced" value, which will be used instead of the original one. Or `undefined` if the value is to be skipped. +ফাংশনটি প্রতিটি প্রপার্টির জন্য `(key, value)` হিসেবে কল হবে এবং একটি মান রিটার্ন করবে যা ঐ প্রপার্টির ভ্যালু হিসেবে সেট হবে। অথবা ঐ প্রপার্টি বাদ দিতে আমরা `undefined` সেট করতে পারি। -In our case, we can return `value` "as is" for everything except `occupiedBy`. To ignore `occupiedBy`, the code below returns `undefined`: +এক্ষেত্রে উপরের অংশেরমত মান পেতে আমরা `value` রিটার্ন করব আর `occupiedBy` কে বাদ দিতে কন্ডিশন যাচাই করে তার মান `undefined` সেট করব: ```js run let room = { @@ -280,20 +289,20 @@ occupiedBy: [object Object] */ ``` -Please note that `replacer` function gets every key/value pair including nested objects and array items. It is applied recursively. The value of `this` inside `replacer` is the object that contains the current property. +দয়া করে মনে রাখবেন `replacer` ফাংশন নেস্টেড অবজেক্টের সকল প্রপার্টি key/value হিসেবে পায়, এটি `recursively` কল হয়। `replacer` এর মাঝে `this` বর্তমান অবজেক্টকে নির্দেশ করবে। -The first call is special. It is made using a special "wrapper object": `{"": meetup}`. In other words, the first `(key, value)` pair has an empty key, and the value is the target object as a whole. That's why the first line is `":[object Object]"` in the example above. +তবে এক্ষেত্রে প্রথম ইটারেশনটি একটু আলাদা। এটি তৈরি হয় একটি "wrapper object" দ্বারা `{"": meetup}`। অন্যভাবে বলতে গেলে প্রথমবার `(key, value)` এর key হবে খালি এবং ভ্যালু হবে টার্গেট অবজেক্টের মান। যার কারণে সবার শুরুতে আমরা এটি দেখতে পাই `":[object Object]"`। -The idea is to provide as much power for `replacer` as possible: it has a chance to analyze and replace/skip even the whole object if necessary. +উপরের আলোচনা থেকে আমরা বুঝতে পারি `replacer` ফাংশনটি যথেষ্ট শক্তিশালী: এর উপর ভিত্তি করে আমরা যেকোন প্রপার্টি পরিবর্তন বা বাদ দিতে পারি। -## Formatting: space +## ফরম্যাটিং: স্পেস -The third argument of `JSON.stringify(value, replacer, space)` is the number of spaces to use for pretty formatting. +`JSON.stringify(value, replacer, space)` এর তৃতীয় আর্গুমেন্টটি একটি পূর্ণ ধনাত্নক সংখ্যা নেয়, যা দ্বারা আমরা স্ট্রিংটি আরো সুন্দর করে ফরম্যাট করতে পারি। -Previously, all stringified objects had no indents and extra spaces. That's fine if we want to send an object over a network. The `space` argument is used exclusively for a nice output. +ইতোমধ্যে আমরা যেসব এনকোডেড স্ট্রিং দেখেছি এদের ফরম্যাট বা অতিরিক্ত স্পেস ছিল না। সার্ভারে ডাটা পাঠাতে এটি সমস্যা করবে না, কিন্তু যদি আমরা লগ অ্যাপ্লিকেশনের জন্য স্ট্রিংটি সুন্দর করে দেখাতে চাই এক্ষেত্রে স্ট্রিংটিকে আমাদের সুন্দর পাঠযোগ্য ফরম্যাটে দেখানো উচিত। -Here `space = 2` tells JavaScript to show nested objects on multiple lines, with indentation of 2 spaces inside an object: +এখানে `space = 2` দ্বারা বুঝানো হচ্ছে নেস্টেড অবজেক্টটি মাল্টিপল লাইনে সুন্দর ফরম্যাটে দেখাবে: ```js run let user = { @@ -306,7 +315,7 @@ let user = { }; alert(JSON.stringify(user, null, 2)); -/* two-space indents: +/* দুই স্পেস ইন্ডেন্টেশন: { "name": "John", "age": 25, @@ -317,7 +326,7 @@ alert(JSON.stringify(user, null, 2)); } */ -/* for JSON.stringify(user, null, 4) the result would be more indented: +/* JSON.stringify(user, null, 4) চার স্পেস ইন্ডেন্টেশন: { "name": "John", "age": 25, @@ -329,15 +338,19 @@ alert(JSON.stringify(user, null, 2)); */ ``` +<<<<<<< HEAD +`space` প্যারামিটারটি আমরা ব্যবহার করি লগ কে সুন্দর ভাবে দেখাতে। +======= The third argument can also be a string. In this case, the string is used for indentation instead of a number of spaces. The `space` parameter is used solely for logging and nice-output purposes. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -## Custom "toJSON" +## নিজস্ব "toJSON" -Like `toString` for string conversion, an object may provide method `toJSON` for to-JSON conversion. `JSON.stringify` automatically calls it if available. +জাভাস্ক্রিপ্ট কোন অবজেক্টকে স্ট্রিং এ রূপান্তরের জন্য `toString` ব্যবহার করে, অবজেক্টকে JSON এ রূপান্তরের সময়ও ভ্যালু স্ট্রিং হিসেবে পেতে `JSON.stringify` `toJSON` কল করে। এক্ষেত্রে `JSON.stringify` স্বয়ংক্রিয়ভাবে `toString` কে কল করে। -For instance: +যেমন: ```js run let room = { @@ -362,9 +375,9 @@ alert( JSON.stringify(meetup) ); */ ``` -Here we can see that `date` `(1)` became a string. That's because all dates have a built-in `toJSON` method which returns such kind of string. +এখানে আমরা দেখছি `(1)` এ নির্দেশিত `date` অবজেক্টটি একটি স্ট্রিংয়ে রূপান্তর হয়েছে। কেননা আমাদের `Date` অবজেক্টে বিল্টইন `toJSON` মেথড রয়েছে। -Now let's add a custom `toJSON` for our object `room` `(2)`: +এখন চলুন `(2)` এর নির্দেশিত `room` প্রপার্টির জন্য কাস্টম `toJSON` ইমপ্লিমেন্ট করি: ```js run let room = { @@ -396,25 +409,25 @@ alert( JSON.stringify(meetup) ); */ ``` -As we can see, `toJSON` is used both for the direct call `JSON.stringify(room)` and when `room` is nested in another encoded object. +সুতরাং আমরা বুঝতে পারছি এনকোডের সময় আমাদের `JSON.stringify(room)` স্বয়ংক্রিয়ভাবে `toString` কে কল করে যার ফলে `room` নেস্টেড অবজেক্ট হওয়ার পরও এটি নাম্বার হিসেবে সেট হয়েছে। ## JSON.parse -To decode a JSON-string, we need another method named [JSON.parse](mdn:js/JSON/parse). +JSON-string হতে অবজেক্টে রূপান্তরের জন্য আরেকটি মেথড আছে [JSON.parse](mdn:js/JSON/parse)। -The syntax: +সিন্ট্যাক্স হল: ```js let value = JSON.parse(str[, reviver]); ``` str -: JSON-string to parse. +: অবজেক্টে রূপান্তরের জন্য JSON-string। reviver -: Optional function(key,value) that will be called for each `(key, value)` pair and can transform the value. +: অপশনাল function(key,value) যেটি প্রতিটি প্রপার্টির জন্য কল হবে এবং আমরা কন্ডিশনালি ভ্যালু পরিবর্তন করতে পারব। -For instance: +যেমন: ```js run // stringified array @@ -425,7 +438,7 @@ numbers = JSON.parse(numbers); alert( numbers[1] ); // 1 ``` -Or for nested objects: +নেস্টেড অবজেক্টের জন্য: ```js run let userData = '{ "name": "John", "age": 35, "isAdmin": false, "friends": [0,1,2,3] }'; @@ -435,40 +448,44 @@ let user = JSON.parse(userData); alert( user.friends[1] ); // 1 ``` -The JSON may be as complex as necessary, objects and arrays can include other objects and arrays. But they must obey the same JSON format. +JSON স্ট্রিংটি আরো কমপ্লেক্স হতে পারে, এতে অ্যারে, অবজেক্ট ও যুক্ত থাকতে পারে। তবে সবাইকে অবশ্যই একই JSON ফরম্যাট মানতে হবে। -Here are typical mistakes in hand-written JSON (sometimes we have to write it for debugging purposes): +তবে অনেক সময় ম্যানুয়ালি JSON লিখার সময় কিছু সাধারণ ভুল প্রায় হয়: ```js let json = `{ - *!*name*/!*: "John", // mistake: property name without quotes - "surname": *!*'Smith'*/!*, // mistake: single quotes in value (must be double) - *!*'isAdmin'*/!*: false // mistake: single quotes in key (must be double) - "birthday": *!*new Date(2000, 2, 3)*/!*, // mistake: no "new" is allowed, only bare values - "friends": [0,1,2,3] // here all fine + *!*name*/!*: "John", // এটি ভুল: প্রপার্টি অবশ্যই double quoted হতে হবে + "surname": *!*'Smith'*/!*, // এটি ভুল: ভ্যালু single quotes(অবশ্যই double quoted হতে হবে) + *!*'isAdmin'*/!*: false // এটি ভুল: প্রপার্টি single quotes (অবশ্যই double quoted হতে হবে) + "birthday": *!*new Date(2000, 2, 3)*/!*, // এটি ভুল: "new" কীওয়ার্ড অ্যালাউ হবে না + "friends": [0,1,2,3] // এটি সঠিক }`; ``` -Besides, JSON does not support comments. Adding a comment to JSON makes it invalid. +এছাড়াও JSON এর মাঝে কমেন্ট গ্রহণযোগ্য না। কমেন্ট সংযুক্তের জন্য JSON ইনভ্যালিড হবে। +<<<<<<< HEAD +তবে এই ধরণের ইনভ্যালিড JSON কে পার্স করার জন্য একটি লাইব্ররী আছে [JSON5](http://json5.org/), যা single quotes, comments ইত্যাদি প্রপার্টিযুক্ত স্ট্রিংকেও পার্স করতে পারে। +======= There's another format named [JSON5](https://json5.org/), which allows unquoted keys, comments etc. But this is a standalone library, not in the specification of the language. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -The regular JSON is that strict not because its developers are lazy, but to allow easy, reliable and very fast implementations of the parsing algorithm. +এটা ভাবার কারণ নেই, JSON এর ডেভলাপাররা অলস বলে এইসব সমস্যার সমাধান করছে না, কারণ এই স্ট্রিক্ট থাকার ফলে পার্সিং অ্যালগরিদমটি অনেক দ্রুত কাজ করে। -## Using reviver +## অপশনাল reviver ফাংশন -Imagine, we got a stringified `meetup` object from the server. +মনে করুন, আমরা সার্ভার হতে একটি stringified `meetup` অবজেক্ট পেয়েছি। -It looks like this: +দেখতে এমন: ```js // title: (meetup title), date: (meetup date) let str = '{"title":"Conference","date":"2017-11-30T12:00:00.000Z"}'; ``` -...And now we need to *deserialize* it, to turn back into JavaScript object. +...এখন আমরা এটিকে *deserialize* করে জাভাস্ক্রিপ্ট অবজেক্টে রূপান্তর করে নেব। -Let's do it by calling `JSON.parse`: +চলুন `JSON.parse` কে কল করি: ```js run let str = '{"title":"Conference","date":"2017-11-30T12:00:00.000Z"}'; @@ -480,11 +497,11 @@ alert( meetup.date.getDate() ); // Error! */!* ``` -Whoops! An error! +ওপস! এরর! -The value of `meetup.date` is a string, not a `Date` object. How could `JSON.parse` know that it should transform that string into a `Date`? +কেননা `meetup.date` হল একটি স্ট্রিং, কোন `Date` অবজেক্ট না। এখন *deserialize* করার সময় `JSON.parse` কীভাবে এটিকে `Date` অবজেক্টে রূপান্তর করবে? -Let's pass to `JSON.parse` the reviving function as the second argument, that returns all values "as is", but `date` will become a `Date`: +এক্ষেত্রে আমরা `JSON.parse` এর দ্বিতীয় আর্গুমেন্টে একটি ফাংশন পাঠাব যেটি `date` প্রপার্টির মানকে `Date` অবজেক্টে রূপান্তর করবে: ```js run let str = '{"title":"Conference","date":"2017-11-30T12:00:00.000Z"}'; @@ -496,10 +513,10 @@ let meetup = JSON.parse(str, function(key, value) { }); */!* -alert( meetup.date.getDate() ); // now works! +alert( meetup.date.getDate() ); // কাজ করছে! ``` -By the way, that works for nested objects as well: +মজার ব্যাপার হল, এটি নেস্টেড অবজেক্ট প্রপার্টির জন্যও কাজ করবে: ```js run let schedule = `{ @@ -521,10 +538,10 @@ alert( schedule.meetups[1].date.getDate() ); // works! -## Summary +## সারাংশ -- JSON is a data format that has its own independent standard and libraries for most programming languages. -- JSON supports plain objects, arrays, strings, numbers, booleans, and `null`. -- JavaScript provides methods [JSON.stringify](mdn:js/JSON/stringify) to serialize into JSON and [JSON.parse](mdn:js/JSON/parse) to read from JSON. -- Both methods support transformer functions for smart reading/writing. -- If an object has `toJSON`, then it is called by `JSON.stringify`. +- JSON হল একটি ডাটা ফরম্যাট যেটি কোন নির্দিষ্ট ল্যাংগুয়েজের উপর নির্ভর না, প্রায় সকল প্রোগ্রামিং ল্যাংগুয়েজে JSON এর জন্য স্ট্যান্ডার্ড লাইব্রেরী আছে। +- JSON সাপোর্ট করে অবজেক্ট, অ্যারে, স্ট্রিং, নাম্বার, বুলিয়ান এবং `null` ডাটা টাইপ। +- জাভাস্ক্রিপ্টে ডাটাকে জেসন এনকোডের জন্য [JSON.stringify](mdn:js/JSON/stringify) এবং জেসন ডিকোড করতে [JSON.parse](mdn:js/JSON/parse) এই দুটি মেথড আছে। +- এনকোড বা ডিকোডের সময় প্রপার্টি সমূহকে কাস্টমাইজেশনের জন্য দুটি মেথডই কলব্যাক ফাংশন সাপোর্ট করে। +- যদি কোন অবজেক্টে `toJSON` মেথড থাকে, তাহলে `JSON.stringify` এর সময় স্বয়ংক্রিয়ভাবে `toJSON` কল হবে। diff --git a/1-js/06-advanced-functions/01-recursion/recursive-salaries.svg b/1-js/06-advanced-functions/01-recursion/recursive-salaries.svg index bd874c5ba..61f32dbc0 100644 --- a/1-js/06-advanced-functions/01-recursion/recursive-salaries.svg +++ b/1-js/06-advanced-functions/01-recursion/recursive-salaries.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/1-js/06-advanced-functions/04-var/article.md b/1-js/06-advanced-functions/04-var/article.md index 28d7a76ec..0ddf7492d 100644 --- a/1-js/06-advanced-functions/04-var/article.md +++ b/1-js/06-advanced-functions/04-var/article.md @@ -1,62 +1,95 @@ -# The old "var" +# পুরাতন "var" ```smart header="This article is for understanding old scripts" -The information in this article is useful for understanding old scripts. +এই আর্টিকেল এর তথ্য গুলি পুরাতন স্ক্রিপ্ট বোঝার জন্য সাহায্য করবে। +<<<<<<< HEAD +এভাবে আমরা নতুন কোড লিখি না। +======= That's not how we write new code. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ``` -In the very first chapter about [variables](info:variables), we mentioned three ways of variable declaration: +অধ্যায়ের প্রথম দিকে আমরা উল্লেখ করেছিলাম [variables](info:variables) কে তিন ভাবে ঘোষণা করা যায়। -1. `let` -2. `const` -3. `var` +১। `let` +২। `const` +৩। `var` +<<<<<<< HEAD +লেক্সিকাল এনভায়রনমেন্টের ক্ষেত্রে `let` এবং `const` ঠিক একইভাবে আচরণ করে। + +কিন্তু `var` সম্পূর্ণ ভিন্ন, যা খুব পুরানো কাল থেকেই উদ্ভূত হয়েছিল। এটি সাধারণত আধুনিক স্ক্রিপ্টগুলিতে ব্যবহৃত হয় না তবে এটি পুরানো স্ক্রিপ্টগুলিতে সচরাচর দেখা যাবে। + +আপনি যদি এই জাতীয় স্ক্রিপ্টগুলি সম্পর্কে জানার পরিকল্পনা না করেন তবে আপনি এই অধ্যায়টি এড়িয়ে যেতে পারেন, তবে তা আপনাকে পরে সমস্যায় ফেলতে পারে। + +প্রথমদিকে দেখতে var ও let এর আচরণ একই রকম মনে হবে। সেটা হলো একটি ভেরিয়েবল ঘোষণা করাঃ + +```js run +function sayHi() { + var phrase = "Hello"; // লোকাল ভেরিয়েবল, "let" এর পরিবর্তে "var" + + alert(phrase); // Hello +} +======= The `var` declaration is similar to `let`. Most of the time we can replace `let` by `var` or vice-versa and expect things to work: ```js run var message = "Hi"; alert(message); // Hi ``` +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d But internally `var` is a very different beast, that originates from very old times. It's generally not used in modern scripts, but still lurks in the old ones. If you don't plan on meeting such scripts you may even skip this chapter or postpone it. +<<<<<<< HEAD +...তবে এখানে পার্থক্য রয়েছে। +======= On the other hand, it's important to understand differences when migrating old scripts from `var` to `let`, to avoid odd errors. +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d -## "var" has no block scope +# "var" এর কোন ব্লক স্কোপ নেই। +<<<<<<< HEAD +যে সকল ভেরিয়েবল "var" দ্বারা ঘোষণা হয়, তারা হয় ফাংশন-ওয়াইড অথবা গ্লোবাল হয়ে থাকে। +======= Variables, declared with `var`, are either function-scoped or global-scoped. They are visible through blocks. +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d -For instance: +এই ক্ষেত্রেঃ ```js run if (true) { - var test = true; // use "var" instead of "let" + var test = true; // "let" এর পরিবর্তে "var" } *!* -alert(test); // true, the variable lives after if +alert(test); // true, "if" ব্লকের বাইরেও এটি বিদ্যমান। */!* ``` -As `var` ignores code blocks, we've got a global variable `test`. +`var` কোড ব্লকগুলিকে উপেক্ষা করার সাথে সাথে আমরা একটি গ্লোবাল `test` ভেরিয়েবল পেয়েছি. -If we used `let test` instead of `var test`, then the variable would only be visible inside `if`: +যদি আমরা `var test` এর পরিবর্তে `let test` ব্যবহার করি, তবে ভেরিয়েবলটি কেবল `if` ব্লকের মধ্যে সীমাবদ্ধ থাকবেঃ ```js run if (true) { - let test = true; // use "let" + let test = true; // "let" এর ব্যবহার } *!* +<<<<<<< HEAD +alert(test); // এরর: test নির্ধারণ করা নেই +======= alert(test); // ReferenceError: test is not defined +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 */!* ``` -The same thing for loops: `var` cannot be block- or loop-local: +লুপের ক্ষেত্রেও একই রকমঃ `var` লুপ অথবা ব্লকের লোকাল হতে পারে নাঃ ```js run for (var i = 0; i < 10; i++) { @@ -65,12 +98,16 @@ for (var i = 0; i < 10; i++) { } *!* +<<<<<<< HEAD +alert(i); // 10, "i" লুপের পরেও বিদ্যমান, এটি একটি গ্লোবাল ভেরিয়েবল। +======= alert(i); // 10, "i" is visible after loop, it's a global variable alert(one); // 1, "one" is visible after loop, it's a global variable +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d */!* ``` -If a code block is inside a function, then `var` becomes a function-level variable: +যদি কোন কোড ব্লক ফাংশনের ভিতরে থাকে, সেক্ষেত্রে `var` ফাংশন লেভেল ভেরিয়েবল হয়ে যায়। ```js run function sayHi() { @@ -78,13 +115,22 @@ function sayHi() { var phrase = "Hello"; } - alert(phrase); // works + alert(phrase); // কাজ করবে } sayHi(); +<<<<<<< HEAD +alert(phrase); // এরর: phrase নির্ধারণ করা নেই (ডেভলপার কনসোল চেক করুন) +======= alert(phrase); // ReferenceError: phrase is not defined +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ``` +<<<<<<< HEAD +আমারা যেটা দেখলাম, `var` - `if`, `for` অথবা অন্য ব্লক ভেদ করে বাইরে আসতে পারে। তার কারন অনেক আগে জাভাস্ক্রিপ্টে কোন লেক্সিকাল এনভাইরমেন্ট ছিল না। এবং `var` তারই একটি অংশ। + +## "var" ফাংশনের শুরুতেই ঘোষিত হয়। +======= As we can see, `var` pierces through `if`, `for` or other code blocks. That's because a long time ago in JavaScript, blocks had no Lexical Environments, and `var` is a remnant of that. ## "var" tolerates redeclarations @@ -108,12 +154,13 @@ alert(user); // John ``` ## "var" variables can be declared below their use +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d -`var` declarations are processed when the function starts (or script starts for globals). +ফাংশনের শুরুতেই `var` ঘোষিত হয়ে যায়(অথবা স্ক্রিপ্ট গ্লোবালের জন্য শুরু হয়) -In other words, `var` variables are defined from the beginning of the function, no matter where the definition is (assuming that the definition is not in the nested function). +অন্যভাবে বলা যায়, `var` ভেরিয়্যবল গুলো ফাংশনের শুরুতেই ঘোষিত হয়, সেটাকে যেখানেই সংজ্ঞায়িত করা হোক না কেন(ধরে নিলাম এটি কোন নেস্টেড ফাংশনের মধ্যে নয়)। -So this code: +তাহলেঃ ```js run function sayHi() { @@ -128,7 +175,7 @@ function sayHi() { sayHi(); ``` -...Is technically the same as this (moved `var phrase` above): +...টেকনিক্যালি এটির মতোই(`var phrase` উপরে স্থানান্তরিত করে দেয়)ঃ ```js run function sayHi() { @@ -143,7 +190,7 @@ function sayHi() { sayHi(); ``` -...Or even as this (remember, code blocks are ignored): +...অথবা এটির মতো(কোড ব্লকগুলি উপেক্ষা করা হয়েছে) ```js run function sayHi() { @@ -160,13 +207,13 @@ function sayHi() { sayHi(); ``` -People also call such behavior "hoisting" (raising), because all `var` are "hoisted" (raised) to the top of the function. +লোকেরা এ জাতীয় আচরণকে "hoisting" নামেও অভিহিত করে, কারণ সমস্ত var ফাংশনের শীর্ষে "hoisting" হয়। -So in the example above, `if (false)` branch never executes, but that doesn't matter. The `var` inside it is processed in the beginning of the function, so at the moment of `(*)` the variable exists. +সুতরাং উপরের উদাহরণে, `if(false)` কখনও কার্যকর হয় না, কিন্তু এতে কোন সমস্যা নেই। ফাংশনের শুরুতে এর অভ্যন্তরের `var` প্রসেস হয়ে যায়, সুতরং `(*)` মুহূর্তে ভেরিয়েবলটি বিদ্যমান থাকে। -**Declarations are hoisted, but assignments are not.** +**ডিকলারেশন গুলো "hoisted" হলেও, কিন্তু "assignment" হয় না** -That's best demonstrated with an example: +একটি উদাহরণ দিয়ে দিয়ে দেখা যাক, যেমনঃ ```js run function sayHi() { @@ -180,32 +227,36 @@ function sayHi() { sayHi(); ``` -The line `var phrase = "Hello"` has two actions in it: +`var phrase` = "Hello" লাইনটির মধ্যে দুটি কাজ রয়েছেঃ -1. Variable declaration `var` -2. Variable assignment `=`. +১। ভেরিয়েবল ঘোষণা `var` +২। ভেরিয়াবল আসাইনমেন্ট `=`। -The declaration is processed at the start of function execution ("hoisted"), but the assignment always works at the place where it appears. So the code works essentially like this: +ফাংশন এক্সিকিউশনের শুরুতেই ডিক্লেয়ার করা হয়ে থাকে ("hoisted"),তবে অ্যাসাইনমেন্টটি সর্বদা যেখানে প্রদর্শিত হবে সেখানে কাজ করে। সুতরাং কোডটি মূলত এই ভাবে কাজ করে: ```js run function sayHi() { *!* - var phrase; // declaration works at the start... + var phrase; // ভেরিয়েবল ডিক্লেয়ার শুরুতেই কাজ করে ... */!* alert(phrase); // undefined *!* - phrase = "Hello"; // ...assignment - when the execution reaches it. + phrase = "Hello"; // ...অ্যাসাইনমেন্ট - যখন এক্সিকিউশন এখানে পৌঁছায়। */!* } sayHi(); ``` -Because all `var` declarations are processed at the function start, we can reference them at any place. But variables are undefined until the assignments. +কারন সকল var ফাংশনের শুরুতেই ডিক্লেয়ার করা হয়, আমরা ওই ফাংশন স্কোপের যে কোন জায়গায় থেকে ভেরিয়েবল সমূহ কে ব্যবহার করতে পারি। কিন্তু অ্যাসাইনমেন্টের আগ পর্যন্ত ভেরিয়েবল গুলো আনডিফাইন অবস্থায় থাকে। +<<<<<<< HEAD +উপরের দুটি উদাহরণে `alert` কোন এরর ছাড়াই চলে, কারন ভেরিয়েবল `phrase` বিদ্যমান রয়েছে। তবে এর মান এখনও নির্ধারিত হয়নি, সুতরাং এটি আনডিফাইন দেখায়। +======= In both examples above, `alert` runs without an error, because the variable `phrase` exists. But its value is not yet assigned, so it shows `undefined`. +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d ## IIFE @@ -275,13 +326,22 @@ There exist other ways besides parentheses to tell JavaScript that we mean a Fun In all the above cases we declare a Function Expression and run it immediately. Let's note again: nowadays there's no reason to write such code. -## Summary +## সারাংশ -There are two main differences of `var` compared to `let/const`: +এখানে দুটি প্রধান পার্থক্য রয়েছে `var` এবং `let/const` এর মধ্যেঃ +<<<<<<< HEAD +<<<<<<< HEAD +১। `var` ভেরিয়েবলের কোন ব্লক স্কোপ নেই, এগুলি সর্বনিম্ন ফাংশন লেভেল পর্যন্ত বিদ্যমান থাকে। +২। ফাংশনের শুরুতেই `var` ঘোষিত হয়ে যায়(স্ক্রিপ্ট গ্লোবালের জন্য শুরু হয়)। +======= +1. `var` variables have no block scope; their visibility is scoped to current function, or global, if declared outside function. +======= 1. `var` variables have no block scope, their visibility is scoped to current function, or global, if declared outside function. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 2. `var` declarations are processed at function start (script start for globals). +>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d -There's one more very minor difference related to the global object, that we'll cover in the next chapter. +গ্লোবাল অবজেক্টের সাথে সম্পর্কিত আরও একটি ছোটখাটো পার্থক্য রয়েছে, আমরা পরবর্তী অধ্যায়ে এটি আলোচনা করব। -These differences make `var` worse than `let` most of the time. Block-level variables is such a great thing. That's why `let` was introduced in the standard long ago, and is now a major way (along with `const`) to declare a variable. +এই পার্থক্যগুলি `var` কে বেশিরভাগ সময় `let` এর চেয়ে খারাপ করে তোলে। ব্লক-লেভেলের ভেরিয়েবলগুলি একটি দুর্দান্ত জিনিস। এই জন্য `let` এর স্ট্যান্ডার্ড চালু হয় অনেক আগে, এবং ভেরিয়েবল ঘোষণার জন্য এখন এটি একটি প্রধান উপায় (`const` সহ)। \ No newline at end of file diff --git a/1-js/06-advanced-functions/07-new-function/article.md b/1-js/06-advanced-functions/07-new-function/article.md index ffe264a4e..b661cd0c7 100644 --- a/1-js/06-advanced-functions/07-new-function/article.md +++ b/1-js/06-advanced-functions/07-new-function/article.md @@ -1,19 +1,19 @@ -# The "new Function" syntax +# "new Function" সিনট্যাক্স -There's one more way to create a function. It's rarely used, but sometimes there's no alternative. +আরো একভাবে ফাংশন ডিক্লেয়ার করা যায়। যদিও এটির ব্যবহার খুব কম, তবে অনেকসময় এটি ব্যবহার করা ছাড়া উপায় থাকে না। -## Syntax +## সিনট্যাক্স -The syntax for creating a function: +ফাংশন ডিক্লেয়ার করার সিনট্যাক্সটি হল: ```js let func = new Function ([arg1, arg2, ...argN], functionBody); ``` -The function is created with the arguments `arg1...argN` and the given `functionBody`. +ফাংশনটিতে আর্গুমেন্ট `arg1...argN` এবং `functionBody` থাকে। -It's easier to understand by looking at an example. Here's a function with two arguments: +উদাহরণের মাধ্যমে সিনট্যাক্সটি সহজে বুঝতে পারব, এখানে একটি ফাংশন ডিক্লেয়ার করেছি যার দুটি আর্গুমেন্ট আছে: ```js run let sum = new Function('a', 'b', 'return a + b'); @@ -21,7 +21,7 @@ let sum = new Function('a', 'b', 'return a + b'); alert( sum(1, 2) ); // 3 ``` -And here there's a function without arguments, with only the function body: +এবং নিচের ফাংশনটিতে কোন আর্গুমেন্ট নেই, শুধুমাত্র ফাংশনের বডি আছে: ```js run let sayHi = new Function('alert("Hello")'); @@ -29,28 +29,28 @@ let sayHi = new Function('alert("Hello")'); sayHi(); // Hello ``` -The major difference from other ways we've seen is that the function is created literally from a string, that is passed at run time. +অন্যান্য ফাংশনের সাথে এটির মূল পার্থক্যটি হল, ফাংশনটি তৈরি হয় স্ট্রিং হতে, যা রানটাইমে পাস করা যায়। -All previous declarations required us, programmers, to write the function code in the script. +অ্যারো বা রেগুলার ফাংশনগুলোর ক্ষেত্রে আমরা দেখেছি, ফাংশনের বডি বা আর্গুমেন্ট স্ক্রিপ্টে আগে থেকেই ডিক্লেয়ার করতে হত। -But `new Function` allows to turn any string into a function. For example, we can receive a new function from a server and then execute it: +তবে, `new Function` এর মাধ্যমে আমরা কোন স্ট্রিংকে ফাংশনে পরিবর্তন করতে পারি। যেমন, আমরা সার্ভার কোন একটি ফাংশন পাঠাতে পারি এবং স্ক্রিপ্টে এটি এক্সিকিউট করতে পারি: ```js -let str = ... receive the code from a server dynamically ... +let str = ...সার্ভার হতে ডায়নামিক্যালি ফাংশনের বিস্তারিত তথ্য নিয়ে আসবে ... let func = new Function(str); func(); ``` -It is used in very specific cases, like when we receive code from a server, or to dynamically compile a function from a template, in complex web-applications. +এটি কিছু নির্দিষ্ট ক্ষেত্রে ব্যবহার করা হয়, যেমন আমরা সার্ভার হতে কোন কোড বা টেমপ্লেট হতে ডায়নামিক্যালি কোন একটি ফাংশন কে কম্পাইল করতে চাই, এক্ষেত্রে এটি ব্যবহার করতে হবে। -## Closure +## ক্লোজার -Usually, a function remembers where it was born in the special property `[[Environment]]`. It references the Lexical Environment from where it's created (we covered that in the chapter ). +সাধারণত একটি ফাংশন কোথায় ডিক্লেয়ার করা হয়েছে তার বিস্তারিত `[[Environment]]` প্রপার্টিতে সংরক্ষণ করে। এটি তার লেক্সিকাল এনভায়রনমেন্টকে রেফারেন্স করে (যা এই অধ্যায়ে আলোচনা করেছি )। -But when a function is created using `new Function`, its `[[Environment]]` is set to reference not the current Lexical Environment, but the global one. +কিন্তু যখন একটি ফাংশন `new Function` দ্বারা তৈরি হয়, এটি কারেন্ট লেক্সিকাল এনভায়রনমেন্টকে `[[Environment]]` এ সেট করে না, তবে গ্লোবাল স্কোপে অ্যাক্সেস থাকে। -So, such function doesn't have access to outer variables, only to the global ones. +সুতরাং, এই ধরণের ফাংশন আউটার ভ্যারিয়েবলকে অ্যাক্সেস করতে পারে না, শুধুমাত্র গ্লোবাল স্কোপকে অ্যাক্সেস করতে পারে। ```js run function getFunc() { @@ -66,7 +66,7 @@ function getFunc() { getFunc()(); // error: value is not defined ``` -Compare it with the regular behavior: +রেগুলার ফাংশনে দেখুন: ```js run function getFunc() { @@ -82,37 +82,41 @@ function getFunc() { getFunc()(); // *!*"test"*/!*, from the Lexical Environment of getFunc ``` -This special feature of `new Function` looks strange, but appears very useful in practice. +যদিওবা `new Function` দেখতে কিছুটা ভিন্ন, তবে এটি কিছু ক্ষেত্রে অনেক কাজে আসে। -Imagine that we must create a function from a string. The code of that function is not known at the time of writing the script (that's why we don't use regular functions), but will be known in the process of execution. We may receive it from the server or from another source. +মনে করুন আমরা স্ট্রিং হতে একটি ফাংশন তৈরি করব। কিন্তু ফাংশনটির কোড কি হবে বা এটির কাজ কি হবে তা আমরা জানিনা (এজন্য আমরা এগুলার ফাংশন ব্যবহার করব না), তবে এক্সিকিউশনের সময় কোড কি হবে তা জানতে পারি, হতে পারে কোডটি পাব অন্য কোন রিসোর্স বা সার্ভার থেকে। -Our new function needs to interact with the main script. +আমাদের নতুন ফাংশনটিকে মূল স্ক্রিপ্টের সাথে ইন্টারঅ্যাক্ট করা দরকার। -What if it could access the outer variables? +যদি এটি আউটার ভ্যারিয়েবলকে অ্যাক্সেস করতে পারে তাহলে কি হবে? -The problem is that before JavaScript is published to production, it's compressed using a *minifier* -- a special program that shrinks code by removing extra comments, spaces and -- what's important, renames local variables into shorter ones. +সমস্যাটি দেখা দেয় যখন আমরা প্রোডাকশনের জন্য জাভাস্ক্রিপ্টকে *minifier* দ্বারা কম্প্রেসড করি, ফলে আমাদের কোডের অতিরিক্ত কমেন্ট, স্পেসগুলো রিমুভ হয়ে যায়, এছাড়াও লোকাল ভ্যারিয়েবলগুলোর নাম সংক্ষিপ্ত হয়ে যায়। +<<<<<<< HEAD +যেমন, যদি কোন ফাংশনে একটি ভ্যারিয়েবল থাকে `let userName`, তাহলে মিনিফাই হওয়ার সময় এটি হতে পারে `let a` (অথবা অন্য কোন নাম বা ক্যারেক্টার), এবং এটি ঐ লোকাল স্কোপের সব জায়গায় হয়। এবং এটির জন্য কোন সমস্যা হয় না, কেননা ভ্যারিয়েবলটি লোকাল, ফলে এটি অন্য কোন স্কোপ হতে অ্যাক্সেস হবে না। এবং মিনিফাই এর সময় ঐ ফাংশনের সকল জায়গায় ভ্যারিয়েবলটি প্রতিস্থাপিত হয়। *minifier* যথেষ্ট স্মার্ট, এরা কোড অ্যানালাইজ করে এসব করে, ফলে কোডে কোন ব্রেক হয় না। +======= For instance, if a function has `let userName`, minifier replaces it with `let a` (or another letter if this one is occupied), and does it everywhere. That's usually a safe thing to do, because the variable is local, nothing outside the function can access it. And inside the function, minifier replaces every mention of it. Minifiers are smart, they analyze the code structure, so they don't break anything. They're not just a dumb find-and-replace. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -So if `new Function` had access to outer variables, it would be unable to find renamed `userName`. +সুতরাং যদি `new Function` এর আউটার স্কোপে অ্যাক্সেস থাকে, তাহলে `userName` ভ্যারিয়েবলের নাম পরিবর্তনের ফলে অ্যাক্সেস করতে পারবে না, এবং এরর তৈরি হতে পারে। -**If `new Function` had access to outer variables, it would have problems with minifiers.** +**যদি `new Function` এর আউটার স্কোপে অ্যাক্সেস থাকে, তাহলে মিনিফাই হওয়ার পর সমস্যা হতে পারে** -Besides, such code would be architecturally bad and prone to errors. +এছাড়াও, এই ধরণের কোড আর্কিটেকচার ভঙ্গুর প্রকৃতির হয়। -To pass something to a function, created as `new Function`, we should use its arguments. +আউটার স্কোপের কোন কিছু `new Function` এ পাস করার জন্য আমাদের আর্গুমেন্ট ব্যবহার করতে হবে। -## Summary +## সারাংশ -The syntax: +সিনট্যাক্স: ```js let func = new Function ([arg1, arg2, ...argN], functionBody); ``` -For historical reasons, arguments can also be given as a comma-separated list. +আমরা আর্গুমেন্টকে কমা সেপারেটেড স্ট্রিং হিসেবে পাঠাতে পারি। -These three declarations mean the same: +যেমন: ```js new Function('a', 'b', 'return a + b'); // basic syntax @@ -120,4 +124,4 @@ new Function('a,b', 'return a + b'); // comma-separated new Function('a , b', 'return a + b'); // comma-separated with spaces ``` -Functions created with `new Function`, have `[[Environment]]` referencing the global Lexical Environment, not the outer one. Hence, they cannot use outer variables. But that's actually good, because it insures us from errors. Passing parameters explicitly is a much better method architecturally and causes no problems with minifiers. +`new Function` তৈরি হওয়ার সময় `[[Environment]]` এ শুধুমাত্র গ্লোবাল ল্যাক্সিকাল এনভায়রনমেন্ট কে রেফার করে। এরা আউটার স্কোপকে অ্যাক্সেস করতে পারে না। তবে এটি ভালো, কেননা এক্ষেত্রে আমরা সহজে এরর নির্নয় করতে পারি। আউটার স্কোপের ভ্যারিয়েবল অ্যাক্সেসের জন্য ভ্যারিয়েবলকে আর্গুমেন্ট হিসেবে পাঠাতে পারি। diff --git a/1-js/06-advanced-functions/09-call-apply-decorators/03-debounce/debounce.svg b/1-js/06-advanced-functions/09-call-apply-decorators/03-debounce/debounce.svg index e624ce020..bd82f0245 100644 --- a/1-js/06-advanced-functions/09-call-apply-decorators/03-debounce/debounce.svg +++ b/1-js/06-advanced-functions/09-call-apply-decorators/03-debounce/debounce.svg @@ -1 +1 @@ -200ms1500ms1000ms0cf(a)f(b)f(c)500mstimecalls: after 1000ms \ No newline at end of file +200ms1500ms1000ms0cf(a)f(b)f(c)500mstimecalls: after 1000ms \ No newline at end of file diff --git a/1-js/07-object-properties/01-property-descriptors/article.md b/1-js/07-object-properties/01-property-descriptors/article.md index 0a945b377..539ae56f6 100644 --- a/1-js/07-object-properties/01-property-descriptors/article.md +++ b/1-js/07-object-properties/01-property-descriptors/article.md @@ -1,40 +1,44 @@ -# Property flags and descriptors +# প্রপার্টি ফ্ল্যাগ এবং ডেস্ক্রিপ্টর -As we know, objects can store properties. +আমরা জানি, অবজেক্টে প্রপার্টি এবং ভ্যালু থাকে। -Until now, a property was a simple "key-value" pair to us. But an object property is actually a more flexible and powerful thing. +পূর্বের অধ্যায়গুলোতে আমরা শিখেছি প্রপার্টি হল "key-value" এর একটি জোড়া। তবে জাভাস্ক্রিপ্ট প্রপার্টি আরো বেশি ফ্লেক্সিবল এবং শক্তিশালী। -In this chapter we'll study additional configuration options, and in the next we'll see how to invisibly turn them into getter/setter functions. +এই অধ্যায়ের এই অনুচ্ছেদে আমরা প্রপার্টির কনফিগারেশন সম্পর্কে জানব, পরবর্তী অধ্যায়ে getter/setter ফাংশন নিয়ে জানব। -## Property flags +## প্রপার্টি ফ্ল্যাগ -Object properties, besides a **`value`**, have three special attributes (so-called "flags"): +অবজেক্ট প্রপার্টিতে **`value`** এর পাশাপাশি আরো তিনটি বিশেষ অ্যাট্রিবিউট আছে এদের বলা হয় ফ্ল্যাগ: -- **`writable`** -- if `true`, the value can be changed, otherwise it's read-only. -- **`enumerable`** -- if `true`, then listed in loops, otherwise not listed. -- **`configurable`** -- if `true`, the property can be deleted and these attributes can be modified, otherwise not. +- **`writable`** -- `true` হলে ভ্যালু পরিবর্তন করা যেতে পারে, অন্যথায় এটি শুধুমাত্র রিড-অনলি। +- **`enumerable`** -- `true` হলে এটি লুপের মধ্যে দেখাবে অন্যথায় লুপে প্রপার্টিটি দেখাবে না। +- **`configurable`** -- `true` হলে প্রপার্টি পরিবর্তন বা ডিলিট করা যায়, অন্যথায় করা যাবে না। -We didn't see them yet, because generally they do not show up. When we create a property "the usual way", all of them are `true`. But we also can change them anytime. +এইসব আমরা এখনো দেখিনি, কেননা সাধারণ নিয়মে কোন প্রপার্টি তৈরি করার সময় এদের প্রয়োজন হয় না, এরা ডিফল্ট `true` থাকে। তবে আমরা এদের পরিবর্তন করতে পারি। -First, let's see how to get those flags. +প্রথমত, চলুন কোন প্রপার্টির ফ্ল্যাগ কীভাবে দেখা যায় তা দেখি। +<<<<<<< HEAD +এই মেথডটি কোন একটি প্রপার্টির সকল তথ্য দেখাবে [Object.getOwnPropertyDescriptor](mdn:js/Object/getOwnPropertyDescriptor)। +======= The method [Object.getOwnPropertyDescriptor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor) allows to query the *full* information about a property. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -The syntax is: +লিখার নিয়ম: ```js let descriptor = Object.getOwnPropertyDescriptor(obj, propertyName); ``` `obj` -: The object to get information from. +: যে অবজেক্ট এর প্রপার্টির মান জানতে চাই `propertyName` -: The name of the property. +: প্রপার্টির নাম -The returned value is a so-called "property descriptor" object: it contains the value and all the flags. +রিটার্নকৃত মানকে বলা হয় "প্রপার্টি ডেস্ক্রিপ্টর"। এটি ঐ প্রপার্টির মান এবং ফ্ল্যাগগুলো দেখাবে। -For instance: +যেমন: ```js run let user = { @@ -54,23 +58,27 @@ alert( JSON.stringify(descriptor, null, 2 ) ); */ ``` +<<<<<<< HEAD +নিজস্ব ফ্ল্যাগ সেট করতে ব্যবহার করি [Object.defineProperty](mdn:js/Object/defineProperty)। +======= To change the flags, we can use [Object.defineProperty](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty). +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -The syntax is: +সিনট্যাক্স হল: ```js Object.defineProperty(obj, propertyName, descriptor) ``` `obj`, `propertyName` -: The object and its property to apply the descriptor. +: অবজেক্ট এবং প্রপার্টির নাম `descriptor` -: Property descriptor object to apply. +: প্রপার্টি ডেস্ক্রিপ্টর একটি অবজেক্ট নেই। -If the property exists, `defineProperty` updates its flags. Otherwise, it creates the property with the given value and flags; in that case, if a flag is not supplied, it is assumed `false`. +যেটি অবজেক্টে প্রপার্টি ইতোমধ্যে বিদ্যমান থাকে, তাহলে `defineProperty` ফ্ল্যাগ সমূহকে আপডেট করবে। অন্যথায়, এটি ভ্যালু এবং ফ্ল্যাগ অনুযায়ী প্রপার্টি তৈরি করবে, আর যদি ফ্ল্যাগ পাস করা না হয় তাহলে ফ্ল্যাগসমূহের মান `false` ধরে নেই। -For instance, here a property `name` is created with all falsy flags: +যেমন, এখানে `name` প্রপার্টির জন্য ফ্ল্যাগসমূহের মান `false` সেট হবে: ```js run let user = {}; @@ -96,13 +104,13 @@ alert( JSON.stringify(descriptor, null, 2 ) ); */ ``` -Compare it with "normally created" `user.name` above: now all flags are falsy. If that's not what we want then we'd better set them to `true` in `descriptor`. +সাধারণ নিয়মে `user.name` অবজেক্টের প্রপার্টি অ্যাসাইন করা আর উপরেরটির মধ্যে পার্থক্য হল এখানে সকল ফ্ল্যাগ এর মান falsy আর সাধারণ নিয়মে ফ্ল্যাগসমূহের মান `true` সেট হয়। -Now let's see effects of the flags by example. +চলুন আরো কিছু উদাহরণের মাধ্যমে বিস্তারিত দেখি। -## Non-writable +## অপরিবর্তিনীয় -Let's make `user.name` non-writable (can't be reassigned) by changing `writable` flag: +চলুন `user.name` কে আমরা `writable` ফ্ল্যাগের মাধ্যমে কনস্ট্যান্ট হিসেবে সেট করি: ```js run let user = { @@ -120,13 +128,18 @@ user.name = "Pete"; // Error: Cannot assign to read only property 'name' */!* ``` -Now no one can change the name of our user, unless they apply their own `defineProperty` to override ours. +এখন আমাদের `name` প্রপার্টিকে অন্য কোন অপারেশনের মাধ্যমে আর পরিবর্তন করা যাবে না, যতক্ষণ না আমরা `defineProperty` এর মাধ্যমে ফ্ল্যাগটিকে পুনরায় পরিবর্তন করব। +<<<<<<< HEAD +```smart header="শুধুমাত্র strict mode এ এরর দেখাবে" +non-strict mode এ কোন এরর দেখাবে না। তবে আমাদের রি-অ্যাসাইন অপারেশনও এক্সিকিউট হবে না। এক্ষেত্রে ফ্ল্যাগ ভায়োলেট এর এররগুলো শুধু উপেক্ষা করে যাবে। +======= ```smart header="Errors appear only in strict mode" In non-strict mode, no errors occur when writing to non-writable properties and such. But the operation still won't succeed. Flag-violating actions are just silently ignored in non-strict. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ``` -Here's the same example, but the property is created from scratch: +আগের উদাহরনণটি পুনরায় দেখুন, তবে এখানে প্রপার্টি তৈরি করা হচ্ছে `defineProperty` এর মাধ্যমে: ```js run let user = { }; @@ -134,7 +147,7 @@ let user = { }; Object.defineProperty(user, "name", { *!* value: "John", - // for new properties we need to explicitly list what's true + // আমরা ফ্ল্যাগের মান false এভাবেও সেট করতে পারি। এখানে অন্য দুটি ফ্ল্যাগ true করার মাধ্যমে writable কে false সেট করা হচ্ছে enumerable: true, configurable: true */!* @@ -144,11 +157,11 @@ alert(user.name); // John user.name = "Pete"; // Error ``` -## Non-enumerable +## অগণনাযোগ্য -Now let's add a custom `toString` to `user`. +এখন চলুন `user` এ একটি `toString` মেথড লিখি `toString`। -Normally, a built-in `toString` for objects is non-enumerable, it does not show up in `for..in`. But if we add a `toString` of our own, then by default it shows up in `for..in`, like this: +সাধারণত বিল্ট-ইন অবজেক্টসমূহে `toString` মেথড থাকে, তবে এটি non-enumerable। অর্থাৎ `for..in` লুপে এটি দেখায় না। কিন্তু যদি আমরা আমাদের নিজস্ব অবজেক্টে `toString` লিখি, তাহলে এটি লুপে দেখাবে, যেমন: ```js run let user = { @@ -158,11 +171,11 @@ let user = { } }; -// By default, both our properties are listed: +// ডিফল্টভাবে উভয়ই প্রপার্টির নাম লুপে দেখাবে for (let key in user) alert(key); // name, toString ``` -If we don't like it, then we can set `enumerable:false`. Then it won't appear in a `for..in` loop, just like the built-in one: +যদি আমরা এটি দেখাতে না চাই, তাহলে `enumerable:false` ফ্ল্যাগ সেট করব। তাহলে এটি বিল্ট-ইন অবজেক্টের মত `for..in` লুপে দেখাবে না: ```js run let user = { @@ -179,12 +192,12 @@ Object.defineProperty(user, "toString", { }); *!* -// Now our toString disappears: +// এখন toString এর নাম দেখাবে না: */!* for (let key in user) alert(key); // name ``` -Non-enumerable properties are also excluded from `Object.keys`: +Non-enumerable প্রপার্টি সমূহ `Object.keys` এও লিস্টেড হবে না: ```js alert(Object.keys(user)); // name @@ -192,11 +205,15 @@ alert(Object.keys(user)); // name ## Non-configurable -The non-configurable flag (`configurable:false`) is sometimes preset for built-in objects and properties. +এই non-configurable ফ্ল্যাগটি (`configurable:false`) কিছু বিল্ট-ইন অবজেক্টের প্রপার্টির জন্য সেট করা আছে। +<<<<<<< HEAD +non-configurable ফ্ল্যাগ সেট করা হলে প্রপার্টিটি ডিলিট করা সম্ভব না। +======= A non-configurable property can't be deleted, its attributes can't be modified. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -For instance, `Math.PI` is non-writable, non-enumerable and non-configurable: +যেমন, `Math.PI` হল non-writable, non-enumerable এবং non-configurable: ```js run let descriptor = Object.getOwnPropertyDescriptor(Math, 'PI'); @@ -211,14 +228,23 @@ alert( JSON.stringify(descriptor, null, 2 ) ); } */ ``` -So, a programmer is unable to change the value of `Math.PI` or overwrite it. +সুতরাং আপনি চাইলেও `Math.PI` এর মান পরিবর্তন বা ডিলিট করতে পারবেন না। ```js run Math.PI = 3; // Error, because it has writable: false -// delete Math.PI won't work either +// delete Math.PI এটিও কাজ করবে না ``` +<<<<<<< HEAD +কোন একটি প্রপার্টিকে non-configurable হিসেবে শুধুমাত্র একবার সেট করতে পারবেন। আমরা পুনরায় এটিকে `defineProperty` এর মাধ্যমে পরিবর্তন করতে পারব না। + +সুস্পষ্ট ভাবে বলতে গেলে non-configurability এর জন্য `defineProperty` এর মধ্যে কিছু বিধিনিষেধ তৈরি হয়: +1. `configurable`, `enumerable`, `writable` ফ্ল্যাগ কে `false` হতে `true` সেট করা যাবে না। +2. `get/set` দ্বারা পরিবর্তন করা যাবে না। + +এখানে `user.name` non-configurable, তবে আমরা চাইলে একে রি-অ্যাসাইন করতে পারি: +======= We also can't change `Math.PI` to be `writable` again: ```js run @@ -233,6 +259,7 @@ Making a property non-configurable is a one-way road. We cannot change it back w **Please note: `configurable: false` prevents changes of property flags and its deletion, while allowing to change its value.** Here `user.name` is non-configurable, but we can still change it (as it's writable): +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run let user = { @@ -247,7 +274,11 @@ user.name = "Pete"; // works fine delete user.name; // Error ``` +<<<<<<< HEAD +এবং এখানে আমরা `user.name` কে যদি একেবারে কনস্ট্যান্ট করে দিতে চাই: +======= And here we make `user.name` a "forever sealed" constant, just like the built-in `Math.PI`: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run let user = { @@ -259,8 +290,8 @@ Object.defineProperty(user, "name", { configurable: false }); -// won't be able to change user.name or its flags -// all this won't work: +// user.name এর ফ্ল্যাগ বা ভ্যালু আর পরিবর্তন করা সম্ভব না +// নিচের কোনটিই কাজ করবে না: user.name = "Pete"; delete user.name; Object.defineProperty(user, "name", { value: "Pete" }); @@ -274,9 +305,13 @@ We can change `writable: true` to `false` for a non-configurable property, thus ## Object.defineProperties +<<<<<<< HEAD +আরেকটি মেথড আছে যেটি দ্বারা একবারে একাধিক প্রপার্টি সেট করা যায় [Object.defineProperties(obj, descriptors)](mdn:js/Object/defineProperties)। +======= There's a method [Object.defineProperties(obj, descriptors)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperties) that allows to define many properties at once. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -The syntax is: +সিনট্যাক্সটি হল: ```js Object.defineProperties(obj, { @@ -286,7 +321,7 @@ Object.defineProperties(obj, { }); ``` -For instance: +যেমন: ```js Object.defineProperties(user, { @@ -296,19 +331,23 @@ Object.defineProperties(user, { }); ``` -So, we can set many properties at once. +সুতরাং আমরা চাইলে একবারে একাধিক প্রপার্টি সেট করতে পারি। ## Object.getOwnPropertyDescriptors +<<<<<<< HEAD +অবজেক্টের সকল প্রপার্টির বর্ণনা পেতে আমরা ব্যবহার করতে পারি এই মেথডটি ব্যবহার করে [Object.getOwnPropertyDescriptors(obj)](mdn:js/Object/getOwnPropertyDescriptors)। +======= To get all property descriptors at once, we can use the method [Object.getOwnPropertyDescriptors(obj)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors). +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Together with `Object.defineProperties` it can be used as a "flags-aware" way of cloning an object: +এই `Object.getOwnPropertyDescriptors` এবং `Object.defineProperties` মেথডের এর মাধ্যমে আমরা প্রপার্টির ফ্ল্যাগ সহ ক্লোন অবজেক্ট তৈরি করতে পারি: ```js let clone = Object.defineProperties({}, Object.getOwnPropertyDescriptors(obj)); ``` -Normally when we clone an object, we use an assignment to copy properties, like this: +সাধারণত আমরা কোন অবজেক্টকে ক্লোন করি এভাবে: ```js for (let key in user) { @@ -316,16 +355,30 @@ for (let key in user) { } ``` -...But that does not copy flags. So if we want a "better" clone then `Object.defineProperties` is preferred. +...কিন্তু এটি ফ্ল্যাগসমূহকে কপি করবে না। সুতরাং আমরা ফ্ল্যাগসহ ক্লোন করতে ব্যবহার করব `Object.defineProperties`। +<<<<<<< HEAD +আরেকটি পার্থক্য হল `for..in` সাধারণত সিম্বলিক প্রপার্টিসমূহ উপেক্ষা করে, তবে `Object.getOwnPropertyDescriptors` এর জন্য সকল প্রপার্টি (সিম্বল প্রপার্টি গুলো সহ) রিটার্ন হয়। +======= Another difference is that `for..in` ignores symbolic and non-enumerable properties, but `Object.getOwnPropertyDescriptors` returns *all* property descriptors including symbolic and non-enumerable ones. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 + +## গ্লোবালি কোন অবজেক্টকে সিল করা -## Sealing an object globally +প্রপার্টির ডেস্ক্রিপ্টর সকল আলাদা আলাদা প্রপার্টির জন্য কাজ করে। -Property descriptors work at the level of individual properties. +এছাড়াও আরো কিছু মেথড আছে যাদের সাহায্যে *সম্পূর্ণ* অবজেক্টের জন্য কাজ করতে পারি: -There are also methods that limit access to the *whole* object: +<<<<<<< HEAD +[Object.preventExtensions(obj)](mdn:js/Object/preventExtensions) +: অবজেক্টে নতুন কোন প্রপার্টির সংযোজন করা যাবে না। +[Object.seal(obj)](mdn:js/Object/seal) +: সকল প্রপার্টিতে `configurable: false` সেট করতে। ফলে কোন প্রপার্টি ডিলিট বা সংযোজন করা যাবে না। + +[Object.freeze(obj)](mdn:js/Object/freeze) +: কোন প্রপার্টি ডিলিট, সংযোজন, পরিবর্তন এড়াতে। সকল প্রপার্টিতে `configurable: false, writable: false` সেট হয়। +======= [Object.preventExtensions(obj)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/preventExtensions) : Forbids the addition of new properties to the object. @@ -334,9 +387,20 @@ There are also methods that limit access to the *whole* object: [Object.freeze(obj)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze) : Forbids adding/removing/changing of properties. Sets `configurable: false, writable: false` for all existing properties. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 + +এছাড়াও অবজেক্টের অবস্থা যাচাইয়ের জন্যও কিছু মেথড আছে: + +<<<<<<< HEAD +[Object.isExtensible(obj)](mdn:js/Object/isExtensible) +: যদি নতুন প্রপার্টির সংযোজন বন্ধ থাকে তাহলে `false` রিটার্ন করবে অন্যথায় `true`। -And also there are tests for them: +[Object.isSealed(obj)](mdn:js/Object/isSealed) +: যদি কোন প্রপার্টি ডিলিট বা সংযোজন বন্ধ থাকে তাহলে `true` রিটার্ন করবে, এবং সকল প্রপার্টিতে `configurable: false` ফ্ল্যাগ সেট করা থাকে। +[Object.isFrozen(obj)](mdn:js/Object/isFrozen) +: যদি কোন প্রপার্টি ডিলিট, সংযোজন, পরিবর্তন করার অপশন বন্ধ থাকে তাহলে `true` রিটার্ন করবে, এবং সকল প্রপার্টিতে `configurable: false, writable: false` ফ্ল্যাগ সেট করা থাকে। +======= [Object.isExtensible(obj)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isExtensible) : Returns `false` if adding properties is forbidden, otherwise `true`. @@ -345,5 +409,6 @@ And also there are tests for them: [Object.isFrozen(obj)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen) : Returns `true` if adding/removing/changing properties is forbidden, and all current properties are `configurable: false, writable: false`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -These methods are rarely used in practice. +তবে বাস্তবক্ষেত্রে এই মেথডসমূহ তেমন ব্যবহার করা হয় না। diff --git a/1-js/07-object-properties/02-property-accessors/article.md b/1-js/07-object-properties/02-property-accessors/article.md index c2aa35d53..6e037e9fc 100644 --- a/1-js/07-object-properties/02-property-accessors/article.md +++ b/1-js/07-object-properties/02-property-accessors/article.md @@ -1,31 +1,35 @@ -# Property getters and setters +# প্রপার্টি getter এবং setter -There are two kinds of object properties. +জাভাস্ক্রিপ্টে অবজেক্ট প্রপার্টি দুই ধরণের। -The first kind is *data properties*. We already know how to work with them. All properties that we've been using until now were data properties. +এর মধ্যে একটি হল *data properties*। ইতোমধ্যে আমরা এদের দেখেছি। এই পর্যন্ত আমরা যেসব প্রপার্টি দেখেছি তাদের বলা হয় ডাটা প্রপার্টিস। +<<<<<<< HEAD +আরেক প্রকার প্রপার্টিটি আমাদের জন্য নতুন। একে বলা হয় *accessor properties*। আসলে এরা হল ফাংশন যার মাধ্যমে কোন ভ্যালু *get* বা *set* করা যায়। তবে এরা রেগুলার প্রপার্টির ন্যায় কাজ করে। +======= The second type of property is something new. It's an *accessor property*. They are essentially functions that execute on getting and setting a value, but look like regular properties to an external code. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -## Getters and setters +## Getters এবং setters -Accessor properties are represented by "getter" and "setter" methods. In an object literal they are denoted by `get` and `set`: +অ্যাক্সেসর প্রপার্টিকে সাধারণত রিপ্রেজেন্ট করা হয় "getter" এবং "setter" মেথড দ্বারা। অবজেক্টে লিখার সময় এদের লিখা হয় `get` এবং `set` দ্বারা: ```js let obj = { *!*get propName()*/!* { - // getter, the code executed on getting obj.propName + // getter, এটি এক্সিকিউট হবে যখন obj.propName কল হবে }, *!*set propName(value)*/!* { - // setter, the code executed on setting obj.propName = value + // setter, এটি এক্সিকিউট হবে যখন obj.propName = value কল হবে } }; ``` -The getter works when `obj.propName` is read, the setter -- when it is assigned. +অর্থাৎ getter কল হয় `obj.propName` এর মান পড়তে, এবং setter কল হয় মান অ্যাসাইন করতে। -For instance, we have a `user` object with `name` and `surname`: +যেমন, আমাদের `user` অবজেক্টে প্রপার্টিসমূহ হল `name` এবং `surname`: ```js let user = { @@ -34,7 +38,7 @@ let user = { }; ``` -Now we want to add a `fullName` property, that should be `"John Smith"`. Of course, we don't want to copy-paste existing information, so we can implement it as an accessor: +এখন আমরা একটি একটি নতুন প্রপার্টি `fullName` সংযোজন করতে চাচ্ছি, যেটির মান হবে `"John Smith"`। অবশ্যই আমরা নামগুলো কপি-পেস্টের মাধ্যমে লিখতে চাই না, সুতরাং আমরা এর জন্য অ্যাক্সেসর ব্যবহার করতে পারি: ```js run let user = { @@ -53,9 +57,9 @@ alert(user.fullName); // John Smith */!* ``` -From the outside, an accessor property looks like a regular one. That's the idea of accessor properties. We don't *call* `user.fullName` as a function, we *read* it normally: the getter runs behind the scenes. +সাধারণত অ্যাক্সেসর প্রপার্টি সমূহ অবজেক্ট নিয়ে কাজ করার সময় সাধারণ প্রপার্টির মত কাজ করে। এটিই অ্যাক্সেসর প্রপার্টির আইডিয়া। আমরা `user.fullName` কে ফাংশন হিসেবে *call* করব না, কিন্তু এদের আমরা সাধারণ প্রপার্টির মত *read* করতে পারব: এখানে getters আমাদের অন্তরালে কাজ করবে। -As of now, `fullName` has only a getter. If we attempt to assign `user.fullName=`, there will be an error: +এ পর্যন্ত, আমরা `fullName` এর জন্য getter ব্যবহার করেছি। এখন আমরা যদি এর মধ্যে মান অ্যাসাইন করতে চাই অর্থাৎ `user.fullName=`, তাহলে একটি এরর হবে: ```js run let user = { @@ -65,11 +69,11 @@ let user = { }; *!* -user.fullName = "Test"; // Error (property has only a getter) +user.fullName = "Test"; // Error (কেননা প্রপার্টির জন্য শুধুমাত্র getter সংজ্ঞায়িত করা হয়েছে) */!* ``` -Let's fix it by adding a setter for `user.fullName`: +চলুন, `user.fullName` এর জন্য একটি setter ফাংশন লিখি: ```js run let user = { @@ -87,29 +91,29 @@ let user = { */!* }; -// set fullName is executed with the given value. +// এখন fullName আমাদের নতুন মানের জন্য কাজ করবে user.fullName = "Alice Cooper"; alert(user.name); // Alice alert(user.surname); // Cooper ``` -As the result, we have a "virtual" property `fullName`. It is readable and writable. +getter এবং setter এর মাধ্যমে আমরা একটি "virtual" প্রপার্টি `fullName` ডিক্লেয়ার করেছি। যেটি পঠনযোগ্য এবং লিখনযোগ্য (readable এবং writable)। -## Accessor descriptors +## অ্যাক্সেসর ডেস্ক্রিপ্টর -Descriptors for accessor properties are different from those for data properties. +অ্যাক্সেসর প্রপার্টির জন্য ডেস্ক্রিপ্টর প্রপার্টি সমূহ ডাটা প্রপার্টি থেকে ভিন্ন। -For accessor properties, there is no `value` or `writable`, but instead there are `get` and `set` functions. +অ্যাক্সেসর প্রপার্টির জন্য, কোন `value` বা `writable` ফ্ল্যাগ থাকে না, তার পরিবর্তে `get` এবং `set` ফাংশন আছে। -That is, an accessor descriptor may have: +অ্যাক্সেসর ডেস্ক্রিপ্টর এ থাকে: -- **`get`** -- a function without arguments, that works when a property is read, -- **`set`** -- a function with one argument, that is called when the property is set, -- **`enumerable`** -- same as for data properties, -- **`configurable`** -- same as for data properties. +- **`get`** -- একটি ফাংশন যার কোন আর্গুমেন্ট থাকে না, এটি প্রপার্টির মান পড়তে ব্যবহার হয়, +- **`set`** -- একটি ফাংশন যার একটি আর্গুমেন্ট থাকে, যখন কোন মান অ্যাসাইন করতে চাই তখন কল হবে, +- **`enumerable`** -- ডাটা প্রপার্টির মত কাজ করে, +- **`configurable`** -- ডাটা প্রপার্টির মত কাজ করে, -For instance, to create an accessor `fullName` with `defineProperty`, we can pass a descriptor with `get` and `set`: +যেমন, নিচের কোডে আমরা `defineProperty` এর মাধ্যমে `fullName` ডিফাইন করব, এর জন্য আমরা `get` এবং `set` ফাংশন ব্যবহার করি: ```js run let user = { @@ -134,9 +138,9 @@ alert(user.fullName); // John Smith for(let key in user) alert(key); // name, surname ``` -Please note that a property can be either an accessor (has `get/set` methods) or a data property (has a `value`), not both. +দয়া করে মনে রাখুন কোন প্রপার্টি হয় অ্যাক্সেসর হবে (অর্থাৎ `get/set` মেথড) থাকবে অন্যথায় ডাটা প্রপার্টি হবে (`value` থাকে), একই সাথে অ্যাক্সেসর এবং ডাটা প্রপার্টি হবে না। -If we try to supply both `get` and `value` in the same descriptor, there will be an error: +যদি আমরা এভাবে করতে চাই অর্থাৎ `get` এবং `value` উভয়ই যদি ডেস্ক্রিপ্টর এ ডিফাইন করি তাহলে এরর হবে: ```js run *!* @@ -151,11 +155,11 @@ Object.defineProperty({}, 'prop', { }); ``` -## Smarter getters/setters +## স্মার্ট getters/setters -Getters/setters can be used as wrappers over "real" property values to gain more control over operations with them. +Getters/setters দ্বারা আমরা আমাদের প্রপার্টি সমূহকে আরো বিভিন্ন ভাবে কন্ট্রোল করতে পারি। -For instance, if we want to forbid too short names for `user`, we can have a setter `name` and keep the value in a separate property `_name`: +যেমন, যদি আমরা আমাদের `user` এর নাম সংক্ষিপ্ত হওয়া এড়াতে চাই, এক্ষেত্রে আমরা setter দ্বারা `name` কে আলাদা করে `_name` প্রপার্টিতে সেট করতে পারি এবং সংক্ষিপ্ত নামের জন্য একটি অ্যালার্ট দেখাতে পারি: ```js run let user = { @@ -175,19 +179,19 @@ let user = { user.name = "Pete"; alert(user.name); // Pete -user.name = ""; // Name is too short... +user.name = ""; // সংক্ষিপ্ত নাম... ``` -So, the name is stored in `_name` property, and the access is done via getter and setter. +সুতরাং আমাদের মূল নামটি সংরক্ষন হবে `_name` প্রপার্টি এর মধ্যে তবে আমরা `name` কে পড়ব বা অ্যাসাইন করব getter এবং setter এর দ্বারা। -Technically, external code is able to access the name directly by using `user._name`. But there is a widely known convention that properties starting with an underscore `"_"` are internal and should not be touched from outside the object. +আমরা জানি, যেসব প্রপার্টির নাম আন্ডারস্কোর `"_"` দিয়ে শুরু হয় তারা হল ইন্টারনাল প্রপার্টি এদের বাহির হতে অ্যাক্সেস করা উচিত নই, যদিও টেকনিক্যালি `user._name` এর মান বাহির হতে পাওয়া সম্ভব। -## Using for compatibility +## কোড এর সামঞ্জস্য -One of the great uses of accessors is that they allow to take control over a "regular" data property at any moment by replacing it with a getter and a setter and tweak its behavior. +অ্যাক্সেসরের অন্যতম দারুন একটি ব্যবহার হল এর মাধ্যমে আমরা আমাদের প্রপার্টি সমূহের ডাটা পরিবর্তন হলেও এর বিহেভিয়ার অপরিবর্তনীয় রাখতে পারি। -Imagine we started implementing user objects using data properties `name` and `age`: +মনে করুন আমাদের একটি `User` অবজেক্ট আছে যাদের প্রপার্টি হল `name` এবং `age`: ```js function User(name, age) { @@ -200,7 +204,7 @@ let john = new User("John", 25); alert( john.age ); // 25 ``` -...But sooner or later, things may change. Instead of `age` we may decide to store `birthday`, because it's more precise and convenient: +...তবে পরবর্তীতে আমরা আমাদের কোডকে পরিবর্তন করলাম। `age` এর পরিবর্তে আমরা এখন `birthday` সংরক্ষণ করব, কেননা এটি বেশি সুস্পষ্ট এবং সুবিধাজনক: ```js function User(name, birthday) { @@ -211,13 +215,13 @@ function User(name, birthday) { let john = new User("John", new Date(1992, 6, 1)); ``` -Now what to do with the old code that still uses `age` property? +এখন আমাদের যেসব কোডে `age` প্রপার্টি ব্যবহার করা হয়েছে তাদের কি হবে? -We can try to find all such places and fix them, but that takes time and can be hard to do if that code is used by many other people. And besides, `age` is a nice thing to have in `user`, right? +আমরা চাইলে সকল age প্রপার্টিকে খুঁজে পরিবর্তন করতে পারি, তবে যদি আমাদের অনেক পরিবর্তন করা লাগে তাহলে তা হবে কষ্টসাধ্য। এর পাশাপাশি, আমাদের কিছু কিছু জায়গায় `age` দেখানো লাগতে পারে, তাই না? -Let's keep it. +আমরা চাই যেন এটি সঠিকভাবে কাজ করে। -Adding a getter for `age` solves the problem: +এজন্য `age` এর জন্য একটি getter ব্যবহারের মাধ্যমে সমস্যাটির সমাধান করতে পারি: ```js run no-beautify function User(name, birthday) { @@ -225,7 +229,7 @@ function User(name, birthday) { this.birthday = birthday; *!* - // age is calculated from the current date and birthday + // এখানে আমরা বর্তমান age ক্যাল্কুলেশন করছি Object.defineProperty(this, "age", { get() { let todayYear = new Date().getFullYear(); @@ -237,8 +241,8 @@ function User(name, birthday) { let john = new User("John", new Date(1992, 6, 1)); -alert( john.birthday ); // birthday is available -alert( john.age ); // ...as well as the age +alert( john.birthday ); // birthday কে অ্যাক্সেস করতে পারছি +alert( john.age ); // ..এবং age ও কাজ করছে ``` -Now the old code works too and we've got a nice additional property. +এখন আমরা দেখছি আমাদের পুরনো স্ট্রাকচারটাকে কিভাবে নতুন স্ট্রাকচারের সাথে কাজ করাতে পারছি। \ No newline at end of file diff --git a/1-js/08-prototypes/01-prototype-inheritance/article.md b/1-js/08-prototypes/01-prototype-inheritance/article.md index ef6c7ffeb..71854dcaf 100644 --- a/1-js/08-prototypes/01-prototype-inheritance/article.md +++ b/1-js/08-prototypes/01-prototype-inheritance/article.md @@ -1,22 +1,26 @@ -# Prototypal inheritance +# প্রটোটাইপল ইনহেরিটেন্স -In programming, we often want to take something and extend it. +প্রোগ্রামিংয়ের এ প্রায় সময় আমরা রিইউজেবল কোডবেস তৈরির জন্য অন্য কোডকে এক্সটেন্ড করি। -For instance, we have a `user` object with its properties and methods, and want to make `admin` and `guest` as slightly modified variants of it. We'd like to reuse what we have in `user`, not copy/reimplement its methods, just build a new object on top of it. +যেমন, আমাদের একটি প্রপার্টি এবং মেথড সম্বলিত `user` অবজেক্ট আছে, এবং আমরা এর উপর ভিত্তি করে আলাদা কিছু বৈশিষ্ট্যের জন্য `admin` এবং `guest` তৈরি করতে চাই। এজন্য নতুন করে `user` এর কোডকে পুনরায় `admin` এবং `guest` এর মধ্যে কপি-পেস্ট করা কোন ভাল বুদ্ধি না, তার চেয়ে যদি আমরা কোন ভাবে `user` কে এক্সটেন্ড করতে পারি সেক্ষেত্রে একটি রিইউজিবল কোড বেস তৈরি করতে পারব। -*Prototypal inheritance* is a language feature that helps in that. +এক্ষেত্রে আমাদের জাভাস্ক্রিপ্টের *Prototypal inheritance* ফিচারটি সম্পর্কে জানা লাগবে। ## [[Prototype]] -In JavaScript, objects have a special hidden property `[[Prototype]]` (as named in the specification), that is either `null` or references another object. That object is called "a prototype": +জাভাস্ক্রিপ্টে অবজেক্টে একটি হিডেন প্রপার্টি আছে `[[Prototype]]` (স্পেসিকেশনে এটিকে এ নাম দেয়া হয়েছে), যেটি `null` অথবা কোন অবজেক্টকে রেফারেন্স করে। এ অবজেক্টকে বলা হয় প্রটোটাইপ: ![prototype](object-prototype-empty.svg) +<<<<<<< HEAD +যখন আমরা কোন `object` এর প্রপার্টি পড়তে চাই, এবং যদি এটি ঐ `object` এ অনুপস্থিত থাকে, তখন জাভাস্ক্রিপ্ট স্বয়ংক্রিয়ভাবে প্রটোটাইপে অনুসন্ধান করে। একে বলা হয় "প্রটোটাইপল ইনহেরিটেন্স"। আমরা বিভিন্ন উদাহরণের সাহায্যে এই ব্যাপারটি শিখব, এছাড়াও আরো অনেক ল্যাংগুয়েজে এই ধরণের ফিচার সাপোর্ট করে। +======= When we read a property from `object`, and it's missing, JavaScript automatically takes it from the prototype. In programming, this is called "prototypal inheritance". And soon we'll study many examples of such inheritance, as well as cooler language features built upon it. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -The property `[[Prototype]]` is internal and hidden, but there are many ways to set it. +`[[Prototype]]` এটি অবজেক্টের ইন্টারনাল এবং হিডেন প্রপার্টি, তবে বিভিন্ন ভাবে আমরা একে অ্যাক্সেস করতে পারি। -One of them is to use the special name `__proto__`, like this: +তারমধ্যে একটি বিশেষ প্রপার্টি হল `__proto__`, এর সাহায্যে আমরা নিম্নোক্ত উপায়ে প্রটোটাইপ রেফারেন্স হিসেবে অন্য অবজেক্টকে সেট করতে পারি: ```js run let animal = { @@ -31,9 +35,15 @@ rabbit.__proto__ = animal; // sets rabbit.[[Prototype]] = animal */!* ``` +<<<<<<< HEAD +এখন আমরা যদি `rabbit` এর কোন প্রপার্টি পড়তে চাই, এবং এটি যদি এর মধ্যে অনুপস্থিত থাকে, তাহলে জাভাস্ক্রিপ্ট স্বয়ংক্রিয়ভাবে `animal` এ একে অনুসন্ধান করে। + +যেমন: +======= Now if we read a property from `rabbit`, and it's missing, JavaScript will automatically take it from `animal`. For instance: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js let animal = { @@ -47,24 +57,28 @@ let rabbit = { rabbit.__proto__ = animal; // (*) */!* -// we can find both properties in rabbit now: +// এখন আমরা rabbit এর মধ্যে দুইটি প্রপার্টিই অ্যাক্সেস করতে পারব: *!* alert( rabbit.eats ); // true (**) */!* alert( rabbit.jumps ); // true ``` +<<<<<<< HEAD +এখানে `(*)` চিহ্নিত লাইনে `animal` কে `rabbit` এর প্রটোটাইপ হিসেবে সেট করা হয়েছে। +======= Here the line `(*)` sets `animal` to be the prototype of `rabbit`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Then, when `alert` tries to read property `rabbit.eats` `(**)`, it's not in `rabbit`, so JavaScript follows the `[[Prototype]]` reference and finds it in `animal` (look from the bottom up): +এবং, যখন আমরা `alert` এ `rabbit.eats` কে পড়তে চাই `(**)` চিহ্নিত লাইনটি দেখুন, এটি দেখে `rabbit` এর মধ্যে এটি এটি অনুপস্থিত, তখন জাভাস্ক্রিপ্ট `[[Prototype]]` রেফারেন্সের নিয়ম অনুসারে `animal` এর মধ্যে ঐ প্রপার্টি খুঁজে (নিচের ছবিটি দেখুন): ![](proto-animal-rabbit.svg) -Here we can say that "`animal` is the prototype of `rabbit`" or "`rabbit` prototypically inherits from `animal`". +এখানে আমরা বলতে পারি "`animal` হল `rabbit` এর প্রটোটাইপ" অথবা "`animal` থেকে `rabbit` প্রটোটাইপল ইনহেরিট হয়েছে"। -So if `animal` has a lot of useful properties and methods, then they become automatically available in `rabbit`. Such properties are called "inherited". +সুতরাং যদি `animal` এ একাধিক ব্যবহারযোগ্য প্রপার্টি এবং মেথড থাকে, তাহলে তাদের স্বয়ংক্রিয়ভাবে `rabbit` এর মেথড ও প্রপার্টি হিসেবে অ্যাক্সেস করা যাবে। এদের ইনহেরিটেড প্রপার্টি বলে। -If we have a method in `animal`, it can be called on `rabbit`: +সুতরাং যদি `animal` এ কোন মেথড থাকে তাহলে এটিকে `rabbit` থেকেও কল করা যাবে: ```js run let animal = { @@ -81,17 +95,17 @@ let rabbit = { __proto__: animal }; -// walk is taken from the prototype +// walk কে প্রটোটাইপ হতে সংগ্রহ করা হয়েছে *!* rabbit.walk(); // Animal walk */!* ``` -The method is automatically taken from the prototype, like this: +মেথডটি স্বয়ংক্রিয়ভাবে প্রটোটাইপ হতে অ্যাক্সেস হবে, নিচের ছবিটি দেখুন: ![](proto-animal-rabbit-walk.svg) -The prototype chain can be longer: +আমরা চাইলে প্রটোটাইপ চেইনও তৈরি করতে পারি: ```js run let animal = { @@ -115,22 +129,29 @@ let longEar = { */!* }; -// walk is taken from the prototype chain +// এখানে walk প্রটোটাইপ চেইন হিসেবে animal হতে অ্যাক্সেস হবে longEar.walk(); // Animal walk -alert(longEar.jumps); // true (from rabbit) +alert(longEar.jumps); // true (rabbit হতে অ্যাক্সেস করে) ``` ![](proto-animal-rabbit-chain.svg) +<<<<<<< HEAD +এখন আমরা যদি `longEar` হতে কোন কিছু পড়তে চাই এবং এটি যদি তার মধ্যে অনুপস্থিত থাকে, জাভাস্ক্রিপ্ট প্রথমে `rabbit` এর মধ্যে খুঁজবে এবং তারপর `animal` এ খুঁজবে। +======= Now if we read something from `longEar`, and it's missing, JavaScript will look for it in `rabbit`, and then in `animal`. There are only two limitations: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -1. The references can't go in circles. JavaScript will throw an error if we try to assign `__proto__` in a circle. -2. The value of `__proto__` can be either an object or `null`. Other types are ignored. +তবে এর দুটি সীমাবদ্ধতা রয়েছে: -Also it may be obvious, but still: there can be only one `[[Prototype]]`. An object may not inherit from two others. +1. আমরা রেফারেন্সকে চক্রকারে সেট করতে পারব না। এক্ষেত্রে চক্রকারে `__proto__` এ কোন অবজেক্ট অ্যাসাইন করতে চাইলে জাভাস্ক্রিপ্ট একটি এরর দিবে। +2. `__proto__` এর মান কেবলমাত্র `null` এবং অবজেক্ট হতে পারবে, অন্য টাইপগুলো ইগনোর হবে। +<<<<<<< HEAD +যদিও এটি সুস্পষ্ট, কিন্তু এখানে শুধুমাত্র একটি `[[Prototype]]` হতে পারে। একটি অবজেক্ট একই সাথে দুটি অবজেক্টকে ইনহেরিট করতে পারে না। +======= ```smart header="`__proto__` is a historical getter/setter for `[[Prototype]]`" It's a common mistake of novice developers not to know the difference between these two. @@ -144,18 +165,34 @@ As the `__proto__` notation is a bit more intuitively obvious, we use it in the ``` ## Writing doesn't use prototype +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 + + +```smart header="`__proto__` is a historical getter/setter for `[[Prototype]]`" +সাধারণত নতুন ডেভলাপাররা এই দুটির মধ্যে পার্থক্য না জেনে রাখায় প্রায় এই সাধারন ভুলটি করে। + +দয়া করে মনে রাখবে `__proto__` ইন্টারনাল প্রপার্টি `[[Prototype]]` এর মত না। এটি `[[Prototype]]` এর একটি getter/setter। পরবর্তী অধ্যায়গুলোতে আমরা বিস্তারিত জানব, আপাতত এটি মনে রাখুন, যেহেতু এখনো আমরা জাভাস্ক্রিপ্টের ল্যাংগুয়েজ নিয়ে পড়াশোনা করছি। -The prototype is only used for reading properties. +তবে `__proto__` প্রপার্টি হল পুরনো জাভাস্ক্রিপ্টের একটি ফিচার। তবে মডার্ন জাভাস্ক্রিপ্টে আমাদের কিছু মেথড আছে `Object.getPrototypeOf/Object.setPrototypeOf` যার মাধ্যমে আমরা এই ধরণের কাজ করতে পারি। -Write/delete operations work directly with the object. +স্পেসিফিকেশন অনুযায়ী, `__proto__` শুধুমাত্র ব্রাউজারের জন্য সাপোর্ট করে। তবে অন্যান্য এনভায়রনমেন্টের জন্যও `__proto__` সাপোর্ট করে, সুতরাং আমরা এদের নিশ্চিন্তে ব্যবহার করতে পারব। -In the example below, we assign its own `walk` method to `rabbit`: +যেহেতু `__proto__` নোটেশন কিছুটা সুস্পষ্ট, সামনের উদাহরণগুলোতেও আমরা এটি ব্যবহার করব। +``` + +## প্রটোটাইপ অ্যাসাইনিং এবং ডিলিটিং সাপোর্ট করে না + +প্রটোটাইপ শুধুমাত্র কোন প্রপার্টি বা মেথড পড়তে ব্যবহৃত হয়। + +অ্যাসাইন/ডিলিট অপারেশনগুলো সরাসরি অবজেক্টের সাথে কাজ করে। + +নিচের উদাহরণে দেখুন আমরা `rabbit` এর মধ্যে `walk` মেথড লিখেছি: ```js run let animal = { eats: true, walk() { - /* this method won't be used by rabbit */ + /* এই মেথডটি rabbit এর জন্য ব্যবহার হবে না */ } }; @@ -172,13 +209,13 @@ rabbit.walk = function() { rabbit.walk(); // Rabbit! Bounce-bounce! ``` -From now on, `rabbit.walk()` call finds the method immediately in the object and executes it, without using the prototype: +এখানে, `rabbit.walk()` সরাসরি `rabbit` অবজেক্টের মেথডকে কল করবে এবং একে এক্সিকিউট করবে, এখানে প্রটোটাইপ ব্যবহার হবে না: ![](proto-animal-rabbit-walk-2.svg) -Accessor properties are an exception, as assignment is handled by a setter function. So writing to such a property is actually the same as calling a function. +তবে অ্যাক্সেসর প্রপার্টি সমূহ কিছুটা ব্যতিক্রম, এক্ষেত্রে ভ্যালু অ্যাসাইন করতে গেলে তা হ্যান্ডেল হয় `setter` ফাংশনের মাধ্যমে। এই ধরণের প্রপার্টি গুলো ফাংশনের মত কল হয়। -For that reason `admin.fullName` works correctly in the code below: +একারণে `admin.fullName` নিচের কোডের জন্য সঠিকভাবে কাজ করবে: ```js run let user = { @@ -201,33 +238,38 @@ let admin = { alert(admin.fullName); // John Smith (*) -// setter triggers! +// setter কল হবে! admin.fullName = "Alice Cooper"; // (**) +<<<<<<< HEAD +alert(admin.fullName); // Alice Cooper, পরিবর্তিত admin এর নাম +alert(user.fullName); // John Smith, অপরিবর্তিত কেননা user এর স্টেট protected +======= alert(admin.fullName); // Alice Cooper, state of admin modified alert(user.fullName); // John Smith, state of user protected +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ``` -Here in the line `(*)` the property `admin.fullName` has a getter in the prototype `user`, so it is called. And in the line `(**)` the property has a setter in the prototype, so it is called. +এখানে `(*)` লাইনে `admin.fullName` হল `user` প্রটোটাইপ এর একটি getter প্রপার্টি, সুতরাং এটি কল হবে। এবং এই `(**)` লাইনে এটি প্রটোটাইপের একটি সেটার প্রপার্টি, তাই এটি কল হবে। -## The value of "this" +## "this" এর মান -An interesting question may arise in the example above: what's the value of `this` inside `set fullName(value)`? Where are the properties `this.name` and `this.surname` written: into `user` or `admin`? +উপরের উদাহরণটি দেখে আমাদের মনে একটি প্রশ্নের উদয় হয়: `set fullName(value)` এর মধ্যে `this` এর মান কি হবে? এবং `this.name` ও `this.surname` কোন অবজেক্টে `user` নাকি `admin` লিখা আছে? -The answer is simple: `this` is not affected by prototypes at all. +সোজাভাবে বলতে গেলে: `this` এর মান প্রটোটাইপের জন্য প্রভাবিত হয় না। -**No matter where the method is found: in an object or its prototype. In a method call, `this` is always the object before the dot.** +**মেথডটি যেখানেই থাকুক না কেন অবজেক্টে বা প্রটোটাইপে `this` সর্বদা অবজেক্টকেই নির্দেশ করে** -So, the setter call `admin.fullName=` uses `admin` as `this`, not `user`. +সুতরাং, `admin.fullName=` এর জন্য `this` সর্বদা `admin` কে নির্দেশ করবে, `user` কে না। -That is actually a super-important thing, because we may have a big object with many methods, and have objects that inherit from it. And when the inheriting objects run the inherited methods, they will modify only their own states, not the state of the big object. +এটি একটি গুরুত্বপূর্ণ ব্যাপার, মনে করুন আমাদের একটি অনেক মেথড সম্বলিত কমপ্লেক্স অবজেক্ট আছে, এবং একে ইনহেরিট করে নতুন একটি অবজেক্ট তৈরি করা হল। এখন আমরা যদি আমাদের অবজেক্টটিকে কল করি, এবং তার বিভিন্ন মেথডের সাহায্যে বিভিন্ন স্টেট পরিবর্তন করি তাহলে এক্ষেত্রে অবজেক্টের স্টেট পরিবর্তন হবে, প্রটোটাইপ অবজেক্টের কোন পরিবর্তন হবে না। -For instance, here `animal` represents a "method storage", and `rabbit` makes use of it. +মনে করুন, এখানে `animal` এ একটি মেথড আছে, এবং `rabbit` এটিকে ব্যবহার করে। -The call `rabbit.sleep()` sets `this.isSleeping` on the `rabbit` object: +`rabbit` অবজেক্টের মাধ্যমে `rabbit.sleep()` কে কল করে একটি প্রপার্টি সেট করছি `this.isSleeping`: ```js run -// animal has methods +// মেথডগুলো animal এ লিখা হয়েছে let animal = { walk() { if (!this.isSleeping) { @@ -244,26 +286,26 @@ let rabbit = { __proto__: animal }; -// modifies rabbit.isSleeping +// এখান থেকে একে সেট করা হল rabbit.isSleeping rabbit.sleep(); alert(rabbit.isSleeping); // true -alert(animal.isSleeping); // undefined (no such property in the prototype) +alert(animal.isSleeping); // undefined (প্রটোটাইপে এই ধরণের কোন অবজেক্ট পাবে না) ``` -The resulting picture: +ফলাফলটি দেখতে এমন: ![](proto-animal-rabbit-walk-3.svg) -If we had other objects, like `bird`, `snake`, etc., inheriting from `animal`, they would also gain access to methods of `animal`. But `this` in each method call would be the corresponding object, evaluated at the call-time (before dot), not `animal`. So when we write data into `this`, it is stored into these objects. +এখন যদি আমাদের অন্য অবজেক্ট থাকে যেমন `bird`, `snake`, ইত্যাদি, যা `animal` থেকে ইনহেরিট হয়, তারাও `animal` এর মেথডসমূহ অ্যাক্সেস করতে পারবে। কিন্তু `this` রেফার করবে আমাদের ঐ অবজেক্টকেই এক্ষেত্রে `animal` এর স্টেট অপরিবর্তিত থাকবে। সুতরাং আমরা যখন প্রটোটাইপ অবজেক্টে `this` কে কল করি, এটি ঐ অবজেক্টের স্টেটকে নির্দেশ করবে। -As a result, methods are shared, but the object state is not. +ফলশ্রুতিতে, মেথডগুলো পুনরায় ব্যবহারযোগ্য, কিন্তু প্রটোটাইপ অবজেক্টের স্টেট পরিবর্তন হয় না। -## for..in loop +## for..in লুপ -The `for..in` loop iterates over inherited properties too. +`for..in` লুপ ইটারেটের সময় ইনহেরিটেড প্রপার্টিকেও ইটারেট করে। -For instance: +যেমন: ```js run let animal = { @@ -276,19 +318,23 @@ let rabbit = { }; *!* -// Object.keys only returns own keys +// তবে Object.keys শুধুমাত্র object এর নিজস্ব কী রিটার্ন করে alert(Object.keys(rabbit)); // jumps */!* *!* -// for..in loops over both own and inherited keys +// for..in লুপ নিজস্ব এবং ইনহেরিটেড key কে দেখায় for(let prop in rabbit) alert(prop); // jumps, then eats */!* ``` +<<<<<<< HEAD +এছাড়াও যদি আমরা চাই ইনহেরিটেড প্রপার্টিকে বাদ দিতে, তার জন্য একটি বিল্ট-ইন মেথড আছে [obj.hasOwnProperty(key)](mdn:js/Object/hasOwnProperty): এটি `obj` এর নিজস্ব প্রপার্টির `key` এর জন্য `true` রিটার্ন করে। +======= If that's not what we want, and we'd like to exclude inherited properties, there's a built-in method [obj.hasOwnProperty(key)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty): it returns `true` if `obj` has its own (not inherited) property named `key`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -So we can filter out inherited properties (or do something else with them): +সুতরাং আমরা নিম্নোক্তভাবে কোন অবজেক্টকে ফিল্টার করতে পারি: ```js run let animal = { @@ -311,28 +357,28 @@ for(let prop in rabbit) { } ``` -Here we have the following inheritance chain: `rabbit` inherits from `animal`, that inherits from `Object.prototype` (because `animal` is a literal object `{...}`, so it's by default), and then `null` above it: +এখানে ইনহেরিটেন্সটি এভাবে সম্পন্ন হয়: `rabbit` ইনহেরিট হয় `animal` থেকে, এবং এটি ইনহেরিট হয় `Object.prototype` থেকে (কেননা `animal` হল একটি লিটারেল অবজেক্ট `{...}`, সুতরাং এটি ডিফল্ট), এবং এটির প্রটোটাইপ হবে `null`: ![](rabbit-animal-object.svg) -Note, there's one funny thing. Where is the method `rabbit.hasOwnProperty` coming from? We did not define it. Looking at the chain we can see that the method is provided by `Object.prototype.hasOwnProperty`. In other words, it's inherited. +নোট: আমাদের মনে একটি মজার প্রশ্ন আসতে পারে `rabbit.hasOwnProperty` কোথা থেকে আসল? যেহেতু এটি আমরা ডিফাইন করিনি। উপরের ছবিটি দেখলে দেখবেন `hasOwnProperty` আসলে `Object.prototype` হতে এসেছে। সোজাভাবে বলতে গেলে এটি ইনহেরিটেড মেথড। -...But why does `hasOwnProperty` not appear in the `for..in` loop like `eats` and `jumps` do, if `for..in` lists inherited properties? +...তাহলে কেন `hasOwnProperty` মেথডটি `for..in` লুপে `eats` এবং `jumps` এর মত দেখায়নি? কেননা আমরা তো জেনেছি `for..in` লুপে ইনহেরিটেড প্রপার্টিসমূহও অ্যাক্সেস হয়। -The answer is simple: it's not enumerable. Just like all other properties of `Object.prototype`, it has `enumerable:false` flag. And `for..in` only lists enumerable properties. That's why it and the rest of the `Object.prototype` properties are not listed. +এর কারণ সহজ: এটি একটি `enumerable` প্রপার্টি। `Object.prototype` এর অন্যান্য প্রপার্টির মত, এটির জন্য `enumerable:false` ফ্ল্যাগ ব্যবহার করা হয়েছে। এবং `for..in` শুধুমাত্র `enumerable` প্রপার্টিকে অ্যাক্সেস করতে পারে। একারণে `Object.prototype` এর অন্যান্য প্রপার্টিসমূহও অ্যাক্সেসবল না। -```smart header="Almost all other key/value-getting methods ignore inherited properties" -Almost all other key/value-getting methods, such as `Object.keys`, `Object.values` and so on ignore inherited properties. +```smart header="প্রায় সকল অবজেক্ট সম্পর্কিত মেথড সমূহ ইনহেরিটেড প্রপার্টিকে উপেক্ষা করে" +প্রায় সকল অবজেক্ট সম্পর্কিত মেথড সমূহ ইনহেরিটেড প্রপার্টিকে উপেক্ষা করে, যেমন `Object.keys`, `Object.values` এর ইনহেরিটেড প্রপার্টিকে উপেক্ষা করে। -They only operate on the object itself. Properties from the prototype are *not* taken into account. +এইগুলো শুধুমাত্র অবজেক্টের নিজের প্রপার্টি এবং মেথড নিয়ে কাজ করে। প্রটোটাইপের প্রপার্টিসমূহ এই মেথডসমূহের জন্য অগ্রাহ্য। ``` -## Summary +## সারাংশ -- In JavaScript, all objects have a hidden `[[Prototype]]` property that's either another object or `null`. -- We can use `obj.__proto__` to access it (a historical getter/setter, there are other ways, to be covered soon). -- The object referenced by `[[Prototype]]` is called a "prototype". -- If we want to read a property of `obj` or call a method, and it doesn't exist, then JavaScript tries to find it in the prototype. -- Write/delete operations act directly on the object, they don't use the prototype (assuming it's a data property, not a setter). -- If we call `obj.method()`, and the `method` is taken from the prototype, `this` still references `obj`. So methods always work with the current object even if they are inherited. -- The `for..in` loop iterates over both its own and its inherited properties. All other key/value-getting methods only operate on the object itself. +- জাভাস্ক্রিপ্টের প্রতিটি অবজেক্টে একটি লুকায়িত প্রপার্টি `[[Prototype]]` আছে যেটির মান হতে পারে একটি অবজেক্ট অথবা `null`। +- আমরা একে `obj.__proto__` এর মাধ্যমে অ্যাক্সেস করতে পারি(পুরনো জাভস্ক্রিপ্ট অনুযায়ী getter/setter ব্যবহার করতে পারি, তবে আরো পদ্ধতি আছে, যা আমরা সামনে দেখব)। +- `[[Prototype]]` দ্বারা রেফারেন্সকৃত অবজেক্টটিকে বলা হয় "prototype"। +- যখন আমরা কোন `obj` এর কোন মেথড বা প্রপার্টিকে অ্যাক্সেস করতে চাই, যদি এটি ঐ `obj` এ অনুপস্থিত থাকে, তাহলে তার প্রটোটাইপে অনুসন্ধান করে। +- অ্যাসাইন/ডিলিট অপারেশন সরাসরি মূল অবজেক্টের মধ্যে সংগঠিত হয়, এরা প্রটোটাইপ এর স্টেট ব্যবহার করে না (এদের setter এর বদলে ডাটা প্রপার্টি হিসেবে ধরে নিন)। +- যদি আমরা `obj.method()` কে কল করি, এবং এটি প্রটোটাইপের `method` কে অ্যাক্সেস করে, তাহলে `this` রেফার করে `obj` এর স্টেটকে। সুতরাং মেথড সমূহ যদিও ইনহেরিট হয় এরা অবজেক্টের স্টেটের সাথে কাজ করে। +- `for..in` লুপ নিজস্ব এবং ইনহেরিটেড উভয়ই প্রপার্টিকে ইটারেট করে। এছাড়া `Object` সম্পর্কিত অন্যান্য মেথড যেমন `Object.keys`, `Object.values` তে প্রটোটাইপের প্রপার্টি অ্যাক্সেস হয় না। \ No newline at end of file diff --git a/1-js/08-prototypes/03-native-prototypes/proto-constructor-animal-rabbit.svg b/1-js/08-prototypes/03-native-prototypes/proto-constructor-animal-rabbit.svg new file mode 100644 index 000000000..ede4e1227 --- /dev/null +++ b/1-js/08-prototypes/03-native-prototypes/proto-constructor-animal-rabbit.svg @@ -0,0 +1 @@ +eats: truename: "White Rabbit"animalRabbitrabbit[[Prototype]]prototype \ No newline at end of file diff --git a/1-js/11-async/02-promise-basics/promise-reject-1.svg b/1-js/11-async/02-promise-basics/promise-reject-1.svg index 777e47739..1ed00b191 100644 --- a/1-js/11-async/02-promise-basics/promise-reject-1.svg +++ b/1-js/11-async/02-promise-basics/promise-reject-1.svg @@ -1 +1 @@ -new Promise(executor)state: "pending" result: undefinedreject(error)state: "rejected" result: error \ No newline at end of file +new Promise(executor)state: "pending" result: undefinedreject(error)state: "rejected" result: error \ No newline at end of file diff --git a/1-js/11-async/02-promise-basics/promise-resolve-1.svg b/1-js/11-async/02-promise-basics/promise-resolve-1.svg index f1f34eaee..bb0b918db 100644 --- a/1-js/11-async/02-promise-basics/promise-resolve-1.svg +++ b/1-js/11-async/02-promise-basics/promise-resolve-1.svg @@ -1 +1 @@ -new Promise(executor)state: "pending" result: undefinedresolve("done")state: "fulfilled" result: "done" \ No newline at end of file +new Promise(executor)state: "pending" result: undefinedresolve("done")state: "fulfilled" result: "done" \ No newline at end of file diff --git a/1-js/12-generators-iterators/1-generators/01-pseudo-random-generator/solution.md b/1-js/12-generators-iterators/1-generators/01-pseudo-random-generator/solution.md index 4355d0cfc..8564a96bf 100644 --- a/1-js/12-generators-iterators/1-generators/01-pseudo-random-generator/solution.md +++ b/1-js/12-generators-iterators/1-generators/01-pseudo-random-generator/solution.md @@ -16,7 +16,7 @@ alert(generator.next().value); // 282475249 alert(generator.next().value); // 1622650073 ``` -Please note, the same can be done with a regular function, like this: +দয়া করে মনে রাখুন, আমরা নিম্নোক্ত রেগুলার ফাংশনের মাধ্যমেও একই কাজ করতে পারিঃ ```js run function pseudoRandom(seed) { @@ -35,4 +35,4 @@ alert(generator()); // 282475249 alert(generator()); // 1622650073 ``` -That also works. But then we lose ability to iterate with `for..of` and to use generator composition, that may be useful elsewhere. +এটিও কাজ করে। কিন্তু এ জন্য জেনারেটর কম্পোজিশনে আমরা `for..of` এর মাধ্যমে ইটারেট করতে পারব না, এটি অন্য কোথাও ব্যবহারযোগ্য হতে পারে। diff --git a/1-js/12-generators-iterators/1-generators/01-pseudo-random-generator/task.md b/1-js/12-generators-iterators/1-generators/01-pseudo-random-generator/task.md index e7c251ad3..85e45c8d8 100644 --- a/1-js/12-generators-iterators/1-generators/01-pseudo-random-generator/task.md +++ b/1-js/12-generators-iterators/1-generators/01-pseudo-random-generator/task.md @@ -1,29 +1,30 @@ -# Pseudo-random generator +# সুডো-র‍্যান্ডম জেনারেটর -There are many areas where we need random data. +এমন অনেক ক্ষেত্র আছে যেখানে আমাদের র‍্যান্ডম ডাটা জেনারেট করা লাগে। -One of them is testing. We may need random data: text, numbers, etc. to test things out well. +এর মধ্যে একটি হল টেস্টিং। টেস্ট করার জন্য আমাদের প্রয়োজন হতে পারে র‍্যান্ডম ডাটাঃ টেক্সট, নাম্বার ইত্যাদি। -In JavaScript, we could use `Math.random()`. But if something goes wrong, we'd like to be able to repeat the test, using exactly the same data. +জাভাস্ক্রিপ্টে আমরা `Math.random()` ব্যবহার করতে পারি। কিন্ত যদি আমরা কোন ভুল করে ফেলি এবং টেস্ট আবার একই ডাটা দিয়ে রিপিট করতে চাই। -For that, so called "seeded pseudo-random generators" are used. They take a "seed", the first value, and then generate the next ones using a formula so that the same seed yields the same sequence, and hence the whole flow is easily reproducible. We only need to remember the seed to repeat it. +এজন্য তথাকথিত "সীডেড সুডো-র‍্যান্ডম জেনারেটর" ব্যবহার করা হয়। এইগুলো প্রথম ভ্যালুতে একটি "সীড" নেয়, এবং তারপর একটি সূত্র ব্যবহার করে পরবর্তীটি জেনারেট করে যাতে করে একই সীড একই ক্রমধারা অনুযায়ী তৈরি করতে পারে, আর এতে করে পুরো প্রবাহটি খুব সহজে পুনরায় গঠন করা যায়। এর জন্য আমাদের কেবল কোন সীডটি পুনরায় করতে হবে সেটা মনে রাখলেই চলবে। -An example of such formula, that generates somewhat uniformly distributed values: +এ জাতীয় সূত্রের একটি উদাহরণ, যেটা কিনা কিছুটা সমানভাবে ডিস্ট্রিবিউটেড মান জেনারেট করেঃ ``` next = previous * 16807 % 2147483647 ``` -If we use `1` as the seed, the values will be: +যদি আমরা সিড হিসেবে `1` ব্যবহার করি, মানগুলো হবেঃ 1. `16807` 2. `282475249` 3. `1622650073` -4. ...and so on... +4. ...এভাবে চলতে থাকবে... -The task is to create a generator function `pseudoRandom(seed)` that takes `seed` and creates the generator with this formula. +আপনার টাস্কটি হল একট জেনারেটর ফাংশন `pseudoRandom(seed)` তৈরি করুন যা একটি `seed` নেয় +এবং জেনারেটরটি উপরের ফর্মুলা অনুযায়ী তৈরি করুন। -Usage example: +উদাহরণ: ```js let generator = pseudoRandom(1); diff --git a/1-js/12-generators-iterators/1-generators/article.md b/1-js/12-generators-iterators/1-generators/article.md index 55f6bf903..0b4a3ed79 100644 --- a/1-js/12-generators-iterators/1-generators/article.md +++ b/1-js/12-generators-iterators/1-generators/article.md @@ -1,14 +1,14 @@ -# Generators +# জেনারেটর -Regular functions return only one, single value (or nothing). +সাধারণ ফাংশনগুলো শুধুমাত্র একটি মান রিটার্ন করে (অথবা কিছুই রিটার্ন করে না)। -Generators can return ("yield") multiple values, one after another, on-demand. They work great with [iterables](info:iterable), allowing to create data streams with ease. +জেনারেটরের মাধ্যমে আমরা চাহিদা অনুযায়ী একটির পর আরেকটি এভাবে অনেক মান রিটার্ন ("yield") করতে পারি। এরা [ইটারেবলের](info:iterable) সাথে দারুণ কাজ করে, এর মাধ্যমে সহজে ডাটা স্ট্রীম তৈরী করা যায়। -## Generator functions +## জেনারেটর ফাংশন -To create a generator, we need a special syntax construct: `function*`, so-called "generator function". +জেনারেটর তৈরি করতে আমাদের একটি বিশেষ সিনট্যাক্স কন্সট্রাক্ট `function*` এর প্রয়োজন হয়, এদের বলা হয় "জেনারেটর ফাংশন"। -It looks like this: +এরা দেখতে এমনঃ ```js function* generateSequence() { @@ -18,9 +18,11 @@ function* generateSequence() { } ``` -Generator functions behave differently from regular ones. When such function is called, it doesn't run its code. Instead it returns a special object, called "generator object", to manage the execution. +জেনারেটর ফাংশন এর আচরণ সাধারণ ফাংশন গুলো থেকে ভিন্ন। +যখন এই ধরণের ফাংশন গুলো কল করা হয়, তখন এরা এদের কোড রান করে না। +তার পরিবর্তে এটি রিটার্ন করে একটি বিশেষ অবজেক্ট, এদের বলা হয় "জেনারেটর অবজেক্ট", এটি এক্সিকিউশন নিয়ন্ত্রন করে। -Here, take a look: +এখানে দেখুনঃ ```js run function* generateSequence() { @@ -29,24 +31,24 @@ function* generateSequence() { return 3; } -// "generator function" creates "generator object" +// "জেনারেটর ফাংশন" তৈরি করে "জেনারেটর অবজেক্ট" let generator = generateSequence(); *!* alert(generator); // [object Generator] */!* ``` -The function code execution hasn't started yet: +ফাংশনের কোড এক্সিকিউশন এখনো শুরু হয়নিঃ ![](generateSequence-1.svg) -The main method of a generator is `next()`. When called, it runs the execution until the nearest `yield ` statement (`value` can be omitted, then it's `undefined`). Then the function execution pauses, and the yielded `value` is returned to the outer code. +জেনারেটরের প্রধান মেথডটি হল `next()`। যখন এটি কল হয়, এটি `yield ` স্টেটমেন্টের (`value` বাদ যেতে পারে, তারপর এটি `undefined` হয়) আগ পর্যন্ত সম্পাদিত হয়। তারপর ফাংশনের সম্পাদন থেমে যায় এবং ইয়েল্ডেড `value` টি বাইরেরে কোডে রিটার্ন করে। -The result of `next()` is always an object with two properties: -- `value`: the yielded value. -- `done`: `true` if the function code has finished, otherwise `false`. +`next()` হল একটি অবজেক্ট যার দুটি প্রোপার্টি আছে: +- `value`: ইয়েল্ডেড মানটি। +- `done`: `true` যদি ফাংশনের কোড শেষ হয়, অন্যথায় `false`। -For instance, here we create the generator and get its first yielded value: +উদাহরণস্বরুপ, এখানে আমরা জেনারেটর তৈরি করেছি এবং আমরা এটির প্রথম ইয়েল্ডেড মানটি পাওয়া যায়ঃ ```js run function* generateSequence() { @@ -64,11 +66,11 @@ let one = generator.next(); alert(JSON.stringify(one)); // {value: 1, done: false} ``` -As of now, we got the first value only, and the function execution is on the second line: +এখন, আমরা শুধু প্রথম ইয়েল্ডেড মানটি পেয়েছি, এবং ফাংশনটি সম্পাদনের জন্য দ্বিতীয় লাইনে রয়েছেঃ ![](generateSequence-2.svg) -Let's call `generator.next()` again. It resumes the code execution and returns the next `yield`: +চলুন আবার `generator.next()` কে কল করি। আবার কোড সম্পাদন চালু হয় এবং রিটার্ন করে পরবর্তী `yield`: ```js let two = generator.next(); @@ -78,7 +80,7 @@ alert(JSON.stringify(two)); // {value: 2, done: false} ![](generateSequence-3.svg) -And, if we call it a third time, the execution reaches the `return` statement that finishes the function: +এবং যখন আমরা তৃতীয়বারের মত কল করি, ফাংশন সম্পাদন পৌঁছে যায় `return` স্টেটমেন্টে যার দ্বারা ফাংশনটি শেষ হয়ঃ ```js let three = generator.next(); @@ -88,21 +90,22 @@ alert(JSON.stringify(three)); // {value: 3, *!*done: true*/!*} ![](generateSequence-4.svg) -Now the generator is done. We should see it from `done:true` and process `value:3` as the final result. +এভাবে জেনারেটরটি সম্পন্ন হয়। সব শেষে আমরা দেখতে পাই `done:true` এবং প্রসেস `value:3`। -New calls to `generator.next()` don't make sense any more. If we do them, they return the same object: `{done: true}`. +নতুন করে `generator.next()` কে কল করা আর তেমন কিছু বোঝায় না। যদি আমরা কল করি, তাহলে এটি একই অবজেক্ট রিটার্ন করে: `{done: true}`। ```smart header="`function* f(…)` or `function *f(…)`?" -Both syntaxes are correct. +উভয় সিনট্যাক্সই শুদ্ধ। -But usually the first syntax is preferred, as the star `*` denotes that it's a generator function, it describes the kind, not the name, so it should stick with the `function` keyword. +কিন্ত সাধারণত প্রথম সিনট্যাক্সটি বেশী ব্যবহৃত হয়, স্টার `*` চিহ্ন দ্বারা বোঝানো হয় এটি একটি জেনারেটর ফাংশন, এটি দ্বারা ফাংশনের ধরণ বুঝায়, নাম নয়, তাই এটি `function` কীওয়ার্ডের সাথে থাকা উচিত। ``` -## Generators are iterable +## জেনারেটরসমূহ ইটারেবল -As you probably already guessed looking at the `next()` method, generators are [iterable](info:iterable). +আপনি সম্ভবত `next()` মেথডটি দেখে বুঝতে পেরেছেন জেনারেটর[ইটারেবল](info:iterable)। -We can loop over their values using `for..of`: + +আমরা মান গুলো `for..of` লুপের মাধ্যমে পেতে পারিঃ ```js run function* generateSequence() { @@ -114,15 +117,15 @@ function* generateSequence() { let generator = generateSequence(); for(let value of generator) { - alert(value); // 1, then 2 + alert(value); // 1 তারপর 2 } ``` -Looks a lot nicer than calling `.next().value`, right? +`.next().value` এর চেয়ে এভাবে মানগুলো খুঁজা আরো বেশি সাবলীল, তাই না? -...But please note: the example above shows `1`, then `2`, and that's all. It doesn't show `3`! +...বিঃদ্রঃ উপরের উদাহরণটিতে দেখায় `1`, তারপর `2` কিন্তু এটি `3` দেখায় না! -It's because `for..of` iteration ignores the last `value`, when `done: true`. So, if we want all results to be shown by `for..of`, we must return them with `yield`: +কারণ `for..of` ইটারেশন শেষের `value` টিকে দেখায় না, যখন `done: true` হয়ে যায়। তো, যদি আমরা `for..of` এর মাধ্যমে সব মান পেতে চাই তাহলে আমাদের অবশ্যই এদের `yield` এর সাথে রিটার্ন করতে হবেঃ ```js run function* generateSequence() { @@ -136,11 +139,13 @@ function* generateSequence() { let generator = generateSequence(); for(let value of generator) { - alert(value); // 1, then 2, then 3 + alert(value); // 1, তারপর 2, তারপর 3 } ``` -As generators are iterable, we can call all related functionality, e.g. the spread syntax `...`: + +যেহেতু জেনারেটর ইটারেবল, তাই আমরা সকল ধরণের ইটারেবল ফাংশনালিটি কল করতে পারি, যেমনঃ স্প্রেড অপারেটর `...`: + ```js run function* generateSequence() { @@ -154,30 +159,30 @@ let sequence = [0, ...generateSequence()]; alert(sequence); // 0, 1, 2, 3 ``` -In the code above, `...generateSequence()` turns the iterable generator object into an array of items (read more about the spread syntax in the chapter [](info:rest-parameters-spread#spread-syntax)) +উপরের কোডে, `...generateSequence()` ইটারেবল জেনারেটর অবজেক্টটি অ্যারেতে রুপান্তরিত হয় (স্প্রেড অপারেটর সম্পর্কে আরো জানতে এটি পড়ুন [](info:rest-parameters-spread-operator#spread-operator)) -## Using generators for iterables +## ইটারেবলের জন্য জেনারেটরের ব্যবহার -Some time ago, in the chapter [](info:iterable) we created an iterable `range` object that returns values `from..to`. +পূর্বে, ইটারেবল অধ্যায়ে [](info:iterable) আমরা তৈরি করেছি একটা `range` অবজেক্ট যেটি রিটার্ন করত `from..to` এর মানগুলো। -Here, let's remember the code: +এখানে, আগের কোডটি দেখুনঃ ```js run let range = { from: 1, to: 5, - // for..of range calls this method once in the very beginning + // for..of range কে কল করা হলে সবার শুরুতে এই মেথডটি এক্সিকিউট হবে [Symbol.iterator]() { - // ...it returns the iterator object: - // onward, for..of works only with that object, asking it for next values + // ...এটি রিটার্ন করে ইটারেটর অবজেক্ট: + // পরবর্তীতে, for..of শুধু অবজেক্টির সাথে কাজ করে এবং এর মাধ্যমে আমরা মান গুলো জানতে পারি return { current: this.from, last: this.to, - // next() is called on each iteration by the for..of loop + // for..of লুপের প্রতিবার ইটারেশনে next() কল হয় next() { - // it should return the value as an object {done:.., value :...} + // এটি রিটার্ন করবে একটি অবজেক্ট {done:.., value :...} if (this.current <= this.last) { return { done: false, value: this.current++ }; } else { @@ -188,20 +193,20 @@ let range = { } }; -// iteration over range returns numbers from range.from to range.to +// ইটারেশন শেষে range এর রিটার্ন মান হবে range.from হতে range.to পর্যন্ত alert([...range]); // 1,2,3,4,5 ``` -We can use a generator function for iteration by providing it as `Symbol.iterator`. +জেনারেটর ফাংশনের মাধ্যমেও আমরা ইটারেশনের করতে পারি `Symbol.iterator`। -Here's the same `range`, but much more compact: +উপরের `range` টিকে আরো সহজভাবেঃ ```js run let range = { from: 1, to: 5, - *[Symbol.iterator]() { // a shorthand for [Symbol.iterator]: function*() + *[Symbol.iterator]() { // সংক্ষিপ্তরূপ [Symbol.iterator]: function*() for(let value = this.from; value <= this.to; value++) { yield value; } @@ -211,25 +216,25 @@ let range = { alert( [...range] ); // 1,2,3,4,5 ``` -That works, because `range[Symbol.iterator]()` now returns a generator, and generator methods are exactly what `for..of` expects: -- it has a `.next()` method -- that returns values in the form `{value: ..., done: true/false}` +এটিও কাজ করবে, কারণ `range[Symbol.iterator]()` জেনারেটর রিটার্ন করে, এবং জেনারেটর মেথডটি `for..of` এর মত কাজ করেঃ +- এর একটি মেথড আছে `.next()` +- এটি মানগুলো রিটার্ন করে এই ভাবে `{value: ..., done: true/false}` -That's not a coincidence, of course. Generators were added to JavaScript language with iterators in mind, to implement them easily. +অবশ্য, এটি কাকতালীয় না। জাভাস্ক্রীপ্টে জেনারেটর সংযুক্ত করা হয়েছে সহজে ইটারেবল অবজেক্ট তৈরি করতে। -The variant with a generator is much more concise than the original iterable code of `range`, and keeps the same functionality. +পূর্বের ইটারেবল `range` কোডের চেয়েও আমারা এর বিকল্প হিসেবে জেনারেটর ব্যবহার করতে পারি এটি আরো বেশী সংক্ষিপ্ত এবং এর ফাংশানালিটি একই থাকে। -```smart header="Generators may generate values forever" -In the examples above we generated finite sequences, but we can also make a generator that yields values forever. For instance, an unending sequence of pseudo-random numbers. +```smart header="জেনারেটর সবসময় জেনারেট ভ্যালু রিটার্ন করে" +উপরের উদাহরণে আমরা একটি ফিনিট সিক্যুয়েন্স জেনারেট করেছি, কিন্ত আমরা সবসময় মান রিটার্ন করে এমন জেনারেটরও তৈরি করতে পারি। উদাহরণস্বরূপ একটি ইনফিনিট সুডো-র‍্যান্ডম নাম্বার সিরিজ। -That surely would require a `break` (or `return`) in `for..of` over such generator. Otherwise, the loop would repeat forever and hang. +তবে এ ধরনের জেনারেটরের জন্য `for..of` এ একটি `break` (অথবা `return`) ব্যবহার করা উচিত। অন্যথায়, লুপটি অবিরাম চলতে থাকবে এবং হ্যাং করবে। ``` -## Generator composition +## জেনারেটর কম্পোজিশন -Generator composition is a special feature of generators that allows to transparently "embed" generators in each other. +জেনারেটর কম্পোজিশন হল এমন একটি সুবিধা যার মাধ্যমে আমরা একটি জেনারেটরের মধ্যে আরেকটি জেনারেটর সহজে "embed" করতে পারি। -For instance, we have a function that generates a sequence of numbers: +উদাহরণস্বরূপ, আমাদের একটি ফাংশন আছে এটি সিক্যুয়েন্স নাম্বার জেনারেট করেঃ ```js function* generateSequence(start, end) { @@ -237,18 +242,18 @@ function* generateSequence(start, end) { } ``` -Now we'd like to reuse it to generate a more complex sequence: -- first, digits `0..9` (with character codes 48..57), -- followed by uppercase alphabet letters `A..Z` (character codes 65..90) -- followed by lowercase alphabet letters `a..z` (character codes 97..122) +এখন আরো জটিল সিক্যুয়েন্স বানাতে আমরা এটি পুনরায় ব্যবহার করবঃ +- প্রথমত, নাম্বার `0..9` (ক্যারেক্টার কোড 48..57), +- তারপর বড় হাতের অক্ষর `A..Z` (ক্যারেক্টার কোড 65..90) +- তারপর ছোট হাতের অক্ষর `a..z` (ক্যারেক্টার কোড 97..122) -We can use this sequence e.g. to create passwords by selecting characters from it (could add syntax characters as well), but let's generate it first. +আমরা এই সিক্যুয়েন্স টা ব্যবহার করে উপরোল্লিখিত ক্যারেক্টার গুলো দিয়ে পাসওয়ার্ড তৈরি করতে পারি (এছাড়া সিম্বল ক্যারেক্টারও যুক্ত করতে পারি), চলুন প্রথমে এটা তৈরি করি। -In a regular function, to combine results from multiple other functions, we call them, store the results, and then join at the end. +সাধারন ফাংশনে, অনেকগুলো ফাংশনের মান একত্রিত করতে প্রথমে আমরা মানগুলো স্টোর করি এবং শেষে তাদের জয়েন করি। -For generators, there's a special `yield*` syntax to "embed" (compose) one generator into another. +জেনারেটরে, একটি স্পেশাল `yield*` সিনট্যাক্স আছে যার মাধ্যমে একটি ফাংশন আরেকটি ফাংশনের মধ্যে "embed" (কম্পোজ) করা যায়। -The composed generator: +কম্পোজিট জেনারেটরঃ ```js run function* generateSequence(start, end) { @@ -279,9 +284,9 @@ for(let code of generatePasswordCodes()) { alert(str); // 0..9A..Za..z ``` -The `yield*` directive *delegates* the execution to another generator. This term means that `yield* gen` iterates over the generator `gen` and transparently forwards its yields outside. As if the values were yielded by the outer generator. +`yield*` ডিরেক্টিভটি দ্বারা *নির্দেশ করে* এটি অন্য একটি জেনারেটরের এক্সিকিউশন। `yield* gen` এটি দ্বারা বুঝায় জেনারেটরটি `gen` ইটারেটযোগ্য এবং আমরা সহজেই ইয়েল্ডটির মান অন্য আরেকটি আউটার জেনারেটরের মাধ্যমে পেতে পারি। -The result is the same as if we inlined the code from nested generators: +উপরের রেজাল্ট একই থাকবে যদি আমরা নেস্টেড জেনারেটরে ইনলাইন কোড করিঃ ```js run function* generateSequence(start, end) { @@ -312,22 +317,25 @@ for(let code of generateAlphaNum()) { alert(str); // 0..9A..Za..z ``` -A generator composition is a natural way to insert a flow of one generator into another. It doesn't use extra memory to store intermediate results. +জেনারেটর কম্পোজিশন একটি স্বাভাবিক উপায় যার মাধ্যমে আমরা একটি ফাংশনের মধ্যে আরেকটি ফাংশন রাখতে পারি। এর ফলে মধ্যবর্তী মান স্টোরের জন্য অতিরিক্ত মেমোরি ব্যবহার হয় না। + + +## "yield" হল একটি টু-ওয়ে রোড -## "yield" is a two-way street +এখনো পর্যন্ত আমরা বুঝছি, জেনারেটর দেখতে ইটারেবল অবজেক্ট এর মত, যার জেনারেট ভ্যালুর জন্য স্পেশাল সিনট্যাক্স আছে। কিন্তু আসলে এটি আরো বেশি পাওয়ারফুল এবং ফ্লেক্সিবল। -Until this moment, generators were similar to iterable objects, with a special syntax to generate values. But in fact they are much more powerful and flexible. -That's because `yield` is a two-way street: it not only returns the result to the outside, but also can pass the value inside the generator. +এখানে `yield` হল একটি টু-ওয়ে রোড: এটি শুধু মান রিটার্ন `yield` করে না আমরা জেনারেটরে ভ্যালুও পাস করতে পারি। -To do so, we should call `generator.next(arg)`, with an argument. That argument becomes the result of `yield`. -Let's see an example: +এজন্য আমাদের `generator.next(arg)` কে কল করা লাগবে যার একটি আর্গুমেন্ট থাকতে পারে। আর্গুমেন্টটি `yield` এর রেজাল্ট হয়। + +একটা উদাহরণ দেখা যাকঃ ```js run function* gen() { *!* - // Pass a question to the outer code and wait for an answer + // এক্সিকিউশন কোডে একটি প্রশ্ন পাঠিয়ে উত্তরের জন্য অপেক্ষা করি let result = yield "2 + 2 = ?"; // (*) */!* @@ -336,29 +344,31 @@ function* gen() { let generator = gen(); -let question = generator.next().value; // <-- yield returns the value +let question = generator.next().value; // <-- ইয়েল্ড ভ্যলু রিটার্ন করে -generator.next(4); // --> pass the result into the generator +generator.next(4); // --> উত্তরটা জেনারেটরে পাঠাই ``` ![](genYield2.svg) -1. The first call `generator.next()` should be always made without an argument (the argument is ignored if passed). It starts the execution and returns the result of the first `yield "2+2=?"`. At this point the generator pauses the execution, while staying on the line `(*)`. -2. Then, as shown at the picture above, the result of `yield` gets into the `question` variable in the calling code. -3. On `generator.next(4)`, the generator resumes, and `4` gets in as the result: `let result = 4`. +1. প্রথমে `generator.next()`কোন আর্গুমেন্ট ছাড়া কল করি (আর্গুমেন্ট যাবে না যদি আমরা পাসও করি)। এটির এক্সিকিউশন শুরু হয় এবং প্রথম রিটার্নকৃত রেজাল্ট হবে `yield "2+2=?"`। এই মুহুর্তে জেনারেটরের এক্সিকিউশন `(*)` লাইনে থেমে যাবে। +2. তারপর, উপরের ছবির মত, কোডে `yield` এর ফলাফল `question` ভ্যারিয়েবল এর মধ্যে চলে আসে। +3. `generator.next(4)` এ, জেনারেটর থেমে যায়, এবং `4` কে রেজাল্ট এর মধ্যে পাই: `let result = 4`। + + +দয়া করে মনে রাখুন, এক্সিকিউশন কোডে আমাদের সাথে সাথে `next(4)` কে কল করতে হবে না। এটি কিছু সময় নিতে পারে। এটি সমস্যা নই জেনারেটর অপেক্ষা করবে। -Please note, the outer code does not have to immediately call `next(4)`. It may take time. That's not a problem: the generator will wait. -For instance: +উদাহরণস্বরূপ: ```js -// resume the generator after some time +// কিছু সময় পর জেনারেটর আবার শুরু হবে setTimeout(() => generator.next(4), 1000); ``` -As we can see, unlike regular functions, a generator and the calling code can exchange results by passing values in `next/yield`. +আমরা দেখতে পাই যে, সাধারণ ফাংশনের বিপরীতে, জেনারেটর কল হলে ফলাফল বিনিময় করতে পারে `next/yield` মান পাসিং এর মাধ্যমে। -To make things more obvious, here's another example, with more calls: +আরো ভালোভাবে বুঝতে, আরেকটি উদাহরণ দেখুন, একাধিক কলের জন্যঃ ```js run function* gen() { @@ -380,27 +390,27 @@ alert( generator.next(4).value ); // "3 * 3 = ?" alert( generator.next(9).done ); // true ``` -The execution picture: +এক্সিকিউশনের ছবিঃ ![](genYield2-2.svg) -1. The first `.next()` starts the execution... It reaches the first `yield`. -2. The result is returned to the outer code. -3. The second `.next(4)` passes `4` back to the generator as the result of the first `yield`, and resumes the execution. -4. ...It reaches the second `yield`, that becomes the result of the generator call. -5. The third `next(9)` passes `9` into the generator as the result of the second `yield` and resumes the execution that reaches the end of the function, so `done: true`. +1. প্রথমে `.next()` এক্সিকিউশন শুরু হয়... এটি প্রথম `yield` এ পৌঁছায়। +2. রেজাল্ট বহিঃস্থ কোডে রিটার্ন করে। +3. দ্বিতীয়ত `.next(4)` এর মাধ্যমে প্রথম `yield` এর ফলাফল হিসেবে `4` জেনারেটরে যায়, এবং এক্সিকিউশন পুনরায় চালু হয়। +4. ...এটি দ্বিতীয় `yield` এ যায় এবং এর ফলে জেনারেটরের ফলাফল হয় `3 * 3 = ?`। +5. তৃতীয়ত `next(9)` এ `9` পাসের জন্য এটি দ্বিতীয় `yield` এর রেজাল্ট হয় এবং এক্সিকিউশন আবার শুরু হয়ে ফাংশনের শেষে পৌঁছায় এবং `done: true` হয়। -It's like a "ping-pong" game. Each `next(value)` (excluding the first one) passes a value into the generator, that becomes the result of the current `yield`, and then gets back the result of the next `yield`. +এটি অনেকটা "পিং-পং" খেলার মত. প্রতিটি `next(value)` (প্রথমটি বাদে) জেনারেটরে একটি ভ্যালূ পাস হয়, এর ফলে এটি বর্তমান `yield` এর রেজাল্ট হয়, এবং পরবর্তী `yield` টি রেজাল্টে চলে আসে। ## generator.throw -As we observed in the examples above, the outer code may pass a value into the generator, as the result of `yield`. +উপরের কোড হতে আমরা বুঝতে পারি, আমরা জেনারেটরে একটি ভ্যালু পাঠাতে পারি, যা `yield` এর রেজাল্ট হয়। -...But it can also initiate (throw) an error there. That's natural, as an error is a kind of result. +...কিন্ত আমরা চাইলে সেখানে একটি এরর (থ্রো) করতে পারি। এটি স্বাভাবিক কেননা ইরোরও একধরনের রেজাল্ট। -To pass an error into a `yield`, we should call `generator.throw(err)`. In that case, the `err` is thrown in the line with that `yield`. +`yield` এ এরর পাস করতে চাইলে আমাদের `generator.throw(err)` কে কল করা লাগবে। এই ক্ষেত্রে, `err` টি যে লাইনে `yield` আছে সেখানে পাঠানো হবে। -For instance, here the yield of `"2 + 2 = ?"` leads to an error: +উদাহরণস্বরূপ, এখানে `"2 + 2 = ?"` ইয়েল্ডটি একটি এররকে নির্দেশ করে: ```js run function* gen() { @@ -409,7 +419,7 @@ function* gen() { alert("The execution does not reach here, because the exception is thrown above"); } catch(e) { - alert(e); // shows the error + alert(e); // এররটি দেখাবে } } @@ -421,16 +431,18 @@ let question = generator.next().value; generator.throw(new Error("The answer is not found in my database")); // (2) */!* ``` +লাইন `(2)` হতে জেনারেটরে একটি এরর এক্সেপশন থ্রো হয় যা +`yield` এর মাধ্যমে লাইন `(1)` এ যায়। উপরের উদাহরনে `try..catch` এর মাধ্যমে এরর আমরা দেখাতে পারি। -The error, thrown into the generator at line `(2)` leads to an exception in line `(1)` with `yield`. In the example above, `try..catch` catches it and shows it. -If we don't catch it, then just like any exception, it "falls out" the generator into the calling code. +যদি আমরা এটি ধরতে না পারি অন্যান্য এক্সেপশন এর মত, তাহলে এটি জেনারেটরের এক্সিকিউশন কোডে চলে আসবে. -The current line of the calling code is the line with `generator.throw`, labelled as `(2)`. So we can catch it here, like this: + +আমরা `generator.throw` কে নিম্নোক্ত উপায়েও লিখতে পারি যা উপরের লাইন `(2)` এর মত। চাইলে আমরা এভাবেও এররটি ধরতে পারিঃ ```js run function* generate() { - let result = yield "2 + 2 = ?"; // Error in this line + let result = yield "2 + 2 = ?"; // এই লাইনে এরর হবে } let generator = generate(); @@ -441,13 +453,19 @@ let question = generator.next().value; try { generator.throw(new Error("The answer is not found in my database")); } catch(e) { - alert(e); // shows the error + alert(e); // এররটি দেখাবে } */!* ``` +যদি আমরা এররটি না ধরি তাহলে অন্যান্য এরর এর মত এটি আমাদের এক্সিকিউশন কোডের মধ্যে চলে যাবে এবং এর ফলে কোড এক্সিকিউশন বন্ধ হয়ে যাবে। -If we don't catch the error there, then, as usual, it falls through to the outer calling code (if any) and, if uncaught, kills the script. +## সারাংশ +<<<<<<< HEAD +- জেনারেটর তৈরী হয় জেনারেটর ফাংশনের মাধ্যমে `function* f(…) {…}`। +- (শুধু) জেনারেটরের মধ্যে `yield` অপারেটর থাকে। +- এক্সিকিউশন কোড এবং জেনারেটর কোডের রেজাল্ট `next/yield` কলের মাধ্যমে বিনিময় হয়। +======= ## generator.return `generator.return(value)` finishes the generator execution and return the given `value`. @@ -471,13 +489,10 @@ If we again use `generator.return()` in a completed generator, it will return th Often we don't use it, as most of time we want to get all returning values, but it can be useful when we want to stop generator in a specific condition. ## Summary +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -- Generators are created by generator functions `function* f(…) {…}`. -- Inside generators (only) there exists a `yield` operator. -- The outer code and the generator may exchange results via `next/yield` calls. - -In modern JavaScript, generators are rarely used. But sometimes they come in handy, because the ability of a function to exchange data with the calling code during the execution is quite unique. And, surely, they are great for making iterable objects. +মডার্ন জাভাস্ক্রিপ্টে জেনারেটরের ব্যবহার কম। কিন্তু অনেক সময় এটি কাজে আসে, কারণ এক্সিকিউশন কোড এবং ফাংশন কোডে ডাটা বিনিময় টা অতুলনীয়। এবং এদের মাধ্যমে সহজে ইটারেবল অবজেক্ট তৈরি করা যায়। -Also, in the next chapter we'll learn async generators, which are used to read streams of asynchronously generated data (e.g paginated fetches over a network) in `for await ... of` loops. +এছাড়াও পরবর্তী অধ্যায়ে আমরা শিখব `async generators`, যার মাধ্যমে আমরা `for await ... of` এর মধ্যে অ্যাসিনক্রোনাস জেনারেটর ডাটা স্ট্রিম (যেমনঃ নেটওয়ার্কের মাধ্যমে পেজিনেশন)করতে পারি । -In web-programming we often work with streamed data, so that's another very important use case. +ওয়েব-প্রোগ্রামিংয়ে আমরা প্রায় ডাটা স্ট্রিম নিয়ে কাজ করি, সুতরাং এটিও অন্য আরেকটি গুরত্বপূর্ণ ব্যবহারের ক্ষেত্র। diff --git a/1-js/12-generators-iterators/1-generators/generateSequence-2.svg b/1-js/12-generators-iterators/1-generators/generateSequence-2.svg index 7478543a4..4c64e983e 100644 --- a/1-js/12-generators-iterators/1-generators/generateSequence-2.svg +++ b/1-js/12-generators-iterators/1-generators/generateSequence-2.svg @@ -1 +1 @@ -{value: 1, done: false} \ No newline at end of file +{value: 1, done: false} \ No newline at end of file diff --git a/1-js/12-generators-iterators/1-generators/generateSequence-3.svg b/1-js/12-generators-iterators/1-generators/generateSequence-3.svg index d32b114f9..0af8e9efd 100644 --- a/1-js/12-generators-iterators/1-generators/generateSequence-3.svg +++ b/1-js/12-generators-iterators/1-generators/generateSequence-3.svg @@ -1 +1 @@ -{value: 2, done: false} \ No newline at end of file +{value: 2, done: false} \ No newline at end of file diff --git a/1-js/12-generators-iterators/2-async-iterators-generators/article.md b/1-js/12-generators-iterators/2-async-iterators-generators/article.md index d4e9f7861..1e36af913 100644 --- a/1-js/12-generators-iterators/2-async-iterators-generators/article.md +++ b/1-js/12-generators-iterators/2-async-iterators-generators/article.md @@ -1,15 +1,14 @@ +# অ্যাসিঙ্ক ইটারেশন এবং জেনারেটর -# Async iteration and generators +অ্যাসিঙ্ক্রোনাসলি আসা ডাটাগুলোকে অ্যাসিঙ্ক্রোনাস ইটারেশনের সাহায্যে আমরা আমাদের চাহিদা মত ইটারেট করতে পারি। উদাহরণস্বরূপ, যখন আমরা নেটওয়ার্কের মাধ্যমে ছোট ছোট অংশ ডাউনলোড করি। এটি অ্যাসিঙ্ক্রোনাস জেনারেটরের সাহায্যে আরো সহজে করা যায়। -Asynchronous iteration allow us to iterate over data that comes asynchronously, on-demand. Like, for instance, when we download something chunk-by-chunk over a network. And asynchronous generators make it even more convenient. +চলুন প্রথমে একটি উদাহরণ দেখি, সিনট্যাক্সগুলো বুঝার চেষ্টা করি এবং পরে একটি বাস্তবিক ব্যবহার দেখব। -Let's see a simple example first, to grasp the syntax, and then review a real-life use case. +## পুনরায় ইটারেবল -## Recall iterables +আসুন পুনরায় ইটারেবলের টপিক্সটি দেখি। -Let's recall the topic about iterables. - -The idea is that we have an object, such as `range` here: +আমাদের একটি অবজেক্ট আছে, যেমন `range`: ```js let range = { from: 1, @@ -17,17 +16,17 @@ let range = { }; ``` -...And we'd like to use `for..of` loop on it, such as `for(value of range)`, to get values from `1` to `5`. +...এবং আমরা `for..of` লুপ চালাব, যেমন `for(value of range)`, `1` হতে `5` পর্যন্ত মানগুলো পেতে। -In other words, we want to add an *iteration ability* to the object. +অন্য কথায় বলা যায়, আমরা আমাদের অবজেক্টটিতে *iteration ability* সাপোর্ট করাব। -That can be implemented using a special method with the name `Symbol.iterator`: +এটি আমরা করতে পারি একটি বিশেষ মেথডের সাহায্যে `Symbol.iterator`: -- This method is called in by the `for..of` construct when the loop is started, and it should return an object with the `next` method. -- For each iteration, the `next()` method is invoked for the next value. -- The `next()` should return a value in the form `{done: true/false, value:}`, where `done:true` means the end of the loop. +- for..of range কে কল করা হলে সবার শুরুতে এই মেথডটি এক্সিকিউট হবে, এবং এটি একটি অবজেক্ট রিটার্ন করবে যার একটি মেথড `next`। +- for..of লুপের প্রতিবার ইটারেশনে next() কল হয় পরবর্তী মানের জন্য। +- `next()` মেথডটি রিটার্ন করে একটি অবজেক্ট `{done: true/false, value:}`, যেখানে `done:true` দ্বারা বুঝায় লুপের শেষ। -Here's an implementation for the iterable `range`: +এখানে `range` এর জন্য একটি ইটারেবল ইমপ্লিমেন্ট করি: ```js run let range = { @@ -35,14 +34,14 @@ let range = { to: 5, *!* - [Symbol.iterator]() { // called once, in the beginning of for..of + [Symbol.iterator]() { // একবার কল হবে, for..of এর শুরুতে */!* return { current: this.from, last: this.to, *!* - next() { // called every iteration, to get the next value + next() { // প্রতিবার ইটারেশনে পরবর্তী মান টি পাব */!* if (this.current <= this.last) { return { done: false, value: this.current++ }; @@ -55,29 +54,28 @@ let range = { }; for(let value of range) { - alert(value); // 1 then 2, then 3, then 4, then 5 + alert(value); // 1 তারপর 2, তারপর 3, তারপর 4, তারপর 5 } ``` +যদি আপনি ইটারেটর নিয়ে আরো বিস্তারিত জানতে চান দয়া করে এটি দেখুন [ইটারেবল চ্যাপ্টার](info:iterable)। -If anything is unclear, please visit the chapter [](info:iterable), it gives all the details about regular iterables. - -## Async iterables +## অ্যাসিঙ্ক ইটারেবল -Asynchronous iteration is needed when values come asynchronously: after `setTimeout` or another kind of delay. +যখন আমরা কোন মান অ্যাসিঙ্ক্রোনাসলি পেতে চাই তখন আমাদের অ্যাসিঙ্ক ইটারেটর লাগে: অনেকটা `setTimeout` বা এই ধরণের অন্যান্য ফাংশনের জন্য। -The most common case is that the object needs to make a network request to deliver the next value, we'll see a real-life example of it a bit later. +সাধারণত আমরা আমাদের নেটওয়ার্ক রিকুয়েস্টে পরবর্তী মানটি পাঠাতে এমন অবজেক্ট লাগে, পরবর্তীতে আমরা ব্যবহারিক উদাহরণের মাধ্যমে আরো ভালোভাবে বুঝব। -To make an object iterable asynchronously: +অ্যাসিঙ্ক্রোনাসলি ইটারেটরেবল অবজেক্ট তৈরি করতে: -1. Use `Symbol.asyncIterator` instead of `Symbol.iterator`. -2. The `next()` method should return a promise (to be fulfilled with the next value). - - The `async` keyword handles it, we can simply make `async next()`. -3. To iterate over such an object, we should use a `for await (let item of iterable)` loop. - - Note the `await` word. +১. আমাদের `Symbol.iterator` এর পরিবর্তে `Symbol.asyncIterator` ব্যবহার করা লাগবে। +২. `next()` অবশ্যই একটি প্রমিস রিটার্ন করবে (পরবর্তী মানের জন্য এটি fulfilled হবে)। + - `async` কিওয়ার্ডটি এটি হ্যান্ডল করবে, সহজেই আমরা লিখতে পারি `async next()`। +৩. এইধরনের অবজেক্ট ইটারেট করতে, আমরা ব্যবহার করব `for await (let item of iterable)` লুপ। + - `await` কিওয়ার্ডটি নোট করুন। -As a starting example, let's make an iterable `range` object, similar like the one before, but now it will return values asynchronously, one per second. +চলুন আগেরটির মত একটি ইটারেটরেবল `range` অবজেক্ট তৈরি করি কিন্তু এটি অ্যাসিঙ্ক্রোনাসলি প্রতি সেকেন্ডে একটি মান রিটার্ন করবে। -All we need to do is to perform a few replacements in the code above: +আমাদের পূর্বের কোডের কিছু জায়গায় পরিবর্তন লাগবে: ```js run let range = { @@ -96,7 +94,7 @@ let range = { */!* *!* - // note: we can use "await" inside the async next: + // নোট: আমরা async next এ "await" ব্যবহার করতে পারি: await new Promise(resolve => setTimeout(resolve, 1000)); // (3) */!* @@ -121,43 +119,43 @@ let range = { })() ``` -As we can see, the structure is similar to regular iterators: +আমরা দেখতে পাচ্ছি এটির স্ট্রাকচার অনেকটা সাধারণ ইটারেটরের মতঃ -1. To make an object asynchronously iterable, it must have a method `Symbol.asyncIterator` `(1)`. -2. This method must return the object with `next()` method returning a promise `(2)`. -3. The `next()` method doesn't have to be `async`, it may be a regular method returning a promise, but `async` allows us to use `await`, so that's convenient. Here we just delay for a second `(3)`. -4. To iterate, we use `for await(let value of range)` `(4)`, namely add "await" after "for". It calls `range[Symbol.asyncIterator]()` once, and then its `next()` for values. +১. একটি অ্যাসিঙ্ক্রোনাসলি ইটারেটরেবল অবজেক্ট তৈরি করতে `Symbol.asyncIterator` `(1)` মেথডটি অবশ্যই লাগবে। +২. মেথডটি `next()` মেথডে একটি প্রমিস এর মাধ্যমে অবজেক্টটি রিটার্ন করে `(2)`। +৩. The `next()` method doesn't have to be `async`, it may be a regular method returning a promise, but `async` allows to use `await`, so that's convenient. Here we just delay for a second `(3)`। +৪. ইটারেটের জন্য আমরা `for await(let value of range)` `(4)` ব্যবহার করি, লুপে "for" এর পর "await" ব্যবহার করুন। এটি প্রথমে কল করে `range[Symbol.asyncIterator]()` কে এবং পরে মানের জন্য `next()` কে। -Here's a small table with the differences: +এখানে এদের পার্থক্য দেয়া হল: -| | Iterators | Async iterators | +| | ইটারেটর | অ্যাসিঙ্ক ইটারেটর | |-------|-----------|-----------------| -| Object method to provide iterator | `Symbol.iterator` | `Symbol.asyncIterator` | -| `next()` return value is | any value | `Promise` | -| to loop, use | `for..of` | `for await..of` | +| ইটারেটরে প্রদত্ত অবজেক্ট মেথড | `Symbol.iterator` | `Symbol.asyncIterator` | +| `next()` এর রিটার্নকৃত মান | যেকোন মান | `Promise` | +| ব্যবহৃত লুপ | `for..of` | `for await..of` | + + +````warn header="স্প্রেড অপারেটর `...` অ্যাসিঙ্ক্রোনাসলি কাজ করে না" +এটি সিঙ্ক্রোনাস ইটারেটরের একটি ফিচার, অ্যাসিঙ্ক্রোনাসের সাথে কাজ করে না। -````warn header="The spread syntax `...` doesn't work asynchronously" -Features that require regular, synchronous iterators, don't work with asynchronous ones. -For instance, a spread syntax won't work: +উদাহরণস্বরূপ, এখানে স্প্রেড অপারেটর কাজ করবে না: ```js alert( [...range] ); // Error, no Symbol.iterator ``` -That's natural, as it expects to find `Symbol.iterator`, not `Symbol.asyncIterator`. +এটিই স্বাভাবিক, কেননা এটি `Symbol.iterator` এর সাথে কাজ করে, `Symbol.asyncIterator` এর সাথে করে না। -It's also the case for `for..of`: the syntax without `await` needs `Symbol.iterator`. +`for..of` এর জন্যও এটি কাজ করবে না: কেননা `await`, `Symbol.iterator` এর সাথে কাজ করে না। ```` -## Recall generators +## পুনরায় জেনারেটরস -Now let's recall generators, as they allow to make iteration code much shorter. Most of the time, when we'd like to make an iterable, we'll use generators. +চলুন আবার জেনারেটর ব্যবহার করি, এটির মাধ্যমে আমরা ইটারেশনের কোডকে আরো সংক্ষিপ্ত করতে পারি। বেশিরভাগ ক্ষেত্রে আমরা ইটারেবল অবজেক্ট তৈরিতে জেনারেটর ব্যবহার করি, বিস্তারিত এই অধ্যায়ে [](info:generators)। -For sheer simplicity, omitting some important stuff, they are "functions that generate (yield) values". They are explained in detail in the chapter [](info:generators). +জেনারেটর গুলো `function*` এভাবে লিখতে পারি এবং `yield` ব্যবহার করি মান জেনারেট করতে, তারপর `for..of` এদের ইটারেট করতে পারি। -Generators are labelled with `function*` (note the star) and use `yield` to generate a value, then we can use `for..of` to loop over them. - -This example generates a sequence of values from `start` to `end`: +উদাহরণটিতে একটি সিক্যুয়েন্স মান তৈরি করে `start` হতে `end` পর্যন্ত: ```js run function* generateSequence(start, end) { @@ -167,11 +165,11 @@ function* generateSequence(start, end) { } for(let value of generateSequence(1, 5)) { - alert(value); // 1, then 2, then 3, then 4, then 5 + alert(value); // 1, তারপর 2, তারপর 3, তারপর 4, তারপর 5 } ``` -As we already know, to make an object iterable, we should add `Symbol.iterator` to it. +ইতোমধ্যে আমরা জানি, ইটারেবল অবজেক্ট তৈরিতে, আমাদের অবশ্যই `Symbol.iterator` লাগবে। ```js let range = { @@ -185,7 +183,7 @@ let range = { } ``` -A common practice for `Symbol.iterator` is to return a generator, it makes the code shorter, as you can see: +`Symbol.iterator` এর অন্যতম প্রয়োগ হয় জেনারেটরে, এর মাধ্যমে আমরা কোডকে সংক্ষিপ্ত করতে পারি: ```js run let range = { @@ -200,25 +198,25 @@ let range = { }; for(let value of range) { - alert(value); // 1, then 2, then 3, then 4, then 5 + alert(value); //1, তারপর 2, তারপর 3, তারপর 4, তারপর 5 } ``` -Please see the chapter [](info:generators) if you'd like more details. +আরো বিস্তারিত জানতে এই অধ্যায়টি দেখুন [](info:generators)। -In regular generators we can't use `await`. All values must come synchronously, as required by the `for..of` construct. +সাধারণ জেনারেটরে আমরা `await` ব্যবহার করতে পারি না। সকল মান সিঙ্ক্রোনাসলি আসে, এখানে `for..of` এ কোন লাইনে এ ডিলে হয় না, এটি একটি সিঙ্ক্রোনাস কন্সট্রাক্ট। -What if we'd like to generate values asynchronously? From network requests, for instance. +যদি আমরা মানগুলো অ্যাসিঙ্ক্রোনাসলি পেতে চাই যেমন নেটওয়ার্ক রিকুয়েস্টে তখন কি হবে? -Let's switch to asynchronous generators to make it possible. +চলুন অ্যাসিঙ্ক্রোনাস জেনারেটরের মাধ্যমে আমরা এটি ইমপ্লিমেন্ট করি। -## Async generators (finally) +## অ্যাসিঙ্ক জেনারেটর -For most practical applications, when we'd like to make an object that asynchronously generates a sequence of values, we can use an asynchronous generator. +আমাদের অ্যাপ্লিকেশনগুলোতে যখন আমরা অবজেক্ট এর মানসমূহকে অ্যাসিঙ্ক্রোনাসলি জেনারেট করতে চায়, তখন আমরা অ্যাসিঙ্ক্রোনাস জেনারেটর ব্যবহার করতে চায়। -The syntax is simple: prepend `function*` with `async`. That makes the generator asynchronous. +এর সিনট্যাক্স সহজবোধ্য: `function*` এর পূর্বে `async` কিওয়ার্ড লিখা লাগবে। এভাবেই অ্যাসিঙ্ক্রোনাস জেনারেটর লিখা যায়। -And then use `for await (...)` to iterate over it, like this: +এবং একে `for await (...)` ইটারেট করব: ```js run *!*async*/!* function* generateSequence(start, end) { @@ -239,47 +237,47 @@ And then use `for await (...)` to iterate over it, like this: let generator = generateSequence(1, 5); for *!*await*/!* (let value of generator) { - alert(value); // 1, then 2, then 3, then 4, then 5 (with delay between) + alert(value); //1, তারপর 2, তারপর 3, তারপর 4, তারপর 5(প্রতিটির মধ্যে ১ সেকেন্ড পার্থক্য থাকে) } })(); ``` -As the generator is asynchronous, we can use `await` inside it, rely on promises, perform network requests and so on. +জেনারেটরটি অ্যাসিঙ্ক্রোনাস হওয়ায় আমরা এর মধ্যে `await`, `promise` এবং নেটওয়ার্ক কল ইত্যাদি করতে পারি। -````smart header="Under-the-hood difference" -Technically, if you're an advanced reader who remembers the details about generators, there's an internal difference. +````smart header="এদের ইন্টারনাল পার্থক্য" +টেকনিক্যালি, জেনারেটর এবং অ্যাসিঙ্ক জেনারেটরের মধ্যে ইন্টারনাল ডিফারেন্স আছে। -For async generators, the `generator.next()` method is asynchronous, it returns promises. +অ্যাসিঙ্ক জেনারেটরে, `generator.next()` মেথডটি অ্যাসিঙ্ক্রোনাস, এটি `promise` রিটার্ন করে। -In a regular generator we'd use `result = generator.next()` to get values. In an async generator, we should add `await`, like this: +সাধারণ জেনারেটরে আমরা মান এভাবে পাই `result = generator.next()`. কিন্তু অ্যাসিঙ্ক জেনারেটরে মান পেতে আমাদের `await` যুক্ত করতে হবে, এভাবে: ```js result = await generator.next(); // result = {value: ..., done: true/false} ``` -That's why async generators work with `for await...of`. +এজন্য অ্যাসিঙ্ক জেনারেটর `for await...of` লুপ লাগে। ```` -### Async iterable range +### অ্যাসিঙ্ক ইটারেবল রেঞ্জ -Regular generators can be used as `Symbol.iterator` to make the iteration code shorter. +সাধারণত জেনারেটরে `Symbol.iterator` ব্যবহার করে ইটারেশন কোডকে আমরা সংক্ষিপ্ত করতে পারি। -Similar to that, async generators can be used as `Symbol.asyncIterator` to implement the asynchronous iteration. +অনুরূপভাবে, অ্যাসিঙ্ক জেনারেটরে `Symbol.asyncIterator` ব্যবহার করে অ্যাসিঙ্ক্রোনাস ইটারেশন ইমপ্লিমেন্ট করতে পারি। -For instance, we can make the `range` object generate values asynchronously, once per second, by replacing synchronous `Symbol.iterator` with asynchronous `Symbol.asyncIterator`: +যেমন, আমরা `range` এর মানগুলো প্রতি সেকেন্ড হিসেব করে অ্যাসিঙ্ক্রোনাসলি জেনারেট করতে পারি, এজন্য `Symbol.iterator` এর বদলে `Symbol.asyncIterator` লাগবে: ```js run let range = { from: 1, to: 5, - // this line is same as [Symbol.asyncIterator]: async function*() { + // [Symbol.asyncIterator]: async function*() { এই লাইনটি এর অনুরূপ *!* async *[Symbol.asyncIterator]() { */!* for(let value = this.from; value <= this.to; value++) { - // make a pause between values, wait for something + // দুটি মানের মধ্যেবর্তী কিছুক্ষণের জন্য অপেক্ষা করবে await new Promise(resolve => setTimeout(resolve, 1000)); yield value; @@ -290,47 +288,49 @@ let range = { (async () => { for *!*await*/!* (let value of range) { - alert(value); // 1, then 2, then 3, then 4, then 5 + alert(value); // 1, তারপর 2, তারপর 3, তারপর 4, তারপর 5 } })(); ``` -Now values come with a delay of 1 second between them. +এখন মানগুলো ১ সেকেন্ড পর পর আসবে। ```smart -Technically, we can add both `Symbol.iterator` and `Symbol.asyncIterator` to the object, so it's both synchronously (`for..of`) and asynchronously (`for await..of`) iterable. +ট্যাকনিক্যালি, অবজেক্টটিতে `Symbol.iterator` এবং `Symbol.asyncIterator` উভয়ই ব্যবহার করতে পারি, এরা উভয়ই সিঙ্ক্রোনাসলি (`for..of`) এবং অ্যাসিঙ্ক্রোনাসলি (`for await..of`) ইটারেবল হবে। +<<<<<<< HEAD +বাস্তবে, এভাবে না করায় উচিত। +======= In practice though, that would be a weird thing to do. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ``` -## Real-life example: paginated data - -So far we've seen basic examples, to gain understanding. Now let's review a real-life use case. +## একটি বাস্তবিক উদাহরণ: paginated data -There are many online services that deliver paginated data. For instance, when we need a list of users, a request returns a pre-defined count (e.g. 100 users) - "one page", and provides a URL to the next page. +আমরা অনেক উদাহরণ দেখার সাহায্যে অ্যাসিঙ্ক ইটারেটর এবং জেনারেটর বুঝেছি। চলুন একটি বাস্তবিক উদাহরণ দেখি। -This pattern is very common. It's not about users, but just about anything. +অনলাইনে অনেক সার্ভিস আছে যারা পেজিনেটেড ডাটা সরবরাহ করে। উদাহরণস্বরূপ, যখন আমাদের ইউজারদের একটি লিস্ট দরকার হয় এটি "এক পেজের" জন্য একটি রিকুয়েস্টে প্রি-ডিফাইন্ড (যেমনঃ ১০০ জন ইউজারের) ডাটা রিটার্ন করে , এবং পরবর্তী পেজে যাওয়ার জন্য একটি URL প্রদান করে। -For instance, GitHub allows us to retrieve commits in the same, paginated fashion: +এটি একটি কমন প্যাটার্ন। এটি শুধুমাত্র ইউজারের জন্য না, যেকোন কিছু হতে পারে। -- We should make a request to `fetch` in the form `https://api.github.com/repos//commits`. -- It responds with a JSON of 30 commits, and also provides a link to the next page in the `Link` header. -- Then we can use that link for the next request, to get more commits, and so on. +উদাহরণস্বরূপ, গিটহাব হতে আমরা পেজিনেটেড উপায়ে কমিট নিয়ে আসতে পারি: -For our code, we'd like to have a simpler way to get commits. +- এই জন্য আমাদের এই `https://api.github.com/repos//commits` URL এ একটি `fetch` রিকুয়েস্ট করা লাগবে। +- এটি জেসন ফরম্যাটে ৩০ টি কমিট রেসপন্ড করে, এবং পরবর্তী পেজে যাওয়ার জন্য `Link` হেডারের মাধ্যমে একটি লিঙ্ক প্রদান করে। +- তারপর আমরা পরবর্তী কমিটগুলোর জন্য লিঙ্কটির মাধ্যমে আরো রিকুয়েস্ট পাঠাতে পারি, এভাবে চলতে থাকবে। -Let's make a function `fetchCommits(repo)` that gets commits for us, making requests whenever needed. And let it care about all pagination stuff. For us it'll be a simple async iteration `for await..of`. +আমরা কমিট নিয়ে আসার জন্য একটি `fetchCommits(repo)` ফাংশন তৈরি করি, যা প্রয়োজনমত রিকুয়েস্ট তৈরি করে। এবং পেজিনেশনের সকল ব্যাপার এটির মাধ্যমে নিয়ন্ত্রিত হয়। এটি একটি সিম্পল `for await..of`। -So the usage will be like this: +এখন আমরা একটি সিম্পল API চাই: যেটি কমিটগুলোর একটি ইটারেবল অবজেক্ট হয়, তো আমরা এভাবে করতে পারি: ```js for await (let commit of fetchCommits("username/repository")) { - // process commit + // কমিটগুলো প্রসেস করি } ``` -Here's such function, implemented as async generator: +চলুন অ্যাসিঙ্ক জেনারেটরটি ইমপ্লিমেন্ট করি: ```js async function* fetchCommits(repo) { @@ -338,28 +338,34 @@ async function* fetchCommits(repo) { while (url) { const response = await fetch(url, { // (1) - headers: {'User-Agent': 'Our script'}, // github needs any user-agent header + headers: {'User-Agent': 'Our script'}, // গিটহাবে User-Agent হেডার দরকার }); - const body = await response.json(); // (2) response is JSON (array of commits) + const body = await response.json(); // (2) রেস্পন্স করবে জেসন (কমিটের অ্যারেসমূহ) - // (3) the URL of the next page is in the headers, extract it + // (3) পরবর্তী পেজের URL টি হেডার থেকে এক্সট্রাক্ট করি let nextPage = response.headers.get('Link').match(/<(.*?)>; rel="next"/); nextPage = nextPage?.[1]; url = nextPage; - for(let commit of body) { // (4) yield commits one by one, until the page ends + for(let commit of body) { // (4) কমিটগুলো একটির পর একটি আসবে পেজ শেষ না হওয়া পর্যন্ত yield commit; } } } ``` -More explanations about how it works: +এটি কিভাবে কাজ করছে বিস্তারিত দেখি: -1. We use the browser [fetch](info:fetch) method to download the commits. +১. আমরা রিমোট URL থেকে কিছু ডাউনলোডের জন্য ব্রাউজারের [fetch](info:fetch) মেথডটি ব্যবহার করতে পারি। এটির মাধ্যমে আমরা অথোরাইজেশন এবং অন্যান্য হেডার পাস করতে পারি -- গিটহাব API এ রিকুয়েস্টের জন্য আমাদের `User-Agent` হেডারটি পাঠানো প্রয়োজন +২. `fetch` এর মাধ্যমে আমরা একটি জেসন অবজেক্ট পাই, যা `fetch`এর একটি নির্দিষ্ট মেথড। +৩. আমরা পরবর্তী পেজের URL টি রেস্পন্সের `Link` হেডার হতে পাই। এটি একটি স্পেশাল ফরম্যাটে থাকে তাই আমরা রেগুলার এক্সপ্রেশন ব্যবহারের এর মাধ্যমে পরবর্তী পেজের লিঙ্কটি পায়। পরবর্তী পেজের URL টি দেখতে এমন হয় `https://api.github.com/repositories/93253246/commits?page=2`। এটি গিটহাবের মাধ্যমে জেনারেট হয়। +৪. তারপর আমরা `yield` এর মাধ্যমে কমিট গুলো রিসিভ করি এবং যখন এটি শেষ হয়, `while(url)` লুপ আবার রান হয় এবং এর ফলে আরো রিকুয়েস্ট জেনারেট হয়। +<<<<<<< HEAD +উদাহরণস্বরূপ (কনসোলে কমিটের অথরের নাম দেখায়): +======= - The initial URL is `https://api.github.com/repos//commits`, and the next page will be in the `Link` header of the response. - The `fetch` method allows us to supply authorization and other headers if needed -- here GitHub requires `User-Agent`. 2. The commits are returned in JSON format. @@ -368,6 +374,7 @@ More explanations about how it works: 4. Then we yield the received commits one by one, and when they finish, the next `while(url)` iteration will trigger, making one more request. An example of use (shows commit authors in console): +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run (async () => { @@ -378,7 +385,7 @@ An example of use (shows commit authors in console): console.log(commit.author.login); - if (++count == 100) { // let's stop at 100 commits + if (++count == 100) { // ১০০ কমিট আসার পর লুপ থেমে যায় break; } } @@ -388,30 +395,29 @@ An example of use (shows commit authors in console): // Note: If you are running this in an external sandbox, you'll need to paste here the function fetchCommits described above ``` -That's just what we wanted. +এটি আমাদের চাহিদামত কাজ করে। এখানে পেজিনেশেনের পুরো ব্যাপারটা ইন্টারনালি সংগঠিত হয় এবং অ্যাসিঙ্ক জেনারেটর আমাদের কমিটগুলো রিটার্ন করে। -The internal mechanics of paginated requests is invisible from the outside. For us it's just an async generator that returns commits. +## সারাংশ -## Summary +সাধারণ ইটারেটর এবং জেনারেটর গুলো সিঙ্ক্রোনাস ডাটার সাথে ভালোভাবেই কাজ করে। -Regular iterators and generators work fine with the data that doesn't take time to generate. +যখন আমাদের ডাটা গুলো অ্যাসিঙ্ক্রোনাসলি আসে তখন আমাদের `async` ব্যবহার করা উচিত এবং `for..of` এর বদলে `for await..of` ব্যবহার করতে হবে। -When we expect the data to come asynchronously, with delays, their async counterparts can be used, and `for await..of` instead of `for..of`. +অ্যাসিঙ্ক এবং সাধারণ ইটারেটরের মধ্যে সিনট্যাক্সের পার্থক্য: -Syntax differences between async and regular iterators: - -| | Iterable | Async Iterable | +| | ইটারেবল | অ্যাসিঙ্ক ইটারেবল | |-------|-----------|-----------------| -| Method to provide iterator | `Symbol.iterator` | `Symbol.asyncIterator` | -| `next()` return value is | `{value:…, done: true/false}` | `Promise` that resolves to `{value:…, done: true/false}` | +| ইটারেটরে ব্যবহৃত মেথড | `Symbol.iterator` | `Symbol.asyncIterator` | +| `next()` এর রিটার্ন ভ্যালু | `{value:…, done: true/false}` | `Promise` এর `resolve` রিটার্ন করে `{value:…, done: true/false}` | -Syntax differences between async and regular generators: +অ্যাসিঙ্ক এবং সাধারণ জেনারেটরের মধ্যে সিনট্যাক্সের পার্থক্যঃ -| | Generators | Async generators | +| | জেনারেটর | অ্যাসিঙ্ক জেনারেটর | |-------|-----------|-----------------| -| Declaration | `function*` | `async function*` | -| `next()` return value is | `{value:…, done: true/false}` | `Promise` that resolves to `{value:…, done: true/false}` | +| ডিক্লেয়ার করার নিয়ম | `function*` | `async function*` | +| `next()` এর রিটার্ন ভ্যালু | `{value:…, done: true/false}` | `Promise` এর `resolve` রিটার্ন করে `{value:…, done: true/false}` | + +ওয়েব ডেভলাপমেন্টে আমাদের প্রায়শই ছোট ছোট করে ডাটা স্ট্রীমের দরকার হয়। উদাহরনস্বরূন, একটি বড় ফাইল ডাউনলোড বা আপলোডের জন্য। -In web-development we often meet streams of data, when it flows chunk-by-chunk. For instance, downloading or uploading a big file. -We can use async generators to process such data. It's also noteworthy that in some environments, like in browsers, there's also another API called Streams, that provides special interfaces to work with such streams, to transform the data and to pass it from one stream to another (e.g. download from one place and immediately send elsewhere). +আমরা এই ধরনের ডাটার জন্য অ্যাসিঙ্ক জেনারেটর ব্যবহার করতে পারি। বিঃদ্রঃ কিছু এনভাইরনমেন্টে যেমন ব্রাউজারে একটি Streams API আছে, এটি ডাটাকে এক স্ট্রীম থেকে অন্য স্ট্রীমে পাঠাতে একটি বিশেষ ইন্টারফেস দেয় (যেমনঃ এক জায়গা হতে ডাউনলোড করে সাথে সাথে অন্য আরেক জায়গায় পাঠানো)। \ No newline at end of file diff --git a/1-js/12-generators-iterators/index.md b/1-js/12-generators-iterators/index.md index ccc909d1a..bd331c1ed 100644 --- a/1-js/12-generators-iterators/index.md +++ b/1-js/12-generators-iterators/index.md @@ -1,2 +1,2 @@ -# Generators, advanced iteration +# জেনারেটরস, অ্যাডভান্সড ইটারেশন diff --git a/1-js/13-modules/03-modules-dynamic-imports/article.md b/1-js/13-modules/03-modules-dynamic-imports/article.md index e48144a3e..84a2ef553 100644 --- a/1-js/13-modules/03-modules-dynamic-imports/article.md +++ b/1-js/13-modules/03-modules-dynamic-imports/article.md @@ -1,48 +1,48 @@ -# Dynamic imports +# ডাইন্যামিক ইমপোর্ট -Export and import statements that we covered in previous chapters are called "static". The syntax is very simple and strict. +আগের অধ্যায়ে আমরা ইমপোর্ট এবং এক্সপোর্ট নিয়ে আলোচনা করেছি যাদের "static" বলা হয়। যার সিনট্যাক্স খুবই সাধারন। -First, we can't dynamically generate any parameters of `import`. +প্রথমত, `import` এর কোন প্যারামিটার ডাইনামিক ভাবে আমরা জেনারেট করতে পারি না। -The module path must be a primitive string, can't be a function call. This won't work: +মডিউলের পাথ অবশ্যই প্রিমিটিভ স্ট্রিং হতে হবে, ফাংশন কল হওয়া যাবে না। এটি কাজ করবে নাঃ ```js -import ... from *!*getModuleName()*/!*; // Error, only from "string" is allowed +import ... from *!*getModuleName()*/!*; // এরর, শুধুমাত্র "string" প্রযোজ্য ``` -Second, we can't import conditionally or at run-time: +দ্বিতীয়ত, আমরা কন্ডিশনালি অথবা রান-টাইমে ইমপোর্ট করতে পারবো না। ```js if(...) { - import ...; // Error, not allowed! + import ...; // এরর, এটি প্রযোজ্য নয়। } { - import ...; // Error, we can't put import in any block + import ...; // এরর, আমারা কোন ব্লকের মধ্যে ইমপোর্ট রাখতে পারি না। } ``` -That's because `import`/`export` aim to provide a backbone for the code structure. That's a good thing, as code structure can be analyzed, modules can be gathered and bundled into one file by special tools, unused exports can be removed ("tree-shaken"). That's possible only because the structure of imports/exports is simple and fixed. +তার কারন `import`/`export` এর উদ্দেশ্য হচ্ছে কোডের গঠনে মেরুদন্ডের ন্যায় কাজ করা। এটি একটি ভালো দিক, কোডের গঠন বিশ্লেষণ করে দেখা যায়, একটি বিশেষ টুলের দ্বারা মডিউল গুলোকে ফাইলে একসাথে রাখা যায়, অব্যবহৃত এক্সপোর্ট গুলো রিমুভ("tree-shaken") করা যায়. `imports/exports` এর সাধারন গঠনের কারনেই এটি সম্ভব হয়। -But how can we import a module dynamically, on-demand? +কিন্তু, প্রয়োজনে একটি মডিউলকে কিভাবে আমরা ডাইনামিকালি ইমপোর্ট করতে পারি? -## The import() expression +## import() এক্সপ্রেশন -The `import(module)` expression loads the module and returns a promise that resolves into a module object that contains all its exports. It can be called from any place in the code. +`import(module)` এক্সপ্রেশনটি মডিউলকে লোড করে এবং একটি প্রমিস রিটার্ন করে যা একটি মডিউল অবজেক্টের মধ্যে রিসল্ভ হয়ে থাকে এবং এতে সমস্ত এক্সপোর্ট গুলো থাকে। -We can use it dynamically in any place of the code, for instance: +আমরা কোডের যে কোন জায়গায় এটি ডাইনামিকালি ব্যবহার করতে পারি, যেমনঃ ```js -let modulePath = prompt("Which module to load?"); +let modulePath = prompt("কোন মডিউলটি লোড করতে চান?"); import(modulePath) .then(obj => ) - .catch(err => ) + .catch(err => <লোডিং এরর, যদি কোন মডিউল না থাকে>) ``` -Or, we could use `let module = await import(modulePath)` if inside an async function. +অথবা, যদি এটি একটি `async` ফাংশনের ভিতর হয়ে থাকে তবে `let module = await import(modulePath)` ব্যবহার করতে পারি। -For instance, if we have the following module `say.js`: +যেমন, আমাদের যদি নিম্নলিখিত মডিউল থাকে `say.js`: ```js // 📁 say.js @@ -55,7 +55,7 @@ export function bye() { } ``` -...Then dynamic import can be like this: +...তবে ডাইনামিক ইমপোর্টটি হতে পারেঃ ```js let {hi, bye} = await import('./say.js'); @@ -64,35 +64,35 @@ hi(); bye(); ``` -Or, if `say.js` has the default export: +অথবা, যদি `say.js` এর ডিফল্ট এক্সপোর্ট থাকেঃ ```js // 📁 say.js export default function() { - alert("Module loaded (export default)!"); + alert("মডিউল লোড হয়েছে (export default)!"); } ``` -...Then, in order to access it, we can use `default` property of the module object: +...তারপর এটাকে এক্সেস করার জন্য আমরা মডিউল অব্জেক্টের `default` প্রপার্টি ব্যাবহার করতে পারি। ```js let obj = await import('./say.js'); let say = obj.default; -// or, in one line: let {default: say} = await import('./say.js'); +// অথাবা, এক লাইনে: let {default: say} = await import('./say.js'); say(); ``` -Here's the full example: +এখানে সম্পূর্ণ উদাহারনটি রয়েছেঃ [codetabs src="say" current="index.html"] ```smart -Dynamic imports work in regular scripts, they don't require `script type="module"`. +রেগুলার স্ক্রিপ্টে ডাইনামিক ইমপোর্ট কাজ করে, তার জন্য `script type="module" প্রয়োজন হয় না। ``` ```smart -Although `import()` looks like a function call, it's a special syntax that just happens to use parentheses (similar to `super()`). +যদিও `import()` দেখতে ফাংশন কলের মতো, কিন্তু এটি একটি (`super()` মতো) বিশেষ সিন্টেক্স যার জন্য "parentheses" ব্যবহার করতে হয়। `). -So we can't copy `import` to a variable or use `call/apply` with it. It's not a function. +তাই আমারা `import` কে কোন ভেরিয়েবলে কপি অথবা `call/apply` করতে পারি না। এটা কোন ফাংশন নয়। ``` diff --git a/1-js/99-js-misc/01-proxy/proxy-inherit-admin.svg b/1-js/99-js-misc/01-proxy/proxy-inherit-admin.svg index 3fba64606..bc6c4ce2f 100644 --- a/1-js/99-js-misc/01-proxy/proxy-inherit-admin.svg +++ b/1-js/99-js-misc/01-proxy/proxy-inherit-admin.svg @@ -1 +1 @@ -_name: "Guest" name: getter_name: "Admin"user (proxied)original useradmin[[Prototype]] \ No newline at end of file +_name: "Guest" name: getter_name: "Admin"user (proxied)original useradmin[[Prototype]] \ No newline at end of file diff --git a/1-js/99-js-misc/01-proxy/proxy.svg b/1-js/99-js-misc/01-proxy/proxy.svg index 6b2224cfd..157e350f4 100644 --- a/1-js/99-js-misc/01-proxy/proxy.svg +++ b/1-js/99-js-misc/01-proxy/proxy.svg @@ -1 +1 @@ -test: 5proxytargetget proxy.test5 \ No newline at end of file +test: 5proxytargetget proxy.test5 \ No newline at end of file diff --git a/1-js/99-js-misc/02-eval/article.md b/1-js/99-js-misc/02-eval/article.md index 1fdafeeec..7fffd77ae 100644 --- a/1-js/99-js-misc/02-eval/article.md +++ b/1-js/99-js-misc/02-eval/article.md @@ -1,25 +1,25 @@ -# Eval: run a code string +# Eval: স্ট্রিং হতে কোড এক্সিকিউট -The built-in `eval` function allows to execute a string of code. +বিল্ট-ইন `eval` ফাংশন স্ট্রিংকে কোড হিসেবে রানের সুবিধা প্রদান করে। -The syntax is: +এর সিনট্যাক্স হল: ```js let result = eval(code); ``` -For example: +যেমন: ```js run let code = 'alert("Hello")'; eval(code); // Hello ``` -A string of code may be long, contain line breaks, function declarations, variables and so on. +একটি স্ট্রিংয়ে অনেক কোড যেমন লাইন ব্রেক ফাংশন, ভ্যারিয়েবল ডিক্লেয়ারেশন ইত্যাদি থাকতে পারে। -The result of `eval` is the result of the last statement. +`eval` এর ফলাফল হবে সর্বশেষ স্টেটমেন্টের ফলাফল। -For example: +যেমন: ```js run let value = eval('1+1'); alert(value); // 2 @@ -30,7 +30,7 @@ let value = eval('let i = 0; ++i'); alert(value); // 1 ``` -The eval'ed code is executed in the current lexical environment, so it can see outer variables: +eval কোড এক্সিকিউশন লেক্সিকাল এনভায়রনমেন্টের কোডকে এক্সিকিউট করে, সুতরাং এটি এর বাইরের ভ্যারিয়েবলকে দেখতে পারে: ```js run no-beautify let a = 1; @@ -46,7 +46,7 @@ function f() { f(); ``` -It can change outer variables as well: +এটি আউটার ভ্যারিয়েবলের মান পরিবর্তনও করতে পারে: ```js untrusted refresh run let x = 5; @@ -54,7 +54,7 @@ eval("x = 10"); alert(x); // 10, value modified ``` -In strict mode, `eval` has its own lexical environment. So functions and variables, declared inside eval, are not visible outside: +`strict` মোডে, `eval` এর নিজস্ব লেক্সিকাল এনভায়রনমেন্ট থাকে। সুতরাং eval এর কোডকে এর বাইরে থেকে অ্যাক্সেস করা যাবে না: ```js untrusted refresh run // reminder: 'use strict' is enabled in runnable examples by default @@ -65,27 +65,27 @@ alert(typeof x); // undefined (no such variable) // function f is also not visible ``` -Without `use strict`, `eval` doesn't have its own lexical environment, so we would see `x` and `f` outside. +`use strict` ছাড়া, `eval` এর নিজস্ব লেক্সিকাল এনভায়রনমেন্ট থাকে না, সুতরাং `x` এবং `f` কে বাহির থেকে অ্যাক্সেস করতে পারব। -## Using "eval" +## "eval" এর ব্যবহার -In modern programming `eval` is used very sparingly. It's often said that "eval is evil". +মডার্ন জাভাস্ক্রিপ্টে `eval` তেমন ব্যবহার করা হয় না। এটি সম্পর্কে বলা হয় "eval is evil"। -The reason is simple: long, long time ago JavaScript was a much weaker language, many things could only be done with `eval`. But that time passed a decade ago. +প্রায় এক দশক আগে জাভাস্ক্রিপ্ট একটি দুর্বল প্রোগ্রামিং ল্যাঙ্গুয়েজ ছিল, সে সময় বিভিন্ন কাজ করতে আমরা `eval` ব্যবহার করতাম। -Right now, there's almost no reason to use `eval`. If someone is using it, there's a good chance they can replace it with a modern language construct or a [JavaScript Module](info:modules). +এখন, `eval` ব্যবহারের কোন কারণ নেই। এর পরিবর্তে আমরা মডার্ন ল্যাঙ্গুয়েজ কন্সট্রাক্ট বা [JavaScript Module](info:modules) ব্যবহার করি। -Please note that its ability to access outer variables has side-effects. +দয়া করে মনে রাখুন আউটার ভ্যারিয়েবল অ্যাক্সেস থাকার কারণে বিভিন্ন সমস্যা হতে পারে। -Code minifiers (tools used before JS gets to production, to compress it) rename local variables into shorter ones (like `a`, `b` etc) to make the code smaller. That's usually safe, but not if `eval` is used, as local variables may be accessed from eval'ed code string. So minifiers don't do that renaming for all variables potentially visible from `eval`. That negatively affects code compression ratio. +প্রোডাকশনের জন্য আমরা কোড মিনিফাই করার সময় এরা লোকাল ভ্যারিয়েবলগুলোকে শর্ট ভ্যারিয়েবল দ্বারা প্রতিস্থাপন করে (যেমন `userData` হয়ে যাবে `a`) যাতে আমাদের কোডের সাইজ ছোট হয়। এটি সুবিধাজনক, কিন্তু `eval` যেহেতু তার আউটার স্কোপকে অ্যাক্সেস করতে পারে, `eval` ব্যবহারের সময় লোকাল ভ্যারিয়েবলকে শর্ট ভ্যারিয়েবল প্রতিস্থাপন করে না। যার ফলে মিনিফাই করার সময় ফাইল সাইজের অনুপাতে একটি পার্থক্য দেখা যায়। -Using outer local variables inside `eval` is also considered a bad programming practice, as it makes maintaining the code more difficult. +এছাড়াও `eval` এ আউটার স্কোপ ভ্যারিয়েবল ব্যবহার ব্যাড প্রাক্টিস, এছাড়াও কোড সহজে পরিবর্তনযোগ্য থাকে না। -There are two ways how to be totally safe from such problems. +এক্ষেত্রে আমরা দুই উপায়ে এটি ব্যবহার করতে পারি। -**If eval'ed code doesn't use outer variables, please call `eval` as `window.eval(...)`:** +**যদি এটি আউটার স্কোপের ভ্যারিয়েবল ব্যবহার না করে, তাহলে `eval` এর পরিবর্তে `window.eval(...)` ব্যবহার করুন:** -This way the code is executed in the global scope: +তাহলে আমাদের কোডটি সর্বদা গ্লোবাল স্কোপে এক্সিকিউট হবে: ```js untrusted refresh run let x = 1; @@ -95,7 +95,7 @@ let x = 1; } ``` -**If eval'ed code needs local variables, change `eval` to `new Function` and pass them as arguments:** +**যদি লোকাল ভ্যারিয়েবল অ্যাক্সেস করা লাগে, তাহলে `eval` এর পরিবর্তে `new Function` এ ভ্যালুটি পাস করার মাধ্যমে ব্যবহার করুন:** ```js run let f = new Function('a', 'alert(a)'); @@ -103,12 +103,12 @@ let f = new Function('a', 'alert(a)'); f(5); // 5 ``` -The `new Function` construct is explained in the chapter . It creates a function from a string, also in the global scope. So it can't see local variables. But it's so much clearer to pass them explicitly as arguments, like in the example above. +`new Function` সম্পর্কে এই অধ্যায়ে আলোচনা করা হয়েছে । এটি গ্লোবাল স্কোপে স্ট্রিং হতে ফাংশন তৈরি করে, তাই লোকাল ভ্যারিয়েবলকে অ্যাক্সেস করতে পারে না। সুতরাং উপরের উদাহরণের মত আর্গুমেন্ট পাসের মাধ্যমে ভ্যারিয়েবলকে অ্যাক্সেস করতে পারি। -## Summary +## সারাংশ -A call to `eval(code)` runs the string of code and returns the result of the last statement. -- Rarely used in modern JavaScript, as there's usually no need. -- Can access outer local variables. That's considered bad practice. -- Instead, to `eval` the code in the global scope, use `window.eval(code)`. -- Or, if your code needs some data from the outer scope, use `new Function` and pass it as arguments. +`eval(code)` কোন একটি স্ট্রিংয়ের কোডকে এক্সিকিউট করে এবং শেষের স্টেটমেন্টের রেজাল্ট রিটার্ন করে। +- মডার্ন জাভাস্ক্রিপ্টে বলতে গেলে এটি আর ব্যবহার করা হয় না +- আউটার স্কোপে অ্যাক্সেস থাকে, তবে এটিকে ব্যাড প্রাক্টিস হিসেবে বিবেচনা করা হয় +- গ্লোবাল স্কোপের জন্য `eval` এর পরিবর্তে `window.eval(...)` ব্যবহার করি। +- অথবা লোকাল ভ্যারিয়েবল অ্যাক্সেস এর জন্য `eval` এর পরিবর্তে `new Function` এ ভ্যালু পাস করার মাধ্যমে ব্যবহার করি। diff --git a/2-ui/1-document/02-dom-nodes/article.md b/2-ui/1-document/02-dom-nodes/article.md index f7f2be91d..3c9277e14 100644 --- a/2-ui/1-document/02-dom-nodes/article.md +++ b/2-ui/1-document/02-dom-nodes/article.md @@ -4,35 +4,35 @@ libs: --- -# DOM tree +# DOM ট্রি -The backbone of an HTML document is tags. +ট্যাগস হল HTML ডকুমেন্ট এর মেরুদন্ড। -According to the Document Object Model (DOM), every HTML tag is an object. Nested tags are "children" of the enclosing one. The text inside a tag is an object as well. +ডকুমেন্ট অবজেক্ট মডেল(DOM) অনুসারে HTML এর প্রতিটি ট্যাগ হল একটি অবজেক্ট। নেস্টেড ট্যাগ সমূহকে বলা হয় "children"। ট্যাগের মধ্যে টেক্সট বা কমেন্ট সমূহও অবজেক্ট। -All these objects are accessible using JavaScript, and we can use them to modify the page. +সকল অবজেক্টকে আমরা জাভাস্ক্রিপ্টের সাহায্যে অ্যাক্সেস করতে পারি, এবং এদের সাহায্যে পেজকে পরিবর্তনও করতে পারি। -For example, `document.body` is the object representing the `` tag. +যেমন, `document.body` এই অবজেক্টটি দ্বারা `` ট্যাগকে সূচিত করে। -Running this code will make the `` red for 3 seconds: +এখানে `` এর ব্যাকগ্রাউন্ড ৩ সেকেন্ডের জন্য লাল থাকবে: ```js run -document.body.style.background = 'red'; // make the background red +document.body.style.background = 'red'; // লাল ব্যাকগ্রাউন্ড -setTimeout(() => document.body.style.background = '', 3000); // return back +setTimeout(() => document.body.style.background = '', 3000); // পূর্বের অবস্থায় ফেরত ``` -Here we used `style.background` to change the background color of `document.body`, but there are many other properties, such as: +এখানে আমরা `style.background` এর সাহায্যে `document.body` এর কালার পরিবর্তন করেছি, কিন্তু এর আরো বিভিন্ন প্রপার্টি আছে, যেমন: -- `innerHTML` -- HTML contents of the node. -- `offsetWidth` -- the node width (in pixels) -- ...and so on. +- `innerHTML` -- নোডের HTML কন্টেন্ট। +- `offsetWidth` -- নোডের width (পিক্সেলে) +- ...ইত্যাদি. -Soon we'll learn more ways to manipulate the DOM, but first we need to know about its structure. +শীঘ্রই আমরা বিভিন্ন উপায়ে DOM ম্যানিপুলেট এর উপায় দেখব, চলুন প্রথমে এদের স্ট্রাকচারটা জেনে নিই। ## An example of the DOM -Let's start with the following simple document: +নিচের এই HTML ডকুমেন্টটি দেখুন: ```html run no-beautify @@ -46,7 +46,7 @@ Let's start with the following simple document: ``` -The DOM represents HTML as a tree structure of tags. Here's how it looks: +HTML এর DOM এর ট্রি স্ট্রাকচারটা হবে, এভাবে:
@@ -57,31 +57,31 @@ drawHtmlTree(node1, 'div.domtree', 690, 320); ```online -On the picture above, you can click on element nodes and their children will open/collapse. +উপরের ছবিটিতে আপনি ক্লিক করে খোলা/বন্ধ করতে পারবেন। ``` -Every tree node is an object. +ট্রি এর প্রতিটি নোড একটি অবজেক্ট। -Tags are *element nodes* (or just elements) and form the tree structure: `` is at the root, then `` and `` are its children, etc. +ট্যাগ *element nodes* (বা শুধু ইলিমেন্ট) গুলো দ্বারা ট্রি এর স্ট্রাকচারটি গঠন হয়: এখানে `` হল রুট, এবং `` ও `` তার *children*। -The text inside elements forms *text nodes*, labelled as `#text`. A text node contains only a string. It may not have children and is always a leaf of the tree. +এখানে আমরা দেখছি টেক্সসমূহও `#text` নামে *text nodes* হিসেবে আছে। টেক্সট নোড স্ট্রিং আকারে থাকে। এটি সর্বদা তার প্যারেন্ট নোডের সর্বশেষে থাকবে অর্থাৎ তার কোন চাইল্ড নোড থাকবে না । -For instance, the `` tag has the text `"About elk"`. +যেমন, `<title>` ট্যাগে একটি টেক্সট আছে `"About elk"`। -Please note the special characters in text nodes: +দয়া করে মনে রাখুন স্পেশাল ক্যারাক্টার সমূহ টেক্সট নোডে এভাবে থাকবে: -- a newline: `↵` (in JavaScript known as `\n`) -- a space: `␣` +- নিউলাইন: `↵` (`\n`) +- স্পেস: `␣` -Spaces and newlines are totally valid characters, like letters and digits. They form text nodes and become a part of the DOM. So, for instance, in the example above the `<head>` tag contains some spaces before `<title>`, and that text becomes a `#text` node (it contains a newline and some spaces only). +সংখ্যা এবং বর্ণের মত স্পেস ও নিউলাইন হল ভ্যালিড ক্যারাক্টার। সুতরাং DOM এ এরা *text node* হিসেবে থাকবে। তাই উপরের কোডে `<head>` এর শুরুতে এবং শেষে আমরা দুটি *text node* দেখছি (নিউলাইন বা স্পেস যেকোন কিছু থাকতে পারে)। -There are only two top-level exclusions: -1. Spaces and newlines before `<head>` are ignored for historical reasons. -2. If we put something after `</body>`, then that is automatically moved inside the `body`, at the end, as the HTML spec requires that all content must be inside `<body>`. So there can't be any spaces after `</body>`. +তবে এখানে ২টি ব্যতিক্রম ঘটনা আছে: +১. `<head>` এর পূর্বে স্পেস এবং নিউলাইনকে ঐতিহাসিক কারণে ইগনোর করে। +২. যদি আমরা `</body>` এর পর কিছু রাখি, এটি স্বয়ংক্রিয়ভাবে `body` এর অভ্যন্তরে অবস্থান করে। কেননা HTML স্পেসিফিকেশন অনুযায়ী সকল কন্টেন্ট `<body>` এর মধ্যে থাকবে। সুতরাং `</body>` এর পর কোন স্পেস থাকবে না। -In other cases everything's straightforward -- if there are spaces (just like any character) in the document, then they become text nodes in the DOM, and if we remove them, then there won't be any. +অন্যান্য সকল কিছু সুনির্দিষ্ট -- যদি ডকুমেন্টে কোন স্পেস (অন্যান্য ক্যারাক্টারের মত) থাকে, তাহলে এরা *text node* হিসেবে থাকবে, আর যদি স্পেস বাদ দিই তাহলে নোডটি বাদ যাবে। -Here are no space-only text nodes: +এখানে দেখুন কোন অতিরিক্ত স্পেস নাই: ```html no-beautify <!DOCTYPE HTML> @@ -96,21 +96,21 @@ let node2 = {"name":"HTML","nodeType":1,"children":[{"name":"HEAD","nodeType":1, drawHtmlTree(node2, 'div.domtree', 690, 210); </script> -```smart header="Spaces at string start/end and space-only text nodes are usually hidden in tools" -Browser tools (to be covered soon) that work with DOM usually do not show spaces at the start/end of the text and empty text nodes (line-breaks) between tags. +```smart header="স্পেস টেক্সট নোড সমূহ ডেভ টুলসে হিডেন থাকে" +ব্রাউজারের ডেভটুলসে (সামনে বিস্তারিত দেখব) এম্পটি নোড সমূহ প্রদর্শিত হবে না। -Developer tools save screen space this way. +ডেভলাপার টুলে এভাবে স্ক্রিন সংরক্ষণ করে। -On further DOM pictures we'll sometimes omit them when they are irrelevant. Such spaces usually do not affect how the document is displayed. +পরবর্তী DOM এর ছবি সমূহে আমরা অপ্রয়োজনীয় এসব নোড দেখাব না। ``` ## Autocorrection -If the browser encounters malformed HTML, it automatically corrects it when making the DOM. +যদি ব্রাউজার আমাদের HTML কোডে কোন ভুল পায়, তাহলে এটি DOM তৈরির সময় স্বয়ংক্রিয়ভাবে শুদ্ধ করে দেয়। -For instance, the top tag is always `<html>`. Even if it doesn't exist in the document, it will exist in the DOM, because the browser will create it. The same goes for `<body>`. +যেমন, রুট ট্যাগ সর্বদা `<html>`। যদি ডকুমেন্টে এটি না থাকে তারপরও DOM এ এটি বিদ্যমান থাকবে, কেননা ব্রাউজার এটি শুদ্ধ করে দিবে। অনুরূপ `<body>` ট্যাগের জন্যও। -As an example, if the HTML file is the single word `"Hello"`, the browser will wrap it into `<html>` and `<body>`, and add the required `<head>`, and the DOM will be: +যেমন, HTML ফাইলে যদি শুধুমাত্র `"Hello"` থাকে, তাহলে ব্রাউজার স্বয়ংক্রিয়ভাবে `<html>`, `<head>` এবং `<body>` ট্রি তৈরি করে নিবে, এবং টেক্সট নোড টি `<body>` এর মধ্যে থাকবে: <div class="domtree"></div> @@ -121,9 +121,9 @@ let node3 = {"name":"HTML","nodeType":1,"children":[{"name":"HEAD","nodeType":1, drawHtmlTree(node3, 'div.domtree', 690, 150); </script> -While generating the DOM, browsers automatically process errors in the document, close tags and so on. +DOM জেনারেশনের সময়, ব্রাউজার স্বয়ংক্রিয়ভাবে ডকুমেন্টের ইরোর সমূহ প্রসেস করবে, এবং ক্লোজিং ট্যাগটি সম্পন্ন করবে। -A document with unclosed tags: +ক্লোজিং ট্যাগ ছাড়া ডকুমেন্ট: ```html no-beautify <p>Hello @@ -132,7 +132,7 @@ A document with unclosed tags: <li>Dad ``` -...will become a normal DOM as the browser reads tags and restores the missing parts: +...এটি DOM এ সঠিকভাবে রেন্ডার হবে, কেননা ব্রাউজার স্বয়ংক্রিয়ভাবে DOM টিকে সঠিক করে দিবে: <div class="domtree"></div> @@ -142,16 +142,21 @@ let node4 = {"name":"HTML","nodeType":1,"children":[{"name":"HEAD","nodeType":1, drawHtmlTree(node4, 'div.domtree', 690, 360); </script> +<<<<<<< HEAD +````warn header="Tables এ সর্বদা `<tbody>` থাকবে" +তবে table এর একটি "স্পেশাল বৈশিষ্ট" আছে। DOM স্পেসিফিকেশন অনুসারে `<table>` এ `<tbody>` থাকবে, তবে আমরা এটি ছাড়াও table লিখতে পারি। তখন ব্রাউজার স্বয়ংক্রিয়ভাবে `<tbody>` সংযুক্ত করে দিবে। +======= ````warn header="Tables always have `<tbody>`" An interesting "special case" is tables. By DOM specification they must have `<tbody>` tag, but HTML text may omit it. Then the browser creates `<tbody>` in the DOM automatically. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -For the HTML: +যেমন: ```html no-beautify <table id="table"><tr><td>1</td></tr></table> ``` -DOM-structure will be: +DOM-structure হবে: <div class="domtree"></div> <script> @@ -160,14 +165,18 @@ let node5 = {"name":"TABLE","nodeType":1,"children":[{"name":"TBODY","nodeType": drawHtmlTree(node5, 'div.domtree', 600, 200); </script> +<<<<<<< HEAD +দেখলেন? স্বয়ংক্রিয়ভাবে `<tbody>` অবজেক্টটি সংযুক্ত হয়েছে। `<table>` নিয়ে কাজ করার সময় আমাদের এই ব্যাপারটি মনে রাখা উচিত। +======= You see? The `<tbody>` appeared out of nowhere. We should keep this in mind while working with tables to avoid surprises. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```` -## Other node types +## অন্যান্য নোড টাইপ -There are some other node types besides elements and text nodes. +এলিমেন্ট এবং টেক্সট নোড ছাড়াও আরো কয়েক ধরণের নোড আছে। -For example, comments: +যেমন, কমেন্টস: ```html <!DOCTYPE HTML> @@ -193,90 +202,99 @@ let node6 = {"name":"HTML","nodeType":1,"children":[{"name":"HEAD","nodeType":1, drawHtmlTree(node6, 'div.domtree', 690, 500); </script> -We can see here a new tree node type -- *comment node*, labeled as `#comment`, between two text nodes. +আমরা এখানে দেখছি `#comment` নামের -- *comment node*, দুটি ট্যাক্সট নোডের মাঝে। -We may think -- why is a comment added to the DOM? It doesn't affect the visual representation in any way. But there's a rule -- if something's in HTML, then it also must be in the DOM tree. +আমরা মনে হতে পারে, কমেন্ট এর DOM এ কোন রিপ্রেজেন্ট নেই, তারপরও কেন এটি এসেছে। DOM ট্রি এর রুল অনুসারে HTML এর সকল কিছুই একেকটি নোড। -**Everything in HTML, even comments, becomes a part of the DOM.** +**HTML এর সকল কিছুই, এমনকি কমেন্টস হল DOM এর অংশ।** +<<<<<<< HEAD +এমনকি `<!DOCTYPE...>` ও DOM নোডের অংশ। এটি `<html>` নোডের পূর্বে থাকে। DOM নিয়ে কাজ করার সময় আমরা এর ব্যবহার করি না, তাই উপরোল্লিখিত ডায়াগ্রামে আমরা এটি দেখাইনি, কিন্তু এটিও DOM এর একটি অংশ। +======= Even the `<!DOCTYPE...>` directive at the very beginning of HTML is also a DOM node. It's in the DOM tree right before `<html>`. Few people know about that. We are not going to touch that node, we even don't draw it on diagrams, but it's there. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 +`document` অবজেক্ট সমস্ত ডকুমেন্ট কে প্রদর্শন করে, object that represents the whole document is, formally, a DOM node as well. The `document` object that represents the whole document is, formally, a DOM node as well. There are [12 node types](https://dom.spec.whatwg.org/#node). In practice we usually work with 4 of them: -1. `document` -- the "entry point" into DOM. -2. element nodes -- HTML-tags, the tree building blocks. -3. text nodes -- contain text. -4. comments -- sometimes we can put information there, it won't be shown, but JS can read it from the DOM. +১. `document` -- এর সাহায্যে DOM এ এক্সেস করা হয়। +২. element nodes -- HTML-tags, এদের সাহায্যে DOM ট্রি গঠন করে। +৩. text nodes -- এলিম্যান্টের মাঝে যেকোন ধরণের টেক্সট। +৪. comments -- মাঝেমাঝে আমরা ডকুমেন্ট এ কমেন্ট করি, এটি ব্রাউজারে দেখা যাবে না, কিন্ত JS ইঞ্জিন এটি এক্সেস করতে পারবে। -## See it for yourself +## আরো বিস্তারিত +<<<<<<< HEAD +রিয়েল-টাইমে DOM স্ট্রাকচার দেখতে এখানে ভিজিট করুন, [Live DOM Viewer](http://software.hixie.ch/utilities/js/live-dom-viewer/)। ডকুমেন্ট এ টাইপ করুন, এটি DOM স্ট্রাকচারটি দেখাবে। +======= To see the DOM structure in real-time, try [Live DOM Viewer](https://software.hixie.ch/utilities/js/live-dom-viewer/). Just type in the document, and it will show up as a DOM at an instant. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Another way to explore the DOM is to use the browser developer tools. Actually, that's what we use when developing. +আমরা ব্রাউজারের ডেভটুলেও DOM স্ট্রাকচার দেখতে পারি। আমরা ডেভলাপমেন্টের সময় এভাবেই দেখি। -To do so, open the web page [elk.html](elk.html), turn on the browser developer tools and switch to the Elements tab. +এজন্য, এটি ওপেন করুন [elk.html](elk.html), ব্রাউজারের ডেভলাপার টুলসটি ওপেন করুন, এলিম্যান্ট ট্যাব এ যান। -It should look like this: +এটি এমন দেখাবে: ![](elk.svg) -You can see the DOM, click on elements, see their details and so on. +এখানে আমরা DOM ট্রি দেখতে পাচ্ছি, এলিম্যান্টে ক্লিক করলে এর বিস্তারিত দেখব। -Please note that the DOM structure in developer tools is simplified. Text nodes are shown just as text. And there are no "blank" (space only) text nodes at all. That's fine, because most of the time we are interested in element nodes. +দয়া করে মনে রাখুন, ডেভলাপার টুলস এ আমরা DOM স্ট্রাকচার অনেকটা সংক্ষিপ্তাকারে দেখব। টেক্সট নোড সমূহকে শুধুমাত্র টেক্সট আকারে দেখব, এছাড়াও স্পেস বা খালির জন্য কোন টেক্সট নোড দেখব না। এটি ঠিক আছে, কেননা বেশিরভাগ সময় আমরা এলিম্যান্ট নোড নিয়েই কাজ করব। -Clicking the <span class="devtools" style="background-position:-328px -124px"></span> button in the left-upper corner allows us to choose a node from the webpage using a mouse (or other pointer devices) and "inspect" it (scroll to it in the Elements tab). This works great when we have a huge HTML page (and corresponding huge DOM) and would like to see the place of a particular element in it. +উপরের বাম-পাশের কর্নারের <span class="devtools" style="background-position:-328px -124px"></span> বাটনটি ক্লিক করে আমরা ওয়েবপেজের বিভিন্ন নোড সমূহের বিস্তারিত জানতে পারি। আমরা অনেক বড় ওয়েব পেজ যার মধ্যে অনেক কন্টন্ট থাকে তার মধ্যে কোন নির্দিষ্ট নোডের বিস্তারিত জানতে এটি অনেক কাজের। -Another way to do it would be just right-clicking on a webpage and selecting "Inspect" in the context menu. +অথবা "Inspect" এর কন্টেক্সট মেন্যু তে কোন এলিম্যান্টে ক্লিক করেও দেখতে পারি। ![](inspect.svg) -At the right part of the tools there are the following subtabs: -- **Styles** -- we can see CSS applied to the current element rule by rule, including built-in rules (gray). Almost everything can be edited in-place, including the dimensions/margins/paddings of the box below. -- **Computed** -- to see CSS applied to the element by property: for each property we can see a rule that gives it (including CSS inheritance and such). -- **Event Listeners** -- to see event listeners attached to DOM elements (we'll cover them in the next part of the tutorial). -- ...and so on. +ডানপাশে আরো কিছু সাব ট্যাবস আছে: +- **Styles** -- আমরা এর মধ্যে CSS স্ট্যাইল লিখতে পারব। CSS এর সকল প্রপার্টি এখানে লিখতে পারব যেমন মার্জিন/প্যাডিং/ফন্ট ইত্যাদি। +- **Computed** -- এর মধ্যে CSS প্রপার্টিসমূহ কিভাবে অ্যাপ্লাই হবে তা দেখব (এমনকি প্যারেন্টের যেসব স্ট্যাইল সংযুক্ত হয়)। +- **Event Listeners** -- *event listeners* সমূহ কিভাবে DOM এলিম্যান্টের সাথে সংযুক্ত হয় তা দেখব (পরবর্তী অধ্যায়ে আমরা বিস্তারিত জানব)। +- ...ইত্যাদি। -The best way to study them is to click around. Most values are editable in-place. +এদের নিয়ে আরো বিস্তারিত জানার জন্য ক্লিক করে করে দেখুন এবং বেশিরভাগ ভ্যালুই ইডিট করা যায়। -## Interaction with console +## কনসোলের সাথে ইন্টার‍্যাকশন -As we work the DOM, we also may want to apply JavaScript to it. Like: get a node and run some code to modify it, to see the result. Here are few tips to travel between the Elements tab and the console. +যখন আমরা DOM নিয়ে কাজ করব, আমরা এর মধ্যে জাভাস্ক্রিপ্ট সংযোগ করতে চাই। যেমন: আমরা কোন একটি নোডকে সিলেক্ট করব এবং এটিকে মোডিফাই করব। নিচে এলিম্যান্ট ট্যাব এবং কনসোল ট্যাব নিয়ে কয়েকটি টিপস দেয়া হল। -For the start: +চলুন দেখা যাক: -1. Select the first `<li>` in the Elements tab. -2. Press `key:Esc` -- it will open console right below the Elements tab. +১. প্রথমে এলিম্যান্ট ট্যাবে `<li>` কে সিলেক্ট করুন। +২. কিবোর্ডে `key:Esc` বাটন চাপুন, এলিম্যান্ট ট্যাবের নিচে কনসোল ট্যাব চালু হবে। -Now the last selected element is available as `$0`, the previously selected is `$1` etc. +এখন শেষ সিলেক্টেড এলিম্যান্টটি `$0` এর মাধ্যমে এক্সেস করতে পারব, এবং এর পূর্ববর্তীটি `$1` এ, এভাবে এক্সেস করতে পারি। -We can run commands on them. For instance, `$0.style.background = 'red'` makes the selected list item red, like this: +এখন আমরা এদের জন্য কমান্ড চালাতে পারি। যেমন, `$0.style.background = 'red'` দ্বারা শেষ সিলেক্টেড এলিম্যান্টটি লাল হবে, এভাবে: ![](domconsole0.svg) -That's how to get a node from Elements in Console. +এভাবেই আমরা কনসোলে সিলেক্টেড এলিমেন্ট পেতে পারি। -There's also a road back. If there's a variable referencing a DOM node, then we can use the command `inspect(node)` in Console to see it in the Elements pane. +এছাড়াও আরো একটি উপায় আছে। আমরা DOM নোডটিকে `node` ভ্যারিয়েবলে রেফারেন্স করে কনসোলে `inspect(node)` লিখলে আমরা এলিম্যান্ট টা পাব। -Or we can just output the DOM node in the console and explore "in-place", like `document.body` below: +অথবা আমরা এ DOM নোডে কনসোলে, এভাবে `document.body` এর মাধ্যমেও পারব: ![](domconsole1.svg) -That's for debugging purposes of course. From the next chapter on we'll access and modify DOM using JavaScript. +এটি অবশ্যই ডিবাগিংয়ের জন্য। পরবর্তী অধ্যায়ে আমরা জাভাস্ক্রিপ্টের সাহায্যে DOM মোডিফাই করব। -The browser developer tools are a great help in development: we can explore the DOM, try things and see what goes wrong. +ডেভলাপার টুল আমাদের ডেভলাপমেন্ট আরো সহজ করে, এর সাহায্যে আমরা ডমের বিভিন্ন ডিবাগিং এবং বিস্তারিত দেখতে পারি। -## Summary +## সারাংশ -An HTML/XML document is represented inside the browser as the DOM tree. +HTML/XML ডকুমেন্ট সমূহ ব্রাউজারে DOM ট্রি হিসেবে রিপ্রেজেন্ট হয়। -- Tags become element nodes and form the structure. -- Text becomes text nodes. -- ...etc, everything in HTML has its place in DOM, even comments. +- ট্যাগসমূহ এলিমেন্ট নোড হিসেবে ট্রি স্ট্রাকচার গঠন করে। +- টেক্সট সমূহ টেক্সট নোড আকারে থাকে। +- এছাড়াও, HTML এর সকল কিছুই DOM ট্রিতে থাকে, এমনকি কমেন্টও। -We can use developer tools to inspect DOM and modify it manually. +আমরা ডেভলাপার টুলের সাহায্যে DOM কে এক্সেস করতে এবং পরিবর্তন করতে পারি। -Here we covered the basics, the most used and important actions to start with. There's an extensive documentation about Chrome Developer Tools at <https://developers.google.com/web/tools/chrome-devtools>. The best way to learn the tools is to click here and there, read menus: most options are obvious. Later, when you know them in general, read the docs and pick up the rest. +এখানে আমরা ডেভলাপার টুলের কিছু প্রাথমিক এবং দরকারী টুলস সম্পর্কে জেনেছি। এ সম্পর্কে আরো বিস্তারিত এখানে দেখুন <https://developers.google.com/web/tools/chrome-devtools>। এ সম্পর্কে আরো বিস্তারিত জানতে প্রতিটি ম্যানু ক্লিক করে দেখুন। পরবর্তীতে এ সম্পর্কে আরো বিস্তারিত জানতে আমরা ডকুমেন্টশন অনুসরন করব। -DOM nodes have properties and methods that allow us to travel between them, modify them, move around the page, and more. We'll get down to them in the next chapters. +DOM নোডের বিভিন্ন প্রপার্টি এবং মেথড এর সাহায্যে আমরা DOM এ তাদের এক্সেস, পরিবর্তন ইত্যাদি করতে পারি। পরবর্তী অধ্যায়ে আমরা এ সম্পর্কে আরো বিস্তারিত জানব। \ No newline at end of file diff --git a/2-ui/1-document/02-dom-nodes/domconsole0.svg b/2-ui/1-document/02-dom-nodes/domconsole0.svg index eb99f193f..ea0d9141c 100644 --- a/2-ui/1-document/02-dom-nodes/domconsole0.svg +++ b/2-ui/1-document/02-dom-nodes/domconsole0.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="699" height="450" viewBox="0 0 699 450"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="rect-1" d="M0 0h699v450H0z"/><path id="path-2" d="M72 305v21.429l5.25-5.358L81.625 330h1.75s1.13-1.161.875-1.786c-1.203-2.947-4.375-8.928-4.375-8.928H86L72 305z"/><filter id="filter-3" width="195.6%" height="153.8%" x="-42.9%" y="-25.8%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1" result="shadowSpreadOuter1"/><feOffset dy="1" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 0.0941176471 0 0 0 0 0.0901960784 0 0 0 0 0.0901960784 0 0 0 1 0"/></filter></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="domconsole0.svg"><g id="Bitmap"><image width="699" height="450" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABXYAAAOECAYAAAAFQmncAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAFdqADAAQAAAABAAADhAAAAACmbANtAABAAElEQVR4AezdCbytU9048LXvaChDROYQitIgGTOXJGlEKUXl3+BVUqTB0JuKQoVEA2UeGpBkTOilDKGUmUyZ5+FO5+z/+j3us++z9z3zcJ199nd9PufuZ1zPWt/13Ft+Z+3fqtVzSQoBAgQIECBAgAABAgQIECBAgAABAgQItI3AhLZpqYYSIECAAAECBAgQIECAAAECBAgQIECAQCEgsOtFIECAAAECBAgQIECAAAECBAgQIECAQJsJCOy22YBpLgECBAgQIECAAAECBAgQIECAAAECBAR2vQMECBAgQIAAAQIECBAgQIAAAQIECBBoMwGB3TYbMM0lQIAAAQIECBAgQIAAAQIECBAgQKCzBbq6ulKtnktnM+g9AQIECBAgQIAAAQIECBAgQIAAAQIE2kvAjN32Gi+tJUCAAAECBAgQIECAAAECBAgQIECAQBLY9RIQIECAAAECBAgQIECAAAECBAgQIECgzQQEdttswDSXAAECBAgQIECAAAECBAgQIECAAAECArveAQIECBAgQIAAAQIECBAgQIAAAQIECLSRQCybJrDbRgOmqQQIECBAgAABAgQIECBAgAABAgQIEIjAbi3/UUdBgAABAgQIECBAgAABAgQIECBAgAABAu0jYMZu+4yVlhIgQIAAAQIECBAgQIAAAQIECBAgQKAQENj1IhAgQIAAAQIECBAgQIAAAQIECBAgQKDNBAR222zANJcAAQIECBAgQIAAAQIECBAgQIAAgc4W6O7utnhaZ78Cek+AAAECBAgQIECAAAECBAgQIECAQLsJ1Go1gd12GzTtJUCAAAECBAgQIECAAAECBAgQIECgswUEdjt7/PWeAAECBAgQIECAAAECBAgQIECAAIE2FRiTOXZnzZqVHnjggTYlHVvNfuaZZ9KTTz45thqVWzN9+vT08MMPj7l2tUuDbr311nTXXXf12Vy+ffI4SYAAAQIECBAgQIAAAQIECBBoa4FJQ239H//4x3TFFVcM9fbGfQsttFDac8890xNPPJH+9Kc/pXPOOSeddtppaYcddkjHHHNM4zobAxe455570vnnn5/OPvvsdOaZZ6YTTjgh7bjjjgOvYJSufPTRR9PFF1+c4t05/fTT02677Za+/e1vj9LTxle1M2fOTH/961/TeeedV/z9uOWWW9JBBx2U9tprr0ZHn3322XTppZemc889N/32t79NSyyxRLrmmmsa520QIECAAAECBAgQIECAAAECBAiMH4EhB3YjcHjYYYcNW+KlL31pet3rXpe23HLLYdelgpT233//dMABB4w5iu9///vpy1/+8phrVzs06PHHH08rrLBCevrpp3tt7ve+972mIG9cGIFdhQABAgQIECBAgAABAgQIECBAYHwKDDkVw/PPP98Q+fjHP57OOuusdOWVV6aYSXjJJZc0zsXGfvvtl+Kr49dee2264IIL0ne+851G0CmCVZtvvnm6/fbb0wc/+MGm++wMXmDvvfdO1113XVp11VUHf/Mo3vG5z30u3XjjjWmDDTYYxaeMz6oXXXTR9Nhjj6Xbbrstrbnmmj12co899iiuGYtB/R4b7CABAgQIECBAgAABAgQIECBAgMCwBIYc2I2vfUc58sgj07HHHpu22WabtM4666RVVlklvepVr2pq1NJLL10ce+Mb35i22GKL9JWvfCX95S9/aVwzceLEtNJKK6X3ve99jWNjcSPy/r797W8fM02Lr+JHSoNqmX/++dPrX//6tNlmm1UPv+jb0a7VV189bbXVVi96W0aiAfHLi0ghMq/KpEmT0sorr5w22WSTHh8Z5yMA/N73vrfH8w4SIECAAAECBAgQIECAAAECBAiML4EhB3anTZtWzLr99Kc/PSSRCP5GjtUosVhalEjLMFZLV1dX2mmnndL1118/JpoY+YgjQN7b1/Mjd/FYLGO1XYOxigD/9ttv/6Is/rbIIov02dQpU6b0ed5JAgQIECBAgAABAgQIECBAgACB9heo1+tpyIHd5557Lr3//e9PEyYMuYpilm8wzpgxY8xrfvOb3yzSSIyFht53331p2223HQtN6bg2xC8hPvShD6WHHnqo4/quwwQIECBAgAABAgQIECBAgAABAmNDoFarpSEvnhYLpy244ILD6kl8rTxSMiywwAL91hMBtfiZb775+r12pC/44Q9/mCKwO9ASs2irs48jCB6pCAJ8uOX+++8v0kH0NlN3IPXHbOv46n78jESJ3xA8/PDD6amnnkqvfOUrh1zvcNoVM6ojpcdolvgFxMc+9rG5ckiPxDPDcCTej5FoizoIECBAgAABAgQIECBAgAABAgTGvsCQp9tGLt3InTucEl8bX3/99Xutoru7O5166qnpLW95S5o8eXIRHN1www2LnL693pRPxCJTsYhYXBtf/Y+fyI17yimn9HVbj+f233//9IUvfKFxLmZqbrTRRsXPpptumiJoGyUCixdffHHacccdi+fF4nL/+Mc/ivQNEQB/9atfnT772c+mNdZYo+nnj3/8Y6PuCB63no97yhL9ijzG//rXv8pDxcJ0ZXt++tOfNo63bjzzzDPp4IMPLvK0RpA5PN/97nc35Tpuvae//ZtvvrlISRCztpdccskiv3LUu95666ULL7ywv9uL8+H3rW99q6ldMVa//e1v+7w/gsCHHnpo+sAHPpCWW265Ipi82mqrFf7HHXdcinenWs4555y5bA888MDGJT2dX2uttRr1RDvf8573NL1Dv/vd7xrvwmc+85lGXQPdiHQacV/kRA7D6Md2222Xrr766oFWMeDr4pci0f53vetdc/38z//8z4DrcSEBAgQIECBAgAABAgQIECBAgMCLLxCxryEHdke7+TNnzkyRv3eHHXZIV111VeNxMcN3l112Sb/5zW8ax6obESh905velCK4F3l8I11ElAsuuKD4Cn0EtqZPn169pdftaMMNN9yQNthgg6ZrXvayl6X4icWqnnjiiSKIHEHuzTffPJ100knFtf/+97+L+44//vhi/5ZbbilmHB9++OFFYDaCs/Hz6KOPNureY489inZHILo8H8HTskTAL4KN1dnASyyxRNGWaE8EbHsqEYyOxdQi2H3HHXc0Ljn77LOLxcwiYDzYEouHRbD6tNNOS9Huu+++O0WKiAgSXnnlleltb3tbimBpX+WRRx5JsaDeN77xjaZ2xVjFQnpxPGaytpYbb7yxCHDH4mWPP/54EdyOIO3CCy9c+O+8887FWNx+++2NW2PRtpNPPrmY8V3a/uc//2mcj/bGOxVB6fL8tdde23h+1BW/iFh11VUb98TzyndhMLmDo0/f/e53izG59NJLi/ckFj279957i8Xw1l577SLY3XjQCGzE7OyYeR4lxiV+Fl988SIw/vnPf34EnqAKAgQIECBAgAABAgQIECBAgACBeSVQpMfN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ETyOUg3sRpqFf//738Xxnv646667GofL+xsHZm888cQTrYcGtT9Y+5e//OVNC9Ttu+++vT7vqaeeSttss036y1/+0us1AzkRYxPjVaa2iPzH73vf+9Jzzz03kNtdQ4AAAQIECBAgQIAAAQIECBAgMAYFurq60qgEdp955pmm7j7//PNN+73tVANl1e3q9dXj0YGy7LrrruVmMSMxZpT2FDT97ne/W8ww/frXv56mTJnSuKevjQUXXLBxOlI9RH7U4ZRFF120cXu56Ft5IALP559/frnb4+zKCHaW5b777is3mz5nzpzZ2K9ulwdbg+9V1/Ka3j6rQdMHHnig6bIIqP/zn/9sHOstwN64oIeNWCStDGgeccQR6SUveUlxVQSRywBlHPjVr37Vw90pPfzww0WKiDi51VZbpbe85S2N6xZaaKHGdk+zfi+88MLG+diIuqql+i5Uc/5Wr+lr+4tf/GLj9EknnZQOPPDAVH2P42SMV7y/4bDXXns1rh/qxsILL5x+85vfNG6/6qqr0ic+8YliMbXGwZaNmNUbs9rDY7jve0vVdgkQIECAAAECBAgQIECAAAECBIYpEKlpRyWw2/pV7/7yoZb9ePzxx8vNFIug9VSqgbbHHnusccnmm2+eNthgg8b+b3/72xQ5Rr/1rW+ls846qwgCxjWRZ3TrrbcuAluNi/vZWGaZZZquOO+884r9U089Ne24447FdgRKH3roocZ1rQHPxom88epXv7qx+5Of/CT9+te/LoLQEdCN4GXMJi7LLbfckmLhq+oMy1VWWaU8naKfEZQNu3e9610pFjSLUrWpupY3xozQaunpmur56nYECsty1FFHpSOPPLKYPRseW2yxRZPDH//4xxSpGyIHb2vpKTAaM0ojfUCUGM+PfOQjjdvmn3/+YvZpeSCC9Jdffnm52/j8+c9/3tiuWsbBVVddtXEugvQxazasIsi79957F7NZGxfkjWOOOSY98sgjjUPVdAqXXnppuv/++4vAbARgw6G/svvuuzddEr9g2HTTTdPhhx9ejHMEsuP9iDGP/lVnoseN1fe/p19cVH+pEu9jGZR9/etf32R3yimnpM9//vM9BncjR/Vaa62V9txzz/S2t72t39QmTR2yQ4AAAQIECBAgQIAAAQIECBAgMG8EckByxMqzzz5bv/LKK+s5IBe5GBo/eYZp/Xe/+109B6V6fVYONNY322yzxj1x/1//+tem66+44oqm81tuuWU9nlmWm266qZ5ndDZdU21HbK+99tr1HBArbxnwZ9xXrWuJJZYo9nOQt54DYfUcoG06n2dc1qM9ObA21zNy0LceJtX6yu04ftppp811Li9Q1qjn3HPPbTpf1pUD1vU8O7qec7c21Z+DmfU8s7dxf54hWs+zMZvq2G+//Xpsa+Omykbr88u2x+e2225b32OPPZrqjuPf//73ixrCq3p9TotRvBs5IF0/9thj6zkYX5wPvxxsrjx1zmYO1jbqiL5fcMEFxRjkma71E044oXEuHFtLDoLP9Z5V25ODs3O9Q3nxtXqYRcm/cGjUX94XbYj37s477yyu6e+P/IuGueoo6yo/P/3pT881HjfeeGPTuObcwfUHH3yw8bh4D1vtf/nLXzbOx8Z73/vepmfn/Lv1/IuYpmtyGoyma6ItCgECBAgQIECAAAECBAgQIECAwNgSiBl7I1LyrNymYFAZoGr9zDNo53re2Wef3eu9ecZgcf0mm2zS6zURiCpLBLoi4Nv63NjPMyDreeG08tJBfcYzygBq1BWB3Qhi55QBPT6rfP4OO+zQ43MiaB2BufK6+Iw+xnMi0Bb76667bv3HP/5x/T//+c9cdeyyyy5N90bwLfqW8ws3Ha/WH/Z59mlTP6rno09lAHOuB7YcyDNLm54Twc+f/exnRTAyz4QtAuhRd9QZz63WG3382Mc+NlcANa6PwG4EePsrV199dT0C1tX2l+OTc+rWc/7dXqvIs2zrOX9t070RmM3pCop7Yjv6c8ABB9Svu+66uQKsebG4pnvjFxkRrB9MyekQ5mp/6XXmmWc2VRUB62hPta/V7XhvckqHXs+Hy7/+9a/6N7/5zV6vifemLDFW1Xczp2MoT/kkQIAAAQIECBAgQIAAAQIECBAYIwK1aEcOEo27EqkLclCuSAsQX7+P9AWTJ08eVj8j92ks2BW5eVdbbbVhLxoWKRRuvfXWFGkRllpqqbT88ssX7YvnRPqK6tf+e2p4pAGIHLvx1f0cvOvpklE9Fsa33XZbiry10fYJE5oze+QZrMXxyPnRW4kUEJESoTQdaN7jsr5I55ADxSny/obXG97whsKyPN/XZxiHYeQ8jnsnTZpUXB6pI+J9ae1Pta4Ys7gu0nQsvfTS1VOD2o40D7EQXA6mpte85jVphRVWGPZ7NagG9HJx/iVB+r//+78ip3H5XvZyqcMECBAgQIAAAQIECBAgQIAAAQLzWCBCuuM2sDuPLT2OAAECBAgQIECAAAECBAgQIECAAAEC80Qg1lUS2J0n1B5CgAABAgQIECBAgAABAgQIECBAgACBkRNo/u78yNWrJgIECBAgQIAAAQIECBAgQIAAAQIECBAYJQGB3VGCVS0BAgQIECBAgAABAgQIECBAgAABAgRGS0Bgd7Rk1UuAAAECBAgQIECAAAECBAgQIECAAIFREIgcuwK7owCrSgIECBAgQIAAAQIECBAgQIAAAQIECIyWQK1WE9gdLVz1EiBAgAABAgQIECBAgAABAgQIECBAYDQEBHZHQ1WdBAgQIECAAAECBAgQIECAAAECBAgQGGUBqRhGGVj1BAgQIECAAAECBAgQIECAAAECBAgQGGkBgd2RFlUfAQIECBAgQIAAAQIECBAgQIAAAQIERllAYHeUgVVPgAABAgQIECBAgAABAgQIECBAgACBkRYQ2B1pUfURIECAAAECBAgQIECAAAECBAgQIEBglAUEdkcZWPUECBAgQIAAAQIECBAgQIAAAQIECBAYaQGB3ZEWVR8BAgQIECBAgAABAgQIECBAgAABAgRGUaBeryeB3VEEVjUBAgQIECBAgAABAgQIECBAgAABAgRGWqBWqwnsjjSq+ggQIECAAAECBAgQIECAAAECBAgQIDDaAmbsjraw+gkQIECAAAECBAgQIECAAAECBAgQIDCCAt3d3amW8zHUR7BOVREgQIAAAQIECBAgQIAAAQIECBAgQIDAKAuYsTvKwKonQIAAAQIECBAgQIAAAQIECBAgQIDASAsI7I60qPoIECBAgAABAgQIECBAgAABAgQIECAwigKRhEFgdxSBVU2AAAECBAgQIECAAAECBAgQIECAAIHREBDYHQ1VdRIgQIAAAQIECBAgQIAAAQIECBAgQGCUBGq1mhm7o2SrWgIECBAgQIAAAQIECBAgQIAAAQIECIyagBm7o0arYgIECBAgQIAAAQIECBAgQIAAAQIECIyOgMDu6LiqlQABAgQIECBAgAABAgQIECBAgAABAqMmILA7arQqJkCAAAECBAgQIECAAAECBAgQIECAwOgICOyOjqtaCRAgQIAAAQIECBAgQIAAAQIECBAgMCoCXV1dqVbPZVRqVykBAgQIECBAgAABAgQIECBAgAABAgQIjIqAGbujwqpSAgQIECBAgAABAgQIECBAgAABAgQIjJ6AwO7o2aqZAAECBAgQIECAAAECBAgQIECAAAECoyIgsDsqrColQIAAAQIECBAgQIAAAQIECBAgQIDA6AkI7I6erZoJECBAgAABAgQIECBAgAABAgQIECAw4gKxbJrA7oizqpAAAQIECBAgQIAAAQIECBAgQIAAAQKjJxCB3Vr+oz56j1AzAQIECBAgQIAAAQIECBAgQIAAAQIECIy0gBm7Iy2qPgIECBAgQIAAAQIECBAgQIAAAQIECIyygMDuKAOrngABAgQIECBAgAABAgQIECBAgAABAiMtILA70qLqI0CAAAECBAgQIECAAAECBAgQIECAwCgKdHd3WzxtFH1VTYAAAQIECBAgQIAAAQIECBAgQIAAgREXqNVqArsjrqpCAgQIECBAgAABAgQIECBAgAABAgQIjKJABHYnjWL9qu5LYGKtr7POESBAgAABAgQIECBAgAABAgQIECAwngW66sPqnRy7w+JzMwECBAgQIECAAAECBAgQIECAAAECBOa9gMDuvDf3RAIECBAgQIAAAQIECBAgQIAAAQIECAxLQGB3WHxuJkCAAAECBAgQIECAAAECBAgQIECAwLwXENid9+aeSIAAAQIECBAgQIAAAQIECBAgQIAAgWEJCOwOi8/NwxHoSrV09XyT01N9rCM3I597YlIfFwynAfneuyZPHGYNbidAgAABAgQIECBAgAABAgQIECAw7wUEdnswf/zxx9MBBxyQdt999x7OzttDV06dmF5Rm5DuH8Xg5rzsUQRxz55vUvrMfFPSMrVaWvu5melfU5qDqw/m/p4439T0kXzN4mlC+s6kySPexJm5xnUmT04rTu8qPmNfIUCAAAECBAgQIECAAAECBAgQINAOAvV6PU1qh4bOqzY++eST6YgjjkgHHXRQevrpp9PWW289rx7d63OOqE1MD3bNSMdMnZL2nzWj1+va4cRFU6akLablPjw3q9fmbjtlajpr2vR8Tf4ZxXJ9nin8txxUjvK36TPTX3MQecMZ7e07ilyqJkCAAAECBAgQIECAAAECBAgQGEMCtTxh0ozdPCDPPPNMOvjgg9Nyyy2Xvv71rxdB3bEwTjFL98TnXgg2Hjp9Vnouz2Rt57LZzBlp1oRa+vMC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7llzpaiIFAyL5OdU0ya01tG6H+172ex8uP/N79X9UX+uY8UcgF28OetB662jvh9tuzsHbZfJQf7WBeNiZvF/c3A7FnsbTgnLm3KgfWZO6fHqnId5yvD+TRxOU9xLgAABAgQIECBAgAABAgQIEBi4wDDjZwK7A6ce2SvHWWB3ZHHURoAAAQIECBAgQIAAAQIECBAgQGCcCwwjsNvdnScejnMe3SNAgAABAgQIECBAgAABAgQIECBAgMC4EqjlNasEdsfVkOoMAQIECBAgQIAAAQIECBAgQIAAAQLjXUBgd7yPsP4RIECAAAECBAgQIECAAAECBAgQIDAuBczYHZfDqlMECBAgQIAAAQIECBAgQIAAAQIECIxnAYHd8Ty6+kaAAAECBAgQIECAAAECBAgQIECAwLgUENgdl8OqUwQIECBAgAABAgQIECBAgAABAgQIjGeBWj2X8dxBfSNAgAABAgQIECBAgAABAgQIECBAgMB4EzBjd7yNqP4QIECAAAECBAgQIECAAAECBAgQIDDuBQR2x/0Q6yABAgQIECBAgAABAgQIECBAgAABAuNJIJIwCOyOpxHVFwIECBAgQIAAAQIECBAgQIAAAQIExr1ArVYT2B33o6yDBAgQIECAAAECBAgQIECAAAECBAiMOwEzdsfdkLZfh2677bb2a/SL3OL7778/zZgx40VuRXs+fjzY3Xrrremuu+5qzwHQagIECBAgQIAAAQIECBAgQGDYAt3d3Wbslor33HNP2nvvvdOmm26allxyybTWWmulT37yk+ncc88tL/E5QgIRkLz88svTfvvtl1ZbbbW0yiqrjFDNnVHNnnvumZZZZpm03HLLJUHxwY15u9rNnDmz+DvzjW98o/g7s+qqq6bTTjut184/++yzafPNN0/xtYx999231+ucIECAAAECBAgQIECAAAECBNpTYMKECamWE+3W27P5I9fqgw8+uAjq9lbjRz/60XTUUUelBRdcsLdLHB+gwL/+9a+0xhprzHW113Aukh4PdHV1pUmTJjXOHXjggemrX/1qY99G7wLtavf444+nFVZYIT399NNNnTvooIPSXnvt1XSs3IlfSL3zne8sd9Ojjz6aXvaylzX2bRAgQIAAAQIECBAgQIAAAQLtL9DxqRiOP/74pqBuzIRrLXHNPvvs03rY/hAEVl999fTMM8+kX/7yl427X/rSlza2bfQtMHHixLTBBhs0LlpvvfUa2zb6FmhXu0UXXTQ99thjxezsNddcs+9Ozj573XXXNV330EMPNe3bIUCAAAECBAgQIECAAAECBNpbICZJdnRgN77GvtNOOxWjeNJJJ6Xp06enm2++OcXXnn/60582je7hhx+errrqqqZjdoYmEDOft9pqq6Hd7K4iPcgJJ5yQrrnmmiJ1CJKBC8RM1na0i1naK6+8ctpkk00G1NkIYldL/NumECBAgAABAgQIECBAgAABAuNLYM53usdXvwbUm5NPPrm47oYbbkive93rGvdEECXy67785S9P73nPexrHL7nkkrT22ms39m0MXWC++eZr3Dz//PM3tm30LxAznHfcccf+L3TFXALtbrfIIovM1aeeDiyxxBJNh1v3m07aIUCAAAECBAgQIECAAAECBNpOINbV6egZu8cdd1yKHKXVoG51FLfddtv01re+tXEoAsAKAQIExrpA5OStllgQUiFAgAABAgQIECBAgAABAgTGl0DHBnbvvvvuItfrpz/96T5HdP311+/zfDudnDVrVrrnnnuKn8EsVjZt2rSmbsYiVM8991zTsYHsRG7d559/fiCXDumaSKHx1FNPDeneodzUU19aF7jqq97h3h919/cV+5Eau2effXZIY95X/+NcvIeR/zXSosT7OdAyL+wG2pbhXDfU/vf3zOWXX75xyUorrZRipUyFAAECBAgQIECAAAECBAgQGF8CHftf+xH4ePDBB/tdKX6hhRZqjHhvM3sbF4zRjQsvvDDFIluTJ09O0e/4WXjhhdO73vWu9J///GeuVkew6eqrr07f+MY3iryee++9d3FNpKL4zGc+k5ZeeukUeXLf+c53pssvv3yu+6sHbr311iKtReQHja/BL7DAAmmjjTZKv/vd76qXDXn7gQceSF/60pfShhtumKZMmVL0K8Zsu+22S9dee22j3nPOOSetscYaTT8xW7ssPZ1fa621Und3d3lJ8XnHHXekH/zgB4XnG97whuJY5GX+2te+llZbbbUUz477jj322Kb7yp3h3h/1xC8lDjnkkOJ5Bx10UFl18TmSYxe2O++8c/EOvOQlLynGPPq2++67p1hQ8B//+EeKgG8E0yOoPpgSZttvv30RcIzZpKusskrxfsZ7Gu9rT2W07eKZMd6XXnpp8c6Ws1yffPLJdPDBBxfv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595yyy1ppZVWKmbtxozeWCxt/fXXT7VarV27qN0ECBAgQIAAAQIECBAgQIAAgbYWqNfrSWC3rYdQ4wkQIECAAAECBAgQIECAAAECBAgQ6EQBi6d14qjrMwECBAgQIECAAAECBAgQIECAAAECbS0gsNvWw6fxBAgQIECAAAECBAgQIECAAAECBAh0mkB3d7dUDJ026PpLgAABAgQIECBAgAABAgQIECBAgED7C5ix2/5jqAcECBAgQIAAAQIECBAgQIAAAQIECHSYgMBuhw247hIgQIAAAQIECBAgQIAAAQIECBAg0N4C9Xo9Cey29xhqPQECBAgQIECAAAECBAgQIECAAAECHSggsNuBg67LBAgQIECAAAECBAgQIECAAAECBAi0r0CtVjNjt32HT8sJECBAgAABAgQIECBAgAABAgQIEOhUATN2O3Xk9ZsAAQIECBAgQIAAAQIECBAgQIAAgbYVENht26HTcAIECBAgQIAAAQIECBAgQIAAAQIEOlVAYLdTR16/CRAgQIAAAQIECBAgQIAAAQIECBBoWwGB3bYdOg0nQIAAAQIECBAgQIAAAQIECBAgQKATBbq6ulKtnksndl6fCRAgQIAAAQIECBAgQIAAAQIECBAg0K4CZuy268hpNwECBAgQIECAAAECBAgQIECAAAECHSsgsNuxQ6/jBAgQIECAAAECBAgQIECAAAECBAi0q4DAbruOnHYTIECAAAECBAgQIECAAAECBAgQINCxAgK7HTv0Ok6AAAECBAgQIECAAAECBAgQIECAQDsKxLJpArvtOHLaTIAAAQIECBAgQIAAAQIECBAgQIBAxwpEYLeW/6h3rICOEyBAgAABAgQIECBAgAABAgQIECBAoA0FzNhtw0HTZAIECBAgQIAAAQIECBAgQIAAAQIEOltAYLezx1/vCRAgQIAAAQIECBAgQIAAAQIECBBoQwGB3TYcNE0mQIAAAQIECBAgQIAAAQIECBAgQKBzBbq7uy2e1rnDr+cECBAgQIAAAQIECBAgQIAAAQIECLSjQK1WE9htx4HTZgIECBAgQIAAAQIECBAgQIAAAQIEOldAYLdzx17PCRAgQIAAAQIECBAgQIAAAQIECBBoYwE5dtt48DSdAAECBAgQIECAAAECBAgQIECAAIHOFBDY7cxx12sCBAgQIECAAAECBAgQIECAAAECBNpYQGC3jQdP0wkQIECAAAECBAgQIECAAAECBAgQ6EwBgd3OHHe9JkCAAAECBAgQIECAAAECBAgQIECgjQUEdtt48DSdAAECBAgQIECAAAECBAgQIECAAIHOFBDY7cxx12sCBAgQIECAAAECBAgQIECAAAECBNpUoF6vJ4HdNh08zSZAgAABAgQIECBAgAABAgQIECBAoDMFarWawG5nDr1eEyBAgAABAgQIECBAgAABAgQIECDQzgJm7Lbz6Gk7AQIECBAgQIAAAQIECBAgQIAAAQIdJ9Dd3Z1qOR9DveN6rsMECBAgQIAAAQIECBAgQIAAAQIECBBoYwEzdtt48DSdAAECBAgQIECAAAECBAgQIECAAIHOFBDY7cxx12sCBAgQIECAAAECBAgQIECAAAECBNpUIJIwCOy26eBpNgECBAgQIECAAAECBAgQIECAAAECnSsgsNu5Y6/nBAgQIECAAAECBAgQIECAAAECBAi0oUCtVjNjtw3HTZMJECBAgAABAgQIECBAgAABAgQIEOhwATN2O/wF0H0CBAgQIECAAAECBAgQIECAAAECBNpPQGC3/cZMiwkQIECAAAECBAgQIECAAAECBAgQ6HABgd0OfwF0nwABAgQIECBAgAABAgQIECBAgACB9hMQ2G2/MdNiAgQIECBAgAABAgQIECBAgAABAgQ6WKCrqyvV6rl0sIGuEyBAgAABAgQIECBAgAABAgQIECBAoO0EzNhtuyHTYAIECBAgQIAAAQIECBAgQIAAAQIEOl1AYLfT3wD9J0CAAAECBAgQIECAAAECBAgQIECg7QQEdttuyDSYAAECBAgQIECAAAECBAgQIECAAIFOFxDY7fQ3QP8JECBAgAABAgQIECBAgAABAgQIEGgrgVg2TWC3rYZMYwkQIECAAAECBAgQIECAAAECBAgQ6HSBCOzW8h/1TofQfwIECBAgQIAAAQIECBAgQIAAAQIECLSTgBm77TRa2kqAAAECBAgQIECAAAECBAgQIECAAIEsILDrNSBAgAABAgQIECBAgAABAgQIECBAgECbCQjsttmAaS4BAgQIECBAgAABAgQIECBAgAABAp0t0N3dbcZuZ78Cek+AAAECBAgQIECAAAECBAgQIECAQLsJ1Go1gd12GzTtJUCAAAECBAgQIECAAAECBAgQIECgswUEdjt7/PWeAAECBAgQIECAAAECBAgQIECAAIE2FZBjt00HTrMJECBAgAABAgQIECBAgAABAgQIEOhcAYHdzh17PSdAgAABAgQIECBAgAABAgQIECBAoE0FBHbbdOA0mwABAgQIECBAgAABAgQIECBAgACBzhUQ2O3csddzAgQIECBAgAABAgQIECBAgAABAgTaVEBgt00HTrMJECBAgAABAgQIECBAgAABAgQIEOhcAYHdzh17PSdAgAABAgQIECBAgAABAgQIECBAoA0F6vV6Ethtw4HTZAIECBAgQIAAAQIECBAgQIAAAQIEOlegVqsJ7Hbu8Os5AQIECBAgQIAAAQIECBAgQIAAAQLtKmDGbruOnHYTIECAAAECBAgQIECAAAECBAgQINCRAt3d3amW8zHUO7L3Ok2AAAECBAgQIECAAAECBAgQIECAAIE2FTBjt00HTrMJECBAgAABAgQIECBAgAABAgQIEOhcAYHdzh17PSdAgAABAgQIECBAgAABAgQIECBAoA0FIgmDwG4bDpwmEyBAgAABAgQIECBAgAABAgQIECDQ2QICu509/npPgAABAgQIECBAgAABAgQIECBAgECbCdRqNTN222zMNJcAAQIECBAgQIAAAQIECBAgQIAAAQICu94BAgQIECBAgAABAgQIECBAgAABAgQItJuAVAztNmLaS4AAAQIECBAgQIAAAQIECBAgQIBAxwsI7Hb8KwCAAAECBAgQIECAAAECBAgQIECAAIF2ExDYbbcR014CBAgQIECAAAECBAgQIECAAAECBDpaoKurK9XquXS0gs4TIECAAAECBAgQIECAAAECBAgQIECgzQTM2G2zAdNcAgQIECBAgAABAgQIECBAgAABAgQICOx6BwgQIECAAAECBAgQIECAAAECBAgQINBmAgK7bTZgmkuAAAECBAgQIECAAAECBAgQIECAAAGBXe8AAQIECBAgQIAAAQIECBAgQIAAAQIE2kgglk0T2G2jAdNUAgQIECBAgAABAgQIECBAgAABAgQIRGC3lv+ooyBAgAABAgQIECBAgAABAgQIECBAgACB9hEwY7d9xkpLCRAgQIAAAQIECBAgQIAAAQIECBAgUAgI7HoRCBAgQIAAAQIECBAgQIAAAQIECBAg0GYCArttNmCaS4AAAQIECBAgQIAAAQIECBAgQIBAZwt0d3dbPK2zXwG9J0CAAAECBAgQIECAAAECBAgQIECg3QRqtZrAbrsNmvYSIECAAAECBAgQIECAAAECBAgQINDZAgK7nT3+ek+AAAECBAgQIECAAAECBAgQIECAQJsKyLHbpgOn2QQIECBAgAABAgQIECBAgAABAgQIdK6AwG7njr2eEyBAgAABAgQIECBAgAABAgQIECDQpgICu206cJpNgAABAgQIECBAgAABAgQIECBAgEDnCgjsdu7Y6zkBAgQIECBAgAABAgQIECBAgAABAm0qILDbpgOn2QQIECBAgAABAgQIECBAgAABAgQIdK6AwG7njr2eEyBAgAABAgQIECBAgAABAgQIECDQhgL1ej0J7LbhwGkyAQIECBAgQIAAAQIECBAgQIAAAQKdK1Cr1QR2O3f49ZwAAQIECBAgQIAAAQIECBAgQIAAgXYVMGO3XUdOuwkQIECAAAECBAgQIECAAAECBAgQ6EiB7u7uVMv5GOod2XudJkCAAAECBAgQIECAAAECBAgQIECAQJsKmLHbpgOn2QQIECBAgAABAgQIECBAgAABAgQIdK6AwG7njr2eEyBAgAABAgQIECBAgAABAgQIECDQhgKRhEFgtw0HTpMJECBAgAABAgQIECBAgAABAgQIEOhsAYHdzh5/vSdAgAABAgQIECBAgAABAgQIECBAoM0EarWaGbttNmaaS4AAAQIECBAgQIAAAQIECBAgQIAAAYFd7wABAgQIECBAgAABAgQIECBAgAABAgTaTUAqhnYbMe0lQIAAAQIECBAgQIAAAQIECBAgQKDjBQR2O/4VAECAAAECBAgQIECAAAECBAgQIECAQLsJCOy224hpLwECBAgQIECAAAECBAgQIECAAAECHS3Q1dWVavVcOlpB5wkQIECAAAECBAgQIECAAAECBAgQINBmAmbsttmAaS4BAgQIECBAgAABAgQIECBAgAABAgQEdr0DBAgQIECAAAECBAgQIECAAAECBAgQaDMBgd02GzDNJUCAAAECBAgQIECAAAECBAgQIECAgMCud4AAAQIECBAgQIAAAQIECBAgQIAAAQJtJBDLpgnsttGAaSoBAgQIECBAgAABAgQIECBAgAABAgQisFvLf9RRECBAgAABAgQIECBAgAABAgQIECBAgED7CJix2z5jpaUECBAgQIAAAQIECBAgQIAAAQIECBAoBAR2vQgECBAgQIAAAQIECBAgQIAAAQIECBBoMwGB3TYbMM0lQIAAAQIECBAgQIAAAQIECBAgQKCzBbq7uy2e1tmvgN4TIECAAAECBAgQIECAAAECBAgQINBuArVaTWC33QZNewkQIECAAAECBAgQIECAAAECBAgQ6GwBgd3OHn+9J0CAAAECBAgQIECAAAECBAgQIECgTQXk2G3TgdNsAgQIECBAgAABAgQIECBAgAABAgQ6V0Bgt3PHXs8JECBAgAABAgQIECBAgAABAgQIEGhTAYHdNh04zSZAgAABAgQIECBAgAABAgQIECBAoHMFBHY7d+z1nAABAgQIECBAgAABAgQIECBAgACBNhUQ2G3TgdNsAgQIECBAgAABAgQIECBAgAABAgQ6V0Bgt3PHXs8JECBAgAABAgQIECBAgAABAgQIEGhDgXq9ngR223DgNJkAAQIECBAgQIAAAQIECBAgQIAAgc4VqNVqArudO/x6ToAAAQIECBAgQIAAAQIECBAgQIBAuwqYsduuI6fdBAgQIECAAAECBAgQIECAAAECBAh0pEB3d3eq5XwM9Y7svU4TIECAAAECBAgQIECAAAECBAgQIECgTQXM2G3TgdNsAgQIECBAgAABAgQIECBAgAABAgQ6V0Bgt3PHXs8JECBAgAABAgQIECBAgAABAgQIEGhDgUjCILDbhgOnyQQIECBAgAABAgQIECBAgAABAgQIdLaAwG5nj7/eEyBAgAABAgQIECBAgAABAgQIECDQZgK1Ws2M3TYbM80lQIAAAQIECBAgQIAAAQIECBAgQICAwK53gAABAgQIECBAgAABAgQIECBAgAABAu0mIBVDu42Y9hIgQIAAAQIECBAgQIAAAQIECBAg0PECArsd/woAIECAAAECBAgQIECAAAECBAgQIECg3QQEdtttxLSXAAECBAgQIECAAAECBAgQIECAAIGOFujq6kq1ei4draDzBAgQIECAAAECBAgQIECAAAECBAgQaDMBM3bbbMA0lwABAgQIECBAgAABAgQIECBAgAABAgK73gECBAgQIECAAAECBAgQIECAAAECBAi0mYDAbpsNmOYSIECAAAECBAgQIECAAAECBAgQIEBg0vXXX0+BAAECBAgQIECAAAECBAgQIECAAAECBNpEYNKkScmM3TYZLM0kQIAAAQIECBAgQIAAAQIECBAgQIBACNTr9VR7+umn6zgIECBAgAABAgQIECBAgAABAgQIECBAoD0EJkyYYMZuewyVVhIgQIAAAQIECBAgQIAAAQIECBAgQGCOgFQMcyxsESBAgAABAgQIECBAgAABAgQIECBAYMwL1Go1M3bH/ChpIAECBAgQIECAAAECBAgQIECAAAECBCoCs2bNEtiteNgkQIAAAQIECBAgQIAAAQIECBAgQIDAmBeQY3fMD5EGEiBAgAABAgQIECBAgAABAgQIECBAoFlAYLfZwx4BAgQIECBAgAABAgQIECBAgAABAgTGvEC9XpeKYcyPkgYSIECAAAECBAgQIECAAAECBAgQIECgRWBCy75dAgQIECBAgAABAgQIECBAgAABAgQIEBjDArVazYzdMTw+mkaAAAECBAgQIECAAAECBAgQIECAAIG5BLq7u9OkuY460KfAnXfeme6444508cUX93ndYE+uuOKKafPNN0/xORrl5ptvLqpdbbXVRqN6dRIgQIAAAQIECBAgQIAAAQIECLxIAuI+LxL8i/xYqRgGOQAXXXTRiAd1owllwHiQzXE5AQIECBAgQIAAAQIECBAgQIAAAQIdKGDG7iAHPQKwUQ488MBB3tn35V/72teKgHHM2lUIECBAgAABAgQIECBAgAABAgQIECDQm0C9XpdjtzccxwkQIECAAAECBAgQIECAAAECBAgQIDAWBWLxtBGdsTvSaQrKfLOf/OQnx6KfNhEgQIAAAQIECBAgQIAAAQIECBAg0INAGSeM+F65tlQPlzk0RIEJEyaMXGD3Zz/7WZEndoht6fG2Mu1BvAhSFPRI5CABAgQIECBAgAABAgQIECBAgACBMSVQBnWjURHfK2N84nsjN0xdXV0jF9gtB0ju2ZEboE6p6fzzz0/xMg60xD8CU6ZMSX//+9/TAw88kFZYYYW0+uqrD/R213WAwPTp09Ptt9+e7rjjjuLzoYceSosttlhaaqml0hvf+Mb06le/ugMUXujiJZdckmbNmpXWXHPNtMQSS3RMv3vr6OOPP57+9Kc/pfvuuy/FezFp0qTCJf4d2WSTTdICCyzQ262Oj1OB7u7uxqKoCy+8cFp77bX77Ok999yTYsXh+eabL2244YZ9XjueT951113ptttuSy95yUvSuuuuO5672uhb/NvR2/9fia/BvexlL0tLLrlk8b81sT+vyg033FC8k08//XR6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QkAICAEhIASEgBAQAkKgiSOwatUqEbtNvA4o+0JACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAIVBgC0titsAJTcoWAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEALaPE11QAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBIVBhCEDstqywNCu5DYxA/xFLGjhGRVeNCEwa0a4as6U8CQEhIASEgBAQAkJACAgBISAEhIAQEAJCoNEQaDl58uRGi1wRVwICm1ZCIpXGMkdA7UyZF5CSJwSEgBAQAkJACAgBISAEhIAQEAJCQAhUFAKtWrXS5mkVVWJKrBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQiCFQLOUPYZvhIQQEAJCQAgIASEgBISAEBAC5YnA2LFjfcJ69epVnglUqoSAEBACQkAICAEhIAQaHIHmzZtLY7fBUVeEQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIgToggK5u8zr4l1chIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEGgEBETsNgLoilIICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASFQLAKrV6+Wxm6x4MmfEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCoDEQaNGihYjdxgBecQoBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASKRUA2dotFTv6EgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACjYiAbOw2IviKWggIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBIVAoAs2aNXMtC/Uk90KgqSGwatWqWlnGjolECAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAINAYCmGKoSGL3448/diS+Y8eObp111ikYu6lTp7pPPvnEQc7tsssuBfuXh9IhMG7cOLdgwQLXpk0bt8MOO5Qu4BKF9NFHH7np06fXCm3o0KFu7bXXrnVfN4SAEBACQkAICAEhIASEgBAQAkJACAgBISAEhEB9I7B69erKI3YhdN9//32PTefOnV2/fv0KxomMI4TV2PL555+7KVOmONSny5HYrG98rAzsWGh8Y8eOdcuWLXNdunRxm222WaHec7pv3bq1a9myZv6DNMZp7+YMRA6EgBAQ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4dSZbtJbE90X879wzZo1iyV2Jz863j180j8yEt9+s/bumIdOcB0265i+/99r/uMmPzIxfc3JrNdmub8dfGfGvZNGne423LJmR9aX//Cim/jg+Iznzr3ghp27k3vl+tHp+2/ePsad8NzprnmL4hSd58yc4ya9M9G9/vwYt1nfHm7Adlu4duu2S4evEyEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhEAuBOBQG43YXbJwsZvw5gQ3c8oMt2rVqnRa12pTo0WbvpE6+Wrhck/qslFZj916umnPTXEfvvShWzRzkXvtxpfcd645OO184OGDXNfBXf31jBenOzY069ino9v22CFpN5ys07l9xrVd7HzhLm7CI+O9rVxI3Q0HbeR6pzSDOf/03Xleg7fzNjXhm598j2t3qNH2XblypXt/wjT/67B+B9d/8ABP9FIgEiEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhEA2BOAXG5TY/Wb1N+6DydPd5LcnuUULFqXTBqG5cdeNXb/B/V3nbl3S98OTgUcNcgf88VDXrHkzN/Tsnd1rN7zk/nP5v93bI992+1z9Xa/pi/veBwxIe/smdQaxu1H/jb2f9IOEk10vHu52On93132Xnu7vh9zlXR0+8mjXoUdHtyRlqmHcPe+4TyfMc8USu30G9vVmGKaOm+Lef2+a+2rZV27h5wvda8+96t544XX/bMDQLdy6HdZNSKFuCwEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASHQ1BFo3rx5wxC7X6ZI3PFvjHcfTfvQsWObCQRm70F9XM8te7mWLbNzzDv+aGdP6prfPvv398Qu1ytSGr2t12tjj4o+dvzWpMO6XdZo867brYMPr0P39fxx+cJlRYePx9ZtWruB2w/yvwXzPncT357oZk3/2GstQ3rza79ee9cC4sZhAABAAElEQVR32/6uZ/+eGXmuU8TyLASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBIRAVSDQYMTu6Gde9vZzQQ0C19uXTZkfaNdhnbyB7NCrU4bbtTdY4/erFNlaCmK3ZZsacrll21bpuMyebsvWNc9WLFmRflbXk44bre922ndnhybzzKkz3JR3JrsFny1wi75YlNLgHePWS5lp6NR5g7pGI/9CQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACFQRAuxbVtwuYHUAgUixqRva1c0VXJsOrV3LtSIavUHKIUZLIS1atfDBGJlLvCYtWtZEuHrlGnvA9qyux9XfrHarvl7lVq9ao81c1zDlXwgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAiB6kUgwpbWT0Z3PWh3N+nNie6DSdMdhn1nTP7A/9Zut7brNbC3N8ewVuvam6bVT2pyh9pQm5jNmzXXTX5rkpv90WwH4W2y/obru/5DBkhb1wDRUQgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAiBNALwlw1C7K69ztpu8O5D/O/j9z9yE9+a4D5P2ZddumSpe/e1cf7XaaNOKbuy/Vy3Xt3TG6GlU1phJyuWfZ2Y4iVfLvGbx82Y9IH7+us17lq2aul6DujlCd22a7dN9K8HQkAICAEhIASEgBAQAk0Tgf4jljTNjFdIrieNaFchKVUyhYAQEAJCQAgIgWpAgH3MGoTYDcHatFc3x2/Z0mVeW3X6hPc9wTl/3nz3yjOj3RutXneHnXZE6KXo89btazZUWzzvy6LDKMRjx+4d3YKpC9zsNz5yAw4dVMvrlLGT3dv/fSvj/gYpG7po53btsWnGfV0IASEgBISAEBACQkAICAEhUDkITJ48uXISq5QKASEgBISAEBACFY9Aq1atGp7YNdTQSt1ml239b/bMT9yEN8a7z+Z85k01mJu6Hjts0t4HMeu1WW7G81Ndt916OrOjW9ew4/xvtGVnN/356W7CoxNcnwO3cN126pHhbNniZf661VqtvAmKftv0d23a1pDPGQ51IQSEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEMiCQINr7Malpctmmzh+y79a7mZOnhHnpKh7m6aI1fabtXeLZi5y9x/1N8dmaB16dvRhfe/mI1zHXp2KCjfJ05BTd3Sv3jDaLZm9xP3t4Dt9fC3WbumGnDTUDTtvd7fJ5pu4jbtv7Dp365IUhO4LASEgBISAEBACQkAICIFYBLTUPxaWMrrZr4zSoqQIASEgBISAEBACTQGB5uWUydZtWru+W6/pEDVr3iwxeeGzpM3OWrZt5Y55+EQ37NydXLsu7dxXC5e7uW/P8b/VK1amwzb/FmazFrXjTT9LGSZOknW6rOtOGX2W63NAX0/qEh8k74ovV3gvG26ykUjdJPB0XwgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAiBvBCAz2z2TUryci1HQkAICAEhIASEgBAQAkJACDQ4AmPHjvVx9urVq8HjVoRCQAgIASEgBISAEBAC5YlAixYtXFlp7JYnTEqVEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCoHwQWLVqlYjd8ikOpUQICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASGQG4HmzZuL2M0Nk1wIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEygcBrOu2LJ/kKCVCQAgIASEgBISAEBACQkAIFIrAOuusU6gXuRcCQkAICAEh0GAILF68uMHiUkRCoCkhALErG7tNqcSVVyEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEqgIBEbtVUYzKhBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACTQWBZs2aSWO3qRS28ikEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEQPUgII3d6ilL5UQICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIgSaAgDR2m0AhK4tCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACFQXAto8rbrKU7kRAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQqCJICBTDE2koJVNISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASqA4HVq1dr87TqKErlQggIASEgBISAEBACQkAICAEhIASEgBAQAkJACAiBpoJAixYtROxS2A8ee6+7aoP/ce/d93bFlf2tw27waZ/50vSyTPus1z9yH/73A7dk7uJ0+lZ9vcqnGcw/n/pp+n4lnCz86It02lcsXl4JSVYahYAQEAJCQAgIASEgBISAEBACQkAICAEhIASqDAFs7LassjwVlZ2vl33t/a36enVR/hvT04rFK3z036xY1ZjJiI17/sS57p79b/fPThp1umu38To1aU1VPJPVq9ac272yPgbp/WZ1haW9rIFV4oSAEBACQkAICIH6RGDJkiVu4sSJeUfRt29f1759ezdjxgz32WefuY022sh1797d+589e7abNWuWa9u2rdtyyy3zDlMOhYAQEAJCQAgIASFQLQg8//zz7t///rfPzp577un22muvRsmaiN1Ggb1pRDrmlld9Rnvv19ttuGXnppFp5VIICAEhIASEgBAQAmWIwLx589wDDzyQd8rOPPNMT+y+8MILnhDebbfd0sTu1KlT3eOPP+66dOmSQewuXLjQ8QzZbrvt8o5LDoWAEBACQkAINAQCK1eudGeffXY6qpNPPtltv/326WudFIfATTfd5N55551anlu3bu1uuOGGWvd1o3QINGvWTBq7pYNTIYUIYLJg3D01L/YOZ+8SPtK5EBACQkAICAEhIASEQCMisPHGG7u11147awratGmT9Xncwzlz5qTJ4yFDhjgGGxIhIASEgBAQAuWKwKpV5bfyuVyxypaur7+uWQUfdZN0P+pO18Uj0GRNMXw4baZr07aN26jrxrXQW7V8pZszbrb7ZMyHrnmrFq7LkK5ukyHdarmzGyzHn/fubDd/8jwHmdmhe0e38VZdXKd+G5mTjCOgz584z817b7ZbNPtL/2yDPht49x17dcpwG16sWrnKzX7jYzfnnU9cs+bN3CZDN3Wdt+4aOkmfj3/9Pbf5gJ5u7XWyd9jTHgo4WbJ4iZs5aYbbYrvsy+7e+strPtSuO3R1mw7bLGsMXy1c5uak8jY7hXu7jdZxm+28uevQo2Oin5Up0xlzxn7iPpv8qVv2+VK3Qb8NXZfBm7p1Oq8b6webvrPf/Nh9Pm1+ytbvIrfWum1cpxTmG27ROW0eIs4j6ZqdshE89705PuyuQ7u75i2a13K6dMlS99GUD12vgb1dy1ZSgq8FkG4IASEgBISAEBACZYXA9773Pde7d++80rTHHnt47dsNN9wwL/dyJASEgBAQAkJACDQtBOhTrFhRYyaUSd4vv6zhupoWCo2T29WrVzcdjd0lX6bsir0xwc2cMsOhft9/8IBaxO7yRV+5vx92h5v12qyMEtntl8PdsPN2z7jHBRuCPX3BI27a09NqPdvpgl3cThcOdy1S5LDJ18tWuFu2v8Etmb3EbmUcd/zxTm6Xi/d0LVqu8YMDCMbHTvuHm/789Az3Q08fmnFtFxC77415163XaT2fz+59NquTxgRk9IdTZ7pJb010X8z/woeVjdhdNn+pG/OnGjMMw87Jrq0LIX7vgben8pi5EdlR9x/jeuzVx7KUPs55Z5Z79MwH3YKpC9L37OSQ2w5z/Q4dZJf++MmbH7m7962x85vx4NuLg1N+BkT88Aj7wA8c+ze3aOaiDG+7Xjw845qLpYuWuHdGv+3GvvKO69w9tSQxRXp36rxBLXe6IQSEgBAQAkJACAiBSkOgR48elZZkpVcICAEhIASEgBBoQAQOOOAAxw957LHHvLmmBoy+SUfVokWL6iZ2ISRnTPnATX5rklv4+cKMwl5n3ZqNvMKbL1z2nL/c+cJd3Krlq9w7d73lCccXf/sft8VhW7kOm63RIv166Qo3cu+bPUnbpkNrt93pO6S0ddfz2ruv3/K6G33tfz2pC7lrsnrlau++XZd2bstDB7qOvTdwrVq3dHPHfeLw8+oNo1Pxfu32/G3NC2H+njzn4TSpu9P5O7t1N13PTX1iovdjbsLjWm3WcsuXLfck7KvPvuJe//cYt1nfHm6LIVu4dh1q5zv0G54vWbjYTXizhgwPlygQfjZ55643/ONOAzZwm+/TN5tT9/DJDzrc7Xjuzu7TlCbz+P97z7v/1yVPuVOG98rQkP00peV8595/8c879unoBh+/nde+ff+5KW7K45Pdw6c+5I7eoJ3bbNee6ThXLKohjDfetrPrvXcft16qDNkk74N/T3OTH5vkHk35adGyuev73TUayJTtPQeN9GVPWW1/+o6ueYpsf+vO191LV/wnHbadrNV6La9Fjfb27Jmf+B8a4X226ut/rdZqZU51FAJCQAgIASEgBIRARSHw4osvuo8//tj179/fDR48ODbt06ZNc2PGjHHY2DX529/+5pUBtt12WzdgwAC77ZYtW+b++9//+k3ZPvzwQ78pG5o+W2yxhdtss8xVXq+++qqbPn26GzRokBs4cKB7++233ZQpqX5f6nfuuee6Dh06pMPViRAQAkJACAiBYhD44ouUGclx4/ymoJtuuqnbYYcd3FprxXMebESKLXk2Fl2+fLn/bvXp08d16pS5+vrTTz91bDSKNG/e3H/DwrQtXbrU8e004TuYy0SSuW3o4yeffOI++OAD99FHHzl4oQ022MDb1werUslXX33l3nrrLcd+AIsWLXLrrLOO69ixo2Mj10022aROioqlSmM5h1OV68a/XPilm/h6ipCcOsOhlmwC2cZyeQi31m1a2+2M4ykvnZEiGmtMNOzwk13dLYOv9wTf9GenuG1P2SHt9vWbX0mTuif85wzXodt6Nc+O3jZlImET99hZj7iXrhzltjxqm/Szlm1buSPuPTqlido7QysXN206tfOkIQTvrr/c27Vau6Yh+XT8HDf1ySk+7MPuPNL1OXALf77VDwa7h0+8P/0snbDUySEnHebmfDTbE9pzZ831L9/0ie87fu07tvdavD36bu7JyNAf55CTH0ye7ia/PcktWrBGWxUbaRunTFf0G9zfde7WJeotfb1iyXI35sbR/nqnc3bOIGbTjoITCNrjnjzZtU6ZR0C2OXGou/eAkV4j97MJc91Gg2rigqR/7tKnvZvN99jcHXbX9x14IlsdO9g9ff4jbuxd77hnL37KnfSfM9Pxrt9nQ3fcMyfVMqex9XFD3N8PHek+fOlD99Ydr2cQu+89MDatQXz8E6e49inCHtniiK3c7XvcVEvjuv36HdwRp/8/98GkD9zUsZP9JMJXy75y7742zmtOg9uA7baopSHuA9U/ISAEhIAQEAJCQAiUMQLvv/++3zytffv2icTu559/XmvTlLFjx/pcdeu2xqQZRO7dd9+dQQAzUOTHJm3HHHOM22abbdJoMHBmMxZsAj/33HPu2WefTT+jbygRAkJACAgBIQACM2fOdP/85z/TYEDODhs2LH2ddIK/O+64I+Pxk08+6S677DIXtTUP+Xvrrbe6OLuxBx98sNdYNdvykLZhuJdffrn/lllEr732mrvvvvvs0l111VVlR+xCXDNJyyRrVB566CG39dZbu7POOiv6qOBrvvO33HJLBncXBrLvvvu6ww47LLyl8wCBqto8DUJy+qQUIZkyFwCxa8LsSNeem7oB2w5wHTda327HHrc4YmCa1MVBmw5tXe/9+rr37n/XfTl7DclJR/KlK/6DE7fnr/dNE7f+Rupf30MGuja/eNqTgx+PnuE6pIhbBBMLvfbt58+j//oeMCAd5tJPl6S0g2uI3Wn/muydtt+sveu9/xptB2y9bn/mTrHELh4gX/lhdmL6+PfdtHenelwga8c8/5p744XXXbfe3d3AoQPdOuut675M3R//xnj30bQPM16odTus63oP6uN6btnLtWyZex5g/H01pCiaruCQS8iDkbq43XT77incW3vslsxNleO3xC4kLyQsstdv90+Tuv5G6t92p+zoid35Ez9zC2cscGavuP2mHRy/OEELmzA/m/JZxuNJj9RoDW974uA0qYuDtVPawNudvL0b9ZsXMtxzQT3rtUUv/8Pm7pS3J6eI3uluxfIVbs7Hc/wPzV6w7LdNf8e5RAgIASEgBISAEBACjYEAg9K4gamlhT6fDU7tXrZjv3793NFHH+0H1q+88op3yjXStWvNnhBoJ912221ew2n99dd3Bx54oNfWXbBggSdsIXcZQLZr186h/RQKWjxoPyFo9nbu3Nlr84RudC4EhIAQEAJNFwEmGCdOnJgGgO9EPsQuk4pRISzu77///ulH7733nvvTn/6Uvo6ePProo47v3JFHHukfsVolJHbffffdDGLXJj9xTFrXW+9bRcFowI14fe211/rvelIS5s6dm/Qo7/to6t5+++0ZHFTUc7b+StRtU7yG88vN1FUIMvPnfpYiK8ekU9txg46u37b9XffeKfuyqc3G8pEN+29Yy9k6qc28kGVfLE0/w7auyajfPe/eHLkmXrtvNmM/nTTPbvkjBPTMF6a5qSnCdtGshW7hrDWEsTlcsXi5nfoN2bjokTIvEM1H5202SbtLOqFj3nfrfv4H4Y1ZCrMzzHFhymbuvkfv70Y/87I33UA4+MF0w4CUHeJCTDesXLHSvfy/L/qk7PTjXVzLtXJXrw361sZ83e4d3FfvzkuRu1+ls7Vg+vz0+WNnP5Q+jzv5fOqnaWKX52y2NvGf77mPUxviLfxogVv6+TLvDZvKSNTm8fzUJmtI1+3WaJj4G6l/m8Tcs2d2XLvd2m6bXbb1v08/mecmpiYb5nw425O8E1LkOVrkWw9bo41i/nQUAkJACAgBISAEhEBDIDBy5Mis0Vx00UW1lpVm84BJBMw0QMoascugNiSH//Wvf3lSl+WVP/nJT9KaUGjjstTy5ptv9ktbR40aVYvYhdSFDP7hD3/ounSpWc2VLT16JgSEgBAQAkIgXwTQPOUbE5K8aJEascv4/Z577skI7tBDD/Uatg8//LDDPAPCypI999zTfz/R9u3Zs6c3J8QziNy9996bU88HTJ5co8DH9fbbb8+hrOT111/PIHVbtWrlDjroID8hi4kJvtWlEDBHM9gEM0u9evXyJDmrdp566qmMvoS5a6jj888/nzUqTFSYcJ7L/V577WXOS3ZEyTA381ay6Bo2oNWrVqdsqa5yq79Z7Vqk/vKRtilzCFFpvlaN39Wr1jxZ9OEX6QtIwSgxmH6YOsFmrgm2W//xg3vTmqd2Hw3VUL7+ao2fL2bWbBLWtmPb0Ik/N1MEtR4k3Fi9cpXX4M21dI3n2E4J7eomBJlxe8oj49PmKQZ+f9uMZ0kXbTvUmGAIn7dM2R1GvkmVocmClBauydy359hp7HHl8v/P3nmAR1F1ffykVwghJCSkESCQ0AlNEUQEEUQEBAQFGyoKir4qvory2cCu2F6xCzakqICVIr1I7y1AICEJPQmEFFJIvnvu5k5mS8Im2ZRN/ud5Zmfmzq2/Wcjuf8+ck6+Vpx49T3OGzTa7R8orWKtYdMDvGXU/3RuYM/ds6GnapNTz/Lx8Yu5XY15qJ7gIAiAAAiAAAiAAAnZOYPv27XIF/Eil6eOt/KWEk67MnDlTxs9lL16Orac3fgwToq6eCI5BAARAAAQqSoAThKpwAhzTnUMzsPHfIWUc111/zn+P+G8ZW0REBE2fPl1VlYKnChvAgi33ycahGVgg5r93LADqQ4Z26dJFa19TDpYuXWo0lWnTphn9XWbR+9ChQ0Z1ynPCcff1xnzc3Nzkxp8D+EdiPSt93ao4XrlypdXD8H3VC72WGkLYtURFV9YoyJ96DLiODm47QGnn0+hi2kXaunoLbVuzlQLDgihKeO8GiFintjAnt2Kh+JFtj5NPU+MPniWNsfnj9ZqoO+h/t1HzAa1kuAf2ZsgXYu57Ia+bNXX1Moi+7OlrataIhRwKgMMwHN13hLIzi//RsFduRFQziuocLbvtdWtvOrT9oAwfwK7c8bHH5cbepxyXmEMIlBY+gIX0jR+tl311m3gNuXobi9Wmc1fnhWLt1piLu0Hs5RAPj+2dbE0TWeevJ8QvaEJ851i+/d8YRMHdQ8nFwxAGIXFDPM0Z8q1RXxziQpkl5iz8Xs0yLogYz7sO0onYBCmkq/rMkr2nm7droYqwBwEQAAEQAAEQAIEqJ8BhEvjLbEnGnku2NE6Eojxy2AvI0hef3NxcbUhOnqIXdtkjmL16YSAAAiAAAiBgiQAn2Orfv792icP2WGMcSkgZi7RK2NX/TVJJ0FS9Nm2KE69zAjEWI5X4qK/buXNnLY4uX2dxl/+W6cMw8N86fnKlphn/HVbGArX+bzKX85qtZaz6sbTXx+Hn6++//758+oefAuKNk6/yWLCSCbAuaFDLSq5jV1dCm4cRb9lZ2VKk5GRh7DF5KuGk3FxcXahpqwgZosGrnrl3rrWL1Qu5mSkZVgu7Bxbtk0P0nXYTtRVJ1vR2yUJIBr7eINQQHzZDF/5Btcu9WOyyrsp4zzeWY+Ue3hVLKWeLQxjwNb8APynmhjQzDjPg6e1JMb07yy0pLlGEDzhAqWdTiePFchIw3rhty06tJGP9o3Xcb/yKI8Txbdk63N1V7m354hthyDLJIi2LyHoBtqRxOGRG8uZkeXnwTOHl0ck4a2N6UvGvcMyM18ThLlgETjuSRpnnDY9U6PvPOpehP9WOOe5L3L6jUkTPvFTcjvsLbhpCrUXyNF9/235J0gbHAQiAAAiAAAiAAAiUgQAnQrO1eFva8HpPJ06gxltpph5rVXVq4pdeNTfsQQAEQAAEqp8A/50YPnx4mSeifxKEPUUtmYrxztdYZFSx4/mcNQQWhDnRKJs+7iz/reW6yckGTYKTr5kKu1272l47kROpwAuL2urHWO6GRfPKMha/2TuY4+wr488A69atk1u9evVk+CYW0KvDOLRGaab30uX3AW/VYbVK2FUAPTw9qFOvGLklH0+ig9sPUMqZFMrLzaMjew/LrVPPGOk9qdqUZc9J1dhzlEXGQ0KsbdLZWCQtqa/ss4Y4vS4WvFljf99vsVmDIkHz2PIjMlasPvxC/KojFtss/PIXo4QYHA+lmUjsFSVi5rp7moc+MO0kpHko8cYCOcfkPXYgTvbHIvG/SzfSNpetdPv4EUbNNn64Tp53ndCNPAPKL5obdao7aRjZSDuLWxpLkSLZ3NVMH6vY1d3FrPre+bvNyrggIKqxFHbjlh8WInVnozpHRZmpcZzipfOWGIVb4B8OOEkaJ51zcir28DZti3MQAAEQAAEQAAEQqO0EOK6usptuusnM80ddU3tTb2L+cgwDARAAARAAgeogoP8+z563/IQzayzKOAGYMn05l7Fwqxd2OezQ6dPFoSVrorDLT3frjddbFmOx21pjoXzq1Km0bds2+uWXX4gT1+nt0qVLNGPGDHr77bdlLij9tao4vlroBI6pq55CYlH3avUrY87M2/iOVcYo1dxncEQI8XY5+zLF7jokvSpZ4GXRsiLW99Wb6beHfqWtn26hoJgQih7WTuuOvT+TtybSnh+2043TBshwC3wxKKYJHV91nHb/uIPajGhPSqRNWHeM1kw3z8bIbaKGtqXlzy0RicRy6F+RmKzXlL5cTOyNuuZty23UPzx/EZ4iunNrCgov3y8sLJCrJGDs9cyJv86fPm8UXoDnkrQpQfOM7fzgNVxkc/MJF/FV7o+hnbN20D//t4TqNalPgR0NWZZ5ME7cFrckVswlnvq+PkiOXz/E4O3MJ7vn7KAbXr5Zevry/dk2cyMlrEmQ9UxfOo6NodjfD9GRvw7T8X8OU0Q/w6N/fE93fG2ID6dvw+8n6fErvHNDm4VRm65tqH7D4rH1dXEMAiAAAiAAAiAAAnWNgP4RTvaOatu2rRkC/rKsHmE1zQ6OxzDNcKEABEAABEBAR4DFVb23LP8d4TA+tjC9Vy/3x0KeCg/E2osSbvmaaV0WbjnBGhvPb8uWLfKYXzw8PCgsLEw7r+wDaxnx31z2lGVRlY1jDJfF9HH0+W87b1f7O85xhnnj0E379u2TiegUV/bg5RAZnFQNZk6A+dZ6YVct293DnTpc21Fup0+cImeXii09akhbOiSShR3+I1YKvBtmrCX/qACRLC2fTu5M1hJw9X7hJqKi/0/Y+5OF3VPbTtJ7oa9TqyHRlJ2aKePu+kU30kIZqDnz3rORF/V8phetf2cdbXxvPR1ZdliEZ2hAiRsSpNirr6uOO17XicJbNSU3d8uPEqh6ZdmzOMxbzuUcSoiNN2q6RYikbO3uak8swFaW9Xz2RopbeZTSE9Lp235fiXi5weQT6kuZ5y7RmV2nJQ/mqMxJJGHrMr4LbftimxTgDyzaT017RtDpfacla+V1reqrfXifFhTaI5QSNybS/NE/UXjvcPkfEd87S+btU4+69OkmYhZHXPU/LEvtUQYCIAACIAACIAACtZkAf6GLjIykI0eO0Nq1a4njE5p69GzatEn78vt///d/8ktlbWaCtYEACIAACNiOwMGDB+mzzz7TOuzTpw9xPHlbmGkcWP57pYTdXbt2GQ0RHh5udN6oUSMZ+kh5os6bN0+7XtXeumVhxKEPuD4bC7s7d+6UiczU5PmH2M2bN9PQoUNVkbY3DfXE9a699lrtuv6Aw1xkZWWR4sZP6PTo0YPatWtHkydP1qoyPwi7Gg6zg4qpm2bd2UcBJ1PTm/r1gOOhmpryInc0eZqe6w79ZhTtEd63q19eLoVCFWOW+6gfXp/aCG9bt/rF4mqr29rQTW9mSA9crhO72PAPhUXEIV/eQf9r8x4Xyziv8qDopcd/+0jv3tWvrqRze8/KjS/d/u1IWvrcXwYRWTd3TtBVWcZisb7/c/tPS89WHq/rw5b/sZrORf9B3hJzrb6CX1TAIvcDayfS+jdXSqGW4+eqGLpcJahLE+owJkZrzgfXT72JruQVSE9fDp2xf8E+eb3jvR2FEB1D39/8jTw3ndPIuWNpyVO/04Gf92mevXxPb35zEC248ydDmyLmHN6iuQh1AQMBEAABEAABEACBukxA//gmezQFBgaSq6urfHySM4izsBsfL5LXzplDQ4YMIQ7RwN5OXPfvv/+W6KKioiDq1uU3EdYOAiAAAjWMAAu7LOQqz9UNGzbIcAqenp60d+9ebbYco/f666/XztVB9+7dtb9x7F2prKqFXTWuNXuOVzx9+nStKovmHGogICBArp09aPlvvCVh19QLefbs2bR48WJZnzscMGAA8d96tmPHjtE333wjr3G8XfZ45s8Fes9mrsdjwUomUCeFXVMcdyy4x7RIO+/5XF/izZKxKMleuLxxaISLiRfIQQjA3o3rk3dQPTNPBO4j5sHuQlDsRBeOpYjEblfIL9KfXIti7j57/iVLw8h+uj/eizo/ci2lHT4nhF9HatjKX4YViBxkXbZHix3boHDr5//KXloMaEH+baz7x+bk4kQlrZU7u2fJQyXOzNXLTYS3GCjDKlxKvEgZZy4Jfq4iNIMPuft6mLVz8XSl/u8Mpl7iHl44kUrOrs7UsKU/8RzYSpoHtxv82XDq//YgSjlyjrz8vLUkeSW1MRscBSAAAiAAAiAAAiBQhwjovXSU59TgweJzWK9e8nHTG264gVavXi0zgnNWcBZ2MzIyNEL8pdjSl0StAg5AAARAAARAoBoIjB07lqZNm6blMlLJ0vRTufvuu8lSAjYOMaB+vFT1ORYvP8lSU43FbE4ctnLlSm2K/CMsb1cz9lJu3749cbI4ZZxEVSVSjYmJ0YRddZ3jDv/555/q1GjfoUMHMvWaNqpQx084LCiEXRu9CbwaexNv1hiLhv5tjb2GrWnHomR52lnTd3nqXEpOp71zDP9Yuz/WszxdlLuNo5OjFFp9mloX+sHDz5N4K6u51Xe3OjleWftGfRAAARAAARAAARCwFwL65DHKM1ft1Ro4li4LuatWrdIEW307ThrDnjz8BZcfv9SLuvzFrX///vKRVdUf9iAAAiAAAiBgDQH1FLaqa3quyk33+nr6Y9N6jRs3lh6s/KOlqbjJsXwfeeQRatasmWkzec5hDby8vIhjxSrr1KmTRUdAdb0y9qbrMz03HXPUqFFSfP7uu+8oO9s4RxUL2D17lqwBPfzww7Rw4ULavn27Juiq/vVPSzPXJk2a0MmTJ9Vlo33r1q2JRXVYyQSYp4NQdwtLroIrIFAyAX7rcExhNmd3l5Ir4goIgAAIgAAIgAAIgEC5CbB3K1tJ8eXY89XeLDc3V4q7LA6zIMwhG2AgAAIgAAK1k4D+hzx7X2FOTg4lJSXJkAEsSnKisdpunEiN4+pymAQ/Pz/y9xdPkIsnyW1leXl5dPbsWZmwjY851i57/rIgXpNtxYoVmlczezj37Wv5af/KXAP/gA6P3cokXMv75l8GIOjW8puM5YEACIAACIAACIBAJRBgITc4OLgSekaXIAACIAACIFB5BNhbtaQfWitv1OrtmcXryhSwOTQFPhOU7x5fuXIFHrvlQ4dWIAACIAACIAACIAACIFA1BGqjx27VkMMoIAACIAACNYFAbfLYrQk8MYfaT4C9ga3xAGbPadv5Ttd+rlghCIAACIAACIAACIAACIAACIAACIAACIAACIAACFQKAX2Ih6sNwCFSIexejRKugwAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgEAlEiiLqMvTgLBbiTcDXYMACIAACIAACIAACIAACIAACIAACIAACIAACIDA1QiUVdRV/cFjV5HAHgRAAARAAARAAARAAARAAARAAARAAARAAARAAASqkEB5RV0HBweEYqjC+4ShQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQEASKK+oq/DBY1eRwB4EQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEqoBARUVdeOxWwU3CECAAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAiCgCFRU1OV+kDxN0cQeBEAABEAABEAABEAABEAABEAABEAABEAABEAABCqZgC1EXTXFOh2KIXFjPL3V6BX6tPP7ike17P957g85j40z1lTL+BgUBEAABEAABEAABEAABEAABEAABEAABEAABECgcgnYUtQtKCgg58qdbs3uveBKgZxg7oWcap1ofu4VOX5Bbn61zgODgwAIgAAIgAAIgAAI2B+BjIwM+5s0ZgwCIAACIAACIAACdZBA3759iTdbmJOTE9Vpj11bQEQfIAACIAACIAACIAACIAACIAACIAACIAACIAACIFCVBBBjtyppYywQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQsBGBOhWKITMjkxIOxVPrLm3M8BUWFNLZvafo5NZE4tAIgR2bUFCXEHJ2LRlRyuFzdHb/abqYkEae/t7UKMpftAsmR6eSHaHPifqndp6krPMZFNQ5hIK7hJrNhQsunUynC/Gp5OTmRE06W66TeSaDUuPOy/GCu4fRmaTTlHM5h8JahFvsE4UgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAL2T8DBwaF6YuzGxcXRzJkzy0Vw4sSJ1Lx5c6vbslvyiSMJdGjHQbqQcoF40ZaE3TXTltPmj/816je8dzgN/WoUuft6GJVfybtCG95cSf9+uNGonE9aDGhBt3w4jDz8PI2ucTzfDW+tpI0zNhiVB3cPJu+AekZlfMKC7dxh38vyiTv/Q/VCfczqbPpwDW37YhtxH2P/fJBOJ5ymQ7sO0tYVWyi8ZVOK7tKavOp5mbVDAQiAAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAiAgP0SYM2zZHfUSlwXC7P9+/enZcuWlWkUbmOtqJt5MYMObD9ACYfj6coVQ3IyHszV3dVszMsXc6SoG9EngloObk2Xki/SxvfWU8KaBPr9kZ9p5Ly7jdpsmrFGE3XbjGxLIdeG08X4NNr00UY6uuQoLbx/Lt312zijNju/2qyJutwmtEdTOrPnJO2ctcOonjrh6/XD61N6QjodWLSXuk/qqS7JfX52nhR1+aTTPV1kmaePQUzOz8+nuANH5ebT0IeiYqKl0MuiNgwEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQMC+CRQUFFSPsMvYbr75ZmLPXd6sMRZ0uU1pxuEUjsceo9idhyg9LV2ryoJm4+DG1ComigJDg7Ry/QF72g779k4tjEKTmBD6ecxcOrbiGJ3elSxDLHD97NQsWv/OOtn0usk9qedzxZnswoQYO3/0HErcmEgJ645ReK9msh6LsOvfXiOPu07oRjdOGyiPiTpTg3BfWvXyiqLz4h2Hc4i5ryutfmUF7Zi9lbo9eh05OBYLs3HLD2uVIwdFy+PIti1lGIYjew5T3L6jdDn7Ml1MvUib/9lE21Ztldeiu7amej7mHsJaZzgAARAAARAAARAAARCokQTy8vJq5LwwKRAAARAAARAAARAAgaon4OTkRCUHg62C+VxNqNVPgUMwlGSXhIi7afm/9PPn82nryi2aqMsCZqeeMXT7+BHUe0ifEkVd7rfrIz00UZfPm/VvSb6RvnxIcUtj5Z5fTgjBVlnn8deqQ7mP6BdJjTsFyuOjfx/Urp3akUzsFcxm2qbDvQZvW62y7qD18PbyjL12Ofav3vbN3yVPO90fQ67ebtolN3c3atutHQ0ZN4z6j7yZQluEkaOjo/RaZtH7rx/+oL9//FN488YRC+EwEAABEAABEAABEAABEAABEAABEAABEAABEAAB+yJQbaEYFCZrQzJwCIbSbOPSDTJ+LtdxdnY2xJcV4Qe8fLxLa2Z0jZOl6Y29fJv2bEppR9LoogjNoCw9yXDMAq5HQ+M4ulwnomcEndl5mi6cuKCaiERohjZeQV7kE9pAK+cDt3ruIixDqPTyNbogTuo1qU+tBkdR7O+HaN/8nSKWbpiswonVOOQDW9vRHeXe0otvQEPqcfN1UsBNOBJPh3fFUtr5NEq/kC48eLdQAxGmwS+wkaWmKAMBEAABEAABEAABEKhhBHx9DU4HNWxamA4IgAAIgAAIgAAIgEA1EahWj11eM3vtlhY3l0Xdsnj2slrNMXX1cXWtYav3elX1PXwNwu3FRHORtn5QfVXNaO/pbxCTU+JStPL0ImHYs5HlRGZejUsOjdD+rk6yn13f7qLcDIPXb+zifbLML7oRBYmQEVezgsIC4oRvnMANBgIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgYN8EqjXGrh4dC7czZ87UF2nH1oi6vW7tTYe2H6Tjh44RJw6Ljz0uN08vT2retgW1aBdJrm7mSdO0QcQBhyXQx7Dla4VXDKEKXDxdtKpOroZ8c1dy8rUy/UFB/hV5qheKXTwM7QvyLQurBUJ0LcnC+zQn9vTNPJVJR/8+RNEj2tOuOTtl9RgRxqG0hGhnk89Q7I5DdCrxFLHgrayhf0OK6hwNb10FBHsQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQsCMCrAkaVMpqnnRJIRmuFoJBTdvT25NieneWW1JcIh3ccYBSz6ZSVmYW7d28R25+AX7UslMrCm0eZlEMvZyWTR5+xqEVLp2+JIfwCSkOn1A/2EeWpZ1IU8Mb7TNOG5K2NQgrflSOQyqwZZ68JAVWUzFWH+rBqDNx4uTsRCzgrntzDe2es4N8W/hRysHzslrU0Lam1SnzUqZMHhd/6DjpE2w4uzhTs+jmUtD18PQwa4cCEAABEAABEAABEAABEAABEAABEAABEAABEAAB+yBQY4RdxsWeuXFxcXLj87KGYOA2bCHNQ+WWnZUtvVWPiSRhLHCmnE2hf5dupG0uW2UyNUPt4teENUcp6nZDsjIuZY/co0sOywq+EX5aRZ9wg2DLsXdTj5yjhpH+2rUrwlv34O+GpGl+zRtq5aoNJ1A7vSuZgjoVh0+4lHhRxuTVKls4aDOigxR2T6w7QatfXS5rRA9vQ6ahHQ7vjqWd63cY9dBIxNBl79zgpsVjGlXACQiAAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAiAgN0RqPYYu3piEydO1E6tCcGgVbZwwF6pHXt2kiLu9SJUAwucbByqwZKtfWc1ZZ7J0C5t+mAtsRDLFj2snVYe1ruZDI3ABateWUb52XnatU0z1sqQCVzQ5o7ipGYB7YIoqIshOdu611dSXnaubMNC8KrpBqFW68TCgU9TX2rWt5m8wuIuW/s7Osi9/iU7I1ueuri6UJRIHjdk3DDqO/wmiLp6SDgGARAAARAAARAAARAAARColQRyc3Pp3LlzdOzYMTp16lStXCMWBQIgAAIgAAJ6AjUiFIN+QizuHj16VF9U4eOg8CbEW87lHEqIjbfYH3vgftXjfxR6XTiln0rXvGh7PN2TvBobEqJxQ2cRY7fvqzfTbw/9Kjx6j9Jn3T6kkC6hlBqfSuf2npV9xzzQmRq2MAjJXMCu0dc/24fmjfyRjq86Tp93+0i2ObXnJKUnGEI3yIalvHQYG0PHVhyTNTjmbqgQmE2tSUQTahzWmAJDg0wv4RwEQAAEQAAEQAAEQAAESiSgEhCbVnB2rnFfF0yniPNKIsDJqPV5OngYR0dHuVXSkOXuluc5b9482rGj+OnF8PBwevTRR8vdJxqCAAiAAAiAgD0QqHGf1DjeLm+VYW7ubtSyQyutaxXrloXSAW8Noj8nLaYjfxnCL3Cl3lP7UPcnemn11QF78HrUd6c//rNYeujG/n5IXaIbX72JujxyrXauDpr2aUGjFoyhxQ/+bNTm2id6UPaFLNr17S5WgFV1s32zm1pqZR2FyMuxd03Nv0mAaRHOQQAEQAAEQAAEQAAEQOCqBA4cOEDffvutWb2pU6dS/fqGfBFmF1FQqwm8++67lJKSYrTGTp060Z133mlUVhNOtm7dqom6AQEBFBYWRizswkAABEAABECgthOoccJuVQIP6xlBz55/SRty0s2tKDX2HBUWFMjYuU5uJeNp2jeSHt3zNGWcukSXki7KxGscMsHRqeToFizuPn7kWbpwPJUup2dTo6gAcvFwlePf/N4QbR6WDs4dPKMVtxleHAtYK8QBCIAACIAACIAACIAACJSTgJeXFzVu3Fi2zsnJoQsXLpSzp9rRjD1AP//8c+mxOnz4cGKxsCYZhxlYtGgROTk50fjx4ytlaiEhIaQ8tjm8QYH4jlRTjXO1sPn7+9PkyZNr6jQxLxAAARAAARCwOYGSlUubD1XzO2RRtlFrwwdaa2bLHr/1mtSXmzX1uY6DowP5Ni9OxmZtuy0z/5VVw3uHk68uzIO17VEPBEAABEAABEAABEAABEoi0LRpU3r66aflZfbSfOutt0qqWmfKOU4rW1ZWVo1b86VLl+j48eOVOq8xY8Zo/X/33Xe0b98+7bymHaSmpsophYaG1rSpYT4gAAIgAAIgUKkEIOxWKt6KdX7+wBlKOXqeYv88SIcWHpCddXvYPMxDxUZBaxAAARAAARAAARAAARAAARCwXwIqFrCbm5v9LgIzBwEQAAEQAIEyEuC/fxB2ywitKqvvmLWZds7aqQ153eSe1Kx/cYxg7QIOQAAEQAAEQAAEQAAEQMCEQHp6uvTqTEpKklfYmzEyMpI8PDxMalbslL9UsPdocnIy8SP7/Dh8REQE8aP8euMQD/zIvLu7O7EAt3PnThm/NyZG5I8QIQX4/OzZs9SyZUtq3bq1vql2XJY1JSQkUGZmJgUFBZG3t7ec45EjR+RYLVq0IN70dvnyZVJeukoo5Os8Z73XLsccNl2bvp+yHjM3Th7NXqfMwcfHR+YcMR2Dr58+fVp2n5iYqA3D8ZH1xuv19fWVRex9febMGXJxcZH3Xl9PHXPYjZMnT8qkaFFRUaq4Qvuy3KcKDYTGIAACIAACIFCHCXAkAQi7NfgNEHFDC/Jo6EUeDTyoSbdQatIZjxbV4NuFqYEACIAACIAACIBAjSGwYcMGWrx4sdl8WFQdN24ccegFWxiLgrNmzSKO+WpqXbp0odtvv12L08qi7ezZs02r0fr166XQywIk28aNG2nkyJHUtWtXo7plXdP8+fOl0Hz99dfTnj17jOIGr1y5knr06EFDhw7VxmDR1NL8li5dqtXhA07K9eijjxqVlffkxx9/pN27d1tsfu2119KwYcO0a9u2baN//vlHO1cHpnPu378/9evXT17m+8JhFNieeeYZKbrLE93Lb7/9JsMsNGjQgJ5//nndlfIdlvU+lW8U41a5ubnGBTgDARAAARAAgTpCAMJuDb7RkYNaE28wEAABEAABEAABEAABELCWAIt/y5Ytk9UDAwOpQ4cOlJ+fT5s3b6aMjAz67LPPaMqUKdIz1No+LdVjD9e3335b9u3o6CiF2EaNGtGJEydo7969xEIkJ99icdfUOBkZbxy3VSVq43myly2f//vvv0bCbkXWtHbtWjk8C8XMgYVUTgTGAjKLuyoxGnu59u7dW9Zlj13Vrl27dtSwYUNtCczUFnb48GFN1GUP5+bNm0tvZhZj2XvZVKxkb+u8vDw5NIvkBw8elMdqzmpOek9k9nx2dXWVfW3atIkGDx6sqsk9j6Fi5/bs2dPoWnlOKnKfyjMet2EmypOZkwDCQAAEQAAEQKCuEODPMxB268rdxjpBAARAAARAAARAAARqPQF+BF55dbKQOWLECOLH9Nj69OlD06dPJxZk2Zv3nnvuqRCPv//+WxN1OfEah2BQtm7dOvr999+JxcRevXoZXeM6kyZNkl66nKSNwwVwCABO1sUC3YwZM2RoANWXLdbE46nEWrfddhtNmzZNiru7du0i9nBl4xAIgwYNksd6YZfnbysPZ9l50YvyBGaheMKECfpLUgxXgre6wOIvb2wsCithV81Z1dPvWXDv3r078f1gYf/WW2/V3g9cjwVkZaYe0qrc2r0t7pO1Y+nrbd++XTtV91grwAEIgAAIgAAI1GIC/HfesRavD0sDARAAARAAARAAARAAgTpFgMU76b1R5CmrRF2GwJ6bHJaA7dChQ3Jf3hcWPtmrlm3AgAFmwi2HEeAvG2xKgJQn4oW9eFWSKz8/P1msvGaVZyyvQcW5reiaWAzVC37s1akE0rS0NDWtKt9zPF025mFqHBNXL5SbXi/LOXsls7F3bmxsrFFT9lpmi46OrnDs5YreJ6OJXeWEf1Rgz/PXX3+dfv31V1mbBWxeBwwEQAAEQAAE6hIB808RdWn1WCsIgAAIgAAIgAAIgAAI1CIC6pF0DjnwxhtvmK2MvXXZ+Dp7WHIisPKY3puUwz5wnFxTY3GWjZOD6Y0FZmXqWO31IicLkSwAV3RNTZo0UcNpe7VuTq5WXdatWzeKj48nTm73ySefUMeOHWU4Bha5lShui7mxeM7CNidcYyFXJUhjT2kVG9kWYRgqep/KslZOgqeSAnK7Tp060Y033liWLlAXBEAABEAABOyeAP8IDmHX7m8jFgACIAACIAACIAACIAACBgIce1UZC7elWU5OTmmXS72mH0eJxCU1UHFh1XW9aKm8VtVef+3KlSuyiX6s8qzJ29tbDa3t1XhKfNYuVOFB+/btaevWrXT8+HEZW5jjC7NxgrtbbrmFWPjV86jI1Fi4/emnn6SndnZ2tvTOZQ9bNk9PT9LH5S3vOBW9T2UZ94EHHpAhRVhMXrhwoQwpwbGTX3jhBapXr15ZukJdEAABEAABELBrAhB27fr2YfIgAAIgAAIgAAIgAAIgUEyAH+Fna9WqFbH4VVmmxuH+Ob5u48aNK2soUmOVd036cBSVNslydMxeyhxblz1pWWTluLnsCc1e1RxegMtHjhxZjp7Nm7CIvGDBAumpzUntWOjdsmWLrMhhM2zBqKL3yXzWJZdwOA3e2BuZva8//vhjGYKExV1beB+XPDKugAAIgAAIgEDNIcB/vyHs1pz7gZmAAAiAAAiAAAiAAAiAQIUIsMDKj6hfvHix3P3ovURL8urVC7nsRas/L/fAJTS0xZpK6NqqYhXr92qVWZTl2K/KGjRoQAMHDlSnJe45TIKKAXzy5EmaO3euDD/Bic2GDx9uE69d9lDu0qWLTGbH4Rg4PEVWVpac0zXXXFPi3NQFJfyqUB6qXL+vrvvE7NjLmeeWmpqqnxKOQQAEQAAEQKDWE0DytFp/i7FAEAABEAABEAABEACBukIgJCRELpUfUecYquUx/aPsHCbAkrG3pIqHqzw/LdWzRZkt1lTWebCQqQRua+PwZmRkyJAALMjytn379rIOKwXXQYMGyXYc4kIf3kDfmYeHh3ZamtiqVRIH1113nTzl98XPP/8sj5s2bUo+Pj76ahaPWaRmK+n9wNeq4z7xuGwq+Z4K32EoxSsIgAAIgAAI1H4CEHbLcI8vXkynwSPGyu3Heb9oLddv3KSV7z9QsQzDWqc4AAEQAAEQAAEQAAEQAIEyEujevbuMmcrNZs+eTWlpaUY9sPi4dOlSWr58uVG5/oQFW5VcbO3atVqCLX0dPr711ltlET/+zl6gemMv10OHDtEXX3xB1gqj+vb6Y1usSd+ftcdK4F6zZk25RfLSxlq8eDHt379fhhBQ9ZibEsr5PjRs2FBdMtrry/leKu9bo0omJ+xRqzyrlejfo0cPk1qWT5VoyyIyvydYdDa16rpPpvPAOQiAAAiAAAjUJQIIxVCGu80fYJJOnpIt9I+3ZYjHmFS5tb+Yl2FYVAUBEAABEAABEAABEAABqwiwGDhq1CiaNWsWnTlzht544w3pzcgJsljkVZ9hO3ToUGp/HEJg3rx50mP0/fff17xz77zzTmrXrp1sy7FZOV4rh35YtGgRLVu2jPz9/aXox2Mr8c80eVqpA1u4aKs1Wei61CIWPTm0Aic1e+utt+Tj/hwXlxONjR49utS21lzcu3cvbdiwQbJlwZX75rFUQjcWzrnMkrHHdLNmzejYsWO0bt06uXGSOPYy7tevH5UUXoHjz/7yi8FBhbmqe2lpDH0Zv1/+/PNP4rAbf/zxh9y4Pce45RjLbNV1n3hsxYkTw8FAAARAAARAoC4RgMduXbrbWCsIgAAIgAAIgAAIgECtJxAdHU2TJ0+mwMBAuVZ+nD8+Pl4TdYODg6ljx46lcujcubMUiJVnKIu0alMNOVzBpEmT6Oabb5aCInuNsjCZnJws67LYxv2wqMym4rSqEAdcpo7VnsuUqfp8Xp41qfZqr/rlvSqzNK6q17t3bxoxYoQUL7mMHThY2CwpjqvqU7W/2j4qKkqKocyVmXGYAxZ1eU7XX389sXBemt1zzz1SxFV82Rub51eah3SnTp20LmNiYohj71pjPKcnn3xS3gclovK8TYXU8twna8a/Wh31Pj169Kj2g8LV2uA6CIAACIAACNg7AQ5B5CAe9ym094VU1fxTUlKp32BDZtqH7htDE8ePk0Mv+WclTXnxNXn81f/eo84xpX9Qrqr5YhwQAAEQAAEQAAEQAAH7J8ChDtiu5mVraaW5ubnSc5fFPg4twB6WnGiqMoyTh7GIzGIhx2Rlsa2sYqc186rKNVkzn4rU4a9iLBSzNzULpRzvlu+REk8r0reltix8cngMNhZqg4KCLFWzSVlV3qfY2Fj6+uuv5bzZc5g9x1u1akW33HKLTdaCTkAABEAABECgphJAKIaaemcwLxAAARAAARAAARAAARCoIAEWCENDQyvYi3XNWcxVSbasa1G+WlW5pvLN0PpWLHyzkMtbVRjHV2Zj4bMyRV0eoyrvE4u4HLpi9erVxJ7Lp06dS4hJvwAAQABJREFUqjRxnNcGAwEQAAEQAIGaQgDCbk25E5gHCIAACIAACIAACIAACIAACNiYwIkTJ6TQuX37dhkqg7vv27evjUep/u44fAVvbKYhIqp/dpgBCIAACIAACFQOAQi7ZeDq6FQckthFeD8o48d9lOmPVRn2IAACIAACIAACIAACIAACIFAdBFasWEEHDx7Uhu7atStxfN3abB4eHrV5eVgbCIAACIAACGgEEGNXQ4EDEAABEAABEAABEAABEKh5BCoSY7fmrQYzqmoCW7ZskcnzvL29KTIyUm5VPQeMBwIgAAIgAAIgYHsCHKsfwq7tuaJHEAABEAABEAABEAABELAZAQi7NkOJjkAABEAABEAABECg1hAoKCig4tgCtWZZWAgIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAI1F4Cjo6OEHZr7+3FykAABEAABEAABEAABEAABEAABEAABEAABEAABGorAXjs1tY7i3WBAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAjUWgIQdmvtrcXCQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEaiMBxNitjXcVawIBEAABEAABEAABEAABEAABEAABEAABEAABEKjVBBwcHBBjt1bfYSwOBEAABEAABEAABEAABEAABEAABEAABEAABECg1hGAsFvrbikWBAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgUBcIIMZuXbjLWCMIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgECtIuBcq1aDxYAACIAACIAACIAACIAACIAACIBAOQksufvOcra03GzA9z9ZvoBSEAABEAABELABAXjs2gAiugABEAABEAABEAABEAABEDAnUJCdTVtEYg/e8o4fM69QA0oODewn55f60/c1YDa1ZwqJzz0luZ6e8VbtWVQtXMngEWOpU4++tGnLtlq4OiwJBEAABGo/AXjs1v57jBWCAAiAAAiAAAiAAAiAQDURKNTGLSy4oh3XpIMrmRlyOoV5uTVpWnY/l4IcA8/C3By7XMuAOXMrNO8ld42uUPuqapwtfnxhy8/Pr6ohMQ4IgAAIgIANCcBj14Yw0RUIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIVAUBCLtVQRljgAAIgAAIgAAIgAAIgAAIgAAI2IzAxx9/bLO+0BEIgAAIgAAI2COBwsJCQigGe7xzmDMIgAAIgAAIgAAIgAAI2CGB3PjjlLllE+UmJ5Jnm/bk2f0acvJpYHElBenplLn5X8pJTKD88+fItUkwuUe2Ive27cjRy9tiG1VYmJtLl/fspuyjhyn3RDy5BDQm96jW5NntGnJwtN635fL+vXTl4gUSjcjr2utU93JfmJdHWVs3U9auneTg5kpenbuQe/tOlHNwPxWI8APuzVuSY/36Rm34JHPTRiIRlsKjfUdy9K5HuceO0qX1ayk/NYXcW0RSvX4DyNHd3ahdgQgXkb19G2XFHiBem4fg4NEhhpwbNzaqxycFl9Lp8qGDRM5O5Nmpi9H1witXKHuHIZYqj+/g5ma4Lr4YZv67QRwXkodow2Nkbd9CWbt3Snbe111Prk0jjPrSnzCnrJ3bKU/cJ++YruTRtbv+conHO3btIf5SytY4wJ9CgpuUWNf0wtGjR4nF3YEDB1KLFi1ML9vN+ZGjx+jCxYsUGhJMgY0DKDU1jbbs2EnHjsVTYGBjuqFnD2rY0NdsPScSk+jwkTg6ejyefBv4UMsWzalDuzbkWML7m0Mt7N6zj/YdjBV1HKhj+7bUJjrarF/TgoyMTIo9clQrjmzejOrXr6ed4wAEQAAEQKD6CDiIHAYQdquPP0YGARAAARAAARAAARAAgTpDIPW3hXTiqWeN1uvSKoKif1lM7m3aGZWnzP6K4u5/yKhMnbi1j6JWP8wl93YdVJHR/vK+PRQ3cTxlrttsVM4nntfEUJv1m8nB6epfg9LmfEdHxtwr+4j49GMjYfeKEOLiHryPLvy8yGiM4Fem0tk5P1Je7HGKXrGM6t14k9F1PtlfJBC3EULqqY/fp9Q5PxvVaXjXCGrx4wKt7PLe3RQ7djTl7DmklamDlot+oQZDblencp+9dw/tv64XOQcFUMzJM0bXCjIyaJ8Qt9k6HYsjl4hm8phFam7Dxn0emzCB8k+dlefqxdJ6WCg+/eZ0Spz6sqom9/UH9CWXwACjMtOTK6LtAxOf1IrvvnMEPTVpgnZuzYESdwcMGCAFXmva1LQ6H336Ja3/dws9PvFBys/Lp5lfzjaa4jSaQVvWLCUXF8N7Nlfcq5lffEPf/jjfqB6f9Ojelaa9+Bw19DX+sST90iV65vlXaMv2nUZtRt4+2Ojc0smRuGP04KNPaZc+eGsa9e7VQzvHAQiAAAiAQPUSuPonmuqdH0YHARAAARAAARAAARAAARCoBQRY1HXv0oGCxj1IhQX5lPzxR1IAPXBTP+oYe4Qc6xV7t+aePilX3HDMHVSvSxdyDQ6hAiGmnv5uthRs9whv007siRsabkTm8qEDtKdI8GVhM+jxR8mtaXPKPZlEKYsWyrYORR6iRg1NTs5/8wUde+BhWdr826/J755xRjXiJz2iibrBL79A7kIgTVu2lJJfmm5Ur7STEy89T5eWraF6/XtTve7XEs8r7Z/ldEWIr8quCC9eXisbi+BNJj5Kjp6elPLLL5S+ZAUdHjqc2qxZRV7X3yDr2OKF+2QBPPi5/1L2wYN09rOvZbfHn32G2m3aZiSKp3z1mSbqBjzyANXvcR1l7tlFp979yBZTsbqPJUuWEIu89uy9u3zFGjoo/h0ECs/la7p1oXr16tH+Awdpx+69wqu5QGMx5cXptHLNenk+bPAt1LZNFJ0/n0LfzllAGzdvpaenvERfz/xAeuWqRi+8/Lom6t4r/k0FCU/glavX04Jff1dVsAcBEAABELBDAgUFBfDYtcP7himDAAiAAAiAAAiAAAiAgN0RYGGy9Z/LyDnA4MnpKzxNdwphlj1DU+d8T40eflRbk8/Nt5DfnXeTa7jx4/++o+6ibfV9ZL3UX+ZT4/88o7UR6hedmGI49+rVnVotWGwUqiDw8afo/HezqFCEVXAobmV2dO6Tj+j4Y0/I8sj5c8h35J1GdTjsQMr3c2VZq18XkM+wEfK4ofDudXJ3o3Nff29Uv6QTFnUjZn5M/o+IdYtHKdmavDydLu/coTU59+Wn8phF6nYr1pFzcLA89xt7Px0ZNYwu/raEkt5+g1rZUNhl8b31slWa0B5w3wO075oedHnbbso5sF/zlC7IzqYTr7wq5xM89VkKnvamPG4oXt3Cm1L8pGIvT3mhkl/s3XuXRd2bbuxNL7/wDHl6eGi0dgph19nZ4I+1eet2TdT9+N3XqGcPg/c1V765Xx8aOvo+2iXCLSxbuYoG9LtR9hF7+Ij0COaTd6a/SP3EGGwjhg6m//x3qnZNFuIFBEAABEDArghw+B1Hu5oxJgsCIAACIAACIAACIAACIGCXBJo8NF4TdXkBLiFh1GTKZLmW88KbVm8cG9ZU1OXr7NUb8LDBezbnxAl9E7p8+CBdWPSXLAt7eZqRqCsLnV2o0bjxwuPUyaid/uT0jLc0UbfV7wvNRF2ue2HZ37IJh4Sof9swrTn3G/jIY9r51Q58bhtA/hNE/SJRl+tziAiPLt20pmdEWAe2oEcnaqIun3MM3uBJhjAGF4VYnnfqFBfbxIInTdJEXe7QU3gTs7DMln+mOLRDlojVq8I1BIw3DqHQ6N4HZP3SXjguYPOIcGoaFiI3v4YsCVfc2HuXY++y0Gtv9vzkJ4xEXZ5/pw4ipnRR3Nx5Py+WS+rf9wYjUZcLw8NC6cbePeX1DRu3yD2/rFonYjoLY0/gG2+4Xh7zi5N4v947ZpR2XtKBu4jDrO4R7728PEuqinIQAAEQAIFqIIBQDNUAHUOCAAjYBwFOMlFg8rimk/hgzR+EYSAAAiAAAiAAAmUj4NW5q1kD76KyLOGVaGr5Z09Tyk8/yHAAlxMS6IpIIMaWc/S43OdfTJN79cKJ2ZR5975RHVq9T3jueU2oDHx6EvncOtRi25yEeFneoE8fM5HYrW17i20sFfqPuMNSsVZWeCVfi6vrXRQXV7soDtxFsjZleaeTySUoSJ1WaO8eGWXW3q1FhGSjZ54nwluwsSe2aUgMFuB9BvUnFp1LMhYrf/7xm5IuV6hcee9OEiK1vSRWY2/dBiIJWmnG8W7Zlq1YTfEJxj9scHnSydO8EyEdDss9v5w8ZRDju8SIZH0iaZre2raO1p9aPI6OakkL535r8RoKQQAEQAAEqpcAJyCFsFu998Bs9DwRMH/Hrt1m5aUVRIoMqBwgnx/TGTfhP+Qnjv/585fSmuCajQh8890c+ljEHbt1wE0yUYGNurVZNw899jRt27GLXhWPdA0eNMBm/daVjpgfP86mt7Gjh9PTj0/UFxkdfzTzK5r1w0806OabaPpLzxldwwkIgAAIgAAI1GUCzn6NzJbv1MCQ5Ik9P/nRfseiR9Av/rGIYgcXe8Oqhuw5qrxECy7nqGK5zzluEHY5lEBpXrlGjXQnql8uOv2eCJEw9l7y6NhZV8NwmCNEZjZX/8aGAt0re9Jaa66hYaVWzT93Xrvu1MhPO1YHTj7FCbLyTiYL185ioVfVKc/eydfXrJmjh2FdhVcKtGu5yQZh17UotIZ2oejAVcRxrW47cuSI3Qi7IU2alIqLHQ6SThZ7Zh8+ahB5LTXKycnVipOTDfGqfXzqaWXqwF2EDoGBAAiAAAjYNwEIuzXs/qVduECPPPHfMs1KxUrizLJs2bo/5GXqqIoq8y8Kz4mg/7x/YuJDFNzENt4Ftpp+wolE+uSLWTKW1esvP19qt/wBiy0nt/jDU6kNqvhibtF7Qb03qnh4q4dbJRJA/L18JUVHRdL9Y43j2FndSSVUjG7VglxdXGTP+w7GUlZWlnzfljZUXr7hvZCTY/xls7Q2uAYCIAACIAACdYFAQX6e2TIdCouLHFwNf3OvXLygibqcPC1kylRyaxlFDkV/k0+//zZxIjZTc/T0kEVXLqWbXrLqnEXj6N/+oBMvT5WepofvHUvt1m0mx/rFSd24I6eiJG8F2Vlm/RaKJCbWmpO3cb+m7RyLeMhy4fxhag4Fhs/+XO7oaqWgrEvCZdqfdm7s1KkVmx44eRgeyS/MM7+vXLcg13K5aT+VcT5gwACZSK0y+q6sPuvV8yq1a0fH4ifGyuK04Vn078LSW5O/j8FAAARAAATslwCHNYKwW8Pun5urK3Vs39ZoVvniwxKLSmwhQgRtZPKL/dUe2THqrAac8OcHfnyI7f6xo2ucsHvhwkVavnKNnN/VhF1ZCS8VJnBcPErGzHNrmED+3ycnaWt7/Z33acHCP7RzHIAACIAACIAACJSNQP5ZwyPh+lZ5ItwCG8er5fiybBnrDZ/DWGht9uVszYtXXhQvOUUhF0xFVLewCFklL/a48P7NEu3KFgs0bPo0Ed+2KzWb+TntFEnbcvYcosQpT1P4J1+qoeXerWlTuc+Oj5d7/cuV88Vetvry8hw7+RbHnFWc9P3k6Tx6XXTeno7i+wSb9EDmD966GL75585qXRRaI/Jqtc0PXIoSueUmCM9dk3G4dk5Sonkjk5LEpGTtR3MfIaD7+JQudps0t3hqj6KuXIiDxeVohRxGoWWLZsSeuudTjcOQaJUsHAQFGTynz6ekmF29dCnDrMy0oKCgkM6eO6cV169fzywOsHYRByAAAiAAAlVOAMJulSMvfUD+MDPrsw+NKqWnX6LeAwwxvp6a9Aj1KQqKb1QJJyAAAiAAAiAAAiAAAiBQgwlcWL6U6t88yGiGqcuXyHOvdsWxaa/oxCblxasasTdvyoJf1anR3j2ylXaeNv8n8rMigZfWQBw4OBs8Il3CmlKrXxdQ7O0j6YwIsVT/+j7kO+ourapn6zbyOPXH+ZQ/42OjhHDpy//W6lX4QAiy3n2uo4xVG+jC33+axfy9tGKpNoRLcIh27KRLQpZ/7oyYX6B2LXP7Nu24ogdu4U1lFywgZ+3aTpzwTlle0gk5b3Vuac9PlN12xz3apbvvHEFPTZqgnZf1gGPpDhw40G5CL5R1fVy/dVQrKez+uWS5THymkqqV1ldYiOG9sWHTVroswpfowy9s+HdzaU3ltXNC1B04rPiJuqcfn0BjR4+4ajtUAAEQAAEQqBoCEHarhnO1jHL6zFnauWsPxScmUVhoMPXqcQ3Vr2ceW0lNLjXtAh04eIiOxB0Xn2yJWjZvLrKwtiVPz7J5O6j+9PssETNt/4FDsqhA9xzQnv0HKCMzU6vqKxIGtGjeTDtXB2fEWk6IX/RZ+G4pYgpnZ18WMYX30J79B8WavKl7lxhq3szgpcGPFO3Zu1/++h/VqqXRhxfu7/DROMrKzBJMQqhhQ0MMsTNnz9EJwYkt9kic3PPL1u07tWM+4GyzAf6NjMrUCf+aHXfsOO3cs5cuXkyX8+zZo7tNE23JeypivjIPDgsQJubTrGkYtYpscdVx2BN5h3g/xIr18/uhY7u2pXpLc/979h0Q74djxLGfeZw2IsGCv4nHOK8/IyOTjop6TuILUbs2rRUSuef7zfeDrXV0K3It8iLh+mliTmwJiSIunLCUlFQz5pzUwaMorpusVIEXvkecTOKouE/JIkZZqPCA5zmp904FuraqKY958pTBMylavDe9vUt/5M6qTlEJBEAABEAABOyEAMetbXTHXeRZlAgsY/UKSpn9k5x943vu11bh1tTwmY4Fw/S//9AEzcKsTDrxzJNajF2tQdGBs/AgbTJlMp18411KmPI8sfDofUNfrVp+cjIlvjSFmn7+jeYdrF00OfAZNoIaP/4InfnoMzoyegx1FInKXFu0lLUaDBlOzkFPy3kcf2ICNfvsG3Ly8aHL+/dS/DNlC6lmMqzZaeBDD9NRIeyywOw3crS2Hk4UlzD9VVm/8WPjyalBcVxcl8AgrZ+zn3xEQc++QA6eXpR3Ip4S35iuXavogXvbDlSvf2+6tGwNJb/2KjX/fq7BS1qE3Eh69aWKdl+m9nbrpVumVYqnHe8eTYv++JvijifQ+//7jB57+AFycyuOk8sh5X5Z/Bddf1134mRpbLf070vvffSp/O7w+TffilB442X5ufMpNFN4xMNAAARAAATsmwCEXfu+fyXOfsk/K2nKi68ZXQ8M8KcvP5lBIcFNjMr55A/xq+//vfqmWTmHfnjntZcoqlWk2bWyFJw4kUTjJ002a/Km+ICvtxuFN/J7b7yiL5LHS0Xohvf/9zn16N6V7rlrpMU4xLM//4g6tGtDeSLu7X2PPCHbLfj+SzOh+OXX3hHi3hF6WSQUG1KUUGzF6rX0zgczzcY1nfOzT02i0SMM3tOmld+c8SEt+PV3o+JrunWmD995TYvTanSxjCfPPP8K/SPmacm6de5Eb7w6VSbRs3T9sBBR3xFfTFis1Rsn9+IkX6Z28NBheuq5F+m0ELxN7fVXXqCBN91oVHzo8BHiRGP8I8CGf4wZsHB/v0jqx7Z43rdSUOfjmV/MplXrNvChZhxyxJT53NmfUauWFXv/8QD8+NlL09+hjZu3auOpg/vGjqKJD40jF5fK+y+Rf9gY//gz8h7w+5zvFwwEQAAEQAAE6hqBfd2vJd/hg6lQeGteWPSXXH79AX3Ju2/x5xHPmC7k1as7ZYr4tpxAjY89o6Lpwto1xGEWXFpFyL0ldkGTn6OUP/+QYRQO9OknPV49WkRSTmIipS9ZIZtEiMS31ljo9LfowurVsq+j48dR1F//ECdH4wRvzT/5RHr0ps39lbaLTc2JQ0rok7BZM05pdXyHjyLPaz6grE07iNfjc9sAchSft3hcZUH/Mf6MzSJu4NOTZAK4pFffoNNffk31hLNB2i+/y3mqdhXeC4/i0Cn/RweEsMt9797Xlupfew1l7NgpmVW4fys7qCuiLuNgx5T/PDqePvjkC/ph7i/099IVwkkhijhMA4u68eI7F1u7tlFyzy/syDLunruIkz7P/mEerduwiYJEYrsdu/eZfTfQGukOruiccnTFOAQBEAABEKghBCpPxaghC6yL02DxjkVdFvtYWFwr/njvEl6eLNJ9/e0ceul54w9/835ZREpg5fo39OohYp3m0+I//pK/Bj/w6FP0+/zvNO/W8jBlL9fHJzwom7JH7cdFH6hH3j6YghoXZ8wNFx9WSrNjx+PpqSkvyyr9+95AwUFBxLG5WPCsSHxWjmus5peYdJIW/m74oqHK1Jw6tDX2RlXlKibv0FsHig9KAbTwt78k701btst4wrcOKP6yotqUdZ986pRswn21aB5BDYV388nTZ+i7n36mLcKz+IEJT9Avc2aJD3aOZl3/tGCRLHvg3jHUyK+h/BDI3tJTX3mTggMDqWOHdlobTuB31zjDY3B+vg1o1Mhh5O7mTsvEjwUsvD7/0mvkKzynr+nWRWtTnoNbBvYTHzqjZVPmxGvgHxJuHzLIqDt/f3+j8/KcsMf46HvGU4rwSmfx+U6xphARb+zg4Tia/+ti+SHXxdmZJoovbZVhu3bv1cRtFtJfmfrMVT2sK2Me6BMEQAAEQAAEqp6AgzZk9NK/6ZjwuGURUJn/A3dT+IczhQdtcWIoB/F0T+R3P1H8k49J8ZcFXt445m7z2V9RQV4uHX9ookWvW6eGftT+323Ca3caJQthlsMY8KYseOqzVCiSUBXPikMwGL4SOTgYf4ZyFEnSWn79He3t2k32ceaDtylI/PDNxh69rVetoOT336GLvy2RQrPffXdSyPMv0f7e10tx92oxfgud9LNQMzTeM4vWy1ZR4vPP0Jn/fSHHUjXYW7b5p1+Ra7MWqkjbB4t5Xo6Lk/xYaGbmLKA3+3gm7VIhK3TJuPRxeE05aJ3ygcmU2SO69ap/6PBdd0kGKUJ4Zwt59UXKT0ul0+//T7QxaSRrmL9Y+gxrXqu4pLYIuoq3o8n7r3ilxkf3jhklQjK0pNff+UAKues2btIq8Ofcvjf0oijxNJ/eHnt4nHyKcaZIEM3evryxcRLuN9/7SH5GVvPQt+Pjo/w0p874SUkYCIAACIBAzSDAYY0Mn2JqxnwwCxsSGNDvRnrt5eflr7f3330nfTn7B+EhOUs+uvOiSALBmfPYWMT76FOD18L9Y++kSRMe0K6NHDaYRo59gJLE4+OffT2bnhcfxMtr/Esxz4ONH4dXwu6wW2+haPHBxFpjcbppWAj9b8YXRmEE+BdqL6/yh4zgeFW8se0WIrgSdtWcrZnf88/8h5gZ24P3jaVHn3qOWLD8RyQFs4WwO/Gh+6i98Eg2DafBovQjT/xXfrDjUAvqsSvTOX89832K6WiIXzds8EB6cOKTUqj9Wvx6//F7b2jV+dd/Nv5g+MM3n1Jg4wB5focQ4Xkc/pHg0y+/rbCw2++G62W//MJiPwu7zZs11d4n2kUbHHz74zxN1J3/XfF7h32vW0e3JPbi/nL2jzRECPPBQly2pW3ZtoMeFp66bLffNohe+O9/LIrvthwTfYEACIAACIBATSHA3q3dxN95ZR36D6DchON0RST+cmvZihxFwixL5irCMbT89Q/KS06kvJMnycU/gFxEmRIJ/R8sORYre6wGT3uTmrw8nfKEp27e6VMiVEEDchUJ0Xg+ptZ65XrTIu2ck6np569dEAfeN9xIrcRWeCVfFnPyN07apjx2XYuSi+nb8HFJ/ZnWU+csMId//DmFvv0B5cYdkcK2mxBznXwaqCpme6dGjShSiLn5ItZt3pkzIoxEJDkXJWOzNL6Di0up84peutpsDFXA4m6npFOUF3+M8kUMZPeo1lriujARg7gkcxJi/s6NBi/qkuqUVs7xdCvTltw1ujK71/r+6N3XtGNrD7oKB56Fc7+l9EuXKFGENMsXTyzy961A4TBj6Qk0/u73kPh+wqLwsWPx5OjkSM0jmkpHg3439i512K3CA1sZO9ZEigRuMBAAARAAgZpBgP+WGv8sXTPmhVnYgMC4e+6Uoq7qqm/vXuqQ9NlPlyxfJR/BYc/MiePv00RdrsyB9ceKJAZsK1eX/IFXVqjCl+eeftxMfOPYt438/KpwFsZDsQjKYqky9jjo18cgXJ4SXrW2sJ4lxEhmIZfHZzslYu9asvZtWmuiLl/nWFxjiu7t+n+3GD2G9ZcIy8E2ctitmqjL59zm/rGGD7js7ctxie3BWDT+4pvv5VSfmvSw2XtnoIg7pvht3bHLpktaLzwolKg7ZtTtQtR9EqKuTQmjMxAAARAAAXskwAIrC6YlibramoQY5RISJmPyukQIMUmcl8VYaGWB2OuaHkVio7moW5b+9HU5lIQyHoc3tktLDE998bFLk2De2cxYlHZv214mKStN1FUDOojPo5wIzrNrd03UVddsveex2HOYE6hdzVPZ1mPX5f7Y4aNN6yjqIBw9QkOCLYq6ej6uQsDnEHucs4TFAGts/cbNWrUJD96rHeMABEAABECgZhCAx27NuA82n0V4eKhRnw2FcKuMf9mtX9+QRO14QoIs5kfUxxQ9fq/q8T49/ZJ2nZOr6fvR16uqYxbgunftXFXDWT1OVGRzci56jE81UonZOCGYrYwTv/3+11IRfuIksWDMbvdsKnYuJzGzZJ1jOpgVtxNJyZSxSBvRNFz2p+LqdmpfHJ5B1WuvC0Vx9tw5aiziNtd048QQyj4VXuvzf1msTrW94scJ3WxlHB5ExUTm+Nac5Znjn8FAAARAAARAAATsn0DqD7Pp/IL55D9mLHkKsdVB/ACeuX0rxT9tCHkW8b8PiZxd7H+hdXAFA77/qQ6u2vKS+fufitt7m8hN0jQ8zHJFlIIACIAACFQbAQi71Ya+8gZm8ZN/jdUbP26jrEAXAD8hIUkV0+GjpYta2SJOKekEYq1hFR6Eh9rW88FWU/cTcWtNzcXKX8FN25V0/u6Hn9CP84oTZXA95Wmq2lzOuawOjfaWBHkf3aOPZ8XjkCzspqSmae0aNiz+MUAV1te1OXPmHInIEDXekkUoEWX8AwZvJVlF4jSX1CeXs1g+Z/6vNHa0wQO+tLq4BgIgAAIgAAIgYB8ELv65jHgztYBHHiC/cQ+ZFuMcBOyOgK/I6bF2mcEpgnNuwEAABEAABGoeAQi7Ne+eVOmM+PF6tsG33EyvTv1vlY5dnsF8RNKuiprycq1oP1XZfoMIl6BE3XvH3EF33D5EhklQSSbuf+QJGfu2pDlx3C1T0wv87kXvA31Mrvz84kcMVduCguIyF5MfD1Qd032hiKlcneYqko4o+00kAeTH1KrKXnruKTohYs7N+uEneu+jT6mziHFclpjSVTVPjAMCIAACIAACIFA2Ag2G3E6tfvejzJ07Ke/saU4iQe6RLcm7S3fy6mkIx1W2HlEbBGoeAY7NW8/bu+ZNDDMCARAAARCQBDj0JITdOv5maBYRRpxJ9dz589VCopDKJvpZky3WScT4UpaTm6cOtX3SSfHhWxj/A7AXW7vBkO2257Xd6D+PPmw2bc3buoQlnU8pDkegGp/XhYgIKAqp0MDHR12mc8KL19T0Hr2BjYvDMLgUhaHgkAbMVSXn4/b6NtXBPDSkibYMfpys3MJuUVy/rCzLXtHaIEUHfXpdR0NFsrTcvDzatHUbHYw9Qv+d+irN/faLEhP9/f7nEjqsCwcxVCRza94swrRrnIMACIAACIAACFQzAacGvuRz61C5VfNUMDwIgAAIgAAIgEAdJcAaS7ECVkch1PVlt2guElEI27RlO50uIfGWrRlxnFEVQkDF8LXlGJwIQPV/8rRBxFX9J5xI1OLRqjLTvWrL5VkcfqIGWGZmlpyFh4VMztt27LrqmlasWiccSYxV342bt2orU4nnWJBtWZTpdtXajdp1daAEZj7nrLvKGojHtJSlpBrHFN69b7+6VOLe29tLXrNlPGI1GCeV4OSAbEuWr1DFZd4HiOzSbFu377SqrUpIwWFR3njlBdkmSYSFePO9j0psv054Zv8w9xdtS0ouDiNRYiNcAAEQAAEQAAEQAAEQAAEQAAEQAAEQqHME+CluCLt17rYbL7h/3xuoaViILHxp+tvCc9fYs/PixXQhMv1MPy1YaNywgmcqVu6Chb/TmUoQlJU4OUfEpOXEYGzZ2Zfp3Q9nXnXmjXWeqD/O+4VKSkh21Y5sWCE8zBA+YPnKNXTyVLFYnZiUTK+9/f5VR+IYr9//NF+rl5R8kmYXJYYYO3q4UQbdUSOGynpL/llJHAJCGY/1+Vez5enA/n1JHxbD398gevLFb76bqwniHN/2i6+/k21Ke2kSaBCJ9x2MpfXCgzwvzzx0RGntr3btyccfkVXm/ryY/ly63Kg6/8K1Y9ceev7l14kTC5ZkkUU/grA4u+iPv8s0x/CwUHpxytOy6z+WLCfeYCAAAiAAAiAAAiAAAiAAAiAAAiAAAiBQEQIIxVARerWgLXsTTv3vk/TgY0/TFuGJ2P+2O6hLTEdqIJJkJZ86JR8f52WOHjHEpqu9fcggIUh+QCvXrJdbSJMg4WXrQd27xtBTkyZUeKzhQ2+VMWd37dlHA4aOlms6fjyesnNyr9o3e3iy4L1sxWqa+cUsuTWPCCf2wLz/njtpQL8br9qHrSsMuOlGmvnlbNntoOFj5Hrc3VxpfZHwyl7GHAahNPvgky9o6T+ryK+hL+3YvU/W53ZjRhkn9Lp1YH/6fs58mQH3saenUMf2bcnd3U16dav+x98/Vh3KvafwJOawASx4/rTgV1osQgq0jmpJ7E2svGWNGpicdInpRIEiHAQL0JMmvyA9rkOaBMpab09/kVgYrYgNvKkfLV2+WoYdmfrKm/TVrB+oWURT4mRpBw8d1hKqPTXJPMyFGrfXdddIb2YOe/HK6+/KjdfGoRI+//hdVa3E/bDBt9DGf7fSP6vX0v+9+ia1bxNNYaGGH1VKbIQLIAACIAACIAACIAACIAACIAACIAACIFACAXjslgCmRhU76GYjwhiUZPq4pqZ19LFpTet1FkLu7wu+p2u6dZbNWIxj8YljgrJxXNcbRLxQWxqLXO8IwY5FQzb2gmTB7NSpsxaHcXAwvFU5jIM1NlAIoXeOvF2rymti+/jd1yi6VaQ8diqKmSpPTF7+79mnaPITEzVv5rjjCXJ+7MGsN8VS7Y2v2e6fF8eF/fSDt6T4yWPweljUZTF01qcfyKRcXK6SqfExm6OTYQ68lh7du8p7yu1YBGZP7Z9mfSqTsBlqG15Z7P/+q5nEXrlsLI5zqA42Zrdo7mxqGh4mz/UvkyY8SDEd2ski7p/n2Da6FX35yQytmun81AUWjr+a+T7dfecdUgjm9vx+4C3XQpxk1c7aPb9vPnh7Ok2Z/LgUjeNPJMkfFJhFStoFyZHH9vbyLrFLnjuvhd+7zJ2N2164eNGojYODkzx3sPBe/T+RTE0J3c+9ON2oHZ+Yvo+sfb+bdYQCEAABEACBOk0gKSmJ4uPjKVWER7KUQLVOw8HiQQAEQAAEQAAEQKCWECgQyVsdxGPIxoE3a8nisIzyEcjJyaETicl0KSODOJFWYGAAsTemvRony+IQAuylGhJcnETLXtfDIQqSkpOFmJgukoA1IRUb19r1pF24QAkJidREeEgH6MInlNT+8uUcik84QXn5eRQeGkr169crqaos5zi+p0RcY068xuKvPvZuqQ2r+CKHHDkpfkxg4Ztj53LyOFNRtYqnhOFAAARAAARAoEQCu3fvltc6dOhQYh39hXfffZfOni3+sfyaa66h228v/sFbXxfHIAACIAACIAACIAAC9kmAJV0Iu/Z57zBrEAABEAABEAABEACBOkKgrMLuhg0bSHntpqSkSEr33XcftW7duo4QwzJBAARAAARAAARAoG4QQIzdunGfsUoQAAEQAAEQAAEQAIE6QuC66wwhtNiL47XXXqP09HSKi4uDsFtH7j+WCQIgAAIgAAIgUHcI2C4IaN1hhpWCAAiAAAiAAAiAAAiAQI0nwGGGgoOD5TzT0tJq/HwxQRAAARAAARAAARAAgbIRgLBbNl6oDQIgAAIgAAIgAAIgAAJ2Q8DV1VXOFUnU7OaWYaIgAAIgAAIgAAIgYDUBCLtWo0JFEAABEAABEAABEAABEAABEAABEAABEAABEAABEKgZBCDs1oz7gFmAAAiAAAiAAAiAAAiAQKURyMnJqbS+0TEIgAAIgAAIgAAIgED1EICwWz3cMSoIgAAIgAAIgAAIgAAIVDoBb29vOUZCQgIVFBRU+ngYAARAAARAAARAAARAoOoIQNitOtYYCQRAAARAAARAAARAAASqlEBISIgcj0XdvXv3VunYGAwEQAAEQAAEQAAEQKDyCBQWFpKDeCmsvCHQMwiAAAiAAAiAAAiAAAiAQEUI7N69Wzbv0KFDmbvhj/pz586lnTt3yrYNGzYkX19fatGiBfXt27fM/aEBCIAACIAACIAACIBAzSEAj92acy8wExAAARAAARAAARAAARCwKQEHBwfq06cPtWvXTvabmppKcXFxcrPpQOgMBEAABEAABEAABECgygk4V/mIGNAqAl/O/oF++2OJrPvzj1+Tm5ubPH540mQ6eeo0dWjXlqa/9JxVfaESCIAACIAACIAACIBA3SRw7tw5mjFjhlw8e+sOHTqUAgICyN3dvW4CwapBAARAAARAAARAoJYQ4FBbEHZr6M1MS0ujpJOn5OwKCoqjZbCoy+UB/o1q6MwxLRAAARAAARAAARAAgZpCQIVg4Pk88MAD5O/vX1OmhnmAAAiAAAiAAAiAAAhUgICjoyMhFEMFAKIpCIAACIAACIAACIAACNRkAikpKXJ6DRo0gKhbk28U5gYCIAACIAACIAAC5SAAYbcc0NAEBEAABEAABEAABEAABOyBAD+ixxYYGGgP08UcQQAEQAAEQAAEQAAErCTASXIh7FoJC9VAAARAAARAAARAAARAAARAAARAAARAAARAAARAoKYQgLBbU+4E5gECIAACIAACIAACIAACNiaQnZ0te3RwcLBxz+gOBEAABEAABEAABECgOgnw5zsIu9V5B0oZ293NQ7uq/yDu6Wko9/Ly0q7jAARAAARAAARAAARAAARMCeTm5lJ8fLwsDggIML2McxAAARAAARAAARAAATsn4CDiMRTa+RowfRAAARAAARAAARAAARCotQR2794t19ahQwer1rho0SI6duwYnT17llSM3QkTJlBERIRV7VEJBEAABEAABEAABEDAPgg428c0MUsQAAEQAAEQAAEQAAEQAAFrCBw9elSKulzXx8eH+vXrB1HXGnCoAwIgAAIgAAIgAAJ2RgAeu3Z2wzBdEAABEAABEAABEACBukWgrB67Kq6uh0dxaK+6RQyrBQEQAAEQAAEQAIG6QQAeu3XjPmOVIAACIAACIAACIAACdYQABN06cqOxTBAAARAAARAAgTpN4MqVK0ieVqffAVg8CIAACIAACIAACIAACIAACIAACIAACIAACICA3RFwcnKCsGt3dw0TBgEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQqPMEHOs8AQAAARAAARAAARAAARAAARAAARAAARAAARAAARAAATsjAGHXzm4YpgsCIAACIAACIAACIAACIAACIAACIAACIAACIAACEHbxHgABEAABEAABEAABEAABEAABEAABEAABEAABEAABOyJQWFiIGLt2dL8wVRAAARAAARAAARAAARAAARAAARAAARAAARAAARAgCLt4E4AACIAACIAACIAACIAACIAACIAACIAACIAACICAnRFwdHSEx66d3TNMFwRAAARAAARAAARAAARAAARAAARAAARAAARAAAQg7OI9AAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAL2RgDJ0+ztjmG+IAACIAACIAACIAACIAACIAACIAACIAACIAACdZpAQUEBOddpAlg8CIAACIAACIAACIAACNgJgd27d9vJTDFNEAABEAABEAABEACByibg7OyMUAyVDRn9gwAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgIAtCXDyNHjs2pIo+gIBEAABEAABEAABEACBSiLQunXrSuoZ3YIACIAACIAACIAACNgbAQcHB3js2ttNw3xBAARAAARAAARAAARAAARAAARAAARAAARAAATqNgEIu3X7/mP1IAACIAACIAACIAACIAACIAACIAACIAACIAACdkrA0U7njWmDAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAiAQJ0kUFBQgFAMdfLOY9EgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAJ2TQAeu3Z9+zB5EAABEAABEAABEAABEAABEAABEAABEAABEACBukjAuS4uuqavueBKAfGmNwdHB3JydtIX4RgEQAAEQAAEQAAEQAAELBK4fPky8WZqPj4+xIk2YCAAAiAAAiAAAiBgSwJXrlyh7Oxssy49PDzIyQl6lhkYGxQUFhYShF0bgLR1F5s+XEfrXl9t1K1/uwAat2qCURlOQAAEQAAEQAAEQAAEQMASgQ8++IBmz55tdmnLli1Uv359s3JLBadOnaI+ffrIS2vXrqWAgABL1WxSlpubS3/99RcdOnRIfinMz8+nAQMGUK9evWzSPzoBARAAARAAARCoXAK7du2iefPmmQ0yZswY6tChg1l5VRdkZWXRyy+/LId94oknKDg4uKqnYPPxHB0dIezanKoNOmwQ2oCa9W0me7p4Mp1SDp63Qa/oAgRAAARAAARAAARAoK4QYPH2pptu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AiRAAiRAAiRAAiRAAiRAAiTgLYH4+HiJMNx2k7ytwHIZJ4DQE2d2n5TL5y5LoUpFnLxtPbWOWLynd50UhLMoUKGQ1zFvLxw5L+cPn5WClQpLTL5cnnZhbts+Y5NMfnSiEqH7bnhB4MUbbJZeHukdx/nz59NbNVPr5c3L2TszFTAbJwESIAESIIEgILB27VrVi1q1agVBb9gFEiABEiABEiABEiCBYCEQHSwdyS79wCRkhaoU9Xm40blySNFaxX2uF1s8r+Dji61Mnsyt3sMNglLUxVjSy8MXDixLAiRAAiRAAiRAAqFKYPHixfL7779LdHS0FCpUSFq2bCmNGjUK1eGw3yRAAiRAAiRAAiRAAjYCkZGRQmHXBiW7rh5df0iijHAF237bLHEL4hSGhr1uyK44OG4SIAESIAESIAESCGkCV65ckZw5c8rVq1fl2LFjMnnyZClSpIhUqFAhpMfFzpMACZAACZAACZAACTgIBHzyNIIPXgKL3pkrO/7YYXbwhr43qpAPZgYTJEACJEACJEACJEACIUOgffv2gs+RI0dk+HDHpMVxcXEUdkPmCLKjJEACJEACJEACJOCZACZPo8euZ0bZZmvBcgVVTN2cBWOkXrfrpem/WmWbsXOgJEACJEACJEACJBCuBIoXL2567rqbyDVcx85xkQAJkAAJkAAJkEC4E6CwG+5H2MvxtR92p+BDIwESIAESIAESIAESCB8CCMWAD6xYsWLhMzCOhARIgARIgARIgASyOYHExESJzOYMOHwSIAESIAESIAESIAESCFsCBw8eNMdWunRpM80ECZAACZAACZAACZBA6BOgsBv6x5AjIAESIAESIAESIAESIAGXBPbv36/yMZFanjx5XJZhJgmQAAmQAAmQAAmQQGgSoLAbmseNvSYBEiABEiABEiABEiCBNAkcPXpUlSlYsGCaZVmABEiABEiABEiABEggdAgkJSUxFEPoHC72lARIgARIgARIgARIgAR8IxATE6MqQOC9ePGib5VZmgRIgARIgARIgARIIGgJREZGUtgN2qPDjpEACZAACZAACZAACZBABgk0aNBAcNEPe+utt2TkyJGycuXKDLbK6iRAAiRAAiRAAiRAAllNICIigsJuVh8E7p8ESIAESIAESIAESIAEMotAjhw5pECBAqp5zJyMmLvnzp3LrN2xXRIgARIgARIgARIggQARSEhIkOgA7Yu7IQESIAESIAESIAESIAESCCABhF4YPny4QNAtUqSItG7dWi2LFy8ewF5wVyRAAiRAAiRAAiRAAplBAG9lUdjNDLJskwRIgARIgARIgARIgASymMDff/+tRN3o6Gjp27ev6Hi7Wdwt7p4ESIAESIAESIAESMAPBDB5WsSaNWuS/NAWmyABEiABEiABEiABEiABEiABEiABEiABEiABEiABEggAATy8d8ykEICdcRckQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAL+IRBhTJ5Aj13/sGQrJEACJEACJEACJEACJEACJEACJEACJEACJEACJJDpBCIiIuixm+mUuQMSIAESIAESIAESIAESIAESIAESIAESIAESIAES8DMBhmLwM1A2RwIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKZSYAeu5lJl22TAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQCYQSEpKYiiGTODKJkmABEiABEiABEiABEiABEiABEiABEiABEiABEggUwkwFEOm4mXjJEACJEACJEACJEACJEACJEACJEACJEACJEACJOBfAomJifTY9S9StkYCJEACJEACJEACJEACJEACJEACJEACJEACJEACmUsgKiqKwm7mImbrJEACJEACJEACJEACJEACJEACJEACJEACJEACJOBfAoyx61+ebI0ESIAESIAESIAESIAESIAESIAESIAESIAESIAEAkKAMXYDgpk7IQESIAESIAESIAESIAESIAESIAESIAESIAESIAH/EIiIiGAoBv+gZCskQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkEBgCDMUQGM7cCwmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAn4jUBiYiI9dv1Gkw2RAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQAAIREVFUdgNAGfuggRIgARIgARIgARIgARIgARIgARIgARIgARIgAT8SiDar6152dicOXNk7ty5UrFiRfVp3769lzVZjARIgARIgARIgARIgARIgARIgARIgARIgARIgASyNwFMnhZwYVeLukC/e/du9UGa4i4o0EiABEiABEiABEiABEiABEiABEiABEiABEiABEjAM4H4+PjAC7vw1LUb8kJN2L1y5Yps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AAmQAAkEC4G0RF3dz6wUdyMMoS1Jd4TLtAlgYjCItZhAzGqIwWuf7AwCb/fu3a3FBPUHDBjgVNZet2HDhkpY1SEKFi5cqPaJhubPn+/UHlbgIdy1a1eV/9VXXynvWwRQHjhwoCkUYyM8aZEPsVcb+nLnnXeq1StXrghCNCxfvlxvFnvfIAT/73//E2u4hTZt2qjyEIObN2+u0gg18eKLL8q6devMtlD32LFj5jo8mNGWLxPCmZWZIAESIAESIAESIAESIAESIAESIAESIAESIIFMIOCtqGvddXrqWOv7msa8VZG+Vsru5RGL9rPPPpNu3bop0VPzsIq6iGX75ZdfphJ1URb14Y7dsWNH0/tX14XwCa/Z999/3ynubHS073PcRUVFqTAHEJa1l/GePXtMUbdatWoyePBgU9RF3yCwvvPOO/Lss88K+gLTfUMbEIARKsIq6qpCyX+wT20QpT/88EN57LHHzBi7VlH3oYcekrfffpuirgbGJQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQFAQ0G+6WzuDkAvwznVn7jx3XbXlrg1f87PEYxcDwuRpGDA+oRJn1xVchBbAZGOYrAzerfhgwjJvDd62EDwR9xbhEDLDEEoB+8FkahBvCxcubIqtnvaHse3fv1+FatBCr6fynradOXNGicQIL4G2cuTI4ak4t5EACZAACZAACZAACZAACZAACZAACZAACZBAlhGwxslNS9S1dtLquetO7LWWT286MjJSAi7salHX2ul27dqFtLhrHQvTJEACJEACJEACJEACJEACJEACJEACJEACJEACoU8A4i4cUiHQ+mIQd6GBuppYzZd2PJVFKIaAC7uI++rKhg4d6iqbeSRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAhYCQRNj11fV2zIGJkmABEiABEiABEiABEiABEiABEiABEiABEiABEggWxFITEwM/ORpCLtgNwq7diJcJwESIAESIAESIAESIAESIAESIAESIAESIAESIAHXBKKiogIv7CIuhVXcZXxd1weHuSRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiTgikBSUlLgY+y66gjzSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEvCMQNDF2vesuS5EACZAACZAACZAACZAACZAACZAACZAACZAACZAACVDY5XeABEiABEiABEiABEiABEiABEiABEiABEiABEiABEKMAEIxRIZYn9ldEiABEiABEiABEiABEiABEiABEiABEiABEiABEsjWBBITEynsZutvAAdPAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiQQcgSioqIo7IbcUWOHSYAESIAESIAESIAESIAESIAESIAESIAESIAEsj0BhmLI9l8BAiABEiABEiABEiABEiABEiABEiABEiABEiABEgglApw8LZSOFvtKAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAgaB+Ph4hmLgN4EESIAESIAESIAESIAESIAESIAESIAESIAESIAEQolAZGQkhd1QOmDsKwmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAlQ2OV3gARIgARIgARIgARIgARIgARIgARIgARIgARIgARCjEBSUpJEh1ifve5ujcEXvC7LguFHYMvg2PAbFEdEAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAskEordu3RqmMMqE6bg4LG8IhO/32pvRswwJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEA4E4iJiWGM3XA+wBwbCZAACZAACZAACZAACZAACZAACZAACZAACZBA+BFITEyUiHPnziWF39A4IhIgARIgARIgARIgARIgARIgARIgARIgARIgARIITwIRERH02A3PQ8tRkQAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJhDOByHAeHMdGAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAuFGICkpiR674XZQOR4SIAESIAESIAESIAESIAESIAESIAESIAESIIHwJsBQDOF9fDk6EiABEiABEiABEiABEiABEiABEiABEiABEiCBMCQQGRlJj90wPK4cEgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQBgTSEhIoLAbxseXQyMBEiABEiABEiABEiABEiABEiABEiABEiABEghDAvTYDcODyiGRAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmENwFMnhYd3kPk6EiABEiABEggexPImzdv9gbA0ZMACYQ9gfPnz4f9GDlAEiABEiABEiABErATgLAbac/kOgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQHAToLAb3MfH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CZAACZAACZAACZAACYQ0AQq7IX342HkSIAESIAESIAESIAESIAESIAESIAESIAESIIHsRoAeu9ntiHO8JEACJEACJEACJEACJEACJEACJEACJEACJEACIU8gKSlJokN+FBwACZAACZAACZCAWwKMPekWDTeQAAmQAAmQAAmQAAmQAAmQQEgTYCiGkD587DwJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEB2I5CYmMjJ07LbQed4SYAESIAESIAESIAESIAESIAESIAESIAESIAEQptAVFQUhd3QPoTsPQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQHYjgBi7DMWQ3Y46x0sCJEACJEACJEACJEACJEACJEACJEACJEACJBDyBCjshvwh5ABIgARIgARIgARIgARIgARIgARIgARIgARIgASyE4GIiAiJ3rlzZ3YaM8dKAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiFNIDo6mqEYQvoIsvMkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQALZjgBi7EYYf5Ky3cg5YBIgARIgARIgARIgARIgARIgARIgARIgARIgARIIYQKMsRvCB49dJwESIAESIAESIAESIAESIAESIAESIAESIAESyJ4EKOxmz+POUZMACZAACZAACZAACZAACZAACZAACZAACZAACYQwAQq7IXzw2HUSIAESIAESIAESIAESIAESIAESIAESIAESIIHsRyAxMZGTp2W/w84RkwAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJhDKBiIgICruhfADZdxIgARIgARIgARIgARIgARIgARIgARIgARIggexHgMJu9jvmHDEJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEAYEGCM3TA4iBwCCZAACZAACZAACZAACZAACZAACZAACZAACZBA9iJAYTd7HW+OlgRIgARIgARIgARIgARIgARIgARIgARIgARIIAwIUNgNg4PIIZAACZAACZAACZAACZAACZAACZAACZAACZAACWQvAtHZa7gcrZ3A1WvX7FkSHRUtkZERqfKZQQIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkEBwEws5j9/l/D5SRX4zzii5EzQ0bN8tPk3+RaTP+kN174iQxMcmruuFQ6PLlK9K09W2pPgsX/xUUw3vi2RekQfP26tgERYdsnRg+4gvVv1def9u2hasZITBj5izFtdfT/TLSTJbWTbp4Uf4uVVx99r0zNEv74s3O4157WfX10PAP3RYPtTG5HQg3kAAJkAAJkAAJkAAJkAAJkAAJkECYEAg7j90rV67ItavxaR6eAwcPyePP/EsOHz3mVLZl8xvlvaGvSUxMjFN+VqzMW7BYfp81V2rWqCq9Hn7Q712IjIqUGxo1MNtdtnK1SicFibZ99cpV1Z+EhASzj8GUuBbv6B++czT/EUiMdxzvUOaalJRoAolIDM7vr9lBI5F01fFdTrzm/rscamOyjo9pEiABEiABEiABEiABEiABEiABEgg3AkmGgBc2wi7Ev6XLV8rBQ4clOjpaFv31j5QrW0Z9IiKcwwqcOHFSHn3iWTlx6rTkyZNHOt5xi1y4eFmm/TZTFv29RPr/d5B89mHWe2Hujtsrs+YukKvJoou/v4A5c+SQzz9532z27q4Py35D8KaRAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAkELwHonX4Vdg8cOCClS5cO6Igh6H7/0xT5fsIk0/sW4uTfS5erfkC4nT1touTOncvs1/Q/ZilRFxnjRn0sVatUUtvq1aohQ9//WNXduHmr1K5Z3azDBAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAkECwG/CbtLly6V5cuXS5MmTaRp06YBG9+Ycd/K51+OV/vreOdtsszw2q1QoZw0ql/P8NpdKus2bjLi5qa8Fg035anTflPlH+jayRR1kbFzzx6Vjz/Tf5/pN2EX+1y1eq3s2L1Hjh47IXnz5pESxYpJo4b15bpiRc19IrFj5y45dfqMyovbd0At4WG8PDlMgsow/tSpVdMUq7fv2CWnz5yRIoULS6WK5XURp+Wu3XFy4uRJKViggNOYnQr5uLJ3337Ztn2nGlehggWkWpXKcn3d2sbEa/4P3XzaYLJqzTrZumOn4YVdWurXrSOlS5V02eNr1+Jl3foNsitunxw7flzy5Y2VShUqSPVqlaVokSIu61gzwRPfhT1G/VxGSI4K5cpIs6ZNfArPgVAf8B6H1axezTjmsdZdyJat29V388zZc1Kvdk2DWx05fuKEcexPy3VFi0rx4tc5lceKPs5ly5SWEsb2kydPybJVq2XXrj1SokRxadOiuRQuXMipHr7764040tuN7xXKly5dUmpWq+bye4Lv6br1GwXLGkafc+WKcWprm8H+4oWLygveup+t27bL2XPnpUL5clIgfz7ZZDwUWb1ug+E5HyX16tRW3wmnhiwrhw4fkTVr18se47tUtVJFaWj832ZHu3bokFyJ2y1RBQtJ7ho1JfHSJTm/YplcWLNaoo3/2XzNmkuuqqkfNCWcPCEX1q+Ti9u2GNgiJLZ6DYlt1EQiY52/b1amlzZvlAtr18hV4/uWr34Do3xj62amSYAESIAESIAESIAESIAESIAESIAEQoAANB+/CLvw1IWoC8Py4MGDcu+992Y6Akx09s0Pk9R+nnmylzzR82F56rl/S60a1eVxI40PJkSzeutCbNuzd7+qc0OTRmYf1xsC8I+TfjHX5y/8W/7T/3lzPb0JTFD2RN9/yQZD7HJloz5+V5pa+jFi9DiZt8h58jLUfdIYl9V+HDfKECqrqqxZc+fLmHHfSRlD6Pzlp28MYdU59ASEun4DBqowC70f7Z5hYReTzo0Y/ZV8/d1P1i6pdHNDAH3ztf9K4UIFU21Lb8Y2Q5R8b/gouWhMSGW1IYP+K3d2uMWaJWsNYbLnU+6Pm6s6ugEIn0Pf+0jmGrGN7QbP768//1iqVHZ4d9u3W9c3btoiTz4/QPW3XesW8tYbr5ib8U83fOSYVOzq16ujmGHfiKf8/DOPm3V0AvUW/7NMbYs3xOsRY8bpTWr5pnwgyxbMlBw5HP/WGM/AN96SJctWOpXDCvbxzJM9VdgSvfFafLz0TJ6wbOI3Y1KNdfDQ92SzIUgPHjhAOhkPUbS9++FnssoQZ597urcgLrT9u/5U7x7ydO9HdXFz+efsefKf14aY60iAs7Vtp41hvHLy92my85VXpehtHaTk40/J+q6dU432+hm//X97dwIdRZU9fvx2EpKwE5A9RCHIoqAiq44LKoiAiIALihsg7ijujtv8cUbFGXEDcfshiCCKIzgI7oCM4gaKIIKKLLKpAYIga0KS/7uvU5XqpJPuJN1MJ37fOUnX8qrq1acinnP71n1SvUPBv1mZs0bT0S4AACj+SURBVGfK99dcW6RftVYtpdWE56TaUe0C9uWZWr+bxz4iGx5/MmB7LfNFXGLD+gHbWEEAAQQQQAABBBBAAAEEEEAAgdgW0MRKfwSonOPU8guaqesEdzXQO2vWrKgHd/fs3eMG+zRDN1hrfkRgBmvmjh1ut1b5QbqDJqA1+iF/rdlOJot2ydff2LIOGhAtXJ/XPTjMhVdmvOEGus4fcLYcZTIhD5jA6MrvV8vsue8WqZ/bp3cPad+urT27BuR0QjMN2A7s3zfgivVNxq/T+vXpZQO7WoJimclU7XBse2eX/Vy+YqVbO7df78BAaEDHMFf+aoJxTvBzQL8+0u7oNrJt23Z56ZXXbRmLW//6N5k44YkiAeYwT1+k2/TX37TbNCh9WL268s5782y2672jx0jTRo3kOM/97t69x/ZtZcpr/OWErpJmMlQPmsm4Pvn8S1n4yWeix1SJT5Aze5wWcB0NwA8Zdq1bzmNQ/7NN1mpL+WP3blny1TJ7X5pdG6pp9unQa0fZbhp0Hn3v7RIfH+8eNu21mW5Q97ST/yIndu0kq03G7YyZBV8quJ2LWfhg3kIbYG3UoL5069JJatasKd+tXGWDq84EV04w3wmyXnrRBSbDuaF8tXS5rds8aep0E9SNM8HdYcVcpfSbxz070R6kQWOdWG7m7Hfsf5+aUX/2WT0ltWkT96QrTBaxE9RtZ0qe9DH7d5j/NvULiumvz3T7lWdhd8ZG+e/Y68M+RbsB10tat15h9y+po89XkLXuSywoA1PSMbpv9/erZNWIobZbw/PPk+S0ZrLPZI9nvDFL8jyT9G2dNkVW33677VfP/J3V7XGm5GVnyS/Tp5sM3hWy4vyBcrz5ciqhXsEbARmTJ7pBXT137W4nyO4V38qWSZPteUL9Kus9hTov+xFAAAEEEEAAAQQQQAABBBBAoGwCEQns6qWd8guHMrhbs0YNm+GnmZxz3vmgxFe+HZ4dO3Y6i+YV/Rp2edprb8gaU6pAA23n9D3TBnZ1hwb1apmgWVmbZmc6wS7NZhx22cUBpxp1/QiJ8wSAdGeP7qe4fTQ4p4Hd9BZHyNBLL3K3F17QV/O7dOxg+7719vtFArtz333fHnK8CYAebgJF5Wk6QZ0T1B336INy0ond3NP1MsHScwdfId+Y1/Dfn79AzupxuruvvAsTJzzuvqY/oF9vufI6fxb0xCmvyLixD7un11IUk597qsjfwnkDz5GhJhtVx/baG/8pEth9adqrblB3ygvjpP3RR7nn1EClZlFrULmk9uWSr+Vqk6mrbeA5feWeO0YFlKXQ4PFLJqCqTQPHut/54kDLSzz65AS7L9QvzZrtefqpNnO2WtWqbvelJqisEwdq+8zUmHaCut7ndOGgc+XJCc/L5Kmv2SDqxRcMkjqmjEak2owpL7gZ4SOGXiq9B1xsg7saVB9y4SD3Mi9O8Tu0bX2kvPD0427ZB834dgLjbucyLmTt3imbvnkr7KObdTnT9O0Vdv+SOvpM5vGJW34rqUvQffvXb5DqpszKce9+KInN0tw+zW65Q+Jr+P8tOrgjU9Y95M90PvzWm6XpLXeaKgz+LP3DBg+R5Wf1MKUZfpLNTz0uh49+0J4jd/8++Xms/8ur1OuukbR7R9vtGvZNTkuTtaMfcK9V3EJZ76m487EdAQQQQAABBBBAAAEEEEAAAQTKLqBxw4K0srKfxz1Sg7uaues0zdwdP3686Ge02uUXn29PPcvUze11zgU2uPnbb1tNzc/g2ZXbPRm71atXE62F+sTTz9tz3HnrSDfYqxu0rmt5mgLrq+XaEhMTi5wqpU4dqV27VpHtZdkwKD+jVx28JQs0mPj6rDn2lAPPDcz6Lct1XssvV3HmGd0Dgrp6Lg0aa+kBbYs+/dJ+RuLXMSbI6q29mmTq3g656Dx7ai1N4L3fxqbWrNb5Ddb6nnmG3fzzho1Fdk/JL+mhQVxvUNfpqEH/koLin3z6uRvUHXLhQBO0vTkgqKvnWb7iO3fSvqGXDnaDurpPA8GlaXffdpN4g7p6rGZqO/WN5y9cZE+ngVNv8F03avau0z5fUrRMg7OvtJ8abHYmItRj9UuRU/ID/79lbHNPp3+TTrmRIYMHuUFd7aDZ1/oFRCRajYZpcsqNL4b906xz+bPZIzHuFg88GBDU1XMmNW8hCflZ+plzZ8tB8wVVosnkb3rTbW5QV/vFJVeVpiOu1kXZOneu/dRfe5d+bY/R5UZXjNAPtzUYcpm7zAICCCCAAAIIIIAAAggggAACCFQcgYhl7Dq3XDhzV7c7ZRm0ZEOkm76en2XqjU58aZobNJv73geiP5rFeutN19pJvZzrOhmNuq4lGMaMfcruuvv2UdLQvNruDfp5X6F3ji/Npx7f32QAaymBsU89Y4LIW0Tr+rZr20bqH1avNKcK2ffUk090s5fnmTqn/Xpr9qHIfz/51D329FNOdpfLuqCTcGl7f95HZnKxDUVOs2mLf8KwVT/8WGRfWTd0PP7YIoe2N1mNTvstY6t4S25o4FCf/zfLVtgJzHbu2mW77jETf2nbvuN3++n8yjTrTnD4tFNPdDaH/fnhR/8V/dGm5RFuGXlt0DIUv/yWYfvUM/WHC0/8pnWgtc6uZhSHahpADZVlu9lMxqWtUxA7rX+cbjKbNUv911/9Ywp1zXD2tzSZ5YXbYYel2E3OM9AVndDOafrfQuGmz1tr9pa3JVavJW36Di3vaQ7p8QkpZqK0E/9S4jX3/fST3Z9lvpRaHuTLmoNmkkRtul8nV4uvW08O5E/kp8HgxNRUu9/5FWcygWv/5QTZuegzZxOfCCCAAAIIIIAAAggggAACCCAQ4wL6FnjEA7t6z4cyuKvB0xuuHmZe8x4oX5hX4Z8c/7z7Sr2WMbjwsqtk8rNPyrEmaKatrsmSdZrWNdWMTw2oORmvTo1W7ZMSgVfU9dX3b5Z/Z2ui6uRszgRt3bp0lGuGXeaOyxlTWT81i3VQ/z52Mrk3Z7/tBnb/M/c9e8rB5/UPmESuLNfRQLjW8XXajz/5g7zOuvfzwIEs72q5loNNxFa7VkGmc8bWbW5gVyfLG3H9LUWCt5o57QRvCw9GA+5Oa9iggbNYps9fTZD5lRkz5ZLB/oxi70l+cwK7xZR0SKkdXkmE1CZNvKcNurxpk/+e6tUNXj5C71MDu79EMLAbLNjsfJGSm5PjjjPDGDmtTpB7rlfXHwx2+vyZPqu1bBnydvetXeP22W3qgZfUcvbuM4FdMYFd/1sTVeoF/0IpqUHDkk7DPgQQQAABBBBAAAEEEEAAAQQQiEGBqAR29T5TTVaYU2/3UNy3ljXQmq6z/vO29O7VQ0475UQ7IZoGrx569El5zdT+1OYNEj427jm77b47b3FfYf89P7tTdzhlFGynMv7S1/envfiMLPrsC/nYlCfQDFoN/unEaPrjrX9axku4h/Xve5YN7Gq248ZNm235h09NrVVtOsFaeVtcXLx7igfuuV36mesdiqYB5cJN6xc7LdkEtZ12/98fsUFdnXDur7fdaMoTHOMGtL01cJ3++qlBcadlZZUtIP23u26RDZt+EZ2UTLOzdTK/tm1aOae1n1Wr+sty7DXBtmAt+2B2sM1FttWsWb3ItsIbkpIS7abs7ODnzMrfnpRUpfChxa7neIKzwTrFiS/Y5iLbvN7BzpmVVfR5FzlJGBv2btsin04w9WfDbG37DpOmHU8Ls3d0ulUpJhDvvVpckn8ytiaXXSpHjPHXzfXuD7YcbzLCbSvmGeaW8e8+2LXYhgACCCCAAAIIIIAAAggggAACh0YgKoHdL774okhQd8CAARKNUgzBmDQVWeukXn7xBXL/g/8SzSzV1/OTk5Okfv3AjLVrr7xcdMItpy37dqVdPCIt8HVld795Vd557V63Hd/hWDvpmrM/2KeOR+uc6s+dt4yUpcuWy533PmADkG+/P79IDdRg5whnW3qL5qL1aJd/t9KUIvhQqib7gzmtWraQo9q0DucUts9eM9FSsBYX5zNlLVpYz22ZO4J1Cblt/HMvyoED+91+1181PKDGqrvDs7Bt+3bPmn9x23b/6+a61sCUP9C2ddt2d8Kwh0bfXaRW7ub819G1r9Y/diYu0yCw07TmcmrT0BmxTn/91Pq755oauRos/XzxEpudfYd5vq++9LxoHWenNW7szwbWrGcNVjvZrM7+TZsLMoedbUE/w4if6j3olxoZnrIH3nP9+qt/Yq/GjRq5m+PjCkpuH8gqGhB2ymyoXXma87z0HNvN31HdQhm6+hwj0fbvypS1i6aGfaqGR3f9nwd2fYUmUww2+GqtjhQx5XMP/PZrsN1BtyU19v+NH/jF/I3p88ufbM3pvF+30xBAAAEEEEAAAQQQQAABBBBAoEIJRDywWzioq8HcLl26RCWoqwGmffv3F5lEynkCwcoBHGZeRXZqmWpG7hWXXuR0l2xTq3eRmQRLW+/8ibbcnfkLq02QeOqrb7ibNTiogb1wmwZHO5pg8ODzB8jTz0+SLxd/VeyhNWr4MzO3e4KYxXbO33Geqbmpgd1/z5xtMlWr2q0D+/cNdZjd36RxI1tqYfm3q6Rvr55Bj9EAsQbK5777gVw+5EI30zlo5yAbp78+K6AkwpWXXxIysDtvwcembu11AXVrnUxkvYQ+U23eUgvJ+VmNdkf+rzlvv+9ddZf170CDuxpwnWHcupo6yKVpTi3mxCpV5OHR98i5g6+w59L6zX+//y73VC2bH+Euf2wyuL1/N2vWrZf1Gza5+8u7kNasqT3FfGN3580jxRmjblyzdp1bUiO1iSewa8qaOCUrtvz6qxzdtuDLAK097fUtz/i8pRb0OXonXMvNzZMFCz8uz+ndY6vXbypdhz3urodaaNqhe6guMbG/Wus2dhzb3/vA1NHdYiZRC/1FRFIz/5dXOuna3uXfSLVjO7j3km0mtwxV0sHtzAICCCCAAAIIIIAAAggggAACCMSMQEGKXgSGFCyoG81M3V27/pCe/S6QCS9MEq2z6rQ8Exz61gQ3p83wB2BPNpmymq3rtIH9ettFDVTNm7/Q2SxPTnjOrc3ax5RzKG/bu2+fPDbuGfkpf8Ix53z6uv+7H8y3q8e0O9rZXOSzSSN/3csVq36QT0zAWQPPodoZZmItbTpBmFMPt9cZ4b1e3rpVuj123oKFstjUJw7Whl462G7WbNDHxz9rsm8PBHTTAKCWuFgSovZnwEEhVrR0xcvTZ7i9NLN18svT7folgwdJlSr+7yca53vpjpmz54hTrkG/AJhk+pc0Idf11wyz55tvJp7TcgoaYHTavn377T19t/J7Z1Oxn1p64/6/3mr3zzHBb/1x2hGHp8mpJ51gV/85dpzJqF1vl3fu3CUPPDTW6RaRz3PP7mPPo38Hz704xT2n3sujplSENp3orVuXzu4+XdCMbG2vvDZTdFI6bfaYJyfY5Uj80iDzFZdcaE/18iszbNkQ57zTXnvD/bt1tpX1M6lmihx74aiwf+q28NfhLuv1DtVxKWedLdXzJw9ce9etkp2REXDpg7//LhmTJ0rG1Mnu9qpHt5da+V9YbPjXGMk1/zbZZjLHfx7zd7cfCwgggAACCCCAAAIIIIAAAgggUDEEtLxlxDJ2iwvqRptCg7MvTJpqf5xsQ500TYNz2jR4dc/tNwUMo6cJdL45510b6Lt79MPy/KSXbakGDSBqG3rJRaV+HT/gAvkr2VnZtubty9P/LVra4ciW6bJnz17xZpvePPLqYIfabZ2O72DHr+Maeds9NpvSybD85z/uFw0iFm7VTJbu+QP7yesz37K7eppAb7BJrQofp+tDLjzPjleDgVeNvM1er6qp1XrewHPkmuGX20PSmqXKqOuvkieeft5mLr/z3jw5qm0bm02rQV0n67R9O39WYbDrlGWbXu+9DxeIZnt+vWyFzR7V561jdlpiYqKcP+BseX3WHDtJ3QfzFkrH44+TH1f/ZMdVL6WOG7h3jnE+Nfj9rimLsfCTz+SpCf8nM8xEd61btbRBTQ2s69/ZqSd1c7qX+DmgXx/59LPFtmTHfQ+MMeUx2oq6adOJ/hZ/vczWWT5vyHDxjsm7XOIFwtip5UV0HLPeetv+tzH/o4/t3/SK71a5BjdcO9wNijunHHTu2WayvxX256xzB0sn47fOBKD3RXAyPL3W4PMGmOzot+xYzrngMjmxa2fZYQKSq35Y7QyFz2IEfObvPP3hMbK8f3/J/HC+ZB7XXuqe3l0SUlJk/4YNsiv/LYDU664pOIN5s+DwW++QbwdfKJnzP5KvTz5BanXqKLuXL5f96zcU9GMJAQQQQAABBBBAAAEEEEAAAQQqhIAmzsVFYqSbzau83onStPyCZupGu9WuXUtmmEnRrrtqqMk87CgahHSarj/xyN9lzhvTpGFDf21TZ59m745/bIz06H6K3aTBSA2eaqDwuhFXyI3XXel0LfppSil4W5ynLql3uy5roNF53V6v8YHJDnaCuvrq/2MPj5Zmqf5X5gsfq+s6zv+b8LhcetEFNgCowUUtg6A/WSZoXFzrdXp3d5dOqBZua2iC4P+eNlFOOqGLtdDraZBXP71NSzA8P+5RG6zW/R+bbGINiOo9qqFO1NbmyJbeQ4pd9hXy9HaMi/f/ed5203U28KdBv08++9KORwPl0yc9I40KPdtRN1xjA5p6Hh3b+/M+suM6xziMHfOAe3qnvq6zQdcfM5mLd98+yt6D/j3oPemXBHr/+hwLPyufzz+ZXLB7uM9MpqaBWm133f8P5zLSMr2FvDr5WZu5q1Y6Ri0N8tgjD9ggtHZMTi74O3YPNAtO/dW4MOqw6nH33nmzjLxmuD2FZljr/ej1dFzjxz4ctNxG756ny0XnD7TH6K8lX39jl3WSv7atTW1X0+KNlbfFmX9IbAvyLH35/8S4ffIP1L81dUjPr2+t/13o8+3SsYOtQ63dvDV/8w+rtB++/H9H8kr498R78zU6d5NOn38p9fJLpmiwNuONWW5Qt16f3pJy+pneQ6TmKd2l/auvmQBwbVPC4RfZZrLaNajb7KYbpfHll+b3jcj/EgKuywoCCCCAAAIIIIAAAggggAACCERHwGdeUy9457wc13Aydjt37ixdu3Ytx5nKd+jwa82r1+3blRyc9VxCSwn8tHa9JJugcPMjDi91zVjPqYpd1ImydFKuHSaopgGc+ofVEw1seeueFntwGXZMnvqqKSvxgg3gvTd7RtSuo0Pb9ccfsnHjZjsZmE6C1ahhwyJZoGW4haCHaEbnzz9vlCYmKN6g/mFB+zgbM431Zq0/auretmjevNRj0gm8tphnlmCO1yC8fokQ6aalInJyct2xXT5ipK2PrHV5zz4reI3jsoxBU/M3btpsMmJ3itZRVrvCge3C51U/PUYzpEs7mVzhc4Va1zIqap1mMtDr5gfDQx3D/gKBXDMZYdb6dZJjStMkmOeV2Lip+MyXBsW1PPN3l/XzetN/pyS3Mtn2+bW4i+vPdgQQQAABBBBAAAEEEEAAAQQQiE2BiJVi0GBuampqVCZJKw1d4czAUMcmJSUFTBIVqn9Z9ickJNiyCcFKJ5TlfCUdo3V9p05/3Xa5YFD/qAZ19SK1ataUo4+KbNmF4u4vpU4d0Z9wmgYIyxMk1OC7/kSjaf1enURPs72djG8N/Oukd9qam1q8kWz6BYLW9zXfW4TdyusX9oVMRw00hwrUl+Z8f7a+cWaiwOTWbcO+bf1yKal5i7D70xEBBBBAAAEEEEAAAQQQQAABBGJTIGKBXb09LcEQEy3wTfGYGFK0B/Hlkq/tpFOz/jPXvm6v1xvYv2+0L8v5Synww4+rZdQd94nWsu3U4VhJMQHoDRs3mcnZnrVn0lqzR7dtXcqz0h0BBBBAAAEEEEAAAQQQQAABBBBA4M8koEUYIlaKIVbg1v+8QaomJxepqxsr44vWOHr0HeQGdPUaT/7zH3LKSSdE63Kct4wCGtgdfIVnUivPeVq1bCFjTd3laJc+8FySRQQQQAABBBBAAAEEEEAAAQQQQACBCiigJT4rXWC3Aj6HiAz5xSmvyB+7d0tTUw+28/HH2dIPETkxJ4moQFZ2tiwxE7ItW7FSfv1tq+zds9dOypaefrj0OuM00bIdNAQQQAABBBBAAAEEEEAAAQQQQAABBEIJENgNJcR+BBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgxgTiYmw8DAcBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAghACB3RBA7EYAAQQQQAABBBBAAAEEEEAAAQQQQAABBGJJQGvsEtiNpSfCWBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgRACPp+PwG4II3YjgAACCCCAAAIIIIAAAggggAACCCCAAAIxJUBgN6YeB4NBAAEEEEAAAQQQQAABBBBAAAEEEEAAAQTCE6AUQ3hO9EIAAQQQQAABBBBAAAEEEEAAAQQQQAABBGJGgMBuzDwKBoIAAggggAACCCCAAAIIIIAAAggggAACCIQnQGA3PCd6IYAAAggggAACCCCAAAIIIIAAAggggAACMSNAYDdmHgUDQQABBBBAAAEEEEAAAQQQQAABBBBAAAEEwhMgsBueE70QQAABBBBAAAEEEEAAAQQQQAABBBBAAIGYESCwGzOPgoEggAACCCCAAAIIIIAAAggggAACCCCAAAKhBfLy8oTAbmgneiCAAAIIIIAAAggggAACCCCAAAIIIIAAAjEj4PP5COzGzNNgIAgggAACCCCAAAIIIIAAAggggAACCCCAQJgCFTpj9/fff5fu3bvbn0mTJrm3vGDBAnf7smXL3O2xtJC1aZMsSm1of3L37HaHVpHvyb0JFhBAAAEEEEAAAQQQQAABBBBAAAEEEEAgagK5ubmSELWzH4ITZ2dny8aNG+2VduzY4V5xz5497vb9+/e722NpIS/3oDucPPMgnFaR78m5Bz4RQAABBBBAAAEEEEAAAQQQQAABBBBAIHoCcXFxlGKIHi9nRgABBBBAAAEEEEAAAQQQQAABBBBAAAEEoiMQtVIMmZmZ0RkxZ0UAAQQQQAABBBBAAAEEEEAAAQQQQAABBP7EAnl5edEpxbBmzRpZu3attGjRQtLT02OW+I8lX4jvYI5Ua3+MxFWvIQfWrZVdny+S7MwdUrVFc6l9ek+JS0oOGL+WTdi78lvZt/pHyTJlIJLS0qT60e0l+cjWAf28Kzm7dsrur5bInpXfSVKDBlKjUxeR+KjF1L2XZhkBBBBAAAEEEEAAAQQQQAABBBBAAAEEKqFAxGvsLlmyRJx6txrcTUlJkbp168Yk3fJzz7HjOubN2bL5madl+3vvBYyzXq9e0mbiFHfbwa1b5ae7bi3STzscPmqUNL3pNvFVqeL214V9P6ySlcMvk/3rNwRsb37nXQHrrCCAAAIIIIAAAggggAACCCCAAAIIIIAAAuEI+Hy+yGbseoO6OgDN2I1mUDc+Pt69z6SkJHc5IaEgXu1ddjsUWlj/4GjZtfgrqdW5o9TWbFqTyrx94ULJMZOwOS1n715Z2renZG35RRLq1JbUK0dIctNmsttk4W564Xn5+YknTFA30QR3b3UOET1m+aD+cvD3nZLYpLGkDh8hcSbwu3nqS7LukTFuP+9CpO7Je06WEUAAAQQQQAABBBBAAAEEEEAAAQQQQKByCfhMPYa8SNxSsKBuLJdh0HtelNrQvfX00Q9Io2FXiZhot7a8nBzZu3ypVO/Qya5vGfe4DcZqULfDu/MlMTXVbtdf22a9Lj+MvMGud/78K3dfxtTJsvquO/3bP1ssic3S7PLB7dtkae8eNkisG7qtWi3xNWvZffxCAAEEEEAAAQQQQAABBBBAAAEEEEAAAQRCCZS70KtOklYRg7pemDonnSSNhl/tBnV1n89kAztBXc3gdTJs0+//f27g1jlHvb79bRavru/68lNns2yd85ZdbnLFFW5QVzck1DtMml4+zO3HAgIIIIAAAggggAACCCCAAAIIIIAAAgggUBqBgpoFpTkqv68Gdb/66quAI4NNmKb9tN6utmiXZwgYTJgrDfoPKLFndkaGu3/do/+ULS+/5K47C1puQdveH753NsnetWvscs3jO7rbnIVg25x9fCKAAAIIIIAAAggggAACCCCAAAIIIIAAAiUJlDmwGyyo27Fjx6A1dTWo651QLZp1d0u62eL2JTctKKsQrM+BTQUTn2mNXf0pruUdOGB35WVnu/0Satcp0j0hRieUKzJQNiCAAAIIIIAAAggggAACCCCAAAIIIIBATAnkmDKyZQ7sBrsTDd7GWtA22DgLb4urVbPwpoB1X1Kiu97p0y8kKe0Id73YBc/EbpJbtIxxbnZWsYeyAwEEEEAAAQQQQAABBBBAAAEEEEAAAQQQKE4g3sQey1xjVwO4mqHrbZqZu2aNv/yAd7uWX0hJSbE/ulzRWrInkHswc3tYw/fFxUnVVi1t3+xtBaUcnIMPbt3mLPKJAAIIIIAAAggggAACCCCAAAIIIIAAAgiUSqDMgV29SrjBXe3XqVMn+1MRM3rja9WWxCaNLez2ObPDBq7Ruo3/mAXzihyzY/6HRbaxAQEEEEAAAQQQQAABBBBAAAEEEEAAAQQQCEegXIFdvYAGanv27GmzcZ0LFpe56+yviJ/p9/3NDnvjs89K5luzAm8hL0/2LP5S1tx2o+Ts8k+iph0aDb7E9tv+9juy0xPc3f31Ytk86cXAc7CGAAIIIIAAAggggAACCCCAAAIIIIAAAgiEKeDLMy3MviG7LVmyxJ0kTTtr2YX09PSQx/2vOixKbWgvfdyct6X6cYFlJQqPKS83V368drhsm/u23VWtbVup0bq15GQdkD+++cadKK3r0hWSUL++7aPHfDd4oOz89DO7nnLqyeKLi5fMBR/ZdedXt1WrJb5mLWeVTwQQQAABBBBAAAEEEEAAAQQQQAABBBBAoFgBDemWO2PXe3Ytt6C1dJ2mmbuZmZnOasx++nyhGbRmbqtnJkqrfz0qCXVqy95VqyTjzTdFs3GztvwiyUekSdqNN0pczRrufeoxbSe/Ig0HDbLbdiz82AZ1tW+7KdMC+rkrLCCAAAIIIIAAAggggAACCCCAAAIIIIAAAiUIaGA3ohm7zrV0AjUN6sZ6xq4z3rJ8ZmdkSNbmDTYDN6FBI0ls1EjE5yv2VDl/7JL9a1ZLQt16kuSZjK3YA9iBAAIIIIAAAggggAACCCCAAAIIIIAAAggUIxCVwK5eSzN1K+JEacU4sRkBBBBAAAEEEEAAAQQQQAABBBBAAAEEEIgZgagFdmPmDhkIAggggAACCCCAAAIIIIAAAggggAACCCBQyQRCF5etZDfM7SCAAAIIIIAAAggggAACCCCAAAIIIIAAAhVZIDc3N7KTp1VkDMaOAAIIIIAAAggggAACCCCAAAIIIIAAAghUBAGfmeuLjN2K8KQYIwIIIIAAAggggAACCCCAAAIIIIAAAgggkC9AYJc/BQQQQAABBBBAAAEEEEAAAQQQQAABBBBAoAIKkLFbAR8aQ0YAAQQQQAABBBBAAAEEEEAAAQQQQACBP7dAws6dO//cAtw9AggggAACCCCAAAIIIIAAAggggAACCCBQgQTi4+OpsVuBnhdDRQABBBBAAAEEEEAAAQQQQAABBBBAAAEEJDc3V3x5pmGBAAIIIIAAAggggAACCCCAAAIIIIAAAgggUHEEqLFbcZ4VI0UAAQQQQAABBBBAAAEEEEAAAQQQQAABBKwAgV3+EBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgQokoEUYCOxWoAfGUBFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAZ/PR2CXPwMEEEAAAQQQQAABBBBAAAEEEEAAAQQQQKCiCZCxW9GeGONFAAEEEEAAAQQQQAABBBBAAAEEEEAAgT+1QG5urvhMPYa8iqig6cbaKujwKyI5Y0YAAQQQQAABBBBAAAEEEEAAAQQQQACBGBEgYzdGHgTDQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEwhUgsBuuFP0QQAABBBBAAAEEEEAAAQQQQAABBBBAAIEYENAqBgR2Y+BBMAQEEEAAAQQQQAABBBBAAAEEEEAAAQQQQKA0AgR2S6NFXwQQQAABBBBAAAEEEEAAAQQQQAABBBBA4H8soPOPEdj9Hz8ELo8AAggggAACCCCAAAIIIIAAAggggAACCJRWIKKB3aXrckp7ffojgAACCCCAAAIIIIAAAggggAACCCCAAAIIlFIgYoHdF+cfkGte3CP6SUMAAQQQQAABBBBAAAEEEEAAAQQQQAABBBCInoDPzKCWV97Ta6auBnWd1rlFFRk/tKqzGpVPrSOhLQLDj8r4OCkCCCCAAAIIIIAAAggggAACCCCAAAIIIBAtgYhk7HZoHi9Xn5bkjnHx2my5YdI+d50FBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgcgI5OTkRG7ytGGnJxHcjcxz4SwIIIAAAggggAACCCCAAAIIIIAAAggggECxAvHx8RKRUgzeK2iN3ecWBNbZfXZYddGs3kg2SjFEUpNzIYAAAggggAACCCCAAAIIIIAAAggggEBFEohIKQbvDRfO3NV9Wn9X6/DSEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBMovEPHArg6J4G75HwxnQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEihOISmBXL9aheUJx12Q7AggggAACCCCAAAIIIIAAAggggAACCCCAQBkF8vLyJCrR10NVZ7eM981hCCCAAAIIIIAAAggggAACCCCAAAIIIIBAhRWISmC3cFC3c4sqMrx7YsQnT6uw6gwcAQQQQAABBBBAAAEEEEAAAQQQQAABBBAoh0BcXFxkM3aDBXXHD61ajiFyKAIIIIAAAggggAACCCCAAAIIIIAAAggggEBhgYjV2CWoW5iWdQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIDoCEQnsLl2XI88tOOCOUMsvkKnrcrCAAAIIIIAAAggggAACCCCAAAIIIIAAAghETCA3N1ciEtjt0Dxerj4tyQ5MPwnqRuwZcSIEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCBAwOfzic/MoJYXsLUcK5q5q0HeQ9F08NoiOPxDMWyugQACCCCAAAIIIIAAAggggAACCCCAAAIIlFsgooHdco+mFCcgsFsKLLoigAACCCCAAAIIIIAAAggggAACCCCAQKUSiEgphkolws0ggAACCCCAAAIIIIAAAggggAACCCCAAAIxLkBgN8YfEMNDAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQKCxDYLSzCOgIIIIAAAggggAACCCCAAAIIIIAAAgggEOMCCTE+vmKHx6RpxdKwAwEEEEAAAQQQQAABBBBAAAEEEEAAAQQquQAZu5X8AXN7CCCAAAIIIIAAAggggAACCCCAAAIIIFD5BAjsVr5nyh0hgAACCCCAAAIIIIAAAggggAACCCCAQCUW0GoGBHYr8QPm1hBAAAEEEEAAAQQQQAABBBBAAAEEEECg8gn4fD4Cu5XvsXJHCCCAAAIIIIAAAggggAACCCCAAAIIIFDZBcjYrexPmPtDAAEEEEAAAQQQQAABBBBAAAEEEEAAgUolkJubKz5TjyGvUt0VN4MAAggggAACCCCAAAIIIIAAAggggAACCFRyATJ2K/kD5vYQQAABBBBAAAEEEEAAAQQQQAABBBBAoPIJENitfM+UO0IAAQQQQAABBBBAAAEEEEAAAQQQQACBSiygRRgI7FbiB8ytIYAAAggggAACCCCAAAIIIIAAAggggEDlFCCwWzmfK3eFAAIIIIAAAggggAACCCCAAAIIIIAAApVUwOfzkbFbSZ8tt4UAAggggAACCCCAAAIIIIAAAggggAAClViAjN1K/HC5NQQQQAABBBBAAAEEEEAAAQQQQAABBBConAIEdivnc+WuEEAAAQQQQAABBBBAAAEEEEAAAQQQQKASC/x/nZcrueqcgG8AAAAASUVORK5CYII="/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><path id="Rectangle" stroke="#C06334" stroke-width="2" d="M4 393h209v53H4z"/><g id="Default"><use fill="#000" filter="url(#filter-3)" xlink:href="#path-2"/><path fill="#FFF" stroke="#A7333A" d="M71.5 303.775l15.69 16.01h-6.488c.886 1.695 3.06 5.91 4.01 8.24.318.776-.979 2.324-.979 2.324h0l-2.42.151-4.2-8.574-5.613 5.727v-23.878z"/></g></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="699" height="450" viewBox="0 0 699 450"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="rect-1" d="M0 0h699v450H0z"/><path id="path-2" d="M72 305v21.429l5.25-5.358L81.625 330h1.75s1.13-1.161.875-1.786c-1.203-2.947-4.375-8.928-4.375-8.928H86L72 305z"/><filter id="filter-3" width="195.6%" height="153.8%" x="-42.9%" y="-25.8%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1" result="shadowSpreadOuter1"/><feOffset dy="1" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 0.0941176471 0 0 0 0 0.0901960784 0 0 0 0 0.0901960784 0 0 0 1 0"/></filter></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="domconsole0.svg"><g id="Bitmap"><image width="699" height="450" xlink:href="data:image/png;base64,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AgQIECBAgAABAgQIECBAgEDDBAR2GzZgmkuAAAECBAgQIECAAAECBAgQIECAAAGBXe8AAQIECBAgQIAAAQIECBAgQIAAAQIEGiQQy6YJ7DZowDSVAAECBAgQIECAAAECBAgQIECAAAECEdjtyn+0UBAgQIAAAQIECBAgQIAAAQIECBAgQIBAcwTM2G3OWGkpAQIECBAgQIAAAQIECBAgQIAAAQIECgGBXS8CAQIECBAgQIAAAQIECBAgQIAAAQIEGiYgsNuwAdNcAgQIECBAgAABAgQIECBAgAABAgQ6W6C7u9viaZ39Cug9AQIECBAgQIAAAQIECBAgQIAAAQJNE+jq6hLYbdqgaS8BAgQIECBAgAABAgQIECBAgAABAp0tILDb2eOv9wQIECBAgAABAgQIECBAgAABAgQINFRgXObYnT59enrggQcaSjq+mv3kk0+myZMnj69G5dY8++yz6eGHHx537WpKg26++eZ0xx139Ntcvv3yOEmAAAECBAgQIECAAAECBAgQaLTAhOG2/uyzz06XXnrpcG+v7lt44YXTl770pfT444+nCy64IJ155pnp5JNPTjvssEM6+uijq+tsDF7g7rvvTn/+85/TGWeckU477bR0/PHHpx133HHwFYzRlY8++mg6//zzU7w7p5xySvrMZz6TvvnNb47R02avaqdNm5b+/ve/p3POOaf4+3HTTTelgw8+OO2xxx5VR6dOnZouuuiidNZZZ6U//OEPaemll05XXHFFdd4GAQIECBAgQIAAAQIECBAgQIDA7CMw7MBuBA6/973vjVhioYUWSuutt17aZpttRlyXClLaf//90wEHHDDuKA477LC0++67j7t2NaFBkyZNShMnTkxTpkzps7mHHnpoW5A3LozArkKAAAECBAgQIECAAAECBAgQIDB7Cgw7FcPTTz9diXz4wx9Op59+errssstSzCS88MILq3Oxsd9++6X46viVV16Zzj333PStb32rCjpFsGrrrbdOt956a9p+++3b7rMzdIE999wzXX311WnNNdcc+s1jeMenP/3pdN1116XNNttsDJ8ye1a92GKLpcceeyzdcsstaf311++1k7vttltxzXgM6vfaYAcJECBAgAABAgQIECBAgAABAgRGJDDswG587TvKkUcemY499tj01re+Nb3qVa9Ka6yxRlp99dXbGrX88ssXx17+8pen173udekrX/lK+tvf/lZdM+ecc6ZVV101vfOd76yOjceNyPv7hje8Ydw0Lb6KHykN6mW++eZLL33pS9NrX/va+uH/+Xa0a5111knbbrvt/7wto9GA+OVFpBCZVWXChAlptdVWS1tuuWWvj4zzEQB+xzve0et5BwkQIECAAAECBAgQIECAAAECBGYvgWEHdp955pli1u0nPvGJYYlE8DdyrEaJxdKiRFqG8VpmzJiRdtppp3TNNdeMiyZGPuIIkPf19fzIXTwey3ht11CsIsD/3ve+93+y+Nuiiy7ab1Pnnnvufs87SYAAAQIECBAgQIAAAQIECBAg0HyBVquVhh3Yfeqpp9K73vWuNMccw66imOUbjM8999y41/z6179epJEYDw29995703bbbTcemtJxbYhfQrzvfe9LDz30UMf1XYcJECBAgAABAgQIECBAgAABAgTGh0BXV1ca9uJpsXDaAgssMKKexNfKIyXD/PPPP2A9EVCLn3nnnXfAa0f7gh/84AcpAruDLTGLtj77OILgkYogwEda7rvvviIdRF8zdQdTf8y2jq/ux89olPgNwcMPP5yeeOKJ9KIXvWjY9Y6kXTGjOlJ6jGWJX0B86EMfmimH9Gg8MwxH4/0YjbaogwABAgQIECBAgAABAgQIECBAYPwLDHu6beTSjdy5IynxtfFNN920zyq6u7vTb37zm/TKV74yzTXXXEVw9NWvfnWR07fPm/KJWGQqFhGLa+Or//ETuXFPOumk/m7r9dz++++fvvCFL1TnYqbmFltsUfxstdVWKYK2USKweP7556cdd9yxeF4sLvevf/2rSN8QAfC11147fepTn0rrrrtu28/ZZ59d1R3B457n456yRL8ij/H1119fHioWpivbc8wxx1THe248+eST6ZBDDinytEaQOTzf9ra3teU67nnPQPs33nhjkZIgZm0vs8wyRX7lqHeTTTZJ55133kC3F+fD78ADD2xrV4zVH/7wh37vjyDwd7/73fTud787rbTSSkUwea211ir8f/GLX6R4d+rlzDPPnMn2oIMOqi7p7fyGG25Y1RPtfPvb3972Dp166qnVu/DJT36yqmuwG5FOI+6LnMhhGP14z3vek/75z38OtopBXxe/FIn2v+Utb5np57Of/eyg63EhAQIECBAgQIAAAQIECBAgQIDA/14gYl/DDuyO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zjqrvMTnKAlEQPKSSy5J++23X1prrbXSGmusMUo1d0Y1X/rSl9IKK6yQVlpppSQoPrQxb6rdtGnTir8zX/va14q/M2uuuWY6+eST++z81KlT09Zbb53iaxn77rtvn9c5QYAAAQIECBAgQIAAAQIECDRTYI455khdOdFuq5nNH71WH3LIIUVQt68aP/jBD6ajjjoqLbDAAn1d4vggBa6//vq07rrrznS113Amkl4PzJgxI02YMKE6d9BBB6W999672rfRt0BT7SZNmpQmTpyYpkyZ0ta5gw8+OO2xxx5tx8qd+IXUm970pnI3Pfroo2nxxRev9m0QIECAAAECBAgQIECAAAECzRfo+FQMxx13XFtQN2bC9SxxzV577dXzsP1hCKyzzjrpySefTL/85S+ruxdaaKFq20b/AnPOOWfabLPNqos22WSTattG/wJNtVtsscXSY489VszOXn/99fvv5PNnr7766rbrHnroobZ9OwQIECBAgAABAgQIECBAgECzBWKSZEcHduNr7DvttFMxiieccEJ69tln04033pjia8/HHHNM2+gefvjh6fLLL287Zmd4AjHzedtttx3eze4q0oMcf/zx6YorrihShyAZvEDMZG2iXczSXm211dKWW245qM5GELte4t82hQABAgQIECBAgAABAgQIEJi9BF74Tvfs1a9B9ebEE08srrv22mvTeuutV90TQZTIr7vUUkult7/97dXxCy+8MG200UbVvo3hC8w777zVzfPNN1+1bWNggZjhvOOOOw58oStmEmi63aKLLjpTn3o7sPTSS7cd7rnfdtIOAQIECBAgQIAAAQIECBAg0DiBWFeno2fs/uIXv0iRo7Qe1K2P4nbbbZc233zz6lAEgBUCBAiMd4HIyVsvsSCkQoAAAQIECBAgQIAAAQIECMxeAh0b2L3rrruKXK+f+MQn+h3RTTfdtN/zTTo5ffr0dPfddxc/Q1ms7JlnnmnrZixC9dRTT7UdG8xO5NZ9+umnB3PpsK6JFBpPPPHEsO4dzk299aXnAlf91TvS+6Pugb5iP1pjN3Xq1GGNeX/9j3PxHkb+10iLEu/nYMussBtsW0Zy3XD7P9AzV1555eqSVVddNcVKmQoBAgQIECBAgAABAgQIECAwewl07H/tR+DjwQcfHHCl+IUXXrga8b5m9lYXjNON8847L8UiW3PNNVeKfsfPIosskt7ylrekO++8c6ZWR7Dpn//8Z/ra175W5PXcc889i2siFcUnP/nJtPzyy6fIk/umN70pXXLJJTPdXz9w8803F2ktIj9ofA1+/vnnT1tssUU69dRT65cNe/uBBx5IX/7yl9OrX/3qNPfccxf9ijF7z3vek6688sqq3jPPPDOtu+66bT8xW7ssvZ3fcMMNU3d3d3lJ8Xnbbbel73//+4Xny172suJY5GX+6le/mtZaa60Uz477jj322Lb7yp2R3h/1xC8lvvOd7xTPO/jgg8uqi8/RHLuw3XnnnYt3YMEFFyzGPPr2uc99LsWCgv/6179SBHwjmB5B9aGUMHvve99bBBxjNukaa6xRvJ/xnsb72lsZa7t4Zoz3RRddVLyz5SzXyZMnp0MOOaR43+NrDiuttFL6/Oc/X/S9bOdf//rXIm1L3BPvwNve9rb029/+tjw90+dw+j9TJf0ciDaWJWwVAgQIECBAgAABAgQIECBAYDYUyIEgpR+B97///a087MXPOeec08+V4/PUt771rar9v/rVr1qPPvpo64YbbmhtttlmxfGce7OVZ0tWjf/LX/7SimNln+MzB3Nbu+++e9ux8nwO1rbuuOOO6v76xrnnntuK83FtDg63zj///FbUv80227TVteKKK9ZvG/T2BRdcULX1wAMPbMXzfvazn7XVnRfKKurLs4xb11xzTWuDDTaozn/0ox+tnpVnvhYuu+66a3U+2p1nkRbX3Hfffa3111+/7dyaa67Zynma246VLvF5xhlnVPWP9P6o6Cc/+Uk1buVzDjjggOoZozl2l156aTV2e+21V2G777779tnXvLhg1Y6BNmLcyvbvttturRyobt17772tz372s9XxP/7xj1U1s8Iuz0Bv7b333q14F8u2xWcO2FbvWP14bOdULa0c0G5rd89revs3Y6j9ryDyRn0MclC/fmqm7bIvH/vYx2Y65wABAgQIECBAgAABAgQIECDQfIH4KrTSj0D+GnMR6ImgXhnk6+fycXXq+uuvr4JU2267bVvbcr7g6lwE1Mry8MMPtyIYWva7Hqj64he/2Lr44ouLn/r5eoC0rCfPuqzqj2BrvUSQtR7cHU5g96yzzirqj8Dx5ZdfXq++td9++1XPjvbnr+1X5/Ns2+pcb+2OIGO9z+WYP/fcc60//elPrde//vVt5+Pad73rXa3T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QIAAAQIECBDoRIHOnJLYiSOtzwQGIfCBD3ygCOrm1AIDBnWjupjVnL/qL6g7CFuXECBAgAABAgQIECBAgAABAgRGU0BgdzQ11UWgwQJ5cbeU8y4XPYjUHY8++mi/vbnkkkvSzjvvnHbaaad+r3OSAAECBAgQIECAAAECBAgQIEBg9AWkYhh9UzUSaKzAWmutVeRDjg5E7twI3Ebe4jXWWCMtscQSRbD31ltvTSeeeGK6+OKL05577pm++c1vzpQjt7EAGk6AAAECBAgQIECAAAECBAgQaIiAwG5DBkozCcwKgeuuuy699rWvLRZL6+95Eezdf//90/ve977+LnOOAAECBAgQIECAAAECBAgQIEBgjAQEdscIVrUEmirw9NNPp5NOOinFwmgxO/emm25Kq666ajFrN2b0xmJpm266aerq6mpqF7WbAAECBAgQIECAAAECBAgQINBogVarlQR2Gz2EGk+AAAECBAgQIECAAAECBAgQIECAQCcKWDytE0ddnwkQIECAAAECBAgQIECAAAECBAgQaLSAwG6jh0/jCRAgQIAAAQIECBAgQIAAAQIECBDoNIHu7m6pGDpt0PWXAAECBAgQIECAAAECBAgQIECAAIHmC5ix2/wx1AMCBAgQIECAAAECBAgQIECAAAECBDpMQGC3wwZcdwkQIECAAAECBAgQIECAAAECBAgQaLZAq9VKArvNHkOtJ0CAAAECBAgQIECAAAECBAgQIECgAwUEdjtw0HWZAAECBAgQIECAAAECBAgQIECAAIHmCnR1dZmx29zh03ICBAgQIECAAAECBAgQIECAAAECBDpVwIzdTh15/SZAgAABAgQIECBAgAABAgQIECBAoLECAruNHToNJ0CAAAECBAgQIECAAAECBAgQIECgUwUEdjt15PWbAAECBAgQIECAAAECBAgQIECAAIHGCgjsNnboNJwAAQIECBAgQIAAAQIECBAgQIAAgU4UmDFjRupq5dKJnddnAgQIECBAgAABAgQIECBAgAABAgQINFXAjN2mjpx2EyBAgAABAgQIECBAgAABAgQIECDQsQICux079DpOgAABAgQIECBAgAABAgQIECBAgEBTBQR2mzpy2k2AAAECBAgQIECAAAECBAgQIECAQMcKCOx27NDrOAECBAgQIECAAAECBAgQIECAAAECTRSIZdMEdps4ctpMgAABAgQIECBAgAABAgQIECBAgEDHCkRgtyv/0epYAR0nQIAAAQIECBAgQIAAAQIECBAgQIBAAwXM2G3goGkyAQIECBAgQIAAAQIECBAgQIAAAQKdLSCw29njr/cECBAgQIAAAQIECBAgQIAAAQIECDRQQGC3gYOmyQQIECBAgAABAgQIECBAgAABAgQIdK5Ad3e3xdM6d/j1nAABAgQIECBAgAABAgQIECBAgACBJgp0dXUJ7DZx4LSZAAECBAgQIECAAAECBAgQIECAAIHOFRDY7dyx13MCBAgQIECAAAECBAgQIECAAAECBBosIMdugwdP0wkQIECAAAECBAgQIECAAAECBAgQ6EwBgd3OHHe9JkCAAAECBAgQIECAAAECBAgQIECgwQICuw0ePE0nQIAAAQIECBAgQIAAAQIECBAgQKAzBQR2O3Pc9ZoAAQIECBAgQIAAAQIECBAgQIAAgQYLCOw2ePA0nQABAgQIECBAgAABAgQIECBAgACBzhQQ2O3McddrAgQIECBAgAABAgQIECBAgAABAgQaKtBqtZLAbkMHT7MJECBAgAABAgQIECBAgAABAgQIEOhMga6uLoHdzhx6vSZAgAABAgQIECBAgAABAgQIECBAoMkCZuw2efS0nQABAgQIECBAgAABAgQIECBAgACBjhPo7u5OXTkfQ6vjeq7DBAgQIECAAAECBAgQIECAAAECBAgQaLCAGbsNHjxNJ0CAAAECBAgQIECAAAECBAgQIECgMwUEdjtz3PWaAAECBAgQIECAAAECBAgQIECAAIGGCkQSBoHdhg6eZhMgQIAAAQIECBAgQIAAAQIECBAg0LkCArudO/Z6ToAAAQIECBAgQIAAAQIECBAgQIBAAwW6urrM2G3guGkyAQIECBAgQIAAAQIECBAgQIAAAQIdLmDGboe/ALpPgAABAgQIECBAgAABAgQIECBAgEDzBAR2mzdmWkyAAAECBAgQIECAAAECBAgQIECAQIcLCOx2+Aug+wQIECBAgAABAgQIECBAgAABAgQINE9AYLd5Y6bFBAgQIECAAAECBAgQIECAAAECBAh0sMCMGTNSVyuXDjbQdQIECBAgQIAAAQIECBAgQIAAAQIECDROwIzdxg2ZBhMgQIAAAQIECBAgQIAAAQIECBAg0OkCArud/gboPwECBAgQIECAAAECBAgQIECAAAECjRMQ2G3ckGkwAQIECBAgQIAAAQIECBAgQIAAAQKdLiCw2+lvgP4TIECAAAECBAgQIECAAAECBAgQINAogVg2TWC3UUOmsQQIECBAgAABAgQIECBAgAABAgQIdLpABHa78h+tTofQfwIECBAgQIAAAQIECBAgQIAAAQIECDRJwIzdJo2WthIgQIAAAQIECBAgQIAAAQIECBAgQCALCOx6DQgQIECAAAECBAgQIECAAAECBAgQINAwAYHdhg2Y5hIgQIAAAQIECBAgQIAAAQIECBAg0NkC3d3dZux29iug9wQIECBAgAABAgQIECBAgAABAgQINE2gq6tLYLdpg6a9BAgQIECAAAECBAgQIECAAAECBAh0toDAbmePv94TIECAAAECBAgQIECAAAECBAgQINBQATl2Gzpwmk2AAAECBAgQIECAAAECBAgQIECAQOcKCOx27tjrOQECBAgQIECAAAECBAgQIECAAAECDRUQ2G3owGk2AQIECBAgQIAAAQIECBAgQIAAAQKdKyCw27ljr+cECBAgQIAAAQIECBAgQIAAAQIECDRUQGC3oQOn2QQIECBAgAABAgQIECBAgAABAgQIdK6AwG7njr2eEyBAgAABAgQIECBAgAABAgQIECDQQIFWq5UEdhs4cJpMgAABAgQIECBAgAABAgQIECBAgEDnCnR1dQnsdu7w6zkBAgQIECBAgAABAgQIECBAgAABAk0VMGO3qSOn3QQIECBAgAABAgQIECBAgAABAgQIdKRAd3d36sr5GFod2XudJkCAAAECBAgQIECAAAECBAgQIECAQEMFzNht6MBpNgECBAgQIECAAAECBAgQIECAAAECnSsgsNu5Y6/nBAgQIECAAAECBAgQIECAAAECBAg0UCCSMAjsNnDgNJkAAQIECBAgQIAAAQIECBAgQIAAgc4WENjt7PHXewIECBAgQIAAAQIECBAgQIAAAQIEGibQ1dVlxm7DxkxzCRAgQIAAAQIECBAgQIAAAQIECBAgILDrHSBAgAABAgQIECBAgAABAgQIECBAgEDTBKRiaNqIaS8BAgQIECBAgAABAgQIECBAgAABAh0vILDb8a8AAAIECBAgQIAAAQIECBAgQIAAAQIEmiYgsNu0EdNeAgQIECBAgAABAgQIECBAgAABAgQ6WmDGjBmpq5VLRyvoPAECBAgQIECAAAECBAgQIECAAAECBBomYMZuwwZMcwkQIECAAAECBAgQIECAAAECBAgQICCw6x0gQIAAAQIECBAgQIAAAQIECBAgQIBAwwQEdhs2YJpLgAABAgQIECBAgAABAgQIECBAgAABgV3vAAECBAgQIECAAAECBAgQIECAAAECBBokEMumCew2aMA0lQABAgQIECBAgAABAgQIECBAgAABAhHY7cp/tFAQIECAAAECBAgQIECAAAECBAgQIECAQHMEzNhtzlhpKQECBAgQIECAAAECBAgQIECAAAECBAoBgV0vAgECBAgQIECAAAECBAgQIECAAAECBBomILDbsAHTXAIECBAgQIAAAQIECBAgQIAAAQIEOlugu7vb4mmd/QroPQECBAgQIECAAAECBAgQIECAAAECTRPo6uoS2G3aoGkvAQIECBAgQIAAAQIECBAgQIAAAQKdLSCw29njr/cECBAgQIAAAQIECBAgQIAAAQIECDRUQI7dhg6cZhMgQIAAAQIECBAgQIAAAQIECBAg0LkCArudO/Z6ToAAAQIECBAgQIAAAQIECBAgQIBAQwUEdhs6cJpNgAABAgQIECBAgAABAgQIECBAgEDnCgjsdu7Y6zkBAgQIECBAgAABAgQIECBAgAABAg0VENht6MBpNgECBAgQIECAAAECBAgQIECAAAECnSsgsNu5Y6/nBAgQIECAAAECBAgQIECAAAECBAg0UKDVaiWB3QYOnCYTIECAAAECBAgQIECAAAECBAgQINC5Al1dXQK7nTv8ek6AAAECBAgQIECAAAECBAgQIECAQFMFzNht6shpNwECBAgQIECAAAECBAgQIECAAAECHSnQ3d2dunI+hlZH9l6nCRAgQIAAAQIECBAgQIAAAQIECBAg0FABM3YbOnCaTYAAAQIECBAgQIAAAQIECBAgQIBA5woI7Hbu2Os5AQIECBAgQIAAAQIECBAgQIAAAQINFIgkDAK7DRw4TSZAgAABAgQIECBAgAABAgQIECBAoLMFBHY7e/z1ngABAgQIECBAgAABAgQIECBAgACBhgl0dXWZsduwMdNcAgQIECBAgAABAgQIECBAgAABAgQICOx6BwgQIECAAAECBAgQIECAAAECBAgQINA0AakYmjZi2kuAAAECBAgQIECAAAECBAgQIECAQMcLCOx2/CsAgAABAgQIECBAgAABAgQIECBAgACBpgkI7DZtxLSXAAECBAgQIECAAAECBAgQIECAAIGOFpgxY0bqauXS0Qo6T4AAAQIECBAgQIAAAQIECBAgQIAAgYYJmLHbsAHTXAIECBAgQIAAAQIECBAgQIAAAQIECAjsegcIECBAgAABAgQIECBAgAABAgQIECDQMAGB3YYNmOYSIECAAAECBAgQIECAAAECBAgQIEBAYNc7QIAAAQIECBAgQIAAAQIECBAgQIAAgQYJxLJpArsNGjBNJUCAAAECBAgQIECAAAECBAgQIECAQAR2u/IfLRQECBAgQIAAAQIECBAgQIAAAQIECBAg0BwBM3abM1ZaSoAAAQIECBAgQIAAAQIECBAgQIAAgUJAYNeLQIAAAQIECBAgQIAAAQIECBAgQIAAgYYJCOw2bMA0lwABAgQIECBAgAABAgQIECBAgACBzhbo7u62eFpnvwJ6T4AAAQIECBAgQIAAAQIECBAgQIBA0wS6uroEdps2aNpLgAABAgQIECBAgAABAgQIECBAgEBnCwjsdvb46z0BAgQIECBAgAABAgQIECBAgAABAg0VkGO3oQOn2QQIECBAgAABAgQIECBAgAABAgQIdK6AwG7njr2eEyBAgAABAgQIECBAgAABAgQIECDQUAGB3YYOnGYTIECAAAECBAgQIECAAAECBAgQINC5AgK7nTv2ek6AAAECBAgQIECAAAECBAgQIECAQEMFBHYbOnCaTYAAAQIECBAgQIAAAQIECBAgQIBA5woI7Hbu2Os5AQIECBAgQIAAAQIECBAgQIAAAQINFGi1Wklgt4EDp8kECBAgQIAAAQIECBAgQIAAAQIECHSuQFdXl8Bu5w6/nhMgQIAAAQIECBAgQIAAAQIECBAg0FQBM3abOnLaTYAAAQIECBAgQIAAAQIECBAgQIBARwp0d3enrpyPodWRvddpAgQIECBAgAABAgQIECBAgAABAgQINFTAjN2GDpxmEyBAgAABAgQIECBAgAABAgQIECDQuQICu5079npOgAABAgQIECBAgAABAgQIECBAgEADBSIJg8BuAwdOkwkQIECAAAECBAgQIECAAAECBAgQ6GwBgd3OHn+9J0CAAAECBAgQIECAAAECBAgQIECgYQJdXV1m7DZszDSXAAECBAgQIECAAAECBAgQIECAAAECArveAQIECBAgQIAAAQIECBAgQIAAAQIECDRNQCqGpo2Y9hIgQIAAAQIECBAgQIAAAQIECBAg0PECArsd/woAIECAAAECBAgQIECAAAECBAgQIECgaQICu00bMe0lQIAAAQIECBAgQIAAAQIECBAgQKCjBWbMmJG6Wrl0tILOEyBAgAABAgQIECBAgAABAgQIECBAoGECZuw2bMA0lwABAgQIECBAgAABAgQIECBAgAABAgK73gECBAgQIECAAAECBAgQIECAAAECBAg0TEBgt2EDprkECBAgQIAAAQIECBAgQIAAAQIECBCYcM0111AgQIAAAQIECBAgQIAAAQIECBAgQIAAgYYITJgwIZmx25DB0kwCBAgQIECAAAECBAgQIECAAAECBAiEQKvVSl1Tpkxp4SBAgAABAgQIECBAgAABAgQIECBAgACBZgjMMcccZuw2Y6i0kgABAgQIECBAgAABAgQIECBAgAABAi8ISMXwgoUtAgQIECBAgAABAgQIECBAgAABAgQIjHuBrq4uM3bH/ShpIAECBAgQIECAAAECBAgQIECAAAECBGoC06dPF9itedgkQIAAAQIECBAgQIAAAQIECBAgQIDAuBeQY3fcD5EGEiBAgAABAgQIECBAgAABAgQIECBAoF1AYLfdwx4BAgQIECBAgAABAgQIECBAgAABAgTGvUCr1ZKKYdyPkgYSIECAAAECBAgQIECAAAECBAgQIECgh8AcPfbtEiBAgAABAgQIECBAgAABAgQIECBAgMA4Fujq6jJjdxyPj6YRIECAAAECBAgQIECAAAECBAgQIEBgJoHu7u40YaajDvQrcPvtt6fbbrstnX/++f1eN9STq6yyStp6661TfI5FufHGG4tq11prrbGoXp0ECBAgQIAAAQIECBAgQIAAAQL/IwFxn/8R/P/4sVIxDHEA/vKXv4x6UDeaUAaMh9gclxMgQIAAAQIECBAgQIAAAQIECBAg0IECZuwOcdAjABvloIMOGuKd/V/+1a9+tQgYx6xdhQABAgQIECBAgAABAgQIECBAgAABAn0JtFotOXb7wnGcAAECBAgQIECAAAECBAgQIECAAAEC41EgFk8b1Rm7o52moMw3+5GPfGQ8+mkTAQIECBAgQIAAAQIECBAgQIAAAQK9CJRxwojvlWtL9XKZQ8MUmGOOOUYvsPvTn/60yBM7zLb0eluZ9iBeBCkKeiVy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nBPv0/hKAatGmja+ZOeXYmYR6lJFnHdp5iK/vJErISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEh0JgRWLVqlZPGbmMuAUq7EBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJVh0CTJk2ksVt1uaYICwEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASHQ6BGQKYZGXwQEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBAC1YTAt99+K43dasowxVUICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgUwwqA0JACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICIEqQ6Bp06bS2K2yPFN0hYAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBBo5AisXLlSxG4jLwNKvhAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACVYaANHarLMMUXSEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIA2T1MZEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACFQZAhC7zasszopuHSOw52/n1/Eb9bqGiMALl3ZuiMlSmoSAEBACQkAICAEhIASEgBAQAkJACAgBIVBvCDSfOHFivb1cL64GBNauhkgqjhWOgOqZCs8gRU8ICAEhIASEgBAQAkJACAgBISAEhIAQqCoEWrRooc3TqirHFFkhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBIRACoEmKXsM3woJISAEhIAQEAJCQAgIASEgBCoTgVGjRvmI9erVqzIjqFgJASEgBISAEBACQkAI1DkCTZs2lcZunaOuFwoBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIARKQABd3aYl+JdXISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBCoBwRE7NYD6HqlEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCoFgEVq1aJY3dYsGTPyEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhEB9INCsWTMRu/UBvN4pBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQKBYB2dgtFjn5EwJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACNQjArKxW4/g69VCQAgI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IASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBLIgUOcau3FxWX+j9R2/5cuWe9u7cW6Kubfxdj1dh/U6uEVzFrkHTn3AsRnamhuu5YM68sYj3do91y4m2EQ/O/xoB/f6Xa+5JfOXuHuOv9u/r3mr5m6bY7dxu/10d7dBjw3cehuu57pu2DUxDD0QAkJACAgBISAEhIAQEAJxCGipfxwqlXRPphgqKTcUFyEgBISAEBACjQGBppWUyJatWrrNBm2WjlKTpk3S59GT8FnSZmctWrdwpzz4Y7fjKTu6tp3buuVLlru5E+b438qvV6SDNP8Wph3TDlInds/chs/sHBL5J8+c7TbZtY8ndXkfJO/yxV97J13W7yJS18DSUQgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAiBohCAo2zybUqK8i1PQkAICAEhIASEgBAQAkJACNQ6AqNGjfLv6NWrV62/Sy8QAkJACAgBISAEhIAQqA4EmjVr5ipKY7c6YFMshYAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAvWHwMqVK0Xs1h/8erMQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkKgcASaNm0qYrdw2ORDCAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhUH8IYF23ef29Xm8WAkJACAgBISAEhIAQEAJCoFQE2rVrV2oQ8i8EhIAQEAJCoNYQWLx4ca2FrYCFQGNGAGJXNnYbcwlQ2oWAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQqEoEROxWZbYp0kJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAINFYEmjRpIo3dxpr5SrcQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAtWLgDR2qzfvFHMhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBBohAtLYbYSZriQLASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBIVDdCGjztOrOP8VeCAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICIFGioBMMTTSjFeyhYAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBCoTgRWrVqlzdOqM+sUayEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEGisCzZo1E7FL5t938r3uN70v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223dGmvEcx5sRIot+enTp7vly5f7dmuTTTZxnTt3znjtZ5995thoFGnaNMU3pNqwUL766itH22lCO5jLRJK5revjJ5984qZNm+Y++ugjBy+09tpre/v6YFUuWbZsmRs5cqRjP4BFixa5du3aubXWWsuxkev6669fkqJiueJYyeE0yHXjXy780o17J0VITp7uUEs2gWzr3b+3J9tatmpptzOOw54c5klAbu76k6Huul2u9QTfxBcnuO1P3iHt9tXbX02Tumc9Ncyt1W2t755tlTLFsIF79MJH3fCb/uO2PGLL9LMWrVu4o285JqWJ2idDKxc3bTq19aQhpOgPLtjbrdFmdUUy+4PZKRJykg/7yD8d6frvu7pCgNT862l/TT9LRyx1ctjJh7nZH832hPbcWXP9x/fh+A8dvw5rdfBavBv32diTkaE/ziEnp06c6sa/P94tWrDaVAT3sZGG6Qo0nbtumLwRGpq3r9+5etO0XVIEeZzpAsIzgaA9/ZHTXauUeQRkm+O3dXcdfafXyJ0zfo5bf8D6/j4kPWQvsvG2G7vj7jjegSey9TFbu0d++Yh7/5H33FO/fcqd/e+z0+9dp3cX9+OHTq1hTgNt5zuOvN2bt3jrgbcyiN2R/xyZ1iA+7Z+ne8Ke9ww+ZLC7af8/19C47tipozvytCPd1AlT3cTRE/0kwrKly9zoEaO95jS49d+qfw0NccKUCAEhIASEgBAQAkKgkhH48MMP/eZpHTp0SCR2P//88xqbpowaNcona8MNN0wnDyL3/vvvzyCAGSjyY5O2Y445xg0ePDjtnoEzm7FgE/iFF15wzz+/WgkDB/QNJUJACAgBISAEQGDGjBnu0UcfTYMBObv99tunr5NO8HfPPfdkPH766afdpZde6qK25iF/b7vtNhdnN/bAAw/0GqtmWx7SNgz38ssv922Zveitt95yDz74oF26q6++uuKIXYhrJmmZZI3KI4884gYNGuTOOuus6KOCr2nnb7311gzuLgxk7733doceemh4S+cBAg1q8zQIyQ8npDqeKe1ciF0TZke69ezm+g3u5zp1+V7j1p6HR0hTNDtNWnds7UnYMU+OyViST0fSNDf3/tU+aeLW/A08cHP39O+e9uTgtDemubWOWE36YmKh717fayyYe4799+mfDnPxvMVp7eAJL4z3zjqslyJk9+6f9gJhivau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BoFZmz7XR6vICSESAnBe91S9enU9nXnU+0Zytatlbdu2lb179wqS233yySfSokULFY4BIrcWxT2xNojnELaRcA1Crk6QBk9pHRvZE2EY8nqfcrJXJMHTSQHRLzo6Wrp3756TIdiWBEiABEiABAo9AXwJTmG30N9GboAESIAESIAESIAESIAEbAQQe1UbhNusLCUlJavqLOus82iROLMOOi6srreKltprVR+tdZcuXVJdrHPlZk9BQUF6avOo59Pis1lRgCfNmzeX1atXS1xcnIotjPjCMCS4u/766wXCr5VHXpYG4faHH35QntrJycnKOxcetrDAwECxxuXN7Tx5vU85mffee+9VIUUgJs+YMUOFlEDs5Oeff17Kli2bk6HYlgRIgARIgAQKNQEKu4X69nHxJEACJEACJEACJEACJJBBAI/wwxo0aCAQv/LL9DwYH/F1q1Spkl9TiZ4rt3uyhqPIt0XmYmB4KSO2LjxpIbIibi48oeFVjfACKB88eHAuRnbuAhH5p59+Up7aSGoHoXfVqlWqIcJmeIJRXu+T86ozL0E4DbzgjQzv648++kiFIIG46wnv48xnZg0JkAAJkAAJeA8B/P6msOs994MrIQESIAESIAESIAESIIE8EYDAikfUT506letxrF6imXn1WoVceNFar3M9cSYdPbGnTIZ2q1jH+s2uMURZxH7VVr58eenbt6++zPSIMAk6BvDBgwflxx9/VOEnkNhs4MCBHvHahYdy69atVTI7hGNAeIrz58+rNV1zzTWZrk1XaOFXh/LQ5dbj1bpPYAcvZ6zt+PHj1iXxnARIgARIgASKPAEmTyvyt5gbJAESIAESIAESIAESKC4EatasqbaKR9QRQzU3Zn2UHWECXBm8JXU8XO356aqdJ8o8saecrgNCpha43Y3De/bsWRUSAIIsXmvXrs3ptEpwveGGG1Q/hLiwhjewDla6dGnzMiux1WxknHTs2FFd4n0xbdo0dV6rVi0JDg62NnN5DpEaltn7AXVX4z5hXphOvqfDd9hK+ZMESIAESIAEij4BCrs5uMenTp2Wmwbdrl6Tp0w3ey5ZtsIs37otbxmGzUF5QgIkQAIkQAIkQAIkQAI5JNCuXTsVMxXdJkyYICdOnLAbAeLj33//LXPmzLErt15AsNXJxRYtWmQm2LK2wfmNN96oivD4O7xArQYv1+3bt8v48ePFXWHU2t967ok9Wcdz91wL3P/880+uRfKs5po5c6Zs3bpVhRDQ7cBNC+W4DyEhIbrK7mgtx73U3rd2jRwu4FGrPau16N+hQweHVq4vtWgLERnvCYjOjna17pPjOnhNAiRAAiRAAsWJAEMx5OBu4wPMgYOJqof18bZzxmNMutzdb8xzMC2bkgAJkAAJkAAJkAAJkIBbBCAGDhkyRL755hs5fPiwjBkzRnkzIkEWRF79GTYqKirL8RBCYMqUKcpj9L333jO9c4cOHSrNmjVTfRGbFfFaEfrhl19+kdmzZ0vlypWV6Ie5tfjnmDwty4ldVHpqTy6GzrIIoidCKyCp2VtvvaUe90dcXCQau/XWW7Ps607l5s2bZenSpYotBFeMjbl0QjcI5yhzZfCYrlOnjuzZs0cWL16sXkgSBy/jnj17SmbhFRB/dvp0m4MKuOp76WoOaxneL3/88Ycg7Mbvv/+uXuiPGLeIsQy7WvcJc2tOSAxHIwESIAESIIHiRIAeu8XpbnOvJEACJEACJEACJEACRZ5Ao0aNZNSoUVK1alW1VzzOv3fvXlPUrVGjhrRo0SJLDq1atVICsfYMhUirX7ojwhWMHDlSrrvuOiUowmsUwuSBAwdUW4htGAeiMkzHadUhDlCmz/URZdp0e1znZk+6vz7qcXHUZa7m1e26dOkigwYNUuIlyuDAAWEzsziuekzdP7tjw4YNlRiqnEcMZghzAFEXa7r22msFwnlWdueddyoRV/OFNzbWl5WHdHR0tDlky5YtBbF33TGs6bHHHlP3QYuoWLejkJqb++TO/Nm10e/T2NhY8wuF7PqwngRIgARIgAQKOwGEIPIxHve5XNg3UlDrT0o6Lr37DVLT3XfXMBlx/z3q/O+58+W5F19X5+M/HiutWmb9Qbmg1st5SIAESIAESIAESIAECj8BhDqAZedl62qnqampynMXYh9CC8DDEomm8sOQPAwiMsRCxGSF2JZTsdOddRXkntxZT17a4E8xCMXwpoZQini3uEdaPM3L2K76QvhEeAwYhNpq1aq5auaRsoK8Tzt27JCvvvpKrRuew/Acb9CggVx//fUe2QsHIQESIAESIAFvJcBQDN56Z7guEiABEiABEiABEiABEsgjAQiEYWFheRzFve4Qc3WSLfd65K5VQe4pdyt0vxeEbwi5eBWEIb4yDMJnfoq6mKMg7xNEXISuWLhwocBzOTExMd/EceyNRgIkQAIkQALeQoDCrrfcCa6DBEiABEiABEiABEiABEiABDxMYN++fUroXLt2rQqVgeF79Ojh4Vmu/nAIX4EXzDFExNVfHVdAAiRAAiRAAvlDgMJuDrj6lsgISVzS8H7Qhsd9tFnPdRmPJEACJEACJEACJEACJEACJHA1CMybN09iYmLMqdu0aSOIr1uUrXTp0kV5e9wbCZAACZAACZgEGGPXRMETEiABEiABEiABEiABEvA+AnmJset9u+GKCprAqlWrVPK8oKAgqVevnnoV9Bo4HwmQAAmQAAmQgOcJIFY/hV3Pc+WIJEACJEACJEACJEACJOAxAhR2PYaSA5EACZAACZAACZBAkSGQnp4uGbEFisy2uBESIAESIAESIAESIAESIAESIAESIAESIAESIAESKLoEfH19KewW3dvLnZEACZAACZAACZAACZAACZAACZAACZAACZAACRRVAvTYLap3lvsiARIgARIgARIgARIgARIgARIgARIgARIgARIosgQo7BbZW8uNkQAJkAAJkAAJkAAJkAAJkAAJkAAJmfiL+AAAQABJREFUkAAJkAAJFEUCjLFbFO8q90QCJEACJEACJEACJEACJEACJEACJEACJEACJFCkCfj4+DDGbpG+w9wcCZAACZAACZAACZAACZAACZAACZAACZAACZBAkSNAYbfI3VJuiARIgARIgARIgARIgARIgARIgARIgARIgARIoDgQYIzd4nCXuUcSIAESIAESIAESIAESIAESIAESIAESIAESIIEiRcCvSO2GmyEBEiABEiABEiABEiABEiABEiCBXBKYds+wXPZ03W3Q19+7rmApCZAACZAACXiAAD12PQCRQ5AACZAACZAACZAACZAACTgTuJScLH/Xr65e5/fGOTfwgpIVA69X60uYOskLVlN0lrD1hacU19gP3yk6myqCO7lp0O3SqkN3WbFqTRHcHbdEAiRAAkWfAD12i/495g5JgARIgARIgARIgARI4CoRuGzOezn9knnuTSeXks+r5aSnpXrTsgr9WtJTbTzTU1MK5V66bFqRp3X/0/yaPPUvqM7JxpcvsIsXLxbUlJyHBEiABEjAgwTosetBmByKBEiABEiABEiABEiABEiABEiABEiABEiABEiABAqCAIXdgqDMOUiABEiA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10ECJEACJEACJEACJJAHAr6+vsJQDHkAyK4kQAIkQAIkQAIkQAIk4M0EkpKS1PLKly9PUdebbxTXRgIkQAIkQAIkQAK5IEBhNxfQ2IUESIAESIAESIAESIAECgMBPKIHq1q1amFYLtdIAiRAAiRAAiRAAiTgJgEkyaWw6yYsNiMBEiABEiABEiABEiABEiABEiABEiABEiABEiABbyFAYddb7gTXQQIkQAIkQAIkQAIkQAIeJpCcnKxG9PHx8fDIHI4ESIAESIAESIAESOBqEsDnOwq7V/MOZDF3QKmMTMXWD+KBgaVVrzJlymTRm1UkQAIkQAIkQAIkQALFnUBqaqrs3btXYQgNDS3uOLh/EiABEiABEiABEihyBHyMeAyXi9yuuCESIAESIAESIAESIAESKCIENm7cqHYSFRXl1o5++eUX2bNnjxw5ckR0jN0RI0ZI7dq13erPRiRAAiRAAiRAAiRAAoWDgF/hWCZXSQIkQAIkQAIkQAIkQAIk4A6B2NhYJeqibXBwsPTs2ZOirjvg2IYESIAESIAESIAEChkBeuwWshvG5ZIACZAACZAACZAACRQvAjn12NVxdUuXtoXwKl60uFsSIAESIAESIAESKD4E6LFbfO41d0oCJEACJEACJEACJFAMCFDQLQY3mVskARIgARIgARIo9gQuXbrE5GnF/l1AACRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAoWKQIkSJSjsFqo7xsWSAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQgEHAlxRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAQKFwEKu4XrfnG1JEACJEACJEACJEACJEACJEACJEACJEACJEACJECPXb4HSIAESIAESIAESIAESIAESIAESIAESIAESIAESKAwEbh8+TKF3cJ0w7hWEiABEiABEiABEiABEiABEiABEiABEiABEiABEqCwy/cACZAACZAACZAACZAACZAACZAACZAACZAACZAACRQyAr6+vvTYLWT3jMslARIgARIgARIgARIgARIgARIgARIgARIgARIgAQq7fA+QAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQGEj4FvYFsz1kgAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEBxJpCeni5+xRkA904CJEACJEACJEACJEAChYXAxo0bC8tSuU4SIAESIAESIAESIIF8JuDn58dQDPnMmMOTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQgEcJIHkaPXY9ipSDkQAJkAAJkAAJkAAJkED+EGjcuHH+DMxRSYAESIAESIAESIAECh0BHx8feuwWurvGBZMACZAACZAACZAACZAACZAACZAACZAACZAACRRrAhR2i/Xt5+ZJgARIgARIgARIgARIgARIgARIgARIgARIgAQKKwHfwrpwrpsESIAESIAESIAESIAESIAESIAESIAESIAESIAEiiOB9PR0hmIojjeeeyYBEiABEiABEiABEiABEiABEiABEiABEiABEijcBOixW7jvH1dPAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRQDAn4FcM9e/2W0y+lC15W8/H1kRJ+JaxFPCcBEiABEiABEiABEiABlwQuXLggeDlacHCwINEGjQRIgARIgARIgAQ8SeDSpUuSnJzsNGTp0qWlRAnqWU5gPFBw+fJlobDrAZCeHmLhxwtl4UcL7IatHBkqI/8aaVfGCxIgARIgARIgARIgARJwReD999+XCRMmOFWtWrVKypUr51TuqiAxMVG6deumqhYtWiShoaGumnmkLDU1Vf7880/Zvn27+qPw4sWL0qdPH+ncubNHxucgJEACJEACJEAC+Utgw4YNMmXKFKdJbr/9domKinIqL+iC8+fPy8svv6ymffTRR6VGjRoFvQSPz+fr60th1+NUPTBghZoVpE77OmqkU4dOS1LcMQ+MyiFIgARIgARIgARIgASKCwGIt7169VLbhVi6f/9+CQsLc1vURccdO3ao/mXKlJHKlSur8/z68f3338vu3bvV8H5+fgLPYqyXRgIkQAIkQAKFicA333yjnpjBl5O1a9f2qqWfOHFCfvzxR7Wme+65R0qVKuXx9UVERKgxz5w5I8ePH1fn4eHhHp8nNwMmJCSY3fL7c405US5OcnKf8BQWPXZzATm/u0QPjBa8YJt/3yw//d/U/J6S45MACZAACZAACZAACRQhAg899JC5m9dee00mTZokLVu2NMvcOYFnC/o0atQoX8M3HDhwwBR1hw0bpuZzZ31sQwIkQAIkQALeRODs2bMSExOjllSyZElvWppay969eyUuLk7g5env7+/x9bVq1Urwgq1evVp+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hsfs4L6DZePijWYfavyi8Yvkk2s+NvsIw3DK1W1NunDJwtLlP11Mev7P8+T7+7+zRWGEe5j00ST55YXRpjzQn0ZHFlHbtXmXTP9muql2fI/jA1WPWX4kPGI2OB6IBEiABEiABEiABEiABEiABEiABEiABEiABGJIIMeLp4U71ozqvlABWAzrpc4vmubXfnudVGlaJdyuErI+RFqIu7BiZYsJxFO15he08Au5AO/dTjd3kt8G/iZr566RV7oONG0O7j1owiNou57P9hTE5VU76fKTZckfS2TppKUy5fMp5lXSWoDNuQCZ1vXaYhG15tYian9asXZhtdvWljJVy3hVjWlepDxiOkgejARIgARIgARIgARIgARIgARIgARIgARIgARiQAChXCPy2E1Lj6iZNO7WRLBAF7xM1dLS00wy0j61H92meowtNS2y8WqfOdnq/Dre1EnOvL+bPXcVdRE/9twnzpUeT/XIcphON3eWvoP7ScUjIRbQBuIwDILrzT/fIg0tD1ungW3fD/pJu+vaGyEYZSrqlq1VTi7/6AqpclxwIf34c4966Dbv1cLZfZ6mI+GhA061wlvklaWnFzCHLlDAt3WPA67zNBIgARIgARIgARIgARIgARIgARIgARIgARIIlcDBgwclxXLbPRxqA9bLOQGEntiybLPs2bFXyllCq9PbNljviMW7eelmQTgLLJIWqli9Y8MOI+yWrVVWCpcoHOwQdtncn+bIFzd9YUTouybeLfDijTeLlEek89i5c2ekTXO1XfHiXL0zVwGzcxIgARIgARKIAwIzZ/rWPWjUyP8H/TgYGodAAiRAAiRAAiRAAiSQhwTS8/DY+fLQEGTL1S4f9twLFC4glRoeXRwt1A5KVCgheIVjEz+caKo369U8LkVdDC5SHuFwYF0SIAESIAESIAESSFQC48ePl59++knS09OlTJky0q5dO2nRIn6exEpUrhw3CZAACZAACZAACcQLgdTUVKGwGy9nI4/HsWbOGkkvmCZzR8yV5ZOXm9Gc1PekPB4VD08CJEACJEACJEACJBAJgX379knBggVl//79snHjRhkyZIiULVtWatasGUl3bEMCJEACJEACJEACJBBnBGK+eFqczZ/DcRAY/fwoWTRukZ1zUr+TTcgHO4MJEiABEiABEiABEiCBhCHQpUsXwWv9+vUycOBAM+7ly5dT2E2YM8iBkgAJkAAJkAAJkEBwAlg8jR67wRnlm1Is4oaF1wqVKCQn9DhBOt7cKd/MnRMlARIgARIgARIggWQlULFiRdtzN9BCrsk6d86LBEiABEiABEiABJKdAIXdZD/DIc7vnEe7C140EiABEiABEiABEiCB5CGAUAx4wcqXD3+dh+QhwZmQAAmQAAmQAAmQQHIRyMzMlNTkmhJnQwIkQAIkQAIkQAIkQAIkoATWrFmjSalSpYqdZoIESIAESIAESIAESCDxCVDYTfxzyBmQAAmQAAmQAAmQAAmQgCeBVatWmXwspFa0aFHPOswkARIgARIgARIgARJITAIUdhPzvHHUJEACJEACJEACJEACJJAtgQ0bNpg6pUuXzrYuK5AACZAACZAACZAACSQOgcOHDzMUQ+KcLo6UBEiABEiABEiABEiABMIjUKhQIdMAAu/u3bvDa8zaJEACJEACJEACJEACcUsgNTWVwm7cnh0OjARIgARIgARIgARIgARySKBZs2aCL/2wp556Sl5//XWZOnVqDntlcxIgARIgARIgARIggbwmkJKSQmE3r08Cj08CJEACJEACJEACJEACuUWgQIECUqpUKdM9Vk5GzN0dO3bk1uHYLwmQAAmQAAmQAAmQQIwIHDp0SNJjdCwehgRIgARIgARIgARIgARIIIYEEHph4MCBAkG3bNmy0qFDB7OtWLFiDEfBQ5EACZAACZAACZAACeQGATyVRWE3N8iyTxIgARIgARIgARIgARLIYwJ//PGHEXXT09NlwIABovF283hYPDwJkAAJkAAJkAAJkEAUCGDxtJQZM2YcjkJf7IIESIAESIAESIAESIAESIAESIAESIAESIAESIAESCAGBPDjvW8lhRgcjIcgARIgARIgARIgARIgARIgARIgARIgARIgARIgARKIDoEUa/EEeuxGhyV7IQESIAESIAESIAESIAESIAESIAESIAESIAESIIFcJ5CSkkKP3VynzAOQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQJQJMBRDlIGyOxIgARIgARIgARIgARIgARIgARIgARIgARIgARLITQL02M1NuuybBEiABEiABEiABEiABEiABEiABEiABEiABEiABHKBwOHDhxmKIRe4sksSIAESIAESIAESIAESIAESIAESIAESIAESIAESyFUCDMWQq3jZOQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAlEl0BmZiY9dqOLlL2RAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQO4SSEtLo7Cbu4jZOwmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAlElwBj7EaXJ3sjARIgQMoqYAAAQABJREFUARIgARIgARIgARIgARIgARIgARIgARIggZgQYIzdmGDmQUiABEiABEiABEiABEiABEiABEiABEiABEiABEggOgRSUlIYiiE6KNkLCZAACZAACZAACZAACZAACZAACZAACZAACZAACcSGAEMxxIYzj0ICJEACJEACJEACJEACJEACJEACJEACJEACJEACUSOQmZlJj92o0WRHJEACJEACJEACJEACJEACJEACJEACJEACJEACJBADAmlpaRR2Y8CZhyABEiABEiABEiABEiABEiABEiABEiABEiABEiCBqBJIj2pvIXb2yy+/yK+//iq1atUyry5duoTYktVIgARIgARIgARIgARIgARIgARIgARIgARIgARIIH8TwOJpMRd2VdQF+qVLl5oX0hR3QYFGAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAsEJHDx4MPbCLjx13Ya8RBN29+3bJ//8848sXLhQFixYIKtWrZJKlSpJtWrVpFWrVtKkSRP3NJN2f9SoUYI3U/PmzaVixYpJO09OjARIgARIgARIgARIgARIgARIgARIgARIIP8QeOedd4xmiagD4RicWeHcetVVV4XTLKy6qampkrJjx47DYbXKYeX77rsvSw+Ak5sTzXLAHGYsW7ZMHnjgAVm5cmXAnlq2bCm33HKLEXoDVkqSgo4dO5qZPPnkk9KmTZskmRWnQQIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkkF8JQNSFQAuDbhmquIs2aAvLTc0zTxZP69y5s5mY80+oYJxt8ioNtf3yyy+3Rd169epJr1695LbbbpO+ffvKMcccY4Y2ZcoUufnmm2Xjxo15NVQelwRIgARIgARIgARIgARIgARIgARIgARIgARIIEwCTlEXTd37gbpzirqo494P1C6S/MOHD0tqJA1z0gYhF5ziLtKJEoZh9erV8thjj5npFy1aVF544QV566235MYbb5Tu3btL//795aOPPpLrr7/e1Nm6das89NBDOcHFtiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAjEk4KVVZifuBhJxvfqK1lRivngaBo4J5eakogXH3Y+6USP/tdde83TBhht07969Zf369TJkyBCZN2+eib9btWpVd3fcJwESIAESIAESIAESIAESIAESIAESIAESIAESiDMCGkLBqQViiNj3CssQSNT1qhutqaakpMR+8bRoDT7W/WCRtN9++80c9rzzzvMUdZ1jQh0Iu7Dx48fLRRdd5CyWiRMnyoQJE4zwu3btWjn22GOlYcOGcvrpp0vdunX96kIc/vrrr6VChQpyzTXXyI8//igI9YAX7LjjjpM+ffpI06ZN/dphZ/LkyTJs2DCz0NuaNWukfPnyUrNmTXMceEtDiHbbkiVLZMSIEWZRuEWLFknlypWlQYMGcvLJJ0vbtm3d1YPuIx7xDz/8IHPnzpUVK1ZI48aNzSJrHTp0sMNWBO2AhSRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiQQYwKhirt5IeoCRWZmZuwXT4vxOYja4YYOHSovvfSS6e/TTz8NSZQ8dOiQmHgX1ip1WKkOtnfvXhk0aJB8//33Zt/rD2Lz9uzZ0y4aO3asPPjgg2YhthYtWgjG4mWPPvqotG/f3i5CWIh3333X3ncnunXrJnfeeadA4Vf77rvv5MUXX9TdLFu0wfgKFy5slwVaPA2C8rPPPmvXcyYQyuLVV181grYzn2kSIAESIAESIAESIAESIAESIAESIAESIAESiBcCwYRbjNHt1Yu83PTURf8weuz6OIT0d+XKlaYeBEldIC27hl7esB9++KEt6qqnLTxx8SZ5/fXXzWJrAwcONN65bu9YjAGvVq1ayYUXXiilS5c2nr+fffaZ7N69W95++21b2N2yZYst6rZu3VouvfRS4627YcMG+eSTT2TSpEkyfPhwgVDbpEkTMxXkqahbpkwZueGGG6ROnTqCNjjGjBkzTJtixYrJgAEDgk5/1qxZtqiL4yM8RUZGhvEcxjwRfxixiSE+ly1bNmhfLCQBEiABEiABEiABEiABEiABEiABEiABEiCBvCAQzHPXazyxEHX1uHkSY/eXX36RX3/91YQzAJxEiLeLMAKw6tWrK7uwtwi5AG9f2CmnnCLwsFXxFxwg2GIBto0bNxqvXgiiBQoU8DtOmzZt5PHHH7c9gBG2AV7B7733nhF9d+zYISVKlJD58+fb7RC+oXbt2ma/UqVK0qhRI7nggguMuDpz5kwj7MK7GB60MIi6H3zwgZQsWdLsY2wtW7Y0x0U4iq+++krOPfdcCRQ3GH1hYTlYu3btzDzVKxhhIJo3by59+/Y1YvTIkSPlkksuMXX5hwRIgARIgARIgARIgARIgARIgARIgARIgATijUAgcdc9zliKuiZKgHsAub2voi6OAy9VCLzIi3eDBywMHruRGmLqqsHjVUVdzYMgq56wiIeLuL5uu/zyy21RV8uc4Rd0nDVq1NBiI/pCLFZLT0+XN954Q95//33p2rWryV68eLERhrEDT10VdbUNxnrdddfprowbN85OuxPLly8XxNaF4Q2toq7JsP6UK1fOFnO//fZbzeaWBEiABEiABEiABEiABEiABEiABEiABEiABOKSgIq7gQYXS1EXY8iTUAwQct2GvHj32kX4BYif69atcw8/5P1Vq1aZutWqVQsYzgHerGqrV6823rW6j61TsNX84sWLa1LgLQuDNy08c7HwGgRlvLAAGvpHCAgstFaxYkW7HYRkNcTx9TLUh+cvOOhcvOpp2AqUIdSCxhd21lUPaAjOCCORE8Hc2S/TJEACJEACJEACJEACJEACJEACJEACJEACJJDsBKC35UkoBjdYKN7xbhBjYRBAIZ66vW29xo+FwzZv3iwNGzaUfv362aIwwiEEMnjKQuSE2OkUW7V+oUKFNJntFuEQBg8ebGL6or8FCxaYl4aDQNzbK6+8UgoWLGji6GqHiIUbyMDB6d3rVQ+CtNro0aM1GXC7bds2CrsB6bCABEiABEiABEiABEiABEiABEiABEiABEggrwkEWkRNx4VF1GLptQt9MubCbufOnU34BZ00tokg7DoXTIP3qzP8gXMumkas22HDhpndxo0bm62GN0BZINu/f78RdVGOxdFyYoULFzbhE/Cmgucu4ulOnz5dpk2bZrr94osvTJzde++9V5xev8E8aDXUQzDx11n23//+N+gU4DaOmL40EiABEiABEiABEiABEiABEiABEiABEiABEohHAtmJujrmWIq7eeKxqyEXNCQDhF7NUwjxuD3ppJPsYcHjNTth1xlP94QTTjBt1esXnrN79+4VCK9uwxtFLdDiZFoebLt9+3aBCFukSBETcgHhF/C67LLLTBiF+++/38TB/fnnn+W2226TKlWq2N0tWbLELKhmZxxJQHRetGiR2fMKCaH1nQvMYQE4L+EW4jbCWsBb2IuD9sUtCZAACZAACZAACZAACZAACZAACZAACZAACeQVgUCiLhwpYRBznRYrcTdPFk/DRCHkPvHEE+aVCKIuxowFvy6++GIkTTiDt99+WzIzM82++8+mTZtk4MCBJhuiZv369U26SZMmdtVvvvnGTjsTWNBMrU6dOpoMeztkyBDBQmt33HFHlrYQjM8//3w7f+fOnXLsscfa+wjf4GVDhw61vYnVC9mrXs2aNe3QCoEWR/vf//4nV199tTz00ENeXTCPBEiABEiABEiABEiABEiABEiABEiABEiABPKUQDBRFxEI8FKB1zlQiLtO501nWbTSeSbsRmsCse4HMWl1ka9PPvlEHn30UZk/f77AkxWGLTx1IVginAHswQcfNF6pSDdr1kxatWqFpEAYRiiEAwcOmH14sELsnDhxotlH7NtSpUqZdCR/sDgaDAuZvfXWW7Jnzx67m61bt8ovv/xi9suXL29E6xIlSsi1115r8qZMmSJPPvmkaMiIgwcPCoTiQYMGmXJ4IJ944ol2f+4EGMEzGPbhhx/Kxx9/bDyUsY8+IfaOGzcOu3LGGWeYLf+QAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQLwQyE7U1XHmpbibYglth3Ug3GZPAAuDQazFAmJOQwxe92JnEHj79OnjrCZof+edd/rVdbdt3ry5EVY1RMHYsWPNMdHRmDFj/PrDDjyEe/XqZfLfe+89432LAMr33XefLRSjEJ60yIfYq4axnHXWWWZ33759ghANkydP1mJxjw1C8PPPPy/OcAsdO3Y09SEGt2nTxqQRauKuu+6SWbNm2X2h7caNG+19eDCjr3AWhLMbM0ECJEACJEACJEACJEACJEACJEACJEACJEACuUAgVFHXeehI2jjbh5vGulWp4TbK7/URi/a1116TCy+80IieysMp6iKW7bvvvptF1EVdtIc7dvfu3W3vX20L4RNes88995xf3Nn09PDXuEtLSzNhDiAsq5fxsmXLbFG3Xr168vDDD9uiLsYGgfWZZ56RG2+8UTAWmI4NfUAARqgIp6hrKh35g2OqQZR+8cUXpX///naMXaeoe8kll8jTTz9NUVeBcUsCJEACJEACJEACJEACJEACJEACJEACJBAXBPRJd+dgEHIB3rmBLJDnrldfgfoINz9PPHYxISyehgnjlShxdr3gIrQAFhvDYmXwbsULC5aFavC2heCJuLcIh5AbhlAKOA4WU4N4m5GRYYutwY6Hua1atcqEalChN1j9YGXbtm0zIjHCS6CvAgUKBKvOMhIgARIgARIgARIgARIgARIgARIgARIgARLIMwLOOLnZibrOQTo9dwOJvc76kaZTU1Ml5sKuirrOQXfu3DmhxV3nXJgmARIgARIgARIgARIgARIgARIgARIgARIgARJIfAIQd+GQCoE2HIO4Cw3Ua2G1cPoJVhehGGIu7CLuq5c98cQTXtnMIwESIAESIAESIAESIAESIAESIAESIAESIAESIAEScBCImxi74arejjkwSQIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAL5ikBmZmbsF09D2AW3Udh1E+E+CZAACZAACZAACZAACZAACZAACZAACZAACZAACXgTSEtLi72wi7gUTnGX8XW9Tw5zSYAESIAESIAESIAESIAESIAESIAESIAESIAESMCLwOHDh2MfY9drIMwjARIgARIgARIgARIgARIgARIgARIgARIgARIgARIIjUDcxNgNbbisRQIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQGGX7wESIAESIAESIAESIAESIAESIAESIAESIAESIAESSDACCMWQmmBj5nBJgARIgARIgARIgARIgARIgARIgARIgARIgARIIF8TyMzMpLCbr98BnDwJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEDCEUhLS6Owm3BnjQMmARIgARIgARIgARIgARIgARIgARIgARIgARLI9wQYiiHfvwUIgARIgARIgARIgARIgARIgARIgARIgARIgARIIJEIcPG0RDpbHCsJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJWAQOHjzIUAx8J5AACZAACZAACZAACZAACZAACZAACZAACZAACZBAIhFITU2lsJtIJ4xjJQESIAESIAESIAESIAESIAESIAESIAESIAESIAEKu3wPkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkECCETh8+LCkJ9iYQx7uqY9sDrkuKyYfgdEPlU2+SXFGJEACJEACJEACJEACJEACJEACJEACJEACJHCEQPrff/+dpDDKJem8OK1QCCTv+zqU2bMOCZAACZAACZAACZAACZAACZAACZAACZBAMhMoVKgQY+wm8wnm3EiABEiABEiABEiABEiABEiABEiABEiABEiABJKPQGZmpqTs2LHjcPJNjTMiARIgARIgARIgARIgARIgARIgARIgARIgARIggeQkkJKSQo/d5Dy1nBUJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEAyE0hN5slxbiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiSQbAQOHz5Mj91kO6mcDwmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQHITYCiG5D6/nB0JkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEASEkhNTaXHbhKeV06JBEiABEiABEiABEiABEiABEiABEiABEiABEggiQkcOnSIwm4Sn19OjQRIgARIgARIgARIgARIgARIgARIgARIgARIIAkJ0GM3CU8qp0QCJEACJEACJEACJEACJEACJEACJEACJEACJJDcBLB4WnpyT5GzIwESIAESIIH8TaB48eL5GwBnTwIkkPQEdu7cmfRz5ARJgARIgARIgARIwE0Awm6qO5P7JEACJEACJEACJEACJEACJEACJEACJEACJEACJEAC8U2Awm58n5+oje7vv/8WvGgkQAIkEC8EeF0K7UyQU2icWIsESIAESIAESIAESIAESCB5CfC+KOu5TUlJocduVizMIQESIAESIAESIAESIAESIAESIAESIAESIAESIIH4JsAYu/F9fjg6EiABEiABEiABEiABEiABEiABEiABEiABEiCBOCCwdOlSeeeddzxH0rlzZ+nSpYtnWW5k0mM3N6iyTxIgARIgARIgARIgARIgARIgARIgARIgARIggaQj8MsvvwScE0TfWBoWT4vYY/e+++6L5VjtYz3xxBN2Ot4SOLl6EnVbq1YtM0xV7HU/3sbO8ZAACZAACZAACZAACZAACZAACZAACZAACZAACURGQLXAyFpH1ipiYTeywyVfK1Xqf/31V8/J6UlVN20IuxB5KfB64mImCZAACcScAK7TS5YsyXLcY4891uTxep0FDTNIgARIgARIgARIgARIgARIIF8SUJ0vHiafmZkZuceuTiCQB6169AYq1/ahbrW/UOvHoh5E3UCCbqDj4w0AkTfWcTcCjYf5JEACJJAf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JEACJEACJEACJBBtAoGeCMQ9YSDHTR2D+75R7yd1q/WiscUPvBR2IySJkxyKUh+oe4q6gcgwnwRIgARiQwAfrO4PbBV4c+NDNzazSo6jQMgN5IGWHDPkLEiABEiABEiABEiABEiABJKNQKzvIw8dOpRzYVdj3wY6GdmVB2qXCPlQ4RFYOZxHeiHowtwKfiLMNxZjLFeunNS0FkeDuR/jNZn8QwIkQAK5SCDWH8S5OBV2TQIkQAIkQAIkQAIkQAIkQAIkEGUCuGdUh6Aodx12d/TYDRtZ1gY4oRqzEaUQeWF6klUkwJZirkET9A/ihzkX2wlamYUkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkECMCwYRd1QBjNBTBQqEp1uqqh2N1QB4n7wjEavXAvJshj0wCJJBoBHhdCu2M5ZRT8eLFQzsQa5EACZBAghLYuXNngo6cwyYBEiABEiABEgiVQE7vi0I9TqLVS020AXO8JEACJEACJEACJEACJEACJEACJEACJEACJEACJJDfCdBjN7+/Azh/EiABEiCBpCZAj92kPr2cHAmQgEWAHrt8G5AACZAACZAACeRHAikpKUKP3fx45jlnEiABEiABEiABEiABEiABEiABEiABEiABEiCBhCZAYTehTx8HTwIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkkN8I0GM3v51xzpcESIAESIAESIAESIAESIAESIAESIAESIAESCDhCRw+fFjSE34WnAAJkAAJkAAJkEBAAow9GRANC0iABEiABEiABEiABEiABEggoQkwFENCnz4OngRIgARIgARIgARIgARIgARIgARIgARIgARIIL8RyMzM5OJp+e2kc74kQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKJTSAtLY3CbmKfQo6eBEiABEiABEiABEiABEiABEiABEiABEiABEggvxFAjF2GYshvZ53zJQESIAESIAESIAESIAESIAESIAESIAESIAESSHgCFHYT/hRyAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAvmJQEpKiqQvXrw4P82ZcyUBEiABEiABEiABEiABEiABEiABEiABEiABEiCBhCaQnp7OUAwJfQY5eBIgARIgARIgARIgARIgARIgARIgARIgARIggXxHADF2U6w/h/PdzDlhEiABEiABEiAB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bEK2e+97IP3jn0+lpUuW5pOyjRs3Ou2x264pynZoBAgQIECAAAECBAgQIECAAAECBHoSENjtSch+AgQIECBAgAABAgQIECBAgAABAgQI1JhAU42Nx3AIECBAgAABAgQIECBAgAABAgQIECBAoAcBgd0egOwmQIAAAQIECBAgQIAAAQIECBAgQIBALQlEjV2B3Vp6IsZCgAABAgQIECBAgAABAgQIECBAgACBHgRKpZLAbg9GdhMgQIAAAQIECBAgQIAAAQIECBAgQKCmBAR2a+pxGAwBAgQIECBAgAABAgQIECBAgAABAgR6J6AUQ++c9CJAgAABAgQIECBAgAABAgQIECBAgEDNCAjs1syjMBACBAgQIECAAAECBAgQIECAAAECBAj0TkBgt3dOehEgQIAAAQIECBAgQIAAAQIECBAgQKBmBAR2a+ZRGAgBAgQIECBAgAABAgQIECBAgAABAgR6JyCw2zsnvQgQIECAAAECBAgQIECAAAECBAgQIFAzAgK7NfMoDIQAAQIECBAgQIAAAQIECBAgQIAAAQI9C7S2tiaB3Z6d9CBAgAABAgQIECBAgAABAgQIECBAgEDNCJRKJYHdmnkaBkKAAAECBAgQIECAAAECBAgQIECAAIFeCtR1xu7ChQvT5MmT89eUKVPKtzx9+vTy9nvuuae8vZYWls57Il230/j89a8lz5eHVs/3VL4JCwQIECBAgAABAgQIECBAgAABAgQIDJhAS0tLGjRgZ38ZTrxixYo0d+7c/ErPPvts+YpLliwpb1+2bFl5ey0ttLasLA+nNXsQRavneyruwTsBAgQIECBAgAABAgQIECBAgAABAgMn0NTUpBTDwPE6MwECBAgQIECAAAECBAgQIECAAAECBAZGYMBKMSxYsGBgRuysBAgQIECAAAECBAgQIECAAAECBAgQeBULtLa2DkwphlmzZqVHH300jR07No0bN65miefPvDOllSvTiO3fkAYNWyctmf1YeubO29PyrKzDsNFj0kaTd0vNQ9dqN/4om7DowfvSc488nF6YNzetPWqLNGK7HdLwrbZu169yZcXiRWnBn2amxX99IK214evSejtPSql5wGLqlZe2TIAAAQIECBAgQIAAAQIECBAgQIBAAwpUvcbujBkzUlHvNoK7I0eOTOutt15N0v3h6EPzcb3lh5enWT+8ID19+63txrnh296Z3nz+xeVtLz7zdLrntM+t1i86jDvy2LT1CaekpsGDy/1jYfHf/pruOunYtOyf/2i3ffxxJ7Zbt0KAAAECBAgQIECAAAECBAgQIECAAIHeCJRKpepm7FYGdWMAkbE7kEHd5ubm8n0OHTq0vDxo0Kp4deVyuUOHhQfP/FqWhXt/GrHt9mnkThNSylKZn77jtvSvpUvLPWP5loP2ScsXzM+ye4el0YccntbedFRalGXhzrkqCwxfclEqZUHdbbLgbtHimDuO+lD6VzaZ25D11k9jPnxEHvid89Op6eELv1t0a/derXtqd1IrBAgQIECAAAECBAgQIECAAAECBAg0lEApq8fQWo076iyoW8tlGOKer9tpfPnWX/+Jz6ZxRxyTUhbtjtaalWhY+Jc/twV6s/W/fe+cPBgbQd13XnVtWnuzUXm/+DP3lz9P937p8/n6rtdNL++bfcWl6f4zTm/bfu20rGzD5vnyi/OfSbd88H15kDg27HHrzDR4+Lr5Pn8IECBAgAABAgQIECBAgAABAgQIECDQk0C/C73GJGn1GNSthIks3SilUAR1Y18pywbOs3djJYt9Fxm2237y8+XAbeyKttme++RZvLE8/64/xFvenvzNr/L3zff/YDmoGxuGrr9BGn3wYfk+fwgQIECAAAECBAgQIECAAAECBAgQINBXgVU1C/p6ZNY/grozZ85sd2RnE6ZFv6i3G22gyzO0G0wvVzbb6/3d9lz29FPl/Q+dd3aac+Xl5fViIcotRHvu4YeKTWnJ47Pz5ZE77lzeViyM3Gn1bcU+7wQIECBAgAABAgQIECBAgAABAgQIEOhOYI0Du50FdSdMmNBpTd0I6lZOqDaQdXe7u9mu9q296WZd7cq3L31ibnl/1NiNV1etZfmL+a6WFSvK/QaPGLFa9yEja3NCudUGagMBAgQIECBAgAABAgQIECBAgAABAjUlsDIrI7vGgd3O7iSCt7UWtO1snB23DRo+vOOmdutNQ4eU1ydfc0MatvmW5fWuFqKUQ7m1rF7GuGXF8vJuCwQIECBAgAABAgQIECBAgAABAgQIEOitQHMWe1zjGrsRwI0M3coWmbmzZs2q3JQvR/mFkSNH5q9YrrdWGcjtLlu38r5KTU3lurovzn+6cle+/OIzz6y2zQYCBAgQIECAAAECBAgQIECAAAECBAj0RmCNA7tx8t4Gd6PfxIkT81c9ZvQOXndEGrLe+rnnk7++tjeueZ/h48bn7/+8Zfpqxzx187TVttlAgAABAgQIECBAgAABAgQIECBAgACB3gj0K7AbF4hA7e67755n4xYX7Cpzt9hfj+/bferUfNizf3JZmnfdL9vfQmtrWjDzrvSnUz+ZVixeVN63xYGH5MtP33Zz+mdFIHfBn2akx//3ynI/CwQIECBAgAABAgQIECBAgAABAgQIEOiLQKk1a305oLu+M2bMKE+SFv2i7MK4ceO6O+QV3XfdTm0ZtW/70ZVp5I47dzuW1paWNOPk49JTt96U9xu25ZgUGbkrs8nSFj1wX3mitHffcHsausGGeZ845vYjD04L7/1zvr7ezhNTqak5zZ/xx3y9+LPHrTPT4OHrFqveCRAgQIAAAQIECBAgQIAAAQIECBAg0KVAhHT7nbFbefYotxC1dIsWmbsLFiwoVmv2vVTqmSFq5k4858K0wxf+Ow0aNiwtmfNY+se036bIxo26u2tttHEae/jRadA665TvM47Z5YIfpU123zPftuDuGXlQN/pOPPuCdv3KKxYIECBAgAABAgQIECBAgAABAgQIECDQjUAEdquasVtcKyZQi6BurWfsFuNdk/dlTz+VXpg3N8/AHfq6jdJrsmBtKpW6PNWK5xan5x99JK/VWzkZW5cH2EGAAAECBAgQIECAAAECBAgQIECAAIEuBAYksBvXikzdepworQsnmwkQIECAAAECBAgQIECAAAECBAgQIFAzAgMW2K2ZOzQQAgQIECBAgAABAgQIECBAgAABAgQINJhAz8VlG+yG3Q4BAgQIECBAgAABAgQIECBAgAABAgTqWaClpaW6k6fVM4axEyBAgAABAgQIECBAgAABAgQIECBAoB4EStlcXzJ26+FJGSMBAgQIECBAgAABAgQIECBAgAABAgReEhDY9VEgQIAAAQIECBAgQIAAAQIECBAgQIBAHQrI2K3Dh2bIBAgQIECAAAECBAgQIECAAAECBAi8ugUGLVq06NUt4O4JECBAgAABAgQIECBAgAABAgQIECBQRwLNzc1q7NbR8zJUAgQIECBAgAABAgQIECBAgAABAgQIpJaWllRqzRoLAgQIECBAgAABAgQIECBAgAABAgQIEKgfATV26+dZGSkBAgQIECBAgAABAgQIECBAgAABAgRyAYFdHwQCBAgQIECAAAECBAgQIECAAAECBAjUkUAUYRDYraMHZqgECBAgQIAAAQIECBAgQIAAAQIECBAolUoCuz4GBAgQIECAAAECBAgQIECAAAECBAgQqDcBGbv19sSMlwABAgQIECBAgAABAgQIECBAgACBV7VAS0tLKmX1GFrrUSHSjaPV6fDrkdyYCRAgQIAAAQIECBAgQIAAAQIECBCoEQEZuzXyIAyDAAECBAgQIECAAAECBAgQIECAAAECvRUQ2O2tlH4ECBAgQIAAAQIECBAgQIAAAQIECBCoAYGoYiCwWwMPwhAIECBAgAABAgQIECBAgAABAgQIECDQFwGB3b5o6UuAAAECBAgQIECAAAECBAgQIECAAIFXWCDmHxPYfYUfgssTIECAAAECBAgQIECAAAECBAgQIECgrwJVDeze+9jyvl5ffwIECBAgQIAAAQIECBAgQIAAAQIECBDoo0DVArs/nvZ8+tyUhSneNQIECBAgQIAAAQIECBAgQIAAAQIECBAYOIFSNoNaa39PH5m6EdQt2hvHDElnHPXaYnVA3qOORLQqDH9AxuekBAgQIECAAAECBAgQIECAAAECBAgQGCiBqmTsRiD30Mlrl8fYMdBb3mGBAAECBAgQIECAAAECBAgQIECAAAECBPolsHLlyupNnnbYu9YR3O3X43AwAQIECBAgQIAAAQIECBAgQIAAAQIEehZobm5OVSnFUHmpqLF7+U1LKzflZRkiq7eaTSmGamo6FwECBAgQIECAAAECBAgQIECAAAEC9SRQlVIMlTfcMXM39kX93SjPoBEgQIAAAQIECBAgQIAAAQIECBAgQIBA/wWqHtiNIQnu9v/BOAMBAgQIECBAgAABAgQIECBAgAABAgS6EhiQwG5crNqlF7q6AdsJECBAgAABAgQIECBAgAABAgQIECDwahJobW1Ngwbihl+uOrsDMXbnJECAAAECBAgQIECAAAECBAgQIECAQC0LDEhgt2NQNzJ3D528tgzeWv4kGBsBAgQIECBAgAABAgQIECBAgAABAnUj0NTUVN2M3c6Cumcc9dq6ATFQAgQIECBAgAABAgQIECBAgAABAgQI1INA1WrsCurWw+M2RgIECBAgQIAAAQIECBAgQIAAAQIEGkGgKoHdex9bni6/aWnZI8ovyNQtc1ggQIAAAQIECBAgQIAAAQIECBAgQIBA1QRaWlpSVQK7RR3dGFnU0xXUrdozciICBAgQIECAAAECBAgQIECAAAECBAi0EyiVSqmUzaDW2m5rP1YiczeCvC9Hi8FHq+LwX45huwYBAgQIECBAgAABAgQIECBAgAABAgT6LVDVwG6/R9OHEwjs9gFLVwIECBAgQIAAAQIECBAgQIAAAQIEGkqgKqUYGkrEzRAgQIAAAQIECBAgQIAAAQIECBAgQKDGBQR2a/wBGR4BAgQIECBAgAABAgQIECBAgAABAgQ6CgjsdhSxToAAAQIECBAgQIAAAQIECBAgQIAAgRoXGFTj4+tyeCZN65LGDgIECBAgQIAAAQIECBAgQIAAAQIEGlxAxm6DP2C3R4AAAQIECBAgQIAAAQIECBAgQIBA4wkI7DbeM3VHBAgQIECAAAECBAgQIECAAAECBAg0sEBUMxDYbeAH7NYIECBAgAABAgQIECBAgAABAgQIEGg8gVKpJLDbeI/VHREgQIAAAQIECBAgQIAAAQIECBAg0OgCMnYb/Qm7PwIECBAgQIAAAQIECBAgQIAAAQIEGkqgpaUllbJ6DK0NdVduhgABAgQIECBAgAABAgQIECBAgAABAg0uIGO3wR+w2yNAgAABAgQIECBAgAABAgQIECBAoPEEBHYb75m6IwIECBAgQIAAAQIECBAgQIAAAQIEGlggijAI7DbwA3ZrBAgQIECAAAECBAgQIECAAAECBAg0poDAbmM+V3dFgAABAgQIECBAgAABAgQIECBAgECDCpRKJRm7Dfps3RYBAgQIECBAgAABAgQIECBAgAABAg0sIGO3gR+uWyNAgAABAgQIECBAgAABAgQIECBAoDEFBHYb87m6KwIECBAgQIAAAQIECBAgQIAAAQIEGljg/wHX+Ga5Gnz3EAAAAABJRU5ErkJggg=="/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><path id="Rectangle" stroke="#C06334" stroke-width="2" d="M4 393h209v53H4z"/><g id="Default"><use fill="#000" filter="url(#filter-3)" xlink:href="#path-2"/><path fill="#FFF" stroke="#A7333A" d="M71.5 303.775l15.69 16.01h-6.488c.886 1.695 3.06 5.91 4.01 8.24.318.776-.979 2.324-.979 2.324h0l-2.42.151-4.2-8.574-5.613 5.727v-23.878z"/></g></g></g></svg> \ No newline at end of file diff --git a/2-ui/1-document/02-dom-nodes/domconsole1.svg b/2-ui/1-document/02-dom-nodes/domconsole1.svg index 02ef5f0a6..d7f32debb 100644 --- a/2-ui/1-document/02-dom-nodes/domconsole1.svg +++ b/2-ui/1-document/02-dom-nodes/domconsole1.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="696" height="512" viewBox="0 0 696 512"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="rect-1" d="M0 0h696v512H0z"/><path id="path-2" d="M66 424v21.429l5.25-5.358L75.625 449h1.75s1.13-1.161.875-1.786c-1.203-2.947-4.375-8.928-4.375-8.928H80L66 424z"/><filter id="filter-3" width="195.6%" height="153.8%" x="-42.9%" y="-25.8%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1" result="shadowSpreadOuter1"/><feOffset dy="1" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 0.0941176471 0 0 0 0 0.0901960784 0 0 0 0 0.0901960784 0 0 0 1 0"/></filter></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="domconsole1.svg"><g id="Bitmap"><image width="696" height="512" xlink:href="data:image/png;base64,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gAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAwAQXcgVEZUAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAeAko4I6Xt2eTgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAwAQXcgVEZUAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAeAko4I6Xt2eTgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAwAQXcgVEZUAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAeAko4I6Xt2eTgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAwAQXcgVEZUAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAeAko4I6Xt2eTgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAwAQXcgVEZUAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAeAko4I6Xt2eTgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAwAQXcgVEZUAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAeAko4I6Xt2eTgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAwAQXcgVEZUAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAeAko4I6Xt2eTgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAwAQXcgVEZUAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAeAko4I6Xt2eTgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAwAQXcgVEZUAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAeAko4I6Xt2eTgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAwAQXcgVEZUAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAeAko4I6Xt2eTgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAwAQXcgVEZUAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAeAko4I6Xt2eTgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAwAQXcgVEZUAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAeAko4I6Xt2eTgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAwAQXcgVEZUAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAeAko4I6Xt2eTgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAwgWWnnHLKwIENKAEJSEACEpCABCQgAQlIQAISkIAEJCABCUhAAuMjoAfu+Fh7JglIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACQxFY7bLLLrt6qD0MLAEJSEACEpCABCQgAQlIQAISkIAEJCABCUhAAmMhoAfuWDB7EglIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACwxNQwB2emXtIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEhgLAQXcsWD2JBKQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEhieggDs8M/eQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAWAgq4Y8HsSSQgAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJDE9AAXd4Zu4hAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSGAsBBRwx4LZk0hAAhKQgAQkIAEJSEACEpCABCQgAQlIQAISGJ6AAu7wzNxDAhKQgAQkIAEJSEACEpCABCQgAQlIQAISkMBYCCjgjgWzJ5GABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkMDyBZcPvsrT3+PWvf12dffbZ1Ve/+tWRgrjFLW5R3ec+96mYzoedccYZ9WG33nrr+Ti8x5SABCQgAQlIQAISkIAEJCABCUhAAhJYIALqPgsEfkyn1QN3SNBf+cpXRi7eEoUIw0NGx+ASkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAFBPQA3fIm4vQir3xjW8ccs/ewV/xilfUwjBeuJoEJCABCUhAAhKQgAQkIAEJSEACEpCABCQgAQjogWs6kIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQwoQRG6oE76u4F0h/s7rvvPqH4jJYEJCABCUhAAhKQgAQkIAEJSEACEpCABCTQJBCdEH0vYz81w7g8GIGRCbiHHnpo3Y/rYKcdLFS6K+CG27XAYMwMJQEJSEACEpCABCQgAQlIQAISkIAEJCCBhSQQ8ZY4oO9F41Pfm91dGZmAmxth37CzuxFLea8vfelL1VVXXTUwAh72a1/72tWPf/zj6oILLqg23XTT6ta3vvXA+xtw+glcfvnl1a9+9avq7LPPrqcXXnhhte6661Ybbrhhdfvb37661a1uNf0Q/n2FX/va16orr7yy2nbbbav1119/yVx3twu95JJLqhNPPLE677zzKtLFsmXLai7kI8uXL6+ue93rdtvV9VNK4F//+ldncNIb3vCG1U477dTzSn/7299WjPC75pprVjvvvHPPsNO88ZxzzqnOOuus6vrXv3515zvfeZovtXNt5B3dyiurrbZatc4661Q3velN63cNy+OyU089tU6Tl112WbXllltW97jHPcZ1as8zhQTKdL755ptX/PoZ5a5vfOMbnWC3uc1t6uegs8KZqSWQdyIXiGfdFltsMTHXeumll1bf//736/iQL1J/xL75zW9W//jHPyaubNwtvnWk/ZPAIiXw1a9+dZWYs26xCbg4rBLn9BKwykV1WYFOiog9ql4FRibgdomvqyXQkwAVof33379nmObGu971rvUL+Kijjqq+853vVLvuuuuSFXAR5r785S/XiO50pztVN77xjZu4ltzyueeeW73zne+s/vrXv8649j/96U91BRdB8+Y3v3n19Kc/vdpoo41mhJnGhf/7v/+rL+sGN7jBkhZwr7766uqjH/3ojApm7vfvf//76ic/+Un1uc99rnrsYx9b3ete98omp0uAwBVXXFF94hOf6Fzp9a53vZ7vFCp+5CPXuc515izgki+dcsop9bkXW0GWeH/hC1+oEL2XgoCL0P+xj32sk056zay33nrVM57xjIGEr17HGZ7DQfIAAEAASURBVGTbJz/5yeqEE07oBEVMUcDt4HBmFgTKdL7BBhtUr33ta/seBZGszEfJH2k016afAGWrOHLhKPD6179+Yi6ahvqkS+pJEXA/8pGP1HFciLIxdbeTTjqpPv+OO+5Y3ehGN+rw6hbfTgBnJDAlBIYVQRf6stPbAFOE2EHjT97IPlj2neu1KODOlaD7j4wA4uPGG2/c93hrrLFG3zBLJcA///nP6s1vfnN9uQcffPCSF3C//vWv1yJd7j9p6pa3vGV1s5vdrLr44ovrVvi///3vtfcl3Pbbb7+KirY2/QSokMY7iIrlHe94x1rQ/tvf/lYL+3hrR6C5yU1uUt32tredfiheYSsBClhvetObaoG2NcAIV9Lg9PGPf7w+4r3vfe9qnF6bI7yMJXeoa13rWrW3bS6cBiK8X3m/YAjzb3vb2+oG6vlsWMXrEa8OjPNsv/32tUd0vcI/CYyAAF+68UPI7WV47WpLj8BFF13UEW+5egRIGpEGqc8t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BCQgAQlIQAISkIAEpoKAAu5U3EYvQgISkIAEJCABCUhAAhKQgAQkIAEJSEACEphGAgq403hXvSYJSEACEpCABCQgAQlIQAISkIAEJCABCUhgKggo4E7FbfQiJCABCUhAAhKQgAQkIAEJSEACEpCABCQggWkkoIA7jXfVa5KABCQgAQlIQAISkIAEJCABCUhAAhKQgASmgsCyqbgKL2LeCNxqv7/O27E98NIhcPp+11s6F+uVSkACEpCABCQgAQlIQAISkIAEJCCBERJYdsYZZ4zwcB5q+ghsNH2X5BWNnYD5zNiRe0IJSEACEpCABCQgAQlIQAISkIAEpoSAXShMyY30MiQgAQlIQAISkIAEJCABCUhAAhKQgAQkIIHpI7Da1Stt+i7LK5KABCQgAQlIQAISkMB0EDjllFPqC9liiy2m44K8CglIQAISkIAEJCCBoQjogTsULgNLQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEhgfAQXc8bH2TBKQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEhiKggDsULgNLQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEhgfAQXc8bH2TBKQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEhiKggDsULgNLQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEhgfAQXc8bH2TBKQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEhiKggDsULgNLQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEhgfgWXjO5VnksDiJHDVVVetEvE11lhjlXWukIAEJCABCUhAAhKQgAQkIAEJSEACEpDAqAksSgH3d7/7XXX11VdXN77xjavrX//6QzP55S9/Wf3+97+vEOF23nnnofd3h9EROPXUU6tLLrmkWnPNNas73elOozvwiI7029/+tjr77LNXOdpOO+1UXfe6111lvSskIAEJSEACEpCABCQgAQlIQAISkIAEJDBKAotOwEW4/dWvflUz2GCDDaqtt956aB7/+te/6n041kLbxRdfXJ155pnVaqutNpEC5nzzyT3IdNjznXLKKdXf//73asMNN6w23XTTYXfvG/4617lOtWzZNY8JcWzzxu17EANIQAISkIAEJCABCUhAAhKQgAQkIAEJSGCWBBadgDvL65zY3f7xj39Ul19++cTGb9IjtmLFiurKK6+smM6Hrb/++hU/7LLLLqt+9KMfzcdpPKYEJCABCUhAAhKQgAQkIAEJSEACEpCABFoJOIhZKxZXSkACEpCABCQgAQlIQAISkIAEJCABCUhAAhJYeAIT6YFL/7TXuta1qpvc5CZzJvSXv/yl+sMf/lD99a9/rdZee+36U/t+B+VT+QsuuKD685//XP3zn/+s+zpdZ511qnXXXbffrhXno1sEvDXpqoF+Um9+85vP6C+VbZdeeml9rExZoG/f0m54wxvWcWZd9qHfXroLaDOukf5k6Y6Bc2J0L3DRRRfV/f3S5QQs/vSnP9Xb6EOYY62+encd/29/+1v1xz/+sb4udiJOHOfa1752fYxR/sGduF544YXVFVdcUZ9rk002WSV+5513Xt0HMudOdxjEs+THNd3sZjfrRI80RVjiT7+2zMMIBr/5zW/qe8292mKLLVY5X+cgA8yce+659T3juJoEJCABCUhAAhKQgAQkIAEJSEACEpCABOZKYGIEXAS4X//617WAh5B305vedM4C7llnnVUh9sUQSxH5eg18Rjx+/OMf15/lZz+EXATAG9zgBtV2223XKvDRN+rPfvazWgjMfkyzL0LpVlttVW9C5IuIWoZN375Zh4B961vful7kOBlMC6ERIbJpP//5zyvij8gbARfBFoESgwUibwyx9JxzzqnucIc7VPT12jT65j3//PNnrEacZp9b3epWna4FZgSYw8IPfvCDOv45BNdMnO985zvX15T13Nemcd1NfqWAy8B1TeP6Ycm+GOcjjcBjtgYv0jH95pKGN9tss04furM9pvtJQAISkIAEJCABCUhAAhKQgAQkIAEJLF0CCyrgItQi0CGqNvuBXWutteZ0V/CgjXiLoIlHJF6dCHS9+kulj9MMVIXH7pprrll7nxI/vGtPPfXUavvtt18lbt///vc714D3MAIrnrCcCy9YfrH11luv4zlabsPLtzTCxTbaaKNaGIQZguy2226bTfWUa4sQ2c1zGfEWYREW9L2LVy/9x3LNd7nLXWYcDzEYz1ss++C1iocv01/84he1EI4AOgrL/ee+IyZzn7hW4ocwG/Gbc+EJzTaM+DAPc+5XrJtXMfeEcNxLDGZ4ExMeJjDi/pNmZmPEneMQb9IfP87HAGuDeHDP5pzuIwEJSEACEpCABCQgAQlIQAISkIAEJDC9BBZEwEXUxEsx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3bqwmj/++MMGDx7sluvXr++C09WrV7e//vWvbt24cePs7rvvNp/qYfPmzaaA8JNPPum2q0fxXnvtFdYXOyMj9fRVeeWVV+y1115zPY61rDoV1B0xYoQW7cgjj3RTfiGAAAIIIIAAAggggAACCCCAAAIIIJAqAjkFb307iyKIWyYIqG3zJ2Sas4AG6FJQVgN5RYty5MYOOqZA7plnnhndzXT8ddddl2nf2GO7d+/uAqg+tcDw4cPdOVXR0KFDM9WnBfX47dOnj1v/wgsvuN60GmjtpptuCgPC2qiesVqvoK4vassxxxzjFjds2GBKrTB27Fi/2WLbpoDv//73P4umSTjooIPc/gr69urVy80rRcT1119vEydODOvSscuWLQuX1SNZdeVlYLbwYGYQQAABBBBAAAEEEEAAAQQQQAABBBBIgkBug7fRU+fnmOjx2c3TAzc7nTjblCv2iSeesL59+7rgpt8lGrxVrtnnn38+S/BW++p4daM+7rjjwt68/lgFONUL9r///W+mvLDly+c9VXG5cuVcegIFkH2v4Tlz5oTB2/bt29ttt90WBm/VNgVS77vvPrvyyitNbVHxbVMdCvQqxUM0eOt22v5L5/RFweeHHnrILrjggjAHbjR4e8YZZ9i9995L8NaDMUUAAQQQQAABBBBAAAEEEEAAAQQQSAkB/+R6tDHKeavetolKop648epKVEei9cXSA1cN1yBmujD9pEse3HiISgmgQb80aJh6q+pHA4fltqj3rAKbykurNAbJKEqBoPNoUDMFaevUqRMGVbM7n65twYIFLsWCD+hmt3922/78808XDFZaCNVVoUKF7HZnGwIIIIAAAggggAACCCCAAAIIIIAAAsUmEM1jm1PwNtrIaE/cREHd6P65mS/yAK4P3kYbd8ghh6R1EDd6LcwjgAACCCCAAAIIIIAAAggggAACCCCAQPoLKIirjqcKxOalKIirGKgCv4VRijyAq7ys8cpdd90VbzXrEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBUiuQEjlw8xrFLrV3iwtHAAEEEEAAAQQQQAABBBBAAAEEEEAAgVIlUOQBXKVLiC0EcGNFWEYAAQQQQAABBBBAAAEEEEAAAQQQQAABBMyKPICrvBHRIC75b/lniAACCCCAAAIIIIAAAggggAACCCCAAAIIxBco8hy48ZvBWgQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIFYgSLvgRvbAJYRQAABBBBAAAEEEEAAAQQQQAABBBBAAAEE4gsQwI3vwloEEEAAAQQQQAABBBBAAAEEEEAAAQQQQKDYBQjgFvstoAEIIIAAAggggAACCCCAAAIIIIAAAggggEB8AQK48V1YiwACCCCAAAIIIIAAAggggAACCCCAAAIIFLsAAdxivwU0AAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQiC9AADe+C2sRQAABBBBAAAEEEEAAAQQQQAABBBBAAIFiFyCAW+y3gAYggAACCCCAAAIIIIAAAggggAACCCCAAALxBQjgxndhLQIIIIAAAggggAACCCCAAAIIIIAAAgggUOwCBHCL/RbQAAQQQAABBBBAAAEEEEAAAQQQQAABBBBAIL4AAdz4LqxFAAEEEEAAAQQQQAABBBBAAAEEEEAAAQSKXaB8sbcgSQ3Y5bY1SaqZatNBYNptVdOhmbQRAQQQQAABBBBAAAEEEEAAAQQQQACBbAXKT58+Pdsd0ndj0/RtOi0vsEDJ/XddYBoqQAABBBBAAAEEEEAAAQQQQAABBBBIIwFSKKTRzaKpCCCAAAIIIIAAAggggAACCCCAAAIIIFC6BMqsWrVqW+m6ZK4WAQQQQAABBBBAAAEEEEAAAQQQQAABBBBIDwF64KbHfaKVCCCAAAIIIIAAAggggAACCCCAAAIIIFAKBQjglsKbziUjgAACCCCAAAIIIIAAAggggAACCCCAQHoIEMBNj/tEKxFAAAEEEEAAAQQQQAABBBBAAAEEEECgFAoQwC2FN51LRgABBBBAAAEEEEAAAQQQQAABBBBAAIH0ECCAmx73iVYigAACCCCAAAIIIIAAAggggAACCCCAQCkUIIBbCm86l4wAAggggAACCCCAAAIIIIAAAggggAAC6SFAADc97hOtRAABBBBAAAEEEEAAAQQQQAABBBBAAIFSKFC+FF4zl4wAAggggECpEahWrVqpuVYuFAEESqfA6tWrS+eFc9UIIIAAAgggUGoE6IFbam41F4oAAggggAACCCCAAAIIIIAAAggggAAC6SZAADfd7lg+2zt9+nTTDwUBBBBIFQFel3J3J3DKnRN7IYAAAggggAACCCCAQMkVKO2fiwjgltx/21wZAggggAACCCCAAAIIIIAAAggggAACCKS5ADlw0/wG0nwEEEAAAQQQQAABBBBAAAEEEEAAAQQQSL7AL7/8Ys8991zcEx1yyCF26KGHxt1W0JX0wC2oIMcjgAACCCCAAAIIIIAAAggggAACCCCAQIkXGDx4cMJrVHA3WSXfPXBvuummZLUp23rvuuuubLcX50bdRH+z/LRVq1auST4C75eLs52cGwEEEEAAAQQQQAABBBBAAAEEEEAAAQQKT8DHAguvxh015TuAu6OK0j3nI+9DhgyJC+Fvnu9erQCugrkEcuNysRIBBBAocgG9Ts+ePTvLeVu3bu3W8XqdhYYVCCCAAAIIIIAAAggggECpFPBxvqK++AIHcBP1iPU9dBNtz+uF+vryelwy91fwNlHgNtF5daMVzE1mXoxE52Y9AggggECGQE5fvmmv6Os7X77xLwcBBBAo+QLjx4+33377LcuFli9f3ho2bGiNGjWyWrVqWZkyZbLsUxgrJk6caBphe9WqVda2bVs74IADCqPaXNWhcy9dutSaNWtmHTp0yNUxiXb6888/bezYsW6zrqFixYqJdk2J9UOHDrXNmzdb165drUGDBinRJhqBAAIIIFC8Av7zojr1RDv0+PXZtU77+Kfw/X5ap3jgRRdd5FfleVrgAG6ez1hCDhB+9MN9Xi9Lxxb05uX1nMnYX2/OVq5caW3atLGWLVsm4xTUiQACCBSaQH5fu/2XbwRyC+1WUBECCCCQcgIffvihLVq0KMd27b///nbSSSdZlSpVctw3tzu8++679tVXX4W7z58/v0gDuJ988onNnTvX9t5770wB3Py811cguH///u5aevbsmfIB3DfffNO1tUaNGgRww3+BzCCAAAKlVyD6mVGxO30G1E9uY4A+3ucDv9HjVHdscDe30gRwcysV2U89aPVhPraoV21sdN7vp5vk5/1xWi7IzfP1FOd0wIAB9vvvv9vhhx9OALc4bwTnRgCBHAWif4hz3DnBDnrd1t8A/TEuyLenCaovttXqLTVu3Lhcn79bt25Wp04dmzJliv3666/WtGnT8AO/jJSSomrVqi4QkOtK2REBBBBIIQH1uPVl48aN9scff/hFGzFihI0ePdrOP/9822OPPcL1+Z3ZsGGD+0yg42vXrm277767VatWLb/VFepxvNcvVE4qQwABBBBIcQF9lokGXNVcrdNPXkqiY1R3bNwwt/USwM2t1Pb94gVi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"/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><g id="Default"><use fill="#000" filter="url(#filter-3)" xlink:href="#path-2"/><path fill="#FFF" stroke="#7E7C7B" d="M65.5 422.775l15.69 16.01h-6.488c.886 1.695 3.06 5.91 4.01 8.24.318.776-.979 2.324-.979 2.324h0l-2.42.151-4.2-8.574-5.613 5.727v-23.878z"/></g></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="696" height="512" viewBox="0 0 696 512"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="rect-1" d="M0 0h696v512H0z"/><path id="path-2" d="M66 424v21.429l5.25-5.358L75.625 449h1.75s1.13-1.161.875-1.786c-1.203-2.947-4.375-8.928-4.375-8.928H80L66 424z"/><filter id="filter-3" width="195.6%" height="153.8%" x="-42.9%" y="-25.8%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1" result="shadowSpreadOuter1"/><feOffset dy="1" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 0.0941176471 0 0 0 0 0.0901960784 0 0 0 0 0.0901960784 0 0 0 1 0"/></filter></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="domconsole1.svg"><g id="Bitmap"><image width="696" height="512" xlink:href="data:image/png;base64,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AhKQgAQkIAEJSEACEhgsAT1wB8vbs0lAAhKQgAQkIAEJSEACEpCABCQgAQlIQAIS6JiAAm7HqAwoAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSGCwBBRwB8vbs0lAAhKQgAQkIAEJSEACEpCABCQgAQlIQAIS6JiAAm7HqAwoAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSGCwBBRwB8vbs0lAAhKQgAQkIAEJSEACEpCABCQgAQlIQAIS6JiAAm7HqAwoAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSGCwBBRwB8vbs0lAAhKQgAQkIAEJSEACEpCABCQgAQlIQAIS6JiAAm7HqAwoAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSGCwBBRwB8vbs0lAAhKQgAQkIAEJSEACEpCABCQgAQlIQAIS6JiAAm7HqAwoAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSGCwBBRwB8vbs0lAAhKQgAQkIAEJSEACEpCABCQgAQlIQAIS6JiAAm7HqAwoAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSGCwBBRwB8vbs0lAAhKQgAQkIAEJSEACEpCABCQgAQlIQAIS6JiAAm7HqAwoAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSGCwBBRwB8vbs0lAAhKQgAQkIAEJSEACEpCABCQgAQlIQAIS6JiAAm7HqAwoAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSGCwBBRwB8vbs0lAAhKQgAQkIAEJSEACEpCABCQgAQlIQAIS6JiAAm7HqAwoAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSGCwBBRwB8vbs0lAAhKQgAQkIAEJSEACEpCABCQgAQlIQAIS6JiAAm7HqAwoAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSGCwBBRwB8vbs0lAAhKQgAQkIAEJSEACEpCABCQgAQlIQAIS6JiAAm7HqAwoAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSGCwBBRwB8vbs0lAAhKQgAQkIAEJSEACEpCABCQgAQlIQAIS6JiAAm7HqAwoAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSGCwBBRwB8vbs0lAAhKQgAQkIAEJSEACEpCABCQgAQlIQAIS6JiAAm7HqAwoAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSGCwBBRwB8vbs0lAAhKQgAQkIAEJSEACEpCABCQgAQlIQAIS6JiAAm7HqAwoAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSGCwBBRwB8vbs0lAAhKQgAQkIAEJSEACEpCABCQgAQlIQAIS6JiAAm7HqAwoAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSGCwBBRwB8vbs0lAAhKQgAQkIAEJSEACEpCABCQgAQlIQAIS6JiAAm7HqAwoAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSGCwBBRwB8vbs0lAAhKQgAQkIAEJSEACEpCABCQgAQlIQAIS6JiAAm7HqAwoAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSGCwBBRwB8vbs0lAAhKQgAQkIAEJSEACEpCABCQgAQlIQAIS6JjA7DPPPLPjwAaUgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJCCBwRHQA3dwrD2TBCQgAQlIQAISkIAEJCABCUhAAhKQgAQkIIGuCMy69dZb7+9qDwNLQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAQAjogTsQzJ5EAhKQgAQkIAEJSEACEpCABCQgAQlIQAISkED3BBRwu2fmHhKQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEBkJAAXcgmD2JBCQgAQlIQAISkIAEJCABCUhAAhKQgAQkIIHuCSjgds/MPSQgAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJDISAAu5AMHsSCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQALdE1DA7Z6Ze0hAAhKQgAQkIAEJSEACEpCABCQgAQlIQAISGAgBBdyBYPYkEpCABCQgAQlIQAISkIAEJCABCUhAAhKQgAS6J6CA2z0z95CABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkMBACCrgDwexJJCABCUhAAhKQgAQkIAEJSEACEpCABCQgAQl0T2B297vM7D0uu+yydOmll6YTTjihryAe8pCHpCc84QmJ5VTYBRdckA+70UYbTcXhPaYEJCABCUhAAhKQgAQkIAEJSEACEpDANBFQ95km8AM6rR64XYI+/vjj+y7eEoUQhruMjsElIAEJSEACEpCABCQgAQlIQAISkIAEJCCBMSagB26XFxehFfvIRz7S5Z6tg7/3ve/NwjBeuJoEJCABCUhAAhKQgAQkIAEJSEACEpCABCQgAQjogWs+kIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQwpAT66oHb7+kFYj7Y17zmNUOKz2hJQAISkIAEJCABCUhAAhKQgAQkIAEJSEACVQKhE6LvxbufqmH83xmBvgm4Bx98cJ7HtbPTdhYqpivggju1QGfMDCUBCUhAAhKQgAQkIAEJSEACEpCABCQggekkEOItcUDfC41PfW9yV6VvAm5cCOeGndyFmMl7/epXv0r33ntvxwi42RdddNF0+umnp2uvvTats846adNNN+14fwOOP4E777wzXXLJJenSSy/Ny+uvvz6ttNJKabXVVksPe9jD0sYbbzz+EP6bwt/85jfpnnvuSQ996EPTKqusMmPS3SyhN910UzrxxBPT1VdfncgXs2fPzlwoR+bOnZuWXHLJZru6fkwJ3HfffY2Xky633HJpm222aZnSq666KvGG38UXXzxtt912LcOO88bLL788XXzxxWnppZdOj370o8c5qY20UXY0q6/MmjUrrbjiiunBD35wftbwf1B21lln5Tx56623pvXXXz9tv/32gzq15xlDAmU+X2+99RKfdka963e/+10j2GabbZbvg8YKf4wtgXgmkkA86+bMmTM0ab355pvTn//85xwfykXaj9jvf//7dMcddwxd3bhZfHOk/ZLAiBI44YQTFog560ZNwMVhlTjHLAELJKrJCnRSROx+zSrQNwG3SXxdLYGWBGgIHXDAAS3DVDc+9rGPzQ/g7373u+mPf/xj2mWXXWasgIsw9+tf/zojetSjHpVWWGGFKq4Z9//KK69Mn/3sZ9O8efMmpP2GG27IDVwEzTXWWCO9+tWvTmuuueaEMOP459vf/nZO1rLLLjujBdz7778/fetb35rQwIzr/Y9//COdccYZ6ac//Wl64QtfmHbYYYfY5HIGELj77rvT9773vUZKl1pqqZbPFBp+lCOLLbZYzwIu5dKZZ56Zzz1qFVni/fOf/zwhes8EAReh/zvf+U4jn7T6sfLKK6fddtutI+Gr1XE62fb9738/HXfccY2giCkKuA0c/pgEgTKfr7rqqukDH/hA26MgkpXlKOUjneba+BOgbhWOXDgKfOhDHxqaRNNRH/mSdlIIuEcccUSO43TUjWm7nXTSSfn8j3jEI9Lyyy/f4NUsvo0A/pDA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AQkMjsDswZ3KM0lgNAnce++9C0R84YUXXmCdKyQgAQlIQAISkIAEJCABCUhAAhKQgAQk0G8CIyng/v3vf0/3339/WmGFFdLSSy/dNZOLLroo/eMf/0iIcNttt13X+7tD/wicddZZ6aabbkqLL754etSjHtW/A/fpSFdddVW69NJLFzjaNttsk5ZccskF1rtCAhKQgAQkIAEJSEACEpCABCQgAQlIQAL9JDByAi7C7SWXXJIZrLrqqmmjjTbqmsd9992X9+FY023/+te/0oUXXphmzZo1lALmVPOJaxDLbs935plnpttvvz2tttpqaZ111ul297bhF1tssTR79gO3CXGs88ZtexADSEACEpCABCQgAQlIQAISkIAEJCABCUhgkgRGTsCdZDqHdrc77rgj3XnnnUMbv2GP2G233ZbuueeexHIqbJVVVkl8sFtvvTWddtppU3EajykBCUhAAhKQgAQkIAEJSEACEpCABCQggVoCvsSsFosrJSABCUhAAhKQgAQkIAEJSEACEpCABCQgAQlMP4Gh9MBlftpFFlkkPehBD+qZ0C233JKuu+66NG/evLTMMsvkofbtDspQ+WuvvTb9+9//TnfddVee63TFFVdMK620UrtdE+djWgS8NZmqgXlS11hjjQnzpbLt5ptvzseKJX+Y27e05ZZbLseZdbEP8/YyXUCdkUbmk2U6Bs6JMb3AjTfemOf7ZcoJWNxwww15G3MIc6yFFmqu4//nP/9J//znP3O62Ik4cZxFF100H6OfX3Anrtdff326++6787nWXnvtBeJ39dVX5zmQOXdMh0E8S36kafXVV29EjzxFWOLPvLb8hhEMrrjiinytuVZz5sxZ4HyNg3Tw48orr8zXjONqEpCABCQgAQlIQAISkIAEJCABCUhAAhLolcDQCLgIcJdddlkW8BDyHvzgB/cs4F588cUJsS8MsRSRr9WLz4jH6aefnoflx34IuQiAyy67bNpyyy1rBT7mRj377LOzEBj7sYx9EUo33HDDvAmRL0TUMmzM7RvrELA33XTT/JfjxMu0EBoRIqt27rnnJuKPyBsCLoItAiUGC0TeMMTSyy+/PG299daJuV6rxty811xzzYTViNPss/HGGzemFpgQoIc/f/nLX3L84xCkmTg/+tGPzmmK9VzXqpHuKr9SwOXFdVUj/bBkX4zzkUfgMVmDF/mY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RXiD0qVLS9myZdPdmCwjTJKSkuTo0aNq4zRcIxYuPHkhfPuzLViwwPRShsdyt27dsrS79MDNUryBXTm+OaFwG9hzzNGRAAmQAAmQAAmQQFYQgGBbuXLlrKiadZIACZAACZBAlhGA96m7L1SzrNEcrhgidVYK1Qgpwb8J0p9keuCmz4g5SIAESIAESIAESIAESCDHCASiB26OwWTDJEACJEAC2U4gkDxwsx0eG8yTBODda/fozZ8nSXDQJEACJEACJEACJEACJEACJEACJEACJEACJEACJOBHBKyhGazdooBrpcFrEiABEiABEiABEiABEiABEiABEiABEiABEiABEshmAu7EW3SDAm42TwabIwESIAESIAESIAESIAESIAESIAESIAESIAESIAFNIC3xFnko4GpSPJMACZAACZAACZAACZAACZAACZAACZAACZAACZBANhJIT7xFVyjgZuOEsCkSIAESIAESIAESIAESIAESIAESIAESIAESIAESAAFPxFvko4ALCjQSIAESIAESIAESIAESIAESIAESIAESIAESIAESyCYCnoq36A4F3GyaFDZDAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAhkRb0GLAi5fMyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiSQDQQyKt6iS3lawN29Yre8EPm8vN3+P9kwPe6b+OW5n1U/Fr6/0H0mPiEBEiABEiABEiABEiABEiABEiABEiABEiABEsi1BLwRbzHYgrl2xD7o+NUrV1UtiWcTfVCb91UkX76iCl+5nOx9JSxJAiRAAiRAAiRAAiSQJwmcO3cuT46bgyYBEiABEiABEiCB3EagW7dugiOjlqc9cDMKi/lJgARIgARIgARIgARIgARIgARIgARIgARIgARIIDsJUMDNTtpsiwRIgARIgARIgARIgARIgARIgARIgARIgARIgAQyQCBPhVA4f+687InZIw1bNHRCdO3qNTm05ZDsWxsnCGlQuXFlCW8eLgWD3CM6uvOoxG+Ll4R9J6VomVApX6e8VGlSRfIXcK+LI/+BDQfk/IlzUiWqqkQ0j3DqCxJOx5+WE3tPSMHgghLeLNxlnrNHz8qxXcdUe9VaVZPDBw5L4qVEiYh0XafLSphIAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiTgtwTcq5NZ2OVd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BMi1Q2DHSYAESIAESIAESIAESIAESIAESIAESIAESIAESCAwCVDADcx55ahIgARIgARIgARIgARIgARIgARIgARIgARIgAQCgAAF3ACYRA6BBEiABEiABEiABEiABEiABEiABEiABEiABEggMAlQwA3MeeWoSIAESIAESIAESIAESIAESIAESIAESIAESIAEAoAABdwAmEQOgQRIgARIgARIgARIgARIgARIgARIgARIgARIIDAJUMANzHnlqEiABEiABEiABEiABEiABEiABEiABEiABEiABAKAAAXcAJhEDoEESIAESIAESIAESIAESIAESIAESIAESIAESCAwCRQMzGFxVCRAAiRAAiRAAiRAAiSQNwkcOHBAkpOTpXjx4uooWJB/8ufNVwJHTQIkQAIkQAIkECgE+NdcoMwkx0ECJEACJEACJEACJEACBoEpU6bI0aNHTRY33HCDDBo0yLznBQmQAAmQAAmQAAmQQO4iwBAKuWu+2FsSIAESIAESIAESIAESSJNAmzZtpHnz5lK6dGmVb+XKlbJt27Y0y/AhCZAACZAACZAACZCA/xKgB67/zg17RgIkQAIkQAIkQAIkQAIZJtCuXTtV5tq1a/Laa6/JmTNnZNeuXVK/fv0M18UCJEACJEACJEACJEACOU+AHrg5PwfsAQmQAAmQAAmQAAmQAAn4nEC+fPmkcuXKqt6EhASf188KSYAESIAESIAESIAEsocABdzs4cxWSIAESIAESIAESIAESCDbCQQFBak2sakZjQRIgARIgARIgARIIHcSoICbO+eNvSYBEiABEiABEiABEiABEiABEiABEiABEiABEsgDBCjg5oFJ5hBJgARIgARIgARIgATyNoHExMS8DYCjJwESIAESIAESIIFcTIACbi6ePHadBEiABEiABEiABEiABNIiEBoaqh7HxcXJ1atX08rKZyRAAiRAAiRAAiRAAn5KgAKun04Mu0UCJEACJEACJEACJEACmSVQpUoVVQXE282bN2e2OpYnARIgARIgARIgARLIAQL5rhmWA+2ySRIgARIgARIgARIgARIgAQ8IbNy4UeVq0qSJB7kds+BP/SlTpsj69evVg7CwMClVqpRERkZKt27dHDPzjgRIgARIgARIgARIwC8J0APXL6eFnSIBEvAHAtix+3JSksNx5coVf+ga+0ACJEACJEACHhHIly+fdOnSRRo1aqTynzx5Unbt2qUOjypgJhIgARIgARIgARIggRwnUDDHe8AOOBBISkqWdRtSvCwcHqRxUyuypoSVKinrN26Wex54WF3PmzUjjRJ85CsCX30zWf736RfSr3cPeeWFp31Vrc/qGfXgo7J23QZ56dl/y4B+vX1Wb16pCPw2btriMNxbbxkijz402iHNevPhx5/LxO++l769esi4F/3vNWHtK69JgARIgAQCn8CxY8fk3XffVQOF9+3AgQOlXLlyUrhw4cAfPEdIAiRAAiRAAiRAAgFCgAKun01kwqlTMvrhJzLUqzdffVG6d+0k2jPwUuLlDJXP7sxYyvf0C+ME54dGj5LKlSpmdxfSbC9u3375ePwEKViwoLz20rNp5oWHJizxsn8yv3z9taBfG2kOJgcfLvpzmfwxb4HUq1tb7hg5PAd74th0vTq1JKhQIZW4NXq7XLhwQb1uHXM53iUlJ6kE7vbtyIV3JEACJEACOUNAh05A63fffbeULVs2ZzrCVkmABEiABEiABEiABLwmQAHXa3RZUzA4KEiaNG7oUHmysYQb4hEMYmeZMqUdnpcsWcLh3t9vEHV53oLFqpsQ6/xNwD116rTMX/in6l96Aq6/s84t/dsbt08xv+xnQvgTj4w1Eb7xn/dk+sxfzXtekAAJkAAJkEBuIHDixAnVzZIlS1K8zQ0Txj6SAAmQAAmQAAmQgAsCFHBdQMnJpBIlisuETz9w6MKZM2elS++bVNojYx+QLp3aOzznDQmQAAmQAAmQAAmQAAm4InD16lWVXKFCBVePmUYCJEACJEACJEACJJALCFDAzQWT5G0XDx85Kus3bJK4/QckvGplad/2BilerJjb6k4mnJJt0TESu2uPSD6RWjVrSlSThhISEuK2jKcPLly8KFu3xajs+oMEbjZv3Sbnzp83qylleBNH1qxh3uuLI8ZY9h04KBC4axsxfy9evGTE/N1klI82xhQqrVo0k5o1qqvsCM2wafNWtdS9bp3aRoy3YF2NOu+I3SUXzl8wmFSRsLBSKu3I0WOyz+AE27Fzlzrjx5q1KTs264SI8KpSrmwZfetwvnr1muzavUc2bNosp0+fEcQmbt+2tRQoUMAhX2ZuMKcbjJis4IHl/OFGf6pXC5c6tSLTbQeexeuM1wPGj9dDk0YN0/R+Rv2btmwzXg+7BbGZ0U6D+vWkrM0DHOM5d+68ylegYAFp1KC+wxAx35gPWP16dSTI8DKHod4Eo08wvEZhJ06cdGLe0GizSBHfxOnDHEVv36Hm6eCheKlieLSjT/q1ozqRhT/Q5qH4w6qFesZrMzS0aBa2xqpJgARIgARIgARIgARIgARIgARIgAQCgQAF3ECYRRdjmDN/oTzzwqsOT8qXKyvjP3pPqlSu5JCOm1l/zJMXXnnDKR3hDd567SWpa8QCzYzt23dA7h/7mFMVb77j6G0M7+K333jFKd9cI+TCf//3qbRp3VJuG/EPl3GCJ3z2oSFKNpAkIy7tXfc/pOqY+u0XToLwy6+9JTHbd8qLxsZeN17f2Gvh4iXy9n8/cmrX3ud/P/qQDBsy0CkfEt58932ZPuMXh2etWzWX//7ndTOOqsPDDN78+5mXZIHRT1fWsnmUvP7K82oDO1fPdxpi6TsffKJEX+tzbLKFzbbsFh2zQx576nmBsG23115+Tnr36OqQHLNjp9xnbPgFsX/p/N8cnkGgv9vYXA82c+o3SjjH9Sfjv5LFS5fj0jSECrEznzzxM6lTO3OvPzRw3FhC+tKrb8mKVWvM9vTFP0feIg/ce5cUKpR1/yXiC4z7H3pczQFe55gvGgmQAAmQAAlkNYGLxpfosHz58mV1U6yfBEiABEiABEiABEggiwhknVqRRR1mtekTgOckxFuIeje0aiFLlq+QjfDaNMS4CV9PkheeecKhkh9+/Em0kArBsXOHdnL5cpL8/NvvsntPnNw75hH5+YdvTW9Vh8Ie3sBrdewD96rc8JD936dfqOshg26UiuXLm7XAKzYt271nrzz+9IsqS49unaVyxYqy3/DMhbCZmfipiDus+4f6fvr1d9WGTtN9atzQ0btUp+uYuTf17yMVK5SXmb/MUrxXrV6r4v326+0skuqynp4PxserrKgLXsrwVo4/fES+/X6a8lq954GHZPrkiZI/f36nKqdMm6nS7vrnrVKmdGmZPWe+8n5+/uU3pJKxpLJpk0ZmGWykN/Ku+9V9WKmSMmzoICkcHCxzjS8FILA+++KrUtLwhMZrKzPWt08PaXSd58rVf6sx4AuDQTf1d6jWF5utwAN8+O33CrzMITLfMvRm47VTQWJ2xMq0GT/L199NkUIFC8oDo+5yaNtXNxs2bjZFbAjmLz3373Q9pn3VNushARIgARLIuwTwt9HevXsVgHLlyuVdEBw5CZAACZAACZAACeRyAhRwc/kEuut+r+5d5dWXnjXEvHxyx23D5YuJ3xkejxMMUXa2PP/046YXBsS6Dz9JEVOxodiDD9xjPhty843yj5F3CZZ9f/blRHn6iUfcNZduOkIVoB8wLGPXAu7A/n2lXt3a6ZbXGSBCR4RXkQ/f/dxh+X/cvv1StKj3oR7q160jOGAQu7WAq/us20/rDD5Dbh6gstx9x0h58NEnBQLu/IWLxRcC7gP33imNDQ9jexgMiM+jH35C4gwvZ4RIaNGsqctufv7xf6VZ08bq2cABfeTe0f9SguyEbybJB+/8n1lm0pTp6hpC57cTPpUK5VM+8A01xPYHjHbA59PPJ2ZawO3WuaPZJkR9hKuoWaOa+ToxH/rg4ptJU03xdso3jq8dhFCAVzZ+R240BHhfb6q3+u918oDheQu7+cZ+8sy/H3EpsvtgmKyCBEiABEiABBSBn376SXbv3i1Hjx41/u5KiYFbv77rL6GJjARIgARIgARIgARIwP8JOLvq+X+f2UMPCNx5+wgl3uqsXTt10Jdy9uw583rOvEVqSTc8LR8Ydacp3iIDYseOHD5U5V24eKlZJqcvnnzsYSeRDbFp4VmaUwaxE6KoNnjBdu/SSd3CS9YX5i6GMQRbtA9DjFxXhri0WrzF82DDo/bW63O7fMVqh9AKvxvhNGAQo7V4i3uUgcgPQ+xiV+EV1EM/+wFx+PMJ36hePTL2fqfXTu+e3Ux+f6/b4NPeL/trpSnejhg22BBvH6V461PCrIwESIAESMAVgdjYWDl8+LASb0uUKCGDBw+W6tWru8rKNBIgARIgARIgARIggVxAgB64uWCSvOliRERVh2IQaLWdOXtWihdP2cxsT1ycSsbScr1sXufD+cyZs+Zz5LHWY82XXdcQKlu3bJ5dzXncTp1aNaWgsQTfanqDNGzM5SvDBmS//T5HhY2AMHzlyhVVNcJmwLCZmCtr3qyJUzI2B9MGMbZ6tQhVnxZmmzZODaug81lDSBw9dkwQV9nf7djxE2YX4YWOkCF20/ywsZqvDGE9dMxicHpk7AMOX6r4qh3WQwIkQAIkQAJ2AmPGjFFJRYoUsT/iPQmQAAmQAAmQAAmQQC4k4Kg45cIBsMvOBCByBhUq5PAgf4FUZ2u9lA4Z4uL2m/l2xqYtXqlNMCxCsFkwGy/Cq1bOxtY8b6p06TCnzAULFHBKy0zCO+9/JJOn/uhQhfa81YmXEi/pS4dzWKlSDve4KVG8uJl29NhxJeCeOJlgpoWFpYr+OrG4pcyRI8fEiOjg94YQINrwJQQOd5aZOMru6kQ6RPHvf5ght94yJK1sfEYCJEACJEACPiFA4dYnGFkJCZAACZAACZAACfgNAQq4fjMVOdMRLIuH9e/bS15+7smc6UQGWi1hbJ6VWdNeq5mtJzvLI8yBFm9vv3WYDB10kwpvoDcsu+v+h1RsWnd9Sk5OdnpkFfKxSRmsUKHU/xKSk1O8e60Fr15NTStk+5LAms96fc2IeZyTFhQUZDb/k7EZX9Uq2fclwPNPPWZ4Sx+Sid99L+9+8LEKY5GRmM9mx3lBAiRAAiRAAiRAAiRAAiRAAiRAAiSQZwmkqjV5FkHeHniN6hGCOJ3Hjh/PERDXJGPiXv58qZ7E7jpcwIg/qy3xcpK+NM8HDx1W14iNmlts6fIVqqvt2rSSh8fc59Rt03vazZCOn0gNI6ALH7eEdih3PRRCSSNOnrZjhleu3aweuhXKp4ZPKHQ9fARCEYBrvnz5zKLWMjnBvGqVSmZf4H3rtYB7fUwXLlw060vronOHdjLQ2LTsclKSrFzzt8Rs3ylPPveyfP/152433Pt11h+y0xLG4SZjU7WaNaqn1QyfkQAJkAAJkAAJkAAJkAAJkAAJkAAJBDiBVKUrwAfK4bkmEFmzhnqwavVatxtguS7pfWr+/PnMTaN0jF3va3MuWcAIXaBDC8QbG3hYLW7ffocNu6zP9LUui/sLFz0T63TZrDqfP58S49bVkkhsvKVjuLprf8GiJcZGJo7q7opVa8zsegM4CK+1IlNeE4uXLDef64uly1fqS8MDuLx5XbJkqvB74qRjzN9NW7aa+dxdhIYWVY98GS9Yt1W8WDEzdvOceQt0cobP5cqUUWXWrF3vUVm8DmEIZ/L6y8+pa4RzePOd99W1qx/LVqySSVOmm8eBg/GusjGNBEiABEiABEiABEiABEiABEiABEggDxGggJuHJtvVUHt06ywR4VXUo5defdPwxHX01Dx9+owSk6ZMm+mquNdpOpbt9Jm/yJEjR72ux11BLUIi7IDelOvixUuCOLLpWXmLZynKu9sYLL16fPlcz9H8hX/KofhUUXr/gYPy+lvvptsUGHz3/Q9mvgMHjWX9305W94jLag2dMGzIzSp9zvyFgtAN2tDWZ198pW579+wm1nAWZcumiJt4+NU335vCNwTL8V9+ratwe65YIUUM3hq9XXmEJyU5h3xwW9iDB4889IDKNXX6T/L7nHkOJeAVvG7DJnn2pdcEG/y5M/1lB8b082+zJSN9jAivKs8//biqetYf8wQHjQRIgARIgARIgARIgARIgARIgARIgAQ8IcAQCp5QCuA88A589t+PyqgHHxV4Fva+cag0b9ZUShqbVR2Mj1fLvjH8YUMG+pTCoJv6G8Lje7Loz2XqqFypouE1W0Rat2wuj4xNEdsy0+DggQNUTNiNm7ZI34HD1Jj27NkrlxIvp1stPDYhbM9bsFg+GT9BHQg1AY/KO28fIb26d023Dl9n6NWjq3zyeYp4OmDwCDWewsFBpsAKr+H0vHDf/+gzgShbOqyUrN+4ReVHuRHDHDfW6tenp3w7earE7TsgDz32lDRp3FAKFw4WeGlru/fO2/SlOocYu1xjuT+EzSnTZsgvRigAxHpda3gHh3mw8V2LZlFS3gjjAKH54cefUR7UlStVUHW/+eqLxpcMVR3ay+hN7x7dZc68RUocfv7lN+SLr76VGtWrCTYti47ZYW5s9sjY+91W3aHdDco7GeEqXnn9P+rA2BDi4NMP33FbTj8YOKCv/GUI4gsWL5EXXnnD2ACunoRXTfnyROfhmQRIgARIgARIgARIgARIgARIgARIgATsBOiBayfij/f5UjuVzwg/4M6scUfteayxY+35INj+PO07ad2quSoG0Q0iE2J2whB3tZMRz9OXBjELwhzEQRi8GiGMxccfcdmM7jPCL3hivQ3B85ahg8ysGBPs/bdfl7p1aqnr/JY4rSrB8uO5Jx+Txx4eY3on794Tp/oHj2Sr6X7ps+Mz3/16IW7rR/99S4mcaAPjgXcsRM8vP3lfbY6FdL2pGa5h+Quk9AFjadO6pZpTlIPYC6/eSV99qjZDS8md8hOi/jdffCLwsoVBBNfiLdjNmPK1VIsIT8ls+fngA/dKVJNGKgX1o48N6tWR8R+9Z+ay908/gED8+cf/lZHD/6EEX5TH6wHHZRdxjHU5T8943bz31mvy1OMPK3EY4jS+PAALxMUFR7QdWjTUbZXoO8aC1y7yw1D21OnTDmXyXY/T7Op39TljUzMtaD/9wjiHcrixv448fb07VcQEEiABEiABEiABEiABEiABEiABEiCBgCGQz1g+7BgYM2CGxoF4QyAxMVH27T8oZ8+dE2xoVaFCOYF3ZW41CGxY+g+v0yqVUzezyq3jwbL9AwcPGqLhGWMzrkqiY9d6Op6EU6ckLm6/VDI8nstZwh64K3/pUqLsjdsnSclJElG1qhQvXsxdVpWOOLuIO4wN0CDyWmPjplkwmx8iVMgh40sDCNyIbYtN3OziaTZ3ic2RAAmQAAmQgFsCGzduVM+aNGniNg8fkAAJkAAJkAAJkAAJBC4BCriBO7ccGQmQAAmQAAmQAAmQQAAQoIAbAJPIIZAACZAACZAACZBAJgj4bo13JjrBoiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAs4EKOA6M2EKCZAACZAACZAACZAACZAACZAACZAACZAACZAACfgFgYJ+0Qt2ggRIgARIgARIgARIgARIIE0COpRCmpn4kARIgARIgARIgARIIOAI0AM34KaUAyIBEiABEiABEiABEiABEiABEiABEiABEiABEggUAvTADZSZ5DhIgARIgARIgARIgAQCmkD9+vUDenwcHAmQAAmQAAmQAAmQgGsC9MB1zYWpJEACJEACJEACJEACJEACJEACJEACJEACJEACJJDjBCjg5vgUsAMkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIk4JoABVzXXJhKAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAjlOgAJujk8BO0ACJEACJEACJEACJEACJEACJEACJEACJEACJEACrglwEzPXXHI89YuJ38kvv81W/Zg2aYIEBwer6/vHPiaH4g9Lk0YNZdyLT+d4P9kBEiABEiABEiABEiABEiABEiABEiABEiABEiCBrCNAATfr2Gaq5oSEBDl4KF7VcfXqNbMuiLdIL1e2jJnGCxIgARIgARIgARIgARKwErh06ZLgsFuJEiUkX7589mTekwAJkAAJkAAJkECmCFy5ckUuXrzoVEeRIkWkQIECTulMyBgBCrgZ48XcJEACJEACJEACJEACJOD3BP773//KxIkTnfq5evVqKV68uFO6q4T4+Hjp0qWLerRkyRIpV66cq2w+Sbt8+bL8/vvvEhMToz78JScnS+/evaVDhw4+qZ+VkAAJkAAJkAAJZC2BDRs2yNSpU50aufXWW6VJkyZO6dmdcOHCBXnppZdUsw8//LBUrlw5u7uQqfYo4GYKHwuTAAmQAAmQAAmQAAmQgP8RgEjbo0cP1TGIovv375eqVat6LN6i4Pbt21X5okWLStmyZdV1Vv347rvvZNeuXar6ggULCjyF0V8aCZAACZAACeQmAl999ZVaAYMvIatXr+5XXcdK7ylTpqg+3XXXXWaoTl92MiIiQlV39uxZOXnypLoODw/3ZRNe13XgwAGzbFb/XWM25MWFu3migOsFTBYhARIgARIgARIgARIgAX8mMHr0aLN748aNk0mTJkmzZs3MNE8u4KmCMvXq1cvSsAsHDx40xduRI0eq9jzpH/OQAAmQAAmQgD8ROHfunERHR6suFSpUyJ+6pvqyd+9e2bNnj+TPn1+CgoJ83r/mzZsLDtiaNWtk2rRpgi9lS5Uq5fO2vKkQX2bD8CV3Vozfmz65KuNunijguqLFNBIgARIgARIgARIgARIIEALr169XI2ncuHGGRtS3b1/BkdW2ceNG1UTp0qUp3mY1bNZPAiRAAiSQZQS0QIgGKlasmGXteFvxvn37VFGERMrqePgQIWH+FKZAj9+f+qQg2X7oftrniQKuDZS/3BYOLmx2xfqLFRJSRKVjKRuNBEiABEiABEiABEiABNIigI3Mtm3bprLUr18/rayCzUfgMWO3hg0bSmhoqD3ZZ/c7duxQddWuXdtndbIiEiABEvAnAlhKfvjwYQkJCZFq1ao5dA2bPsErEp/7seLBlR05ckStVDhx4oQkJSWpMDNYql6jRg3lTemqzPnz51UZq5CGOKTwiHRn8B69du2aWvpfuHBh1WeE0zl16pRUqFBBeVf6wrMU44iNjVVL7LHaA2FzsMw+vfcBLC3fsmWLnD59WurUqaPGj77hKFasmMtY7Yipvnv3bgEHLOuHsNqgQQPVpp0D4rGjX7C6devKmTNnVDgh8EcZ8LbqM8gXFxcnYA3TX5iCsQ5DpB4YPyIjI33m9Yn3a7y3Hz16VI0dc4UvQfE+b41zj7nUHsHoB0IqwTCH+m8DfV+rVi31DLz0+zIYu9p8DHOmX1cIE4FNyuymn9tf7/Z8+j4j86TL4IzwS1jJg9cU+lqyZEnBWFwJ6Fpgx2sNv3c7d+5Uv3v4XcL8pvXa9ub3ydMxeTpP+YyM16yD5zUJkAAJkAAJkAAJkAAJkID/ENAequkJsK56vGnTJvnHP/6hHuGDpasPWbocPrT2799f35pnbC6GD61ZYVevXpXnn39eVX3LLbdIo0aNsqIZ1kkCJEACOUpg+vTpgk0kEdt77NixDn1Zu3at2vgJy9rfeOMNB4EwMTFRECPcLgbqCvB/5m233aZvzTPqxPJ1/B9rNXwZN2rUKCXGWtNxDXEU7cPuvfde1ScImFaDqInYqZmx119/XYmOruqASAw+diEN4/j2229l69atDsUgiuIZBFos3R82bJjDc8Q8nTBhgiC0gdXAGu85TZs2tSYrsRMxbGE33XST/Pzzzw7PIZQ+/vjjDiIp3sMwT+nZc88951Auvfzunm/evFl++OEHt20+/fTTZsgCiJpvvvmmu6rMdLwuXnjhBXVv3egLc+EqHj3CMuFvEwjVGL/9bwsIzOgH7J///KcSR9WNmx8ZnSdUgy9Evv76ayXcuqp2yJAh0qpVK/MRxHnMAaxnz56ycOFCgcBqNby28Rq3mze/TxkZk6fz5P6rF3uPeU8CJEACJEACJEACJEACJJCrCGgPG3jR2D9g2QeCD6aPPvqoSoaH09y5c9W13pDEnt8X9/gAps3Vh0T9jGcSIAESyM0E9JJoV5s5aa/A8uXLO4i3GO+XX35pejrCkxGehRDNUB/ETCyxthu+dFu8eLFKRnvw6oWHL7wqIWRC0HzqqaecPHd1P1Bw6tSpyvsUXoyVKlVSnqsoX6ZMGVWvtz+0t2xwcLDqF/qvPT4heOE94Y8//pABAwaYTUCghaiqRWyMB/3AihHtLYvMdrbwNsVYYfBKbdmypfLc3bBhg2oTm3mBKTw2tVkZQLzFl5eoF23Hx8erzcmWLl0q/fr1U0XgD9mmTRvltYyEP//8U6XXrFlTqlSpoq7xA3Nm9Yw1H2TwAv2DkA2D6Ir3doQDgPgOQRWCO7yZtUGo7tSpk7oFe/2FcOvWrQXv+dognGuDlzieYQUPXmf29+ZDhw6Z9YCDq78twEqbfV50uj57M08QzD/44AM1j2CL3wswh1ctXqfgZH+t4vWlDX/fwGMZK4zgXa09k2fPnu0k4Hrz+5TRMXk6TxRw9QzyTAIkQAIkQAIkQAIkQAIBRkB/WIuKikp3ZPiwCc8s2Oeff64EXGxi5mr5ZLqVeZhBC8z4sGj9EO1hcWYjARIgAb8nAJEPS91hrsQsd+IuvPL0MvR77rnHKbwAwgHA09FqWEquxdtevXpJt27dzMcQO8ePH6+8XyHoQvCymlW8hEB23333OeSBSAhRLzMGz1p4OUJ4tIYi6N27t7z//vtqKbxVlEVbK1asMMXbESNGmF6ziNH+7LPPml7GVqER3paTJ09WXYWX7t13322+lw0cOFB5YkIY/uuvvxxiveu5QMHBgwcLhE5Ynz595MUXX1TjP378uErDD4xBx4qH56oWcDGerPjyc+XKlaptCOsPP/ywgwiPFTQQKSEGasPmYVpsxooc/TfBoEGDHPjr/PoMlggvgPAQ7dq108nqDG9yGN6z27Ztq67tP1AOhvd2hLZwZ97OE1YUQfjHWJ955hmHME943UNALlu2rEOzVgEXoUSGDx9usvrmm29UaA6EOrGaN79P3ozJ03lKnVlrL3lNAiRAAiRAAiRAAiRAAiSQ6wnoeHzwMsmI6WWqGd34LCNtIIYhPJlgWdlORvrEvCRAAiTgawIQhSAWwqxembodeDTC7OIuPCa1udoDB8KY9YsvtKG9M+Fd2LVrV11cnSHYwvMVZl39oBKMH1bxEoKxXeCFyOQqrqgu78kZ48ASdat4q8vp9ynNCukQvxcsWKCywIPWGvIAXy7quK3IYO3br7/+qsRWCHwIlWD9IjIoKMiMNWznoEU+iL5avEXd6K+u3+q5imfadFncw2s5K0x7tsLr1SrUoi300Spi29vX82vfGMueD/f6tajL6Dz420CPE+GZXM0j8uovHtLqD/J5O09aaAUDzKfdMFfwzLWaFpXxOzB06FAHfvr3Uv9+oJy3v0/ejkn3VTN3NU+OI9IleCYBEiABEiABEiABEiABEsjVBLCUUn+Iymj8XCwxhbnbUMdbMPAYmzVrllrGqj+kQITo0aOHt1WyHAmQAAn4NQHt2Qqxyb6sG16tWrC0i13w4EQZPP/oo4+UtyNERbtnoR48PFe1sAUPV/3/uH6OMwQqeNe68qTVQjK8E7PCe1T3AyIkvGrhlYz+6jik8GCFhYWF6axqoy0dv1aHAjAfGhfauxNCthZpUd+qVatUNgip2OTKbtpz2coBy+91H+xepyh/7NgxVY013IC1Xv2ehhAG9hi+1nyZucZ7MgRUxPz93//+Jx06dFAbl3nSnhYwtTibVj90HswPWIEtXoczZ85UxbDZHERud6b/9kCICnfm7TyhPmw4Bk9z1PGf//xHOnbsKFgx5OqLDt2+/j3EiiS76IswCjBrSBJvfp8yMybdz7TmiQKupsQzCZAACZAACZAACZAACQQQAR3TDUNK64OWfcjwjNVeSRABfGn4gIsNWLTBQ2b06NFqZ3adxjMJkAAJBBIBLRy58qjToh/GaxWPcI//H7E8/7ffflNC1ZIlSwQHBMIbb7zRadNHa10IDYDDnWnhUz+HSKo34oIQlhUGIRBL1aOjo52q10I1HiCmqzbNDmO280EehJmAWQVnLUQjHWLn999/j0uXZo0Xqz1LkRECpdXARgvJ2lvT+hzXmr9diLfny8w9BPx169apcaM9bCYGa9GihQrzYJ9Xa1sIBwDT4qz1mf3aOgbwxP3y5ctVjF3kRQgGd4YQAvg7AmadF3t+b+dJ14svphGGCW3B6xUHBGNsPmd9DSE/hFXt0e7qC21Xc6fTUN7T36fMjAntwNKaJwq4KYz4kwRIgARIgARIgARIgAQCioAOgwBvKru3SVoDxQYg2uxLaHW6t+fq1avLyJEj1YY6+DCID1XYCRoxCWkkQAIkEIgEtBDkSszS3nbwqoWIaTd4FiJsAIRbxDCFCAXBCqESrDFaUU63A/EKHoppmTX0APJpoRTX9mdI84Vh0zAt3iJeq/aYxDJ8eL6+9NJLqhmreKhjByN8g93gEar7bRUldRpCHYBfWoZNyrRpfq48aK3irjsBV+ex9kXX7aszNkJ78skn1Wvh77//Vht2gQOusfnoyy+/7DKsAVbk4P0W5kn/sEGa9tYGF7w+scEXDEytXtIq0fJDc0CSdS4tWdSlt/Ok67njjjuUQI9QTBByIbLD8xexlMEIYUS06dATuLf3Cfz0FwFWNvr1kJHfp8yOKb15ooCrZ5RnEiABEiABEiABEiABEgggAvgwB7PGDPRkeHqnb3ipeLIs05M6dR7sbo0loDiwHBViMTZKoZEACZBAoBLQKxpcCX96RYJVOLJzgGgHwRMHNh/DJpMQ47ChlTVOqxY7sXKie/fu9mrSvNfCE0IR2GOHplnQw4fnz583N9BC/FHEs7WaNdyDVWDTG4Yh5qvdIAZrUdJaRi+HR7iKjHDQgp21Lt2m5qOFTZ2uz1YP3bTmUufP7Blx43Eg7AM8TyHgIhwEQiu4+uJV9x/tugsBYe8ThEvUhy8ZMA9gDVG3Z8+e9qwO95ojWLmaN53Z23nS5XHG7xQ2I4MIu2bNGvnxxx/V49WrVyuPZJ1X9wmivj3Mgv79RF7r3Hvz+5TZMaU3T85f8egR8kwCJEACJEACJEACJEACJJBrCeCDPsxdvER3A7N67rrL44t0vXQVoi6NBEiABAKRADbh0qEJIMRaDWFu9FJzT0U/rGJo1KiRqgZL1a2mNzSzLuO2Pk/rWgtcVgErrfwZfaY9jVEOm5hZDSLkH3/8oZIgEEL406bFNgiJVkM4Bl0G6dZNw7S3Lr4khLDnqWnxzNVcaD6uRHjUr4U7XHsqkCJvZg0CaZ8+fcxq7K8J/UB7oOJ915Wnt85nPWsO+DIYK2ZgCN2R3ooeLXymFc4BdXk7TyhrN4wJX2bo146dg54/e2gF1KPnHV9cWH9Hvfl9yuyY0psnCrj2mec9CZAACZAACZAACZAACQQAAb2hC7xz9IcXT4a1fv16lc3XG5jZ29Yig97Z2/6c9yRAAiSQ2wlAwNWm/2/FPf5P1vFLcW8XTiGYYWm4VYhCXdhYaePGjShiCrnqxvih64AwjE28rGUheKLcZ599pjal0mX0WS97dxXmQefJzFm/H6EO7XWMa4SE+OSTT8xN1ewCm76HCI5wOxgTNsNELF0tmkJ0s4qKWmRFGWy6hfxWwzJ7sLeKyqhXx7jVHK1ltMinRU3rM1xbN0PTX57a82TmHv1D2Aw9T7ouhJ746aef1C1ETFfet3io+4cvDOw8dF32s34taC9nfBmMWLvpmZ5riJF4vboT0b2ZJ7Q9Y8YMFS7C+ruFPuL3Rc+h/pJD91X/DeRqbvUz/VrTZXTejPw+eTsm3WZ688QQCpoUzyRAAiRAAiRAAiRAAiQQQASwYzc+KCMkApY8ak+me++9V+6//341Unyov/POO81lqEjEh1sYlunqD4a4x4ds7TWL+8ya9jTRH3gyWx/LkwAJkIC/EYCohnihJ0+eFIQJwLJ/LOPWnre6v/YvstauXavEulmzZqlVFPj/G0KTFtNQZ+fOnXVxde7atavylEQeLCXHgf9fIWQixieENLStBTZdGB6wEAJhWrTSz3x1hvAJD0f0De8rENvQF2zYZPUItQukGOOyZctU3+Fxa/W61X2zv4cghi/qAS8I2TggPkLkRSgA7RFt9Vy1CqP2+tBnPV/u+Fg9gL/++ms1Vr265F//+pfpGar7nNEz+of3cxzwMsWGbuiTjt2K+rCxmFXItraBzb0QRxk2btw4xR554TE6ZswYa1bz2j5WhL5AvOL0DB7WYA4bP368OmOOy5cvL4888oi6xw9v5gmvYYQOwYHXk/690QI76kXcf2tsY5TRnLQojXzatIBrf+158/vkzZh0P3BOb57ogWulxWsSIAESIAESIAESIAESCBACEGmffvpp0TsuIwYhDquXCbxgESsOu1rrQw8fH4h0GkRg69JCncfbMz54aq8ca3+8rY/lSIAESMBfCdx6663msnqIh/j/Dxt46fisEGPtoirit0L0wv+T8DRFCAEIiUjDJlIPP/ywEuGsY8Zy+oceesjh/3gIfzqUAAQ0xNG1m/ZkRXpW/X+MvuHLQoRIgEFQg3iLZerosza7iAax8sEHH3TYkAohCsBUC6SRkZG6uHm+6667JCoqyrwHA7QH/qizffv2Dhtx6S8UUafuoy5s5WMXd3Ue1InxgR/mCHOFDangEaq/PNV5vT3rJf2oE68HLUqCx6hRo6RVq1Zuq27YsKH07dvX/BIWnp7oH/rqzhACQT/HihyIi54YNtAbNmyYw2sJr2MdXsBaR0bnCf3Wr1Ewxt8pWrzF3EHEHjFihLUJJdrrBFfzh9cGzP7a8/b3KaNj0n3DOb15yme4Haf69FtL8poESIAESIAESIAESIAESCDHCejlslqIzfEO+aADWLqqPXMee+wxhw/SPqieVZAACZCA3xFAuAAc8Gy0C7auOgvRC+ISBF94PkLAcyX2uioLkQ+xSLH0HkIcykGQymmD6IZNo+DxCyEuI+ImVozAwA6i6jvvvKPun332WVOYVAmWHxD84HWLsAEQ+CAi+vG+uMEAAEAASURBVPLLSEtT2XKJeYVwC34QjTGvGWGYkU5iU7Bp06apImkxzkid7vL+P3vnARfF1bXxI4IogjQRUWlWsNcYu1ETo6Y3X9N7/GJ6NcUYk5jee0xMYpppGk2zxhh7ryAqXUS69KIUv/vc5Q6zlQUWQTiH3+7M3Llt/rO7zDxz7rk1PU/4XOO7gfOKyVbxwAPn1R4PYWt9sJVem+9TTY/JVvtqH4dQUCR4yQSYABNgAkyACTABJsAEmMBZIaAXEhDPDpOPYEgoPMTYmAATYAJNkQAEWOVFac/xwfsRv4m1+V2EuIdXYzMMe7fkBWmtnxBtlditlsi7fPlyWQT/N2yF9kGYhpq0Z60fjSX9bJ1XiMQIwQGbOHGiTcaOYFPT84TwD8oT1xHtV1dHbbjX9Jiq6wP2s4BrDyXOwwSYABNgAkyACTABJsAEmIDDCCAeIW684SGGCV/wwjaGBbMxASbABJgAE8Bg8Tlz5sjJ2hDXFN6mGPb/77//UmxsrAQ0Y8YMBuUgAvAyjY6OliEJ4H0LD3B4tapQHw5qhqupAwEWcOsAj4syASbABJgAE2ACTIAJMAEmUHMCGOaIuIaRkZGEOLwYDmppcpGa18wlmAATYAJMoCkQQJgEhFzYu3evfOmPCd7JmFTrbHph6ttviusHDhwwmrgU3uL33nuv5gHdFI/5XDsmjoF7rp0x7i8TYAJMgAkwASbABJhAsyLQFGPgNqsTyAfLBJgAE2ACNSaAOKd4yBcTEyPjAJeWlsrJzDBp17BhwxpFTN8aH1QjLgDWeCHEER6ohoWFEUIVsDUeAizgNp5zwT1hAkyACTABJsAEmAATYAJmBFjANUPCCUyACTABJsAEmAATaFYEnJrV0fLBMgEmwASYABNgAkyACTABJsAEmAATYAJMgAkwASbABM4hAizgnkMni7vKBJgAE2ACTIAJMAEmwASYABNgAkyACTABJsAEmEDzIsACbvM633y0TIAJMAEmwASYABNgAkyACTABJsAEmAATYAJMgAmcQwRYwD2HThZ3lQkwASbABJgAE2ACTIAJMAEmwASYABNgAkyACTCB5kXAuXkd7rlxtBXlFYSX3lo4taCWzi31SbzOBJgAE2ACTIAJMAEmwASYABNgAkyACTABJsAEmEATJ8ACbiM8wes/XE/rP/jXqGd+3TvQ/SvvN0rjDSbABJgAE2ACTIAJMAEmwASYABNgAkyACTABJsAEmjYBFnAb4fn17uJNXUd0lT3LTc2jrPjMRthL7hITYAJMgAkwASbABJgAE2ACTIAJMAEmwASYABNgAvVNgAXc+iZci/oHXT2I8IId/PMg/fLQz7WohYswASbABJgAE2ACTIAJMAEmwASYABNgAkyACTABJnCuE2AB91w/g9x/JsAEmAATYAJMgAkwASbABM46gYqSEiovKTZr18XTi6hFC7P0pp5QWFhEZeVlRofp5OREHu7uRmm8wQSYABNgAkyACdScAAu4NWdmtURhQSHFH46nvkP7GuXBhGTH9x+ntCNpVJhZQN5BPtSpTwAhrq0j7ODOg9QtvBu5ubs5ojqugwkwASbABJgAE2ACTIAJnFUCB+6/izLXraZuj8ym4Dv+z2LbJSknaMukEXLfqH93kGsHf4v5zlZi7HtvUNI3X5g1N3bbQXL2aGeW3tQT7rz3QYpPOGZ0mL16dqdFn39klGZrY80/62nOC69QaEgQLV70ua2s58y+pnhM5wx87igTYAJMoAkRaJICbmxsLH388ce1Ok333nsvdevWze6yZ86cocToRDq09xDlZOWIh+0tjATcAiHYLnnsV4rdFGtW55h7xtCEhydSS+eWZvtqkhCxK4Ig4nr5elHvQb0puEew7EdN6uC8TIAJMAEmwASYABNgAkygoQhkb98sm3YLNswDYakfBUejZHLLtm3J1c8xjhCW2rE3zcXTk/wmTZbZCw5HUfHxY9SmS1CzFG9xT9Q1JISCAwMljx2791BRUTH1CQ+zF6fMdyQ6Ri5RV33Zzt17adnvf1NAgD/dN/PO+mpGq7emx/TjL7/RwYhDNGrkcJo6eZJWD68wASbABJhA8ybQJAVcCLAXXXQRrV69ukZnF2XsFW8Lcgsock8kJRxNoPLycq2dVq1baeu4kPn+7u8o+UCyTBt1xyjyCvSmhO0JFLkigjZ+tpGchHg7UYi4dTG0ear4lBSQt6zdQtv/3U4hPUOoz+A+5O7JQ5bqwpbLMgEmwASYABNgAkyACdQvAXjWlhcWykbce1kX/MqLishz0FDyCO/TKEIUhMx8QANzdP5zdPyHReQ5eKiW1pxW4MQyf94z2iFfd+MddKzoOPUO76Wl2bOCevr360Mjzh9mT/Za5dmybSf9s34DTRw/tlbla1qopsf054pVFBMbT0MGD6hpU5yfCTABJsAEmjCBJing4nxNnjyZ4ImLlz0G4RZlbNmZijMUdySOovZFUV52npYV/5T9O/tT+KBwCggM0NJjNsZo4u2Nn99IPS8wXMAMv3E4rX7dmzYt2Ej/fbSeRtw6gty8ax/+4OrbrqaUpBSK2htFaclpUlCOjRLHLl7tvNtJr9zQnqHUwqn5xeLSTgavMAEmwASYABNgAkyACTRKAgVHDsl+wbO2dWeDB6eljvpPuZTwaoyWu2+37Fa7/oaJiBtjH89Wn/ILCuhY0nHZXK8e3WvU7Kx77qhR/tpkjjp8xNA3Ed7hbFhNjqmk5JQUb9GvHt2se6OfjX5zG0yACTABJtC4CDRZAReYIcjaG0oBoROsGcTaiN0RdCzmGFVUVGjZPDw9qEffHtS9T3dydjZHGbXacDEa0KeTJt6qwvDGhYALi90cS/0u6ad21WoJ4RivsrIyiomMoeiIaMrPzZdC87Z122jH+h0U1D2I+g3tRx5eHrVqgwsxASbABJgAE2ACTIAJMIG6ECg+lkDZO7fT6cx08ho8THrU5kdFyirb9R0gHA6ctOrPiAmxcnbt0LbVikef/uRczcRYZ8Q18cltm6g46RidSksVYQ08qHVAZ/I+fxS18vFVVclleVEh5R3cL716vYedTwXRRyhv/x46lZFObbv1oPYXXEhOrapG2RkVFhuYzCz/UIRMlt7BphlMtsvy8yhnz04qST5Op0UbiJfrFhJKvmMnUAuTe4qi+Fg6lZ5Grh0DyC041KQmwyb4leXlkouXN7n3CjfLk5uXR3FxCVp6jx7dyF2I5fVl0TFxWtUhwUHauqUV9E2fH3kw8dnggf0tZTdKy88vIIRDSE1LJ9TjJUJaBAV2oSGDBlDr1q5aXuRTYQyQuO+A4VwVi/O2a88+LZ+vjw8h9m5drabHdCIllfCCJZ9I0ZrPOplt1L+QoEBq3974s4vMpaWlFHX4KB0Sr+ycHAoVzM8bNph8vL21urCCSeaijhwlNzc3cnVtRVu27iBPz3Z0wdjR4rNPtG37Ltn++LGjyNp5g8CsBHDUGST65Otj3A7S2ZgAE2ACTMDxBMxVR8e30WA12htKAaETbNmm1ZtkeALkgVCL8ASINVtdeILs49my2tDh5hdbbX3byknMMmLEBceJHFvN12gf+hc2IEy+IODCKxdhHiDsYok4vVOnT61RnZyZCTABJsAEmAATYAJMgAnUhUDFqVN08OGZlPXfOqNqOlx8iQifUCDTIODqrSghnvbePkOfJNfP/3OdTQE3a9N6OvzcbCHcVolh+kpGrdtOrv4dtaSc3Ttp/8xb5HaXG26l499/re3DikfvvjRo4Q/k3M7TKF1tFEQfVqsWBVRtp1iJfftVSlz4iT5JW3f1D6DBi36iNoHBWlrKb7/I/H4XTqF+736qpauVkhPJtPMaw7V9jyfnWGz/n3830Otvf6CK0Lei/R7d68+78/CRaNkWQiG4uNi+3fz3v0306pvvaX3DiptbG1q3YplRmunGtz/8TB99ttA0WW537hRASxZ/re3bumMnPffCq9q2Wvnqmx8IL2X/u/ZKeui+mWqz1suaHtM33/9Ey/7426y92XNeMEp79aXnaPyYUUZpsfEJ9Ozz880mjwPDF597mkaNOE/Lv3PPXpr9rHGd2Llu/UbKzMrSPH8//eJryQ8cTW3/wQh68LGntWRLfdJ28goTYAJMgAk4lIDt/6gObaphKqsulALE2+pCJ+h7jri2iHmrj3ur369fP5l4Um66+1mOQ+sZ0I4g4OYkO07A1bdfXlYuhVv0mY0JMAEmwASYABNgAkyACTQEAb14izAJ/lMvp9bCozT55x8ofeWfWpfcw3pr61hxcm1N3R5+UqblRRygjDUr5HqboCqBUybo3jDR2f57DGIsvGd9x4yntj16SS/c9JV/Efa3au+nK0GUH2XwyEQixFtMTOY5cChl/LOKcvfukt61xxZ9QV3vf9SonNpQ3rfuPcOpZRs3lWxxiTphAZdfQ2279yTwQPiF1N+XSsH58NzZNOjLxVpZjz6GUXq5u3doafqVuPffkJuYPK3z/27W79LWlaCqEkKCrYepUHnqsoyMMgja9kxgFiw8OO+9+3bZ3Op//pUi4qABtkcm/vrb75p4O3TwQOmt69/BjxKOJdGfK1YL71Hj4+sU0FFrAwLkZuF5CoHz1huNHw4MGzqoLoetla3pMeEY0EcY+o/wE73DetJ4eMbqbEBfEftZZ3v3H6T/e+AxmdK9WyhNu/hCOnkyh/5cuZqys3Nozgsv08/fLtS8dqOjY7XS1151GaWkptOmLdto245d5O3tRTPvvJV+WrJMlkX69Guu1PKrlaMxVXUgrXtXc0cllZeXTIAJMAEm4FgCTV7ABS5boRTsEW/HTxtPh/YcorjDcVIQjT8ST3i5tXWT4RN69utJrcQwFFNzdnWRSeWl5aa7DOmnDekqn8VMNUw8feo0HT14lKIjo6m4sFgrDc/crmFdqfdg4wtjLQOvMAEmwASYABNgAkyACTCBeiCQ/NN3muftgE8XydAJaCbo1rtp/ZBeWoumAm6bLoEUfOe9cj+8ViHgYhKzFi2t38Kk/blc5vcZNY4GfPKVyNtSqz/k7vtEeITDRmnYmR95QMsDL9bAm++U20G33U17b50uQj5so8x1a6wKuHkHDMPwPQcN0eqxttJj9lzyGjacWrZuo2XpPP1Gcu8RRjFvvUzZ27cQQkeoY4QoDDt9MotOZ2VSK9/2Wrm8g/so9Y/f5HbPp+dZDfNwqDLmKzL2EnFfXVwM9yhaRQ5e2bPPwBMiZHUGsVYJtiiHybvCe9kut/jnpbLamXfdaibC3n37zSIcQZpRs317hxNesI8XFEoBF6LpzTdMN8rnqI2aHtOkCeO0ptdv2CTXp1w0ia69+nIt3XQFoQxeevUtmTx50gX03NOPU8vKz/odt95I4ydfRkVFxbRyzTq6cca1Mt/howbPaGzfN/NOggAMoRb24TuvUbfQEBnK4fe/VhqFDZQZKt9MHwZ0CjD30tXn53UmwASYABNwHAHrVz+Oa6PBa7IWSqG60Amq427ubjR07FD5SopNosi9kXQy/SQViThCB3YckC/fDr4UNjCMgroFESY1g/kE+UgP2/y0qgnPVJ1Y5lSGTvDq4qVPNlqvrIpOFZQYpes34GGL+LyH9x+mrPQs/S5CvyDaBnYNNErnDSbABJgAE2ACTIAJMAEmUN8EIEYe+/pz2UzofY9o4i0SnFq3lt6uGWsNXqluwSEyn6W3/MiDMrldv4GWdmtpBTFH5Dpi3urFW5koLqyVIKoVECu5e3bJTd9xEzTxVu33GT1OCrjw3LVmagIzxOatzuARbMl8Ro8lEgKuqem9jTHZm89IkQ8mrv+jX3tRrqJO9N2SVYhJmGGIDQsbNWK4XNbXW2bWSenBifp79uhudzO4nzkQYYiF3KN7N6vlcDwqTmw7ETvY1CBOBwcZjtV0H7YPRRk+H9WJxKWlZSK3gZ2levRpiNmrxFN9ur3HpMqgTcSxhXWvJsTFV9/+IDnAkxhhH/TtI/7vZdMuJgix8YnHVPVSsMUGYtzC8vLy5RJxfyHewnJyc+XSr33VgwKZUPl2SjgLqc9Sn/BeIl6x4b5Xn4fXmQATYAJMoH4INAsBF+hMQynUNHSCwh/YLZDwKhZPNBFfNvZQrAwcD+F08+rNtMNlB117l+Epp2+IrywWuTKSpj43jZxaOqlqKP1oGmUnZctt7y7eWrrpikcHw4VJXmoe5afnk0cHD9Ms9OsXv8o+qB24cOnWu5uM09varbVK5iUTYAJMgAkwASbABJgAEzirBE5u2qDFou146VVmbbfy85dp1XnW5u7bI/NVN0mYr/C8RZxdhGY4cPo0db7uBvI+b4QIx+Bq1jYSpGer8G6Fdb72ernUv7l4+chN04nPVB5MSFaUECc3ESu3OivNzSHEtS0UE6UVJyVSaY7hfqCsoEAWRRxc5X2LBIjQXkPOoxwRQgGTlSkBV4V3QJ7uT8zBwqJBYPvuy08t7quPxCNHY7RqA7t00tarW0lLz5Aeo8iHcADWDMczdvQI2rBpq4jr+76I/ZpAU0XogF49elQrJkL8Vd7ItsRlTG52wWTr3q+mfbv8kin01OMPmSaTvcekCiboxFZboQkwadmi736UxeDtq0JWqHqwRB5YUVGRXGZkZmp8e1YK5LFx8XIfvJGVHYw0PKiwNonZm6/MU1l5yQSYABNgAmeZQLMRcMH13nvvpUcffVQitid0gq1z0UY87Rw8arB8nUg8QRG7IygzNVOGWFDlhlw3mLZ8uZkKswpp/Qf/0oSHJspdp4tP04qXV8j1dh3bUfcx1p9O+4YaRGBk3vDJf3TBgxPIzcs4thYmKIP5BfhRn8F9qFOw/RdLsiC/MQEmwASYABNgAkyACTCBeiCQd+igrBUTlCEkgqmVHDd4CLbrN8B0l7YN0VNNSObeyzAUXttpsuI/5VJKW/GHjF2buW61CH2wWuYIvmMmBd12D7l4GwRZVazgiEGwwrbP6PEqWVuWpCTLdbdQy16h+YcPaXkRc9eWJX2zUHjNvmCWBXFwywsLZbolgRpspIBb6YVcIYTpmDfmy/wI99C2q/V7CbPG6jlBDdM/b+hgIahWOa9U1yxCJ8DgUariwVorg9AHGMqfnpFJvyz9Xb4Qw/Wu226mS6dOtjpxWkpqqiZi2hKJ4+MTrTVtMb1XT8vnvSbHhIqjYw0PAjB5mIeH5TlUkC8hMQkLaYjni5c1a+9r+LyrviCURKtWrWT2o5UxcVWs4pycXM17Oiiws7UqOZ0JMAEmwAQaiECzEnDBGCJuTEzVk2FHcIdgitcpEYsIsXGV+XXvQIOvHUJ7ftlN6z9cT5ErxbAnEVbh+P4kKeoi34WPX0QtXVqqImZL9/buNPK2kbTlqy20/dvt8tXWt63M98DqB6mNZxsaNHIQhfYKJVcxXIaNCTABJsAEmAATYAJMgAk0FgLFxxJkV9xCu5p16YyYGFiFRvAIM56gSZ+58KhhUiykuVUjVrr4+NKQ75ZQ1sb10gs3fc3fUhxNXPgppa/6m0as3CDcWquGfSsBF+Krk4XYsGqCM6sCrgrtMGCQ1Ri06Hfq8iWaeBt0+z3UZcYt5ComcmtRKXLumn4Z5UXsJ4++5mEY3MMNnr05IhYvLPnHb6lYCN8QfkP/7wGZ1ljeDqkJzHqH1ahLR6MN92e9w3pp4eisVQARcsnir2nF6n+kJy7iuGLSLnjkxggR9IlH7rdYVAmkEIkx6Zk1Cxexezes+cPabrN0zDViyWpyTCiv8vethp06Dgi9M667ylLTWhp4wo4oviLsgbL9lSErunczfDdVvYiTrERelZeXTIAJMAEm0PAELP+3afh+1VsPEA8Xr/owCKhhA4wvVi576TLyCfahtW+ukfFwM2LSZdMQYa96/SrqMc52kH5kvmj2ZHIT+fcv2y/rgEcvDHGVYKZtykR+YwJMgAkwASbABJgAE2ACDUygKC5W9sC1gyFUgr472Tu2yhAGSDOdwEyfr6BSwEWIAksiqz6vWpdxYceMJ0zulfDZ+wQBF6InJv5q13+Qykb5lR7Crh3NR7CdzszQJl/zFbFwLZmaAM1zwGBLu7W0+I/fletdrr+Fuj/6tJaOlZLk41K8xbolD1yPsN7YJVkVxhyluA/fktvdH3uGnNt5ynVrbydSUqlcCOUwNzc38vWxHrrNWh01ScfEWDCIgDUx5bkL8dQeQ8g4xHnFC6EK5r/2Nu3YtYeWLv+THr5/psWJ2qIrPU7VpGnW2sF8Jo4QMGt6TCr+rTWPXtXfpOPJcjUkOJCuufIylWxzqUJb9OphuA8+mZ2tedsGBxk84yF+wxDb1pLl5xdQYWVIhpYiNKC1OLmWynIaE2ACTIAJ1J1AsxNw646sZjUg7u3YmWNp9F2j6WRCFhWeLCLvQG/y8BcTK+ie/tuqVdWBetiYABNgAkyACTABJsAEmMC5QqBFpVerEmFVv89UVFDStwvVJlnzcEWG/EMRMp9eeNUKVrMCL1WEToCACysX8U31lrd/r9zM3beL4BGsn/gs+Zcf5D7Ev20/4UJ9MW1dxb9t1b6Dlma6UpaXK8VjpHsPN0wgpc8To5u8zNIka3rv5X133yw9iuEx3Onq6fpqzNYRZu2q/92ipSO8wDNPPqJtO3oFAl+RmCcEpobu29uGir3aqwYTn6m64U179RWXSgEXafoJvVQeLGPjEuRm19AQuazvt5oe04GDkbJLmFTMlnXwM0wwFh0TRxXie2RPqIp9BwzfoR6Vk6MpFr2FYO7iYpAEEJYCZi0+8Iuvvik9npEHXszrVizDKhsTYAJMgAmcJQJOZ6mdZt8MRNj23fwoeFgwIe6tveJtswfHAJgAE2ACTIAJMAEmwATOWQJtuxo8/hDSoOSEwXMQ4m3cu69r3q3Ss7YyLqelA83dt1smW/JOVfnLS4rpyEtzyFQoxiRjcR+9I7NBzPXUed9iH7xyYYhBm/nvWrmON0wSFv/h23I7+K5ZRhOLaZnESgunlnIz7c9lpMJF6Pdj3al1Gy0pa+O/2nrFqVMilu1LIrTDXzIN/WsdYO4JjEnNMMkbTMUC7vnMC1b7JDOKt8RjSWpVLmvqFWtU2I4NvXC6/I8VhJiq9pjeG9RWbFp4qH656HvKOpltVG1qWrqY1GuxTBs98nyrgmZRsUFcjhL1lJYa5hAxqsiBG/Yek2pSeUljOzLqiBBmz6hdZks1wRliAH+2cBHl5BpzhrftW+99rIVk0Me2VZOTKY/c8MoQC2gk4pAhVIma5My0YSVII31Av+on7DMtz9tMgAkwASZQNwLsgVs3flyaCTABJsAEmAATYAJMgAkwASsEOl09g04s+Unu3XLhSPIach4VxcdqoROwo12/gVppeMHuu+N6qqicpBc7lJdr4ucfU8qyX7W8/T9aSC6eXnK7MPoIJS/+Rr7gndq2Ry8hdqbKycxUgfAX3xBiamu1aSb2HnzwblITkRXGGrwRO0+/kbrceJtWxnTFd9wEGf6g4GgUbZ0yTsalRZ7gO/6PQu4xxGJ1EuI08mX9t45O/LqYcnZtl/3L3b3DiIPnQCHSWhmhh4nMcvfuks23n3CR8OQdadoVs201cZXaoWKdqm1HL+GV2b9fH4In6R9/r5IvpMFen/88DR1sOM9xYpKwV996T2u+qHJYPhJeePkNcq702g7w70Dz5szW8u0T4RkWfPmNfCEObudOHSlKeI0eSzou82Ais8cemqXlN11BPFiEWdi1Zx+NmTSNggK7iFAJLjR50gS66frrTLPXaLu2x6QagfgNb1iI1F989a18KTH7wVn30LAhg1RW6te3N40dPUJ6wy767kchXv9IA/v3pTZt2ggv43g5uRsyq2OKEWkwfWzbqCNHtTSs5BcUUPKJFJlmyUM5IzNTC7mATOgrGxNgAkyACZxdAizgnl3e3BoTYAJMgAkwASbABJgAE2g2BNqJyb16Pfui9I7FQecI0RLWY/ZcSln6sxBRowgeuMpKUpIpu3KyLpWmlvCWVR6z8FZ10cd/FcJnu74DpJgK8VUJsCjrM3IMhc56mDwHDlFVyaXy1kX7ofc9QgfuvV0rh7AJAVf/j7o+8Jg20ZhR4cqNkLvvI2d3D0r9Y6kM9QBPXljrzoa4opXZKOz5V+nQEw/IY4MgjZerfwD1e38Bpf6+hDLWrhJCtvkEZqp8m6AQtUo9Hn9GW7e1EpeQaLS7W2iI0XZ9bLw871n6eckyWikmGIOHqAqp0KVzlWcxJtRS4QJM+6DiwCLdz9fXaLdnOw8h2gZIoTHiUJTwGI3S9l9x6VS69aYZ1FGIvtYM+8+Iv7Xr/pN1KOH3qsvdrBWxO722x6Rv4MW5T9PX3y6mf9ZvkNyUAO8jhGlTm/PUY7Tw6+/ox19+k7tUiARsIATDhRPGkwq1kJBo8DLXx7ZF+AWYCqlw7JhBBEfZ1mJeF1P7e2WVdzpE+csumWKahbeZABNgAkygngm0EBNhWR+fUc+Nc/VMgAkwASbABJgAE2ACTIAJ2Cawf/9+maF3b8NkVrZzN869Zfn5QrSMpRbOLuTes1e1w/9rexSluTkyVENZQb7wzvWk1mJyMmsTfUU985jw6P2F4GXb67n5IgZumRCUj5CTszO17S48DK14w9a2b2IGYipOSqRTGelC4O0i+2ZPXRWlpbTrukul2B18573U7eEn7SnWZPNAGM4Qr9OCi4+3NyEGriXRsckC0B1YsQgLgYnqcvPyyb2tm5xYDJ7IjrRTItTHlCuma2L8/HnP0MTxPDeLIxlzXUyACTABewiwB649lDgPE2ACTIAJMAEmwASYABNgArUm4OzhYRQqodYVVVMQIRVUWIVqslLewX0yi4qti1izar26srXaLwRheNLqvWntqSfu/TekeAuvYMTjbe4Gz1LlXdrcWSBsQreuofWKYY3wWFae1NOmXMTibb3S5sqZABNgAtYJsIBrnQ3vYQJMgAkwASbABJgAE2ACTKAJEigvLtLCJbj3Cm90R4iJ24qPJ4mJ1dZQ+so/Zf96zX1FhGtwb3R95Q41bQLffG+IYQ3R/JH7/69pHywfHRNgAkygERNgAbcRnxzuGhNgAkyACTABJsAEmAATYAKOJ4BJz5RhwrPGZhGPzBKTsBkmlULfwp5/hfwmTW5s3eT+NAMCX332AVWcqaBWYnI5V1fz+LjNAAEfIhNgAkygURBgAbdRnAbuBBNgAkyACTABJsAEmAATYAJni4BT69YUfMdMaikmIGvZpu6TWDmy32cqKqjjJVfIKtsEh5LX4GHkFtrVkU1wXUzAbgJtRWxdNibABJgAE2h4AjyJWcOfA+4BE2ACTIAJMAEmwASYABOwSqApTGJm9eB4BxNgAkyACTABJsAEmEC1BJwTExOrzcQZmAATYAJMgAkwASbABJgAE2ACTIAJMAEmwASYABNgAkzg7BNwOvtNcotMgAkwASbABJgAE2ACTIAJMAEmwASYABNgAkyACTABJmAPAY6Baw+lxp7nDFF5WblZL1u6tDRL4wTHEKgQscnKyyuMKnNyakEtWzJzIyi80ewIVJRV0Jkz4kdJZy3Ed8OpJT8v1CHhVSbABJgAE2ACTIAJMAEmwASYABNgAnYTYAHXblSNN+OJvcm04vEVZh28YcmN1NqrtVm6pYTCjEJaPnOZ3HXNN9dSq7atLGWrc9rhozF0+tRpWU94WE9ycTk3P4I/L/2dfl6y3IhHYJdO9N4b843S9Bu79+6n+a+/S57t2tFXn72n31Xv6489/TxlZWXTw/fdQ/379a739riBpk2g7FQZpUemyYPs0MefnF2rvsd/P/oXpUUY9ikKfa/pS8P/73y1We1y+6fbKXZNDIVf0ZsG3TSo2vycwZhAeXk5ff7VdzRl8kQKDuxivNPCVrl4IJWSkkonxMtFzDAd4N+BOnTwIycnFt0t4OIkJsAEmAATYAJMgAkwASbABJjAWSdQddd91pvmBh1FwNXDlToN6iSrKy0qpYwjGXL9DBl7wdlqD15zxTnFhnIV9pezVafpvoLCQnp6bpXAOWf2IzRoQD/TbOfEtr9fe+rXJ1z2NetkthQ+quu48tjNzcurLqvD90O8RbunS0sdXjdX2DAEtu/cTRu3bKduoSF05WVTz2onolcepS3vbyEXNxe64dcbjNr27dGelPc/fovwm2TikGuU39LG6YJT8veotJg/r5b4VJd2MjtHZvHybFddVjqefIJWrV1PpSa/DV1Dg+nCCeOpRYtqq+AMTIAJMAEmcBYIlOZkm7Xi1Lo1tWzdxiydE5gAE2ACTIAJMIGmR4Dda5rAOYVgMuXNqfI1cd6kWh1Ry1Ytyaerj3zV11Dn/QcijfoGj9Rz1S4YN5rmPfuEfP3vmisa/WF06xpCwUGB5ObGF/mN/mTZ2cHjJ1Jpy7addPhItJ0lHJMND3v2LzZ8dwfeOIha6rxv0cKI+0Zov0fdJnavVaPu/h7yt6itr1utyjfXQhBh4UUbGXVEIsjIzKKMzEyzcC+KT1xCIv25Yo0Ub/2Fx+15QwdRl84BcndcfCJFHTHUo/LzkgkwASbABBqGQOnJLNo4aqDZK+Hjmo3oOvLis7SuTzBFv/ZCwxwIt2qVQF5ePp0/brJ8JSQes5rPdMcPPy2RZW6/537TXXZvv/72B7KOdz/81O4ynLFmBBZ8+Y1k/Pz812tWkHMzASbABHQE2ANXB6M5r7oJoeTKz6+qVwQ7du+V9SOEALxBN2/dSXfccoPw8GIXr3oFLyp/9smH67sJrr+ZEIjfEE8IuQLrNbVXvRw1wiZw6AT70SIm9/6DkbR95x6jQmvXbdC2r7v6cvLx9tK2T506Rf/+t1lu9+zelS4YN0Z62w7o15e+/u5HKeomi4cEvcPq5xxrHeEVJsAEmiWBqDmPU7kYmRV8x0zy6NO/UTE4lZaqCZzh89+klm0a/mFiaX4e+U2arHHKWLtKrruH99HS7FnJ3bNLZnMLCrEnO+c5iwRi4+K11jp3MjxM1RJsrERGHZZ74ahRWzsQYXCyCezS2a4q5r/2NhUVFdON119L4b162lWmsWeq72OKiIySCOxl3Nh5nUv9+/GX3+hgxCEaNXI4TZ1cO2e3c+l4ua9NmwALuOfg+c08kUkuri7k6etZp94jjuXJuJNmdfj18iNMOqS3nMwcKjtdRu07tdcn271eVlZGu/bsk/nvvv0meuPdj6SICy8veIeaWrzwDCsoLCJcwHi4t6WYuASKOnyUnJ1bUs8e3SmsZ+08+0zb0W+npKZRfMIxSjqeTO3aeUiPVbRzNuJAIrwE2obBE66DCNFQV4uJjScIO3rrLLzr2rrZvhHB8R+JjqXMrJPUUsTA9BaiTw8h8NgTS1Pflq11fB4QDzn5RAphuHdb4RncpXMnCg0JIm+vKpHJVh012WfvMR1LSpafy84BHSlSfN4QF7Rf397i4rQHxcYn0L79EdS2bVsaOXyo/Izo+1DbYwJnfPY83N0pJDiQIKwdEm0fFecAbfUX7QcFGi6oE5OOEzw0YOgbLDs3lw5WXhTKBPEGQc7V1VVt2rXMz8mnorwi8g/yt5ofk5Pt+87wIGbAjAGE8C2OstykXDolQifoDQ+W3Du465PkelJ0EvkH+lOr1vUTq9uswUaesGnrdjoUdVT2Er+nseL3Ep8lv/btKfHYMUrPyBKfJePv/T4xIgIeu23E8NtxY0ZpoRKORMdo4RRS09Ib+ZFz95gAEzgXCSAUQMrSn2XXQ2Y+0OgOIf/QQUpf9Re1FP+DG0t4ArfgUOr33gLJ6nRGOikB16N33xrxc/H2Js9B4hpmwOAalePM9U/gaEysbKSXuPdAPHp7DcIULExcq9bWvDw9xRwZfahvb0N4OFv1wAnnj79XySy333K9raznzL76PiZcP0ccMgi4uEZnO7sE/lyxinBfPGTwgLPbMLfGBOqBAAu49QC1Pqo8VXyKkmKSKCM5gyrKK6hz1851FnCzE7Lpj/t+N+vujctuMhNmcjJyKDkumaIPRFOHzh2oS/cu5NrGfvEGglRxcYlsa8ig/sKrq6cUqRBGwZKAu3DRD3L/Df+7RniV7ZY/uvqOThfeZNMdFLqgtLSMFv+ylJb9sULfhFwfOKAvPXjvXXLiMbOdDkrARcPzwsMj8VgSdRLCIUIzOMKeePYFs2qefvwhGmrjn9cXX39Pf69aa1YOCfDgc0S4CAi3+ljIpo09OOtuGjd6hGlyrbdrckw//bqMtu4weKeoBn8UaZdNu5h+/2ulSqIVq9fS26++SC1bOsm0uhzT5q07aNH3PxE+a1dMm0LPv/yG1o5aeXneM/KhxeKfl9KOXQYBVe3DBcncl15Xm3L51ivPCzE82CjN0kZ5WTmlJKTIFyYXdPNwsyngJu88TjmJObKq3lfWzOvHUvv6tO2fbqOkbUn6JOo3vT+dd/d5RmnYOBZ9jI4dPUZt27WVv4V4sNRcPfkzs7I08fa6qy8Tv1WeUsDt3i2UuncNJfzeZp08Sa6tqsTu06dLae/+g5IrPnfqc5yWnkEbNm3VeCMfGxNgAkzA0QQKjho8BlFv266OfyBf1/7mHzYIYp4QORvhKDHVPwjMbQKr/1+v5zHoy8X6TV5vRARUSKw+4b3s7hUe6qdnZMr8Pbt3s7ucacYP33nNNMnqNq47ldXF61fV0RiW9X1McNSAxzKsezcWcM/mOS8pOaXpCD2Y/dlEz23VEwEWcOsJrCOqxdM6CLYQTovyi4yqbO3W2mi7Nhtt27fVhimX5JZQ1O+GJ4OW6nJ1c5XJEI9Tj6XKF8Sezt06k18n4bFbzQWuinc7ZNAAaiWEBDwBg6i7edsOKQxaahNp3//4q9yFSZrg4bj23w1SCP5pyXLhNTaSOorZ0utqb3/wqRSJUc+kC8ZKb9Ns4RW6XAh28Lh87e0Paf7cp6o9xtr0A96nz734moxbGdilE8175gny8qqbZ7XqB8RWzC4P+2WpuVCv8qklLhyVeDvy/GFCMOxBrVu7ikmOUmjNuvV0+vRplbVOy6Iiw2cZF30Ql3AOy4SQuHffAdopvLTf+2gBObdsSaNGnFendlC4LseEzxxizELUgniL8zNoQH+5nnT8BMUlJJC6EHDEMSUJ79/X3vlAHvOo88+jDh3aU2pquhSU1QRT+MyrC3QMmYfnLTy2L5wwzoiVj4+30bbpRm5WLh2PEWJslhBjz1TtbdPWdozkfd8bvOjDLg0neMc60rpe0I3ai3jeMIRpUEKxpTbgmVIqxMXCvEI6uu8oxRyIIb/OfvLBkiN+G1WbuDFKTbffCzU0GDfSZyi+BrHrOnboYObNrdq3Z4kwBzB4afsIzypMqgjDujJfHx+1KpcpaWnatvIEKS4uppWr18n0zp06Cu/4VHJ3d+w51hrlFSbABJodgfyoSCrLy5XHnfGPwXuvlY8v5ezeYcQCoikm5jI1lM3dv5fyIw/IXW279yLfsReQk+7hFHacShdCSXysGEnmRF7DzjethsqLCinv4H6Z3jqgE7UJChE/22coe8dWLe/JzRvkulMrV8revkVLdxIjWzwHDtG267JSJkIi5OzZSSXJxwketc4e7cgtJFQc0wRq4Wz79iwvwtB/z4FD5XHa6kfxsQQqSTlhlMXFy5vce1XjaSmYFEQfoextm6iFSyvyPm8Ete3WgwqORlGFcMhoExxCqEdZYWw0nc7MIDBt3bkL5UccpOxd26iVb3tqP36SUV5VRr/EhJoZlUIkRPOB/fvWy3W3vk1b6zk5uWL0Xzy183CXI/9s5T2ZnU0YUdhSXLuaTs6MkSwIcYBRVZhYtJe4th480HLIEBW/HnlQbv+BCMLIK4wKGyGuy/X/11V/0EdlpsIgrl8xAg2GEY0BHf1VVjmBqekoG4S4w4g7S3ZUjM7Jyy+Qu/7baPhOYITePtFHvWGC55qOANOXR5/wWcC9AUTPA8K7GI4+Y0aeL4Xqrdt3EpwPJonrXrSvN9w3YwTSkaPRIv5/lpy4GdfIA/v3E6Mqu+izynVHHBPmGTgaHSdeMXL0Khxxhg4eaHaulECMuUhwbIhxvGffQTHqroTGjBohRyGadbCWCXhAX15eTr3EiNXikhL5OcJ1qa3PEZrKLygQeSMl9ywxOtBdjIANCuxCuCd0tvGbhHt8sEfIrTZtWhNGM+7df4AyxTnAvR7uXXDvb2pgEnXkqMh/XDow4TxhJKYlOyDueTARNz6fLs4uImxYhNQRcK86bMhAs/oxHwReMIz2VIZrZDUiGGkhon/t2/uq3UZLfKdzxShHmEsrF7u8040q4A0mUE8EbF8h1FOjXK1tAsWFxVJcyTiRQWcqqtQV/Hh0DO5InUI6kXOrup86CDCDbzVciOan5NsUcAOCA8gvwI9OJJyg1MRUKZ5AVI7eF02xB2JlaAV45VoSgPCjDiEMNnhgP7kc0LcPfUu/iAuLE1Igwz9Ya/aOmGhBPeG99qrL6J77H5MiLn6AL5lykbVidqUfOHhIE2+feeIhIShWDa0YNWI43f/oU1IEhJfkaBE3x5GGf2xzhHiLCyzM+D736cfkMHpHtQGPWWWr166XoQHUtqXlb7//LZMHiCFUjz14r1GWG6ZfJUMdGCXWcgOxn5RHqb6Kiy+8gJ5+/mXJe8Xqfxwi4Nb2mJS3MT6nyiN29qMPiovfDpIjLl4R8kIJuI44JlxU4MLv7VcfkaKsYgMhza3ygc2I84aqZKm7QsANEjyvunyalm5tpUx4mp+Ir/r+qnwIEQIP1i7dxPfX3bqAmxaZRmkRBuGv79U1G7Kp2rK17D6pu7a7MLPQpoB73oXnkRoVABEaoULSkkT/xAvH0KVrF/LrUv2DJa1BKyt/CW/03Nw8K3vNky+a5CwvYtet32S+00qKp7ihm3HtlVb2Vp/cggzhblKE2H9KeFHD2xaGG0VrliweysDQdps2bSS/NSJeLi70caGdLn6Tkim12nAr1urndCbABJiAKYEDs+6gU2lVN9LYf1pMzLX39hlGWUdv3CPC4xgLuAgXcOjph2XMXH1mCIoIK+AWWiU6lRXka3UO+Pgr8h03QStSIX7jDtx3pxRl4b067Kc/5L6S1BStjJZZrGSuXytfKg3tDf/d8igllceeZezbr1Liwk8sZnX1D6DBi36y6Vmbd9DwMNWz/0CLdegT4z54i9L+Nn6I7z/tcurz+vv6bEbrpbk5tP/um0kJxWpnr7kvU8yb8+V56P/RQinMqn1H5j0txfigW++SArmpMN/98WcJ+6zZJwu+on/WG4RziFxr//oNOm6D2e59++mZufOl2Prxe+Yjo/QdWyhGry1Z9odRXghoi777kTBxlamNHzOK5orRdghhpAzemRCyYBB7X3njXbVLLsHkw3delyMY9TuiK8MuIPSahxCblUHofOb5+dLrE6ERXp73rNoll58tXERr/llvlDZ50gU0b85sozS18dhTczVPX5UGZ5f7Hn5SbcrlimU/1UnA/VGMiES8UlO7/JIp0plEebF+u/hnWvbzdyLMneFDArHujv97kNAnS3b7LTfQ3bffbLSrLseEcGeffP6Vxb6ikScffYCuvKzq2lyFx4Dg+P7HCwgj6pTBcWWsGHn46otzteNR+2q6hAj7fw88Jov9T1xbmrLE5+iT994UDxKqrrmR+aPPFtK3P/xssTl8tj55/035EMA0A+5lZz30hEz+/KN3hNPT+5q3q8o7Tdyrz5n9qNqUoeBee+t97fuu7RArOEc4V3oD67vve0QmPfbQLFq46Huz84z+6R+efCNGNi77w3Bfq69r9pwX9Jv06kvPEb6PluylV9+UIjH2QVhevOhzS9k4jQmcdQLOZ71FbtAiAYicEB9OxJ0gCLjKEIvW199Xerq6e1b9Y1b7z+YSonFQzyD5KsgtoOTYZMpKy5I3/+nH0wkvCLgI79AhsIP25BwXJMorDPE8YYjPiKd0CKuAJ4UXX1h1ga0/Jjz1U+It0t3FBTdE1k1btosYrQZPM33+mq7/LYbCw+DxqBdvkQYvtOHDhkiBd7fwDnWkgIsnzHNeeFVyQcyqZ594WIh01sUz9Ke+TT1dVUt9e/B4tCWy6/NWt+4nnnTiZcnGiqfQ8JpVXoWW8tQkTR2LWurL2jqmjpUPFHx9fbQi/sIjFqY4FFZ6EiPNUcd09203afWjXhg+h3UxCJ0Iv5KXnWfkbevh7SG/q74dLZ8L0zYP/nRAJoWOCyXPQE/T3Wd928vPi/BSowJSElOopLCEiguKZaiXmIgYah/QngJ7iN+aajyLrXXeU8TCromA20p8T2pq8Hipi3UK8JfF4aX91beL5Q0hbgoRV7udh4fFquHRA4NXOWybCFODm5/eYtgm4j3HxMbJ9Na6m0uZwG9MgAkwgdoQENe4gTfeJpwSymXp2Mrh2v5TLzPyBIU3Lbxy9Za48FOKffsVmdR+wkXkM3IM5R3YS6m/LyV4fR6aLR6+/yDEPuH9CENIhi7X30LHf1hE0a+/SD6jx4p94uFaeRlFPvmAJt4OXvSLEH4NQ85RtlulEAUP3uPff42qKPiuWeTsXnXt7RbSVabX9U15IAdcfg217d5TxtrN3bdbHhNE7sNzZ5PVUAeCZc6u7bILHn0MThG2+gOPXuVtm7DgQym+evS2Xq4UovodN0hPW5yLgCuvFezKKfmXHwgirTL3nuFqVe5Xgu2xrz8niNChs4TgXlxEqct+lUJ9zBsvUeBNt8lzoRXUrRyMPKRtwZNPCXNa4lleae1qEFfLxLHbMgiKEG9hM667Si4rhPMNxEGIqDA4nwQFBtLGzVtFGKw9tH7jZgoUItSse+6Q+/GGUV3KUB8ENniZJiQm0V8rVksh9rW33qOvxTnUj3pUYRcwXwMMbX/z/Y/06Rdfy20InxC9TGPq4r5HOSF8/d1iWT88fy0Z7lGvu/oKeb+H/R8v+FJmu3DieK0OJKANU69YmbEGbxidCcM90Q3/u5ZWrVknhe3lf66Q4vVo4YkLURxhIyBeKyESnpwQb7F9vnB2gEMEHkZjjoAjInTbl4L3eUMHS89u1F+XY0I79z86WxMqIQBCJIdDxD5xT4vza3o9GHX4CJoVXrcH5AufFVyjrf7nX+kQgvBVkSJGrjqPMnMt3uLiE7RSEG8RsnD82NEULa7rINjj8/rGOx/SF58YPyBQXtXTLr5QiJXBgr+bmPQrUoSM+0eyxgMFS2E2UK8yJd6CP8J4wYsX5eH5qwye7TNuvVueK5zj66dfI0N8/b1qjeSAcxsu+jxi+DBVRJsjBglvijl0wPr6666mBBF6EN8NGB6W6AVceEHjMwD7U+SBFqFYyMTKNzjqWDKM+lWfRezvHR5mKRunMYEGIcACboNgN28UEwjFHjQEr8fexh7bEWJyr8G95D9AeApDeMZwZojPMQdjZCxNCESwXXsMQ718xbBuNasq/snhHyn+YWDmdGsCLrwLTc3byyAeFYinjHW1xGMGIQOhHI7rhlioetMzMuSq/h+i2leX5VPPzdc8Yh8SMV8bWrzFsYweNVwO18dQGISNOH/YYBmnCV6njp7IDZ6C/23aIobOiGFO4iIMT4xh6sk64gI7wmp7TGqoj6tr1ZAfxUBdBJeIhw96q+sx4YFG/36GC3B9vXVdj9wpZhaudOTHpF/wpg8ICaCWYkJAey07PpsSNyfK7IhL25jMScQh7hTaSb4g4CLkTHpyuhR2EYIGv0uDxg6qVZdrO1PtzDtvqVV7tSmEoV8TLxhL23bsokIx8SO8aGE//LRUeozDoxaTkyjDTYsSpf18feUQUYxE8BdD+hC2BPvVAxTsZ2MCTIAJ1JmAcKUMuv0eWU1ZvrjerRRwg26fSR7hlm+gkbkw5qgm3vZ69kXqPKPSg04sO0+/kXbfcJX0Es2POCAm5ar6nQ8RnngQcIsS4ihl2RIpQh6e86Q28deATxcZtevawZ+C77xX9i9r43pNwO0qPNkQisHR1mP2XBHeYbjRBGk4HvceYRTz1stSZIbgDOHZ1IqPH9M8kd1tsFPlOl5qGOFxRggSirtHmPVrjZh3XtXEWwjjKsau/yVX0s5rpspq4b2MUAnKio8Zrg+w3a7vABr4xXcyJAS2PcL7UuTj92NVhLdINyonE8UbrvlUHFekQcBpaMM1GQwPiW2Z8hqGl+JIIYrC/lq5WhNvF33+kSYyQsiFl6Pydpx5560y7ALKYBi+MohXb7z8vDZsHfdC8PaEEIm495igVJkKuwBnEFwDvPjKm1JAxH4It9dceZnKarS8+KKJchtClRJkrYVPgGB844xrZX48HFb5bxJpmFjaUQavZQyVh70w5ynpOOMk2oa3MIThBcLDEw4Z8KzE50WFiUN+xPz/8ZvPhYNQEDY1Q7+nXTVD3l/gIQFCc8Dqckw4fhUSAaImxEJl8HrFfZS631Xpat4B3O99+en7Wj+nCsH08mtvlNkQ3qquAm50TNXnCMLyfDGHBkJ7wEIFGwikmEwN3zm9A8HD98+UYeIQOk8ZRvd1E1w//PQLGXYA50fVpfLo20PYsYWfvEd9eleJnffec7tgX3W/9N5Hn0nxFqEZvvj4XS2E2E3XX0cPPf6MvJb9WYRJ1Au4epEY36GH7/8/7b7UVYxOXrr8LxHCJEF1SS7x8EPZ+g2b5OqUiybRtbrRqWq/paVydFD74DnNxgQaCwHzK4PG0rNm3g+ETsAPJW6m9U9aGxsW9K+irMIo1INpH9WkUF3FEz0lDCCPil+LWJ64IIB3ram1Ex5wpuZceUGr/8dtmseebfBF+AJlmETMmjl6Mh+9QPnlNz/Qk4/c3+DneYiIyQWPZ4S7wMRxeMHgcXr99KtppLigVJMdWeNkTzpiW8154TVNwFZllEe22nbEsrbHpDx21fGqC3n0CfF5YXqvDEcckz42mWygHt7U7wpCDrQUf/bawV8OyqydBnUiv15+9hY76/lwXPheK8G6rh3A9764pGpERHX1KY/XPCFQ2GtuIoSBeihgbxnTfD2EpwPCsCCm2pp//tN2I6zC8j9WEm4o1MOIEjEUTRlGQMD7Fh67kyeOo5ZCqMBwOGV19f5W9fCSCTABJqAIFEQfVqs2JzCD12fUc4ahuZ6DhEedEDj1hli58PSExyqEWr2AC8/R7o8+LcXQuHdfo7z9uyll+a+yOMRbr8HD9FUZredHRchtbxE/15Z4C4H1TDXinlaxEKGcdCM0fMeM13bpV+AtTELAtWWIJQyTImrHKhHVVhnsK4yL0bK496wSWLREsXIqLZVSlv4sk8JfflsTb5EA0RdcEfYCsXfFRavMhzfExVUW/srbmniLNHgYK3O2cJ2PfRkZWTLWpsqHUF6ONNyrQKi011qK+4zWIt4xrLSsVCv23eJfxDXyDoLnqRoe/+tvv8v9mHQZ4hb+h77zwScyDUPBlYeoqgQPXCHgwjAaTwl9iNsKg8D30tynNfEWaZg3RBnmRlACLpweVNgFxAW97Z775TbqeOuVF2iQlVi7qi4s9fc+yiNXv990PTYuXksyFUu1HWJFux7TJ9pYx3WQiteLbBgBCVPXUwjvgGtzeBgrsd+vvY/Mgzf9aE0tUawgTBTq+ve/TTJ2rn6fWrf3mJD/oIjJ+8ffq2TRNwVjvXir6jMd0YnPhHJQeWjWPZp4i/y4x8L5wn63Nm6qCsIE2/ZezMLBRAmrcIyBoU6E6VDpSBs2ZJAW0iNNfPb0Aq5eMEVeZfCmhYBrzfBQQdmbr8wzE/TVZxV54GgAj1zY4w/fp4m3MkG8wZkLeQ5XfhdUOuILw/CQ5L6Zd2riLdJU3GdLegH2g6PypO1uJb4z8pnaSRHWDiKzsvAwFnAVC142PAEWcBv+HMgetPMWge2FRysmFoLHWFFBkfTIjY2IJW8/4bkqwhJ4+lZ5UTV0tzEJEkIoZGdmG/1/gWeZvE1mAABAAElEQVQuJjZT3rcInYAg4DBMUIWXJYMHGMRDc6u6QDTfV7cU5VGJWu6feQddMG503SqsQekJoi14IL8qYgDt2LWXVoohQlMqn4bXoBqHZoXXKWLfJl6ZRBtFiApMHIAnzBC53xETvUEcwtP2utr7n3whxVtctNx9+01ySIua8ABtPj//jbo2oZWv6zGp+KJahVZWHHFMHu5VwzStNFOr5AEjB8gQCifTT8rY1fiNwQte/vBcxeRfth4SFaQVUPQqw5C2AddX3UTUqjP1UAixfVMSUuTEiqdLTmstwDPXv4u/nNhMS6zhyp8rVokbhSpBs7riUyZPlA/d1GRg1eXHfnwPMGFeXQ3iq2/lxGVXXzFNXrT+/tcq6ZGbmJSkTX6n9xyHeAu7+KIJ4mLfcONwIsUQ5xg3U/oQInXtH5dnAkyACYBAwRGD2OfRuy9hUjBrlrt/jxBe98rdPiNGU9aGdWZZXTy9pIBbJiYmMzWEUUj67iu5/8SSn+Tuvm9/TNbEU1VeTZLWrpr4sntumU65e3epYjaXEJpHrdum5UGM2ZTffqFCMUlYcVIileaIa2lhZZWjkZDfkvct8sDbGOY9fJRc2vtWcNQgnEOEdREvS3bi18UyuU2XIBmqwiiPEGxdOwZIAbedSegGJSpDREcIC70p71wIzs7tPPW7tHUMt/75O4OoqSU6cAVzZtz/yGy7a5z37JNisqRuMr98KCzW4F2ohKwunTtJARfCkhKwpk6+UOb/U3jfKrEO4eI2bak678gAAVIZHqIqw0RnMAxhb9u2SshDmv760E23Ty88vvvhp8gqzV7xFpmVJyk8XO2ZRFl5XEKYVqPVDK0avyNkwRdff2ecaGNr2c/fan2BKOriYpAoFF/lmZqSmiprgUDZ3mSUEM7zZhEyAZNWISyUOneYswKmHIfkhu7N3mNCkR9//U2WxGfW3smW9R6kE4SArzeEY1CfFxXWCiOpLph8uT6bzXWEyXjq8YdknkOVn6PLL5lqFGMZO/UiJ4RtveHzjVADsfEJlCwcbZSjEby6YRBP9WKwKqtCn8AztjpvbDwAgeGzhri2pt+NDOFdDjONYxx5yPDduGTqZLP4yuoBRrfQEBQ1M9y7KoOXtr0Gsbs+f5Ps7QfnYwKWCBgJuFu3biW8YCNGjJAvfaG67tfXxevmBBCvEa/TYng5BBbElMVMm9np2fKFIc8dunSQYq5rG8sXvboH4lRWUmbeSB1SThWfMgxPruyXqkr1C5OYtdINOcd+xPpRBg8xU8MMo7iA2bl7rxUB17SE47YhWuGJLZ4+Z4uYPLU1JX6pf8D21DNLDClBOQzR/nvVWvr8q+9E7Mme4qlsoD3F6zUPmKgn2fAsXbjoBzHbZyRhYqYbhCeuXviuaUdOigsVdbH48H33iH/2hgtkVY96qo5tR3qfnwvHhHjX9WHuXu4UPjTcECtWTECIiQjxXcaDouj90RRzIIZ8/H0MD168PMy6ELnU4I3k26M9dRrU2Wy/rQT1e1RaVGorW4334bORlZJFyfHJVJBTYFQex4sJ2eyN7WtU2GSjQrRTIxP50bea2JkzFTXJbjNvZuUEZt5eXtJTpb3wTsnMPEmF4oGgMr0HLtIQYgEiMgx9PyiG1sEw67P6bZMJ/MYEmAATcAABJUC261c17NhStUroxb54MdTWlkGUNDUnMbKg/fiJlPyTQUTCJFodJk8zzWa2nbvHIMq6h1n3AoV3sL3iLRrwHGTwJsR60jcLKVpMzmtqEDjLxWg0mK2wEoiVC7NnAjOZsfKt4MghueY5WHjPWrG8SMM1e4fJU4WAbD5KpygxXpY0Dd2gRO/2Yyea1VxwOFKm2fJ6Nivk4AQl0NlbLTz11FByNQJv6e9/asVxLQtb/udKuUR8WDWB2OHDBg9I7HhOzHVhy9RkoxCz1LXxhPHGAh/Kw1NXmYrrie1o4WRhyeDlaI/3raGOOFmFtVigpvUrD88+Ima+LUNMWnsNYiyuQ1QsYcQ4hUHsVveRuEeCKU4Y0q6uUeDhOnvOizI0gMxk5c2ax7C9x4RqVczhKy4V3xF1kWulPZWMSelgg4VHtOlo05i4qnOIBwOw+ErHJ7lhx5uKXQzhV4nVEy8YY1ZSf4+lF7MRK1f/AEAVVJ7B2LYkzupDn1wwzrw9VQ+WOJeHDhviAEOgRYxoa6b3fNV70EJUNTXlXWupf8irxHN4uqvvqGkdvM0EzjUCmoB7/PhxTbzFQUCshYirrK77VT28rJ4ARNCufbrK18m0k1LMRYxciLnwNMMrtHeo9J4zra21V9UTtcwjmeTR0VyQMS1jzzZi3MZHVf2TQRl42UIogfhjzeBdCsM/rWeffNgs25Jlf9L3Py2hHULAxfAmNXTdLGM9JXQXIgUEXMRjveLSKbUSJ1XAfngb46LORzxZrM7UP314tOLpZdLxE/Tmex/Tmy8/r100VlfH2diPiwk8VYWAi3/UGJJdl2HVem8DNaRbfxzrN2zWb9bLelM5prbigheWnWvfwwcZK7ariBUrXhBvk6KTCL8vUgxNzaIs8cKkYH3Oq7ppLcktoYhfDQLugBkDxJDJmp0St/ZtZYGUfSdqVrCa3NtXbzcaCoeHSP6BwttW/B65uLpUU9r+3ZdcfJEI72IsENsq7e3lLRldc+UltrIZ7fNwr/1vNG76lPc6Ks0UE0b4iFjj+B0tE/8vcnPzZVs+vqJflYYLcmXwoMGkZcriEhIpP99wvIMH9lPJvGQCTIAJOIxA3sF9si544NoyJfTCY9Z3nLkwqC/rObBKIFXpCAWgxFuklSQnqV1WlwgPgBfM3UacWIib4/fYL1C1EP+jYKnLl2jiLWICd5lxi/RqVaEadk2/TMb09ehrOdY8wjaoycLsmcBMNlr5ln9wv1zz6GO5buwsijUMVXYNMH9YWxQfpwnMalI0WaF48AdvaZgl4TkvwtAuYuM2lE2/5goRC/ZSu5uHZ+nJ7GyZH16cJSWnxMRgP8nJkxBG66R4WAqnDSU4Xn1FVd37xcRPsGuvulw4Q1QNwZaJJm8+Pob7J0xUpiywUsRT21gqARD3Gwh5pEyFXcA24t0iTNZb739Mv/+1UkyodjWFhgSprFaXh6IMolqYnUPElYenEg2tVfzaS3OFaGffA2rcE+EVVTmBWc9K7+cTKSmyely3qDBjmLgM1qdyUimcmyeeeV4Ok4eX6JynHqN+fXpr91IIB/fgY0/LMtZ42HtM8EaFdy9MObrIjWreVEgA1Wd9dnVuIVorD1fEgN6w5g99Npvr6t5ZL/x2DggwK6MeZICTCt0FJyIl3iJeMGImd/DzE/fDhgv+20VYDoikluJSx8YlaG2AuS2D57RydEK8XXWslspgbgdl+hAfph60+G6qmMmmDkGqvAq/0FcXl1ft4yUTOFcJaAJuUlLVPw91MBBtu3Qx/POp635VJy9rRgDiKF6lIhYjQhakHhNDQsSNuX6osL5GJ2cn8unqQyfjTlLU8kNy3REzxsMrGAahpGNQR+mt5yICh9uyouJiGcgdeSDgWjLEuYKAC2EPT0D79Qm3lK3e0hCg/Z/1G6WAukhcnMHDVD8kCDF716z7j4YO6k99rfRN/zR86fI/CReK+uFOtjoPEfORB/6PHn5ijhzus1AMOYJ3bkMYgsbjiXbfPmGakA1xb5MIpwBDrKT2vtbFenv63MGv6p8yuN5+8/WyLbTz2+9/a3GK7KnLnjxN8ZjUcftVXuDAGwETJuC7pC7iVB5rS4RPCBsSJi/2U5OEV654QFNSVGL2uxL1e+VQ1wAPCh4dbK06q+k+oQbhMD8ln46uOErdL+xO+I2qq6lhcQg9A89/7w5VAmVd69aXhweO8sLRp1e3bjqsr7r8tdlfWlpKX31rmHUXnjDu7m1l7D18LlLFyIa9ByJEGIVSebPXqWNHrYl2Hu3khTv24XcX3z3cOMEzQ8XPxSQfKp6vVpBXmAATYAJ1JFBeXESFsQYPRSMR0EK9hfEGMdH7/NFC6LzZQg7rSemr/qKoOY/LDD4jx9DJLRvlpGYIq+AW2s1qQb3Xr1twiNV82GEr/IO1gsqTGP1AjF69lSQfl+It0iwJoUgvSqhypLDlIYy8ejsjhLTsnYah/JhUzJJBHMYEaTBnCw8W0/5aphVDiAVlxaLfynO4ba8wlawtc/bslOvW+gvnDYzGU+YjQgGZhhBQ+2q7hFhkSzCyVG9rV4NQiv+VK1avleLTLTf8j1avXSedTtTkZRhGr4RaeECq4d8Ii9a7Gi9V1a7yEsS2cgpR+7BUMVcnmHg5qrALd4hYuxDeTp8+Td8u/ln+P//si6/p1Zee01djtq73cO3Vo7vZftMEvYdndfFy7b0eVW3gWkR5aCI8AUx52/btHa55uyrPXiXY4fpXeWFicjC9+Ic6/vl3AxYiVmqo0QNvmSjeanJMmEBOmX5uDJVmbblPXI/BVJ/1+ZTA2Fs3cR+uyfT3ovr8ttb1nyNP3eS1qswffxs8xseNGaWSaGFlmAs46yC+rN7wvVRse/Uw/91U4jP6rkJe6Mvr1zGiUxk81nGM9lhMbJzMZsmDVh8z2VTcVXVr/a/BJGR48KD3VvYU8/GYhpxQ9fOSCTQEAU3ADQwMNPLAhXCrxFt0rK77G+LgmlKbEEtDwkPkKzsj2+aFyOBbh9Da59ZQyv4U+vXWX6hNpVfu2NnjqMswgyBfdqqMVj6xQkOkH+K86smVYrIFg8iCH9hp714iRWSv9iI+kvDQs9cQ6F1Zv76WhVmEVVCTVyF20dkWcPFE92Yx8+U3YlbYP/5eTRs2bZP/5DHrabKIn4QYSjBL/7jUsWEI1KVTL5Ll/171jwiJ8I8WGP6Dt182Gy6jyqllsAiSftdtN8owChCTIcSNHjlc7a7V8uMFX9HxyqfEqEDFMoJAvPT3v7Q6Z95xiwjSbvC02Lpjt4jttEz2HcOnIVxh1lTlNXvrTf8TFz+ttLK1WcETX0xEsGrtv5LT5q07CU9F40WMIrCGSKz6Wpv6Tcs0xWNSx4gLWl/hbQnP7/mvvyu/R3hqDkMsY3s8pRG2ISA4QL6KC4qpILfK27S0uJQO/mwYTgnvW3jw1tQCzxdx9CofKG18cwPhhd8jbyHsTnlzqlbd4T+iKGat4WYdiXgABYtZFU3pkVU3duGXhVO3id0pNDyUOnTuQM6ttH9hMn9zelM3ifiO4oXvFm40YSpmHNKmXjzJ6MIa18y4kYGnC2KH4TvfWnj0YEILGGKwDREPrNiYABNgAo4moOKhol63EHNBQN9ea+EFihi4iBNbE8v6bx1FPHKvLBJ0y13UXcxsvve2/0kBM+btV6n/B59brQ6TocHgHWwtBq3VwtXsKMvL1QRSS/FrY3STl7n3tHzNXHI8SWvFxYJAo+00WSmpFGaRbG0CMxyvCuMAL9+Ol16p1XIqPY2OffOF3PYacp5ReIXCygnMLE2qhgnmlLjr3rOXVp9+Bf+L7pr1sJY095knGnxOCHRGXe+WCoH5q29+kP83MVfH7r37pEirJi+DGKUM3rFq2Hm8GNFir4Cr96RNPHZcTkqq6kSIORXnU9+WPuyC8o6E6HePuK5/8dW3aP3GzTKkAK4VrZnycMV+JZpay4v042K0oLKgaryLVT57l7gHUB6anSq9R49Wetuq40NduN6BqcmrlKAL71pT8RbiKLyRYZa8X5Fek2PST8i1Y+cecf9inS3qhuWIEH3qek312bDH8B5x6LBcqU4Q15extm78OUoivccxQlGo8ArKGx0jrpRH8RARd9jUPhRzliiz1HfVXniY5e+2Koulnh3aVOEi9HksrR8R5xBm6bukPIrx0MPSgw+UUx66ehZIt2Wo95a7ZmlZEF8YcYbZmEBjIaDdkUOsve6667TYt1jXW1336+vi9boRwKRm7XzaWa0keFQwTXrhQurQu4PMU5xTTHhVlJZrZc6Un6G0iDTtpQQTZMg4kqGlpx40CJhorybiLerZd8AwjAiiXBcRe8aSIZ4qJvOCqXALWFdxVtUQDqRpVvnQDpP2OMIQOmGemKkTnrQQD/E0F5Ot4WIC4vIFY0cZzRhqqc2br59OmIFWBaBHPXjhibIyFePU0lNbzLypZi19W0wYpuJrqbI1XSaIsBCI06ReqjwmJFNpWJYIbwFlEG2UgIp/9Fu27ZTiLfoLz+Sxo85XWeu0vOWG6TSpMog/GG3etkOyxsRuTz56v1a3vU9ntQIWVmp6TOocmS71Vat+QeRXVpdjqqqvZp9n3Fy8NPcpumzaxfK8QWjHUCO8ynSzJqs+Vrds495GTmim8kUL8RQPdiC4dp9UvWeGKqdfguPUt6dRzym9qK2fIZwCfosQmkFvmChN/3ukHighrz69KLNIFsPka81ZvAUEPzEEDg+Oeof3FDctYpRGpXgL0dbfvwMNFt/nG2dcIy6aq7zeFfPRwmNICfy5uXmaeNu/b28xC/BEKQarvLxkAkyACTiKQLlusjE1tN5a3coLNWXZL5S24g+q0F2vwFs0a+N6inz8fsK6MniZ7r/3NrnZ6erpUrwVrl6GpUjNXLeacio9UVUZ/bK8IF9u5h8SIxiyDQ8S9fvrsu7Uuo1WPGvjv9p6BeKfvvESwWsYJoXQgE7afv1KC5eqh5YnfllM5SXF+t1W19UEZqjb1b+j1XyeAwzX42l/L6eTWzeJUToVVHwsgQ7Mul0TYtv1Mw6FkH/Y4KxhKcZtwWHDKB55TDqvXX0H9F6DSLfmSacvczbWlccuxDd4490mRozhek2NsMGDUsTqHDbEwEz1SYl6ny1cJAVU/aRlGIKPiaI++myhyi6XapImbMDbV40yguD25LPzZJ6JIjau8vRFghLjsK4X1y4Wnr8qhqhegEM+U1MerhCd9QKbaT61XSxGVipT4Q7Udl2Xajg+Rmyqez/VhvJczcjM1ERe5XyCkBYw8FBiJLYRGkIfZ9VayIeaHBM4wRMUhsmn9cP7cb+3cfNWmjf/dblfvelj3Ko+q335YtJC1eceIu5yXS2yMhwG6vl75RrtcwTv18eeMnhjjx55vhb+QT/CbKu451MGT+73P14gRqhukEk4bjVXgsqDpWoP4biqM3XNiXzvfPCJGPmabFQE96eLvvtRzguj36G1YcFDXAn81uI3q+8R6kM9+u+ivg3T9cb6m2TaT95uvgRaJCQkVClMzZcDHzkTkAQKxAQSGDKCMBUYfuInhJGaDgM6l1HiAgRxNHHBimFtikFthvJUxwHibVpahvQODOzSud44N8Vjqo5tXfdXlFXQj9MXywc/w+4+j/pPZ4/MujKt7/KIoYcbCgylrG4om+pLoYjhhxuiVpWir6Meiqn6eckEmIDjCOTk5MjKevfu7bhKz3JNpTnZtHFUlacXJh9r1d7gbDDo6x/JxdNL61GZEDe2TRmrxaTFDt9xE6hcpOeLibHg2Ymh/CNWbZRl8g7spV0zrpDrHS6+hPq8/p6RF23kEw9Q2l/LpXft0J/+IBV3VhaofDu5ZQPtu+smLQn1t3RrS22Cgqjfewu09NquQFyGhzDMLaQrte3Ri3KFt6uKu4t0n1HjaOCCb7BqZhCVt0werYmpyABxFDb6v13Uso2bXE/9cxkl//itXMdbyYlkgjcszHPQULnEW4eLplDgzXdq29nbt9De22do22oFbShP2t6vvUcdLzFwxn51TCEzH6Cu9z+qishlwoIPKe69N8h7+Ega9OVio31q45U33hWTga1Qm7Rx7Z+N5iHihClXSMEQoh1mpIeou0r8n5370muyv7Mfe1DMnzFV6ztW4Bxx6933aWnwDMToQghUanQMwrc98cgDMg+utUdPnKblxwpilCJkmRr+DUeX1+bPNYp/CyH4JeFpC3Ft3YplRuUxn8TsOS/ItHdef4lGDB8m19H3JSLUmzKEW1JDxdXEYdh3wdjRIobuVSqbtsR1++RLr9W2cWwYCQb7+N03qJ0Yal5b+0IM5f/iq2/pphnX0ayZd8hqFP+fvl0oxeut23eKkHPPyljECz58W+aBUHu7+Owpg0CZl58vPS/BUR3fF5+8a9FjtqbHtGHTVhlzV7UHz2WImzhXuHeadvGFMg6v2r/45yX03kcLZNvog972H4yge+4zfGfq+rnHQ/wxk4znX8D5QSzciMrJaRHq4L23XjEK8/fo7Dm0eesO2S0I/xiBiZAPymsYO84/byi9+8Z8fdfl9wLnB/bVgg/kRNxGGSxs/CJC9SFGszJ4xXbu1El6mCsv8xefe4ounDheZoEAO2qC4fv1gRg9YTqJ2X0PP0kYvTvzzlvp1pvMf7dQiYrhKysUb8rT/MFZ95jVp/K8/vYHhJCIyv5dtdzou6fSeckEGoqAU0M1zO0ygcZIALODYhhLmJjYJ6CjGKLtXOXt0Bj76+g+wbsAHnt42o3hKnhiWh/iLfoNb1+0ExoSXK+cm+IxOfq8m9aXsDFeirdID5sWZrqbtxshAcRm8xThXOwVb3EImAgvJChQjj5g8bYRnlTuEhNoYgRcxESPg77+iTAxGURBCJcFYgh+cfIxcmnnaXS0zu7uNPibX2VetQPiJ4b3Q0yEKNjtkdlyF7xE9955g1xH3b1fecdIvMWOrg88LvfDuzZz3Rq5bvrmM3Ishc17VYq82IeYsOifo8IphD3/KnkPM4xmQriGjDUrqIVLK+r3/gLymzRZdqddP+sPTF28fWjw1z9TwBXXasItWDi7t9PEW1SSvX0z5e7dpb2UeIt9+nQn0bbewBRCtYpxi3PUYfI0GvDRl1o2z/4DtXWsaJOjhfcxSseGCn9hawIzNSkV8sOTD6NIGovhngAG71vlkYuJQmEQTieL0XOmhvsHiE3KCxZCGEQ/Jd5CnLr8kirRF3NtKEM51AvREYIg1jFB2hsvP28mIMXGxctiA/qZxzQeO3qkZIkMn37xtcyHN4hdGFKuXkrcxD6VhmUrK3Oc4Lr9YyHIQxBG33Bs8OLFiEUPD3dUU2uLEcPWYcrbFs4kKqSCGt0YF58o8yDuvzLcq2CIu7JNW7bJY5koRvrNe/ZJlUzdQkO0df1KTY9p7OgRBJFRDdnH8UMABQt8fqdNuUhfPcXEJchtSyEAlBe1Iz73+onwIKhCvEaflHgLD+733jQWb9Gxpx57SJunBiLqv/9tIhdx74tJ6MaPGSX7rg9hIRPEmxJcsR0aHKySbS6vFhMJPv7wffKzg4w4fpwv1AWemPhvqC6UQ2plaC/khbBsaipmco/KSe9M92P7xblPi9Fqk7U2cb7wsjbhOD5zK9f8o1WFBwr6iQO1HbzCBBqQAHvgNiB8bpoJMAEm0BgJVJRX0BnhhUsiBEJLl5aNsYvcJxMCiL2tQr6Y7OJNJsAEmgCBpuCBW9vTAM9diKkIowAR09U/QIiWdROMatuXOpcTI52KkxLpVEY6te7chVp3tBwuoc7t1LEChHZwEjFVEYICYSyinnmM2nbrQcN/X1vHmptHcQzXzhIPKFJT06niTIXwVPWRnprVCdSYQEkJlV1DQ7RwAs2DWu2PEuEpENIAobsg1taX84nqIbxDIYCnZ2RIcR9euPaEoVDlHb38e9VaeuHlN2SIhyWLv5Yh/I4lJVOheMCD8Ay2PncYqYhQDhDNMTeMpXAJjuxvaWmZ8EhPFyPAsuQIMF/hbY45PFToDEe2VdO6fln6O7313keyGLx1v/rsA5vsalo/52cCjiDQvNwLHUGM62ACTIAJNHECcsKyWkxa1sSxNOrDGzl8KDnr4iM26s5y55gAE2ACNSAAz128moQJQbRNUIh8NabjQbxbEfRW8zZ2cnWV3SsvLqKET96X6/5TL29MXW7UfYEYBUGvpqIe5gBRw7wb9QE2ss61betmcaKr+uomPLIhduLVGAwTtsGUpy9GH+pjJtvqI/JiUjF7JxazVZc9+zBS7Gy2Z0+fkAei/Lc//KRlf/G5p1m81WjwSmMiwAJuYzob3BcmwASYABNgArUg4OVlPPy4FlVwESbABJgAE2imBAqORNH+u2+ioNtniji5Q0Q8Ym85gVnch29J72fE7A285Y5mSocPmwk0bgIqXnJYzx6Nu6ONuHcbN2/TYiY/8cj9IsRfUCPuLXetORNgAbc5n30+dibABJgAE2ACTIAJMAEmwASaNYECMTEcYhLHvGk8WRGguPcMpz5vvG8UZ7dZw+KDZwKNiAA8RxG7GKZiCDei7p0zXRk1Yjit+WuJ7K+Kf33OdJ472qwIsIDbrE43HywTYAJMgAkwASbABJgAE2ACTKCKgO+4iXLyt7zIA3Q6M0OEUmhJbsGh5N4rnNpfcKHcrsrNa0yACTQWAqdOnSZMtgVjD9zanxWEdnBxOUdjq9f+sLnkOUiAJzE7B08ad5kJMAEmwASYABNgAkyg+RBozpOYNZ+zzEfKBJgAE2ACTIAJMAHrBJyDg4Ot7+U9TIAJMAEmwASYABNgAkyACTQoASXgNmgnuHEmwASYABNgAkyACTCBBiPg1GAtc8NMgAkwASbABJgAE2ACTIAJMAEmwASYABNgAkyACTABJmCTAAu4NvHwTibABJgAE2ACTIAJMAEmwASYABNgAkyACTABJsAEmEDDEWABt+HYc8tMgAkwASbABJgAE2ACTIAJMAEmwASYABNgAkyACTABmwRYwLWJh3cyASbABJgAE2ACTIAJMAEmwASYABNgAkyACTABJsAEGo6Ac8M1zS3XF4HdR3dQxZkzFNqxK7X39KuvZrheJsAEmAATYAJMgAkwgUZKYNOmTbRixQpydnYmb29vGjNmDA0ZMqSR9pa7xQSYABNgAkyACTABJmCLAHvg2qJzDu6rqKigBz64mx768B7admjTOXgE3GVHEvhq5QKa8+XjtCVyoyOr5bqYABNgAkyACTCBRk7g1KlT1KpVKyorK6OMjAxaunQpJSQkNPJec/eYABNgAkyACTABJsAELBFgAdcSFU5jAk2EwP7YPbRu7xpKSj/WRI6ID4MJMAEmwASYABOwh8DEiRNp7ty59MADD2jZExMTtXVeYQJMgAkwASbABJgAEzh3CLTYt2/fmXOnu9xTJsAEmAATYAJMgAkwASbQPAn07t27Vgc+b948On36NE2bNo1GjhxZqzq4EBNgAkyACTABJsAEmEDDEWAP3IZjzy0zASbABJgAE2ACTIAJMIF6JQDhFi+Ynx/PjVCvsLlyJsAEmAATYAJMgAnUEwHnAQMG1FPVXC0TaDoECgoKGuXBuLu7N8p+caeYABNgAkyACTABxxHYv39/rSs7ceKEVrZz587aOq8wASbABJgAE2ACTIAJnDsE2AP33DlX3FMmwASYABNgAkyACTABJlAjAsePH5f5MaGZm5tbjcpyZibABJgAE2ACTIAJMIHGQYAF3MZxHrgXTIAJMAEmwASYABNgAkzA4QTS09NlnV5eXg6vmytkAkyACTABJsAEmAATODsEWMA9O5y5FSbABJgAE2ACTIAJMAEmcNYJuLq6yjYh5BYVFZ319rlBJsAEmAATYAJMgAkwgboTYAG37gy5BibABJgAE2ACTIAJMAEm0CgJDBo0iJycDJf8r7zyCn3yySe0e/fuRtlX7hQTYAJMgAkwASbABJiAZQIs4FrmwqlMgAkwASbABJgAE2ACTOCcJ+Di4kKenp7yOCoqKggxcfPz88/54+IDYAJMgAkwASbABJhAcyLg3JwOlo+VCTABJsAEmAATYAJMgAk0FwIImfD+++8ThFtfX18aN26cXPr7+zcXBHycTIAJMAEmwASYABNoEgRYwG0Sp5EPggkwASbABJgAE2ACTIAJGBPYsmWLFG+dnZ1p1qxZpOLhGufiLSbABJgAE2ACTIAJMIHGToBDKDT2M8T9YwJMgAkwASbABJgAE2ACtSBw6NAhWQpxcFm8rQVALsIEmAATYAJMgAkwgUZCgAXcRnIiuBtMgAkwASbABJgAE2ACTMBRBBA2IS0tTVbXo0cPR1XL9TABJsAEmAATYAJMgAk0AAEWcBsAOjfJBJgAE2ACTIAJMAEmwATqk4ASb9FGly5d6rMprpsJMAEmwASYABNgAkygngmwgFvPgLl6JsAEmAATYAJMgAkwASZwtgkkJCTIJhH/1tPT82w3z+0xASbABJgAE2ACTIAJOJBArSYxO7bnGGXFZZJ3kA+FnBfiwO44tqoDy/dTeWk5hY7oSl6dvRxbuZ21Hf33CBVmFVKnvp3IP6yjnaXqN1vs5ljKS8mljr0DKEC8mrLFb4unnOPZ1L67HwUODGyQQ42NS6Cj0THk7uFOY0aer/Vh/YbNVFxcTIMH9id//w5aOq8wASbABJgAE2ACTKCuBCIiImQVYWFhda2KyzMBJsAEmAATYAJMgAk0MIFaCbgRf0XQtkVbKWxSeI0E3OSDyZR+NJ08/D2o++ju9X7ovz76q2zjhgU3NJiAu3HBRkrcmUgXPDCh0Qi4a99aQ8kHkmnSo5OavIC7eeFmgog+6o5RDSbg7t67jz767Evq1jXESMCd+9Jr8vP5ygvPsoBb778G3AATYAJMgAkwgaZP4NixY1RSUkIxMTGkPHAHDx7c9A+cj5AJMAEmwASYABNgAk2cwP+zdx9wUlVnH8cfem8L0nuVJt2Ciih2Y0GxG+zdaDSvpmjUGDXRJGo09hp7i70rWEAF6QiCSu+CIL0u8M7/LOdyd3ZmdrbOzO7vfD67t51777nfC1OePfc5hQrgFtZkxoff2RcPfWEdDuhQKgHcwraT/RBAAAEEEEAAAQQQyCSB1atX28MPP5yryX369LEuXbrkWscCAggggAACCCCAQOYJlGoAN/N4aDECJSfw1xv/aDt27rCuXTqX3Ek4MgIIIIAAAgiUC4EdO3aYArbVqlWzWrVqWZs2baxDhw7l4tq5SAQQQAABBBBAoKwLEMAt63eY60tbgUEH7Je2baNhCCCAAAIIIJBZAllZWTZs2LDMajStRQABBBBAAAEEEEhKoMgB3HXL19moh0fZ9yNn2i8Lf7EGrRpYmwFtbchvh1i95jkj3k58ZYJp4Kwl05e6Ri2atMhe+e3Lbn7I1YdaVpssm/TqRJs1epZ1PLBTJLfunvb1U1/b/G/m2ZJpSyKDbTW1ToM62QEXHWgVK1W0b9/51mZ+MsPmfD3HHaNJ5ya2z/B9rethXZO66FRVWvrdUhv/4jhbNGWxrZq30g1s1rJPK+t/Wn9r0LJBzGZtXL3RvnlmrC2K5KxdPHWRVapSyVr3bW1tIoPH9T+1v1uOtaMsv/tgus0fv8BWzFpue3RsbD2O7m77np03aPjRHR/amsigZo07NbaDLh8c63A28ZWJkXs4y2rUq2G/+suxMeuUxsrCepRG2wp6jr//89+2detWO3XYUOvSuWNBd6c+AggggAACCCCAAAIIIIAAAggggEA5EChSAHdlJAh572H/ti0btgRUCuLqR/luL3v3cheYnDtmrgu6+kqqryCsysDI4FIqS2csc+u2Z++w0Y+OdkFHtyHyS4OA6Sd763a36rP7PvWb3FSBXP0MveNE63NSn1zb0mVh6ttT7dN7R+Zqztyxc00/CtCe/uAZ1n5g+1zbdc0vXvGCbVi5Idf6ae9NM/1Mfm2SnXLvqbmCvzu274ic51P7/P7Pcu2jIO6n9y63CS9PsO3bchx9hZ07dgb3Y++z9nFBWr9N0507d9rIf4+wtcvW2sBzB4Y3lep8YTxKtYEFPNn7H41wexx6yEEF3JPqCCCAAAIIIIAAAggggAACCCCAAALlRaBIAVwFBVX2iwT1uh3Rzc1Pe/dbGxsJSCpI+9XjX9oxN/3K+p8+wDpGetBOjAQPFbBs2K6RDb5isKsf3fNUvUZVDr7yYOt0UGcXPFQPUQXvfOC2Ve9WdvBvD7H6zevbT98vszf+8IY732f/+TRtA7gr5/7srktW6mFctWZVWzB+vr1/2/uu7U8Nf9Ku/eo6q9O4jqu3fsV6e/z0x9y8fh3++yOsQyTAu21ztk19a4p989w3kR65i+35S563S9+81PVMVr0pb0wJgrct9mphB1x4gDVqv4fp/Lov8o8ufU/ua19G7pXKzI9nWJ9huUcr1nkUvFXpNbS3m5b2r8J6lHY7OR8CCCCAAAIIIIAAAggggAACCCCAAALFKVCkAK4acuSfjrSB5+X0otVym/5tbPkPy12gcF4k6OrXaf2KH3PW129Rz3od38tti/UruiftiXeeZHcffJerqhQN5zxzrlWpUcUtN2rfyNb/vMHe/cs7rufvtk3bgm2xjp3KdUddf5QLdvs2tOjZwqWbeOiEB92qLx783AW8tfDpfbt761746kWmoLUvrfu1dikRdM0/zVwWCehOtd6RwGr21mwbcfcnrlqz7s2dU7Va1dxyky5NrMuQPe3Fy1906S78sTRVegUdc8GEBTb59cl5ArjTI719VZrs2dSadWvm5kv7V2E8SruNnA8BBBBAAAEEEEAAAQQQQAABBBBAAIHiFqhYlAMqOKhH7qNLz2P3cqtWR1IpFLTUbVrXBSPD+ylo60ufk/rmCdAqOOmLgpjpWGo1rOXy9Ea3rXmP5tb35H5utXrIqihlwbjnx7l5bQsHb93KyK8BZwxwgVctq0euinLs+p6ygy4dZD546zZGfil/7qG/O9Qv5prufcbeblk9dNcsWRNsU0qGyW9MdssDIj2pU1EK65GKtnJOBBBAAAEEEEAAAQQQQAABBBBAAAEEilOgSAHcJns2scpV83birVGveqHb2LxHC6tQsUKe/X0wskHL+nm2VapaKc+6dFvR/cjuQZqD6LbtOaRLsGr9z+tN6QJ86XxQJz+ba6rB3Py25ZGezSq/zF8V1Omwf4dgPjyjYLeC5NGl6+HdgoDvtPdzetyqzsKJC4McvD2P6Rm9W6ksF9ajVBrHSRBAAAEEEEAAAQQQQAABBBBAAAEEEChBgSIFcGs2qBWzaRoUq8RKhbzB3RI7VzEeuE6TvEFTf/iaWbsd1fvV96LV9joxgq1+v/q7eiarvgYmW7N0d8/Z6nXiB9Hrt8gbBFdKin6n5PQEnvjKRH+KyGBpOYPN7XXcXlajfo1gfWnOFNajNNvIuRBAAAEEEEAAAQQQQAABBBBAAAEEECgJgSIFcEuiQWX1mJtWb4p7acrb60uNejWsWu2cvLVat2X9Fr8pz3TTLxvdOvVOVnqEWg1rB3Wyt8RPJbFpzeagXnhGg5mpaHA65dbdnr3dJr+Wkz5BqStSVQrrkar2cl4EEEAAAQQQQAABBBBAAAEEEEAAAQSKS4AAbnFJ5nOchRMXxK2x5NvFwba6zepaOOfv0ulLg23RM4u/XeJWKZWFSlabLDfVr6UzYu+nQLICtLFK485N3GBm2vbtu9Ns3th5tmXDFpdyod2+7WLtUirrCutRKo3jJAgggAACCCCAAAIIIIAAAggggAACCJSgQN4EtiV4svJ86IWTF9qCCQuCAKm32LZ5m419NmfwMg1W5nMKtxnQxuaPm29fPPC59T+tv6lnbrgsmrLIvh85061qO6Ctmzbds2lQZfQjo+30B04Plv3MN89/42djTgdEBjNTOye8PN7WLV/r6vQ/bUDc/L0xD1LMK9W7uDAexdwMDocAAggggAACCKRU4Lvvvkvp+Tk5AggggAACCCCAQGoESrUHbuVqOfHiFbNW2KoFq2zTmk22Y/uO1Fx5Cs76zHlP249f/Bhc89qf1tpzFz4b5Lw9+LeHBK06/PdHuHn1gH1q+FO2YvYKt7xz506bNXqWPXfRs25Z6RP2v/AAN1+9bnUbcvUQNz/jo+/srRvedMZaoTQNY58ZayPu+sRtj/er267BzDas3GCT/jfJVet1Qq941UttfWE8Sq1xnAgBBBBAAAEEEEAAAQQQQAABBBBAAIESEijVHrhZrXMe8degVPcccre7pItfv8Ra9GxRQpeXXodVMFZBXJVaDWuZgqS+9D25n3U8oKNfNPXGPfjKg+3Tez+1pdOX2H1H3Ov2yd6c7dIa+Ion/uPEXL1z9z1nP5vz1RybO3aujX9xvPupGxkILTwQmN831lSDmfWNDGb29ZNfuc0dDuhgDVo2iFW1VNcV1qNUG8nJEEAAAQQQQACBEhTo0KFDCR6dQyOAAAIIIIAAAgikq0CheuBWqlyo3az70T1MA2Wp16gvlSpXcrOFPaY/jp9WjNG2ipUK115/zKJM/fUN/s3BdtQNRwfX7oO3yu96/G3H2wl/OyHPaQ6+8hAb/tTZ1mRXagTtoyCwigKrV350lXWN9JgNF9kO/+/ZduAlg1zAV9t88LZhu0Z2zjPnWou9EgfMex2/u8dt32H9wodP6XxhPHyDK0bSMKSqVK5cxZ26SpWcaXQ7KlVKXdui28IyAggggAACCCCAAAIIIIAAAggggEB6CVSIPJK/M72aVLZbo5QRq+attE3rNlujSEA1OrdtvKtXrtyVc1ea0lBosLJkg9Lrlq9zAdyG7Rpa9TrV4x0+1/rp70+zl37zkgs2Xzfm96ZeuelWCutR2OtYv359YXct0f1q165dosfn4AgggAACCCCQeoEpU6a4RtADN/X3ghYggAACCCCAAAKpECjVFAqpuMB0O6cCr4067FHgZlWpXsWadt09SFmyB6jTuI7ppyBlzNNjXPU+w/qmZfBWjSusR0EcqIsAAggggAACCCCAAAIIIIAAAggggECqBQjgpvoOpMn5l0xbYpWrVrLpH0y3+ePmu1btO3zfNGkdzUAAAQQQQAABBBBAAAEEEEAAAQQQQKB8ChDALZ/3Pc9Vf/Kvj23WqFnB+n3P3s+laghWMIMAAggggAACCCCAAAIIIIAAAggggAACpS5AALfUydPzhBpMTQOgVatTzXqf0NsGX3lwejaUViGAAAIIIIAAAggggAACCCCAAAIIIFCOBBjErBzdbC618AIMYlZ4O/ZEAAEEEEAAgaIJMIhZ0fzYGwEEEEAAAQQQyHSBipl+AbQfAQQQQAABBBBAAAEEEEAAAQQQQAABBBAoqwIEcMvqneW6EEAAAQQQQAABBBBAAAEEEEAAAQQQQCDjBQjgZvwt5AIQQAABBBBAAAEEEEAAAQQQQAABBBBAoKwKEMAtq3eW60IAAQQQQAABBBBAAAEEEEAAAQQQQACBjBeonPFXwAUggAACCCCAAAIIIIBALgENwPrll1+6dT169LAWLVrk2l6Qhc2bN9vnn3/udtl3332tXr16Bdm9WOtOmzbNFi9ebK1bt7auXbsW67ELcrCdO3fayJEjLTs72wYMGGBZWVlJ7z5p0iSbMWOGrV271rp06WIHH3xw0vuW+Yo7zbZv257nMitVrZRnHSsQQAABBBAoTwIEcMvT3eZaEUAAAQQQQAABBMqFwOrVq+3555931zp8+PAiBXA3bdoUHKt9+/YpDeC+8sorNm/ePNt///1zBXDHjBnjAqIdO3Y0tbGki4LaTz/9tDuNguPJBnBffPFFe//994PmLViwgABuoGE2/5t59tLFL4XW5Mxe8elvrGaDmnnWswIBBBBAAIHyIkAAt7zcaa4TAQQQQAABBBBAAIEyKvDyyy/bypUr7aijjiqVAG5hGLds2WIfffSR21UB3379+lnt2rULc6gyu0/1ujWszd5t3PVt3bDVlk5fmnOtkZ65FAQQQAABBMqzAAHc8nz3uXYEEEAAAQQQQAABBDJI4OSTT7ZVq1ZZq1atMqjVOU2dNWuWbd+ekx7gyiuvtHbt2mXcNZR0g5t0bWKnPnKaO826ZWvtwSMfLOlTcnwEEEAAAQQyQqDC5MmT+XtmRtwqGokAAggggAACCCCAAAIIIIAAAggggAAC5U2gYnm7YK4XAQQQQAABBBBAAAEEEEAAAQQQQAABBBDIFIEK69atowduptwt2okAAggggAACCCCAAAIIIIAAAggggAAC5UqAHrjl6nZzsQgggAACCCCAAAIIIIAAAggggAACCCCQSQIEcDPpbtFWBBBAAAEEEEAAAQQQQAABBBBAAAEEEChXAgRwy9Xt5mIRQAABBBBAAAEEEEAAAQQQQAABBBBAIJMECOBm0t2irQgggAACCCCAAAIIIIAAAggggAACCCBQrgQI4Jar283FIoAAAggggAACCCCAAAIIIIAAAggggEAmCRDAzaS7RVsRQAABBBBAAAEEEEAAAQQQQAABBBBAoFwJEMAtV7ebi0UAAQQQQAABBBBAAAEEEEAAAQQQQACBTBIggJtJd4u2IoAAAggggAACCCCAAAIIIIAAAggggEC5EiCAW65uNxeLAAIIIIAAAggggAACCCCAAAIIIIAAApkkQAA3k+4WbUUAAQQQQAABBBBAAAEEEEAAAQQQQACBciVAALdc3W4uFgEEEEAAAQQQQAABBBBAAAEEEEAAAQQySYAAbibdLdqKAAIIIIAAAggggAACCCCAAAIIIIAAAuVKgABuubrdXCwCCCCAAAIIIIAAAggggAACCCCAAAIIZJJA5VQ0dsSIETZy5Ehr166d+xkyZEgqmsE5EUAAAQQQQAABBBBAAAEEEEAAAQQQQACBtBYo9QCuD95KZe7cue5H8wRxpUBBAAEEEEAAAQQQQAABBBBAAAEEEEAAAQR2C5R6AFc9b6OL1mVaAHfLli32ww8/2I8//mgzZ860RYsWWdOmTa1Vq1Y2YMAA69GjR/Rlltnljz/+2LKzs61v377WpEmTMnudXBgCCCCAAAIIIIAAAggggAACCCCAQPkReOyxx1zMUlkEClLUaVWdWC+44IKC7Ba3boV169btjLu1BDZcf/31eY4qhOK6oDwHL4EV8+bNsz//+c+2cOHCuEfv37+/XXXVVS6gG7dSGdkwePBgdyW33367DRw4sIxcFZeBAAIIIIAAAggggAACCCCAAAIIIFBeBRS8VSBWRXHLZIO42kf7qhRXzLPUBzE75JBD3AWEfyULEN4nVfOKnp9zzjlB8LZz5842bNgwu+aaa2z48OHWvHlz17Tx48fblVdeaStWrEhVUzkvAggggAACCCCAAAIIIIAAAggggAACCBRQIBy81a7Ry/EOFw7eqk70crz98ltf6gFcpUoIB3E1nynpExYvXmx//etfnWnNmjXtrrvuskceecSuuOIKO+644+y8886zZ555xi699FJX55dffrGbbropv3vAdgQQQAABBBBAAAEEEEAAAQQQQAABBBBIE4FYscr8grjxgrWxjlXQyyz1HLhqoBpeHI0v6MUWtb7v/qzj3H///TG7TleqVMlOPfVU++mnn+y1116z7777zuXHbdmyZVFPz/4IIIAAAggggAACCCCAAAIIIIAAAgggUMICPvVBOBaoU2o5VjqFeMHbWHUL0/SUBHAL09BU76PByj799FPXjKFDh8YM3obbqDoK4KqMHj3aTjvttPBmGzNmjH355ZcuwLt06VJr3769de3a1Q4//HDr1KlTrroKAr/66qvWuHFju+iii+ydd94xpWjQj8pee+1lZ555pvXs2TPXfloYN26cvfvuu27AtSVLltgee+xhbdu2dedR72cFnKPLnDlz7IMPPnCDs82aNcuaNWtme+65p+233352wAEHRFdPuKx8wW+//bZNnz7dFixYYN27d3eDnR100EFBuomEB2AjAggggAACCCCAAAIIIIAAAggggAACpSyQbBC3pIO3uuxSH8SslK2L7XRvvPGG3XPPPe54zz//fFLBx+3bt9vOnTutYsWK7kc7b9682R544AF766234rZNuXNPPPHEYPsXX3xhN954oxsQrV+/fqa2xCq33HKLDRo0KNikdA6PP/54sBw9c/TRR9u1115rFSpUCDa9+eabdvfddwfL0TPaR+2rXr16sCneIGYKHP/jH/8I6oVnlILiP//5jwtch9czjwACCCCAAAIIIIAAAggggAACCCCAQLoIJArQqo3RvXS1rrh63upYKvTAzXHI9/fChQtdHQUe/UBl+e0Uq3fr008/HQRvfc9Z9azVP4YHH3zQDXp27733ut620b1d1Qb9DBgwwE455RSrX7++68n7wgsv2MaNG+3RRx8NArirVq0Kgrf77LOPnXXWWa737fLly+25556zsWPH2nvvvWcKyPbo0cNditb54G2DBg3ssssus44dO5r20TkmT57s9qlVq5ZdfvnlCS9/6tSpQfBW51daiaysLNcTWNep/MDKHawgc8OGDRMei40IIIAAAggggAACCCCAAAIIIIAAAgikQiBRT9xY7Snu4K3OkZIA7ogRI2zkyJEuDYEQMiEfrh7/V2ndurWbFuaXUiWo967K/vvvb+ox64O8clBgVgOhrVixwvXSVeCzSpUquU41cOBAu/XWW4MevUq3oF6+TzzxhAvurlu3zurUqWMzZswI9lPahQ4dOrjlpk2bWrdu3ezkk092QdQpU6a4AK56C6tHrIqCt//973+tbt26bllt69+/vzuv0ki88sordvzxx1u8vL46lgZ4UznwwAPddfpevkrf0LdvXxs+fLgLOn/44Yd2xhlnuLr8QgABBBBAAAEEEEAAAQQQQAABBBBAIN0E4gVxo9tZEsFbnaNi9IlKetkHb3Ue9TpVIFfr0r2oR6uKeuAWtijnrS/qweqDt36dAq++Z6vy1SrvbnQ555xzguCt3xZOm+Db2aZNG7/ZBXcVFPalcuXK9tBDD9mTTz5pRxxxhFs9e/ZsFwDWgnre+uCt30dtveSSS/yijRo1KpiPnpk/f74p962K/uH64K1bEfnVqFGjIGj7+uuv+9VMEUAAAQQQQAABBBBAAAEEEEAAAQQQSEsBH8SN17iSCt7qfKXeA1cB2+iideneC1dpExTkXLZsWXTzk15etGiRq9uqVau4aRjUO9WXxYsXu96yflnTcGDWr69du7afNfV+VVHvWPW01QBoChzrRwOR6fhK3aABz5o0aRLsp4CxL8qzG6uovnryysFfS6x6Pt2EtilFgnIARxffo1mBZaV/KEpgPPrYLCOAAAIIIIAAAggggAACCCCAAAIIIFBWBEo9gBsLThHsdC8Kuqoo0KkgaXTv2Vjt1wBeK1eutK5du9rZZ58dBH+VxiBeUc9XBTMV1AwHVX39atWq+dl8p0pj8NRTT7mcuzrezJkz3Y9P46C8tOeff75VrVrV5bn1B1Su2nhFDuHeurHqKfDsyyeffOJn407XrFlDADeuDhsQQAABBBBAAAEEEEAAAQQQQAABBFItEG8wM98uDWZWUr1wSz2Ae8ghh7i0Cf7iNM2EAG544DL1Zg2nLQhfi59XLtp3333XLXbv3t1NfVoCbYtXtm7d6oK32q5ByopSqlev7tIe6B+PeuIq3+2kSZNs4sSJ7rAvvfSSy4P7pz/9ycK9eBP1iPUpGhIFecPb/vCHPyS8BKVXUM5dCgIIIIAAAggggAACCCCAAAIIIIAAAukokF/w1re5pIK4pR7A9akSfCoFBXT9On+x6Tjdd999g2apB2t+AdxwvtvevXu7fX0vXvWE3bx5synAGl30D8KXeIOE+e2JpmvXrjUFW2vUqOFSJShtgn5+/etfu/QHN9xwg8tT+9FHH9k111xjLVq0CA43Z84cN7BZsGLXjILLs2bNckuxUjn4+uGB3jQQW6wArYLYSkeh3r+xHPyxmCKAAAIIIIAAAggggAACCCCAAAIIIJAqgXjBW3WYVFHQNlxKIoibNzlp+IwlNK+A7W233eZ+MiF4KwYNvHX66ac7EQVgH330UduxY0dMoZ9//tnuvfdet03Byy5durj5Hj16BPX/97//BfPhGQ0s5kvHjh39bIGnr732mmnAs//7v//Ls68CwyeddFKwfv369da+fftgWWkXYpU33ngj6B3sexXHqte2bdsgJUK8QcruvPNOu/DCC+2mm26KdQjWIYAAAggggAACUXmGtgAAQABJREFUCCCAAAIIIIAAAgggkFKBRMFbZRSIN7CZgrjhTppFvYiUBHCL2uhU7a+csX6wreeee85uueUWmzFjhqlnqoqm6nmrwKTSEKjceOONrpep5vv06WMDBgzQrAsAK4XBtm3b3LJ6pCqoOWbMGLes3LT16tVz84X5pUHKVDSg2COPPGKbNm0KDvPLL7/YiBEj3PIee+zhgtN16tSxiy++2K0bP3683X777eZTPWRnZ5sCwg888IDbrh7Fe++9d3C86BkZqaevytNPP23PPvus63GsZR1TQd1Ro0Zp0Y488kg35RcCCCCAAAIIIIAAAggggAACCCCAAALpIpBf8Na3szSCuBUiAbWd/oRM8xfQAF0Kymogr3BRjtzoQccUyD3zzDPD1Uz7X3vttbnqRu/bt29fF0D1qQW++OILd04d6LPPPst1PC2ox++wYcPc+ieeeML1ptVAa9dff30QENZG9YzVegV1fVFbjjnmGLe4ZcsWU2qFcePG+c0W3TYFfP/1r39ZOE3C4MGDXX0FfQcOHOjmlSLiuuuus6lTpwbH0r4rVqwIltUjWccqyMBswc7MIIAAAggggAACCCCAAAIIIIAAAgggUAICyQZvw6cuzD7h/RPN0wM3kU6MbcoVe//999spp5zigpu+Sjh4q1yzjz/+eJ7grepqf3WjPu6444LevH5fBTjVC/af//xnrrywlSsXPFVxpUqVXHoCBZB9r+F58+YFwdvOnTvbzTffHARv1TYFUu+44w674oorTG1R8W3TMRToVYqHcPDWVdr1S+f0RcHnu+++284777wgB244eHvGGWfY3//+d4K3HowpAggggAACCCCAAAIIIIAAAggggEBaCPgn18ONUc5b9baNV+L1xI11rHjHiLc+JT1w1XANYqYL00+m5MGNhaiUABr0S4OGqbeqfjRwWLJFvWcV2FReWqUxKImiFAg6jwY1U5A2KysrCKomOp+ubdGiRS7Fgg/oJqqfaNuaNWtcMFhpIXSsKlWqJKrONgQQ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"/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><g id="Default"><use fill="#000" filter="url(#filter-3)" xlink:href="#path-2"/><path fill="#FFF" stroke="#7E7C7B" d="M65.5 422.775l15.69 16.01h-6.488c.886 1.695 3.06 5.91 4.01 8.24.318.776-.979 2.324-.979 2.324h0l-2.42.151-4.2-8.574-5.613 5.727v-23.878z"/></g></g></g></svg> \ No newline at end of file diff --git a/2-ui/1-document/02-dom-nodes/elk.svg b/2-ui/1-document/02-dom-nodes/elk.svg index 448eea9d1..1797a099f 100644 --- a/2-ui/1-document/02-dom-nodes/elk.svg +++ b/2-ui/1-document/02-dom-nodes/elk.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="698" height="249" viewBox="0 0 698 249"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="rect-1" d="M0 0h698v249H0z"/></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="Bitmap"><image width="698" height="249" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABXQAAAHyCAYAAABLU0YUAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAFdKADAAQAAAABAAAB8gAAAABJCifOAABAAElEQVR4AeydB7wVxdmHBwRBQRBRBKlKR6yIvaDGWGM3GhNN7C3GWBITyycx0cQYYzQmRmPsGjXR2EuwG1GxUFS6CCqCWOmClO8+g+9x7t7d08+9p/zf3++cPWfL7Oyzs7Mz/3lnptn8+fNXOpkIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiEDZE2he9jFUBEVABERABERABERABERABERABERABERABERABERABDwBCbpKCCIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQIQQk6FbIjVI0RUAEREAEREAEREAEREAEREAEREAEREAEREAERECCrtKACIiACIiACIiACIiACIiACIiACIiACIiACIiACFQIAQm6FXKjFE0REAEREAEREAEREAEREAEREAEREAEREAEREAERkKCrNCACIiACIiACIiACIiACIiACIiACIiACIiACIiACFUJAgm6F3ChFUwREQAREQAREQAREQAREQAREQAREQAREQAREQARaCEFuBN599103bdo09/TTT+d2YIa9N9xwQ7f77rs7lqWwSZMm+WD79+9fiuAVpgiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQBMRkO7TROCb6LTy0M0R/FNPPVV0MZcomFCcY3S0uwiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQA0RkIdujjcb4RW75JJLcjwy/e7nn3++F4rx0pWJgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQBwBeejGUdE6ERABERABERABERABERABERABERABERABERABEShDAkX10C32cAQ2nuzxxx9fhugUJREQAREQAREQAREQAREQAREQAREQAREQAREQgTgC6ITW072U80bFnbva1xXNQ/eGG24o+tiy3HQ+JACZCIiACIiACIiACIiACIiACIiACIiACIiACIhA+RNAz3v66ae9rsdvdEPpe8W7b0Xz0OXmYBpbtng3p1ZC+u9//+uWL1+e9eXSqrP66qu70aNHu9mzZ7uePXu6QYMGZX28dqx+AkuWLHHvvPOOmzZtml/OmTPHdezY0XXp0sVtscUWbsCAAdUP4esrfPbZZ92yZcvcpptu6jp16lQz1510oZ9//rl75pln3MyZMx3pokWLFp4L+ciwYcPcmmuumXSo1lcpgRUrVqQapNu3b++GDh2a9krff/99xwzCrVu3djvuuGPafat54/Tp093UqVNd27Zt3bbbblvNl5q6NvKOpPJKs2bN3DrrrOPWX399/67hf2PZuHHjfJqcP3++69Onj9t5550b69Q6TxUSCNP5Rhtt5PhkMspdL7zwQmq3jTfe2D8HqRX6UbUE7J3IBdK7tnfv3mVzrXPnznWvvvqqjw/5IvVH7H//+5/78ssvy65snBRfH2l9iUCFEqgW8RYhOh/vYnNQLdWoA0UTdCs0fSnaTUyAitGll16aUyy23357/0K+++673csvv+wOP/zwmhV0EeqefPJJz2+bbbZxHTp0yIllNe783nvvuT/96U9u4cKF9S7vk08+8RVeBM6uXbu6Y4891nXr1q3ePtX455///Ke/rHbt2tW0oLty5Up3xx131Ktw2v3+8MMP3ZgxY9xDDz3kvvvd77pdd93VNmlZAwS++uor969//St1pW3atEn7TqEiSD7SqlWrggVd8qWxY8f6c1NIrCQj3o8++qhDBK8FQRfh/6677srqFq277rruuOOOy0oIyyrANDv9+9//diNGjEjtgbgiQTeFQz/yIBCm886dO7tf/epXGUNBNAvzUfJHGtFl1U+AspU5duE48Otf/7psLpqGe0uX1JNM0L3tttt8HJuibEzd7bnnnvPnHzJkiFt77bVTvJLim9pBP0SgSghYnlEpl4OYS5xZIsza0LCZ4m/HsJ8dm+mYXLdL0M2VmPYvGQHEyO7du2cMf7XVVsu4T63ssHTpUve73/3OX+4111xT84Lu888/70U7u/+kqb59+7oNNtjAffbZZ76VfvHixd47E27Dhw93VLxl1U+ACqp5D1HR3Hrrrb3AvWjRIi/0481tgs16663nBg8eXP1QdIWxBChw/fa3v/WCbewORVxJA9Q999zjQ9xtt91cY3p1FvEyai6oli1bem9cu3AajPCO5f2CIdRffvnlvsG6lA2teEWa5wvn2Xzzzb3HtMVLSxEolAA94fgg7KYzvHpltUfg008/TYm5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CIiACIiACIiACIiACIiACIiACIhALRGQoFtLd1vXKgIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiUNEEJOhW9O1T5EVABERABERABERABERABERABERABERABERABGqJgATdWrrbulYREAEREAEREAEREAEREAEREAEREAEREAEREIGKJiBBt6JvnyIvAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQSwQk6NbS3da1ioAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIVDSBFhUde0W+5AQGDF9Y8nPoBNVPYOLwNtV/kbpCERABERABERABERABERABERABERABEWgEAi0mTZrUCKfRKSqXQLfKjbpiXjYElM+Uza1QRERABERABERABERABERABERABERABCqcgIZcqPAbqOiLgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAjUDoFmK+usdi5XVyoCIiACIiACIiACIiAClUVg7NixPsK9e/eurIgrtiIgAiIgAiIgAiIgAiUhIA/dkmBVoCIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQfAISdIvPVCGKgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQEkISNAtCVYFKgIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIALFJyBBt/hMFaIIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIlISABN2SYFWgIiACIiACIiACIiACIiACIiACIiACIiACIiACIlB8AhJ0i89UIYqACIiACIiACIiACIiACIiACIiACIiACIiACIhASQhI0C0JVgUqAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAsUn0KL4QSpEEaguAsuXL29wQauttlqDdVohAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAqUmUJGC7gcffOBWrlzpOnTo4Nq2bZszoylTprgPP/zQIcrtuOOOOR+vA4pHYNy4ce7zzz93rVu3dttss03xAi5SSO+//76bNm1ag9CGDh3q1lxzzQbrtUIEREAEREAEREAEREAEREAEREAEREAEREAESkmg4gRdhNx33nnHM+ncubPr379/znxWrFjhjyGsprbPPvvMTZ482TVr1qwsBc1S87F7YMtczzd27Fi3ePFi16VLF9ezZ89cD8+4f6tW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Liy7Ho7BI4zrMPEubv9KWUfX8el148kiiiD2co/iRPKk66H7Nx+OtfFpk/Yt5no8jfGY3HXXXR3e3njocS8RdhCds4kLXecJg7QZejYWGk/SysyZM316ItxseMKQ+BD3akhXhTLM53g858lvuPc8z7kIj/mcrymOQW6hkYy0wm8mgyP9mriZT5wIh3yVIQsIi4YEmzwwn/DSHVPMe8RwLzw3xBvhGBZxk+Oli4+2iYAIfENAgu43LPRLBERABERABERABERABMqOQGMJuqW68FtuucVPUoYn780331yq0yjcMicQFXTLPLqKngiIgAiIgAiUNYEWZR07RU4EREAEREAEREAEREAERKDiCOB5Sbd+xk286aabfPzxypSJgAiIgAiIgAiIgAgUTkCCbuEMFYIIiIAIiIAIiIAIiIAIiEBA4Lnnnqs3ARFjkjJmpEwEREAEREAEREAERKBwAhJ0C2S4bOmyBiGs1mI116x5swbrtUIEREAEREAEREAEREAEaoEAYzoyiRTjJA4ZMsRPqJZuvNtaYFLr18hkTkwQxZi/MhEQAREQAREQgcIIlPUYuh+Oet/dts+Nrk2XNu7Hb55T2JWW4Ohli79yV3S/tEHIh95xhOu9Z/8G67VCBERABERABERABERABHIlUOlj6OZ6vdpfBERABERABERABEQgPYGy9tBdsXyFj/3yRQ29YNNf1qqt7zw+0Y2//23XedMubuip22dzSG77rNbMbbT7Rqljpj01bdXvulknZSIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQbAJlLegWerGfvvOpG//vt9zyJcvc0EIDizm+xeot3GF3H5Xacv12V7vPp3ye+q8fIiACIiACIiACIiACIiACIiACIiACIiACIiACIlBMAs2LGZjCEgEREAEREAEREAEREAEREAEREAEREAEREAEREAERKB2BsvLQXbhgoZsxcbobtNXGsVc8f+Y89+GoGe7Tdz9zHTZcx224Wx/Xuv0a9fb9ZOIct/izRX7d59M+8csFc+a790dOr7df5y02cC3XWN2v+3TSHLfo00Wuw0Yd3cxXZrjP68LvvsOGruvQ7m7Om7Pc9Ofeca3qztNv34FujXXWrBdOLn8++mC2W/LlEtejT89cDtO+IiACIiACIiACIiACIiACIiACIiACIiACIiACIuAJNLmgu7JuvNn3psxwE9+Y4L749AvXrFmzWEF30oNvu/uP/Xe929auZzt35H0/cu17dkit/9/lz7pJD0xI/efHzFdmujv3v6XeumOfO8mtt/GqGVZf/OPzbsK9b9fb7twzbrsztncvXTUytf71G0e5Hz15kmu+Wn6OzbNnzHYTx0xwrz41yvXs18sN3GqQa7NWm1T4+iECIiACIiACIiACIiACIiACIiACIiACIiACIiAC6Qg0maC7cO4CN/718W7G5Olu+fLlqTiu3nqV12xqRd2PL+cu8WIuE5D12nkjN/XJye69F95z82bMc69c84L79uX7p3YffMgmruuWXf3/6c9Pc0xU1qFvB7fFD4ak9uFH287t6v23Pzucs6Mb/8DbfixcxNz1Nunk+tR5AvP74zfneI/dzpuvCt+OyXa5ZvtV3r3Lli1z74yf6j/t12nvBmw50Au8iNkyERABERABERABERABERABERABERABERABERABEUgi0KiC7soVK927k6a5SaMnunmfz0vFCSFz/a7ru/5bDnCdu3dJrQ9/DD58E7fPnw9yzZo3c0NP28G9cvUL7tmLn3ajbxrt9vj9d7xnL/v32Wdg6rCVdb8QdDsNWN8fk9qQ8GOn84a57c/axfXYcSP3zwNv9XsdctMRrn2vDm5h3ZAM424f4z4eP8flK+j2HdzPD7cwZdxk985bU92Xi790cz+b61558mX32jOv+m0Dhw5ya7VfKyGGWi0CIiACIiACIiACIiACIiACIiACIiACIiACIlDLBBpF0J1fJ96+/drb7v2p77kVK1akeCNc9tmkr9to496uRYv0Udn2xzt4MdcO7rv3AC/o8n9pnQdvq7Vb26a8lx2+HrphrS7feO+u1b29D699j7X9csncxXmHz4GtWrdyg7fexH8+n/OZmzB6gps57QPvpYzYzafd2u1cvy0GuI0GbFTvmgs6sQ4WAREQAREQAREQAREQAREQAREQAREQAREQARGoeALpVdQiXd7IJ1704+MSHMKtHz+2bpiBNu3bZn2G9r071tt3zXW/OfbLOpG1GIJui9arcLRYo2XqXDZebotWq7YtXbg0ta3QHx06reO233MHh+fyjCnT3eQxk9znn3zu5n0xr85jd5Rbu244ho6d1y30NDpeBERABERABERABERABERABERABERABERABESgSgjkN7tXARfPJGiMmRuOm5spuNbtW7kWq0e05yDmCKLFsNVaruaDMRGX85qt1mLVCVcs+2a8X9tW6HLFyhVu+VfL3Yrl33gvFxqmjhcBERABERABERABERABERABERABERABERABEag+AhGVtDQXuNN+u7iJr09w706c5pgQbPqkd/1nzTZrut6D+/hhF1Zv1XAytNLEJnOojTU52ZyZH7lJb0x0s96f5RC6zdZZbx03YMhAeecaEC1FQAREQAREQAREQAREQAREQAREQAREQAREQAQ8gUYRdNdsu6bbcpch/vPBO++7CW+Md5/VjR+7aOEi9+Yr4/ynY6eOdePG9nfde/dITXBWqfdo6eKvEqO+cP5CPync9Invuq+++ma/Fi1buI0G9vZC7hprrpF4vDaIgAiIgAiIgAiIgAjUJoEBwxfW5oVXyFVPHN6mQmKqaIqACIiACIiACFQ6gUYRdENI3Xp3d3wWL1rsvVOnjX/HC5ufzvnUvfTESPday1fdwSceGh6S9+9W7VZNlLZgzvy8w8jlwA49OrjPp3zuZr32vht40CYNDp08dpIb/b836q1ft26MXLxxu/bqVm+9/oiACIiACIiACIiACIiACFQOgUmTJlVOZBVTERABERABERCBiibQ6IKu0cILdfMdt/CfWTM+dONfe9t9MvsTPySD7VPosv0G7XwQM1+Z6aY/NcV133kjZ+PkFhp23PGdNu7spj01zY1/cLzru+8g1337XvV2W7xgsf/fcvWWfqiJ/psPcK3XWCU619tRf0RABERABERABERABERABERABERABERABERABEQghkCTCbphXLr03MDxWfLlEjdj0vRwU0G/u9UJqu16tnPzZsxzdx9+p2OSs/YbdfBhHvC3Q12H3h0LCj968JATtnUvXz3SLZy10N25/y3+fKut2cINOXao2+7MXdwGG27g1u+xvuvcvUv0UP0XAREQAREQAREQAREQgbQE1KU/LZ4y2Ni/DOKgKIiACIiACIiACNQCgebldJGtWrdy/Tb7piDUrHmzxOiF25ImMWuxRkt35P3HuO3O2N616dLGfTl3ifto9Gz/WbF0WSpsO97CbLZaw/OmtjVruM0CattlLXf8yFNd3336eTGX8yHuLp2/1O+y3gadJOYaLC1FQAREQAREQAREQAREQAREQAREQAREQAREQARyJtBsZZ3lfJQOEAEREAEREAEREAEREAERaBQCY8eO9efp3bt3o5xPJxEBERABERABERABEShvAmXloVveqBQ7ERABERABERABERABERABERABERABERABERABEWhaAhJ0m5a/zi4CIiACIiACIiACIiACIiACIiACIiACIiACIiACWROQoJs1Ku0oAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAk1LoEXTnl5nFwEREAEREAEREAEREAERKIRA27ZtCzlcx4qACIiACIhASQksWLCgpOErcBGoRQLy0K3Fu65rFgEREAEREAEREAEREAEREAEREAEREAEREAERqEgCEnQr8rYp0iIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgArVIQIJuLd51XbMIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiEBFEpCgW5G3TZEWAREQAREQAREQAREQAREQAREQAREQAREQARGoRQISdGvxruuaRUAEREAEREAEREAEREAEREAEREAEREAEREAEKpKABN2KvG2KtAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQC0SkKBbi3dd1ywCIiACIiACIiACIiACIiACIiACIiACIiACIlCRBCToVuRtU6RFQAREQAREQAREQAREQAREQAREQAREQAREQARqkYAE3bq7fu8P7nCXrfsr99ZdoysuDVy/3dU+7jNemFaWcZ/56vvuvf+96xZ+tCAVv+VfLfdxhvlnUz5Ora+EH3Pf/yIV96ULllRClBVHERABERABERABERABERABERABERABERCBKiLQooquJe9L+WrxV/7Y5V+tyDuMpjpw6YKl/tQrly5vqigknvfTCR+52/e+0W8/9rmTXJv1266K68qVqWNWLP/md2plOf8I4rtyRYXFvZy5Km4iIAIiIAIiIAIlJbBw4UI3YcKErM/Rr18/165dOzd9+nT3ySefuE6dOrkePXr442fNmuVmzpzp1lhjDbfxxhtnHaZ2FAEREAEREAEREIFqIfDUU0+5p59+2l/Obrvt5nbfffdGvTQJuo2Ku7ZONuq6l/0F99mrj1tv4861dfG6WhEQAREQAREQAREoIwJz5sxx99xzT9YxOuWUU7yg+8wzz3gheOedd04JulOmTHEPP/yw69KlSz1Bd+7cuY5t2FZbbZX1ubSjCIiACIiACDQGgWXLlrnTTjstdarjjjvObb311qn/+pEfgWuvvdaNGTOmwcGtWrVyV199dYP1WlEcAhJ0i8NRoUQIMDTBuNtXPdDbnLZjZKv+ioAIiIAIiIAIiIAINBWB9ddf36255pppT9+6deu02+M2zp49OyUaDxkyxDVr1ixuN60TAREQAREQgbIgsHx5+fV0LgswOUbiq69W9XqPHpa0Prqf/udHoCYF3femznCt12jtOnVdvwG15UuWudnjZrkPR73nmrdczXUZ0tVtMKR7g/1sBd3u57w5y306aY5DxGzfo4Nbf9MurmP/TrZLveXKuuEGPp0wx815a5abN2u+37Zu33X9/h16d6y3b/hn+bLlbtZrH7jZYz50zZo3cxsM7eY6b9Y13CX1++1X33IbDtzIrdk2fUE9dUAOPxYuWOhmTJzuBm2VvnvdGze84kPtuk1X1227nmnP8OXcxW523bXNquPeplNb13OHDV37Xh0Sj1lWN0TG7LEfuk8mfewWf7bIrdt/Pddly26ubee1Yo9hzN5Zr3/gPpv6ad1YvvPc6mu1dh3rmK83qHNqGIi4A4nXrLoxgD96a7YPu+vQHq75ag2HnV60cJF7f/J7rvfgPq5Fy5p8pOLwaZ0IiIAIiIAIiECZEjjggANcnz59sordrrvu6r1t11tvvaz2104iIAIiIAIiIAK1RYAyxdKlq4YDpXF3/vxVWldtUWj8q60Z9Wnh/Lpxw14b72ZMnu5wsx+w5cAGgu6SeV+6fx58s5v5ysx6d2Ln84e57c7cpd46/jDR1+NnP+CmPj61wbbtz97RbX/OMLdanShs9tXipe66ra92C2cttFX1ltv+ZHu343m7udVafHMMOyAsPnTiv920p6bV23/oSUPr/bc/CLpvjXrTrd1xbX+dPfr2LMhDAhH6vSkz3MQ3JrgvPv3Ch5VO0F386SI36i+rhlvY7vT03rkI4Xfse2PdNdafYOzwu490vXbva5eUWs4eM9M9eMq97vMpn6fW2Y8D/36w63/QJvbXLz98/X13256rxvGtt+HrP/vXHTMwcgybGP/3nh/c6ebNmFfvsJ3OG1bvP38WzVvoxowc7ca+NMZ17lHX9bBO7O7Yed0G+2mFCIiACIiACIiACFQagV69elValBVfERABERABERCBRiSwzz77OD7YQw895IdlasTT1+ypqlrQRYicPvldN+mN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6SO8ePGixMTEqNAAECOxgFhpNyyQhri5CIdQo0YNqVXLeGLceHLcW5aamirx8fFqITbsI5YuPH0hhBdnW7x4senFDI/mAQNcP91fUGOgh25BkS0D9eLOCoXcMjDRHCIJkAAJkAAJkAAJeJkABNz69et7uVZWRwIkQAIkQAIFSwDeqe5usBZsy0VXO0TrghSuEYKCvwlyP7/00M09M5YgARIgARIgARIgARIggUIjUBo9dAsNHhsiARIgARIocgKlyUO3yGGyA2WCALx/c/L49Z6PdJlAykGSAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQgPcJWEM5ZFc7Bd3s6PAcCZAACZAACZAACZAACZAACZAACZAACZAACZAACRQwAU/FXHSDgm4BTwarJwESIAESIAESIAESIAESIAESIAESIAESIAESIAF3BHIj5qIOCrruSDKdBEiABEiABEiABEiABEiABEiABEiABEiABEiABAqQQG7FXHSFgm4BTgirJgESIAESIAESIAESIAESIAESIAESIAESIAESIAFXBPIi5qIe3y3HLrmqj2kkQAIkQAIkQAIkQAIkQALFgIBPMegDu0ACJEACJEACJEACJOBdAnkVc9ELeuh6dy5YGwmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAm4JZAfMReVUtB1i5YnSIAESIAESIAESIAESIAESIAESIAESIAESIAESMB7BPIr5qInZVrQPb0hSha0mSArB3/gvVnJQ02Rb/yq+hH1yYo8lGaR3BDYtmm9/DJnusdFzp1JlN3bt8rGtavl4N5ISTp3zuOyzEgCJEACJEACJEACJEACJEACJEACJEACJEACmoA3xFzU5asrLIvby5fS1bBTEi8U6fDTUxxxjNNTGc+4oCci/tgRqRZUI8dm0i6lyeolCyRq394seYeNHCs1atfJks4EEiABEiABEiABEigKAud4w7kosLNNEiABEiABEiABEsg1gQEDBghe+bUy7aGbX3gsXzII+Fy+LGcTT8vBfZESFxsraSkpcjTmkCQnufa2hZi78McflJjr6+cv4W3aS7uIboJ92KJf54qkO24GlAwC7CUJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEBpIVCmPXRLyyRyHO4JJJw8IWtXLJX4uFgzU/TBfYIXrFl4W+ndf6B5Dju7tm42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AAmUZAI+xmM9l4vTAGatcSzgcFOvnGM5FXa/T548JQOvc6w0e8/tt8iD996puvDboiXy7Euvq/3//XeidI7I/gdyYfeb7ZEACZAACZAACZAACZRcAghpAMvJq9bVCFNSUpSnLkQ+hBCARyUWkCoIw6JgEI8hEiLmKkS23IqcnvSrMMfkSX/ykweXYhCI4T0NgRTxbDFHWjTNT92uykLwRBgMGATakJAQV9m8klaY8xQZGSmfffaZ6jc8heEp3rJlS7n22mu9MhZWQgIkQAIkQALFjQBDLhS3GWF/SIAESIAESIAESIAESMBLBCAMNmjQwEu1ZV8NRFy9eFb2OfN3tjDHlL+e5lwagjcEXLwKwxA/GQbBsyDFXLRRmPME8RYhKpYtWybwVD569GiBieIYG40ESIAESIAEipoABd2ingG2TwIkQAIkQAIkQAIkQAIkQAIFRODQoUNK4Ny4caMKiYFmBgwYUECtFV21CFOBF8weCqLoesWWSYAESIAESKBgCFDQzQXXcuUzQw77Gd4O2vBYjzbrvk7jlgRIgARIgARIgARIgARIgASKgsDixYtl165dZtNdu3YVxM8tzRYQEFCah8exkQAJkAAJkIBkKpGEkSOBIOMxss1rFmfJN7DfFS7Ts2RkAgmQAAmQAAmQAAmQAAmQAAkUIoE2bdpIYGCgVK5cWZo3b65ehdg8myIBEiABEiABEigAAhR0CwAqqyQBEiABEiABEiABEiABEiCB4kCgW7dugheNBEiABEiABEig9BDIjCFQesbEkZAACZAACZAACZAACZAACZAACZAACZAACZAACZBAqSRAQbdUTisHRQIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkUBoJUNAtjbPKMZEACZAACZAACZAACZAACZAACZAACZAACZAACZRKAhR0S+W0clAkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKlkQAF3dI4qxwTCZAACZAACZAACZAACZAACZAACZAACZAACZBAqSRAQbdUTisHRQIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkUBoJUNAtjbPKMZEACZAACZAACZAACZAACZAACZAACZAACZAACZRKAr6lclQcFAmQAAmQAAmQAAmQAAmUUQIxMTGSlpYmVatWVS9fX/7kL6NvBQ6bBEiABEiABEiglBLgr7tS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QAIkQAIkUIAEvPdMeAF2klWTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAkYITYJgQRIgARIgARIgARIgARIgARIgARIgARIgARIgARIoGQQ8C0Z3WQvSYAESIAESIAESIAESKBsE9ChF8o2BY6eBEiABEiABEiABEiAHrp8D5AACZAACZAACZAACZAACZAACZAACZAACZAACZBACSFAD90SMlHsJgmQAAmQAAmQAAmQQNkm0Lp167INgKMnARIgARIgARIgARJQBOihyzcCCZAACZAACZAACZAACZAACZAACZAACZAACZAACZQQAhR0S8hEsZskQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQEGX7wESIAESIAESIAESIAESIAESIAESIAESIAESIAESKCEEKOiWkIliN0mABEiABEiABEiABEiABEiABEiABEiABEiABEiAi6IV0/fAp9O+lh9//k317rtvPpMKFSqo/fvGPyFHjsZJh3ZtZcLLzxTT3rNbJEACJEACJEACJEACJEACJEACJEACJEACJEACBUGAgm5BUPVCnQkJCRJz5KiqKT39slkjxFyk165V00zjDgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAkUFYFLly5JcnJyluYDAgKkfPnyWdKZkD8CFHTzx4+lSYAESIAESIAESIAESKDYEVi2bJncf//9UqNGDVm9enWR9W/btm0yevRo1f727dvF17foLz8iIyNl8eLFcvLkSUlJSZFy5crJq6++WmSM2DAJkAAJkAAJlAYCW7ZskZkzZ2YZyi233CIdOnTIkl7YCUlJSfLKK6+oZh955BGpX79+YXfBq+0V/S8qrw6HlZEACZAACZAACZAACZAACezcuVNBaN68eZHC2LVrl2q/WbNmxULMPXTokHz55Zcmk0qVKklYWJh5zB013mdPAABAAElEQVQSIAESIAESyA+BqVOnyoULF2Tw4MHSuHHj/FTl9bJ4EnzGjBmq3jvvvNMM7enNhho2bKiqO3v2rJw6dUrtF5fv2ZiYGHOotWrVMveL246n80RBt7jNHPtDAiRAAiRAAiRAAiRAAvkksGPHDlVDu3bt8llT/orDKxdW1P3Qo1iwYIHahVfO3XffLf7+/voUtyRAAiRAAiSQLwLnzp0TfSPTz88vX3UVROGoqCg5ePCgejKl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Q8B69uzZIHwCNw6SVZslu67o0aOH5Orr60v8MpRdGyA0XAI4FK3hPhvMDARAAARAAARAAARAAASopoeiAR0IgAAIgAAIgAAIgEDTJGDeNJeFVYEACIAACIAACIAACIAACIAACIAACIAACIAACIBA0yMAQbfpPVOsCARAAARAAARAAARAAARAAARAAARAAARAAARAoIkSgKDbRB8slgUCIAACIAACIAACIAACIAACIAACIAACIAACIND0CEDQbXrPFCsCARAAARAAARAAARAAARAAARAAARAAARAAARBoogQsm+i6GvWyiouKiS/dYGZuRhaWFrpZiIMACIAACIAACIAACIAACIAACIAACIAACIAACFxnBCDoNsAHvvuzbbRt1ma9mXmEtaBJm6bo5SEBAiAAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAiBwfRGAoNsAn7dra1cKGBogZ3blbDqlRVxogLPElEAABEAABEAABEAABEAABEAABEAABEAABEAABOqbAATd+iZehfFC7ulMfHGI+vs4/TVpWRVaoQoIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgEBTJwBBt6k/YawPBEAABEAABEAABEAABEDA5ARKcnOpODfHoF8LF1ciMzODfGQYEsjLy6NccZUPzk5OAiEYlueCNAiAAAiAAAioBMzVCO61J5CVmUUn9h036IgPODu7/wwd+ekA7f50K0X8eZQuxqQa1KtpxvHwY5SdmV3T5mgHAiAAAiAAAiAAAiAAAteUQMLkiXTQ2prSFn5Z4TwKz56VdbheYXJyhfXqqyD5o/fpSAtPg6s4M6O+ptCgxvli4WLqNfhmemvmh1We14L/fUc33T7W4MrMyqpyH3VZ8diJCLkmXldGRmZdDoW+QQAEQAAEQKBaBJqkhW5cXBzNnz+/WiDUyk8++SQFBgaqyaveS0pK6HRMAkUeiKDLaZflm+SQHh21dtkXsujfZ/+kuLVxWp4a6T9tAPWdNoQsLC3UrBrdWdA9tvcoubq7UnC3DtQmyBdvtGtEEo1AAARAAARAAARAAASuBYEr69bLYW38K/4cnht1Qtax8PYgyxYtrsU09ca0dHUh90n3y7ysw0cpd/8Rsu3eicydnPXqXS+J4yci5VJ92/hUeclOjo50w8D+sn5M3ElKPHuOfLy9iPMbQoiKOSmn4ebmSk5O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Zo35n9q+ZcWd0iyyhdou70/h8UL5aPRMyYg7qLJ1GN5BvP28Jen3JLPYVKOuoHLqwiRss8a9Z3oGo6B/iL8EdwuWiV9NkWO5xyR1V6p07NJR6tfn/HgmWG6QAAmQAAmQAAmQgAcR2Lhxo+pNRESEB/WKXSEBEiABEiABEiABEjhVBKji1QB5TJKmxVxUv+qt5aqVLpd2q5SYi8wNjMnOpvx6k8ALF7Z78W5TzA3p10amrryrXDEXZep71Zcr51wr8ApuEmoLv5CzL0dyDtli8Pr6+UpEtwiKuYBFIwESIAESIAESIAESIAESIAESIAESIAESIIE6QIAeujV8kg4lHpD3Br+lWrn2z5skJKadyy0W5hVIZtJBYwK2ImnWsUW5E6q5XDkLkAAJkAAJkAAJkAAJeDQBeuh69Olh50iABEiABEiABEig1gkwhm4NI1//4SrVQuiI0CqJuSjcoJG3tOweUsM9ZfUkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKeToAeujV8hooKi+REYbHUNyYjQwgEGgmQAAmQAAmQAAmQAAm4QkB76LpShnlJgARIgARIgARIgAROXwL00K3hc+vVwMtwsTUWGgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAlUkwAF3WoCZHESIAESIAESIAESIAESqA0C3bp1q41m2AYJkAAJkAAJkAAJkICHE2AMAA8/QeweCZAACZAACZAACZAACZAACZAACZAACZAACZAACWgCFHQ1Ca5JgARIgARIgARIgARIgARIgARIgARIgARIgARIwMMJUND18BPE7pEACZAACZAACZAACZAACZAACZAACZAACZAACZCAJkBBV5PgmgRIgARIgARIgARIgARIgARIgARIgARIgARIgAQ8nAAFXQ8/QeweCZAACZAACZAACZAACZAACZAACZAACZAACZAACWgCDfQG1yRAAiRAAiRAAiRAAiRAAiRQGwSys7OlsLDQrqn69etLkyZN7NK4QwIkQAIkQAIkUDcIFBUVSV5eXqnONmrUSLy8vEqlM6F6BCjoVo8fS5MACZAACZAACZAACZCAxxE4evSo9O/fX/Xr559/lsjISI/q45VXXinbt2+361O3bt3k22+/tUuriZ34+HiZN2+eZGRkyPHjxwVC8lNPPVUTTbFOEiABEiABEjhjCGzYsEG+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"/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="698" height="249" viewBox="0 0 698 249"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="rect-1" d="M0 0h698v249H0z"/></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="Bitmap"><image width="698" height="249" xlink:href="data:image/png;base64,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AiIgAiIgAiIgAiIgAiIgAhVCQIJuhdwoRVMEREAEREAEREAEREAEREAEREAEREAEREAEREAEWghBbgSmTp3qpkyZ4p555pncdswQev3113e77rqrY1kKGz9+vD/sRhttVIrD65giIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAJNREC6TxOBb6LTykM3R/BPP/100cVcomBCcY7RUXAREAEREAEREAEREAEREAEREAEREAEREAEREIEaIiAP3RxvNsIr9qc//SnHPdMH/93vfueFYrx0ZSIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQR0AeunFUtE4EREAEREAEREAEREAEREAEREAEREAEREAEREAEypBAUT10iz0cgY0ne8wxx5QhOkVJBERABERABERABERABERABERABERABERABEQgjgA6ofV0L+W8UXHnrvZ1RfPQvf7664s+tiw3nQ8JQCYCIiACIiACIiACIiACIiACIiACIiACIiACIlD+BNDznnnmGa/r8RvdUPpe8e5b0Tx0uTmYxpYt3s2plSP973//c0uXLs36cmnVadWqlXv77bfd7Nmz3Xrrref69u2b9f4KWP0EFi9e7CZPnuymTJnilx9//LHr1KmT69Kli9tss83cxhtvXP0Qvr3C5557zi1ZssRtsskmrnPnzjVz3UkX+vnnn7tnn33WzZw505EuWrRo4bmQjwwePNitvPLKSbtqfZUSWLZsWapBukOHDm6rrbZKe6Xvv/++YwbhNm3auEGDBqUNW80bp02b5iZNmuTatWvntt1222q+1NS1kXcklVeaNWvmOnbs6NZaay3/ruF/Y9moUaN8mvzyyy9dr1693E477dRYp9Z5qpBAmM432GADxyeTUe568cUXU8H69evnn4PUCv2oWgL2TuQC6V3bs2fPsrnWuXPnujfeeMPHh3yR+iP20ksvuUWLFpVd2Tgpvj7S+hKBCiVQLeItQnQ+3sXmoFqqUQeKJuhWaPpStJuYABWjCy64IKdYbL/99v6FfNddd7nXXnvNDR06tGYFXYS6p556yvPbZptt3Oqrr54Ty2oMPGPGDPe3v/3NLViwoN7lzZkzx1d4ETjXXXddd9RRR7muXbvWC1ONf/7973/7y2rfvn1NC7rLly93d9xxR70Kp93vDz/80L3zzjvu4Ycfdj/60Y/ckCFDbJOWNUDgm2++cffcc0/qSldZZZW07xQqguQjrVu3LljQJV8aOXKkPzeFxEoy4v3YY485RPBaEHQR/u+8886sbtEaa6zhjj766KyEsKwOmCbQvffe65588slUCMQVCbopHPqRB4Ewna+99truvPPOy3gURLMwHyV/pBFdVv0EKFuZYxeOA3/4wx/K5qJpuLd0ST3JBN3bbrvNx7EpysbU3Z5//nl//i222MKtttpqKV5J8U0F0A8RqBIClmdUyuUg5hJnlgizNjRspvjbPoSzfTPtk+t2Cbq5ElP4khFAjOzWrVvG46+00koZw9RKgK+//tr9+c9/9pd75ZVX1ryg+8ILL3jRzu4/aWrDDTd066yzjvvss898K/3ChQu9dybczj33XEfFW1b9BKigmvcQFc2tt97aC9xfffWVF/rx5jbBZs0113T9+/evfii6wlgCFLguvPBCL9jGBijiShqg7r77bn/EXXbZxTWmV2cRL6PmDtWyZUvvjWsXToMR3rG8XzCE+r/+9a++wbqUDa14RZrnC+fZdNNNvce0xUtLESiUAD3h+CDspjO8emW1R+DTTz9NiblcPYIkjUrZ1Odqj9aKK6buZu996iehoFurTPK5bpwwsB/+8Iexu2faHruTVpaEAOJnVMCtJCcGE3MNjgmzmUTdUMxlX/tfbE9dCbp2Z7RscgL77ruv+9nPftbk8VAEKpMAXpZ4CWDNmzd3J5xwghs4cGC9iznkkEPcQw895B5//HGHV95ll11W9GFi6p1Qf8qCAEILHpUY3tm/+c1vUl4afmXd17hx43x64P+NN97oLr30UtukZY0RwLsfr8fDDjusxq5cl5stgR122MHxPokaec2//vUvN2LECN9ARE8i3kWlMmuI4vgnnniiH4KqVOfScWuXAI3l9F5Jsk8++cR98MEHSZu1vooJmKcpjVwYZWvGyvzpT39a1ldNfZNG/N69e5dVPCmjHnHEEb5xl95CsngCiLUm2BIiKupm2h5/VK0tFQHEW4busQZohNBMYmip4pLPcYk/Im5omURdE2/DffhdCiFbgm6U8rf/uQkUlHkpxdnvfve7eqtJlNygSkqc9S5Af0SgwgnY0AJcBoIdY6JGDaF3v/32c1Q+3nzzTe9FhRBMC7mseglMnDgxdXEHHHBAAzGXjYyr/P3vf98xpjeC3rx58xxd8WS1SQABY7vt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dteqgEDRBF2Oma9qnbSfibcm5gbxbrSfSR7HjRYBnUgEREAEREAEREAEREAEREAERKCsCCDgMmwAwxkxHAeTv4XjP5dVZMsgMkyYycRnuU4kyMSJDF2l4YLK4CYqCiKQIwEcN6MCrul8OR5KwWMIFFXQjTl+2lXcyEzjV4U3O/yd9sDaKAIiIAIiIAIiIAIiIAIiIAIiIAIlIsDkXnxk2RFgIrR8bLvttnN8ZCIgApVHwDQ/G3ohrnd+5V1V+cS4Wd0M1svLJzrlE5NwJrvGihWJO8lbudA4lONsh4Vek/YXAREQAREQAREQAREQAREQAREQAREQARFwTrpPbaWC5rV1udlfLS0J0XF9s98795CcSx7IuXPTHiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQSwTkoVtLd1vXKgIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiUNEE5KFb0bdPkRcBERABERABERABERABERABERABERABERABEaglAhJ0a+lu61pFQAREQAREQAREQAREQAREQAREQAREQAREQAQqmoAE3Yq+fYq8CIiACIiACIiACIiACIiACIiACIiACIiACIhALRGQoFtLd1vXKgIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiUNEEJOhW9O1T5EVABERABERABERABERABERABERABERABERABGqJgATdWrrbulYREAEREAEREAEREAEREAEREAEREAEREAEREIGKJiBBt6JvnyIvAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQSwQk6NbS3da1ioAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIVDSBFhUde0W+5AS+d96nJT+HTlD9BJ46p1P1X6SuUAREQAREQAREQAREQAREQAREQAREQAQagUCL8ePHN8JpdIrKJbBG5UZdMS8bAspnyuZWKCIiIAIiIAIiIAIiIAIiIAIiIAIiIAIVTkBDLlT4DVT0RUAEREAEREAEREAEREAEREAEREAEREAEREAEaodAs+V1VjuXqysVAREQAREQAREQAREQgcoiMHLkSB/hnj17VlbEFVsREAEREAEREAEREIGSEJCHbkmw6qAiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiUHwCEnSLz1RHFAEREAEREAEREAEREAEREAEREAEREAEREAEREIGSEJCgWxKsOqgIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIFJ+ABN3iM9URRUAEREAEREAEREAEREAEREAEREAEREAEREAERKAkBCTolgSrDioCIiACIiACIiACIiACIiACIiACIiACIiACIiACxScgQbf4THVEERABERABERABERABERABERABERABERABERABESgJAQm6JcGqg4qACIiACIiACIiACIiACIiACIiACIiACIiACIhA8Qm0KP4hdUQRqC4CS5cubXBBK620UoN1WiECIiACIiACIiACIiACIiACIiACIiACIiACpSZQkYLuBx984JYvX+5WX311165du5wZTZw40X344YcOUW7QoEE5768dikdg1KhR7vPPP3dt2rRx22yzTfEOXKQjvf/++27KlCkNjrbVVlu5lVdeucF6rRABERABERABERABERABERABERABERABERCBUhKoOEEXIXfy5Mmeydprr+022mijnPksW7bM78Oxmto+++wzN2HCBNesWbOyFDRLzcfugS1zPd/IkSPdwoULXZcuXdx6662X6+4Zw7du3dq1aLHiMSGOcd66GQ+iACIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQJAIVJ+gW6brL5jCLFi1yixcvLpv4VFpE5s+f75YsWeJYlsI6d+7s+GBffvmlGzFiRClOo2OKgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQFYENClaVpgUSAREQAREQAREQAREQAREQAREQAREQAREQAREQASankBZeugyvm3Lli3dmmuuWTChefPmuY8++sgtWLDArbrqqr5rfqaD0rV+9uzZ7osvvnBff/21Hyu1Y8eOrlOnTpl2dZyPYRTw5mRoB8ZZXXfddeuNt8q2uXPn+mPZkj+MDRxahw4dfJxZZ/sw7i/DC8QZ18h4tAzfwDkxhiP49NNP/XjBDFEBizlz5vhtjEHMsZo3T9b1v/rqK/fJJ5/462In4sRxWrVq5Y9RzC+4E9ePP/7YffPNN/5c3bt3bxC/mTNn+jGUObcNn0E8Q35c0zrrrJOKHmmKsMSfcXH5DSMYTJ8+3d9r7lXPnj0bnC91kCx+zJgxw98zjisTAREQAREQAREQAREQAREQAREQAREQAREQgWITKBtBF0Fu6tSpXtBD2FtrrbUKFnQnTZrkEP/MEE8R/dJNpEY83n77bd+N3/ZD2EUQbN++vRs4cGCs4MfYqqNHj/bCoO3H0vZFOO3du7ffhOhnomoY1sYGtnUI2n379vV/OY5NzoXwiDAZtffee88Rf0RfE3QRcBEsMVgg+pohnk6bNs1tueWWjrFio8bYvrNmzaq3GrGafTbeeOPUUAT1AhTw58033/Txt0NwzcR522239ddk67mvUeO6o/xCQZeJ8KLG9cOSfTHORxqBR74GL9Ix4+6Shnv06JEagzffY2o/ERABERABERABERABERABERABERABERABETACTSroItwi2CGyRseRbdu2rcUxryUetibmInDiMYnXJ4JduvFWGSPVJr7Co7dNmzbeO5X44X07atQot+mmmzaI0xtvvJG6BryLEVzxlOVceMnyMVtjjTVSnqXhNryAQyOcWdeuXb1QCDME2k022cQ2+SXXZsJkkmczYi5CIywYuxevX8af5Zq32267esdDHMYzF7N98GrFA5jl2LFjvTCOIFoMs/vPfUdc5j5xrcQPodbEcM6FpzTbMOLDb5hzv8ySvI65J4TjXmIww9uY8DCBEfefNJOPEXeOQ7xJf3w4HxO2ZePhnc85tY8IiIAIiIAIiIAIiIAIiIAIiIAIiIAIiEDtEGgSQReREy9GE+MMNyIaE1Dh1Vhol36OjyHUbbPNNl7w4z+etnHemmzDc9bEXOKACGeG6GnDHiDChoJzKEiHXrW2L964JrayDs9NPlgYnwEDBvh1cV8IkauttppnhicpIibrzMwLl//EPc4QPfF2NbHTPJgZVgJvVRMciauJuXglb7bZZqnDIRy/+uqr/vxjxoxxW221VWpboT+493369PGH4fpeeeUVL4wSt9D69++f+vvyyy/7MAjo/fr1S61P+rH++uu7bt26uXfeeSc17IWJ2c8//7zfDb7GIuk4SesR+0kneDFb+uY/3tuWvokD90ImAiIgAiIgAiIgAuVCgPLWk08+6cswlG0pi9Pja4MNNnC77757veHDShFnyl+UMbFdd9214LpAKeLY1MfEAQJHB3rtsWSYMsqs9ASkvE4POlnTEhg5cqSvR/Hc8KkUe/bZZ1P14GzivNNOO1XtM2osevXqlVivjjLCGYp6PfXMjTbaKLpZ/0VABESgJAQaTdBFoGPsUjwWERDNECUR4xBPESwzWShimjAZ3QfR0c7BeK+heEY3fApBJtyG+zI8AcZxQzGXdRSQ8MLFuAYyeDMKvRiCnQ2RYNtYhp624fpcfyMEmkjIC8OGVeA4FOgw83D1fyJfXFPIjPFiOQ73hmsyEdPEcHZniInQYMn1IPiGInUYJt/f4cuP+0x8uCd4uxbLzIsXTngB431sxv0jXZB+CjHOYeI8QzCQPmDFsfnPZ5VVVvFpLMmbupDza18REAEREAEREAERyJYA5cDrr7/e3XHHHQ12waEBu+6669ypp57qdtttt3phKKM99dRTfh0OFIXMIUDvuosuusgfa4cddqhasagewBz+4Hjyt7/9rd7waeyO48j48ePdc8895+sGRx11lKNnn8x5Jx640QsydFApJZs777zTz6fyve99r2IEXXpfEu9cbOutty77Z5S6O70yqfP2SHB4il5zyGLw4MFZ7/fggw/6XrQ4T4V12ujxM/3PJ86ZjqntIiAC1UvgOzWrxNeIEBkKhQxlgCDJJxRpc4lGkhdvOE5snJjKGLqIeVEzEThuGAHWIYaSyYfDJ3AMEwCzEaSj58zlP0Ih10w8EWBN0MUD1OJAq2CS4QEbGtxtiAAb8oDtoVCLB2zUKPibETaOl23PdomYGorN7EfcMJgXy0zA5XxYeE5Lh8ayGOfEY4IPx8SL2gRq0igtuTvvvHMxTqNjiIAIiIAIiIAIiEBeBG655ZaUmEtDM964lF3oUUcPoxdffNGXDf/0pz/5nnRhYz9l0j//+c/+vFdeeWVBgm5eka+RnV544YXUPeKSEc433HBDPwEw81sgAlE/oX7A/Tj33HOL5lBSyYhff/11n36pMzWWoFvJvIg7zjvRYQDjrsnqUnHbymXd/fff78X173//+1kLs00d90qMc1Mza8zzP/zww/50P/zhD2NPm2l77E5aKQIFEGg0QTcaR0RBPBZZmpAWDZP034TVbARdhOOoJe1nXrsmJEb348WFuBiKn8TfBMe4c0WPUeh/CtgIgxTaiAdx1sZVEwAAQABJREFUnVbXvR+DI9uTLPRUtjD2Mg5FTBO2CWPXZuGjy3C/6LZc/pvQGu4Tiq3h+kJ+2/XascO0Z78zXXM+5+eYlt7z2V/7iIAIiIAIiIAIiECxCeAUcPPNN/vDMinsBRdcUM/rbujQob4B+qSTTvJhLr74YnfbbbcVOxo6XhoC9KYz72nKryeccEKDHnSHHHKIe+ihh9zjjz/unQguu+wyhwAvE4FcCeAdT3qS5UZgv/328z1p5R2fG7dKCo1Ya4It8Y6Kupm2V9K1Kq6VQ6DRBF1a+mhJZtgFJo1CjESI5MM4rXiWxnnTxqFkgixERxsiIBrGRDvWh96kFi5JsEPQCwVaC29LO5YJf6wPfycd1/YvxrJ79+5e0OVYsKNLB97PWBIPvzHDV3gd9huBmu5zsvwIkB7wlKAgTpoPjTTfI8uuP+F++i0CIiACIiACIiACxSLAJLdmhx9+eD0x19YznNhxxx3nrr32Wl+Op5cbw6XJGofAv//979SJfvOb3zQYFo6NCL0ISgyJ9uabb/phGCh/MtScTAREoPQE4oZdLP1ZdYamImDCblTUtfhk2m7htBSBQgk0mqBLRClU8EHcYhxbJl9A9GJsGybYojCCKInQla4bv00olnTxjE9qFjckQOiBauFY4iXKttADN9xuHrxRT1wEZLaFQxWE+xXzN4woRFOYptDGbxOaGWM3ncE9GnfzsA29dwnD+mKOXZsuXpW4zbjFxZ2ub4zXFR3WA8Z4UCPKh40OccfQOhEQAREQAREQAREoNQGbP4LzWIN+3DmZQBbvT8q7OGdQDvrHP/5Rr6x44403+vkwmGcCR47hw4f7svWvf/3renMW2PEZeuree+/1f08++WRbnbjEkYFKMnUGyllMhrv55pv74auiwiXxe/rpp91///tf7whB2Z46Bo4QVMDDYSMST1gGG6gvTZgwwccED+roHB/RKO65555e0GX9a6+95g444IB6QRiaAcGXYfDwzsaZhvoDQ4AxzmhojMv76KOP+nt5xBFHeJajRo3yPBkGDkcdPLhxUiAsE0mNGzfO16MYhm777bd3dHUPez4yTitCM+mJ+tz//vc/76BCmZmh4YgDQ35E63qM08y5mWQM4TpqTBD3n//8xzdI/PznP/eT+7377rt+HgvCMn/FpZde6nfD+zTs0QiHRx55xI+3SzjiTtraYostUpM1R8/39ttve76cl/3hQfgkcSe6fzX8p/5JHsCzxYTV3OuoEYahWHgeuec2ETXhyEeeeOIJP7kfEyLyDMOdMOH9IexNN93kHZj23XdfPyQEzzZpDqcm6sKbbLKJO/jgg1Np7eqrr/a9WTkuxmSL9HClHv3LX/7Sryv2F+mP9MDQHkOGDEkdnut87LHHfPoirVAfJM5MLM7kj6QdLJc48wxzTTzHaBc8F7AbNGiQn6fFTs4Qf9dcc43/i2c/zyf7MUE8940hdnbccUfHeM9x+X8u94hx1rk+yxMY05tnkHoxPTswnhvuHfPL0NuYvMHiQDzKvX5sz7eJtba09ba09ba09R6CvkSgyAQaVdC1uCMYWisWEyCQWSCGIu4iUvJB9MokUNrxostQ0OX4oecvLxbGBIszG5/W4kKmb8aEAyachsdnO5kR+1AY4YUViqO2f9IyHP6BDDn8n7QPgjczqFKonjRpkg/GfulEcAKReYaTuRFXE7eZJMyMMYbJkBF0EdspqJWrkfETT7uOUsYz5Et64GUctbfeeqtB+qJgyD2LCx/dX/9FQAREQAREQAREoLEI0OvNjInRzj77bF/BtnW2pEweDrVA2f2ZZ56xzX5pE6jhQLD33nuntiMWMIFS1BALOQZlJMaEDcXluLB//etf661GnORDvBCNEDUwyrdcB4JmaJTViTfiIJ6ue+yxR7i5LH8jwJjBNJPR3RthiDpVWI9BvEEUQ1AJjUmV+TDWLKJDeA6EGEQz6ggIY6E3N3UeRCXEWQRYjh0a+yKSIjj94he/SG1CxOc+UycJ5zwhAHU2PghO0WElEPOJS1J5n3iw3a4Z0Z//ZvCw/2E9EL4mSlpY4s640XwOO+wwt9NOO9kmzxWPacY0Do16EwIWcedctWAIgFw395j7w4SJUVEQ5ozDjSHGmj355JOpxhxbR5rgw7aoJzrCIOmF5/3555+vx5i0yL3iPAwZQxpA/A/vA/G0+2/nK/aSNIdoHE4MSX2d9BUa+RP1SBrIXnnlFXfOOed4ETabOLMvQ+Tw7IXGtfEhDZ511lkpUZfwdt1wRVgOjWeRRjXyRSZTDC3Xe0T+D3N0HN4lPJOYaQx33323F3PDc5Avcc95prh/w4YNa5CGwvDl8NvEWRNrbWnrbWnrbWnry+EaFIfqItAkgm6IcO2113Z8eKB5IZAJkBnwP87IKHlpYIiYYUufX1n3RUZOaxeZN17AFEJswjIyWxNmLbwtKVDaS4dMddNNN/WbwsyQF1V04jFaqMmwMQQ9WubC1mgyUq6pT58+Pkz4hXhqRqECz4FwX9sWLrkWvIkRMs1rOOqZEIa332SstHiaIM3L0SwUz2kdp0AFJ8LgxRDGkxY1PAYwWgOb0kgDpBXuNWmHVr5SGeIxaYt7CR9e2NFJA8yrmXiZN64VLksVLx1XBERABERABERABPIhYLO/U7am7IuXGwIsQ27hfEH5MirScB7K7oimiCzm+YgXJ2VkPGEpO1JOwoMOATUq6CLM4dGJhUKPXxH5Il4m5hIvPMAof+G5injJOfDKRNjl3IhqJub+6Ec/8oIjogJlV8QVysNMHLbLLrtk5UgRiU6j/jVRhLJk1GsxKSKEjZY977rrrpSYi/frPvvs48vM1KsQdChLIzzgBLPtttvWOzTlfsRcxH9EOxw9EHtM0EXMxZnloIMO8h62CGy33367vy/Uu6iLcV9CMzGXdMEHZx/OgchPOZv7hDgX3S88RrrfeItSjyONUWan7sM1Y+b9S93h8ssv9+cjfZD2cShC5Lrvvvu8ZyFjF3O9VifkeCbmkgb32msvn+YZYg1vU85V6Ua9N6kebtdGPZR60eDBg339nfB4fYYNRISloQCDv3mAkybMM5/8AqGLvALvVrhzfp5P7n8ojnIcyzPYh3o1wihpEUGSfIBnnzGAjz76aO9gQ7onPVFXx8M9+lxwzFIaE05ipC88w9EaSPuI0uRRPCv0IjjwwAOzivODDz6YEnPJC7lW7gViKvksjRGw+8Mf/tDgshBziQfPKQ0/5J94yPMcWIOO1aMLuUe33nqrv0ZYw50P9wbPXIx7Ts8Bnm3u3wMPPODvH5oDWkicXtLgYpp4hYmzJtba0tbb0tbb0tY3cfR1+ioj0OSCrvFExNx44439h5biJJf7UIwNf9txbEnmYZ4CiK0UNBA/ydSTjIyFjI6Ci7X22TAMtg+FqWjcEFjZlwILLzQyaPPS5aWEmaBsx7ElBRiunf3I7NjXXjacK/SotX1YUhih8GAWFZltfbiEF4WvKAsKKqH3KdfHSxfvXwRKRGo4EC/+G0MThsNzNPZvCl4m0tPqjxFPKh90Oym28QKkmx8cooI4cWE7PK37TLHPr+OJgAiIgAiIgAiIQLEIUL5jAi3EWXNqQBjgg1E+pDxF9/mwSyxlSboL4/Vqgi7CHF2vzRBqb67zJkM0OPXUU1OeWmynPMq+WNg92a8Ivii72/E5//nnn58SmBFHGHIBIZljIagdeuihqesg7ieeeGIqPOI05eWf/vSn/gwIGmF8g9OWzU+GAMCS6hHZRBSB8uWXX/ZBceD4v//7v1RdhiEccET53e9+5+siDImA8EW6CA1OiOYm7iOYUQ424e+MM87wbNkHxoy5fNFFF/lD4IEXJ8wihprISkDqbjQimHh///33u2OPPdYfI9cvjsOHcyOywm9wnfgYGtdKnYa0zARyVq8h/jA599xzvfcyYgyCLnU6utVjCI08M1Z/giPpn7jTOFLJRlqx9JJ0HQx7wfAeDDOBaAlHxNRQ0KXeSR0SMy9nwpk3Nx71DMdiaYp6FEMn4GFKOLz3ETqjdvrpp6fOQ311wIABPn8hHKIyIidpGCNPQOQk3Ufvvw9Qwi96uVrDBQ0M4bw0XDsOZwiY1GO5zkxxRh+xfBlhMPSmhwMfhlcgHMdFVwktms7JP8kT//73v/tgpFsE3ULvEdfM80B+QZ0YM2Gf3z/5yU8c58bQM3BmYxgMni9YVIKgS9xNnDWx1pa23pa23pa2nmPIRKAYBJoX4yDFPgZjKMW9+DmPZfqZzomghneAiaNkEmRQFFCs9SnuWIxnY62BhA+79pD5UNiIMwo6iK92TM7HByMOds64fSk00CJu+3Le6Lmj+1lGyHoyS7vOaLjw/7rrruv/Ggv+cK2cP2qEhZ8V6BAwYUG8MF4K1sId3bcx/8ONwkPo1UwczXM5GhdjbMvodv6n20aBgAJHVNQ3LnCTmBtHVetEQAREQAREQATKkQBlQYYsoGKPCBuWWRFKEWQRt5g0zQSabK4jHNIAsSc0G64BkSWdWBn2zDvmmGMalNEoByLiYnh6YZTVMOKOoIyjhhlCA+sQlcKytG0vtyXecxgOIPkaYxmbIWZHy7CUW/F6xmBlw7nZPizxdA7Lx9Q7rF6Bt3bUsYSysllYl7J11CMQdKNGXQpRD4t2K4+GLfS/Of4gsJiYa8eEER6VGKIwojgepCZgs4+JubYPdSZLi7au2pfcR0RdjOEQQmcr0pHxQmTF8KS1NA2rME2xnfo/nvMYXqxR45kNRWO2cx9sHc5R5WI8V/DBEGJtLGyLH40iZ555piNfy8Ys7+WYP/jBDxrsQuOW9di1/DUMhKgcTef0tDUNAeEbK/QecYxQzOV/mD/QkIJnrhnPze9//3vPIl3jnoUvpyX5QCjQItqacEs8M20vp2tRXCqXQP3m1wq4DgpifLIxCoi05vPi4MP/6Ms3ehxeLBQkEOhoOWMcMDLkbEQ6CjZ82AcPX47BUAWZ9kWMzHXogjAjzJYHhSRaBPEk5oXLSzNaqAt5wIsXMGIuLHgpU6DkehhSoBiGaJxk2d5rPJkzdUNjsofQKOxbgd/W432SjcXtm81+CiMCIiACIiACIiAC5UoATzfzdmMYK7y8EBEQdBFH6f6Pdxzd4fF+zGQIfXil4Z3FMUyooZxsnmZxwkR4XMQFM4ZUMPHB1rGk5xRGnIknQwZQ3uc33oN8iAfXhqclnmvmsOB3LOMvyurUKQoRqmzYBsScpPKyiaigwCs46t0X58RhzhRhA4ChzMSXe5FUB8FTkWE2sHDYPDt2MZbwNGcMhlAgrUeNdGpGr0g8Ls1sCAb7b0vqLtbz0tZV2hL+oUgVF/+wbksdCzEXhyGGGbS0Y16Z1I0tjSCOmzHsQtzzbMNWUO/kGQ7r7tG6mx3LhgZMcuixcI25RFNgaEjSF16rl1xyie+lAB8+PAPZ1uGJt7GDs3nVRq+HOj4W5psWJq4BiziSXmnIsefBzsN++dwj8hLzzLVzIzTT+IZ+wRCb9AhgyBK8cfmgg+DQJxMBEcidQMUJurlfostakA2PzQsmOj5quD3db0TPQlrS0x3btpEZYhSGcokn12UvVTtWpiWFMjJhmQiIgAiIgAiIgAiIQPUToKzIB8cIvK0YF5EPxriidFHPxuhSj7DDkGKIaHgDm9DDb/PuSzpWOLyYicBJYVmP+IloiYh7xRVX+MmSWM85w/PiHRd2WSZMORrXwti/CC6IVUkiaBj3q666ynPAiePHP/6xd+RgO7yTDIGOOgKiDt6ouRiiUK6Wru4STiKMSJ/OgzvX81r48BoRmUJHGQsTLklX5sHI+qinYxiW+NPtvVINcZTGmGyN3qvwQLTEE98EXfOwtuEWOJ6JtfyOE9FZHxoOWaGga8JtGKacf+OFTGMIY98ixPIcMzEhHyYC4xllMrJs6uYhOxtmMOnabaiHcHu6NBuGC8+Tzz1KSjt44XLN5MPkMzxP4fAeNMQxCWGxnMbCayrV71w9cqMeu6WKl45bWwRqQtCtlltKoYYCBUvrvmTdnarlGnUdIiACIiACIiACIiACjUMAYZOKNV3qrYt59Mw07CM60EWdcXYRI+jplY2Qh2csQiJiLl2oGXvTJsdB7M0kUIbCHzPfpzPiY6IlAgkTAyFsvPPOOz7eiE3T6saJJC4XX3yxFzAzeQinO19jbAs9Yxk6IW4y6DAe8+fPT3m32jBxJuTg7Zhk4bBqoaCaFL7Q9cQzyULPWIt7UlhbT2/CXCy8Rrp5ZxLU8EgP586AV5LwhGhXa4Zo+/jjj3uPfob14DkzDowtbBaK8+Q56YwGhjB8urDluo08iUkmGW+cngTkn4ikNvwCjTU0jjHetHm8J10LLPCeJVymiSRDETzpeEnrQ+b53KNw//AcxPtnP/uZH0MXT25EaT7Wg4BGP7zgTznllHC3sv0tMbdsb03NRUyCbgXdcrxy7eVItOnOkNT1pIIuS1EVAREQAREQAREQARFoAgIIW4wNytAKSYKuRQtvMgQJhEE8rDKJseyHGIxwi8css7nvtttuvgsy2xjTMZOFY7GaOBzdBy8+vMoQ2Oghh/cl5WXEYMrKDB/G5/jjj/diNBO0YcSn3AVdur8zORj20EMPZRR0zQuZ8DacG16+CCcI93RjjxOOGKvYzMbhtP+lWMaN02vnIT2amdBqjQfhGK0WhqWJQuG6dL9DoZxu73FCOR7RxoV4hJ6H1MmYzClqNsxfdH21/8eTH0EXL1QESyYkx0iDobgYOiLhnR8n/iH24+HMWLFxabVSWPKskReRdhlD1oYSZOxo0sn111/vWZFXIfAyBEM6gx35L3kqAnGc4WmOKBod8iAubNK6Qu9R3HuBODF8CpPP8yyRLix/4tll4kuYkE8l5VFJ8W2K9RJzm4K6zplEoHnSBq0vPwKMo0WXKAqoDP4eN5lZNNaE52MeC9Ht+i8CIiACIiACIiACIlCbBKxSTffodDPbU8m2LtQIq3GV9iSCu+++u9+E0EOXW4wxSEPhwK+M+epRNwmSCUI26Vk02F/+8hd37LHHunPOOcdvwjMXTzAmPosaZWcbyzdTN/vovk3xn7K/zfGAIHv77bfXm3gqjBPbGfMSQwxj7gzMusDzO5ywh/9m99xzj/1sFGcR2CPeRI10ZpNhMdybTSpFXQbD85MwofE/OuleuD3uN96flv4ee+yxWKYIlHhO8qGHZOhEQxf6OKORoBaNdGoTX+FpyZi6WDjcAv9poIE99uijj/pl9IshQ2B++eWXRzfl/T+pISDvA2axI/kd3rd//OMf6w3Xwa6k54MOOih1FNJX1KJxtufYeh1Ew+PZfu6553p2//nPf6Kbs/5finvEvYbFhRde2CAeNCDR0GeWznvfwjTlUmJuU9LXueMISNCNo1Km63r27OmYwZIWvKRJDaJR5wXLPuFkB9Ew+i8CIiACIiACIiACIlB7BPAWM8GUiWoYJzcqLkycONH99re/TXlBhiKNCW6Qo0s6+4a9yVhPhX2rrbbipxckWXLebIy4HX744T4ocUPQtC75eHQh8r744ot++x577OGXlHsxtjHbezhREt6fDBmBWTj/p4y/GKbCRDCulcmV8Oiz4ddY4pnLGJU2sdFxxx2XGhKAOkDXrl39FT755JN+PE8bogDx5Morr0x5ouL5V4h3Xy4YmdiJYTzs/jCh05///OeUYBsKXmG9B9Gae48hYsMDz9A4w5sRQ0Bmsjf2M0bWnRxvUDwE8SDE4ImHqQmOCJU4xjD8g3lG0lX+6quvdiY+ISo/8sgjqcn+/IEq9ItnGM/kTJ8oc5uAmrSI6EjeEK1/8jybeMdkYTQkmEDPvUFchy1mDRmFYLT8ieeetGL3K9tjZsPCJiKLHtOGPGE9InUYjjQWjgmOo5ZZUpwZ9sOe42uuuSY1Fi374Ql8ww03pJ6DQYMG2eFyXpbiHjHxGUa6IB+3PJx1PHevvPIKP71HNtpFuZrE3HK9M7UdLw25UNv3X1cvAiIgAiIgAiIgAiJQowToRo7XlI1beOONNzo+CFj0CEMEC8deZZKtUIxFfKALLfM7IDLwQYi54IIL6hFl2AXz2mMDXbSztf333997YI4aNcp3U6arsp3TjtG/f39HOIxz4V1JnM4//3wvWCMI0u2XdRiiBeEqwRgWA7H2sssu84I5AjsiJkYX5qiAjmAWFdIYKxlPZsLChk90X4T3xmSCsEp6wUhHoUBI/MOeiHiF33XXXT4MQiAfuuObGEjc44ZdsGESCIf3IvarX/3KIbbh8UhaRUxCID/jjDMaxAMh/ZhjjvH78cVEemPGjPFDfDA2M58wHqmAFfzDJu3KdAl4xMPdjLFyaXAx4781RNg6luQfcEOERNTkE2XYuXPnevlMuH8uv7n/nAeRmEYpzNJcNsfJhgXDotBDIGomjNKIwti3Z555pm8UoJEhbDRDqOV6zdLF+cgjj/SNHjwrlldH2ZGm44YDseNnsyz2PcIZjSEnaCSwidDwUiYPQOQ1Y9KwSrFME5xl2l4p16l4lj8BeeiW/z1SDEVABERABERABERABESgJAQGDhzoxTITRDkJE4fh1WZiLoIpgtgJJ5zQIA5MVsbQCGZxwzEwgzkCB4ZoyFi3UQv3C38TFjGTidlsCDETZjkGM8nj2YmwgdFVn+7aNkYv18C12D7Ehe2hV5zfsYy/EKQZSoK4I8SahWIu48IiSoaerRYO4Q2RHZHURDbbF24Mi3H22WfXuy/hPbDj5LM0L9lw38GDB3tx1OJiYi7XdsABB7hhw4aFwb23MeksnCQPkRYhmPs8dOjQeuHtD56KiEl2HtaH18UEXgzPYZOvWTwIR/o466yz6o2dSxqGE2Mymyelicocg3iHceQ41WohR66RdBSK8KEnf8iAcOQlDH0SZUg42HKv7XlmnaWh6DnZls4OPPDA1NAa6cIVc1sYR55F0rM9s4iXJuZy7Xh8n3zyyfVOny7OeOjSAIcIbGna0h/HIw8/4ogjUscL42IMUxvT/MjnHtnhwnOG60477TTfkGfxxiPbxFzydeJt3tu2X7ktTaS1ZTR+tt6W0e36LwKlINCsbnyW5aU4sI4pAiIgAiIgAiIgAiIgAiJQOAGbZIjht0ppdIVF+GSSMYRQur/iMYZIWohxzIMPPtgfgq7q1gU3n2MiiOCNiecqnromCsUdy66HffAI4zpMvIsLXynr6Do+rW48WUQRxF7uUZxInnQ9dP/mw742Pm1S2GKux9MYj8khQ4Y4vL3x0ONeIuwgOmcTF7rOcwzSZujZWGg8SSszZ8706YnjZsMThsSHuFdDuiqUYT774zlPfsO953nORXjM53xNsQ9yC41kpBV+Mxkc6dfEzXzixHHIVxmygGPRkGCTB+ZzvHT7FPMeMdwLzw3xRjiGRdzkeOnio20iIALfEZCg+x0L/RIBERABERABERABERCBsiPQWIJuqS78lltu8ZOU4cl78803l+o0Om6ZE4gKumUeXUVPBERABERABMqaQIuyjp0iJwIiIAIiIAIiIAIiIAIiUHEE8LykWz/jJt50000+/nhlykRABERABERABERABAonIEG3cIY6ggiIgAiIgAiIgAiIgAiIQEDg+eefrzcBEWOSMmakTAREQAREQAREQAREoHACEnQLZLjk6yUNjrBSi5Vcs+bNGqzXChEQAREQAREQAREQARGoBQKM6cgkUoyTuMUWW/gJ1dKNd1sLTGr9GpnMiQmiGPNXJgIiIAIiIAIiUBiBsh5Dd/ob090Nh1zvVum0ijvj9d8UdqUl2Pubhd+4Pww4v8GRD7n6UNdntz4N1muFCIiACIiACIiACIiACORKoNLH0M31ehVeBERABERABERABEQgPYGy9tBdtnSZj/2SRQ29YNNf1oqtY//3nhv18Ltunf7ruB2P3zGbXXIK02ylZm6D7TZI7TPl1SkrftfNOikTAREQAREQAREQAREQAREQAREQAREQAREQAREQgWITKGtBt9CL/WTKHDfm8dFuyeL8BOFM52/RqoX72W1HpoJdNuRS9/n7n6f+64cIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIFJNA82IeTMcSAREQAREQAREQAREQAREQAREQAREQAREQAREQAREoHYGy8tBdMH+Bmzpuquu/Zf/YK5774Vw3/Y1pbs60T12nHp1c78G9XdsObeuF/Wj8R27BZwv8uk+nzvHL+XO+dKnhEL4N3XXTrq5V21b+38cTPnLzP13g1thgDTd9+DT3ad3x168bSmG9LddzH47+0E16caJr076t67dnP7dKx1W+PULui9kfzHaLFy126/VaL/edtYcIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiEDNE2hyQXd53Xiz0ydOd++9/Z774tMvXLNmzWIF3Xcfedfd88u7692w9mu3d0f962jXsXvH1PqnL3vajXtqbOo/P2aOmuluPvymeutOfOgk16VvF7/umSuede/9d0y97e7yZ9wOR+/gXr7h5dT612973Q17dJhrvlJ+js2zZsxyY98Z615/5nXXo3cP12+LOoF41fwF4lTE9EMEREAEREAEREAEREAEREAEREAEREAEREAERKAmCDSZoDt/7nw3ZsQYN23CNLd06dIU7FZtVnjNplbU/Vi8YLEXc5mArOcOPd34Z8e7GW/NcPNmz3MvXP282+/C/VPBN91voOtW532LTX55svfMXb3b6m7LoVumwvCj/Vrt6/23P0yeNvqx0X4sXMTcNXt1dr133tALu59M+th77HYduOL4tk+2y1XarxBvlyxZ4ia9N8l/OnTs4Ppu1tcLvIjZMhEQAREQAREQAREQAREQAREQAREQAREQAREQARFIItCogu7yZcvdlPFTvJfqvM/npeKEkLnWumu5Ppv1cV26rfCaTW389seAvQe4gy492DVr3szteMJO7vmrnnN44464Z4Tb94L9vGcvQfvu0S+16/K6Xwy10HnDtfw+qQ0JPwafPMTtcsouboPte7pbfnqzD3XYNYe5jut19EMyjHzwHTd77GyXr6Dbu39vP9zC+FHj3aQxk9yihYvc3M/mulefftUNf26439Zvy35u1Q6rJsRQq0VABERABERABERABERABERABERABERABERABGqZQKMIuoi3o98a7WZMmuGWLVuW4o1wuWH/DV2vfr1cixbpo7JTnYiLmGvWd/e+XtDl/6K5i1zb1eqPpWvhclna0A0dunRI7bZa19X8b7x8sUXzFvplvl+t27R2m2y9if989vFn7r133nMfTPnAeykjdvNpv1p7t/GmG7ueG/esd835nlP7iYAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIVAeB9Cpqka7xpf+95MfH5XAIt4wfyzAD7Tq0y/oMneomLAttlU7f7buwTmQthqDbss0KHC3btkydysbLbdF6xbbFC75ObSv0R8fOHd2g7w9yeC5PmzjNjRs5zn0+53M374t53mN3tY6ruTXWrn/dhZ5T+4uACIiACIiACIiACIiACIiACIiACIiACIiACFQugfxm9yrgepkEjTFzw3FzMx2u9SqtXYtW9bXn0FsXQbQYtlLLlfxhTMTlvGYrtViBatmS78b7tW2FLpctX+aWfLPELVv6nfdyocfU/iIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAtVHoL5KWqLrG7zXYPfeiPfclHFTHBOCTR0/1X9WXmVlP9xC7wG9XavWDSdDK1F0Mh62sSYn+2jmR27s22PdrPdnOYRus45rdnR9N+8r71wDoqUIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAn0CiC7srtVnZb7rSl/7w/+X035u0xjvFjv1rwlRs1fJT/dOrcyY8b271n99QEZ5V6j75e+E1i1Bd8ucBPCjd13FT3zTffhWvRsoXr2aenF3Lbrlz4eMCJEdAGERABERABERABERCBiiTwvfM+rch410qknzqnU61cqq5TBERABERABESgiQk0iqAbXmO3nt0cn4VfLfTeqZPfm+yFzU8//tS9/L+X3fCWw93Bxx4c7pL37zartvH7zp/zZd7HyGXH1buu7j5//3P3/ogZbuC+Axvsyhi5I14eUW89Y+Tijdu1R9d66/VHBERABERABERABERABESgcgiMHz++ciKrmIqACIiACIiACFQ0gUYXdI0WXqib77C5/3w4/UM3+q3Rbs7sOX5IBgtT6HK1dTr4Q8wcNdNNeHa86zmol7Nxcgs9dtz+a/fp4qa8OsWN+e8Y13ePfm6D7TaoF2zhgoX+f8tWLf1QE3027ePatF0hOtcLqD8iIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiEEOgyQTdMC7rrLeO47N40WI/tm64rZDf62+7gWu/dns3b/Y8d/uxtzsmOVut2+r+kEOvGOrW2GCNQg7fYN/tj9revXLjy27BpwvczYff5M/Xok0Lt/VhW7shv9jFrdtjXbd2t7Vdl25dGuyrFSIgAiIgAiIgAiIgAiKQjoC69KejUw7bNORCOdwFxUEEREAEREAEaoFA83K6yNZtWruNB26cilKz5s1Sv6M/wm1Jk5i1bNvSHX3nMW6Ho3dwq3RaxS1esNh9NG62/yz9eknqkLa/HdOWqQB1P2ydhQ232W/E458/frLbcOfeXszlfIi7i+d/7YN0XqezxFyDpaUIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiEDOBJotr7Oc99IOIiACIiACIiACIiACIiACjUJg5MiR/jw9e/ZslPPpJCIgAiIgAiIgAiIgAuVNoKw8dMsblWInAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAk1LQIJu0/LX2UVABERABERABERABERABERABERABERABERABEQgawISdLNGpYAiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIi0LQEWjTt6XV2ERABERABERABERABERCBQgi0a9eukN21rwiIgAiIgAiUlMD8+fNLenwdXARqkYA8dGvxruuaRUAEREAEREAEREAEREAEREAEREAEREAEREAEKpKABN2KvG2KtAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQC0SkKBbi3dd1ywCIiACIiACIiACIiACIiACIiACIiACIiACIlCRBCToVuRtU6RFQAREQAREQAREQAREQAREQAREQAREQAREQARqkYAE3Vq867pmERABERABERABERABERABERABERABERABERCBiiQgQbcib5siLQIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiUIsEJOjW4l3XNYuACIiACIiACIiACIiACIiACIiACIiACIiACFQkAQm6FXnbFGkREAER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69ChQ73w+iMCIiACIiACuRL44osv3KhRo/xkn127dnXbbLONa9UqXvNgglHGip82bZpbvHixf29tuOGGrlOnTvVO+8knnzgmEMWaN6/TG+reYaF99dVXjnenGe/BTEMhWdjGXn744Ydu6tSp7v3333foQmussYYfPx9WxbJFixa5ESNGOMb7nzdvnmvXrp1bffXVHRO0rrPOOgU5KBYrjuV4nKoUdL+c+6Ub82adEDlxmlu2bFmKOyJbr369vMjWuk3r1Prwx7BHhnnxj3U7/3ywu3SnS7ywN/7pcW67I7dPBX3pupdSYu5Jjw5zq3dd/dttW9QNubCue+A3D7jnr3rObX7w5qltLdu2dIdcfWid52nvel64hFm54ypeLEQM/f4Zu7tWK6/IQGa9N6tOfJzgjz3070Ndvz1XZASImXccd0dqWypidT8OPPJAN+v9WV7I/mjmR/6hmzx2suPTfvX23mt3/d7rexEy3I/fiJJTxk9xY98Z6+Z9vmJICNYzBhpDVODZ3KVb8gRneNq+csOKydB2qhPG44Yo4HhmCLPH33+8a1M3DAK29eHbuBsPucF74M4eO9ut038dvx5xHpEXW3+b9d1Prj/cwRPb6tCt3P2/vt+9c//b7tHzHnUn//fk1HnX7NXZHXP3sQ2GzcC7+fqh1/lhLF6//fV6gu6Ie0ekPIaPu/d4L9Rznk3339RdtdeVDTysO3Ts4IYeN9RNGTfFjR813jceLFq4yI0aPsp7SsOt3xb9GniEc0yZCIiACIiACIiACJQzgcmTJ/tJ0dq3b58o6H722WcNJkMZOXKkv6xu3bqlLg8B97bbbqsn/FJB5MPka4ceeqjbdNNNU+GpMDPJCmP+PvXUU+7JJ1c4XxCAsqFMBERABERABCAwffp098ADD6RgIMput912qf9JP9jv5ptvrrf5sccec+ecc46LjiWP6HvttdfGjgu7zz77eA9VGzsesTY87vnnn+/fZXai119/3d15553211100UVlJ+giWNM4S+Nq1O6//343cOBAd9JJJ0U35fyf9/w111xTT7sLD7L77ru7Aw44IFyl398SqBpBFyFy8ri6AmedNy6CrhmtIV036Or6btrXdez8nYetbQ+XiKV4cpq17dDWi6/vPvJuva73FCDNU3P33+6REmxtvwH7bOIe+8NjXhSc+upUt/rBK8RehlLo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/tsWap3lsBgMPHdwYYvHLJ1iLi7YevfubR5N1fq4JQESIAESIAF/COhT15rXfazp7q0zn3Pfna9KlSrGYxU3K92iJmL13nfffVK/fn13MXOM8AWlS5cWxIJVi4qK8uoAqOezY+sen/vY3ebgwYON6Dx69Gg5ccJzDSoI1926+X5C+95775UJEyZIdHS0LeRq/U7HR3CtXr267N27V097bJs1ayYQ02neCYRYizmd836KqSSQPgG8dRAzGBZaInWVx/RL8SwJkAAJkAAJkAAJkEAgBODNCvMVPw6ervnNkpKSjKgLURhCMEIz0EiABEiABAomAecNvPw+wlOnTsnu3btNaACIkVhArKAbFkhD3FyEQ6hUqZJERERkuNBZIEySk5Nl3759ZiE27COWLjx9IYTnZZs+fbrtxQyP5p49e+Zod+mhm6O4C1ZjuLNCIbdgzSlHQwIkQAIkQAIkQAI5QQACbo0aNXKiKbZBAiRAAiRAAkEjAO9UXzdYg9ZIHqsIonV2CtcIQcHfBIFPOj10A2fGEiRAAiRAAiRAAiRAAiSQYwQKoodujsFjQyRAAiRAArlOoCB56OY6THagUBCA929GHr9FCgUJDpIESIAESIAESIAESIAESIAESIAESIAESIAESIAE8jABZyiH9LpJQTc9OjxHAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAtlMwF8xF92goJvNk8HqSYAESIAESIAESIAESIAESIAESIAESIAESIAESMAXgUDEXNRBQdcXSaaTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQDYSCFTMRVco6GbjhLBqEiABEiABEiABEiABEiABEiABEiABEiABEiABEvBGIDNiLuoptiYu2Vt9TCMBEiABEiABEiABEiABEiABEiABEiABEiABEiABEsgGApkVc9EVeuhmw4SwShIgARIgARIgARIgARIgARIgARIgARIgARIgARLwRiArYi7qo6DrjSrTSIAESIAESIAESIAESIAESIAESIAESIAESIAESCDIBLIq5qI7hVrQjYveJuO6viK/XftekKcmsOr+eet304/VX84MrCBzB0xg5dIl8tvPP/hd7uiRw7Ju9Qr5Z+E82bppgxw/dszvssxIAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAkogGGIu6iqmFRbG7bkz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CZAACZAACRRIAhR0C+S0clAkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIFkQAF3YI4qxwTCZAACZAACZAACZAACZAACZAACZAACZAACZBAgSRQrECOioMiARIgARIgARIgARIggUJKYPfu3XL69GkpV66ceRUrxp/8hfStwGGTAAmQAAmQAAkUUAL8dVdAJ5bDIgESIAESIAESIAESKJwEfvjhB9m3b589+AsvvFCuu+46+5g7JEACJEACJEACJEAC+ZsAQy7k7/lj70mABEiABEiABEiABEjAg0Dnzp2lXbt2UqlSJZO+cOFCWbt2rUceHpAACZAACZAACZAACeRfAvTQzb9zx56TAAmQAAmQAAmQAAmQQBoCXbt2NWnnzp2T1157TY4cOSJbtmyRZs2apcnLBBIgARIgARIgARIggfxHgB66+W/O2GMSIAESIAESIAESIAESyJBASEiI1KhRw+RLSEjIMD8zkAAJkAAJkAAJkAAJ5A8CFHTzxzyxlyRAAiRAAiRAAiRAAiQQMIGwsDBTBouk0UiABEiABEiABEiABAoGAQq6BWMeOQoSIAESIAESIAESIAESIAESIAESIAESIAESIIFCQICCbiGYZA6RBEiABEiABEiABEigcBM4depU4QbA0ZMACZAACZAACZBAASJAQbcATSaHQgIkQAIkQAIkQAIkQAJOAmXKlDGHO3bskLNnzzpPcZ8ESIAESIAESIAESCCfEqCgm08njt0mARIgARIgARIgARIggYwI1KxZ02SBmLtq1aqMsvM8CZAACZAACZAACZBAPiBQLB/0kV0kARIgARIgARIgARIgARLIBIG2bdvKxo0bZdmyZTJmzBiZPHmyVKxYURo2bCg9e/bMRI0sQgIkQAIkQAIkQAIkkNsE6KGb2zPA9kmABPIsAawInpSc7PE6c+ZMnu0vO0YCJEACJEACbgIhISFyySWXSMuWLc2pgwcPypYtW8zLnZfHJEACJEACJEACJEAC+YMAPXTz2DwlJ5+WpctXBNSrRg0bSHjFCrJsxSr519CHzP60P34JqA5mzhyBr0d/Lx999qVc2ecyeeWFpzNXSTaWuuffj0r00uXy0rNPylVX9snGlgpm1eC3YuVqj8HddMNAefTB+z3SnAcffvKFjPpurPS9/DJ59cW8955w9pX7JEACJEACBZ/A/v375Z13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Aj4JrFixwpxr3bq1zzw8QQIkQAIkQAIkQAIkUHgIUNAtPHPNkZIACZAACZAACZAACeRDAhR08+GkscskQAIkQAIkQAIkkI0EgvdMeDZ2klWTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAlYITYJgQRIgARIgARIgARIgARIgARIgARIgARIgARIgARIIH8QKJY/uslekgAJkAAJkAAJkAAJkEDhJqChFwo3BY6eBEiABEiABEiABEiAHrp8D5AACZAACZAACZAACZAACZAACZAACZAACZAACZBAPiFAD918MlHsJgmQAAmQAAmQAAmQQOEm0KxZs8INgKMnARIgARIgARIgARIwBOihyzcCCZAACZAACZAACZAACZAACZAACZAACZAACZAACeQTAhR088lEsZskQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQEGX7wESIAESIAESIAESIAESIAESIAESIAESIAESIAESyCcEKOjmk4liN0mABEiABEiABEiABEiABEiABEiABEiABEiABEiAi6Ll0ffAl6O+k19/n2x699OYkVK8eHGzf9+wx2RvTKy0btlCXn3x6Tzae3aLBEiABEiABEiABEiABEiABEiABEiABEiABEggOwhQ0M0OqkGoMyEhQfbsjTE1nT17zq4RYi7SIyMq22ncIQESIAESIAESIAESIAESIAESIAESIAESIIHcInDmzBk5ceJEmuZLliwpRYsWTZPOhKwRoKCbNX4sTQIkQAIkQAIkQAIkQAJ5jsDMmTPlvvvuk0qVKsm8efNyrX+rVq2SQYMGmfZXr14txYrl/uXHhg0bZPr06RIfHy9JSUlSpEgRefnll3ONERsmARIgARIggYJAYPny5TJu3Lg0Q7npppukdevWadJzOiExMVFeeukl0+xDDz0kNWrUyOkuBLW93P9FFdThsDISIAESIAESIAESIAESIIG1a9caCI0aNcpVGOvWrTPtN2zYME+IuTt37pTRo0fbTEqVKiW1a9e2j7lDAiRAAiRAAlkh8PXXX8vJkyelT58+Uq9evaxUFfSyeBL8hx9+MPXeeeeddmjPYDZUp04dU93Ro0fl4MGDZj+vfM/u3r3bHmpERIS9n9d2/J0nCrp5bebYHxIgARIgARIgARIgARLIIoE1a9aYGlq2bJnFmrJWHF65sNzuh45i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BZNAkYI5LI6KBEiABEiABEiABEiABEiABEiABEiABEiABEiABAoeAQq6BW9OOSISIAESIAESIAESIAESIAESIAESIAESIAESIIECSoCCbgGdWA6LBEiABEiABEiABEiABEiABEiABEiABEiABEig4BGgoFvw5pQjIgESIAESIAESIAESIAESIAESIAESIAESIAESKKAEihXQceXrYZ09c1bwclpIkRApWqyoM4n7JEACJEACJEACJEACJEACJEACJEACJEACJEAChYwABd08OOEzP5opMz/826NnEQ0jZdj/hnmk8YAESIAESIAESIAESIAESIAESIAESIAESIAESKBwEaCgmwfnu2LNilK/c33Ts8OxRyR+24E82Et2iQRIgARIgARIgARIgARIgARIgARIgARIgARIIKcJUNDNaeJ+tBc1IErwgq36fZX89PCPfpRiFhIgARIgARIgARIgARIgARIgARIggf/P3nnAVVl+cfzIEGQPFRGVjQwX7q0NNdvZtKmZacOmldk/bWdpZjZsWGq7LE3TcmXu3Js9FBAVENkyBPw/57k8L/dyL8gSAX+nz73vs8f3Rbr87nnPAwIgAAIg0NwJQNBt7ncY+wMBEAABEAABEAABEAABEKh3AqUFBVRSkG80rqWjE1GLFkblKDAmUFhYSAXiVdEc7O0FQjCsyAV5EAABEAABEFAEIOgqEvVwzcvNo2ORx6hL7y4Go/EBZycOnaCUqBTKO5NLzp1cqH2IO3Fc3PqwI3uOkG+QL9nY2dTHcBgDBEAABEAABEAABEAABBqUwOEpE+nMxnXk+9w08pzwmMm5C06dpB3XDpB1g/7dTVZt3Uy2a6jCuI9mU9K3C42mG7rzCFnYOxiVN/eCT7/4mr778VcaPfIamvnKi9Xa7ucLF9NPvy4zart+9e9kb2dnVN7QBUfDI+iRx56R065fJdZkf/nX1NAMMB8IgAAIgEDjJNAsBd24uDj67LPPakX88ccfJ19f32r3vXDhAiXEJFD4gXDKTM+U3yTrC7q5QsD9fepvFLctzmjMIZOG0NXPXkPmFuZGdTUpOLr3KLGo6+TqRMGhweTp74lvtGsCEG1BAARAAARAAARAAAQuK4GMXdvl/DaeunMkTC0mNzpCFpvb2pJVm/pxjDA1T3XLLB0dqc21o2Tz3MgIyj+RSK06dLoixVyGEBYe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gtxD24YKXidyTsiOTTtkd/RuJezCi9dqy95eqnZ7XdW7RK9a3WbAdf1l3mPzZOsPW6XH5T2k/bAOquhowlFZ/Poile52aTcJaFjozavb6m3Tjo4QEGmJabJh7gbpPr67WMM5QICG5zC8cVu1ayVd+nSRBsHFC8S6X25JgARIgARIgARIgARIgARIgARIgARIgARIgATODoEahqDnVatefbvyiCJx+aBGZ4eIB456YN8B8avpJ4i7C0vclCjvXTlTpe/65W4JCXfkq4xi/uSdypO3LnpLjuxJVTVa9W6lFlGLWxFntrjb6KtxCX1hEba3L3vb9AxGQyyy1rRDU5n6yY1yIvuEJO1Nknad2omPD9fHM8EyQQIkQAIkQAIkQAJeRGDz5s1qNOHh4V40Kg6FBEiABEiABEiABEjgbBGgilcJ5LFImhZz0f2KmSvUUSJHdy6TmIvKfsZiZ7d8c4vACxe2b/0+0WJu86gWcvfCe0oUc9HGx9dHbpp9k8AruH4zR/iFrCNZkpWWjWKpHVBbIjpHUMxVNPiHBEiABEiABEiABEiABEiABEiABEiABEiABLyfAD10K/kcHd59SN4c+6Y6yvSvZkhYjzC3j5ibkyup8YeNBdjypXGbxiUuqOZ252xAAiRAAiRAAiRAAiTg1QTooevVp4eDIwESIAESIAESIIEqJ8AYupWMfNWsVeoIrfu2LpeYi8Y169QUeOXSSIAESIAESIAESIAESIAESIAESIAESIAESIAE/toE6KFbyec/Py9fCvIK1GJkCIFAIwESIAESIAESIAESIAF3CGgPXXfasC4JkAAJkAAJkAAJkED1JUAP3Uo+t75+voIXjQRIgARIgARIgARIgARIgARIgARIgARIgARIgAQqSoCCbkUJsj0JkAAJkAAJkAAJkAAJVAGBzp07V8FReAgSIAESIAESIAESIAFvJ8AYAN5+hjg+EiABEiABEiABEiABEiABEiABEiABEiABEiABEjhDgIIu3wokQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkcI4QoKB7jpwoDpMESIAESIAESIAESIAESIAESIAESIAESIAESIAEKOjyPUACJEACJEACJEACJEACJEACJEACJEACJEACJEAC5wgBCrrnyIniMEmABEiABEiABEiABEiABEiABEiABEiABEiABEjAjwhI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"/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g></g></svg> \ No newline at end of file diff --git a/2-ui/1-document/02-dom-nodes/inspect.svg b/2-ui/1-document/02-dom-nodes/inspect.svg index 60696ec0d..a894a5c0e 100644 --- a/2-ui/1-document/02-dom-nodes/inspect.svg +++ b/2-ui/1-document/02-dom-nodes/inspect.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="696" height="379" viewBox="0 0 696 379"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="rect-1" d="M0 0h696v379H0z"/><path id="path-2" d="M142 52v21.429l5.25-5.358L151.625 77h1.75s1.13-1.161.875-1.786c-1.203-2.947-4.375-8.928-4.375-8.928H156L142 52z"/><filter id="filter-3" width="195.6%" height="153.8%" x="-42.9%" y="-25.8%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1" result="shadowSpreadOuter1"/><feOffset dy="1" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 0.0941176471 0 0 0 0 0.0901960784 0 0 0 0 0.0901960784 0 0 0 1 0"/></filter></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="inspect.svg"><g id="Bitmap"><image width="696" height="379" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABXAAAAL2CAYAAADowb7lAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAFcKADAAQAAAABAAAC9gAAAABJFtRvAABAAElEQVR4AezdBbwtVdk44HXh0kiIdEldFBAQpLtEBKSkRJH+wEAx6LpKp0pJKCANKiXSDR8gISFIg5T0pRv3f975O/PNPrlP3HvOvvOs3++wJ9asWetZcy/wnrXfGdHISlIIECBAgAABAgQIECBAgAABAgQIECBAYNgJTDDseqRDBAgQIECAAAECBAgQIECAAAECBAgQIJALCOB6EAgQIECAAAECBAgQIECAAAECBAgQIDBMBQRwh+nE6BYBAgQIECBAgAABAgQIECBAgAABAgQEcD0DBAgQIECAAAECBAgQIECAAAECBAgQGKYCArjDdGJ0iwABAgQIECBAgAABAgQIECBAgAABAgK4ngECBAgQIECAAAECBAgQIECAAAECBAgMUwEB3GE6MbpFgAABAgQIECBAgAABAgQIECBAgAABAVzPAAECBAgQIECAAAECBAgQIECAAAECBIapgADuMJ0Y3SJAgAABAgQIECBAgAABAgQIECBAgIAArmeAAAECBAgQIECAAAECBAgQIECAAAECw1RAAHeYToxuESBAgAABAgQIECBAgAABAgQIECBAQADXM0CAAAECBAgQIECAAAECBAgQIECAAIFhKiCAO0wnRrcIECBAgAABAgQIECBAgAABAgQIECAggOsZIECAAAECBAgQIECAAAECBAgQIECAwDAVEMAdphOjWwQIECBAgAABAgQIECBAgAABAgQIEBDA9QwQIECAAAECBAgQIECAAAECBAgQIEBgmAoI4A7TidEtAgQIECBAgAABAgQIECBAgAABAgQICOB6BggQIECAAAECBAgQIECAAAECBAgQIDBMBYZVAPeTTz5JL7744jClaq9uvfPOO+nNN98cdp3+8MMP0yuvvDLs+tUuHXrsscfS008/3WN3+fbI4yQBAgQIECBAgAABAgQIECBAoK0ERva1t1dccUW67bbb+npZp/pTTTVV+ulPf5reeOONdP3116fLLrssnX/++WmzzTZLJ510Uqf6DvQu8Oyzz6arrroqXXrppeniiy9OZ555Ztpiiy16v3As13jttdfSddddl+LZueCCC9IPfvCDdNBBB43lu44fzX/88cfpjjvuSFdeeWX+5+PRRx9Nhx56aNp1113LAb777rvppptuSpdffnm68MIL0wwzzJDuvvvu8rwNAgQIECBAgAABAgQIECBAgACB9hXocwA3AoRHH330gEf8mc98Jn3pS19Ka6655oDb0kBK+++/fxo9evSwozjiiCPSz3/+82HXr3bo0JgxY9Kcc86Z3n777W67e/jhhzcFc6NiBHAVAgQIECBAgAABAgQIECBAgACB8UOgzykU3n///XLkW221VbrkkkvS7bffnmJl4A033FCei4399tsvxVe+77nnnnT11Vengw8+uAwuRVBqtdVWS0888UTaeOONm66z03eB3XbbLd17771p1KhRfb94LF7x/e9/Pz344INpueWWG4t3GT+bnnbaadPrr7+eHn/88bTwwgt3OchddtklrzMcg/dddthBAgQIECBAgAABAgQIECBAgACBPgn0OYAbX9eOctxxx6VTTz01rbvuummppZZK8803X5p33nmbbj7LLLPkx7785S+n1VdfPe2+++7p1ltvLetMOOGEae65504bbrhheWw4bkRe3q9+9avDpmvxFfpIRVAtk002WVpkkUXSqquuWj085NvRrwUWWCCttdZaQ96XwehA/JIiUn+MqzJy5Mg0zzzzpJVXXrnLW8b5CPRusMEGXZ53kAABAgQIECBAgAABAgQIECBAoL0F+hzA/eCDD/JVtDvuuGO/Rh5B3siBGiVeWhYl0ikM1/Lpp5+mLbfcMt13333DoouRLzgC4d19rT5yCw/HMlz71RerCORvuummQ/IStmmmmabHrk488cQ9nneSAAECBAgQIECAAAECBAgQIECgPQX6HMB977330kYbbZQmmKDPl5ZCsWo3ykcffVQeG64bv/jFL/L0D8Ohf88//3xab731hkNXateH+GXD5ptvnl5++eXajd2ACRAgQIAAAQIECBAgQIAAAQIEhk6gzy8xixeYTTHFFAPqcXwdPFIpTD755L22E4Gz+Jl00kl7rTvYFX7961+nCOC2WmJVbHU1cQS7I4XAiBEjWm2i23ovvPBCnsahu5W33V5YORGrp+Mr9/EzGKXRaOSrUd966630+c9/vt/tDqRfsUI6UnGMzRK/aPju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17o73a/jETwsAm4d8+b2q8GxeFHkB66Wd999tynwWj3X1XasOI6ctzPPPHN5OnLKxgrYas7ieJlbd2W66abr8lTkLY48tkWJ/LORXzhWMhelq+BtcS5ebFZdvXrfffel4bDiNFuEn+cMjn5GUDpeWNdbiRW71WB7b/Wr52OFerxUL17eFwHcLH1Fp2B7tb5tAgQIECBAgAABAgQIECBAgACB4SvQNgHceBlTV6VYZRkvgKqu4OyqbhybddZZuzvV7+PxErEigNvvRvp4YcfVr61eHqkOBloKw2uvvTZ/QVas7owVtAM1iEB4rMC++OKL8y4WL1mLF8oV5fOf/3yx2elzpplmyl9kFy8hixIvPRsbpa/2L7zwQtmNCKjGS/p6K9WXpvVWt+P5WMEbP1FitW8EkPva545t2idAgAABAgQIECBAgAABAgQIEBgaga6jokPTlz7fNXuJVpk+IXKutrKysc83GaYXFGkahqJ7f/vb39LPfvazfDXpCiuskG644Ya00kor5atlr7vuugF1qchjG41kLxLL24rcu0WJOe+pRJqHIoAbK3jHRulrMLQIREdfIrXBuHxOL7vssjz37h577DE2KLRJgAABAgQIECBAgAABAgQIECAwlgWGXQ7cvoy3upo0cqb2FtzrS9sd63a3ArhjvfF9/5xzzklLLbVUHryNXLaxCjeCt4NVqjmLF1hggbzZGWecsWz+mWeeKbe72qimdphtttm6qjLgY30NnldzIEdu5rFdFltssTxtQnGfeNneQAPrRVs+CRAgQIAAAQIECBAgQIAAAQIExq1AWwdwI6haBPmC7YILLuhR76OPPkpHHXXUgL/q3+NNxtHJvq4CHYxuxcvjvvWtb+VNRcqEeIHcRBNNNBhNl238+9//LreLua3msb377rvL811tvPnmm+Xh4vrywBBtVPP2xmrl3lYGR5D6xBNPHFBvI1XDxhtvXLax/vrrp+eee67ct0GAAAECBAgQIECAAAECBAgQINAeAoMawI1cm+O6VF9cFl8T/+CDD7rsQvRtp512SkcffXSqrojssnIXB4uv83dxql+HqoHG/jQw2P1ppQ8nn3xyWS1eODY2gsjx4rEokQ83gsRRqgHcSI/wz3/+Mz/e1T+efvrp8nBxfXngvxtvvPFGx0N92u+r/fTTT9/0orh999232/u99dZbad1110233nprt3VaORFzE/NVpKSI/MQbbrhheu+991q5XB0CBAgQIECAAAECBAgQIECAAIFhIjCoAdx33nmnaVjvv/9+0353O9WAWHW7Wr96/NNPPy1P7bDDDuV2rDCMFaJdBUcPOeSQfMXo3nvvnSaeeOLymp42pphiivJ0pGiI/KUDKdNOO215efHyteJABJivuuqqYrfL1ZIR1CzK888/X2w2fX788cflfnW7ONgxyF51Lep091kNjr744otN1SJw/o9//KM81l0gvazQxUa8rKwIXB577LFpyimnzGtFsLgIRMaBP/zhD11cndIrr7ySp3aIk2uttVZacskly3pTTTVVud3VKt5rrrmmPB8b0Va1VJ+Fak7eap2etn/yk5+Up88+++x04IEHpupzHCdjvuL5DYddd921rN/fjamnnjr9+c9/Li+/884707bbbpu/1Kw82GEj/gzFKvXwGOjz3qFpuwQIECBAgAABAgQIECBAgAABAv0QGNQAbsevaPeWr7To75gxY4rNFC8j66pUA2qvv/56WWW11VZLyy23XLl/4YUXpsgBesABB6RLLrkkD/ZFncgDuvbaa+cBrLJyLxuzzjprU40rr7wy3z/vvPPSFltskW9HQPTll18u63UMbJYnso0vfOEL5e5vf/vb9Kc//SkPNkfgNoKUsTq4KI8++miKF1BVV0zON998xekU44zga9its846KV4sFqVqU3UtLowVntXSVZ3q+ep2BASLcsIJJ6TjjjsuXw0bHquvvnqTwxVXXJEi5ULkyO1YugqAxgrR+Np/lJjPb3/72+Vlk002Wb6atDgQwfhbbrml2C0/f/e735XbVcs4OGrUqPJcBONjFWxYRTB3t912y1enlhWyjZNOOim9+uqr5aFqGoSbbropvfDCC3kANgKt4dBb2XnnnZuqxC8SVllllXTMMcfk8xwB63g+Ys5jfNWV5XFh9fnv6hcU1V+exPNYBF8XWWSRJrtzzz03/ehHP+oyiBs5pBdffPH005/+NK2xxhq9piRpGpAdAgQIECBAgAABAgQIECBAgACBsSOQBSAHXN59993G7bff3sgCb5FDofzJVow2LrrookYWfOr2HllAsbHqqquW18T1d9xxR1P92267ren8mmuu2Yh7FuXhhx9uZCs0m+pU+xHbSyyxRCMLfBWXtPwZ11XbmmGGGfL9LJjbyAJejSwQ23Q+W0HZiP5kAbRO98iCu40wqbZXbMfx888/v9O57EVhZTuXX3550/mirSww3chWOzey3KpN7WdBy0a2Ure8Plvx2chWVza1sd9++3XZ1/KiykbH+xd9j8/11luvscsuuzS1HcePOOKIvIXwqtbP0lnkz0YWeG6ceuqpjSzonp8PvyyoXLnr/21mQdmyjRj71Vdfnc9BtnK1ceaZZ5bnwrFjyYLdnZ6zan+yIGynZyh7CVojzKJkv1go2y+uiz7Ec/fUU0/ldXr7R/YLhU5tFG0VnzvuuGOn+XjwwQeb5jXL7dt46aWXytvFc9jR/vTTTy/Px8YGG2zQdO8sP24j+4VLU50sfUVTneiLQoAAAQIECBAgQIAAAQIECBAgMLQCsRJvQCVbZdsU9CkCUR0/sxWxne5z6aWXdntttgIwr7/yyit3WycCTkWJgFYEdjveN/azFY2N7AVmRdU+fcY9ikBptBUB3AhWZ1/17/Jexf0322yzLu8TwekIwBX14jPGGPeJgFrsL7300o3jjz++8a9//atTG9tss03TtRFki7Fl+X+bjlfbD/tsNWnTOKrnY0xFoLLTDTscyFaKNt0ngpynnHJKHnTMVrbmgfJoO9qM+1bbjTF+97vf7RQojfoRwI1Abm/lrrvuakRgutr/Yn6ynLeNLD9ut01kq2YbWX7ZpmsjAJulGcivie0Yz+jRoxv33ntvp0Bq9tK2pmvjFxYRlO9LydIYdOp/4XXxxRc3NRWB6ehPdazV7XhuslQM3Z4Pl4ceeqjxi1/8ots68dwUJeaq+mxmaRSKUz4JECBAgAABAgQIECBAgAABAgSGSGBE3DcLCo03JVIOZMG3/Ov88bX5SDsw0UQTDWh8kZs0XpwVuXPnn3/+Ab+8K1IfPPbYYynSGcw888xpjjnmyPsX94m0E9Wv63fV8fj6fuTAja/cZ0G6rqqM1WNh/Pjjj6fIKxt9n2CC5kwc2YrU/PiEE07YbT8idUOkMihMW81LXDQYaRiygHCKvLzhteiii+aWxfmePsM4DCMncVw7cuTIvHqkfIjnpeN4qm3FnEW9SK8xyyyzVE/1aTvSM8QL2bKgafriF7+Y5pxzzgE/V33qQDeVs18GpP/93//Ncw4Xz2U3VR0mQIAAAQIECBAgQIAAAQIECBAYBwLjXQB3HJi5BQECBAgQIECAAAECBAgQIECAAAECBMaJQPPSyXFySzchQIAAAQIECBAgQIAAAQIECBAgQIAAgVYEBHBbUVKHAAECBAgQIECAAAECBAgQIECAAAECQyAggDsE6G5JgAABAgQIECBAgAABAgQIECBAgACBVgQEcFtRUocAAQIECBAgQIAAAQIECBAgQIAAAQJDICCAOwTobkmAAAECBAgQIECAAAECBAgQIECAAIFWBARwW1FShwABAgQIECBAgAABAgQIECBAgAABAkMgIIA7BOhuSYAAAQIECBAgQIAAAQIECBAgQIAAgVYEBHBbUVKHAAECBAgQIECAAAECBAgQIECAAAECQyAggDsE6G5JgAABAgQIECBAgAABAgQIECBAgACBVgQEcFtRUocAAQIECBAgQIAAAQIECBAgQIAAAQJDICCAOwTobkmAAAECBAgQIECAAAECBAgQIECAAIFWBARwW1FShwABAgQIECBAgAABAgQIECBAgAABAkMgIIA7BOhuSYAAAQIECBAgQIAAAQIECBAgQIAAgVYEBHBbUVKHAAECBAgQIECAAAECBAgQIECAAAECQyAggDsE6G5JgAABAgQIECBAgAABAgQIECBAgACBVgQEcFtRUocAAQIECBAgQIAAAQIECBAgQIAAAQJDICCAOwTobkmAAAECBAgQIECAAAECBAgQIECAAIFWBARwW1FShwABAgQIECBAgAABAgQIECBAgAABAkMgIIA7BOhuSYAAAQIECBAgQIAAAQIECBAgQIAAgVYEBHBbUVKHAAECBAgQIECAAAECBAgQIECAAAECQyAggDsE6G5JgAABAgQIECBAgAABAgQIECBAgACBVgQEcFtRUocAAQIECBAgQIAAAQIECBAgQIAAAQJDICCAOwTobkmAAAECBAgQIECAAAECBAgQIECAAIFWBARwW1FShwABAgQIECBAgAABAgQIECBAgAABAkMgIIA7BOhuSYAAAQIECBAgQIAAAQIECBAgQIAAgVYEBHBbUVKHAAECBAgQIECAAAECBAgQIECAAAECQyAggDsE6G5JgAABAgQIECBAgAABAgQIECBAgACBVgQEcFtRUocAAQIECBAgQIAAAQIECBAgQIAAAQJDICCAOwTobkmAAAECBAgQIECAAAECBAgQIECAAIFWBARwW1FShwABAgQIECBAgAABAgQIECBAgAABAkMgIIA7BOhuSYAAAQIECBAgQIAAAQIECBAgQIAAgVYEBHBbUVKHAAECBAgQIECAAAECBAgQIECAAAECQyAggDsE6G5JgAABAgQIECBAgAABAgQIECBAgACBVgQEcFtRUocAAQIECBAgQIAAAQIECBAgQIAAAQJDICCAOwTobkmAAAECBAgQIECAAAECBAgQIECAAIFWBARwW1FShwABAgQIECBAgAABAgQIECBAgAABAkMgIIA7BOhuSYAAAQIECBAgQIAAAQIECBAgQIAAgVYEBHBbUVKHAAECBAgQIECAAAECBAgQIECAAAECQyAwcgju6ZYECAxQ4IknnhhgC+Pn5fPMM8/4OTCjIkCAAAECBAgQIECAAAECBGorYAVubafewAkQIECAAAECBAgQIECAAAECBAgQGO4CArjDfYb0jwABAgQIECBAgAABAgQIECBAgACB2goI4NZ26g2cAAECBAgQIECAAAECBAgQIECAAIHhLiCAO9xnSP8IECBAgAABAgQIECBAgAABAgQIEKitgABubad+6Ab+6aefprvuuiu99dZb3Xbi448/Tm+88Ua35wd64umnnx5oE64nQIAAAQIECBAgQIAAAQIECBAgMNYFBHArxGPGjEmjR49OO++8c+Xo0GzefvvtacYZZ0wvvPDC0HRgkO8awdpLL7007bTTTmmWWWZJSyyxRHrooYea7vLSSy+ls846K22xxRZpuummSwcffHDT+cHY+eSTT9KSSy6Z5pprrvwz9hUCBAgQIECAAAECBAgQIECAAAECw1Vg5HDt2Ljs15tvvpmOPfbYdOihh6a33347rb322uPy9l3e65hjjkkvv/xyOvHEE/OgcpeV2uTgNddck9ZYY40ee/uNb3wjD/D2WGkQTt57773pzjvvzFuKzwiUL7/88oPQsiYIECBAgAABAgQIECBAgAABAgQIDL5ArVfgvvPOO+mwww5Ls88+e9p7773z4O3gE/e9xVh1e/bZZ+cXHn300em9997reyPD6IrVVlstxUrXG2+8sdteXXDBBem5555L6667brd1BuPEvPPO29TMl770paZ9OwQIECBAgAABAgQIECBAgAABAgSGk0CtA7i/+c1vUnxt/5xzzklrrrnmsJmXU045pexLrAg+99xzy/123BgxYkSacMIJ04orrphGjRrV5RAmmWSSNOuss6a11lqry/ODdXCaaaZJzz77bDr11FPzz6mnnnqwmtbOOBaIXMrf+9738sD/OL612xEgQIAAAQIECBAgQIAAAQIExplArQO4e+65ZzryyCPzlAmbbrrpOEPv6UYffvhhOu6445qqRGqHRqPRdKxdd6affvoeux6B3LFdZptttrTVVlul+FTaV+CEE05IV111Vfroo4/adxB6ToAAAQIECBAgQIAAAQIECBDoRaDWAdyqzeSTT17dHbLtCy+8MM99+5nPfKbsw6OPPpquvfbact8GgboL3HLLLelXv/pV3RmMnwABAgQIECBAgAABAgQIEKiBgADuMJvkX//613mP4gVb1SDuUUcd1eeeRt7Z+KmWWOH78ccfVw8NynY7rhDuyqcjxpgxY9Lrr7/e8fCA9uOleY888sig5jYO/3jp3fvvvz+gvg32xZHm4N///nf+0+ozEtdUxxHXVffvuuuu9P3vf3+wu6o9AgQIECBAgAABAgQIECBAgMCwFBDAHUbTEoGp22+/PW2wwQZp/vnnT7vsskvZu8svvzz985//LPe724gA7RVXXJH+53/+J332s59Nl1xySR7EPfPMM9M3v/nNNOmkk6bpppsuTyEQLw3rb4mg2mmnnZa22GKL/CVwE0wwQVpwwQXznKQRsBvs8tBDD6V11lmny59qzuBW7vv3v/897brrrrlPrOTsWMIwXm4344wz5nXCK7Y333zzFC9k649bBIL32GOPNNVUU6XIw/uFL3whTTHFFLnZQFaSvvbaa3m78803X1p22WVTvJRtlVVWSXvttVfadtttOw4tD4TGsxTnfvjDH+bn//Wvf6XDDz88fz7iJW9f+9rXUjwvRcA1At0XX3xxijQjiyyySFpqqaXSz372sxRz0l259dZb8/biOV5hhRXyn0UXXTRtv/326fnnn+/ysghAR27i1VdfPZ188skpArl/+MMf0le/+tV8XAceeGC6/vrr02abbZbefffdso2dd945n5uYn7/97W/lcRsECBAgQIAAAQIECBAgQIAAgfFBYOT4MIjxZQxF7tt4MVOUCLL94he/KId37LHHdsqPW57MNiKfbwTWquWVV17JX9B23XXXlYfjxWinn356vgr0xhtvTBNPPHF5rpWNuD76dsEFF6RVV101rb/++um+++5LN998cx7Ui+DfeeedN6gvJIsAZYxviSWWSHH/GWaYIX3r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brutxz5EUDpKBHAjsNoxUBx9mm222RrZy+M6td3bgQhOVtuL52qPPfZoREA6S+fQyFJjlOPKVqk2shXUvTWZBzEjgBu/eKgGXAu7OHfRRReVwc+TTz65y3pRP1sxnQdge5qDbbfdNn9+urpXcc8snUPeTvaiuXI8cS5L59DIVuDmfcleftfIXuKWn5933nkbWRqQxiqrrNJUv2iv+MzSdJTjKAK48YuKuL6oE58HHHBAr24qECBAgAABAgQIECBAgAABAgTaTWBEdDgLfij9FMgCSvlX0eOr2yNHjuxnK+172VNPPZXihWVTTz11WmCBBdL000/fvoPJeh6pASaccMIUqQCyFcH5C8jij8jMM8+cZpllljTBBP3LOhK5ZJ944ok8zUYWkE4TTzxxk1PkDY4XtkWajFZKtBWpMsI9yiuvvJIi7UD0NVs1m6addtpWmhlrdaJvMaYZZ5wxZatjm+4TFtHXeOnaQEqMNdJdRE7jLJib//mbZ555BtKkawkQIECAAAECBAgQIECAAAECw05AAHfYTYkOEehdIAK4SmcBAdzOJo4QIECAAAECBAgQIECAAAEC7S3Qv+WE7T1mvSdAgAABAgQIECBAgAABAgQIECBAgEBbCAjgtsU06SQBAgQIECBAgAABAgQIECBAgAABAnUUEMCt46wbMwECBAgQIECAAAECBAgQIECAAAECbSEggNsW06STBAgQIECAAAECBAgQIECAAAECBAjUUUAAt46zbswECBAgQIAAAQIECBAgQIAAAQIECLSFgABuW0yTThIgQIAAAQIECBAgQIAAAQIECBAgUEeBEY2s1HHgxkyAAAECBAgQIECAAAECBAgQIECAAIHhLmAF7nCfIf0jQIAAAQIECBAgQIAAAQIECBAgQKC2AgK4tZ16AydAgAABAgQIECBAgAABAgQIECBAYLgLCOAO9xnSPwIECBAgQIAAAQIECBAgQIAAAQIEaisggFvbqTdwAgQIECBAgAABAgQIECBAgAABAgSGu4AA7nCfofG4f48//vh4PLqxM7QXXnghffTRR2On8fG81fHB7rHHHktPP/30eD5ThkeAAAECBAgQIECAAAECBAhUBWofwH322WfTbrvtllZZZZU044wzpsUXXzxtt9126fLLL6862R4EgQg83nLLLWm//fZL888/f5pvvvkGodX6NPHTn/40zTrrrGn22WdPgt99m/d2tfv444/zPzP77LNP/mdm1KhR6fzzz+928O+++25abbXV0ogRI9K+++7bbT0nCBAgQIAAAQIECBAgQIAAgfYRGNHISvt0d3B7ethhh+XB2+5a/c53vpNOOOGENMUUU3RXxfEWBR566KG04IILdqpd48evk0VPBz799NM0cuTIssqBBx6Y9txzz3LfRvcC7Wo3ZsyYNOecc6a33367aXCHHnpo2nXXXZuOFTvxi6evf/3rxW567bXX0mc/+9ly3wYBAgQIECBAgAABAgQIECDQfgK1XYF7xhlnNAVvY2VbxxJ19thjj46H7fdDYIEFFkjvvPNOOv3008urP/OZz5TbNnoWmHDCCdNyyy1XVlpmmWXKbRs9C7Sr3bTTTptef/31fLX1wgsv3PMg/3v23nvvbar38ssvN+3bIUCAAAECBAgQIECAAAECBNpPoJYB3Pj6+ZZbbpnP1tlnn50+/PDD9Mgjj6T4uvLJJ5/cNIvHHHNMuvPOO5uO2emfQKxkXmuttfp3savytB5nnnlmuvvuu/OUH0haF4iVqe1oF6uu55lnnrTyyiu3NNgIVldL/N2mECBAgAABAgQIECBAgAABAu0t8H/fyW7vcfSp9+ecc05e//77709f+tKXymsjWBL5b6effvq0/vrrl8dvuOGGtMQSS5T7NvovMOmkk5YXTzbZZOW2jd4FYsXyFlts0XtFNToJtLvdNNNM02lMXR2YYYYZmg533G86aYcAAQIECBAgQIAAAQIECBBoC4FarsA97bTTUuQQrQZvq7O13nrrpRVWWKE8FIFehQABAsNdIHLmVku8mFEhQIAAAQIECBAgQIAAAQIE2lugdgHcZ555Js/FuuOOO/Y4c8suu2yP59vp5CeffJKeffbZ/KcvLw374IMPmoYZL4N67733mo61shO5b99///1WqvarTqS+eOutt/p1bX8u6mosHV801VO7A70+2u7tq/GDNXfvvvtuv+a8p/HHuXgOIz9rpDOJ57PVMi7sWu3LQOr1d/y93XOOOeYoq8w999xpgglq91d8OX4bBAgQIECAAAECBAgQIEBgfBGo3f/dR4DjpZde6vXN7FNNNVU5x92t1C0rDNONa665JsXLriaaaKIU446fqaeeOq2zzjrpX//6V6deR1DprrvuSvvss0+ed3O33XbL60QKiZ122inNMsssKfLYxlvub7nllk7XVw889thjeTqKyN8ZX1+ffPLJ04orrpguuuiiarV+b7/44ovpZz/7WVp++eXTxBNPnI8r5myTTTZJ99xzT9nuZZddlhZccMGmn1h9XZSuzi+++OLpP//5T1El/3zyySfTr371q9xz0UUXzY9F3uS99torzT///CnuHdedeuqpTdcVOwO9PtqJXz4ceeSR+f0OPfTQoun8czDnLmy33nrr/BmYcsop8zmPse28884pXuz3wAMPpAjsRtA8gud9KWG26aab5oHFWB0633zz5c9nPKfxvHZVxrZd3DPm+6abbsqf2WLV6ptvvpkOO+yw/HkfMWJEmn322dOPfvSjfOxFP2+88cY83UpcE8/AN77xjfTHP/6xON3psz/j79RIDweij0UJW4UAAQIECBAgQIAAAQIECBAYDwSywI/ShcC3vvWtRja9+c+VV17ZRY3hfejggw8u+/+HP/yh8dprrzUefvjhxnLLLZcfz3JjNrLVj+Ugrr322kYcK8Ycn1nQtvHzn/+86VhxPgvKNp5++uny+urG1Vdf3YjzUTcLAjeuu+66RrS/5pprNrU122yzVS9refv6668v+3rAAQc04n6/+93vmtrOXliVt5etGm7cd999jcUWW6w8v/3225f3ylay5i7bbrtteT76na0Kzeu88MILjYUXXrjp3KhRoxpZHuWmY4VLfF566aVl+wO9Pho68cQTy3kr7jN69OjyHoM5d7fddls5d3vssUduu++++3Y71uwlf2U/etuIeSv6v8suuzSygHTj+eefb/zwhz8sj//lL38pmxkXdtmK8saee+7ZiGex6Ft8ZoHZ8hmrHo/tLMVKIwtcN/W7Y52u/s7o6/hLiGyjOgdZ8L56qtN2MZYddtih0zkHCBAgQIAAAQIECBAgQIAAgfYTiK8yK10IZF8/zgM6EbwrgnldVBuWhx566KEyGLXWWms19THL51uei8BZUV555ZVGBD2LcVcDUj/5yU8aN998c/5TPV8NhBbtZKsoy/YjqFotEUytBnH7E8C9/PLL8/YjQHznnXdWm2/st99+5b2j/9nX7cvz2erZ8lxX/Y5gYnXMxZx/9NFHjb/+9a+NNdZYo+l81N1oo40al1xySePee+/Ng3rF9dVxDfT6GEC2qjcPUBdB8bhPNYA7WHOXpboo5z9byVzaxcbee+/dNP4IzO++++6NCPi2UiLgWf0FQQTOixLWxdgiOF6UcWGXrSRuHH744U3zV8xjzPmf/vSnRvx5ijrF8fhcYIEF8v1wCIN4FqvPdnUcMZ7+jL9wiM++BHBXXXXVvG/xyw2FAAECBAgQIECAAAECBAgQaH8BAdwu5jBWARbBmljd2W4l+5p72f8IKlVLlqu1PBfB6Y7l2GOPLc9HUC1WIlZLte0llliieioPUhWBrewlcE3nip1or7CtBjqL8z19xmrJIoB8xBFHdKoaK4yLtuMzVncW5fTTTy/PdRXAzdIBlOfj2iKAW1wfq3irbUdAuFqeeuqppvPRXrUM9PpoK1atFn2oBnCL+wxk7qKN448/vmy/Y/B9zJgx5bnoQ5amorhtS59ZGoSm67OUBU3XxbNUjO3VV19tOjcu7F5//fXy/tGPsI6ga7VEULvoY/zZuP3226unGx2foVj1XpSBjD/a6EsAN8vvnfczVt4rBAgQIECAAAECBAgQIECAQPsL1C4HbhaA6bFkgbuUrTjN62yzzTZp9dVX77H+cDyZrcBL2WrHvGsrr7xyUxcnnXTScj9ynXYsRf7POJ4F1fK8tdU6cawo2arD/GVUxX4WMErZasV8N/KldlXmnXferg63dOzoo49OkQ81SlcvoYtctEcddVTKVj+mLMCZ5+xtqeEWKk0//fRNtX7wgx807X/+858vzeNEvJyrWgZ6fbQ13XTTVZvstD2QuYvG7rjjjrLNjv2dZpppUhacL89HLte+lLnmmisVz2K2sjVFTtlqyQKi5W4WTC23Y6NjX/pqH230ZjfttNPmuZqjbpQsrUIaOXLk/9/57z+/+tWvlvubbbZZWmqppcr92IgxxLNXlCyAW2ymgYy/bKTFjSIPbvYLkhavUI0AAQIECBAgQIAAAQIECBAYzgLNEYrh3NNx1Lff/va36dFHH01LL710Ou6448bRXQf3NvGyseeeey5lKxnTzDPPXDYeAdfs6/jlfpZioNwuNjoG1orjxWe8lKxa4uVPE044YX7o3HPPLU995StfKberG9VAXfV4K9vFC9CylcP5i7W6uiZbOZniZ7BLby5xv4UWWihl+X7zW8dLvqploNdHW7210dv5nuYu2o+XkhUlyz9bbJaf8YuBIkCfreQuj7e6keWATdmq6KZnMl6mFy9Gi2ezKB2fy97GFdf1ZB/nW2ljsskmSz2Nq/ilSLTXXYlfIsTfH1E6ttXf8Xd3r+6OF4Hb4rO7eo4TIECAAAECBAgQIECAAAEC7SFgBW5lnv72t7+lLC9syr6mn7Lcpqm6WrVSrS02J5poojxQluUazQNkiy++eFpyySVTlut1QP3vKRCWfdW9bLsaOC4PDmAjy59bBvnmnHPOAbRU30t7mrtQ+drXvlbiZC9iK7eLjfjFQFEWXXTRYrNPn7POOmuaYIIJUvbitfSNb3wjxcrlCy64oFOws0+NjqPKEeDtrVT/zohntmMZF+MvAs1xL4UAAQIECBAgQIAAAQIECBBofwEB3P/OYawMXHfddfOvwWdvkO/0te12nOpYERspC7bccssUAdwsR2y6+OKLx8pQshyp6eWXXy7bjpW5vZWJJ564tyrl+VipWZSuUj8UGl0uzgAAQABJREFU53z2X6CaIuCyyy5Lf//735say17Wlu9HGo0vf/nLTeda3Ylfkqy44op5apI33ngj3XDDDSkC/7G6d7iXjikV+tPfcTH+SDkRK90nn3zy/nTRNQQIECBAgAABAgQIECBAgMAwExDAzSYkvur89a9/PcVXt7OXluVBz2E2T33qTgRPIwft5ptvnqdSiLQQJ510Uoqvd4+tEsG4aomA+GCW6urR+Lp95CpWBlcgVsOeeOKJZaOxIveWW25JMbennHJKOv/88/PA4FlnndUpP2x5UQ8b55xzTp439uabb05bbbVVvgp3pZVW6uGK8evUuBp/BHDnm2++8QvPaAgQIECAAAECBAgQIECAQI0Fah/A/eijj9LGG2+c7r///nTFFVekyK/a7iVeJnbMMcfkw4gXsv3P//zPWB9S8eKk4kbVnKbFsYF8zjHHHE2Xx9fueyrxsrMiX2tP9ZxrFthhhx1SrECPEiuqV1hhhRQv+IrnaNttt01PPfVUv4KD8dKzb33rW3m78Wfs97//fYo0H3Up43L8M800U/4yv7rYGicBAgQIECBAgAABAgQIEBjfBWodwI0clVtvvXUesIqVt8suu2y38x31YjViO5Sjjz667GakhRgXJb5evsACC5S3GuwXwMWL0qrB9b333ju999575f2qG6+//npaY4010m233VY9XG53XC1cnrCR4uVlkQc6Uho88MAD+Qu5/v3vf+cvOItVuNNNN12/lE4++eTyuo022qill4qVF4wH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AgQIECBAgACB/ggI4PZHzTUExiOB7CVrKcuLnI8oUm689tprPY7ulltuSVtvvXXacsste6znJAECBAgQIECAAAECBAgQIECAwMAFpFAYuKEWCLS9wPzzz5/nK46BRG7bCNBGXuH55psvTTfddHlQ94knnkjnnHNOuvnmm9Nuu+2WDjrooE45bNsewgAIECBAgAABAgQIECBAgAABAsNMQAB3mE2I7hAYCoEHH3wwrbrqqvlLy3q6fwR1999//7T55pv3VM05AgQIECBAgAABAgQIECBAgACBQRIQwB0kSM0QaHeB999/P5177rkpXlAWq20fffTRNPfcc+ercGOFbry0bNlll00jRoxo96HqPwECBAgQIECAAAECBAgQIECgbQQEcNtmqnSUAAECBAgQIECAAAECBAgQIECAAIG6CXiJWd1m3HgJECBAgAABAgQIECBAgAABAgQIEGgbAQHctpkqHSVAgAABAgQIECBAgAABAgQIECBAoG4CArh1m3HjJUCAAAECBAgQIECAAAECBAgQIECgbQQEcNtmqnSUAAECBAgQIECAAAECBAgQIECAAIG6CQjg1m3GjZcAAQIECBAgQIAAAQIECBAgQIAAgbYREMBtm6nSUQIECBAgQIAAAQIECBAgQIAAAQIE6iYggFu3GTdeAgQIECBAgAABAgQIECBAgAABAgTaRkAAt22mSkcJECBAgAABAgQIECBAgAABAgQIEKibgABu3WbceAkQIECAAAECBAgQIECAAAECBAgQaBsBAdy2mSodJUCAAAECBAgQIECAAAECBAgQIECgbgICuHWbceMlQIAAAQIECBAgQIAAAQIECBAgQKBtBARw22aqdJQAAQIECBAgQIAAAQIECBAgQIAAgboJCODWbcaNlwABAgQIECBAgAABAgQIECBAgACBthEQwG2bqdJRAgQIECBAgAABAgQIECBAgAABAgTqJiCAW7cZN14CBAgQIECAAAECBAgQIECAAAECBNpGQAC3baZKRwkQIECAAAECBAgQIECAAAECBAgQqJuAAG7dZtx4CRAgQIAAAQIECBAgQIAAAQIECBBoGwEB3LaZKh0lQIAAAQIECBAgQIAAAQIECBAgQKBuAgK4dZtx4yVAgAABAgQIECBAgAABAgQIECBAoG0EBHDbZqp0lAABAgQIECBAgAABAgQIECBAgACBugkI4NZtxo2XAAECBAgQIECAAAECBAgQIECAAIG2ERDAbZup0lECBAgQIECAAAECBAgQIECAAAECBOomIIBbtxk3XgIECBAgQIAAAQIECBAgQIAAAQIE2kZAALdtpkpHCRAgQIAAAQIECBAgQIAAAQIECBCom4AAbt1m3HgJECBAgAABAgQIECBAgAABAgQIEGgbAQHctpkqHSVAgAABAgQIECBAgAABAgQIECBAoG4CArh1m3HjJUCAAAECBAgQIECAAAECBAgQIECgbQQEcNtmqnSUAAECBAgQIECAAAECBAgQIECAAIG6CQjg1m3GjZcAAQIECBAgQIAAAQIECBAgQIAAgbYREMBtm6nSUQIECBAgQIAAAQIECBAgQIAAAQIE6iYggFu3GTdeAgQIECBAgAABAgQIECBAgAABAgTaRkAAt22mSkcJECBAgAABAgQIECBAgAABAgQIEKibgABu3WbceAkQIECAAAECBAgQIECAAAECBAgQaBsBAdy2mSodJUCAAAECBAgQIECAAAECBAgQIECgbgICuHWbceMlQIAAAQIECBAgQIAAAQIECBAgQKBtBARw22aqdJQAAQIECBAgQIAAAQIECBAgQIAAgboJCODWbcaNlwABAgQIECBAgAABAgQIECBAgACBthEQwG2bqdJRAgQIECBAgAABAgQIECBAgAABAgTqJiCAW7cZN14CBAgQIECAAAECBAgQIECAAAECBNpGQAC3baZKRwkQIECAAAECBAgQIECAAAECBAgQqJuAAG7dZtx4CRAgQIAAAQIECBAgQIAAAQIECBBoGwEB3LaZKh0lQIAAAQIECBAgQIAAAQIECBAgQKBuAgK4dZtx4yVAgAABAgQIECBAgAABAgQIECBAoG0EBHDbZqp0lAABAgQIECBAgAABAgQIECBAgACBugkI4NZtxo2XAAECBAgQIECAAAECBAgQIECAAIG2ERDAbZup0lECBAgQIECAAAECBAgQIECAAAECBOomIIBbtxk3XgIECBAgQIAAAQIECBAgQIAAAQIE2kZAALdtpkpHCRAgQIAAAQIECBAgQIAAAQIECBCom4AAbt1m3HgJECBAgAABAgQIECBAgAABAgQIEGgbAQHctpkqHSVAgAABAgQIECBAgAABAgQIECBAoG4CArh1m3HjJUCAAAECBAgQIECAAAECBAgQIECgbQQEcNtmqnSUAAECBAgQIECAAAECBAgQIECAAIG6CQjg1m3GjZcAAQIECBAgQIAAAQIECBAgQIAAgbYREMBtm6nSUQIECBAgQIAAAQIECBAgQIAAAQIE6iYggFu3GTdeAgQIECBAgAABAgQIECBAgAABAgTaRkAAt22mSkcJECBAgAABAgQIECBAgAABAgQIEKibgABu3WbceAkQIECAAAECBAgQIECAAAECBAgQaBsBAdy2mSodJUCAAAECBAgQIECAAAECBAgQIECgbgICuHWbceMlQIAAAQIECBAgQIAAAQIECBAgQKBtBARw22aqdJQAAQIECBAgQIAAAQIECBAgQIAAgboJCODWbcaNlwABAgQIECBAgAABAgQIECBAgACBthEQwG2bqdJRAgQIECBAgAABAgQIECBAgAABAgTqJiCAW7cZN14CBAgQIECAAAECBAgQIECAAAECBNpGQAC3baZKRwkQIECAAAECBAgQIECAAAECBAgQqJuAAG7dZtx4CRAgQIAAAQIECBAgQIAAAQIECBBoGwEB3LaZKh0lQIAAAQIECBAgQIAAAQIECBAgQKBuAgK4dZtx4yVAgAABAgQIECBAgAABAgQIECBAoG0EBHDbZqp0lAABAgQIECBAgAABAgQIECBAgACBugkI4NZtxo2XAAECBAgQIECAAAECBAgQIECAAIG2ERDAbZup0lECBAgQIECAAAECBAgQIECAAAECBOomIIBbtxk3XgIECBAgQIAAAQIECBAgQIAAAQIE2kZAALdtpkpHCRAgQIAAAQIECBAgQIAAAQIECBCom4AAbt1m3HgJECBAgAABAgQIECBAgAABAgQIEGgbAQHctpkqHSVAgAABAgQIECBAgAABAgQIECBAoG4CArh1m3HjJUCAAAECBAgQIECAAAECBAgQIECgbQQEcNtmqnSUAAECBAgQIECAAAECBAgQIECAAIG6CQjg1m3GjZcAAQIECBAgQIAAAQIECBAgQIAAgbYREMBtm6nSUQIECBAgQIAAAQIECBAgQIAAAQIE6iYggFu3GTdeAgQIECBAgAABAgQIECBAgAABAgTaRkAAt22mSkcJECBAgAABAgQIECBAgAABAgQIEKibgABu3WbceAkQIECAAAECBAgQIECAAAECBAgQaBsBAdy2mSodJUCAAAECBAgQIECAAAECBAgQIECgbgICuHWbceMlQIAAAQIECBAgQIAAAQIECBAgQKBtBARw22aqdJQAAQIECBAgQIAAAQIECBAgQIAAgboJCODWbcaNlwABAgQIECBAgAABAgQIECBAgACBthEQwG2bqdJRAgQIECBAgAABAgQIECBAgAABAgTqJiCAW7cZN14CBAgQIECAAAECBAgQIECAAAECBNpGQAC3baZKRwkQIECAAAECBAgQIECAAAECBAgQqJuAAG7dZtx4CRAgQIAAAQIECBAgQIAAAQIECBBoGwEB3LaZKh0lQIAAAQIECBAgQIAAAQIECBAgQKBuAgK4dZtx4yVAgAABAgQIECBAgAABAgQIECBAoG0EBHDbZqp0lAABAgQIECBAgAABAgQIECBAgACBugkI4NZtxo2XAAECBAgQIECAAAECBAgQIECAAIG2ERDAbZup0lECBAgQIECAAAECBAgQIECAAAECBOomIIBbtxk3XgIECBAgQIAAAQIECBAgQIAAAQIE2kZAALdtpkpHCRAgQIAAAQIECBAgQIAAAQIECBCom4AAbt1m3HgJECBAgAABAgQIECBAgAABAgQIEGgbAQHctpkqHSVAgAABAgQIECBAgAABAgQIECBAoG4CArh1m3HjJUCAAAECBAgQIECAAAECBAgQIECgbQQEcNtmqnSUAAECBAgQIECAAAECBAgQIECAAIG6CQjg1m3GjZcAAQIECBAgQIAAAQIECBAgQIAAgbYREMBtm6nSUQIECBAgQIAAAQIECBAgQIAAAQIE6iYggFu3GTdeAgQIECBAgAABAgQIECBAgAABAgTaRkAAt22mSkcJECBAgAABAgQIECBAgAABAgQIEKibgABu3WbceAkQIECAAAECBAgQIECAAAECBAgQaBsBAdy2mSodJUCAAAECBAgQIECAAAECBAgQIECgbgICuHWbceMlQIAAAQIECBAgQIAAAQIECBAgQKBtBARw22aqdJQAAQIECBAgQIAAAQIECBAgQIAAgboJCODWbcaNlwABAgQIECBAgAABAgQIECBAgACBthEQwG2bqdJRAgQIECBAgAABAgQIECBAgAABAgTqJiCAW7cZN14CBAgQIECAAAECBAgQIECAAAECBNpGQAC3baZKRwkQIECAAAECBAgQIECAAAECBAgQqJuAAG7dZtx4CRAgQIAAAQIECBAgQIAAAQIECBBoGwEB3LaZKh0lQIAAAQIECBAgQIAAAQIECBAgQKBuAgK4dZtx4yVAgAABAgQIECBAgAABAgQIECBAoG0EBHDbZqp0lAABAgQIECBAgAABAgQIECBAgACBugkI4NZtxo2XAAECBAgQIECAAAECBAgQIECAAIG2ERDAbZup0lECBAgQIECAAAECBAgQIECAAAECBOomIIBbtxk3XgIECBAgQIAAAQIECBAgQIAAAQIE2kZAALdtpkpHCRAgQIAAAQIECBAgQIAAAQIECBCom4AAbt1m3HgJECBAgAABAgQIECBAgAABAgQIEGgbAQHctpkqHSVAgAABAgQIECBAgAABAgQIECBAoG4CArh1m3HjJUCAAAECBAgQIECAAAECBAgQIECgbQQEcNtmqnSUAAECBAgQIECAAAECBAgQIECAAIG6CQjg1m3GjZcAAQIECBAgQIAAAQIECBAgQIAAgbYREMBtm6nSUQIECBAgQIAAAQIECBAgQIAAAQIE6iYggFu3GTdeAgQIECBAgAABAgQIECBAgAABAgTaRkAAt22mSkcJECBAgAABAgQIECBAgAABAgQIEKibgABu3WbceAkQIECAAAECBAgQIECAAAECBAgQaBsBAdy2mSodJUCAAAECBAgQIECAAAECBAgQIECgbgICuHWbceMlQIAAAQIECBAgQIAAAQIECBAgQKBtBARw22aqdJQAAQIECBAgQIAAAQIECBAgQIAAgboJCODWbcaNlwABAgQIECBAgAABAgQIECBAgACBthEQwG2bqdJRAgQIECBAgAABAgQIECBAgAABAgTqJiCAW7cZN14CBAgQIECAAAECBAgQIECAAAECBNpGQAC3baZKRwkQIECAAAECBAgQIECAAAECBAgQqJuAAG7dZtx4CRAgQIAAAQIECBAgQIAAAQIECBBoGwEB3LaZKh0lQIAAAQIECBAgQIAAAQIECBAgQKBuAgK4dZtx4yVAgAABAgQIECBAgAABAgQIECBAoG0EBHDbZqp0lAABAgQIECBAgAABAgQIECBAgACBugkI4NZtxo2XAAECBAgQIECAAAECBAgQIECAAIG2ERDAbZup0lECBAgQIECAAAECBAgQIECAAAECBOomIIBbtxk3XgIECBAgQIAAAQIECBAgQIAAAQIE2kZAALdtpkpHCRAgQIAAAQIECBAgQIAAAQIECBCom8DI++67r25jNl4CBAgQIECAAAECBAgQIECAAAECBAi0hYAVuG0xTTpJgAABAgQIECBAgAABAgQIECBAgEAdBUa8/fbbjToO3JgJECBAgAABAgQIECBAgAABAgQIECAw3AWswB3uM6R/BAgQIECAAAECBAgQIECAAAECBAjUVkAAt7ZTb+AECBAgQIAAAQIECBAgQIAAAQIECAx3AQHc4T5D+keAAAECBAgQIECAAAECBAgQIECAQG0FBHBrO/UGToAAAQIECBAgQIAAAQIECBAgQIDAcBcQwB3uM6R/BAgQIECAAAECBAgQIECAAAECBAjUVkAAt7ZTb+AECBAgQIAAAQIECBAgQIAAAQIECAx3AQHc4T5D+keAAAECBAgQIECAAAECBAgQIECAQG0FBHBrO/UGToAAAQIECBAgQIAAAQIECBAgQIDAcBcQwB3uM6R/BAgQIECAAAECBAgQIECAAAECBAjUVmBkbUfex4E/9dRT6cknn0zXXXddH6/sufpcc82VVltttRSfY6M88sgjebPzzz//2GhemwQIECBAgAABAgQIECBAgAABAkMkIO4zRPDj+LZW4LYIfu211w568DZuXQSGW+yGagQIECBAgAABAgQIECBAgAABAgQI1EjACtwWJzsCrVEOPPDAFq9ordpee+2VB4ZjFa5CgAABAgQIECBAgAABAgQIECBAgACBqoAVuFUN2wQIECBAgAABAgQIECBAgAABAgQIEBhGAoOyAnew0wsU+WC32267YUSlKwQIECBAgAABAgQIECBAgAABAgQI9CRQxAkjvle8+6mn+s71LjDgAO4pp5yS53Ht/Vat1yjSFcSESy3QupuaBAgQIECAAAECBAgQIECAAAECBIZKoAjexv0jvlfE+MT3BjYjAw7gFhMhN+zAJqKOV1911VXp008/bXno8Yd94oknTn//+9/Tiy++mOacc860wAILtHy9iuO/wIcffpieeOKJ9OSTT+afL7/8cppuuunSzDPPnL785S+nL3zhC+M/wn9HeMMNN6RPPvkkLbzwwmmGGWaozbi7G+iYMWPS9ddfn55//vkUz8XIkSNzl/h7ZOWVV06TTz55d5c6Pp4K/Oc//ylfTjr11FOnJZZYoseRPvvssyne8DvppJOm5Zdfvse64/PJp59+Oj3++ONpyimnTEsvvfT4PNRybPF3R3f/vTJixIj02c9+Ns0444z5v2tif1yV+++/P38m33777TTvvPOmFVdccVzd2n3GQ4Hqcz733HOn+OmtxH933XzzzWW1BRdcMP9zUB6wMd4KFP9OjAHGyrp55pln2Iz1zTffTHfeeWfen/h7Mf7/Mcott9ySPvjgg2H338bd9TfvtH8QaFOB6667rlPP41i7BXBjwWr0ucgS0GlQ3RyIOGkEsQc7q8CAA7jd9NdhAj0KxP8IHXTQQT3W6Xhy2WWXzf8FfN5556Xbb789bbrpprUN4EZg7pprrsmJllpqqTTttNN25Krd/jPPPJN+9atfpXfffbdp7K+++mr+P7gR0Jx11lnTNttsk2abbbamOuPjzjnnnJMPa6qppqp1ALfRaKSzzjqr6X8wi/l+4YUX0r333psuvfTStMkmm6RVVlmlOOWzBgIff/xxuuCCC8qRTjHFFD3+OyX+xy/+HplkkkkGHMCNv5fuu+++/N7t9h+y0e+//vWvKYLedQjgRqD/3HPPLZ+TnjY+97nPpW233balwFdP7bRy7o9//GO6+uqry6oRTBHALTls9EOg+pzPNNNMafTo0b22EkGy6t+j8fdj/NJcGf8F4r+tioVcsVDgl7/85bAZdPyivngu4/+TigDuGWeckfdxKP7bOP7f7cYbb8zvv/jii6dpppmm9Oquv2UFGwTGE4G+BkGHethFtoH4jEBsq/2PvxvjmijFtYM1FgHcwZLUTr8FIvg4++yz93r9hBNO2GudulT46KOP0iGHHJIP99hjj619APemm27Kg3TF/MczNd9886VZZpklvf766/lv4d9///189WW47b///in+R1sZ/wXif0iL1UHxP5ZLLrlkHtB+77338sB+rNYuAjTTTz99WmihhcZ/FCPsUiD+A+vggw/OA7RdVhjEg/ELp/PPPz9vcdVVV03jctXmIA6jdk1NNNFE+WrbYuDxC6JY/Rr/fokSgfnDDz88/wX12PzFaqx6jFUdUeI+iy66aL4iOj/gHwQGQSC+6RY/EcjtqcSqXaV+Aq+99loZvI3RRwAyfonUyv/P1U/r/484/t+t+Pd+/P9JNYBbV5P+jDsWXURZd911u7y8t/NdXuTgWBGI/77tuAq31QDoWOlQHxuN/y8ofkkVlxaB2N7GUA3exnXF/mCtxBXADVVlSAXWW2+9tNVWWw1pH9y8fQViFWWsAogywQQTpB133DEtssgiTQPafPPN0yWXXJIuv/zyFKvujj766DTYaV+abmhnWAhEYCVWTEaJ1de77757uQojP5j94+GHH86fh9j//e9/n4466qjilM+aCcTq/VjVuMUWW9Rs5IbbqsByyy2X4t8nHUv8XXP22Wene+65J/+FUHxTKP5dNLZK8YunaH+nnXbKU0qNrXtpt74C8cvx+HZKd+WVV15Jzz33XHenHR+PBYqVpPFLrSjx39YRqPnud787rEcd/78Zv7QfNWrUsOpn/Dfqlltumf8yN74NpHQtEMHZIkAbNToGcXs733Wrjo4tgeIbZkUQNwK6xbGxdc/BbDf6GkHbauktiFsEa6vXxPZgjlsAt4NuoMd/GBcPWofTaa+99mo6FBH4mJDeIvFNF9khQGDQBIpUAdFgBOgip2nHEoHd9ddfP8X/bNx11135KqkI/MZvwJXxV+Cxxx4rB7fhhht2Ct7GyciL/NWvfjVFTu4I4L311lspvlqn1FMgAhbLLLPMOPkKfD2Fx89Rf+Yzn0nbb799/u+gyGUYOYLHZomVv0X5f+ydB7xVxbn2B6WDIKIIUkQ6CBaKvWCLNcZ6NUZNLFGjMdbEL0aj1xgTTbxeTeyJWBP1xt5j14gCFkA6iBSRooggRRDw2/85vpvZ66zd9zln73Oe9/z2WW3aembWlGfeeQfbuxIhUEoE6DNBcmE25thjj027QoD6EjH3pUyDwipfBKh/LO+Z1KKscI15uxNOOMEZqVuOb0D7Xo7CPgxgKckdASNyoySuhZDtubnTsWYRgCcrJXlZs6lNDR1+D63ZXEncdORtPqYXUlMQfyUCN4ILS9IAP1cxwlcEbq6I1aw7bOs+88wznqT78MMPXYsWLfzGNGxghW04OpkmaGNiu4sl1TSaaF5h22/atGl+MxDu0xHBD4Q+HVk2UEPIbwihdBvZjBo1ym+YNHHiRLd8+XK/gRZpYOYpnFnlmWn8XXTRRQ73zGoTz5dffunTceCBB7pDDjnEd6BZnnnLLbf4zansPdAaZBkOG5iQXgS/NFwsHTftCGySDR061M9W1hcbsEy2kF8I7xZH3vqH3/07+OCDfdngko4meRgK5QGCl+8ajSrMLJDXe++9d7XNGdjMiLLG5jVoHLzwwguODWWs/mAZGaRx3EZ75C91DXnD0luW9rN8f8899/S/OHMhs2fP9uWQ8CGiIQx4X+xo5WuHkmVupJcN3ygrENlsPELHtj7ZrgMnk0xL1Ck7b731lh+EQOxHCdx8sIcEvv322320aHLGkSv333+/X26IzV3qBeTOO+/0ZQ7b3sSP5jB1GCZA/vznP3s3/GOQRD1FOaDsUA7YaOawww6Lte3MwIq8JiyW7bN5W//+/b2pCOyKR3GBfILMfu+99xznCHHgh7qovk56UDeAE3jdcccd7uqrr/ZYeQBy/Efd8fbbb/u8Yakk+cJ3RTth9T55x7fPd2dCG0A+8P2T37QDuD/zzDPNiT8uXLgwudoAt9FN1ygbpMHIRPNMu0ieom1OWWb5PfUTdRvvHV3GSds4efJkX69QJ1AWqduYEMH8TCZhWS0rIrD1Rz12yimnVPueMvmv5Gf0FTDdQx7QflCWwj5HPvVuuvqAOo28C+u2m266yZdV2inaA5N86i3KI30J5Pzzz3fUg/R5qDe6d+/u+xZWr6FZPGnSJDdy5MgkUc3mRYceeqjvh9BPwUYyZYhwKcu0g0ceeWQ1c09gRLtLH4vyTZ0G+YN9Zd6Fes1sV5K2ESNGODakZOUW7viWaIu5hx827YRwpE2NCuWeso178oLvgvYbP3wH0Xof/+Tj008/7cv+/Pnz/bfCN03aqBPrq2AzlLoMzKiP4kwLQeKZeSLqCdrQdJIPjuzvQH3DSir64eBP3cUSffpJgwYNckcffbT/toif8kNfEOE57VS6PlE+fbwJEyb4epM27/jjj/dpGj16tOM+ZYB3oo4755xzYtsK0sx3gLD3QrSe9Q8q9B9lwszG0L7xHdP+2PdM3yIqmLOiXqGs0C+iTZqV2BCTfgb2c6lDyLton4lyxZiKvil1zOOPP57cpJhvHn/ER57kIn/5y1+8tjCkH/V1KOQZZYryRFtM3YUJkYMOOsjXE6FbzjHFxZiNb4W6ju+Fegk/1Me00wjt4j333JMydsOUgvXjKc9gYzaoqWOjG+vmU3aLGZ/4BJfxPyNrjZy1o923o923o90v41dT0soUAfrKuZC4jMuiRC+vVGryljDLlsCtq+XNRr4ATq5Cx7NSZxZyfcdKcMeggUE3mxKZ0Kl/4okn/A8y7Re/+EVyQIWGDHnHQJNGk46ECZ1HfiwJQmh4QyFclkqi8UnDboJ7CNbHHnvMbvkj8fCD8IOMYfduxJYccc5g4Oabb+Y0KZYO0kYnkQ4T4YRCOhB2VUUYBP385z9PGeBxH7KOH40ZHRg6PZUudLZMGOhlE4jrW2+9tdrAmk4XA0Mj6C0cBgz86DzS+Idx0Lmjk0QHD8LH8sH8Mni+8cYbHcu16LCa0Glj0BkK8UPmok3M4IC8Dok1Bp10WkOh02vlA8KABqJ58+ahk9hzNr1hsiIU4ubHs3RazKH7SjkPd9BmSTPff5ztY4hwm0iJvlu+2PNNUy4QJmiigxHuk198yyEBYEuvIWboANCZR5iEQvi+b7vtNk+K+Bvf/aMcUG75sfwu1OBg0AC5gx1DE9JHXPwoa2eccUayrBE3m5BQHkMhDiY8GLxecsklntAJn9eHcwaCJ554orv33ns9GUS7waAqFwHTu+++2+dr6J5ywA8C9LLLLvN1BfWJlQ9za5NQ1MkQT/ac/ICQMIFMs2eQJ1ECl++X8LGHakIYlAHuh0L9xI/BMWUAEsuEOPhRX9I2kn6TUPPT7tmRONic1Ab21GNxpJi5r49HBvQIxG1I3uZb76arDyAzrQwYfrTrCKsJTPKtt6irLFzKDLbiKdcIhHFYr9G/gawJBUIXgp9JB8jnsA6B6KINpb6hfFg7RVmiv0S5DoW46M8xoQJRxLdj7SFumSSDzIA4gTAyoZ6CfLF4QvypA9nklL5bKMRDn4oyTjwsYzahf0H6wneh3ScOfkzQ1ddN49q3b+/refqe4BxH4FJe7FsHh3QEbr44Eidh0zenHFN+TOjf8uMZQr6FQrtJX44yEo7LyMN8+3gQ9qSDcsW4gr6jCfU07ThCP2zw4MH2KHm0yQVIuvpE3vKC1ocN9zChDQUrnsURuNQR5B19TfInFLO3DBEaNYPGZAv5QP1ikwrml++ZfOCHosvhhx+erCvMTfRI/YCECjjURbT5lLdQSCf1K2Mz2lv62SY8Y5M/3jkU6i/SzEQ973vMMcf474R3CMX6eFa/EJ65YXLJpJCyW+j4xOIs96ORsUbO2tHu29Hu29Hul/v7KX3lh0A2EpcU1xZ5S1xlS+CSOEnDQABNJSMf070xM5pxWomhewYGRt6ed955fkDKYArS9Pnnn/cEGB0MNIJCsYEIRBtaBzTkECV0yoy4RXsEf8yq0phfd911fuaVwX5I4DLYNfIWLRA07NB4g/jgw6YjC0HGxmNRoYPATD+DaQZMuGUHVTqzHAmP+C+//HLf+THCCdIG93S4EYgqBmDIBRdc4DVFeCcGhNh+BRM6oqFWn3dcgf+sA8RALVfN0ejAmtcGMyNvIdzoBEKcQHBAdtKBogMA+RfV7KDTBbaQHRC8EBZcMyhkcEneGYFLZ9M6vuQZGsDkG4NIyg2dPgao5L2Re3RMjbzlO6AzSEOCH+z60vHFD/YX0fLIJAyGjbwlfjozdMAp04888ogfpDNw51uqyQ14MqWxlM/AicETA0A60pjAgeSA4Orbt68vM0YMxMVbSuzjwo+7R51CmaKcoh1iGiIMBtBoQ7iHdgd5RD3FIJYyil9IQOoJhHrGyFvKNBoqfP+UQQYxlFPqLLPpSTmzwQQTXmhAUXcQB88oz8Tx29/+1odf3/5BfqN1iPYN2kG0B7msVgAbygqCH8Kh3gdftMkYTPFdQY6jcc13zECN5wjaXZRDJhyYELI2BNxDEoIBsAkTkOSNlV8IOCNp0VpDeE47QfwI5R6iBQKN/Ec7jMEmbQ+T5tHJDUh7yiLSPaGFSZ2RjoigLqbeIDzKLitKWBXSkIR21/IoJN6LqXej9QF9BL7vefPmJUlU2gTKlOFdbL11/fXX+3ykLFKfhFq95Cd9JvpStF8QnpQlvgHy3vo2BxxwgCe1KINoUIILZYm0GXGCBq+Rt7R3ECTU2ZixefTRR337C9nDu0a/Q9s4izYMv7SHkOS0obSzED02mUW9RX/HiEC04mySg5UGpAM3bD5HH4lvCrdMwHKfSTT6X926dfPtCG0l3xSa5rT3FlZ9K+vDhw93dycmpqiH6KMb8W7vaeQpZQANyjgpBkebmCAdlEHKEpjTllvc1FmUf+uv0U6SZ/TXwrqzmD4eE6Gmfc57Ug6oR+nXU+Yh86MELuMaIwpJf30S8tTquXACg++NNoVvljyKm7wGB2tTaKf4Ua7o2zBWI++YNKEtsTGNYccz+ie0Q9QvhM/4iLqHiQTi5l60j27+Mx1p64y8pW6jL0+dQ1+ACQzaViaN6DeaVi19biNvwYFxIuMQ3p9ySJroazERTLqY8OHdSS+CH74dVgFkkmLKLvHRz8hlfJIpDeX4zMhYI2ftaPftaPftaPfL8Z2UpvJGIBOJG5fymtC8tXhqjcA1VtoaVEAoZ8lVAzhqE7ec36lc00YjyC+TQESyZC6d0MDaYJiOFo2sCcut6AjQ8YNMg6yIdkSjmrRcmzkCBkwMgs0PnQcGCHTuGbRax5YOy9///ncfLZp+4fJ8jOXz+9WvfuU7dXTsohoNkDFocpp2LgMnGl3IaITOLEQg3xAkjBG4dIDCsFiii9A5CDEj3ZDgDGQYRNHBDJcmek8V9g8NCSQdqZDL65BvpjlCvfTLX/4yOVmAZiaEC985HUfILpbbQ86EArlBmTEyhbyjswmJSweKDi9Eomna4RdtP/whdO4osyxdZUDAgJ9BKbPw9m0wQKdTaxptljYGnISLhhOTCZTXOCE9aKAgEEWURUsvAxI08NBAsnTnqn0YF1e53COfeCcICSO3IMf5IRBNELrkKZ3+cJKolNjngwflhbxFi97y2gYPhEM+nX322cm8g7ShbkGrHmGQQQeVMm0THBdffHGSCMYNAw0GGAw8IWOoq9AoMpvBlF+WFJswyAArSBXIlPpQd9i7RY90uOw7oC1Bw4Z3TyfkDSQtAu6hlj448iMc3FHuKG/DEwN6m+jBH9f2LXINKQEhRV1ufSbuh/UH3ykTTFaHUGeY0OYhkNFG3pKfkPImpAtCH9IKQfv/3HPPtcf+SFmEvKJesnhSHHx3gWkOJjWpuyhHaGlTZuqjkC+QBibkA+Q5eYHGqIkN8outd+PqA+KAQLHJZ+Ky/kkp6i1ICfoPmHOxti40+QGxe9VVVyXjpG9B/8TIWMjO/fff36Dw9RV9IrCAYDUx97R/lDET2jD6PRdeeKG/xcq4KIHLAyYJbCMiyjPlnr4iQl1mBC4ELW0wwmQJE+sm9J3AjrYawgXChrBo60kv7S7jAd4Z4V3pE1x55ZX+m4YUqK8ELqQpEwjgACEe4ka/1ya9qb/SSbE4soFaWAfS9l1xxRU+OuomJhOpcxDKCH1z8oS8pM/Gs2L7eNRrSHSFCxMRTCTwLdo4wDtM/EOZBNwQqwv8RT34R7tiEmraGoHLM3DhW0snmEJgUtmESWn6JdYe0dfApnhU+Db57q2vRrsEec73SF2JggJjokxtdjRM8omxIQJ5S/my752+MpOy9JdxR7/K8tPaXL6L8F2ZYCN+2n380AYzBqVOZexmBC7pNkWNaJrsutiySzhglMv4xOKspKORsUbO2tHu29Hu29HuV9K7VnJamcigjWWMzS+s0yvtvUg/4wTjNdOlvybJW+JMPypJl6IC7/PCZhuCl7Yf9woxW1BgMuStniJg2hgMGkLy1l6XjhdC4wlpEQoz92xiFEpIgkGK2eDI3IRLs61zxwwuAhEbDpTND50Km6VHIzgqzM4aeWvPGJCYHSS0AHIROjgIgzu0FMKlOOADicfPOkC5hFmubmxQFs2ffNKLFoUJtmyjuEC8MpBFGBTEbU7DgDUkYHBrWrec2+CXwZ8JAxvIABMGygxGLr300uRACaKATimClokReuaHTqKVbe5ZGbTn4ZGBs+HF5EQ0vXQwsdGMMCFSXwRyH81HCAG+Pxvs8X50rhl8MUhlUGAa/DwrJfaEl4+E5C3+wnylLEbzDhKCDimDKatDGHAjEIamxetvfPePMouAgbk10g0yhkEaz0wYpFM2+UW/EXNTH458BzZ5AekaV1eH74kGHwLRwxLOqFDmrD2hA5uL0FYgkFCWB0xWGUFq5g5MCwq3aMkh5LdNzNnEFERHSCx7h4l/kP9MXiBMKlpc/sZ3/6gTGQCmE8rKH/7wB582Br0Mfq0cpfNTyffBife137XXXus1mNEytb4A9bwRmKWod6P1QSb8SlFvMYFAf8TI22h8EC/RNpc+vgmrA0Lh2zANTSZ/TCh7TDKH5Ic9s4kHrm25vD3jSJk08tbu01eyexB5Jtbno3xSj0WFNECuUH9aHppCAPWqkTnmj/rPVi2YtqE9q09H6hGrH0zj1d4v7DdBcKWTYnCkrbY+iYVvq0u4po8VtufcC+sqy8swrYX28SgfNiFAPEhIaIdx8MzqXtpeSMH6JDbeAutQeYJ6w9q6aP8hfH/qAwjcqNAeWdtmK1qibui7Rvsf9IuNDKaPSx2YjzBpY/1swol+74wBTjvtNF8/MLmOoA1Oe0/dEVen2CpI3MbVX9zPRcJyVWjZzXV8kkt6ytENdXRIyELSGlFLerM9L8d3qk9pMvKWd4Lvox/MvUoWI3HTvUNNk7fE2zhd5DV930hbY7Ct82esvF3XdDoUft0jwMYWRiakS022DhCDSASNJbQUM0m0cafDHzdby2AAwjfsMFq4dECiYuEycGC5bJyY9kkcCRiSwuaXdNFBIh0hEWvP444sLWL5L8KsNO/BwASSB00ROl1RAigunEq4B9mCtlA4WMs33aalSKctnRkG61QSNkQKJEkoITFr98NOoBEjdG5Nu446EM1elk8xC88PjTgb6BKOaRhzznL2OGECgu8DHEL3UbcMNE3QUogr87bcHs0VypxNHpi/Sj6i3cEPgTiHHIP0Mk0ZyHlMi6DBRf6GWBaLfT64UdaiRD1aGAiTQ5SfOIkSdFauKWesFsgkVjYYpBopeN999/lVC9SPTIpRf6CpXV/qjkx40A9Baw9tY+ziQWKE32Xo17CDLDAt6PA55zb5ZvV/9Hn0GgKX5aDUG7QV5IFpjVM2KceUXTQYjTQ2bcaQTLHvmXolHRlH2bbBMoNOtCFNIEdskz27Fx6pc1jRYfUb9VC25aCh//p0DlbUxWjlMaC378TKB+9aSL0bVx9kwq0U9RZ9iEwS197ZpAF9o7j+Udw9IwchQ9DiRouZb46+lI0R0qUj3RjBJrDC/pKRKfR/LF/CcCGjIaxN6E9YmWYi3L49e84RjUsT0hx+N3a/Phwh4yGRqEv4WX/YCF3qB8o+/YWoFIsj/aW4/KLvQv7E1clx5czawmL6eDYhE74jec63QL0OYUn7iVA2rMxECejQfyWeM9ai3kfoH9JOhmLfH+0hfStTWgndoJgSJWHtOXWCTUai+BASxExExmni45d4WEWC0F+KG0/5hzH/rH/Fo3TtHemy+gp3lEtT/GFSitUx1GHU9xDCYZi4L1RKUXbj6uu48UmhaZQ/IZAJgTjFBe4Z35fJr56lR6DWCFwyKi4TLWnWWROha4g0nCODPpu1LeSt6cjZwJiOupGX6cIybch0z6P34zqQUTdchwO1bGmwAX0YDrO8pRDsyGGHjo1r6FTQsWaJry3zhQxAoyckJUsRb12EAeFKZwnyjQFbuk5hmDbsPdIBpYOH5o/lBeRYOiFvbNAQ1zGLaoGkC4f7aNnS0cTkAWUXTSO0NUxjg6X8DCYZEFva8JcpfQxkeKe4tOEXMTKHcxtccJ5O0GSoTwRu+J6QoPzQ4EE7AhtjthyZ5W0sNysl9mHc2c5tgBy6s3wNBzPh8+g5hIhplEDGGykbdWfXNiBj8MJSZmx/2+CbssIPIpMyeNJJJ+W827OFX2lH6nw2YzJbv5i2SWcuKfyusuFseZIND+o1m5RhUpI628KGSLdllxBd1CGkgXxGbDk3ZYB6EWGiK52EJAgaxyERBSGZTYjf6kYGm7R97CReXwVy1rQvc3nHsHwUUu/G1QeZ4i1FvZVvnGF64iYGw+fhOXUv9S3aOJSjUKxMhffCcyOKwntx52FdmOvkgtW3hMdkX7hSJi4Oqz/jnlX6PbQi6f/QH6CNxKQB+EBaI3wP6aRccLRvIlMfKlsfL11dyGTHXXfd5ScfjHAMV2VYfZwOo0q7H47jaZOsXYp7D9zGEbiZvkPaPRPGc2GfJ1P+hZPetGP5SFhOQ2IzWxj0kUL7tNncF/K8FGU3n/FJIWmsaz/5atxGNXLrOv0NMf50E7CVggWcpfGVcWnmWU1r4dYagRv3gpnuhYQuM5iVntmZ3lXPikOAjj4NO40p2kfhsqa4kNEiqwmxQTIdPZbbZJJ8OgmZwkn3jEE+pAMdIOyUoZ2FhgAYQepijw57vWZuIV045X4/JBvQEgnNFsSlHVuFNrtvy8otL+I0SCwMZthtgBl2MO15Pkc6U2yYhw1cNjKyTrDNtLNcnk1cWPJvaSP8TBqxuEfCTqy/EfwLO8IMwjIJ31ToPpPbcn6G3TJwow0JbVKHaUYzEcIccoWOP1pgDPpLiX0YH+eZltTF4W7LlY2ki4YXvYaARBMJLRi0L7J9F+GSd8hBVhBAWlBvgAu23giL+oOJoV//+teue0KTvz4LdQsdfQYHTBCaxln0nckvJu/4rkOb41F3XOczIcJEHJNu1FesULHdqckf2hi0kSBo6SuZ7WL6SRZHWAYy1W1Wd5C+aP0RVxZxFwrawNgqhOyG5MF2IaRFWDeH7hvaeYhhIfVu6D8X7EpRbxXbxuWSTtxgI9LaY8oLGm7UVxDIXJ9zzjnJdjfXMKPu+A6MDLYJjaib6HX4/vQn05F35s9Wdth1fTuiWcoGU/QhqYtsspM6KM5kmb1/ueBo30SmejBTH4+2lDIUJ9gJZrUK7SPaqKyIsMl4TC6k8xcXVrnfo/9hJjHAxPol0XSjgQwetEv0GaLEK/3wdBJqtlu+mdtME6Bh3yjXyR0Ll3JskqsiCOnEjI5N3rAyBs1iJl9RSCKtmO4qVgyDQstusfGXu3+Rt+WeQ86Pv8KJH1JcyZxeNvLWcqSmSdxaJXAZREcz0V407oh7qVjHIaN7UQTQEmDzHpbXYLM2TiBm6KSlWyYf5yefe2YbiU5NujRAqNosfT5h5+PWCCg6EQw8WObDD9KW3c3Z4RWhM17pBC4DPggD5Mknn8xKVKH1asKyYoTyAImKJiydwLjZajA1KUZbHLKE/KfDSN6QBksHBC4b00GCkB7SEmpCsTwrarqBNFGmKVdISMT5G8G/8BmDjjhiwHayp3Meh0MQXEWc0vmlg43dynQErr0I+EDgQtTzKwX2RvpbHBxtcBPeC8/jtMgpowyG0OaD/I1bDn/bbbd58pmJiVNPPdUTIBCLvEe6dhRikoGWkW1cQ17jBw1lyAt+xMkAnmX9CJMM9Z3A5T0ZjFNnUC4efvjh5LfKMxPKDeWLPEmHM2Q4336UILUw4o6YUYDAJW5WGVAfWL2Be+oCJueI2zQ7Q/MJuGFSkTJjE+Lci0r4LCzzuMtGPpAe2hXTWMacAkJZhNDlfkOXYuvduPogE6ZhHhbaZmTL90zx5/oMQsLIW8o6dVZYXqiH4urPXMMP3aHxxzcYtuPhc74tNiqjLkR73JbC44Z+XdwEGESPhZeN4A3jqsRzNm2i/gcn6hsjKLkf5ln03axd4X5d4lhsHy/T90C9D1HLBB+2ljE5YSbdorago/hU2jW28u2bZBVfXH+Ud8J0AuaoEMj+6MRmnAk57zjxz7DjOvpd0ZejjxpH0NJGmoTlzu5lOoZjQvpAcX0bVpZg+5f8ZgNH+uhG3qKQEa0jQhvemeLO9qzYspst/Ep+LvK2MnLP+sXG/1Uyt5eOvEXbFolq5dYkiRs/pVgGZaKSM7gM4GtwSbBlSo888kiyUQ1BQOsUA/BoCtnOueHzUpwz+4rQAbAlVGG4aO9jemYAAEAASURBVH+cccYZPg0su6kJgRziPelQRG1TQcqxEZZpaDEzXukCQWG74NJhuv/++z0BFfdePMcGIQIWkP5I2AmlQxAntkMtz4qZOWQQxECRmfuoQAyHtgfpqIYdSQikOHnuueeSnepM2jBonttAhHTECeYl2JQnm83UOL/leM/ymOWeIXkfTSsDUyPB0ACDNCkU+3BwYQRFGJ9tABLey3ZuZY7BU/S7xi9L6anXKOO2EsCW2TOxFWpZWlwMlK6++mqf36STuoNryid+QmHQwuYeVn5s4BK6qY/nvC91NgL2Zmc2fFerP9C4CTfBMzfgeuWVV3qcMUORq0B4mGaQtRcWF2GwygLBxIINXpmYCcXKAEQ+A86oQKK9+OKL/jYkV76TNph5MQKHiQPb5IfJqBdeeCEaXYO8ru16t9B6q7Yzh36SCRMPVo7sXlzdac/yPRomTIKFy6UtHAaW3Kf+hHDnuzfinUkryOSo0O7SVvKr7/UhGpSGIVrTpskcEt1RfLguFxzDerMm+ni26o/yg5IEwkRKMZP9PpAy+2cEDO1Spr4m5tnoYyNsiBv9fphMiWuP6IfZBrpMIFsYIQzpNhUN75syTegv03loIzYMx/ygJIGCCPnL+Im6ij6XCatlohJuPhZ9ZtdRXOx+eKzpshvGVUnnIm8rKbecV25gbMHPCN3KeoOqDdiiBC3vYKYSGKcZkRu+G35CRYnwWTHntUrg5pJpELeVnMHFZEZD9UujyAA02w/tiHRyxBFHJInJCy+8MDmLy6CbTjuajQiNr+3wnS6sQu8zoLaG/PLLL/daCraRBlpQ2KU10pRyXoyEHRtIBQYQdKrR/rXlfJBxtuyWuMCC2XBbimOan8Wkoxz8kvdGLKEBcf3113szEXS6EI6Qd2iEgQECKWObrtDZtI0RIDOwyWdL3CFRyTfTtKEOy0eLzkcW/DNCBbLn3nvvTdkIBc1cI+cgUiDiIAPNniQkJMQqGroIaWTnc9OKZMAQZ2/MoqfsG0FMOYCUpsOMECbhGBFkpLj5rdQjG49Y2cBOHURYlMyEyMRkgA1KrX4oFHvITiPeGIwweWTaZOBO+cpXsItsNrIfeOCBpP1k6hcIPN7NxNJ/8MEHJ98dYtYGHKSFfLaOCPhQbqg7GDQh4ES9aYIfyqZ9P5kGb+anvhwZ3Nl3E/dO1LdWf0BuUNcYTpBCmKqxtosNrkzCOhwTFXyDVmeZG2tPLO/COtvqebNFCeEUrZswAWHlnw3W2KzMBo34Y4mnpS3cxMniz/d43HHHJcs+REYcWZZvmJXuvrbr3ULrrdrGObSDSbttbS7fDpp+aHGbZFo6bW4yHekjmDB5au05fSHitglN6m1blWTmLtCAp/9I+4zwjVLnmh/qh+gScYurPh2HDx/uX8fqC+q8qIZk3PuWA4413cej72VtAOUJMVI3DpNKvWf1eTbNa9oc64fw7U6ePLnaK9MeYY7BxkjYeqUfZn1SlE3ihD46E6Hmjm+YvrRNwJM26yvF+Y+7R1/bNihjIpz+j4VP2xu24TZJaX0lwjPSmXP8oUiERrZJWH+F7T5ppj/KJG86qemymy7ecr4v8racc6d+pi2T5q0p2PDmtUni1qoJhfqZrXqrYhFgZpNfNkG70jpJUbcslWbjIUg6CBls0DJwQoyw5Pyyyy7LW8sIf7nKueee622XQtTapjd0cm2JO+GwAYoNvnMNN+qOToCFC2nAD9Ltmmuu8eQkGxERJxvxMLjALVpYhgXaFJBC9UGws0a+33DDDZ7IhniCxEUYkBkxZ+8KGUOnKBTKy3XXXefdolnDL+oXbQq0EIsRtLTRDmAAaRuX0dlk0Bp28iBeTA499FBvg9S06C6++OJqaYPwRbs8mxAWWoJ0xG1jO/xaZxX/bGqEu/ogZkeRwQKCBgk/vh/qB0gzI9t4zjI421mY60Kxh3SHqAVXyiLx2cAXvBngRMsl8aUT3FNGsT9LeiFs+XE/TD9EhS0HpE5kwzE2JGOCB+IC90jo55RTTknWiWzqx4QF6WY5POmGEMK/+aG82mAnXXrr231wRaMmnaYdGDL4JI8tb6LfFfVzSHyHm4dZ+cRkQ7jclEEwpL9J2G5AgJHHVm8Y2WtuOfKcpemQ9eTfnXfe6QejaJhbecQdg1LT6OW6UOGdmRwzDX6ZUqhCsrbr3ULrrULzvRB/9Enom9BXok2i70R5tQlK6ir7hhiwQ/CwuqgQIS6zZ029Sz8pWncSLmmwOhLNN75ZJq6YhLvkkktS6nHc4zZO44Zn9U3Q7ocos3Zg+HeEbrb3LBcca7qPx2Tx3XffnYSjvvSvky8UnGTTvMYpk5VmaoNNCsO2i+eUI8YtSNg/4pr+ORuqphOUDfhF++i0iWH7mc5/3H1sO0M0056G/cSwnWSVib07k6lWh7A6DlKZa+vXhW3zn/70J98Xoz7hXa1eY5UKP8Zj7CuQTmq67KaLtxLuU6+H46VomrM9j7rXtRCIIpAreWv+jMQ1JRm7z7Vp69q9Yo5Vo7liQsjTbzbNQypOKnuJEIgiELUFF72mYR0xYkSSnIOsNMKSTiRECg2oCZpypZAwHSyXhDCBBDIC2chbBitoB4dEW+g3PM8lXRDWNPwm5h9zEpCZZlaCARIDEMMCEpIBdr6z1BZPOR4hrdAmo9NMp87EOlNcQ+YxCIub2YecZVBHp9EGcOaXzhaEHFrV4aYNhrfFlcsRP5QBtAQsHgasRsJQRk4++eQUjT/iZ+KBQTnniKWNMOjsQs6lm9wI04l/lnNTD9ORRELyFiKHcmXxeAcV/g9iirIRko50ykNSEjINsvMnCdMjoRSKPeXFNKcJzwYBxMPEjpk5COOy8zC/7B5HtLexvRYuD7TBNGUeog6t21Co7y699NKkjVvcmx8GO2effXZSUwZ/TDCwcZDZ0STd1B/mh++DyRJI3fog9g1mexfaCibD0gnfHt8gg1QL074rvrMjjzzSf9ehf+ojvmn7DnkWbZMwAWLPGRBGy004KI4jcAmT+3zztkyUvLTySBtAe0Sdk49YGbVj6Jc0WVowpRBqIoXuGtJ5MfVuHMbZsCu03rJwo+WQ+2E64p6b32zHMBwmI60+o1waeYs2OWWW78bEJk8s7jAcc5PpeNhhh/nJddtYy+o0/ND+Q6CY9q2FY+ao+PYQ+24479Onj2+Xra7kXn0Qq7+i78KKpbANNQ3LqLu463xxzDdv4+LkXvguhfTx0oUbd586z+KjnQz7inHuK/Ue3yYTItmkR48eyTEGdpOtPcQf5D/fo+Fl3xX9GPYqoA8SJ/SfzjrrrGS4YT8YMyz//d//nXyG/7AcWVxhuOFz9oSgDadcm1tLF9f0rdhY2IS2mHTaOIr3s/SQ/4wnTFGEusae4R9C1vxxbfGF6bF7PC+k7IZhEUZ9EiNl7Rh9N7tvx+hzXQuBfBCI4ySzEbFG4kbjiQsr6ibX60aJDlN14065+k64My1DzB7kIiQekjYUXpRfeB+CIReTC2E4pTjP933ydR9NY7H+o+FFr20Jfaj5E3VTH69ZloONNZa70cGOLi2tjXdmqSrL7zARQYcHwiRslGsjDSzPwd4US3QYuJAOMx1QG/HXVRyYPpiVWPrEgBBylzKQT4cabR9++A07WqV8H5aMEgdLMxlw04GM21gsGifvBjFCeQqXcUXd5XJN+cC8B+9I2bDBcS5+K9ENnWwmVPgxoUEnnPeOEmPp3i1f7BkAsFSdI5M75HMphAEB+QbxDxGYS/1GnUi5oU7knbP54duh7qLuwC0YNYS6o9j8od6nfPFdgxnfadS+Z7FxFOqfcjN//nw/mGYgXqryWGh6Gqq/2q538623ajtfIGfppzBZAVkRtkO0kaSfSZJSkRK0A9TL9Mdy7RtQD+KHNEIk5dOfqG08yzm+csGx1H08yq+N5y666CJP8JdzPtRF2pj8ZfUX5iVY7UN7RJ+Efgzffbq+9oMPPug3EOO7YzIeoY0lD60PV+r3IWzylPD5pWvDae9xx0Q3YyzSGLplHEq/KXq/mPSWuuwWkxb5LT8EypH3Me7P+L664PeKySm0Z82ObTbyNown1N5NR+qG7vM5L40KYh4xkmkhUYvXcAmSPbNjpWVyHlDIaQ0iQEc/1E6twajSBk0jDrnCr64E4iUbUVNXaavJeNEQLGZJsHXaajKNDFILKR+8G9o/pZCGVj4grCAC0mkrZ8M0X+wZ7NdEPQTxwIAnH6FONC3MXPwxmEo3oMrFf0N1Q73PYI1fuQnlBuJWUrcI1Ha9m2+9VdvoQHyYZmw07ppoi2kH0BDMRyBsoxq6+fiX2yoEygXHUpcrTFIhtJml6p9VIVZ//9MeFdoXYxKaX01JruWD9j5TWvLpc+X6LrmmLdfw5E4I1CQCRt4SB4SmEaGVxO/BU0LikmaI2FzFSFswCLnOXP1nclc0gYumLGSrzTxGI8ummRu+kGWmkbd2tPvRsHUtBISAEBACQkAICAEhIASEgBAQAkKgthBgFQwaxWhZvvrqqz7aqBmj2kqL4hECQkAIlCMCxuWFaeNepXF7IV8Zvku2cyNxs7nL93nRBC4ZEDLquSTASF9eKspkW4ZahtvR7ucSvtwIASEgBISAEBACQkAICAEhIASEgBAoNQJscMcmVCbsYbD33nvbpY5CQAgIASEQg0CU+4txoltZECiawCX8QlnpdP6MrDXyNss71MjjdBrFNRKZAhUCQkAICAEhIASEgBAQAkJACAiBskcAwhYzAJgnwrwGm7WF9pvL/gVqOYFscMlGZflu/MdGh5iikvmfWs4wRScESoCAKW2GQYnADdEo7LwkBG6+UUPQZrM/ZSQuYYfn+cYl90JACAgBISAEhIAQEAJCQAgIASEgBEqBAJtx8ZPkhgAblxUiu+66q+MnEQJCoPIQMA7PlDIhdO1e5b1N+aS4UWKn6W/LJzl1n5Jwp7naSg0zEem0kYtNQznuRljsO8m/EBACQkAICAEhIASEgBAQAkJACAgBISAEhIBz4n0aRinYqGG8Zu5vyaxAbap2E5dmInLPH7kUAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACDQkBaeA2pNzWuwoBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhUFEISAO3orJLiRUCQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCoCEhIAK3IeW23lUICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIgYpCQARuRWWXEisEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEQENCQARuQ8ptvasQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAhWFgAjcisouJVYICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIgYaEgAjchpTbelchIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBCoKARG4FZVdSqwQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAg0JARG4DSm39a5CQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACFQUAo0rKrVKbK0h0O/KFbUWlyKqvwhMubJV/X05vZkQEAJCQAgIASEgBISAEBACQkAICAEhIARqAYHGU6dOrYVoFEXlIdCl8pKsFJcdAqpfyi5LlCAhIASEgBAQAkJACAgBISAEhIAQEAJCoMIQkAmFCsswJVcICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIgYaDQKNvE9JwXldvKgSEgBAQAkJACAgBISAEKgOBcePG+YT27NmzMhKsVAoBISAEhIAQEAJCQAjUCALSwK0RWBWoEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCoHgEROAWj6FCEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACNQIAiJwawRWBSoEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAoHgERuMVjqBCEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACNYKACNwagVWBCgEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBIpHQARu8RgqBCEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhECNICACt0ZgVaBCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAiB4hFoXHwQCkEI1E8E1q1bV+3FNt5442r3dEMICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAjUFAIVReB+8skn7ttvv3Xt2rVzrVu3zhuT6dOnu08//dRBwu2xxx55+5eH0iEwfvx4t2TJEte8eXO38847ly7gEoU0d+5cN3PmzGqhDRs2zLVs2bLafd0QAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACNYFAxRC4ELcfffSRx6Bjx46ub9++eeOxfv1674ew6lq++OILN23aNNeoUaOyJDBrGh/LAzvmG9+4cePcqlWrXKdO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gBAQAjkj0OjbhOTsWg6FgBAQAkJACAgBISAEhIAQqBUExo0b5+Pp2bNnrcSnSISAEBACQkAICAEhIATKE4Gy0MAtT2iUKiEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhEDdIiACt27xV+xCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAiBtAiIwE0LjR4IASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAE6haBxnUbvWIXAkJACAgBISAEhIAQEAJCoBAEWrduXYg3+RECQkAICAEhUCsILF++vFbiUSRCoCEgIA3chpDLekchIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBCoSARG4FZltSrQQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAg0BARG4DSGX9Y5CQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACFQkAiJwKzLblGghIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBBoCAiJwG0Iu6x2FgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEKhIBETgVmS2KdFCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACDQEBETgNoRc1jsKASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBIVCRCIjArchsU6KFgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEGgICDRoAveREx9w127+327Cgx9UXF7fsetNPu2z35xZlmmfN2aum/Ofj92KhcuT6Vv3zTqfZjD/YvpnyfuVcLJ07pfJtK9ZvroSkqw0CgEhIASEgBAQAkJACAgBISAEhIAQEAJCQAjUAwQa14N3KPgVvln1jfe77pv1BYdRVx7XLF/jo/52zbq6SkLaeBdPXujuP/gu//zU1890rbZsXZXWb79N+lm/bsN58mY5nwTp/XZ9haW9nHFV2oSAEBACQkAICIEaRWDFihVu8uTJOcfRp08f16ZNGzdr1iz3+eefuw4dOrhu3bp5//Pnz3fz5s1zLVq0cNtuu23OYcqhEBACQkAICAEhIATqCwIvv/yye+WVV/zr7Lvvvm6//farlVdr0ARurSDcACMZffs7/q17HdTLbbFtxwaIgF5ZCAgBISAEhIAQEALlgcCiRYvcww8/nHNifvazn3kC99VXX/XE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JEACJFCICTAGbiGefA6dBEiABEiABEiABEjAdwnkJAau746KPcsrAitWrFCb2JUoUULq1q2rjrxqm+2QAAmQAAmQAAl4lwAFXO/yZG0kQAIkQAIkQAIkQAIk4BUCFHC9gpGVkAAJkAAJkAAJkECBJ5ARG6DAD4UDIAESIAESIAESIAESIAESIAESIAESIAESIAESIAH/IkAB17/mk6MhARIgARIgARIgARIgARIgARIgARIgARIgARLwIwIUcP1oMjkUEiABEiABEiABEiABEiABEiABEiABEiABEiAB/yJAAde/5pOjIQESIAESIAESIAESIAESIAESIAESIAESIAES8CMCFHD9aDI5FBIgARIgARIgARIgARIgARIgARIgARIgARIgAf8iQAHXv+aToyEBEiABEiABEiABEiABEiABEiABEiABEiABEvAjAhRw/WgyORQSIAESIAESIAESIAESIAESIAESIAESIAESIAH/IlDEv4bD0ZAACZAACZAACZAACZBA4SSwd+9euXDhgoSHh6ujSBH+q184XwkcNQmQAAmQAAmQgL8R4H91/jajHA8JkAAJkAAJkAAJkEChJDBu3Dg5dOiQOfarrrpK+vXrZ97zggRIgARIgARIgARIoGASYAiFgjlv7DUJkAAJkAAJkAAJkAAJ2BBo166dtGzZUsqWLavSly1bJps3b7bJwxsSIAESIAESIAESIIGCR4AeuAVvzthjEiABEiABEiABEiABEshEoEOHDirt8uXL8tprr8mpU6ckISFBGjZsmCkvE0iABEiABEiABEiABAoOAXrgFpy5Yk9JgARIgARIgARIgARIIFsCAQEBUrVqVZXv+PHj2eZnBhIgARIgARIgARIgAd8mQAHXt+eHvSMBEiABEiABEiABEiABtwkEBwerMtjUjEYCJEACJEACJEACJFCwCVDALdjzx96TAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAn4MQEKuH48uRwaCZAACZAACZAACZBA4SaQmppauAFw9CRAAiRAAiRAAiTgBwQo4PrBJHIIJEACJEACJEACJEACJGAlUKJECXWbmJgoly5dsj7iNQmQAAmQAAmQAAmQQAEjQAG3gE0Yu0sCJEACJEACJEACJEAC2RGoVq2aygLxdsOGDdll53MSIAESIAESIAESIAEfJhBw2TAf7h+7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EiABEiABEiABEiABEiABEiABEiABEqgbBCjg1o155ChIgARIgARIgARIgARIgARIgARIgARIgARIgATqIAEKuHVwUjkkEiABEiABEiABEiABEiABEiABEiABEiABEiCBukGAAm7dmEeOggRIgARIgARIgARIgARIgARIgARIgARIgARIoA4SoIBbByeVQyIBEiABEiABEiABEiABEiABEiABEiABEiABEqgbBALrxjBOzFEcO3ZMigqKnAYfGMxpdYLCBBIggRpHoLi4WAqL7H+H+fv5SWBg7f0dVlxULNis5ufvJwGBAdYkHpMACZAACZAACZAACZAACZAACZCA2wRq77dkt4dYdzPu+HebfH3uZKcB3rHpPqnXJMwp3VXC4fRD8tlp76tLExbcJiENQl1lY1olEXjmxf/Jdz/9Kjded6XccsM1ldRK3ar2smtvlj179sqzTzwkA/v3rVuDq+TRzJwzT1546XXp0iVa3n3tv5XcWvnVT/p4srz/8ed2GaM7tpdvv/zYLq2sk6XLVwqE4E4dO0jzZk3LyurTa2lLd0hRfqE07dJcwlvWN+te9Pp8mf/cHPMcB817tpDrZt9il1bWyebfkmTGf6ZLZHykjP/yirKy8hoJkAAJkAAJkAAJkAAJkAAJkMAJQIACbi2e5HqNQqXTyZ3UCPKP5Eva4jTbaI65P6hjhcWSvStbFThW7EFB95tgzjIIHC0oUFcLjhaWkYuXrAQg3mYeOChHjx61JvPYDQJ5efmKXdP9B9zIXflZolpFyoC+CaqhPXv3yrbUnR41CuH2xtv/T5V57MF75bxxZ3hU3tvMmUm75YvTbSLzdXNvshNwG7VtZP5ezjIekGUm7fO4mcK8AvV7+Uik7XezxxWwAAmQQJ0jkJiYWOfGxAGRAAmQAAmQAAmQAAm4T4ACrvusalzO5j1ayYVTrlT9giftO/H/87iPASGB0jIhUpXzD2RIZI8BskCVE4jt1lX27N0n9euXeD1WeSdqaYONGjaQrp07SXSnjjViBOPOHCvYYDNmzpIHH3u2RvSrvE4smbRIZek8trM07277/anLxF3YS7DBNv68Xn687lt9ye19aEQ99Xu5RWwLt8swIwmQAAmQAAmQAAmQAAmQAAmQQN0lQAG37s6tWyPDq7/X/HWTW3mZiQRqAoE3X3m+JnSjVvZh2JBBgo3mPYGs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Vlgs/sbiYQhpQCMBEiABEiABEiABEiABTwhoD1xPyjAvCZAACZAACZAACZBA3SNAD9xKmtOAwADDhdbYaCRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiTgJQEKuF6CYzESIAESIAESIAESIAESqAoCcXFxVdEM2yABEiABEiABEiABEqihBPhufw2dGHaLBEiABEiABEiABEiABEiABEiABEiABEiABEiABCjg8h4gARIgARIgARIgARIgARIgARIgARIgARIgARIggRpKgAJuDZ0YdosESIAESIAESIAESIAESIAESIAESIAESIAESIAEArm6LW8CEiABEiABEiABEiABEiABEiABEiABEiABEiABEqiZBOiBWzPnhb0iARIgARIgARIgARIgARIgARIgARIgARIgARIgAfE7Zhg5kAAJuCZw5MgR1xeqObV+/frV3AM2TwIkQAIkQAIkUNkE9JtycXFxldpUUVGRHD582KkN/H8jMDDQKZ0JJEACJEACJEACJKAJ4P8Rubm5+tTc16tXTwICAsxzHlSMAP9HVjF+LE0CJEACJEACJEACJEACtZrA7Nmz5bbbbnMaw3vvvSejRo1ySvdlwtGjR+W3336TDRs2qC9/hYWFMnbsWBk+fLgvm2FdJEACJEACJEAClURg1apVMmXKFKfaL7/8cunVq5dTelUn5OTkyBNPPKGavfPOO6VNmzZV3QWftEcB1ycYWQkJkAAJkAAJkAAJkAAJ1F4CY8aMUZ3fs2ePaM/f2NjYSh/QF198IVu2bFHtwNs3IiJC2rZtW+ntsgESIAESIAES8CWBTz75RPLy8tRDyI4dO/qy6grXdeDAAfnmm29UPdddd52EhIRUuE7HCtq3b6+S8EbP/v371XG7du0cs1XL+c6dO812mzdvbh7XtIPy5okCbk2bMfaHBEiABEiABEiABEiABKqQwCmnnCLYYH/88YfAO6Vp06bSsmXLSu1FWlqaKd5eccUVUhWCcaUOiJWTAAmQAAmckAQQejEpKUmNPSgoqMYx2LZtm6SkpIi/v78EBwf7vH99+/YVbLClS5fKtGnTVAimxo0b+7wtbyrcsWOHKtawYcNKGb83fXJVprx54iJmrqgxjQRIgARIgARIgARIgAROQALr1q1To+7Tp0+lj157+kIspnhb6bjZAAmQAAmQQCUR0AIhqm/V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"/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><g id="Default"><use fill="#000" filter="url(#filter-3)" xlink:href="#path-2"/><path fill="#FFF" stroke="#A7333A" d="M141.5 50.775l15.69 16.01h-6.488c.886 1.695 3.06 5.91 4.01 8.24.318.776-.979 2.324-.979 2.324h0l-2.42.151-4.2-8.574-5.613 5.727V50.775z"/></g></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="696" height="379" viewBox="0 0 696 379"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="rect-1" d="M0 0h696v379H0z"/><path id="path-2" d="M142 52v21.429l5.25-5.358L151.625 77h1.75s1.13-1.161.875-1.786c-1.203-2.947-4.375-8.928-4.375-8.928H156L142 52z"/><filter id="filter-3" width="195.6%" height="153.8%" x="-42.9%" y="-25.8%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1" result="shadowSpreadOuter1"/><feOffset dy="1" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 0.0941176471 0 0 0 0 0.0901960784 0 0 0 0 0.0901960784 0 0 0 1 0"/></filter></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="inspect.svg"><g id="Bitmap"><image width="696" height="379" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABXAAAAL2CAYAAADowb7lAAAMSWlDQ1BJQ0MgUHJvZmlsZQAASImVVwdUU8kanltSSWiBCEgJvYlSpEsJoUUQkCrYCEkgocSYEETsyqKCaxcRsKGrIoquBRA79rIodtfyUBaVlXWxYEPlTQro6nnvnfefM3e+/PPP95fMnTsDgE41TyrNRXUByJPky+IjQljjUtNYpA5AACZAG7gCLx5fLmXHxUUDKAP9P+XtLYAo++suSq4fx/+r6AmEcj4ASBzEGQI5Pw/iAwDgxXypLB8Aog/UW0/LlyrxBIgNZDBAiKVKnKXGxUqcocYVKpvEeA7EuwAg03g8WRYA2k1QzyrgZ0Ee7TsQu0oEYgkAOmSIA/kingDiSIiH5eVNUWJoBxwyvuHJ+gdnxiAnj5c1iNW5qIQcKpZLc3nT/89y/G/Jy1UM+LCDjSaSRcYrc4Z1u5MzJUqJaRB3SzJiYiHWh/i9WKCyhxilihSRSWp71JQv58CaASbErgJeaBTEphCHS3JjojX6jExxOBdiuELQQnE+N1Ezd5FQHpag4ayWTYmPHcCZMg5bM7eeJ1P5VdqfVuQksTX8d0RC7gD/myJRYoo6ZoxaIE6OgVgbYqY8JyFKbYPZFIk4MQM2MkW8Mn4biP2EkogQNT82KVMWHq+xl+XJB/LFFonE3BgNrswXJUZqeHbxear4jSBuEkrYSQM8Qvm46IFcBMLQMHXu2FWhJEmTL9YuzQ+J18x9Jc2N09jjVGFuhFJvBbGpvCBBMxcPzIcLUs2Px0jz4xLVceIZ2bzRcep48EIQDTggFLCAArYMMAVkA3Frd2M3/KUeCQc8IANZQAhcNJqBGSmqEQl8JoAi8BdEQiAfnBeiGhWCAqj/PKhVP11Apmq0QDUjBzyBOA9EgVz4W6GaJRn0lgz+gBrxD975MNZc2JRjP+rYUBOt0SgGeFk6A5bEMGIoMZIYTnTETfBA3B+Phs9g2NxxH9x3INqv9oQnhDbCY8JNQjvh7mTxfNl3+bDAGNAOPYRrcs74NmfcDrJ64iF4AOSH3DgTNwEu+EjoiY0HQd+eUMvRRK7M/nvuf+TwTdU1dhRXCkoZQgmmOHw/U9tJ23OQRVnTbyukjjVjsK6cwZHv/XO+qbQA9lHfW2KLsP3YOewkdgE7gjUCFnYca8IuY0eVeHAV/aFaRQPe4lXx5EAe8Q/+eBqfykrKXetcu1w/qcfyhYXK/RFwpkiny8RZonwWG+78QhZXwh8+jOXu6uYLgPI7ot6mXjNV3weEefGrbsEGAAIO9Pf3H/6qi2oGYH8ZANTbX3X2s+B2cBKA81V8haxArcOVDwKgAh34RhkDc2ANHGA+7sAL+INgEAZGg1iQCFLBJFhlEVzPMjANzATzQAkoA8vBGlAJNoItYAfYDfaBRnAEnARnwSVwFdwE9+Dq6QTPQQ94C/oQBCEhdISBGCMWiC3ijLgjPkggEoZEI/FIKpKOZCESRIHMRBYgZchKpBLZjNQivyKHkJPIBaQNuYs8QrqQV8hHFENpqAFqhtqhI1AflI1GoYnoRDQLnYoWocXoUrQCrUF3oQ3oSfQSehNtR5+jvRjAtDAmZom5YD4YB4vF0rBMTIbNxkqxcqwGq8ea4f98HWvHurEPOBFn4CzcBa7gSDwJ5+NT8dn4ErwS34E34Kfx6/gjvAf/QqATTAnOBD8ClzCOkEWYRighlBO2EQ4SzsC3qZPwlkgkMon2RG/4NqYSs4kziEuI64l7iCeIbcQOYi+JRDImOZMCSLEkHimfVEJaR9pFOk66RuokvSdrkS3I7uRwchpZQp5PLifvJB8jXyM/JfdRdCm2FD9KLEVAmU5ZRtlKaaZcoXRS+qh6VHtqADWRmk2dR62g1lPPUO9TX2tpaVlp+WqN1RJrzdWq0NqrdV7rkdYHmj7NicahTaApaEtp22knaHdpr+l0uh09mJ5Gz6cvpdfST9Ef0t9rM7SHa3O1BdpztKu0G7Svab/QoejY6rB1JukU6ZTr7Ne5otOtS9G10+Xo8nRn61bpHtK9rdurx9Bz04vVy9NbordT74LeM32Svp1+mL5Av1h/i/4p/Q4GxrBmcBh8xgLGVsYZRqcB0cDegGuQbVBmsNug1aDHUN9wpGGyYaFhleFRw3YmxrRjcpm5zGXMfcxbzI9DzIawhwiHLB5SP+TakHdGQ42CjYRGpUZ7jG4afTRmGYcZ5xivMG40fmCCmziZjDWZZrLB5IxJ91CDof5D+UNLh+4b+rspaupkGm86w3SL6WXTXjNzswgzqdk6s1Nm3eZM82DzbPPV5sfMuywYFoEWYovVFsct/mQZstisXFYF6zSrx9LUMtJSYbnZstWyz8reKslqvtUeqwfWVGsf60zr1dYt1j02FjZjbGba1Nn8bkux9bEV2a61PWf7zs7eLsVuoV2j3TN7I3uufZF9nf19B7pDkMNUhxqHG45ERx/HHMf1jledUCdPJ5FTldMVZ9TZy1nsvN65bRhhmO8wybCaYbddaC5slwKXOpdHw5nDo4fPH944/MUImxFpI1aMODfii6una67rVtd7bvpuo93muzW7vXJ3cue7V7nf8KB7hHvM8WjyeDnSeaRw5IaRdzwZnmM8F3q2eH728vaSedV7dXnbeKd7V3vf9jHwifNZ4nPel+Ab4jvH94jvBz8vv3y/fX5/+7v45/jv9H82yn6UcNTWUR0BVgG8gM0B7YGswPTATYHtQZZBvKCaoMfB1sGC4G3BT9mO7Gz2LvaLENcQWcjBkHccP84szolQLDQitDS0NUw/LCmsMuxhuFV4VnhdeE+EZ8SMiBORhMioyBWRt7lmXD63ltsz2nv0rNGno2hRCVGVUY+jnaJl0c1j0DGjx6wacz/GNkYS0xgLYrmxq2IfxNnHTY07PJY4Nm5s1dgn8W7xM+PPJTASJifsTHibGJK4LPFekkOSIqklWSd5QnJt8ruU0JSVKe3jRoybNe5SqkmqOLUpjZSWnLYtrXd82Pg14zsneE4omXBrov3EwokXJplMyp10dLLOZN7k/emE9JT0nemfeLG8Gl5vBjejOqOHz+Gv5T8XBAtWC7qEAcKVwqeZAZkrM59lBWStyuoSBYnKRd1ijrhS/DI7Mntj9ruc2JztOf25Kbl78sh56XmHJPqSHMnpKeZTCqe0SZ2lJdL2qX5T10ztkUXJtskR+UR5U74BPLBfVjgoflI8KggsqCp4Py152v5CvUJJ4eXpTtMXT39aFF70ywx8Bn9Gy0zLmfNmPprFnrV5NjI7Y3bLHOs5xXM650bM3TGPOi9n3m/zXeevnP9mQcqC5mKz4rnFHT9F/FRXol0iK7m90H/hxkX4IvGi1sUei9ct/lIqKL1Y5lpWXvZpCX/JxZ/dfq74uX9p5tLWZV7LNiwnLpcsv7UiaMWOlXori1Z2rBqzqmE1a3Xp6jdrJq+5UD6yfONa6lrF2vaK6IqmdTbrlq/7VCmqvFkVUrWn2rR6cfW79YL11zYEb6jfaLaxbOPHTeJNdzZHbG6osasp30LcUrDlydbkred+8fmldpvJtrJtn7dLtrfviN9xuta7tnan6c5ldWidoq5r14RdV3eH7m6qd6nfvIe5p2wv2KvY++ev6b/e2he1r2W/z/76A7YHqg8yDpY2IA3TG3oaRY3tTalNbYdGH2pp9m8+eHj44e1HLI9UHTU8uuwY9Vjxsf7jRcd7T0hPdJ/MOtnRMrnl3qlxp26cHnu69UzUmfNnw8+eOsc+d/x8wPkjF/wuHLroc7Hxktelhsuelw/+5vnbwVav1oYr3learvpebW4b1XbsWtC1k9dDr5+9wb1x6WbMzbZbSbfu3J5wu/2O4M6zu7l3X/5e8Hvfvbn3CfdLH+g+KH9o+rDmX47/2tPu1X70Ueijy48THt/r4Hc8/0P+x6fO4if0J+VPLZ7WPnN/dqQrvOvqn+P/7Hwufd7XXfKX3l/VLxxeHPg7+O/LPeN6Ol/KXva/WvLa+PX2NyPftPTG9T58m/e2713pe+P3Oz74fDj3MeXj075pn0ifKj47fm7+EvXlfn9ef7+UJ+OpjgIYbGhmJgCvtgNATwWAcRWeH8ar73kqQdR3UxUC/wmr74Iq8QKgHnbK4zrnBAB7YbMLhtywVx7VE4MB6uEx2DQiz/RwV3PR4I2H8L6//7UZACR4nvks6+/vW9/f/3krDPYuACemqu+XSiHCu8GmYCW6aTSpGnwn/wZ3TIEEcU5bKwAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAFcKADAAQAAAABAAAC9gAAAABq3vZVAABAAElEQVR4AezdBbwtVdk44HXh0kiIdEldFBAQpLtEBKSkRJH+wEAx6LpKp0pJKCANKiXSDR8gISFIg5T0pRv3f975O/PNPrlP3HvOvvOs3++wJ9asWetZcy/wnrXfGdHISlIIECBAgAABAgQIECBAgAABAgQIECBAYNgJTDDseqRDBAgQIECAAAECBAgQIECAAAECBAgQIJALCOB6EAgQIECAAAECBAgQIECAAAECBAgQIDBMBQRwh+nE6BYBAgQIECBAgAABAgQIECBAgAABAgQEcD0DBAgQIECAAAECBAgQIECAAAECBAgQGKYCArjDdGJ0iwABAgQIECBAgAABAgQIECBAgAABAgK4ngECBAgQIECAAAECBAgQIECAAAECBAgMUwEB3GE6MbpFgAABAgQIECBAgAABAgQIECBAgAABAVzPAAECBAgQIECAAAECBAgQIECAAAECBIapgADuMJ0Y3SJAgAABAgQIECBAgAABAgQIECBAgIAArmeAAAECBAgQIECAAAECBAgQIECAAAECw1RAAHeYToxuESBAgAABAgQIECBAgAABAgQIECBAQADXM0CAAAECBAgQIECAAAECBAgQIECAAIFhKiCAO0wnRrcIECBAgAABAgQIECBAgAABAgQIECAggOsZIECAAAECBAgQIECAAAECBAgQIECAwDAVEMAdphOjWwQIECBAgAABAgQIECBAgAABAgQIEBDA9QwQIECAAAECBAgQIECAAAECBAgQIEBgmAoI4A7TidEtAgQIECBAgAABAgQIECBAgAABAgQICOB6BggQIECAAAECBAgQIECAAAECBAgQIDBMBYZVAPeTTz5JL7744jClaq9uvfPOO+nNN98cdp3+8MMP0yuvvDLs+tUuHXrsscfS008/3WN3+fbI4yQBAgQIECBAgAABAgQIECBAoK0ERva1t1dccUW67bbb+npZp/pTTTVV+ulPf5reeOONdP3116fLLrssnX/++WmzzTZLJ510Uqf6DvQu8Oyzz6arrroqXXrppeniiy9OZ555Ztpiiy16v3As13jttdfSddddl+LZueCCC9IPfvCDdNBBB43lu44fzX/88cfpjjvuSFdeeWX+5+PRRx9Nhx56aNp1113LAb777rvppptuSpdffnm68MIL0wwzzJDuvvvu8rwNAgQIECBAgAABAgQIECBAgACB9hXocwA3AoRHH330gEf8mc98Jn3pS19Ka6655oDb0kBK+++/fxo9evSwozjiiCPSz3/+82HXr3bo0JgxY9Kcc86Z3n777W67e/jhhzcFc6NiBHAVAgQIECBAgAABAgQIECBAgACB8UOgzykU3n///XLkW221VbrkkkvS7bffnmJl4A033FCei4399tsvxVe+77nnnnT11Vengw8+uAwuRVBqtdVWS0888UTaeOONm66z03eB3XbbLd17771p1KhRfb94LF7x/e9/Pz344INpueWWG4t3GT+bnnbaadPrr7+eHn/88bTwwgt3OchddtklrzMcg/dddthBAgQIECBAgAABAgQIECBAgACBPgn0OYAbX9eOctxxx6VTTz01rbvuummppZZK8803X5p33nmbbj7LLLPkx7785S+n1VdfPe2+++7p1ltvLetMOOGEae65504bbrhheWw4bkRe3q9+9avDpmvxFfpIRVAtk002WVpkkUXSqquuWj085NvRrwUWWCCttdZaQ96XwehA/JIiUn+MqzJy5Mg0zzzzpJVXXrnLW8b5CPRusMEGXZ53kAABAgQIECBAgAABAgQIECBAoL0F+hzA/eCDD/JVtDvuuGO/Rh5B3siBGiVeWhYl0ikM1/Lpp5+mLbfcMt13333DoouRLzgC4d19rT5yCw/HMlz71RerCORvuummQ/IStmmmmabHrk488cQ9nneSAAECBAgQIECAAAECBAgQIECgPQX6HMB977330kYbbZQmmKDPl5ZCsWo3ykcffVQeG64bv/jFL/L0D8Ohf88//3xab731hkNXateH+GXD5ptvnl5++eXajd2ACRAgQIAAAQIECBAgQIAAAQIEhk6gzy8xixeYTTHFFAPqcXwdPFIpTD755L22E4Gz+Jl00kl7rTvYFX7961+nCOC2WmJVbHU1cQS7I4XAiBEjWm2i23ovvPBCnsahu5W33V5YORGrp+Mr9/EzGKXRaOSrUd966630+c9/vt/tDqRfsUI6UnGMzRK/aPjud7/bKcfzYNwzDAfj+RiMvmiDAAECBAgQIECAAAECBAgQIEBg+An0eRlt5LqN3LYDKfF172WXXbbbJv7zn/+k8847Ly255JJpookmyoOgyy+/fJ5zt9uLshPxsqd4mVfUja/sx0/krj333HN7uqzLc/vvv3/68Y9/XJ6LlZcrrrhi/rPKKqukCM5GiQDiddddl7bYYov8fvGStwceeCBPuxCB7i984Qvpe9/7XlpwwQWbfq644oqy7QgSdzwf1xQlxhV5hh966KHiUP6CuKI/J598cnm848Y777yTDjvssDyPagSTw/Mb3/hGUy7ijtf0tv/II4/kqQRiFfaMM86Y5z+OdpdZZpl0zTXX9HZ5fj78DjjggKZ+xVxdeOGFPV4fwd6jjjoqffOb30yzzz57HjSef/75c//TTjstxbNTLZdddlkn2wMPPLCs0tX5xRdfvGwn+rn++us3PUMXXXRR+SzstNNOZVutbkQajLguchaHYYxjk002SXfddVerTbRcL375Ef1fZ511Ov388Ic/bLkdFQkQIECAAAECBAgQIECAAAECBIZGoM8B3LHdzY8//jhFft3NNtss3XnnneXtYsXuNttsk/785z+Xx6obERBdbLHF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AgQIECAwlgWGXQ7cvoy3upo0cqb2FtzrS9sd63a3ArhjvfF9/5xzzklLLbVUHryNXLaxCjeCt4NVqjmLF1hggbzZGWecsWz+mWeeKbe72qimdphtttm6qjLgY30NnldzIEdu5rFdFltssTxtQnGfeNneQAPrRVs+CRAgQIAAAQIECBAgQIAAAQIExq1AWwdwI6haBPmC7YILLuhR76OPPkpHHXXUgL/q3+NNxtHJvq4CHYxuxcvjvvWtb+VNRcqEeIHcRBNNNBhNl238+9//LreLua3msb377rvL811tvPnmm+Xh4vrywBBtVPP2xmrl3lYGR5D6xBNPHFBvI1XDxhtvXLax/vrrp+eee67ct0GAAAECBAgQIECAAAECBAgQINAeAoMawI1cm+O6VF9cFl8T/+CDD7rsQvRtp512SkcffXSqrojssnIXB4uv83dxql+HqoHG/jQw2P1ppQ8nn3xyWS1eODY2gsjx4rEokQ83gsRRqgHcSI/wz3/+Mz/e1T+efvrp8nBxfXngvxtvvPFGx0N92u+r/fTTT9/0orh999232/u99dZbad1110233nprt3VaORFzE/NVpKSI/MQbbrhheu+991q5XB0CBAgQIECAAAECBAgQIECAAIFhIjCoAdx33nmnaVjvv/9+0353O9WAWHW7Wr96/NNPPy1P7bDDDuV2rDCMFaJdBUcPOeSQfMXo3nvvnSaeeOLymp42pphiivJ0pGiI/KUDKdNOO215efHyteJABJivuuqqYrfL1ZIR1CzK888/X2w2fX788cflfnW7ONgxyF51Lep091kNjr744otN1SJw/o9//KM81l0gvazQxUa8rKwIXB577LFpyimnzGtFsLgIRMaBP/zhD11cndIrr7ySp3aIk2uttVZacskly3pTTTVVud3VKt5rrrmmPB8b0Va1VJ+Fak7eap2etn/yk5+Up88+++x04IEHpupzHCdjvuL5DYddd921rN/fjamnnjr9+c9/Li+/884707bbbpu/1Kw82GEj/gzFKvXwGOjz3qFpuwQIECBAgAABAgQIECBAgAABAv0QGNQAbsevaPeWr7To75gxY4rNFC8j66pUA2qvv/56WWW11VZLyy23XLl/4YUXpsgBesABB6RLLrkkD/ZFncgDuvbaa+cBrLJyLxuzzjprU40rr7wy3z/vvPPSFltskW9H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QIAAAQIECBAgQIAAAQJDICCAOwTobkmAAAECBAgQIECAAAECBAgQIECAAIFWBARwW1FShwABAgQIECBAgAABAgQIECBAgAABAkMgIIA7BOhuSYAAAQIECBAgQIAAAQIECBAgQIAAgVYEBHBbUVKHAAECBAgQIECAAAECBAgQIECAAAECQyAggDsE6G5JgAABAgQIECBAgAABAgQIECBAgACBVgQEcFtRUocAAQIECBAgQIAAAQIECBAgQIAAAQJDICCAOwTobkmAAAECBAgQIECAAAECBAgQIECAAIFWBARwW1FShwABAgQIECBAgAABAgQIECBAgAABAkMgIIA7BOhuSYAAAQIECBAgQIAAAQIECBAgQIAAgVYEBHBbUVKHAAECBAgQIECAAAECBAgQIECAAAECQyAggDsE6G5JgAABAgQIECBAgAABAgQIECBAgACBVgQEcFtRUocAAQIECBAgQIAAAQIECBAgQIAAAQJDICCAOwTobkmAAAECBAgQIECAAAECBAgQIECAAIFWBARwW1FShwABAgQIECBAgAABAgQIECBAgAABAkMgIIA7BOhuSYAAAQIECBAgQIAAAQIECBAgQIAAgVYEBHBbUVKHAAECBAgQIECAAAECBAgQIECAAAECQyAggDsE6G5JgAABAgQIECBAgAABAgQIECBAgACBVgQEcFtRUocAAQIECBAgQIAAAQIECBAgQIAAAQJDICCAOwTobkmAAAECBAgQIECAAAECBAgQIECAAIFWBARwW1FShwABAgQIECBAgAABAgQIECBAgAABAkMgIIA7BOhuSYAAAQIECBAgQIAAAQIECBAgQIAAgVYEBHBbUVKHAAECBAgQIECAAAECBAgQIECAAAECQyAwcgju6ZYECAxQ4IknnhhgC+Pn5fPMM8/4OTCjIkCAAAECBAgQIECAAAECBGorYAVubafewAkQIECAAAECBAgQIECAAAECBAgQGO4CArjDfYb0jwABAgQIECBAgAABAgQIECBAgACB2goI4NZ26g2cAAECBAgQIECAAAECBAgQIECAAIHhLiCAO9xnSP8IECBAgAABAgQIECBAgAABAgQIEKitgABubad+6Ab+6aefprvuuiu99dZb3Xbi448/Tm+88Ua35wd64umnnx5oE64nQIAAAQIECBAgQIAAAQIECBAgMNYFBHArxGPGjEmjR49OO++8c+Xo0GzefvvtacYZZ0wvvPDC0HRgkO8awdpLL7007bTTTmmWWWZJSyyxRHrooYea7vLSSy+ls846K22xxRZpuummSwcffHDT+cHY+eSTT9KSSy6Z5pprrvwz9hUCBAgQIECAAAECBAgQIECAAAECw1Vg5HDt2Ljs15tvvpmOPfbYdOihh6a33347rb322uPy9l3e65hjjkkvv/xyOvHEE/OgcpeV2uTgNddck9ZYY40ee/uNb3wjD/D2WGkQTt57773pzjvvzFuKzwiUL7/88oPQsiYIECBAgAABAgQIECBAgAABAgQIDL5ArVfgvvPOO+mwww5Ls88+e9p7773z4O3gE/e9xVh1e/bZZ+cXHn300em9997reyPD6IrVVlstxUrXG2+8sdteXXDBBem5555L6667brd1BuPEvPPO29TMl770paZ9OwQIECBAgAABAgQIECBAgAABAgSGk0CtA7i/+c1vUnxt/5xzzklrrrnmsJmXU045pexLrAg+99xzy/123BgxYkSacMIJ04orrphGjRrV5RAmmWSSNOuss6a11lqry/ODdXCaaaZJzz77bDr11FPzz6mnnnqwmtbOOBaIXMrf+9738sD/OL612xEgQIAAAQIECBAgQIAAAQIExplArQO4e+65ZzryyCPzlAmbbrrpOEPv6UYffvhhOu6445qqRGqHRqPRdKxdd6affvoeux6B3LFdZptttrTVVlul+FTaV+CEE05IV111Vfroo4/adxB6ToAAAQIECBAgQIAAAQIECBDoRaDWAdyqzeSTT17dHbLtCy+8MM99+5nPfKbsw6OPPpquvfbact8GgboL3HLLLelXv/pV3RmMnwABAgQIECBAgAABAgQIEKiBgADuMJvkX//613mP4gVb1SDuUUcd1eeeRt7Z+KmWWOH78ccfVw8NynY7rhDuyqcjxpgxY9Lrr7/e8fCA9uOleY888sig5jYO/3jp3fvvvz+gvg32xZHm4N///nf+0+ozEtdUxxHXVffvuuuu9P3vf3+wu6o9AgQIECBAgAABAgQIECBAgMCwFBDAHUbTEoGp22+/PW2wwQZp/vnnT7vsskvZu8svvzz985//LPe724gA7RVXXJH+53/+J332s59Nl1xySR7EPfPMM9M3v/nNNOmkk6bpppsuTyEQLw3rb4mg2mmnnZa22GKL/CVwE0wwQVpwwQXznKQRsBvs8tBDD6V11lmny59qzuBW7vv3v/897brrrrlPrOTsWMIwXm4344wz5nXCK7Y333zzFC9k649bBIL32GOPNNVUU6XIw/uFL3whTTHFFLnZQFaSvvbaa3m78803X1p22WVTvJRtlVVWSXvttVfadtttOw4tD4TGsxTnfvjDH+bn//Wvf6XDDz88fz7iJW9f+9rXUjwvRcA1At0XX3xxijQjiyyySFpqqaXSz372sxRz0l259dZb8/biOV5hhRXyn0UXXTRtv/326fnnn+/ysghAR27i1VdfPZ188skpArl/+MMf0le/+tV8XAceeGC6/vrr02abbZbefffdso2dd945n5uYn7/97W/lcRsECBAgQIAAAQIECBAgQIAAgfFBYOT4MIjxZQxF7tt4MVOUCLL94he/KId37LHHdsqPW57MNiKfbwTWquWVV17JX9B23XXXlYfjxWinn356vgr0xhtvTBNPPHF5rpWNuD76dsEFF6RVV101rb/++um+++5LN998cx7Ui+DfeeedN6gvJIsAZYxviSWWSHH/GWaYIX3rW9/KA4PxcrTeSlxzxBFH5IHJJ598stvqEbT8zne+k49tk002SbvvvnuKF51FIHH06NH5ddXgYbcNVU688MILedAzAr/hFaus44VtF110Udpmm23yQH0EYn/5y19Wrup986233sqDpPFSth/96Edpww03THEs2g//CBAXJeocf/zx6a9//WsZ/IxAaczV/vvvX1TLPx9//PH82H/+85+07rrrph133DHdfffdZZ0Yf/Q95jsCuzPNNFN5LjZ++9vf5taxHeYrr7xyvoo5AtgRgL3//vtz3znmmCOq5MfCN9orStz7gAMOSGeccUZxKA/uRjA5+n3NNdeUxz/3uc/lv5iIAxNNNFF53AYBAgQIECBAgAABAgQIECBAYLwQyAJWSiZw7rnnxlvC8p+11157nJu89NJL+b3nnnvuRrbysLz/RhttVPYr+vfqq6+W5zpuPPbYY41sJWUjS73QdE0W7GxkL0Jr3HPPPY1zzjmn6VwWwOvYTI/7WQCtsfTSS+dtnHjiiU11s2Bn2Xb0IQtcNp2PneWWW66sc9ttt3U6/7vf/a48n62SLc+HSeyHQbZCuZEFPMtzrWxkaQsa0d8sSFq2H21lAcWmy2+44YbyfEfrvffe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gEBbCAjgtsU06SQBAgQIECBAgAABAgQIECBAgAABAnUUEMCt46wbMwECBAgQIECAAAECBAgQIECAAAECbSEggNsW06STBAgQIECAAAECBAgQIECAAAECBAjUUUAAt46zbswECBAgQIAAAQIECBAgQIAAAQIECLSFgABuW0yTThIgQIAAAQIECBAgQIAAAQIECBAgUEeBEY2s1HHgxkyAAAECBAgQIECAAAECBAgQIECAAIHhLmAF7nCfIf0jQIAAAQIECBAgQIAAAQIECBAgQKC2AgK4tZ16AydAgAABAgQIECBAgAABAgQIECBAYLgLCOAO9xnSPwIECBAgQIAAAQIECBAgQIAAAQIEaisggFvbqTdwAgQIECBAgAABAgQIECBAgAABAgSGu4AA7nCfofG4f48//vh4PLqxM7QXXnghffTRR2On8fG81fHB7rHHHktPP/30eD5ThkeAAAECBAgQIECAAAECBAhUBWofwH322WfTbrvtllZZZZU044wzpsUXXzxtt9126fLLL6862R4EgQg83nLLLWm//fZL888/f5pvvvkGodX6NPHTn/40zTrrrGn22WdPgt99m/d2tfv444/zPzP77LNP/mdm1KhR6fzzz+928O+++25abbXV0ogRI9K+++7bbT0nCBAgQIAAAQIECBAgQIAAgfYRGNHISvt0d3B7ethhh+XB2+5a/c53vpNOOOGENMUUU3RXxfEWBR566KG04IILdqpd48evk0VPBz799NM0cuTIssqBBx6Y9txzz3LfRvcC7Wo3ZsyYNOecc6a33367aXCHHnpo2nXXXZuOFTvxi6evf/3rxW567bXX0mc/+9ly3wYBAgQIECBAgAABAgQIECDQfgK1XYF7xhlnNAVvY2VbxxJ19thjj46H7fdDYIEFFkjvvPNOOv3008urP/OZz5TbNnoWmHDCCdNyyy1XVlpmmWXKbRs9C7Sr3bTTTptef/31fLX1wgsv3PMg/3v23nvvbar38ssvN+3bIUCAAAECBAgQIECAAAECBNpPoJYB3Pj6+ZZbbpnP1tlnn50+/PDD9Mgjj6T4uvLJJ5/cNIvHHHNMuvPOO5uO2emfQKxkXmuttfp3savytB5nnnlmuvvuu/OUH0haF4iVqe1oF6uu55lnnrTyyiu3NNgIVldL/N2mECBAgAABAgQIECBAgAABAu0t8H/fyW7vcfSp9+ecc05e//77709f+tKXymsjWBL5b6effvq0/vrrl8dvuOGGtMQSS5T7NvovMOmkk5YXTzbZZOW2jd4FYsXyFlts0XtFNToJtLvdNNNM02lMXR2YYYYZmg533G86aYcAAQIECBAgQIAAAQIECBBoC4FarsA97bTTUuQQrQZvq7O13nrrpRVWWKE8FIFehQABAsNdIHLmVku8mFEhQIAAAQIECBAgQIAAAQIE2lugdgHcZ555Js/FuuOOO/Y4c8suu2yP59vp5CeffJKeffbZ/KcvLw374IMPmoYZL4N67733mo61shO5b99///1WqvarTqS+eOutt/p1bX8u6mosHV801VO7A70+2u7tq/GDNXfvvvtuv+a8p/HHuXgOIz9rpDOJ57PVMi7sWu3LQOr1d/y93XOOOeYoq8w999xpgglq91d8OX4bBAgQIECAAAECBAgQIEBgfBGo3f/dR4DjpZde6vXN7FNNNVU5x92t1C0rDNONa665JsXLriaaaKIU446fqaeeOq2zzjrpX//6V6deR1DprrvuSvvss0+ed3O33XbL60QKiZ122inNMsssKfLYxlvub7nllk7XVw889thjeTqKyN8ZX1+ffPLJ04orrpguuuiiarV+b7/44ovpZz/7WVp++eXTxBNPnI8r5myTTTZJ99xzT9nuZZddlhZccMGmn1h9XZSuzi+++OLpP//5T1El/3zyySfTr371q9xz0UUXzY9F3uS99torzT///CnuHdedeuqpTdcVOwO9PtqJXz4ceeSR+f0OPfTQoun8czDnLmy33nrr/BmYcsop8zmPse28884pXuz3wAMPpAjsRtA8gud9KWG26aab5oHFWB0633zz5c9nPKfxvHZVxrZd3DPm+6abbsqf2WLV6ptvvpkOO+yw/HkfMWJEmn322dOPfvSjfOxFP2+88cY83UpcE8/AN77xjfTHP/6xON3psz/j79RIDweij0UJW4UAAQIECBAgQIAAAQIECBAYDwSywI/ShcC3vvWtRja9+c+VV17ZRY3hfejggw8u+/+HP/yh8dprrzUefvjhxnLLLZcfz3JjNrLVj+Ugrr322kYcK8Ycn1nQtvHzn/+86VhxPgvKNp5++uny+urG1Vdf3YjzUTcLAjeuu+66RrS/5pprNrU122yzVS9refv6668v+3rAAQc04n6/+93v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iLQQJ510Uoqvd4+tEsG4aomA+GCW6urR+Lp95CpWBlcgVsOeeOKJZaOxIveWW25JMbennHJKOv/88/PA4FlnndUpP2x5UQ8b55xzTp439uabb05bbbVVvgp3pZVW6uGK8evUuBp/BHDnm2++8QvPaAgQIECAAAECBAgQIECAQI0Fah/A/eijj9LGG2+c7r///nTFFVekyK/a7iVeJnbMMcfkw4gXsv3P//zPWB9S8eKk4kbVnKbFsYF8zjHHHE2Xx9fueyrxsrMiX2tP9ZxrFthhhx1SrECPEiuqV1hhhRQv+IrnaNttt01PPfVUv4KD8dKzb33rW3m78Wfs97//fYo0H3Up43L8M800U/4yv7rYGicBAgQIECBAgAABAgQIEBjfBWodwI0clVtvvXUesIqVt8suu2y38x31YjViO5Sjjz667GakhRgXJb5evsACC5S3GuwXwMWL0qrB9b333ju999575f2qG6+//npaY4010m233VY9XG53XC1cnrCR4uVlkQc6Uho88MAD+Qu5/v3vf+cvOItVuNNNN12/lE4++eTyuo022qill4qVF4wHG+Ny/JGapE4rm8eDx8MQCBAgQIAAAQIECBAgQIBAjwK1DuDusssu6eyzz07xwqbVV1+9S6j4qn6sZj3ttNNSxxc3xbnIFfrrX/869Scva2/X9/d8rJIsyksvvVRs5p//+Mc/yv1IHdFoNMr92Oi433Qy2+kpt218Lb4ot956a/rjH/9Y7JafERQsSqyS7am9ol7xGbl8ixLXRs7W1157rTiUf0awcf31189f4Fbtz1RTTVXWu/vuu8vtYuOaa64pNvPPV155pWm/N5eo3NNYBnp9tB/PQ1G6ekFWb/foqX/R7jvvvJNWWWWVPGgbc7fQQgvlq21jRedAy9NPP1020fHPygcffJCqz2XsV0tv44q6vY2tN7vq/brbjhQrRfn444+LzZY+BzL+lm5QqRR/NiJdQ+SlVggQIECAAAECBAgQIECAAIH2FxjZ/kPo3wj22WefMs3AL37xixQ/HcuHH36Yf2U8Ap3f+9730pRTTtlUJfLKfv/738+PHX/88flLwqq5Wpsqd7HT2/X9PT/ZZJPleX3jlpELd4oppkhzzjlnvoJ4//33b+rJ9ddfnwe/Iv9pvPDszTffLM8/99xz5Xax0TFgGnWi7Sg/+MEP0m9+85s8727sR2qKM844I2244Yb5C5XuuuuufHVnnCtKBL+/8pWvpGWWWabXvKoxlvjqfZEaIYLEsep3zTXXzPseweqYhygRKI5Vu0UZNWpUsZkiwLXvvvumH//4x/n8Rm7Xww47rDwfG2Efc/65z30uP/7WW281nX/11VfTjDPO2HQsVq8WJV66tvzyyxe7+QrWcifb6Ov1cW01IBfXdywDmbtoK4J+jz76aN5szGWseI58qpNMMkn+E0HwWWaZJc0111z5M9Xx/j3tTz311OXpE044IS244IL5Kt9IXRK/IKm+AC9SmUT9eLZWW221cWIXAfFqHyLIXMx90fGqebyMrKtSXd0dv0woykDGH21Uf6FQneei/eIzXjy32GKL5bvxIrP4MxF/HygECBAgQIAAAQIECBAgQIBAGwtkq9tqVw455JBYdtqnn2zVZien7KvgTW08++yzner0dKC36/t7fo899mjqV3Ws++23XyPLa9rpfJZuoJG9eKyRfXW+6VwWJC2HkAWnGrvuumvT+dGjRzeyQHdZJ+pngaOmOnH/4ljxWe3TEkss0ciCY2UbPW3cd999jdlmm61T+9X2soBspyayFZidxla9Jkv50Jh77rmb2o37ZIG9RhbAb/z85z9vOnf44Yc3slWY+X3i89xzz206v/baazeyVA75+YFeH41kKzibxh19qz5vgzF3WSC1aQxVn47bBx54YCPLH52Pr5V/XH755d22vd566zWy1fCdzh9xxBEDtm/FLupkOZWb7p8F9JuGFc9+xz8b99xzT1OdBx98sKmNGFfxDPR3/HGDaLf65yb7pUUjC8w23bvY6fh32w033FCc8kmAAAECBAgQIECAAAECBAi0qUB8Zb5WJVu92RRk6RiY6mo/W9HWpVH2NfOyrQiK9rX0dn1/z2df9W5sv/32Zd9iTMstt1wjW22bdzF7SVUZDIxg0J///OdGlgO4qX7VIcsn28jyzXZ7foYZZmgaegQbOwa7IgCVpTRoPP7443k7ESyNIOBjjz3WdG0rO9lK1Lytah+LMUawq7uSrZBtZDmBm8YR/YjxR4ntCIxGUPree+9tZF/LzwNwHe9T7MeYstWQjWwFcFObxfn4vP3227s918r1ESTsKWAdz91gzV08NxtssEG3/a2OK7a32Wab7qi7PH7sscc2tR3jyvLq5s7ZquhGBPKj3XieDjjggDyo3/Gexf5g2UXguzvfeB6yl/E1slXlTf0u+hCf0ecoSy+9dLd1Tj311LxOX8cfvxjprm9x75VXXjlvt/qPLBVF2Y+4NuZUIUCAAAECBAgQIECAAAECBNpbYER0PwsGKP0UyAKSKb4q3UoKgK5u0dv1AzkfL/OKr/LPOuusKQuKNd0+cnjGV/6L9AdNJwdpJ3KGxlfy4wVnX/ziF9MEE0yQ4qvqWVAyLb744vn+QG4VeU0ffvjhFGOJFAmRKqKV8swzz+Rjn3baadM888xTpm545JFH8pyv0c86lkghsNZaa+VpE4488siUBTfztALxsriYy/iJVBKRwuLiiy9OWRA1xTMW89tqibbimY50DHPMMUenZyDyN8fxavqLVttuh3rjYvwxj9kvRvLUJJH+QiFAgAABAgQIECBAgAABAgTaW0AAt73nT+8JDIpA5HddaaWV8uBs5AiOPLc9lSzlQNpkk01Sttp6rP4SoKc+OEeAAAECBAgQIECAAAECBAgQqINAPZca1mFmjZFAHwS+/e1v58HbLCVAr8HbaDZWKWdf0Re87YOxqgQIECBAgAABAgQIECBAgACB/ggI4PZHzTUExiOB7CVrKcuLnI8oUm689tprPY7ulltuSVtvvXXacsste6znJAECBAgQIECAAAECBAgQIECAwMAFpFAYuKEWCLS9wPzzz5/nK46BRG7bCNBGXuH55psvTTfddHlQ94knnkjnnHNOuvnmm9Nuu+2WDjrooE45bNsewgAIECBAgAABAgQIECBAgAABAsNMQAB3mE2I7hAYCoEHH3wwrbrqqvlLy3q6fwR1999//7T55pv3VM05AgQIECBAgAABAgQIECBAgACBQRIQwB0kSM0QaHeB999/P5177rkpXlAWq20fffTRNPfcc+ercGOFbry0bNlll00jRoxo96HqPwECBAgQIECAAAECBAgQIECgbQQEcNtmqnSUAAECBAgQIECAAAECBAgQIECAAIG6CXiJWd1m3HgJECBAgAABAgQIECBAgAABAgQIEGgbAQHctpkqHSVAgAABAgQIECBAgAABAgQIECBAoG4CArh1m3HjJUCAAAECBAgQIECAAAECBAgQIECgbQQEcNtmqnSUAAECBAgQIECAAAECBAgQIECAAIG6CQjg1m3GjZcAAQIECBAgQIAAAQIECBAgQIAAgbYREMBtm6nSUQIECBAgQIAAAQIECBAgQIAAAQIE6iYggFu3GTdeAgQIECBAgAABAgQIECBAgAABAgTaRkAAt22mSkcJECBAgAABAgQIECBAgAABAgQIEKibgABu3WbceAkQIECAAAECBAgQIECAAAECBAgQaBsBAdy2mSodJUCAAAECBAgQIECAAAECBAgQIECgbgICuHWbceMlQIAAAQIECBAgQIAAAQIECBAgQKBtBARw22aqdJQAAQIECBAgQIAAAQIECBAgQIAAgboJCODWbcaNlwABAgQIECBAgAABAgQIECBAgACBthEQwG2bqdJRAgQIECBAgAABAgQIECBAgAABAgTqJiCAW7cZN14CBAgQIECAAAECBAgQIECAAAECBNpGQAC3baZKRwkQIECAAAECBAgQIECAAAECBAgQqJuAAG7dZtx4CRAgQIAAAQIECBAgQIAAAQIECBBoGwEB3LaZKh0lQIAAAQIECBAgQIAAAQIECBAgQKBuAgK4dZtx4yVAgAABAgQIECBAgAABAgQIECBAoG0EBHDbZqp0lAABAgQIECBAgAABAgQIECBAgACBugkI4NZtxo2XAAECBAgQIECAAAECBAgQIECAAIG2ERDAbZup0lECBAgQIECAAAECBAgQIECAAAECBOomIIBbtxk3XgIECBAgQIAAAQIECBAgQIAAAQIE2kZAALdtpkpHCRAgQIAAAQIECBAgQIAAAQIECBCom4AAbt1m3HgJECBAgAABAgQIECBAgAABAgQIEGgbAQHctpkqHSVAgAABAgQIECBAgAABAgQIECBAoG4CArh1m3HjJUCAAAECBAgQIECAAAECBAgQIECgbQQEcNtmqnSUAAECBAgQIECAAAECBAgQIECAAIG6CQjg1m3GjZcAAQIECBAgQIAAAQIECBAgQIAAgbYREMBtm6nSUQIECBAgQIAAAQIECBAgQIAAAQIE6iYggFu3GTdeAgQIECBAgAABAgQIECBAgAABAgTaRkAAt22mSkcJECBAgAABAgQIECBAgAABAgQIEKibgABu3WbceAkQIECAAAECBAgQIECAAAECBAgQaBsBAdy2mSodJUCAAAECBAgQIECAAAECBAgQIECgbgICuHWbceMlQIAAAQIECBAgQIAAAQIECBAgQKBtBARw22aqdJQAAQIECBAgQIAAAQIECBAgQIAAgboJCODWbcaNlwABAgQIECBAgAABAgQIECBAgACBthEQwG2bqdJRAgQIECBAgAABAgQIECBAgAABAgTqJiCAW7cZN14CBAgQIECAAAECBAgQIECAAAECBNpGQAC3baZKRwkQIECAAAECBAgQIECAAAECBAgQqJuAAG7dZtx4CRAgQIAAAQIECBAgQIAAAQIECBBoGwEB3LaZKh0lQIAAAQIECBAgQIAAAQIECBAgQKBuAgK4dZtx4yVAgAABAgQIECBAgAABAgQIECBAoG0EBHDbZqp0lAABAgQIECBAgAABAgQIECBAgACBugkI4NZtxo2XAAECBAgQIECAAAECBAgQIECAAIG2ERDAbZup0lECBAgQIECAAAECBAgQIECAAAECBOomIIBbtxk3XgIECBAgQIAAAQIECBAgQIAAAQIE2kZAALdtpkpHCRAgQIAAAQIECBAgQIAAAQIECBCom4AAbt1m3HgJECBAgAABAgQIECBAgAABAgQIEGgbAQHctpkqHSVAgAABAgQIECBAgAABAgQIECBAoG4CArh1m3HjJUCAAAECBAgQIECAAAECBAgQIECgbQQEcNtmqnSUAAECBAgQIECAAAECBAgQIECAAIG6CQjg1m3GjZcAAQIECBAgQIAAAQIECBAgQIAAgbYREMBtm6nSUQIECBAgQIAAAQIECBAgQIAAAQIE6iYggFu3GTdeAgQIECBAgAABAgQIECBAgAABAgTaRkAAt22mSkcJECBAgAABAgQIECBAgAABAgQIEKibgABu3WbceAkQIECAAAECBAgQIECAAAECBAgQaBsBAdy2mSodJUCAAAECBAgQIECAAAECBAgQIECgbgICuHWbceMlQIAAAQIECBAgQIAAAQIECBAgQKBtBARw22aqdJQAAQIECBAgQIAAAQIECBAgQIAAgboJCODWbcaNlwABAgQIECBAgAABAgQIECBAgACBthEQwG2bqdJRAgQIECBAgAABAgQIECBAgAABAgTqJiCAW7cZN14CBAgQIECAAAECBAgQIECAAAECBNpGQAC3baZKRwkQIECAAAECBAgQIECAAAECBAgQqJuAAG7dZtx4CRAgQIAAAQIECBAgQIAAAQIECBBoGwEB3LaZKh0lQIAAAQIECBAgQIAAAQIECBAgQKBuAgK4dZtx4yVAgAABAgQIECBAgAABAgQIECBAoG0EBHDbZqp0lAABAgQIECBAgAABAgQIECBAgACBugkI4NZtxo2XAAECBAgQIECAAAECBAgQIECAAIG2ERDAbZup0lECBAgQIECAAAECBAgQIECAAAECBOomIIBbtxk3XgIECBAgQIAAAQIECBAgQIAAAQIE2kZAALdtpkpHCRAgQIAAAQIECBAgQIAAAQIECBCom4AAbt1m3HgJECBAgAABAgQIECBAgAABAgQIEGgbAQHctpkqHSVAgAABAgQIECBAgAABAgQIECBAoG4CArh1m3HjJUCAAAECBAgQIECAAAECBAgQIECgbQQEcNtmqnSUAAECBAgQIECAAAECBAgQIECAAIG6CQjg1m3GjZcAAQIECBAgQIAAAQIECBAgQIAAgbYREMBtm6nSUQIECBAgQIAAAQIECBAgQIAAAQIE6iYggFu3GTdeAgQIECBAgAABAgQIECBAgAABAgTaRkAAt22mSkcJECBAgAABAgQIECBAgAABAgQIEKibgABu3WbceAkQIECAAAECBAgQIECAAAECBAgQaBsBAdy2mSodJUCAAAECBAgQIECAAAECBAgQIECgbgICuHWbceMlQIAAAQIECBAgQIAAAQIECBAgQKBtBARw22aqdJQAAQIECBAgQIAAAQIECBAgQIAAgboJCODWbcaNlwABAgQIECBAgAABAgQIECBAgACBthEQwG2bqdJRAgQIECBAgAABAgQIECBAgAABAgTqJiCAW7cZN14CBAgQIECAAAECBAgQIECAAAECBNpGQAC3baZKRwkQIECAAAECBAgQIECAAAECBAgQqJuAAG7dZtx4CRAgQIAAAQIECBAgQIAAAQIECBBoGwEB3LaZKh0lQIAAAQIECBAgQIAAAQIECBAgQKBuAgK4dZtx4yVAgAABAgQIECBAgAABAgQIECBAoG0EBHDbZqp0lAABAgQIECBAgAABAgQIECBAgACBugkI4NZtxo2XAAECBAgQIECAAAECBAgQIECAAIG2ERDAbZup0lECBAgQIECAAAECBAgQIECAAAECBOomIIBbtxk3XgIECBAgQIAAAQIECBAgQIAAAQIE2kZAALdtpkpHCRAgQIAAAQIECBAgQIAAAQIECBCom4AAbt1m3HgJECBAgAABAgQIECBAgAABAgQIEGgbAQHctpkqHSVAgAABAgQIECBAgAABAgQIECBAoG4CArh1m3HjJUCAAAECBAgQIECAAAECBAgQIECgbQQEcNtmqnSUAAECBAgQIECAAAECBAgQIECAAIG6CQjg1m3GjZcAAQIECBAgQIAAAQIECBAgQIAAgbYREMBtm6nSUQIECBAgQIAAAQIECBAgQIAAAQIE6iYggFu3GTdeAgQIECBAgAABAgQIECBAgAABAgTaRkAAt22mSkcJECBAgAABAgQIECBAgAABAgQIEKibgABu3WbceAkQIECAAAECBAgQIECAAAECBAgQaBsBAdy2mSodJUCAAAECBAgQIECAAAECBAgQIECgbgICuHWbceMlQIAAAQIECBAgQIAAAQIECBAgQKBtBARw22aqdJQAAQIECBAgQIAAAQIECBAgQIAAgboJCODWbcaNlwABAgQIECBAgAABAgQIECBAgACBthEQwG2bqdJRAgQIECBAgAABAgQIECBAgAABAgTqJiCAW7cZN14CBAgQIECAAAECBAgQIECAAAECBNpGQAC3baZKRwkQIECAAAECBAgQIECAAAECBAgQqJuAAG7dZtx4CRAgQIAAAQIECBAgQIAAAQIECBBoGwEB3LaZKh0lQIAAAQIECBAgQIAAAQIECBAgQKBuAgK4dZtx4yVAgAABAgQIECBAgAABAgQIECBAoG0EBHDbZqp0lAABAgQIECBAgAABAgQIECBAgACBugkI4NZtxo2XAAECBAgQIECAAAECBAgQIECAAIG2ERDAbZup0lECBAgQIECAAAECBAgQIECAAAECBOomIIBbtxk3XgIECBAgQIAAAQIECBAgQIAAAQIE2kZAALdtpkpHCRAgQIAAAQIECBAgQIAAAQIECBCom4AAbt1m3HgJECBAgAABAgQIECBAgAABAgQIEGgbAQHctpkqHSVAgAABAgQIECBAgAABAgQIECBAoG4CArh1m3HjJUCAAAECBAgQIECAAAECBAgQIECgbQQEcNtmqnSUAAECBAgQIECAAAECBAgQIECAAIG6CQjg1m3GjZcAAQIECBAgQIAAAQIECBAgQIAAgbYREMBtm6nSUQIECBAgQIAAAQIECBAgQIAAAQIE6iYggFu3GTdeAgQIECBAgAABAgQIECBAgAABAgTaRkAAt22mSkcJECBAgAABAgQIECBAgAABAgQIEKibgABu3WbceAkQIECAAAECBAgQIECAAAECBAgQaBsBAdy2mSodJUCAAAECBAgQIECAAAECBAgQIECgbgICuHWbceMlQIAAAQIECBAgQIAAAQIECBAgQKBtBARw22aqdJQAAQIECBAgQIAAAQIECBAgQIAAgboJCODWbcaNlwABAgQIECBAgAABAgQIECBAgACBthEQwG2bqdJRAgQIECBAgAABAgQIECBAgAABAgTqJiCAW7cZN14CBAgQIECAAAECBAgQIECAAAECBNpGQAC3baZKRwkQIECAAAECBAgQIECAAAECBAgQqJuAAG7dZtx4CRAgQIAAAQIECBAgQIAAAQIECBBoGwEB3LaZKh0lQIAAAQIECBAgQIAAAQIECBAgQKBuAgK4dZtx4yVAgAABAgQIECBAgAABAgQIECBAoG0EBHDbZqp0lAABAgQIECBAgAABAgQIECBAgACBugkI4NZtxo2XAAECBAgQIECAAAECBAgQIECAAIG2ERDAbZup0lECBAgQIECAAAECBAgQIECAAAECBOomIIBbtxk3XgIECBAgQIAAAQIECBAgQIAAAQIE2kZAALdtpkpHCRAgQIAAAQIECBAgQIAAAQIECBCom8DI++67r25jNl4CBAgQIECAAAECBAgQIECAAAECBAi0hYAVuG0xTTpJgAABAgQIECBAgAABAgQIECBAgEAdBUa8/fbbjToO3JgJECBAgAABAgQIECBAgAABAgQIECAw3AWswB3uM6R/BAgQIECAAAECBAgQIECAAAECBAjUVkAAt7ZTb+AECBAgQIAAAQIECBAgQIAAAQIECAx3AQHc4T5D+keAAAECBAgQIECAAAECBAgQIECAQG0FBHBrO/UGToAAAQIECBAgQIAAAQIECBAgQIDAcBcQwB3uM6R/BAgQIECAAAECBAgQIECAAAECBAjUVkAAt7ZTb+AECBAgQIAAAQIECBAgQIAAAQIECAx3AQHc4T5D+keAAAECBAgQIECAAAECBAgQIECAQG0FBHBrO/UGToAAAQIECBAgQIAAAQIECBAgQIDAcBcQwB3uM6R/BAgQIECAAAECBAgQIECAAAECBAjUVmBkbUfex4E/9dRT6cknn0zXXXddH6/sufpcc82VVltttRSfY6M88sgjebPzzz//2GhemwQIECBAgAABAgQIECBAgAABAkMkIO4zRPDj+LZW4LYIfu211w568DZuXQSGW+yGagQIECBAgAABAgQIECBAgAABAgQI1EjACtwWJzsCrVEOPPDAFq9ordpee+2VB4ZjFa5CgAABAgQIECBAgAABAgQIECBAgACBqoAVuFUN2wQIECBAgAABAgQIECBAgAABAgQIEBhGAoOyAnew0wsU+WC32267YUSlKwQIECBAgAABAgQIECBAgAABAgQI9CRQxAkjvle8+6mn+s71LjDgAO4pp5yS53Ht/Vat1yjSFcSESy3QupuaBAgQIECAAAECBAgQIECAAAECBIZKoAjexv0jvlfE+MT3BjYjAw7gFhMhN+zAJqKOV1911VXp008/bXno8Yd94oknTn//+9/Tiy++mOacc860wAILtHy9iuO/wIcffpieeOKJ9OSTT+afL7/8cppuuunSzDPPnL785S+nL3zhC+M/wn9HeMMNN6RPPvkkLbzwwmmGGWaozbi7G+iYMWPS9ddfn55//vkUz8XIkSNzl/h7ZOWVV06TTz55d5c6Pp4K/Oc//ylfTjr11FOnJZZYoseRPvvssyne8DvppJOm5Zdfvse64/PJp59+Oj3++ONpyimnTEsvvfT4PNRybPF3R3f/vTJixIj02c9+Ns0444z5v2tif1yV+++/P38m33777TTvvPOmFVdccVzd2n3GQ4Hqcz733HOn+OmtxH933XzzzWW1BRdcMP9zUB6wMd4KFP9OjAHGyrp55pln2Iz1zTffTHfeeWfen/h7Mf7/Mcott9ySPvjgg2H338bd9TfvtH8QaFOB6667rlPP41i7BXBjwWr0ucgS0GlQ3RyIOGkEsQc7q8CAA7jd9NdhAj0KxP8IHXTQQT3W6Xhy2WWXzf8FfN5556Xbb789bbrpprUN4EZg7pprrsmJllpqqTTttNN25Krd/jPPPJN+9atfpXfffbdp7K+++mr+P7gR0Jx11lnTNttsk2abbbamOuPjzjnnnJMPa6qppqp1ALfRaKSzzjqr6X8wi/l+4YUX0r333psuvfTStMkmm6RVVlmlOOWzBgIff/xxuuCCC8qRTjHFFD3+OyX+xy/+HplkkkkGHMCNv5fuu+++/N7t9h+y0e+//vWvKYLedQjgRqD/3HPPLZ+TnjY+97nPpW233balwFdP7bRy7o9//GO6+uqry6oRTBHALTls9EOg+pzPNNNMafTo0b22EkGy6t+j8fdj/NJcGf8F4r+t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hIAQqHgEIGwxA4B5IsxrsFlbaL+54l+gnhPIBpdsVFboxn9sdIgpKpn/qecMU3RCoAwImNJmGJQI3BCN4s7LQuAWGjUEbS77U0biEnZ4Xmhcci8EhIAQEAJCQAgIASEgBISAEBACQqAcCLAZFz9JfgiwcVkxsttuuzl+EiEgBKoPAePwTCkTQtfuVd/bVE6Km6V2mv6ycpLT8CkJd5qrr9QwE5GkjVxqGipxN8JS30n+hYAQEAJCQAgIASEgBISAEBACQkAICAEhIAScE+/TNErBBk3jNfN/S2YF6lO1m7g0E5F//silEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQaEoISAO3KeW23lUICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIgapCQBq4VZVdSqwQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAk0JARG4TSm39a5CQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACFQVAiJwqyq7lFghIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBJoSAiJwm1Ju612FgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEKgqBETgVlV2KbFCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACDQlBETgNqXc1rsKASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBIVBVCIjArarsUmKFgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEGhKCIjAbUq5rXcVAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQqCqEGheValVYusNgf1/taje4lJEjReBZy7t2nhfTm8mBISAEBACQkAICAEhIASEgBAQAkJACAiBekCg+ZQpU+ohGkVRfQhsXH1JVoorDgHVLxWXJUqQEBACQkAICAEhIASEgBAQAkJACAgBIVBlCMiEQpVlmJIrBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhEDTQaDZlylpOq+rNxUCQkAICAEhIASEgBAQAtWBwJgxY3xC+/btWx0JViqFgBAQAkJACAgBISAE6gQBaeDWCawKVAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBIVA6AiJwS8dQIQgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIATqBAERuHUCqwIVAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAIlI6ACNzSMVQIQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIgTpBQARuncCqQIWAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAKlIyACt3QMFYIQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkKgThAQgVsnsCpQISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEQOkINC89CIUgBBonAmvXrq31YhtuuGGte7ohBISAEBACQkAICAEhIASEgBAQAkJACAgBISAE6gqBqiJwP/jgA/fll1+6zp07u/bt2xeMybRp09y8efMcJNyIESMK9i8P5UNg7NixbvHixa5169Zul112KV/AZQrp/fffdzNmzKgV2k477eTatm1b675uCAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIgbpAoGoIXIjb9957z2Ow2WabuW222aZgPNatW+f9EFZDyyeffOKmTp3qmjVrVpEEZl3jY3lgx0LjGzNmjFu+fLnr3r2723LLLQv1ntN9q1atXPPmNZ8HaYzTxs0ZiBwIASEgBISAEBACQkAICAEhIASEgBAQAkJACAiBEhGoGgK3xPesOO8rVqxwK1eurLh0VUuCli5d6tasWeM41oV069bN8UM+//xz9/bbb9dFNApTCAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAIZEVAm5hlhUcPhYAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAg2HQEVp4GKftkWLFm6TTTYpGZHPPvvMLViwwC1btsx16NDBL7XPFShL5T/88EP36aefulWrVnlbp126dHFdu3bN5dURH2YR0NbEVAN2UrfYYosMe6k8W7JkiQ/Ljlxg2zeUTp06+TRzz/xgtxdzAXHCO2JPFnMMxIlgXmDRokXe3i8mJ8Bi4cKF/hk2hAlrgw2S+fsvvvjCffzxx/698ESaCKdly5Y+jHL+A3fS+tFHH7nVq1f7uHr16lUrfXPnzvU2kInbzGGQzhA/3mnzzTdPJ48yhVvSj11bzsEIDGbPnu3zmrzq27dvrfjSgeRxMmfOHJ9nhCsRAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBAC5UKgwQlcCLiZM2d6Ag8ib9NNNy2Z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tQg5sXDhQoEncmJiYo6J4JgbjQRIgARIgARuFAEKuDeKPPslARIgARIgARIgARIgARIggRwisHfvXiVorlmzRoW4QDcdO3bMod5uXLMIO4EDZh/a4caNij2TAAmQAAmQgGcJUMB1gad/gbRQwYUMbwZteExHmzWt83gmARIgARIgARIgARIgARIggRtBYN68eRIbG2t23bRpU0H8W1+2okWL+vL0ODcSIAESIIF8TIAxcPPx4nPqJEACJEACJEACJEAC3ksgOzFwvXdWHFluEVi5cqXaxC4oKEiqVaumjtzqm/2QAAmQAAmQAAl4lgAFXM/yZGskQAIkQAIkQAIkQAIk4BECFHA9gpGNkAAJkAAJkAAJkECeJ5AWGyDPT4UTIAESIAESIAESIAESIAESIAESIAESIAESIAESIAHfIkAB17fWk7MhARIgARIgARIgARIgARIgARIgARIgARIgARLwIQIUcH1oMTkVEiABEiABEiABEiABEiABEiABEiABEiABEiAB3yJAAde31pOzIQESIAESIAESIAESIAESIAESIAESIAESIAES8CECFHB9aDE5FRIgARIgARIgARIgARIgARIgARIgARIgARIgAd8iQAHXt9aTsyEBEiABEiABEiABEiABEiABEiABEiABEiABEvAhAhRwfWgxORUSIAESIAESIAESIAESIAESIAESIAESIAESIAHfIlDQt6bD2ZAACZAACZAACZAACZBA/iSwf/9+uXz5spQoUUIdBQvyX/38+U7grEmABEiABEiABHyNAP+r87UV5XxIgARIgARIgARIgATyJYFJkybJkSNHzLnfdNNN0qdPH/OaCRIgARIgARIgARIggbxJgCEU8ua6cdQkQAIkQAIkQAIkQAIkYEOgRYsW0rhxYylVqpTKX758uWzdutWmDC9IgARIgARIgARIgATyHgF64Oa9NeOISYAESIAESIAESIAESCAdgVatWqm8a9euyeuvvy5JSUmSkJAgtWvXTleWGSRAAiRAAiRAAiRAAnmHAD1w885acaQkQAIkQAIkQAIkQAIkkCkBPz8/qVixoip38uTJTMuzAAmQAAmQAAmQAAmQgHcToIDr3evD0ZEACZAACZAACZAACZCA2wQCAgJUHWxqRiMBEiABEiABEiABEsjbBCjg5u314+hJgARIgARIgARIgARIgARI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H7xuETYAAh9ERE9+GWnpKleSWFcIt+AH0Rjr6g5DdwaJTcGmTp2qqmTE2J02nZV1d53wvsbPBtYVm63iCw+sqysews7GkFF+Vn6e3J1TRv3b32MIBXsivCYBEiABEiABEiABEiABEsgRAlYhAfHssPkIHgmFhxiNBEiABHyRAARY7UXpyvzg/YjfiVn5vQhxD4e3GR57d+QF6WycEG212K3PKDt9+nRVBX83MgrtgzAN7vTnbBzekp9b6wqRGCE4YB07dsyQsSfYuLtOCP+gPXE90X9mbWSFu7tzymwM1vsUcK00mCYBEiABEiABEiABEiABEsgxAohHiA/e8BDDhi84cI3HgmkkQAIkQAIkgIfEX3jhBbVZG+KawtsUj/0vWLBAEhISFKCBAwcSlIcIwMt0x44dKiQBvG/hAQ6vVh3qw0PdsBkPEKCA6wGIbIIESIAESIAESIAESIAESCBzAnjMEXENt2zZIojDi8dBHW0uknlLLEECJEACJOCLBBAmASEX1q1bpw7rHOGdjE21ctML09q/L6Y3btxos3EpvMVHjBhhekD74pzz6pwYAzevrhzHTQIkQAIkQAIkQAIk4NMEfDEGrk8vGCdHAiRAAiSQbQKIc4ov+eLj41Uc4JSUFLWZGTbtatq0qVfE9M32JL2oAbDGgRBH+EK1Zs2aglAFNO8jQAHX+9aEIyIBEiABEiABEiABEiABoYDLNwEJkAAJkAAJkAAJkAAI+BMDCZAACZAACZAACZAACZAACZAACZAACZAACZAACZCAdxKggOud68JRkQAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAA9cPkeIAESIAESIAESIAESIAESIAESIAESIAESIAESIAFvJUAPXG9dGY6LBEiABEiABEiABEiABEiABEiABEiABEiABEgg3xMomO8JeBGAq1euCg6r+fn7SYGCBaxZTJMACZAACZAACZAACZAACZAACZAACZAACZAACeQTAhRwvWihF36yUBZ+vMBmRGWiy8rIWSNt8nhBAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiSQPwhQwPWidQ6pFCJVW1RVIzp9KEmO7zrmRaPjUEiABEiABEiABEiABEiABEiABEiABEiABEiABHKbAAXc3CaeQX8xfWMEB2zTjE0y9f+mZFCat0iABEiABEiABEiABEiA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"/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><g id="Default"><use fill="#000" filter="url(#filter-3)" xlink:href="#path-2"/><path fill="#FFF" stroke="#A7333A" d="M141.5 50.775l15.69 16.01h-6.488c.886 1.695 3.06 5.91 4.01 8.24.318.776-.979 2.324-.979 2.324h0l-2.42.151-4.2-8.574-5.613 5.727V50.775z"/></g></g></g></svg> \ No newline at end of file diff --git a/2-ui/1-document/03-dom-navigation/1-dom-children/solution.md b/2-ui/1-document/03-dom-navigation/1-dom-children/solution.md index decfa62c7..cd9dd5719 100644 --- a/2-ui/1-document/03-dom-navigation/1-dom-children/solution.md +++ b/2-ui/1-document/03-dom-navigation/1-dom-children/solution.md @@ -1,27 +1,27 @@ -There are many ways, for instance: +অনেকভাবে এটি করা যায়, যেমন: -The `<div>` DOM node: +`<div>` DOM নোড: ```js document.body.firstElementChild -// or +// অথবা document.body.children[0] -// or (the first node is space, so we take 2nd) +// অথবা (প্রথম নোডটি স্পেস হতে পারে, আমরা 2য়টি নিব) document.body.childNodes[1] ``` -The `<ul>` DOM node: +`<ul>` DOM নোড: ```js document.body.lastElementChild -// or +// অথবা document.body.children[1] ``` -The second `<li>` (with Pete): +দ্বিতীয় `<li>` (Pete টেক্সট সহ): ```js -// get <ul>, and then get its last element child +// প্রথমে <ul>, এবং তারপর শেষ চাইল্ড এলিমেন্ট document.body.lastElementChild.lastElementChild ``` diff --git a/2-ui/1-document/03-dom-navigation/1-dom-children/task.md b/2-ui/1-document/03-dom-navigation/1-dom-children/task.md index d97f2748a..73762ccee 100644 --- a/2-ui/1-document/03-dom-navigation/1-dom-children/task.md +++ b/2-ui/1-document/03-dom-navigation/1-dom-children/task.md @@ -2,9 +2,9 @@ importance: 5 --- -# DOM children +# DOM চিলড্রেন -Look at this page: +এটি দেখুন: ```html <html> @@ -18,7 +18,7 @@ Look at this page: </html> ``` -For each of the following, give at least one way of how to access them: -- The `<div>` DOM node? -- The `<ul>` DOM node? -- The second `<li>` (with Pete)? +নিম্নোক্ত প্রতিটি এলিমেন্ট সমূহ কিভাবে অ্যাক্সেস করা যায়? +- `<div>` DOM নোড? +- `<ul>` DOM নোড? +- দ্বিতীয় `<li>` (Pete টেক্সট সহ)? diff --git a/2-ui/1-document/03-dom-navigation/3-navigation-links-which-null/solution.md b/2-ui/1-document/03-dom-navigation/3-navigation-links-which-null/solution.md index d76936320..efb450192 100644 --- a/2-ui/1-document/03-dom-navigation/3-navigation-links-which-null/solution.md +++ b/2-ui/1-document/03-dom-navigation/3-navigation-links-which-null/solution.md @@ -1,6 +1,6 @@ -1. Yes, true. The element `elem.lastChild` is always the last one, it has no `nextSibling`. -2. No, wrong, because `elem.children[0]` is the first child *among elements*. But there may exist non-element nodes before it. So `previousSibling` may be a text node. +1. হ্যাঁ, সত্য। `elem.lastChild` সর্বদা শেষটি হবে, এটির কোন `nextSibling` নেই। +2. না, ভুল, কেননা `elem.children[0]` হবে *সকল এলিমেন্টের* মধ্যে প্রথম চাইল্ড। কিন্তু পূর্বে নন-এলিমেন্ট নোডও থাকতে পারে. সুতরাং `previousSibling` টেক্সট নোডও হতে পারে। -Please note: for both cases if there are no children, then there will be an error. +দয়া করে মনে রাখুন: উভয়ই ক্ষেত্রে কোন চিলড্রেন না থাকলে, এরোর হবে। -If there are no children, `elem.lastChild` is `null`, so we can't access `elem.lastChild.nextSibling`. And the collection `elem.children` is empty (like an empty array `[]`). +যদি কোন চিলড্রেন না থাকে, `elem.lastChild` হবে `null`, সুতরাং আমরা এভাবে লিখতে পারব না `elem.lastChild.nextSibling`। এবং `elem.children` কালেকশনটি হবে খালি (অনেকটা খালি অ্যারের মত `[]`)। diff --git a/2-ui/1-document/03-dom-navigation/3-navigation-links-which-null/task.md b/2-ui/1-document/03-dom-navigation/3-navigation-links-which-null/task.md index 235e83a0c..8ea3d9725 100644 --- a/2-ui/1-document/03-dom-navigation/3-navigation-links-which-null/task.md +++ b/2-ui/1-document/03-dom-navigation/3-navigation-links-which-null/task.md @@ -2,9 +2,9 @@ importance: 5 --- -# The sibling question +# sibling নিয়ে প্রশ্ন -If `elem` -- is an arbitrary DOM element node... +`elem` -- কি আরবিট্ররি DOM এলিমেন্ট নোড হবে?... -- Is it true that `elem.lastChild.nextSibling` is always `null`? -- Is it true that `elem.children[0].previousSibling` is always `null` ? +- `elem.lastChild.nextSibling` সর্বদা `null` এটি কি সত্য? +- `elem.children[0].previousSibling` সর্বদা `null` এটি কি সত্য? diff --git a/2-ui/1-document/03-dom-navigation/4-select-diagonal-cells/solution.md b/2-ui/1-document/03-dom-navigation/4-select-diagonal-cells/solution.md index f2aa86302..d57c6e089 100644 --- a/2-ui/1-document/03-dom-navigation/4-select-diagonal-cells/solution.md +++ b/2-ui/1-document/03-dom-navigation/4-select-diagonal-cells/solution.md @@ -1 +1 @@ -We'll be using `rows` and `cells` properties to access diagonal table cells. +আমরা `rows` এবং `cells` প্রপার্টি দ্বারা কোণাকুণি *td* সমূহকে সিলেক্ট করতে পারি। \ No newline at end of file diff --git a/2-ui/1-document/03-dom-navigation/4-select-diagonal-cells/task.md b/2-ui/1-document/03-dom-navigation/4-select-diagonal-cells/task.md index 23be59fc1..ae411a89b 100644 --- a/2-ui/1-document/03-dom-navigation/4-select-diagonal-cells/task.md +++ b/2-ui/1-document/03-dom-navigation/4-select-diagonal-cells/task.md @@ -2,17 +2,17 @@ importance: 5 --- -# Select all diagonal cells +# কোণাকুণি সকল td কে সিলেক্ট করুন -Write the code to paint all diagonal table cells in red. +কোণাকুণি সকল td এর ব্যকগ্রাউন্ড লাল করার কোড লিখুন। -You'll need to get all diagonal `<td>` from the `<table>` and paint them using the code: +প্রথমে আপনাকে `<table>` এর সকল কোণাকুণি `<td>` কে সিলেক্ট করতে হবে তারপর তাদের ব্যাকগ্রাউন্ড পরিবর্তন করবেন: ```js // td should be the reference to the table cell td.style.backgroundColor = 'red'; ``` -The result should be: +আউটপুট হবে এমন: [iframe src="solution" height=180] diff --git a/2-ui/1-document/03-dom-navigation/article.md b/2-ui/1-document/03-dom-navigation/article.md index b5f03098c..24cbe9e47 100644 --- a/2-ui/1-document/03-dom-navigation/article.md +++ b/2-ui/1-document/03-dom-navigation/article.md @@ -5,37 +5,37 @@ libs: --- -# Walking the DOM +# DOM এ নেভিগেশন -The DOM allows us to do anything with elements and their contents, but first we need to reach the corresponding DOM object. +DOM আমাদের সকল এলিমেন্ট এবং তাদের কন্টেন্ট কে পরিবর্তন, পরিমার্জন করতে দেয়,কিন্তু প্রথমে আমাদের DOM অবজেক্ট টির কাছে পৌঁছাতে হবে। -All operations on the DOM start with the `document` object. That's the main "entry point" to DOM. From it we can access any node. +DOM এর সকল অপারেশন `document` অবজেক্ট এর মাধ্যমে করতে হয়। এটিই DOM এর "entry point"। এর সাহায্যে আমরা যেকোন নোড অ্যাক্সেস করতে পারি। -Here's a picture of links that allow for travel between DOM nodes: +এখানে দেখুন কিভাবে আমরা DOM নোডে ট্রাভার্স করতে পারি: ![](dom-links.svg) -Let's discuss them in more detail. +চলুন এ সম্পর্কে আরো বিস্তারিত জানি। -## On top: documentElement and body +## শুরুতে: documentElement এবং body -The topmost tree nodes are available directly as `document` properties: +ট্রি নোডের একদম উপরের নোড সমূহ সরাসরি `document` এর প্রপার্টি হিসেবে থাকে: `<html>` = `document.documentElement` -: The topmost document node is `document.documentElement`. That's the DOM node of the `<html>` tag. +: একদম উপরের নোডটি হল `document.documentElement`। এটি দ্বারা `<html>` ট্যাগকে নির্দেশিত করে। `<body>` = `document.body` -: Another widely used DOM node is the `<body>` element -- `document.body`. +: আরেকটি বহুল ব্যবহৃত নোড হল `<body>` এলিম্যান্ট -- `document.body`. `<head>` = `document.head` -: The `<head>` tag is available as `document.head`. +: `<head>` ট্যাগকে `document.head` এর মাধ্যমে অ্যাক্সেস করতে পারি। -````warn header="There's a catch: `document.body` can be `null`" -A script cannot access an element that doesn't exist at the moment of running. +````warn header="`document.body` এর একটি ইরোর এটি `null` হতে পারে" +স্ক্রিপ্ট যেসব এলিমেন্ট থাকে না তাদের অ্যাক্সেস করতে পারে না। -In particular, if a script is inside `<head>`, then `document.body` is unavailable, because the browser did not read it yet. +যেমন, যদি `<head>` এ স্ক্রিপ্ট ট্যাগের সাহায্যে আমাদের `document.body` কে অ্যাক্সেস করতে চাওয়া, কেননা ব্রাউজার আদৌ `body` ট্যাগ রেন্ডার করে না। -So, in the example below the first `alert` shows `null`: +সুতরাং, নিচের উদাহরণে `alert` এর মান হবে `null`: ```html run <html> @@ -43,7 +43,7 @@ So, in the example below the first `alert` shows `null`: <head> <script> *!* - alert( "From HEAD: " + document.body ); // null, there's no <body> yet + alert( "From HEAD: " + document.body ); // null, কেননা body ট্যাগ রেন্ডার হয়নি */!* </script> </head> @@ -51,7 +51,7 @@ So, in the example below the first `alert` shows `null`: <body> <script> - alert( "From BODY: " + document.body ); // HTMLBodyElement, now it exists + alert( "From BODY: " + document.body ); // HTMLBodyElement, এখন এটি রেন্ডার হয়েছে </script> </body> @@ -59,18 +59,18 @@ So, in the example below the first `alert` shows `null`: ``` ```` -```smart header="In the DOM world `null` means \"doesn't exist\"" -In the DOM, the `null` value means "doesn't exist" or "no such node". +```smart header="DOM এ `null` বলতে বুঝায় \"DOM এ এর অস্তিত্ব নেই\"" +DOM এ `null` বলতে বুঝায় \"DOM এ এর অস্তিত্ব নেই\" অথবা "এমন কোন নোড নেই"। ``` ## Children: childNodes, firstChild, lastChild -There are two terms that we'll use from now on: +এদের দুই ধরণের টার্ম আছে যা আমরা এখন দেখব: -- **Child nodes (or children)** -- elements that are direct children. In other words, they are nested exactly in the given one. For instance, `<head>` and `<body>` are children of `<html>` element. -- **Descendants** -- all elements that are nested in the given one, including children, their children and so on. +- **Child nodes (or children)** -- যা কোন এলিমেন্টের সরাসরি চাইল্ড এলিমেন্ট। অন্যথায় বলা যায়, অন্য একটির নেস্টেড হিসেবে থাকবে। যেমন, `<head>` এবং `<body>` হল `<html>` এর চাইল্ড এলিমেন্ট। +- **Descendants** -- সকল এলিমেন্ট, যারা একটার মধ্যে একটা তারমধ্যে আরেকটা এভাবে থাকে। -For instance, here `<body>` has children `<div>` and `<ul>` (and few blank text nodes): +যেমন, এখানে `<body>` এর চাইল্ড নোড `<div>` এবং `<ul>` এবং তাদেরও চাইল্ড নোড আছে: ```html run <html> @@ -86,11 +86,11 @@ For instance, here `<body>` has children `<div>` and `<ul>` (and few blank text </html> ``` -...And descendants of `<body>` are not only direct children `<div>`, `<ul>` but also more deeply nested elements, such as `<li>` (a child of `<ul>`) and `<b>` (a child of `<li>`) -- the entire subtree. +...এবং এখানে `<body>` এর সরাসরি চাইল্ড নোড `<div>`, `<ul>` না এখানে আরো নেস্টেড এলিমেন্ট আছে, যেমন `<li>` (হল `<ul>` এর চাইল্ড) এবং `<b>` (হল `<li>` এর চাইল্ড) -- এভাবেই ট্রি গঠিত হয়। -**The `childNodes` collection lists all child nodes, including text nodes.** +**`childNodes` কালেকশনে টেক্সট নোড সহ সকল চাইল্ড নোড থাকে** -The example below shows children of `document.body`: +নিচের উদাহরণে `document.body` এর সকল চাইল্ড নোড দেখব: ```html run <html> @@ -115,76 +115,76 @@ The example below shows children of `document.body`: </html> ``` -Please note an interesting detail here. If we run the example above, the last element shown is `<script>`. In fact, the document has more stuff below, but at the moment of the script execution the browser did not read it yet, so the script doesn't see it. +দয়া করে একটি গুরুত্বপূর্ন তথ্য মনে রাখুন। যদি আমরা উপরের উদাহরণটি রান করি, তাহলে শেষ এলিমেন্ট হবে `<script>`। যদিও ডকুমেন্টটির আরো কিছু নোড আছে, কিন্তু শেষ নোড দেখায় `<script>`, কেননা `<script>` টি লোড না হওয়ায় পরের অংশগুলো পড়তে পারেনা। -**Properties `firstChild` and `lastChild` give fast access to the first and last children.** +**`firstChild` এবং `lastChild` প্রথম এবং শেষ চাইল্ড নোড অ্যাক্সেস করতে পারি।** -They are just shorthands. If there exist child nodes, then the following is always true: +এটি একটি সংক্ষিপ্ত পদ্ধতি। আর যদি চাইল্ড নোড থাকে, নিম্নোক্ত কোড সমূহ সর্বদা সত্য হবে: ```js elem.childNodes[0] === elem.firstChild elem.childNodes[elem.childNodes.length - 1] === elem.lastChild ``` -There's also a special function `elem.hasChildNodes()` to check whether there are any child nodes. +নোডে কোন চাইল্ড নোড আছে কিনা তা চেক করতে `elem.hasChildNodes()` এর সাহায্য নেয়া যায়। -### DOM collections +### DOM কালেকশনস -As we can see, `childNodes` looks like an array. But actually it's not an array, but rather a *collection* -- a special array-like iterable object. +আমরা দেখেছি, `childNodes` দেখতে অ্যারের মত। কিন্তু এটি অ্যারে না এটি একটি *কালেকশন* -- যা একটি ইটারেবল অবজেক্ট। -There are two important consequences: +এর দুটি গুরুত্বপূর্ণ বিষয় আছে: -1. We can use `for..of` to iterate over it: +১. আমরা `for..of` এর সাহায্যে ইটারেট করতে পারি: ```js for (let node of document.body.childNodes) { alert(node); // shows all nodes from the collection } ``` - That's because it's iterable (provides the `Symbol.iterator` property, as required). + কেননা এটি একটি ইটারেবল (যা `Symbol.iterator` প্রপার্টি প্রোভাইড করে)। -2. Array methods won't work, because it's not an array: +২. অ্যারে মেথড কাজ করবে না, কেননা এটি অ্যারে না: ```js run alert(document.body.childNodes.filter); // undefined (there's no filter method!) ``` -The first thing is nice. The second is tolerable, because we can use `Array.from` to create a "real" array from the collection, if we want array methods: +প্রথম ব্যাপারটি সুন্দর। এবং দ্বিতীয়টির জন্য আমরা চাইলে অ্যারেতে কনভার্ট করতে পারি `Array.from` মেথড এর সাহায্যে: ```js run alert( Array.from(document.body.childNodes).filter ); // function ``` -```warn header="DOM collections are read-only" -DOM collections, and even more -- *all* navigation properties listed in this chapter are read-only. +```warn header="DOM কালেকশন সমূহ read-only" +DOM collections, এবং এই চ্যাপ্টারের *সকল* নেভিগেশন প্রপার্টি সমূহ read-only। -We can't replace a child by something else by assigning `childNodes[i] = ...`. +আমরা চাইল্ড সমূহকে চাইলে এভাবে রিপ্লেস করতে পারব না `childNodes[i] = ...`। -Changing DOM needs other methods. We will see them in the next chapter. +DOM কে রিপ্লেস করতে আমাদের অন্য মেথড প্রয়োজন, যা পরবর্তী চ্যাপ্টারে দেখব। ``` ```warn header="DOM collections are live" -Almost all DOM collections with minor exceptions are *live*. In other words, they reflect the current state of DOM. +কিছু ব্যতিক্রম ছাড়া সকল DOM কালেকশনসমূহ *live*। অন্য কথায় বলা যায়, এরা DOM এর অবস্থাকে প্রকাশ করে। -If we keep a reference to `elem.childNodes`, and add/remove nodes into DOM, then they appear in the collection automatically. +যদি আমরা `elem.childNodes` কে রেফারেন্স করি, এবং কোন নোড DOM এ add/remove করি, তাহলে কালেকশনটি স্বয়ংক্রিয়ভাবে পরিবর্তন হবে। ``` -````warn header="Don't use `for..in` to loop over collections" -Collections are iterable using `for..of`. Sometimes people try to use `for..in` for that. +````warn header="কালেকশন ইটারেট করতে `for..in` লুপ ব্যবহার করবেন না" +কালেকশন সমূহ `for..of` এর সাহায্যে ইটারেট করা হয়। মাঝেমাঝে অনেকে `for..in` ব্যবহারের চেষ্টা করে। -Please, don't. The `for..in` loop iterates over all enumerable properties. And collections have some "extra" rarely used properties that we usually do not want to get: +দয়া করে, এটি করবেন না। কেননা `for..in` লুপ সকল `enumerable` প্রপার্টি সমুহ সহ ইটারেট করে। এবং কালেকশনে কিছু অতিরিক্ত প্রপার্টি আছে যা আমাদের ব্যবহারের দরকার থাকেনা: ```html run <body> <script> - // shows 0, 1, length, item, values and more. + // দেখাবে 0, 1, length, item, values এবং আরো অনেক কিছু। for (let prop in document.body.childNodes) alert(prop); </script> </body> ```` -## Siblings and the parent +## Siblings এবং Parent -*Siblings* are nodes that are children of the same parent. +*Siblings* হল একই প্যারেন্টের চাইল্ড নোডসমূহ। -For instance, here `<head>` and `<body>` are siblings: +যেমন, এখানে `<head>` এবং `<body>` হল *Siblings*: ```html <html> @@ -192,56 +192,60 @@ For instance, here `<head>` and `<body>` are siblings: </html> ``` -- `<body>` is said to be the "next" or "right" sibling of `<head>`, -- `<head>` is said to be the "previous" or "left" sibling of `<body>`. +- `<body>` কে বলা হবে `<head>` এর "next" অথবা "right" *sibling*, +- `<head>` কে বলা হবে `<body>` এর "previous" or "left" *sibling*। -The next sibling is in `nextSibling` property, and the previous one - in `previousSibling`. +`nextSibling` প্রপার্টিতে আমরা "next sibling" কে পায়, এবং `previousSibling` এ "previous sibling" কে পায়। -The parent is available as `parentNode`. +এবং `parentNode` প্রপার্টিতে প্যারেন্টকে পায়। -For example: +যেমন: ```js run -// parent of <body> is <html> +// <body> এর প্যারেন্ট হল <html> alert( document.body.parentNode === document.documentElement ); // true -// after <head> goes <body> +// <head> এর পর <body> alert( document.head.nextSibling ); // HTMLBodyElement -// before <body> goes <head> +// <body> এর আগে <head> alert( document.body.previousSibling ); // HTMLHeadElement ``` -## Element-only navigation +## এলিমেন্ট সমূহ শুধু নেভিগেশন করা যায় +<<<<<<< HEAD +নেভিগেশন প্রপার্টি সমূহ *সকল* নোডকে রেফার করে। যেমন, `childNodes` এর প্রপার্টিতে আমরা টেক্সট নোড, এলিমেন্ট নোড এমনকি কমেন্ট নোড সমূহ পায়। +======= Navigation properties listed above refer to *all* nodes. For instance, in `childNodes` we can see both text nodes, element nodes, and even comment nodes if they exist. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -But for many tasks we don't want text or comment nodes. We want to manipulate element nodes that represent tags and form the structure of the page. +কিন্তু বেশিরভাগ ক্ষেত্রে আমাদের টেক্সট বা কমেন্ট নোডের দরকার পড়ে না। বেশিরভাগ ক্ষেত্রে আমরা এলিমেন্ট নোড সমূহকে ম্যানিপুলেট করি। -So let's see more navigation links that only take *element nodes* into account: +চলুন আরো কিছু নেভিগেশন প্রপার্টি দেখি যা শুধুমাত্র *element nodes* নিয়ে কাজ করে: ![](dom-links-elements.svg) -The links are similar to those given above, just with `Element` word inside: +এরা উপরের মতই কাজ করে, এবং প্রতিটি প্রপার্টিতে `Element` শব্দটি থাকে: -- `children` -- only those children that are element nodes. -- `firstElementChild`, `lastElementChild` -- first and last element children. -- `previousElementSibling`, `nextElementSibling` -- neighbor elements. -- `parentElement` -- parent element. +- `children` -- শুধুমাত্র এলিমেন্ট নোডের চিলড্রেন। +- `firstElementChild`, `lastElementChild` -- প্রথম এবং শেষ এলিমেন্টের চিলড্রেন। +- `previousElementSibling`, `nextElementSibling` -- sibling এলিমেন্ট নোড। +- `parentElement` -- প্যারেন্ট এলিমেন্ট। -````smart header="Why `parentElement`? Can the parent be *not* an element?" -The `parentElement` property returns the "element" parent, while `parentNode` returns "any node" parent. These properties are usually the same: they both get the parent. +````smart header="`parentElement` কেন? প্যারেন্ট কি সর্বদা একটি এলিমেন্ট নই?" +`parentElement` প্রপার্টি সর্বদা প্যারেন্ট "element" রিটার্ন করে, যেখানে `parentNode` যেকোন ধরণের প্যারেন্ট নোড রিটার্ন করে। আসলে দুটি প্রপার্টিই সাধারণত প্যারেন্টকে রিটার্ন করে। -With the one exception of `document.documentElement`: +`document.documentElement` এর ব্যাতিক্রম আছে: ```js run alert( document.documentElement.parentNode ); // document alert( document.documentElement.parentElement ); // null ``` -The reason is that the root node `document.documentElement` (`<html>`) has `document` as its parent. But `document` is not an element node, so `parentNode` returns it and `parentElement` does not. +কেননা `document.documentElement` (`<html>`) এর রুট নোড হচ্ছে `document` এবং এটিই তার প্যারেন্ট। কিন্তু `document` এলিমেন্ট নোড না, সুতরাং `parentNode` *document* রিটার্ন করে আর `parentElement` *null* রিটার্ন করে। -This detail may be useful when we want to travel up from an arbitrary element `elem` to `<html>`, but not to the `document`: +এখানে আমরা দেখছি `elem` তার প্যারেন্ট element হিসেবে `<html>` পর্যন্ত যাবে, কিন্তু `document` দেখাবে না: ```js while(elem = elem.parentElement) { // go up till <html> alert( elem ); @@ -249,7 +253,7 @@ while(elem = elem.parentElement) { // go up till <html> ``` ```` -Let's modify one of the examples above: replace `childNodes` with `children`. Now it shows only elements: +চলুন উপরের উদাহরণটিতে `childNodes` এর পরিবর্তে `children` ব্যবহার করি। এখন এটি শুধু *elements* দেখাবে: ```html run <html> @@ -274,31 +278,31 @@ Let's modify one of the examples above: replace `childNodes` with `children`. No </html> ``` -## More links: tables [#dom-navigation-tables] +## আরো প্রপার্টি: tables [#dom-navigation-tables] -Till now we described the basic navigation properties. +এখনো পর্যন্ত আমরা প্রাথমিক নেভিগেশন প্রপার্টি দেখেছি। -Certain types of DOM elements may provide additional properties, specific to their type, for convenience. +কিছু নির্দিষ্ট DOM এলিমেন্টের নির্দিষ্ট প্রপার্টি আছে, যা দ্বারা আরো নির্দিষ্ট তথ্য জানতে পারি। -Tables are a great example of that, and represent a particularly important case: +*table* এলিমেন্ট এর একটি বাস্তবিক উদাহরন হতে পারে: -**The `<table>`** element supports (in addition to the given above) these properties: -- `table.rows` -- the collection of `<tr>` elements of the table. -- `table.caption/tHead/tFoot` -- references to elements `<caption>`, `<thead>`, `<tfoot>`. -- `table.tBodies` -- the collection of `<tbody>` elements (can be many according to the standard, but there will always be at least one -- even if it is not in the source HTML, the browser will put it in the DOM). +**`<table>`** এর কিছু অতিরিক্ত প্রপার্টি আছে: +- `table.rows` -- *table* এর `<tr>` এলিমেন্টের কালেকশন। +- `table.caption/tHead/tFoot` -- `<caption>`, `<thead>`, `<tfoot>` এলিমেন্টের কালেকশন। +- `table.tBodies` -- `<tbody>` এলিমেন্টের কালেকশন (কমপক্ষে ১ টি এলিমেন্ট থাকবে, কেননা ব্রাউজার স্বয়ংক্রিয়ভাবে DOM এ *tbody* জেনারেট করে)। -**`<thead>`, `<tfoot>`, `<tbody>`** elements provide the `rows` property: -- `tbody.rows` -- the collection of `<tr>` inside. +**`<thead>`, `<tfoot>`, `<tbody>`** এলিমেন্ট সমূহ `rows` প্রপার্টি নির্দেশ করে: +- `tbody.rows` -- ভিতরের `<tr>` এলিমেন্টের কালেকশন. **`<tr>`:** -- `tr.cells` -- the collection of `<td>` and `<th>` cells inside the given `<tr>`. -- `tr.sectionRowIndex` -- the position (index) of the given `<tr>` inside the enclosing `<thead>/<tbody>/<tfoot>`. -- `tr.rowIndex` -- the number of the `<tr>` in the table as a whole (including all table rows). +- `tr.cells` -- `<tr>` এর মধ্যকার`<td>` এবং `<th>` সমূহ. +- `tr.sectionRowIndex` -- `<thead>/<tbody>/<tfoot>` এর মধ্যকার `<tr>` এর অবস্থান। +- `tr.rowIndex` -- *table* এ `<tr>` এর অবস্থান। **`<td>` and `<th>`:** -- `td.cellIndex` -- the number of the cell inside the enclosing `<tr>`. +- `td.cellIndex` -- `<tr>` এর মধ্যকার `<td>` অবস্থান. -An example of usage: +একটি উদাহরণ: ```html run height=100 <table id="table"> @@ -311,23 +315,23 @@ An example of usage: </table> <script> - // get td with "two" (first row, second column) + // প্রথম রো এর এর দ্বিতীয় এলিমেন্ট let td = table.*!*rows[0].cells[1]*/!*; - td.style.backgroundColor = "red"; // highlight it + td.style.backgroundColor = "red"; // ব্যাকগ্রাউন্ড পরিবর্তন হবে </script> ``` -The specification: [tabular data](https://html.spec.whatwg.org/multipage/tables.html). +আরো বিস্তারিত জানতে: [tabular data](https://html.spec.whatwg.org/multipage/tables.html)। -There are also additional navigation properties for HTML forms. We'll look at them later when we start working with forms. +এছাড়াও *HTML form* এরও নেভিগেশন প্রপার্টি আছে। পরবর্তীতে আমরা বিস্তারিত জানব এ ব্যাপারে। -## Summary +## সারাংশ -Given a DOM node, we can go to its immediate neighbors using navigation properties. +DOM নোডে আমরা নেভিগেশন প্রপার্টি সমূহ দ্বারা অ্যাক্সেস করতে পারি। -There are two main sets of them: +এদের প্রধান দুটি সেট হল: -- For all nodes: `parentNode`, `childNodes`, `firstChild`, `lastChild`, `previousSibling`, `nextSibling`. -- For element nodes only: `parentElement`, `children`, `firstElementChild`, `lastElementChild`, `previousElementSibling`, `nextElementSibling`. +- সকল নোডের জন্য: `parentNode`, `childNodes`, `firstChild`, `lastChild`, `previousSibling`, `nextSibling`. +- শুধুমাত্র এলিমেন্ট নোডের জন্য: `parentElement`, `children`, `firstElementChild`, `lastElementChild`, `previousElementSibling`, `nextElementSibling`. -Some types of DOM elements, e.g. tables, provide additional properties and collections to access their content. +এছাড়াও স্পেসিফিক কিছু DOM এলিমেন্টের কিছু নির্দিষ্ট প্রপার্টি আছে, যেমন: *table*, *form*। diff --git a/2-ui/1-document/04-searching-elements-dom/1-find-elements/solution.md b/2-ui/1-document/04-searching-elements-dom/1-find-elements/solution.md index c73aecd99..8a481bee1 100644 --- a/2-ui/1-document/04-searching-elements-dom/1-find-elements/solution.md +++ b/2-ui/1-document/04-searching-elements-dom/1-find-elements/solution.md @@ -1,35 +1,35 @@ -There are many ways to do it. +এটি অনেকভাবে করা যায়। -Here are some of them: +এখানে দেখুন: ```js // 1. The table with `id="age-table"`. let table = document.getElementById('age-table') -// 2. All label elements inside that table +// 2. table এর মধ্যে সকল `label` এলিমেন্ট table.getElementsByTagName('label') -// or +// বা document.querySelectorAll('#age-table label') -// 3. The first td in that table (with the word "Age") +// 3. *table* এর প্রথম `td` (with the word "Age") table.rows[0].cells[0] -// or +// বা table.getElementsByTagName('td')[0] -// or +// বা table.querySelector('td') -// 4. The form with the name "search" -// assuming there's only one element with name="search" in the document +// 4. `form` এলিমেন্ট যার `name="search"` +// ধরে নিন DOM এ একটি মাত্র name="search" এলিমেন্ট আছে let form = document.getElementsByName('search')[0] -// or, form specifically +// বা, document.querySelector('form[name="search"]') -// 5. The first input in that form. +// 5. `form` এর প্রথম `input` এলিমেন্ট. form.getElementsByTagName('input')[0] -// or +// বা form.querySelector('input') -// 6. The last input in that form -let inputs = form.querySelectorAll('input') // find all inputs -inputs[inputs.length-1] // take the last one +// 6. `form` এর শেষ `input` এলিমেন্ট +let inputs = form.querySelectorAll('input') // সকল ইনপুট +inputs[inputs.length-1] // শেষ এলিমেন্টটি নেয়া ``` diff --git a/2-ui/1-document/04-searching-elements-dom/1-find-elements/task.md b/2-ui/1-document/04-searching-elements-dom/1-find-elements/task.md index f0b54beac..c7a08fa96 100644 --- a/2-ui/1-document/04-searching-elements-dom/1-find-elements/task.md +++ b/2-ui/1-document/04-searching-elements-dom/1-find-elements/task.md @@ -2,17 +2,17 @@ importance: 4 --- -# Search for elements +# এলিমেন্টের অনুসন্ধান -Here's the document with the table and form. +এখানে table এবং form দ্বারা ডকুমেন্টটি। -How to find?... +কিভাবে খুঁজবেন?... -1. The table with `id="age-table"`. -2. All `label` elements inside that table (there should be 3 of them). -3. The first `td` in that table (with the word "Age"). -4. The `form` with `name="search"`. -5. The first `input` in that form. -6. The last `input` in that form. +1. *table* এর id `id="age-table"`। +2. *table* এর মধ্যে সকল `label` এলিমেন্ট(৩টি এলিমেন্ট আছে)। +3. *table* এর প্রথম `td` (যার কন্টেন্ট "Age")। +4. `form` এলিমেন্ট যার `name="search"`। +5. `form` এর প্রথম `input` এলিমেন্ট। +6. `form` এর শেষ `input` এলিমেন্ট। -Open the page [table.html](table.html) in a separate window and make use of browser tools for that. +এই পেজটি আলাদা উইন্ডোতে খুলুন [table.html](table.html) এবং ডেভ টুলসের সাহায্যে যাচাইগুলো চালান। \ No newline at end of file diff --git a/2-ui/1-document/04-searching-elements-dom/article.md b/2-ui/1-document/04-searching-elements-dom/article.md index 405129694..ee08e9f27 100644 --- a/2-ui/1-document/04-searching-elements-dom/article.md +++ b/2-ui/1-document/04-searching-elements-dom/article.md @@ -1,14 +1,14 @@ # Searching: getElement*, querySelector* -DOM navigation properties are great when elements are close to each other. What if they are not? How to get an arbitrary element of the page? +DOM নেভিগেশনসমূহ একই সিব্লিং বা নিকট এলিমেন্ট সমূহের জন্য অনেক কাজের। কিন্তু যদি এভাবে না থাকে? কিভাবে আমরা একটি স্বতন্ত্র এলিমেন্ট পেতে পারি? -There are additional searching methods for that. +এজন্য আমাদের কিছু সার্চিং মেথড আছে। -## document.getElementById or just id +## document.getElementById বা শুধু id -If an element has the `id` attribute, we can get the element using the method `document.getElementById(id)`, no matter where it is. +যদি এলিমেন্টে শুধু `id` অ্যাট্রিবিউট থাকে, তাহলে আমরা এলিমেন্টটি এভাবে `document.getElementById(id)` মেথডের সাহায্যে খুঁজে পেতে পারি, এটি DOM এর কোন অবস্থানে আছে তা মূখ্য নয়। -For instance: +যেমন: ```html run <div id="elem"> @@ -16,17 +16,17 @@ For instance: </div> <script> - // get the element + // এলিমেন্টটি খোঁজা *!* let elem = document.getElementById('elem'); */!* - // make its background red + // ব্রাকগ্রাউন্ড লাল সেট করা elem.style.background = 'red'; </script> ``` -Also, there's a global variable named by `id` that references the element: +এছাড়াও, গ্লোভাল ভ্যারিয়েবল হিসেবে শুধু `id` এর নাম দ্বারাও এলিমেন্টকে রেফারেন্স করতে পারি: ```html run <div id="*!*elem*/!*"> @@ -34,51 +34,61 @@ Also, there's a global variable named by `id` that references the element: </div> <script> - // elem is a reference to DOM-element with id="elem" + // elem দ্বারা DOM-elemnet এর id="elem" কে রেফারেন্স করা হয় elem.style.background = 'red'; - // id="elem-content" has a hyphen inside, so it can't be a variable name - // ...but we can access it using square brackets: window['elem-content'] + // id="elem-content" এর মাঝে হাইফেন আছে, এটি ভেরিয়েবল নাম হতে পারে না + // ...কিন্তু আমরা স্কয়ার ব্রাকেটের সাহায্যে একে অ্যাক্সেস করতে পারি: window['elem-content'] </script> ``` -...That's unless we declare a JavaScript variable with the same name, then it takes precedence: +...এটি কাজের নয়, যদি আমরা একই নামের একটি জাভাস্ক্রিপ্ট ভ্যারিয়েবল ডিক্লেয়ার করি, এটি প্রিসিডেন্স অনুযায়ী কাজ করবে: ```html run untrusted height=0 <div id="elem"></div> <script> - let elem = 5; // now elem is 5, not a reference to <div id="elem"> + let elem = 5; // এখানে elem হল 5, এটি দ্বারা একে রেফারেন্স করা হবে না <div id="elem"> alert(elem); // 5 </script> ``` +<<<<<<< HEAD +```warn header="দয়া করে এলিমেন্ট এক্সেস করতে id কে গ্লোবাল ভ্যারিয়েবল হিসেবে ব্যবহার করবেন না" +আরো বিস্তারিত জানতে [in the specification](http://www.whatwg.org/specs/web-apps/current-work/#dom-window-nameditem), সুতরাং এটি স্ট্যান্ডার্ড। কিন্তু এটি *compatibility* সমর্থনের জন্য। +======= ```warn header="Please don't use id-named global variables to access elements" This behavior is described [in the specification](https://html.spec.whatwg.org/multipage/window-object.html#named-access-on-the-window-object), but it is supported mainly for compatibility. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -The browser tries to help us by mixing namespaces of JS and DOM. That's fine for simple scripts, inlined into HTML, but generally isn't a good thing. There may be naming conflicts. Also, when one reads JS code and doesn't have HTML in view, it's not obvious where the variable comes from. +ব্রাউজার JS এবং DOM এর ভ্যারিয়েবল সমূহকে মিক্সিং করে আমাদের সহায়তা করে। এটি সাধারণ স্ক্রিপ্ট, ইনলাইন HTML এর জন্য ভালো হতে পারে, কিন্তু আসলেই এটি তেমন কাজের নয়। এখানে ভ্যারিয়েবলের নামের কনফ্লিক্ট হতে পারে। এছাড়াও যখন কেউ জাভাস্ক্রিপ্ট কোড পড়বে এবং ভিউতে HTML থাকবে না, ভ্যারিয়েবলটি কোথা থেকে এসেছে বোধগম্য হবে না। -Here in the tutorial we use `id` to directly reference an element for brevity, when it's obvious where the element comes from. +এখানে আমরা `id` দ্বারা সরাসরি এলিমেন্টকে রেফারেন্স করব সংক্ষিপ্তকরনের জন্য, এবং এলিমেন্টটি আমাদের কাছে সুস্পষ্ট। -In real life `document.getElementById` is the preferred method. +তবে বাস্তবিক ক্ষেত্রে `document.getElementById` ব্যবহার করা উচিত। ``` -```smart header="The `id` must be unique" -The `id` must be unique. There can be only one element in the document with the given `id`. +```smart header="`id` অবশ্যই স্বতন্ত্র হতে হবে" +`id` অবশ্যই স্বতন্ত্র হতে হবে। ডকুমেন্টে `id` দ্বারা শুধুমাত্র একটি এলিমেন্টকে নির্দেশিত করে। -If there are multiple elements with the same `id`, then the behavior of methods that use it is unpredictable, e.g. `document.getElementById` may return any of such elements at random. So please stick to the rule and keep `id` unique. +যদি একই `id` দ্বারা অনেক এলিমেন্ট ডিক্লেয়ার করা হয়, তাহলে মেথডসমূহ অপ্রত্যাশিত কাজ করবে, যেমন `document.getElementById` যেকোন একটি এলেমেন্টকে রিটার্ন করতে পারে। সুতরাং আমাদের অবশ্যই মনে রাখতে হবে `id` হবে স্বতন্ত্র। ``` +<<<<<<< HEAD +```warn header="`anyElem.getElementById` না, শুধু `document.getElementById`" +`getElementById` মেথডটি শুধুমাত্র `document` অবজেক্টের মেথড। এটি সমস্ত ডকুমেন্ট `id` দ্বারা নির্দেশিত এলিমেন্টটির খোঁজ করবে। +======= ```warn header="Only `document.getElementById`, not `anyElem.getElementById`" The method `getElementById` can be called only on `document` object. It looks for the given `id` in the whole document. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ``` ## querySelectorAll [#querySelectorAll] -By far, the most versatile method, `elem.querySelectorAll(css)` returns all elements inside `elem` matching the given CSS selector. +এখনো পর্যন্ত সবচেয়ে বেশি কাজের মেথডটি হল `elem.querySelectorAll(css)`, যা CSS সিলেক্টরস দ্বারা ম্যাচ করা সকল `elem` কে রিটার্ন করবে। -Here we look for all `<li>` elements that are last children: +এখানে আমরা সকল শেষ `<li>` এলিমেন্ট কে খোঁজব: ```html run <ul> @@ -100,34 +110,38 @@ Here we look for all `<li>` elements that are last children: </script> ``` -This method is indeed powerful, because any CSS selector can be used. +মেথডটি অনেক কাজের, কেননা আমরা যেকোন CSS সিলেক্টরস ব্যবহার করতে পারব। -```smart header="Can use pseudo-classes as well" -Pseudo-classes in the CSS selector like `:hover` and `:active` are also supported. For instance, `document.querySelectorAll(':hover')` will return the collection with elements that the pointer is over now (in nesting order: from the outermost `<html>` to the most nested one). +```smart header="আমরা সুডো ক্লাস সমূহ ব্যবহার করতে পারব" +CSS সিলেক্টরস সুডো-ক্লাস যেমন `:hover` এবং `:active` সাপোর্ট করবে। যেমন, `document.querySelectorAll(':hover')` পয়েন্টার করা এলিমেন্টের কালেকশন রিটার্ন করবে। ``` ## querySelector [#querySelector] -The call to `elem.querySelector(css)` returns the first element for the given CSS selector. +`elem.querySelector(css)` CSS সিলেক্টরস দ্বারা ম্যাচ করা প্রথম `elem` কে রিটার্ন করবে। -In other words, the result is the same as `elem.querySelectorAll(css)[0]`, but the latter is looking for *all* elements and picking one, while `elem.querySelector` just looks for one. So it's faster and also shorter to write. +অন্য কথায় বলা যায়, `elem.querySelector(css)`এবং `elem.querySelectorAll(css)[0]` একই, কিন্তু দ্বিতীয়টি *সকল* এলিমেন্ট হতে একটিকে রিটার্ন করবে, যেখানে `elem.querySelector` শুধুমাত্র প্রথমটি রিটার্ন করে, সুতরাং এটি দ্রুত কাজ করে এবং কোডও সংক্ষিপ্ত। ## matches -Previous methods were searching the DOM. +পূর্ববর্তী মেথড সমূহ DOM এ সার্চ করে। +<<<<<<< HEAD +[elem.matches(css)](http://dom.spec.whatwg.org/#dom-element-matches) এট কোন এলিমেন্ট রিটার্ন করে না, `elem` এটি কেবল CSS সিলেক্টরস দ্বারা `elem` টি আছে কিনা যাচাই করে। এটি কেবল `true` বা `false` রিটার্ন করে। +======= The [elem.matches(css)](https://dom.spec.whatwg.org/#dom-element-matches) does not look for anything, it merely checks if `elem` matches the given CSS-selector. It returns `true` or `false`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -The method comes in handy when we are iterating over elements (like in an array or something) and trying to filter out those that interest us. +মেথডটি কোন কালেকশনে ফিল্টার করতে কাজে আছে। -For instance: +উদাহরণ: ```html run <a href="http://example.com/file.zip">...</a> <a href="http://ya.ru">...</a> <script> - // can be any collection instead of document.body.children + // document.body.children এর পরিবর্তে যে কোন কালেকশন হতে পারে for (let elem of document.body.children) { *!* if (elem.matches('a[href$="zip"]')) { @@ -140,13 +154,17 @@ For instance: ## closest -*Ancestors* of an element are: parent, the parent of parent, its parent and so on. The ancestors together form the chain of parents from the element to the top. +*Ancestors* এলিমেন্ট সমূহ হল: প্যারেন্ট এলিমেন্ট, প্যারেন্ট এলিমেন্টের প্যারেন্ট, পূর্বের এলিমেন্টের প্যারেন্ট এভাবে। এলিমেন্ট সমূহ দ্বারা এভাবে এলিমেন্ট ট্রি তৈরি করে। +<<<<<<< HEAD +`elem.closest(css)` তার CSS-selector দ্বারা নিকটতম প্যারেন্ট এলিমেন্ট কে খুঁজে। `elem` নিজেও সার্চিংয়ে অন্তর্ভুক্ত। +======= The method `elem.closest(css)` looks for the nearest ancestor that matches the CSS-selector. The `elem` itself is also included in the search. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -In other words, the method `closest` goes up from the element and checks each of parents. If it matches the selector, then the search stops, and the ancestor is returned. +অন্যথায় বলা যায়, `closest` মেথডটি এলিমেন্ট এর নিকটতম প্যারেন্ট এলিমেন্টকে খুঁজে। যদি এটি সিলেক্টরস এর সাথে ম্যাচ করে, তারপর সার্চিংটি থেমে যাবে এবং প্যারেন্ট এলিমেন্টটি রিটার্ন করবে। -For instance: +যেমন: ```html run <h1>Contents</h1> @@ -164,29 +182,29 @@ For instance: alert(chapter.closest('.book')); // UL alert(chapter.closest('.contents')); // DIV - alert(chapter.closest('h1')); // null (because h1 is not an ancestor) + alert(chapter.closest('h1')); // null (কেননা h1 প্যারেন্ট নোড না) </script> ``` ## getElementsBy* -There are also other methods to look for nodes by a tag, class, etc. +এছাড়াও আরো কিছু এলিমেন্ট দ্বারা নোড সার্চ করা যায় যেমন ট্যাগ, ক্লাস ইত্যাদি। -Today, they are mostly history, as `querySelector` is more powerful and shorter to write. +বর্তমানে মেথড সমূহ তেমন ব্যবহার হয় না, কেননা `querySelector` আরো বেশি দ্রুত এবং সংক্ষেপে লিখা যায়। -So here we cover them mainly for completeness, while you can still find them in the old scripts. +এখানে আমরা জেনে রাখার জন্য এদের আলোচনা করছি, মর্ডান জাভাস্ক্রিপ্টে এদের তেমন ব্যবহার নেই, তবে পুরনো স্ক্রিপ্ট বা লাইব্রেরী সমূহে এদের আমরা দেখতে পায়। -- `elem.getElementsByTagName(tag)` looks for elements with the given tag and returns the collection of them. The `tag` parameter can also be a star `"*"` for "any tags". -- `elem.getElementsByClassName(className)` returns elements that have the given CSS class. -- `document.getElementsByName(name)` returns elements with the given `name` attribute, document-wide. Very rarely used. +- `elem.getElementsByTagName(tag)` ট্যাগের নামানুসারে এলিমেন্টে খুঁজে এবং কালেকশন সমূহ রিটার্ন করে। `tag` এর প্যারামিটার হিসেবে যেকোন ট্যাগের জন্য `"*"` পাঠাতে পারি। +- `elem.getElementsByClassName(className)` CSS ক্ল্যাস অনুযায়ী এলিমেন্ট সমূহ রিটার্ন করে। +- `document.getElementsByName(name)` `name` অ্যাট্রিবিউট অনুযায়ী এলিমেন্ট সমূহ রিটার্ন করে। -For instance: +উদাহরণস্বরূপ: ```js -// get all divs in the document +// DOM এর সকল divs let divs = document.getElementsByTagName('div'); ``` -Let's find all `input` tags inside the table: +চলুন *table* থেকে সকল `input` ট্যাগ কে খুঁজি: ```html run height=50 <table id="table"> @@ -218,31 +236,31 @@ Let's find all `input` tags inside the table: </script> ``` -```warn header="Don't forget the `\"s\"` letter!" -Novice developers sometimes forget the letter `"s"`. That is, they try to call `getElementByTagName` instead of <code>getElement<b>s</b>ByTagName</code>. +```warn header="সিঙ্গুলার এবং প্লুরাল ভুলবেন না `\"getElement\"` এবং `\"getElements\"`!" +নতুন ডেভলাপাররা `\"getElement\"` এবং `\"getElements\"`নিয়ে ভুল করে ফেলে। যেমন <code>getElement<b>s</b>ByTagName</code> এর বদলে `getElementByTagName`। -The `"s"` letter is absent in `getElementById`, because it returns a single element. But `getElementsByTagName` returns a collection of elements, so there's `"s"` inside. +`"s"` ছাড়া `getElementById`, এটি একটি সিঙ্গেল এলিমেন্ট রিটার্ন করবে। কিন্তু `getElementsByTagName` এলিমেন্টের কালেকশন রিটার্ন করবে। ``` -````warn header="It returns a collection, not an element!" -Another widespread novice mistake is to write: +````warn header="সিঙ্গেল এলিমেন্ট এর বদলে কালেকশন রিটার্ন!" +বেশিরভাগ সময় নতুন ডেভলাপাররা আরো একটি সাধারণ ভুল করে থাকে: ```js -// doesn't work +// এটি কাজ করবে না document.getElementsByTagName('input').value = 5; ``` -That won't work, because it takes a *collection* of inputs and assigns the value to it rather than to elements inside it. +এটি কাজ করবে না, কেননা এটি একটি ইনপুট এর *collection* রিটার্ন করে। -We should either iterate over the collection or get an element by its index, and then assign, like this: +আমরা ইটারেট এর মাধ্যমে অথবা ইন্ডেক্স এর মাধ্যমে কালেকশনটি অ্যাক্সেস করতে পারি: ```js -// should work (if there's an input) +// এটি কাজ করবে (যদি ইনপুট এলিমেন্ট থাকে) document.getElementsByTagName('input')[0].value = 5; ``` ```` -Looking for `.article` elements: +`.article` এলিমেন্ট খোঁজা: ```html run height=50 <form name="my-form"> @@ -251,23 +269,23 @@ Looking for `.article` elements: </form> <script> - // find by name attribute + // name attribute এর সাহায্যে খুঁজা let form = document.getElementsByName('my-form')[0]; - // find by class inside the form + // form এর মধ্যে ক্ল্যাস দ্বারা খুঁজা let articles = form.getElementsByClassName('article'); - alert(articles.length); // 2, found two elements with class "article" + alert(articles.length); // 2, "article" ক্লাস দ্বারা দুটি এলিমেন্ট খুঁজে পাই </script> ``` ## Live collections -All methods `"getElementsBy*"` return a *live* collection. Such collections always reflect the current state of the document and "auto-update" when it changes. +`"getElementsBy*"` মেথড সমূহ সর্বদা একটি *live* কালেকশন রিটার্ন করবে। এই ধরণের কালেকশনসমূহ DOM এ সর্বদা কোন পরিবর্তন হলে "অটো-আপডেট" হয়। -In the example below, there are two scripts. +নিচের উদাহরণে, দুটি স্ক্রিপ্ট আছে। -1. The first one creates a reference to the collection of `<div>`. As of now, its length is `1`. -2. The second scripts runs after the browser meets one more `<div>`, so its length is `2`. +1. প্রথমটিতে আমরা `<div>` এর একটি কালেকশন পায়, সুতরাং এর এলিমেন্ট হল `1`। +2. দ্বিতীয় স্ক্রিপটির পূর্বে নতুন `<div>` সংযোজন হয়, সুতরাং এর এলিমেন্ট হবে `2`। ```html run <div>First div</div> @@ -286,9 +304,9 @@ In the example below, there are two scripts. </script> ``` -In contrast, `querySelectorAll` returns a *static* collection. It's like a fixed array of elements. +বিপরীতে, `querySelectorAll` রিটার্ন করবে একটি *static* কালেকশন। এটি এলিমেন্ট সমূহের একটি ফিক্সড অ্যারে রিটার্ন করবে। -If we use it instead, then both scripts output `1`: +নিম্নের উদাহরণে উভয়ই ক্ষেত্রে `1` রিটার্ন করবে: ```html run @@ -308,19 +326,19 @@ If we use it instead, then both scripts output `1`: </script> ``` -Now we can easily see the difference. The static collection did not increase after the appearance of a new `div` in the document. +উভয় উদাহরণের পার্থক্য থেকে বুঝতে পারি। স্ট্যাটিক কালেকশনে DOM এ নতুন `div` আসলেও কোন পরিবর্তন হবে না। -## Summary +## সারাংশ -There are 6 main methods to search for nodes in DOM: +DOM এ নোড খুঁজার জন্য প্রধান ৬টি মেথড আছে: <table> <thead> <tr> -<td>Method</td> -<td>Searches by...</td> -<td>Can call on an element?</td> -<td>Live?</td> +<td>মেথড</td> +<td>সার্চ করার উপায়...</td> +<td>এলিমেন্ট কল করা যায়?</td> +<td>লাইভ?</td> </tr> </thead> <tbody> @@ -363,12 +381,16 @@ There are 6 main methods to search for nodes in DOM: </tbody> </table> +<<<<<<< HEAD +বহুল ব্যবহৃত মেথড হল `querySelector` এবং `querySelectorAll`, কিন্তু অনেক সময় `getElementBy*` ও কাজে আসে অথবা আমরা পুরনো স্ক্রিপ্ট সমূহেও এদের ব্যবহার দেখি। +======= By far the most used are `querySelector` and `querySelectorAll`, but `getElement(s)By*` can be sporadically helpful or found in the old scripts. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Besides that: +এছাড়াও: -- There is `elem.matches(css)` to check if `elem` matches the given CSS selector. -- There is `elem.closest(css)` to look for the nearest ancestor that matches the given CSS-selector. The `elem` itself is also checked. +- `elem.matches(css)` দ্বারা কোন `elem` CSS selector দ্বারা মেলে কিনা যাচাই করে। +- `elem.closest(css)` দ্বারা CSS-selector এর এলিমেন্ট এর নিকটতম প্যারেন্ট নোডকে খুঁজা হয়। `elem` টির মধ্যেও যাচাই করে। -And let's mention one more method here to check for the child-parent relationship, as it's sometimes useful: -- `elemA.contains(elemB)` returns true if `elemB` is inside `elemA` (a descendant of `elemA`) or when `elemA==elemB`. +চাইল্ড-প্যারেন্ট খুঁজার জন্য আরো একটি মেথড আছে, যা অনেক সময় কাজে দেয়: +- `elemA.contains(elemB)` *true* রিটার্ন করবে যদি `elemB`, `elemA` এর মধ্যে থাকে (`elemA` এর চাইল্ড) অথবা যখন `elemA==elemB`। diff --git a/2-ui/1-document/05-basic-dom-node-properties/2-lastchild-nodetype-inline/solution.md b/2-ui/1-document/05-basic-dom-node-properties/2-lastchild-nodetype-inline/solution.md index 52c34640a..7cf524f76 100644 --- a/2-ui/1-document/05-basic-dom-node-properties/2-lastchild-nodetype-inline/solution.md +++ b/2-ui/1-document/05-basic-dom-node-properties/2-lastchild-nodetype-inline/solution.md @@ -1,8 +1,8 @@ -There's a catch here. +এখানে লক্ষ্য করুন। -At the time of `<script>` execution the last DOM node is exactly `<script>`, because the browser did not process the rest of the page yet. +`<script>` টি যখন এক্সিকিউশন হবে শেষ DOM নোডটি হবে `<script>`, কেননা ব্রাউজার সম্পূর্ন পেজটি এক্সিকিউট হয়নি। -So the result is `1` (element node). +সুতরাং ফলাফল দেখাবে `1` (এলিমেন্ট নোড)। ```html run height=60 <html> diff --git a/2-ui/1-document/05-basic-dom-node-properties/2-lastchild-nodetype-inline/task.md b/2-ui/1-document/05-basic-dom-node-properties/2-lastchild-nodetype-inline/task.md index 0ed407cae..0b45c43fb 100644 --- a/2-ui/1-document/05-basic-dom-node-properties/2-lastchild-nodetype-inline/task.md +++ b/2-ui/1-document/05-basic-dom-node-properties/2-lastchild-nodetype-inline/task.md @@ -2,9 +2,9 @@ importance: 5 --- -# What's in the nodeType? +# এটি কি ধরণের নোডটাইপ? -What does the script show? +স্ক্রিপ্টটি কি দেখাবে? ```html <html> diff --git a/2-ui/1-document/05-basic-dom-node-properties/2-tree-info/solution.md b/2-ui/1-document/05-basic-dom-node-properties/2-tree-info/solution.md index 0088882c2..4de95ff85 100644 --- a/2-ui/1-document/05-basic-dom-node-properties/2-tree-info/solution.md +++ b/2-ui/1-document/05-basic-dom-node-properties/2-tree-info/solution.md @@ -1,4 +1,4 @@ -Let's make a loop over `<li>`: +প্রথমে `<li>` এর কালেকশনটি নেয়: ```js for (let li of document.querySelectorAll('li')) { @@ -6,9 +6,9 @@ for (let li of document.querySelectorAll('li')) { } ``` -In the loop we need to get the text inside every `li`. +লুপের মধ্যে আমাদের প্রতিটি `li` এর টেক্সট নেয়া লাগবে। -We can read the text from the first child node of `li`, that is the text node: +আমরা `li` এর প্রথম নোডটি থেকে নোড এর কন্টেন্ট পাব, যা হল টেক্সট নোড: ```js for (let li of document.querySelectorAll('li')) { @@ -18,4 +18,4 @@ for (let li of document.querySelectorAll('li')) { } ``` -Then we can get the number of descendants as `li.getElementsByTagName('li').length`. +এরপর আমরা এভাবে সর্বমোট চাইল্ডনোড সমূহ পাব `li.getElementsByTagName('li').length`। diff --git a/2-ui/1-document/05-basic-dom-node-properties/2-tree-info/task.md b/2-ui/1-document/05-basic-dom-node-properties/2-tree-info/task.md index f2d9edc67..b8af0ca6f 100644 --- a/2-ui/1-document/05-basic-dom-node-properties/2-tree-info/task.md +++ b/2-ui/1-document/05-basic-dom-node-properties/2-tree-info/task.md @@ -4,11 +4,11 @@ importance: 5 # Count descendants -There's a tree structured as nested `ul/li`. +একটি নেস্টেড ট্রি স্ট্রাকচার্ড আছে `ul/li`। -Write the code that for each `<li>` shows: +একটি কোড লিখুন যা প্রতিটি `<li>` এর কন্টেন্ট কে দেখাবে: -1. What's the text inside it (without the subtree) -2. The number of nested `<li>` -- all descendants, including the deeply nested ones. +1. ভিতরের টেক্সটটি দেখাবেন (সাবট্রি ব্যতীত) +2. `<li>` -- এর মধ্যে সর্বমোট ডিপ নেস্টেড সহ কতটি নেস্টেড এলিমেন্ট আছে? [demo src="solution"] diff --git a/2-ui/1-document/05-basic-dom-node-properties/3-tag-in-comment/solution.md b/2-ui/1-document/05-basic-dom-node-properties/3-tag-in-comment/solution.md index 32900a789..f7b2106a3 100644 --- a/2-ui/1-document/05-basic-dom-node-properties/3-tag-in-comment/solution.md +++ b/2-ui/1-document/05-basic-dom-node-properties/3-tag-in-comment/solution.md @@ -1,4 +1,4 @@ -The answer: **`BODY`**. +এটি দেখাবে: **`BODY`**। ```html run <script> @@ -10,8 +10,8 @@ The answer: **`BODY`**. </script> ``` -What's going on step by step: +এখানে কি হচ্ছে তা ধাপে ধাপে দেখি: -1. The content of `<body>` is replaced with the comment. The comment is `<!--BODY-->`, because `body.tagName == "BODY"`. As we remember, `tagName` is always uppercase in HTML. -2. The comment is now the only child node, so we get it in `body.firstChild`. -3. The `data` property of the comment is its contents (inside `<!--...-->`): `"BODY"`. +1. `<body>` এর কন্টেন্টটি কমেন্ট দ্বারা প্রতিস্থাপিত হবে। কমেন্টটি হল `<!--BODY-->`, কেননা `body.tagName == "BODY"`। এবং আমরা জানি, `tagName` সর্বদা বড়হাতের হয়। +2. কমেন্টটি হল একমাত্র চাইল্ড নোড, সুতরাং আমরা একে `body.firstChild` প্রপার্টিতে পাব। +3. কমেন্ট এর কন্টেন্ট হল `"BODY"` যা আমরা `data` প্রপার্টিতে পাব। \ No newline at end of file diff --git a/2-ui/1-document/05-basic-dom-node-properties/3-tag-in-comment/task.md b/2-ui/1-document/05-basic-dom-node-properties/3-tag-in-comment/task.md index efe50b48f..9c72b4336 100644 --- a/2-ui/1-document/05-basic-dom-node-properties/3-tag-in-comment/task.md +++ b/2-ui/1-document/05-basic-dom-node-properties/3-tag-in-comment/task.md @@ -4,7 +4,7 @@ importance: 3 # Tag in comment -What does this code show? +কোডটি কি দেখাবে? ```html <script> diff --git a/2-ui/1-document/05-basic-dom-node-properties/4-where-document-in-hierarchy/solution.md b/2-ui/1-document/05-basic-dom-node-properties/4-where-document-in-hierarchy/solution.md index cb9456717..181f25aaa 100644 --- a/2-ui/1-document/05-basic-dom-node-properties/4-where-document-in-hierarchy/solution.md +++ b/2-ui/1-document/05-basic-dom-node-properties/4-where-document-in-hierarchy/solution.md @@ -1,33 +1,33 @@ -We can see which class it belongs by outputting it, like: +আমরা এভাবে এর ক্লাস নামটি দেখতে পারি: ```js run alert(document); // [object HTMLDocument] ``` -Or: +অথবা: ```js run alert(document.constructor.name); // HTMLDocument ``` -So, `document` is an instance of `HTMLDocument` class. +সুতরাং, `document` হল `HTMLDocument` ক্লাসের ইন্সট্যান্স। -What's its place in the hierarchy? +চলুন হায়ার্য়াকি অনুযায়ী আরো বিস্তারিত দেখি -Yeah, we could browse the specification, but it would be faster to figure out manually. +আমরা স্পেসিফিকেশন দেখে এই ব্যাপারে জানতে পারি, কিন্তু আমরা কোড করেও এর বিস্তারিত দেখতে পারি। -Let's traverse the prototype chain via `__proto__`. +চলুন আমরা `__proto__` প্রটোটাইপ চেইন ট্রাভার্স করি। -As we know, methods of a class are in the `prototype` of the constructor. For instance, `HTMLDocument.prototype` has methods for documents. +আমরা জানি, ক্লাসের মেথডসমূহ `prototype` দ্বারা constructor কে নির্দেশিত করে। যেমন, `HTMLDocument.prototype` এ ডকুমেন্ট এর মেথড আছে। -Also, there's a reference to the constructor function inside the `prototype`: +এছাড়াও, `prototype` এর constructor এ এর উল্লেখ আছে: ```js run alert(HTMLDocument.prototype.constructor === HTMLDocument); // true ``` -To get a name of the class as a string, we can use `constructor.name`. Let's do it for the whole `document` prototype chain, till class `Node`: +ক্লাস নামটিকে কে আমরা স্ট্রিং আকারে পেতে, `constructor.name` ব্যবহার করতে পারি। চলুন আমরা `document` এর প্রটোটাইপ চেইন ট্রাভার্স করি, যতক্ষণ পর্যন্ত `Node` ক্লাসটি না পায়: ```js run alert(HTMLDocument.prototype.constructor.name); // HTMLDocument @@ -35,6 +35,6 @@ alert(HTMLDocument.prototype.__proto__.constructor.name); // Document alert(HTMLDocument.prototype.__proto__.__proto__.constructor.name); // Node ``` -That's the hierarchy. +এটিই document এর হায়ার্য়াকি। -We also could examine the object using `console.dir(document)` and see these names by opening `__proto__`. The console takes them from `constructor` internally. +আমরা `console.dir(document)` এর সাহায্যেও দেখতে পারি, এবং `__proto__` তে ক্লিক করে প্রত্যেকটির নাম দেখতে পাব। কনসোল ইন্টার্নালি `constructor` সমূহ নেয়। \ No newline at end of file diff --git a/2-ui/1-document/05-basic-dom-node-properties/4-where-document-in-hierarchy/task.md b/2-ui/1-document/05-basic-dom-node-properties/4-where-document-in-hierarchy/task.md index de266c6ae..4c090ef44 100644 --- a/2-ui/1-document/05-basic-dom-node-properties/4-where-document-in-hierarchy/task.md +++ b/2-ui/1-document/05-basic-dom-node-properties/4-where-document-in-hierarchy/task.md @@ -2,10 +2,10 @@ importance: 4 --- -# Where's the "document" in the hierarchy? +# "document" এর হায়ার্য়াকি -Which class does the `document` belong to? +`document` কোন ক্লাসের অন্তর্গত? -What's its place in the DOM hierarchy? +DOM হায়ার্য়াকি তে এর অবস্থান কি? -Does it inherit from `Node` or `Element`, or maybe `HTMLElement`? +এটি কি `Node` বা `Element`, অথবা `HTMLElement` কে ইনহেরিট করে? diff --git a/2-ui/1-document/05-basic-dom-node-properties/article.md b/2-ui/1-document/05-basic-dom-node-properties/article.md index 99dde5bcd..5a48b64a1 100644 --- a/2-ui/1-document/05-basic-dom-node-properties/article.md +++ b/2-ui/1-document/05-basic-dom-node-properties/article.md @@ -1,23 +1,39 @@ -# Node properties: type, tag and contents +# Node properties: type, tag এবং contents -Let's get a more in-depth look at DOM nodes. +DOM নোড সম্পর্কে আরো বিস্তারিত জানা যাক। -In this chapter we'll see more into what they are and learn their most used properties. +এই অধ্যায়ে আমরা এদের কিভাবে ব্যবহার করতে হয় এবং তাদের বহুল ব্যবহৃত প্রপার্টি সম্পর্কে জানব। ## DOM node classes -Different DOM nodes may have different properties. For instance, an element node corresponding to tag `<a>` has link-related properties, and the one corresponding to `<input>` has input-related properties and so on. Text nodes are not the same as element nodes. But there are also common properties and methods between all of them, because all classes of DOM nodes form a single hierarchy. +বিভিন্ন DOM নোডের বিভিন্ন ধরণের প্রপার্টি আছে। যেমন এলিমেন্ট নোড `<a>` ট্যাগের লিংক সম্পর্কিত প্রপার্টি আছে, এবং `<input>` ট্যাগের ইনপুট সম্পর্কিত প্রপার্টি আছে। টেক্সট নোড আবার এলিমেন্ট নোডের মত না। তবে এটির কিছু প্রপার্টিও একই, কেননা সকল DOM নোড ক্লাস একই প্যারেন্ট ক্লাস হতে আছে। -Each DOM node belongs to the corresponding built-in class. +প্রতিটি DOM নোড সংশ্লিষ্ট বিল্ট ইন ক্লাসের সাথে সম্পর্কিত। +<<<<<<< HEAD +হায়ার্য়াকি অনুযায়ী রুট ক্লাস হল [EventTarget](https://dom.spec.whatwg.org/#eventtarget), একে ইনহেরিট করে [Node](http://dom.spec.whatwg.org/#interface-node), এবং অন্যান্য DOM নোড তাদের ইনহেরিট করে। +======= The root of the hierarchy is [EventTarget](https://dom.spec.whatwg.org/#eventtarget), that is inherited by [Node](https://dom.spec.whatwg.org/#interface-node), and other DOM nodes inherit from it. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Here's the picture, explanations to follow: +নিচের ছবিটি দেখুন, বিস্তারিত আলোচনা করা হল: ![](dom-class-hierarchy.svg) -The classes are: +ক্লাসগুলো হল: +<<<<<<< HEAD +- [EventTarget](https://dom.spec.whatwg.org/#eventtarget) -- এটি রুট "abstract" ক্লাস। এই ক্লাসের অবজেক্ট তৈরি হয়না। এটি বেস ক্লাস হিসেবে কাজ করে, এজন্য আমরা সকল ধরণের DOM নোডের সাথে বিভিন্ন ধরণের "events" পায়, পরবর্তীতে এ সম্পর্কে আরো বিস্তারিত জানব। +- [Node](http://dom.spec.whatwg.org/#interface-node) -- এটিও একটি DOM নোডের "abstract" ক্লাস হিসেবে কাজ করে। এটির কিছু কোর ফাংশনালটি আছে: `parentNode`, `nextSibling`, `childNodes` ইত্যাদি (এরা getters)। এই ক্লাসেরও অবজেক্ট তৈরি হয়না। তবে কংক্রিট নোড ক্লাস সমূহ এটি থেকে ইনহেরিট হয়। যেমন: টেক্সট নোডের জন্য `Text`, এলিমেন্ট নোডের জন্য `Element` এবং অদ্ভুতুড়ে কমেন্ট নোডের জন্য `Comment`। +- [Element](http://dom.spec.whatwg.org/#interface-element) -- এটি DOM এলিমেন্টের বেস ক্লাস। এলিমেন্ট সমূহ নেভিগেশনের জন্য `nextElementSibling`, `children` এবং সার্চিংয়ের জন্য `getElementsByTagName`, `querySelector` ইত্যাদি মেথড প্রভাইড করে। ব্রাউজার শুধুমাত্র HTML ছাড়াও XML এবং SVG ও সাপোর্ট করে। `Element` ক্লাস `SVGElement`, `XMLElement` এবং `HTMLElement` এর বেস ক্লাস হিসেবে কাজ করে। +- [HTMLElement](https://html.spec.whatwg.org/multipage/dom.html#htmlelement) -- এবং সকল HTML এলিমেন্টের বেস ক্লাস এটি, এর কিছু চাইল্ড ক্লাস আছে: + - [HTMLInputElement](https://html.spec.whatwg.org/multipage/forms.html#htmlinputelement) -- `<input>` এলিমেন্টের জন্য, + - [HTMLBodyElement](https://html.spec.whatwg.org/multipage/semantics.html#htmlbodyelement) --`<body>` এলিমেন্টের জন্য, + - [HTMLAnchorElement](https://html.spec.whatwg.org/multipage/semantics.html#htmlanchorelement) -- `<a>` এলিমেন্টের জন্য, + - ...এইরকম, প্রতিটি ট্যাগের স্পেসিফিক নিজস্ব ক্লাস এবং কিছু স্পেসিফিক প্রপার্টি এবং মেথড আছে। + +সুতরাং, প্রতিটি নোড তাদের প্যারেন্ট ক্লাস সমূহের এর সকল প্রপার্টি এবং মেথড সমূহও ইনহেরিট করে। +======= - [EventTarget](https://dom.spec.whatwg.org/#eventtarget) -- is the root "abstract" class for everything. Objects of that class are never created. It serves as a base, so that all DOM nodes support so-called "events", we'll study them later. @@ -51,31 +67,32 @@ The classes are: There are many other tags with their own classes that may have specific properties and methods, while some elements, such as `<span>`, `<section>`, `<article>` do not have any specific properties, so they are instances of `HTMLElement` class. So, the full set of properties and methods of a given node comes as the result of the chain of inheritance. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -For example, let's consider the DOM object for an `<input>` element. It belongs to [HTMLInputElement](https://html.spec.whatwg.org/multipage/forms.html#htmlinputelement) class. +যেমন, DOM এর একটি `<input>` এলিমেন্ট আছে। যেটির ক্লাস হল [HTMLInputElement](https://html.spec.whatwg.org/multipage/forms.html#htmlinputelement)। -It gets properties and methods as a superposition of (listed in inheritance order): +এটি তার প্যারেন্ট ক্লাস সমূহের এর সকল প্রপার্টি এবং মেথড সমূহও এর অন্তর্ভুক্ত হবে: -- `HTMLInputElement` -- this class provides input-specific properties, -- `HTMLElement` -- it provides common HTML element methods (and getters/setters), -- `Element` -- provides generic element methods, -- `Node` -- provides common DOM node properties, -- `EventTarget` -- gives the support for events (to be covered), -- ...and finally it inherits from `Object`, so "plain object" methods like `hasOwnProperty` are also available. +- `HTMLInputElement` -- এটি ইনপুট-স্পেসিফিক প্রপার্টি প্রভাইড করে, +- `HTMLElement` -- এটি HTML এলিমেন্টের কমন মেথড সমূহ প্রভাইড করে(getters/setters), +- `Element` -- এটি জেনেরিক এলিমেন্ট মেথড সমূহ প্রভাইড করে, +- `Node` -- এটি কমন DOM নোড মেথড সমূহ প্রভাইড করে, +- `EventTarget` -- ইভেন্ট সমূহ প্রভাইড করে (এ সম্পর্কে পরবর্তীতে জানব), +- ...এবং সর্বশেষে এরা `Object` হতে ইনহেরিট হয়, সুতরাং অবজেক্ট মেথড যেমন `hasOwnProperty` সাপোর্ট করে। -To see the DOM node class name, we can recall that an object usually has the `constructor` property. It references the class constructor, and `constructor.name` is its name: +অবজেক্ট এর `constructor` প্রপার্টি দ্বারা DOM নোডের ক্লাস নাম দেখতে পারি। `constructor.name` দ্বারা নাম দেখাবে: ```js run alert( document.body.constructor.name ); // HTMLBodyElement ``` -...Or we can just `toString` it: +...অথবা `toString`: ```js run alert( document.body ); // [object HTMLBodyElement] ``` -We also can use `instanceof` to check the inheritance: +আমরা `instanceof` ও ব্যবহার করতে পারি: ```js run alert( document.body instanceof HTMLBodyElement ); // true @@ -85,38 +102,38 @@ alert( document.body instanceof Node ); // true alert( document.body instanceof EventTarget ); // true ``` -As we can see, DOM nodes are regular JavaScript objects. They use prototype-based classes for inheritance. +আমরা দেখতে পাচ্ছি, DOM নোড সমূহ রেগুলার জাভাস্ক্রিপ্ট অবজেক্ট। এরা প্রোটোটাইপ বেসড ক্লাস ব্যবহার করে। -That's also easy to see by outputting an element with `console.dir(elem)` in a browser. There in the console you can see `HTMLElement.prototype`, `Element.prototype` and so on. +আমরা ব্রাউজারে `console.dir(elem)` এর সাহায্যে খুব সহজে এলিমেন্ট এর বিস্তারিত দেখি। কনসোলে আমরা `HTMLElement.prototype`, `Element.prototype` ইত্যাদির প্রটোটাইপ দেখব। -```smart header="`console.dir(elem)` versus `console.log(elem)`" -Most browsers support two commands in their developer tools: `console.log` and `console.dir`. They output their arguments to the console. For JavaScript objects these commands usually do the same. +```smart header="`console.dir(elem)` বনাম `console.log(elem)`" +বেশিরভাগ ব্রাউজার এই দুটি কমান্ড সাপোর্ট করে: `console.log` এবং `console.dir`। আমরা আর্গুমেন্টটির আউটপুট কনসোলে দেখব। জাভাস্ক্রিপ্ট অবজেক্টের জন্য দুটিই একই। -But for DOM elements they are different: +কিন্তু DOM এলিমেন্টের জন্য এটি আলাদা: -- `console.log(elem)` shows the element DOM tree. +- `console.log(elem)` DOM এলিমেন্টের ট্রি দেখাবে। - `console.dir(elem)` shows the element as a DOM object, good to explore its properties. -Try it on `document.body`. +`document.body` টি চেষ্টা করে দেখুন। ``` -````smart header="IDL in the spec" -In the specification, DOM classes aren't described by using JavaScript, but a special [Interface description language](https://en.wikipedia.org/wiki/Interface_description_language) (IDL), that is usually easy to understand. +````smart header="IDL স্পেসিফিকেশন" +স্পেসিফিকেশনে জাভাস্ক্রিপ্ট এর মাধ্যমে DOM ক্লাস সমূহ আলোচনা করা হয়নি [Interface description language](https://en.wikipedia.org/wiki/Interface_description_language) (IDL), তবে এটি বুঝা সহজ। -In IDL all properties are prepended with their types. For instance, `DOMString`, `boolean` and so on. +IDL এ সকল প্রপার্টি তাদের টাইপ অনুযায়ী প্রিপেন্ডেড থাকে। যেমন, `DOMString`, `boolean` ইত্যাদি। -Here's an excerpt from it, with comments: +নিচে দেখানো হল: ```js // Define HTMLInputElement *!* -// The colon ":" means that HTMLInputElement inherits from HTMLElement +// কোলন ":" দ্বারা বুঝায় HTMLInputElement এর প্যারেন্ট HTMLElement */!* interface HTMLInputElement: HTMLElement { - // here go properties and methods of <input> elements + // এখানে <input> এলিমেন্টের প্রপার্টি এবং মেথড থাকে *!* - // "DOMString" means that the value of a property is a string + // "DOMString" দ্বারা বুঝায় প্রপার্টি সমূহ হল স্ট্রিং */!* attribute DOMString accept; attribute DOMString alt; @@ -124,12 +141,12 @@ interface HTMLInputElement: HTMLElement { attribute DOMString value; *!* - // boolean value property (true/false) + // প্রপার্টি সমূহ হল স্ট্রিং বুলিয়ান (true/false) attribute boolean autofocus; */!* ... *!* - // now the method: "void" means that the method returns no value + // এখানে: "void" মেথড দ্বারা বুঝানো হচ্ছে এটি কোন ভ্যালু রিটার্ন করবে না */!* void select(); ... @@ -137,80 +154,87 @@ interface HTMLInputElement: HTMLElement { ``` ```` -## The "nodeType" property +## "nodeType" প্রপার্টি -The `nodeType` property provides one more, "old-fashioned" way to get the "type" of a DOM node. +পূর্বে আমরা `nodeType` প্রপার্টি এর সাহায্যে DOM নোড যাচাই করতে পারতাম। -It has a numeric value: -- `elem.nodeType == 1` for element nodes, -- `elem.nodeType == 3` for text nodes, -- `elem.nodeType == 9` for the document object, -- there are few other values in [the specification](https://dom.spec.whatwg.org/#node). +এটির একটি মান আছে: +- `elem.nodeType == 1` এলিমেন্ট নোড, +- `elem.nodeType == 3` টেক্সট নোড, +- `elem.nodeType == 9` ডকুমেন্ট অবজেক্ট, +- আরো বিস্তারিত জানতে দেখুন [the specification](https://dom.spec.whatwg.org/#node)। -For instance: +উদাহরণস্বরূপ: ```html run <body> <script> let elem = document.body; +<<<<<<< HEAD + // আসুন এটি কি ধরণের নোড যাচাই করি? + alert(elem.nodeType); // 1 => element + + // এবং এটি হল... +======= // let's examine: what type of node is in elem? alert(elem.nodeType); // 1 => element // and its first child is... +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 alert(elem.firstChild.nodeType); // 3 => text - // for the document object, the type is 9 + // ডকুমেন্ট অবজেক্ট এর মান alert( document.nodeType ); // 9 </script> </body> ``` -In modern scripts, we can use `instanceof` and other class-based tests to see the node type, but sometimes `nodeType` may be simpler. We can only read `nodeType`, not change it. +মডার্ন জাভাস্ক্রিপ্টে, আমরা `instanceof` এর সাহায্যে নোড টাইপ যাচাই করতে পারি, কিন্তু অনেক সময় `nodeType` ও কাজে আসে। `nodeType` হল রিড-অনলি, এটি পরিবর্তনযোগ্য নয়। -## Tag: nodeName and tagName +## ট্যাগ: nodeName এবং tagName -Given a DOM node, we can read its tag name from `nodeName` or `tagName` properties: +DOM নোড হতে, আমরা ট্যাগ নামটি `nodeName` বা `tagName` প্রপার্টির সাহায্যে পড়তে পারি: -For instance: +উদাহরণস্বরূপ: ```js run alert( document.body.nodeName ); // BODY alert( document.body.tagName ); // BODY ``` -Is there any difference between `tagName` and `nodeName`? +`tagName` এবং `nodeName` এর মাঝে কি কোন পার্থক্য আছে? -Sure, the difference is reflected in their names, but is indeed a bit subtle. +হ্যাঁ, প্রপার্টিগুলোর পার্থক্য নামগুলোতেই প্রতিফলিত হয়, তবে এছাড়াও কিছুটা সূক্ষ্ম পার্থক্য আছে। -- The `tagName` property exists only for `Element` nodes. -- The `nodeName` is defined for any `Node`: - - for elements it means the same as `tagName`. - - for other node types (text, comment, etc.) it has a string with the node type. +- `tagName` প্রপার্টি শুধুমাত্র `Element` নোড এ থাকে। +- `nodeName` প্রপার্টি যে কোন `Node` এর জন্য: + - এলিমেন্টের জন্য `tagName` একই। + - অন্যান্য নোড টাইপের জন্য যেমন (text, comment, ইত্যাদি)। -In other words, `tagName` is only supported by element nodes (as it originates from `Element` class), while `nodeName` can say something about other node types. +অন্যভাবে বলা যায়, `tagName` শুধুমাত্র এলিমেন্ট নোডের জন্য কাজ করে (অর্থাৎ `Element` ক্লাসের জন্য), অন্যদিকে `nodeName` এ যেকোন নোড টাইপের নাম পেতে পারি। -For instance, let's compare `tagName` and `nodeName` for the `document` and a comment node: +উদাহরণস্বরূপ, চলুন `document` এবং *comment* node এর জন্য `tagName` এবং `nodeName` এর পার্থক্য দেখি: ```html run <body><!-- comment --> <script> - // for comment - alert( document.body.firstChild.tagName ); // undefined (not an element) + // কমেন্টের জন্য + alert( document.body.firstChild.tagName ); // undefined (যেহেতু এটি এলিমেন্ট না) alert( document.body.firstChild.nodeName ); // #comment - // for document - alert( document.tagName ); // undefined (not an element) + // ডকুমেন্টের জন্য + alert( document.tagName ); // undefined (যেহেতু এটি এলিমেন্ট না) alert( document.nodeName ); // #document </script> </body> ``` -If we only deal with elements, then we can use both `tagName` and `nodeName` - there's no difference. +যদি আমরা এলিমেন্ট নিয়ে কাজ করি, তাহলে `tagName` এবং `nodeName` উভয়ই ব্যবহার করতে পারব - তাদের মাঝে কোন পার্থক্য নাই। -```smart header="The tag name is always uppercase except in XML mode" +```smart header="XML মোড ব্যাতীত ট্যাগ নাম সর্বদা বড় হাতের হয়" The browser has two modes of processing documents: HTML and XML. Usually the HTML-mode is used for webpages. XML-mode is enabled when the browser receives an XML-document with the header: `Content-Type: application/xml+xhtml`. In HTML mode `tagName/nodeName` is always uppercased: it's `BODY` either for `<body>` or `<BoDy>`. @@ -219,13 +243,17 @@ In XML mode the case is kept "as is". Nowadays XML mode is rarely used. ``` -## innerHTML: the contents +## innerHTML: কন্টেন্ট +<<<<<<< HEAD +[innerHTML](https://w3c.github.io/DOM-Parsing/#widl-Element-innerHTML) প্রপার্টিতে এলিমেন্টের কন্টেন্ট স্ট্রিং হিসেবে নেই। +======= The [innerHTML](https://w3c.github.io/DOM-Parsing/#the-innerhtml-mixin) property allows to get the HTML inside the element as a string. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -We can also modify it. So it's one of the most powerful ways to change the page. +আমরা এর সাহায্যে কন্টেন্ট পরিবর্তনও করতে পারি। সুতরাং DOM এ পরিবর্তনের অন্যতম উপায় হল এটি। -The example shows the contents of `document.body` and then replaces it completely: +নিচের উদাহরণে `document.body` এর কন্টেন্ট দেখি এবং একে পরিবর্তন করি: ```html run <body> @@ -233,44 +261,44 @@ The example shows the contents of `document.body` and then replaces it completel <div>A div</div> <script> - alert( document.body.innerHTML ); // read the current contents - document.body.innerHTML = 'The new BODY!'; // replace it + alert( document.body.innerHTML ); // বর্তমান কন্টেন্ট দেখি + document.body.innerHTML = 'The new BODY!'; // একে পরিবর্তন করি </script> </body> ``` -We can try to insert invalid HTML, the browser will fix our errors: +আমরা ভুল HTML এলিমেন্ট সংযুক্ত করতে চাইলে ব্রাউজার স্বয়ংক্রিয়ভাবে সংশোধন করে দেয়: ```html run <body> <script> - document.body.innerHTML = '<b>test'; // forgot to close the tag - alert( document.body.innerHTML ); // <b>test</b> (fixed) + document.body.innerHTML = '<b>test'; // ক্লোজিং ট্যাগ দেয়া হয়নি + alert( document.body.innerHTML ); // <b>test</b> (স্বয়ংক্রিয়ভাবে সংশোধন হয়ে গেছে) </script> </body> ``` -```smart header="Scripts don't execute" -If `innerHTML` inserts a `<script>` tag into the document -- it becomes a part of HTML, but doesn't execute. +```smart header="স্ক্রিপ্টস এক্সিকিউট হয় না" +যদি ডকুমেন্টে `innerHTML` এর সাহায্যে `<script>` সংযুক্ত করি -- এটি এক্সিকিউট হবে নাহ, HTML এর একটি অংশ হিসেবে থাকবে। ``` -### Beware: "innerHTML+=" does a full overwrite +### সতর্কীকরণ: "innerHTML+=" দ্বারা সম্পূর্ন প্রতিস্থাপন হয় -We can append HTML to an element by using `elem.innerHTML+="more html"`. +আমরা এভাবে এলিমেন্টে নতুন কন্টেন্ট সংযুক্ত করতে পারি `elem.innerHTML+="more html"`। -Like this: +যেমন: ```js chatDiv.innerHTML += "<div>Hello<img src='smile.gif'/> !</div>"; chatDiv.innerHTML += "How goes?"; ``` -But we should be very careful about doing it, because what's going on is *not* an addition, but a full overwrite. +কিন্তু এটি করার সময় আমাদের সতর্ক থাকা উচিত, কেননা এটি দ্বারা নতুন ডাটা অ্যাপেন্ড হয় না, সম্পূর্ণ এলিমেন্ট প্রতিস্থাপিত হয়। -Technically, these two lines do the same: +এখানে, এই দুটি লাইন একই কাজ করে: ```js elem.innerHTML += "..."; @@ -280,24 +308,24 @@ elem.innerHTML = elem.innerHTML + "..." */!* ``` -In other words, `innerHTML+=` does this: +`innerHTML+=` নিম্নোক্ত পদ্ধতিতে কাজ করে: -1. The old contents is removed. -2. The new `innerHTML` is written instead (a concatenation of the old and the new one). +1. পূর্বের কন্টেন্ট রিমুভ করবে। +2. `innerHTML` পূর্বের কন্টেন্ট এবং নতুন কন্টেন্ট সংযুক্ত হয়ে DOM এ প্রতিস্থাপিত হবে । -**As the content is "zeroed-out" and rewritten from the scratch, all images and other resources will be reloaded**. +**যেহেতু সম্পূর্ন কন্টেন্টটি ্মুছে আবার নতুন করে লিখা হয়, সমস্ত ইমেজ এবং অন্যান্য রিসোর্স পুনরায় লোড হবে**. -In the `chatDiv` example above the line `chatDiv.innerHTML+="How goes?"` re-creates the HTML content and reloads `smile.gif` (hope it's cached). If `chatDiv` has a lot of other text and images, then the reload becomes clearly visible. +উপরের `chatDiv` উদাহরণে এই লাইনে `chatDiv.innerHTML+="How goes?"` পুনরায় HTML কন্টেন্ট এবং `smile.gif` রিলোড হবে(এটি ব্রাউজারে cached থাকতে পারে)। যদি `chatDiv` এলিমেন্টে উল্লেখ পরিমাণ পরিমাণ টেক্সট এবং ইমেজ থাকে রিলোড হওয়াটি আমাদের কাছে দৃশ্যমান হবে। -There are other side-effects as well. For instance, if the existing text was selected with the mouse, then most browsers will remove the selection upon rewriting `innerHTML`. And if there was an `<input>` with a text entered by the visitor, then the text will be removed. And so on. +এটির আরো একটি সাইড ইফেক্ট আছে। For instance, if the existing text was selected with the mouse, then most browsers will remove the selection upon rewriting `innerHTML`. And if there was an `<input>` with a text entered by the visitor, then the text will be removed. And so on. -Luckily, there are other ways to add HTML besides `innerHTML`, and we'll study them soon. +তবে, আমরা `innerHTML` ছাড়াও অন্য উপায়ে কন্টেন্ট অ্যাড করতে পারি, আমরা সামনে এ ব্যাপারে জানব। -## outerHTML: full HTML of the element +## outerHTML: এলিমেন্টের সম্পূর্ন HTML -The `outerHTML` property contains the full HTML of the element. That's like `innerHTML` plus the element itself. +`outerHTML` প্রপার্টি এলিমেন্টের সম্পূর্ন কন্টেন্ট সংরক্ষণ করে। অর্থাৎ `innerHTML` এবং এলিমেন্টের নিজস্ব কন্টেন্ট। -Here's an example: +এখানে একটি উদাহরণ দেখুন: ```html run <div id="elem">Hello <b>World</b></div> @@ -307,11 +335,11 @@ Here's an example: </script> ``` -**Beware: unlike `innerHTML`, writing to `outerHTML` does not change the element. Instead, it replaces it in the DOM.** +**সতর্কীকরণ: এটি `innerHTML` এর মত না, `outerHTML` এ কিছু লিখলে এটি এলিমেন্টটি পরিবর্তন করে না। ্তার পরিবর্তে, DOM এ প্রতিস্থাপিত হয়।** -Yeah, sounds strange, and strange it is, that's why we make a separate note about it here. Take a look. +হ্যাঁ, শুনতে অদ্ভুত লাগলেও, এটিই ঘটে, এজন্য আমাদের এ ব্যাপারটি আলাদা ভাবে জেনে রাখা উচিত। -Consider the example: +উদাহরণস্বরূপ: ```html run <div>Hello, world!</div> @@ -320,39 +348,39 @@ Consider the example: let div = document.querySelector('div'); *!* - // replace div.outerHTML with <p>...</p> + // div.outerHTML এর সাহায্যে <p>...</p> প্রতিস্থাপন */!* div.outerHTML = '<p>A new element</p>'; // (*) *!* - // Wow! 'div' is still the same! + // Wow! 'div' এখনো আগের মত! */!* alert(div.outerHTML); // <div>Hello, world!</div> (**) </script> ``` -Looks really odd, right? +অদ্ভুত, তাই না? -In the line `(*)` we replaced `div` with `<p>A new element</p>`. In the outer document (the DOM) we can see the new content instead of the `<div>`. But, as we can see in line `(**)`, the value of the old `div` variable hasn't changed! +`(*)` এই লাইনে আমরা `div` কে `<p>A new element</p>` দ্বারা প্রতিস্থাপন করি। আউটার ডকুমেন্টে আমরা `<div>` এর বদলে নতুন কন্টেন্ট দেখি। কিন্তু, `(**)` এই লাইনে আমরা দেখছি, পুরাতন `div` ভ্যারিয়েবলের মান পরিবর্তন হয়নি। -The `outerHTML` assignment does not modify the DOM element (the object referenced by, in this case, the variable 'div'), but removes it from the DOM and inserts the new HTML in its place. +`outerHTML` এ অ্যাসাইমেন্টে DOM এলিমেন্ট মোডিফাই হয়না (এইখানে রেফারেন্স করা অবজেক্টটি হল 'div'), কিন্তু এটিকে DOM হতে রিমুভ করে নতুন HTML এতে প্লেস হয়। -So what happened in `div.outerHTML=...` is: -- `div` was removed from the document. -- Another piece of HTML `<p>A new element</p>` was inserted in its place. +সুতরাং চলুন দেখি `div.outerHTML=...` এর ক্ষেত্রে কি হয়: +- ডকুমেন্ট হতে `div` টি রিমুভ হবে। +- তার স্থলে আরেকটি নতুন HTML `<p>A new element</p>` প্রতিস্থাপিত হবে। - `div` still has its old value. The new HTML wasn't saved to any variable. -It's so easy to make an error here: modify `div.outerHTML` and then continue to work with `div` as if it had the new content in it. But it doesn't. Such thing is correct for `innerHTML`, but not for `outerHTML`. +এই জন্য আমরা সহজে ভুল করতে পারি: `div.outerHTML` কে পরিবর্তন করব এবং পরবর্তীতে `div` নিয়ে কাজ চালিয়ে যাব, এমন হবে নাহ। কেননা আমরা এইভাবে `innerHTML` এর সাহায্যে কাজ করতে পারব, `outerHTML` দ্বারা সম্ভব নয়। -We can write to `elem.outerHTML`, but should keep in mind that it doesn't change the element we're writing to ('elem'). It puts the new HTML in its place instead. We can get references to the new elements by querying the DOM. +আমরা কন্টেন্ট `elem.outerHTML` এর সাহায্যেও লিখতে পারি, তবে আমাদের সর্বদা মাথায় রাখতে এটি আমাদের ('elem') কে চ্যাঞ্জ করছে না। তার পরিবর্তে এটি নতুন HTML সংযুক্ত করে। আমরা DOM সার্চিং মেথড সমূহ দ্বারা নতুন এলিমেন্টকে রেফারেন্স করতে পারি। ## nodeValue/data: text node content -The `innerHTML` property is only valid for element nodes. +`innerHTML` প্রপার্টি শুধুমাত্র এলিমেন্ট নোডের সাথে কাজ করে। -Other node types, such as text nodes, have their counterpart: `nodeValue` and `data` properties. These two are almost the same for practical use, there are only minor specification differences. So we'll use `data`, because it's shorter. +অন্যান্য নোড টাইপ, যেমন টেক্সট নোড, এরও অনুরূপ প্রপার্টি আছে যেমন: `nodeValue` এবং `data`। প্রাক্টিক্যাল ইউজ কেসে দুইটির কাজ একই, তবে কিছু সামান্য পার্থক্য আছে। আমরা এখানে `data` প্রপার্টি ব্যবহার করব, কেননা এটি সংক্ষিপ্তরূপ। -An example of reading the content of a text node and a comment: +কমেন্ট এবং টেক্সট নোডের কন্টেন্ট পড়ার একটি উদাহরণ দেখুন: ```html run height="50" <body> @@ -372,9 +400,9 @@ An example of reading the content of a text node and a comment: </body> ``` -For text nodes we can imagine a reason to read or modify them, but why comments? +আমাদের টেক্সট নোডের পরিবর্তন করার দরকার হতে পারে, তবে কমেন্ট নোডের কন্টেন্ট কেন পরিবর্তন করা লাগতে পারে? -Sometimes developers embed information or template instructions into HTML in them, like this: +অনেক সময় ডেভলাপাররা টেমপ্লেট ইন্সট্রাকশনের জন্য কমেন্টও এমবেড করে, যেমন: ```html <!-- if isAdmin --> @@ -382,13 +410,13 @@ Sometimes developers embed information or template instructions into HTML in the <!-- /if --> ``` -...Then JavaScript can read it from `data` property and process embedded instructions. +...তারপরে জাভাস্ক্রিপ্ট এটি `data` প্রপার্টির সাহায্যে পড়তে পারে এবং এম্বেড থাকা এর নিয়ম হতে প্রসেস করতে পারে। -## textContent: pure text +## textContent: শুধুই টেক্সট -The `textContent` provides access to the *text* inside the element: only text, minus all `<tags>`. +`textContent` এলিমেন্টে থাকা শুধু টেক্সট রিটার্ন করে: শুধুই টেক্সট, সকল `<tags>` বাদ দেয়। -For instance: +উদাহরনস্বরূপ: ```html run <div id="news"> @@ -402,18 +430,18 @@ For instance: </script> ``` -As we can see, only text is returned, as if all `<tags>` were cut out, but the text in them remained. +এখানে আমরা দেখছি শুধু টেক্সট রিটার্ন হচ্ছে, সকল `<tags>` ফিল্টার হয়ে শুধুমাত্র টেক্সট থাকবে। -In practice, reading such text is rarely needed. +সাধারণত, আমাদের এই ধরণের টেক্সট পড়ার দরকার হয় না। -**Writing to `textContent` is much more useful, because it allows to write text the "safe way".** +**তবে `textContent` এর সাহায্যে কোন কিছু লিখা অনেক উপকারী, এর সাহায্যে আমরা "নিরাপদ উপায়ে" কন্টেন্ট DOM এ সংযুক্ত করতে পারি।** -Let's say we have an arbitrary string, for instance entered by a user, and want to show it. +ধরুন আমাদের একটি স্বতন্ত্র স্ট্রিং আছে, যা ইউজারের ইনপুট দেয়, এবং এটি দেখাতে চাই। -- With `innerHTML` we'll have it inserted "as HTML", with all HTML tags. -- With `textContent` we'll have it inserted "as text", all symbols are treated literally. +- `innerHTML` এর মাধ্যমে আমরা "HTML" হিসেবে সংযুক্ত করতে পারি, HTML ট্যাগ সহ। +- `textContent` এর মাধ্যমে আমরা "text" হিসেবে সংযুক্ত করতে পারি, সকল সিম্বল টেক্সট হিসেবে কাউন্ট হবে। -Compare the two: +এখানে দেখুন: ```html run <div id="elem1"></div> @@ -427,32 +455,32 @@ Compare the two: </script> ``` -1. The first `<div>` gets the name "as HTML": all tags become tags, so we see the bold name. -2. The second `<div>` gets the name "as text", so we literally see `<b>Winnie-the-Pooh!</b>`. +1. প্রথমটিতে `<div>` নামটি "HTML" আকারে দেখি: সকল ট্যাগ রেন্ডার হয়, যার জন্য আমরা নামটি বোল্ড দেখি। +2. দ্বিতীয়টিতে `<div>` নামটি "text" আকারে দেখি, এজন্য আমরা এটি এভাবে দেখি `<b>Winnie-the-Pooh!</b>`। -In most cases, we expect the text from a user, and want to treat it as text. We don't want unexpected HTML in our site. An assignment to `textContent` does exactly that. +বেশিরভাগ ক্ষেত্রে, আমরা ইউজার থেকে ইনপুট হিসেবে শুধু টেক্সট আশ করি। আমরা কোন ধরণের অপ্রয়োজনীয় HTML দেখতে চায় না। এই ক্ষেত্রে `textContent` আমাদের কাজে আসবে। -## The "hidden" property +## "hidden" প্রপার্টি -The "hidden" attribute and the DOM property specifies whether the element is visible or not. +"hidden" অ্যাট্রিবিউট দ্বারা DOM এ কোন এলিমেন্ট প্রদর্শিত হবে কি হবে না তা কন্ট্রোল করতে পারি। -We can use it in HTML or assign it using JavaScript, like this: +আমরা এটি HTML বা JavaScript এর সাহায্যে কন্ট্রোল করতে পারি: ```html run height="80" -<div>Both divs below are hidden</div> +<div>উভয়ই এলিমেন্ট হাইড থাকবে</div> -<div hidden>With the attribute "hidden"</div> +<div hidden>অ্যাট্রিবিউটের মাধ্যমে "hidden"</div> -<div id="elem">JavaScript assigned the property "hidden"</div> +<div id="elem">JavaScript এর সাহায্যে "hidden"</div> <script> elem.hidden = true; </script> ``` -Technically, `hidden` works the same as `style="display:none"`. But it's shorter to write. +আসলে, `hidden` প্রপার্টি `style="display:none"` এর মত কাজ করে। কিন্তু এটি সংক্ষেপে লিখা যায়। -Here's a blinking element: +এখানে একটি ব্লিংক এলিমেন্ট দেখুন: ```html run height=50 @@ -463,16 +491,16 @@ Here's a blinking element: </script> ``` -## More properties +## আরো প্রপার্টি -DOM elements also have additional properties, in particular those that depend on the class: +DOM এলিমেন্টের আরো কিছু প্রপার্টি আছে, এবং আলাদা আলাদা ক্লাস এর আলাদা আলাদা বৈশিষ্ট্য আছে: -- `value` -- the value for `<input>`, `<select>` and `<textarea>` (`HTMLInputElement`, `HTMLSelectElement`...). -- `href` -- the "href" for `<a href="...">` (`HTMLAnchorElement`). -- `id` -- the value of "id" attribute, for all elements (`HTMLElement`). -- ...and much more... +- `value` -- `<input>`, `<select>` এবং `<textarea>` এর ভ্যালু (`HTMLInputElement`, `HTMLSelectElement`...)। +- `href` -- `<a href="...">` এর "href" (`HTMLAnchorElement`)। +- `id` -- "id" অ্যাট্রিবিউট, সকল এলিমেন্টের জন্য (`HTMLElement`)। +- ...এবং আরো অনেক... -For instance: +যেমন: ```html run height="80" <input type="text" id="elem" value="value"> @@ -484,39 +512,39 @@ For instance: </script> ``` -Most standard HTML attributes have the corresponding DOM property, and we can access it like that. +বেশিরভাগ HTML অ্যাট্রিবিউট সম্পর্কিত DOM প্রপার্টি আছে, এবং আমরা এদের এক্সেস করতে পারি। -If we want to know the full list of supported properties for a given class, we can find them in the specification. For instance, `HTMLInputElement` is documented at <https://html.spec.whatwg.org/#htmlinputelement>. +যদি আমরা কোন নির্দিষ্ট ক্লাসের সাপোর্টেড প্রপার্টি সমূহ পেতে চাই, তাহলে আমরা তাদের স্পেসিফিকশন দেখতে পারি। যেমন `HTMLInputElement` সম্পর্কে জানতে <https://html.spec.whatwg.org/#htmlinputelement>। -Or if we'd like to get them fast or are interested in a concrete browser specification -- we can always output the element using `console.dir(elem)` and read the properties. Or explore "DOM properties" in the Elements tab of the browser developer tools. +অথবা যদি আমরা আরো দ্রুত এবং বিশদ জানতে চাই ব্রাউজারের ডেভ টুলসের সাহায্য নিতে পারি -- `console.dir(elem)` এর মাধ্যমে আমরা কোন এলিমেন্টের প্রপার্টি এবং মেথড সমূহ বিস্তারিত জানতে পারি। অথবা ব্রাউজার ডেভ টুলসের এলিমেন্ট ট্যাব এ "DOM properties" দেখতে পারি। -## Summary +## সারাংশ -Each DOM node belongs to a certain class. The classes form a hierarchy. The full set of properties and methods come as the result of inheritance. +প্রতিটি DOM নোড একটি নির্দিষ্ট ক্লাসের অন্তর্গত। ক্লাসগুলো একটি হায়ার্য়াকি অনুযায়ী থাকে। ফলে সকল প্যারেন্ট ক্লাসের প্রপার্টি এবং মেথড সমূহও ইনহেরিট হয়। -Main DOM node properties are: +প্রধান DOM নোড প্রপার্টি হল: `nodeType` -: We can use it to see if a node is a text or an element node. It has a numeric value: `1` for elements,`3` for text nodes, and a few others for other node types. Read-only. +: এর সাহায্যে আমরা নোড যাচাই করতে পারি। এটির নিউমেরিক ভ্যালু আছে: `1` দ্বারা বুঝায় এলিমেন্ট,`3` দ্বারা বুঝায় টেক্সট নোড, এবং অন্যান্য নোড টাইপের জন্য আলাদা আলাদা ভ্যালু। এটি Read-only। `nodeName/tagName` -: For elements, tag name (uppercased unless XML-mode). For non-element nodes `nodeName` describes what it is. Read-only. +: এলিমেন্ট বা ট্যাগ নাম (XML-mode) ব্যাতীত বড় হাতের। এলিমেন্ট ব্যতীত অন্যান্য নোডের নামের জন্য `nodeName` প্রপার্টি ব্যবহার হয়। এটিও Read-only। `innerHTML` -: The HTML content of the element. Can be modified. +: এলিমেন্টের HTML কন্টেন্ট। এটি পরিবর্তনযোগ্য। `outerHTML` -: The full HTML of the element. A write operation into `elem.outerHTML` does not touch `elem` itself. Instead it gets replaced with the new HTML in the outer context. +: সম্পুর্ন এলিমেন্ট সহ কন্টেন্ট। `elem.outerHTML` দ্বারা কিছু সংযোজন করলে তা `elem` কে প্রতিস্থাপিত করে না। তার পরিবর্তে এটি নতুন কন্টেন্ট সংযোজন করে এবং পুরাতন টি রিমুভ হয়। `nodeValue/data` -: The content of a non-element node (text, comment). These two are almost the same, usually we use `data`. Can be modified. +: নন-এলিমেন্ট নোডের কন্টেন্ট এর জন্য (text, comment)। দুটিই প্রায় একই, তবে বেশিরভাগ ক্ষেত্রে `data` ব্যবহার করি। কন্টেন্ট পরিবর্তনযোগ্য। `textContent` -: The text inside the element: HTML minus all `<tags>`. Writing into it puts the text inside the element, with all special characters and tags treated exactly as text. Can safely insert user-generated text and protect from unwanted HTML insertions. +: এলিমেন্টের মধ্যের টেক্সট: সকল ধরণের HTML `<tags>` ব্যাতীত। কন্টেন্ট সংযোজনের সময় প্লেন টেক্সট হিসেবে সংযুক্ত হয়, যার ফলে স্পেশাল ক্যারাক্টার বা ট্যাগ সমূহ টেক্সট আকারে দেখাবে। ইউজার ইনপুট কন্টেন্ট এস্কেপিংয়ে এটি কার্যকর। `hidden` -: When set to `true`, does the same as CSS `display:none`. +: যদি `true` হয় তাহলে CSS `display:none` এর মত কাজ করবে। -DOM nodes also have other properties depending on their class. For instance, `<input>` elements (`HTMLInputElement`) support `value`, `type`, while `<a>` elements (`HTMLAnchorElement`) support `href` etc. Most standard HTML attributes have a corresponding DOM property. +DOM নোডের বিভিন্ন ক্লাস অনুযায়ী বিভিন্ন প্রপার্টি আছে, যেমন `<input>` (`HTMLInputElement`) এলিমেন্টের `value`, `type`, `<a>` (`HTMLAnchorElement`) এলিমেন্টের `href` ইত্যাদি। বেশিরভাগ HTML অ্যাট্রিবিউট সম্পর্কিত বিভিন্ন DOM প্রপার্টি আছে। -However, HTML attributes and DOM properties are not always the same, as we'll see in the next chapter. +যাইহোক, HTML অ্যাট্রিবিউট এবং DOM প্রপার্টি সবসময় এক হয় না, বিস্তারিত আমরা পরবর্তী অধ্যায়ে দেখব। diff --git a/2-ui/1-document/05-basic-dom-node-properties/dom-class-hierarchy.svg b/2-ui/1-document/05-basic-dom-node-properties/dom-class-hierarchy.svg index ccd93d500..39f7d8f8c 100644 --- a/2-ui/1-document/05-basic-dom-node-properties/dom-class-hierarchy.svg +++ b/2-ui/1-document/05-basic-dom-node-properties/dom-class-hierarchy.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="552" height="403" viewBox="0 0 552 403"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="dom-class-hierarchy.svg"><path id="Rectangle-9" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M181 6h118v28H181z"/><path id="Rectangle-8" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M181 74h118v28H181z"/><text id="EventTarget" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="200.9" y="24">EventTarget</tspan></text><text id="Node" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="225.6" y="91">Node </tspan></text><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M240.5 39.5l7 14h-6v17h-2v-17h-6l7-14z"/><path id="Rectangle-8-Copy" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M181 144h118v28H181z"/><text id="Element" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="214.8" y="161">Element </tspan></text><path id="Line-2-Copy" fill="#C06334" fill-rule="nonzero" d="M240.5 109.5l7 14h-6v17h-2v-17h-6l7-14z"/><path id="Rectangle-8-Copy-4" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M181 230h118v28H181z"/><text id="HTMLElement" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="200.4" y="247">HTMLElement </tspan></text><path id="Line-2-Copy-4" fill="#C06334" fill-rule="nonzero" d="M240.5 195.5l7 14h-6v17h-2v-17h-6l7-14zM72.5 158.5l7.273 13.86-5.999.117L74 183.98l.02 1-2 .04-.02-1-.226-11.503-5.998.118L72.5 158.5z"/><path id="Rectangle-8-Copy-6" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M171 300h138v28H171z"/><text id="HTMLBodyElement" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="186" y="317">HTMLBodyElement </tspan></text><path id="Line-2-Copy-6" fill="#C06334" fill-rule="nonzero" d="M240.5 265.5l7 14h-6v17h-2v-17h-6l7-14z"/><path id="Rectangle-8-Copy-7" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 300h138v28H1z"/><text id="HTMLInputElement" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="13.4" y="317">HTMLInputElement </tspan></text><path id="Line-2-Copy-7" fill="#C06334" fill-rule="nonzero" d="M159 261l-6.753 14.12-3.685-4.736-29.448 22.905-.79.614-1.227-1.578.79-.614 29.448-22.906-3.684-4.735L159 261z"/><path id="Rectangle-8-Copy-8" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M339 300h138v28H339z"/><text id="HTMLAnchorElement" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="348.3" y="317">HTMLAnchorElement </tspan></text><path id="Line-2-Copy-8" fill="#C06334" fill-rule="nonzero" d="M312 261l15.305 3.28-3.749 4.684 29.069 23.255.78.625-1.249 1.562-.78-.625-29.069-23.254-3.748 4.685L312 261z"/><path id="Rectangle-8-Copy-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M22 126h98v28H22z"/><text id="Document" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="42.2" y="144">Document </tspan></text><path id="Rectangle-8-Copy-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M22 192h98v28H22z"/><text id="HTMLDocument" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="27.8" y="210">HTMLDocument </tspan></text><path id="Line-2-Copy-2" fill="#C06334" fill-rule="nonzero" d="M168 90l-8.862 12.902-2.905-5.251-34.749 19.224-.875.484-.968-1.75.875-.484 34.749-19.224-2.904-5.25L168 90z"/><path id="Rectangle-8-Copy-3" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M369 126h118v28H369z"/><text id="CharacterData" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="381.2" y="144">CharacterData </tspan></text><path id="Line-2-Copy-3" fill="#C06334" fill-rule="nonzero" d="M314 91l15.648.379-2.813 5.299 36.634 19.439.883.468-.937 1.767-.884-.469-36.633-19.439-2.812 5.301L314 91zM458 159l13.93 7.138-4.836 3.552 9.712 13.218.592.806-1.612 1.184-.592-.806-9.712-13.218-4.834 3.553L458 159zM400 158l-1.376 15.592-5.11-3.146-8.662 14.078-.524.852-1.704-1.048.524-.852 8.663-14.078-5.11-3.143L400 158z"/><text id="Document-as-a-whole" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="6.6" y="235">Document as a whole</tspan></text><text id="<input-type="…">" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="13.4" y="341"><input type="…"></tspan></text><text id="<body>" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="220.4" y="341"><body></tspan></text><text id="<a-href="…">" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="365.8" y="341"><a href="…"></tspan></text><text id="<div>...</div>" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="192.6" y="188" fill="#AF6E24"><</tspan> <tspan x="199.8" y="188" fill="#C06334">div</tspan> <tspan x="221.4" y="188" fill="#AF6E24">></tspan> <tspan x="228.6" y="188" fill="#DBAF88">...</tspan> <tspan x="250.2" y="188" fill="#AF6E24"></</tspan> <tspan x="264.6" y="188" fill="#C06334">div</tspan> <tspan x="286.2" y="188" fill="#AF6E24">></tspan></text><path id="Rectangle-8-Copy-3" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M449 192h78v28h-78z"/><text id="Comment" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="463.8" y="210">Comment </tspan></text><text id="<!--comment-->" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="442.6" y="237"><!--comment--></tspan></text><path id="Rectangle-8-Copy-3" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M342 192h78v28h-78z"/><text id="Text" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="365.6" y="210">Text </tspan></text><text id=""Hello"" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="356.8" y="237">"Hello"</tspan></text></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" width="478" height="364" viewBox="0 0 478 364"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="dom-class-hierarchy.svg"><path id="Rectangle-9" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M181 6h118v28H181z"/><path id="Rectangle-8" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M181 74h118v28H181z"/><text id="EventTarget" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="200.9" y="24">EventTarget</tspan></text><text id="Node" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="225.6" y="91">Node </tspan></text><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M240.5 39.5l7 14h-6v17h-2v-17h-6l7-14z"/><path id="Rectangle-8-Copy" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M181 144h118v28H181z"/><text id="Element" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="214.8" y="161">Element </tspan></text><path id="Line-2-Copy" fill="#C06334" fill-rule="nonzero" d="M240.5 109.5l7 14h-6v17h-2v-17h-6l7-14z"/><path id="Rectangle-8-Copy-4" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M181 230h118v28H181z"/><text id="HTMLElement" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="200.4" y="247">HTMLElement </tspan></text><path id="Line-2-Copy-4" fill="#C06334" fill-rule="nonzero" d="M240.5 195.5l7 14h-6v17h-2v-17h-6l7-14z"/><path id="Rectangle-8-Copy-6" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M171 300h138v28H171z"/><text id="HTMLBodyElement" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="186" y="317">HTMLBodyElement </tspan></text><path id="Line-2-Copy-6" fill="#C06334" fill-rule="nonzero" d="M240.5 265.5l7 14h-6v17h-2v-17h-6l7-14z"/><path id="Rectangle-8-Copy-7" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M12 300h138v28H12z"/><text id="HTMLInputElement" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="24.4" y="317">HTMLInputElement </tspan></text><path id="Line-2-Copy-7" fill="#C06334" fill-rule="nonzero" d="M170 261l-6.753 14.12-3.685-4.736-29.448 22.905-.79.614-1.227-1.578.79-.614 29.448-22.906-3.684-4.735L170 261z"/><path id="Rectangle-8-Copy-8" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M332 300h138v28H332z"/><text id="HTMLAnchorElement" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="341.3" y="317">HTMLAnchorElement </tspan></text><path id="Line-2-Copy-8" fill="#C06334" fill-rule="nonzero" d="M307 259l14.554 5.76-4.47 4.002 20.661 23.07.667.746-1.49 1.334-.667-.745-20.66-23.071-4.47 4.003L307 259z"/><path id="Rectangle-8-Copy-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M45 126h118v28H45z"/><text id="Text" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="89.6" y="144">Text </tspan></text><path id="Line-2-Copy-2" fill="#C06334" fill-rule="nonzero" d="M171 96l-6.589 14.198-3.738-4.693-18.55 14.777-.782.623-1.246-1.564.782-.623 18.549-14.778-3.738-4.692L171 96z"/><path id="Rectangle-8-Copy-3" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M315 126h118v28H315z"/><text id="Comment" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="348.8" y="144">Comment </tspan></text><path id="Line-2-Copy-3" fill="#C06334" fill-rule="nonzero" d="M307 96l15.338 3.123-3.701 4.723 18.98 14.867.787.616-1.233 1.575-.788-.617-18.979-14.867-3.7 4.724L307 96z"/><path id="Line-2-Copy-9" fill="#C06334" fill-rule="nonzero" d="M307 174l15.338 3.123-3.701 4.723 18.98 14.867.787.616-1.233 1.575-.788-.617-18.979-14.867-3.7 4.724L307 174z"/><path id="Rectangle-8-Copy-5" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M315 205h118v28H315z"/><text id="SVGElement" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="338" y="223">SVGElement </tspan></text><text id="<div>Text</div>" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="48" y="171" fill="#AF6E24"><div></tspan> <tspan x="84" y="171" fill="#C06334">Text</tspan> <tspan x="112.8" y="171" fill="#AF6E24"></div></tspan></text><text id="<input-type="…">" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="24.4" y="341"><input type="…"></tspan></text><text id="<body>" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="220.4" y="341"><body></tspan></text><text id="<a-href="…">" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="358.8" y="341"><a href="…"></tspan></text><text id="<div>Text</div>" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="189" y="188" fill="#AF6E24"><</tspan> <tspan x="196.2" y="188" fill="#C06334">div</tspan> <tspan x="217.8" y="188" fill="#AF6E24">></tspan> <tspan x="225" y="188" fill="#DBAF88">Text</tspan> <tspan x="253.8" y="188" fill="#AF6E24"></</tspan> <tspan x="268.2" y="188" fill="#C06334">div</tspan> <tspan x="289.8" y="188" fill="#AF6E24">></tspan></text><text id="<!--comment-->" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="327.6" y="171"><!--comment--></tspan></text></g></g></svg> \ No newline at end of file diff --git a/2-ui/1-document/06-dom-attributes-and-properties/1-get-user-attribute/solution.md b/2-ui/1-document/06-dom-attributes-and-properties/1-get-user-attribute/solution.md index 0507832f3..35786970e 100644 --- a/2-ui/1-document/06-dom-attributes-and-properties/1-get-user-attribute/solution.md +++ b/2-ui/1-document/06-dom-attributes-and-properties/1-get-user-attribute/solution.md @@ -7,12 +7,12 @@ <div data-widget-name="menu">Choose the genre</div> <script> - // getting it + // অ্যাট্রিবিউট অনুসারে এলিমেন্ট সিলেক্ট let elem = document.querySelector('[data-widget-name]'); - // reading the value + // ভ্যালু menu alert(elem.dataset.widgetName); - // or + // অথবা alert(elem.getAttribute('data-widget-name')); </script> </body> diff --git a/2-ui/1-document/06-dom-attributes-and-properties/1-get-user-attribute/task.md b/2-ui/1-document/06-dom-attributes-and-properties/1-get-user-attribute/task.md index 4cdf231b0..f0a802235 100644 --- a/2-ui/1-document/06-dom-attributes-and-properties/1-get-user-attribute/task.md +++ b/2-ui/1-document/06-dom-attributes-and-properties/1-get-user-attribute/task.md @@ -4,7 +4,7 @@ importance: 5 # Get the attribute -Write the code to select the element with `data-widget-name` attribute from the document and to read its value. +`data-widget-name` অ্যাট্রিবিউট এর এলিমেন্টটি সিলেক্ট করে অ্যাট্রিবিউটের মান পড়ার কোড লিখুন। ```html run <!DOCTYPE html> diff --git a/2-ui/1-document/06-dom-attributes-and-properties/2-yellow-links/solution.md b/2-ui/1-document/06-dom-attributes-and-properties/2-yellow-links/solution.md index 726be4c8f..6bef1503a 100644 --- a/2-ui/1-document/06-dom-attributes-and-properties/2-yellow-links/solution.md +++ b/2-ui/1-document/06-dom-attributes-and-properties/2-yellow-links/solution.md @@ -1,9 +1,9 @@ -First, we need to find all external references. +প্রথমত, আমাদের সকল এক্সটার্নাল লিংক খুঁজে বের করতে হবে। -There are two ways. +এটি দুইভাবে করতে পারি। -The first is to find all links using `document.querySelectorAll('a')` and then filter out what we need: +প্রথমে আমরা সকল লিংক কে নিব `document.querySelectorAll('a')` এবং তারপর আমরা আমদের চাহিদামত ফিল্টার করব: ```js let links = document.querySelectorAll('a'); @@ -22,13 +22,13 @@ for (let link of links) { } ``` -Please note: we use `link.getAttribute('href')`. Not `link.href`, because we need the value from HTML. +দয়া করে নোট রাখুন: আমরা `link.getAttribute('href')` ব্যবহার করব। `link.href` ব্যবহার করব না, কেননা আমাদের HTML ভ্যালুটি লাগবে। -...Another, simpler way would be to add the checks to CSS selector: +...আরেকটি উপায় হল, CSS selector ব্যবহার করা: ```js -// look for all links that have :// in href -// but href doesn't start with http://internal.com +// সকল লিংকের href এ :// খুঁজা +// কিন্তু href, http://internal.com দ্বারা শুরু হবে না let selector = 'a[href*="://"]:not([href^="http://internal.com"])'; let links = document.querySelectorAll(selector); diff --git a/2-ui/1-document/06-dom-attributes-and-properties/2-yellow-links/task.md b/2-ui/1-document/06-dom-attributes-and-properties/2-yellow-links/task.md index b0a8ab7b1..0c98edde6 100644 --- a/2-ui/1-document/06-dom-attributes-and-properties/2-yellow-links/task.md +++ b/2-ui/1-document/06-dom-attributes-and-properties/2-yellow-links/task.md @@ -2,15 +2,15 @@ importance: 3 --- -# Make external links orange +# এক্সটার্নাল লিংক সমূহকে কমলা রঙয়ের করা -Make all external links orange by altering their `style` property. +সকল এক্সটার্নাল লিংক সমূহকে কমলা রঙ করুন তাদের `style` প্রপার্টি পরিবর্তনের মাধ্যমে। -A link is external if: -- Its `href` has `://` in it -- But doesn't start with `http://internal.com`. +একটি লিংক এক্সটার্নাল হবে, যদি: +- `href` এ `://` থাকে। +- তবে এভাবে শুরু হবে না `http://internal.com`। -Example: +যেমন: ```html run <a name="list">the list</a> @@ -24,12 +24,12 @@ Example: </ul> <script> - // setting style for a single link + // একটি লিংকের জন্য স্ট্যাইল সেট let link = document.querySelector('a'); link.style.color = 'orange'; </script> ``` -The result should be: +এটি দেখতে এমন হবে: [iframe border=1 height=180 src="solution"] diff --git a/2-ui/1-document/06-dom-attributes-and-properties/article.md b/2-ui/1-document/06-dom-attributes-and-properties/article.md index b02f626dc..bf074961e 100644 --- a/2-ui/1-document/06-dom-attributes-and-properties/article.md +++ b/2-ui/1-document/06-dom-attributes-and-properties/article.md @@ -1,18 +1,18 @@ -# Attributes and properties +# অ্যাট্রিবিউটস এবং প্রপার্টিস -When the browser loads the page, it "reads" (another word: "parses") the HTML and generates DOM objects from it. For element nodes, most standard HTML attributes automatically become properties of DOM objects. +ব্রাউজার যখন পেজ লোড করে, এটি HTML ডকুমেন্ট টিকে পড়ে (অর্থাৎ পার্স) করে এবং ডকুমেন্ট অবজেক্ট ট্রি বানায়। এলিমেন্ট নোডের জন্য বেশিরভাগ HTML অ্যাট্রিবিউট সমূহ DOM অবজেক্টের প্রপার্টি হিসেবে থাকে। -For instance, if the tag is `<body id="page">`, then the DOM object has `body.id="page"`. +যেমন, `<body id="page">` ট্যাগের জন্য, DOM অবজেক্ট এর `id` প্রপার্টি থাকবে `body.id="page"`। -But the attribute-property mapping is not one-to-one! In this chapter we'll pay attention to separate these two notions, to see how to work with them, when they are the same, and when they are different. +তবে অ্যাট্রিবিউট-প্রপার্টি সর্বদা ম্যাপিং হয় না। এই অধ্যায়ে আমরা এই বিষয়টি নিয়ে আলোচনা করব, কিভাবে তাদের নিয়ে কাজ করা যায়, কখন উভয়ই একই এবং কখন আলাদা। -## DOM properties +## DOM প্রপার্টিস -We've already seen built-in DOM properties. There are a lot. But technically no one limits us, and if there aren't enough, we can add our own. +ইতোমধ্যে আমরা বিল্ট-ইন DOM প্রপার্টি দেখেছি। তবে সেখানে আরো অনেক আছে, ট্যাকনিক্যালি এর কোন সীমা নেই, আমরা আমাদের নিজস্ব প্রপার্টি অ্যাড করতে পারি। -DOM nodes are regular JavaScript objects. We can alter them. +DOM নোড সমূহ রেগুলার জাভাস্ক্রিপ্ট অবজেক্ট। আমরা তাদের পরিবর্তন করতে পারি। -For instance, let's create a new property in `document.body`: +যেমন, চলুন `document.body` এ একটি নতুন প্রপার্টি সংযুক্ত করি: ```js run document.body.myData = { @@ -23,17 +23,17 @@ document.body.myData = { alert(document.body.myData.title); // Imperator ``` -We can add a method as well: +আমরা মেথড ও সংযুক্ত করতে পারি: ```js run document.body.sayTagName = function() { alert(this.tagName); }; -document.body.sayTagName(); // BODY (the value of "this" in the method is document.body) +document.body.sayTagName(); // BODY (এখানে "this" দ্বারা document.body কে নির্দেশিত করছে) ``` -We can also modify built-in prototypes like `Element.prototype` and add new methods to all elements: +আমরা চাইলে বিল্ট ইন প্রটোটাইপকে মডিফাই করতে পারি `Element.prototype` এবং সকল এলিমেন্ট এর জন্য নতুন মেথড সংযুক্ত করতে পারি: ```js run Element.prototype.sayHi = function() { @@ -44,59 +44,59 @@ document.documentElement.sayHi(); // Hello, I'm HTML document.body.sayHi(); // Hello, I'm BODY ``` -So, DOM properties and methods behave just like those of regular JavaScript objects: +সুতরাং, DOM প্রপার্টিস এবং মেথড সমূহ রেগুলার জাভাস্ক্রিপ্ট অবজেক্টের মত কাজ করবে: -- They can have any value. -- They are case-sensitive (write `elem.nodeType`, not `elem.NoDeTyPe`). +- এদের যেকোন ভ্যালু হতে পারে। +- এরা কেস সেনসিটিভ (`elem.nodeType` ও `elem.NoDeTyPe` একই না)। -## HTML attributes +## HTML অ্যাট্রিবিউটস -In HTML, tags may have attributes. When the browser parses the HTML to create DOM objects for tags, it recognizes *standard* attributes and creates DOM properties from them. +HTML এ ট্যাগসমূহের অ্যাট্রিবিউট থাকতে পারে। যখন ব্রাউজার HTML কে পার্স করবে এবং DOM ট্রি বানানোর সময় এটি স্টান্ডার্ড অ্যাট্রিবিউট সমূহকে চিহ্নিত করবে এবং তাদের DOM এর প্রপার্টিতে সেট করবে। -So when an element has `id` or another *standard* attribute, the corresponding property gets created. But that doesn't happen if the attribute is non-standard. +সুতরাং এলিমেন্ট যখন `id` বা অন্য যেকোন *স্টান্ডার্ড* অ্যাট্রিবিউট থাকবে, এটি প্রপার্টি হিসেবে সেট হবে। কিন্তু নন-স্টান্ডার্ড অ্যাট্রিবিউট সমূহ প্রপার্টি হিসেবে সেট হবে নাহ। -For instance: +উদাহরণস্বরূপ: ```html run <body id="test" something="non-standard"> <script> alert(document.body.id); // test *!* - // non-standard attribute does not yield a property + // নন-স্টান্ডার্ড অ্যাট্রিবিউট সুতরাং প্রপার্টি হিসেবে সেট হবে নাহ alert(document.body.something); // undefined */!* </script> </body> ``` -Please note that a standard attribute for one element can be unknown for another one. For instance, `"type"` is standard for `<input>` ([HTMLInputElement](https://html.spec.whatwg.org/#htmlinputelement)), but not for `<body>` ([HTMLBodyElement](https://html.spec.whatwg.org/#htmlbodyelement)). Standard attributes are described in the specification for the corresponding element class. +দয়া করে মনে রাখুন, এক এলিমেন্টের স্টান্ডার্ড অ্যাট্রিবিউট অন্য এলিমেন্টের জন্য স্টান্ডার্ড নাও হতে পারে। যেমন `"type"` হল `<input>` এর জন্য ([HTMLInputElement](https://html.spec.whatwg.org/#htmlinputelement)), `<body>` এর জন্য এটি স্টান্ডার্ড না ([HTMLBodyElement](https://html.spec.whatwg.org/#htmlbodyelement))। স্টান্ডার্ড অ্যাট্রিবিউট সমূহ স্পেসিফিকেশনে বিস্তারিত আছে। -Here we can see it: +এখানে দেখুন: ```html run <body id="body" type="..."> <input id="input" type="text"> <script> alert(input.type); // text *!* - alert(body.type); // undefined: DOM property not created, because it's non-standard + alert(body.type); // undefined: DOM প্রপার্টিতে নাই, কেননা এটি নন-স্ট্যান্ডার্ড */!* </script> </body> ``` -So, if an attribute is non-standard, there won't be a DOM-property for it. Is there a way to access such attributes? +তাহলে, আমরা কি নন-স্ট্যান্ডার্ড অ্যাট্রিবিউট সমূহ অ্যাক্সেস করতে পারব না? যদি পারি তাহলে তা কিভাবে? -Sure. All attributes are accessible by using the following methods: +সুভাগ্যক্রমে আমাদের কিছু মেথড আছে যার সাহায্যে নন-স্ট্যান্ডার্ড অ্যাট্রিবিউট সমূহ অ্যাক্সেস করতে পারি: -- `elem.hasAttribute(name)` -- checks for existence. -- `elem.getAttribute(name)` -- gets the value. -- `elem.setAttribute(name, value)` -- sets the value. -- `elem.removeAttribute(name)` -- removes the attribute. +- `elem.hasAttribute(name)` -- অ্যাট্রিবিউটটি আছে কিনা যাচাই করে। +- `elem.getAttribute(name)` -- অ্যাট্রিবিউটটির ভ্যালু পাই। +- `elem.setAttribute(name, value)` -- অ্যাট্রিবিউটটির ভ্যালু সেট করতে পারি। +- `elem.removeAttribute(name)` -- এলিমেন্ট হতে অ্যাট্রিবিউটটি বাদ দেয়া। -These methods operate exactly with what's written in HTML. +মেথড সমূহ স্ট্যান্ডার্ড, নন-স্ট্যান্ডার্ড উভয় অ্যাট্রিবিউটের সাথে কাজ করে। -Also one can read all attributes using `elem.attributes`: a collection of objects that belong to a built-in [Attr](https://dom.spec.whatwg.org/#attr) class, with `name` and `value` properties. +এছাড়াও আমরা সকল ধরণের স্ট্যান্ডার্ড অ্যাট্রিবিউট সমূহের কালেকশন পেতে পারি `elem.attributes`: [Attr](https://dom.spec.whatwg.org/#attr) ক্লাস `name` এবং `value` প্রপার্টি সহ। -Here's a demo of reading a non-standard property: +নন-স্ট্যান্ডার্ড অ্যাট্রিবিউট পড়ার একটি উদাহরণ: ```html run <body something="non-standard"> @@ -108,23 +108,23 @@ Here's a demo of reading a non-standard property: </body> ``` -HTML attributes have the following features: +HTML অ্যাট্রিবিউটসের নিম্নলিখিত বৈশিষ্ট্য আছে: -- Their name is case-insensitive (`id` is same as `ID`). -- Their values are always strings. +- নাম হল কেস-ইন্সেসিটিভ (`id` এবং `ID` একই)। +- ভ্যালু সর্বদা স্ট্রিং। -Here's an extended demo of working with attributes: +চলুন অ্যাট্রিবিউট নিয়ে আরো কিছু উদাহরণ দেখি: ```html run <body> <div id="elem" about="Elephant"></div> <script> - alert( elem.getAttribute('About') ); // (1) 'Elephant', reading + alert( elem.getAttribute('About') ); // (1) 'Elephant', অ্যাট্রিবিউট পড়া - elem.setAttribute('Test', 123); // (2), writing + elem.setAttribute('Test', 123); // (2), অ্যাট্রিবিউট সেট - alert( elem.outerHTML ); // (3), see if the attribute is in HTML (yes) + alert( elem.outerHTML ); // (3),এলিমেন্টে অ্যাট্রিবিউটটি সেট (yes) for (let attr of elem.attributes) { // (4) list all alert( `${attr.name} = ${attr.value}` ); @@ -133,18 +133,18 @@ Here's an extended demo of working with attributes: </body> ``` -Please note: +দয়া করে মনে রাখবেন: -1. `getAttribute('About')` -- the first letter is uppercase here, and in HTML it's all lowercase. But that doesn't matter: attribute names are case-insensitive. -2. We can assign anything to an attribute, but it becomes a string. So here we have `"123"` as the value. -3. All attributes including ones that we set are visible in `outerHTML`. -4. The `attributes` collection is iterable and has all the attributes of the element (standard and non-standard) as objects with `name` and `value` properties. +1. `getAttribute('About')` -- এখানে প্রথম অক্ষরটি বড় হাতের, এবং HTML এ সব কিছু ছোট হাতের। এখানে এটি কোন সমস্যা করবে না: কেননা এরা কেস-ইন্সেসিটিভ। +2. আমরা যে কোন কিছু সেট করতে পারি, তবে এটি সর্বদা স্ট্রিং হিসেবে সেট হবে। সুতরাং আমরা `"123"` কে স্ট্রিং ভ্যালু হিসেবে পাব। +3. নতুন কোন অ্যাট্রিবিউট সেট করলে তা আমরা `outerHTML` এ দেখব। +4. `attributes` কালেকশনটি ইটারেবল এবং সকল ধরণের অ্যাট্রিবিউট পাব (স্ট্যান্ডার্ড এবং নন-স্ট্যান্ডার্ড) অবজেক্ট হিসেবে যার প্রপার্টি থাকবে `name` এবং `value`। -## Property-attribute synchronization +## Property-attribute সিঙ্ক্রোনাইজ -When a standard attribute changes, the corresponding property is auto-updated, and (with some exceptions) vice versa. +যখন কোন একটি স্ট্যান্ডার্ড অ্যাট্রিবিউট পরিবর্তন হবে, তার সাথে সাথে প্রপার্টিও অটো-আপডেট হবে তবে কিছু ব্যতীক্রমও আছে। -In the example below `id` is modified as an attribute, and we can see the property changed too. And then the same backwards: +নিচের উদাহরণে আমরা অ্যাট্রিবিউট `id` কে পরিবর্তন করব, এবং আমরা দেখব প্রপার্টিও পরিবর্তন হয়, আবার এর বিপরীতেও হয় অর্থাৎ প্রপার্টি পরিবর্তন হলে অ্যাট্রিবিউট ও পরিবর্তন হবে: ```html run <input> @@ -154,15 +154,19 @@ In the example below `id` is modified as an attribute, and we can see the proper // attribute => property input.setAttribute('id', 'id'); - alert(input.id); // id (updated) + alert(input.id); // id (আপডেট) // property => attribute input.id = 'newId'; - alert(input.getAttribute('id')); // newId (updated) + alert(input.getAttribute('id')); // newId (আপডেট) </script> ``` +<<<<<<< HEAD +তবে ব্যতীক্রমও আছে, যেমন `input.value` সিঙ্ক্রোনাইজ হয় শুধুমাত্র অ্যাট্রিবিউট হতে -> প্রপার্টি তে, এর বিপরীত হবে নাহ: +======= But there are exclusions, for instance `input.value` synchronizes only from attribute -> property, but not back: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```html run <input> @@ -177,50 +181,50 @@ But there are exclusions, for instance `input.value` synchronizes only from attr *!* // NOT property => attribute input.value = 'newValue'; - alert(input.getAttribute('value')); // text (not updated!) + alert(input.getAttribute('value')); // text (আপডেট হবে না!) */!* </script> ``` -In the example above: -- Changing the attribute `value` updates the property. -- But the property change does not affect the attribute. +উপরের উদাহরণটিতে: +- অ্যাট্রিবিউট `value` পরিবর্তন হলে প্রপার্টি পরিবর্তন হয়। -That "feature" may actually come in handy, because the user actions may lead to `value` changes, and then after them, if we want to recover the "original" value from HTML, it's in the attribute. +- কিন্তু প্রপার্টিতে পরিবর্তন হলে তা অ্যাট্রিবিউটে অ্যাফেক্ট হয় না। -## DOM properties are typed +এই ফিচারটি কাজের হতে পারে, যেমন ইউজার এর কোন অ্যাকশনের জন্য আমরা প্রপার্টির `value` পরিবর্তন করে কোন একটি কাজ সম্পন্ন করতে চাই, এবং পরে আমরা আসল ভ্যালু টা রিকোভার করতে চাই, তাহলে আমরা তা করতে পারব কেননা এটি অ্যাট্রিবিউটে অপরিবর্তীত থাকবে। +## DOM প্রপার্টির টাইপ -DOM properties are not always strings. For instance, the `input.checked` property (for checkboxes) is a boolean: +DOM প্রপার্টি সর্বদা স্ট্রিং হবে না। যেমন `input.checked` প্রপার্টিটি (checkboxes এর জন্য) বুলিয়ান টাইপের: ```html run <input id="input" type="checkbox" checked> checkbox <script> - alert(input.getAttribute('checked')); // the attribute value is: empty string - alert(input.checked); // the property value is: true + alert(input.getAttribute('checked')); // অ্যাট্রিবিউটের ভ্যালু হবে: empty স্ট্রিং + alert(input.checked); // প্রপার্টি ভ্যালু হবে: true </script> ``` -There are other examples. The `style` attribute is a string, but the `style` property is an object: +আরেকটিও ব্যতীক্রম উদাহরণ। `style` অ্যাট্রিবিউট হল একটি স্ট্রিং, কিন্তু `style` প্রপার্টি একটি অবজেক্ট: ```html run <div id="div" style="color:red;font-size:120%">Hello</div> <script> - // string + // স্ট্রিং alert(div.getAttribute('style')); // color:red;font-size:120% - // object + // অবজেক্ট alert(div.style); // [object CSSStyleDeclaration] alert(div.style.color); // red </script> ``` -Most properties are strings though. +বেশিরভাগ প্রপার্টি স্ট্রিং। -Quite rarely, even if a DOM property type is a string, it may differ from the attribute. For instance, the `href` DOM property is always a *full* URL, even if the attribute contains a relative URL or just a `#hash`. +তবে আরো কিছু ব্যতীক্রম আছে, যদিও DOM প্রপার্টি স্ট্রিং হয়, তবে এটি অ্যাট্রিবিউট হতে ভিন্ন হতে পারে। যেমন, `href` DOM প্রপার্টি সর্বদা একটি *full URL* রিটার্ন করে, যদিও অ্যাট্রিবিউট এ শুধুমাত্র রিলেটিভ বা `#hash` URL থাকে। -Here's an example: +এখানে একটি উদাহরণ দেখুন: ```html height=30 run <a id="a" href="#hello">link</a> @@ -233,25 +237,25 @@ Here's an example: </script> ``` -If we need the value of `href` or any other attribute exactly as written in the HTML, we can use `getAttribute`. +যদি আমাদের `href` এ লিখিত অ্যাট্রিবিউটটি অথবা অন্য কোন অ্যাট্রিবিউট HTML এ যেভাবে আছে সেভাবে পেতে চায় আমরা `getAttribute` টি ব্যবহার করতে পারি। -## Non-standard attributes, dataset +## নন-স্ট্যান্ডার্ড অ্যাট্রিবিউট, dataset -When writing HTML, we use a lot of standard attributes. But what about non-standard, custom ones? First, let's see whether they are useful or not? What for? +আমরা HTML লিখার সময় অনেক স্ট্যান্ডার্ড অ্যাট্রিবিউট ব্যবহার করি। কিন্তু কেন আমাদের নন-স্ট্যান্ডার্ড কাস্টম অ্যাট্রিবিউটের দরকার পড়ে? প্রথমে আমরা দেখি এসব ব্যবহার কি আমাদের জন্য উপকারী কিনা? এবং কেন? -Sometimes non-standard attributes are used to pass custom data from HTML to JavaScript, or to "mark" HTML-elements for JavaScript. +অনেক সময় HTML হতে জাভাস্ক্রিপ্টে ডাটা পাঠাতে আমাদের কাস্টম অ্যাট্রিবিউট এর সাহায্য নেয়া লাগে, অথবা HTML এলিমেন্ট কে জাভাস্ক্রিপ্টে "mark" করতে। -Like this: +যেমন: ```html run -<!-- mark the div to show "name" here --> +<!-- "name" দ্বারা চিহ্নিত --> <div *!*show-info="name"*/!*></div> <!-- and age here --> <div *!*show-info="age"*/!*></div> <script> - // the code finds an element with the mark and shows what's requested + // কোডটি অ্যাট্রিবিউট অনুযায়ী এলিমেন্ট কে চিহ্নিত করবে এবং মান পরিবর্তন করবে let user = { name: "Pete", age: 25 @@ -260,14 +264,14 @@ Like this: for(let div of document.querySelectorAll('[show-info]')) { // insert the corresponding info into the field let field = div.getAttribute('show-info'); - div.innerHTML = user[field]; // first Pete into "name", then 25 into "age" + div.innerHTML = user[field]; // প্রথমে "name" এর জন্য Pete , তারপর "age" এর জন্য 25 } </script> ``` -Also they can be used to style an element. +এছাড়াও এলিমেন্টে স্ট্যাইল এর জন্য এটি কার্যকরী। -For instance, here for the order state the attribute `order-state` is used: +যেমন, এখানে আমরা `order-state` এর সাহায্যে বিভিন্ন কালার সেট করতে পারি: ```html run <style> @@ -298,24 +302,28 @@ For instance, here for the order state the attribute `order-state` is used: </div> ``` +<<<<<<< HEAD +কেন ক্লাসের পরিবর্তে অ্যাট্রিবিউট ব্যবহার বেশি উপযোগী `.order-state-new`, `.order-state-pending`, `order-state-canceled`? +======= Why would using an attribute be preferable to having classes like `.order-state-new`, `.order-state-pending`, `.order-state-canceled`? +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Because an attribute is more convenient to manage. The state can be changed as easy as: +কারণ অ্যাট্রিবিউট ম্যানাজ করা সুবিধাজনক। এর সাহায্যে সহজেই স্টেট ম্যানাজ করতে পারি: ```js -// a bit simpler than removing old/adding a new class +// নতুন ক্লাস অ্যাড এবং পুরনো ক্লাস রিমুভের পরিবর্তে এটি সিম্পল div.setAttribute('order-state', 'canceled'); ``` -But there may be a possible problem with custom attributes. What if we use a non-standard attribute for our purposes and later the standard introduces it and makes it do something? The HTML language is alive, it grows, and more attributes appear to suit the needs of developers. There may be unexpected effects in such case. +কিন্তু কাস্টম অ্যাট্রিবিউটে একটি সম্ভাব্য সমস্যা রয়েছে। যদি আমরা একটি নন-স্ট্যান্ডার্ড কাস্টম অ্যাট্রিবিউট লিখি কিন্তু এটি পরে স্ট্যান্ডার্ড হিসেবে বিবেচিত হয় তখন কি হবে? কেননা HTML একটি ওপেন স্ট্যান্ডার্ড ল্যাংগুয়েজ, ডেভলাপারদের চাহিদা অনুযায়ী এটিতে সর্বদা নতুন নতুন ফিচার সংযুক্ত হচ্ছে। সুতরাং এর হলে কিছু অপ্রত্যাশিত ভুল দেখা দিতে পারে। -To avoid conflicts, there exist [data-*](https://html.spec.whatwg.org/#embedding-custom-non-visible-data-with-the-data-*-attributes) attributes. +কনফ্লিক্ট এড়াতে, বর্তমান অ্যাট্রিবিউট গুলো দেখুন [data-*](https://html.spec.whatwg.org/#embedding-custom-non-visible-data-with-the-data-*-attributes)ক -**All attributes starting with "data-" are reserved for programmers' use. They are available in the `dataset` property.** +**"data-" প্রিফিক্স দ্বারা সকল অ্যাট্রিবিউট ডেভলাপারদের জন্য সংরক্ষিত। আমরা `dataset` প্রপার্টিতে এদের পাব।** -For instance, if an `elem` has an attribute named `"data-about"`, it's available as `elem.dataset.about`. +যেমন, যদি কোন `elem` এর অ্যাট্রিবিউট এর নাম হয় `"data-about"`, এটি `elem.dataset.about` এর মধ্যে পাব। -Like this: +এভাবে: ```html run <body data-about="Elephants"> @@ -324,9 +332,9 @@ Like this: </script> ``` -Multiword attributes like `data-order-state` become camel-cased: `dataset.orderState`. +একাধিক শব্দ সম্বলিত অ্যাট্রিবিউট সমূহ যেমন: `data-order-state` হবে কেমেল-কেসড অনুযায়ী: `dataset.orderState`। -Here's a rewritten "order state" example: +পূর্বের "order state" উদাহরণটি আবার লিখি: ```html run <style> @@ -356,31 +364,31 @@ Here's a rewritten "order state" example: </script> ``` -Using `data-*` attributes is a valid, safe way to pass custom data. +`data-*` অ্যাট্রিবিউট সমূহ ভ্যালিড, এবং এটি ডাটা পাসিংয়ের জন্য একটি নিরাপদ উপায়। -Please note that we can not only read, but also modify data-attributes. Then CSS updates the view accordingly: in the example above the last line `(*)` changes the color to blue. +দয়া করে মনে রাখুন এটি শুধুমাত্র পড়তে ব্যবহৃত হয় না, সাথে সাথে আমরা মোডিফাইও করতে পারব। CSS টি এই অনুযায়ী কাজ করে `(*)` এই লাইনটির ফলে এলিমেন্ট এর কালার নীল হচ্ছে। -## Summary +## সারাংশ -- Attributes -- is what's written in HTML. -- Properties -- is what's in DOM objects. +- অ্যাট্রিবিউটস -- HTML এ এলিমেন্টে যা লিখা হয়। +- প্রপার্টিস -- DOM অবজেক্টে যা থাকে। -A small comparison: +পার্থক্য: | | Properties | Attributes | |------------|------------|------------| -|Type|Any value, standard properties have types described in the spec|A string| -|Name|Name is case-sensitive|Name is not case-sensitive| +|Type|যে কোন ভ্যালু, স্ট্যান্ডার্ড প্রপার্টির টাইপ সমূহ স্পেসিফিকেশন অনুযায়ী হয়|স্ট্রিং| +|Name|Name কেস-সেন্সিটিভ|Name is কেস-ইনসেন্সিটিভ| -Methods to work with attributes are: +অ্যাট্রিবিউট নিয়ে কাজ করার মেথড সমূহ হল: -- `elem.hasAttribute(name)` -- to check for existence. -- `elem.getAttribute(name)` -- to get the value. -- `elem.setAttribute(name, value)` -- to set the value. -- `elem.removeAttribute(name)` -- to remove the attribute. -- `elem.attributes` is a collection of all attributes. +- `elem.hasAttribute(name)` -- অ্যাট্রিবিউটটি আছে কিনা যাচাই করে। +- `elem.getAttribute(name)` -- অ্যাট্রিবিউটটির ভ্যালু পাই। +- `elem.setAttribute(name, value)` -- অ্যাট্রিবিউটটির ভ্যালু সেট করতে পারি। +- `elem.removeAttribute(name)` -- এলিমেন্ট হতে অ্যাট্রিবিউটটি বাদ দেয়া। +- `elem.attributes` -- এলিমেন্টের সকল অ্যাট্রিবিউটের কালেকশন। -For most situations using DOM properties is preferable. We should refer to attributes only when DOM properties do not suit us, when we need exactly attributes, for instance: +বেশির ভাগ ক্ষেত্রে DOM প্রপার্টির মাধ্যমে কাজ করা ভাল। কিন্তু যখন DOM প্রপার্টির মাধ্যমে আমাদের কাজ সম্পন্ন হবে না তখন আমরা অ্যাট্রিবিউট ব্যবহার করব, যেমন: -- We need a non-standard attribute. But if it starts with `data-`, then we should use `dataset`. -- We want to read the value "as written" in HTML. The value of the DOM property may be different, for instance the `href` property is always a full URL, and we may want to get the "original" value. +- আমাদের যখন একটি নন-স্ট্যান্ডার্ড অ্যাট্রিবিউট দরকার পড়বে। আমরা `data-` প্রিফিক্স দিয়ে অ্যাট্রিবিউট লিখতে পারি, তাহলে আমরা `dataset` এর মাধ্যমে কাজ করতে পারব। +- আমরা ভ্যালু HTML এ যেভাবে লিখেছি সেভাবে পেতে চায়। কিন্তু DOM প্রপার্টির ভ্যালু ভিন্ন হতে পারে, যেমন `href` সর্বদা *full URL* রিটার্ন করে, তবে আমরা "original" ভ্যালু টা পেতে চাই। diff --git a/2-ui/1-document/07-modifying-document/1-createtextnode-vs-innerhtml/solution.md b/2-ui/1-document/07-modifying-document/1-createtextnode-vs-innerhtml/solution.md index a38f01645..fba9cd84a 100644 --- a/2-ui/1-document/07-modifying-document/1-createtextnode-vs-innerhtml/solution.md +++ b/2-ui/1-document/07-modifying-document/1-createtextnode-vs-innerhtml/solution.md @@ -1,8 +1,8 @@ -Answer: **1 and 3**. +উত্তরটি হল: **1 and 3**। -Both commands result in adding the `text` "as text" into the `elem`. +উভয়ই কমান্ড ফলাফল হিসেবে `elem` এ `text` সংযোগ করে। -Here's an example: +এখানে একটি উদাহরণ দেখুন: ```html run height=80 <div id="elem1"></div> diff --git a/2-ui/1-document/07-modifying-document/1-createtextnode-vs-innerhtml/task.md b/2-ui/1-document/07-modifying-document/1-createtextnode-vs-innerhtml/task.md index 40c75dff3..992ca651e 100644 --- a/2-ui/1-document/07-modifying-document/1-createtextnode-vs-innerhtml/task.md +++ b/2-ui/1-document/07-modifying-document/1-createtextnode-vs-innerhtml/task.md @@ -4,9 +4,13 @@ importance: 5 # createTextNode vs innerHTML vs textContent -We have an empty DOM element `elem` and a string `text`. +আমাদের একটি খালি DOM এলিমেন্ট `elem` এবং একটি `text` স্ট্রিং আছে। +<<<<<<< HEAD +৩টি কমান্ডের মধ্যে কোন দুইটি একই কাজ করে? +======= Which of these 3 commands will do exactly the same? +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 1. `elem.append(document.createTextNode(text))` 2. `elem.innerHTML = text` diff --git a/2-ui/1-document/07-modifying-document/10-clock-setinterval/solution.md b/2-ui/1-document/07-modifying-document/10-clock-setinterval/solution.md index 1414e90c1..27683db04 100644 --- a/2-ui/1-document/07-modifying-document/10-clock-setinterval/solution.md +++ b/2-ui/1-document/07-modifying-document/10-clock-setinterval/solution.md @@ -1,6 +1,6 @@ -First, let's make HTML/CSS. +শুরুতে HTML/CSS তৈরি করি। -Each component of the time would look great in its own `<span>`: +প্রতিটি কম্পোনেন্টকে `<span>` দ্বারা আলাদা করি: ```html <div id="clock"> @@ -8,9 +8,9 @@ Each component of the time would look great in its own `<span>`: </div> ``` -Also we'll need CSS to color them. +আমাদের CSS ও পরিবর্তন করতে হবে। -The `update` function will refresh the clock, to be called by `setInterval` every second: +`update` ফাংশনটি `setInterval` দ্বারা প্রতিসেকেন্ডে কল হয়: ```js function update() { @@ -32,9 +32,9 @@ function update() { } ``` -In the line `(*)` we every time check the current date. The calls to `setInterval` are not reliable: they may happen with delays. +`(*)` এই লাইনে আমরা প্রতিবারের তারিখটি পরীক্ষা করি। এ ক্ষেত্রে `setInterval` নির্ভরযোগ্য নাও হতে পারে: এটি কিছু সময় নিতে পারে। -The clock-managing functions: +আমাদের ফাংশনগুলো হবে: ```js let timerId; diff --git a/2-ui/1-document/07-modifying-document/10-clock-setinterval/task.md b/2-ui/1-document/07-modifying-document/10-clock-setinterval/task.md index a1b53e337..61c2fa6f5 100644 --- a/2-ui/1-document/07-modifying-document/10-clock-setinterval/task.md +++ b/2-ui/1-document/07-modifying-document/10-clock-setinterval/task.md @@ -2,10 +2,10 @@ importance: 4 --- -# Colored clock with setInterval +# একটি ঘড়ি -Create a colored clock like here: +এইরকম একটি ঘড়ি বানান: [iframe src="solution" height=60] -Use HTML/CSS for the styling, JavaScript only updates time in elements. +HTML/CSS এর সাহায্যে স্ট্যাইল করুন, জাভস্ক্রিপ্টের সাহায্যে শুধু সময়টি পরিবর্তন করুন। diff --git a/2-ui/1-document/07-modifying-document/11-append-to-list/solution.md b/2-ui/1-document/07-modifying-document/11-append-to-list/solution.md index 4e77fb5cb..fbda31920 100644 --- a/2-ui/1-document/07-modifying-document/11-append-to-list/solution.md +++ b/2-ui/1-document/07-modifying-document/11-append-to-list/solution.md @@ -1,7 +1,7 @@ -When we need to insert a piece of HTML somewhere, `insertAdjacentHTML` is the best fit. - -The solution: +আমাদের HTML এর কোন একটি অংশে লিখার জন্য, `insertAdjacentHTML` সবচেয়ে বেশি উপযোগী। + +সমাধানটি হল: ```js one.insertAdjacentHTML('afterend', '<li>2</li><li>3</li>'); diff --git a/2-ui/1-document/07-modifying-document/11-append-to-list/task.md b/2-ui/1-document/07-modifying-document/11-append-to-list/task.md index 543cd3e46..e631eb7ae 100644 --- a/2-ui/1-document/07-modifying-document/11-append-to-list/task.md +++ b/2-ui/1-document/07-modifying-document/11-append-to-list/task.md @@ -2,9 +2,9 @@ importance: 5 --- -# Insert the HTML in the list +# লিস্টকে HTML এ লিখা -Write the code to insert `<li>2</li><li>3</li>` between two `<li>` here: +এই লিস্টকে `<li>2</li><li>3</li>` নিচের দুইটি `<li>` এর মাঝে লিখুন: ```html <ul id="ul"> diff --git a/2-ui/1-document/07-modifying-document/12-sort-table/solution.md b/2-ui/1-document/07-modifying-document/12-sort-table/solution.md index 49243e8e3..70a185433 100644 --- a/2-ui/1-document/07-modifying-document/12-sort-table/solution.md +++ b/2-ui/1-document/07-modifying-document/12-sort-table/solution.md @@ -1,4 +1,4 @@ -The solution is short, yet may look a bit tricky, so here I provide it with extensive comments: +এটি খুব সহজেই করা যায়, তবে এটি কিছুটা ট্রিকি, এখানে বিস্তারিত আলোচনা করা হল: ```js let sortedRows = Array.from(table.tBodies[0].rows) // 1 @@ -7,12 +7,12 @@ let sortedRows = Array.from(table.tBodies[0].rows) // 1 table.tBodies[0].append(...sortedRows); // (3) ``` -The step-by-step algorthm: +এখানে ধাপে ধাপে অ্যালগরিদমটি আলোচনা করা হল: -1. Get all `<tr>`, from `<tbody>`. -2. Then sort them comparing by the content of the first `<td>` (the name field). -3. Now insert nodes in the right order by `.append(...sortedRows)`. +1. `<tbody>` হতে সকল `<tr>` কে নিই। +2. তারপর আমরা `<td>` কে কম্পেয়ার করব (name ফিল্ডটি অনুযায়ী)। +3. এখন আমরা সঠিক নোড অনুযায়ী তাদের সংযুক্ত করব `.append(...sortedRows)`। -We don't have to remove row elements, just "re-insert", they leave the old place automatically. +আমাদের রো এলিমেন্টকে রিমুভ করতে হবে না, শুধুমাত্র "re-insert", স্বয়ংক্রিয়ভাবে পুরনো জায়গা গুলো ঠিক হয়ে যায়। -P.S. In our case, there's an explicit `<tbody>` in the table, but even if HTML table doesn't have `<tbody>`, the DOM structure always has it. +বি.দ্র. এক্ষেত্রে, *table* এ `<tbody>` বিদ্যমান, কিন্তু অনেক সময় `<tbody>` নাও থাকতে পারে, কিন্তু DOM এ সর্বদা এটি থাকে। diff --git a/2-ui/1-document/07-modifying-document/12-sort-table/task.md b/2-ui/1-document/07-modifying-document/12-sort-table/task.md index 7cdba35bc..aac0790d5 100644 --- a/2-ui/1-document/07-modifying-document/12-sort-table/task.md +++ b/2-ui/1-document/07-modifying-document/12-sort-table/task.md @@ -2,9 +2,9 @@ importance: 5 --- -# Sort the table +# table টিকে সর্ট করুন -There's a table: +একটি table আছে: ```html run <table> @@ -30,6 +30,6 @@ There's a table: </table> ``` -There may be more rows in it. +এখানে আরো বেশি রো থাকতে পারে। -Write the code to sort it by the `"name"` column. +`"name"` অনুযায়ী কলামটিকে সর্ট করুন। diff --git a/2-ui/1-document/07-modifying-document/4-clear-elem/solution.md b/2-ui/1-document/07-modifying-document/4-clear-elem/solution.md index 62c3386d8..a669272e6 100644 --- a/2-ui/1-document/07-modifying-document/4-clear-elem/solution.md +++ b/2-ui/1-document/07-modifying-document/4-clear-elem/solution.md @@ -1,5 +1,5 @@ -First, let's see how *not* to do it: +প্রথমত, লক্ষ্য করুন, আমাদের এটি এভাবে করা উচিত হবে না: ```js function clear(elem) { @@ -9,11 +9,11 @@ function clear(elem) { } ``` -That won't work, because the call to `remove()` shifts the collection `elem.childNodes`, so elements start from the index `0` every time. But `i` increases, and some elements will be skipped. +এটি কাজ করবে নাহ, কেননা `remove()` কলে আমাদের `elem.childNodes` কালেকশনে কিছু পরিবর্তন হয়, সুতরাং এলিমেন্টটি সবসময় `0` থেকে শুরু হয়। কিন্তু `i` বৃদ্ধি পায়, এবং কিছু এলিমেন্ট বাদ পড়ে যায়। -The `for..of` loop also does the same. +`for..of` দ্বারাও কাজ করবে না। -The right variant could be: +সঠিক উপায়টি হল: ```js function clear(elem) { @@ -23,7 +23,7 @@ function clear(elem) { } ``` -And also there's a simpler way to do the same: +এবং আরো সহজে আমরা এভাবে করতে পারি: ```js function clear(elem) { diff --git a/2-ui/1-document/07-modifying-document/4-clear-elem/task.md b/2-ui/1-document/07-modifying-document/4-clear-elem/task.md index 938d53470..57584fff1 100644 --- a/2-ui/1-document/07-modifying-document/4-clear-elem/task.md +++ b/2-ui/1-document/07-modifying-document/4-clear-elem/task.md @@ -4,7 +4,7 @@ importance: 5 # Clear the element -Create a function `clear(elem)` that removes everything from the element. +একটি ফাংশন লিখুন `clear(elem)` যা এলিমেন্ট হতে সকল কিছু রিমুভ করে। ```html run height=60 <ol id="elem"> diff --git a/2-ui/1-document/07-modifying-document/5-why-aaa/solution.md b/2-ui/1-document/07-modifying-document/5-why-aaa/solution.md index 3d1f6698f..d1cd5d0ca 100644 --- a/2-ui/1-document/07-modifying-document/5-why-aaa/solution.md +++ b/2-ui/1-document/07-modifying-document/5-why-aaa/solution.md @@ -1,9 +1,17 @@ -The HTML in the task is incorrect. That's the reason of the odd thing. +আমাদের টাস্কটিই ভুল। যে কারণে আমরা এমন অনাকাঙ্ক্ষিত ঘটনার সম্মুখীন হচ্ছি। +<<<<<<< HEAD +ব্রাউজার আমাদের ভুল HTML কে স্বয়ংক্রিয়ভাবে ঠিক করে। `<table>` এর মধ্যে কোন টেক্সট থাকতে পারবে না: স্পেসিফিকেশন অনুযায়ী *table* এ শুধুমাত্র table স্পেসিফিক ট্যাগ থাকতে পারবে। সুতরাং ব্রাউজার `"aaa"` কে `<table>` এর *পূর্বে* যুক্ত করে। +======= The browser has to fix it automatically. But there may be no text inside the `<table>`: according to the spec only table-specific tags are allowed. So the browser shows `"aaa"` *before* the `<table>`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Now it's obvious that when we remove the table, it remains. +এবং এর ফলে আমরা *table* কে রিমুভ করলেও টেক্সট রয়ে যায়। +<<<<<<< HEAD +আমরা ব্রাউজার টুলের সাহায্যে দেখলে আরো পরিষ্কারভাবে বুঝতে পারব। `"aaa"` কে `<table>` এর পূর্বে দেখাবে। +======= The question can be easily answered by exploring the DOM using the browser tools. You'll see `"aaa"` before the `<table>`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -The HTML standard specifies in detail how to process bad HTML, and such behavior of the browser is correct. +HTML স্ট্যান্ডার্ডে আমাদের ভুল HTML সমূহকে কিভাবে প্রসেস করবে তা আলোচনা করা হয়েছে, এবং এক্ষেত্রে ব্রাউজার এটিকে স্বয়ংক্রিয়ভাবে ঠিক করে। diff --git a/2-ui/1-document/07-modifying-document/5-why-aaa/task.md b/2-ui/1-document/07-modifying-document/5-why-aaa/task.md index 861f70503..ae21ec40a 100644 --- a/2-ui/1-document/07-modifying-document/5-why-aaa/task.md +++ b/2-ui/1-document/07-modifying-document/5-why-aaa/task.md @@ -2,13 +2,13 @@ importance: 1 --- -# Why does "aaa" remain? +# কেন "aaa" অবশিষ্ট থাকে? -In the example below, the call `table.remove()` removes the table from the document. +নিচের উদাহরণে, `table.remove()` এর মাধ্যমে ডকুমেন্ট হতে টেবিল টি রিমুভ করা হয়। -But if you run it, you can see that the text `"aaa"` is still visible. +কিন্তু যদি আমরা এটি রান করি, তাহলে আমরা `"aaa"` কে ডকুমেন্টে দেখব। -Why does that happen? +কেন এটি রয়ে যায়? ```html height=100 run <table id="table"> @@ -22,6 +22,10 @@ Why does that happen? alert(table); // the table, as it should be table.remove(); +<<<<<<< HEAD + // কেন ডকুমেন্টে "aaa" অবশিষ্ট রয়ে গেল? +======= // why there's still "aaa" in the document? +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 </script> ``` diff --git a/2-ui/1-document/07-modifying-document/6-create-list/solution.md b/2-ui/1-document/07-modifying-document/6-create-list/solution.md index 1669be18f..6751a4d43 100644 --- a/2-ui/1-document/07-modifying-document/6-create-list/solution.md +++ b/2-ui/1-document/07-modifying-document/6-create-list/solution.md @@ -1 +1 @@ -Please note the usage of `textContent` to assign the `<li>` content. +দয়া করে নোট করুন `<li>` এর কন্টেন্ট হিসেবে অ্যাসাইন করতে আমরা `textContent` ব্যবহার করব। diff --git a/2-ui/1-document/07-modifying-document/6-create-list/task.md b/2-ui/1-document/07-modifying-document/6-create-list/task.md index a57e7e2d9..e6f16d16e 100644 --- a/2-ui/1-document/07-modifying-document/6-create-list/task.md +++ b/2-ui/1-document/07-modifying-document/6-create-list/task.md @@ -2,18 +2,24 @@ importance: 4 --- -# Create a list +# একটি লিস্ট তৈরি -Write an interface to create a list from user input. +একটি ইন্টারফেস লিখুন যা ইউজার ইনপুট হতে একটি লিস্ট তৈরি করে। -For every list item: +প্রতিটি লিস্ট আইটেম: +<<<<<<< HEAD +1. ইউজার হতে কন্টেন্ট নিবে `prompt` এর মাধ্যমে। +2. `<li>` তৈরি করবে এবং একে `<ul>` এর মধ্যে সংযুক্ত করবে। +3. ইউজার ক্যান্সেল করার পূর্ব পর্যন্ত এটি চলতে থাকবে (`key:Esc` চাপার মাধ্যমে এটি ক্যান্সেল হয়)। +======= 1. Ask a user about its content using `prompt`. 2. Create the `<li>` with it and add it to `<ul>`. 3. Continue until the user cancels the input (by pressing `key:Esc` or via an empty entry). +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -All elements should be created dynamically. +সকল এলিমেন্ট স্বয়ংক্রিয়ভাবে তৈরি হয়। -If a user types HTML-tags, they should be treated like a text. +যদি ইউজার HTML-tags টাইপ করে, এটি টেক্সট হিসেবে কাজ করবে। [demo src="solution"] diff --git a/2-ui/1-document/07-modifying-document/7-create-object-tree/solution.md b/2-ui/1-document/07-modifying-document/7-create-object-tree/solution.md index d29636ee2..23af6c395 100644 --- a/2-ui/1-document/07-modifying-document/7-create-object-tree/solution.md +++ b/2-ui/1-document/07-modifying-document/7-create-object-tree/solution.md @@ -1,4 +1,4 @@ -The easiest way to walk the object is to use recursion. +সবচেয়ে সহজ উপায়টি হল রিকার্সিভলি অবজেক্টকে ইটারেট করা। 1. [The solution with innerHTML](sandbox:innerhtml). 2. [The solution with DOM](sandbox:build-tree-dom). diff --git a/2-ui/1-document/07-modifying-document/7-create-object-tree/task.md b/2-ui/1-document/07-modifying-document/7-create-object-tree/task.md index 5ec1a01bc..358c40262 100644 --- a/2-ui/1-document/07-modifying-document/7-create-object-tree/task.md +++ b/2-ui/1-document/07-modifying-document/7-create-object-tree/task.md @@ -2,11 +2,11 @@ importance: 5 --- -# Create a tree from the object +# অবজেক্ট হতে একটি ট্রি তৈরি করুন -Write a function `createTree` that creates a nested `ul/li` list from the nested object. +`createTree` নামের একটি ফাংশন লিখুন যেটি একটি নেস্টেড `ul/li` লিস্ট ক্রিয়েট করবে একটি নেস্টেড অবজেক্ট হতে। -For instance: +উদাহরণস্বরূপ: ```js let data = { @@ -28,7 +28,7 @@ let data = { }; ``` -The syntax: +সিন্ট্যাক্সটি: ```js let container = document.getElementById('container'); @@ -37,15 +37,15 @@ createTree(container, data); // creates the tree in the container */!* ``` -The result (tree) should look like this: +ফলাফলটি দেখতে এমন হবে: [iframe border=1 src="build-tree-dom"] -Choose one of two ways of solving this task: +নিচের যে কোন একটি উপায়ে এট সমাধান করুন: -1. Create the HTML for the tree and then assign to `container.innerHTML`. -2. Create tree nodes and append with DOM methods. +1. HTML ট্রি নোডটি তৈরি করে `container.innerHTML` এ অ্যাসাইন করুন। +2. ট্রি নোড তৈরি করে DOM মেথডের সাহায্যে সংযুক্ত করা। -Would be great if you could do both. +যদি আপনি দুই উপায়েই করতে পারেন এটি আরো ভালো হবে। -P.S. The tree should not have "extra" elements like empty `<ul></ul>` for the leaves. +বি.দ্র. ট্রি টিতে কোন "অতিরিক্ত" এম্পটি `<ul></ul>` থাকবে না। diff --git a/2-ui/1-document/07-modifying-document/8-tree-count/solution.md b/2-ui/1-document/07-modifying-document/8-tree-count/solution.md index 43b9a362c..94f85e4a4 100644 --- a/2-ui/1-document/07-modifying-document/8-tree-count/solution.md +++ b/2-ui/1-document/07-modifying-document/8-tree-count/solution.md @@ -1 +1 @@ -To append text to each `<li>` we can alter the text node `data`. +আমরা `<li>` এ টেক্সট নোডের `data` প্রপার্টির সাথে মানটি যুক্ত করে দিব। diff --git a/2-ui/1-document/07-modifying-document/8-tree-count/solution.view/index.html b/2-ui/1-document/07-modifying-document/8-tree-count/solution.view/index.html index ec44bfda1..f13028a2b 100644 --- a/2-ui/1-document/07-modifying-document/8-tree-count/solution.view/index.html +++ b/2-ui/1-document/07-modifying-document/8-tree-count/solution.view/index.html @@ -43,11 +43,11 @@ let lis = document.getElementsByTagName('li'); for (let li of lis) { - // get the count of all <li> below this <li> + // সকল লিস্টকে গণনা <li> below this <li> let descendantsCount = li.getElementsByTagName('li').length; if (!descendantsCount) continue; - // add directly to the text node (append to the text) + // মানটি লিখা li.firstChild.data += ' [' + descendantsCount + ']'; } </script> diff --git a/2-ui/1-document/07-modifying-document/8-tree-count/task.md b/2-ui/1-document/07-modifying-document/8-tree-count/task.md index d6343bf3b..b5bc69650 100644 --- a/2-ui/1-document/07-modifying-document/8-tree-count/task.md +++ b/2-ui/1-document/07-modifying-document/8-tree-count/task.md @@ -2,12 +2,12 @@ importance: 5 --- -# Show descendants in a tree +# UL এর নেস্টেড লিস্ট এর সংখ্যা -There's a tree organized as nested `ul/li`. +একটি `ul/li` এর ট্রি আছে। -Write the code that adds to each `<li>` the number of its descendants. Skip leaves (nodes without children). +প্রতিটি `ul` এর অধীনে কতটি `<li>` আছে দেখান। (চিল্ড্রেন ব্যাতীত) নোড সমূহ বাদ যাবে। -The result: +ফলাফলটি হবে: [iframe border=1 src="solution"] diff --git a/2-ui/1-document/07-modifying-document/9-calendar-table/solution.md b/2-ui/1-document/07-modifying-document/9-calendar-table/solution.md index de8be56e9..9dd75be05 100644 --- a/2-ui/1-document/07-modifying-document/9-calendar-table/solution.md +++ b/2-ui/1-document/07-modifying-document/9-calendar-table/solution.md @@ -1,9 +1,9 @@ -We'll create the table as a string: `"<table>...</table>"`, and then assign it to `innerHTML`. +আমরা টেবল টি জেনারেট করে: `"<table>...</table>"`, এই প্রপার্টিতে `innerHTML` সেট করে দিব। -The algorithm: +ধাপসমূহ হবে: -1. Create the table header with `<th>` and weekday names. -2. Create the date object `d = new Date(year, month-1)`. That's the first day of `month` (taking into account that months in JavaScript start from `0`, not `1`). -3. First few cells till the first day of the month `d.getDay()` may be empty. Let's fill them in with `<td></td>`. -4. Increase the day in `d`: `d.setDate(d.getDate()+1)`. If `d.getMonth()` is not yet the next month, then add the new cell `<td>` to the calendar. If that's a Sunday, then add a newline <code>"</tr><tr>"</code>. -5. If the month has finished, but the table row is not yet full, add empty `<td>` into it, to make it square. +1. প্রথমে হেডার রো তৈরি `<th>` করি এবং সপ্তাহের নাম লিখি। +2. *date* অবজেক্ট করি `d = new Date(year, month-1)`। এবং `month` এর প্রথম দিনটি নেব (জাভাস্ক্রিপ্টে মাস শুরু হয় `0` হতে, `1` হতে না)। +3. শুরুর কয়েকটি সেল `d.getDay()` খালি হতে পারে। তাদের এম্পটি `<td></td>` দ্বারা পূর্ণ করুন। +4. দিনের মান বৃদ্ধি করুন `d`: `d.setDate(d.getDate()+1)`। যদি `d.getMonth()` পরবর্তী মাস না হয়, তাহলে ক্যালেন্ডারে তারিখটি লিখুন `<td>`। যদি দিনটি রবিবার হয়, তাহলে নতুন লাইনে যান <code>"</tr><tr>"</code>। +5. যদি সম্পূর্ণ মাসটি শেষ হয়, এবং টেবলটি সম্পূর্ণ না হয়, খালি `<td>` দ্বারা পূর্ণ করুন। diff --git a/2-ui/1-document/07-modifying-document/9-calendar-table/task.md b/2-ui/1-document/07-modifying-document/9-calendar-table/task.md index 37b1a60d2..bf53008f7 100644 --- a/2-ui/1-document/07-modifying-document/9-calendar-table/task.md +++ b/2-ui/1-document/07-modifying-document/9-calendar-table/task.md @@ -2,16 +2,16 @@ importance: 4 --- -# Create a calendar +# ক্যালেন্ডার লিখা -Write a function `createCalendar(elem, year, month)`. +একটি ফাংশন লিখুন `createCalendar(elem, year, month)`। -The call should create a calendar for the given year/month and put it inside `elem`. +ফাংশন কলে `elem` এর মধ্যে একটি ক্যালেন্ডার তৈরি হবে মাস এবং বছর অনুযায়ী। -The calendar should be a table, where a week is `<tr>`, and a day is `<td>`. The table top should be `<th>` with weekday names: the first day should be Monday, and so on till Sunday. +ক্যালেন্ডারটি একটি *table* এ হবে, যেখানে সপ্তাহসমূহ হবে `<tr>` এ, এবং দিনগুলো থাকবে `<td>` এ। এবং একদম উপরের রোতে `<th>` সপ্তাহের দিন গুলোর নাম থাকবে: সপ্তাহ শুরু হবে সোমবার দিয়ে, এবং শেষ হবে রবিবারে। -For instance, `createCalendar(cal, 2012, 9)` should generate in element `cal` the following calendar: +যেমন, `createCalendar(cal, 2012, 9)` এই এলিমেন্টের `cal` জন্য নিচের ক্যালেন্ডারটি বানাবে: [iframe height=210 src="solution"] -P.S. For this task it's enough to generate the calendar, should not yet be clickable. +বি.দ্র. এই টাস্কটিতে শুধু ক্যালেন্ডারটি জেনারেট করলেই হবে, অন্য কোন ফাংশনালিটির প্রয়োজন নেই। diff --git a/2-ui/1-document/07-modifying-document/article.md b/2-ui/1-document/07-modifying-document/article.md index 75ce1fbb0..3f4017e1a 100644 --- a/2-ui/1-document/07-modifying-document/article.md +++ b/2-ui/1-document/07-modifying-document/article.md @@ -1,14 +1,14 @@ -# Modifying the document +# ডকুমেন্টকে পরিবর্তন -DOM modification is the key to creating "live" pages. +DOM মোডিফিকেশনের মাধ্যমে আমরা আমাদের পেইজ কে আরো "ডায়নামিক প্রাণবন্ত" করতে পারি। -Here we'll see how to create new elements "on the fly" and modify the existing page content. +এখানে আমরা দেখব কিভাবে বিদ্যমান পেজের কন্টেন্ট সমূহকে "স্বতঃস্ফুর্তভাবে" পরিবর্তন করতে পারি। -## Example: show a message +## উদাহরণ: একটি মেসেজ দেখানো -Let's demonstrate using an example. We'll add a message on the page that looks nicer than `alert`. +চলুন একটি উদাহরণের সাহায্যে এটি বুঝি। আমরা একটি মেসেজ এলিমেন্ট লিখব যা `alert` এর মত দেখায়। -Here's how it will look: +এটি দেখতে এমন হবে: ```html autorun height="80" <style> @@ -28,52 +28,52 @@ Here's how it will look: */!* ``` -That was the HTML example. Now let's create the same `div` with JavaScript (assuming that the styles are in the HTML/CSS already). +এটি একটি HTML উদাহরণ। চলুন পুরো ব্যাপারটি আমরা প্রোগ্রামাটিক্যালি জাভাস্ক্রিপ্ট এর সাহায্যে করি (ধরে নিই আমাদের ইতোমধ্যে CSS স্ট্যাইল করা আছে)। -## Creating an element +## এলিমেন্ট তৈরি -To create DOM nodes, there are two methods: +DOM নোড তৈরির জন্য দুটি মেথড আছে: `document.createElement(tag)` -: Creates a new *element node* with the given tag: +: ট্যাগ অনুযায়ী একটি নতুন *এলিমেন্ট নোড* তৈরি করা: ```js let div = document.createElement('div'); ``` `document.createTextNode(text)` -: Creates a new *text node* with the given text: +: টেক্সট অনুযায়ী একটি নতুন *টেক্সট নোড* তৈরি করা: ```js let textNode = document.createTextNode('Here I am'); ``` -Most of the time we need to create element nodes, such as the `div` for the message. +বেশিরভাব ক্ষেত্রে আমাদের এলিমেন্ট নোড তৈরি করা লাগে, যেমন মেসেজ দেখাতে `div` এলিমেন্ট। -### Creating the message +### মেসেজ এলিমেন্ট তৈরি -Creating the message div takes 3 steps: +DIV মেসেজটি তৈরিতে আমাদের তিনটি ধাপের প্রয়োজন: ```js -// 1. Create <div> element +// 1. <div> এলিমেন্ট তৈরি let div = document.createElement('div'); -// 2. Set its class to "alert" +// 2. "alert" ক্লাশ নামটি সংযোগ div.className = "alert"; -// 3. Fill it with the content +// 3. কন্টেন্ট সংযোগ div.innerHTML = "<strong>Hi there!</strong> You've read an important message."; ``` -We've created the element. But as of now it's only in a variable named `div`, not in the page yet. So we can't see it. +আমরা এলিমেন্ট তৈরি করেছি। কিন্তু এখনো শুধুমাত্র `div` নামের একটি ভ্যারিয়েবল, এটি পেজে সংযুক্ত হবে না। তাই একে দেখতেও পারব না। -## Insertion methods +## পেজে সংযুক্তের মেথড -To make the `div` show up, we need to insert it somewhere into `document`. For instance, into `<body>` element, referenced by `document.body`. +`div` টি দেখাতে, আমাদের এটি `document` এর কোন একটি জায়গায় এটি সংযুক্ত করতে হবে। যেমন, `<body>` এলিমেন্ট, যা `document.body` দ্বারা সূচিত করা হয়। -There's a special method `append` for that: `document.body.append(div)`. +এটির একটি স্পেশাল মেথড আছে `append`: `document.body.append(div)`. -Here's the full code: +এখানে সম্পুর্ন কোডটি দেখুন: ```html run height="80" <style> @@ -97,21 +97,21 @@ Here's the full code: </script> ``` -Here we called `append` on `document.body`, but we can call `append` method on any other element, to put another element into it. For instance, we can append something to `<div>` by calling `div.append(anotherElement)`. +এখানে আমরা `document.body` তে `append` কল করেছি, কিন্তু আমরা চাইলে অন্য এলিমেন্টে সংযুক্ত করতে ঐ এলিমেন্ট সমূহেও `append` কল করতে পারি। যেমন, আমরা `<div>` এ অন্য এলিমেন্ট সংযুক্ত করতে পারি `div.append(anotherElement)`। -Here are more insertion methods, they specify different places where to insert: +এখানে আমরা আরো কিছু ইনসার্ট মেথড দেখব: -- `node.append(...nodes or strings)` -- append nodes or strings *at the end* of `node`, -- `node.prepend(...nodes or strings)` -- insert nodes or strings *at the beginning* of `node`, -- `node.before(...nodes or strings)` –- insert nodes or strings *before* `node`, -- `node.after(...nodes or strings)` –- insert nodes or strings *after* `node`, -- `node.replaceWith(...nodes or strings)` –- replaces `node` with the given nodes or strings. +- `node.append(...nodes or strings)` -- *নোডের শেষে* কোন নোড অথবা স্ট্রিং সংযুক্ত, +- `node.prepend(...nodes or strings)` -- *নোডের শুরুতে* কোন নোড অথবা স্ট্রিং সংযুক্ত, +- `node.before(...nodes or strings)` –- *নোডের পূর্বে* কোন নোড অথবা স্ট্রিং সংযুক্ত, +- `node.after(...nodes or strings)` –- *নোডের পরে* কোন নোড অথবা স্ট্রিং সংযুক্ত, +- `node.replaceWith(...nodes or strings)` –- `node` কে অন্য নোড বা স্ট্রিং দ্বারা রিপ্লেস। -Arguments of these methods are an arbitrary list of DOM nodes to insert, or text strings (that become text nodes automatically). +মেথডসমূহের আর্গুমেণ্টটি যেকোন স্বতন্ত্র DOM নোড অথবা টেক্সট স্ট্রিং(যা স্বয়ংক্রিয়ভাবে টেক্সট নোড হবে) হতে পারে। -Let's see them in action. +চলুন উদাহরণের সাহায্যে দেখি। -Here's an example of using these methods to add items to a list and the text before/after it: +এখানে একটি লিস্ট আছে, এখানে আমরা ইনসার্শন মেথড সমূহ সংযুক্ত করব: ```html autorun <ol id="ol"> @@ -121,24 +121,24 @@ Here's an example of using these methods to add items to a list and the text bef </ol> <script> - ol.before('before'); // insert string "before" before <ol> - ol.after('after'); // insert string "after" after <ol> + ol.before('before'); // <ol> নোডের পূর্বে "before" স্ট্রিং + ol.after('after'); // <ol> নোডের পর "after" স্ট্রিং let liFirst = document.createElement('li'); liFirst.innerHTML = 'prepend'; - ol.prepend(liFirst); // insert liFirst at the beginning of <ol> + ol.prepend(liFirst); // <ol> এর শুরুতে একটি লিস্ট let liLast = document.createElement('li'); liLast.innerHTML = 'append'; - ol.append(liLast); // insert liLast at the end of <ol> + ol.append(liLast); // <ol> এর শেষে একটি লিস্ট </script> ``` -Here's a visual picture of what the methods do: +মেথডগুলো কিভাবে কাজ করে তার একটি চিত্র এখানে দেখুন: ![](before-prepend-append-after.svg) -So the final list will be: +সুতরাং সর্বশেষে আমাদের DOM টি হবে এমন: ```html before @@ -152,9 +152,9 @@ before after ``` -As said, these methods can insert multiple nodes and text pieces in a single call. +ইতোমধ্যে আমরা জেনেছি আমরা একাধিক নোড বা স্ট্রিং একবার কলের মাধ্যমে সংযুক্ত করতে পারি। -For instance, here a string and an element are inserted: +যেমন, এখানে আমরা একটি স্ট্রিং এবং একটি এলিমেন্ট সংযুক্ত করছি: ```html run <div id="div"></div> @@ -163,9 +163,9 @@ For instance, here a string and an element are inserted: </script> ``` -Please note: the text is inserted "as text", not "as HTML", with proper escaping of characters such as `<`, `>`. +দয়া করে নোট করুন: এখানে টেক্সটি একটি স্ট্রিং হিসেবেই সংযুক্ত হবে, "HTML" হিসেবে নয়, প্রপারলি ক্যারাক্টার `<`, `>` সমূহ এস্কেপ হবে। -So the final HTML is: +সুতরাং সর্বশেষ আউটপুটটি হবে এমন: ```html run *!* @@ -175,26 +175,25 @@ So the final HTML is: <div id="div"></div> ``` -In other words, strings are inserted in a safe way, like `elem.textContent` does it. +অন্য ভাবে বলা যায়, স্ট্রিং সমূহ নিরাপদ ভাবে সংযুক্ত হয়, `elem.textContent` এর মত। -So, these methods can only be used to insert DOM nodes or text pieces. - -But what if we'd like to insert an HTML string "as html", with all tags and stuff working, in the same manner as `elem.innerHTML` does it? +সুতরাং, মেথডসমূহ DOM নোড অথবা টেক্সট হিসেবে সংযুক্ত হয়। +কিন্তু যদি আমরা কোন স্ট্রিংকে "HTML" কন্টেন্ট হিসেবে সংযুক্ত করতে চায়, যা সকল ট্যাগ এবং অন্যান্য ব্যাপার গুলো সহ কাজ করবে অনেকটা `elem.innerHTML` এর মত, এভাবে করা কি সম্ভব? ## insertAdjacentHTML/Text/Element -For that we can use another, pretty versatile method: `elem.insertAdjacentHTML(where, html)`. +এজন্য আমরা আরেকটি বহুরূপী মেথড ব্যবহার করতে পারি: `elem.insertAdjacentHTML(where, html)`। -The first parameter is a code word, specifying where to insert relative to `elem`. Must be one of the following: +যার প্রথম প্যারামিটারটি হবে পজিশন, অর্থাৎ `elem` এর কোন অবস্থানে সংযুক্ত হবে। নিচে এদের সম্পর্কে আলোচনা করা হল: -- `"beforebegin"` -- insert `html` immediately before `elem`, -- `"afterbegin"` -- insert `html` into `elem`, at the beginning, -- `"beforeend"` -- insert `html` into `elem`, at the end, -- `"afterend"` -- insert `html` immediately after `elem`. +- `"beforebegin"` -- `elem` শুরুর পূর্বে `html` টি সংযুক্ত হবে, +- `"afterbegin"` -- `elem` এর শুরুতে `html` টি সংযুক্ত হবে, +- `"beforeend"` -- `elem` টি শেষ হওয়ার পূর্বে `html` টি সংযুক্ত হবে, +- `"afterend"` -- `elem` টি শেষ হওয়ার পর `html` টি সংযুক্ত হবে। -The second parameter is an HTML string, that is inserted "as HTML". +দ্বিতীয় প্যারামিটারটি হবে একটি HTML ট্রিং, যা "HTML" হিসেবে সংযুক্ত হবে। -For instance: +উদাহরণস্বরূপ: ```html run <div id="div"></div> @@ -204,7 +203,7 @@ For instance: </script> ``` -...Would lead to: +...যা দেখতে এমন হবে: ```html run <p>Hello</p> @@ -212,22 +211,22 @@ For instance: <p>Bye</p> ``` -That's how we can append arbitrary HTML to the page. +এভাবেই আমরা স্বতন্ত্র HTML পেজে সংযুক্ত করতে পারি। -Here's the picture of insertion variants: +এখানে সংযুক্তকরণের চিত্রটি দেখুন: ![](insert-adjacent.svg) -We can easily notice similarities between this and the previous picture. The insertion points are actually the same, but this method inserts HTML. +এখানে আমরা পূর্বের এবং বর্তমান ছবিটি লক্ষ্য করলে বুঝতে পারি, দুইটি ছবিই একই পজিশন নির্দেশ করে, তবে পার্থক্য হল এই মেথডটির সাহায্যে আমরা স্ট্রিংকে HTML কন্টেন্ট হিসেবে সংযুক্ত করতে পারি। -The method has two brothers: +অনুরূপ আরো দুটি মেথড আছে: -- `elem.insertAdjacentText(where, text)` -- the same syntax, but a string of `text` is inserted "as text" instead of HTML, -- `elem.insertAdjacentElement(where, elem)` -- the same syntax, but inserts an element. +- `elem.insertAdjacentText(where, text)` -- পূর্বের মত, তবে এটি স্ট্রিং হিসেবে `text` নিবে এবং "টেক্সট" হিসেবে সংযুক্ত হবে, +- `elem.insertAdjacentElement(where, elem)` -- একই কাজ করবে, তবে শুধুমাত্র এলিমেন্ট সংযুক্ত হবে। -They exist mainly to make the syntax "uniform". In practice, only `insertAdjacentHTML` is used most of the time. Because for elements and text, we have methods `append/prepend/before/after` -- they are shorter to write and can insert nodes/text pieces. +তবে বেশিরভাগ ক্ষেত্রে এদের আলাদা করে ব্যবহার করা হয়না। বাস্তবিক ক্ষেত্রে আমরা বেশিরভাগ সময় শুধুমাত্র `insertAdjacentHTML` ব্যবহার করব। কেননা এলিমেন্ট এবং টেক্সটের জন্য আমাদের `append/prepend/before/after` মেথড সমূহ আছে -- টেক্সট ইনসার্শনের জন্য এরা বেশি সুবিধাজনক। -So here's an alternative variant of showing a message: +আমরা এভাবেও মেসেজটি দেখাতে পারি: ```html run <style> @@ -249,9 +248,9 @@ So here's an alternative variant of showing a message: ## Node removal -To remove a node, there's a method `node.remove()`. +কোন নোড রিমুভ করতে একটি মেথড আছে - `node.remove()`। -Let's make our message disappear after a second: +চলুন আমাদের মেসেজটিকে এক সেকেন্ড পর DOM হতে রিমুভ করি: ```html run untrusted <style> @@ -276,32 +275,32 @@ Let's make our message disappear after a second: </script> ``` -Please note: if we want to *move* an element to another place -- there's no need to remove it from the old one. +দয়া করে নোট করুন: যদি আমরা এলিমেন্টটিকে অন্য আরেক এলিমেন্টের মধ্যে *move* করাতে চাই -- তাহলে আমাদের পূর্বের নোডটি *remove* করতে হবে না। -**All insertion methods automatically remove the node from the old place.** +**সকল ইনসার্শন মেথড স্বয়ংক্রিয়ভাবে পুরনো নোডটি DOM হতে রিমুভ করে দেয়।** -For instance, let's swap elements: +উদাহরণস্বরূপ, এলিমেন্টকে অদল বদল করি: ```html run height=50 <div id="first">First</div> <div id="second">Second</div> <script> - // no need to call remove - second.after(first); // take #second and after it insert #first + // remove কল করা লাগবে না + second.after(first); // #second টির মধ্যে #first টি সংযুক্ত হবে </script> ``` ## Cloning nodes: cloneNode -How to insert one more similar message? +কিভাবে আমরা অনূরূপ আরেকটি মেসেজ সংযুক্ত করত্র পারি? -We could make a function and put the code there. But the alternative way would be to *clone* the existing `div` and modify the text inside it (if needed). +আমরা একটি ফাংশন তৈরির মাধ্যমে এটি করতে পারি। কিন্তু আমাদের বিকল্প আরেকটি উপায় আছে *clone* যা বর্তমান `div` কে ক্লোন করবে এবং আমরা চাইলে একে পরিবর্তন করতে পারি (যদি আমাদের প্রয়োজন হয়)। -Sometimes when we have a big element, that may be faster and simpler. +অনেক সময় আমাদের অনেক বড় এলিমেন্ট থাকতে পারে, এক্ষেত্রে এটি সহজে এবং দ্রুত কাজ করবে। -- The call `elem.cloneNode(true)` creates a "deep" clone of the element -- with all attributes and subelements. If we call `elem.cloneNode(false)`, then the clone is made without child elements. +- `elem.cloneNode(true)` কলে এলিমেন্টটির একটি "ডীপ" ক্লোন তৈরি করে -- সকল সাব এলিমেন্ট এবং অ্যাট্রিবিউট সহ। যদি আমরা `elem.cloneNode(false)` এভাবে ক্রিয়েট করি, তাহলে সাব এলিমেন্ট ব্যতীত ক্লোন হবে। -An example of copying the message: +মেসেজ কপি করার একটি উদাহরণ: ```html run height="120" <style> @@ -320,21 +319,21 @@ An example of copying the message: <script> *!* - let div2 = div.cloneNode(true); // clone the message - div2.querySelector('strong').innerHTML = 'Bye there!'; // change the clone + let div2 = div.cloneNode(true); // মেসেজ ক্লোন + div2.querySelector('strong').innerHTML = 'Bye there!'; // ক্লোন করা এলিমেন্টের strong এলিমেন্টকে পরিবর্তন - div.after(div2); // show the clone after the existing div + div.after(div2); // div এর পরে ক্লোন করা এলিমেন্টটি দেখানো হল */!* </script> ``` ## DocumentFragment [#document-fragment] -`DocumentFragment` is a special DOM node that serves as a wrapper to pass around lists of nodes. +`DocumentFragment` হল একটি বিশেষ DOM নোড যা একটি র‍্যাপার হিসেবে কাজ করে, এবং একে আমরা অন্য নোডে সংযুক্ত করতে পারি। -We can append other nodes to it, but when we insert it somewhere, then its content is inserted instead. +আমরা অন্যান্য নোড এর মধ্যে সংযুক্তকরণের সময়, এটি সংযুক্ত হওয়ার পরিবর্তে এর কন্টেন্ট সমূহ সংযুক্ত হয়। -For example, `getListContent` below generates a fragment with `<li>` items, that are later inserted into `<ul>`: +যেমন, `getListContent` ফাংশনটি `<li>` আইটেমের একটি ফ্রাগমেন্ট তৈরি করে, এবং এর পর `<ul>` এর মধ্যে সংযুক্ত করলাম: ```html run <ul id="ul"></ul> @@ -358,7 +357,7 @@ ul.append(getListContent()); // (*) </script> ``` -Please note, at the last line `(*)` we append `DocumentFragment`, but it "blends in", so the resulting structure will be: +দয়া করে নোট করুন, শেষ লাইনে `(*)` আমরা `DocumentFragment` সংযুক্ত করলাম, কিন্তু এটি "মিশ্রিত" অবস্থায় আছে, সুতরাং আউটপুটটি হবে: ```html <ul> @@ -368,7 +367,7 @@ Please note, at the last line `(*)` we append `DocumentFragment`, but it "blends </ul> ``` -`DocumentFragment` is rarely used explicitly. Why append to a special kind of node, if we can return an array of nodes instead? Rewritten example: +`DocumentFragment` কদাচিৎ ব্যবহার হয়। কেন আমাদের এই ধরণের বিশেষ নোডের দরকার হয়, যখন আমরা এটি এভাবে করতে পারি? নিচের উদাহরণটি দেখুন: ```html run <ul id="ul"></ul> @@ -392,22 +391,22 @@ ul.append(...getListContent()); // append + "..." operator = friends! </script> ``` -We mention `DocumentFragment` mainly because there are some concepts on top of it, like [template](info:template-element) element, that we'll cover much later. +পূর্বেই উল্লেখ করেছি `DocumentFragment` আমাদের বিশেষ কিছু কন্সেপ্টের জন্য দরকার হয়, যেমন [template](info:template-element) এলিমেন্ট, যা পরবর্তীতে আমরা আলোচনা করব। -## Old-school insert/remove methods +## পুরনো উপায়ে insert/remove মেথডস [old] -There are also "old school" DOM manipulation methods, existing for historical reasons. +এছাড়াও কিছু "পুরনো" DOM ম্যানিপুলেশন মেথড আছে, যা এখনো বিদ্যমান। -These methods come from really ancient times. Nowadays, there's no reason to use them, as modern methods, such as `append`, `prepend`, `before`, `after`, `remove`, `replaceWith`, are more flexible. +মেথডগুলো পুরনো জাভাস্ক্রিপ্টে ব্যবহার হত। বর্তমানে, মডার্ন জাভাস্ক্রিপ্টে আমাদের ঐ মেথড সমূহ ব্যবহারের দরকার পড়ে না, যেমন `append`, `prepend`, `before`, `after`, `remove`, `replaceWith` এই মেথড সমূহ অনেক বেশি কার্যকরী। -The only reason we list these methods here is that you can find them in many old scripts: +এখানে এদের নিয়ে আলোচনার একটি কারণ হল, পুরনো অনেক স্ক্রিপ্টে আমরা এদের ব্যবহার দেখতে পায়: `parentElem.appendChild(node)` -: Appends `node` as the last child of `parentElem`. +: `parentElem` এর সবার শেষে `node` সংযুক্তকরণে। - The following example adds a new `<li>` to the end of `<ol>`: + নিচের উদাহরণে `<ol>` এর একদম শেষে নতুন একটি `<li>` আইটেম সংযুক্তকরণ করা হল: ```html run height=100 <ol id="list"> @@ -425,9 +424,9 @@ The only reason we list these methods here is that you can find them in many old ``` `parentElem.insertBefore(node, nextSibling)` -: Inserts `node` before `nextSibling` into `parentElem`. +: `parentElem` এর নির্দিষ্ট অবস্থানে `node` সংযুক্তকরণ। - The following code inserts a new list item before the second `<li>`: + নিচের উদাহরণে দ্বিতীয় অবস্থানে `<li>` আইটেমটি সংযুক্ত হবে: ```html run height=100 <ol id="list"> @@ -444,19 +443,19 @@ The only reason we list these methods here is that you can find them in many old */!* </script> ``` - To insert `newLi` as the first element, we can do it like this: + `newLi` কে প্রথম এলিমেন্ট হিসেবে সংযুক্ত করতে পারি এভাবে: ```js list.insertBefore(newLi, list.firstChild); ``` `parentElem.replaceChild(node, oldChild)` -: Replaces `oldChild` with `node` among children of `parentElem`. +: `parentElem` এ `oldChild` কে `node` দ্বারা পরিবর্তন। `parentElem.removeChild(node)` -: Removes `node` from `parentElem` (assuming `node` is its child). +: `parentElem` হতে `node` কে বাদ দিতে (ধরে নিন `node` হল `parentElem` এর একটি চাইল্ড)। - The following example removes first `<li>` from `<ol>`: + নিচের উদাহরণে `<ol>` হতে প্রথম `<li>` কে বাদ দেয়া দেখানো হল: ```html run height=100 <ol id="list"> @@ -471,13 +470,13 @@ The only reason we list these methods here is that you can find them in many old </script> ``` -All these methods return the inserted/removed node. In other words, `parentElem.appendChild(node)` returns `node`. But usually the returned value is not used, we just run the method. +সকল মেথড inserted/removed নোডটিকে রিটার্ন করবে। অন্যভাবে বলা যায়, `parentElem.appendChild(node)` মেথডটি `node` টিকে রিটার্ন করে। তবে সাধারণত আমরা রিটার্ন ভ্যালু ব্যবহার করিনা, বেশিরভাগ ক্ষেত্রে শুধুমাত্র মেথডটি রান হয়। -## A word about "document.write" +## "document.write" সম্পর্কে কিছু আলোচনা -There's one more, very ancient method of adding something to a web-page: `document.write`. +এছাড়াও আরো একটি পুরনো উপায় আছে, যার মাধ্যমে আমরা পেজে কিছু দেখায়: `document.write`। -The syntax: +সিন্ট্যাক্সটি হল: ```html run <p>Somewhere in the page...</p> @@ -489,73 +488,73 @@ The syntax: <p>The end</p> ``` -The call to `document.write(html)` writes the `html` into page "right here and now". The `html` string can be dynamically generated, so it's kind of flexible. We can use JavaScript to create a full-fledged webpage and write it. +`document.write(html)` কলের মাধ্যমে আমরা `html` এ "নির্দিষ্ট অবস্থানে" লিখতে পারি। `html` স্ট্রিং ডায়নামিক্যালি জেনারেট হয়, সুতরাং এটি আরো বেশি কার্যকরী। আমরা জাভাস্ক্রিপ্টের সাহায্যে একটি সম্পূর্ন ওয়েবপেজ লিখতে পারি। -The method comes from times when there was no DOM, no standards... Really old times. It still lives, because there are scripts using it. +মেথডটি অনেক পুরনো যখন কোন স্পেসিফিক DOM ছিল না, বা কোন স্ট্যান্ডার্ড ছিল না। এবং এটি এখনো ব্যবহার হয়, কেননা স্ক্রিপ্টে এটি ব্যবহৃত। -In modern scripts we can rarely see it, because of the following important limitation: +মডার্ন স্ক্রিপ্টে এটি তেমন ব্যবহার করা হয় না, কেননা এর কিছু লিমিটেশন আছে: -**The call to `document.write` only works while the page is loading.** +**`document.write` কাজ করে শুধুমাত্র পেজ লোডিংয়ের সময়।** -If we call it afterwards, the existing document content is erased. +যদি আমরা পরে এটি কল করি, বর্তমান ডকুমেন্ট কন্টেন্টটি মুছে যাবে। -For instance: +উদাহরণস্বরূপ: ```html run <p>After one second the contents of this page will be replaced...</p> *!* <script> - // document.write after 1 second - // that's after the page loaded, so it erases the existing content + // ১ সেকেন্ড পর document.write + // পেজ লোড হওয়ার পর, এক্সিক্টেন্ট কন্টেন্ট মুছে যাবে setTimeout(() => document.write('<b>...By this.</b>'), 1000); </script> */!* ``` -So it's kind of unusable at "after loaded" stage, unlike other DOM methods we covered above. +সুতরাং এটি পেজ "লোড সম্পন্ন" হওয়ার পর আর ব্যবহার উপযোগী নয়, এটি উপরে আলোচিত অন্যান্য DOM মেথডের মত না। -That's the downside. +এটিই এর খারাপ দিক। -There's an upside also. Technically, when `document.write` is called while the browser is reading ("parsing") incoming HTML, and it writes something, the browser consumes it just as if it were initially there, in the HTML text. +তবে এর ভালো দিকও আছে। ট্যাকনিক্যালি, `document.write` কল হয় যখন ব্রাউজার ইনকামিং HTML কে পার্স করে, এবং আমরা ডায়নামিক্যালি কিছু লিখতে পারি, ব্রাউজার এটি অন্যান্য HTML টেক্সটের মত মনে করে। -So it works blazingly fast, because there's *no DOM modification* involved. It writes directly into the page text, while the DOM is not yet built. +সুতরাং এটি অন্যান্য স্ক্রিপ্ট থেকে অনেক দ্রুত কাজ করে, কেননা এক্ষেত্রে কোন *DOM modification* হয়না। এটি সরাসরি পেইজে টেক্সট হিসেবে লিখে, এবং ঐ মূহুর্তেও DOM টিও সম্পুর্ণ বিল্ট হয়না। -So if we need to add a lot of text into HTML dynamically, and we're at page loading phase, and the speed matters, it may help. But in practice these requirements rarely come together. And usually we can see this method in scripts just because they are old. +সুতরাং যদি আমাদের লোডিং টাইমে কোন কন্টেন্ট ডায়নামিক্যালি লিখার দরকার হয়, যেখানে আমাদের দ্রুত করা লাগে, তখন এটি কাজে আসতে পারে। তবে এই ধরণের পরিস্থিতি তেমন আসে না। তারপরও আমাদের এই মেথডসমূহ সম্পর্কে জেনে রাখা উচিত। -## Summary +## সারাংশ -- Methods to create new nodes: - - `document.createElement(tag)` -- creates an element with the given tag, - - `document.createTextNode(value)` -- creates a text node (rarely used), - - `elem.cloneNode(deep)` -- clones the element, if `deep==true` then with all descendants. +- নতুন নোড তৈরির মেথড: + - `document.createElement(tag)` -- প্রদত্ত ট্যাগ অনুযায়ী একটি নতুন *এলিমেন্ট নোড* তৈরি করে, + - `document.createTextNode(value)` -- একটি নতুন *টেক্সট নোড* তৈরি করে(কদাচিৎ ব্যবহার হয়), + - `elem.cloneNode(deep)` -- এলিমেন্টের ক্লোন করে, যদি `deep==true` হয় তাহলে সকল সাব এলিমেন্ট সহ ক্লোন হয়। -- Insertion and removal: - - `node.append(...nodes or strings)` -- insert into `node`, at the end, - - `node.prepend(...nodes or strings)` -- insert into `node`, at the beginning, - - `node.before(...nodes or strings)` –- insert right before `node`, - - `node.after(...nodes or strings)` –- insert right after `node`, - - `node.replaceWith(...nodes or strings)` –- replace `node`. - - `node.remove()` –- remove the `node`. +- ইনসার্শন এবং রিমুভাল: + - `node.append(...nodes or strings)` -- *নোডের শেষে* কোন নোড অথবা স্ট্রিং সংযুক্ত, + - `node.prepend(...nodes or strings)` -- *নোডের শুরুতে* কোন নোড অথবা স্ট্রিং সংযুক্ত, + - `node.before(...nodes or strings)` –- *নোডের পূর্বে* কোন নোড অথবা স্ট্রিং সংযুক্ত, + - `node.after(...nodes or strings)` –- *নোডের পরে* কোন নোড অথবা স্ট্রিং সংযুক্ত, + - `node.replaceWith(...nodes or strings)` –- `node` কে অন্য নোড বা স্ট্রিং দ্বারা রিপ্লেস। + - `node.remove()` –- `node` রিমুভ। - Text strings are inserted "as text". + স্ট্রিং সমূহ "text" হিসেবেই সংযুক্ত হয়। -- There are also "old school" methods: +- এছাড়াও কিছু "পুরনো" মেথড আছে: - `parent.appendChild(node)` - `parent.insertBefore(node, nextSibling)` - `parent.removeChild(node)` - `parent.replaceChild(newElem, node)` - All these methods return `node`. + সকল মেথড `node` টিকে ভ্যালু হিসেবে রিটার্ন করে। -- Given some HTML in `html`, `elem.insertAdjacentHTML(where, html)` inserts it depending on the value of `where`: - - `"beforebegin"` -- insert `html` right before `elem`, - - `"afterbegin"` -- insert `html` into `elem`, at the beginning, - - `"beforeend"` -- insert `html` into `elem`, at the end, - - `"afterend"` -- insert `html` right after `elem`. +- এছাড়াও `html` আকারে কোন কিছু সংযুক্ত করতে আছে, `elem.insertAdjacentHTML(where, html)` এবং `where` নির্দেশ করে এটি এলিমেন্টের কোন পজিশনে ইনসার্ট হবে: + - `"beforebegin"` -- `elem` শুরুর পূর্বে `html` টি সংযুক্ত হবে, + - `"afterbegin"` -- `elem` এর শুরুতে `html` টি সংযুক্ত হবে, + - `"beforeend"` -- `elem` টি শেষ হওয়ার পূর্বে `html` টি সংযুক্ত হবে, + - `"afterend"` -- `elem` টি শেষ হওয়ার পর `html` টি সংযুক্ত হবে। - Also there are similar methods, `elem.insertAdjacentText` and `elem.insertAdjacentElement`, that insert text strings and elements, but they are rarely used. + এছাড়াও অনুরূপ আরো দুটি মেথড আছে, `elem.insertAdjacentText` এবং `elem.insertAdjacentElement`, যা যথাক্রমে টেক্সট এবং এলিমেন্টকে স্ট্রিং হিসেবে নেয়, তবে এদের ব্যবহার কদাচিৎ। -- To append HTML to the page before it has finished loading: +- পেজ লোডিং টাইমে কিছু সংযুক্ত করতে: - `document.write(html)` - After the page is loaded such a call erases the document. Mostly seen in old scripts. + পেজ লোড হওয়ার পর পুনরায় এটি কল করলে ডকুমেন্টটি মুছে যায়। পুরনো স্ক্রিপ্টে আমরা এদের দেখি। diff --git a/2-ui/1-document/09-size-and-scroll/4-put-ball-in-center/field.svg b/2-ui/1-document/09-size-and-scroll/4-put-ball-in-center/field.svg index f5bd9f4f9..4ae90b1c7 100644 --- a/2-ui/1-document/09-size-and-scroll/4-put-ball-in-center/field.svg +++ b/2-ui/1-document/09-size-and-scroll/4-put-ball-in-center/field.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="233" height="156" viewBox="0 0 233 156"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="field.svg"><image id="Screen-Shot-2017-02-25-at-23.45.22" width="224" height="150" x="4" y="3" opacity=".7" xlink:href="data:image/png;base64,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"/><text id="(0,0)" fill="#A7333A" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="45" y="60">(0,0)</tspan></text><circle id="Oval" cx="15.5" cy="15.5" r="4.5" fill="#C06334"/><text id="clientWidth" fill="#A7333A" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="73" y="114">clientWidth</tspan></text><path id="Line-9" fill="#C06334" fill-rule="nonzero" d="M24.114 22.183l20.711 4.719-5.078 6.181 13.705 11.258 1.16.952-1.905 2.318-1.16-.952-13.704-11.258-5.078 6.183-8.651-19.401z"/><path id="Line-10" fill="#C06334" fill-rule="nonzero" d="M197 118l19 9.5-19 9.5v-8H34v8l-19-9.5 19-9.5v8h163v-8z"/></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="233" height="156" viewBox="0 0 233 156"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="field.svg"><image id="Screen-Shot-2017-02-25-at-23.45.22" width="224" height="150" x="4" y="3" opacity=".7" xlink:href="data:image/png;base64,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"/><text id="(0,0)" fill="#A7333A" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="45" y="60">(0,0)</tspan></text><circle id="Oval" cx="15.5" cy="15.5" r="4.5" fill="#C06334"/><text id="clientWidth" fill="#A7333A" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="73" y="114">clientWidth</tspan></text><path id="Line-9" fill="#C06334" fill-rule="nonzero" d="M24.114 22.183l20.711 4.719-5.078 6.181 13.705 11.258 1.16.952-1.905 2.318-1.16-.952-13.704-11.258-5.078 6.183-8.651-19.401z"/><path id="Line-10" fill="#C06334" fill-rule="nonzero" d="M197 118l19 9.5-19 9.5v-8H34v8l-19-9.5 19-9.5v8h163v-8z"/></g></g></svg> \ No newline at end of file diff --git a/2-ui/1-document/09-size-and-scroll/article.md b/2-ui/1-document/09-size-and-scroll/article.md index 66f28115f..4bae543be 100644 --- a/2-ui/1-document/09-size-and-scroll/article.md +++ b/2-ui/1-document/09-size-and-scroll/article.md @@ -1,12 +1,12 @@ -# Element size and scrolling +# এলিমেন্টের সাইজ এবং স্ক্রলিং -There are many JavaScript properties that allow us to read information about element width, height and other geometry features. +কোন একটি এলিমেন্টের width, height এবং এর কো-অর্ডিনেটের আরো অন্যান্য মান জানতে জাভাস্ক্রিপ্টের কিছু প্রপার্টি আছে। -We often need them when moving or positioning elements in JavaScript. +প্রোগ্রামাটিক্যালি জাভাস্ক্রিপ্টের সাহায্যে কোন একটি এলিমেন্টকে সরাতে বা কোন একটি নির্দিষ্ট স্থানে বসাতে এই প্রপার্টিসমূহ সম্পর্কে জানতে হয়। -## Sample element +## একটি এলিমেন্ট -As a sample element to demonstrate properties we'll use the one given below: +এই ধরণের প্রপার্টিগুলো সম্পর্কে জানতে চলুন নিচের এলিমেন্টটি দেখি: ```html no-beautify <div id="example"> @@ -23,49 +23,49 @@ As a sample element to demonstrate properties we'll use the one given below: </style> ``` -It has the border, padding and scrolling. The full set of features. There are no margins, as they are not the part of the element itself, and there are no special properties for them. +এটির বর্ডার, প্যাডিং এবং স্ক্রলিং আছে। যা প্রপার্টির সম্পূর্ণ সেট। যেহেতু মার্জিন এলিমেন্টের সাথে সম্পর্কিত নয়, তাই এটি এখানে ব্যবহার করা হয়নি। -The element looks like this: +এলিমেন্টটি জ্যামিতিকভাবে দেখতে এমন: ![](metric-css.svg) -You can [open the document in the sandbox](sandbox:metric). +লাইভ দেখুন [open the document in the sandbox](sandbox:metric). -```smart header="Mind the scrollbar" -The picture above demonstrates the most complex case when the element has a scrollbar. Some browsers (not all) reserve the space for it by taking it from the content (labeled as "content width" above). +```smart header="স্ক্রলবার সম্পর্কে কিছু কথা" +উপরের ছবিটিতে দেখছি এলিমেন্টের একটি স্ক্রলবার আছে। অনেক ব্রাউজার (সব না) স্ক্রলবারের width নিবে তার কন্টেন্ট এর width থেকে (ছবিতে "content width" এর লেভেলটি লক্ষ্য করুন)। -So, without scrollbar the content width would be `300px`, but if the scrollbar is `16px` wide (the width may vary between devices and browsers) then only `300 - 16 = 284px` remains, and we should take it into account. That's why examples from this chapter assume that there's a scrollbar. Without it, some calculations are simpler. +সুতরাং স্ক্রলবার ছাড়া আমাদের কন্টেন্ট এর width হবে `300px`, মনে করুন scrollbar এর width হল `16px` (ডিভাইসভেদে যা আলাদা হয়) সুতরাং কন্টেন্ট এর width হবে `300 - 16 = 284px`। এজন্য এখানে আমরা স্ক্রলবারসহ একটি উদাহরণ নিয়েছি, স্ক্রলবার ছাড়া এলিমেন্টের width হত `300px`। ``` -```smart header="The `padding-bottom` area may be filled with text" -Usually paddings are shown empty on our illustrations, but if there's a lot of text in the element and it overflows, then browsers show the "overflowing" text at `padding-bottom`, that's normal. +```smart header="স্ক্রলেবল এলিমেন্টের জন্য `padding-bottom` সবার নিচে দেখাবে" +যদিও ছবিতে padding-bottom দেখাচ্ছে, কিন্তু যদি আমাদের এলিমেন্টে অনেক টেক্সট থাকে তাহলে এটি ওভারফ্লো হবে, এবং `padding-bottom` সবার নিচে দেখাবে। ``` -## Geometry +## জ্যামিতিক প্রপার্টি -Here's the overall picture with geometry properties: +নিচে জ্যামিতিক প্রপার্টিসহ একটি সামগ্রিক ছবি দেখানো হল: ![](metric-all.svg) -Values of these properties are technically numbers, but these numbers are "of pixels", so these are pixel measurements. +প্রপার্টি এর মান যদিও পূর্ণসংখ্যা দেখায়, তবে এদের একক পিক্সেল। -Let's start exploring the properties starting from the outside of the element. +চলুন প্রথমে এলিমেন্টের আউটার(বাহিরের) প্রপার্টিগুলো নিয়ে বিস্তারিত জানি। ## offsetParent, offsetLeft/Top -These properties are rarely needed, but still they are the "most outer" geometry properties, so we'll start with them. +যদিও এই প্রপার্টিগুলো তেমন ব্যবহার করা হয় না, কিন্তু এরা এলিমেন্টের আউটার(বাহিরের) প্রপার্টি, এবং এদের সম্পর্কে আমাদের জেনে রাখা উচিত। -The `offsetParent` is the nearest ancestor that the browser uses for calculating coordinates during rendering. +`offsetParent` হল ইমিডিয়েট প্যারেন্ট যার উপর ভিত্তি করে রেন্ডারিংয়ের সময় ব্রাউজার কো-অর্ডিনেট গণনা করে। -That's the nearest ancestor that is one of the following: +ইমিডিয়েট প্যারেন্টগুলো হতে পারে: -1. CSS-positioned (`position` is `absolute`, `relative`, `fixed` or `sticky`), or -2. `<td>`, `<th>`, or `<table>`, or +1. CSS-positioned (`position:` `absolute`, `relative`, `fixed` বা `sticky`), বা +2. `<td>`, `<th>`, বা `<table>`, বা 3. `<body>`. -Properties `offsetLeft/offsetTop` provide x/y coordinates relative to `offsetParent` upper-left corner. +`offsetParent` এর top-left কর্ণারের উপর উপর ভিত্তি করে `offsetLeft/offsetTop` প্রপার্টি `x/y` কো-অর্ডিনেট এর মান রিটার্ন করে। -In the example below the inner `<div>` has `<main>` as `offsetParent` and `offsetLeft/offsetTop` shifts from its upper-left corner (`180`): +নিচের উদাহরণে `<div>` এর `offsetParent` হিসেবে `<main>` আছে এবং `offsetLeft/offsetTop` এর top-left কর্ণারের মান হবে (`180`): ```html run height=10 <main style="position: relative" id="main"> @@ -82,33 +82,37 @@ In the example below the inner `<div>` has `<main>` as `offsetParent` and `offse ![](metric-offset-parent.svg) -There are several occasions when `offsetParent` is `null`: +বিভিন্ন কারণে `offsetParent` এর মান `null` হতে পারে: -1. For not shown elements (`display:none` or not in the document). -2. For `<body>` and `<html>`. -3. For elements with `position:fixed`. +1. এলিমেন্টটি UI তে না দেখালে (`display:none` বা DOM এ না থাকলে)। +2. `<body>` এবং `<html>` এর জন্য। +3. `position:fixed` এলিমেন্টের জন্য। ## offsetWidth/Height -Now let's move on to the element itself. +এখন চলুন এলিমেন্টের প্রপার্টিগুলো দেখি। -These two properties are the simplest ones. They provide the "outer" width/height of the element. Or, in other words, its full size including borders. +এরা এলিমেন্টের কন্টেন্টের বাইরের width/height সহ মান রিটার্ন করে, অর্থাৎ উভয়পাশের `padding` এবং `border` এর মানও সংযুক্ত হয়। ![](metric-offset-width-height.svg) -For our sample element: +উপরে উদাহরণে বর্ণিত এলিমেন্টের জন্য: -- `offsetWidth = 390` -- the outer width, can be calculated as inner CSS-width (`300px`) plus paddings (`2 * 20px`) and borders (`2 * 25px`). -- `offsetHeight = 290` -- the outer height. +- `offsetWidth = 390` -- সম্পূর্ন এলিমেন্টের width, inner CSS-width (`300px`) সাথে paddings (`2 * 20px`) এবং borders (`2 * 25px`) এর সমষ্টি। +- `offsetHeight = 290` -- সম্পূর্ন এলিমেন্টের height। -````smart header="Geometry properties are zero/null for elements that are not displayed" -Geometry properties are calculated only for displayed elements. +````smart header="যেসব এলিমেন্ট UI তে দৃশ্যমান না তাদের জন্য মান হতে পারে শূন্য/নাল" +শুধুমাত্র UI তে দৃশ্যমান জ্যামিতিক প্রপার্টিগুলোর মান দেখাবে। -If an element (or any of its ancestors) has `display:none` or is not in the document, then all geometry properties are zero (or `null` for `offsetParent`). +যদি কোন একটি এলিমেন্ট (বা প্যারেন্ট এলিমেন্টে) `display:none` থাকে অথবা এটি DOM এর সাথে সংযুক্ত না হলে, তাহলে সকল জ্যামিতিক প্রপার্টির মান হবে শূন্য (বা `offsetParent` এর জন্য হবে `null`) +<<<<<<< HEAD +যেমন, যখন কোন একটি এলিমেন্ট তৈরি হয় কিন্তু এলিমেন্টটি DOM এ সংযুক্ত করা হয়নি বা এলিমেন্টের কোন একটি প্যারেন্ট নোডের স্ট্যাইল হল `display:none` তখন এর `offsetParent` হবে `null`, এবং `offsetWidth`, `offsetHeight` হবে `0`। +======= For example, `offsetParent` is `null`, and `offsetWidth`, `offsetHeight` are `0` when we created an element, but haven't inserted it into the document yet, or it (or its ancestor) has `display:none`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -We can use this to check if an element is hidden, like this: +কোন একটি এলিমেন্ট অদৃশ্য(hidden) অবস্থায় আছে কিনা তা যাচাই করতে পারি, এভাবে: ```js function isHidden(elem) { @@ -116,68 +120,72 @@ function isHidden(elem) { } ``` +<<<<<<< HEAD +দয়া করে নোট করুন যদি কোন একটি এলিমেন্ট UI তে বিদ্যমান থাকে কিন্তু এর সাইজ শূন্য (যেমন একটি এম্পটি `<div>`) এক্ষেত্রে `isHidden` রিটার্ন করবে `true`। +======= Please note that such `isHidden` returns `true` for elements that are on-screen, but have zero sizes. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```` ## clientTop/Left -Inside the element we have the borders. +এলিমেন্টটিতে বর্ডার আছে। -To measure them, there are properties `clientTop` and `clientLeft`. +এদের পরিমাপের জন্য প্রপার্টিগুলো হল `clientTop` এবং `clientLeft`। -In our example: +আমাদের উদাহরণে: -- `clientLeft = 25` -- left border width -- `clientTop = 25` -- top border width +- `clientLeft = 25` -- বামের বর্ডারের(left border) width +- `clientTop = 25` -- উপরের বর্ডারের(top border) width ![](metric-client-left-top.svg) -...But to be precise -- these properties are not border width/height, but rather relative coordinates of the inner side from the outer side. +...তবে সুনির্দিষ্টভাবে বলতে গেলে -- এই প্রপার্টিগুলো বর্ডারের width/height নির্দেশ করে না, এরা আউটার সাইড হতে ইনার সাইডের কো-অর্ডিনেট রিটার্ন করে। -What's the difference? +পার্থক্যটি কি? -It becomes visible when the document is right-to-left (the operating system is in Arabic or Hebrew languages). The scrollbar is then not on the right, but on the left, and then `clientLeft` also includes the scrollbar width. +আমাদের ডকুমেন্টের কন্টেন্ট ডান-থেকে-বামে (যেমন আরবী বা হিব্রুর জন্য) দেখায়। এক্ষেত্রে স্ক্রলবার ডানের পরিবর্তে বামে দেখায়, এবং তারপর `clientLeft` স্ক্রলবারের width সহ দেখাবে। -In that case, `clientLeft` would be not `25`, but with the scrollbar width `25 + 16 = 41`. +এক্ষেত্রে, `clientLeft` এর মান `25`এর পরিবর্তে স্ক্রলবারের width সহ হবে `25 + 16 = 41`। -Here's the example in hebrew: +হিব্রুর জন্য একটি উদাহরণ দেখুন: ![](metric-client-left-top-rtl.svg) ## clientWidth/Height -These properties provide the size of the area inside the element borders. +এই প্রপার্টিদুটি এলিমেন্টের বর্ডারের ভেতরের অংশটুকু দেখায় (তবে স্ক্রলবার ছাড়া)। -They include the content width together with paddings, but without the scrollbar: +এর মান হবে স্ক্রলবার ব্যতীত ভিতরের কন্টেন্ট এবং প্যাডিংয়ের মানের সমষ্টি: ![](metric-client-width-height.svg) -On the picture above let's first consider `clientHeight`. +উপরের ছবিটিতে প্রথমে `clientHeight` কে বিবেচনা করুন। -There's no horizontal scrollbar, so it's exactly the sum of what's inside the borders: CSS-height `200px` plus top and bottom paddings (`2 * 20px`) total `240px`. +এখানে কোন horizontal (বাম-ডান) স্ক্রলবার নেই, সুতরাং এর মান হবে বর্ডারের ভিতরের মানটি অর্থাৎ: CSS-height `200px` এবং paddings (`2 * 20px`) এর সমষ্টি `240px`। -Now `clientWidth` -- here the content width is not `300px`, but `284px`, because `16px` are occupied by the scrollbar. So the sum is `284px` plus left and right paddings, total `324px`. +এবং `clientWidth` হবে -- এখানে স্ক্রলবার ছাড়া content width হবে `284px`, স্ক্রলবারের কারণে এর মান `300px` হবে না। সুতরাং এর মান হবে content width `284px` এবং paddings (`2 * 20px`) এর সমষ্টি `324px`। -**If there are no paddings, then `clientWidth/Height` is exactly the content area, inside the borders and the scrollbar (if any).** +**যদি কোন `padding` না থাকে, তাহলে বর্ডার এবং স্ক্রলবারের(যে কোন একটি থাকলে) এর মধ্যে `clientWidth/Height` এর মান হবে content area এর সমান।** ![](metric-client-width-nopadding.svg) -So when there's no padding we can use `clientWidth/clientHeight` to get the content area size. +সুতরাং যদি কোন `padding` না থাকে তাহলে content area এর মান পেতে আমরা ব্যবহার করতে পারি `clientWidth/clientHeight`। ## scrollWidth/Height -These properties are like `clientWidth/clientHeight`, but they also include the scrolled out (hidden) parts: +এরা `clientWidth/clientHeight` এর মত, তবে এটি স্ক্রলবারের অদৃশ্য(hidden) অংশটুকুর মানগুলোও সংযুক্ত করে: ![](metric-scroll-width-height.svg) -On the picture above: +উপরের ছবিটিতে দেখছেন: -- `scrollHeight = 723` -- is the full inner height of the content area including the scrolled out parts. -- `scrollWidth = 324` -- is the full inner width, here we have no horizontal scroll, so it equals `clientWidth`. +- `scrollHeight = 723` -- আমাদের সম্পূর্ণ content area এর উচ্চতার অর্থাৎ স্ক্রলবারের অদৃশ্য(hidden) অংশটুকুর মান। +- `scrollWidth = 324` -- বর্ডারের ভিতর যেহেতু কোন আনুভূমিক (বাম-ডান বা horizontal) স্ক্রলবার নেই সুতরাং এর মান হবে `clientWidth` এর সমান। -We can use these properties to expand the element wide to its full width/height. +আমরা কোন এলিমেন্টের সম্পূর্ন দৈর্ঘ্য বা প্রস্থের মান জানতে এই প্রপার্টিগুলো ব্যবহার করতে পারি। -Like this: +যেমন: ```js // expand the element to the full content height @@ -185,7 +193,7 @@ element.style.height = `${element.scrollHeight}px`; ``` ```online -Click the button to expand the element: +এলিমেন্টকে বিস্তৃত করতে বাটনে ক্লিক করুন: <div id="element" style="width:300px;height:200px; padding: 0;overflow: auto; border:1px solid black;">text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text</div> @@ -194,44 +202,44 @@ Click the button to expand the element: ## scrollLeft/scrollTop -Properties `scrollLeft/scrollTop` are the width/height of the hidden, scrolled out part of the element. +`scrollLeft/scrollTop` প্রপার্টিগুলো হল স্ক্রলেবল এলিমেন্টের অদৃশ্য width/height। -On the picture below we can see `scrollHeight` and `scrollTop` for a block with a vertical scroll. +নিচের ছবিতে আমরা ভার্টিকেল স্ক্রলের জন্য `scrollHeight` এবং `scrollTop` প্রপার্টি দেখছি। ![](metric-scroll-top.svg) -In other words, `scrollTop` is "how much is scrolled up". +অন্যভাবে বলা যায়, `scrollTop` হল "কতটুকু স্ক্রল করা হয়েছে"। -````smart header="`scrollLeft/scrollTop` can be modified" -Most of the geometry properties here are read-only, but `scrollLeft/scrollTop` can be changed, and the browser will scroll the element. +````smart header="`scrollLeft/scrollTop` এর মান অ্যাসাইন করা যায়" +বেশিরভাগ জ্যামিতিক প্রপার্টি শুধুমাত্র read-only, কিন্তু `scrollLeft/scrollTop` এর মান রি-অ্যাসাইন করা যায়, এবং ব্রাউজার সে অনুযায়ী এলিমেন্টকে স্ক্রল করতে পারে। ```online -If you click the element below, the code `elem.scrollTop += 10` executes. That makes the element content scroll `10px` down. +যদি আপনি নিচের এলিমেন্টে ক্লিক করেন তাহলে এটি `elem.scrollTop += 10` এক্সিকিউট করে। যার ফলে এলিমেন্টের কন্টেন্ট `10px`নিচে নামবে। <div onclick="this.scrollTop+=10" style="cursor:pointer;border:1px solid black;width:100px;height:80px;overflow:auto">Click<br>Me<br>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9</div> ``` -Setting `scrollTop` to `0` or a big value, such as `1e9` will make the element scroll to the very top/bottom respectively. +`scrollTop` এর মান `0` বা এর বেশি সেট করা উচিত, যেমন `1e9` এলিমেন্টকে যথাক্রমে উপর নিচে স্ক্রল করবে। ```` -## Don't take width/height from CSS +## CSS হতে width/height এর মান না নেয়া -We've just covered geometry properties of DOM elements, that can be used to get widths, heights and calculate distances. +ইতোমধ্যে আমরা DOM এলিমেন্টের জ্যামিতিক প্রপার্টিগুলো জেনেছি, যার সাহায্যে আমরা এলিমেন্টের width/height এবং অন্যান্য প্রপার্টিগুলো পেতে ব্যবহার করতে পারি। -But as we know from the chapter <info:styles-and-classes>, we can read CSS-height and width using `getComputedStyle`. +আমরা পূর্বের <info:styles-and-classes> এই অধ্যায়ে দেখেছি, আমরা CSS এর width/height জানার জন্য `getComputedStyle` ব্যবহার করতে পারব। -So why not to read the width of an element with `getComputedStyle`, like this? +তবে কোন এলিমেন্টের width/height জানতে `getComputedStyle` ব্যবহার করা উচিত হবে না, যেমন ```js run let elem = document.body; -alert( getComputedStyle(elem).width ); // show CSS width for elem +alert( getComputedStyle(elem).width ); // এলিমেন্টের CSS width দেখাবে ``` -Why should we use geometry properties instead? There are two reasons: +এর পরিবর্তে আমাদের কেন জ্যামিতিক প্রপার্টিগুলো ব্যবহার করা উচিত? এর দুটি কারণ আছে: -1. First, CSS `width/height` depend on another property: `box-sizing` that defines "what is" CSS width and height. A change in `box-sizing` for CSS purposes may break such JavaScript. -2. Second, CSS `width/height` may be `auto`, for instance for an inline element: +1. প্রথমত, CSS `width/height` অন্যান্য প্রপার্টির উপর নির্ভর করে: যেমন `box-sizing` যার ফলে width এবং height নির্ভর করে। CSS এর জন্য `box-sizing` ব্যবহারের ফলে আমাদের JavaScript এর মান সঠিক নাও দেখাতে পারে। +2. দ্বিতীয়ত, CSS `width/height` হতে পারে `auto`, যেমন ইনলাইন এলিমেন্টের জন্য: ```html run <span id="elem">Hello!</span> @@ -243,34 +251,34 @@ Why should we use geometry properties instead? There are two reasons: </script> ``` - From the CSS standpoint, `width:auto` is perfectly normal, but in JavaScript we need an exact size in `px` that we can use in calculations. So here CSS width is useless. + এক্ষেত্রে CSS এর জন্য, `width:auto` থাকা স্বাভাবিক, তবে এক্ষেত্রে আমাদের সাইজ `px` এ জানা লাগতে পারে, যার ফলে CSS width এখানে ব্যবহারে কাজে আসবে না। -And there's one more reason: a scrollbar. Sometimes the code that works fine without a scrollbar becomes buggy with it, because a scrollbar takes the space from the content in some browsers. So the real width available for the content is *less* than CSS width. And `clientWidth/clientHeight` take that into account. +আরো একটি কারণ হল, স্ক্রলবার। অনেকসময় কোড সঠিকভাবে কাজ করলেও স্ক্রলবারের জন্য কোডটি **buggy** হতে পারে, কেননা কিছু ব্রাউজারে স্ক্রলবার কন্টেন্ট হতে কিছু স্পেস নেয়। যার ফলে কন্টেন্টের অরিজিনাল width/height আরো কম হবে। এক্ষেত্রে `clientWidth/clientHeight` সঠিক মান দিবে। -...But with `getComputedStyle(elem).width` the situation is different. Some browsers (e.g. Chrome) return the real inner width, minus the scrollbar, and some of them (e.g. Firefox) -- CSS width (ignore the scrollbar). Such cross-browser differences is the reason not to use `getComputedStyle`, but rather rely on geometry properties. +...তবে `getComputedStyle(elem).width` ব্রাউজারভেদে আলাদা আলাদা কাজ করে। কিছু ব্রাউজারে যেমন (Chrome) এটি স্ক্রলবার ব্যতীত অরিজিনাল inner-width এর মান রিটার্ন করে আবার কিছু ব্রাউজার (যেমন Firefox) স্ক্রলবার সহ মান রিটার্ন করে। এক্ষেত্রে ক্রস ব্রাউজার সাপোর্টের width/height এর মান নেয়ার জন্য আমাদের `getComputedStyle` ব্যবহার করা উচিত নই। ```online -If your browser reserves the space for a scrollbar (most browsers for Windows do), then you can test it below. +এখানে আপনি পরীক্ষা করে দেখতে পারেন। [iframe src="cssWidthScroll" link border=1] -The element with text has CSS `width:300px`. +স্ক্রলবার সহ এলিমেন্টের অরিজিনাল `width:300px`। -On a Desktop Windows OS, Firefox, Chrome, Edge all reserve the space for the scrollbar. But Firefox shows `300px`, while Chrome and Edge show less. That's because Firefox returns the CSS width and other browsers return the "real" width. +ডেস্কটপে Windows OS, Firefox, Chrome, Edge সব ব্রাউজার স্ক্রলবার সংরক্ষন করে। তবে এখানে ফায়ারফক্স দেখাবে `300px`, যেখানে অন্যান্য ব্রাউজার Chrome এবং Edge width এর মান আরো কম দেখাবে। ``` -Please note that the described difference is only about reading `getComputedStyle(...).width` from JavaScript, visually everything is correct. +দয়া করে মনে রাখুন এটি শুধুমাত্র জাভাস্ক্রিপ্টের সাহায্যে `getComputedStyle(...).width` এর মান নিতে পার্থক্য হতে পারে, তবে দৃশ্যমান সব সঠিক হতে পারে। -## Summary +## সারাংশ -Elements have the following geometry properties: +একটি এলিমেন্টের নিম্নোক্ত জ্যামিতিক প্রপার্টিগুলো আছে: -- `offsetParent` -- is the nearest positioned ancestor or `td`, `th`, `table`, `body`. -- `offsetLeft/offsetTop` -- coordinates relative to the upper-left edge of `offsetParent`. -- `offsetWidth/offsetHeight` -- "outer" width/height of an element including borders. -- `clientLeft/clientTop` -- the distances from the upper-left outer corner to the upper-left inner (content + padding) corner. For left-to-right OS they are always the widths of left/top borders. For right-to-left OS the vertical scrollbar is on the left so `clientLeft` includes its width too. -- `clientWidth/clientHeight` -- the width/height of the content including paddings, but without the scrollbar. -- `scrollWidth/scrollHeight` -- the width/height of the content, just like `clientWidth/clientHeight`, but also include scrolled-out, invisible part of the element. -- `scrollLeft/scrollTop` -- width/height of the scrolled out upper part of the element, starting from its upper-left corner. +- `offsetParent` -- ইমিডিয়েট প্যারেন্ট যার মধ্যে এলিমেন্টটির অবস্থান অথবা `td`, `th`, `table`, `body`। +- `offsetLeft/offsetTop` -- `offsetParent` এর উপর ভিত্তি করে upper-left এর দিকের কোঅর্ডিনেট. +- `offsetWidth/offsetHeight` -- এলিমেন্টের "outer" width/height(বর্ডারসহ)। +- `clientLeft/clientTop` -- upper-left "outer" কর্নার হতে upper-left "inner" কর্নারের দূরত্ব। left-to-right কন্টেন্টের এর জন্য OS সর্বদা left/top বর্ডারের width সহ হবে। right-to-left এর জন্য ভার্টিকেল স্ক্রলবার left এ অবস্থান করে, তাই এখানে `clientLeft` এর width ও সংযুক্ত হবে। +- `clientWidth/clientHeight` -- কন্টেন্টের অরিজিনাল width/height, স্ক্রলবার ব্যাতীত। +- `scrollWidth/scrollHeight` -- এটিও কন্টেন্টের width/height রিটার্ন করে `clientWidth/clientHeight` এর মত, তবে এটি সম্পূর্ণ কন্টেন্টের সাইজ রিটার্ন করে, অর্থাৎ স্ক্রলবারের কারণে এলিমেন্টের অদৃশ্য কন্টেন্টসহ। +- `scrollLeft/scrollTop` -- এলিমেন্টের স্ক্রল করা অংশের width/height, upper-left কর্নার হতে শুরু হয়। -All properties are read-only except `scrollLeft/scrollTop` that make the browser scroll the element if changed. +`scrollLeft/scrollTop` ব্যতীত বাকীসব প্রপার্টি read-only। \ No newline at end of file diff --git a/2-ui/1-document/09-size-and-scroll/metric-all.svg b/2-ui/1-document/09-size-and-scroll/metric-all.svg index 20a59e18d..a5dadb47f 100644 --- a/2-ui/1-document/09-size-and-scroll/metric-all.svg +++ b/2-ui/1-document/09-size-and-scroll/metric-all.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="670" height="602" viewBox="0 0 670 602"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-all.svg"><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="160" y="94">Introduction</tspan> <tspan x="160" y="122" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="160" y="141" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="160" y="160" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="160" y="179" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="160" y="198" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape and </tspan> <tspan x="160" y="217" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">first appeared in that company’s Navigator </tspan> <tspan x="160" y="236" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">2.0 browser. It has appeared in all </tspan> <tspan x="160" y="255" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">subsequent browsers from Netscape and </tspan> <tspan x="160" y="274" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all browsers from Microsoft starting with </tspan> <tspan x="160" y="293" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Internet Explorer 3.0.</tspan> <tspan x="160" y="312" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">The development of this Standard started </tspan> <tspan x="160" y="331" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in November 1996. The first edition of this </tspan> <tspan x="160" y="350" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Ecma Standard was adopted by the Ecma </tspan> <tspan x="160" y="369" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">General Assembly of June 1997.</tspan> <tspan x="160" y="388" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">That Ecma Standard was submitted to ISO/</tspan> <tspan x="160" y="407" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">IEC JTC 1 for adoption under the fast-track </tspan> <tspan x="160" y="426" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">procedure, and approved as international </tspan> <tspan x="160" y="445" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">standard ISO/IEC 16262, in April 1998. The </tspan> <tspan x="160" y="464" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Ecma General Assembly of June 1998 </tspan> <tspan x="160" y="483" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">approved the second edition of ECMA-262 </tspan> <tspan x="160" y="502" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">to keep it fully aligned with ISO/IEC 16262. </tspan> <tspan x="160" y="521" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Changes between the first and the second </tspan> <tspan x="160" y="540" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">edition are editorial in nature.</tspan></text><path id="Rectangle-1" fill="#DBAF88" d="M491 162v290H117V162h374zm-25 25H142v240h324V187z"/><path id="Rectangle-2" stroke="#DBAF88" stroke-width="2" d="M141 62h326v500H141z"/><text id="scrollHeight" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 592 310)"><tspan x="541.6" y="314.5">scrollHeight</tspan></text><text id="offsetHeight" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 552 310)"><tspan x="501.6" y="314.5">offsetHeight</tspan></text><text id="scrollTop" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 618 125)"><tspan x="580.2" y="129.5">scrollTop</tspan></text><path id="Line-27" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M466.5 62H640"/><path id="Line-28" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M492.5 163h92.14"/><path id="Line-29" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M492.5 451h92.14"/><path id="Line-33" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M467.5 189H640"/><path id="Line-32" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M467.5 427h72.14"/><path id="Line-26" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M466.5 561h148.14"/><path id="Line-25" fill="#C06334" fill-rule="nonzero" d="M605 64.5l7 14h-6v466h6l-7 14-7-14h6v-466h-6l7-14z"/><path id="Line-30" fill="#C06334" fill-rule="nonzero" d="M565 164.5l7 14h-6v255h6l-7 14-7-14h6v-255h-6l7-14z"/><text id="clientHeight" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 510 304)"><tspan x="459.6" y="308.5">clientHeight</tspan></text><path id="Line-34" fill="#C06334" fill-rule="nonzero" d="M523 191.5l7 14h-6v206h6l-7 14-7-14h6v-206h-6l7-14z"/><text id="offsetTop" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 104 83)"><tspan x="66.2" y="87.5">offsetTop</tspan></text><text id="clientLeft" fill="#166388" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 130.5 237)"><tspan x="88.5" y="241.5">clientLeft</tspan></text><path id="Line-36" fill="#C06334" fill-rule="nonzero" d="M117 4.5l7 14h-6v128h6l-7 14-7-14h6v-128h-6l7-14z"/><path id="Line-31" fill="#C06334" fill-rule="nonzero" d="M631 64.5l7 14h-6v96.499l6 .001-7 14-7-14 6-.001V78.5h-6l7-14z"/><path id="Rectangle-14" fill="#FFF" d="M154 73h312v89H154z"/><path id="Rectangle-15" fill="#FFF" d="M154 451h312v93H154z"/><path id="Line-39" fill="#C06334" fill-rule="nonzero" d="M431 479.09l14 7-14 7-.001-6h-271.36l.001 6-14-7 14-7-.001 6h271.36l.001-6z"/><path id="Line-42" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M445.64 510v-84"/><path id="Line-43" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M141.64 510v-84"/><text id="clientWidth" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="261.3" y="478">clientWidth</tspan></text><path id="Line-41" fill="#C06334" fill-rule="nonzero" d="M100 156.09l14 7-14 7v-6H18.639l.001 6-14-7 14-7-.001 6H100v-6z"/><text id="clientTop" fill="#166388" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="147.7" y="178">clientTop</tspan></text><text id="offsetLeft" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="17.5" y="154">offsetLeft</tspan></text><path id="Line-40" fill="#C06334" fill-rule="nonzero" d="M475 522.09l14 7-14 7-.001-6h-340.36l.001 6-14-7 14-7-.001 6h340.36l.001-6z"/><path id="Line-45" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M490.64 551V447"/><path id="Line-44" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M116.64 551V447"/><text id="offsetWidth" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="258.3" y="516">offsetWidth</tspan></text><path id="Rectangle-233" stroke="#AF6E24" stroke-width="2" d="M1 1h668v600H1z"/><g id="Scrollbar" transform="translate(450 187)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g><g id="Group" transform="translate(115.676 162.5)"><g id="Line-4-+-Line-5" stroke="#166388" stroke-linecap="square" stroke-width="2" transform="translate(22.324 18.5)"><path id="Line-4" d="M2.5.5L0 6" transform="matrix(1 0 0 -1 0 6)"/><path id="Line-5" d="M5.5.5L3 6" transform="rotate(180 4.5 3)"/></g><g id="Line-4-+-Line-6" stroke="#166388" stroke-linecap="square" stroke-width="2" transform="matrix(1 0 0 -1 22.324 6.5)"><path id="Line-4" d="M2.5.5L0 6" transform="matrix(1 0 0 -1 0 6)"/><path id="Line-5" d="M5.5.5L3 6" transform="rotate(180 4.5 3)"/></g><path id="Line-49" fill="#166388" stroke="#166388" stroke-linecap="round" stroke-linejoin="bevel" stroke-width="2" d="M25.824 25.5h-25"/><path id="Line-50" fill="#166388" stroke="#166388" stroke-linecap="round" stroke-linejoin="bevel" stroke-width="2" d="M25.324 25V0"/><path id="Line-4" fill="#166388" fill-rule="nonzero" d="M19.328 21.676l.91.414 5.5 2.5.91.413-.589 1.296.09.198-.226.1-.102.227-.198-.09-.385.176-5.5 2.5-.91.414-.828-1.82.91-.414 4.297-1.954-3.797-1.726-.91-.413.828-1.821zM7.32 21.676l.828 1.82-.91.414-3.798 1.726 4.298 1.954.91.413-.827 1.821-.91-.414-5.5-2.5-.387-.176-.196.09-.103-.225-.225-.102.089-.198L0 25.003l.91-.413 5.5-2.5.91-.414z"/></g></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" width="670" height="602" viewBox="0 0 670 602"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-all.svg"><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="160" y="94">Introduction</tspan> <tspan x="160" y="122" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="160" y="141" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="160" y="160" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="160" y="179" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="160" y="198" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape and </tspan> <tspan x="160" y="217" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">first appeared in that company’s Navigator </tspan> <tspan x="160" y="236" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">2.0 browser. It has appeared in all </tspan> <tspan x="160" y="255" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">subsequent browsers from Netscape and </tspan> <tspan x="160" y="274" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all browsers from Microsoft starting with </tspan> <tspan x="160" y="293" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Internet Explorer 3.0.</tspan> <tspan x="160" y="312" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">The development of this Standard started </tspan> <tspan x="160" y="331" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in November 1996. The first edition of this </tspan> <tspan x="160" y="350" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Ecma Standard was adopted by the Ecma </tspan> <tspan x="160" y="369" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">General Assembly of June 1997.</tspan> <tspan x="160" y="388" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">That Ecma Standard was submitted to ISO/</tspan> <tspan x="160" y="407" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">IEC JTC 1 for adoption under the fast-track </tspan> <tspan x="160" y="426" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">procedure, and approved as international </tspan> <tspan x="160" y="445" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">standard ISO/IEC 16262, in April 1998. The </tspan> <tspan x="160" y="464" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Ecma General Assembly of June 1998 </tspan> <tspan x="160" y="483" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">approved the second edition of ECMA-262 </tspan> <tspan x="160" y="502" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">to keep it fully aligned with ISO/IEC 16262. </tspan> <tspan x="160" y="521" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Changes between the first and the second </tspan> <tspan x="160" y="540" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">edition are editorial in nature.</tspan></text><path id="Rectangle-1" fill="#DBAF88" d="M491 162v290H117V162h374zm-25 25H142v240h324V187z"/><path id="Rectangle-2" stroke="#DBAF88" stroke-width="2" d="M141 62h326v500H141z"/><text id="scrollHeight" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 592 310)"><tspan x="541.6" y="314.5">scrollHeight</tspan></text><text id="offsetHeight" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 552 310)"><tspan x="501.6" y="314.5">offsetHeight</tspan></text><text id="scrollTop" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 618 125)"><tspan x="580.2" y="129.5">scrollTop</tspan></text><path id="Line-27" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M466.5 62H640"/><path id="Line-28" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M492.5 163h92.14"/><path id="Line-29" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M492.5 451h92.14"/><path id="Line-33" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M467.5 189H640"/><path id="Line-32" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M467.5 427h72.14"/><path id="Line-26" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M466.5 561h148.14"/><path id="Line-25" fill="#C06334" fill-rule="nonzero" d="M605 64.5l7 14h-6v466h6l-7 14-7-14h6v-466h-6l7-14z"/><path id="Line-30" fill="#C06334" fill-rule="nonzero" d="M565 164.5l7 14h-6v255h6l-7 14-7-14h6v-255h-6l7-14z"/><text id="clientHeight" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 510 304)"><tspan x="459.6" y="308.5">clientHeight</tspan></text><path id="Line-34" fill="#C06334" fill-rule="nonzero" d="M523 191.5l7 14h-6v206h6l-7 14-7-14h6v-206h-6l7-14z"/><text id="offsetTop" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 104 83)"><tspan x="66.2" y="87.5">offsetTop</tspan></text><text id="clientLeft" fill="#166388" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 130.5 237)"><tspan x="88.5" y="241.5">clientLeft</tspan></text><path id="Line-36" fill="#C06334" fill-rule="nonzero" d="M117 4.5l7 14h-6v128h6l-7 14-7-14h6v-128h-6l7-14z"/><path id="Line-31" fill="#C06334" fill-rule="nonzero" d="M631 64.5l7 14h-6v96.499l6 .001-7 14-7-14 6-.001V78.5h-6l7-14z"/><path id="Rectangle-14" fill="#FFF" d="M154 73h312v89H154z"/><path id="Rectangle-15" fill="#FFF" d="M154 451h312v93H154z"/><path id="Line-39" fill="#C06334" fill-rule="nonzero" d="M431 479.09l14 7-14 7-.001-6h-271.36l.001 6-14-7 14-7-.001 6h271.36l.001-6z"/><path id="Line-42" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M445.64 510v-84"/><path id="Line-43" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M141.64 510v-84"/><text id="clientWidth" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="261.3" y="478">clientWidth</tspan></text><path id="Line-41" fill="#C06334" fill-rule="nonzero" d="M100 156.09l14 7-14 7v-6H18.639l.001 6-14-7 14-7-.001 6H100v-6z"/><text id="clientTop" fill="#166388" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="147.7" y="178">clientTop</tspan></text><text id="offsetLeft" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="17.5" y="154">offsetLeft</tspan></text><path id="Line-40" fill="#C06334" fill-rule="nonzero" d="M475 522.09l14 7-14 7-.001-6h-340.36l.001 6-14-7 14-7-.001 6h340.36l.001-6z"/><path id="Line-45" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M490.64 551V447"/><path id="Line-44" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M116.64 551V447"/><text id="offsetWidth" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="258.3" y="516">offsetWidth</tspan></text><path id="Rectangle-233" stroke="#AF6E24" stroke-width="2" d="M1 1h668v600H1z"/><g id="Group" transform="translate(450 187)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g><g id="Group" transform="translate(115.676 162.5)"><g id="Line-4-+-Line-5" stroke="#166388" stroke-linecap="square" stroke-width="2" transform="translate(22.324 18.5)"><path id="Line-4" d="M2.5.5L0 6" transform="matrix(1 0 0 -1 0 6)"/><path id="Line-5" d="M5.5.5L3 6" transform="rotate(180 4.5 3)"/></g><g id="Line-4-+-Line-6" stroke="#166388" stroke-linecap="square" stroke-width="2" transform="matrix(1 0 0 -1 22.324 6.5)"><path id="Line-4" d="M2.5.5L0 6" transform="matrix(1 0 0 -1 0 6)"/><path id="Line-5" d="M5.5.5L3 6" transform="rotate(180 4.5 3)"/></g><path id="Line-49" fill="#166388" stroke="#166388" stroke-linecap="round" stroke-linejoin="bevel" stroke-width="2" d="M25.824 25.5h-25"/><path id="Line-50" fill="#166388" stroke="#166388" stroke-linecap="round" stroke-linejoin="bevel" stroke-width="2" d="M25.324 25V0"/><path id="Line-4" fill="#166388" fill-rule="nonzero" d="M19.328 21.676l.91.414 5.5 2.5.91.413-.589 1.296.09.198-.226.1-.102.227-.198-.09-.385.176-5.5 2.5-.91.414-.828-1.82.91-.414 4.297-1.954-3.797-1.726-.91-.413.828-1.821zM7.32 21.676l.828 1.82-.91.414-3.798 1.726 4.298 1.954.91.413-.827 1.821-.91-.414-5.5-2.5-.387-.176-.196.09-.103-.225-.225-.102.089-.198L0 25.003l.91-.413 5.5-2.5.91-.414z"/></g></g></g></svg> \ No newline at end of file diff --git a/2-ui/1-document/09-size-and-scroll/metric-client-left-top-rtl.svg b/2-ui/1-document/09-size-and-scroll/metric-client-left-top-rtl.svg index e8dd3d60a..dd9e17cf8 100644 --- a/2-ui/1-document/09-size-and-scroll/metric-client-left-top-rtl.svg +++ b/2-ui/1-document/09-size-and-scroll/metric-client-left-top-rtl.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="359" height="316" viewBox="0 0 359 316"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="0%" x2="62.299%" y1="47.096%" y2="47.096%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#FFF" stop-opacity="0"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-3" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-4" x1="0%" x2="62.299%" y1="47.096%" y2="47.096%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#FFF" stop-opacity="0"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-client-left-top-rtl.svg"><path fill="#FFF" d="M0 0h359v316H0z"/><path id="היא-שפת-תסריט-מפורשת" fill="#643B0C" d="M336.484 135v-10.031h4.047V135h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.171c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V135h-4.047zm-20.39-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.72-.479-1.964-.895-3.735-1.25l2.094-3.89c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM302.063 135v-.516c0-2.677.28-4.971.843-6.882.563-1.912 1.51-3.8 2.844-5.665l-.703-.671c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V135h-4.329zm-31.954 0l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.695 7.054-1.13 1.61-2.92 2.607-5.368 2.993l.282 2.312c2.718 0 4.89-.453 6.515-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.162 2.906-7.794 4.359-13.899 4.359zm-21.937 0l1.39-4.234h10.47v-4.157c0-1.948-.193-3.205-.579-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.235.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.374-2.438 1.125-4.563l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.868v6.078L262.671 135h-14.5zm-22.969 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V135h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L233.516 135h-8.313zm-33.547 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V135h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L199.969 135h-8.313zm-18.265 0l-1.766-14.078h-2.516l1.547-4.625h11.078c2.094 0 3.578.078 4.453.234.876.157 1.573.469 2.094.938.875.791 1.313 2.047 1.313 3.765 0 2.292-.662 4.506-1.985 6.641s-3.104 3.854-5.343 5.156c-2.26 1.313-5.22 1.969-8.875 1.969zm3.453-4.625c2.333-.177 4.088-.687 5.265-1.531 1.938-1.407 2.907-3.25 2.907-5.531 0-.938-.328-1.57-.985-1.899-.656-.328-1.948-.492-3.875-.492h-4.469l1.157 9.453zM162.297 135v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.531-4.625h5.047c3.135 0 5.229.458 6.281 1.375a3.773 3.773 0 011.219 1.992c.198.797.297 2.18.297 4.148V135h-4.047zm-14.047-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.963-.895-3.734-1.25l2.094-3.89c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM122.375 135l-2.234-17.688 3.921-1.39 1.797 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.415.576 4.493 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.687 4.703c-2.01.959-4.85 1.438-8.516 1.438zm222.344 38l2.265-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.171-5l3.609-2.094c1.146.958 2.125 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.22 2.008 1.051 1.338 1.676 3.257 1.874 5.757l.531 6.688-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.349-5.031-3.297-5.031-1.125 0-2.07.56-2.836 1.68-.765 1.12-1.497 3.007-2.195 5.664L348.953 173h-4.234zm-19.344 0l1.39-4.234h10.47v-4.157c0-1.948-.193-3.205-.579-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.235.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.047 0-.916.375-2.437 1.125-4.562l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.868v6.078L339.874 173h-14.5zm-7.14 0v-9.594c0-1.927-.32-3.252-.962-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V173h-4.047zm-11.844 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.048c3.135 0 5.229.458 6.28 1.375a3.773 3.773 0 011.22 1.992c.198.797.296 2.18.296 4.149V173h-4.046zm-30.516 0l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.566 5.445-1.696 7.054-1.13 1.61-2.92 2.607-5.367 2.993l.281 2.312c2.719 0 4.89-.453 6.516-1.36 2.844-1.583 4.265-5.192 4.265-10.827v-1.891h4.329v1.562c0 5.615-1.581 9.875-4.743 12.782-3.161 2.906-7.794 4.359-13.898 4.359zM250 173l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V173h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L258.313 173H250zm-31.422 0l2.266-8.688c.416-1.593.625-2.692.625-3.296 0-1.24-1.058-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.53 6.688-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.196 5.664L222.813 173h-4.234zm-19.25 0l1.547-4.625h9.64v-4.438c0-2.416-.202-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L215.53 173h-16.203zm-7.516 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.208 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V173h-4.047zm-23.015 0l-1.766-14.078h-2.515l1.547-4.625h11.078c2.093 0 3.578.078 4.453.234.875.157 1.573.469 2.094.938.875.791 1.312 2.047 1.312 3.765 0 2.292-.661 4.506-1.984 6.641s-3.105 3.854-5.344 5.156c-2.26 1.313-5.219 1.969-8.875 1.969zm3.453-4.625c2.333-.177 4.089-.687 5.266-1.531 1.937-1.407 2.906-3.25 2.906-5.531 0-.938-.328-1.57-.984-1.899-.657-.328-1.948-.492-3.875-.492h-4.47l1.157 9.453zM146.531 173l-1.765-14.078h-2.516l1.547-4.625h11.078c2.094 0 3.578.078 4.453.234.875.157 1.573.469 2.094.938.875.791 1.312 2.047 1.312 3.765 0 2.292-.661 4.506-1.984 6.641s-3.104 3.854-5.344 5.156c-2.26 1.313-5.218 1.969-8.875 1.969zm3.453-4.625c2.334-.177 4.089-.687 5.266-1.531 1.938-1.407 2.906-3.25 2.906-5.531 0-.938-.328-1.57-.984-1.899-.656-.328-1.948-.492-3.875-.492h-4.469l1.156 9.453zM119.531 173l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V173h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L127.844 173h-8.313zm288.766 38v-.516c0-2.677.281-4.971.844-6.882.562-1.912 1.51-3.8 2.843-5.665l-.703-.671c-1.135-1.063-2.161-1.948-3.078-2.657l3.688-2.687c2.448 1.937 5.036 4.51 7.765 7.719.625-1.084 1.04-2.032 1.242-2.844.204-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.484 2.578c-2.063-3.709-4.865-7.355-8.406-10.938-1.26 1.958-1.891 4.948-1.891 8.969V211h-4.328zm-8.438 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.207 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V211h-4.047zm-23.718 0l1.546-4.625h9.641v-4.438c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.829l1.547-4.625h4.954c3.135 0 5.229.458 6.28 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L392.344 211H376.14zm-4.016-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zm-11.594 0h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.953-.718-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zm-27.328 10.891v-14.61h4.047v14.61h-4.047zm-2.515-18.703l1.546-4.625h10.844c1.99 0 3.39.088 4.203.266.813.177 1.495.541 2.047 1.093.802.813 1.203 1.98 1.203 3.5 0 3.052-1.12 5.901-3.36 8.547-2.239 2.646-5.13 4.537-8.671 5.672l1.672-4.969c1.656-.469 3.036-1.383 4.14-2.742 1.105-1.36 1.657-2.82 1.657-4.383 0-.937-.328-1.565-.985-1.883-.656-.317-1.958-.476-3.906-.476h-10.39zM312.594 211l-2.235-17.688 3.922-1.39 1.797 14.453c2.667 0 4.794-.615 6.383-1.844 1.588-1.229 2.383-2.87 2.383-4.922 0-2.24-1.209-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.414.576 4.492 1.727 1.079 1.15 1.618 2.747 1.618 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.688 4.703c-2.01.959-4.849 1.438-8.515 1.438zm-6.516-6.266h-4.062c.729-2.666 1.093-4.573 1.093-5.718 0-.823-.359-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM277.766 211v-14.078h-2.485l1.547-4.625h10.485c3.135 0 5.229.458 6.28 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562L293.578 211h-15.812zm4.062-4.625h9.25v-4.438c0-2.427-.203-3.87-.61-4.328-.406-.458-1.682-.687-3.827-.687h-4.813v9.453zM243.86 211v-10.031h4.047V211h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V211h-4.047zm-37.594 0l2.266-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.531 6.688-1.531 4.625h-9.031l1.546-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.497 3.007-2.195 5.664L224.094 211h-4.235zm-7.453 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V211h-4.047zm-27.75 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V211h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L192.969 211h-8.313zm-19.703 0v-.516c0-2.677.281-4.971.844-6.882.562-1.912 1.51-3.8 2.844-5.665l-.703-.671c-1.136-1.063-2.162-1.948-3.079-2.657l3.688-2.687c2.448 1.937 5.036 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.304-1.927.304-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.546 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V211h-4.329zm-22.14 0l2.265-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.172-5l3.61-2.094c1.145.958 2.125 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.531 6.688-1.531 4.625h-9.031l1.547-4.625h4.921l-.359-4.797c-.25-3.354-1.349-5.031-3.297-5.031-1.125 0-2.07.56-2.836 1.68-.765 1.12-1.497 3.007-2.195 5.664L147.047 211h-4.234zm-23.282 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V211h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L127.844 211h-8.313zm318.844 38.39l1.594-4.718c2.041-.23 3.687-.839 4.937-1.828 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.96-1.844-.641-.323-1.873-.484-3.696-.484h-5.563v-9.625l4.047-1.36v6.36h4.063c2.5 0 4.242.36 5.226 1.078.985.719 1.477 1.984 1.477 3.797 0 3.437-1.318 6.49-3.953 9.156-2.636 2.667-6 4.354-10.094 5.063zm-21.86-.39l-2.202-17.5 3.921-1.578 1.172 9.25c1.136-.281 1.933-.945 2.39-1.992.46-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.695 7.054-1.13 1.61-2.92 2.607-5.367 2.993l.28 2.312c2.72 0 4.891-.453 6.517-1.36 2.843-1.583 4.265-5.192 4.265-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.161 2.906-7.794 4.359-13.898 4.359zm-6.546-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.964-.896-3.735-1.25l2.094-3.891c2.552.51 4.331 1.21 5.336 2.101s1.508 2.206 1.508 3.946c0 1.094-.25 2.76-.75 5l-.406 1.765zm-24.016 6.657l1.594-4.72c2.042-.228 3.687-.838 4.937-1.827 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.96-1.844-.641-.323-1.873-.484-3.696-.484h-5.563v-9.625l4.047-1.36v6.36h4.063c2.5 0 4.242.36 5.226 1.078.985.719 1.477 1.984 1.477 3.797 0 3.437-1.318 6.49-3.953 9.156-2.636 2.667-6 4.354-10.094 5.063zm-8.89-.391v-9.594c0-1.927-.32-3.252-.961-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.208 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V249h-4.046zm-23.72 0l1.548-4.625h9.64v-4.438c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.828l1.546-4.625h4.954c3.135 0 5.229.458 6.28 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L369.547 249h-16.203zm-29.859 0l1.547-4.625h9.64v-4.438c0-2.416-.202-3.856-.608-4.32-.407-.463-1.683-.695-3.829-.695h-5.828l1.547-4.625h4.953c3.136 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L339.688 249h-16.204zm-20.046 0v-.516c0-2.677.28-4.971.843-6.882.563-1.912 1.51-3.8 2.844-5.665l-.703-.671c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V249h-4.329zm-24.266 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.329l1.547-4.625h8.579c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V249h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L287.484 249h-8.312zm-7.094 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.891l1.531-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V249h-4.047zm-14.047-6.266h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.953-.718-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM219.86 249v-.516c0-2.677.282-4.971.844-6.882.563-1.912 1.51-3.8 2.844-5.665l-.703-.671c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.183 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V249h-4.329zm-4.937-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.964-.896-3.734-1.25l2.093-3.891c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM192.75 249l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.234-.948-.678-2.224-1.245-3.828-1.704l1.843-3.437c1.73.427 3.297 1.047 4.703 1.86.907.53 1.532 1.182 1.875 1.952.344.771.516 1.922.516 3.453v7.188L202.328 249h-9.578zm-17.906 0l-2.235-17.688 3.922-1.39 1.797 14.453c2.667 0 4.794-.615 6.383-1.844 1.588-1.229 2.383-2.87 2.383-4.922 0-2.24-1.209-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.414.576 4.492 1.727 1.079 1.15 1.618 2.747 1.618 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.688 4.703c-2.01.959-4.849 1.438-8.515 1.438zm-9.938 0v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V249h-4.047zm-24.625 0l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.234-.948-.678-2.224-1.245-3.828-1.704l1.844-3.437c1.729.427 3.296 1.047 4.703 1.86.906.53 1.53 1.182 1.875 1.952.343.771.515 1.922.515 3.453v7.188L149.86 249h-9.578zm-17.906 0l-2.234-17.688 3.921-1.39 1.797 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.415.576 4.493 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.687 4.703c-2.01.959-4.85 1.438-8.516 1.438zm258.422 38v-9.594c0-1.927-.32-3.252-.961-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.28 2.11.71.635 1.186 1.385 1.43 2.25.245.864.368 2.25.368 4.156V287h-4.047zm-11.844 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.891l1.531-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V287h-4.047zm-29.25 0l1.36-4.14h8.468c-3.833-3.709-6.713-8.162-8.64-13.36l4.093-1.578a28.973 28.973 0 004.938 8.875c1.469-1.781 2.203-3.943 2.203-6.485v-2.015h4.344v1.312c0 3.97-1.36 7.214-4.078 9.735 1.573 1.614 2.974 2.791 4.203 3.531l-1.39 4.125h-15.5zm-20.594 0v-10.031h4.047V287h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.171c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V287h-4.047zm-48.61 2.781l1.563-4.672c1.667 0 3.459-.28 5.375-.843l-3.36-14.985 3.876-1.36 3.265 14.563c1.636-1.24 2.774-2.78 3.415-4.625.64-1.843.96-4.484.96-7.921v-1.641h4.344v1.156c0 3.99-.612 7.318-1.836 9.985-1.224 2.666-3.153 4.88-5.789 6.64-3.698 2.469-7.635 3.703-11.812 3.703zm-14.796-2.39l1.594-4.72c2.041-.228 3.687-.838 4.937-1.827 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.96-1.844-.642-.323-1.873-.484-3.696-.484h-5.563v-9.625l4.047-1.36v6.36h4.063c2.5 0 4.242.36 5.226 1.078.985.719 1.477 1.984 1.477 3.797 0 3.437-1.318 6.49-3.953 9.156-2.636 2.667-6 4.354-10.094 5.063zm-15.938-6.657h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.72-.479-1.964-.895-3.735-1.25l2.094-3.89c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.407 1.765zM236.656 287v-14.078h-9.531l1.547-4.625h16.094l-1.547 4.625h-2.516V287h-4.047zm-12.86-6.266h-4.062c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.964-.895-3.734-1.25l2.093-3.89c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM196.547 287v-14.078h-9.53l1.547-4.625h16.093l-1.547 4.625h-2.515V287h-4.047zm-28.25 0l1.392-4.234h10.468v-4.157c0-1.948-.192-3.205-.578-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.235.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.374-2.438 1.125-4.563l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.868v6.078L182.796 287h-14.5zm-8.75 0v-14.078h-9.53l1.547-4.625h16.093l-1.547 4.625h-2.515V287h-4.047zm-28.25 0l1.392-4.234h10.468v-4.157c0-1.948-.192-3.205-.578-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.235.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.374-2.438 1.125-4.563l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.868v6.078L145.796 287h-14.5zm-7.155 4.625v-14.281c0-2.032-.36-3.344-1.079-3.938-1.041-.875-2.328-1.552-3.859-2.031l1.86-3.453c1.875.562 3.53 1.37 4.968 2.422.834.614 1.401 1.364 1.703 2.25.302.885.454 2.255.454 4.11v14.921h-4.047zM426.797 325v-10.031h4.047V325h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.618-4.32-.411-.463-1.684-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.296 2.177.296 4.156V325h-4.046zm-36.422 0v-.516c0-2.677.281-4.971.844-6.882.562-1.912 1.51-3.8 2.843-5.664l-.703-.672c-1.135-1.063-2.161-1.948-3.078-2.657l3.688-2.687c2.447 1.937 5.036 4.51 7.765 7.719.625-1.084 1.04-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.484 2.578c-2.063-3.709-4.865-7.355-8.406-10.938-1.26 1.958-1.891 4.948-1.891 8.969V325h-4.328zm-4.938-6.266h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.954-.718-.479-1.963-.895-3.734-1.25l2.094-3.89c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM376.86 325l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.235-.948-.677-2.224-1.244-3.828-1.703l1.844-3.437c1.729.427 3.296 1.047 4.703 1.86.906.53 1.531 1.182 1.875 1.952.344.771.515 1.922.515 3.454v7.187L386.438 325h-9.579zm-17.906 0l-2.234-17.688 3.922-1.39 1.796 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.338.104-2.078.313l1.406-4.36a9.102 9.102 0 012.235-.297c1.916 0 3.414.576 4.492 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.291 3.568-5.687 4.704c-2.01.958-4.85 1.437-8.516 1.437zm-9.937 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.048c3.135 0 5.229.458 6.28 1.375a3.773 3.773 0 011.22 1.992c.198.797.296 2.18.296 4.149V325h-4.046zm-24.625 0l1.562-4.625h5.516v-6.078c0-1.646-.354-2.724-1.063-3.235-.948-.677-2.224-1.244-3.828-1.703l1.844-3.437c1.729.427 3.297 1.047 4.703 1.86.906.53 1.531 1.182 1.875 1.952.344.771.516 1.922.516 3.454v7.187L333.969 325h-9.578zm-17.907 0l-2.234-17.688 3.922-1.39 1.797 14.453c2.666 0 4.794-.615 6.383-1.844 1.588-1.229 2.382-2.87 2.382-4.922 0-2.24-1.208-3.359-3.625-3.359-.645 0-1.338.104-2.078.313l1.406-4.36a9.102 9.102 0 012.235-.297c1.917 0 3.414.576 4.492 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437-1.395 2-3.291 3.568-5.687 4.704-2.01.958-4.849 1.437-8.516 1.437zm-32.359 0l1.547-4.625h9.64v-4.438c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.229.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.197.797.296 2.18.296 4.149v6.562h2.5L290.33 325h-16.204zm-19.219 0l1.36-4.14h8.468c-3.833-3.709-6.713-8.162-8.64-13.36l4.094-1.578a28.973 28.973 0 004.937 8.875c1.469-1.781 2.203-3.943 2.203-6.485v-2.015h4.344v1.312c0 3.97-1.36 7.214-4.078 9.735 1.573 1.614 2.974 2.791 4.203 3.531l-1.39 4.125h-15.5zm-8.687 0v-14.078h-9.531l1.546-4.625h16.094l-1.547 4.625h-2.515V325h-4.047zm-40.422 0v-10.031h4.047V325h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.618-4.32-.411-.463-1.684-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V325h-4.047zm-32.813.39l1.594-4.718c2.042-.23 3.687-.839 4.937-1.828 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.96-1.844-.641-.323-1.873-.484-3.696-.484h-5.563v-9.625l4.047-1.36v6.36h4.063c2.5 0 4.242.36 5.226 1.078.985.719 1.477 1.984 1.477 3.797 0 3.437-1.318 6.49-3.953 9.156-2.636 2.667-6 4.354-10.094 5.063zm-21.125 4.235v-14.61h4.047v14.61h-4.047zm-2.516-18.703l1.547-4.625h10.844c1.99 0 3.39.088 4.203.265.813.178 1.495.542 2.047 1.094.802.813 1.203 1.98 1.203 3.5 0 3.052-1.12 5.901-3.36 8.547-2.239 2.646-5.13 4.537-8.671 5.672l1.672-4.969c1.656-.469 3.036-1.383 4.14-2.742 1.105-1.36 1.657-2.82 1.657-4.383 0-.937-.328-1.565-.985-1.883-.656-.317-1.958-.476-3.906-.476h-10.39zM155.625 325v-9.594c0-1.927-.32-3.252-.96-3.976-.642-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.708.635 1.185 1.385 1.43 2.25.244.864.367 2.25.367 4.156V325h-4.047zm-25.516 0v-14.078h-2.53l1.562-4.625h10.89c3.136 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149V325h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-5.203V325h-4.047zm-9.656 0v-5.016h5.016V325h-5.016zm249.906 38v-10.031h4.047V363h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.171c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V363h-4.047zm-36.86 0l-2.202-17.5 3.921-1.578 1.172 9.25c1.136-.281 1.933-.945 2.391-1.992.458-1.047.688-2.716.688-5.008v-1.875h4.343v1.719c0 3.093-.565 5.445-1.695 7.054-1.13 1.61-2.92 2.607-5.367 2.993l.281 2.312c2.719 0 4.89-.453 6.516-1.36 2.843-1.583 4.265-5.192 4.265-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.161 2.906-7.794 4.359-13.898 4.359zm-21.937 0l1.39-4.234h10.47v-4.157c0-1.948-.193-3.205-.579-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.234.671c-.136.396-.203.74-.203 1.032 0 1.01.87 1.583 2.609 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.375-2.438 1.125-4.563l.969-2.703 7.125 1.734c2.312.563 3.815 1.284 4.507 2.164.693.88 1.04 2.503 1.04 4.868v6.078L339.656 363h-14.5zm-20.656 0v-10.031h4.047V363H304.5zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.048l1.547-4.625h11.172c3.136 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V363h-4.047zm-48.14 0l2.265-8.688c.416-1.593.625-2.692.625-3.296 0-1.24-1.058-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.53 6.688-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.195 5.664L274.188 363h-4.235zm-7.376 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.891l1.531-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V363h-4.047zm-31.14 0v-14.078h-2.532l1.563-4.625h10.89c3.136 0 5.23.458 6.282 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149V363h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.204V363h-4.047zm-6.344-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.964-.895-3.734-1.25l2.093-3.89c2.552.51 4.331 1.21 5.336 2.101s1.508 2.206 1.508 3.946c0 1.094-.25 2.76-.75 5l-.406 1.765zM198.204 363l1.546-4.625h9.64v-4.438c0-2.416-.202-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L214.405 363h-16.203zm-21.032 0v-10.031h4.047V363h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.618-4.32-.411-.463-1.684-.695-3.82-.695h-12.047l1.547-4.625H187c3.135 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V363h-4.047zm-46.97 0v-.516c0-2.677.282-4.971.845-6.882.562-1.912 1.51-3.8 2.843-5.664l-.703-.672c-1.135-1.063-2.161-1.948-3.078-2.657l3.688-2.687c2.448 1.937 5.036 4.51 7.765 7.719.625-1.084 1.04-2.032 1.242-2.844.204-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.484 2.578c-2.063-3.709-4.865-7.355-8.406-10.938-1.26 1.958-1.891 4.948-1.891 8.969V363h-4.328zm-24.265 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V363h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L127.844 363h-8.313zm285.016 31.734h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.964-.895-3.734-1.25l2.093-3.89c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM378.812 401l1.532-4.625h8.734c.865-1.99 1.297-3.682 1.297-5.078 0-1.646-.38-2.787-1.14-3.422-.761-.635-2.13-.953-4.11-.953h-5.406l1.531-4.625h5.094c1.781 0 3.15.156 4.11.469.957.312 1.77.87 2.437 1.671 1.062 1.271 1.593 3.063 1.593 5.375 0 1.844-.49 4.032-1.468 6.563L391.5 401h-12.688zm-7.453 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.207 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.156V401h-4.047zm-20.843.39l1.593-4.718c2.042-.23 3.688-.839 4.938-1.828 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.961-1.844-.64-.323-1.873-.484-3.695-.484h-5.563v-9.625l4.047-1.36v6.36h4.062c2.5 0 4.243.36 5.227 1.078.984.719 1.476 1.984 1.476 3.797 0 3.437-1.317 6.49-3.953 9.156-2.635 2.667-6 4.354-10.093 5.063zm-8.891-.39v-9.594c0-1.927-.32-3.252-.96-3.976-.642-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.708.635 1.185 1.385 1.43 2.25.244.864.367 2.25.367 4.156V401h-4.047zm-27.75 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.546-4.625h8.579c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V401h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L322.188 401h-8.313zm-30.688 0l-2.203-17.5 3.922-1.578 1.172 9.25c1.136-.281 1.932-.945 2.39-1.992.46-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.695 7.054-1.13 1.61-2.92 2.607-5.368 2.993l.282 2.312c2.719 0 4.89-.453 6.515-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.162 2.906-7.794 4.359-13.899 4.359zm-21.937 0l1.39-4.234h10.47v-4.157c0-1.948-.193-3.205-.579-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.235.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.375-2.438 1.125-4.563l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.868v6.078L275.75 401h-14.5zm-22.969 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.197.792.296 2.177.296 4.156V401h-4.046v-9.063c0-2.416-.204-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L246.594 401h-8.313zm-31.234 0v-10.031h4.047V401h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.618-4.32-.411-.463-1.684-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V401h-4.047zm-39.72 0l1.548-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.546-4.625h8.578c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V401h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L189.234 401h-8.312zm-13.171.39l-1.594-3.859c2.334-1.135 4.724-2.724 7.172-4.765l-.39-2.485c-.23-1.427-.566-2.398-1.008-2.914-.443-.515-1.42-1.075-2.93-1.68l-.89-.359 1.75-3.406c2.562.844 4.317 1.687 5.265 2.531.625.563 1.055 1.177 1.29 1.844.233.667.517 2.094.85 4.281l.61 4c.448 2.938.89 5.078 1.328 6.422h-4.36c-.28-1.115-.577-2.594-.89-4.438-1.542 1.553-3.61 3.162-6.203 4.829zm-5.375-6.656h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.963-.895-3.734-1.25l2.094-3.89c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM147.281 401v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.156V401h-4.047zm-27.75 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V401h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L127.844 401h-8.313zm218.406 38v-10.031h4.047V439h-4.046zm13.594 0v-9.063c0-2.416-.205-3.856-.617-4.32-.411-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V439h-4.047zm-35.687 0l1.547-4.625h9.64v-4.438c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.828l1.546-4.625h4.954c3.135 0 5.229.458 6.28 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L332.047 439h-16.203zm-18.61 0l-1.765-14.078h-2.516l1.547-4.625h11.078c2.094 0 3.578.078 4.453.234.875.157 1.573.469 2.094.938.875.791 1.313 2.047 1.313 3.765 0 2.292-.662 4.506-1.985 6.641s-3.104 3.854-5.344 5.156c-2.26 1.313-5.218 1.969-8.875 1.969zm3.454-4.625c2.333-.177 4.088-.687 5.265-1.531 1.938-1.407 2.906-3.25 2.906-5.531 0-.938-.328-1.57-.984-1.899-.656-.328-1.948-.492-3.875-.492h-4.469l1.156 9.453zm-11.125-1.64H285.5c.73-2.667 1.094-4.574 1.094-5.72 0-.822-.36-1.473-1.078-1.952-.72-.48-1.964-.896-3.735-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM263.375 439l-1.766-14.078h-2.515l1.547-4.625h11.078c2.094 0 3.578.078 4.453.234.875.157 1.573.469 2.094.938.875.791 1.312 2.047 1.312 3.765 0 2.292-.661 4.506-1.984 6.641s-3.104 3.854-5.344 5.156c-2.26 1.313-5.219 1.969-8.875 1.969zm3.453-4.625c2.333-.177 4.089-.687 5.266-1.531 1.937-1.407 2.906-3.25 2.906-5.531 0-.938-.328-1.57-.984-1.899-.657-.328-1.948-.492-3.875-.492h-4.47l1.157 9.453zm-11.125-1.64h-4.062c.729-2.667 1.093-4.574 1.093-5.72 0-.822-.359-1.473-1.078-1.952-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM224.781 439l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V439h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L233.094 439h-8.313zm-102.89 0v-23.125h4.812v9.39h9.563v-9.39h4.812V439h-4.812v-10.547h-9.563V439h-4.812zm30.703 0v-19.953h-8.281v-3.172h21.39v3.172h-8.281V439h-4.828zm16.344 0v-23.125h6.375l5.562 16.266 5.734-16.266h5.594V439h-4.437v-17.453l-5.641 15.906h-3.875l-5.531-16.14V439h-3.781zm29.046 0v-23.125h4.813v19.844h10.422V439h-15.235zm204.094 38v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.708.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.156V477h-4.047zm-25.625 0l2.266-8.688c.416-1.593.625-2.692.625-3.296 0-1.24-1.058-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.53 6.688-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.195 5.664L380.688 477h-4.235zm-19.984 0v-.516c0-2.677.281-4.971.844-6.882.562-1.912 1.51-3.8 2.843-5.664l-.703-.672c-1.135-1.063-2.161-1.948-3.078-2.657l3.688-2.687c2.447 1.937 5.036 4.51 7.765 7.719.625-1.084 1.04-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.484 2.578c-2.063-3.709-4.865-7.355-8.406-10.938-1.26 1.958-1.891 4.948-1.891 8.969V477h-4.328zm-20.328 0l1.39-4.234H348v-4.157c0-1.948-.193-3.205-.578-3.773-.386-.568-1.386-1.065-3-1.492l-2.985-.781-.234.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.079 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.375-2.438 1.125-4.563l.969-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.039 2.503 1.039 4.868v6.078L350.64 477h-14.5zm-20.11 0l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.696 7.054-1.13 1.61-2.919 2.607-5.367 2.993l.281 2.312c2.72 0 4.891-.453 6.516-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.162 2.906-7.795 4.359-13.899 4.359zm-9.969 0v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.048c3.135 0 5.229.458 6.28 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V477h-4.046zm-33.375 0l1.547-4.625h4.032c-.823-2.115-1.235-4.708-1.235-7.781v-1.672h-2.328l1.547-4.625h8.578c3.136 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V477h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-3.062v1.375c0 3.354.479 6.047 1.437 8.078L281 477h-8.313zm-29.515 0l1.547-4.625h9.64v-4.438c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.229.458 6.281 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L259.375 477h-16.203zm-18.156 0l1.53-4.625h8.735c.865-1.99 1.297-3.682 1.297-5.078 0-1.646-.38-2.787-1.14-3.422-.76-.635-2.13-.953-4.11-.953h-5.406l1.531-4.625h5.094c1.781 0 3.15.156 4.11.469.958.312 1.77.87 2.437 1.671 1.062 1.271 1.594 3.063 1.594 5.375 0 1.844-.49 4.032-1.47 6.563L237.704 477h-12.687zm-7.547 4.625v-18.703h-10l1.547-4.625h12.5v23.328h-4.047zm-36.453-4.234l1.593-4.72c2.042-.228 3.688-.838 4.938-1.827 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.961-1.844-.64-.323-1.873-.484-3.696-.484h-5.562v-9.625l4.047-1.36v6.36h4.062c2.5 0 4.243.36 5.227 1.078.984.719 1.476 1.984 1.476 3.797 0 3.437-1.317 6.49-3.953 9.156-2.635 2.667-6 4.354-10.093 5.063zm-5.391-6.657h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.963-.895-3.734-1.25l2.094-3.89c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM148.828 477l1.36-4.14h8.468c-3.833-3.709-6.713-8.162-8.64-13.36l4.093-1.578a28.973 28.973 0 004.938 8.875c1.469-1.781 2.203-3.943 2.203-6.485v-2.015h4.344v1.312c0 3.97-1.36 7.214-4.078 9.735 1.573 1.614 2.974 2.791 4.203 3.531l-1.39 4.125h-15.5zm-7.078 0v-9.594c0-1.927-.32-3.252-.96-3.976-.642-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.708.635 1.185 1.385 1.43 2.25.244.864.367 2.25.367 4.156V477h-4.047zm-11.844 0v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V477h-4.047zm207.406 31.734h-4.062c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.72-.479-1.964-.895-3.735-1.25l2.094-3.89c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zm-11.593 0h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.964-.895-3.735-1.25l2.094-3.89c2.552.51 4.331 1.21 5.336 2.101s1.508 2.206 1.508 3.946c0 1.094-.25 2.76-.75 5l-.406 1.765zM297.656 515l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.696 7.054-1.13 1.61-2.919 2.607-5.367 2.993l.281 2.312c2.72 0 4.891-.453 6.516-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.162 2.906-7.795 4.359-13.899 4.359zm-10.047 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.207 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.156V515h-4.047zm-25.625 0l2.266-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.531 6.688-1.531 4.625h-9.031l1.546-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.497 3.007-2.195 5.664L266.219 515h-4.235zm-3.953-6.266h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.954-.718-.479-1.963-.895-3.734-1.25l2.094-3.89c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM219.86 515v-.516c0-2.677.282-4.971.844-6.882.563-1.912 1.51-3.8 2.844-5.664l-.703-.672c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.183 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V515h-4.329zm-4.937-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.964-.895-3.734-1.25l2.093-3.89c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM192.75 515l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.235-.948-.677-2.224-1.244-3.828-1.703l1.843-3.437c1.73.427 3.297 1.047 4.703 1.86.907.53 1.532 1.182 1.875 1.952.344.771.516 1.922.516 3.454v7.187L202.328 515h-9.578zm-17.906 0l-2.235-17.688 3.922-1.39 1.797 14.453c2.667 0 4.794-.615 6.383-1.844 1.588-1.229 2.383-2.87 2.383-4.922 0-2.24-1.209-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.414.576 4.492 1.727 1.079 1.15 1.618 2.747 1.618 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.688 4.704c-2.01.958-4.849 1.437-8.515 1.437zm-9.938 0v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V515h-4.047zm-24.625 0l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.235-.948-.677-2.224-1.244-3.828-1.703l1.844-3.437c1.729.427 3.296 1.047 4.703 1.86.906.53 1.53 1.182 1.875 1.952.343.771.515 1.922.515 3.454v7.187L149.86 515h-9.578zm-17.906 0l-2.234-17.688 3.921-1.39 1.797 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.415.576 4.493 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.687 4.704c-2.01.958-4.85 1.437-8.516 1.437zm212.14 38l2.266-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.172-5l3.61-2.094c1.146.958 2.125 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.758l.531 6.687-1.531 4.625h-9.031l1.547-4.625h4.921l-.359-4.797c-.25-3.354-1.349-5.031-3.297-5.031-1.125 0-2.07.56-2.836 1.68-.765 1.12-1.497 3.007-2.195 5.664L338.75 553h-4.234zm-23.28 0l1.546-4.625h4.031c-.822-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.296 2.177.296 4.157V553h-4.046v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-3.062v1.375c0 3.354.479 6.047 1.437 8.078L319.547 553h-8.313zm-7.173 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.208 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V553h-4.046zm-25.515 0v-14.078h-2.531l1.562-4.625h10.89c3.136 0 5.23.458 6.282 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149V553h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.203V553h-4.047zm-20.485 0l1.532-4.625h8.734c.865-1.99 1.297-3.682 1.297-5.078 0-1.646-.38-2.787-1.14-3.422-.761-.635-2.13-.953-4.11-.953h-5.406l1.531-4.625h5.094c1.781 0 3.15.156 4.11.469.957.312 1.77.87 2.437 1.672 1.062 1.27 1.593 3.062 1.593 5.375 0 1.843-.49 4.03-1.468 6.562L270.75 553h-12.688zm-21.156 0l2.266-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.758l.53 6.687-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.497 3.007-2.195 5.664L241.14 553h-4.235zm-3.953-6.266h-4.062c.729-2.666 1.093-4.573 1.093-5.718 0-.823-.359-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM204.641 553v-14.078h-2.485l1.547-4.625h10.484c3.136 0 5.23.458 6.282 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562L220.453 553h-15.812zm4.062-4.625h9.25v-4.438c0-2.427-.203-3.87-.61-4.328-.406-.458-1.682-.687-3.827-.687h-4.813v9.453zm-20.953-1.64h-4.063c.73-2.667 1.094-4.574 1.094-5.72 0-.822-.36-1.473-1.078-1.952-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM172.656 553v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V553h-4.047zm-27.75 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V553h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L153.219 553h-8.313zm-7.094 0v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.048c3.135 0 5.229.458 6.28 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V553h-4.047zm-17.359 0v-5.016h5.016V553h-5.016zm322.688 38.39l1.593-4.718c2.042-.23 3.688-.839 4.938-1.828 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.961-1.844-.64-.323-1.873-.484-3.695-.484h-5.563v-9.625l4.047-1.36v6.36h4.062c2.5 0 4.243.36 5.227 1.078.984.719 1.476 1.984 1.476 3.797 0 3.437-1.317 6.49-3.953 9.156-2.635 2.667-6 4.354-10.093 5.063zm-22.594-.39l2.265-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.171-5l3.609-2.094c1.146.958 2.125 2.265 2.938 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.218 2.008s1.677 3.257 1.875 5.758l.531 6.687-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.349-5.031-3.296-5.031-1.126 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.196 5.664L424.781 591h-4.234zm-21.625 2.781l1.562-4.672c1.667 0 3.459-.28 5.375-.843L402.5 573.28l3.875-1.36 3.266 14.563c1.635-1.24 2.773-2.78 3.414-4.625.64-1.843.96-4.484.96-7.922v-1.64h4.344v1.156c0 3.99-.612 7.318-1.836 9.985-1.224 2.666-3.153 4.88-5.789 6.64-3.698 2.469-7.635 3.703-11.812 3.703zM380.078 591l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.696 7.054-1.13 1.61-2.919 2.607-5.367 2.992l.281 2.313c2.72 0 4.891-.453 6.516-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.581 9.875-4.742 12.782-3.162 2.906-7.795 4.359-13.899 4.359zm-23.562 0v-10.031h4.046V591h-4.046zm13.593 0v-9.063c0-2.416-.205-3.856-.617-4.32-.411-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V591h-4.047zm-21.78 0h-1.923v-5.016h5.016v3.891c0 4.094-1.672 6.14-5.016 6.14v-1.734c1.282 0 1.922-.927 1.922-2.781v-.5zm-31.204 0l1.531-4.625h8.735c.864-1.99 1.296-3.682 1.296-5.078 0-1.646-.38-2.787-1.14-3.422-.76-.635-2.13-.953-4.11-.953h-5.406l1.531-4.625h5.094c1.782 0 3.151.156 4.11.469.958.312 1.77.87 2.437 1.672 1.063 1.27 1.594 3.062 1.594 5.375 0 1.843-.49 4.03-1.469 6.562L329.813 591h-12.688zm-3.953-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.964-.896-3.734-1.25l2.093-3.891c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM298.078 591v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.708.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V591h-4.047zm-25.14 0v-14.078h-2.485l1.547-4.625h10.484c3.136 0 5.23.458 6.282 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562L288.75 591h-15.813zm4.062-4.625h9.25v-4.438c0-2.427-.203-3.87-.61-4.328-.406-.458-1.682-.687-3.827-.687H277v9.453zM265.203 591h-1.922v-5.016h5.016v3.891c0 4.094-1.672 6.14-5.016 6.14v-1.734c1.282 0 1.922-.927 1.922-2.781v-.5zm-20.484 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.048c3.135 0 5.229.458 6.281 1.375a3.773 3.773 0 011.219 1.992c.198.797.297 2.18.297 4.149V591h-4.047zm-17.547 0v-9.594c0-1.927-.32-3.252-.961-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.28 2.11.71.635 1.186 1.385 1.43 2.25.245.864.368 2.25.368 4.155V591h-4.047zm-23.719 0l1.547-4.625h9.64v-4.438c0-2.416-.202-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L219.655 591h-16.203zm-30.594 0v-.516c0-2.677.282-4.971.844-6.882.563-1.912 1.51-3.8 2.844-5.664l-.703-.672c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.183 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V591h-4.329zm-24.265 0l1.547-4.625h4.03c-.822-2.115-1.233-4.708-1.233-7.781v-1.672h-2.329l1.547-4.625h8.578c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V591H164.5v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695H157v1.375c0 3.354.48 6.047 1.438 8.078L156.905 591h-8.312zm-7.094 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.891l1.531-4.625h5.047c3.135 0 5.23.458 6.281 1.375a3.773 3.773 0 011.219 1.992c.198.797.297 2.18.297 4.149V591H141.5zm-14.047-6.266h-4.062c.729-2.666 1.093-4.573 1.093-5.718 0-.823-.359-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM406.016 629v-10.031h4.046V629h-4.046zm13.593 0v-9.063c0-2.416-.205-3.856-.617-4.32-.411-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V629h-4.047zm-36.421 0v-.516c0-2.677.28-4.971.843-6.882.563-1.912 1.51-3.8 2.844-5.664l-.703-.672c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V629h-4.329zm-4.938-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM356.078 629l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.235-.948-.677-2.224-1.244-3.828-1.703l1.843-3.437c1.73.427 3.297 1.047 4.704 1.86.906.53 1.53 1.182 1.875 1.952.343.771.515 1.922.515 3.453v7.188L365.656 629h-9.578zm-17.906 0l-2.235-17.688 3.922-1.39 1.797 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.414.576 4.493 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.688 4.703c-2.01.959-4.848 1.438-8.515 1.438zm-9.938 0v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.282 1.375a3.773 3.773 0 011.218 1.992c.198.797.297 2.18.297 4.149V629h-4.047zm-24.625 0l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.235-.948-.677-2.224-1.244-3.828-1.703l1.844-3.437c1.729.427 3.296 1.047 4.703 1.86.906.53 1.531 1.182 1.875 1.952.344.771.515 1.922.515 3.453v7.188L313.188 629h-9.579zm-17.906 0l-2.234-17.688 3.922-1.39 1.796 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.338.104-2.078.313l1.406-4.36a9.102 9.102 0 012.235-.297c1.916 0 3.414.576 4.492 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.291 3.568-5.687 4.703c-2.01.959-4.85 1.438-8.516 1.438zm-34.078 0v-10.031h4.047V629h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.048l1.547-4.625h11.172c3.136 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.157V629h-4.047zm-37.594 0l2.266-8.688c.416-1.593.625-2.692.625-3.296 0-1.24-1.058-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.218 2.008s1.677 3.257 1.875 5.758l.532 6.687-1.532 4.625h-9.03l1.546-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.196 5.664L231.86 629h-4.234zm-7.453 0v-9.594c0-1.927-.32-3.252-.961-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.28 2.11.71.635 1.186 1.385 1.43 2.25.245.864.368 2.25.368 4.155V629h-4.047zm-13.531 0v-14.078h-9.532l1.547-4.625h16.094l-1.547 4.625h-2.516V629h-4.046zm-16.282 0v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.282 1.375a3.773 3.773 0 011.218 1.992c.198.797.297 2.18.297 4.149V629h-4.047zm-24.625 0l1.563-4.625h5.516v-6.078c0-1.646-.355-2.724-1.063-3.235-.948-.677-2.224-1.244-3.828-1.703l1.844-3.437c1.729.427 3.296 1.047 4.703 1.86.906.53 1.531 1.182 1.875 1.952.344.771.515 1.922.515 3.453v7.188L175.312 629h-9.578zm-3.625-6.266h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.72-.48-1.964-.896-3.735-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.407 1.765zm-11.593 0h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.964-.896-3.735-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM122.203 629v-14.078h-2.484l1.547-4.625h10.484c3.135 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562L138.016 629h-15.813zm4.063-4.625h9.25v-4.438c0-2.427-.203-3.87-.61-4.328-.406-.458-1.682-.687-3.828-.687h-4.812v9.453zM401.844 667l2.265-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.171-5l3.609-2.094c1.146.958 2.125 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.22 2.008 1.051 1.338 1.676 3.257 1.874 5.758l.531 6.687-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.349-5.031-3.297-5.031-1.125 0-2.07.56-2.836 1.68-.765 1.12-1.497 3.007-2.195 5.664L406.078 667h-4.234zm-20.422 0l-2.203-17.5 3.922-1.578 1.171 9.25c1.136-.281 1.933-.945 2.391-1.992.458-1.047.688-2.716.688-5.008v-1.875h4.343v1.719c0 3.093-.565 5.445-1.695 7.054-1.13 1.61-2.92 2.607-5.367 2.992l.281 2.313c2.719 0 4.89-.453 6.516-1.36 2.844-1.583 4.265-5.192 4.265-10.827v-1.891h4.329v1.562c0 5.615-1.581 9.875-4.743 12.782-3.161 2.906-7.794 4.359-13.898 4.359zm-18.969.39l1.594-4.718c2.042-.23 3.687-.839 4.937-1.828 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.96-1.844-.641-.323-1.873-.484-3.696-.484h-5.563v-9.625l4.047-1.36v6.36h4.063c2.5 0 4.242.36 5.226 1.078.985.719 1.477 1.984 1.477 3.797 0 3.437-1.318 6.49-3.953 9.156-2.636 2.667-6 4.354-10.094 5.063zm-20.687-.39l1.546-4.625h9.641v-4.438c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.829l1.547-4.625h4.954c3.135 0 5.229.458 6.28 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L357.969 667h-16.203zm-4.016-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM309.437 667v-14.078h-2.484l1.547-4.625h10.484c3.136 0 5.23.458 6.282 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562L325.25 667h-15.813zm4.063-4.625h9.25v-4.438c0-2.427-.203-3.87-.61-4.328-.406-.458-1.682-.687-3.827-.687H313.5v9.453zM276.078 667l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.696 7.054-1.13 1.61-2.919 2.607-5.367 2.992l.281 2.313c2.72 0 4.891-.453 6.516-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.581 9.875-4.742 12.782-3.162 2.906-7.795 4.359-13.899 4.359zm-21.937 0l1.39-4.234H266v-4.157c0-1.948-.193-3.205-.578-3.773-.386-.568-1.386-1.065-3-1.492l-2.985-.782-.234.672c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.079 3.25c-3.5-.323-5.25-1.671-5.25-4.047 0-.916.375-2.437 1.125-4.562l.969-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.039 2.503 1.039 4.867v6.079L268.64 667h-14.5zm-20.657 0v-10.031h4.047V667h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.157V667h-4.047zm-38.234 0v-7.016c0-2.354.682-4.343 2.047-5.968L206 651.938l1.719-4.016 11.094 4.719-1.672 4.062-3.125-1.36c-.75.938-1.125 2.256-1.125 3.954V667h-4.047zm-9.735 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.207 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V667h-4.047zm-11.734 0v-5.016h5.016V667h-5.016zm-32.156 0v-10.031h4.047V667h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.618-4.32-.411-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V667h-4.047zm-20.391-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.964-.896-3.734-1.25l2.093-3.891c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM120.797 667v-.516c0-2.677.281-4.971.844-6.882.562-1.912 1.51-3.8 2.843-5.664l-.703-.672c-1.135-1.063-2.161-1.948-3.078-2.657l3.688-2.687c2.448 1.937 5.036 4.51 7.765 7.719.625-1.084 1.04-2.032 1.242-2.844.204-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.484 2.578c-2.063-3.709-4.865-7.355-8.406-10.938-1.26 1.958-1.891 4.948-1.891 8.969V667h-4.328zm275.937 31.734h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.953-.718-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.407 1.765zM380.031 705v-14.078H370.5l1.547-4.625h16.094l-1.547 4.625h-2.516V705h-4.047zm-16.36 0v-9.594c0-1.927-.32-3.252-.96-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.28 2.11.71.635 1.186 1.385 1.43 2.25.245.864.368 2.25.368 4.155V705h-4.047zm-26.093 2.781l1.563-4.672c1.666 0 3.458-.28 5.375-.843l-3.36-14.985 3.875-1.36 3.266 14.563c1.635-1.24 2.773-2.78 3.414-4.625.64-1.843.96-4.484.96-7.922v-1.64h4.345v1.156c0 3.99-.612 7.318-1.836 9.985-1.224 2.666-3.154 4.88-5.79 6.64-3.697 2.469-7.635 3.703-11.812 3.703zM318.188 705v-10.031h4.046V705h-4.046zm13.593 0v-9.063c0-2.416-.205-3.856-.617-4.32-.411-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.157V705h-4.047zm-46.234 0l1.547-4.625h9.64v-4.438c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.229.458 6.281 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L301.75 705h-16.203zm-21.688 2.781l1.563-4.672c1.667 0 3.458-.28 5.375-.843l-3.36-14.985 3.875-1.36 3.266 14.563c1.636-1.24 2.774-2.78 3.414-4.625.64-1.843.961-4.484.961-7.922v-1.64h4.344v1.156c0 3.99-.612 7.318-1.836 9.985-1.224 2.666-3.154 4.88-5.79 6.64-3.697 2.469-7.635 3.703-11.812 3.703zm-2.375-9.047h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.953-.718-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.407 1.765zm-27.328 10.891v-14.61h4.047v14.61h-4.047zm-2.515-18.703l1.547-4.625h10.843c1.99 0 3.39.088 4.203.265.813.178 1.495.542 2.047 1.094.802.813 1.203 1.98 1.203 3.5 0 3.052-1.12 5.901-3.359 8.547-2.24 2.646-5.13 4.537-8.672 5.672l1.672-4.969c1.656-.469 3.036-1.383 4.14-2.742 1.105-1.36 1.657-2.82 1.657-4.383 0-.937-.328-1.565-.984-1.883-.657-.317-1.959-.476-3.907-.476h-10.39zM224.406 705v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V705h-4.047zm-38.734 0l1.531-4.625h8.734c.865-1.99 1.297-3.682 1.297-5.078 0-1.646-.38-2.787-1.14-3.422-.76-.635-2.13-.953-4.11-.953h-5.406l1.531-4.625h5.094c1.781 0 3.151.156 4.11.469.958.312 1.77.87 2.437 1.672 1.063 1.27 1.594 3.062 1.594 5.375 0 1.843-.49 4.03-1.469 6.562L198.359 705h-12.687zm-20.422 0l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.566 5.445-1.696 7.054-1.13 1.61-2.92 2.607-5.367 2.992l.281 2.313c2.719 0 4.89-.453 6.516-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.581 9.875-4.743 12.782-3.161 2.906-7.794 4.359-13.898 4.359zm-21.938 0l1.391-4.234h10.469v-4.157c0-1.948-.193-3.205-.578-3.773-.386-.568-1.386-1.065-3-1.492l-2.985-.782-.234.672c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.079 3.25c-3.5-.323-5.25-1.671-5.25-4.047 0-.916.375-2.437 1.125-4.562l.969-2.703 7.125 1.734c2.312.563 3.815 1.284 4.508 2.164.692.88 1.039 2.503 1.039 4.867v6.079L157.813 705h-14.5zm-20.656 0v-10.031h4.047V705h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.546-4.625h11.172c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V705h-4.047zm169.5 38v-10.031h4.047V743h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.048l1.547-4.625h11.172c3.136 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.157V743h-4.047zm-37.594 0l2.266-8.688c.416-1.593.625-2.692.625-3.296 0-1.24-1.058-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.218 2.008s1.677 3.257 1.875 5.758l.532 6.687-1.532 4.625h-9.03l1.546-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.196 5.664L285.984 743h-4.234zm-7.453 0v-9.594c0-1.927-.32-3.252-.961-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.28 2.11.71.635 1.186 1.385 1.43 2.25.245.864.368 2.25.368 4.155V743h-4.047zm-22.703 0l-2.235-17.688 3.922-1.39 1.797 14.453c2.667 0 4.794-.615 6.383-1.844 1.588-1.229 2.383-2.87 2.383-4.922 0-2.24-1.209-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.414.576 4.492 1.727 1.079 1.15 1.618 2.747 1.618 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.688 4.703c-2.01.959-4.849 1.438-8.515 1.438zm-21.813 0l1.547-4.625h9.64v-4.438c0-2.416-.202-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.136 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L245.984 743h-16.203zm-21.687 2.781l1.562-4.672c1.667 0 3.459-.28 5.375-.843l-3.36-14.985 3.876-1.36 3.266 14.563c1.635-1.24 2.773-2.78 3.414-4.625.64-1.843.96-4.484.96-7.922v-1.64h4.344v1.156c0 3.99-.612 7.318-1.836 9.985-1.224 2.666-3.153 4.88-5.789 6.64-3.698 2.469-7.635 3.703-11.812 3.703zM186.39 743l1.547-4.625h4.03c-.822-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.136 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.157V743h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-3.062v1.375c0 3.354.479 6.047 1.437 8.078l-1.53 4.625h-8.313zm-29.516 0l1.547-4.625h9.64v-4.438c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.229.458 6.281 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L173.08 743h-16.204zm-9.125 0v-14.078h-9.531l1.547-4.625h16.093l-1.547 4.625h-2.515V743h-4.047zm-28.25 0l1.39-4.234h10.47v-4.157c0-1.948-.193-3.205-.579-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.782-.234.672c-.136.396-.204.74-.204 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.047 0-.916.375-2.437 1.125-4.562l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.867v6.079L134 743h-14.5z"/><path id="Rectangle-1" stroke="#C06334" stroke-width="2" d="M117 106h282v198H117z"/><g id="Rectangle-209-+-Rectangle-208" fill="#DBAF88" transform="translate(15 15)"><path id="Rectangle-209" d="M0 0h50v300H0z"/><path id="Rectangle-208" d="M165.5-130.5h50v311h-50z" transform="rotate(-90 190.5 25)"/></g><path id="Rectangle-5" fill="url(#linearGradient-1)" d="M158-7h162v447H158z" transform="rotate(-180 239 216.5)"/><path id="Rectangle-6" fill="#FFF" d="M319 8h162v399H319z"/><g id="Group-2" transform="translate(65 65)"><rect id="Rectangle-19" width="20" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="20" height="19" x=".5" y=".5" fill="url(#linearGradient-2)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M10.5 7l4.2 6H6.3z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="20" height="19" x=".5" y=".5" fill="url(#linearGradient-2)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M10.5 7l4.2 6H6.3z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-3)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="20" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(5.25 20)"><path id="Rectangle-22" d="M.5.5H10v1H.5z"/><path id="Rectangle-23" d="M.5 3.5H10v1H.5z"/><path id="Rectangle-24" d="M.5 6.5H10v1H.5z"/><path id="Rectangle-25" d="M.5 9.5H10v1H.5z"/></g></g></g><path id="Line-7" fill="#C06334" fill-rule="nonzero" d="M65.41 15.68l7 14h-6.001v20h6.001l-7 14-7-14h5.999v-20H58.41l7-14z"/><path id="Line-28" fill="#C06334" fill-rule="nonzero" d="M72 57.68l14 7-14 7-.001-6h-42.59l.001 6-14-7 14-7-.001 6h42.59l.001-6z"/><text id="clientTop:25px-=-bor" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="78.7" y="43" fill="#643B0C">clientTop:</tspan> <tspan x="150.7" y="43" fill="#166388">25px</tspan> <tspan x="179.5" y="43" fill="#1C85B5"> </tspan> <tspan x="186.7" y="43" fill="#643B0C">= border</tspan></text><text id="clientLeft:41px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 40.32 125)"><tspan x="-13.68" y="129" fill="#643B0C">clientLeft:</tspan> <tspan x="65.52" y="129" fill="#166388">41px</tspan></text><g id="Rectangle-8-+-Rectangle-7" transform="translate(-41.5 128.5)"><path id="Rectangle-8" fill="url(#linearGradient-4)" d="M151.5-151.5h144v447h-144z" transform="rotate(-90 223.5 72)"/><path id="Rectangle-7" fill="#FFF" d="M151.5 24.5h162v399h-162z" transform="rotate(90 232.5 224)"/></g></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" width="359" height="316" viewBox="0 0 359 316"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="0%" x2="62.299%" y1="47.096%" y2="47.096%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#FFF"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-3" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-client-left-top-rtl.svg"><path fill="#FFF" d="M0 0h359v316H0z"/><path id="היא-שפת-תסריט-מפורשת" fill="#643B0C" d="M336.484 135v-10.031h4.047V135h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.171c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V135h-4.047zm-20.39-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.72-.479-1.964-.895-3.735-1.25l2.094-3.89c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM302.063 135v-.516c0-2.677.28-4.971.843-6.882.563-1.912 1.51-3.8 2.844-5.665l-.703-.671c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V135h-4.329zm-31.954 0l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.695 7.054-1.13 1.61-2.92 2.607-5.368 2.993l.282 2.312c2.718 0 4.89-.453 6.515-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.162 2.906-7.794 4.359-13.899 4.359zm-21.937 0l1.39-4.234h10.47v-4.157c0-1.948-.193-3.205-.579-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.235.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.374-2.438 1.125-4.563l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.868v6.078L262.671 135h-14.5zm-22.969 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V135h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L233.516 135h-8.313zm-33.547 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V135h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L199.969 135h-8.313zm-18.265 0l-1.766-14.078h-2.516l1.547-4.625h11.078c2.094 0 3.578.078 4.453.234.876.157 1.573.469 2.094.938.875.791 1.313 2.047 1.313 3.765 0 2.292-.662 4.506-1.985 6.641s-3.104 3.854-5.343 5.156c-2.26 1.313-5.22 1.969-8.875 1.969zm3.453-4.625c2.333-.177 4.088-.687 5.265-1.531 1.938-1.407 2.907-3.25 2.907-5.531 0-.938-.328-1.57-.985-1.899-.656-.328-1.948-.492-3.875-.492h-4.469l1.157 9.453zM162.297 135v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.531-4.625h5.047c3.135 0 5.229.458 6.281 1.375a3.773 3.773 0 011.219 1.992c.198.797.297 2.18.297 4.148V135h-4.047zm-14.047-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.963-.895-3.734-1.25l2.094-3.89c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM122.375 135l-2.234-17.688 3.921-1.39 1.797 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.415.576 4.493 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.687 4.703c-2.01.959-4.85 1.438-8.516 1.438zm222.344 38l2.265-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.171-5l3.609-2.094c1.146.958 2.125 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.22 2.008 1.051 1.338 1.676 3.257 1.874 5.757l.531 6.688-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.349-5.031-3.297-5.031-1.125 0-2.07.56-2.836 1.68-.765 1.12-1.497 3.007-2.195 5.664L348.953 173h-4.234zm-19.344 0l1.39-4.234h10.47v-4.157c0-1.948-.193-3.205-.579-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.235.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.047 0-.916.375-2.437 1.125-4.562l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.868v6.078L339.874 173h-14.5zm-7.14 0v-9.594c0-1.927-.32-3.252-.962-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V173h-4.047zm-11.844 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.048c3.135 0 5.229.458 6.28 1.375a3.773 3.773 0 011.22 1.992c.198.797.296 2.18.296 4.149V173h-4.046zm-30.516 0l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.566 5.445-1.696 7.054-1.13 1.61-2.92 2.607-5.367 2.993l.281 2.312c2.719 0 4.89-.453 6.516-1.36 2.844-1.583 4.265-5.192 4.265-10.827v-1.891h4.329v1.562c0 5.615-1.581 9.875-4.743 12.782-3.161 2.906-7.794 4.359-13.898 4.359zM250 173l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V173h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L258.313 173H250zm-31.422 0l2.266-8.688c.416-1.593.625-2.692.625-3.296 0-1.24-1.058-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.53 6.688-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.196 5.664L222.813 173h-4.234zm-19.25 0l1.547-4.625h9.64v-4.438c0-2.416-.202-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L215.53 173h-16.203zm-7.516 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.208 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V173h-4.047zm-23.015 0l-1.766-14.078h-2.515l1.547-4.625h11.078c2.093 0 3.578.078 4.453.234.875.157 1.573.469 2.094.938.875.791 1.312 2.047 1.312 3.765 0 2.292-.661 4.506-1.984 6.641s-3.105 3.854-5.344 5.156c-2.26 1.313-5.219 1.969-8.875 1.969zm3.453-4.625c2.333-.177 4.089-.687 5.266-1.531 1.937-1.407 2.906-3.25 2.906-5.531 0-.938-.328-1.57-.984-1.899-.657-.328-1.948-.492-3.875-.492h-4.47l1.157 9.453zM146.531 173l-1.765-14.078h-2.516l1.547-4.625h11.078c2.094 0 3.578.078 4.453.234.875.157 1.573.469 2.094.938.875.791 1.312 2.047 1.312 3.765 0 2.292-.661 4.506-1.984 6.641s-3.104 3.854-5.344 5.156c-2.26 1.313-5.218 1.969-8.875 1.969zm3.453-4.625c2.334-.177 4.089-.687 5.266-1.531 1.938-1.407 2.906-3.25 2.906-5.531 0-.938-.328-1.57-.984-1.899-.656-.328-1.948-.492-3.875-.492h-4.469l1.156 9.453zM119.531 173l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V173h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L127.844 173h-8.313zm288.766 38v-.516c0-2.677.281-4.971.844-6.882.562-1.912 1.51-3.8 2.843-5.665l-.703-.671c-1.135-1.063-2.161-1.948-3.078-2.657l3.688-2.687c2.448 1.937 5.036 4.51 7.765 7.719.625-1.084 1.04-2.032 1.242-2.844.204-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.484 2.578c-2.063-3.709-4.865-7.355-8.406-10.938-1.26 1.958-1.891 4.948-1.891 8.969V211h-4.328zm-8.438 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.207 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V211h-4.047zm-23.718 0l1.546-4.625h9.641v-4.438c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.829l1.547-4.625h4.954c3.135 0 5.229.458 6.28 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L392.344 211H376.14zm-4.016-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zm-11.594 0h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.953-.718-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zm-27.328 10.891v-14.61h4.047v14.61h-4.047zm-2.515-18.703l1.546-4.625h10.844c1.99 0 3.39.088 4.203.266.813.177 1.495.541 2.047 1.093.802.813 1.203 1.98 1.203 3.5 0 3.052-1.12 5.901-3.36 8.547-2.239 2.646-5.13 4.537-8.671 5.672l1.672-4.969c1.656-.469 3.036-1.383 4.14-2.742 1.105-1.36 1.657-2.82 1.657-4.383 0-.937-.328-1.565-.985-1.883-.656-.317-1.958-.476-3.906-.476h-10.39zM312.594 211l-2.235-17.688 3.922-1.39 1.797 14.453c2.667 0 4.794-.615 6.383-1.844 1.588-1.229 2.383-2.87 2.383-4.922 0-2.24-1.209-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.414.576 4.492 1.727 1.079 1.15 1.618 2.747 1.618 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.688 4.703c-2.01.959-4.849 1.438-8.515 1.438zm-6.516-6.266h-4.062c.729-2.666 1.093-4.573 1.093-5.718 0-.823-.359-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM277.766 211v-14.078h-2.485l1.547-4.625h10.485c3.135 0 5.229.458 6.28 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562L293.578 211h-15.812zm4.062-4.625h9.25v-4.438c0-2.427-.203-3.87-.61-4.328-.406-.458-1.682-.687-3.827-.687h-4.813v9.453zM243.86 211v-10.031h4.047V211h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V211h-4.047zm-37.594 0l2.266-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.531 6.688-1.531 4.625h-9.031l1.546-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.497 3.007-2.195 5.664L224.094 211h-4.235zm-7.453 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V211h-4.047zm-27.75 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V211h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L192.969 211h-8.313zm-19.703 0v-.516c0-2.677.281-4.971.844-6.882.562-1.912 1.51-3.8 2.844-5.665l-.703-.671c-1.136-1.063-2.162-1.948-3.079-2.657l3.688-2.687c2.448 1.937 5.036 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.304-1.927.304-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.546 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V211h-4.329zm-22.14 0l2.265-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.172-5l3.61-2.094c1.145.958 2.125 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.531 6.688-1.531 4.625h-9.031l1.547-4.625h4.921l-.359-4.797c-.25-3.354-1.349-5.031-3.297-5.031-1.125 0-2.07.56-2.836 1.68-.765 1.12-1.497 3.007-2.195 5.664L147.047 211h-4.234zm-23.282 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V211h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L127.844 211h-8.313zm318.844 38.39l1.594-4.718c2.041-.23 3.687-.839 4.937-1.828 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.96-1.844-.641-.323-1.873-.484-3.696-.484h-5.563v-9.625l4.047-1.36v6.36h4.063c2.5 0 4.242.36 5.226 1.078.985.719 1.477 1.984 1.477 3.797 0 3.437-1.318 6.49-3.953 9.156-2.636 2.667-6 4.354-10.094 5.063zm-21.86-.39l-2.202-17.5 3.921-1.578 1.172 9.25c1.136-.281 1.933-.945 2.39-1.992.46-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.695 7.054-1.13 1.61-2.92 2.607-5.367 2.993l.28 2.312c2.72 0 4.891-.453 6.517-1.36 2.843-1.583 4.265-5.192 4.265-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.161 2.906-7.794 4.359-13.898 4.359zm-6.546-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.964-.896-3.735-1.25l2.094-3.891c2.552.51 4.331 1.21 5.336 2.101s1.508 2.206 1.508 3.946c0 1.094-.25 2.76-.75 5l-.406 1.765zm-24.016 6.657l1.594-4.72c2.042-.228 3.687-.838 4.937-1.827 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.96-1.844-.641-.323-1.873-.484-3.696-.484h-5.563v-9.625l4.047-1.36v6.36h4.063c2.5 0 4.242.36 5.226 1.078.985.719 1.477 1.984 1.477 3.797 0 3.437-1.318 6.49-3.953 9.156-2.636 2.667-6 4.354-10.094 5.063zm-8.89-.391v-9.594c0-1.927-.32-3.252-.961-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.208 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V249h-4.046zm-23.72 0l1.548-4.625h9.64v-4.438c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.828l1.546-4.625h4.954c3.135 0 5.229.458 6.28 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L369.547 249h-16.203zm-29.859 0l1.547-4.625h9.64v-4.438c0-2.416-.202-3.856-.608-4.32-.407-.463-1.683-.695-3.829-.695h-5.828l1.547-4.625h4.953c3.136 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L339.688 249h-16.204zm-20.046 0v-.516c0-2.677.28-4.971.843-6.882.563-1.912 1.51-3.8 2.844-5.665l-.703-.671c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V249h-4.329zm-24.266 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.329l1.547-4.625h8.579c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V249h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L287.484 249h-8.312zm-7.094 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.891l1.531-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V249h-4.047zm-14.047-6.266h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.953-.718-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM219.86 249v-.516c0-2.677.282-4.971.844-6.882.563-1.912 1.51-3.8 2.844-5.665l-.703-.671c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.183 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V249h-4.329zm-4.937-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.964-.896-3.734-1.25l2.093-3.891c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM192.75 249l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.234-.948-.678-2.224-1.245-3.828-1.704l1.843-3.437c1.73.427 3.297 1.047 4.703 1.86.907.53 1.532 1.182 1.875 1.952.344.771.516 1.922.516 3.453v7.188L202.328 249h-9.578zm-17.906 0l-2.235-17.688 3.922-1.39 1.797 14.453c2.667 0 4.794-.615 6.383-1.844 1.588-1.229 2.383-2.87 2.383-4.922 0-2.24-1.209-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.414.576 4.492 1.727 1.079 1.15 1.618 2.747 1.618 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.688 4.703c-2.01.959-4.849 1.438-8.515 1.438zm-9.938 0v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V249h-4.047zm-24.625 0l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.234-.948-.678-2.224-1.245-3.828-1.704l1.844-3.437c1.729.427 3.296 1.047 4.703 1.86.906.53 1.53 1.182 1.875 1.952.343.771.515 1.922.515 3.453v7.188L149.86 249h-9.578zm-17.906 0l-2.234-17.688 3.921-1.39 1.797 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.415.576 4.493 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.687 4.703c-2.01.959-4.85 1.438-8.516 1.438zm258.422 38v-9.594c0-1.927-.32-3.252-.961-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.28 2.11.71.635 1.186 1.385 1.43 2.25.245.864.368 2.25.368 4.156V287h-4.047zm-11.844 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.891l1.531-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V287h-4.047zm-29.25 0l1.36-4.14h8.468c-3.833-3.709-6.713-8.162-8.64-13.36l4.093-1.578a28.973 28.973 0 004.938 8.875c1.469-1.781 2.203-3.943 2.203-6.485v-2.015h4.344v1.312c0 3.97-1.36 7.214-4.078 9.735 1.573 1.614 2.974 2.791 4.203 3.531l-1.39 4.125h-15.5zm-20.594 0v-10.031h4.047V287h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.171c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V287h-4.047zm-48.61 2.781l1.563-4.672c1.667 0 3.459-.28 5.375-.843l-3.36-14.985 3.876-1.36 3.265 14.563c1.636-1.24 2.774-2.78 3.415-4.625.64-1.843.96-4.484.96-7.921v-1.641h4.344v1.156c0 3.99-.612 7.318-1.836 9.985-1.224 2.666-3.153 4.88-5.789 6.64-3.698 2.469-7.635 3.703-11.812 3.703zm-14.796-2.39l1.594-4.72c2.041-.228 3.687-.838 4.937-1.827 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.96-1.844-.642-.323-1.873-.484-3.696-.484h-5.563v-9.625l4.047-1.36v6.36h4.063c2.5 0 4.242.36 5.226 1.078.985.719 1.477 1.984 1.477 3.797 0 3.437-1.318 6.49-3.953 9.156-2.636 2.667-6 4.354-10.094 5.063zm-15.938-6.657h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.72-.479-1.964-.895-3.735-1.25l2.094-3.89c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.407 1.765zM236.656 287v-14.078h-9.531l1.547-4.625h16.094l-1.547 4.625h-2.516V287h-4.047zm-12.86-6.266h-4.062c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.964-.895-3.734-1.25l2.093-3.89c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM196.547 287v-14.078h-9.53l1.547-4.625h16.093l-1.547 4.625h-2.515V287h-4.047zm-28.25 0l1.392-4.234h10.468v-4.157c0-1.948-.192-3.205-.578-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.235.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.374-2.438 1.125-4.563l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.868v6.078L182.796 287h-14.5zm-8.75 0v-14.078h-9.53l1.547-4.625h16.093l-1.547 4.625h-2.515V287h-4.047zm-28.25 0l1.392-4.234h10.468v-4.157c0-1.948-.192-3.205-.578-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.235.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.374-2.438 1.125-4.563l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.868v6.078L145.796 287h-14.5zm-7.155 4.625v-14.281c0-2.032-.36-3.344-1.079-3.938-1.041-.875-2.328-1.552-3.859-2.031l1.86-3.453c1.875.562 3.53 1.37 4.968 2.422.834.614 1.401 1.364 1.703 2.25.302.885.454 2.255.454 4.11v14.921h-4.047zM426.797 325v-10.031h4.047V325h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.618-4.32-.411-.463-1.684-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.296 2.177.296 4.156V325h-4.046zm-36.422 0v-.516c0-2.677.281-4.971.844-6.882.562-1.912 1.51-3.8 2.843-5.664l-.703-.672c-1.135-1.063-2.161-1.948-3.078-2.657l3.688-2.687c2.447 1.937 5.036 4.51 7.765 7.719.625-1.084 1.04-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.484 2.578c-2.063-3.709-4.865-7.355-8.406-10.938-1.26 1.958-1.891 4.948-1.891 8.969V325h-4.328zm-4.938-6.266h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.954-.718-.479-1.963-.895-3.734-1.25l2.094-3.89c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM376.86 325l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.235-.948-.677-2.224-1.244-3.828-1.703l1.844-3.437c1.729.427 3.296 1.047 4.703 1.86.906.53 1.531 1.182 1.875 1.952.344.771.515 1.922.515 3.454v7.187L386.438 325h-9.579zm-17.906 0l-2.234-17.688 3.922-1.39 1.796 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.338.104-2.078.313l1.406-4.36a9.102 9.102 0 012.235-.297c1.916 0 3.414.576 4.492 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.291 3.568-5.687 4.704c-2.01.958-4.85 1.437-8.516 1.437zm-9.937 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.048c3.135 0 5.229.458 6.28 1.375a3.773 3.773 0 011.22 1.992c.198.797.296 2.18.296 4.149V325h-4.046zm-24.625 0l1.562-4.625h5.516v-6.078c0-1.646-.354-2.724-1.063-3.235-.948-.677-2.224-1.244-3.828-1.703l1.844-3.437c1.729.427 3.297 1.047 4.703 1.86.906.53 1.531 1.182 1.875 1.952.344.771.516 1.922.516 3.454v7.187L333.969 325h-9.578zm-17.907 0l-2.234-17.688 3.922-1.39 1.797 14.453c2.666 0 4.794-.615 6.383-1.844 1.588-1.229 2.382-2.87 2.382-4.922 0-2.24-1.208-3.359-3.625-3.359-.645 0-1.338.104-2.078.313l1.406-4.36a9.102 9.102 0 012.235-.297c1.917 0 3.414.576 4.492 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437-1.395 2-3.291 3.568-5.687 4.704-2.01.958-4.849 1.437-8.516 1.437zm-32.359 0l1.547-4.625h9.64v-4.438c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.229.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.197.797.296 2.18.296 4.149v6.562h2.5L290.33 325h-16.204zm-19.219 0l1.36-4.14h8.468c-3.833-3.709-6.713-8.162-8.64-13.36l4.094-1.578a28.973 28.973 0 004.937 8.875c1.469-1.781 2.203-3.943 2.203-6.485v-2.015h4.344v1.312c0 3.97-1.36 7.214-4.078 9.735 1.573 1.614 2.974 2.791 4.203 3.531l-1.39 4.125h-15.5zm-8.687 0v-14.078h-9.531l1.546-4.625h16.094l-1.547 4.625h-2.515V325h-4.047zm-40.422 0v-10.031h4.047V325h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.618-4.32-.411-.463-1.684-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V325h-4.047zm-32.813.39l1.594-4.718c2.042-.23 3.687-.839 4.937-1.828 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.96-1.844-.641-.323-1.873-.484-3.696-.484h-5.563v-9.625l4.047-1.36v6.36h4.063c2.5 0 4.242.36 5.226 1.078.985.719 1.477 1.984 1.477 3.797 0 3.437-1.318 6.49-3.953 9.156-2.636 2.667-6 4.354-10.094 5.063zm-21.125 4.235v-14.61h4.047v14.61h-4.047zm-2.516-18.703l1.547-4.625h10.844c1.99 0 3.39.088 4.203.265.813.178 1.495.542 2.047 1.094.802.813 1.203 1.98 1.203 3.5 0 3.052-1.12 5.901-3.36 8.547-2.239 2.646-5.13 4.537-8.671 5.672l1.672-4.969c1.656-.469 3.036-1.383 4.14-2.742 1.105-1.36 1.657-2.82 1.657-4.383 0-.937-.328-1.565-.985-1.883-.656-.317-1.958-.476-3.906-.476h-10.39zM155.625 325v-9.594c0-1.927-.32-3.252-.96-3.976-.642-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.708.635 1.185 1.385 1.43 2.25.244.864.367 2.25.367 4.156V325h-4.047zm-25.516 0v-14.078h-2.53l1.562-4.625h10.89c3.136 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149V325h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-5.203V325h-4.047zm-9.656 0v-5.016h5.016V325h-5.016zm249.906 38v-10.031h4.047V363h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.171c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V363h-4.047zm-36.86 0l-2.202-17.5 3.921-1.578 1.172 9.25c1.136-.281 1.933-.945 2.391-1.992.458-1.047.688-2.716.688-5.008v-1.875h4.343v1.719c0 3.093-.565 5.445-1.695 7.054-1.13 1.61-2.92 2.607-5.367 2.993l.281 2.312c2.719 0 4.89-.453 6.516-1.36 2.843-1.583 4.265-5.192 4.265-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.161 2.906-7.794 4.359-13.898 4.359zm-21.937 0l1.39-4.234h10.47v-4.157c0-1.948-.193-3.205-.579-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.234.671c-.136.396-.203.74-.203 1.032 0 1.01.87 1.583 2.609 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.375-2.438 1.125-4.563l.969-2.703 7.125 1.734c2.312.563 3.815 1.284 4.507 2.164.693.88 1.04 2.503 1.04 4.868v6.078L339.656 363h-14.5zm-20.656 0v-10.031h4.047V363H304.5zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.048l1.547-4.625h11.172c3.136 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V363h-4.047zm-48.14 0l2.265-8.688c.416-1.593.625-2.692.625-3.296 0-1.24-1.058-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.53 6.688-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.195 5.664L274.188 363h-4.235zm-7.376 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.891l1.531-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V363h-4.047zm-31.14 0v-14.078h-2.532l1.563-4.625h10.89c3.136 0 5.23.458 6.282 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149V363h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.204V363h-4.047zm-6.344-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.964-.895-3.734-1.25l2.093-3.89c2.552.51 4.331 1.21 5.336 2.101s1.508 2.206 1.508 3.946c0 1.094-.25 2.76-.75 5l-.406 1.765zM198.204 363l1.546-4.625h9.64v-4.438c0-2.416-.202-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L214.405 363h-16.203zm-21.032 0v-10.031h4.047V363h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.618-4.32-.411-.463-1.684-.695-3.82-.695h-12.047l1.547-4.625H187c3.135 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V363h-4.047zm-46.97 0v-.516c0-2.677.282-4.971.845-6.882.562-1.912 1.51-3.8 2.843-5.664l-.703-.672c-1.135-1.063-2.161-1.948-3.078-2.657l3.688-2.687c2.448 1.937 5.036 4.51 7.765 7.719.625-1.084 1.04-2.032 1.242-2.844.204-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.484 2.578c-2.063-3.709-4.865-7.355-8.406-10.938-1.26 1.958-1.891 4.948-1.891 8.969V363h-4.328zm-24.265 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V363h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L127.844 363h-8.313zm285.016 31.734h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.964-.895-3.734-1.25l2.093-3.89c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM378.812 401l1.532-4.625h8.734c.865-1.99 1.297-3.682 1.297-5.078 0-1.646-.38-2.787-1.14-3.422-.761-.635-2.13-.953-4.11-.953h-5.406l1.531-4.625h5.094c1.781 0 3.15.156 4.11.469.957.312 1.77.87 2.437 1.671 1.062 1.271 1.593 3.063 1.593 5.375 0 1.844-.49 4.032-1.468 6.563L391.5 401h-12.688zm-7.453 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.207 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.156V401h-4.047zm-20.843.39l1.593-4.718c2.042-.23 3.688-.839 4.938-1.828 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.961-1.844-.64-.323-1.873-.484-3.695-.484h-5.563v-9.625l4.047-1.36v6.36h4.062c2.5 0 4.243.36 5.227 1.078.984.719 1.476 1.984 1.476 3.797 0 3.437-1.317 6.49-3.953 9.156-2.635 2.667-6 4.354-10.093 5.063zm-8.891-.39v-9.594c0-1.927-.32-3.252-.96-3.976-.642-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.708.635 1.185 1.385 1.43 2.25.244.864.367 2.25.367 4.156V401h-4.047zm-27.75 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.546-4.625h8.579c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V401h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L322.188 401h-8.313zm-30.688 0l-2.203-17.5 3.922-1.578 1.172 9.25c1.136-.281 1.932-.945 2.39-1.992.46-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.695 7.054-1.13 1.61-2.92 2.607-5.368 2.993l.282 2.312c2.719 0 4.89-.453 6.515-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.162 2.906-7.794 4.359-13.899 4.359zm-21.937 0l1.39-4.234h10.47v-4.157c0-1.948-.193-3.205-.579-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.235.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.375-2.438 1.125-4.563l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.868v6.078L275.75 401h-14.5zm-22.969 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.197.792.296 2.177.296 4.156V401h-4.046v-9.063c0-2.416-.204-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L246.594 401h-8.313zm-31.234 0v-10.031h4.047V401h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.618-4.32-.411-.463-1.684-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V401h-4.047zm-39.72 0l1.548-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.546-4.625h8.578c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V401h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L189.234 401h-8.312zm-13.171.39l-1.594-3.859c2.334-1.135 4.724-2.724 7.172-4.765l-.39-2.485c-.23-1.427-.566-2.398-1.008-2.914-.443-.515-1.42-1.075-2.93-1.68l-.89-.359 1.75-3.406c2.562.844 4.317 1.687 5.265 2.531.625.563 1.055 1.177 1.29 1.844.233.667.517 2.094.85 4.281l.61 4c.448 2.938.89 5.078 1.328 6.422h-4.36c-.28-1.115-.577-2.594-.89-4.438-1.542 1.553-3.61 3.162-6.203 4.829zm-5.375-6.656h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.963-.895-3.734-1.25l2.094-3.89c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM147.281 401v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.156V401h-4.047zm-27.75 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V401h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L127.844 401h-8.313zm218.406 38v-10.031h4.047V439h-4.046zm13.594 0v-9.063c0-2.416-.205-3.856-.617-4.32-.411-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V439h-4.047zm-35.687 0l1.547-4.625h9.64v-4.438c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.828l1.546-4.625h4.954c3.135 0 5.229.458 6.28 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L332.047 439h-16.203zm-18.61 0l-1.765-14.078h-2.516l1.547-4.625h11.078c2.094 0 3.578.078 4.453.234.875.157 1.573.469 2.094.938.875.791 1.313 2.047 1.313 3.765 0 2.292-.662 4.506-1.985 6.641s-3.104 3.854-5.344 5.156c-2.26 1.313-5.218 1.969-8.875 1.969zm3.454-4.625c2.333-.177 4.088-.687 5.265-1.531 1.938-1.407 2.906-3.25 2.906-5.531 0-.938-.328-1.57-.984-1.899-.656-.328-1.948-.492-3.875-.492h-4.469l1.156 9.453zm-11.125-1.64H285.5c.73-2.667 1.094-4.574 1.094-5.72 0-.822-.36-1.473-1.078-1.952-.72-.48-1.964-.896-3.735-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM263.375 439l-1.766-14.078h-2.515l1.547-4.625h11.078c2.094 0 3.578.078 4.453.234.875.157 1.573.469 2.094.938.875.791 1.312 2.047 1.312 3.765 0 2.292-.661 4.506-1.984 6.641s-3.104 3.854-5.344 5.156c-2.26 1.313-5.219 1.969-8.875 1.969zm3.453-4.625c2.333-.177 4.089-.687 5.266-1.531 1.937-1.407 2.906-3.25 2.906-5.531 0-.938-.328-1.57-.984-1.899-.657-.328-1.948-.492-3.875-.492h-4.47l1.157 9.453zm-11.125-1.64h-4.062c.729-2.667 1.093-4.574 1.093-5.72 0-.822-.359-1.473-1.078-1.952-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM224.781 439l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V439h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L233.094 439h-8.313zm-102.89 0v-23.125h4.812v9.39h9.563v-9.39h4.812V439h-4.812v-10.547h-9.563V439h-4.812zm30.703 0v-19.953h-8.281v-3.172h21.39v3.172h-8.281V439h-4.828zm16.344 0v-23.125h6.375l5.562 16.266 5.734-16.266h5.594V439h-4.437v-17.453l-5.641 15.906h-3.875l-5.531-16.14V439h-3.781zm29.046 0v-23.125h4.813v19.844h10.422V439h-15.235zm204.094 38v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.708.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.156V477h-4.047zm-25.625 0l2.266-8.688c.416-1.593.625-2.692.625-3.296 0-1.24-1.058-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.53 6.688-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.195 5.664L380.688 477h-4.235zm-19.984 0v-.516c0-2.677.281-4.971.844-6.882.562-1.912 1.51-3.8 2.843-5.664l-.703-.672c-1.135-1.063-2.161-1.948-3.078-2.657l3.688-2.687c2.447 1.937 5.036 4.51 7.765 7.719.625-1.084 1.04-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.484 2.578c-2.063-3.709-4.865-7.355-8.406-10.938-1.26 1.958-1.891 4.948-1.891 8.969V477h-4.328zm-20.328 0l1.39-4.234H348v-4.157c0-1.948-.193-3.205-.578-3.773-.386-.568-1.386-1.065-3-1.492l-2.985-.781-.234.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.079 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.375-2.438 1.125-4.563l.969-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.039 2.503 1.039 4.868v6.078L350.64 477h-14.5zm-20.11 0l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.696 7.054-1.13 1.61-2.919 2.607-5.367 2.993l.281 2.312c2.72 0 4.891-.453 6.516-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.162 2.906-7.795 4.359-13.899 4.359zm-9.969 0v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.048c3.135 0 5.229.458 6.28 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V477h-4.046zm-33.375 0l1.547-4.625h4.032c-.823-2.115-1.235-4.708-1.235-7.781v-1.672h-2.328l1.547-4.625h8.578c3.136 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V477h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-3.062v1.375c0 3.354.479 6.047 1.437 8.078L281 477h-8.313zm-29.515 0l1.547-4.625h9.64v-4.438c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.229.458 6.281 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L259.375 477h-16.203zm-18.156 0l1.53-4.625h8.735c.865-1.99 1.297-3.682 1.297-5.078 0-1.646-.38-2.787-1.14-3.422-.76-.635-2.13-.953-4.11-.953h-5.406l1.531-4.625h5.094c1.781 0 3.15.156 4.11.469.958.312 1.77.87 2.437 1.671 1.062 1.271 1.594 3.063 1.594 5.375 0 1.844-.49 4.032-1.47 6.563L237.704 477h-12.687zm-7.547 4.625v-18.703h-10l1.547-4.625h12.5v23.328h-4.047zm-36.453-4.234l1.593-4.72c2.042-.228 3.688-.838 4.938-1.827 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.961-1.844-.64-.323-1.873-.484-3.696-.484h-5.562v-9.625l4.047-1.36v6.36h4.062c2.5 0 4.243.36 5.227 1.078.984.719 1.476 1.984 1.476 3.797 0 3.437-1.317 6.49-3.953 9.156-2.635 2.667-6 4.354-10.093 5.063zm-5.391-6.657h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.963-.895-3.734-1.25l2.094-3.89c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM148.828 477l1.36-4.14h8.468c-3.833-3.709-6.713-8.162-8.64-13.36l4.093-1.578a28.973 28.973 0 004.938 8.875c1.469-1.781 2.203-3.943 2.203-6.485v-2.015h4.344v1.312c0 3.97-1.36 7.214-4.078 9.735 1.573 1.614 2.974 2.791 4.203 3.531l-1.39 4.125h-15.5zm-7.078 0v-9.594c0-1.927-.32-3.252-.96-3.976-.642-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.708.635 1.185 1.385 1.43 2.25.244.864.367 2.25.367 4.156V477h-4.047zm-11.844 0v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V477h-4.047zm207.406 31.734h-4.062c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.72-.479-1.964-.895-3.735-1.25l2.094-3.89c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zm-11.593 0h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.964-.895-3.735-1.25l2.094-3.89c2.552.51 4.331 1.21 5.336 2.101s1.508 2.206 1.508 3.946c0 1.094-.25 2.76-.75 5l-.406 1.765zM297.656 515l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.696 7.054-1.13 1.61-2.919 2.607-5.367 2.993l.281 2.312c2.72 0 4.891-.453 6.516-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.162 2.906-7.795 4.359-13.899 4.359zm-10.047 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.207 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.156V515h-4.047zm-25.625 0l2.266-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.531 6.688-1.531 4.625h-9.031l1.546-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.497 3.007-2.195 5.664L266.219 515h-4.235zm-3.953-6.266h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.954-.718-.479-1.963-.895-3.734-1.25l2.094-3.89c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM219.86 515v-.516c0-2.677.282-4.971.844-6.882.563-1.912 1.51-3.8 2.844-5.664l-.703-.672c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.183 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V515h-4.329zm-4.937-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.964-.895-3.734-1.25l2.093-3.89c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM192.75 515l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.235-.948-.677-2.224-1.244-3.828-1.703l1.843-3.437c1.73.427 3.297 1.047 4.703 1.86.907.53 1.532 1.182 1.875 1.952.344.771.516 1.922.516 3.454v7.187L202.328 515h-9.578zm-17.906 0l-2.235-17.688 3.922-1.39 1.797 14.453c2.667 0 4.794-.615 6.383-1.844 1.588-1.229 2.383-2.87 2.383-4.922 0-2.24-1.209-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.414.576 4.492 1.727 1.079 1.15 1.618 2.747 1.618 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.688 4.704c-2.01.958-4.849 1.437-8.515 1.437zm-9.938 0v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V515h-4.047zm-24.625 0l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.235-.948-.677-2.224-1.244-3.828-1.703l1.844-3.437c1.729.427 3.296 1.047 4.703 1.86.906.53 1.53 1.182 1.875 1.952.343.771.515 1.922.515 3.454v7.187L149.86 515h-9.578zm-17.906 0l-2.234-17.688 3.921-1.39 1.797 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.415.576 4.493 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.687 4.704c-2.01.958-4.85 1.437-8.516 1.437zm212.14 38l2.266-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.172-5l3.61-2.094c1.146.958 2.125 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.758l.531 6.687-1.531 4.625h-9.031l1.547-4.625h4.921l-.359-4.797c-.25-3.354-1.349-5.031-3.297-5.031-1.125 0-2.07.56-2.836 1.68-.765 1.12-1.497 3.007-2.195 5.664L338.75 553h-4.234zm-23.28 0l1.546-4.625h4.031c-.822-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.296 2.177.296 4.157V553h-4.046v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-3.062v1.375c0 3.354.479 6.047 1.437 8.078L319.547 553h-8.313zm-7.173 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.208 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V553h-4.046zm-25.515 0v-14.078h-2.531l1.562-4.625h10.89c3.136 0 5.23.458 6.282 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149V553h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.203V553h-4.047zm-20.485 0l1.532-4.625h8.734c.865-1.99 1.297-3.682 1.297-5.078 0-1.646-.38-2.787-1.14-3.422-.761-.635-2.13-.953-4.11-.953h-5.406l1.531-4.625h5.094c1.781 0 3.15.156 4.11.469.957.312 1.77.87 2.437 1.672 1.062 1.27 1.593 3.062 1.593 5.375 0 1.843-.49 4.03-1.468 6.562L270.75 553h-12.688zm-21.156 0l2.266-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.758l.53 6.687-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.497 3.007-2.195 5.664L241.14 553h-4.235zm-3.953-6.266h-4.062c.729-2.666 1.093-4.573 1.093-5.718 0-.823-.359-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM204.641 553v-14.078h-2.485l1.547-4.625h10.484c3.136 0 5.23.458 6.282 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562L220.453 553h-15.812zm4.062-4.625h9.25v-4.438c0-2.427-.203-3.87-.61-4.328-.406-.458-1.682-.687-3.827-.687h-4.813v9.453zm-20.953-1.64h-4.063c.73-2.667 1.094-4.574 1.094-5.72 0-.822-.36-1.473-1.078-1.952-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM172.656 553v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V553h-4.047zm-27.75 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V553h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L153.219 553h-8.313zm-7.094 0v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.048c3.135 0 5.229.458 6.28 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V553h-4.047zm-17.359 0v-5.016h5.016V553h-5.016zm322.688 38.39l1.593-4.718c2.042-.23 3.688-.839 4.938-1.828 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.961-1.844-.64-.323-1.873-.484-3.695-.484h-5.563v-9.625l4.047-1.36v6.36h4.062c2.5 0 4.243.36 5.227 1.078.984.719 1.476 1.984 1.476 3.797 0 3.437-1.317 6.49-3.953 9.156-2.635 2.667-6 4.354-10.093 5.063zm-22.594-.39l2.265-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.171-5l3.609-2.094c1.146.958 2.125 2.265 2.938 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.218 2.008s1.677 3.257 1.875 5.758l.531 6.687-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.349-5.031-3.296-5.031-1.126 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.196 5.664L424.781 591h-4.234zm-21.625 2.781l1.562-4.672c1.667 0 3.459-.28 5.375-.843L402.5 573.28l3.875-1.36 3.266 14.563c1.635-1.24 2.773-2.78 3.414-4.625.64-1.843.96-4.484.96-7.922v-1.64h4.344v1.156c0 3.99-.612 7.318-1.836 9.985-1.224 2.666-3.153 4.88-5.789 6.64-3.698 2.469-7.635 3.703-11.812 3.703zM380.078 591l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.696 7.054-1.13 1.61-2.919 2.607-5.367 2.992l.281 2.313c2.72 0 4.891-.453 6.516-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.581 9.875-4.742 12.782-3.162 2.906-7.795 4.359-13.899 4.359zm-23.562 0v-10.031h4.046V591h-4.046zm13.593 0v-9.063c0-2.416-.205-3.856-.617-4.32-.411-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V591h-4.047zm-21.78 0h-1.923v-5.016h5.016v3.891c0 4.094-1.672 6.14-5.016 6.14v-1.734c1.282 0 1.922-.927 1.922-2.781v-.5zm-31.204 0l1.531-4.625h8.735c.864-1.99 1.296-3.682 1.296-5.078 0-1.646-.38-2.787-1.14-3.422-.76-.635-2.13-.953-4.11-.953h-5.406l1.531-4.625h5.094c1.782 0 3.151.156 4.11.469.958.312 1.77.87 2.437 1.672 1.063 1.27 1.594 3.062 1.594 5.375 0 1.843-.49 4.03-1.469 6.562L329.813 591h-12.688zm-3.953-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.964-.896-3.734-1.25l2.093-3.891c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM298.078 591v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.708.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V591h-4.047zm-25.14 0v-14.078h-2.485l1.547-4.625h10.484c3.136 0 5.23.458 6.282 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562L288.75 591h-15.813zm4.062-4.625h9.25v-4.438c0-2.427-.203-3.87-.61-4.328-.406-.458-1.682-.687-3.827-.687H277v9.453zM265.203 591h-1.922v-5.016h5.016v3.891c0 4.094-1.672 6.14-5.016 6.14v-1.734c1.282 0 1.922-.927 1.922-2.781v-.5zm-20.484 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.048c3.135 0 5.229.458 6.281 1.375a3.773 3.773 0 011.219 1.992c.198.797.297 2.18.297 4.149V591h-4.047zm-17.547 0v-9.594c0-1.927-.32-3.252-.961-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.28 2.11.71.635 1.186 1.385 1.43 2.25.245.864.368 2.25.368 4.155V591h-4.047zm-23.719 0l1.547-4.625h9.64v-4.438c0-2.416-.202-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L219.655 591h-16.203zm-30.594 0v-.516c0-2.677.282-4.971.844-6.882.563-1.912 1.51-3.8 2.844-5.664l-.703-.672c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.183 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V591h-4.329zm-24.265 0l1.547-4.625h4.03c-.822-2.115-1.233-4.708-1.233-7.781v-1.672h-2.329l1.547-4.625h8.578c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V591H164.5v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695H157v1.375c0 3.354.48 6.047 1.438 8.078L156.905 591h-8.312zm-7.094 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.891l1.531-4.625h5.047c3.135 0 5.23.458 6.281 1.375a3.773 3.773 0 011.219 1.992c.198.797.297 2.18.297 4.149V591H141.5zm-14.047-6.266h-4.062c.729-2.666 1.093-4.573 1.093-5.718 0-.823-.359-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM406.016 629v-10.031h4.046V629h-4.046zm13.593 0v-9.063c0-2.416-.205-3.856-.617-4.32-.411-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V629h-4.047zm-36.421 0v-.516c0-2.677.28-4.971.843-6.882.563-1.912 1.51-3.8 2.844-5.664l-.703-.672c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V629h-4.329zm-4.938-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM356.078 629l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.235-.948-.677-2.224-1.244-3.828-1.703l1.843-3.437c1.73.427 3.297 1.047 4.704 1.86.906.53 1.53 1.182 1.875 1.952.343.771.515 1.922.515 3.453v7.188L365.656 629h-9.578zm-17.906 0l-2.235-17.688 3.922-1.39 1.797 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.414.576 4.493 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.688 4.703c-2.01.959-4.848 1.438-8.515 1.438zm-9.938 0v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.282 1.375a3.773 3.773 0 011.218 1.992c.198.797.297 2.18.297 4.149V629h-4.047zm-24.625 0l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.235-.948-.677-2.224-1.244-3.828-1.703l1.844-3.437c1.729.427 3.296 1.047 4.703 1.86.906.53 1.531 1.182 1.875 1.952.344.771.515 1.922.515 3.453v7.188L313.188 629h-9.579zm-17.906 0l-2.234-17.688 3.922-1.39 1.796 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.338.104-2.078.313l1.406-4.36a9.102 9.102 0 012.235-.297c1.916 0 3.414.576 4.492 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.291 3.568-5.687 4.703c-2.01.959-4.85 1.438-8.516 1.438zm-34.078 0v-10.031h4.047V629h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.048l1.547-4.625h11.172c3.136 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.157V629h-4.047zm-37.594 0l2.266-8.688c.416-1.593.625-2.692.625-3.296 0-1.24-1.058-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.218 2.008s1.677 3.257 1.875 5.758l.532 6.687-1.532 4.625h-9.03l1.546-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.196 5.664L231.86 629h-4.234zm-7.453 0v-9.594c0-1.927-.32-3.252-.961-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.28 2.11.71.635 1.186 1.385 1.43 2.25.245.864.368 2.25.368 4.155V629h-4.047zm-13.531 0v-14.078h-9.532l1.547-4.625h16.094l-1.547 4.625h-2.516V629h-4.046zm-16.282 0v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.282 1.375a3.773 3.773 0 011.218 1.992c.198.797.297 2.18.297 4.149V629h-4.047zm-24.625 0l1.563-4.625h5.516v-6.078c0-1.646-.355-2.724-1.063-3.235-.948-.677-2.224-1.244-3.828-1.703l1.844-3.437c1.729.427 3.296 1.047 4.703 1.86.906.53 1.531 1.182 1.875 1.952.344.771.515 1.922.515 3.453v7.188L175.312 629h-9.578zm-3.625-6.266h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.72-.48-1.964-.896-3.735-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.407 1.765zm-11.593 0h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.964-.896-3.735-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM122.203 629v-14.078h-2.484l1.547-4.625h10.484c3.135 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562L138.016 629h-15.813zm4.063-4.625h9.25v-4.438c0-2.427-.203-3.87-.61-4.328-.406-.458-1.682-.687-3.828-.687h-4.812v9.453zM401.844 667l2.265-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.171-5l3.609-2.094c1.146.958 2.125 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.22 2.008 1.051 1.338 1.676 3.257 1.874 5.758l.531 6.687-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.349-5.031-3.297-5.031-1.125 0-2.07.56-2.836 1.68-.765 1.12-1.497 3.007-2.195 5.664L406.078 667h-4.234zm-20.422 0l-2.203-17.5 3.922-1.578 1.171 9.25c1.136-.281 1.933-.945 2.391-1.992.458-1.047.688-2.716.688-5.008v-1.875h4.343v1.719c0 3.093-.565 5.445-1.695 7.054-1.13 1.61-2.92 2.607-5.367 2.992l.281 2.313c2.719 0 4.89-.453 6.516-1.36 2.844-1.583 4.265-5.192 4.265-10.827v-1.891h4.329v1.562c0 5.615-1.581 9.875-4.743 12.782-3.161 2.906-7.794 4.359-13.898 4.359zm-18.969.39l1.594-4.718c2.042-.23 3.687-.839 4.937-1.828 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.96-1.844-.641-.323-1.873-.484-3.696-.484h-5.563v-9.625l4.047-1.36v6.36h4.063c2.5 0 4.242.36 5.226 1.078.985.719 1.477 1.984 1.477 3.797 0 3.437-1.318 6.49-3.953 9.156-2.636 2.667-6 4.354-10.094 5.063zm-20.687-.39l1.546-4.625h9.641v-4.438c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.829l1.547-4.625h4.954c3.135 0 5.229.458 6.28 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L357.969 667h-16.203zm-4.016-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM309.437 667v-14.078h-2.484l1.547-4.625h10.484c3.136 0 5.23.458 6.282 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562L325.25 667h-15.813zm4.063-4.625h9.25v-4.438c0-2.427-.203-3.87-.61-4.328-.406-.458-1.682-.687-3.827-.687H313.5v9.453zM276.078 667l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.696 7.054-1.13 1.61-2.919 2.607-5.367 2.992l.281 2.313c2.72 0 4.891-.453 6.516-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.581 9.875-4.742 12.782-3.162 2.906-7.795 4.359-13.899 4.359zm-21.937 0l1.39-4.234H266v-4.157c0-1.948-.193-3.205-.578-3.773-.386-.568-1.386-1.065-3-1.492l-2.985-.782-.234.672c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.079 3.25c-3.5-.323-5.25-1.671-5.25-4.047 0-.916.375-2.437 1.125-4.562l.969-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.039 2.503 1.039 4.867v6.079L268.64 667h-14.5zm-20.657 0v-10.031h4.047V667h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.157V667h-4.047zm-38.234 0v-7.016c0-2.354.682-4.343 2.047-5.968L206 651.938l1.719-4.016 11.094 4.719-1.672 4.062-3.125-1.36c-.75.938-1.125 2.256-1.125 3.954V667h-4.047zm-9.735 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.207 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V667h-4.047zm-11.734 0v-5.016h5.016V667h-5.016zm-32.156 0v-10.031h4.047V667h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.618-4.32-.411-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V667h-4.047zm-20.391-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.964-.896-3.734-1.25l2.093-3.891c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM120.797 667v-.516c0-2.677.281-4.971.844-6.882.562-1.912 1.51-3.8 2.843-5.664l-.703-.672c-1.135-1.063-2.161-1.948-3.078-2.657l3.688-2.687c2.448 1.937 5.036 4.51 7.765 7.719.625-1.084 1.04-2.032 1.242-2.844.204-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.484 2.578c-2.063-3.709-4.865-7.355-8.406-10.938-1.26 1.958-1.891 4.948-1.891 8.969V667h-4.328zm275.937 31.734h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.953-.718-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.407 1.765zM380.031 705v-14.078H370.5l1.547-4.625h16.094l-1.547 4.625h-2.516V705h-4.047zm-16.36 0v-9.594c0-1.927-.32-3.252-.96-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.28 2.11.71.635 1.186 1.385 1.43 2.25.245.864.368 2.25.368 4.155V705h-4.047zm-26.093 2.781l1.563-4.672c1.666 0 3.458-.28 5.375-.843l-3.36-14.985 3.875-1.36 3.266 14.563c1.635-1.24 2.773-2.78 3.414-4.625.64-1.843.96-4.484.96-7.922v-1.64h4.345v1.156c0 3.99-.612 7.318-1.836 9.985-1.224 2.666-3.154 4.88-5.79 6.64-3.697 2.469-7.635 3.703-11.812 3.703zM318.188 705v-10.031h4.046V705h-4.046zm13.593 0v-9.063c0-2.416-.205-3.856-.617-4.32-.411-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.157V705h-4.047zm-46.234 0l1.547-4.625h9.64v-4.438c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.229.458 6.281 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L301.75 705h-16.203zm-21.688 2.781l1.563-4.672c1.667 0 3.458-.28 5.375-.843l-3.36-14.985 3.875-1.36 3.266 14.563c1.636-1.24 2.774-2.78 3.414-4.625.64-1.843.961-4.484.961-7.922v-1.64h4.344v1.156c0 3.99-.612 7.318-1.836 9.985-1.224 2.666-3.154 4.88-5.79 6.64-3.697 2.469-7.635 3.703-11.812 3.703zm-2.375-9.047h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.953-.718-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.407 1.765zm-27.328 10.891v-14.61h4.047v14.61h-4.047zm-2.515-18.703l1.547-4.625h10.843c1.99 0 3.39.088 4.203.265.813.178 1.495.542 2.047 1.094.802.813 1.203 1.98 1.203 3.5 0 3.052-1.12 5.901-3.359 8.547-2.24 2.646-5.13 4.537-8.672 5.672l1.672-4.969c1.656-.469 3.036-1.383 4.14-2.742 1.105-1.36 1.657-2.82 1.657-4.383 0-.937-.328-1.565-.984-1.883-.657-.317-1.959-.476-3.907-.476h-10.39zM224.406 705v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V705h-4.047zm-38.734 0l1.531-4.625h8.734c.865-1.99 1.297-3.682 1.297-5.078 0-1.646-.38-2.787-1.14-3.422-.76-.635-2.13-.953-4.11-.953h-5.406l1.531-4.625h5.094c1.781 0 3.151.156 4.11.469.958.312 1.77.87 2.437 1.672 1.063 1.27 1.594 3.062 1.594 5.375 0 1.843-.49 4.03-1.469 6.562L198.359 705h-12.687zm-20.422 0l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.566 5.445-1.696 7.054-1.13 1.61-2.92 2.607-5.367 2.992l.281 2.313c2.719 0 4.89-.453 6.516-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.581 9.875-4.743 12.782-3.161 2.906-7.794 4.359-13.898 4.359zm-21.938 0l1.391-4.234h10.469v-4.157c0-1.948-.193-3.205-.578-3.773-.386-.568-1.386-1.065-3-1.492l-2.985-.782-.234.672c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.079 3.25c-3.5-.323-5.25-1.671-5.25-4.047 0-.916.375-2.437 1.125-4.562l.969-2.703 7.125 1.734c2.312.563 3.815 1.284 4.508 2.164.692.88 1.039 2.503 1.039 4.867v6.079L157.813 705h-14.5zm-20.656 0v-10.031h4.047V705h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.546-4.625h11.172c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V705h-4.047zm169.5 38v-10.031h4.047V743h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.048l1.547-4.625h11.172c3.136 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.157V743h-4.047zm-37.594 0l2.266-8.688c.416-1.593.625-2.692.625-3.296 0-1.24-1.058-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.218 2.008s1.677 3.257 1.875 5.758l.532 6.687-1.532 4.625h-9.03l1.546-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.196 5.664L285.984 743h-4.234zm-7.453 0v-9.594c0-1.927-.32-3.252-.961-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.28 2.11.71.635 1.186 1.385 1.43 2.25.245.864.368 2.25.368 4.155V743h-4.047zm-22.703 0l-2.235-17.688 3.922-1.39 1.797 14.453c2.667 0 4.794-.615 6.383-1.844 1.588-1.229 2.383-2.87 2.383-4.922 0-2.24-1.209-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.414.576 4.492 1.727 1.079 1.15 1.618 2.747 1.618 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.688 4.703c-2.01.959-4.849 1.438-8.515 1.438zm-21.813 0l1.547-4.625h9.64v-4.438c0-2.416-.202-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.136 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L245.984 743h-16.203zm-21.687 2.781l1.562-4.672c1.667 0 3.459-.28 5.375-.843l-3.36-14.985 3.876-1.36 3.266 14.563c1.635-1.24 2.773-2.78 3.414-4.625.64-1.843.96-4.484.96-7.922v-1.64h4.344v1.156c0 3.99-.612 7.318-1.836 9.985-1.224 2.666-3.153 4.88-5.789 6.64-3.698 2.469-7.635 3.703-11.812 3.703zM186.39 743l1.547-4.625h4.03c-.822-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.136 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.157V743h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-3.062v1.375c0 3.354.479 6.047 1.437 8.078l-1.53 4.625h-8.313zm-29.516 0l1.547-4.625h9.64v-4.438c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.229.458 6.281 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L173.08 743h-16.204zm-9.125 0v-14.078h-9.531l1.547-4.625h16.093l-1.547 4.625h-2.515V743h-4.047zm-28.25 0l1.39-4.234h10.47v-4.157c0-1.948-.193-3.205-.579-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.782-.234.672c-.136.396-.204.74-.204 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.047 0-.916.375-2.437 1.125-4.562l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.867v6.079L134 743h-14.5z"/><path id="Rectangle-1" stroke="#C06334" stroke-width="2" d="M117 106h282v198H117z"/><g id="Rectangle-209-+-Rectangle-208" fill="#DBAF88" transform="translate(15 14)"><path id="Rectangle-209" d="M0 1h50v300H0z"/><path id="Rectangle-208" d="M165.5-129.5h50v311h-50z" transform="rotate(-90 190.5 26)"/></g><path id="Rectangle-5" fill="url(#linearGradient-1)" d="M45-7h275v447H45z" transform="rotate(-180 182.5 216.5)"/><path id="Rectangle-6" fill="#FFF" d="M319 8h162v399H319z"/><g id="Group-2" transform="translate(65 65)"><rect id="Rectangle-19" width="20" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="20" height="19" x=".5" y=".5" fill="url(#linearGradient-2)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M10.5 7l4.2 6H6.3z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="20" height="19" x=".5" y=".5" fill="url(#linearGradient-2)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M10.5 7l4.2 6H6.3z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-3)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="20" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(5.25 20)"><path id="Rectangle-22" d="M.5.5H10v1H.5z"/><path id="Rectangle-23" d="M.5 3.5H10v1H.5z"/><path id="Rectangle-24" d="M.5 6.5H10v1H.5z"/><path id="Rectangle-25" d="M.5 9.5H10v1H.5z"/></g></g></g><path id="Line-7" fill="#C06334" fill-rule="nonzero" d="M65.41 15.68l7 14h-6.001v20h6.001l-7 14-7-14h5.999v-20H58.41l7-14z"/><path id="Line-28" fill="#C06334" fill-rule="nonzero" d="M72 57.68l14 7-14 7-.001-6h-42.59l.001 6-14-7 14-7-.001 6h42.59l.001-6z"/><text id="clientTop:25px-=-bor" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="78.7" y="43" fill="#C06334">clientTop:</tspan> <tspan x="150.7" y="43" fill="#1C85B5">25px </tspan> <tspan x="186.7" y="43" fill="#C06334">= border</tspan></text><text id="clientLeft:41px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 40.32 125)"><tspan x="-13.68" y="129" fill="#C06334">clientLeft:</tspan> <tspan x="65.52" y="129" fill="#1C85B5">41px</tspan></text><g id="Rectangle-8-+-Rectangle-7" transform="translate(-42 -3)"><path id="Rectangle-8" fill="url(#linearGradient-1)" d="M86.5-85.5h275v447h-275z" transform="rotate(-90 224 138)"/><path id="Rectangle-7" fill="#FFF" d="M152 156h162v399H152z" transform="rotate(90 233 355.5)"/></g></g></g></svg> \ No newline at end of file diff --git a/2-ui/1-document/09-size-and-scroll/metric-client-left-top.svg b/2-ui/1-document/09-size-and-scroll/metric-client-left-top.svg index 8097afa78..968590466 100644 --- a/2-ui/1-document/09-size-and-scroll/metric-client-left-top.svg +++ b/2-ui/1-document/09-size-and-scroll/metric-client-left-top.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="353" height="316" viewBox="0 0 353 316"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="0%" x2="62.299%" y1="47.096%" y2="47.096%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#FFF" stop-opacity="0"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-client-left-top.svg"><path fill="#FFF" d="M0 0h353v316H0z"/><path id="Rectangle-206" fill="#DBAF88" d="M12 15h50v300H12z"/><path id="Rectangle-207" fill="#DBAF88" d="M177.5-115.5h50v311h-50z" transform="rotate(-90 202.5 40)"/><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="32" font-weight="bold"><tspan x="102" y="134">Introduction</tspan> <tspan x="102" y="183" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">This Ecma Standard is based on </tspan> <tspan x="102" y="216" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">several originating </tspan> <tspan x="102" y="249" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">technologies, the most well </tspan> <tspan x="102" y="282" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">known being JavaScript </tspan> <tspan x="102" y="315" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">(Netscape) and JScript </tspan> <tspan x="102" y="348" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">(Microsoft). The language was </tspan> <tspan x="102" y="381" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">invented by Brendan Eich at </tspan> <tspan x="102" y="414" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">Netscape and first appeared in </tspan> <tspan x="102" y="447" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">that company’s Navigator 2.0 </tspan> <tspan x="102" y="480" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">browser. It has appeared in all </tspan> <tspan x="102" y="513" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">subsequent browsers from </tspan> <tspan x="102" y="546" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">Netscape and in all browsers </tspan> <tspan x="102" y="579" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">from Microsoft starting with </tspan> <tspan x="102" y="612" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">Internet Explorer 3.0.</tspan> <tspan x="102" y="645" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">The development of this </tspan> <tspan x="102" y="678" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">Standard started in November </tspan> <tspan x="102" y="711" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">1996. The first edition of this </tspan> <tspan x="102" y="744" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">Ecma Standard was adopted by </tspan> <tspan x="102" y="777" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">the Ecma General Assembly of </tspan> <tspan x="102" y="810" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">June 1997.</tspan></text><path id="Rectangle-5" fill="url(#linearGradient-1)" d="M42-7h275v447H42z" transform="rotate(-180 179.5 216.5)"/><path id="Rectangle-6" fill="#FFF" d="M316 8h162v399H316z"/><g id="Rectangle-8-+-Rectangle-7" transform="translate(-44.5 -2.5)"><path id="Rectangle-8" fill="url(#linearGradient-1)" d="M86-86h275v447H86z" transform="rotate(-90 223.5 137.5)"/><path id="Rectangle-7" fill="#FFF" d="M151.5 155.5h162v399h-162z" transform="rotate(90 232.5 355)"/></g><path id="Line-7" fill="#C06334" fill-rule="nonzero" d="M62.41 15.68l7 14h-6.001v20h6.001l-7 14-7-14h5.999v-20H55.41l7-14z"/><path id="Line-28" fill="#C06334" fill-rule="nonzero" d="M46.41 57.68l14 7-14 7-.001-6h-20l.001 6-14-7 14-7-.001 6h20l.001-6z"/><text id="clientTop:25px-=-bor" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="75.7" y="43" fill="#643B0C">clientTop:</tspan> <tspan x="147.7" y="43" fill="#166388">25px</tspan> <tspan x="176.5" y="43" fill="#643B0C"> = border</tspan></text><text id="clientLeft:25px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 37.32 136)"><tspan x="-16.68" y="140" fill="#643B0C">clientLeft:</tspan> <tspan x="62.52" y="140" fill="#166388">25px</tspan></text></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" width="353" height="316" viewBox="0 0 353 316"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="0%" x2="62.299%" y1="47.096%" y2="47.096%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#FFF"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-client-left-top.svg"><path fill="#FFF" d="M0 0h353v316H0z"/><path id="Rectangle-206" fill="#DBAF88" d="M12 15h50v300H12z"/><path id="Rectangle-207" fill="#DBAF88" d="M177.5-115.5h50v311h-50z" transform="rotate(-90 202.5 40)"/><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="32" font-weight="bold"><tspan x="102" y="134">Introduction</tspan> <tspan x="102" y="183" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">This Ecma Standard is based on </tspan> <tspan x="102" y="216" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">several originating </tspan> <tspan x="102" y="249" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">technologies, the most well </tspan> <tspan x="102" y="282" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">known being JavaScript </tspan> <tspan x="102" y="315" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">(Netscape) and JScript </tspan> <tspan x="102" y="348" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">(Microsoft). The language was </tspan> <tspan x="102" y="381" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">invented by Brendan Eich at </tspan> <tspan x="102" y="414" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">Netscape and first appeared in </tspan> <tspan x="102" y="447" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">that company’s Navigator 2.0 </tspan> <tspan x="102" y="480" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">browser. It has appeared in all </tspan> <tspan x="102" y="513" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">subsequent browsers from </tspan> <tspan x="102" y="546" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">Netscape and in all browsers </tspan> <tspan x="102" y="579" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">from Microsoft starting with </tspan> <tspan x="102" y="612" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">Internet Explorer 3.0.</tspan> <tspan x="102" y="645" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">The development of this </tspan> <tspan x="102" y="678" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">Standard started in November </tspan> <tspan x="102" y="711" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">1996. The first edition of this </tspan> <tspan x="102" y="744" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">Ecma Standard was adopted by </tspan> <tspan x="102" y="777" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">the Ecma General Assembly of </tspan> <tspan x="102" y="810" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">June 1997.</tspan></text><path id="Rectangle-5" fill="url(#linearGradient-1)" d="M42-7h275v447H42z" transform="rotate(-180 179.5 216.5)"/><path id="Rectangle-6" fill="#FFF" d="M316 8h162v399H316z"/><path id="Line-7" fill="#C06334" fill-rule="nonzero" d="M62.41 15.68l7 14h-6.001v20h6.001l-7 14-7-14h5.999v-20H55.41l7-14z"/><path id="Line-28" fill="#C06334" fill-rule="nonzero" d="M46.41 57.68l14 7-14 7-.001-6h-20l.001 6-14-7 14-7-.001 6h20l.001-6z"/><text id="clientTop:25px-=-bor" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="75.7" y="43" fill="#C06334">clientTop:</tspan> <tspan x="147.7" y="43" fill="#1C85B5">25px </tspan> <tspan x="183.7" y="43" fill="#C06334">= border</tspan></text><text id="clientLeft:25px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 37.32 136)"><tspan x="-16.68" y="140" fill="#C06334">clientLeft:</tspan> <tspan x="62.52" y="140" fill="#1C85B5">25px</tspan></text><g id="Rectangle-8-+-Rectangle-7" transform="translate(-45 -3)"><path id="Rectangle-8" fill="url(#linearGradient-1)" d="M86.5-85.5h275v447h-275z" transform="rotate(-90 224 138)"/><path id="Rectangle-7" fill="#FFF" d="M152 156h162v399H152z" transform="rotate(90 233 355.5)"/></g></g></g></svg> \ No newline at end of file diff --git a/2-ui/1-document/09-size-and-scroll/metric-client-width-height.svg b/2-ui/1-document/09-size-and-scroll/metric-client-width-height.svg index 2603b05fb..83864b4c5 100644 --- a/2-ui/1-document/09-size-and-scroll/metric-client-width-height.svg +++ b/2-ui/1-document/09-size-and-scroll/metric-client-width-height.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="500" height="493" viewBox="0 0 500 493"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-client-width-height.svg"><path id="Rectangle-2" fill="#DBAF88" d="M411 130v290H21V130h390zm-25 25H46v240h340V155z"/><path id="Rectangle-1" stroke="#C06334" stroke-width="2" d="M350 177v199H67V177h283z"/><g id="Group-2" transform="translate(370 155)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g><text id="border" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="12.9" y="75" fill="#C06334">border</tspan> <tspan x="20.1" y="89" fill="#1C85B5">25px</tspan></text><text id="padding" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="32.3" y="45" fill="#C06334">padding</tspan> <tspan x="43.1" y="59" fill="#1C85B5">20px</tspan></text><text id="content-width:284px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="139.1" y="109" fill="#C06334">content width:</tspan> <tspan x="239.9" y="109" fill="#1C85B5">284px</tspan></text><path id="Line-15" fill="#C06334" fill-rule="nonzero" d="M336.5 110l14 7-14 7v-6H82.679l.001 6-14-7 14-7-.001 6H336.5v-6z"/><path id="Line-14" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M21.48 93v43"/><path id="Line-13" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M47.48 93v41"/><text id="border-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="376.9" y="76" fill="#C06334">border</tspan> <tspan x="384.1" y="90" fill="#1C85B5">25px</tspan></text><text id="padding-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="339.3" y="16" fill="#C06334">padding</tspan> <tspan x="350.1" y="30" fill="#1C85B5">20px</tspan></text><text id="scrollbar" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="349.1" y="48" fill="#C06334">scrollbar</tspan> <tspan x="367.1" y="62" fill="#1C85B5">16px</tspan></text><path id="Line-17" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M371.48 93v43"/><path id="Line-20" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M385.48 93v43"/><path id="Line-18" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M410.48 93v41"/><path id="Line-16" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M66.48 93v41"/><path id="Line-19" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M353.48 93v41"/><text id="clientWidth-=-20+284" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="80.3" y="473" fill="#C06334">clientWidth = </tspan> <tspan x="197.9" y="473" fill="#1C85B5">20+284+20 </tspan> <tspan x="281.9" y="473" fill="#C06334">=</tspan> <tspan x="290.3" y="473" fill="#1C85B5"> 324px</tspan></text><path id="Line-24" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M46.5 376v88.142"/><path id="Line-25" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M370.5 376v88.142"/><path id="Line-22" fill="#C06334" fill-rule="nonzero" d="M354 445.071l14 7-14 7v-6.001H62v6.001l-14-7 14-7v5.999h292v-5.999z"/><text id="clientHeight:240px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 488.5 277.5)"><tspan x="412.9" y="282" fill="#C06334">clientHeight:</tspan> <tspan x="522.1" y="282" fill="#1C85B5">240px</tspan></text><path id="Line-27" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M365.5 156h120"/><path id="Line-28" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M365.5 394h120"/><path id="Line-26" fill="#C06334" fill-rule="nonzero" d="M476 160l7 14-6-.001V375h6l-7 14-7-14h6V173.999l-6 .001 7-14z"/><text id="height:200px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 422.5 274)"><tspan x="379.3" y="278" fill="#C06334">height:</tspan> <tspan x="429.7" y="278" fill="#1C85B5">200px</tspan></text><path id="Line-3" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M353.5 175h88.142"/><path id="Line-2" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M353.5 377h88.142"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M435 177.5l7 14h-6V360h6l-7 14-7-14h6V191.5h-6l7-14z"/><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="69" y="193">Introduction</tspan> <tspan x="69" y="221" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="69" y="240" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="69" y="259" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="69" y="278" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="69" y="297" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape and </tspan> <tspan x="69" y="316" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">first appeared in that company’s Navigator </tspan> <tspan x="69" y="335" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">2.0 browser. It has appeared in all </tspan> <tspan x="69" y="354" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">subsequent browsers from Netscape and </tspan> <tspan x="69" y="373" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all browsers from Microsoft starting with </tspan></text></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" width="500" height="493" viewBox="0 0 500 493"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-client-width-height.svg"><path id="Rectangle-2" fill="#DBAF88" d="M411 130v290H21V130h390zm-25 25H46v240h340V155z"/><path id="Rectangle-1" stroke="#C06334" stroke-width="2" d="M350 177v199H67V177h283z"/><g id="Group" transform="translate(370 155)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g><text id="border" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="12.9" y="75" fill="#C06334">border</tspan> <tspan x="20.1" y="89" fill="#1C85B5">25px</tspan></text><text id="padding" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="32.3" y="45" fill="#C06334">padding</tspan> <tspan x="43.1" y="59" fill="#1C85B5">20px</tspan></text><text id="content-width:284px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="139.1" y="109" fill="#C06334">content width:</tspan> <tspan x="239.9" y="109" fill="#1C85B5">284px</tspan></text><path id="Line-15" fill="#C06334" fill-rule="nonzero" d="M336.5 110l14 7-14 7v-6H82.679l.001 6-14-7 14-7-.001 6H336.5v-6z"/><path id="Line-14" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M21.48 93v43"/><path id="Line-13" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M47.48 93v41"/><text id="border-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="376.9" y="76" fill="#C06334">border</tspan> <tspan x="384.1" y="90" fill="#1C85B5">25px</tspan></text><text id="padding-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="339.3" y="16" fill="#C06334">padding</tspan> <tspan x="350.1" y="30" fill="#1C85B5">20px</tspan></text><text id="scrollbar" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="349.1" y="48" fill="#C06334">scrollbar</tspan> <tspan x="367.1" y="62" fill="#1C85B5">16px</tspan></text><path id="Line-17" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M371.48 93v43"/><path id="Line-20" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M385.48 93v43"/><path id="Line-18" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M410.48 93v41"/><path id="Line-16" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M66.48 93v41"/><path id="Line-19" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M353.48 93v41"/><text id="clientWidth-=-20+284" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="80.3" y="473" fill="#C06334">clientWidth = </tspan> <tspan x="197.9" y="473" fill="#1C85B5">20+284+20 </tspan> <tspan x="281.9" y="473" fill="#C06334">=</tspan> <tspan x="290.3" y="473" fill="#1C85B5"> 324px</tspan></text><path id="Line-24" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M46.5 376v88.142"/><path id="Line-25" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M370.5 376v88.142"/><path id="Line-22" fill="#C06334" fill-rule="nonzero" d="M354 445.071l14 7-14 7v-6.001H62v6.001l-14-7 14-7v5.999h292v-5.999z"/><text id="clientHeight:240px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 488.5 277.5)"><tspan x="412.9" y="282" fill="#C06334">clientHeight:</tspan> <tspan x="522.1" y="282" fill="#1C85B5">240px</tspan></text><path id="Line-27" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M365.5 156h120"/><path id="Line-28" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M365.5 394h120"/><path id="Line-26" fill="#C06334" fill-rule="nonzero" d="M476 160l7 14-6-.001V375h6l-7 14-7-14h6V173.999l-6 .001 7-14z"/><text id="height:200px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 422.5 274)"><tspan x="379.3" y="278" fill="#C06334">height:</tspan> <tspan x="429.7" y="278" fill="#1C85B5">200px</tspan></text><path id="Line-3" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M353.5 175h88.142"/><path id="Line-2" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M353.5 377h88.142"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M435 177.5l7 14h-6V360h6l-7 14-7-14h6V191.5h-6l7-14z"/><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="69" y="193">Introduction</tspan> <tspan x="69" y="221" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="69" y="240" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="69" y="259" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="69" y="278" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="69" y="297" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape and </tspan> <tspan x="69" y="316" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">first appeared in that company’s Navigator </tspan> <tspan x="69" y="335" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">2.0 browser. It has appeared in all </tspan> <tspan x="69" y="354" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">subsequent browsers from Netscape and </tspan> <tspan x="69" y="373" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all browsers from Microsoft starting with </tspan></text></g></g></svg> \ No newline at end of file diff --git a/2-ui/1-document/09-size-and-scroll/metric-css.svg b/2-ui/1-document/09-size-and-scroll/metric-css.svg index 1f2e5f780..13aa62afd 100644 --- a/2-ui/1-document/09-size-and-scroll/metric-css.svg +++ b/2-ui/1-document/09-size-and-scroll/metric-css.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="566" height="469" viewBox="0 0 566 469"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-css.svg"><path id="Rectangle-1" stroke="#C06334" stroke-width="2" d="M460 184v199H177V184h283z"/><path id="Rectangle-1" fill="#DBAF88" d="M521 139v290H131V139h390zm-25 25H156v240h340V164z"/><g id="Group-2" transform="translate(480 163)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g><text id="padding:20px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="7" y="176" fill="#C06334">padding:</tspan> <tspan x="64.6" y="176" fill="#1C85B5">20px</tspan></text><text id="height:200px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 530.5 282)"><tspan x="487.3" y="286" fill="#C06334">height:</tspan> <tspan x="537.7" y="286" fill="#1C85B5">200px</tspan></text><path id="Line" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M461.5 183h88.142"/><path id="Line-3" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M93.5 184h88.142"/><path id="Line-4" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M93.5 162h88.142"/><path id="Line-2" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M461.5 385h88.142"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M543 185.5l7 14h-6V368h6l-7 14-7-14h6V199.5h-6l7-14z"/><text id="padding:20px-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="7" y="396" fill="#C06334">padding:</tspan> <tspan x="64.6" y="396" fill="#1C85B5">20px</tspan></text><path id="Line-5" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M93.5 404h88.142"/><path id="Line-6" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M93.5 382h88.142"/><text id="border" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="122.9" y="83" fill="#C06334">border</tspan> <tspan x="130.1" y="97" fill="#1C85B5">25px</tspan></text><text id="padding" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="142.3" y="53" fill="#C06334">padding</tspan> <tspan x="153.1" y="67" fill="#1C85B5">20px</tspan></text><text id="content-width:284px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="249.1" y="117" fill="#C06334">content width:</tspan> <tspan x="349.9" y="117" fill="#1C85B5">284px</tspan></text><path id="Line-21" fill="#C06334" fill-rule="nonzero" d="M446.5 118l14 7-14 7v-6H192.679l.001 6-14-7 14-7-.001 6H446.5v-6z"/><path id="Line-14" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M131.48 101v43"/><path id="Line-13" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M157.48 101v41"/><text id="border-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="486.9" y="84" fill="#C06334">border</tspan> <tspan x="494.1" y="98" fill="#1C85B5">25px</tspan></text><text id="padding-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="449.3" y="24" fill="#C06334">padding</tspan> <tspan x="460.1" y="38" fill="#1C85B5">20px</tspan></text><text id="scrollbar" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="459.1" y="56" fill="#C06334">scrollbar</tspan> <tspan x="477.1" y="70" fill="#1C85B5">16px</tspan></text><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="178" y="200">Introduction</tspan> <tspan x="178" y="228" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="178" y="247" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="178" y="266" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="178" y="285" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="178" y="304" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape and </tspan> <tspan x="178" y="323" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">first appeared in that company’s Navigator </tspan> <tspan x="178" y="342" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">2.0 browser. It has appeared in all </tspan> <tspan x="178" y="361" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">subsequent browsers from Netscape and </tspan> <tspan x="178" y="380" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all browsers from Microsoft starting with</tspan> <tspan x="178" y="399" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"> </tspan></text><path id="Line-17" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M481.48 101v43"/><path id="Line-20" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M495.48 101v43"/><path id="Line-18" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M520.48 101v41"/><path id="Line-16" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M176.48 101v41"/><path id="Line-19" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M463.48 101v41"/></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" width="566" height="469" viewBox="0 0 566 469"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-css.svg"><path id="Rectangle-1" stroke="#C06334" stroke-width="2" d="M460 184v199H177V184h283z"/><path id="Rectangle-1" fill="#DBAF88" d="M521 139v290H131V139h390zm-25 25H156v240h340V164z"/><g id="Group" transform="translate(480 163)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g><text id="padding:20px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="7" y="176" fill="#C06334">padding:</tspan> <tspan x="64.6" y="176" fill="#1C85B5">20px</tspan></text><text id="height:200px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 530.5 282)"><tspan x="487.3" y="286" fill="#C06334">height:</tspan> <tspan x="537.7" y="286" fill="#1C85B5">200px</tspan></text><path id="Line" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M461.5 183h88.142"/><path id="Line-3" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M93.5 184h88.142"/><path id="Line-4" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M93.5 162h88.142"/><path id="Line-2" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M461.5 385h88.142"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M543 185.5l7 14h-6V368h6l-7 14-7-14h6V199.5h-6l7-14z"/><text id="padding:20px-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="7" y="396" fill="#C06334">padding:</tspan> <tspan x="64.6" y="396" fill="#1C85B5">20px</tspan></text><path id="Line-5" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M93.5 404h88.142"/><path id="Line-6" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M93.5 382h88.142"/><text id="border" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="122.9" y="83" fill="#C06334">border</tspan> <tspan x="130.1" y="97" fill="#1C85B5">25px</tspan></text><text id="padding" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="142.3" y="53" fill="#C06334">padding</tspan> <tspan x="153.1" y="67" fill="#1C85B5">20px</tspan></text><text id="content-width:284px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="249.1" y="117" fill="#C06334">content width:</tspan> <tspan x="349.9" y="117" fill="#1C85B5">284px</tspan></text><path id="Line-21" fill="#C06334" fill-rule="nonzero" d="M446.5 118l14 7-14 7v-6H192.679l.001 6-14-7 14-7-.001 6H446.5v-6z"/><path id="Line-14" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M131.48 101v43"/><path id="Line-13" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M157.48 101v41"/><text id="border-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="486.9" y="84" fill="#C06334">border</tspan> <tspan x="494.1" y="98" fill="#1C85B5">25px</tspan></text><text id="padding-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="449.3" y="24" fill="#C06334">padding</tspan> <tspan x="460.1" y="38" fill="#1C85B5">20px</tspan></text><text id="scrollbar" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="459.1" y="56" fill="#C06334">scrollbar</tspan> <tspan x="477.1" y="70" fill="#1C85B5">16px</tspan></text><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="178" y="200">Introduction</tspan> <tspan x="178" y="228" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="178" y="247" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="178" y="266" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="178" y="285" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="178" y="304" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape and </tspan> <tspan x="178" y="323" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">first appeared in that company’s Navigator </tspan> <tspan x="178" y="342" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">2.0 browser. It has appeared in all </tspan> <tspan x="178" y="361" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">subsequent browsers from Netscape and </tspan> <tspan x="178" y="380" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all browsers from Microsoft starting with</tspan> <tspan x="178" y="399" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"> </tspan></text><path id="Line-17" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M481.48 101v43"/><path id="Line-20" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M495.48 101v43"/><path id="Line-18" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M520.48 101v41"/><path id="Line-16" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M176.48 101v41"/><path id="Line-19" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M463.48 101v41"/></g></g></svg> \ No newline at end of file diff --git a/2-ui/1-document/09-size-and-scroll/metric-offset-parent.svg b/2-ui/1-document/09-size-and-scroll/metric-offset-parent.svg index 2d108473e..9e247639b 100644 --- a/2-ui/1-document/09-size-and-scroll/metric-offset-parent.svg +++ b/2-ui/1-document/09-size-and-scroll/metric-offset-parent.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="597" height="520" viewBox="0 0 597 520"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-3" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-4" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><pattern id="pattern-1" width="30" height="30" x="-12" y="-6" patternUnits="userSpaceOnUse"><use xlink:href="#image-2"/></pattern><image id="image-2" width="30" height="30" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAHqADAAQAAAABAAAAHgAAAADKQTcFAAAA/UlEQVRIDe3VXQ6DIAwA4LUea7uCIeFdD+f2bDReYbvGbqLOmmEEAQ2T8jJeDEnTr+VPaJrmnWVZmef58+IYbdtex3G8nxkHMZIeKRKoyRT4DKfAF5gb12BOfANz4VaYA3fCsXHsuu5GiG0IIV4AUPR9X50dhzGSHiny/3Kd+iPwvdnaqeZ8szWYTvYXfwzDUEgp936VwXFoXiO6QoQiYlXXtfeq/RK36VgVQijhU/LS13lonBOmAkKTquLN7zof0sQMUHPqlDreW/aQuCmnfy9Dkh5pBtbtx9hLtXrmd97jFPhyuLjxBaal4MQ1mBPfwFy4FebAnXBsPNnL9QFH9tNXxu42ugAAAABJRU5ErkJggg=="/></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-offset-parent.svg"><path fill="#FFF" d="M0 0h597v520H0z"/><path id="Rectangle-10" fill="url(#pattern-1)" fill-opacity=".5" stroke="#D1CFCD" stroke-width="3" d="M19.5 25.5h558v479h-558z"/><path id="Rectangle-1" fill="#DBAF88" d="M552 185v290H178V185h374zm-25 25H203v240h324V210z"/><text id="offsetTop:180px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 163 104.32)"><tspan x="100" y="108.82" fill="#C06334">offsetTop:</tspan> <tspan x="184" y="108.82" fill="#1C85B5">180px</tspan></text><text id="offsetLeft:180px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="34.3" y="179.32" fill="#C06334">offsetLeft:</tspan> <tspan x="126.7" y="179.32" fill="#1C85B5">180px</tspan></text><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="223" y="247">Introduction</tspan> <tspan x="223" y="275" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="223" y="294" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="223" y="313" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="223" y="332" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="223" y="351" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape </tspan> <tspan x="223" y="370" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">and first appeared in that company’s </tspan> <tspan x="223" y="389" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Navigator 2.0 browser. It has appeared </tspan> <tspan x="223" y="408" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all subsequent browsers from </tspan> <tspan x="223" y="427" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Netscape and in all browsers from </tspan> <tspan x="223" y="446" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Microsoft</tspan></text><path id="Line-40" fill="#C06334" fill-rule="nonzero" d="M179 26.5l7 14h-6v128.82h6l-7 14-7-14h6V40.5h-6l7-14z"/><path id="Line-41" fill="#C06334" fill-rule="nonzero" d="M163.41 179.91l14 7-14 7v-6H34.589l.001 6-14-7 14-7-.001 6H163.41v-6z"/><circle id="Oval-2" cx="203" cy="211" r="2" fill="#1C85B5"/><circle id="Oval-2" cx="179" cy="186" r="3" fill="#1C85B5"/><ellipse id="Oval-6" cx="364.25" cy="104" fill="#FBF2EC" stroke="#C06334" stroke-width="2" rx="100" ry="50"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M366 156.379v11.638h6l-7 14-7-14h6v-11.638h2z"/><text id="position:-absolute;" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="296.5" y="95.793">position: absolute;</tspan> <tspan x="296.5" y="110.793">left: 180px;</tspan> <tspan x="296.5" y="125.793">top: 180px;</tspan></text><text id="offsetParent-<MAIN>-" fill="#AF6E24" font-family="PTMono-Bold, PT Mono" font-size="16" font-weight="bold"><tspan x="20.5" y="19.379">offsetParent <MAIN> </tspan></text><text id="<DIV>" fill="#AF6E24" font-family="PTMono-Bold, PT Mono" font-size="16" font-weight="bold"><tspan x="183.5" y="180.379"><DIV></tspan></text><g id="Scrollbar" transform="translate(511 210)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-3)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-3)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-4)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="597" height="520" viewBox="0 0 597 520"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-3" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-4" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><pattern id="pattern-1" width="30" height="30" x="-12" y="-6" patternUnits="userSpaceOnUse"><use xlink:href="#image-2"/></pattern><image id="image-2" width="30" height="30" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAHqADAAQAAAABAAAAHgAAAADKQTcFAAAA/UlEQVRIDe3VXQ6DIAwA4LUea7uCIeFdD+f2bDReYbvGbqLOmmEEAQ2T8jJeDEnTr+VPaJrmnWVZmef58+IYbdtex3G8nxkHMZIeKRKoyRT4DKfAF5gb12BOfANz4VaYA3fCsXHsuu5GiG0IIV4AUPR9X50dhzGSHiny/3Kd+iPwvdnaqeZ8szWYTvYXfwzDUEgp936VwXFoXiO6QoQiYlXXtfeq/RK36VgVQijhU/LS13lonBOmAkKTquLN7zof0sQMUHPqlDreW/aQuCmnfy9Dkh5pBtbtx9hLtXrmd97jFPhyuLjxBaal4MQ1mBPfwFy4FebAnXBsPNnL9QFH9tNXxu42ugAAAABJRU5ErkJggg=="/></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-offset-parent.svg"><path fill="#FFF" d="M0 0h597v520H0z"/><path id="Rectangle-10" fill="url(#pattern-1)" fill-opacity=".5" stroke="#D1CFCD" stroke-width="3" d="M19.5 25.5h558v479h-558z"/><path id="Rectangle-1" fill="#DBAF88" d="M552 185v290H178V185h374zm-25 25H203v240h324V210z"/><text id="offsetTop:180px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 163 104.32)"><tspan x="100" y="108.82" fill="#C06334">offsetTop:</tspan> <tspan x="184" y="108.82" fill="#1C85B5">180px</tspan></text><text id="offsetLeft:180px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="34.3" y="179.32" fill="#C06334">offsetLeft:</tspan> <tspan x="126.7" y="179.32" fill="#1C85B5">180px</tspan></text><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="223" y="247">Introduction</tspan> <tspan x="223" y="275" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="223" y="294" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="223" y="313" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="223" y="332" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="223" y="351" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape </tspan> <tspan x="223" y="370" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">and first appeared in that company’s </tspan> <tspan x="223" y="389" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Navigator 2.0 browser. It has appeared </tspan> <tspan x="223" y="408" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all subsequent browsers from </tspan> <tspan x="223" y="427" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Netscape and in all browsers from </tspan> <tspan x="223" y="446" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Microsoft</tspan></text><path id="Line-40" fill="#C06334" fill-rule="nonzero" d="M179 26.5l7 14h-6v128.82h6l-7 14-7-14h6V40.5h-6l7-14z"/><path id="Line-41" fill="#C06334" fill-rule="nonzero" d="M163.41 179.91l14 7-14 7v-6H34.589l.001 6-14-7 14-7-.001 6H163.41v-6z"/><circle id="Oval-2" cx="203" cy="211" r="2" fill="#1C85B5"/><circle id="Oval-2" cx="179" cy="186" r="3" fill="#1C85B5"/><ellipse id="Oval-6" cx="364.25" cy="104" fill="#FBF2EC" stroke="#C06334" stroke-width="2" rx="100" ry="50"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M366 156.379v11.638h6l-7 14-7-14h6v-11.638h2z"/><text id="position:-absolute;" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="296.5" y="95.793">position: absolute;</tspan> <tspan x="296.5" y="110.793">left: 180px;</tspan> <tspan x="296.5" y="125.793">top: 180px;</tspan></text><text id="offsetParent-<MAIN>-" fill="#AF6E24" font-family="PTMono-Bold, PT Mono" font-size="16" font-weight="bold"><tspan x="20.5" y="19.379">offsetParent <MAIN> </tspan></text><text id="<DIV>" fill="#AF6E24" font-family="PTMono-Bold, PT Mono" font-size="16" font-weight="bold"><tspan x="183.5" y="180.379"><DIV></tspan></text><g id="Group" transform="translate(511 210)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-3)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-3)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-4)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g></g></g></svg> \ No newline at end of file diff --git a/2-ui/1-document/09-size-and-scroll/metric-offset-width-height.svg b/2-ui/1-document/09-size-and-scroll/metric-offset-width-height.svg index 4d30d90cc..49bdccda7 100644 --- a/2-ui/1-document/09-size-and-scroll/metric-offset-width-height.svg +++ b/2-ui/1-document/09-size-and-scroll/metric-offset-width-height.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="508" height="509" viewBox="0 0 508 509"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-offset-width-height.svg"><path id="Rectangle-2" fill="#DBAF88" d="M420 130v290H30V130h390zm-25 25H55v240h340V155z"/><path id="Rectangle-1" stroke="#C06334" stroke-width="2" d="M359 177v199H76V177h283z"/><g id="scrollbar" transform="translate(379 155)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g><text id="border" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="21.9" y="75" fill="#C06334">border</tspan> <tspan x="29.1" y="89" fill="#1C85B5">25px</tspan></text><text id="padding" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="41.3" y="45" fill="#C06334">padding</tspan> <tspan x="52.1" y="59" fill="#1C85B5">20px</tspan></text><text id="content-width:284px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="148.1" y="109" fill="#C06334">content width:</tspan> <tspan x="248.9" y="109" fill="#1C85B5">284px</tspan></text><text id="height:200px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 429.5 274)"><tspan x="386.3" y="278" fill="#C06334">height:</tspan> <tspan x="436.7" y="278" fill="#1C85B5">200px</tspan></text><path id="Line" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M360.5 175h88.142"/><path id="Line-2" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M360.5 377h88.142"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M442 177.5l7 14h-6V360h6l-7 14-7-14h6V191.5h-6l7-14z"/><path id="Line-15" fill="#C06334" fill-rule="nonzero" d="M345.5 110l14 7-14 7v-6H91.679l.001 6-14-7 14-7-.001 6H345.5v-6z"/><path id="Line-14" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M30.48 93v43"/><path id="Line-13" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M56.48 93v41"/><text id="border-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="385.9" y="76" fill="#C06334">border</tspan> <tspan x="393.1" y="90" fill="#1C85B5">25px</tspan></text><text id="padding-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="348.3" y="16" fill="#C06334">padding</tspan> <tspan x="359.1" y="30" fill="#1C85B5">20px</tspan></text><text id="scrollbar" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="358.1" y="48" fill="#C06334">scrollbar</tspan> <tspan x="376.1" y="62" fill="#1C85B5">16px</tspan></text><path id="Line-17" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M380.48 93v43"/><path id="Line-20" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M394.48 93v43"/><path id="Line-18" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M419.48 93v41"/><path id="Line-16" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M75.48 93v41"/><path id="Line-19" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M362.48 93v41"/><text id="offsetWidth-=-25+20+" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="56.5" y="484" fill="#C06334">offsetWidth = </tspan> <tspan x="174.1" y="484" fill="#1C85B5">25+20+284+20+16+25 </tspan> <tspan x="333.7" y="484" fill="#C06334">=</tspan> <tspan x="342.1" y="484" fill="#1C85B5"> 390px</tspan></text><path id="Line-24" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M30.5 419v78"/><path id="Line-25" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M419.5 419v80"/><path id="Line-22" fill="#C06334" fill-rule="nonzero" d="M403 456.071l14 7-14 7v-6.001H47.089l.001 6.001-14-7 14-7-.001 5.999H403v-5.999z"/><text id="offsetHeight:290px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 483.5 280.5)"><tspan x="407.9" y="285" fill="#C06334">offsetHeight:</tspan> <tspan x="517.1" y="285" fill="#1C85B5">290px</tspan></text><path id="Line-27" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M417.5 131h88.142"/><path id="Line-28" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M417.5 420h88.142"/><path id="Line-26" fill="#C06334" fill-rule="nonzero" d="M469 132.59l7 14-6-.001V405.41h6l-7 14-7-14h6V146.589l-6 .001 7-14z"/><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="79" y="193">Introduction</tspan> <tspan x="79" y="221" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="79" y="240" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="79" y="259" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="79" y="278" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="79" y="297" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape and </tspan> <tspan x="79" y="316" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">first appeared in that company’s Navigator </tspan> <tspan x="79" y="335" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">2.0 browser. It has appeared in all </tspan> <tspan x="79" y="354" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">subsequent browsers from Netscape and </tspan> <tspan x="79" y="373" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all browsers from Microsoft starting </tspan> <tspan x="79" y="392" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">with </tspan></text></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" width="508" height="509" viewBox="0 0 508 509"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-offset-width-height.svg"><path id="Rectangle-2" fill="#DBAF88" d="M420 130v290H30V130h390zm-25 25H55v240h340V155z"/><path id="Rectangle-1" stroke="#C06334" stroke-width="2" d="M359 177v199H76V177h283z"/><g id="Group" transform="translate(379 155)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g><text id="border" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="21.9" y="75" fill="#C06334">border</tspan> <tspan x="29.1" y="89" fill="#1C85B5">25px</tspan></text><text id="padding" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="41.3" y="45" fill="#C06334">padding</tspan> <tspan x="52.1" y="59" fill="#1C85B5">20px</tspan></text><text id="content-width:284px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="148.1" y="109" fill="#C06334">content width:</tspan> <tspan x="248.9" y="109" fill="#1C85B5">284px</tspan></text><text id="height:200px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 429.5 274)"><tspan x="386.3" y="278" fill="#C06334">height:</tspan> <tspan x="436.7" y="278" fill="#1C85B5">200px</tspan></text><path id="Line" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M360.5 175h88.142"/><path id="Line-2" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M360.5 377h88.142"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M442 177.5l7 14h-6V360h6l-7 14-7-14h6V191.5h-6l7-14z"/><path id="Line-15" fill="#C06334" fill-rule="nonzero" d="M345.5 110l14 7-14 7v-6H91.679l.001 6-14-7 14-7-.001 6H345.5v-6z"/><path id="Line-14" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M30.48 93v43"/><path id="Line-13" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M56.48 93v41"/><text id="border-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="385.9" y="76" fill="#C06334">border</tspan> <tspan x="393.1" y="90" fill="#1C85B5">25px</tspan></text><text id="padding-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="348.3" y="16" fill="#C06334">padding</tspan> <tspan x="359.1" y="30" fill="#1C85B5">20px</tspan></text><text id="scrollbar" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="358.1" y="48" fill="#C06334">scrollbar</tspan> <tspan x="376.1" y="62" fill="#1C85B5">16px</tspan></text><path id="Line-17" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M380.48 93v43"/><path id="Line-20" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M394.48 93v43"/><path id="Line-18" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M419.48 93v41"/><path id="Line-16" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M75.48 93v41"/><path id="Line-19" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M362.48 93v41"/><text id="offsetWidth-=-25+20+" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="56.5" y="484" fill="#C06334">offsetWidth = </tspan> <tspan x="174.1" y="484" fill="#1C85B5">25+20+284+20+16+25 </tspan> <tspan x="333.7" y="484" fill="#C06334">=</tspan> <tspan x="342.1" y="484" fill="#1C85B5"> 390px</tspan></text><path id="Line-24" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M30.5 419v78"/><path id="Line-25" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M419.5 419v80"/><path id="Line-22" fill="#C06334" fill-rule="nonzero" d="M403 456.071l14 7-14 7v-6.001H47.089l.001 6.001-14-7 14-7-.001 5.999H403v-5.999z"/><text id="offsetHeight:290px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 483.5 280.5)"><tspan x="407.9" y="285" fill="#C06334">offsetHeight:</tspan> <tspan x="517.1" y="285" fill="#1C85B5">290px</tspan></text><path id="Line-27" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M417.5 131h88.142"/><path id="Line-28" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M417.5 420h88.142"/><path id="Line-26" fill="#C06334" fill-rule="nonzero" d="M469 132.59l7 14-6-.001V405.41h6l-7 14-7-14h6V146.589l-6 .001 7-14z"/><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="79" y="193">Introduction</tspan> <tspan x="79" y="221" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="79" y="240" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="79" y="259" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="79" y="278" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="79" y="297" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape and </tspan> <tspan x="79" y="316" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">first appeared in that company’s Navigator </tspan> <tspan x="79" y="335" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">2.0 browser. It has appeared in all </tspan> <tspan x="79" y="354" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">subsequent browsers from Netscape and </tspan> <tspan x="79" y="373" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all browsers from Microsoft starting </tspan> <tspan x="79" y="392" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">with </tspan></text></g></g></svg> \ No newline at end of file diff --git a/2-ui/1-document/09-size-and-scroll/metric-scroll-top.svg b/2-ui/1-document/09-size-and-scroll/metric-scroll-top.svg index 7f72de422..c6d14d0f3 100644 --- a/2-ui/1-document/09-size-and-scroll/metric-scroll-top.svg +++ b/2-ui/1-document/09-size-and-scroll/metric-scroll-top.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="489" height="542" viewBox="0 0 489 542"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-scroll-top.svg"><path fill="#FFF" d="M0 0h489v542H0z"/><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="94" y="54">Introduction</tspan> <tspan x="94" y="82" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="94" y="101" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="94" y="120" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="94" y="139" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="94" y="158" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape and </tspan> <tspan x="94" y="177" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">first appeared in that company’s Navigator </tspan> <tspan x="94" y="196" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">2.0 browser. It has appeared in all </tspan> <tspan x="94" y="215" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">subsequent browsers from Netscape and </tspan> <tspan x="94" y="234" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all browsers from Microsoft starting with </tspan> <tspan x="94" y="253" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Internet Explorer 3.0.</tspan> <tspan x="94" y="272" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">The development of this Standard started </tspan> <tspan x="94" y="291" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in November 1996. The first edition of this </tspan> <tspan x="94" y="310" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Ecma Standard was adopted by the Ecma </tspan> <tspan x="94" y="329" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">General Assembly of June 1997.</tspan> <tspan x="94" y="348" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">That Ecma Standard was submitted to ISO/</tspan> <tspan x="94" y="367" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">IEC JTC 1 for adoption under the fast-track </tspan> <tspan x="94" y="386" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">procedure, and approved as international </tspan> <tspan x="94" y="405" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">standard ISO/IEC 16262, in April 1998. The </tspan> <tspan x="94" y="424" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Ecma General Assembly of June 1998 </tspan> <tspan x="94" y="443" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">approved the second edition of ECMA-262 </tspan> <tspan x="94" y="462" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">to keep it fully aligned with ISO/IEC 16262. </tspan> <tspan x="94" y="481" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Changes between the first and the second </tspan> <tspan x="94" y="500" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">edition are editorial in nature.</tspan></text><path id="Rectangle-1" fill="#DBAF88" d="M425 122v290H51V122h374zm-25 25H76v240h324V147z"/><path id="Rectangle-2" stroke="#DBAF88" stroke-width="2" d="M75 22h326v500H75z"/><text id="scrollTop" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 16.5 84)"><tspan x="-15.9" y="88">scrollTop</tspan></text><path id="Line-43" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M9.5 147h66.14"/><path id="Line-42" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M10.5 21h66.14"/><path id="Line-39" fill="#C06334" fill-rule="nonzero" d="M35 20.5l7 14h-6v97.819l6 .001-7 14-7-14 6-.001V34.5h-6l7-14z"/><path id="Rectangle-14" fill="#FFF" d="M88 33h312v89H88z"/><path id="Rectangle-15" fill="#FFF" d="M88 411h312v89H88z"/><text id="scrollHeight:723px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 449 270)"><tspan x="373.4" y="274.5" fill="#C06334">scrollHeight:</tspan> <tspan x="482.6" y="274.5" fill="#1C85B5">723px</tspan></text><path id="Line-27" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M393.5 22h78.14"/><path id="Line-28" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M393.5 522h78.14"/><path id="Line-25" fill="#C06334" fill-rule="nonzero" d="M462 24.5l7 14h-6v466h6l-7 14-7-14h6v-466h-6l7-14z"/><g id="Scrollbar" transform="translate(384 147)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" width="489" height="542" viewBox="0 0 489 542"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-scroll-top.svg"><path fill="#FFF" d="M0 0h489v542H0z"/><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="94" y="54">Introduction</tspan> <tspan x="94" y="82" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="94" y="101" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="94" y="120" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="94" y="139" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="94" y="158" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape and </tspan> <tspan x="94" y="177" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">first appeared in that company’s Navigator </tspan> <tspan x="94" y="196" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">2.0 browser. It has appeared in all </tspan> <tspan x="94" y="215" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">subsequent browsers from Netscape and </tspan> <tspan x="94" y="234" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all browsers from Microsoft starting with </tspan> <tspan x="94" y="253" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Internet Explorer 3.0.</tspan> <tspan x="94" y="272" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">The development of this Standard started </tspan> <tspan x="94" y="291" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in November 1996. The first edition of this </tspan> <tspan x="94" y="310" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Ecma Standard was adopted by the Ecma </tspan> <tspan x="94" y="329" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">General Assembly of June 1997.</tspan> <tspan x="94" y="348" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">That Ecma Standard was submitted to ISO/</tspan> <tspan x="94" y="367" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">IEC JTC 1 for adoption under the fast-track </tspan> <tspan x="94" y="386" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">procedure, and approved as international </tspan> <tspan x="94" y="405" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">standard ISO/IEC 16262, in April 1998. The </tspan> <tspan x="94" y="424" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Ecma General Assembly of June 1998 </tspan> <tspan x="94" y="443" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">approved the second edition of ECMA-262 </tspan> <tspan x="94" y="462" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">to keep it fully aligned with ISO/IEC 16262. </tspan> <tspan x="94" y="481" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Changes between the first and the second </tspan> <tspan x="94" y="500" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">edition are editorial in nature.</tspan></text><path id="Rectangle-1" fill="#DBAF88" d="M425 122v290H51V122h374zm-25 25H76v240h324V147z"/><path id="Rectangle-2" stroke="#DBAF88" stroke-width="2" d="M75 22h326v500H75z"/><text id="scrollTop" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 16.5 84)"><tspan x="-15.9" y="88">scrollTop</tspan></text><path id="Line-43" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M9.5 147h66.14"/><path id="Line-42" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M10.5 21h66.14"/><path id="Line-39" fill="#C06334" fill-rule="nonzero" d="M35 20.5l7 14h-6v97.819l6 .001-7 14-7-14 6-.001V34.5h-6l7-14z"/><path id="Rectangle-14" fill="#FFF" d="M88 33h312v89H88z"/><path id="Rectangle-15" fill="#FFF" d="M88 411h312v89H88z"/><text id="scrollHeight:723px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 449 270)"><tspan x="373.4" y="274.5" fill="#C06334">scrollHeight:</tspan> <tspan x="482.6" y="274.5" fill="#1C85B5">723px</tspan></text><path id="Line-27" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M393.5 22h78.14"/><path id="Line-28" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M393.5 522h78.14"/><path id="Line-25" fill="#C06334" fill-rule="nonzero" d="M462 24.5l7 14h-6v466h6l-7 14-7-14h6v-466h-6l7-14z"/><g id="Group" transform="translate(384 147)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g></g></g></svg> \ No newline at end of file diff --git a/2-ui/1-document/09-size-and-scroll/metric-scroll-width-height.svg b/2-ui/1-document/09-size-and-scroll/metric-scroll-width-height.svg index 75a24e3bc..0c3d29952 100644 --- a/2-ui/1-document/09-size-and-scroll/metric-scroll-width-height.svg +++ b/2-ui/1-document/09-size-and-scroll/metric-scroll-width-height.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="463" height="524" viewBox="0 0 463 524"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-scroll-width-height.svg"><path fill="#FFF" d="M0 0h463v524H0z"/><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="66" y="54">Introduction</tspan> <tspan x="66" y="82" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="66" y="101" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="66" y="120" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="66" y="139" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="66" y="158" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape </tspan> <tspan x="66" y="177" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">and first appeared in that company’s </tspan> <tspan x="66" y="196" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Navigator 2.0 browser. It has appeared </tspan> <tspan x="66" y="215" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all subsequent browsers from </tspan> <tspan x="66" y="234" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Netscape and in all browsers from </tspan> <tspan x="66" y="253" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Microsoft starting with Internet Explorer </tspan> <tspan x="66" y="272" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">3.0.</tspan> <tspan x="66" y="291" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">The development of this Standard </tspan> <tspan x="66" y="310" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">started in November 1996. The first </tspan> <tspan x="66" y="329" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">edition of this Ecma Standard was </tspan> <tspan x="66" y="348" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">adopted by the Ecma General Assembly </tspan> <tspan x="66" y="367" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">of June 1997.</tspan> <tspan x="66" y="386" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">That Ecma Standard was submitted to </tspan> <tspan x="66" y="405" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">ISO/IEC JTC 1 for adoption under the </tspan> <tspan x="66" y="424" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">fast-track procedure, and approved as </tspan> <tspan x="66" y="443" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">international standard ISO/IEC 16262, in </tspan> <tspan x="66" y="462" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">April 1998. The Ecma General Assembly </tspan> <tspan x="66" y="481" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">of June 1998 approved the second </tspan> <tspan x="66" y="500" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">edition of ECMA-262 to keep it fully </tspan> <tspan x="66" y="519" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">aligned with ISO/IEC 16262. Changes </tspan> <tspan x="66" y="538" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">between the first and the second </tspan> <tspan x="66" y="557" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">edition are editorial in nature.</tspan></text><path id="Rectangle-15" fill="#FFF" d="M58 410h312v111H58z"/><path id="Rectangle-14" fill="#FFF" d="M58 35h312v89H58z"/><path id="Rectangle-1" fill="#DBAF88" d="M395 123v290H21V123h374zm-25 25H46v240h324V148z"/><path id="Rectangle-2" stroke="#DBAF88" stroke-width="2" d="M45 22h326v502H45z"/><text id="scrollHeight:723px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 426 270.5)"><tspan x="350.4" y="275" fill="#C06334">scrollHeight:</tspan> <tspan x="459.6" y="275" fill="#1C85B5">723px</tspan></text><path id="Line-27" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M371 22h78"/><path id="Line-26" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M371 524h78"/><path id="Line-25" fill="#C06334" fill-rule="nonzero" d="M439 26l7 14h-6v466h6l-7 14-7-14h6V40h-6l7-14z"/><path id="Line-39" fill="#C06334" fill-rule="nonzero" d="M335.36 102l14 7-14 7-.001-6H64v6l-14-7 14-7v6h271.359l.001-6z"/><path id="Line-42" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M352 154v-54"/><path id="Line-43" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M47 154v-54"/><text id="scrollWidth-=-324px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="149.2" y="105" fill="#C06334">scrollWidth = </tspan> <tspan x="266.8" y="105" fill="#1C85B5">324px</tspan></text><g id="Group-2" transform="translate(354 148)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" width="463" height="524" viewBox="0 0 463 524"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-scroll-width-height.svg"><path fill="#FFF" d="M0 0h463v524H0z"/><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="66" y="54">Introduction</tspan> <tspan x="66" y="82" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="66" y="101" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="66" y="120" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="66" y="139" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="66" y="158" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape </tspan> <tspan x="66" y="177" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">and first appeared in that company’s </tspan> <tspan x="66" y="196" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Navigator 2.0 browser. It has appeared </tspan> <tspan x="66" y="215" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all subsequent browsers from </tspan> <tspan x="66" y="234" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Netscape and in all browsers from </tspan> <tspan x="66" y="253" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Microsoft starting with Internet Explorer </tspan> <tspan x="66" y="272" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">3.0.</tspan> <tspan x="66" y="291" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">The development of this Standard </tspan> <tspan x="66" y="310" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">started in November 1996. The first </tspan> <tspan x="66" y="329" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">edition of this Ecma Standard was </tspan> <tspan x="66" y="348" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">adopted by the Ecma General Assembly </tspan> <tspan x="66" y="367" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">of June 1997.</tspan> <tspan x="66" y="386" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">That Ecma Standard was submitted to </tspan> <tspan x="66" y="405" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">ISO/IEC JTC 1 for adoption under the </tspan> <tspan x="66" y="424" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">fast-track procedure, and approved as </tspan> <tspan x="66" y="443" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">international standard ISO/IEC 16262, in </tspan> <tspan x="66" y="462" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">April 1998. The Ecma General Assembly </tspan> <tspan x="66" y="481" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">of June 1998 approved the second </tspan> <tspan x="66" y="500" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">edition of ECMA-262 to keep it fully </tspan> <tspan x="66" y="519" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">aligned with ISO/IEC 16262. Changes </tspan> <tspan x="66" y="538" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">between the first and the second </tspan> <tspan x="66" y="557" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">edition are editorial in nature.</tspan></text><path id="Rectangle-15" fill="#FFF" d="M58 410h312v111H58z"/><path id="Rectangle-14" fill="#FFF" d="M58 35h312v89H58z"/><path id="Rectangle-1" fill="#DBAF88" d="M395 123v290H21V123h374zm-25 25H46v240h324V148z"/><path id="Rectangle-2" stroke="#DBAF88" stroke-width="2" d="M45 22h326v502H45z"/><text id="scrollHeight:723px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 426 270.5)"><tspan x="350.4" y="275" fill="#C06334">scrollHeight:</tspan> <tspan x="459.6" y="275" fill="#1C85B5">723px</tspan></text><path id="Line-27" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M371 22h78"/><path id="Line-26" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M371 524h78"/><path id="Line-25" fill="#C06334" fill-rule="nonzero" d="M439 26l7 14h-6v466h6l-7 14-7-14h6V40h-6l7-14z"/><path id="Line-39" fill="#C06334" fill-rule="nonzero" d="M335.36 102l14 7-14 7-.001-6H64v6l-14-7 14-7v6h271.359l.001-6z"/><path id="Line-42" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M352 154v-54"/><path id="Line-43" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M47 154v-54"/><text id="scrollWidth-=-324px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="149.2" y="105" fill="#C06334">scrollWidth = </tspan> <tspan x="266.8" y="105" fill="#1C85B5">324px</tspan></text><g id="Group" transform="translate(354 148)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g></g></g></svg> \ No newline at end of file diff --git a/2-ui/1-document/10-size-and-scroll-window/article.md b/2-ui/1-document/10-size-and-scroll-window/article.md index 08a2f6576..77a49cc50 100644 --- a/2-ui/1-document/10-size-and-scroll-window/article.md +++ b/2-ui/1-document/10-size-and-scroll-window/article.md @@ -1,50 +1,50 @@ -# Window sizes and scrolling +# Window sizes এবং scrolling -How do we find the width and height of the browser window? How do we get the full width and height of the document, including the scrolled out part? How do we scroll the page using JavaScript? +আমরা ব্রাউজার উইন্ডোর width এবং height কীভাবে পেতে পারি? scrolled out অংশটুকু সহ ডকুমেন্টের সম্পূর্ণ width এবং height পেতে পারি? জাভাস্ক্রিপ্টের সাহায্যে কীভাবে পেজে স্ক্রল করতে পারি? -For this type of information, we can use the root document element `document.documentElement`, that corresponds to the `<html>` tag. But there are additional methods and peculiarities to consider. +এই সমস্ত তথ্যের জন্য আমরা রুট ডকুমেন্ট এলিমেন্ট `document.documentElement` ব্যবহার করতে পারি, যেটি দ্বারা বুঝানো হয় `<html>` ট্যাগ। তবে এর আরো কিছু মেথড এবং প্রপার্টি আছে। -## Width/height of the window +## window এর Width/height -To get window width and height, we can use the `clientWidth/clientHeight` of `document.documentElement`: +window এর Width/height জানার জন্য আমরা `document.documentElement` এর `clientWidth/clientHeight` প্রপার্টি ব্যবহার করতে পারি: ![](document-client-width-height.svg) ```online -For instance, this button shows the height of your window: +যেমন নিচের বাটনে ক্লিক করলে এটি আপনার বর্তমান window এর height দেখাবে: <button onclick="alert(document.documentElement.clientHeight)">alert(document.documentElement.clientHeight)</button> ``` -````warn header="Not `window.innerWidth/innerHeight`" -Browsers also support properties like `window.innerWidth/innerHeight`. They look like what we want, so why not to use them instead? +````warn header="এটি `window.innerWidth/innerHeight` এর বিকল্প না" +ব্রাউজার `window.innerWidth/innerHeight` প্রপার্টি সাপোর্ট করে। এটি আমাদের চাহিদামত মান প্রদান করে, তারপরও এদের ব্যবহার করা কেন অনুচিত? -If there exists a scrollbar, and it occupies some space, `clientWidth/clientHeight` provide the width/height without it (subtract it). In other words, they return the width/height of the visible part of the document, available for the content. +যদি ডকুমেন্টে কোন স্ক্রলবার উপস্থিত থাকে, এবং এটি কিছু জায়গা নেই, `clientWidth/clientHeight` স্ক্রলবার ব্যতীত width/height এর মান রিটার্ন করে। অন্যভাবে বলতে গেলে এরা শুধুমাত্র দৃশ্যমান ডকুমেন্টের কন্টেন্টের width/height রিটার্ন করে। -`window.innerWidth/innerHeight` includes the scrollbar. +যেখানে `window.innerWidth/innerHeight` স্ক্রলবারসহ মান রিটার্ন করে। -If there's a scrollbar, and it occupies some space, then these two lines show different values: +যদি স্ক্রলবার উপস্থিত থাকে, তাহলে এটি সামান্য পরিমান স্পেস নিতে পারে, যার ফলে নিচের কোডের জন্য ভিন্ন ভিন্ন মান দেখাতে পারে: ```js run -alert( window.innerWidth ); // full window width -alert( document.documentElement.clientWidth ); // window width minus the scrollbar +alert( window.innerWidth ); // সম্পূর্ণ window width +alert( document.documentElement.clientWidth ); // স্ক্রলবার ব্যতীত window width ``` -In most cases, we need the *available* window width in order to draw or position something within scrollbars (if there are any), so we should use `documentElement.clientHeight/clientWidth`. +বেশিরভাগ ক্ষেত্রে আমরা কোন এলিমেন্টকে window এর মধ্যে অবস্থান দিতে স্ক্রলবার ছাড়া *available* window width এর মান জানা লাগবে, এক্ষেত্রে আমরা ব্যবহার করব `documentElement.clientHeight/clientWidth`। ```` -```warn header="`DOCTYPE` is important" -Please note: top-level geometry properties may work a little bit differently when there's no `<!DOCTYPE HTML>` in HTML. Odd things are possible. +```warn header="সবার উপরে অবশ্যই `DOCTYPE` লিখতে হবে" +নোট করুন: `<!DOCTYPE HTML>` ব্যবহার না করলে টপ লেভেল জ্যামিতিক প্রপার্টিগুলো সঠিকভাবে কাজ নাও করতে পারে। এক্ষেত্রে অনাকাঙ্খীত মান দেখাতে পারে। -In modern HTML we should always write `DOCTYPE`. +মডার্ন HTML এ অবশ্যই `DOCTYPE` লিখতে হবে। ``` -## Width/height of the document +## ডকুমেন্টের Width/height -Theoretically, as the root document element is `document.documentElement`, and it encloses all the content, we could measure the document's full size as `document.documentElement.scrollWidth/scrollHeight`. +তাত্ত্বিকভাবে, যেহেতু `document.documentElement` রুট ডকুমেন্ট, এবং এর মধ্যে সকল কন্টেন্ট অবস্থান করে, আমরা ডকুমেন্টের সম্পূর্ণ সাইজ `document.documentElement.scrollWidth/scrollHeight` এর মাধ্যমে নিতে পারে। -But on that element, for the whole page, these properties do not work as intended. In Chrome/Safari/Opera, if there's no scroll, then `documentElement.scrollHeight` may be even less than `documentElement.clientHeight`! Weird, right? +কিন্তু ঐ এলিমেন্টের জন্য সম্পূর্ণ পেজের প্রপার্টি সমূহ সঠিকভাবে কাজ নাও করতে পারে। Chrome/Safari/Opera, এর ক্ষেত্রে যদি কোন স্ক্রলবার না থাকে তাহলে `documentElement.scrollHeight` এর মান `documentElement.clientHeight` থেকে ছোট হতে পারে! ব্যাপারটা অদ্ভুত, তাই না? -To reliably obtain the full document height, we should take the maximum of these properties: +এইক্ষেত্রে আমরা নিম্নোক্তভাবে সঠিক মানটি পেতে পারি: ```js run let scrollHeight = Math.max( @@ -56,23 +56,26 @@ let scrollHeight = Math.max( alert('Full document height, with scrolled out part: ' + scrollHeight); ``` -Why so? Better don't ask. These inconsistencies come from ancient times, not a "smart" logic. +এমন কেন? এটি আপাতত না জানলেও হবে। তবে এই সমস্যার জন্য এটি একটি ভালো সমাধান। -## Get the current scroll [#page-scroll] +## বর্তমান স্ক্রল পজিশনের মান [#page-scroll] -DOM elements have their current scroll state in their `scrollLeft/scrollTop` properties. +DOM এলিমেন্টের বর্তমান স্ক্রলের মান পেতে `scrollLeft/scrollTop` প্রপার্টি আছে। -For document scroll, `document.documentElement.scrollLeft/scrollTop` works in most browsers, except older WebKit-based ones, like Safari (bug [5991](https://bugs.webkit.org/show_bug.cgi?id=5991)), where we should use `document.body` instead of `document.documentElement`. +বর্তমানের বেশিরভাগ ব্রাউজারে `document.documentElement.scrollLeft/scrollTop` কাজ করে, তবে কিছু পুরনো ইঞ্জিন যেমন WebKit, যেটি সাফারি ব্যবহার করে (bug [5991](https://bugs.webkit.org/show_bug.cgi?id=5991)) এদের ক্ষেত্রে `document.documentElement` এর পরিবর্তে `document.body` ব্যবহার করা উচিত। -Luckily, we don't have to remember these peculiarities at all, because the scroll is available in the special properties, `window.pageXOffset/pageYOffset`: +সৌভাগ্যক্রমে, আমাদের এত ঝামেলা করার দরকার নেই, কেননা এর জন্য আরেকটি বিশেষ প্রপার্টি আছে `window.pageXOffset/pageYOffset`: ```js run alert('Current scroll from the top: ' + window.pageYOffset); alert('Current scroll from the left: ' + window.pageXOffset); ``` -These properties are read-only. +এগুলো read-only. +<<<<<<< HEAD +## স্ক্রলিং: scrollTo, scrollBy, scrollIntoView [#window-scroll] +======= ```smart header="Also available as `window` properties `scrollX` and `scrollY`" For historical reasons, both properties exist, but they are the same: - `window.pageXOffset` is an alias of `window.scrollX`. @@ -80,83 +83,84 @@ For historical reasons, both properties exist, but they are the same: ``` ## Scrolling: scrollTo, scrollBy, scrollIntoView [#window-scroll] +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```warn -To scroll the page with JavaScript, its DOM must be fully built. +পেজের কোন একটি অবস্থানে জাভাস্ক্রিপ্টের সাহায্যে স্ক্রল করতে, তবে এজন্য সম্পূর্ণ DOM বিল্ট হওয়া লাগবে। -For instance, if we try to scroll the page with a script in `<head>`, it won't work. +যেমন যদি আমরা `<head>` এর কোন স্ক্রিপ্ট থেকে স্ক্রল করতে চাই এটি কাজ করবে না। ``` -Regular elements can be scrolled by changing `scrollTop/scrollLeft`. +বেশিরভাগ এলিমেন্ট স্ক্রল করা যেতে পারে `scrollTop/scrollLeft` এর মাধ্যমে। -We can do the same for the page using `document.documentElement.scrollTop/scrollLeft` (except Safari, where `document.body.scrollTop/Left` should be used instead). +এটি আমরা এভাবেও করতে পারি `document.documentElement.scrollTop/scrollLeft` (কেবল Safari ব্যতীত, এক্ষেত্রে `document.body.scrollTop/Left` ব্যবহার করতে হবে)। -Alternatively, there's a simpler, universal solution: special methods [window.scrollBy(x,y)](mdn:api/Window/scrollBy) and [window.scrollTo(pageX,pageY)](mdn:api/Window/scrollTo). +বিকল্প হিসেবে, আরো সহজ একটি সমাধান আছে [window.scrollBy(x,y)](mdn:api/Window/scrollBy) এবং [window.scrollTo(pageX,pageY)](mdn:api/Window/scrollTo)। -- The method `scrollBy(x,y)` scrolls the page *relative to its current position*. For instance, `scrollBy(0,10)` scrolls the page `10px` down. +- `scrollBy(x,y)` মেথডটি আমাদের বর্তমান অবস্থানের উপর ভিত্তি করে স্ক্রল করবে। যেমন `scrollBy(0,10)` এর জন্য `10px` নিচে নামবে। ```online - The button below demonstrates this: + বাটনটিতে ক্লিক করলে বুঝতে পারবেন: <button onclick="window.scrollBy(0,10)">window.scrollBy(0,10)</button> ``` -- The method `scrollTo(pageX,pageY)` scrolls the page *to absolute coordinates*, so that the top-left corner of the visible part has coordinates `(pageX, pageY)` relative to the document's top-left corner. It's like setting `scrollLeft/scrollTop`. +- `scrollTo(pageX,pageY)` মেথডটি টপ-লেভেল রুট এলিমেন্টের top-left উপর ভিত্তি করে কাজ করে। - To scroll to the very beginning, we can use `scrollTo(0,0)`. + পেজের একদম শুরুতে যেতে আমরা ব্যবহার করতে পারি `scrollTo(0,0)`। ```online <button onclick="window.scrollTo(0,0)">window.scrollTo(0,0)</button> ``` -These methods work for all browsers the same way. +এরা সকল ব্রাউজারের জন্য কাজ করে। ## scrollIntoView -For completeness, let's cover one more method: [elem.scrollIntoView(top)](mdn:api/Element/scrollIntoView). +চলুন, নতুন আরো একটি মেথড সম্পর্কে জানি : [elem.scrollIntoView(top)](mdn:api/Element/scrollIntoView)। -The call to `elem.scrollIntoView(top)` scrolls the page to make `elem` visible. It has one argument: +আমরা কোন একটি `elem` এর অবস্থানে স্ক্রল পজিশন সেট করতে ব্যবহার করি `elem.scrollIntoView(top)`। এটি একটি আর্গুমেন্ট নেয়: -- If `top=true` (that's the default), then the page will be scrolled to make `elem` appear on the top of the window. The upper edge of the element will be aligned with the window top. -- If `top=false`, then the page scrolls to make `elem` appear at the bottom. The bottom edge of the element will be aligned with the window bottom. +- `top=true` (এটি ডিফল্ট), এর জন্য স্ক্রল পজিশন এলিমেন্টের উপরের অংশটুকুর জন্য সেট হয়। অর্থাৎ আপনি যদি কোন একটি এলিমেন্টে নেভিগেশন করতে চান এক্ষেত্রে `scrollIntoView()` ব্যবহার করতে পারেন। +- `top=false`, এর জন্য স্ক্রল পজিশন এলিমেন্টের নিচের দিকের অংশটুকুর জন্য সেট হয়। ```online -The button below scrolls the page to position itself at the window top: +নিচের বাটনে ক্লিক করলে এটি `scrollIntoView` সেকশনের উপরের অংশে স্ক্রল পজিশন সেট করে: <button onclick="this.scrollIntoView()">this.scrollIntoView()</button> -And this button scrolls the page to position itself at the bottom: +এবং এই বাটনে ক্লিক করলে এটি `scrollIntoView` সেকশনের নিচের অংশে স্ক্রল পজিশন সেট করে: <button onclick="this.scrollIntoView(false)">this.scrollIntoView(false)</button> ``` -## Forbid the scrolling +## স্ক্রলিংকে আটকানো -Sometimes we need to make the document "unscrollable". For instance, when we need to cover the page with a large message requiring immediate attention, and we want the visitor to interact with that message, not with the document. +অনেকসময় আমরা আমাদের ডকুমেন্টের স্ক্রলিং ফিচারটিকে রোধ করতে চাই। যেমন যদি আমাদের এমন একটি গুরুত্বপূর্ণ মেসেজসহ কভার পেজ আছে, যেটির কোন মেসেজ দ্বারা ভিজিটরকে আকৃষ্ট করতে চাই। -To make the document unscrollable, it's enough to set `document.body.style.overflow = "hidden"`. The page will "freeze" at its current scroll position. +কোন একটি এলিমেন্টকে আনস্ক্রলেবল করতে চাইলে, এভাবে করতে পারি `document.body.style.overflow = "hidden"`। এর ফলে আমাদের পেজটি বর্তমান স্ক্রলিং পজিশনে স্থির (freeze) হয়ে যাবে। ```online -Try it: +এটি দেখুন: <button onclick="document.body.style.overflow = 'hidden'">document.body.style.overflow = 'hidden'</button> <button onclick="document.body.style.overflow = ''">document.body.style.overflow = ''</button> -The first button freezes the scroll, while the second one releases it. +প্রথম বাটনের জন্য স্ক্রলিং ফিচার বন্ধ হয়ে যাবে, এবং দ্বিতীয়টির জন্য এটি পুনরায় স্ক্রলেবল হবে। ``` -We can use the same technique to freeze the scroll for other elements, not just for `document.body`. +এভাবে শুধু `document.body` এলিমেন্টের জন্য না আমরা যেকোন এলিমেন্টের জন্য এভাবে স্ক্রলিং বন্ধ বা চালু করতে পারি। -The drawback of the method is that the scrollbar disappears. If it occupied some space, then that space is now free and the content "jumps" to fill it. +তবে এটির একটি সমস্যা হল এর ফলে আমাদের স্ক্রলবারটি অদৃশ্য হয়ে যায়। যার ফলে কিছু জায়গা তৈরি হয় এবং এখানে কন্টেন্ট সমূহ কিছু জায়গা নিতে পারে। -That looks a bit odd, but can be worked around if we compare `clientWidth` before and after the freeze. If it increased (the scrollbar disappeared), then add `padding` to `document.body` in place of the scrollbar to keep the content width the same. +এটি দেখতে কিছুটা বিদঘুটে লাগতে পারে, তবে এক্ষেত্রে আমরা চাইলে `clientWidth` এর সহায়তা নিতে পারি। যখন আমাদের স্পেসবার অদৃশ্য হয়ে যায়, তখন আমরা কিছুটা `padding` সেট করে দিতে পারি, যার ফলে পার্থক্য বুঝা যাবে না। -## Summary +## সারাংশ -Geometry: +এলিমেন্টের সাইজ: -- Width/height of the visible part of the document (content area width/height): `document.documentElement.clientWidth/clientHeight` -- Width/height of the whole document, with the scrolled out part: +- দৃশ্যমান ডকুমেন্টের (content area width/height) এর Width/height পেতে: `document.documentElement.clientWidth/clientHeight` +- অদৃশ্য অংশটুকুর মান সহ Width/height পেতে: ```js let scrollHeight = Math.max( @@ -166,11 +170,11 @@ Geometry: ); ``` -Scrolling: +স্ক্রলিং: -- Read the current scroll: `window.pageYOffset/pageXOffset`. -- Change the current scroll: +- বর্তমান স্ক্রলিং পজিশনের মান জানতে: `window.pageYOffset/pageXOffset`. +- প্রোগ্রামাটিক্যালী স্ক্রলিং করতে: - - `window.scrollTo(pageX,pageY)` -- absolute coordinates, - - `window.scrollBy(x,y)` -- scroll relative the current place, - - `elem.scrollIntoView(top)` -- scroll to make `elem` visible (align with the top/bottom of the window). + - `window.scrollTo(pageX,pageY)` -- পেজের একদম শুরুতে যেতে, + - `window.scrollBy(x,y)` -- বর্তমান পজিশনের উপর ভিত্তি করে স্ক্রল করতে, + - `elem.scrollIntoView(top)` -- কোন একটি এলিমেন্টের `elem` পজিশনে স্ক্রল করতে (`true/false` ডকুমেন্টের উপরের বা নিচের অবস্থানে যেতে). diff --git a/2-ui/1-document/10-size-and-scroll-window/document-client-width-height.svg b/2-ui/1-document/10-size-and-scroll-window/document-client-width-height.svg index 18cd37a74..65e77ae80 100644 --- a/2-ui/1-document/10-size-and-scroll-window/document-client-width-height.svg +++ b/2-ui/1-document/10-size-and-scroll-window/document-client-width-height.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="508" height="203" viewBox="0 0 508 203"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="document-client-width-height.svg"><g id="noun_69008_cc" fill="#DBAF88" transform="translate(275 8)"><path id="Shape" d="M179.188 145H3.813C1.708 145 0 143.369 0 141.375V3.625C0 1.631 1.708 0 3.813 0h175.375C181.284 0 183 1.631 183 3.625v137.75c0 1.994-1.716 3.625-3.813 3.625zM7.625 137.75h167.75V7.25H7.625v130.5z"/><path id="Shape" d="M175.375 36.25H7.625c-2.104 0-3.813-1.631-3.813-3.625S5.521 29 7.626 29h167.75c2.097 0 3.813 1.631 3.813 3.625s-1.716 3.625-3.813 3.625zM61.32 126.578c-1.266 0-2.508-.595-3.233-1.682L34.892 89.849a3.486 3.486 0 01.16-4.082l23.195-29.906c1.25-1.631 3.63-1.964 5.33-.746 1.693 1.188 2.059 3.458.8 5.067l-21.646 27.92 21.807 32.951c1.12 1.69.587 3.937-1.197 4.988a3.936 3.936 0 01-2.02.537zM122 126.578a3.802 3.802 0 01-2.028-.559c-1.784-1.058-2.326-3.298-1.197-4.988l21.807-32.95-21.655-27.928c-1.25-1.617-.892-3.878.8-5.067 1.694-1.197 4.08-.849 5.33.76l23.188 29.907a3.462 3.462 0 01.16 4.082L125.21 124.88c-.709 1.102-1.944 1.697-3.21 1.697zM76.25 119.937a4.07 4.07 0 01-1.86-.457c-1.838-.979-2.494-3.183-1.465-4.959l30.18-51.359c1.03-1.755 3.34-2.385 5.2-1.37 1.83.978 2.486 3.175 1.457 4.937l-30.18 51.359c-.701 1.182-1.998 1.849-3.332 1.849zM22.875 18.125c0 2.003-1.706 3.625-3.813 3.625-2.106 0-3.812-1.622-3.812-3.625s1.706-3.625 3.813-3.625c2.106 0 3.812 1.622 3.812 3.625zM38.125 18.125c0 2.003-1.706 3.625-3.813 3.625-2.106 0-3.812-1.622-3.812-3.625s1.706-3.625 3.813-3.625c2.106 0 3.812 1.622 3.812 3.625zM53.375 18.125c0 2.003-1.706 3.625-3.813 3.625-2.106 0-3.812-1.622-3.812-3.625s1.706-3.625 3.813-3.625c2.106 0 3.812 1.622 3.812 3.625z"/></g><text id="documentElement.clie" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="12" y="101">documentElement.clientHeight</tspan></text><text id="documentElement.clie" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="257" y="195">documentElement.clientWidth</tspan></text><path id="Line-3-Copy" fill="#C06334" fill-rule="nonzero" d="M299.025 177.653l-19-9.5 19-9.5-.001 8h132v-8l19 9.5-19 9.5v-8h-132v8z" transform="matrix(-1 0 0 1 730.025 0)"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M256.5 45l9.5 19-8-.001v64l8 .001-9.5 19-9.5-19 8-.001v-64L247 64l9.5-19z"/></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" width="508" height="203" viewBox="0 0 508 203"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="document-client-width-height.svg"><g id="noun_69008_cc" fill="#DBAF88" transform="translate(275 8)"><path id="Shape" d="M179.188 145H3.813C1.708 145 0 143.369 0 141.375V3.625C0 1.631 1.708 0 3.813 0h175.375C181.284 0 183 1.631 183 3.625v137.75c0 1.994-1.716 3.625-3.813 3.625zM7.625 137.75h167.75V7.25H7.625v130.5z"/><path id="Shape" d="M175.375 36.25H7.625c-2.104 0-3.813-1.631-3.813-3.625S5.521 29 7.626 29h167.75c2.097 0 3.813 1.631 3.813 3.625s-1.716 3.625-3.813 3.625zM61.32 126.578c-1.266 0-2.508-.595-3.233-1.682L34.892 89.849a3.486 3.486 0 01.16-4.082l23.195-29.906c1.25-1.631 3.63-1.964 5.33-.746 1.693 1.188 2.059 3.458.8 5.067l-21.646 27.92 21.807 32.951c1.12 1.69.587 3.937-1.197 4.988a3.936 3.936 0 01-2.02.537zM122 126.578a3.802 3.802 0 01-2.028-.559c-1.784-1.058-2.326-3.298-1.197-4.988l21.807-32.95-21.655-27.928c-1.25-1.617-.892-3.878.8-5.067 1.694-1.197 4.08-.849 5.33.76l23.188 29.907a3.462 3.462 0 01.16 4.082L125.21 124.88c-.709 1.102-1.944 1.697-3.21 1.697zM76.25 119.937a4.07 4.07 0 01-1.86-.457c-1.838-.979-2.494-3.183-1.465-4.959l30.18-51.359c1.03-1.755 3.34-2.385 5.2-1.37 1.83.978 2.486 3.175 1.457 4.937l-30.18 51.359c-.701 1.182-1.998 1.849-3.332 1.849zM22.875 18.125c0 2.003-1.706 3.625-3.813 3.625-2.106 0-3.812-1.622-3.812-3.625s1.706-3.625 3.813-3.625c2.106 0 3.812 1.622 3.812 3.625zM38.125 18.125c0 2.003-1.706 3.625-3.813 3.625-2.106 0-3.812-1.622-3.812-3.625s1.706-3.625 3.813-3.625c2.106 0 3.812 1.622 3.812 3.625zM53.375 18.125c0 2.003-1.706 3.625-3.813 3.625-2.106 0-3.812-1.622-3.812-3.625s1.706-3.625 3.813-3.625c2.106 0 3.812 1.622 3.812 3.625z"/></g><text id="documentElement.clie" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="12" y="101">documentElement.clientHeight</tspan></text><text id="documentElement.clie" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="257" y="195">documentElement.clientWidth</tspan></text><path id="Line-3-Copy" fill="#C06334" fill-rule="nonzero" d="M431.025 158.653l19 9.5-19 9.5-.001-8h-132v8l-19-9.5 19-9.5v8h132v-8z"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M256.5 45l9.5 19-8-.001v64l8 .001-9.5 19-9.5-19 8-.001v-64L247 64l9.5-19z"/></g></g></svg> \ No newline at end of file diff --git a/2-ui/1-document/11-coordinates/coordinates.svg b/2-ui/1-document/11-coordinates/coordinates.svg index 261ff6696..169fc4102 100644 --- a/2-ui/1-document/11-coordinates/coordinates.svg +++ b/2-ui/1-document/11-coordinates/coordinates.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="521" height="411" viewBox="0 0 521 411"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="coordinates.svg"><g id="noun_69008_cc" fill="#DBAF88" transform="translate(13 11)"><path id="Shape" d="M490.563 386H10.438C4.676 386 0 381.658 0 376.35V9.65C0 4.342 4.676 0 10.438 0h480.125C496.303 0 501 4.343 501 9.65v366.7c0 5.308-4.697 9.65-10.438 9.65zm-480.4-12.939h478.642V12.94H10.162V373.06z"/><path id="Shape" d="M20.859 54.1c-5.753 0-10.422-1.147-10.422-2.55 0-1.402 4.67-2.55 10.422-2.55H479.4c5.732 0 10.422 1.148 10.422 2.55 0 1.403-4.69 2.55-10.422 2.55H20.86zM33.8 31.627a6.024 6.024 0 11-12.05 0 6.024 6.024 0 1112.05 0zM63.988 31.627a6.024 6.024 0 11-12.05 0 6.024 6.024 0 1112.05 0zM94.177 31.627a6.024 6.024 0 11-12.05 0 6.024 6.024 0 1112.05 0z"/></g><text id="height" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="417" y="208">height</tspan></text><text id="bottom" fill="#7E7C7B" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="451" y="311">bottom</tspan></text><path id="Line-28" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M395 293h103"/><path id="Line-30" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M392 296v74.5"/><path id="Line-30-Copy" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M119 296v46"/><path id="Line-29" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M396 120h30"/><text id="x" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="62" y="113">x</tspan></text><text id="left" fill="#7E7C7B" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="50" y="135">left</tspan></text><text id="y" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="125" y="79">y</tspan></text><text id="width" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="234" y="339">width</tspan></text><path id="Line" fill="#C06334" fill-rule="nonzero" d="M414 118.5V273h8l-9.5 19-9.5-19h8V118.5h3z"/><path id="Line-Copy" fill="#7E7C7B" fill-rule="nonzero" d="M476 65v208h8l-9.5 19-9.5-19h8V65h3z"/><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M371 309l19 9.5-19 9.5-.001-8H116v-3h254.999l.001-8z"/><path id="Line-3" fill="#C06334" fill-rule="nonzero" d="M100.05 109.903l18.95 9.6-19.05 9.4.042-8.001-76.5-.402-1.5-.008.016-3 1.5.008 76.5.402.042-8z"/><text id="right" fill="#7E7C7B" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="180" y="375">right</tspan></text><path id="Line-3-Copy-2" fill="#7E7C7B" fill-rule="nonzero" d="M371 350l19 9.5-19 9.5v-8H21.005v-3H371v-8z"/><path id="Line-3-Copy" fill="#C06334" fill-rule="nonzero" d="M119 65v1.5l.003 34.249h8l-9.498 19.001-9.502-19h8L116 66.5V65h3z" transform="matrix(-1 0 0 1 235.005 0)"/><path id="Rectangle-1" fill="#DBAF88" d="M392.629 119v175H118V119h274.629zM382 129H129v155h253V129z"/><text id="Introduction-This-Ec" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold" opacity=".8"><tspan x="138.946" y="153.8">Introduction</tspan> <tspan x="138.946" y="181.8" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on </tspan> <tspan x="138.946" y="200.8" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">several originating technologies, </tspan> <tspan x="138.946" y="219.8" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">the most well known being </tspan> <tspan x="138.946" y="238.8" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JavaScript (Netscape) and JScript </tspan> <tspan x="138.946" y="257.8" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">(Microsoft). The language was </tspan> <tspan x="138.946" y="276.8" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at </tspan></text><text id="top" fill="#7E7C7B" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="125" y="96">top</tspan></text></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" width="521" height="411" viewBox="0 0 521 411"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="coordinates.svg"><g id="noun_69008_cc" fill="#DBAF88" transform="translate(13 11)"><path id="Shape" d="M490.563 386H10.438C4.676 386 0 381.658 0 376.35V9.65C0 4.342 4.676 0 10.438 0h480.125C496.303 0 501 4.343 501 9.65v366.7c0 5.308-4.697 9.65-10.438 9.65zm-480.4-12.939h478.642V12.94H10.162V373.06z"/><path id="Shape" d="M20.859 54.1c-5.753 0-10.422-1.147-10.422-2.55 0-1.402 4.67-2.55 10.422-2.55H479.4c5.732 0 10.422 1.148 10.422 2.55 0 1.403-4.69 2.55-10.422 2.55H20.86zM33.8 31.627a6.024 6.024 0 11-12.05 0 6.024 6.024 0 1112.05 0zM63.988 31.627a6.024 6.024 0 11-12.05 0 6.024 6.024 0 1112.05 0zM94.177 31.627a6.024 6.024 0 11-12.05 0 6.024 6.024 0 1112.05 0z"/></g><text id="height" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="417" y="208">height</tspan></text><text id="bottom" fill="#7E7C7B" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="451" y="311">bottom</tspan></text><path id="Line-28" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M395 293h103"/><path id="Line-30" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M392 296v74.5"/><path id="Line-30-Copy" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M119 296v46"/><path id="Line-29" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M396 120h30"/><text id="x" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="62" y="113">x</tspan></text><text id="left" fill="#7E7C7B" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="50" y="135">left</tspan></text><text id="y" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="125" y="79">y</tspan></text><text id="width" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="234" y="339">width</tspan></text><path id="Line" fill="#C06334" fill-rule="nonzero" d="M414 118.5V273h8l-9.5 19-9.5-19h8V118.5h3z"/><path id="Line-Copy" fill="#7E7C7B" fill-rule="nonzero" d="M476 65v208h8l-9.5 19-9.5-19h8V65h3z"/><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M371 309l19 9.5-19 9.5-.001-8H116v-3h254.999l.001-8z"/><path id="Line-3" fill="#C06334" fill-rule="nonzero" d="M100.05 109.903l18.95 9.6-19.05 9.4.042-8.001-76.5-.402-1.5-.008.016-3 1.5.008 76.5.402.042-8z"/><text id="right" fill="#7E7C7B" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="180" y="375">right</tspan></text><path id="Line-3-Copy-2" fill="#7E7C7B" fill-rule="nonzero" d="M371 350l19 9.5-19 9.5v-8H21.005v-3H371v-8z"/><path id="Line-3-Copy" fill="#C06334" fill-rule="nonzero" d="M119 65v1.5l.003 34.249h8l-9.498 19.001-9.502-19h8L116 66.5V65h3z"/><path id="Rectangle-1" fill="#DBAF88" d="M392.629 119v175H118V119h274.629zM382 129H129v155h253V129z"/><text id="Introduction-This-Ec" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold" opacity=".8"><tspan x="138.946" y="153.8">Introduction</tspan> <tspan x="138.946" y="181.8" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on </tspan> <tspan x="138.946" y="200.8" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">several originating technologies, </tspan> <tspan x="138.946" y="219.8" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">the most well known being </tspan> <tspan x="138.946" y="238.8" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JavaScript (Netscape) and JScript </tspan> <tspan x="138.946" y="257.8" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">(Microsoft). The language was </tspan> <tspan x="138.946" y="276.8" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at </tspan></text><text id="top" fill="#7E7C7B" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="125" y="96">top</tspan></text></g></g></svg> \ No newline at end of file diff --git a/2-ui/2-events/01-introduction-browser-events/04-move-ball-field/move-ball-coords.svg b/2-ui/2-events/01-introduction-browser-events/04-move-ball-field/move-ball-coords.svg index 2acc6b03e..fc26b023c 100644 --- a/2-ui/2-events/01-introduction-browser-events/04-move-ball-field/move-ball-coords.svg +++ b/2-ui/2-events/01-introduction-browser-events/04-move-ball-field/move-ball-coords.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="521" height="330" viewBox="0 0 521 330"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><filter id="filter-2" width="195.6%" height="153.8%" x="-42.9%" y="-25.8%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1" result="shadowSpreadOuter1"/><feOffset dy="1" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 0.0941176471 0 0 0 0 0.0901960784 0 0 0 0 0.0901960784 0 0 0 1 0"/></filter><path id="path-1" d="M263 170v21.429l5.25-5.358 4.375 8.929h1.75s1.13-1.161.875-1.786c-1.203-2.947-4.375-8.928-4.375-8.928H277L263 170z"/></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="move-ball-coords.svg"><g id="noun_69008_cc" fill="#DBAF88" transform="translate(12 6)"><path id="Shape" d="M10.438 316C4.676 316 0 312.445 0 308.1V7.9C0 3.555 4.676 0 10.438 0h480.125C496.303 0 501 3.555 501 7.9v300.2c0 4.345-4.697 7.9-10.438 7.9H10.438zm-.276-12h478.643V12.939H10.162V304z"/><path id="Shape" d="M20.859 54.1c-5.753 0-10.422-1.147-10.422-2.55 0-1.402 4.67-2.55 10.422-2.55H479.4c5.732 0 10.422 1.148 10.422 2.55 0 1.403-4.69 2.55-10.422 2.55H20.86zM33.75 31.6c0 3.315-2.685 6-6 6s-6-2.685-6-6 2.685-6 6-6 6 2.685 6 6zM63.938 31.6c0 3.315-2.685 6-6 6s-6-2.685-6-6 2.685-6 6-6 6 2.685 6 6zM94.127 31.6c0 3.315-2.685 6-6 6s-6-2.685-6-6 2.685-6 6-6 6 2.685 6 6z"/></g><image id="Screen-Shot-2017-02-25-at-23.45.22" width="224" height="150" x="183" y="100" xlink:href="data:image/png;base64,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"/><text id="ball.style.left" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="174" y="262">ball.style.left</tspan></text><text id="?" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="40" font-weight="normal"><tspan x="217.5" y="229">?</tspan></text><text id="fieldCoords.left" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="48.9" y="189.32">fieldCoords.left</tspan></text><text id="event.clientX" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="59.7" y="161.32">event.clientX</tspan></text><path id="Line-41" fill="#C06334" fill-rule="nonzero" d="M168.41 187.91l14 7-14 7v-6H39.589l.001 6-14-7 14-7-.001 6H168.41v-6z"/><path id="Line-41-Copy-2" fill="#C06334" fill-rule="nonzero" d="M248 160.91l14 7-14 7v-6H39.589l.001 6-14-7 14-7-.001 6H248v-6z"/><g id="ball" opacity=".7" transform="translate(261 168)"><circle id="Oval-4" cx="18.753" cy="18.753" r="18.753" fill="#FFF"/><path id="Shape" fill="#181717" fill-rule="nonzero" d="M37.792 18.204a.229.229 0 00-.003-.123l-.004-.016a18.9 18.9 0 00-6.003-12.94c-.445-.461-1.107-1.006-1.863-1.534A19.043 19.043 0 0012.899.935c-.412.106-.98.322-1.64.622a18.593 18.593 0 00-3.53 2.014A18.856 18.856 0 004.68 6.344c-6.874 7.794-6.085 19.762 1.758 26.679a19.043 19.043 0 004.876 3.128c.254.121.465.194.645.272 7.417 2.964 15.919.96 21.169-4.992 3.216-3.65 4.87-8.343 4.663-13.227zm-.677-.785l-.05-.135c-.387-1.04-1.095-2.957-2.828-4.492-.255-3.228-1.405-5.115-2.43-6.774a18.297 18.297 0 015.308 11.401zM24.485 3.158a.476.476 0 00.044-.013c1.666.291 4.245 1.237 6.464 2.748a.274.274 0 00.03.068c.06.1.214.347.214.347.99 1.6 2.109 3.414 2.362 6.494-1.007.741-1.724 1.531-2.42 2.295-.414.456-.84.925-1.326 1.383-1.63-1.516-4.52-2.813-7.641-3.42-.306-1.35-.919-3.854-2.423-6.628l.116-.132c2.418-2.743 3.269-2.9 4.255-3.08.105-.019.213-.039.325-.062zm-8.729 15.517l6.255-5.001c3.137.597 6.025 1.903 7.547 3.413.372 1.153.468 3.636.54 5.464.035.935.069 1.754.127 2.246-2.457 2.24-5.717 4.539-6.78 4.778l-6.843-2.677c-.512-2.867-.662-4.83-.846-8.223zm.205 8.273l-4.955 3.485a.249.249 0 00-.148-.012c-.923.192-4.479-2.415-6.21-3.929a.264.264 0 00-.065-.04c-.073-.495-.23-1.125-.408-1.84-.469-1.885-1.05-4.221-.528-5.673l.028-.028c.006-.007.013-.015.018-.024.339-.487.665-.908 1-1.286 1.058-1.2 2.256-2.053 4.12-2.927l.379.276c1.735 1.266 4.094 2.99 5.927 3.8.185 3.374.335 5.339.842 8.198zM9.35 3.678c.07-.079.145-.147.233-.226l.049-.044c.185-.102.424-.243.702-.405.653-.381 1.546-.905 2.527-1.398a18.483 18.483 0 018.294-.832c0 .093.052.18.137.223.17.089.343.172.515.255.733.354 1.432.692 2.073 1.37-1.001.19-2.025.496-4.464 3.262l-.156.177c-2.457-.245-5.282-.38-7.822.37-.94-1.119-1.73-1.651-2.429-2.123l-.019-.013c.153-.357.266-.51.36-.616zM1.413 15.43a.25.25 0 00-.398-.123 1.375 1.375 0 00-.076.066 18.024 18.024 0 014.08-8.465c.12-.1.274-.233.448-.385.724-.63 2.41-2.101 2.946-1.847a13.536 13.536 0 00.092.063l.147.1c.652.44 1.39.937 2.258 1.96-.78 1.657-2.416 5.752-2.408 7.314-1.927.907-3.177 1.802-4.288 3.062-.295.334-.584.699-.878 1.108l-.106-.1c-.557-.52-1.396-1.306-1.817-2.753zm5.438 17.124a18.323 18.323 0 01-3.95-4.92c.691-.195 1.023-.323 1.411-.586.638.539 4.586 3.827 6.334 4.006a36.692 36.692 0 003.055 4.295c-.572.352-1.042.473-1.648.437a18.311 18.311 0 01-5.202-3.232zm6.469 3.698c.295-.108.593-.268.92-.49 2.756.407 5.828.152 7.99-.152.031.021.066.034.105.04.52.068 2.062.226 3.92.015a18.292 18.292 0 01-12.935.587zm18.778-4.768a.256.256 0 00-.042.181 17.964 17.964 0 01-3.83 3.004.236.236 0 00-.111.003c-2.244.59-4.392.479-5.354.382.433-1.078.73-2.68.902-4.876 1.262-.352 4.456-2.594 7.01-4.925.636.105 1.07.204 1.421.286.858.198 1.25.29 2.81.086-.201 1.17-.765 2.896-2.806 5.86zm2.797-3.623c.438-1.046.605-1.827.69-2.448a.237.237 0 00-.014-.125c.39-.886 1.186-3.392 1.594-5.443a18.028 18.028 0 01-2.27 8.016z"/></g><g id="Default"><use fill="#000" filter="url(#filter-2)" xlink:href="#path-1"/><path fill="#FFF" stroke="#A7333A" d="M262.5 168.775l15.69 16.01h-6.488c.886 1.695 3.06 5.91 4.01 8.24.318.776-.979 2.324-.979 2.324h0l-2.42.151-4.2-8.574-5.613 5.727v-23.878z"/></g><path id="Line-16-Copy-2" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M195.535 180.945s20.728 10.637 32.233 10.637c11.504 0 32.232-10.637 32.232-10.637"/></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="521" height="330" viewBox="0 0 521 330"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><filter id="filter-2" width="195.6%" height="153.8%" x="-42.9%" y="-25.8%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1" result="shadowSpreadOuter1"/><feOffset dy="1" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 0.0941176471 0 0 0 0 0.0901960784 0 0 0 0 0.0901960784 0 0 0 1 0"/></filter><path id="path-1" d="M263 170v21.429l5.25-5.358 4.375 8.929h1.75s1.13-1.161.875-1.786c-1.203-2.947-4.375-8.928-4.375-8.928H277L263 170z"/></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="move-ball-coords.svg"><g id="noun_69008_cc" fill="#DBAF88" transform="translate(12 6)"><path id="Shape" d="M10.438 316C4.676 316 0 312.445 0 308.1V7.9C0 3.555 4.676 0 10.438 0h480.125C496.303 0 501 3.555 501 7.9v300.2c0 4.345-4.697 7.9-10.438 7.9H10.438zm-.276-12h478.643V12.939H10.162V304z"/><path id="Shape" d="M20.859 54.1c-5.753 0-10.422-1.147-10.422-2.55 0-1.402 4.67-2.55 10.422-2.55H479.4c5.732 0 10.422 1.148 10.422 2.55 0 1.403-4.69 2.55-10.422 2.55H20.86zM33.75 31.6c0 3.315-2.685 6-6 6s-6-2.685-6-6 2.685-6 6-6 6 2.685 6 6zM63.938 31.6c0 3.315-2.685 6-6 6s-6-2.685-6-6 2.685-6 6-6 6 2.685 6 6zM94.127 31.6c0 3.315-2.685 6-6 6s-6-2.685-6-6 2.685-6 6-6 6 2.685 6 6z"/></g><image id="Screen-Shot-2017-02-25-at-23.45.22" width="224" height="150" x="183" y="100" xlink:href="data:image/png;base64,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"/><text id="ball.style.left" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="174" y="262">ball.style.left</tspan></text><text id="?" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="40" font-weight="normal"><tspan x="217.5" y="229">?</tspan></text><text id="fieldCoords.left" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="48.9" y="189.32">fieldCoords.left</tspan></text><text id="event.clientX" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="59.7" y="161.32">event.clientX</tspan></text><path id="Line-41" fill="#C06334" fill-rule="nonzero" d="M168.41 187.91l14 7-14 7v-6H39.589l.001 6-14-7 14-7-.001 6H168.41v-6z"/><path id="Line-41-Copy-2" fill="#C06334" fill-rule="nonzero" d="M248 160.91l14 7-14 7v-6H39.589l.001 6-14-7 14-7-.001 6H248v-6z"/><g id="ball" opacity=".7" transform="translate(261 168)"><circle id="Oval-4" cx="18.753" cy="18.753" r="18.753" fill="#FFF"/><path id="Shape" fill="#181717" fill-rule="nonzero" d="M37.792 18.204a.229.229 0 00-.003-.123l-.004-.016a18.9 18.9 0 00-6.003-12.94c-.445-.461-1.107-1.006-1.863-1.534A19.043 19.043 0 0012.899.935c-.412.106-.98.322-1.64.622a18.593 18.593 0 00-3.53 2.014A18.856 18.856 0 004.68 6.344c-6.874 7.794-6.085 19.762 1.758 26.679a19.043 19.043 0 004.876 3.128c.254.121.465.194.645.272 7.417 2.964 15.919.96 21.169-4.992 3.216-3.65 4.87-8.343 4.663-13.227zm-.677-.785l-.05-.135c-.387-1.04-1.095-2.957-2.828-4.492-.255-3.228-1.405-5.115-2.43-6.774a18.297 18.297 0 015.308 11.401zM24.485 3.158a.476.476 0 00.044-.013c1.666.291 4.245 1.237 6.464 2.748a.274.274 0 00.03.068c.06.1.214.347.214.347.99 1.6 2.109 3.414 2.362 6.494-1.007.741-1.724 1.531-2.42 2.295-.414.456-.84.925-1.326 1.383-1.63-1.516-4.52-2.813-7.641-3.42-.306-1.35-.919-3.854-2.423-6.628l.116-.132c2.418-2.743 3.269-2.9 4.255-3.08.105-.019.213-.039.325-.062zm-8.729 15.517l6.255-5.001c3.137.597 6.025 1.903 7.547 3.413.372 1.153.468 3.636.54 5.464.035.935.069 1.754.127 2.246-2.457 2.24-5.717 4.539-6.78 4.778l-6.843-2.677c-.512-2.867-.662-4.83-.846-8.223zm.205 8.273l-4.955 3.485a.249.249 0 00-.148-.012c-.923.192-4.479-2.415-6.21-3.929a.264.264 0 00-.065-.04c-.073-.495-.23-1.125-.408-1.84-.469-1.885-1.05-4.221-.528-5.673l.028-.028c.006-.007.013-.015.018-.024.339-.487.665-.908 1-1.286 1.058-1.2 2.256-2.053 4.12-2.927l.379.276c1.735 1.266 4.094 2.99 5.927 3.8.185 3.374.335 5.339.842 8.198zM9.35 3.678c.07-.079.145-.147.233-.226l.049-.044c.185-.102.424-.243.702-.405.653-.381 1.546-.905 2.527-1.398a18.483 18.483 0 018.294-.832c0 .093.052.18.137.223.17.089.343.172.515.255.733.354 1.432.692 2.073 1.37-1.001.19-2.025.496-4.464 3.262l-.156.177c-2.457-.245-5.282-.38-7.822.37-.94-1.119-1.73-1.651-2.429-2.123l-.019-.013c.153-.357.266-.51.36-.616zM1.413 15.43a.25.25 0 00-.398-.123 1.375 1.375 0 00-.076.066 18.024 18.024 0 014.08-8.465c.12-.1.274-.233.448-.385.724-.63 2.41-2.101 2.946-1.847a13.536 13.536 0 00.092.063l.147.1c.652.44 1.39.937 2.258 1.96-.78 1.657-2.416 5.752-2.408 7.314-1.927.907-3.177 1.802-4.288 3.062-.295.334-.584.699-.878 1.108l-.106-.1c-.557-.52-1.396-1.306-1.817-2.753zm5.438 17.124a18.323 18.323 0 01-3.95-4.92c.691-.195 1.023-.323 1.411-.586.638.539 4.586 3.827 6.334 4.006a36.692 36.692 0 003.055 4.295c-.572.352-1.042.473-1.648.437a18.311 18.311 0 01-5.202-3.232zm6.469 3.698c.295-.108.593-.268.92-.49 2.756.407 5.828.152 7.99-.152.031.021.066.034.105.04.52.068 2.062.226 3.92.015a18.292 18.292 0 01-12.935.587zm18.778-4.768a.256.256 0 00-.042.181 17.964 17.964 0 01-3.83 3.004.236.236 0 00-.111.003c-2.244.59-4.392.479-5.354.382.433-1.078.73-2.68.902-4.876 1.262-.352 4.456-2.594 7.01-4.925.636.105 1.07.204 1.421.286.858.198 1.25.29 2.81.086-.201 1.17-.765 2.896-2.806 5.86zm2.797-3.623c.438-1.046.605-1.827.69-2.448a.237.237 0 00-.014-.125c.39-.886 1.186-3.392 1.594-5.443a18.028 18.028 0 01-2.27 8.016z"/></g><g id="Default"><use fill="#000" filter="url(#filter-2)" xlink:href="#path-1"/><path fill="#FFF" stroke="#A7333A" d="M262.5 168.775l15.69 16.01h-6.488c.886 1.695 3.06 5.91 4.01 8.24.318.776-.979 2.324-.979 2.324h0l-2.42.151-4.2-8.574-5.613 5.727v-23.878z"/></g><path id="Line-16-Copy-2" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M195.535 180.945s20.728 10.637 32.233 10.637c11.504 0 32.232-10.637 32.232-10.637"/></g></g></svg> \ No newline at end of file diff --git a/2-ui/2-events/02-bubbling-and-capturing/article.md b/2-ui/2-events/02-bubbling-and-capturing/article.md index 2448cfa5b..9b541b4b8 100644 --- a/2-ui/2-events/02-bubbling-and-capturing/article.md +++ b/2-ui/2-events/02-bubbling-and-capturing/article.md @@ -1,8 +1,8 @@ -# Bubbling and capturing +# Bubbling এবং capturing -Let's start with an example. +একটি উদাহরণ দিয়ে শুরু করা যাক। -This handler is assigned to `<div>`, but also runs if you click any nested tag like `<em>` or `<code>`: +`<div>` এর মধ্যে একটি হ্যান্ডেলার অ্যাসাইন করলাম, কিন্তু যদি `<em>` বা `<code>` এ ক্লিক করা হয় তাহলেও এটি রান করবে: ```html autorun height=60 <div onclick="alert('The handler!')"> @@ -10,15 +10,15 @@ This handler is assigned to `<div>`, but also runs if you click any nested tag l </div> ``` -Isn't it a bit strange? Why does the handler on `<div>` run if the actual click was on `<em>`? +এটি কিছুটা অদ্ভুত না? কেন `<em>` ক্লিকে `<div>` এর হ্যান্ডেলারটি রান হয়? ## Bubbling -The bubbling principle is simple. +এর প্রধান কারণ *bubbling*। -**When an event happens on an element, it first runs the handlers on it, then on its parent, then all the way up on other ancestors.** +**যখন কোন এলিমেন্টে ইভেন্ট সংগঠিত হয়, প্রথমে এলিমেন্টটির হ্যান্ডেলার রান হবে, তারপর তার প্যারেন্টটি রান হবে, এভাবে তার উপরের এলিমেন্টটি রান হবে** -Let's say we have 3 nested elements `FORM > DIV > P` with a handler on each of them: +দেখা যাক আমাদের ৩ টি নেস্টেড এলিমেন্ট `FORM > DIV > P` আছে এবং তাদের প্রতিটিতে একটি হ্যান্ডেলার আছে: ```html run autorun <style> @@ -35,57 +35,57 @@ Let's say we have 3 nested elements `FORM > DIV > P` with a handler on each of t </form> ``` -A click on the inner `<p>` first runs `onclick`: -1. On that `<p>`. -2. Then on the outer `<div>`. -3. Then on the outer `<form>`. -4. And so on upwards till the `document` object. +`<p>` এলিমেন্টে ক্লিক হলে প্রথমে তার `onclick` রান হবে: +1. প্রথমে `<p>` দেখাবে। +2. তারপর এর উপরের `<div>`। +3. তারপর এর উপরের `<form>`। +4. এভাবে `document` অবজেক্ট পর্যন্ত। ![](event-order-bubbling.svg) -So if we click on `<p>`, then we'll see 3 alerts: `p` -> `div` -> `form`. +সুতরাং আমরা যদি `<p>` তে ক্লিক করি, তাহলে আমরা ৩টি অ্যালার্ট দেখব: `p` -> `div` -> `form`। -The process is called "bubbling", because events "bubble" from the inner element up through parents like a bubble in the water. +এই প্রক্রিয়ায়টিকে বলে "bubbling", কেননা ইভেন্ট সমূহ "bubble" আকারে উপরের দিকে উঠে অনেকটা পানির বুদবুদের মত। -```warn header="*Almost* all events bubble." -The key word in this phrase is "almost". +```warn header="*প্রায়* সকল ইভেন্ট bubble" +এখানে আমরা "প্রায়" ব্যবহার করছি। -For instance, a `focus` event does not bubble. There are other examples too, we'll meet them. But still it's an exception, rather than a rule, most events do bubble. +যেমন, `focus` ইভেন্ট bubble হয় না। এছাড়াও আরো কিছু উদাহরণ আছে, পরবর্তী আমরা তাদের দেখব। কিন্তু এরা ব্যতীক্রম, বেশিরভাগ ইভেন্ট bubble হয়। ``` ## event.target -A handler on a parent element can always get the details about where it actually happened. +প্যারেন্ট এলিমেন্টের হ্যান্ডেলার থেকে আমরা সর্বদা কোথা হতে ইভেন্টটি সংগঠিত হচ্ছে তার বিস্তারিত জানতে পারি। -**The most deeply nested element that caused the event is called a *target* element, accessible as `event.target`.** +**যে এলিমেন্ট হতে আমাদের ইভেন্ট সংগঠিত হয় তাকে বলা হয় *target element* এটি `event.target` দ্বারা এক্সেস করা যায়** -Note the differences from `this` (=`event.currentTarget`): +পার্থক্যটি নোট করুন `this` (=`event.currentTarget`): -- `event.target` -- is the "target" element that initiated the event, it doesn't change through the bubbling process. -- `this` -- is the "current" element, the one that has a currently running handler on it. +- `event.target` -- হল "target" এলিমেন্ট যেখানে ইভেন্টটি সংগঠিত হয়, bubbling এর মাধ্যমে এটি পরিবর্তিত হয় না। +- `this` -- এটি দ্বারা "বর্তমান" এলিমেন্টটি বুঝায়, যেখান হতে হ্যান্ডেলারটি রান হচ্ছে। -For instance, if we have a single handler `form.onclick`, then it can "catch" all clicks inside the form. No matter where the click happened, it bubbles up to `<form>` and runs the handler. +যেমন, যদি আমাদের একটি হ্যান্ডেলার `form.onclick` এ থাকে, তাহলে এটি তার সকল চাইল্ড এলিমেন্ট এ ক্লিকের জন্য কাজ করবে। কোথায় ক্লিক হচ্ছে এটি ব্যাপার না, ইভেন্টটি *bubble* আকারে `<form>` এ এসে হ্যান্ডেলারটি রান করবে। -In `form.onclick` handler: +`form.onclick` হ্যান্ডেলারে: -- `this` (=`event.currentTarget`) is the `<form>` element, because the handler runs on it. -- `event.target` is the actual element inside the form that was clicked. +- `this` (=`event.currentTarget`) এটি হল `<form>` এলিমেন্টটি, হ্যান্ডেলারটি এখানে রান হচ্ছে। +- `event.target` form এর যে এলিমেন্টটি ক্লিকড হচ্ছে। -Check it out: +লাইভ উদাহরণ দেখুন: [codetabs height=220 src="bubble-target"] -It's possible that `event.target` could equal `this` -- it happens when the click is made directly on the `<form>` element. +যখন `<form>` এলিমেন্টে ক্লিকড হবে `event.target` এবং `this`উভয়ই সমান হবে। -## Stopping bubbling +## bubbling কে থামানো -A bubbling event goes from the target element straight up. Normally it goes upwards till `<html>`, and then to `document` object, and some events even reach `window`, calling all handlers on the path. +ইভেন্ট *bubbling* টার্গেট এলিমেন্ট পর্যন্ত যায়। সাধারণত এটি `<html>` এ এবং তারপর শেষ পর্যন্ত `document` অবজেক্ট পর্যন্ত যায়, এবং কিছু ইভেন্ট `window` পর্যন্ত যায়। -But any handler may decide that the event has been fully processed and stop the bubbling. +তবে আমরা চাইলে হ্যান্ডেলারের মাধ্যমে bubbling থামাতে পারি। -The method for it is `event.stopPropagation()`. +এজন্য একটি মেথড আছে `event.stopPropagation()`। -For instance, here `body.onclick` doesn't work if you click on `<button>`: +যেমন, এখানে `body.onclick` কাজ করবে না যদি `<button>` এ ক্লিক করা হয়: ```html run autorun height=60 <body onclick="alert(`the bubbling doesn't reach here`)"> @@ -94,66 +94,84 @@ For instance, here `body.onclick` doesn't work if you click on `<button>`: ``` ```smart header="event.stopImmediatePropagation()" -If an element has multiple event handlers on a single event, then even if one of them stops the bubbling, the other ones still execute. +যদি কোন এলিমেন্টে একটি ইভেন্টের জন্য একাধিক হ্যান্ডেলার থাকে, তাহলে যদি একটির মাধ্যমে bubbling থামানো হয়, অন্যান্য গুলো এক্সিকিউট হবে। -In other words, `event.stopPropagation()` stops the move upwards, but on the current element all other handlers will run. +অন্যভাবে বলতে পারি, `event.stopPropagation()` প্যারেন্ট এলিমেন্টের হ্যান্ডেলার এক্সিকিউশন থামায়, কিন্তু ঐ এলিমেন্টের বাকী সব হ্যান্ডেলার রান হবে। -To stop the bubbling and prevent handlers on the current element from running, there's a method `event.stopImmediatePropagation()`. After it no other handlers execute. +যদি আমরা কোন একটি হ্যান্ডেলার রান হওয়ার পর অন্য সকল হ্যান্ডেলারের এক্সিকিউশন থামাতে চায় এজন্য আমাদের আরেকটি মেথড আছে `event.stopImmediatePropagation()`। ``` -```warn header="Don't stop bubbling without a need!" -Bubbling is convenient. Don't stop it without a real need: obvious and architecturally well thought out. +```warn header="প্রয়োজন ছাড়া Bubbling থামাবেন না!" +Bubbling একটি সুবিধাজনক উপায়। কোন ধরণের সুস্পষ্ট কারণ ছাড়াই এটি থামাবেন না। -Sometimes `event.stopPropagation()` creates hidden pitfalls that later may become problems. +অনেক সময় `event.stopPropagation()` কিছু অদৃশ্য অদ্ভুত আচরণ করে যা আমাদের জন্য বিপদজনক হতে পারে। -For instance: +যেমন: -1. We create a nested menu. Each submenu handles clicks on its elements and calls `stopPropagation` so that the outer menu won't trigger. -2. Later we decide to catch clicks on the whole window, to track users' behavior (where people click). Some analytic systems do that. Usually the code uses `document.addEventListener('click'…)` to catch all clicks. -3. Our analytic won't work over the area where clicks are stopped by `stopPropagation`. Sadly, we've got a "dead zone". +1. আমরা একটি নেস্টেড মেনু তৈরি করব। প্রতিটি সাবমেনুর একটি ক্লিক হ্যান্ডেল করে এবং তারপর এটি `stopPropagation` কল করে যার ফলে প্যারেন্ট মেনু কল হবে না। +2. পরবর্তীতে আমরা সিদ্ধান্ত নিলাম আমরা সম্পূর্ন window এর জন্য ক্লিক ইভেন্ট অ্যাসাইন করব, ইউজারের বিহেভিয়ারের জন্য (কোন এলিমেন্টে ক্লিক হচ্ছে তা জানতে চায়)। এধরণের কিছু অ্যানালিটিক্স সিস্টেম আছে। এজন্য আমরা এভাবে কোড লিখি `document.addEventListener('click'…)` সকল ক্লিক ক্যাচ করার জন্য। +3. আমাদের অ্যানালিটিক্স এক্ষেত্রে কাজ করবে না কেননা মেনু তে আমরা `stopPropagation` দ্বারা *bubbling* কে থামিয়ে দেয়। এক্ষেত্রে মেনুটি "dead zone" এ পরিণত হবে। -There's usually no real need to prevent the bubbling. A task that seemingly requires that may be solved by other means. One of them is to use custom events, we'll cover them later. Also we can write our data into the `event` object in one handler and read it in another one, so we can pass to handlers on parents information about the processing below. +আসলে আমাদের *bubbling* এর জন্য ইভেন্ট prevent করা লাগবে না। এ ধরণের সমস্যা গুলো আমরা অন্যভাবে সমাধান করতে পারি, যার একটি উপায় হল কাস্টম ইভেন্ট, পরবর্তী অধ্যায়ে এ ব্যাপারে জানব। ``` ## Capturing -There's another phase of event processing called "capturing". It is rarely used in real code, but sometimes can be useful. +ইভেন্ট প্রসেসিংয়ের আরেকটি ধাপ হল "capturing"। এটি বাস্তবিক ক্ষেত্রে আমরা খুব কমই ব্যবহার করি, কিন্তু অনেক সময় এটি ব্যবহার সুবিধাজনক। +<<<<<<< HEAD +স্ট্যান্ডার্ড [DOM Events](http://www.w3.org/TR/DOM-Level-3-Events/) ইভেন্ট চলাকালীন ৩টি ধাপ সম্পন্ন করে: +======= The standard [DOM Events](https://www.w3.org/TR/DOM-Level-3-Events/) describes 3 phases of event propagation: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -1. Capturing phase -- the event goes down to the element. -2. Target phase -- the event reached the target element. -3. Bubbling phase -- the event bubbles up from the element. +1. Capturing phase -- ইভেন্ট DOM রুট হতে নিচের দিকে এলিমেন্ট পর্যন্ত পৌঁছায়। +2. Target phase -- ইভেন্ট টার্গেট এলিমেন্ট পর্যন্ত পৌঁছায়। +3. Bubbling phase -- ইভেন্ট টার্গেট *bubble* আকারে উপরের দিকে যায়। +<<<<<<< HEAD +এখানে *table* এর `<td>` তে ক্লিকে ৩টি ধাপ কিভাবে সম্পন্ন হচ্ছে দেখানো হল: +======= Here's the picture, taken from the specification, of the capturing `(1)`, target `(2)` and bubbling `(3)` phases for a click event on a `<td>` inside a table: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ![](eventflow.svg) -That is: for a click on `<td>` the event first goes through the ancestors chain down to the element (capturing phase), then it reaches the target and triggers there (target phase), and then it goes up (bubbling phase), calling handlers on its way. +`<td>` তে ক্লিকে (capturing phase) এ DOM এর রুট নোড হতে নিচের দিকে হ্যান্ডেলার এলিমেন্ট পর্যন্ত যায়, তারপর এটি টার্গেট এলিমেন্টে পৌঁছায় এবং (target phase) ট্রিগার হয়, এবং তারপর এটি (bubbling phase) সম্পন্ন করে, এবং হ্যান্ডেলার কল হয়। +<<<<<<< HEAD +**capturing phase আমরা খুব কমই ব্যবহার করি, তাই উপরে আমরা শুধু bubbling নিয়ে আলোচনা করেছি।** + +আমরা `on<event>` এর জন্য অ্যাট্রিবিউট বা প্রপার্টি অথবা `addEventListener(event, handler)` এর মাধ্যমে হ্যান্ডেলার অ্যাসাইন করি যেখানে *Capturing phase* টি রান হয় না, এটি শুধুমাত্র ২য় এবং ৩য় ধাপটি রান করে। +======= Until now, we only talked about bubbling, because the capturing phase is rarely used. In fact, the capturing phase was invisible for us, because handlers added using `on<event>`-property or using HTML attributes or using two-argument `addEventListener(event, handler)` don't know anything about capturing, they only run on the 2nd and 3rd phases. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -To catch an event on the capturing phase, we need to set the handler `capture` option to `true`: +ক্যাপচারিং ধাপটির আমাদের আরো একটি অতিরিক্ত প্যারামিটার `capture` এর ভ্যালু `true` পাঠাতে হয়: ```js elem.addEventListener(..., {capture: true}) +<<<<<<< HEAD +// অথবা শুধুমাত্র true +======= // or, just "true" is an alias to {capture: true} +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 elem.addEventListener(..., true) ``` -There are two possible values of the `capture` option: +`capture` option এর দুটি মান হতে পারে: -- If it's `false` (default), then the handler is set on the bubbling phase. -- If it's `true`, then the handler is set on the capturing phase. +- এটি ডিফল্ট `false`, তখন এটি *bubbling phase* এ কাজ করে। +- যদি `true` হয়, তখন এটি *capturing phase* এ কাজ করে। -Note that while formally there are 3 phases, the 2nd phase ("target phase": the event reached the element) is not handled separately: handlers on both capturing and bubbling phases trigger at that phase. +আমাদের ৩টি ধাপ আছে, ১ম বা ৩য় উভয় ধাপের জন্য দ্বিতীয় ধাপটি ("target phase": ইভেন্ট হ্যান্ডেলার এলিমেন্ট পর্যন্ত পৌঁছায়)। -Let's see both capturing and bubbling in action: +এখানে একটি উদাহরণ দেখানো হল: ```html run autorun height=140 edit <style> @@ -177,26 +195,37 @@ Let's see both capturing and bubbling in action: </script> ``` -The code sets click handlers on *every* element in the document to see which ones are working. +এখানে আমরা *প্রতিটি* এলিমেন্টের জন্য হ্যান্ডেলার সেট করেছি। -If you click on `<p>`, then the sequence is: +যদি আপনি `<p>` তে ক্লিক করেন তাহলে, এটি এমন দেখাবে: +<<<<<<< HEAD +1. `HTML` -> `BODY` -> `FORM` -> `DIV` (প্রথম listener টিতে capturing phase `true`): +2. `P` (target phase, দুইবার ট্রিগার হবে, যেহেতু আমরা দুটি listener সেট করেছি: capturing and bubbling) +3. `DIV` -> `FORM` -> `BODY` -> `HTML` (bubbling phase, দ্বিতীয় listener)। +======= 1. `HTML` -> `BODY` -> `FORM` -> `DIV -> P` (capturing phase, the first listener): 2. `P` -> `DIV` -> `FORM` -> `BODY` -> `HTML` (bubbling phase, the second listener). Please note, the `P` shows up twice, because we've set two listeners: capturing and bubbling. The target triggers at the end of the first and at the beginning of the second phase. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -There's a property `event.eventPhase` that tells us the number of the phase on which the event was caught. But it's rarely used, because we usually know it in the handler. +*event* এর একটি প্রপার্টি আছে `event.eventPhase` যার মাধ্যমে আমরা জানতে পারি কোন ধাপটি সম্পন্ন হচ্ছে। কিন্তু এটি খুব কম ব্যবহার করি কেননা আমরা হ্যান্ডেলারের মাধ্যমেই এটি জানতে পারি। -```smart header="To remove the handler, `removeEventListener` needs the same phase" -If we `addEventListener(..., true)`, then we should mention the same phase in `removeEventListener(..., true)` to correctly remove the handler. +```smart header="To remove the handler, `removeEventListener` এর জন্য হ্যান্ডেলারের phase একই হতে হবে" +যদি আমাদের phase এভাবে সেট করি `addEventListener(..., true)`, তাহলে removeEventListener এর জন্যই `removeEventListener(..., true)` লিখতে হবে অন্যথায় এটি কাজ করবে না। ``` +<<<<<<< HEAD +````smart header="একই এলিমেন্ট এবং একই phase এর জন্য Listeners অর্ডার অনুযায়ী কাজ করে" +যদি আমাদের কোন এলিমেন্টের জন্য একই phase এর জন্য একাধিক হ্যান্ডেলার অ্যাসাইন করি, তাহলে তারা যেই অর্ডারে লিখা হয়েছে সেভাবেই রান হবে: +======= ````smart header="Listeners on the same element and same phase run in their set order" If we have multiple event handlers on the same phase, assigned to the same element with `addEventListener`, they run in the same order as they are created: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js -elem.addEventListener("click", e => alert(1)); // guaranteed to trigger first +elem.addEventListener("click", e => alert(1)); // এটি প্রথমে রান হবে elem.addEventListener("click", e => alert(2)); ``` ```` @@ -208,26 +237,36 @@ In other words, normally the event goes first down ("capturing") and then up ("b ``` -## Summary +## সারাংশ -When an event happens -- the most nested element where it happens gets labeled as the "target element" (`event.target`). +যখন কোন ইভেন্ট সংগঠিত হয় -- এটি নেস্টেড যে এলিমেন্ট হতে কল হয় তাকে বলা হয় "target element" (`event.target`)। +<<<<<<< HEAD +- তারপর এটি document root নোড হতে নিচের দিকে `event.target` পর্যন্ত যায়, যখন হ্যান্ডেলারটি `addEventListener(..., true)` এভাবে কল করা হয় (`{capture: true}` এর সংক্ষিপ্তরূপ `true`)। +- তারপর "target element" কল হয়। +- আবার যদি আমরা হ্যান্ডেলারটি ৩য় প্যারামিটারটি ছাড়া অথবা (`{capture: false}`/`true`) এভাবে কল করি তখন এটি bubbles আকারে `event.target` এর উপর হতে document root নোড পর্যন্ত যায়। +======= - Then the event moves down from the document root to `event.target`, calling handlers assigned with `addEventListener(..., true)` on the way (`true` is a shorthand for `{capture: true}`). - Then handlers are called on the target element itself. - Then the event bubbles up from `event.target` to the root, calling handlers assigned using `on<event>`, HTML attributes and `addEventListener` without the 3rd argument or with the 3rd argument `false/{capture:false}`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Each handler can access `event` object properties: +সকল ক্ষেত্রেই আমরা `event` অবজেক্টটি পাব: -- `event.target` -- the deepest element that originated the event. -- `event.currentTarget` (=`this`) -- the current element that handles the event (the one that has the handler on it) -- `event.eventPhase` -- the current phase (capturing=1, target=2, bubbling=3). +- `event.target` -- যে এলিমেন্টে ইভেন্টটি সংগঠিত হয়েছে। +- `event.currentTarget` (=`this`) -- যেখানে ইভেন্টটি অ্যাসাইন করা হয়েছে (এখানে আমরা হ্যান্ডেলারটিও অ্যাসাইন করি)। +- `event.eventPhase` -- current phase (capturing=1, target=2, bubbling=3)। -Any event handler can stop the event by calling `event.stopPropagation()`, but that's not recommended, because we can't really be sure we won't need it above, maybe for completely different things. +হ্যান্ডেলারে `event.stopPropagation()` কল করার মাধ্যমে আমরা ইভেন্ট কে থামাতে পারি, তবে এই ব্যাপারে আমাদের সতর্ক থাকতে হবে, কেননা এর ফলে আমাদের পরবর্তী মোডিফিকেশন জটিল হয়ে যেতে পারে। +<<<<<<< HEAD +সাধারণত আমরা ক্যাপচারিং ধাপটি তেমন ব্যবহার করি না, আমরা bubbling এর মধ্যমেই লজিক ঠিক করতে পারি। +======= The capturing phase is used very rarely, usually we handle events on bubbling. And there's a logical explanation for that. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -In real world, when an accident happens, local authorities react first. They know best the area where it happened. Then higher-level authorities if needed. +আমাদের বাস্তবিক ক্ষেত্রে কোন দূর্ঘটনা ঘটলে প্রথমে স্থানীয় কর্তৃপক্ষকে জানায়। কেননা তারাই প্রথমে এটি দেখভাল করতে পারে। তারপর দরকার হলে উর্ধদন কর্তৃপক্ষকে জানায়। -The same for event handlers. The code that set the handler on a particular element knows maximum details about the element and what it does. A handler on a particular `<td>` may be suited for that exactly `<td>`, it knows everything about it, so it should get the chance first. Then its immediate parent also knows about the context, but a little bit less, and so on till the very top element that handles general concepts and runs the last one. +ইভেন্ট হ্যান্ডেলারকেও আপনি অনুরূপ বিবেচনা করতে পারেন, এজন্য আমাদের জন্য *capturing phase* এর চেয়ে *bubbling phase* টিই বেশি সুবিধাজনক। -Bubbling and capturing lay the foundation for "event delegation" -- an extremely powerful event handling pattern that we study in the next chapter. +"event delegation" একটি অত্যন্ত শক্তিশালী ইভেন্ট হ্যান্ডলিং প্যাটার্ন এর মূল ভিত্তিই হল Bubbling এবং capturing পরবর্তী অধ্যায়ে আমরা এ সম্পর্কে জানব। diff --git a/2-ui/2-events/02-bubbling-and-capturing/event-order-bubbling.svg b/2-ui/2-events/02-bubbling-and-capturing/event-order-bubbling.svg index 2ea88f081..b62d99089 100644 --- a/2-ui/2-events/02-bubbling-and-capturing/event-order-bubbling.svg +++ b/2-ui/2-events/02-bubbling-and-capturing/event-order-bubbling.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="353" height="216" viewBox="0 0 353 216"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="event-order-bubbling.svg"><path id="Rectangle-210" fill="#DBAF88" d="M159.488 140L174 186H60l14.512-46z"/><path id="Rectangle-209" stroke="#91C2A3" stroke-width="18" d="M173.634 81l16.09 51H43.276l16.09-51h114.267z"/><path id="Rectangle-208" stroke="#EFA39F" stroke-width="18" d="M193.014 29l22.71 72H17.276l22.71-72h153.028z"/><path id="Fill-46" fill="#166388" d="M121.5 141v13.816a4.5 4.5 0 11-9 0V141h9zm0-31v13h-9v-13h9zM117 20.53a4.471 4.471 0 013.362 1.3l17.64 17.64a4.5 4.5 0 01-6.364 6.364L121.5 35.698V92h-9V35.7l-10.138 10.136a4.5 4.5 0 11-6.363-6.364l17.639-17.64a4.477 4.477 0 013.363-1.3z"/><text id="1" fill="#643B0C" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="210" y="105">1</tspan></text><text id="2" fill="#643B0C" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="185" y="136">2</tspan></text><text id="3" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="157" y="181">3</tspan></text><text id="Most-deeply-nested-e" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="233.48" y="175">Most deeply</tspan> <tspan x="221.306" y="194">nested element</tspan></text><path id="Line-30" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M179.5 177.5h30"/></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" width="353" height="216" viewBox="0 0 353 216"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="event-order-bubbling.svg"><path id="Rectangle-210" fill="#DBAF88" d="M159.488 140L174 186H60l14.512-46z"/><path id="Rectangle-209" stroke="#91C2A3" stroke-width="18" d="M173.634 81l16.09 51H43.276l16.09-51h114.267z"/><path id="Rectangle-208" stroke="#EFA39F" stroke-width="18" d="M39.986 29h153.028l22.71 72H17.276l22.71-72z"/><path id="Fill-46" fill="#166388" d="M121.5 141v13.816a4.5 4.5 0 11-9 0V141h9zm0-31v13h-9v-13h9zM117 20.53a4.471 4.471 0 013.362 1.3l17.64 17.64a4.5 4.5 0 01-6.364 6.364L121.5 35.698V92h-9V35.7l-10.138 10.136a4.5 4.5 0 11-6.363-6.364l17.639-17.64a4.477 4.477 0 013.363-1.3z"/><text id="1" fill="#643B0C" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="210" y="105">1</tspan></text><text id="2" fill="#643B0C" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="185" y="136">2</tspan></text><text id="3" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="157" y="181">3</tspan></text><text id="Most-deeply-nested-e" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="233.48" y="175">Most deeply</tspan> <tspan x="221.306" y="194">nested element</tspan></text><path id="Line-30" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M179.5 177.5h30"/></g></g></svg> \ No newline at end of file diff --git a/2-ui/2-events/03-event-delegation/article.md b/2-ui/2-events/03-event-delegation/article.md index 881183740..7b9132f8c 100644 --- a/2-ui/2-events/03-event-delegation/article.md +++ b/2-ui/2-events/03-event-delegation/article.md @@ -1,19 +1,28 @@ -# Event delegation +# ইভেন্ট ডেলিগেশন +<<<<<<< HEAD +Capturing এবং bubbling এর মাধ্যমে ইভেন্ট সমূহকে সহজে হ্যান্ডেল করার একটি উপায় হল *event delegation*। +======= Capturing and bubbling allow us to implement one of the most powerful event handling patterns called *event delegation*. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -The idea is that if we have a lot of elements handled in a similar way, then instead of assigning a handler to each of them -- we put a single handler on their common ancestor. +<<<<<<< HEAD +আইডিয়াটি হল যদি আমাদের একই ধরণের অনেক এলিমেন্ট কোন একটি প্যারেন্ট এলিমেন্টের অধীনে থাকে এবং তাদের একইভাবে হ্যান্ডেল করা লাগে তাহলে আমরা একটি হ্যান্ডেলারের মাধ্যমে তাদের হ্যান্ডেল করতে পারি। +======= In the handler we get `event.target` to see where the event actually happened and handle it. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Let's see an example -- the [Ba-Gua diagram](http://en.wikipedia.org/wiki/Ba_gua) reflecting the ancient Chinese philosophy. +হ্যান্ডেলারে আমরা `event.target` কে পাব, যার মাধ্যমে আমরা জানতে পারব কোন এলিমেন্টে ইভেন্টটি সংগঠিত হয়েছে এবং তার উপর ভিত্তি করে আমরা এটিকে হ্যান্ডেল করতে পারব। -Here it is: +একটি উদাহরণ দেখি -- [Ba-Gua diagram](http://en.wikipedia.org/wiki/Ba_gua) এটি একটি চাইনিজ ফিলোসপি। + +এখানে দেখুন: [iframe height=350 src="bagua" edit link] -The HTML is like this: +HTML পেজটি হবে এমন: ```html <table> @@ -30,45 +39,45 @@ The HTML is like this: </table> ``` -The table has 9 cells, but there could be 99 or 9999, doesn't matter. +এখানে টেবল টিতে ৯ টি ঘর আছে, কিন্তু এখানে ৯৯ বা ৯৯৯ টি থাকতে পারে, এটি আমাদের জন্য ব্যাপার না। -**Our task is to highlight a cell `<td>` on click.** +**আমাদের টাস্ক হল `<td>` তে ক্লিক হলে তা হাইলাইট হবে** -Instead of assign an `onclick` handler to each `<td>` (can be many) -- we'll setup the "catch-all" handler on `<table>` element. +আমরা প্রতিটি `<td>` তে `onclick` হ্যান্ডেলার অ্যাসাইনের মাধ্যমে এটি করতে পারি -- তবে তার পরিবর্তে আমরা এটি এমন ভাবে করব যার মাধ্যমে `<table>` এলিমেন্ট হতে একটি হ্যান্ডেলারের মাধ্যমে সব তার সকল চাইল্ড এলিমেন্ট কে অ্যাক্সেস করব। -It will use `event.target` to get the clicked element and highlight it. +আমরা `event.target` এর মাধ্যমে কোন এলিমেন্টটি ক্লিকড হয়েছে তা জানতে পারি। -The code: +কোডটি হবে: ```js let selectedTd; *!* table.onclick = function(event) { - let target = event.target; // where was the click? + let target = event.target; // যেখানে ইভেন্টটি ঘটেছে - if (target.tagName != 'TD') return; // not on TD? Then we're not interested + if (target.tagName != 'TD') return; // TD ট্যাগ যাচাই - highlight(target); // highlight it + highlight(target); // এলিমেন্টটিকে হাইলাইট }; */!* function highlight(td) { - if (selectedTd) { // remove the existing highlight if any + if (selectedTd) { // পূর্বের হাইলাইট এলিমেন্টটি রিমুভড selectedTd.classList.remove('highlight'); } selectedTd = td; - selectedTd.classList.add('highlight'); // highlight the new td + selectedTd.classList.add('highlight'); // নতুন হাইলাইট এলিমেন্টটি } ``` -Such a code doesn't care how many cells there are in the table. We can add/remove `<td>` dynamically at any time and the highlighting will still work. +এখানে টেবল এ কতটি ঘর আছে তা আমাদের চিন্তা করা লাগবে না, আমাদের কোডটি ডায়নামিক্যালি *table* এর সকল ঘরকে হাইলাইটেড করতে পারবে। -Still, there's a drawback. +কিন্তু, এটির কিছু সীমাবদ্ধতা আছে। -The click may occur not on the `<td>`, but inside it. +`<td>` এর মধ্যে আরো কোন এলিমেন্ট থাকতে পারে, এবং আমাদের ক্লিকড `<td>` এর চাইল্ড এলিমেন্টে সংগঠিত হতে পারে। -In our case if we take a look inside the HTML, we can see nested tags inside `<td>`, like `<strong>`: +উপরে বর্ণিত HTML এ আমরা দেখছি `<td>` এর মধ্যে `<strong>` ট্যাগ: ```html <td> @@ -79,13 +88,13 @@ In our case if we take a look inside the HTML, we can see nested tags inside `<t </td> ``` -Naturally, if a click happens on that `<strong>` then it becomes the value of `event.target`. +বাস্তবে, আমরা যখন `<strong>` এ ক্লিক করি তখন এটিই `event.target`। ![](bagua-bubble.svg) -In the handler `table.onclick` we should take such `event.target` and find out whether the click was inside `<td>` or not. +আমাদের হ্যান্ডেলারটি `table.onclick` এমন ভাবে লিখতে হবে যাতে `event.target` টি কোন `<td>` এর চাইল্ড এলিমেন্টে ক্লিক হয়েছে তা কিনা জানতে পারি। -Here's the improved code: +এখানে পরিমার্জিত কোডটি দেখানো হল: ```js table.onclick = function(event) { @@ -99,27 +108,26 @@ table.onclick = function(event) { }; ``` -Explanations: -1. The method `elem.closest(selector)` returns the nearest ancestor that matches the selector. In our case we look for `<td>` on the way up from the source element. -2. If `event.target` is not inside any `<td>`, then the call returns immediately, as there's nothing to do. -3. In case of nested tables, `event.target` may be a `<td>`, but lying outside of the current table. So we check if that's actually *our table's* `<td>`. -4. And, if it's so, then highlight it. - -As the result, we have a fast, efficient highlighting code, that doesn't care about the total number of `<td>` in the table. +ব্যাখ্যা: +1. `elem.closest(selector)` এর সাহয্যে কোন এলিমেন্ট কি ঐ সিলেক্টরের চাইল্ড এলিমেন্ট কিনা জানতে পারি। এক্ষেত্রে আমরা এলিমেন্টটি কি `<td>` এর অধীনে কিনা যাচাই করছি। +2. `event.target` যদি `<td>` এর অধীনে না হয়, তাহলে হ্যান্ডেলারটি আর এক্সিকিউট হবে না। +3. অনেক সময় টেবলটি নেস্টেড হতে পারে, এক্ষেত্রে আমরা যাচাই করব `event.target` কি আমাদের টেবল এর কিনা। +4. সর্বশেষে এটি হাইলাইট ফাংশনটি কল করবে। -## Delegation example: actions in markup +এর ফলে আমাদের কোডটি হবে সহজবোধ্য, পরিবর্তনযোগ্য এবং দ্রুত। +## ইভেন্ট ডেলিগেশনের আরো উদাহরণ: -There are other uses for event delegation. +ইভেন্ট ডেলিগেশনের আরো বিভিন্ন ব্যবহার আছে। -Let's say, we want to make a menu with buttons "Save", "Load", "Search" and so on. And there's an object with methods `save`, `load`, `search`... How to match them? +ধরুন, আমরা মেনু বাটন বানাতে চাই যেমন "Save", "Load", "Search" ইত্যাদি, এবং আমাদের একটি অবজেক্ট আছে যার মেথড সমূহ হল `save`, `load`, `search`... কিভাবে তাদের মিলাতে পারি? -The first idea may be to assign a separate handler to each button. But there's a more elegant solution. We can add a handler for the whole menu and `data-action` attributes for buttons that has the method to call: +আমাদের মাথায় প্রথমে যে আইডিয়াটি আসতে পারে সেটি হল প্রত্যেক বাটনের জন্য আলাদা হ্যান্ডেলার। কিন্তু এটির আরো সহজবোধ্য এবং পরিবর্তনযোগ্য সমাধান আছে। মেন্যুটির জন্য একটি হ্যান্ডেলার অ্যাসাইনের মাধ্যমেই আমরা এটি করতে পারে এবং `data-action` অ্যাট্রিবিউটের সাহায্যে মেথডের নামটি অ্যাসাইন করে দিতে পারি: ```html <button *!*data-action="save"*/!*>Click to Save</button> ``` -The handler reads the attribute and executes the method. Take a look at the working example: +হ্যান্ডেলার অ্যাট্রিবিউট হতে মেথডটি অ্যাক্সিকিউট করবে। এখানের কোডটি দেখুন: ```html autorun height=60 run untrusted <div id="menu"> @@ -161,28 +169,28 @@ The handler reads the attribute and executes the method. Take a look at the work </script> ``` -Please note that `this.onClick` is bound to `this` in `(*)`. That's important, because otherwise `this` inside it would reference the DOM element (`elem`), not the `Menu` object, and `this[action]` would not be what we need. +দয়া করে মনে রাখুন `(*)` লাইনে `this.onClick` এর সাথে আমাদের `this` কে `bind` করতে হবে। এটি সম্পর্কে আমাদের জেনে রাখা উচিত, অন্যথায় `this` আমাদের *Menu* অবজেক্ট কে নির্দেশিত করার পরিবর্তে (`elem`) কে রেফারেন্স করবে, এবং `this[action]` এটি কাজ করবে না। -So, what advantages does delegation give us here? +এখানে ইভেন্ট ডেলিগেশনের ফলে আমাদের কি সুবিধা হচ্ছে? ```compare -+ We don't need to write the code to assign a handler to each button. Just make a method and put it in the markup. -+ The HTML structure is flexible, we can add/remove buttons at any time. ++ আমাদের প্রতিটি বাটনের জন্য আলাদা করে হ্যান্ডেলার অ্যাসাইন করতে হচ্ছে না। শুধুমাত্র *Menu* তে অ্যাট্রিবিউট অনুসারে মেথড সংযুক্ত করলেই হবে। ++ HTML স্ট্রাকচারটি আরো বেশি পরিবর্তনযোগ্য, আমরা চাইলে যে কোন সময় বাটন add/remove করতে পারি। ``` -We could also use classes `.action-save`, `.action-load`, but an attribute `data-action` is better semantically. And we can use it in CSS rules too. +আমরা চাইলে ক্লাস ধরেও এটি করতে পারি `.action-save`, `.action-load`, কিন্তু `data-action` এই অ্যাট্রিবিউটটিই বেশি মানানসই। এবং আমরা এটি ধরে CSS অ্যাপ্লাই করতে পারি। -## The "behavior" pattern +## "behavior" প্যাটার্ন -We can also use event delegation to add "behaviors" to elements *declaratively*, with special attributes and classes. +স্পেশাল অ্যাট্রিবিউট এবং ক্লাসের সাহায্যে আমরা আরো সহজে এলিমেন্টে হ্যান্ডেলার সংযুক্ত করতে পারি, এটিকে "behavior" প্যাটার্ন বলে। -The pattern has two parts: -1. We add a custom attribute to an element that describes its behavior. -2. A document-wide handler tracks events, and if an event happens on an attributed element -- performs the action. +প্যাটার্নটির দুটি অংশ: +1. আমরা এলিমেন্টে একটি কাস্টম অ্যাট্রিবিউট সংযুক্ত করব। +2. একটি গ্লোবাল হ্যান্ডেলার এটিকে হ্যান্ডেল করবে, এবং অ্যাট্রিবিউট অনুযায়ী যদি কোন ইভেন্ট সংগঠিত হয় -- তাহলে ব্লকটি এক্সিকিউট হবে। ### Behavior: Counter -For instance, here the attribute `data-counter` adds a behavior: "increase value on click" to buttons: +উদাহরণস্বরূপ, এখানে `data-counter` অ্যাট্রিবিউটের সাহায্যে আমরা একটি *behavior* সংযুক্ত করব: "ক্লিক হলে বাটনের মান বাড়বে": ```html run autorun height=60 Counter: <input type="button" value="1" data-counter> @@ -191,7 +199,7 @@ One more counter: <input type="button" value="2" data-counter> <script> document.addEventListener('click', function(event) { - if (event.target.dataset.counter != undefined) { // if the attribute exists... + if (event.target.dataset.counter != undefined) { // যদি অ্যাট্রিবিউটটি থাকে... event.target.value++; } @@ -199,19 +207,19 @@ One more counter: <input type="button" value="2" data-counter> </script> ``` -If we click a button -- its value is increased. Not buttons, but the general approach is important here. +যদি আমরা কোন বাটনে ক্লিক করি, তাহলে এর মান বাড়বে। এখানে কাজটি কিভাবে সংগঠিত হচ্ছে তা আমাদের বুঝা গুরুত্বপূর্ন। -There can be as many attributes with `data-counter` as we want. We can add new ones to HTML at any moment. Using the event delegation we "extended" HTML, added an attribute that describes a new behavior. +এখানে `data-counter` এর মত আরো অনেক অ্যাট্রিবিউট থাকতে পারে। আমরা আমাদের চাহিদামত নতুন কোন অ্যাট্রিবিউট সংযুক্ত করতে পারি, এবং নতুন অ্যাট্রিবিউট অনুযায়ী আমরা নতুন *behavior* সংযুক্ত করতে পারি। -```warn header="For document-level handlers -- always `addEventListener`" -When we assign an event handler to the `document` object, we should always use `addEventListener`, not `document.on<event>`, because the latter will cause conflicts: new handlers overwrite old ones. +```warn header="document-level হ্যান্ডেলারের জন্য সর্বদা `addEventListener`" +যখন আমরা `document` অবজেক্ট এ কোন হ্যান্ডেলার অ্যাসাইন করব, সর্বদা `document.on<event>` এর বদলে `addEventListener` ব্যবহার করব, কেননা পরবর্তীতে কোডে কনফ্লিক্ট হতে পারে: নতুন হ্যান্ডেলার পূর্ববর্তীটিকে রিপ্লেস করে দিতে পারে। -For real projects it's normal that there are many handlers on `document` set by different parts of the code. +বাস্তব ক্ষেত্রে আমাদের `document` এ বিভিন্ন কাজের জন্য আলাদা আলাদা হ্যান্ডেলার অ্যাসাইন করব। ``` ### Behavior: Toggler -One more example of behavior. A click on an element with the attribute `data-toggle-id` will show/hide the element with the given `id`: +Behavior এর আরো একটি উদাহরণ। কোন একটি এলিমেন্টের অ্যাট্রিবিউট `data-toggle-id` এবং এতে ক্লিক হলে অ্যাট্রিবিউটের ভ্যালু অনুযায়ী আরেকটি এলিমেন্টকে show/hide করবে: ```html autorun run height=60 <button *!*data-toggle-id="subscribe-mail"*/!*> @@ -236,37 +244,37 @@ One more example of behavior. A click on an element with the attribute `data-tog </script> ``` -Let's note once again what we did. Now, to add toggling functionality to an element -- there's no need to know JavaScript, just use the attribute `data-toggle-id`. +চলুন দেখি এখানে আমরা কি করেছি। এখন, ধরুন আরো একটি এলিমেন্টে আমরা toggle ফাংশনালিটি সংযুক্ত করব -- এজন্য, আমরা শুধু `data-toggle-id` এর ভ্যালু পরিবর্তন করলেই হবে। -That may become really convenient -- no need to write JavaScript for every such element. Just use the behavior. The document-level handler makes it work for any element of the page. +এবং এটি আসলেই অনেক কাজের -- একই ধরণের Behavior এর জন্য আমাদের আলাদা করে আর জাভাস্ক্রিপ্ট কোড করা লাগছে না। document-level handler পেজের যেকোন এলিমেন্টের জন্য এটি এক্সিকিউট হবে। -We can combine multiple behaviors on a single element as well. +আমরা একটি এলিমেন্টের জন্য একাধিক Behavior সেট করতে পারি। -The "behavior" pattern can be an alternative to mini-fragments of JavaScript. +"behavior" প্যাটার্ন জাভাস্ক্রিপ্টের mini-fragments এর বিকল্প হতে পারে। -## Summary +## সারাংশ -Event delegation is really cool! It's one of the most helpful patterns for DOM events. +ইভেন্ট ডেলিগেশন অনেক মজার একটি ফিচার! এটির সাহায্যে DOM events কে আমরা সহজে হ্যান্ডেল করতে পারি। -It's often used to add the same handling for many similar elements, but not only for that. +এটির সাহায্যে একই এলিমেন্ট বা একই ফাংশনালিটি আমরা সহজেই নিয়ন্ত্রণ করতে পারি, তবে শুধু এটিই নয়। -The algorithm: +আর কিছু ব্যাপার আছে: -1. Put a single handler on the container. -2. In the handler -- check the source element `event.target`. -3. If the event happened inside an element that interests us, then handle the event. +1. কোন কন্টেনার এলিমেন্টের জন্য শুধুমাত্র একটি হ্যান্ডেলার। +2. হ্যান্ডেলারে -- আমরা সোর্স এলিমেন্টটি জানতে পারি `event.target`। +3. যদি কোন এলিমেন্টে ইভেন্ট সংগঠিত হয় এবং এটির উপর কোন কিছু অ্যাপ্লাই করার দরকার পড়ে তাহলে তা করব। -Benefits: +সুবিধাসমূহ: ```compare -+ Simplifies initialization and saves memory: no need to add many handlers. -+ Less code: when adding or removing elements, no need to add/remove handlers. -+ DOM modifications: we can mass add/remove elements with `innerHTML` and the like. ++ সহজেই ইনিশিয়ালাইজ করা যায় এবং আলাদা কোন মেমোরি লাগে না: এবং একাধিক হ্যান্ডেলার লাগে নাহ। ++ কোড সংক্ষিপ্তকরণ: কোন এলিমেন্ট add/remove এর জন্য, আলাদা করে add/remove হ্যান্ডেলার লাগে না। ++ DOM পরিবর্তন: আমরা সহজেই DOM এ পরিবর্তন করতে পারি। ``` -The delegation has its limitations of course: +তবে ইভেন্ট ডেলিগেশন এর কিছু সীমাবদ্ধতাও আছে: ```compare -- First, the event must be bubbling. Some events do not bubble. Also, low-level handlers should not use `event.stopPropagation()`. -- Second, the delegation may add CPU load, because the container-level handler reacts on events in any place of the container, no matter whether they interest us or not. But usually the load is negligible, so we don't take it into account. +- প্রথমত, event অবশ্যই bubbling করতে হবে। কিছু ইভেন্ট bubbling সাপোর্ট করে না, এছাড়াও, low-level হ্যান্ডেলার `event.stopPropagation()` ব্যবহার করে না। +- দ্বিতীয়ত, ডেলিগেশন সামান্য CPU load করতে পারে, কেননা যেকোন এলিমেন্টের ইভেন্টের জন্য আমাদের হ্যান্ডেলারটি এক্সিকিউট হয়। তবে এটি খুব সামান্যই যা আমরা বিবেচনা না করলেও হবে। ``` diff --git a/2-ui/2-events/03-event-delegation/bagua-bubble.svg b/2-ui/2-events/03-event-delegation/bagua-bubble.svg index 4ae67102d..c4cd1ee1e 100644 --- a/2-ui/2-events/03-event-delegation/bagua-bubble.svg +++ b/2-ui/2-events/03-event-delegation/bagua-bubble.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="369" height="216" viewBox="0 0 369 216"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="bagua-bubble.svg"><path id="Rectangle-210" fill="#DBAF88" d="M202.488 140L217 186H103l14.512-46z"/><path id="Rectangle-209" stroke="#91C2A3" stroke-width="18" d="M216.634 81l16.09 51H86.276l16.09-51h114.267z"/><path id="Rectangle-208" stroke="#EFA39F" stroke-width="18" d="M236.014 29l22.71 72H60.276l22.71-72h153.028z"/><path id="Fill-46" fill="#166388" d="M164.5 141v13.816a4.5 4.5 0 11-9 0V141h9zm0-31v13h-9v-13h9zM160 20.53a4.471 4.471 0 013.362 1.3l17.64 17.64a4.5 4.5 0 01-6.364 6.364L164.5 35.698V92h-9V35.7l-10.138 10.136a4.5 4.5 0 11-6.363-6.364l17.639-17.64a4.477 4.477 0 013.363-1.3z"/><text id="<table>" fill="#D35155" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="9" y="30"><table></tspan></text><text id="<td>" fill="#478964" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="36" y="136"><td></tspan></text><text id="<strong>" fill="#AF6E24" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="35" y="181"><strong></tspan></text><text id="event.target" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="271.537" y="181">event.target</tspan></text><path id="Line-30" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M229.5 177.5h30"/></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" width="369" height="216" viewBox="0 0 369 216"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="bagua-bubble.svg"><path id="Rectangle-210" fill="#DBAF88" d="M202.488 140L217 186H103l14.512-46z"/><path id="Rectangle-209" stroke="#91C2A3" stroke-width="18" d="M216.634 81l16.09 51H86.276l16.09-51h114.267z"/><path id="Rectangle-208" stroke="#EFA39F" stroke-width="18" d="M82.986 29h153.028l22.71 72H60.276l22.71-72z"/><path id="Fill-46" fill="#166388" d="M164.5 141v13.816a4.5 4.5 0 11-9 0V141h9zm0-31v13h-9v-13h9zM160 20.53a4.471 4.471 0 013.362 1.3l17.64 17.64a4.5 4.5 0 01-6.364 6.364L164.5 35.698V92h-9V35.7l-10.138 10.136a4.5 4.5 0 11-6.363-6.364l17.639-17.64a4.477 4.477 0 013.363-1.3z"/><text id="<table>" fill="#D35155" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="9" y="30"><table></tspan></text><text id="<td>" fill="#478964" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="36" y="136"><td></tspan></text><text id="<strong>" fill="#AF6E24" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="35" y="181"><strong></tspan></text><text id="event.target" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="271.537" y="181">event.target</tspan></text><path id="Line-30" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M229.5 177.5h30"/></g></g></svg> \ No newline at end of file diff --git a/2-ui/2-events/04-default-browser-action/article.md b/2-ui/2-events/04-default-browser-action/article.md index cd815654f..2aa807a1d 100644 --- a/2-ui/2-events/04-default-browser-action/article.md +++ b/2-ui/2-events/04-default-browser-action/article.md @@ -1,23 +1,27 @@ -# Browser default actions +# ব্রাউজারের ডিফল্ট অ্যাকশন -Many events automatically lead to certain actions performed by the browser. +অনেক ইভেন্ট আছে তা কিভাবে সংগঠিত হবে তা ব্রাউজারে নির্দেশ করা থাকে। -For instance: +যেমন: -- A click on a link - initiates navigation to its URL. -- A click on a form submit button - initiates its submission to the server. -- Pressing a mouse button over a text and moving it - selects the text. +- কোন লিংকে ক্লিক - URL নেভিগেশন হয়। +- ফর্মের সাবমিট বাটনে ক্লিকড হলে - সার্ভারে ডাটা সাবমিশন শুরু হয়। +- কোন টেক্সটে মাউস ক্লিক করে মুভ করলে - টেক্সট সিলেক্ট হয়। -If we handle an event in JavaScript, we may not want the corresponding browser action to happen, and want to implement another behavior instead. +ইভেন্ট হ্যান্ডেলিং করার সময় অনেক সময় ব্রাউজারের ডিফল্ট বিহেভিয়ারের পরিবর্তে আমরা আমাদের চাহিদামত ইভেন্টগুলো প্রসেস করতে চাই। -## Preventing browser actions +## ব্রাউজারের অ্যাকশনকে বাধাপ্রদান -There are two ways to tell the browser we don't want it to act: +দুইভাবে আমরা ব্রাউজারের ডিফল্ট বিহেভিয়ার থামাতে পারি: -- The main way is to use the `event` object. There's a method `event.preventDefault()`. -- If the handler is assigned using `on<event>` (not by `addEventListener`), then returning `false` also works the same. +- সাধারণত `event` অবজেক্টের মাধ্যমে, এর একটি মেথড আছে যাকে কল করার মাধ্যমে `event.preventDefault()` । +- আর যদি ইভেন্টটি (`addEventListener`) এর পরিবর্তে `on<event>` এর মাধ্যমে অ্যাসাইন করা হয়, তাহলে `false` রিটার্নের মাধ্যমে। +<<<<<<< HEAD +নিচের উদাহরণটিতে ব্রাউজারের URL নেভিগেশন কাজ করবে না: +======= In this HTML, a click on a link doesn't lead to navigation; the browser doesn't do anything: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```html autorun height=60 no-beautify <a href="/" onclick="return false">Click here</a> @@ -25,19 +29,19 @@ or <a href="/" onclick="event.preventDefault()">here</a> ``` -In the next example we'll use this technique to create a JavaScript-powered menu. +পরবর্তী মেন্যু উদাহরণটিতে আমরা জাভাস্ক্রিপ্টের এই কৌশলটি ব্যবহার করব। -```warn header="Returning `false` from a handler is an exception" -The value returned by an event handler is usually ignored. +```warn header="হ্যান্ডালের `false` রিটার্নের মাধ্যমে একটি এক্সেপশন থ্রো হয়" +সাধারণত ইভেন্ট হ্যান্ডালারে কোন ভ্যালু রিটার্ন হলে তা ইগনোরড করে। -The only exception is `return false` from a handler assigned using `on<event>`. + `on<event>` দ্বারা কোন হ্যান্ডালার অ্যাসাইন করা হলে `return false` এক্সেপশন থ্রো করে। -In all other cases, `return` value is ignored. In particular, there's no sense in returning `true`. +অন্য সকল ক্ষেত্রে, `return` ভ্যালু ইগনোরড হয়। বিশেষত, `true` রিটার্নের আলাদা কোন সুবিধা নেই। ``` ### Example: the menu -Consider a site menu, like this: +এইরকম একটি মেন্যু বিবেচনা করুন: ```html <ul id="menu" class="menu"> @@ -47,79 +51,82 @@ Consider a site menu, like this: </ul> ``` -Here's how it looks with some CSS: +কিছু CSS রুলস সহ এটি দেখতে এমন: [iframe height=70 src="menu" link edit] -Menu items are implemented as HTML-links `<a>`, not buttons `<button>`. There are several reasons to do so, for instance: +মেন্যু আইটেম সমূহ `<button>` এর পরিবর্তে `<a>` দ্বারা লিখা। এর অনেক কারণ আছে যেমন: -- Many people like to use "right click" -- "open in a new window". If we use `<button>` or `<span>`, that doesn't work. -- Search engines follow `<a href="...">` links while indexing. +- অনেকে "right click" এর মাধ্যমে -- "নতুন উইন্ডোতে লিংক খুলে"।`<button>` বা `<span>` ব্যবহারে এই সুবিধা পাবে না। +- SEO এর জন্য `<a href="...">` লিংক ট্যাগ গুরুত্বপূর্ণ। -So we use `<a>` in the markup. But normally we intend to handle clicks in JavaScript. So we should prevent the default browser action. +তাই আমাদের স্ট্রাকচারটি `<a>` দ্বারা লিখি। এবং আমরা ক্লিকড ইভেন্ট টি ব্রাউজারের ডিফল্ট অ্যাকশনের পরিবর্তে আমাদের প্রয়োজনমত কাজ করতে চাই। -Like here: +যেমন এখানে: ```js menu.onclick = function(event) { if (event.target.nodeName != 'A') return; let href = event.target.getAttribute('href'); - alert( href ); // ...can be loading from the server, UI generation etc + alert( href ); // ...নতুন কোন ডাটা সার্ভার থেকে আসতে পারে, অথবা অন্য কোন UI পরিবর্তন *!* - return false; // prevent browser action (don't go to the URL) + return false; // ব্রাউজারের ডিফল্ট অ্যাকশন রোধ (নতুন URL ওপেন হবে না) তবে লেফট ক্লিকের মাধ্যমে নতুন উইন্ডোতে লিংক খুলবে */!* }; ``` -If we omit `return false`, then after our code executes the browser will do its "default action" -- navigating to the URL in `href`. And we don't need that here, as we're handling the click by ourselves. +যদি আমরা `return false` না লিখি, তাহলে ক্লিকড ইভেন্টের ফলে হ্যান্ডালারের কাজ শেষ হওয়ার পর ব্রাউজারে "ডিফল্ট অ্যাকশন" অনুযায়ী নতুন লিংকটি খুলবে। যা আমরা এখানে চাই না আমরা চাই আমাদের প্রয়োজনমত হ্যান্ডেলার ইভেন্টটি সংগঠিত হোক। -By the way, using event delegation here makes our menu very flexible. We can add nested lists and style them using CSS to "slide down". +এছাড়াও এখানে ইভেন্ট ডেলিগেশনের ফলে আমাদের কোডটি অনেক ফ্লেক্সিবল, আমরা নেস্টেড লিস্ট তৈরি করতে পারি, এবং এদের CSS এর মাধ্যমে "slide down" স্ট্যাইল দিতে পারি। ````smart header="Follow-up events" -Certain events flow one into another. If we prevent the first event, there will be no second. +অনেক সময় ইভেন্টসমূহ একটি আরেকটির উপর নির্ভর করে। যদি আমরা প্রথম ইভেন্ট কে `prevent` করি, তাহলে দ্বিতীয় ইভেন্টটি আর সংগঠিত হবে না। -For instance, `mousedown` on an `<input>` field leads to focusing in it, and the `focus` event. If we prevent the `mousedown` event, there's no focus. +যেমন, একটি `<input>` ফিল্ডে `mousedown` ইভেন্ট আছে, এবং সাথে `focus` ইভেন্টও। যদি আমরা `mousedown` ইভেন্ট কে `prevent` করি, তাহলে focus কাজ করবে না। -Try to click on the first `<input>` below -- the `focus` event happens. But if you click the second one, there's no focus. +নিচের প্রথম `<input>` কে ক্লিক করুন -- তাহলে `focus` ইভেন্ট সংগঠিত হবে। কিন্তু যদি দ্বিতীয়টিতে ক্লিক করেন তাহলে তা কাজ করবে নাহ। ```html run autorun <input value="Focus works" onfocus="this.value=''"> <input *!*onmousedown="return false"*/!* onfocus="this.value=''" value="Click me"> ``` -That's because the browser action is canceled on `mousedown`. The focusing is still possible if we use another way to enter the input. For instance, the `key:Tab` key to switch from the 1st input into the 2nd. But not with the mouse click any more. +`mousedown` ইভেন্টের ফলে দ্বিতীয় focus ইভেন্ট কাজ করে না। আমরা যদি `key:Tab` চাপার মাধ্যমে input ফিল্ড পরিবর্তন করি তখন onfocus কাজ করবে। কিন্তু মাউস ক্লিকের জন্য এটি কাজ করবে না। ```` -## The "passive" handler option +## "passive" অপশন -The optional `passive: true` option of `addEventListener` signals the browser that the handler is not going to call `preventDefault()`. +ঐচ্ছিক `passive: true` অপশনটির মাধ্যমে আমরা `addEventListener` হ্যান্ডেলারে নিশ্চিত করতে পারি এটি `preventDefault()` কে কল করবে না। +<<<<<<< HEAD +এটি কেন করা প্রয়োজন? +======= Why might that be needed? +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -There are some events like `touchmove` on mobile devices (when the user moves their finger across the screen), that cause scrolling by default, but that scrolling can be prevented using `preventDefault()` in the handler. +কিছু ইভেন্ট আছে যেমন মোবাইল ডিভাইসে `touchmove` (ইউজার যখন স্ক্রিন স্ক্রল করতে চাইবে), এটি ডিফল্ট ভাবে স্ক্রল করবে, কিন্তু আমরা চাইলে `preventDefault()` এর মাধ্যমে এটিকে রোধ করতে পারি। -So when the browser detects such event, it has first to process all handlers, and then if `preventDefault` is not called anywhere, it can proceed with scrolling. That may cause unnecessary delays and "jitters" in the UI. +সুতরাং যখন এই ধরণের কোন ইভেন্ট ব্রাউজার ডিটেক্ট করে, এটি প্রথমে সকল হ্যান্ডেলারকে প্রসেস করে, এবং যদি কোন খানে `preventDefault` ডিফাইন করা হয়, তাহলে স্ক্রল কাজ করবে। এবং স্ক্রলিংয়ের সময় কিছুটা সময় নিবে এবং UI তে "কিছুটা বিদঘুটে" আচরণ হবে। -The `passive: true` options tells the browser that the handler is not going to cancel scrolling. Then browser scrolls immediately providing a maximally fluent experience, and the event is handled by the way. - -For some browsers (Firefox, Chrome), `passive` is `true` by default for `touchstart` and `touchmove` events. +`passive: true` এর মাধ্যমে আমরা নিশ্চিত করতে পারি হ্যান্ডেলারের কারণে স্ক্রলিং বন্ধ হবে না। এবং স্ক্রল ইফেক্ট যথেষ্ট সাবলীল ভাবে কাজ করে এভাবেই ইভেন্ট কে হ্যান্ডেল করা হয়। +কিছু ব্রাউজার যেমন (Firefox, Chrome), `touchstart` এবং `touchmove` ইভেন্টের জন্য ডিফল্ট `passive: true` থাকে। ## event.defaultPrevented -The property `event.defaultPrevented` is `true` if the default action was prevented, and `false` otherwise. +`event.defaultPrevented` `true` হবে যদি ডিফল্ট অ্যাকশন prevented হয়, অন্যথায় `false` হবে। -There's an interesting use case for it. +এটির একটি মজার ব্যবহারিক প্রয়োগ আছে। -You remember in the chapter <info:bubbling-and-capturing> we talked about `event.stopPropagation()` and why stopping bubbling is bad? +আপনার নিশ্চয় <info:bubbling-and-capturing> এই অধ্যায়ের `event.stopPropagation()` এর মাধ্যমে bubbling কে stop করা বিপজ্জনক বলা হয়েছিল তা মনে আছে। Sometimes we can use `event.defaultPrevented` instead, to signal other event handlers that the event was handled. -Let's see a practical example. +চলুন উদাহরণের সাহায্যে বুঝি। -By default the browser on `contextmenu` event (right mouse click) shows a context menu with standard options. We can prevent it and show our own, like this: +ডিফল্ট ভাবে `contextmenu` ইভেন্ট সংগঠিত হয় (মাউসের ডানের বাটনে প্রেস করলে) যা কিছু অপশন দেখায়। তবে আমরা চাইলে আমাদের ইচ্ছামত এটিকে পরিবর্তন করতে পারি: ```html autorun height=50 no-beautify run <button>Right-click shows browser context menu</button> @@ -129,9 +136,9 @@ By default the browser on `contextmenu` event (right mouse click) shows a contex </button> ``` -Now, in addition to that context menu we'd like to implement document-wide context menu. +এখন আমরা এটিকে গ্লোবালি ডিক্লেয়ার করি। -Upon right click, the closest context menu should show up. +কোন কন্টেন্টে ডানের বাটনে প্রেস করলে আমরা একটি অ্যালার্ট দেখতে পারব। ```html autorun height=80 no-beautify run <p>Right-click here for the document context menu</p> @@ -150,9 +157,9 @@ Upon right click, the closest context menu should show up. </script> ``` -The problem is that when we click on `elem`, we get two menus: the button-level and (the event bubbles up) the document-level menu. +তবে এখানে `elem` এর জন্য একটি সমস্যা দেখা যাচ্ছে, এটির জন্য দুটি অ্যালার্ট দেখায়: একটি button-level এবং অন্যটি document-level। -How to fix it? One of solutions is to think like: "When we handle right-click in the button handler, let's stop its bubbling" and use `event.stopPropagation()`: +কিভাবে এটি ফিক্স করা যায়? একটি সমাধান এভাবে হতে পারে: "যখন আমরা বাটনে ডানের বাটনে প্রেস, তখন `event.stopPropagation()` এর মাধ্যমে bubbling কে থামাতে পারি": ```html autorun height=80 no-beautify run <p>Right-click for the document menu</p> @@ -174,9 +181,9 @@ How to fix it? One of solutions is to think like: "When we handle right-click in </script> ``` -Now the button-level menu works as intended. But the price is high. We forever deny access to information about right-clicks for any outer code, including counters that gather statistics and so on. That's quite unwise. +এখন এটি শুধুমাত্র button-level এর জন্য কাজ করছে। তবে এর জন্য আমাদের চরম মূল্য দেয়া লাগতে পারে। এর জন্য আমাদের অন্যান্য লেভেলের ইভেন্ট গুলো আর কাজ করবে না, সুতরা এভাবে করা বোকামি। -An alternative solution would be to check in the `document` handler if the default action was prevented? If it is so, then the event was handled, and we don't need to react on it. +তবে আমাদের কাছে একটি বিকল্প ব্যবস্থা আছে যার মাধ্যমে আমরা এটি সমাধান করতে পারি। আমরা `document` হ্যান্ডেলারে যাচাই করব আমাদের ইভেন্ট কি `defaultPrevented` হয়েছে কিনা? যদি হয়ে থাকে, তাহলে ইভেন্ট টি আগে সংগঠিত হয়েছে, এর ফলে document-level এ কোন কিছু আর ঘটবে না। ```html autorun height=80 no-beautify run @@ -200,45 +207,44 @@ An alternative solution would be to check in the `document` handler if the defau </script> ``` -Now everything also works correctly. If we have nested elements, and each of them has a context menu of its own, that would also work. Just make sure to check for `event.defaultPrevented` in each `contextmenu` handler. +উপরের কোডটি নির্ভুল্ভাবে কাজ করবে। যদি আমাদের নেস্টেড এলিমেন্ট থাকে এবং প্রতিটির নিজস্ব কনট্যাক্স মেন্যু থাকে, তাও কাজ করবে। তবে আমাদের শুধু নিশ্চিত হতে হবে যেন প্রতিটি `contextmenu` হ্যান্ডালারে যেন `event.defaultPrevented` যাচায় করা হয়। -```smart header="event.stopPropagation() and event.preventDefault()" -As we can clearly see, `event.stopPropagation()` and `event.preventDefault()` (also known as `return false`) are two different things. They are not related to each other. +```smart header="event.stopPropagation() এবং event.preventDefault()" +আমাদের কাছে এখন পরিষ্কার, `event.stopPropagation()` এবং `event.preventDefault()` (`return false`) দুটি ভিন্ন মেথড যাদের ব্যবহার আলাদা। ``` -```smart header="Nested context menus architecture" -There are also alternative ways to implement nested context menus. One of them is to have a single global object with a handler for `document.oncontextmenu`, and also methods that allow us to store other handlers in it. +```smart header="নেস্টেড কনট্যাক্স মেন্যু আর্কিটেকচার" +নেস্টেড কনট্যাক্স মেন্যু লিখার বিকল্প উপায়ও আছে। এদের মধ্যে একটি হল `document.oncontextmenu` এর জন্য একটি একক গ্লোবাল অবজেক্ট এবং চাইল্ড এলিমেন্ট প্রত্যেকের জন্য আলাদা আলাদা হ্যান্ডেলার ব্যবহার। -The object will catch any right-click, look through stored handlers and run the appropriate one. +প্রতিবার *right-click* এর জন্য অবজেক্টটি কল হবে এবং এলিমেন্ট অনুযায়ী নির্দিষ্ট হ্যান্ডেলার কল হবে। -But then each piece of code that wants a context menu should know about that object and use its help instead of the own `contextmenu` handler. ``` -## Summary +## সারাংশ -There are many default browser actions: +ব্রাউজারের কিছু নির্দিষ্ট ডিফল্ট অ্যাকশন আছে: -- `mousedown` -- starts the selection (move the mouse to select). -- `click` on `<input type="checkbox">` -- checks/unchecks the `input`. -- `submit` -- clicking an `<input type="submit">` or hitting `key:Enter` inside a form field causes this event to happen, and the browser submits the form after it. -- `keydown` -- pressing a key may lead to adding a character into a field, or other actions. -- `contextmenu` -- the event happens on a right-click, the action is to show the browser context menu. -- ...there are more... +- `mousedown` -- সিলেকশন (মাউস মুভ করলে কোন কিছু সিলেক্ট হবে)। +- `click` `<input type="checkbox">` -- ক্লিকে `input` এর checks/unchecks হয়। +- `submit` -- form এর মধ্যে `<input type="submit">` এ ক্লিকে বা `key:Enter` প্রেসে ইভেন্টটি সংগঠিত হয়, এবং এর পরে ফর্মটি সাবমিট হয়। +- `keydown` -- কী-বোর্ডে কোন বাটনে ক্লিক হলে ক্যারাক্টার অ্যাড হবে অথবা অন্য কোন অ্যাকশন সংগঠিত হবে। +- `contextmenu` -- মাউসের right-click এ ইভেন্টটি সংগঠিত হয়, এবং এটি ব্রাউজারের context menu দেখায়। +- ...এবং আরো অনেক... -All the default actions can be prevented if we want to handle the event exclusively by JavaScript. +ব্রাউজারের সকল ডিফল্ট অ্যাকশন আমরা জাভাস্ক্রিপ্টের মাধ্যমে রোধ করতে পারি। -To prevent a default action -- use either `event.preventDefault()` or `return false`. The second method works only for handlers assigned with `on<event>`. +সকল ডিফল্ট অ্যাকশন রোধ করতে `event.preventDefault()` বা `return false` ব্যবহার করতে পারি। দ্বিতীয়টি শুধুমাত্র `on<event>` এর সাথেই কাজ করে। -The `passive: true` option of `addEventListener` tells the browser that the action is not going to be prevented. That's useful for some mobile events, like `touchstart` and `touchmove`, to tell the browser that it should not wait for all handlers to finish before scrolling. +`addEventListener` এ `passive: true` অপশনটি দ্বারা বুঝায় ইভেন্টটি কোনখানে রোধ হবে না। কিছু টাচস্ক্রিন ইভেন্টের জন্য এটি ব্যবহার সুবিধাজনক, যেমন `touchstart` এবং `touchmove`, যা ব্রাউজারকে নির্দেশ করে হ্যান্ডেলারের কারণে স্ক্রলিংয়ে কোন বাধাপ্রাপ্ত হবে না। -If the default action was prevented, the value of `event.defaultPrevented` becomes `true`, otherwise it's `false`. +যদি ডিফল্ট অ্যাকশন বাধাপ্রাপ্ত হয়, তাহলে `event.defaultPrevented` এর ভ্যালু `true` হবে, অন্যথায় `false`। ```warn header="Stay semantic, don't abuse" -Technically, by preventing default actions and adding JavaScript we can customize the behavior of any elements. For instance, we can make a link `<a>` work like a button, and a button `<button>` behave as a link (redirect to another URL or so). +টেকনিক্যালি, আমরা জাভাস্ক্রিপ্টের মাধ্যমে যে কোন ডিফল্ট অ্যাকশন রোধ করতে পারি এবং যেকোন এলিমেন্টকে কাস্টমাইজ করতে পারি। যেমন, আমরা লিংক ট্যাগ `<a>` কে বাটন হিসেবে বা `<button>` কে অ্যাংকর লিংক হিসেবে ব্যবহার করতে পারি। -But we should generally keep the semantic meaning of HTML elements. For instance, `<a>` should perform navigation, not a button. +তবে আমাদের HTML এলিমেন্ট সমূহের যথাযথ অর্থ বোঝায় এমন ট্যাগ ব্যবহার করা উচিত। যেমন, `<a>` কে নেভিগেশনের এর বদলে বাটনের জন্য ব্যবহার করব না। -Besides being "just a good thing", that makes your HTML better in terms of accessibility. +এটি ভাল প্রাকটিসের পাশাপাশি আপনার HTML কোড কে আরো পঠনযোগ্য করে তুলে। -Also if we consider the example with `<a>`, then please note: a browser allows us to open such links in a new window (by right-clicking them and other means). And people like that. But if we make a button behave as a link using JavaScript and even look like a link using CSS, then `<a>`-specific browser features still won't work for it. +এছাড়াও আরো একটি ব্যাপার খেয়াল করুন, `<a>` ট্যাগের ফলে আমরা কোন একটি লিংক নতুন ট্যাগে খুলার সুযোগ পায়, এবং অনেক ইউজার এভাবে ব্যবহারে অভ্যস্ত। যদি আমরা কোন বাটন কে নেভিগেশনের জন্য ব্যবহার করি তাহলে এই অপশন পাবে না, যা ইউজারের সাইট ব্যবহারে একটি খারাপ প্রভাব পড়ে। ``` diff --git a/2-ui/2-events/05-dispatch-events/article.md b/2-ui/2-events/05-dispatch-events/article.md index 047413fd3..66724e17d 100644 --- a/2-ui/2-events/05-dispatch-events/article.md +++ b/2-ui/2-events/05-dispatch-events/article.md @@ -1,37 +1,41 @@ -# Dispatching custom events +# Dispatching কাস্টম ইভেন্ট -We can not only assign handlers, but also generate events from JavaScript. +জাভাস্ক্রিপ্টে শুধুমাত্র হ্যান্ডালার অ্যাসাইন করা ছাড়াও আমরা কাস্টম ইভেন্ট লিখতে পারি। -Custom events can be used to create "graphical components". For instance, a root element of our own JS-based menu may trigger events telling what happens with the menu: `open` (menu open), `select` (an item is selected) and so on. Another code may listen for the events and observe what's happening with the menu. +"graphical components" তৈরিতে আমরা কাস্টম ইভেন্টের সহায়তা নিতে পারি। উদাহরণস্বরূপ, একটি কাস্টম মেনু যার মধ্যে কি ধরণের ইভেন্ট সংগঠিত হচ্ছে তা আমরা ট্র্যাক করতে চাই: `open` (menu open), `select` (একটি আইটেম সিলেক্ট) ইত্যাদি। যার ফলে আমরা অন্যান্য কোডেও আমরা মেনুর মধ্যে কি ইভেন্ট সংগঠিত হচ্ছে তা ট্র্যাক করতে পারব। -We can generate not only completely new events, that we invent for our own purposes, but also built-in ones, such as `click`, `mousedown` etc. That may be helpful for automated testing. +সম্পূর্ন নতুন ইভেন্ট লিখার পরিবর্তে আমরা বিল্ট ইন ইভেন্টসমূহ যেমন, `click`, `mousedown` ইত্যাদি গুলোও লিখতে পারি। অটোমেটেড টেস্টিংয়ের জন্য এটি সহায়ক। ## Event constructor +<<<<<<< HEAD +DOM ইলিমেন্ট ক্লাসের মত বিল্ট-ইন ইভেন্টের ক্লাস হায়ার্য়াকি আছে। বিল্ট-ইন রুট ইভেন্ট ক্লাস [Event](http://www.w3.org/TR/dom/#event)। +======= Built-in event classes form a hierarchy, similar to DOM element classes. The root is the built-in [Event](https://dom.spec.whatwg.org/#events) class. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -We can create `Event` objects like this: +`Event` অবজেক্ট এভাবে তৈরি করি: ```js let event = new Event(type[, options]); ``` -Arguments: +আর্গুমেন্টস: -- *type* -- event type, a string like `"click"` or our own like `"my-event"`. -- *options* -- the object with two optional properties: - - `bubbles: true/false` -- if `true`, then the event bubbles. - - `cancelable: true/false` -- if `true`, then the "default action" may be prevented. Later we'll see what it means for custom events. +- *type* -- ইভেন্ট টাইপ, স্ট্রিং `"click"` অথবা আমাদের নিজস্ব ইভেন্ট নাম `"my-event"`। +- *options* -- একটি অবজেক্ট যার দুটি প্রপার্টি আছে: + - `bubbles: true/false` -- যদি `true` হয়, ইভেন্ট bubbles হবে. + - `cancelable: true/false` -- যদি `true` হয়, তাহলে "default action" বাদাপ্রাপ্ত হতে পারে। কাস্টম ইভেন্টে এটি দ্বারা কি বুঝায় তা আমরা পরে দেখব। - By default both are false: `{bubbles: false, cancelable: false}`. + ডিফল্টভাবে উভয়ই `false`: `{bubbles: false, cancelable: false}`. ## dispatchEvent -After an event object is created, we should "run" it on an element using the call `elem.dispatchEvent(event)`. +`Event` অবজেক্ট তৈরির পর, আমাদের কোন একটি এলিমেন্টের মেথড হিসেবে এটিকে "run" করাতে হবে এভাবে `elem.dispatchEvent(event)`। -Then handlers react on it as if it were a regular browser event. If the event was created with the `bubbles` flag, then it bubbles. +এরপর রেগুলার ব্রাউজার ইভেন্টের মত এর জন্য আমরা হ্যান্ডালার অ্যাসাইন করতে পারি। যদি আমরা `bubbles` ফ্ল্যাগ `true` পাঠায়, তাহলে এটি bubbles হবে। -In the example below the `click` event is initiated in JavaScript. The handler works same way as if the button was clicked: +নিচের উদাহরণটিতে `click` ইভেন্টটি জাভাস্ক্রিপ্টের সাহায্যে ইনিশিয়ালাইজ হবে। এছাড়াও বাটনে ক্লিক করলেও হ্যান্ডালারটি কাজ করবে: ```html run no-beautify <button id="elem" onclick="alert('Click!');">Autoclick</button> @@ -43,46 +47,46 @@ In the example below the `click` event is initiated in JavaScript. The handler w ``` ```smart header="event.isTrusted" -There is a way to tell a "real" user event from a script-generated one. +ইভেন্ট কি অটোমেটেড নাকি "real" ইউজারের মাধ্যমে কল হচ্ছে তা আমরা পার্থক্য করতে পারি। -The property `event.isTrusted` is `true` for events that come from real user actions and `false` for script-generated events. +`event.isTrusted` এটি "real" ইউজারের জন্য `true` হবে অন্যথায় স্ক্রিপ্ট জেনারেটর ইভেন্টের জন্য `false` হবে। ``` -## Bubbling example +## Bubbling এর উদাহরণ -We can create a bubbling event with the name `"hello"` and catch it on `document`. +আমরা একটি কাস্টম ইভেন্ট `"hello"` লিখব যা bubbling হবে এবং আমরা এটি `document` এ ক্যাচ করব। -All we need is to set `bubbles` to `true`: +এজন্য আমাদের `bubbles` প্রপার্টি এর মান `true` পাঠাতে হবে: ```html run no-beautify <h1 id="elem">Hello from the script!</h1> <script> - // catch on document... + // document এর মাধ্যমে ধরা... document.addEventListener("hello", function(event) { // (1) alert("Hello from " + event.target.tagName); // Hello from H1 }); - // ...dispatch on elem! + // ...elem থেকে dispatch! let event = new Event("hello", {bubbles: true}); // (2) elem.dispatchEvent(event); - // the handler on document will activate and display the message. + // হ্যান্ডেলারটি ডকুমেন্ট হতে ক্যাচ করব। </script> ``` -Notes: +নোট: -1. We should use `addEventListener` for our custom events, because `on<event>` only exists for built-in events, `document.onhello` doesn't work. -2. Must set `bubbles:true`, otherwise the event won't bubble up. +1. কাস্টম ইভেন্টের জন্য আমরা অবশ্যই `addEventListener` ব্যবহার করব, কেননা `on<event>` শুধুমাত্র বিল্ট-ইনের জন্য কাজ করে, এছাড়াও `document.onhello` ও কাজ করবে না। +2. অবশ্যই `bubbles:true` সেট করুন, অন্যথায় bubbling হবে না। -The bubbling mechanics is the same for built-in (`click`) and custom (`hello`) events. There are also capturing and bubbling stages. +bubbling মেকানিজম বিল্ট-ইন (`click`) এবং কাস্টম ইভেন্ট উভয়ের জন্য (`hello`) একইভাবে কাজ করে। উভয়ই ক্ষেত্রে capturing and bubbling ধাপ আছে। -## MouseEvent, KeyboardEvent and others +## MouseEvent, KeyboardEvent এবং অন্যান্য -Here's a short list of classes for UI Events from the [UI Event specification](https://www.w3.org/TR/uievents): +এখানে UI রিলেটেড কিছু ইভেন্ট ক্লাস বর্ণিত হল [UI Event specification](https://www.w3.org/TR/uievents): - `UIEvent` - `FocusEvent` @@ -91,11 +95,11 @@ Here's a short list of classes for UI Events from the [UI Event specification](h - `KeyboardEvent` - ... -We should use them instead of `new Event` if we want to create such events. For instance, `new MouseEvent("click")`. +আমাদের এধরণের কোন UI ইভেন্ট লিখা লাগলে আমরা `new Event` এর পরিবর্তে UI ইভেন্ট ক্লাসগুলো লিখব। যেমন, `new MouseEvent("click")`। -The right constructor allows to specify standard properties for that type of event. +কনস্ট্রাকটর সমূহে আমরা স্ট্যান্ডার্ড অনুযায়ী প্রপার্টি সেট করতে পারি। -Like `clientX/clientY` for a mouse event: +যেমন মাউস ইভেন্টের জন্য `clientX/clientY`: ```js run let event = new MouseEvent("click", { @@ -110,40 +114,40 @@ alert(event.clientX); // 100 */!* ``` -Please note: the generic `Event` constructor does not allow that. +দয়া কর মনে রাখুন: সাধারণ `Event` কন্সট্রাক্টর এটি সাপোর্ট করে না। -Let's try: +চলুন চেষ্টা করা যাক: ```js run let event = new Event("click", { - bubbles: true, // only bubbles and cancelable - cancelable: true, // work in the Event constructor + bubbles: true, // শুধুমাত্র bubbles ও cancelable কাজ করবে + cancelable: true, clientX: 100, clientY: 100 }); *!* -alert(event.clientX); // undefined, the unknown property is ignored! +alert(event.clientX); // undefined, অচেনা প্রপার্টি ইগনোর হবে! */!* ``` -Technically, we can work around that by assigning directly `event.clientX=100` after creation. So that's a matter of convenience and following the rules. Browser-generated events always have the right type. +তবে টেকনিক্যালি, আমরা ইভেন্ট অবজেক্ট তৈরির পর এভাবে অ্যাসাইন করতে পারি `event.clientX=100`। সুতরাং এভাবে লিখা সুবিধাজনক। -The full list of properties for different UI events is in the specification, for instance, [MouseEvent](https://www.w3.org/TR/uievents/#mouseevent). +UI ইভেন্ট সম্পর্কে আরো বিস্তারিত জানতে স্পেসিফিকেশন দেখুন, যেমন [MouseEvent](https://www.w3.org/TR/uievents/#mouseevent). -## Custom events +## কাস্টম ইভেন্টস -For our own, completely new events types like `"hello"` we should use `new CustomEvent`. Technically [CustomEvent](https://dom.spec.whatwg.org/#customevent) is the same as `Event`, with one exception. +আমাদের কাস্টম ইভেন্ট তৈরিতে `new CustomEvent` ক্লাস ব্যবহার করা উচিত যেমন `"hello"` এর জন্য। টেকনিক্যালি [CustomEvent](https://dom.spec.whatwg.org/#customevent) `Event` এর মত, তবে এর একটি পার্থক্য আছে। -In the second argument (object) we can add an additional property `detail` for any custom information that we want to pass with the event. +দ্বিতীয় আর্গুমেন্ট (object) এ আমরা অতিরিক্ত একটি প্রপার্টি `detail` সেট করতে পারি, যার মাধ্যমে আমরা ইভেন্ট এ কাস্টম ডাটা পাঠাতে পারি। -For instance: +উদাহরণস্বরূপ: ```html run refresh <h1 id="elem">Hello for John!</h1> <script> - // additional details come with the event to the handler + // হ্যান্ডালারে ইভেন্ট অবজেক্টে আমরা একটি অতিরিক্ত প্রপার্টি detail পাই elem.addEventListener("hello", function(event) { alert(*!*event.detail.name*/!*); }); @@ -156,25 +160,25 @@ For instance: </script> ``` -The `detail` property can have any data. Technically we could live without, because we can assign any properties into a regular `new Event` object after its creation. But `CustomEvent` provides the special `detail` field for it to evade conflicts with other event properties. +`detail` প্রপার্টিতে যেকোন ডাটা সেট করতে পারি। টেকনিক্যালি আমরা `CustomEvent` ছাড়াও `new Event` অবজেক্ট ইনিশিয়ালাইজের পর নতুন কোন প্রপার্টিতে ডাটা সেট করতে পারি। কিন্তু `CustomEvent` আমাদের একটি স্পেশাল ইউনিক প্রপার্টি `detail` দেই যার ফলে আমরা প্রপার্টির নাম কনফ্লিক্ট হওয়া এড়াতে পারি। -Besides, the event class describes "what kind of event" it is, and if the event is custom, then we should use `CustomEvent` just to be clear about what it is. +পাশাপাশি, স্পেসিফিক ইভেন্ট ক্লাস সমূহের দ্বারা ইভেন্ট ডিক্লেয়ার করলে তা আমাদের কাছে সহজে বোধগম্য, এবং ইভেন্ট যদি কাস্টম ইভেন্ট হয়, তাহলে আমাদের `CustomEvent` ব্যবহার করা উচিত যার ফলে আমরা বুঝতে পারি এটি কি কাজ করছে। ## event.preventDefault() -Many browser events have a "default action", such as navigating to a link, starting a selection, and so on. +অনেক ব্রাউজার ইভেন্টের কিছু "default action" আছে, যেমন লিংক নেভিগেশন, সিলেকশন, ইত্যাদি। -For new, custom events, there are definitely no default browser actions, but a code that dispatches such event may have its own plans what to do after triggering the event. +তবে কাস্টম ইভেন্টের জন্য, কোন ধরণের ব্রাউজার "default action" নেই, কিন্তু কাস্টম ইভেন্টের জন্য ইভেন্ট সংগঠিত হওয়ার পর ব্রাউজার কি আচরণ করবে তা আমরা নির্ধারণ করতে চাই। -By calling `event.preventDefault()`, an event handler may send a signal that those actions should be canceled. +`event.preventDefault()` কলের মাধ্যমে, হ্যান্ডেলারে একটি সংকেত পাঠাতে পারি যা দ্বারা আমরা অ্যাকশনসমূহ ক্যান্সেল করতে পারি। -In that case the call to `elem.dispatchEvent(event)` returns `false`. And the code that dispatched it knows that it shouldn't continue. +এজন্য `elem.dispatchEvent(event)` কল করুন যা `false` রিটার্ন করে। এবং আমরা এর উপর ভিত্তি করে পরবর্তী কোড রান হবে কি হবে না তা সিদ্ধান্ত নিতে পারি। -Let's see a practical example - a hiding rabbit (could be a closing menu or something else). +একটি বাস্তবিক উদাহরণ দেখা যাক - hiding rabbit। -Below you can see a `#rabbit` and `hide()` function that dispatches `"hide"` event on it, to let all interested parties know that the rabbit is going to hide. +নিচে আমরা একটি `#rabbit` এলিমেন্ট এবং `hide()` ফাংশন দেখছি যা `"hide"` ইভেন্টের মাধ্যমে dispatches হয়। যার মাধ্যমে আমরা ইউজার থেকে নিশ্চিত হয়ে নিতে পারি আমরা কি খরগোশকে দেখাব নাকি হাইড করব। -Any handler can listen for that event with `rabbit.addEventListener('hide',...)` and, if needed, cancel the action using `event.preventDefault()`. Then the rabbit won't disappear: +`rabbit.addEventListener('hide',...)` এর মাধ্যমে আমাদের অ্যাকশন বাধাপ্রাপ্ত হবে কিনা তা আমরা যাচাই করব, এবং যদি `preventDefault` এর প্রয়োজন হয়, তাহলে `event.preventDefault()` কল করুন। অন্যথায় খরগোশটি হাইড হবে না: ```html run refresh autorun <pre id="rabbit"> @@ -189,7 +193,7 @@ Any handler can listen for that event with `rabbit.addEventListener('hide',...)` <script> function hide() { let event = new CustomEvent("hide", { - cancelable: true // without that flag preventDefault doesn't work + cancelable: true // এটি ছাড়া preventDefault কাজ করবে না }); if (!rabbit.dispatchEvent(event)) { alert('The action was prevented by a handler'); @@ -206,17 +210,21 @@ Any handler can listen for that event with `rabbit.addEventListener('hide',...)` </script> ``` -Please note: the event must have the flag `cancelable: true`, otherwise the call `event.preventDefault()` is ignored. +দয়া কর মনে রাখুন: এজন্য আমাদের `cancelable: true` প্রপার্টি সেট করতে হবে, অন্যথায় `event.preventDefault()` কাজ করবে না। ## Events-in-events are synchronous +<<<<<<< HEAD +সাধারণত ইভেন্ট সমূহ কিউ হিসেবে রান হয়। যেমন: ব্রাউজারে `onclick` ইভেন্ট সংগঠিত হওয়ার পর `mousemove` ইভেন্ট সংগঠিত হল, তাহলে `onclick` হ্যান্ডালার প্রসেস হওয়ার পর `mousemove` হ্যান্ডেলার কল হবে। +======= Usually events are processed in a queue. That is: if the browser is processing `onclick` and a new event occurs, e.g. mouse moved, then its handling is queued up, corresponding `mousemove` handlers will be called after `onclick` processing is finished. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -The notable exception is when one event is initiated from within another one, e.g. using `dispatchEvent`. Such events are processed immediately: the new event handlers are called, and then the current event handling is resumed. +তবে ব্যতিক্রম হল যখন একটি ইভেন্ট থেকে অন্য একটি ইভেন্ট কল করা হয়, যেমন `dispatchEvent` এর মাধ্যমে। এই ধরণের ইভেন্ট এর হ্যান্ডেলার সাথে সাথে প্রসেসড হয় এবং এটি শেষ হওয়ার পর ঐ হ্যান্ডেলারের বাকী কোড এক্সিকিউট হয়। -For instance, in the code below the `menu-open` event is triggered during the `onclick`. +উদাহরণস্বরূপ, নিচের কোডে `onclick` হ্যান্ডেলার কল হওয়ার সময় `menu-open` ইভেন্ট dispatch হয়। -It's processed immediately, without waiting for `onclick` handler to end: +এবং `onclick` ইভেন্টের হ্যান্ডেলার প্রসেসিং শেষ হওয়ার পূর্বে `menu-open` ইভেন্টের হ্যান্ডেলার সাথে সাথে এক্সিকিউট হবে: ```html run autorun @@ -233,20 +241,20 @@ It's processed immediately, without waiting for `onclick` handler to end: alert(2); }; - // triggers between 1 and 2 + // 1 এবং 2 এর মাঝে এটি এক্সিকিউট হবে document.addEventListener('menu-open', () => alert('nested')); </script> ``` -The output order is: 1 -> nested -> 2. +আউটপুট হবে: 1 -> nested -> 2। -Please note that the nested event `menu-open` is caught on the `document`. The propagation and handling of the nested event is finished before the processing gets back to the outer code (`onclick`). +দয়া করে নোট করুন নেস্টেড ইভেন্ট `menu-open` এ ইভেন্ট bubble হবে এবং `document` হতে একে ধরা হবে। এবং হ্যান্ডেলারটি রান হওয়ার পর (`onclick`) এর বাকি কোড প্রসেস হবে। -That's not only about `dispatchEvent`, there are other cases. If an event handler calls methods that trigger other events -- they are processed synchronously too, in a nested fashion. +এটি শুধুমাত্র `dispatchEvent` এর জন্য না অন্যান্য ক্ষেত্রেও এভাবে কাজ করে। যদি ইভেন্ট হ্যান্ডেলার কোন মেথড কল করে এবং এটি অন্য ইভেন্ট ট্রিগার করে তাহলে তারাও সিঙ্ক্রোনাসলি প্রসেসড হয়। -Let's say we don't like it. We'd want `onclick` to be fully processed first, independently from `menu-open` or any other nested events. +এখন ধরুন আমরা এভাবে প্রসেসড করতে চাই না। আমরা চাই `onclick` সম্পূর্ন প্রসেস হওয়ার পর, `menu-open` ইভেন্ট হ্যান্ডেলার কল হবে। -Then we can either put the `dispatchEvent` (or another event-triggering call) at the end of `onclick` or, maybe better, wrap it in the zero-delay `setTimeout`: +তাহলে আমরা `dispatchEvent` কে `onclick` হ্যান্ডেলারের শেষে কল করব অথবা আমরা এটিকে `setTimeout` ফাংশনের মাধ্যমে জিরো-সেকেন্ড ডিলে এর মাধ্যমে কল করব: ```html run <button id="menu">Menu (click me)</button> @@ -266,29 +274,33 @@ Then we can either put the `dispatchEvent` (or another event-triggering call) at </script> ``` +<<<<<<< HEAD +এখন `dispatchEvent` অ্যাসিঙ্ক্রোনাসলি কল হবে, সুতরাং `mouse.onclick` সম্পূর্ন প্রসেস হওয়ার পর `menu-open` ইভেন্ট হ্যান্ডেলার কল হবে। +======= Now `dispatchEvent` runs asynchronously after the current code execution is finished, including `menu.onclick`, so event handlers are totally separate. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -The output order becomes: 1 -> 2 -> nested. +আউটপুট হবে: 1 -> 2 -> nested. -## Summary +## সারাংশ -To generate an event from code, we first need to create an event object. +কাস্টম ইভেন্টের জন্য আমাদের একটি ইভেন্ট অবজেক্ট তৈরি করতে হবে। -The generic `Event(name, options)` constructor accepts an arbitrary event name and the `options` object with two properties: -- `bubbles: true` if the event should bubble. -- `cancelable: true` if the `event.preventDefault()` should work. +`Event(name, options)` ক্লাস এর দুটি আর্গুমেন্টস আছে একটি স্ট্রিং যা ইভেন্টের নাম নির্দেশ করে অন্যটি একটি অবজেক্ট `options` যার দুটি প্রপার্টি: +- `bubbles: true` হলে ইভেন্টটি বাবল হবে। +- `cancelable: true` হলে `event.preventDefault()` কাজ করবে। -Other constructors of native events like `MouseEvent`, `KeyboardEvent` and so on accept properties specific to that event type. For instance, `clientX` for mouse events. +অন্যান্য UI ইভেন্ট যেমন `MouseEvent`, `KeyboardEvent` ইত্যাদি স্পেসিফিকেশন অনুযায়ী প্রপার্টি অ্যাক্সেপ্ট করে। যেমন, মাউস ইভেন্টের জন্য `clientX`। -For custom events we should use `CustomEvent` constructor. It has an additional option named `detail`, we should assign the event-specific data to it. Then all handlers can access it as `event.detail`. +কাস্টম ইভেন্টের জন্য আমরা `CustomEvent` কনস্ট্রাকটর ব্যবহার করি। এর একটি স্পেশাল প্রপার্টি আছে `detail`, যার মাধ্যমে আমরা ডাটা পাঠাতে পারি এবং হ্যান্ডেলারে ডাটা `event.detail` ধরতে পারি। -Despite the technical possibility of generating browser events like `click` or `keydown`, we should use them with great care. +ব্রাউজার ইভেন্ট যেমন `click` বা `keydown` এই টাইপের ইভেন্ট গুলো স্ক্রিপ্টের মাধ্যমে রান করানোর সময় আমাদের সতর্ক থাকতে হবে। -We shouldn't generate browser events as it's a hacky way to run handlers. That's bad architecture most of the time. +ব্রাউজার ইভেন্টগুলো স্ক্রিপ্টের মাধ্যমে রান করানো থেকে যথাসম্ভব বিরত থাকতে হবে, কেননা এটি বেশিরভাগ সময় *bad architecture* হিসেবে গণ্য হয়। -Native events might be generated: +নেটিভ ইভেন্টসমূহ এভাবে জেনারেট হতে পারে: -- As a dirty hack to make 3rd-party libraries work the needed way, if they don't provide other means of interaction. -- For automated testing, to "click the button" in the script and see if the interface reacts correctly. +- 3rd-party লাইব্রেরি গুলোর জন্য। +- অটোমেটেড টেস্টিংয়ের জন্য, স্ক্রিপ্টের মাধ্যমে "click the button" রান করিয়ে দেখব আমাদের ইন্টারফেস সঠিকভাবে কাজ করছে কিনা। -Custom events with our own names are often generated for architectural purposes, to signal what happens inside our menus, sliders, carousels etc. +কাস্টম ইভেন্ট সমূহ জেনারেট করা হয় *good architecture* এর জন্য, আমাদের কম্পোনেন্টে কি ঘটছে তা আমরা জানতে পারি। diff --git a/2-ui/3-event-details/4-mouse-drag-and-drop/2-drag-heroes/solution.view/field.svg b/2-ui/3-event-details/4-mouse-drag-and-drop/2-drag-heroes/solution.view/field.svg index f5bd9f4f9..4ae90b1c7 100644 --- a/2-ui/3-event-details/4-mouse-drag-and-drop/2-drag-heroes/solution.view/field.svg +++ b/2-ui/3-event-details/4-mouse-drag-and-drop/2-drag-heroes/solution.view/field.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="233" height="156" viewBox="0 0 233 156"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="field.svg"><image id="Screen-Shot-2017-02-25-at-23.45.22" width="224" height="150" x="4" y="3" opacity=".7" xlink:href="data:image/png;base64,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"/><text id="(0,0)" fill="#A7333A" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="45" y="60">(0,0)</tspan></text><circle id="Oval" cx="15.5" cy="15.5" r="4.5" fill="#C06334"/><text id="clientWidth" fill="#A7333A" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="73" y="114">clientWidth</tspan></text><path id="Line-9" fill="#C06334" fill-rule="nonzero" d="M24.114 22.183l20.711 4.719-5.078 6.181 13.705 11.258 1.16.952-1.905 2.318-1.16-.952-13.704-11.258-5.078 6.183-8.651-19.401z"/><path id="Line-10" fill="#C06334" fill-rule="nonzero" d="M197 118l19 9.5-19 9.5v-8H34v8l-19-9.5 19-9.5v8h163v-8z"/></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="233" height="156" viewBox="0 0 233 156"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="field.svg"><image id="Screen-Shot-2017-02-25-at-23.45.22" width="224" height="150" x="4" y="3" opacity=".7" xlink:href="data:image/png;base64,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"/><text id="(0,0)" fill="#A7333A" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="45" y="60">(0,0)</tspan></text><circle id="Oval" cx="15.5" cy="15.5" r="4.5" fill="#C06334"/><text id="clientWidth" fill="#A7333A" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="73" y="114">clientWidth</tspan></text><path id="Line-9" fill="#C06334" fill-rule="nonzero" d="M24.114 22.183l20.711 4.719-5.078 6.181 13.705 11.258 1.16.952-1.905 2.318-1.16-.952-13.704-11.258-5.078 6.183-8.651-19.401z"/><path id="Line-10" fill="#C06334" fill-rule="nonzero" d="M197 118l19 9.5-19 9.5v-8H34v8l-19-9.5 19-9.5v8h163v-8z"/></g></g></svg> \ No newline at end of file diff --git a/2-ui/3-event-details/8-onscroll/article.md b/2-ui/3-event-details/8-onscroll/article.md index 734bd84c6..a4a36930c 100644 --- a/2-ui/3-event-details/8-onscroll/article.md +++ b/2-ui/3-event-details/8-onscroll/article.md @@ -1,12 +1,12 @@ # Scrolling -The `scroll` event allows reacting to a page or element scrolling. There are quite a few good things we can do here. +`scroll` ইভেন্ট পেজে স্ক্রলিংয়ের সময় সংগঠিত হয়। এটির সাহায্যে আমরা অনেক কিছু করতে পারি। -For instance: -- Show/hide additional controls or information depending on where in the document the user is. -- Load more data when the user scrolls down till the end of the page. +উদাহরণস্বরূপ: +- ইউজারের বিভিন্ন তথ্য দেখাতে বা লুকাতে ব্যবহার করতে পারি। +- আমরা অন ডিমান্ড অর্থাৎ স্ক্রলিংয়ের উপর ভিত্তি করে ডাটা লোড করতে পারি। -Here's a small function to show the current scroll: +নিচের হ্যান্ডেলারটি বর্তমান স্ক্রলের মানটি দেখাবে: ```js autorun window.addEventListener('scroll', function() { @@ -15,23 +15,23 @@ window.addEventListener('scroll', function() { ``` ```online -In action: +এখানে দেখুন: Current scroll = <b id="showScroll">scroll the window</b> ``` -The `scroll` event works both on the `window` and on scrollable elements. + `window` বা স্ক্রলেবল এলিমেন্ট উভয়ের সাহায্যে আমরা `scroll` ইভেন্ট অ্যাক্সেস করতে পারি। ## Prevent scrolling -How do we make something unscrollable? +কিভাবে আমরা কোন এলিমেন্টের স্ক্রল থামাতে পারি? -We can't prevent scrolling by using `event.preventDefault()` in `onscroll` listener, because it triggers *after* the scroll has already happened. +`onscroll` লিসেনারে `event.preventDefault()` কল করার মাধ্যমে আমরা স্ক্রলকে prevent করতে পারব না, কেননা `scroll` ইভেন্টটি ট্রিগার হয় কোন এলিমেন্ট স্ক্রল হওয়ার পর। -But we can prevent scrolling by `event.preventDefault()` on an event that causes the scroll, for instance `keydown` event for `key:pageUp` and `key:pageDown`. +কিন্ত আমরা ভিন্ন উপায়ে স্ক্রলকে prevent করতে পারি, যেসব ইভেন্ট এর জন্য স্ক্রল সংগঠিত হয় যদি তাদের কে `event.preventDefault()` করা হয় তাহলে স্ক্রল ইভেন্টটি সংগঠিত হবে না, যেমন `keydown`, `key:pageUp` বা `key:pageDown`। -If we add an event handler to these events and `event.preventDefault()` in it, then the scroll won't start. +যদি আমরা এইসব ইভেন্টে `event.preventDefault()` করি, তাহলে `scroll` ইভেন্টটি ট্রিগার হয় না। -There are many ways to initiate a scroll, so it's more reliable to use CSS, `overflow` property. +আমরা বিভিন্নভাবে স্ক্রল ইনিশিয়ালাইজ করতে পারি, তবে সবচেয়ে বেশি সুবিধাজনক হল CSS এর `overflow` প্রপার্টি দ্বারা ডিফাইন করা। -Here are few tasks that you can solve or look through to see applications of `onscroll`. +এখানে কিছু টাস্ক দেয়া হল যার মাধ্যমে আপনি `onscroll` এর ব্যবহার আরো ভালো করে বুঝতে পারবেন। diff --git a/2-ui/4-forms-controls/4-forms-submit/article.md b/2-ui/4-forms-controls/4-forms-submit/article.md index c00c559c0..ba76b9e91 100644 --- a/2-ui/4-forms-controls/4-forms-submit/article.md +++ b/2-ui/4-forms-controls/4-forms-submit/article.md @@ -1,25 +1,25 @@ -# Forms: event and method submit +# ফর্মস: ইভেন্ট এবং সাবমিট মেথড -The `submit` event triggers when the form is submitted, it is usually used to validate the form before sending it to the server or to abort the submission and process it in JavaScript. +যখন কোন ফর্ম সাবমিট করা হয় তখন `submit` ইভেন্ট সংগঠিত হয়, সাধারণত সার্ভারে রিকুয়েস্ট সেন্ডের পূর্বে ভ্যালিডেশনের জন্য এটি ব্যবহার করা হয়। -The method `form.submit()` allows to initiate form sending from JavaScript. We can use it to dynamically create and send our own forms to server. +`form.submit()` মেথড এর মাধ্যমে সার্ভারে রিকেয়েস্ট পাঠানো হয়। যখন ডায়নামিক্যালি আমরা ফর্ম তৈরি করি তখন এই মেথডটির সাহায্যে রিকেয়েস্ট পাঠানো হয়। -Let's see more details of them. +চলুন আরো বিস্তারিত জানা যাক। -## Event: submit +## ইভেন্ট: submit -There are two main ways to submit a form: +সাধারণত দুইভাবে আমরা ফর্ম সাবমিট করতে পারি: -1. The first -- to click `<input type="submit">` or `<input type="image">`. -2. The second -- press `key:Enter` on an input field. +1. প্রথমটি ইনপুট এলিমেন্টের সাহায্যে `<input type="submit">` বা `<input type="image">`। +2. দ্বিতীয়টি -- কোন ইনপুটে `key:Enter` প্রেসের মাধ্যমে। -Both actions lead to `submit` event on the form. The handler can check the data, and if there are errors, show them and call `event.preventDefault()`, then the form won't be sent to the server. +উভয়ইভাবেই ফর্মের `submit` সংগঠিত হয়। আমরা হ্যান্ডেলারে ডাটা ভ্যালিডেশন করে ডাটা সার্ভারে পাঠাতে পারি, আর যদি কোন এরর থাকে তাহলে তা দেখিয়ে `event.preventDefault()` এর মাধ্যমে সাবমিট থামাতে পারি, ফলে ডাটা ডাটা সার্ভারে যাবে না। -In the form below: -1. Go into the text field and press `key:Enter`. -2. Click `<input type="submit">`. +নিচের ফর্মে: +1. টেক্সট ফিল্ডে ফোকাস করুন অতঃপর `key:Enter` বাটনে প্রেস করুন। +2. `<input type="submit">` এ ক্লিক করুন। -Both actions show `alert` and the form is not sent anywhere due to `return false`: +উভয়ই ক্ষেত্রে আমরা `alert` দেখব এবং `return false` এর জন্য ডাটা সেন্ড হবে না: ```html autorun height=60 no-beautify <form onsubmit="alert('submit!');return false"> @@ -28,12 +28,12 @@ Both actions show `alert` and the form is not sent anywhere due to `return false </form> ``` -````smart header="Relation between `submit` and `click`" -When a form is sent using `key:Enter` on an input field, a `click` event triggers on the `<input type="submit">`. +````smart header="`submit` এবং `click` এর মাঝে সম্পর্ক" +যখন কোন ইনপুট ফিল্ডে `key:Enter` প্রেসের মাধ্যমে ফর্ম সাবমিট করা হয়, তখন `<input type="submit">` এ একটি `click` ইভেন্ট সংগঠিত হয়। -That's rather funny, because there was no click at all. +ব্যাপারটা কেমন বিদঘুটে না? আমরা কোন ক্লিক করিনি তারপরও `click` ইভেন্ট সংগঠিত হয়। -Here's the demo: +এখানে দেখুন: ```html autorun height=60 <form onsubmit="return false"> <input type="text" size="30" value="Focus here and press enter"> @@ -43,13 +43,13 @@ Here's the demo: ```` -## Method: submit +## মেথড: submit -To submit a form to the server manually, we can call `form.submit()`. +ম্যানুয়ালি একটি ফর্ম সাবমিটের জন্য আমরা `form.submit()` ব্যবহার করি। -Then the `submit` event is not generated. It is assumed that if the programmer calls `form.submit()`, then the script already did all related processing. +তখন `submit` ইভেন্টটি সংগঠিত হয় না। কেননা `form.submit()` কল করা প্রোগ্রামের মাধ্যমে, সুতরাং আমরা ধরে নিতে পারি ডেভলাপার সকল ভ্যালিডেশন করার পর এই মেথডটি কল করছে। -Sometimes that's used to manually create and send a form, like this: +অনেক সময় স্ক্রিপ্টের মাধ্যমে ফর্ম তৈরি করে তা সাবমিটের জন্য আমরা এটি ব্যবহার করি, নিচে একটি উদাহরণ দেয়া হল: ```js run let form = document.createElement('form'); @@ -58,7 +58,7 @@ form.method = 'GET'; form.innerHTML = '<input name="q" value="test">'; -// the form must be in the document to submit it +// ফর্মটি সাবমিট করার জন্য অবশ্যই এটি ডকুমেন্টের নোড হতে হবে document.body.append(form); form.submit(); diff --git a/2-ui/5-loading/01-onload-ondomcontentloaded/article.md b/2-ui/5-loading/01-onload-ondomcontentloaded/article.md index 07624a658..9f132c2b2 100644 --- a/2-ui/5-loading/01-onload-ondomcontentloaded/article.md +++ b/2-ui/5-loading/01-onload-ondomcontentloaded/article.md @@ -1,39 +1,45 @@ # Page: DOMContentLoaded, load, beforeunload, unload -The lifecycle of an HTML page has three important events: +একটি HTML পেজের লাইফসাইকেলে তিনটি গুরুত্বপূর্ণ ইভেন্ট আছে: +<<<<<<< HEAD +- `DOMContentLoaded` -- সকল HTML কন্টেন্ট লোড হয়ে DOM ট্রি বিল্ট হলে এটি ট্রিগার হয়, তবে এক্সটার্নাল রিসোর্স যেমন `<img>` ট্যাগ এর সোর্স বা `<iframe>` সোর্স লোড হওয়ার আগেই এই ইভেন্টটি ট্রিগার হয়। +- `load` -- HTML কন্টেন্ট লোড এবং সকল এক্সটার্নাল রিসোর্স লোড হওয়ার পর এই ইভেন্টটি ট্রিগার হয়। +- `beforeunload/unload` -- ইউজার পেজ লিভ করার পূর্বে। +======= - `DOMContentLoaded` -- the browser fully loaded HTML, and the DOM tree is built, but external resources like pictures `<img>` and stylesheets may not yet have loaded. - `load` -- not only HTML is loaded, but also all the external resources: images, styles etc. - `beforeunload/unload` -- the user is leaving the page. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Each event may be useful: +নিম্নোক্ত কাজে ইভেন্টসমূহ কাজে আসতে পারে: -- `DOMContentLoaded` event -- DOM is ready, so the handler can lookup DOM nodes, initialize the interface. -- `load` event -- external resources are loaded, so styles are applied, image sizes are known etc. -- `beforeunload` event -- the user is leaving: we can check if the user saved the changes and ask them whether they really want to leave. -- `unload` -- the user almost left, but we still can initiate some operations, such as sending out statistics. +- `DOMContentLoaded` event -- DOM রেডি, সুতরাং আমরা হ্যান্ডেলারের মাধ্যমে DOM নোডকে পরিবর্তন করতে পারি। +- `load` event -- এক্সটার্নাল রিসোর্স লোড হওয়ার কারণে স্ট্যাইল বা ইমেজ সাইজ প্রভৃতি নিয়ে কাজ করতে পারি। +- `beforeunload` event -- ইউজার পেজ হতে লিভ হওয়ার পূর্বে কল হয়: সুতরাং আমরা পেজ হতে লিভ হওয়ার পূর্বে ইউজার হতে ডাটা সংরক্ষণ বা অন্যান্য ব্যাপারে নিশ্চায়ন করতে পারি। +- `unload` -- ইউজার প্রায় পেজ হতে লিভ হয়ে গেছে, তবে ইউজারের বিভিন্ন পরিসংখ্যান সংরক্ষনের জন্য আমরা এটি ব্যবহার করতে পারি। -Let's explore the details of these events. +চলুন ইভেন্ট সমূহ সম্পর্কে আরো বিস্তারিত জানি। ## DOMContentLoaded -The `DOMContentLoaded` event happens on the `document` object. +`document` নোডে `DOMContentLoaded` ইভেন্টটি সংগঠিত হয়। -We must use `addEventListener` to catch it: +এবং অবশ্যই `addEventListener` এর মাধ্যমে হ্যান্ডালার অ্যাসাইন করতে হবে: ```js document.addEventListener("DOMContentLoaded", ready); // not "document.onDOMContentLoaded = ..." ``` -For instance: +যেমন: ```html run height=200 refresh <script> function ready() { alert('DOM is ready'); - // image is not yet loaded (unless it was cached), so the size is 0x0 + // যেহেতু এক্সটার্নাল রিসোর্স লোড হওয়ার পূর্বে এটি ট্রিগার হয় সাইজ দেখাবে 0x0 alert(`Image size: ${img.offsetWidth}x${img.offsetHeight}`); } @@ -45,17 +51,21 @@ For instance: <img id="img" src="https://en.js.cx/clipart/train.gif?speed=1&cache=0"> ``` +<<<<<<< HEAD +উপরের উদাহরণে `DOMContentLoaded` হ্যান্ডালার এক্সিকিউট হবে DOM ট্রি বিল্ড হওয়ার পর, সুতরাং আমরা সকল এলিমেন্ট অ্যাক্সেস করতে পারব, এমনকি `<img>` ও। +======= In the example, the `DOMContentLoaded` handler runs when the document is loaded, so it can see all the elements, including `<img>` below. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -But it doesn't wait for the image to load. So `alert` shows zero sizes. +কিন্তু এটির সোর্স ডাওনলোড না হওয়ায় সাইজ শূন্য দেখাবে। -At first sight, the `DOMContentLoaded` event is very simple. The DOM tree is ready -- here's the event. There are few peculiarities though. +প্রথম দেখাতে `DOMContentLoaded` ইভেন্টকে সাধারন মনে হয়। DOM ট্রি রেডি হলেই ইভেন্ট ট্রিগার হবে। তবে এর কিছু ভিন্নতা আছে। -### DOMContentLoaded and scripts +### DOMContentLoaded এবং scripts -When the browser processes an HTML-document and comes across a `<script>` tag, it needs to execute before continuing building the DOM. That's a precaution, as scripts may want to modify DOM, and even `document.write` into it, so `DOMContentLoaded` has to wait. +যখন ব্রাউজার HTML-document কে প্রসেস করে তখন যদি `<script>` ট্যাগ এক্সিকিউট হয় তখন এদেরকে DOM ট্রি বিল্ডের পূর্বে এরা `<script>` কে এক্সিকিউট করে। একারণে `<script>` সমূহ এক্সিকিউট না হওয়া পর্যন্ত `DOMContentLoaded` ট্রিগার হবে না। -So DOMContentLoaded definitely happens after such scripts: +সুতরাং হ্যান্ডেলার অবশ্যই সবার শেষে এক্সিকিউট হবে: ```html run <script> @@ -71,19 +81,19 @@ So DOMContentLoaded definitely happens after such scripts: </script> ``` -In the example above, we first see "Library loaded...", and then "DOM ready!" (all scripts are executed). +উপরের উদাহরণে আমরা দেখেছি, প্রথমে "Library loaded..." দেখাবে, তারপর "DOM ready!" ```warn header="Scripts that don't block DOMContentLoaded" -There are two exceptions from this rule: -1. Scripts with the `async` attribute, that we'll cover [a bit later](info:script-async-defer), don't block `DOMContentLoaded`. -2. Scripts that are generated dynamically with `document.createElement('script')` and then added to the webpage also don't block this event. +তবে এক্ষেত্রে দুটি ভিন্নতা আছে: +1. `async` অ্যাট্রিবিউট সহ স্ক্রিপ্টস সমূহ `DOMContentLoaded` কে ব্লক করবে না, বিস্তারিত পরবর্তী অধ্যায়ে (info:script-async-defer)। +2. ডায়নামিক্যালি জেনারেট স্ক্রিপ্টস সমূহ যেমন: `document.createElement('script')` এর মাধ্যমে সংযুক্ত স্ক্রিপ্টস সমূহ ইভেন্টকে ব্লক করে না। ``` -### DOMContentLoaded and styles +### DOMContentLoaded এবং styles -External style sheets don't affect DOM, so `DOMContentLoaded` does not wait for them. +এক্সটার্নাল স্ট্যাইলশীট DOM এ কোন প্রভাব ফেলে না, সুতরাং `DOMContentLoaded` এদের জন্য অপেক্ষা করবে না। -But there's a pitfall. If we have a script after the style, then that script must wait until the stylesheet loads: +তবে একটি ব্যাপার জেনে রাখা উচিত। যদি স্ট্যাইল শীটের পরে স্ক্রিপ্ট থাকে, তাহলে স্ক্রিপ্টটি স্ট্যাইল শীট লোড হওয়া পর্যন্ত অপেক্ষা করবে: ```html run <link type="text/css" rel="stylesheet" href="style.css"> @@ -93,28 +103,32 @@ But there's a pitfall. If we have a script after the style, then that script mus </script> ``` -The reason for this is that the script may want to get coordinates and other style-dependent properties of elements, like in the example above. Naturally, it has to wait for styles to load. +উপরে বর্ণিত উদাহরণের মত অনেক সময় আমাদের এলিমেন্টের বিভিন্ন স্ট্যাইল প্রপার্টি সম্পর্কে জানা লাগে তখন আমরা স্ট্যাইলশীট প্রথমে লোড করি। সুতরাং এটি স্ট্যাইল লোড হওয়ার জন্য অপেক্ষা করবে। -As `DOMContentLoaded` waits for scripts, it now waits for styles before them as well. +সুতরাং `DOMContentLoaded` যেভাবে স্ক্রিপ্টস এর জন্য অপেক্ষা করে তেমনি স্ট্যাইলশীটের জন্যও করে। ### Built-in browser autofill -Firefox, Chrome and Opera autofill forms on `DOMContentLoaded`. +`DOMContentLoaded` এর মাধ্যমে ফায়ারফক্স, ক্রোম এবং অপেরাতে স্বয়ংক্রিয়ভাবে ফর্ম ভ্যালু *autofill* সাপোর্ট করে। -For instance, if the page has a form with login and password, and the browser remembered the values, then on `DOMContentLoaded` it may try to autofill them (if approved by the user). +উদাহরণস্বরূপ, যদি কোন লগিন পেজে লগিন এবং পাসওয়ার্ড ফর্ম থাকে, এবং আপনি যদি *remember me* জাতীয় কোন ভ্যালু সেভ করে রাখেন তাহলে ব্রাউজার মানগুলো মনে রাখে এবং `DOMContentLoaded` ইভেন্টের মাধ্যমে ইনপুট ফিল্ডগুলো স্বয়ংক্রিয়ভাবে ফিল আপ করে। -So if `DOMContentLoaded` is postponed by long-loading scripts, then autofill also awaits. You probably saw that on some sites (if you use browser autofill) -- the login/password fields don't get autofilled immediately, but there's a delay till the page fully loads. That's actually the delay until the `DOMContentLoaded` event. +সুতরাং যদি কোন বড় স্ক্রিপ্টস এর জন্য যদি `DOMContentLoaded` ইভেন্ট ট্রিগার হতে দেরি হয়, তাহলে autofill হতে দেরি হবে। আপনি হয়তো অনেক সাইট দেখেছেন, যেখানে ব্রাউজার অটোফিল সাপোর্ট করার পরও লগিন ফিল্ড গুলো ফুল পেজ লোড না হওয়া পর্যন্ত ফিল আপ হয় না। এটি ঘটে `DOMContentLoaded` ইভেন্ট এর কারণে, কেননা ফুল পেজ লোড না হওয়া পর্যন্ত `DOMContentLoaded` ইভেন্ট ট্রিগার হয় না। ## window.onload [#window-onload] -The `load` event on the `window` object triggers when the whole page is loaded including styles, images and other resources. This event is available via the `onload` property. +ওয়েব পেজের সকল ধরণের রিসোর্স যেমন ইমেজ, স্ট্যাইল ইত্যাদি লোড হওয়ার পর `window` অবজেক্টের `load` ইভেন্ট ট্রিগার হয়। এবং এটিকে আমরা `onload` প্রপার্টির মাধ্যমে অ্যাক্সেস করতে পারি। -The example below correctly shows image sizes, because `window.onload` waits for all images: +নিচের উদাহরণে ইমেজের সাইজ, স্ট্যাইল ইত্যাদি সঠিকভাবে দেখাবে, কেননা `window.onload` সকল রিসোর্স লোড হওয়া পর্যন্ত অপেক্ষা করে: ```html run height=200 refresh <script> +<<<<<<< HEAD + window.onload = function() { // window.addEventListener('load', (event) => { এভাবেও ডিফাইন করতে পারি +======= window.onload = function() { // can also use window.addEventListener('load', (event) => { +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 alert('Page loaded'); // image is loaded at this time @@ -127,19 +141,19 @@ The example below correctly shows image sizes, because `window.onload` waits for ## window.onunload -When a visitor leaves the page, the `unload` event triggers on `window`. We can do something there that doesn't involve a delay, like closing related popup windows. +ইউজার পেজ হতে লিভ হওয়ার পূর্বে `window` এর `unload` ইভেন্টটি ট্রিগার হয়। তবে এক্ষেত্রে আমরা কনফার্মেশন বা পপ আপ দেখাতে পারব না। -The notable exception is sending analytics. +তবে আমরা চাইলে ইউজারের ব্যবহৃত পরিসংখ্যান সংরক্ষন করতে পারি। -Let's say we gather data about how the page is used: mouse clicks, scrolls, viewed page areas, and so on. +আমরা বিভিন্ন ভাবে ডাটা সংগ্রহ করতে পারি যেমন মাউস ক্লিক, স্ক্রল ইত্যাদি। -Naturally, `unload` event is when the user leaves us, and we'd like to save the data on our server. +সাধারণত ইউজার যখন পেজ হতে লিভ নেয়, তখন আমরা ডাটা সংরক্ষন করতে চায় এবং `unload` ইভেন্টটি ট্রিগার করি। -There exists a special `navigator.sendBeacon(url, data)` method for such needs, described in the specification <https://w3c.github.io/beacon/>. +এজন্য একটি বিশেষ মেথড আছে `navigator.sendBeacon(url, data)`, বিস্তারিত <https://w3c.github.io/beacon/>। -It sends the data in background. The transition to another page is not delayed: the browser leaves the page, but still performs `sendBeacon`. +এটি ব্যাকগ্রাউন্ডে ডাটা সেন্ড করে। পেজ হতে লিভ হওয়ার পরও `sendBeacon` কাজ করে। -Here's how to use it: +উদাহরণস্বরূপ: ```js let analyticsData = { /* object with gathered data */ }; @@ -148,24 +162,24 @@ window.addEventListener("unload", function() { }); ``` -- The request is sent as POST. -- We can send not only a string, but also forms and other formats, as described in the chapter <info:fetch>, but usually it's a stringified object. -- The data is limited by 64kb. +- রিকুয়েস্ট মেথডটি হল POST। +- আমরা স্ট্রিং ছাড়াও অন্যান্য ফরম্যাটে ডাটা পাঠাতে পারি, বিস্তারিত এখানে <info:fetch>, ্তবে সাধারণত এটি stringify অবজেক্ট হয়। +- ডাটা সাইজ সর্বোচ্চ 64kb। -When the `sendBeacon` request is finished, the browser probably has already left the document, so there's no way to get server response (which is usually empty for analytics). +`sendBeacon` রিকুয়েস্ট যখন সমাপ্ত হয়, ততক্ষণে আমরা পেজটি থেকে লিভ নিয়ে নেই, সুতরাং সার্ভার হতে কোন রেস্পেন্স পাব না। -There's also a `keepalive` flag for doing such "after-page-left" requests in [fetch](info:fetch) method for generic network requests. You can find more information in the chapter <info:fetch-api>. +এছাড়াও জেনেরিক নেটওয়ার্ক রিকুয়েস্ট সমূহের [fetch](info:fetch) এর `keepalive` নামের একটি ফ্ল্যাগ আছে । আরো বিস্তারিত জানতে পারব এই অধ্যায়ে <info:fetch-api>। -If we want to cancel the transition to another page, we can't do it here. But we can use another event -- `onbeforeunload`. +যদি আমরা পেজ লিভ করার আগে ইউজারকে কোন কনফার্মেশন দেখাতে চাই, তাহলে `unload` এর সাহায্যে পারব না, তবে আরেকটি ইভেন্ট আছে -- `onbeforeunload`। ## window.onbeforeunload [#window.onbeforeunload] -If a visitor initiated navigation away from the page or tries to close the window, the `beforeunload` handler asks for additional confirmation. +যদি ভিজিটর এক পেজ হতে অন্য পেজে নেভিগেশন করে অথবা পেজ হতে লিভ নিতে চায় তখন `beforeunload` ইভেন্ট ট্রিগার হয়। -If we cancel the event, the browser may ask the visitor if they are sure. +এটির সাহায্যে ইউজারকে কনফার্মেশন মেসেজ দেখাতে পারি। -You can try it by running this code and then reloading the page: +নিচের কোডটি রান করে ব্রাউজার রিলোড করার ট্রাই করুন: ```js run window.onbeforeunload = function() { @@ -173,9 +187,9 @@ window.onbeforeunload = function() { }; ``` -For historical reasons, returning a non-empty string also counts as canceling the event. Some time ago browsers used to show it as a message, but as the [modern specification](https://html.spec.whatwg.org/#unloading-documents) says, they shouldn't. +কোন non-empty স্ট্রিং রিটার্নের মাধ্যমেও আমরা ইভেন্ট ক্যান্সেল করতে পারি। পূর্বে এটি কাস্টম মেসেজ দেখাতে ব্যবহার হত তবে মডার্ন ব্রাউজার কাস্টম কনফার্মেশন মেসেজ সাপোর্ট করে না [modern specification](https://html.spec.whatwg.org/#unloading-documents)। -Here's an example: +উদাহরণস্বরূপ: ```js run window.onbeforeunload = function() { @@ -183,7 +197,7 @@ window.onbeforeunload = function() { }; ``` -The behavior was changed, because some webmasters abused this event handler by showing misleading and annoying messages. So right now old browsers still may show it as a message, but aside of that -- there's no way to customize the message shown to the user. +এই ইভেন্টটির মাধ্যমে অনেক ডেভলাপার ইউজার কে বিভিন্ন রকমের মেসেজ দেখিয়ে বিভ্রান্তি করার কারণে এটি পরিবর্তন করা হয়েছে। তবে ব্রাউজারগুলোর পুরনো ভার্সনগুলোতে এটি কাজ করতে পারে, তবে মেসেজটি কাস্টমাইজ করার কোন উপায় নেই। ````warn header="The `event.preventDefault()` doesn't work from a `beforeunload` handler" That may sound weird, but most browsers ignore `event.preventDefault()`. @@ -207,23 +221,23 @@ window.addEventListener("beforeunload", (event) => { ## readyState -What happens if we set the `DOMContentLoaded` handler after the document is loaded? +যদি আমরা ডকুমেন্ট লোড হওয়ার পর `DOMContentLoaded` হ্যান্ডালার সেট করি তাহলে কি ঘটবে? -Naturally, it never runs. +সাধারণত, এটি এক্সিকিউট হবে না। -There are cases when we are not sure whether the document is ready or not. We'd like our function to execute when the DOM is loaded, be it now or later. +অনেক সময় ডকুমেন্ট কি লোড হয়ে গেছে নাকি লোডিং ধাপে আছে তার উপর নির্ভর করে আমাদের কোন কার্য সম্পাদন করা লাগে, এটি আমরা কিভাবে করতে পারি? -The `document.readyState` property tells us about the current loading state. +সৌভাগ্যক্রমে `document` অবজেক্টের একটি প্রপার্টি আছে `document.readyState` নামের যা আমাদের পেজ লোডিং এর ধাপসমূহ রিটার্ন করে। -There are 3 possible values: +এর ৩টি ভ্যালু আছে: -- `"loading"` -- the document is loading. -- `"interactive"` -- the document was fully read. -- `"complete"` -- the document was fully read and all resources (like images) are loaded too. +- `"loading"` -- ডকুমেন্ট লোডিং। +- `"interactive"` -- সম্পূর্ন ডকুমেন্টটি পার্স করে পড়া হয়েছে। +- `"complete"` -- সম্পূর্ন ডকুমেন্টটি পার্স করে পড়া হয়েছে এবং সকল ধরণের রিসোর্স যেমন (img) ও লোড হয়েছে। -So we can check `document.readyState` and setup a handler or execute the code immediately if it's ready. +সুতরাং আমরা `document.readyState` এর উপর ভিত্তি করে হ্যান্ডেলার সেট করতে পারি। -Like this: +উদাহরণস্বরূপ: ```js function work() { /*...*/ } @@ -237,7 +251,7 @@ if (document.readyState == 'loading') { } ``` -There's also the `readystatechange` event that triggers when the state changes, so we can print all these states like this: +এছাড়াও `readystatechange` নামের একটি ইভেন্ট আছে যেটি `readyState` এর ভ্যালু পরিবর্তনের সাথে সাথে ট্রিগার হয়: ```js run // current state @@ -247,11 +261,11 @@ console.log(document.readyState); document.addEventListener('readystatechange', () => console.log(document.readyState)); ``` -The `readystatechange` event is an alternative mechanics of tracking the document loading state, it appeared long ago. Nowadays, it is rarely used. +অনেক আগে থেকে `readystatechange` ইভেন্টটি ডকুমেন্ট এর স্টেট ট্রাকিংয়ের জন্য ব্যবহার করা হচ্ছিল, তবে বর্তমানে এর তেমন ব্যবহার নেই। -Let's see the full events flow for the completeness. +চলুন সম্পূর্ণ লাইফসাইকেল টা দেখি। -Here's a document with `<iframe>`, `<img>` and handlers that log events: +এখানে `<iframe>`, `<img>` আছে ইভেন্ট লগের জন্য একটি `log()` ফাংশন আছে: ```html <script> @@ -271,9 +285,9 @@ Here's a document with `<iframe>`, `<img>` and handlers that log events: </script> ``` -The working example is [in the sandbox](sandbox:readystate). +উদাহরণটি এখানে দেখুন [in the sandbox](sandbox:readystate) -The typical output: +এটির আউটপুট হবে অনেকটা এমন: 1. [1] initial readyState:loading 2. [2] readyState:interactive 3. [2] DOMContentLoaded @@ -282,23 +296,22 @@ The typical output: 6. [4] readyState:complete 7. [4] window onload -The numbers in square brackets denote the approximate time of when it happens. Events labeled with the same digit happen approximately at the same time (+- a few ms). +তৃতীয় বন্ধনীর সংখ্যাটি বুঝায় ইভেন্ট সমূহ ট্রিগার আনুমানিক কত সময় লেগেছে। -- `document.readyState` becomes `interactive` right before `DOMContentLoaded`. These two things actually mean the same. -- `document.readyState` becomes `complete` when all resources (`iframe` and `img`) are loaded. Here we can see that it happens in about the same time as `img.onload` (`img` is the last resource) and `window.onload`. Switching to `complete` state means the same as `window.onload`. The difference is that `window.onload` always works after all other `load` handlers. +- এখানে দেখছি `DOMContentLoaded` এর আগে `document.readyState` এর মান `interactive` দেখাচ্ছে। এখানে দুটিই একই সময়ে ঘটে তাই সময় একই দেখাচ্ছে। +- সকল রিসোর্স (`iframe` and `img`) লোড হওয়ার পর `document.readyState` এর মান `complete` হবে। যার কারণে ৫,৬,৭ নং ধাপের সময় একই দেখাচ্ছে। `document.readyState` এর মান `complete` এবং `window onload` উভয়ই একই স্টেট নির্দেশ করে। +## সারাংশ -## Summary +পেজ লোড ইভেন্ট সমূহ: -Page load events: - -- The `DOMContentLoaded` event triggers on `document` when the DOM is ready. We can apply JavaScript to elements at this stage. - - Script such as `<script>...</script>` or `<script src="..."></script>` block DOMContentLoaded, the browser waits for them to execute. - - Images and other resources may also still continue loading. -- The `load` event on `window` triggers when the page and all resources are loaded. We rarely use it, because there's usually no need to wait for so long. -- The `beforeunload` event on `window` triggers when the user wants to leave the page. If we cancel the event, browser asks whether the user really wants to leave (e.g we have unsaved changes). -- The `unload` event on `window` triggers when the user is finally leaving, in the handler we can only do simple things that do not involve delays or asking a user. Because of that limitation, it's rarely used. We can send out a network request with `navigator.sendBeacon`. -- `document.readyState` is the current state of the document, changes can be tracked in the `readystatechange` event: - - `loading` -- the document is loading. - - `interactive` -- the document is parsed, happens at about the same time as `DOMContentLoaded`, but before it. - - `complete` -- the document and resources are loaded, happens at about the same time as `window.onload`, but before it. + - পেজ লোডিংয়ের সময় DOM রেডি হলে `document` এর `DOMContentLoaded` ইভেন্টটি ট্রিগার হয়। এই ধাপে আমরা যেকোন এলিমেন্ট নোড কে অ্যাক্সেস করতে পারি। + - `<script>...</script>` বা `<script src="..."></script>` স্ক্রিপ্টস সমূহ DOMContentLoaded কে ব্লক করে রাখে, স্ক্রিপ্টস সমূহ এক্সিকিউট হওয়ার পর DOMContentLoaded ট্রিগার হয়। + - ইমেজ বা অন্যান্য এক্সটার্নাল রিসোর্স যেমন `iframe` লোড হতে থাকে। + - সকল ধরণের রিসোর্স লোড হওয়ার পর `window` এর `load` ইভেন্টটি ট্রিগার হয়। তবে এটি খুব কমই ব্যবহার করা হয় কেননা বেশিরভাগ সময় আমাদের এলিমেন্টে বিভিন্ন ধরণের অপারেশন চালানো লাগে DOM ট্রি রেডি হওয়ার পরপরই। + - ইউজার যখন ব্রাউজার হতে লিভ করতে চাই তখন `window` অবজেক্টের `beforeunload` ইভেন্টটি ট্রিগার হয়, এবং যদি ইভেন্টটি ক্যান্সেল করা হয় তখন এটি ইউজারকে একটি কনফার্মেশন মেসেজ দেখায়(যেমন we have unsaved changes). + - এবং ইউজার যখন পেজ হতে লিভ করবে তখন `window` অবজেক্টের `unload` ইভেন্টটি ট্রিগার হবে, এবং এটির সাহায্যে কোন ধরণের পপ আপ বা অন্য কোন মেসেজ দেখাতে পারব না, তবে অ্যানালাইসিসের জন্য ইউজারের ডাটা `navigator.sendBeacon` এর মাধ্যমে সংরক্ষন করতে পারি। + - `document.readyState` ডকুমেন্টের কারেন্ট স্টেট রিটার্ন করে, `readystatechange` ইভেন্টের মাধ্যমে আমরা স্টেট ট্র্যাক করতে পারি: + - `loading` -- ডকুমেন্ট স্টেট লোডিং। + - `interactive` -- সম্পূর্ন ডকুমেন্টটি পার্স করে পড়া হয়েছে, এবং সাথে সাথে `DOMContentLoaded` ইভেন্টটি ট্রিগার হবে, তবে `interactive` প্রথমে ট্রিগার হয়। + - `complete` -- সম্পূর্ন ডকুমেন্টটি পার্স করে পড়া হয়েছে এবং সকল ধরণের রিসোর্স যেমন (img) ও লোড হয়েছে, এবং সাথে সাথে `window.onload` ইভেন্টটি ট্রিগার হবে। diff --git a/2-ui/5-loading/02-script-async-defer/article.md b/2-ui/5-loading/02-script-async-defer/article.md index f97c000d6..215f75ecc 100644 --- a/2-ui/5-loading/02-script-async-defer/article.md +++ b/2-ui/5-loading/02-script-async-defer/article.md @@ -1,25 +1,25 @@ # Scripts: async, defer -In modern websites, scripts are often "heavier" than HTML: their download size is larger, and processing time is also longer. +মডার্ন ওয়েবসাইট গুলোতে আমাদের script সমূহের সাইজ HTML Document এর চেয়ে বড় হয়, ফলে এরা লোড হতে সময়ও বেশি নেয়। -When the browser loads HTML and comes across a `<script>...</script>` tag, it can't continue building the DOM. It must execute the script right now. The same happens for external scripts `<script src="..."></script>`: the browser must wait for the script to download, execute the downloaded script, and only then can it process the rest of the page. +একটি পেজ লোড হওয়ার সময় যখন `<script>...</script>` ট্যাগ দেখে তখন এটি DOM বিল্ড থামিয়ে `<script>` কে পার্স করে, এক্সিকিউট করে। অনুরূপভাবে এক্সটার্নাল `<script src="..."></script>` এর ক্ষেত্রে প্রথমে রিসোর্সটি ডাওনলোড করে এবং ডাওনলোড হওয়া পর্যন্ত এটি বাকী ডম পার্সিংকে ব্লক করে রাখে। -That leads to two important issues: +যার ফলে দুটি গুরত্বপূর্ণ ব্যাপার ঘটে: -1. Scripts can't see DOM elements below them, so they can't add handlers etc. -2. If there's a bulky script at the top of the page, it "blocks the page". Users can't see the page content till it downloads and runs: +1. script তার নিচের DOM কে পড়তে পারে না এবং হ্যান্ডেল করতে পারে না। +2. পেজের শুরুতে যদি কোন একটি বড় সাইজের script থাকে তাহলে এটি ডাওনলোড না হওয়া পর্যন্ত DOM পার্সিং ব্লক হয়ে থাকে: ```html run height=100 <p>...content before script...</p> <script src="https://javascript.info/article/script-async-defer/long.js?speed=1"></script> -<!-- This isn't visible until the script loads --> +<!-- script ডাওনলোড না হওয়া পর্যন্ত এটি দেখাবে না --> <p>...content after script...</p> ``` -There are some workarounds to that. For instance, we can put a script at the bottom of the page. Then it can see elements above it, and it doesn't block the page content from showing: +এক্ষেত্রে আমরা একটি কাজ করতে পারি, script কে পেজের একদম নিচে লোড করতে পারি। ফলে সম্পূর্ণ DOM পার্স হয় এবং এটি কোন কন্টেন্টকে ব্লক করে না: ```html <body> @@ -29,33 +29,37 @@ There are some workarounds to that. For instance, we can put a script at the bot </body> ``` -But this solution is far from perfect. For example, the browser notices the script (and can start downloading it) only after it downloaded the full HTML document. For long HTML documents, that may be a noticeable delay. +এভাবে আমরা আমাদের সমস্যাটি সমাধান করতে পারি। ব্রাউজার সম্পূর্ণ HTML ডকুমেন্ট পার্স করে script কে পার্স করে। তবে দীর্ঘ HTML ডকুমেন্টের জন্য কিছুটা সময় লাগতে পারে। -Such things are invisible for people using very fast connections, but many people in the world still have slow internet speeds and use a far-from-perfect mobile internet connection. +দ্রুত গতির ইন্টারনেট কানেকশনের জন্য এই সমস্যাটি প্রায় অদৃশ্যই থেকে যায়, তবে আমাদের পৃথিবীতে এখনো ইন্টারনেট সহজলভ্য না হওয়ায় অনেকেই স্বল্প গতির ইন্টারনেট যেমন মোবাইল ইন্টারনেট কানেকশন ব্যবহার করে। -Luckily, there are two `<script>` attributes that solve the problem for us: `defer` and `async`. +সৌভাগ্যক্রমে, `<script>` আমাদের দুটি অ্যাট্রিবিউট প্রদান করে যার সাহায্যে এই সমস্যা সমাধান করতে পারি: `defer` এবং `async`। ## defer +<<<<<<< HEAD +script এ `defer` অ্যাট্রিবিউট করার ফলে ব্রাউজার script ডাওনলোড হওয়ার জন্য অপেক্ষা করবে না। তার পরিবর্তে এটি DOM কে পার্স করতে থাকবে এবং ব্যাকগ্রাউন্ডে script টি লোড হবে, এবং সম্পূর্ণ DOM বিল্ট হওয়ার পর এটি রান হবে। +======= The `defer` attribute tells the browser not to wait for the script. Instead, the browser will continue to process the HTML, build DOM. The script loads "in the background", and then runs when the DOM is fully built. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Here's the same example as above, but with `defer`: +এখানে উপরের উদাহরণটি আবার লিখা হয়েছে, তবে এখানে আমরা `defer` ব্যবহার করেছি: ```html run height=100 <p>...content before script...</p> <script defer src="https://javascript.info/article/script-async-defer/long.js?speed=1"></script> -<!-- visible immediately --> +<!-- script ডাওনলোড হওয়ার আগেই এটি দেখাবে --> <p>...content after script...</p> ``` -In other words: +সুতরাং বলা যায়: -- Scripts with `defer` never block the page. -- Scripts with `defer` always execute when the DOM is ready (but before `DOMContentLoaded` event). +- Scripts এ `defer` ব্যবহার করা হলে তা পেজকে ব্লক করে রাখে না। +- Scripts এ `defer` ব্যবহার করা হলে তা এক্সিকিউট হবে DOM রেডি হওয়ার পর (তবে `DOMContentLoaded` ইভেন্ট ট্রিগার হবে Scripts এক্সিকিউট হওয়ার পর)। -The following example demonstrates the second part: +এখানে `DOMContentLoaded` ইভেন্ট ট্রিগার হওয়ার একটি উদাহরণ দেখুন: ```html run height=100 <p>...content before scripts...</p> @@ -69,34 +73,47 @@ The following example demonstrates the second part: <p>...content after scripts...</p> ``` -1. The page content shows up immediately. -2. `DOMContentLoaded` event handler waits for the deferred script. It only triggers when the script is downloaded and executed. +1. HTML কন্টেন্ট সমূহকে শুরুতে দেখাবে। +2. `DOMContentLoaded` ইভেন্ট deferred script সমূহ ডাওনলোড হয়ে এক্সিকিউট হওয়ার পর ট্রিগার হবে। -**Deferred scripts keep their relative order, just like regular scripts.** +**Deferred scripts সমূহ রেগুলার scripts এর মত DOM এর ক্রম অনুসারে এক্সিকিউট হয়** -Let's say, we have two deferred scripts: the `long.js` and then `small.js`: +মনে করুন, আমাদের দুটি deferred scripts আছে: `long.js` এবং `small.js`: ```html <script defer src="https://javascript.info/article/script-async-defer/long.js"></script> <script defer src="https://javascript.info/article/script-async-defer/small.js"></script> ``` -Browsers scan the page for scripts and download them in parallel, to improve performance. So in the example above both scripts download in parallel. The `small.js` probably finishes first. +পারফরম্যান্সের জন্য ব্রাউজার দুটি স্ক্রিপ্টস সমান্তরালে ডাওনলোড করবে। উপরের উদাহরণে দুটি স্ক্রিপ্টস সমান্তরালে ডাওনলোড হবে এবং সম্ভবত `small.js` এ প্রথমে ডাওনলোড সম্পন্ন করবে, যেহেতু এটির সাইজ কম। +<<<<<<< HEAD +...তবে `defer` অ্যাট্রিবিউট DOM পার্সিং ব্লক না করার পাশাপাশি আরো একটি ব্যাপার নিশ্চিত করে তা হল এরা ক্রম অনুসারে এক্সিকিউট হয়। এখানে যদিও `small.js` প্রথমে ডাওনলোড হবে তারপরও এটি এক্সিকিউট হবে `long.js` ডাওনলোড হয়ে এক্সিকিউট হওয়ার পর। +======= ...But the `defer` attribute, besides telling the browser "not to block", ensures that the relative order is kept. So even though `small.js` loads first, it still waits and runs after `long.js` executes. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -That may be important for cases when we need to load a JavaScript library and then a script that depends on it. +যখন আমরা কোন একটি জাভাস্ক্রিপ্ট লাইব্রেরী ব্যবহার করি এবং তার উপর অন্য একটি স্ক্রিপ্টস নির্ভর করে তখন এই ব্যাপারটি আমাদের মনে রাখতে হবে। -```smart header="The `defer` attribute is only for external scripts" -The `defer` attribute is ignored if the `<script>` tag has no `src`. +```smart header="`defer` অ্যাট্রিবিউটটি শুধুমাত্র এক্সটার্নাল script এর জন্য" +যদি `<script>` এ কোন `src` না থাকে তাহলে `defer` অ্যাট্রিবিউটটি ইগনোর হবে। ``` ## async -The `async` attribute is somewhat like `defer`. It also makes the script non-blocking. But it has important differences in the behavior. +`async` অ্যাট্রিবিউটের কাজ অনেকটা `defer` এর মতই। এটিও DOM পার্সিংকে ব্লক করেনা। তবে defer এর সাথে একটি গুরুত্বপূর্ন পার্থক্য আছে। -The `async` attribute means that a script is completely independent: +`async` অ্যাট্রিবিউট বুঝায় আমাদের script টি সম্পূর্ণ স্বাধীন, অর্থাৎ এটি অন্য script এর উপর নির্ভর করবে না: +<<<<<<< HEAD +- script এ `async` ব্যবহার করা হলে তা DOM পার্সিং ব্লক করে না (`defer` এর মত)। +- অন্য script সমূহ `async` script ডাওনলোড হওয়ার জন্য অপেক্ষা করে না, এবং `async` scripts ও অন্য script এর জন্য অপেক্ষা করে না। +- `DOMContentLoaded` এবং async scripts এক্সিকিউট হওয়ার জন্য একে অন্যের জন্য অপেক্ষা করে না: + - async script এক্সিকিউট হওয়ার আগেই `DOMContentLoaded` ট্রিগার হতে পারে (যদি async script টি DOM পার্সিংয়ের শেষে ডাওনলোড হয়) + - ...অথবা async script এর পর (যদি async script টি ছোট বা HTTP-cache এ থাকে) + +অন্য ভাবে বলা যায়, `async` scripts ব্যাকগ্রাউন্ডে লোড হবে এবং ডাওনলোড হওয়ার সাথে সাথে এটি এক্সিকিউট হবে। DOM পার্সিং বা অন্যান্য scripts এর জন্য এর এক্সিকিউশন থেমে থাকে না। +======= - The browser doesn't block on `async` scripts (like `defer`). - Other scripts don't wait for `async` scripts, and `async` scripts don't wait for them. - `DOMContentLoaded` and async scripts don't wait for each other: @@ -104,10 +121,11 @@ The `async` attribute means that a script is completely independent: - ...or after an async script (if an async script is short or was in HTTP-cache) In other words, `async` scripts load in the background and run when ready. The DOM and other scripts don't wait for them, and they don't wait for anything. A fully independent script that runs when loaded. As simple, as it can get, right? +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Here's an example similar to what we've seen with `defer`: two scripts `long.js` and `small.js`, but now with `async` instead of `defer`. +নিচে উপরের উদাহরণটি আবার লিখা হল তবে এখানে আমরা `defer` এর বদলে `async` ব্যবহার করেছি। -They don't wait for each other. Whatever loads first (probably `small.js`) -- runs first: +এখানে প্রতিটি script স্বাধীন।যেটি প্রথমে ডাওনলোড (`small.js` হতে পারে) হবে সেটিই প্রথমে এক্সিকিউট হবে: ```html run height=100 <p>...content before scripts...</p> @@ -122,11 +140,11 @@ They don't wait for each other. Whatever loads first (probably `small.js`) -- ru <p>...content after scripts...</p> ``` -- The page content shows up immediately: `async` doesn't block it. -- `DOMContentLoaded` may happen both before and after `async`, no guarantees here. -- A smaller script `small.js` goes second, but probably loads before `long.js`, so `small.js` runs first. Although, it might be that `long.js` loads first, if cached, then it runs first. In other words, async scripts run in the "load-first" order. +- HTML কন্টেন্ট সমূহ দেখাবে: কেননা `async` DOM পার্সিং ব্লক করে রাখে না। +- `DOMContentLoaded` বা `async` যে কোনটি আগে এক্সিকিউট হতে পারে। +- এরপর `small.js` এক্সিকিউট হতে পারে, কেননা সম্ভবত এটি `long.js` এর পূর্বেই ডাওনলোড সম্পন্ন করতে পারে, সুতরাং `small.js` এক্সিকিউট হবে। এছাড়াও, `long.js` ও প্রথমে লোড হতে পারে, যদি এটি cached হয়, তখন `long.js` এক্সিকিউট হবে। সুতরাং বলা যায় যেটি প্রথমে ডাওনলোড সম্পন্ন করবে সেটিই আগে এক্সিকিউট হবে। -Async scripts are great when we integrate an independent third-party script into the page: counters, ads and so on, as they don't depend on our scripts, and our scripts shouldn't wait for them: +যখন আমরা কোন থার্ড পার্টি script ইন্টিগ্রট করতে চাই, যারা অন্য কোন script এর উপর নির্ভর করে না তখন Async scripts ব্যবহার সুবিধাজনক: ```html <!-- Google Analytics is usually added like this --> @@ -138,10 +156,15 @@ Just like `defer`, the `async` attribute is ignored if the `<script>` tag has no ``` ## Dynamic scripts +<<<<<<< HEAD +======= There's one more important way of adding a script to the page. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 + +আমরা আরো একটি উপায়ে script সংযুক্ত করতে পারি। -We can create a script and append it to the document dynamically using JavaScript: +আমরা ডায়নামিক script এলিমেন্ট তৈরি করে তা `document.body` তে সংযুক্ত করতে পারি: ```js run let script = document.createElement('script'); @@ -149,19 +172,19 @@ script.src = "/article/script-async-defer/long.js"; document.body.append(script); // (*) ``` -The script starts loading as soon as it's appended to the document `(*)`. +যখন এটি `document.body` তে সংযুক্ত হবে সাথে সাথে script টি ডাওনলোড হওয়া শুরু করবে `(*)`। -**Dynamic scripts behave as "async" by default.** +**ডিফল্টভাবে ডায়নামিক script "async" এর মত কাজ করে** -That is: -- They don't wait for anything, nothing waits for them. -- The script that loads first -- runs first ("load-first" order). +অর্থাৎ: +- script টি অন্য কোন script এর জন্য অপেক্ষা করে না। +- যে script টি প্রথমে ডাওনলোড সম্পন্ন করবে সেটিই আগে এক্সিকিউট হবে ("load-first" ক্রম অনুযায়ী)। -This can be changed if we explicitly set `script.async=false`. Then scripts will be executed in the document order, just like `defer`. +তবে আমরা চাইলে বিহেভিয়ারটি পরিবর্তন করতে পারি `script.async=false` সেটের মাধ্যমে। তখন এটি `defer` এর মত কাজ করবে। -In this example, `loadScript(src)` function adds a script and also sets `async` to `false`. +নিচের উদাহরণে, `loadScript(src)` টির মাধ্যমে আমরা Dynamic scripts সংযুক্ত করি এবং `async` কে `false` সেট করি। -So `long.js` always runs first (as it's added first): +সুতরাং `long.js` সর্বদা প্রথমে এক্সিকিউট হবে: ```js run function loadScript(src) { @@ -176,30 +199,39 @@ loadScript("/article/script-async-defer/long.js"); loadScript("/article/script-async-defer/small.js"); ``` -Without `script.async=false`, scripts would execute in default, load-first order (the `small.js` probably first). +`script.async=false` ছাড়া ("load-first" ক্রম অনুযায়ী) এক্সিকিউট হবে। -Again, as with the `defer`, the order matters if we'd like to load a library and then another script that depends on it. +যদি আমাদের script একটি অন্যটির উপর নির্ভর করে তাহলে `defer`এর মত কাজ করাতে হবে। -## Summary +## সারাংশ -Both `async` and `defer` have one common thing: downloading of such scripts doesn't block page rendering. So the user can read page content and get acquainted with the page immediately. +`async` এবং `defer` উভয়ের বৈশিষ্ট্য হল পেজ রেন্ডারিংয়ের সময় এরা DOM পার্সিংকে ব্লক করে না। তাই পেজ লোড হওয়ার সময়ই ইউজার পেজ কন্টেন্ট দেখতে পায়। -But there are also essential differences between them: +তবে তাদের মধ্যে কিছু পার্থক্য আছে: | | Order | `DOMContentLoaded` | |---------|---------|---------| -| `async` | *Load-first order*. Their document order doesn't matter -- which loads first runs first | Irrelevant. May load and execute while the document has not yet been fully downloaded. That happens if scripts are small or cached, and the document is long enough. | -| `defer` | *Document order* (as they go in the document). | Execute after the document is loaded and parsed (they wait if needed), right before `DOMContentLoaded`. | +| `async` | script সমূহ যেটি আগে লোড হবে সেটি প্রথমে এক্সিকিউট হবে অর্থাৎ *Load-first order* এ এক্সিকিউট হয় | DOM ট্রি বিল্ড হওয়ার সাথে সাথেই `DOMContentLoaded` ট্রিগার হবে। | +| `defer` | *Document order* অনুযায়ী অর্থাৎ script সমূহ যে ক্রমে থাকবে সে অনুসারে এক্সিকিউট হয় | সকল script এক্সিকিউট হওয়ার পর `DOMContentLoaded` ট্রিগার হবে। | +<<<<<<< HEAD +সাধারণত, `defer` ব্যবহার করা হয় যখন script সমূহ একে অন্যের উপর নির্ভর করে। +======= In practice, `defer` is used for scripts that need the whole DOM and/or their relative execution order is important. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -And `async` is used for independent scripts, like counters or ads. And their relative execution order does not matter. +এবং `async` ব্যবহার করা হয় যখন কোন script অন্য script এর উপর নির্ভর করে না, যেমন counter বা ads স্ক্রিপ্ট সমূহ। +<<<<<<< HEAD +```warn header="script ব্যতীত পেজ কন্টেন্ট সমূহ ব্যবহার করা যায়" +আমাদের মনে রাখা উচিত: যদি আমরা `defer` বা `async` ব্যবহার করে script লোড করি, তাহলে ইউজার script লোড হওয়ার আগেই পেজের কন্টেন্ট সমূহ দেখবে। +======= ```warn header="Page without scripts should be usable" Please note: if you're using `defer` or `async`, then user will see the page *before* the script loads. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -In such case, some graphical components are probably not initialized yet. +এক্ষেত্রে, আমাদের কিছু কম্পোনেট বা এলিমেন্ট থাকতে পারে যারা ঐ script সমূহের উপর নির্ভর করে। -Don't forget to put "loading" indication and disable buttons that aren't functional yet. Let the user clearly see what he can do on the page, and what's still getting ready. +এক্ষেত্রে "loading" স্টেটে কম্পোনেন্ট বা এলিমেন্ট সমূহকে আমাদের disable রাখা উচিত। তাহলে ইউজার বুঝতে পারবে কোন কম্পোনেন্ট সমূহ ব্যবহার করতে পারবে আর কোন গুলো লোড হচ্ছে। ``` diff --git a/2-ui/5-loading/03-onload-onerror/article.md b/2-ui/5-loading/03-onload-onerror/article.md index 590e54ab4..14a53dbfa 100644 --- a/2-ui/5-loading/03-onload-onerror/article.md +++ b/2-ui/5-loading/03-onload-onerror/article.md @@ -1,17 +1,17 @@ -# Resource loading: onload and onerror +# রিসোর্স লোডিং: onload এবং onerror -The browser allows us to track the loading of external resources -- scripts, iframes, pictures and so on. +আমরা এক্সটার্নাল রিসোর্স লোডিং স্টেটও ট্র্যাক করতে পারি, যেমন scripts, iframes, pictures ইত্যাদি। -There are two events for it: +এজন্য দুটি ইভেন্ট আছে: -- `onload` -- successful load, -- `onerror` -- an error occurred. +- `onload` -- লোড সাকসেস হলে, +- `onerror` -- যদি কোন এরর সংগঠিত হয়। -## Loading a script +## script লোডিং -Let's say we need to load a third-party script and call a function that resides there. +মনে করুন আমরা একটি থার্ড-পার্টি লাইব্রেরী লোড করব এবং ঐ লাইব্রেরীর কোন একটি ফাংশন কল করব। -We can load it dynamically, like this: +আমরা এটি ডায়নামিক্যালি লোড করব, এভাবে: ```js let script = document.createElement('script'); @@ -20,42 +20,42 @@ script.src = "my.js"; document.head.append(script); ``` -...But how to run the function that is declared inside that script? We need to wait until the script loads, and only then we can call it. +...এখন আমরা কিভাবে ফাংশনটি ডিক্লেয়ার করব? এক্ষেত্রে, আমাদের অবশ্যই লাইব্রেরীটি লোড হওয়া পর্যন্ত অপেক্ষা করতে হবে, অন্যথায় আমরা এটিকে কল করতে চাইলে এরর হবে। ```smart -For our own scripts we could use [JavaScript modules](info:modules) here, but they are not widely adopted by third-party libraries. +আমাদের নিজস্ব script এর জন্য [JavaScript modules](info:modules) ব্যবহার করতে পারি, তবে এখানে আমরা একটি স্বতন্ত্র থার্ড-পার্টি লাইব্রেরী লোড করতে চাচ্ছি। ``` ### script.onload -The main helper is the `load` event. It triggers after the script was loaded and executed. +এক্ষেত্রে আমরা `load` ইভেন্ট এর সহায়তা নিতে পারি। কেননা script টি লোড হয়ে এক্সিকিউট হলে `load` ইভেন্টটি ট্রিগার হয়। -For instance: +উদাহরণস্বরূপ: ```js run untrusted let script = document.createElement('script'); -// can load any script, from any domain +// এখানে যেকোন script লোড করতে পারি script.src = "https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.3.0/lodash.js" document.head.append(script); *!* script.onload = function() { - // the script creates a variable "_" - alert( _.VERSION ); // shows library version + // স্ক্রিপ্ট টি একটি ভ্যারিয়েবল তৈরি করে "_" + alert( _.VERSION ); // লোডেশ এর ভার্সন দেখাবে }; */!* ``` -So in `onload` we can use script variables, run functions etc. +সুতরাং আমরা `onload` হ্যান্ডেলারে script টির বিভিন্ন ভ্যারিয়েবল, ফাংশন ব্যবহার করতে পারব। -...And what if the loading failed? For instance, there's no such script (error 404) or the server is down (unavailable). +...যদি আমাদের কোন কারণে লোডিং না হয় তাহলে কি হবে? মনে করুন, আমরা কোন একটি ভুল রিসোর্স লোড করতে চাচ্ছি (error 404) অথবা রিমোট সার্ভারটি ডাউন হয়েছে (unavailable)। ### script.onerror -Errors that occur during the loading of the script can be tracked in an `error` event. +এক্ষেত্রে script কোন কারণে লোড না হলে `error` ইভেন্টটি ট্রিগার হয়। -For instance, let's request a script that doesn't exist: +যেমন, এখানে আমরা একটি script লোড করতে চাচ্ছি যেটি একটি 404 পেজ: ```js run let script = document.createElement('script'); @@ -69,19 +69,19 @@ script.onerror = function() { */!* ``` -Please note that we can't get HTTP error details here. We don't know if it was an error 404 or 500 or something else. Just that the loading failed. +দয়া করে মনে রাখুন এখানে আমরা HTTP error এর বিস্তারিত জানতে পারব না। যেকোন কারণে এরর সংগঠিত হতে যেমন 404 বা 500 অথবা অন্য যেকোন কারণে। তবে এটি শুধু `error` ইভেন্টটি ট্রিগার করে। ```warn -Events `onload`/`onerror` track only the loading itself. +`onload`/`onerror` ইভেন্ট শুধুমাত্র লোডিং স্টেটকে ট্র্যাক করতে পারে। -Errors that may occur during script processing and execution are out of scope for these events. That is: if a script loaded successfully, then `onload` triggers, even if it has programming errors in it. To track script errors, one can use `window.onerror` global handler. +তবে script এর মধ্যে কোন এরর থাকা সত্বেও script লোড হতে পারে। script এর মধ্যে কোন এরর থাকা সত্বেও `load` ইভেন্ট টি ট্রিগার হবে। যদি আমরা script এর error ট্র্যাক করতে চায় তাহলে `window.onerror` গ্লোবাল হ্যান্ডেলারের সহায়তা নিতে পারি। ``` -## Other resources +## অন্যান্য রিসোর্স -The `load` and `error` events also work for other resources, basically for any resource that has an external `src`. +অন্যান্য যেসব এলিমেন্ট এক্সটার্নাল রিসোর্স লোড করতে পারে তাদের জন্যও `load` এবং `error` কাজ করবে। -For example: +যেমন: ```js run let img = document.createElement('img'); @@ -96,30 +96,26 @@ img.onerror = function() { }; ``` -There are some notes though: +তবে কিছু ব্যতিক্রম বৈশিষ্ট্য আছে: -- Most resources start loading when they are added to the document. But `<img>` is an exception. It starts loading when it gets a src `(*)`. -- For `<iframe>`, the `iframe.onload` event triggers when the iframe loading finished, both for successful load and in case of an error. +- বেশিরভাগ রিসোর্স লোড হওয়া শুরু করে যখন তাদের document এ সংযুক্ত করা হয় তবে `<img>` ব্যতিক্রম। এটি লোড শুরু করবে যখনি src দেখবে `(*)`। +- `<iframe>` এর জন্য, error বা load উভয়ের জন্য লোডিং সম্পন্ন হলে `iframe.onload` ট্রিগার হবে। -That's for historical reasons. +## Crossorigin পলিসি -## Crossorigin policy +ওয়েবের একটি নিয়ম আছে: এক সাইটের script অন্য সাইটের কন্টেন্ট কে অ্যাক্সেস করতে পারে না। যেমন `https://facebook.com` এর script ইউজারের মেইলবক্সের `https://gmail.com` কন্টেন্ট অ্যাক্সেস করতে পারবে না। -There's a rule: scripts from one site can't access contents of the other site. So, e.g. a script at `https://facebook.com` can't read the user's mailbox at `https://gmail.com`. +আর সুনির্দিষ্টভাবে বলতে গেলে একটি অরিজিন (domain/port/protocol triplet) অন্য অরিজিনের কন্টেন্ট অ্যাক্সেস করতে পারবে না। যদিও বা তারা যদি ঐ সাইটের সাবডোমেন হয়। -Or, to be more precise, one origin (domain/port/protocol triplet) can't access the content from another one. So even if we have a subdomain, or just another port, these are different origins with no access to each other. +যদি আমরা অন্য একটি ডোমেনের script ব্যবহার করি, এবং যদি ঐ স্ক্রিপ্টে কোন এরর সংগঠিত হয়, তাহলে এরর এর বিস্তারিত জানতে পারব না। -This rule also affects resources from other domains. - -If we're using a script from another domain, and there's an error in it, we can't get error details. - -For example, let's take a script `error.js` that consists of a single (bad) function call: +যেমন, আমাদের একটি স্ক্রিপ্ট আছে `error.js` যা একটি অসংজ্ঞায়িত ফাংশনকে কল করে: ```js // 📁 error.js noSuchFunction(); ``` -Now load it from the same site where it's located: +এখন চলুন, আমরা একই অরিজিন হতে তাদের লোড করি: ```html run height=0 <script> @@ -130,14 +126,14 @@ window.onerror = function(message, url, line, col, errorObj) { <script src="/article/onload-onerror/crossorigin/error.js"></script> ``` -We can see a good error report, like this: +এখন আমরা একটি বিস্তারিত এরর মেসেজ দেখব, এমন: ``` Uncaught ReferenceError: noSuchFunction is not defined https://javascript.info/article/onload-onerror/crossorigin/error.js, 1:1 ``` -Now let's load the same script from another domain: +এখন চলুন ভিন্ন ডোমেইন হতে স্ক্রিপ্টটি লোড করি: ```html run height=0 <script> @@ -148,40 +144,42 @@ window.onerror = function(message, url, line, col, errorObj) { <script src="https://cors.javascript.info/article/onload-onerror/crossorigin/error.js"></script> ``` -The report is different, like this: +এখন এরর মেসেজটি দেখাবে এমন: ``` Script error. , 0:0 ``` -Details may vary depending on the browser, but the idea is the same: any information about the internals of a script, including error stack traces, is hidden. Exactly because it's from another domain. +মেসেজটি ব্রাউজারভেদে ভিন্ন হতে পারে, তবে এরর মেসেজের বিস্তারিত দেখব না, কেননা ভিন্ন ডোমেনের কন্টেন্ট আমরা অ্যাক্সেস করতে পারব না। -Why do we need error details? +কেন আমাদের বিস্তারিত এরর মেসেজ প্রয়োজন হতে পারে? -There are many services (and we can build our own) that listen for global errors using `window.onerror`, save errors and provide an interface to access and analyze them. That's great, as we can see real errors, triggered by our users. But if a script comes from another origin, then there's not much information about errors in it, as we've just seen. +অনেক সার্ভিস আছে (এমনকি আমরা নিজেরাও বানাতে পারি) যারা `window.onerror` এর মাধ্যমে এরর ট্র্যাক করে এবং তা অ্যানালাইসিসের জন্য সংরক্ষন করে। এটি ইউজারদের দ্বারা লাইভে সংগঠিত হওয়া এরর সমূহ ট্র্যাক করতে সহায়তা করে। তবে যদি ভিন্ন অরিজিন হতে এরর সংগঠিত হয় তাহলে তা আমরা ট্র্যাক করতে পারব না। -Similar cross-origin policy (CORS) is enforced for other types of resources as well. +অন্যান্য রিসোর্সের জন্য cross-origin policy (CORS) প্রয়োগ করা হয়। -**To allow cross-origin access, the `<script>` tag needs to have the `crossorigin` attribute, plus the remote server must provide special headers.** +**cross-origin অ্যাক্সেসের জন্য, `<script>` ট্যাগে `crossorigin` নামের বিশেষ অ্যাট্রিবিউটযুক্ত করতে হবে, এবং রিমোর্ট সার্ভার হতে একটি বিশেষ হেডার প্রভাইড করবে** -There are three levels of cross-origin access: +cross-origin অ্যাক্সেসের তিনটি ধাপ আছে: -1. **No `crossorigin` attribute** -- access prohibited. -2. **`crossorigin="anonymous"`** -- access allowed if the server responds with the header `Access-Control-Allow-Origin` with `*` or our origin. Browser does not send authorization information and cookies to remote server. +1. **`crossorigin` অ্যাট্রিবিউটব্যতীত** -- অ্যাক্সেস বাধাপ্রাপ্ত হবে। +2. **`crossorigin="anonymous"`** -- যদি রিমোট সার্ভার `Access-Control-Allow-Origin` এর মান `*` রেস্পন্ড করে তাহলে অ্যাক্সেস হবে। এক্ষেত্রে ব্রাউজার সার্ভারে কোন ধরণের অথরাইজেশন ইনফরমেশন বা cookies সেন্ড করবে না। 3. **`crossorigin="use-credentials"`** -- access allowed if the server sends back the header `Access-Control-Allow-Origin` with our origin and `Access-Control-Allow-Credentials: true`. Browser sends authorization information and cookies to remote server. ```smart -You can read more about cross-origin access in the chapter <info:fetch-crossorigin>. It describes the `fetch` method for network requests, but the policy is exactly the same. +cross-origin অ্যাক্সেস নিয়ে আরো বিস্তারিত <info:fetch-crossorigin>। এখানে নেটওয়ার্ক রিক্যুয়েস্টে `fetch` মেথড কিভাবে কাজ করে তা বর্ণনা করা হয়েছে, এক্ষেত্রে এটিও অনুরুপ কাজ করে। -Such thing as "cookies" is out of our current scope, but you can read about them in the chapter <info:cookie>. +যদিও আমরা এখনো "cookies" সম্পর্কে জানিনা, তবে আপনি চাইলে এই অধ্যায়ে বিস্তারিত জানতে পারবেন <info:cookie>। ``` -In our case, we didn't have any crossorigin attribute. So the cross-origin access was prohibited. Let's add it. +উপরের উদাহরণে আমরা কোন `crossorigin` অ্যাট্রিবিউট সংযুক্ত করিনি। তাই cross-origin অ্যাক্সেস বাধাপ্রাপ্ত হবে। চলুন এটি যোগ করি। -We can choose between `"anonymous"` (no cookies sent, one server-side header needed) and `"use-credentials"` (sends cookies too, two server-side headers needed). +`crossorigin` এর ভ্যালু হিসেবে `"anonymous"` বা `"use-credentials"` সেট করতে পারি। এক্ষেত্রে `"anonymous"` এর জন্য কোন cookies সেন্ড হবে না এবং শুধুমাত্র সার্ভার-সাইড হেডার প্রয়োজন হবে অন্যদিকে `"use-credentials"` এর জন্য cookies সেন্ড হবে ও অরিজিন এবং সার্ভার উভয়েই হেডার প্রয়োজন হবে। -If we don't care about cookies, then `"anonymous"` is the way to go: +যদি আমাদের cookies মূখ্য না হয়, তাহলে `"anonymous"` সেট করলেই হবে: + +এখন, ধরে নিন রিমোট সার্ভার আমাদের সার্ভার `Access-Control-Allow-Origin` হেডারটি প্রদান করে। এখন আমরা রিমোট সার্ভারের এরর এর বিস্তারিত জানতে পারব। ```html run height=0 <script> @@ -192,15 +190,13 @@ window.onerror = function(message, url, line, col, errorObj) { <script *!*crossorigin="anonymous"*/!* src="https://cors.javascript.info/article/onload-onerror/crossorigin/error.js"></script> ``` -Now, assuming that the server provides an `Access-Control-Allow-Origin` header, everything's fine. We have the full error report. - -## Summary +## সারাংশ -Images `<img>`, external styles, scripts and other resources provide `load` and `error` events to track their loading: +এক্সটার্নাল রিসোর্স লোড করে যেমন `<img>`, `<link>`, `<script>` এমন এলিমেন্টসমূহের লোডিং স্টেট ট্র্যাকের জন্য `load` এবং `error` নামের দুটি ইভেন্ট আছে: -- `load` triggers on a successful load, -- `error` triggers on a failed load. +- `load` যদি সঠিকভাবে লোড হয় তাহলে ট্রিগার হবে, +- `error` যদি সঠিকভাবে লোড না হয় তাহলে ট্রিগার হবে। -The only exception is `<iframe>`: for historical reasons it always triggers `load`, for any load completion, even if the page is not found. +তবে `<iframe>` সর্বদা `load` ট্রিগার করবে যদিও রিসোর্স কোন 404 পেজ হয়। -The `readystatechange` event also works for resources, but is rarely used, because `load/error` events are simpler. +এছাড়াও `readystatechange` ইভেন্টের সাহায্যেও ট্র্যাক করা যায়, তবে এটি তেমন ব্যবহার করা হয় না, কেননা `load/error` ইভেন্টসমূহ আরো বেশি সহজবোধ্য। diff --git a/2-ui/99-ui-misc/01-mutation-observer/article.md b/2-ui/99-ui-misc/01-mutation-observer/article.md index 3cf6f5397..46ae85ce1 100644 --- a/2-ui/99-ui-misc/01-mutation-observer/article.md +++ b/2-ui/99-ui-misc/01-mutation-observer/article.md @@ -1,52 +1,52 @@ -# Mutation observer +# মিউটেশন অভজার্ভার -`MutationObserver` is a built-in object that observes a DOM element and fires a callback when it detects a change. +`MutationObserver` হল একটি বিল্ট-ইন-অবজেক্ট যা DOM এলিমেন্টকে অবজার্ভ করে এবং এলিমেন্টে এ কোন পরিবর্তন হলে একটি কলব্যাক কল করে। -We'll first take a look at the syntax, and then explore a real-world use case, to see where such thing may be useful. +প্রথমে আমরা এটির সিনট্যাক্সটি দেখব, এরপর দেখব এটি কোন ক্ষেত্রে ব্যবহার করতে পারি। -## Syntax +## সিনট্যাক্স -`MutationObserver` is easy to use. +`MutationObserver` ডিক্লেয়ারের নিয়ম হল। -First, we create an observer with a callback-function: +প্রথমে, একটি কলব্যাক সহ অবজার্ভার ডিক্লেয়ার করা: ```js let observer = new MutationObserver(callback); ``` -And then attach it to a DOM node: +তারপর এর সাথে একটি DOM নোড সংযুক্ত করব: ```js observer.observe(node, config); ``` -`config` is an object with boolean options "what kind of changes to react on": -- `childList` -- changes in the direct children of `node`, -- `subtree` -- in all descendants of `node`, -- `attributes` -- attributes of `node`, -- `attributeFilter` -- an array of attribute names, to observe only selected ones. -- `characterData` -- whether to observe `node.data` (text content), +`config` একটি অবজেক্ট যার কিছু বুলিয়ান টাইপের প্রপার্টি আছে, প্রপার্টি গুলো দ্বারা বুঝায় DOM এ কোন ধরণের পরিবর্তনের জন্য কলব্যাকটি কল হবে: +- `childList` -- `node` এর ইমিডিয়েট চাইল্ড এলিমেন্ট এ কোন পরিবর্তন হলে, +- `subtree` -- `node` এর সাব-ট্রিতে কোন পরিবর্তন হলে, +- `attributes` -- `node` এর অ্যাট্রিবিউটে কোন পরিবর্তন হলে, +- `attributeFilter` -- অ্যাট্রিবিউটের একটি অ্যারে, অ্যারের মধ্যে উল্লেখিত অ্যাট্রিবিউটসমূহের মধ্যে কোন পরিবর্তন হলে, +- `characterData` -- `node.data` প্রপার্টির কোন পরিবর্তন হলে (text content), -Few other options: -- `attributeOldValue` -- if `true`, pass both the old and the new value of attribute to callback (see below), otherwise only the new one (needs `attributes` option), -- `characterDataOldValue` -- if `true`, pass both the old and the new value of `node.data` to callback (see below), otherwise only the new one (needs `characterData` option). +আরো কিছু প্রপার্টি: +- `attributeOldValue` -- যদি `true` হয় ও `attributes` এর মান `true`, তখন কলব্যাকে অ্যাট্রিবিউটের নতুন এবং পুরনো দুটিরই মান পাব অন্যথায় শুধু নতুন মানটি পাব, +- `characterDataOldValue` -- যদি `true` হয়, তাহলে পরিবর্তনের পূর্বের মান এবং পরিবর্তীত মান `node.data` দুটিই রিটার্ন করে (নিচে দেখুন), অন্যথায় শুধু পরিবর্তীত মানটি দেখায়(এটি হয় যদি কনফিগ এ `characterData` `true` হয়)। -Then after any changes, the `callback` is executed: changes are passed in the first argument as a list of [MutationRecord](https://dom.spec.whatwg.org/#mutationrecord) objects, and the observer itself as the second argument. +যখন নোডে কোন পরিবর্তন হয়, তখন `callback` এক্সিকিউট হয়: এবং প্রথম আর্গুমেন্টটি হয় [MutationRecord](https://dom.spec.whatwg.org/#mutationrecord) অবজেক্ট ও দ্বিতীয় আর্গুমেন্ট হল observer অবজেক্টটি। -[MutationRecord](https://dom.spec.whatwg.org/#mutationrecord) objects have properties: +`MutationRecord` অবজেক্টের প্রপার্টিসমূহ: -- `type` -- mutation type, one of - - `"attributes"`: attribute modified - - `"characterData"`: data modified, used for text nodes, - - `"childList"`: child elements added/removed, -- `target` -- where the change occurred: an element for `"attributes"`, or text node for `"characterData"`, or an element for a `"childList"` mutation, -- `addedNodes/removedNodes` -- nodes that were added/removed, -- `previousSibling/nextSibling` -- the previous and next sibling to added/removed nodes, -- `attributeName/attributeNamespace` -- the name/namespace (for XML) of the changed attribute, -- `oldValue` -- the previous value, only for attribute or text changes, if the corresponding option is set `attributeOldValue`/`characterDataOldValue`. +- `type` -- মিউটেশন টাইপ + - `"attributes"`: পরিবর্তিত অ্যাট্রিবিউট + - `"characterData"`: পরিবর্তিত ডাটা, টেক্সট নোডে ব্যবহার করা হয়, + - `"childList"`: added/removed চাইল্ড এলিমেন্টসমূহ, +- `target` -- এলিমেন্টের যে প্রপার্টিতে পরিবর্তন হয়: `"attributes"`, `"characterData"`, `"childList"`, +- `addedNodes/removedNodes` -- added/removed নোড, +- `previousSibling/nextSibling` -- *previous sibling nodes* বা *next sibling nodes* এর added/removed এর জন্য, +- `attributeName/attributeNamespace` -- পরিবর্তিত attribute name/namespace (XML এর জন্য), +- `oldValue` -- পরিবর্তনের আগের মানটি, যদি `config` এ `attributeOldValue`/`characterDataOldValue` সেট হয়। -For example, here's a `<div>` with a `contentEditable` attribute. That attribute allows us to focus on it and edit. +যেমন, এখানে একটি `<div>` এলিমেন্ট আছে, এবং এর অ্যাট্রিবিউট `contentEditable` সেট করছি। যার ফলে আমরা কন্টেন্ট কে পরিবর্তন করতে পারব। ```html run <div contentEditable id="elem">Click and <b>edit</b>, please</div> @@ -65,7 +65,7 @@ observer.observe(elem, { </script> ``` -If we run this code in the browser, then focus on the given `<div>` and change the text inside `<b>edit</b>`, `console.log` will show one mutation: +যদি আমরা কোডটি রান করি, এবং `<div>` এ ফোকাস করে চাইল্ড নোড `<b>edit</b>` এর কন্টেন্ট পরিবর্তন করি তাহলে `console.log` এ এই mutationRecords টি দেখব: ```js mutationRecords = [{ @@ -76,7 +76,7 @@ mutationRecords = [{ }]; ``` -If we make more complex editing operations, e.g. remove the `<b>edit</b>`, the mutation event may contain multiple mutation records: +যদি আমরা `<b>edit</b>` নোডটি রিমুভ করে দেয়, তখন mutationRecords টি হবে: ```js mutationRecords = [{ @@ -95,29 +95,29 @@ mutationRecords = [{ }]; ``` -So, `MutationObserver` allows to react on any changes within DOM subtree. +সুতরাং আমরা দেখলাম, `MutationObserver` দ্বারা আমরা DOM এর সাবট্রির পরিবর্তনও অবজার্ভ করতে পারি। -## Usage for integration +## থার্ড পার্টি লাইব্রেরী ইন্ট্রিগেশন -When such thing may be useful? +কখন `MutationObserver` ব্যবহার করতে পারি? -Imagine the situation when you need to add a third-party script that contains useful functionality, but also does something unwanted, e.g. shows ads `<div class="ads">Unwanted ads</div>`. +মনে করুন আপনি একটি দারুণ থার্ড পার্টি লাইব্রেরী ব্যবহার করছেন, তবে এর কিছু ফাংশনালিটি আছে যা আপনি চান না, যেমন এড দেখানো `<div class="ads">Unwanted ads</div>`। -Naturally, the third-party script provides no mechanisms to remove it. +সাধারণত, এই ফাংশনালিটিগুলো রিমুভের জন্য লাইব্রেরী গুলো কোন API প্রভাইড করে না। -Using `MutationObserver`, we can detect when the unwanted element appears in our DOM and remove it. +এক্ষেত্রে `MutationObserver` এর সাহায্যে আমরা আমাদের DOM এর পরিবর্তন নির্ণয় করে তা রিমুভ করতে পারি। -There are other situations when a third-party script adds something into our document, and we'd like to detect, when it happens, to adapt our page, dynamically resize something etc. +এছাড়াও আমরা যখন কোন থার্ড পার্টি স্ক্রিপ্ট ব্যবহার করি এবং তা যদি DOM এ কোন এলিমেন্ট সংযুক্ত করে তখন তা নির্ণয় করে ডায়নামিক্যালি DOM এলিমেন্টের সাইজ পরিবর্তন করতে হয়। -`MutationObserver` allows to implement this. +এইসব ক্ষেত্রে `MutationObserver` এর সাহায্যে এমন ফাংশনালিটি ইমপ্লিমেন্ট করতে পারি। -## Usage for architecture +## আর্কিটেকচার -There are also situations when `MutationObserver` is good from architectural standpoint. +এছাড়াও আমাদের প্রজেক্টের ভাল স্ট্রাকচারের জন্য `MutationObserver` ব্যবহার করতে পারি। -Let's say we're making a website about programming. Naturally, articles and other materials may contain source code snippets. +মনে করুন আমরা প্রোগ্রামিং সম্পর্কিত একটি ওয়েবসাইট বানাব। সাধারণত, এক্ষেত্রে আমাদের আর্টিকেল বা অন্যান্য রিসোর্স দেখাতে সোর্স কোড স্নিপেট ব্যবহার করা লাগে। -Such snippet in an HTML markup looks like this: +যেমন HTML মার্কআপ স্নিপেটে দেখতে এমন হবে: ```html ... @@ -128,29 +128,29 @@ Such snippet in an HTML markup looks like this: ... ``` -For better readability and at the same time, to beautify it, we'll be using a JavaScript syntax highlighting library on our site, like [Prism.js](https://prismjs.com/). To get syntax highlighting for above snippet in Prism, `Prism.highlightElem(pre)` is called, which examines the contents of such `pre` elements and adds special tags and styles for colored syntax highlighting into those elements, similar to what you see in examples here, on this page. +কোড কে পঠনযোগ্য এবং সুন্দরভাবে দেখাতে, আমরা আমাদের সাইটে একটি সিনট্যাক্স হাইলাইটিং লাইব্রেরী ব্যবহার করছি, যেমন [Prism.js](https://prismjs.com/)। সিনট্যাক্স হাইলাইটিং এর জন্য প্রিজমার একটি ফাংশন `Prism.highlightElem(pre)` কল করতে হয়, যা `pre` এলিমেন্টকে অবজার্ভ করে এবং ঐ এলিমেন্টের কোডের বৈশিষ্ট্যের উপর নির্ভর বিশেষ ট্যাগ এবং স্ট্যাইল সংযুক্ত করে, যেমন উপরের কোডে দেখুন। -When exactly should we run that highlighting method? Well, we can do it on `DOMContentLoaded` event, or put the script at the bottom of the page. The moment our DOM is ready, we can search for elements `pre[class*="language"]` and call `Prism.highlightElem` on them: +এখন প্রশ্ন, কখন `Prism.highlightElem(pre)` মেথডটি কল করব? আমরা চাইলে ফাংশনটি `DOMContentLoaded` ইভেন্ট ট্রিগারে বা পেজের একদম নিচে স্ক্রিপটি সংযুক্ত করতে পারি, তাহল DOM রেডি হওয়ার পর আমরা `pre[class*="language"]` এলিমেন্টগুলো খুঁজে `Prism.highlightElem` কে কল করতে পারি: ```js // highlight all code snippets on the page document.querySelectorAll('pre[class*="language"]').forEach(Prism.highlightElem); ``` -Everything's simple so far, right? We find code snippets in HTML and highlight them. +এ পর্যন্ত সব ঠিকঠাক তাই না? আমরা স্নিপেট প্রয়োগ হবে এমন এলিমেন্টগুলো খুঁজে বের করে তাদের জন্য সিনট্যাক্স হাইলাইটার ব্যবহার করব। -Now let's go on. Let's say we're going to dynamically fetch materials from a server. We'll study methods for that [later in the tutorial](info:fetch). For now it only matters that we fetch an HTML article from a webserver and display it on demand: +এখন ধরা যাক আমরা ডায়নামিক্যালি কোন কন্টেন্ট সার্ভার হতে রেন্ডার করব। [পরবর্তীতে এই অধ্যায়ে শিখব](info:fetch)। আপাতত ধরে নিন আমরা সার্ভার হতে কোন ডাটা রেন্ডার করে DOM এ দেখাচ্ছি: ```js let article = /* fetch new content from server */ articleElem.innerHTML = article; ``` -The new `article` HTML may contain code snippets. We need to call `Prism.highlightElem` on them, otherwise they won't get highlighted. +এখন ধরুন `article` এর কন্টেন্টে কিছু কোড স্নিপেট আছে। যার জন্য আমাদের `Prism.highlightElem` কে কল করতে হবে, অন্যথায় আমরা সিনট্যাক্স হাইলাইটিং দেখব না. -**Where and when to call `Prism.highlightElem` for a dynamically loaded article?** +**তাহলে কিভাবে ডায়নামিক্যালি লোড হওয়া আর্টিকেলের জন্য আমরা `Prism.highlightElem` কে কল করব?** -We could append that call to the code that loads an article, like this: +আমরা চাইলে আর্টিকেল লোড হওয়ার পর এভাবে সংযুক্ত করতে পারি: ```js let article = /* fetch new content from server */ @@ -162,21 +162,21 @@ snippets.forEach(Prism.highlightElem); */!* ``` -...But, imagine if we have many places in the code where we load our content - articles, quizzes, forum posts, etc. Do we need to put the highlighting call everywhere, to highlight the code in content after loading? That's not very convenient. +...কিন্তু, ভাবুন আমাদের আরো অনেক জায়গায় এমন ডায়নামিক কন্টেন্ট আছে যেমন আর্টিকেল, কুইজ, ফোরাম পোস্ট, ইত্যাদি। এজন্য কি আমরা প্রতিটি কন্টেন্ট লোড হওয়ার পর সিনট্যাক্স হাইলাইটারকে কল করব? এটি তেমন ভালো কোন সমাধান হতে পারে না। -And what if the content is loaded by a third-party module? For example, we have a forum written by someone else, that loads content dynamically, and we'd like to add syntax highlighting to it. No one likes patching third-party scripts. +আবার মনে করুন আমাদের একটি ফোরাম আছে যা লোড হয় একটি থার্ড-পার্টি লাইব্রেরী থেকে, এবং এর মধ্যে বিভিন্ন ধরণের কোড থাকতে পারে এখন কন্টেন্টে আমরা সিনট্যাক্স হাইলাইট করতে চাই, কিন্তু আমাদের থার্ড পার্টি লাইব্রেরীটি সিনট্যাক্স হাইলাইটিং ফিচার প্রদান করে না। -Luckily, there's another option. +তবে এটি আমরা আরেকভাবে করতে পারি। -We can use `MutationObserver` to automatically detect when code snippets are inserted into the page and highlight them. +আমরা DOM কে অবজার্ভ করে `MutationObserver` এর সাহায্যে স্বয়ংক্রিয়ভাবে কন্টেন্টকে হাইলাইট করতে পারি। -So we'll handle the highlighting functionality in one place, relieving us from the need to integrate it. +তাহলে আমরা একটি জায়গায় ফাংশনালিটি ইমপ্লিমেন্ট করলে হবে, এরফলে আমাদের কোড হবে সহজে পরিবর্তনযোগ্য। -### Dynamic highlight demo +### ডায়নামিক সিনট্যাক্স হাইলাইটার -Here's the working example. +এখানে একটি উদাহরন দেয়া হল। -If you run this code, it starts observing the element below and highlighting any code snippets that appear there: +কোডটি রান করুন, এটি আমাদের এলিমেন্টকে অবজার্ভ করে এবং কোড স্নিপেটের জন্য `Prism.highlightElement` কে কল করবে: ```js run let observer = new MutationObserver(mutations => { @@ -207,13 +207,13 @@ let demoElem = document.getElementById('highlight-demo'); observer.observe(demoElem, {childList: true, subtree: true}); ``` -Here, below, there's an HTML-element and JavaScript that dynamically fills it using `innerHTML`. +এখন আমরা ডায়নামিক্যালি কন্টেন্ট `demoElem.innerHTML` এ অ্যাসাইন করব। -Please run the previous code (above, observes that element), and then the code below. You'll see how `MutationObserver` detects and highlights the snippet. +প্রথমে উপরের কোডটি রান করুন, এবং তারপর নিচেরটি রান করুন। এখন দেখবেন `MutationObserver` আমাদের কন্টেন্ট অবজার্ভ করে কোড স্নিপেটকে হাইলাইট করবে। <p id="highlight-demo" style="border: 1px solid #ddd">A demo-element with <code>id="highlight-demo"</code>, run the code above to observe it.</p> -The following code populates its `innerHTML`, that causes the `MutationObserver` to react and highlight its contents: +নিচের কোডটিতে `MutationObserver` `highlight-demo` নোডটিকে অবজার্ভ করে এবং দেখে তার কন্টেন্ট `innerHTML` পরিবর্তন হয়েছে, ফলে `MutationObserver` এক্সিকিউট হবে এবং এটি `Prism.highlightElement` কে কল করে: ```js run let demoElem = document.getElementById('highlight-demo'); @@ -228,19 +228,19 @@ demoElem.innerHTML = `A code snippet is below: `; ``` -Now we have `MutationObserver` that can track all highlighting in observed elements or the whole `document`. We can add/remove code snippets in HTML without thinking about it. +এভাবে আমরা `MutationObserver` দ্বারা আমাদের `document` এ যেকোন পরিবর্তন ট্র্যাক করে তার উপর নির্ভর করে কোন একটি ফাংশন কল করতে পারি। -## Additional methods +## অন্যান্য মেথড -There's a method to stop observing the node: +`MutationObserver` এর আরো কিছু মেথড আছে: -- `observer.disconnect()` -- stops the observation. +- `observer.disconnect()` -- অবজার্ভেশন করা বন্ধ করে। -When we stop the observing, it might be possible that some changes were not yet processed by the observer. In such cases, we use +যখন আমরা ``observer.disconnect()`` কে কল করি, সেসময় এমন হতে পারে DOM এ কোন কিছু পরিবর্তন হয়েছে কিন্তু তাদের জন্য তখনো observer কল হয়নি। এক্ষেত্রে আমরা ব্যবহার করতে পারি -- `observer.takeRecords()` -- gets a list of unprocessed mutation records - those that happened, but the callback has not handled them. +- `observer.takeRecords()` -- যা QUEUE তে থাকা যেসব মিউটেশনের জন্য আমাদের কলব্যাক হ্যান্ডেলার কল হয়নি তাদের তালিকাটি রিটার্ন করে। -These methods can be used together, like this: +এক্ষেত্রে মেথডদুটিকে এভাবে ব্যবহার করতে পারি: ```js // get a list of unprocessed mutations @@ -254,8 +254,8 @@ observer.disconnect(); ``` -```smart header="Records returned by `observer.takeRecords()` are removed from the processing queue" -The callback won't be called for records, returned by `observer.takeRecords()`. +```smart header="`observer.takeRecords()` দ্বারা রিটার্নকৃত মিউটেশন রেকর্ডগুলো QUEUE থেকে রিমুভড হয়" + `observer.takeRecords()` এর জন্য যেসব মিউটেশন রিটার্ন হয় তাদের জন্য কলব্যাকটি এক্সিকিউট হবে না। ``` ```smart header="Garbage collection interaction" @@ -264,10 +264,10 @@ Observers use weak references to nodes internally. That is, if a node is removed The mere fact that a DOM node is observed doesn't prevent the garbage collection. ``` -## Summary +## সারাংশ -`MutationObserver` can react to changes in DOM - attributes, text content and adding/removing elements. +`MutationObserver` দ্বারা DOM এ কোন এলিমেন্টকে অবজার্ভ করতে পারি, যার সাহায্যে নির্ণয় করতে পারি কোন অ্যাট্রিবিউট, কন্টেন্ট বা এলিমেন্ট সংযুক্ত হয়েছে বা বাদ পরেছে কিনা। -We can use it to track changes introduced by other parts of our code, as well as to integrate with third-party scripts. +এটি দ্বারা আমরা আমাদের নিজস্ব স্ক্রিপ্ট বা থার্ড পার্টি স্ক্রিপ্ট দ্বারা DOM এর পরিবর্তন ট্র্যাক করতে পারি। -`MutationObserver` can track any changes. The config "what to observe" options are used for optimizations, not to spend resources on unneeded callback invocations. +`MutationObserver` যেকোন পরিবর্তন ট্র্যাক করতে পারে, তবে অপ্টিমাইজেশনের জন্য আমরা যা যা অবজার্ভ করতে হবে কনফিগারেশনে শুধুমাত্র তাদের পাঠাতে পারি, এভাবে আমরা অপ্রয়োজনীয় মিউটেশন কল এড়াতে পারি। diff --git a/2-ui/99-ui-misc/02-selection-range/range-example-p-0-1.svg b/2-ui/99-ui-misc/02-selection-range/range-example-p-0-1.svg index a97d1b47a..9ebcffaac 100644 --- a/2-ui/99-ui-misc/02-selection-range/range-example-p-0-1.svg +++ b/2-ui/99-ui-misc/02-selection-range/range-example-p-0-1.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="640" height="89" viewBox="0 0 640 89"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="path-1" d="M47 35h262v21H47z"/><mask id="mask-2" width="262" height="21" x="0" y="0" fill="#fff" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox"><use xlink:href="#path-1"/></mask></defs><g id="selection-range" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="range-example-p-0-1.svg"><use id="Rectangle" fill="#C9DCEA" stroke="#C9DCEA" stroke-dasharray="5,2" stroke-width="2" mask="url(#mask-2)" xlink:href="#path-1"/><g id="<p>Example:-<i>itali" fill="#AF6E24" fill-rule="nonzero" transform="translate(13 35)"><path id="<p>Example:<i>italic</i>and<b>bold</b></p>" d="M.81 10.51v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08L.81 10.51zm12.718-.36a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM37.326 3.4h7.398v1.332H38.82v4.122h5.454v1.332H38.82v4.482h5.994V16h-7.488V3.4zm14.428 7.992L48.28 7h1.8l2.592 3.384L55.336 7h1.62l-3.474 4.32 3.69 4.68h-1.728l-2.862-3.69L49.666 16h-1.638l3.726-4.608zm9.19-3.69a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM75.516 16v-5.994a9.51 9.51 0 00-.027-.729 2.442 2.442 0 00-.126-.63 1.01 1.01 0 00-.288-.441.734.734 0 00-.495-.162c-.408 0-.753.168-1.035.504-.282.336-.495.756-.639 1.26V16h-1.368V7h.936l.27 1.098h.072c.12-.18.237-.351.351-.513.114-.162.246-.303.396-.423.15-.12.327-.213.531-.279.204-.066.462-.099.774-.099.18 0 .366.027.558.081.192.054.369.138.531.252.162.114.303.267.423.459s.198.426.234.702c.276-.468.585-.834.927-1.098.342-.264.813-.396 1.413-.396.396 0 .717.066.963.198s.438.321.576.567c.138.246.234.54.288.882.054.342.081.723.081 1.143V16h-1.368V9.88c0-.252-.012-.489-.036-.711a2.268 2.268 0 00-.135-.585.967.967 0 00-.27-.396c-.114-.096-.267-.144-.459-.144-.42 0-.774.168-1.062.504-.288.336-.504.816-.648 1.44V16h-1.368zm8.812-5.85a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zM96.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm19.18 11.466a4.53 4.53 0 01-.765.54 5.645 5.645 0 01-.963.432 7.06 7.06 0 01-1.089.279 6.633 6.633 0 01-1.143.099c-.72 0-1.356-.111-1.908-.333a3.674 3.674 0 01-1.386-.954 4.158 4.158 0 01-.846-1.485c-.192-.576-.288-1.224-.288-1.944 0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.504 0 1.002.066 1.494.198a2.95 2.95 0 011.305.747c.378.366.669.87.873 1.512.204.642.276 1.473.216 2.493h-6.966c0 1.08.291 1.887.873 2.421.582.534 1.359.801 2.331.801.324 0 .645-.039.963-.117.318-.078.621-.171.909-.279.288-.108.543-.228.765-.36.222-.132.393-.252.513-.36l.558 1.026zm-3.798-6.894a4.86 4.86 0 00-1.125.126 2.564 2.564 0 00-.936.423c-.27.198-.492.456-.666.774-.174.318-.285.711-.333 1.179h5.598c-.06-.792-.315-1.407-.765-1.845-.45-.438-1.041-.657-1.773-.657zm10.27-.036c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm0 7.074c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm20.216-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zM155.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM178.89 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zM189.358 7h2.142V5.218l1.404-.396V7h4.806v1.206h-4.806v4.248c0 .876.213 1.524.639 1.944.426.42 1.035.63 1.827.63.54 0 1.011-.102 1.413-.306a7.614 7.614 0 001.089-.666l.468 1.062c-.42.336-.921.606-1.503.81a5.377 5.377 0 01-1.791.306c-.48 0-.933-.069-1.359-.207a3.12 3.12 0 01-1.125-.639 3.06 3.06 0 01-.774-1.107c-.192-.45-.288-.987-.288-1.611V8.206h-2.142V7zm13.186.702a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM214.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zM226.09 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm15.166 3.942a7.111 7.111 0 00-.891-.243 4.64 4.64 0 00-.945-.099c-1.176 0-2.052.276-2.628.828-.576.552-.864 1.428-.864 2.628 0 .528.084.999.252 1.413.168.414.408.765.72 1.053.312.288.687.51 1.125.666.438.156.921.234 1.449.234.564 0 1.113-.096 1.647-.288.534-.192.981-.444 1.341-.756l.63 1.044a5.095 5.095 0 01-.63.45 6.053 6.053 0 01-1.971.774 6.38 6.38 0 01-1.305.126c-.78 0-1.467-.111-2.061-.333a3.914 3.914 0 01-1.485-.954 4.083 4.083 0 01-.9-1.494 5.818 5.818 0 01-.306-1.935c0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.888 0 1.611.078 2.169.234.558.156 1.029.33 1.413.522l-.018.054v2.502h-1.296v-1.71zm4.708 2.124v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zM273.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm24.05-7.704a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zm8.884-4.806a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.412l.162 1.458h.09c.12-.204.279-.405.477-.603a3.741 3.741 0 011.575-.927 3.593 3.593 0 011.026-.144c.552 0 1.041.06 1.467.18.426.12.78.333 1.062.639.282.306.495.72.639 1.242.144.522.216 1.185.216 1.989V16h-1.404v-4.896c0-.996-.162-1.746-.486-2.25-.324-.504-.912-.756-1.764-.756-.312 0-.615.063-.909.189a3.137 3.137 0 00-.801.495c-.24.204-.45.441-.63.711-.18.27-.312.555-.396.855V16h-1.386v-5.85zm16.408-6.75h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm19.208-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm11.026-7.11h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM389.436 3.4h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.192 3.51c0-1.452.378-2.601 1.134-3.447.756-.846 1.836-1.269 3.24-1.269.756 0 1.407.123 1.953.369s.999.579 1.359.999c.36.42.627.918.801 1.494.174.576.261 1.194.261 1.854 0 .72-.096 1.371-.288 1.953a4.057 4.057 0 01-.846 1.485 3.738 3.738 0 01-1.377.945c-.546.222-1.167.333-1.863.333-.744 0-1.392-.123-1.944-.369a3.815 3.815 0 01-1.368-.999 4.073 4.073 0 01-.801-1.494 6.381 6.381 0 01-.261-1.854zm1.494 0c0 .42.051.84.153 1.26.102.42.267.798.495 1.134.228.336.525.606.891.81.366.204.813.306 1.341.306.96 0 1.683-.297 2.169-.891.486-.594.729-1.467.729-2.619 0-.432-.051-.855-.153-1.269a3.353 3.353 0 00-.504-1.125 2.656 2.656 0 00-.9-.81c-.366-.204-.813-.306-1.341-.306-.96 0-1.68.294-2.16.882-.48.588-.72 1.464-.72 2.628zm11.422-8.1h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm15.94 0h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm7.408-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm3.718.216h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm11.116-4.896v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm5.41 6.966a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896z"/></g><path id="Path-Copy" stroke="#C06334" stroke-width="2" d="M48 57v11h102V57"/><path id="Path-Copy-2" stroke="#C06334" stroke-width="2" d="M154 57v11h154V57"/><text id="0" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="93" y="84">0</tspan></text><text id="1" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="226" y="84">1</tspan></text><text id="2" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="334" y="84">2</tspan></text><text id="3" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="428" y="84">3</tspan></text><path id="Path-Copy-3" stroke="#C06334" stroke-width="2" d="M312 57v11h53V57"/><path id="Path-Copy-4" stroke="#C06334" stroke-width="2" d="M369 57v11h128V57"/></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="640" height="89" viewBox="0 0 640 89"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="path-1" d="M47 35h262v21H47z"/><mask id="mask-2" width="262" height="21" x="0" y="0" fill="#fff" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox"><use xlink:href="#path-1"/></mask></defs><g id="selection-range" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="range-example-p-0-1.svg"><use id="Rectangle" fill="#C9DCEA" stroke="#C9DCEA" stroke-dasharray="5,2" stroke-width="2" mask="url(#mask-2)" xlink:href="#path-1"/><g id="Group" fill="#AF6E24" fill-rule="nonzero" transform="translate(13 35)"><path id="<p>Example:<i>italic</i>and<b>bold</b></p>" d="M.81 10.51v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08L.81 10.51zm12.718-.36a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM37.326 3.4h7.398v1.332H38.82v4.122h5.454v1.332H38.82v4.482h5.994V16h-7.488V3.4zm14.428 7.992L48.28 7h1.8l2.592 3.384L55.336 7h1.62l-3.474 4.32 3.69 4.68h-1.728l-2.862-3.69L49.666 16h-1.638l3.726-4.608zm9.19-3.69a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM75.516 16v-5.994a9.51 9.51 0 00-.027-.729 2.442 2.442 0 00-.126-.63 1.01 1.01 0 00-.288-.441.734.734 0 00-.495-.162c-.408 0-.753.168-1.035.504-.282.336-.495.756-.639 1.26V16h-1.368V7h.936l.27 1.098h.072c.12-.18.237-.351.351-.513.114-.162.246-.303.396-.423.15-.12.327-.213.531-.279.204-.066.462-.099.774-.099.18 0 .366.027.558.081.192.054.369.138.531.252.162.114.303.267.423.459s.198.426.234.702c.276-.468.585-.834.927-1.098.342-.264.813-.396 1.413-.396.396 0 .717.066.963.198s.438.321.576.567c.138.246.234.54.288.882.054.342.081.723.081 1.143V16h-1.368V9.88c0-.252-.012-.489-.036-.711a2.268 2.268 0 00-.135-.585.967.967 0 00-.27-.396c-.114-.096-.267-.144-.459-.144-.42 0-.774.168-1.062.504-.288.336-.504.816-.648 1.44V16h-1.368zm8.812-5.85a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zM96.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm19.18 11.466a4.53 4.53 0 01-.765.54 5.645 5.645 0 01-.963.432 7.06 7.06 0 01-1.089.279 6.633 6.633 0 01-1.143.099c-.72 0-1.356-.111-1.908-.333a3.674 3.674 0 01-1.386-.954 4.158 4.158 0 01-.846-1.485c-.192-.576-.288-1.224-.288-1.944 0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.504 0 1.002.066 1.494.198a2.95 2.95 0 011.305.747c.378.366.669.87.873 1.512.204.642.276 1.473.216 2.493h-6.966c0 1.08.291 1.887.873 2.421.582.534 1.359.801 2.331.801.324 0 .645-.039.963-.117.318-.078.621-.171.909-.279.288-.108.543-.228.765-.36.222-.132.393-.252.513-.36l.558 1.026zm-3.798-6.894a4.86 4.86 0 00-1.125.126 2.564 2.564 0 00-.936.423c-.27.198-.492.456-.666.774-.174.318-.285.711-.333 1.179h5.598c-.06-.792-.315-1.407-.765-1.845-.45-.438-1.041-.657-1.773-.657zm10.27-.036c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm0 7.074c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm20.216-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zM155.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM178.89 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zM189.358 7h2.142V5.218l1.404-.396V7h4.806v1.206h-4.806v4.248c0 .876.213 1.524.639 1.944.426.42 1.035.63 1.827.63.54 0 1.011-.102 1.413-.306a7.614 7.614 0 001.089-.666l.468 1.062c-.42.336-.921.606-1.503.81a5.377 5.377 0 01-1.791.306c-.48 0-.933-.069-1.359-.207a3.12 3.12 0 01-1.125-.639 3.06 3.06 0 01-.774-1.107c-.192-.45-.288-.987-.288-1.611V8.206h-2.142V7zm13.186.702a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM214.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zM226.09 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm15.166 3.942a7.111 7.111 0 00-.891-.243 4.64 4.64 0 00-.945-.099c-1.176 0-2.052.276-2.628.828-.576.552-.864 1.428-.864 2.628 0 .528.084.999.252 1.413.168.414.408.765.72 1.053.312.288.687.51 1.125.666.438.156.921.234 1.449.234.564 0 1.113-.096 1.647-.288.534-.192.981-.444 1.341-.756l.63 1.044a5.095 5.095 0 01-.63.45 6.053 6.053 0 01-1.971.774 6.38 6.38 0 01-1.305.126c-.78 0-1.467-.111-2.061-.333a3.914 3.914 0 01-1.485-.954 4.083 4.083 0 01-.9-1.494 5.818 5.818 0 01-.306-1.935c0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.888 0 1.611.078 2.169.234.558.156 1.029.33 1.413.522l-.018.054v2.502h-1.296v-1.71zm4.708 2.124v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zM273.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm24.05-7.704a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zm8.884-4.806a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.412l.162 1.458h.09c.12-.204.279-.405.477-.603a3.741 3.741 0 011.575-.927 3.593 3.593 0 011.026-.144c.552 0 1.041.06 1.467.18.426.12.78.333 1.062.639.282.306.495.72.639 1.242.144.522.216 1.185.216 1.989V16h-1.404v-4.896c0-.996-.162-1.746-.486-2.25-.324-.504-.912-.756-1.764-.756-.312 0-.615.063-.909.189a3.137 3.137 0 00-.801.495c-.24.204-.45.441-.63.711-.18.27-.312.555-.396.855V16h-1.386v-5.85zm16.408-6.75h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm19.208-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm11.026-7.11h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM389.436 3.4h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.192 3.51c0-1.452.378-2.601 1.134-3.447.756-.846 1.836-1.269 3.24-1.269.756 0 1.407.123 1.953.369s.999.579 1.359.999c.36.42.627.918.801 1.494.174.576.261 1.194.261 1.854 0 .72-.096 1.371-.288 1.953a4.057 4.057 0 01-.846 1.485 3.738 3.738 0 01-1.377.945c-.546.222-1.167.333-1.863.333-.744 0-1.392-.123-1.944-.369a3.815 3.815 0 01-1.368-.999 4.073 4.073 0 01-.801-1.494 6.381 6.381 0 01-.261-1.854zm1.494 0c0 .42.051.84.153 1.26.102.42.267.798.495 1.134.228.336.525.606.891.81.366.204.813.306 1.341.306.96 0 1.683-.297 2.169-.891.486-.594.729-1.467.729-2.619 0-.432-.051-.855-.153-1.269a3.353 3.353 0 00-.504-1.125 2.656 2.656 0 00-.9-.81c-.366-.204-.813-.306-1.341-.306-.96 0-1.68.294-2.16.882-.48.588-.72 1.464-.72 2.628zm11.422-8.1h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm15.94 0h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm7.408-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm3.718.216h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm11.116-4.896v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm5.41 6.966a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896z"/></g><path id="Path-Copy" stroke="#C06334" stroke-width="2" d="M48 57v11h102V57"/><path id="Path-Copy-2" stroke="#C06334" stroke-width="2" d="M154 57v11h154V57"/><text id="0" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="93" y="84">0</tspan></text><text id="1" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="226" y="84">1</tspan></text><text id="2" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="334" y="84">2</tspan></text><text id="3" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="428" y="84">3</tspan></text><path id="Path-Copy-3" stroke="#C06334" stroke-width="2" d="M312 57v11h53V57"/><path id="Path-Copy-4" stroke="#C06334" stroke-width="2" d="M369 57v11h128V57"/></g></g></svg> \ No newline at end of file diff --git a/2-ui/99-ui-misc/02-selection-range/range-example-p-1-3.svg b/2-ui/99-ui-misc/02-selection-range/range-example-p-1-3.svg index 2a8f9aca3..088c71c20 100644 --- a/2-ui/99-ui-misc/02-selection-range/range-example-p-1-3.svg +++ b/2-ui/99-ui-misc/02-selection-range/range-example-p-1-3.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="640" height="89" viewBox="0 0 640 89"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="path-1" d="M153 35h345v21H153z"/><mask id="mask-2" width="345" height="21" x="0" y="0" fill="#fff" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox"><use xlink:href="#path-1"/></mask></defs><g id="selection-range" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="range-example-p-1-3.svg"><use id="Rectangle" fill="#C9DCEA" stroke="#C9DCEA" stroke-dasharray="5,2" stroke-width="2" mask="url(#mask-2)" xlink:href="#path-1"/><path id="Path-Copy" stroke="#C06334" stroke-width="2" d="M48 57v11h102V57"/><path id="Path-Copy-2" stroke="#C06334" stroke-width="2" d="M154 57v11h154V57"/><text id="0" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="93" y="84">0</tspan></text><text id="1" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="226" y="84">1</tspan></text><text id="2" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="334" y="84">2</tspan></text><text id="3" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="428" y="84">3</tspan></text><path id="Path-Copy-3" stroke="#C06334" stroke-width="2" d="M312 57v11h53V57"/><path id="Path-Copy-4" stroke="#C06334" stroke-width="2" d="M369 57v11h128V57"/><g id="<p>Example:-<i>itali" fill="#AF6E24" fill-rule="nonzero" transform="translate(13 35)"><path id="<p>Example:<i>italic</i>and<b>bold</b></p>" d="M.81 10.51v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08L.81 10.51zm12.718-.36a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM37.326 3.4h7.398v1.332H38.82v4.122h5.454v1.332H38.82v4.482h5.994V16h-7.488V3.4zm14.428 7.992L48.28 7h1.8l2.592 3.384L55.336 7h1.62l-3.474 4.32 3.69 4.68h-1.728l-2.862-3.69L49.666 16h-1.638l3.726-4.608zm9.19-3.69a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM75.516 16v-5.994a9.51 9.51 0 00-.027-.729 2.442 2.442 0 00-.126-.63 1.01 1.01 0 00-.288-.441.734.734 0 00-.495-.162c-.408 0-.753.168-1.035.504-.282.336-.495.756-.639 1.26V16h-1.368V7h.936l.27 1.098h.072c.12-.18.237-.351.351-.513.114-.162.246-.303.396-.423.15-.12.327-.213.531-.279.204-.066.462-.099.774-.099.18 0 .366.027.558.081.192.054.369.138.531.252.162.114.303.267.423.459s.198.426.234.702c.276-.468.585-.834.927-1.098.342-.264.813-.396 1.413-.396.396 0 .717.066.963.198s.438.321.576.567c.138.246.234.54.288.882.054.342.081.723.081 1.143V16h-1.368V9.88c0-.252-.012-.489-.036-.711a2.268 2.268 0 00-.135-.585.967.967 0 00-.27-.396c-.114-.096-.267-.144-.459-.144-.42 0-.774.168-1.062.504-.288.336-.504.816-.648 1.44V16h-1.368zm8.812-5.85a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zM96.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm19.18 11.466a4.53 4.53 0 01-.765.54 5.645 5.645 0 01-.963.432 7.06 7.06 0 01-1.089.279 6.633 6.633 0 01-1.143.099c-.72 0-1.356-.111-1.908-.333a3.674 3.674 0 01-1.386-.954 4.158 4.158 0 01-.846-1.485c-.192-.576-.288-1.224-.288-1.944 0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.504 0 1.002.066 1.494.198a2.95 2.95 0 011.305.747c.378.366.669.87.873 1.512.204.642.276 1.473.216 2.493h-6.966c0 1.08.291 1.887.873 2.421.582.534 1.359.801 2.331.801.324 0 .645-.039.963-.117.318-.078.621-.171.909-.279.288-.108.543-.228.765-.36.222-.132.393-.252.513-.36l.558 1.026zm-3.798-6.894a4.86 4.86 0 00-1.125.126 2.564 2.564 0 00-.936.423c-.27.198-.492.456-.666.774-.174.318-.285.711-.333 1.179h5.598c-.06-.792-.315-1.407-.765-1.845-.45-.438-1.041-.657-1.773-.657zm10.27-.036c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm0 7.074c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm20.216-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zM155.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM178.89 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zM189.358 7h2.142V5.218l1.404-.396V7h4.806v1.206h-4.806v4.248c0 .876.213 1.524.639 1.944.426.42 1.035.63 1.827.63.54 0 1.011-.102 1.413-.306a7.614 7.614 0 001.089-.666l.468 1.062c-.42.336-.921.606-1.503.81a5.377 5.377 0 01-1.791.306c-.48 0-.933-.069-1.359-.207a3.12 3.12 0 01-1.125-.639 3.06 3.06 0 01-.774-1.107c-.192-.45-.288-.987-.288-1.611V8.206h-2.142V7zm13.186.702a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM214.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zM226.09 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm15.166 3.942a7.111 7.111 0 00-.891-.243 4.64 4.64 0 00-.945-.099c-1.176 0-2.052.276-2.628.828-.576.552-.864 1.428-.864 2.628 0 .528.084.999.252 1.413.168.414.408.765.72 1.053.312.288.687.51 1.125.666.438.156.921.234 1.449.234.564 0 1.113-.096 1.647-.288.534-.192.981-.444 1.341-.756l.63 1.044a5.095 5.095 0 01-.63.45 6.053 6.053 0 01-1.971.774 6.38 6.38 0 01-1.305.126c-.78 0-1.467-.111-2.061-.333a3.914 3.914 0 01-1.485-.954 4.083 4.083 0 01-.9-1.494 5.818 5.818 0 01-.306-1.935c0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.888 0 1.611.078 2.169.234.558.156 1.029.33 1.413.522l-.018.054v2.502h-1.296v-1.71zm4.708 2.124v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zM273.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm24.05-7.704a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zm8.884-4.806a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.412l.162 1.458h.09c.12-.204.279-.405.477-.603a3.741 3.741 0 011.575-.927 3.593 3.593 0 011.026-.144c.552 0 1.041.06 1.467.18.426.12.78.333 1.062.639.282.306.495.72.639 1.242.144.522.216 1.185.216 1.989V16h-1.404v-4.896c0-.996-.162-1.746-.486-2.25-.324-.504-.912-.756-1.764-.756-.312 0-.615.063-.909.189a3.137 3.137 0 00-.801.495c-.24.204-.45.441-.63.711-.18.27-.312.555-.396.855V16h-1.386v-5.85zm16.408-6.75h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm19.208-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm11.026-7.11h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM389.436 3.4h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.192 3.51c0-1.452.378-2.601 1.134-3.447.756-.846 1.836-1.269 3.24-1.269.756 0 1.407.123 1.953.369s.999.579 1.359.999c.36.42.627.918.801 1.494.174.576.261 1.194.261 1.854 0 .72-.096 1.371-.288 1.953a4.057 4.057 0 01-.846 1.485 3.738 3.738 0 01-1.377.945c-.546.222-1.167.333-1.863.333-.744 0-1.392-.123-1.944-.369a3.815 3.815 0 01-1.368-.999 4.073 4.073 0 01-.801-1.494 6.381 6.381 0 01-.261-1.854zm1.494 0c0 .42.051.84.153 1.26.102.42.267.798.495 1.134.228.336.525.606.891.81.366.204.813.306 1.341.306.96 0 1.683-.297 2.169-.891.486-.594.729-1.467.729-2.619 0-.432-.051-.855-.153-1.269a3.353 3.353 0 00-.504-1.125 2.656 2.656 0 00-.9-.81c-.366-.204-.813-.306-1.341-.306-.96 0-1.68.294-2.16.882-.48.588-.72 1.464-.72 2.628zm11.422-8.1h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm15.94 0h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm7.408-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm3.718.216h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm11.116-4.896v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm5.41 6.966a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896z"/></g></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="640" height="89" viewBox="0 0 640 89"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="path-1" d="M153 35h345v21H153z"/><mask id="mask-2" width="345" height="21" x="0" y="0" fill="#fff" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox"><use xlink:href="#path-1"/></mask></defs><g id="selection-range" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="range-example-p-1-3.svg"><use id="Rectangle" fill="#C9DCEA" stroke="#C9DCEA" stroke-dasharray="5,2" stroke-width="2" mask="url(#mask-2)" xlink:href="#path-1"/><path id="Path-Copy" stroke="#C06334" stroke-width="2" d="M48 57v11h102V57"/><path id="Path-Copy-2" stroke="#C06334" stroke-width="2" d="M154 57v11h154V57"/><text id="0" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="93" y="84">0</tspan></text><text id="1" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="226" y="84">1</tspan></text><text id="2" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="334" y="84">2</tspan></text><text id="3" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="428" y="84">3</tspan></text><path id="Path-Copy-3" stroke="#C06334" stroke-width="2" d="M312 57v11h53V57"/><path id="Path-Copy-4" stroke="#C06334" stroke-width="2" d="M369 57v11h128V57"/><g id="Group" fill="#AF6E24" fill-rule="nonzero" transform="translate(13 35)"><path id="<p>Example:<i>italic</i>and<b>bold</b></p>" d="M.81 10.51v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08L.81 10.51zm12.718-.36a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM37.326 3.4h7.398v1.332H38.82v4.122h5.454v1.332H38.82v4.482h5.994V16h-7.488V3.4zm14.428 7.992L48.28 7h1.8l2.592 3.384L55.336 7h1.62l-3.474 4.32 3.69 4.68h-1.728l-2.862-3.69L49.666 16h-1.638l3.726-4.608zm9.19-3.69a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM75.516 16v-5.994a9.51 9.51 0 00-.027-.729 2.442 2.442 0 00-.126-.63 1.01 1.01 0 00-.288-.441.734.734 0 00-.495-.162c-.408 0-.753.168-1.035.504-.282.336-.495.756-.639 1.26V16h-1.368V7h.936l.27 1.098h.072c.12-.18.237-.351.351-.513.114-.162.246-.303.396-.423.15-.12.327-.213.531-.279.204-.066.462-.099.774-.099.18 0 .366.027.558.081.192.054.369.138.531.252.162.114.303.267.423.459s.198.426.234.702c.276-.468.585-.834.927-1.098.342-.264.813-.396 1.413-.396.396 0 .717.066.963.198s.438.321.576.567c.138.246.234.54.288.882.054.342.081.723.081 1.143V16h-1.368V9.88c0-.252-.012-.489-.036-.711a2.268 2.268 0 00-.135-.585.967.967 0 00-.27-.396c-.114-.096-.267-.144-.459-.144-.42 0-.774.168-1.062.504-.288.336-.504.816-.648 1.44V16h-1.368zm8.812-5.85a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zM96.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm19.18 11.466a4.53 4.53 0 01-.765.54 5.645 5.645 0 01-.963.432 7.06 7.06 0 01-1.089.279 6.633 6.633 0 01-1.143.099c-.72 0-1.356-.111-1.908-.333a3.674 3.674 0 01-1.386-.954 4.158 4.158 0 01-.846-1.485c-.192-.576-.288-1.224-.288-1.944 0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.504 0 1.002.066 1.494.198a2.95 2.95 0 011.305.747c.378.366.669.87.873 1.512.204.642.276 1.473.216 2.493h-6.966c0 1.08.291 1.887.873 2.421.582.534 1.359.801 2.331.801.324 0 .645-.039.963-.117.318-.078.621-.171.909-.279.288-.108.543-.228.765-.36.222-.132.393-.252.513-.36l.558 1.026zm-3.798-6.894a4.86 4.86 0 00-1.125.126 2.564 2.564 0 00-.936.423c-.27.198-.492.456-.666.774-.174.318-.285.711-.333 1.179h5.598c-.06-.792-.315-1.407-.765-1.845-.45-.438-1.041-.657-1.773-.657zm10.27-.036c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm0 7.074c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm20.216-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zM155.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM178.89 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zM189.358 7h2.142V5.218l1.404-.396V7h4.806v1.206h-4.806v4.248c0 .876.213 1.524.639 1.944.426.42 1.035.63 1.827.63.54 0 1.011-.102 1.413-.306a7.614 7.614 0 001.089-.666l.468 1.062c-.42.336-.921.606-1.503.81a5.377 5.377 0 01-1.791.306c-.48 0-.933-.069-1.359-.207a3.12 3.12 0 01-1.125-.639 3.06 3.06 0 01-.774-1.107c-.192-.45-.288-.987-.288-1.611V8.206h-2.142V7zm13.186.702a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM214.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zM226.09 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm15.166 3.942a7.111 7.111 0 00-.891-.243 4.64 4.64 0 00-.945-.099c-1.176 0-2.052.276-2.628.828-.576.552-.864 1.428-.864 2.628 0 .528.084.999.252 1.413.168.414.408.765.72 1.053.312.288.687.51 1.125.666.438.156.921.234 1.449.234.564 0 1.113-.096 1.647-.288.534-.192.981-.444 1.341-.756l.63 1.044a5.095 5.095 0 01-.63.45 6.053 6.053 0 01-1.971.774 6.38 6.38 0 01-1.305.126c-.78 0-1.467-.111-2.061-.333a3.914 3.914 0 01-1.485-.954 4.083 4.083 0 01-.9-1.494 5.818 5.818 0 01-.306-1.935c0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.888 0 1.611.078 2.169.234.558.156 1.029.33 1.413.522l-.018.054v2.502h-1.296v-1.71zm4.708 2.124v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zM273.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm24.05-7.704a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zm8.884-4.806a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.412l.162 1.458h.09c.12-.204.279-.405.477-.603a3.741 3.741 0 011.575-.927 3.593 3.593 0 011.026-.144c.552 0 1.041.06 1.467.18.426.12.78.333 1.062.639.282.306.495.72.639 1.242.144.522.216 1.185.216 1.989V16h-1.404v-4.896c0-.996-.162-1.746-.486-2.25-.324-.504-.912-.756-1.764-.756-.312 0-.615.063-.909.189a3.137 3.137 0 00-.801.495c-.24.204-.45.441-.63.711-.18.27-.312.555-.396.855V16h-1.386v-5.85zm16.408-6.75h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm19.208-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm11.026-7.11h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM389.436 3.4h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.192 3.51c0-1.452.378-2.601 1.134-3.447.756-.846 1.836-1.269 3.24-1.269.756 0 1.407.123 1.953.369s.999.579 1.359.999c.36.42.627.918.801 1.494.174.576.261 1.194.261 1.854 0 .72-.096 1.371-.288 1.953a4.057 4.057 0 01-.846 1.485 3.738 3.738 0 01-1.377.945c-.546.222-1.167.333-1.863.333-.744 0-1.392-.123-1.944-.369a3.815 3.815 0 01-1.368-.999 4.073 4.073 0 01-.801-1.494 6.381 6.381 0 01-.261-1.854zm1.494 0c0 .42.051.84.153 1.26.102.42.267.798.495 1.134.228.336.525.606.891.81.366.204.813.306 1.341.306.96 0 1.683-.297 2.169-.891.486-.594.729-1.467.729-2.619 0-.432-.051-.855-.153-1.269a3.353 3.353 0 00-.504-1.125 2.656 2.656 0 00-.9-.81c-.366-.204-.813-.306-1.341-.306-.96 0-1.68.294-2.16.882-.48.588-.72 1.464-.72 2.628zm11.422-8.1h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm15.94 0h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm7.408-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm3.718.216h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm11.116-4.896v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm5.41 6.966a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896z"/></g></g></g></svg> \ No newline at end of file diff --git a/2-ui/99-ui-misc/02-selection-range/range-example-p-2-b-3-range.svg b/2-ui/99-ui-misc/02-selection-range/range-example-p-2-b-3-range.svg index 32843436d..f13c6d74a 100644 --- a/2-ui/99-ui-misc/02-selection-range/range-example-p-2-b-3-range.svg +++ b/2-ui/99-ui-misc/02-selection-range/range-example-p-2-b-3-range.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="683" height="229" viewBox="0 0 683 229"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="path-1" d="M183 54h367v21H183z"/><mask id="mask-2" width="367" height="21" x="0" y="0" fill="#fff" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox"><use xlink:href="#path-1"/></mask></defs><g id="selection-range" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="range-example-p-2-b-3-range.svg"><path id="Path" stroke="#C06334" stroke-width="2" d="M160 68v10h106V68"/><path id="Path-Copy-2" stroke="#C06334" stroke-width="2" d="M126 143v19h532v-19"/><path id="Path-Copy" stroke="#C06334" stroke-width="2" d="M514 70v10h50V70"/><use id="Rectangle" fill="#C9DCEA" stroke="#C9DCEA" stroke-dasharray="5,2" stroke-width="2" mask="url(#mask-2)" xlink:href="#path-1"/><text id="startContainer-(<p>." fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="10.3" y="118">startContainer</tspan> <tspan x=".7" y="136">(<p>.firstChild)</tspan></text><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M183 74l7 14h-6v16h-2V88h-6l7-14zM155 81l-6.166 14.387-3.876-4.581-15.312 12.957-.763.646-1.292-1.526.763-.646 15.312-12.958-3.875-4.58L155 81zM501 82l-6.166 14.387-3.876-4.581-15.312 12.957-.763.646-1.292-1.526.763-.646 15.312-12.958-3.875-4.58L501 82z"/><path id="Line-Copy-2" fill="#C06334" fill-rule="nonzero" d="M550 73l7 14h-6v16h-2V87h-6l7-14z"/><text id="startOffset-(=2)" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="170.2" y="118">startOffset</tspan> <tspan x="203.8" y="136">(=2)</tspan></text><text id="commonAncestorContai" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="316.1" y="181">commonAncestorContainer</tspan> <tspan x="402.5" y="199">(<p>)</tspan></text><text id="endContainer-(<b>.fi" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="388.9" y="117">endContainer</tspan> <tspan x="369.7" y="135">(<b>.firstChild)</tspan></text><text id="endOffset-(=3)" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="537.3" y="118">endOffset</tspan> <tspan x="561.3" y="136">(=3)</tspan></text><g id="<p>Example:-<i>itali" fill="#AF6E24" fill-rule="nonzero" transform="translate(125 54)"><path id="<p>Example:<i>italic</i>and<b>bold</b></p>" d="M.81 10.51v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08L.81 10.51zm12.718-.36a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM37.326 3.4h7.398v1.332H38.82v4.122h5.454v1.332H38.82v4.482h5.994V16h-7.488V3.4zm14.428 7.992L48.28 7h1.8l2.592 3.384L55.336 7h1.62l-3.474 4.32 3.69 4.68h-1.728l-2.862-3.69L49.666 16h-1.638l3.726-4.608zm9.19-3.69a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM75.516 16v-5.994a9.51 9.51 0 00-.027-.729 2.442 2.442 0 00-.126-.63 1.01 1.01 0 00-.288-.441.734.734 0 00-.495-.162c-.408 0-.753.168-1.035.504-.282.336-.495.756-.639 1.26V16h-1.368V7h.936l.27 1.098h.072c.12-.18.237-.351.351-.513.114-.162.246-.303.396-.423.15-.12.327-.213.531-.279.204-.066.462-.099.774-.099.18 0 .366.027.558.081.192.054.369.138.531.252.162.114.303.267.423.459s.198.426.234.702c.276-.468.585-.834.927-1.098.342-.264.813-.396 1.413-.396.396 0 .717.066.963.198s.438.321.576.567c.138.246.234.54.288.882.054.342.081.723.081 1.143V16h-1.368V9.88c0-.252-.012-.489-.036-.711a2.268 2.268 0 00-.135-.585.967.967 0 00-.27-.396c-.114-.096-.267-.144-.459-.144-.42 0-.774.168-1.062.504-.288.336-.504.816-.648 1.44V16h-1.368zm8.812-5.85a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zM96.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm19.18 11.466a4.53 4.53 0 01-.765.54 5.645 5.645 0 01-.963.432 7.06 7.06 0 01-1.089.279 6.633 6.633 0 01-1.143.099c-.72 0-1.356-.111-1.908-.333a3.674 3.674 0 01-1.386-.954 4.158 4.158 0 01-.846-1.485c-.192-.576-.288-1.224-.288-1.944 0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.504 0 1.002.066 1.494.198a2.95 2.95 0 011.305.747c.378.366.669.87.873 1.512.204.642.276 1.473.216 2.493h-6.966c0 1.08.291 1.887.873 2.421.582.534 1.359.801 2.331.801.324 0 .645-.039.963-.117.318-.078.621-.171.909-.279.288-.108.543-.228.765-.36.222-.132.393-.252.513-.36l.558 1.026zm-3.798-6.894a4.86 4.86 0 00-1.125.126 2.564 2.564 0 00-.936.423c-.27.198-.492.456-.666.774-.174.318-.285.711-.333 1.179h5.598c-.06-.792-.315-1.407-.765-1.845-.45-.438-1.041-.657-1.773-.657zm10.27-.036c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm0 7.074c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm20.216-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zM155.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM178.89 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zM189.358 7h2.142V5.218l1.404-.396V7h4.806v1.206h-4.806v4.248c0 .876.213 1.524.639 1.944.426.42 1.035.63 1.827.63.54 0 1.011-.102 1.413-.306a7.614 7.614 0 001.089-.666l.468 1.062c-.42.336-.921.606-1.503.81a5.377 5.377 0 01-1.791.306c-.48 0-.933-.069-1.359-.207a3.12 3.12 0 01-1.125-.639 3.06 3.06 0 01-.774-1.107c-.192-.45-.288-.987-.288-1.611V8.206h-2.142V7zm13.186.702a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM214.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zM226.09 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm15.166 3.942a7.111 7.111 0 00-.891-.243 4.64 4.64 0 00-.945-.099c-1.176 0-2.052.276-2.628.828-.576.552-.864 1.428-.864 2.628 0 .528.084.999.252 1.413.168.414.408.765.72 1.053.312.288.687.51 1.125.666.438.156.921.234 1.449.234.564 0 1.113-.096 1.647-.288.534-.192.981-.444 1.341-.756l.63 1.044a5.095 5.095 0 01-.63.45 6.053 6.053 0 01-1.971.774 6.38 6.38 0 01-1.305.126c-.78 0-1.467-.111-2.061-.333a3.914 3.914 0 01-1.485-.954 4.083 4.083 0 01-.9-1.494 5.818 5.818 0 01-.306-1.935c0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.888 0 1.611.078 2.169.234.558.156 1.029.33 1.413.522l-.018.054v2.502h-1.296v-1.71zm4.708 2.124v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zM273.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm24.05-7.704a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zm8.884-4.806a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.412l.162 1.458h.09c.12-.204.279-.405.477-.603a3.741 3.741 0 011.575-.927 3.593 3.593 0 011.026-.144c.552 0 1.041.06 1.467.18.426.12.78.333 1.062.639.282.306.495.72.639 1.242.144.522.216 1.185.216 1.989V16h-1.404v-4.896c0-.996-.162-1.746-.486-2.25-.324-.504-.912-.756-1.764-.756-.312 0-.615.063-.909.189a3.137 3.137 0 00-.801.495c-.24.204-.45.441-.63.711-.18.27-.312.555-.396.855V16h-1.386v-5.85zm16.408-6.75h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm19.208-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm11.026-7.11h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM389.436 3.4h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.192 3.51c0-1.452.378-2.601 1.134-3.447.756-.846 1.836-1.269 3.24-1.269.756 0 1.407.123 1.953.369s.999.579 1.359.999c.36.42.627.918.801 1.494.174.576.261 1.194.261 1.854 0 .72-.096 1.371-.288 1.953a4.057 4.057 0 01-.846 1.485 3.738 3.738 0 01-1.377.945c-.546.222-1.167.333-1.863.333-.744 0-1.392-.123-1.944-.369a3.815 3.815 0 01-1.368-.999 4.073 4.073 0 01-.801-1.494 6.381 6.381 0 01-.261-1.854zm1.494 0c0 .42.051.84.153 1.26.102.42.267.798.495 1.134.228.336.525.606.891.81.366.204.813.306 1.341.306.96 0 1.683-.297 2.169-.891.486-.594.729-1.467.729-2.619 0-.432-.051-.855-.153-1.269a3.353 3.353 0 00-.504-1.125 2.656 2.656 0 00-.9-.81c-.366-.204-.813-.306-1.341-.306-.96 0-1.68.294-2.16.882-.48.588-.72 1.464-.72 2.628zm11.422-8.1h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm15.94 0h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm7.408-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm3.718.216h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm11.116-4.896v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm5.41 6.966a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896z"/></g></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="683" height="229" viewBox="0 0 683 229"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="path-1" d="M183 54h367v21H183z"/><mask id="mask-2" width="367" height="21" x="0" y="0" fill="#fff" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox"><use xlink:href="#path-1"/></mask></defs><g id="selection-range" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="range-example-p-2-b-3-range.svg"><path id="Path" stroke="#C06334" stroke-width="2" d="M160 68v10h106V68"/><path id="Path-Copy-2" stroke="#C06334" stroke-width="2" d="M126 143v19h532v-19"/><path id="Path-Copy" stroke="#C06334" stroke-width="2" d="M514 70v10h50V70"/><use id="Rectangle" fill="#C9DCEA" stroke="#C9DCEA" stroke-dasharray="5,2" stroke-width="2" mask="url(#mask-2)" xlink:href="#path-1"/><text id="startContainer-(<p>." fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="10.3" y="118">startContainer</tspan> <tspan x=".7" y="136">(<p>.firstChild)</tspan></text><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M183 74l7 14h-6v16h-2V88h-6l7-14zM155 81l-6.166 14.387-3.876-4.581-15.312 12.957-.763.646-1.292-1.526.763-.646 15.312-12.958-3.875-4.58L155 81zM501 82l-6.166 14.387-3.876-4.581-15.312 12.957-.763.646-1.292-1.526.763-.646 15.312-12.958-3.875-4.58L501 82z"/><path id="Line-Copy-2" fill="#C06334" fill-rule="nonzero" d="M550 73l7 14h-6v16h-2V87h-6l7-14z"/><text id="startOffset-(=2)" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="170.2" y="118">startOffset</tspan> <tspan x="203.8" y="136">(=2)</tspan></text><text id="commonAncestorContai" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="316.1" y="181">commonAncestorContainer</tspan> <tspan x="402.5" y="199">(<p>)</tspan></text><text id="endContainer-(<b>.fi" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="388.9" y="117">endContainer</tspan> <tspan x="369.7" y="135">(<b>.firstChild)</tspan></text><text id="endOffset-(=3)" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="537.3" y="118">endOffset</tspan> <tspan x="561.3" y="136">(=3)</tspan></text><g id="Group" fill="#AF6E24" fill-rule="nonzero" transform="translate(125 54)"><path id="<p>Example:<i>italic</i>and<b>bold</b></p>" d="M.81 10.51v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08L.81 10.51zm12.718-.36a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM37.326 3.4h7.398v1.332H38.82v4.122h5.454v1.332H38.82v4.482h5.994V16h-7.488V3.4zm14.428 7.992L48.28 7h1.8l2.592 3.384L55.336 7h1.62l-3.474 4.32 3.69 4.68h-1.728l-2.862-3.69L49.666 16h-1.638l3.726-4.608zm9.19-3.69a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM75.516 16v-5.994a9.51 9.51 0 00-.027-.729 2.442 2.442 0 00-.126-.63 1.01 1.01 0 00-.288-.441.734.734 0 00-.495-.162c-.408 0-.753.168-1.035.504-.282.336-.495.756-.639 1.26V16h-1.368V7h.936l.27 1.098h.072c.12-.18.237-.351.351-.513.114-.162.246-.303.396-.423.15-.12.327-.213.531-.279.204-.066.462-.099.774-.099.18 0 .366.027.558.081.192.054.369.138.531.252.162.114.303.267.423.459s.198.426.234.702c.276-.468.585-.834.927-1.098.342-.264.813-.396 1.413-.396.396 0 .717.066.963.198s.438.321.576.567c.138.246.234.54.288.882.054.342.081.723.081 1.143V16h-1.368V9.88c0-.252-.012-.489-.036-.711a2.268 2.268 0 00-.135-.585.967.967 0 00-.27-.396c-.114-.096-.267-.144-.459-.144-.42 0-.774.168-1.062.504-.288.336-.504.816-.648 1.44V16h-1.368zm8.812-5.85a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zM96.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm19.18 11.466a4.53 4.53 0 01-.765.54 5.645 5.645 0 01-.963.432 7.06 7.06 0 01-1.089.279 6.633 6.633 0 01-1.143.099c-.72 0-1.356-.111-1.908-.333a3.674 3.674 0 01-1.386-.954 4.158 4.158 0 01-.846-1.485c-.192-.576-.288-1.224-.288-1.944 0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.504 0 1.002.066 1.494.198a2.95 2.95 0 011.305.747c.378.366.669.87.873 1.512.204.642.276 1.473.216 2.493h-6.966c0 1.08.291 1.887.873 2.421.582.534 1.359.801 2.331.801.324 0 .645-.039.963-.117.318-.078.621-.171.909-.279.288-.108.543-.228.765-.36.222-.132.393-.252.513-.36l.558 1.026zm-3.798-6.894a4.86 4.86 0 00-1.125.126 2.564 2.564 0 00-.936.423c-.27.198-.492.456-.666.774-.174.318-.285.711-.333 1.179h5.598c-.06-.792-.315-1.407-.765-1.845-.45-.438-1.041-.657-1.773-.657zm10.27-.036c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm0 7.074c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm20.216-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zM155.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM178.89 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zM189.358 7h2.142V5.218l1.404-.396V7h4.806v1.206h-4.806v4.248c0 .876.213 1.524.639 1.944.426.42 1.035.63 1.827.63.54 0 1.011-.102 1.413-.306a7.614 7.614 0 001.089-.666l.468 1.062c-.42.336-.921.606-1.503.81a5.377 5.377 0 01-1.791.306c-.48 0-.933-.069-1.359-.207a3.12 3.12 0 01-1.125-.639 3.06 3.06 0 01-.774-1.107c-.192-.45-.288-.987-.288-1.611V8.206h-2.142V7zm13.186.702a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM214.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zM226.09 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm15.166 3.942a7.111 7.111 0 00-.891-.243 4.64 4.64 0 00-.945-.099c-1.176 0-2.052.276-2.628.828-.576.552-.864 1.428-.864 2.628 0 .528.084.999.252 1.413.168.414.408.765.72 1.053.312.288.687.51 1.125.666.438.156.921.234 1.449.234.564 0 1.113-.096 1.647-.288.534-.192.981-.444 1.341-.756l.63 1.044a5.095 5.095 0 01-.63.45 6.053 6.053 0 01-1.971.774 6.38 6.38 0 01-1.305.126c-.78 0-1.467-.111-2.061-.333a3.914 3.914 0 01-1.485-.954 4.083 4.083 0 01-.9-1.494 5.818 5.818 0 01-.306-1.935c0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.888 0 1.611.078 2.169.234.558.156 1.029.33 1.413.522l-.018.054v2.502h-1.296v-1.71zm4.708 2.124v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zM273.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm24.05-7.704a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zm8.884-4.806a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.412l.162 1.458h.09c.12-.204.279-.405.477-.603a3.741 3.741 0 011.575-.927 3.593 3.593 0 011.026-.144c.552 0 1.041.06 1.467.18.426.12.78.333 1.062.639.282.306.495.72.639 1.242.144.522.216 1.185.216 1.989V16h-1.404v-4.896c0-.996-.162-1.746-.486-2.25-.324-.504-.912-.756-1.764-.756-.312 0-.615.063-.909.189a3.137 3.137 0 00-.801.495c-.24.204-.45.441-.63.711-.18.27-.312.555-.396.855V16h-1.386v-5.85zm16.408-6.75h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm19.208-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm11.026-7.11h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM389.436 3.4h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.192 3.51c0-1.452.378-2.601 1.134-3.447.756-.846 1.836-1.269 3.24-1.269.756 0 1.407.123 1.953.369s.999.579 1.359.999c.36.42.627.918.801 1.494.174.576.261 1.194.261 1.854 0 .72-.096 1.371-.288 1.953a4.057 4.057 0 01-.846 1.485 3.738 3.738 0 01-1.377.945c-.546.222-1.167.333-1.863.333-.744 0-1.392-.123-1.944-.369a3.815 3.815 0 01-1.368-.999 4.073 4.073 0 01-.801-1.494 6.381 6.381 0 01-.261-1.854zm1.494 0c0 .42.051.84.153 1.26.102.42.267.798.495 1.134.228.336.525.606.891.81.366.204.813.306 1.341.306.96 0 1.683-.297 2.169-.891.486-.594.729-1.467.729-2.619 0-.432-.051-.855-.153-1.269a3.353 3.353 0 00-.504-1.125 2.656 2.656 0 00-.9-.81c-.366-.204-.813-.306-1.341-.306-.96 0-1.68.294-2.16.882-.48.588-.72 1.464-.72 2.628zm11.422-8.1h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm15.94 0h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm7.408-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm3.718.216h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm11.116-4.896v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm5.41 6.966a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896z"/></g></g></g></svg> \ No newline at end of file diff --git a/2-ui/99-ui-misc/02-selection-range/range-example-p-2-b-3.svg b/2-ui/99-ui-misc/02-selection-range/range-example-p-2-b-3.svg index 859f755ce..4bf5b00b0 100644 --- a/2-ui/99-ui-misc/02-selection-range/range-example-p-2-b-3.svg +++ b/2-ui/99-ui-misc/02-selection-range/range-example-p-2-b-3.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="640" height="89" viewBox="0 0 640 89"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="path-1" d="M71 35h367v21H71z"/><mask id="mask-2" width="367" height="21" x="0" y="0" fill="#fff" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox"><use xlink:href="#path-1"/></mask></defs><g id="selection-range" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="range-example-p-2-b-3.svg"><use id="Rectangle" fill="#C9DCEA" stroke="#C9DCEA" stroke-dasharray="5,2" stroke-width="2" mask="url(#mask-2)" xlink:href="#path-1"/><path id="Path-Copy" stroke="#C06334" stroke-width="2" d="M48 57v11h102V57"/><path id="Path-Copy-2" stroke="#C06334" stroke-width="2" d="M154 57v11h154V57"/><text id="0" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="93" y="84">0</tspan></text><text id="1" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="226" y="84">1</tspan></text><text id="2" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="334" y="84">2</tspan></text><text id="3" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="428" y="84">3</tspan></text><path id="Path-Copy-3" stroke="#C06334" stroke-width="2" d="M312 57v11h53V57"/><path id="Path-Copy-4" stroke="#C06334" stroke-width="2" d="M369 57v11h128V57"/><g id="<p>Example:-<i>itali" fill="#AF6E24" fill-rule="nonzero" transform="translate(13 35)"><path id="<p>Example:<i>italic</i>and<b>bold</b></p>" d="M.81 10.51v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08L.81 10.51zm12.718-.36a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM37.326 3.4h7.398v1.332H38.82v4.122h5.454v1.332H38.82v4.482h5.994V16h-7.488V3.4zm14.428 7.992L48.28 7h1.8l2.592 3.384L55.336 7h1.62l-3.474 4.32 3.69 4.68h-1.728l-2.862-3.69L49.666 16h-1.638l3.726-4.608zm9.19-3.69a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM75.516 16v-5.994a9.51 9.51 0 00-.027-.729 2.442 2.442 0 00-.126-.63 1.01 1.01 0 00-.288-.441.734.734 0 00-.495-.162c-.408 0-.753.168-1.035.504-.282.336-.495.756-.639 1.26V16h-1.368V7h.936l.27 1.098h.072c.12-.18.237-.351.351-.513.114-.162.246-.303.396-.423.15-.12.327-.213.531-.279.204-.066.462-.099.774-.099.18 0 .366.027.558.081.192.054.369.138.531.252.162.114.303.267.423.459s.198.426.234.702c.276-.468.585-.834.927-1.098.342-.264.813-.396 1.413-.396.396 0 .717.066.963.198s.438.321.576.567c.138.246.234.54.288.882.054.342.081.723.081 1.143V16h-1.368V9.88c0-.252-.012-.489-.036-.711a2.268 2.268 0 00-.135-.585.967.967 0 00-.27-.396c-.114-.096-.267-.144-.459-.144-.42 0-.774.168-1.062.504-.288.336-.504.816-.648 1.44V16h-1.368zm8.812-5.85a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zM96.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm19.18 11.466a4.53 4.53 0 01-.765.54 5.645 5.645 0 01-.963.432 7.06 7.06 0 01-1.089.279 6.633 6.633 0 01-1.143.099c-.72 0-1.356-.111-1.908-.333a3.674 3.674 0 01-1.386-.954 4.158 4.158 0 01-.846-1.485c-.192-.576-.288-1.224-.288-1.944 0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.504 0 1.002.066 1.494.198a2.95 2.95 0 011.305.747c.378.366.669.87.873 1.512.204.642.276 1.473.216 2.493h-6.966c0 1.08.291 1.887.873 2.421.582.534 1.359.801 2.331.801.324 0 .645-.039.963-.117.318-.078.621-.171.909-.279.288-.108.543-.228.765-.36.222-.132.393-.252.513-.36l.558 1.026zm-3.798-6.894a4.86 4.86 0 00-1.125.126 2.564 2.564 0 00-.936.423c-.27.198-.492.456-.666.774-.174.318-.285.711-.333 1.179h5.598c-.06-.792-.315-1.407-.765-1.845-.45-.438-1.041-.657-1.773-.657zm10.27-.036c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm0 7.074c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm20.216-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zM155.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM178.89 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zM189.358 7h2.142V5.218l1.404-.396V7h4.806v1.206h-4.806v4.248c0 .876.213 1.524.639 1.944.426.42 1.035.63 1.827.63.54 0 1.011-.102 1.413-.306a7.614 7.614 0 001.089-.666l.468 1.062c-.42.336-.921.606-1.503.81a5.377 5.377 0 01-1.791.306c-.48 0-.933-.069-1.359-.207a3.12 3.12 0 01-1.125-.639 3.06 3.06 0 01-.774-1.107c-.192-.45-.288-.987-.288-1.611V8.206h-2.142V7zm13.186.702a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM214.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zM226.09 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm15.166 3.942a7.111 7.111 0 00-.891-.243 4.64 4.64 0 00-.945-.099c-1.176 0-2.052.276-2.628.828-.576.552-.864 1.428-.864 2.628 0 .528.084.999.252 1.413.168.414.408.765.72 1.053.312.288.687.51 1.125.666.438.156.921.234 1.449.234.564 0 1.113-.096 1.647-.288.534-.192.981-.444 1.341-.756l.63 1.044a5.095 5.095 0 01-.63.45 6.053 6.053 0 01-1.971.774 6.38 6.38 0 01-1.305.126c-.78 0-1.467-.111-2.061-.333a3.914 3.914 0 01-1.485-.954 4.083 4.083 0 01-.9-1.494 5.818 5.818 0 01-.306-1.935c0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.888 0 1.611.078 2.169.234.558.156 1.029.33 1.413.522l-.018.054v2.502h-1.296v-1.71zm4.708 2.124v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zM273.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm24.05-7.704a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zm8.884-4.806a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.412l.162 1.458h.09c.12-.204.279-.405.477-.603a3.741 3.741 0 011.575-.927 3.593 3.593 0 011.026-.144c.552 0 1.041.06 1.467.18.426.12.78.333 1.062.639.282.306.495.72.639 1.242.144.522.216 1.185.216 1.989V16h-1.404v-4.896c0-.996-.162-1.746-.486-2.25-.324-.504-.912-.756-1.764-.756-.312 0-.615.063-.909.189a3.137 3.137 0 00-.801.495c-.24.204-.45.441-.63.711-.18.27-.312.555-.396.855V16h-1.386v-5.85zm16.408-6.75h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm19.208-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm11.026-7.11h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM389.436 3.4h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.192 3.51c0-1.452.378-2.601 1.134-3.447.756-.846 1.836-1.269 3.24-1.269.756 0 1.407.123 1.953.369s.999.579 1.359.999c.36.42.627.918.801 1.494.174.576.261 1.194.261 1.854 0 .72-.096 1.371-.288 1.953a4.057 4.057 0 01-.846 1.485 3.738 3.738 0 01-1.377.945c-.546.222-1.167.333-1.863.333-.744 0-1.392-.123-1.944-.369a3.815 3.815 0 01-1.368-.999 4.073 4.073 0 01-.801-1.494 6.381 6.381 0 01-.261-1.854zm1.494 0c0 .42.051.84.153 1.26.102.42.267.798.495 1.134.228.336.525.606.891.81.366.204.813.306 1.341.306.96 0 1.683-.297 2.169-.891.486-.594.729-1.467.729-2.619 0-.432-.051-.855-.153-1.269a3.353 3.353 0 00-.504-1.125 2.656 2.656 0 00-.9-.81c-.366-.204-.813-.306-1.341-.306-.96 0-1.68.294-2.16.882-.48.588-.72 1.464-.72 2.628zm11.422-8.1h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm15.94 0h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm7.408-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm3.718.216h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm11.116-4.896v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm5.41 6.966a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896z"/></g></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="640" height="89" viewBox="0 0 640 89"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="path-1" d="M71 35h367v21H71z"/><mask id="mask-2" width="367" height="21" x="0" y="0" fill="#fff" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox"><use xlink:href="#path-1"/></mask></defs><g id="selection-range" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="range-example-p-2-b-3.svg"><use id="Rectangle" fill="#C9DCEA" stroke="#C9DCEA" stroke-dasharray="5,2" stroke-width="2" mask="url(#mask-2)" xlink:href="#path-1"/><path id="Path-Copy" stroke="#C06334" stroke-width="2" d="M48 57v11h102V57"/><path id="Path-Copy-2" stroke="#C06334" stroke-width="2" d="M154 57v11h154V57"/><text id="0" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="93" y="84">0</tspan></text><text id="1" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="226" y="84">1</tspan></text><text id="2" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="334" y="84">2</tspan></text><text id="3" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="428" y="84">3</tspan></text><path id="Path-Copy-3" stroke="#C06334" stroke-width="2" d="M312 57v11h53V57"/><path id="Path-Copy-4" stroke="#C06334" stroke-width="2" d="M369 57v11h128V57"/><g id="Group" fill="#AF6E24" fill-rule="nonzero" transform="translate(13 35)"><path id="<p>Example:<i>italic</i>and<b>bold</b></p>" d="M.81 10.51v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08L.81 10.51zm12.718-.36a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM37.326 3.4h7.398v1.332H38.82v4.122h5.454v1.332H38.82v4.482h5.994V16h-7.488V3.4zm14.428 7.992L48.28 7h1.8l2.592 3.384L55.336 7h1.62l-3.474 4.32 3.69 4.68h-1.728l-2.862-3.69L49.666 16h-1.638l3.726-4.608zm9.19-3.69a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM75.516 16v-5.994a9.51 9.51 0 00-.027-.729 2.442 2.442 0 00-.126-.63 1.01 1.01 0 00-.288-.441.734.734 0 00-.495-.162c-.408 0-.753.168-1.035.504-.282.336-.495.756-.639 1.26V16h-1.368V7h.936l.27 1.098h.072c.12-.18.237-.351.351-.513.114-.162.246-.303.396-.423.15-.12.327-.213.531-.279.204-.066.462-.099.774-.099.18 0 .366.027.558.081.192.054.369.138.531.252.162.114.303.267.423.459s.198.426.234.702c.276-.468.585-.834.927-1.098.342-.264.813-.396 1.413-.396.396 0 .717.066.963.198s.438.321.576.567c.138.246.234.54.288.882.054.342.081.723.081 1.143V16h-1.368V9.88c0-.252-.012-.489-.036-.711a2.268 2.268 0 00-.135-.585.967.967 0 00-.27-.396c-.114-.096-.267-.144-.459-.144-.42 0-.774.168-1.062.504-.288.336-.504.816-.648 1.44V16h-1.368zm8.812-5.85a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zM96.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm19.18 11.466a4.53 4.53 0 01-.765.54 5.645 5.645 0 01-.963.432 7.06 7.06 0 01-1.089.279 6.633 6.633 0 01-1.143.099c-.72 0-1.356-.111-1.908-.333a3.674 3.674 0 01-1.386-.954 4.158 4.158 0 01-.846-1.485c-.192-.576-.288-1.224-.288-1.944 0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.504 0 1.002.066 1.494.198a2.95 2.95 0 011.305.747c.378.366.669.87.873 1.512.204.642.276 1.473.216 2.493h-6.966c0 1.08.291 1.887.873 2.421.582.534 1.359.801 2.331.801.324 0 .645-.039.963-.117.318-.078.621-.171.909-.279.288-.108.543-.228.765-.36.222-.132.393-.252.513-.36l.558 1.026zm-3.798-6.894a4.86 4.86 0 00-1.125.126 2.564 2.564 0 00-.936.423c-.27.198-.492.456-.666.774-.174.318-.285.711-.333 1.179h5.598c-.06-.792-.315-1.407-.765-1.845-.45-.438-1.041-.657-1.773-.657zm10.27-.036c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm0 7.074c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm20.216-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zM155.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM178.89 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zM189.358 7h2.142V5.218l1.404-.396V7h4.806v1.206h-4.806v4.248c0 .876.213 1.524.639 1.944.426.42 1.035.63 1.827.63.54 0 1.011-.102 1.413-.306a7.614 7.614 0 001.089-.666l.468 1.062c-.42.336-.921.606-1.503.81a5.377 5.377 0 01-1.791.306c-.48 0-.933-.069-1.359-.207a3.12 3.12 0 01-1.125-.639 3.06 3.06 0 01-.774-1.107c-.192-.45-.288-.987-.288-1.611V8.206h-2.142V7zm13.186.702a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM214.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zM226.09 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm15.166 3.942a7.111 7.111 0 00-.891-.243 4.64 4.64 0 00-.945-.099c-1.176 0-2.052.276-2.628.828-.576.552-.864 1.428-.864 2.628 0 .528.084.999.252 1.413.168.414.408.765.72 1.053.312.288.687.51 1.125.666.438.156.921.234 1.449.234.564 0 1.113-.096 1.647-.288.534-.192.981-.444 1.341-.756l.63 1.044a5.095 5.095 0 01-.63.45 6.053 6.053 0 01-1.971.774 6.38 6.38 0 01-1.305.126c-.78 0-1.467-.111-2.061-.333a3.914 3.914 0 01-1.485-.954 4.083 4.083 0 01-.9-1.494 5.818 5.818 0 01-.306-1.935c0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.888 0 1.611.078 2.169.234.558.156 1.029.33 1.413.522l-.018.054v2.502h-1.296v-1.71zm4.708 2.124v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zM273.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm24.05-7.704a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zm8.884-4.806a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.412l.162 1.458h.09c.12-.204.279-.405.477-.603a3.741 3.741 0 011.575-.927 3.593 3.593 0 011.026-.144c.552 0 1.041.06 1.467.18.426.12.78.333 1.062.639.282.306.495.72.639 1.242.144.522.216 1.185.216 1.989V16h-1.404v-4.896c0-.996-.162-1.746-.486-2.25-.324-.504-.912-.756-1.764-.756-.312 0-.615.063-.909.189a3.137 3.137 0 00-.801.495c-.24.204-.45.441-.63.711-.18.27-.312.555-.396.855V16h-1.386v-5.85zm16.408-6.75h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm19.208-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm11.026-7.11h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM389.436 3.4h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.192 3.51c0-1.452.378-2.601 1.134-3.447.756-.846 1.836-1.269 3.24-1.269.756 0 1.407.123 1.953.369s.999.579 1.359.999c.36.42.627.918.801 1.494.174.576.261 1.194.261 1.854 0 .72-.096 1.371-.288 1.953a4.057 4.057 0 01-.846 1.485 3.738 3.738 0 01-1.377.945c-.546.222-1.167.333-1.863.333-.744 0-1.392-.123-1.944-.369a3.815 3.815 0 01-1.368-.999 4.073 4.073 0 01-.801-1.494 6.381 6.381 0 01-.261-1.854zm1.494 0c0 .42.051.84.153 1.26.102.42.267.798.495 1.134.228.336.525.606.891.81.366.204.813.306 1.341.306.96 0 1.683-.297 2.169-.891.486-.594.729-1.467.729-2.619 0-.432-.051-.855-.153-1.269a3.353 3.353 0 00-.504-1.125 2.656 2.656 0 00-.9-.81c-.366-.204-.813-.306-1.341-.306-.96 0-1.68.294-2.16.882-.48.588-.72 1.464-.72 2.628zm11.422-8.1h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm15.94 0h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm7.408-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm3.718.216h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm11.116-4.896v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm5.41 6.966a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896z"/></g></g></g></svg> \ No newline at end of file diff --git a/2-ui/99-ui-misc/02-selection-range/selection-direction-backward.svg b/2-ui/99-ui-misc/02-selection-range/selection-direction-backward.svg index 85615d38f..6399f9d5e 100644 --- a/2-ui/99-ui-misc/02-selection-range/selection-direction-backward.svg +++ b/2-ui/99-ui-misc/02-selection-range/selection-direction-backward.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="559" height="94" viewBox="0 0 559 94"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="path-1" d="M47 36h262v21H47z"/><mask id="mask-2" width="262" height="21" x="0" y="0" fill="#fff" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox"><use xlink:href="#path-1"/></mask></defs><g id="selection-range" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="selection-direction-backward.svg"><use id="Rectangle" fill="#C9DCEA" stroke="#C9DCEA" stroke-dasharray="5,2" stroke-width="2" mask="url(#mask-2)" xlink:href="#path-1"/><text id="focus" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="25" y="80">focus</tspan></text><text id="anchor" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="277.2" y="80">anchor</tspan></text><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M62 21v6h247v2H62v6l-14-7 14-7z"/><g id="<p>Example:-<i>itali" fill="#AF6E24" fill-rule="nonzero" transform="translate(13 37)"><path id="<p>Example:<i>italic</i>and<b>bold</b></p>" d="M.81 10.51v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08L.81 10.51zm12.718-.36a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM37.326 3.4h7.398v1.332H38.82v4.122h5.454v1.332H38.82v4.482h5.994V16h-7.488V3.4zm14.428 7.992L48.28 7h1.8l2.592 3.384L55.336 7h1.62l-3.474 4.32 3.69 4.68h-1.728l-2.862-3.69L49.666 16h-1.638l3.726-4.608zm9.19-3.69a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM75.516 16v-5.994a9.51 9.51 0 00-.027-.729 2.442 2.442 0 00-.126-.63 1.01 1.01 0 00-.288-.441.734.734 0 00-.495-.162c-.408 0-.753.168-1.035.504-.282.336-.495.756-.639 1.26V16h-1.368V7h.936l.27 1.098h.072c.12-.18.237-.351.351-.513.114-.162.246-.303.396-.423.15-.12.327-.213.531-.279.204-.066.462-.099.774-.099.18 0 .366.027.558.081.192.054.369.138.531.252.162.114.303.267.423.459s.198.426.234.702c.276-.468.585-.834.927-1.098.342-.264.813-.396 1.413-.396.396 0 .717.066.963.198s.438.321.576.567c.138.246.234.54.288.882.054.342.081.723.081 1.143V16h-1.368V9.88c0-.252-.012-.489-.036-.711a2.268 2.268 0 00-.135-.585.967.967 0 00-.27-.396c-.114-.096-.267-.144-.459-.144-.42 0-.774.168-1.062.504-.288.336-.504.816-.648 1.44V16h-1.368zm8.812-5.85a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zM96.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm19.18 11.466a4.53 4.53 0 01-.765.54 5.645 5.645 0 01-.963.432 7.06 7.06 0 01-1.089.279 6.633 6.633 0 01-1.143.099c-.72 0-1.356-.111-1.908-.333a3.674 3.674 0 01-1.386-.954 4.158 4.158 0 01-.846-1.485c-.192-.576-.288-1.224-.288-1.944 0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.504 0 1.002.066 1.494.198a2.95 2.95 0 011.305.747c.378.366.669.87.873 1.512.204.642.276 1.473.216 2.493h-6.966c0 1.08.291 1.887.873 2.421.582.534 1.359.801 2.331.801.324 0 .645-.039.963-.117.318-.078.621-.171.909-.279.288-.108.543-.228.765-.36.222-.132.393-.252.513-.36l.558 1.026zm-3.798-6.894a4.86 4.86 0 00-1.125.126 2.564 2.564 0 00-.936.423c-.27.198-.492.456-.666.774-.174.318-.285.711-.333 1.179h5.598c-.06-.792-.315-1.407-.765-1.845-.45-.438-1.041-.657-1.773-.657zm10.27-.036c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm0 7.074c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm20.216-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zM155.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM178.89 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zM189.358 7h2.142V5.218l1.404-.396V7h4.806v1.206h-4.806v4.248c0 .876.213 1.524.639 1.944.426.42 1.035.63 1.827.63.54 0 1.011-.102 1.413-.306a7.614 7.614 0 001.089-.666l.468 1.062c-.42.336-.921.606-1.503.81a5.377 5.377 0 01-1.791.306c-.48 0-.933-.069-1.359-.207a3.12 3.12 0 01-1.125-.639 3.06 3.06 0 01-.774-1.107c-.192-.45-.288-.987-.288-1.611V8.206h-2.142V7zm13.186.702a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM214.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zM226.09 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm15.166 3.942a7.111 7.111 0 00-.891-.243 4.64 4.64 0 00-.945-.099c-1.176 0-2.052.276-2.628.828-.576.552-.864 1.428-.864 2.628 0 .528.084.999.252 1.413.168.414.408.765.72 1.053.312.288.687.51 1.125.666.438.156.921.234 1.449.234.564 0 1.113-.096 1.647-.288.534-.192.981-.444 1.341-.756l.63 1.044a5.095 5.095 0 01-.63.45 6.053 6.053 0 01-1.971.774 6.38 6.38 0 01-1.305.126c-.78 0-1.467-.111-2.061-.333a3.914 3.914 0 01-1.485-.954 4.083 4.083 0 01-.9-1.494 5.818 5.818 0 01-.306-1.935c0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.888 0 1.611.078 2.169.234.558.156 1.029.33 1.413.522l-.018.054v2.502h-1.296v-1.71zm4.708 2.124v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zM273.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm24.05-7.704a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zm8.884-4.806a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.412l.162 1.458h.09c.12-.204.279-.405.477-.603a3.741 3.741 0 011.575-.927 3.593 3.593 0 011.026-.144c.552 0 1.041.06 1.467.18.426.12.78.333 1.062.639.282.306.495.72.639 1.242.144.522.216 1.185.216 1.989V16h-1.404v-4.896c0-.996-.162-1.746-.486-2.25-.324-.504-.912-.756-1.764-.756-.312 0-.615.063-.909.189a3.137 3.137 0 00-.801.495c-.24.204-.45.441-.63.711-.18.27-.312.555-.396.855V16h-1.386v-5.85zm16.408-6.75h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm19.208-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm11.026-7.11h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM389.436 3.4h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.192 3.51c0-1.452.378-2.601 1.134-3.447.756-.846 1.836-1.269 3.24-1.269.756 0 1.407.123 1.953.369s.999.579 1.359.999c.36.42.627.918.801 1.494.174.576.261 1.194.261 1.854 0 .72-.096 1.371-.288 1.953a4.057 4.057 0 01-.846 1.485 3.738 3.738 0 01-1.377.945c-.546.222-1.167.333-1.863.333-.744 0-1.392-.123-1.944-.369a3.815 3.815 0 01-1.368-.999 4.073 4.073 0 01-.801-1.494 6.381 6.381 0 01-.261-1.854zm1.494 0c0 .42.051.84.153 1.26.102.42.267.798.495 1.134.228.336.525.606.891.81.366.204.813.306 1.341.306.96 0 1.683-.297 2.169-.891.486-.594.729-1.467.729-2.619 0-.432-.051-.855-.153-1.269a3.353 3.353 0 00-.504-1.125 2.656 2.656 0 00-.9-.81c-.366-.204-.813-.306-1.341-.306-.96 0-1.68.294-2.16.882-.48.588-.72 1.464-.72 2.628zm11.422-8.1h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm15.94 0h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm7.408-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm3.718.216h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm11.116-4.896v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm5.41 6.966a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896z"/></g><text id="mouse-move-direction" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="93" y="22">mouse move direction</tspan></text></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="559" height="94" viewBox="0 0 559 94"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="path-1" d="M47 36h262v21H47z"/><mask id="mask-2" width="262" height="21" x="0" y="0" fill="#fff" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox"><use xlink:href="#path-1"/></mask></defs><g id="selection-range" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="selection-direction-backward.svg"><use id="Rectangle" fill="#C9DCEA" stroke="#C9DCEA" stroke-dasharray="5,2" stroke-width="2" mask="url(#mask-2)" xlink:href="#path-1"/><text id="focus" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="25" y="80">focus</tspan></text><text id="anchor" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="277.2" y="80">anchor</tspan></text><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M62 21v6h247v2H62v6l-14-7 14-7z"/><g id="Group" fill="#AF6E24" fill-rule="nonzero" transform="translate(13 37)"><path id="<p>Example:<i>italic</i>and<b>bold</b></p>" d="M.81 10.51v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08L.81 10.51zm12.718-.36a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM37.326 3.4h7.398v1.332H38.82v4.122h5.454v1.332H38.82v4.482h5.994V16h-7.488V3.4zm14.428 7.992L48.28 7h1.8l2.592 3.384L55.336 7h1.62l-3.474 4.32 3.69 4.68h-1.728l-2.862-3.69L49.666 16h-1.638l3.726-4.608zm9.19-3.69a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM75.516 16v-5.994a9.51 9.51 0 00-.027-.729 2.442 2.442 0 00-.126-.63 1.01 1.01 0 00-.288-.441.734.734 0 00-.495-.162c-.408 0-.753.168-1.035.504-.282.336-.495.756-.639 1.26V16h-1.368V7h.936l.27 1.098h.072c.12-.18.237-.351.351-.513.114-.162.246-.303.396-.423.15-.12.327-.213.531-.279.204-.066.462-.099.774-.099.18 0 .366.027.558.081.192.054.369.138.531.252.162.114.303.267.423.459s.198.426.234.702c.276-.468.585-.834.927-1.098.342-.264.813-.396 1.413-.396.396 0 .717.066.963.198s.438.321.576.567c.138.246.234.54.288.882.054.342.081.723.081 1.143V16h-1.368V9.88c0-.252-.012-.489-.036-.711a2.268 2.268 0 00-.135-.585.967.967 0 00-.27-.396c-.114-.096-.267-.144-.459-.144-.42 0-.774.168-1.062.504-.288.336-.504.816-.648 1.44V16h-1.368zm8.812-5.85a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zM96.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm19.18 11.466a4.53 4.53 0 01-.765.54 5.645 5.645 0 01-.963.432 7.06 7.06 0 01-1.089.279 6.633 6.633 0 01-1.143.099c-.72 0-1.356-.111-1.908-.333a3.674 3.674 0 01-1.386-.954 4.158 4.158 0 01-.846-1.485c-.192-.576-.288-1.224-.288-1.944 0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.504 0 1.002.066 1.494.198a2.95 2.95 0 011.305.747c.378.366.669.87.873 1.512.204.642.276 1.473.216 2.493h-6.966c0 1.08.291 1.887.873 2.421.582.534 1.359.801 2.331.801.324 0 .645-.039.963-.117.318-.078.621-.171.909-.279.288-.108.543-.228.765-.36.222-.132.393-.252.513-.36l.558 1.026zm-3.798-6.894a4.86 4.86 0 00-1.125.126 2.564 2.564 0 00-.936.423c-.27.198-.492.456-.666.774-.174.318-.285.711-.333 1.179h5.598c-.06-.792-.315-1.407-.765-1.845-.45-.438-1.041-.657-1.773-.657zm10.27-.036c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm0 7.074c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm20.216-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zM155.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM178.89 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zM189.358 7h2.142V5.218l1.404-.396V7h4.806v1.206h-4.806v4.248c0 .876.213 1.524.639 1.944.426.42 1.035.63 1.827.63.54 0 1.011-.102 1.413-.306a7.614 7.614 0 001.089-.666l.468 1.062c-.42.336-.921.606-1.503.81a5.377 5.377 0 01-1.791.306c-.48 0-.933-.069-1.359-.207a3.12 3.12 0 01-1.125-.639 3.06 3.06 0 01-.774-1.107c-.192-.45-.288-.987-.288-1.611V8.206h-2.142V7zm13.186.702a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM214.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zM226.09 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm15.166 3.942a7.111 7.111 0 00-.891-.243 4.64 4.64 0 00-.945-.099c-1.176 0-2.052.276-2.628.828-.576.552-.864 1.428-.864 2.628 0 .528.084.999.252 1.413.168.414.408.765.72 1.053.312.288.687.51 1.125.666.438.156.921.234 1.449.234.564 0 1.113-.096 1.647-.288.534-.192.981-.444 1.341-.756l.63 1.044a5.095 5.095 0 01-.63.45 6.053 6.053 0 01-1.971.774 6.38 6.38 0 01-1.305.126c-.78 0-1.467-.111-2.061-.333a3.914 3.914 0 01-1.485-.954 4.083 4.083 0 01-.9-1.494 5.818 5.818 0 01-.306-1.935c0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.888 0 1.611.078 2.169.234.558.156 1.029.33 1.413.522l-.018.054v2.502h-1.296v-1.71zm4.708 2.124v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zM273.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm24.05-7.704a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zm8.884-4.806a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.412l.162 1.458h.09c.12-.204.279-.405.477-.603a3.741 3.741 0 011.575-.927 3.593 3.593 0 011.026-.144c.552 0 1.041.06 1.467.18.426.12.78.333 1.062.639.282.306.495.72.639 1.242.144.522.216 1.185.216 1.989V16h-1.404v-4.896c0-.996-.162-1.746-.486-2.25-.324-.504-.912-.756-1.764-.756-.312 0-.615.063-.909.189a3.137 3.137 0 00-.801.495c-.24.204-.45.441-.63.711-.18.27-.312.555-.396.855V16h-1.386v-5.85zm16.408-6.75h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm19.208-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm11.026-7.11h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM389.436 3.4h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.192 3.51c0-1.452.378-2.601 1.134-3.447.756-.846 1.836-1.269 3.24-1.269.756 0 1.407.123 1.953.369s.999.579 1.359.999c.36.42.627.918.801 1.494.174.576.261 1.194.261 1.854 0 .72-.096 1.371-.288 1.953a4.057 4.057 0 01-.846 1.485 3.738 3.738 0 01-1.377.945c-.546.222-1.167.333-1.863.333-.744 0-1.392-.123-1.944-.369a3.815 3.815 0 01-1.368-.999 4.073 4.073 0 01-.801-1.494 6.381 6.381 0 01-.261-1.854zm1.494 0c0 .42.051.84.153 1.26.102.42.267.798.495 1.134.228.336.525.606.891.81.366.204.813.306 1.341.306.96 0 1.683-.297 2.169-.891.486-.594.729-1.467.729-2.619 0-.432-.051-.855-.153-1.269a3.353 3.353 0 00-.504-1.125 2.656 2.656 0 00-.9-.81c-.366-.204-.813-.306-1.341-.306-.96 0-1.68.294-2.16.882-.48.588-.72 1.464-.72 2.628zm11.422-8.1h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm15.94 0h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm7.408-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm3.718.216h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm11.116-4.896v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm5.41 6.966a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896z"/></g><text id="mouse-move-direction" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="93" y="22">mouse move direction</tspan></text></g></g></svg> \ No newline at end of file diff --git a/2-ui/99-ui-misc/02-selection-range/selection-direction-forward.svg b/2-ui/99-ui-misc/02-selection-range/selection-direction-forward.svg index 511b00a26..03c6fc5c6 100644 --- a/2-ui/99-ui-misc/02-selection-range/selection-direction-forward.svg +++ b/2-ui/99-ui-misc/02-selection-range/selection-direction-forward.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="563" height="94" viewBox="0 0 563 94"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="path-1" d="M47 38h262v21H47z"/><mask id="mask-2" width="262" height="21" x="0" y="0" fill="#fff" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox"><use xlink:href="#path-1"/></mask></defs><g id="selection-range" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="selection-direction-forward.svg"><text id="anchor" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="18.2" y="78">anchor</tspan></text><text id="focus" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="285" y="78">focus</tspan></text><use id="Rectangle" fill="#C9DCEA" stroke="#C9DCEA" stroke-dasharray="5,2" stroke-width="2" mask="url(#mask-2)" xlink:href="#path-1"/><g id="<p>Example:-<i>itali" fill="#AF6E24" fill-rule="nonzero" transform="translate(13 39)"><path id="<p>Example:<i>italic</i>and<b>bold</b></p>" d="M.81 10.51v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08L.81 10.51zm12.718-.36a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM37.326 3.4h7.398v1.332H38.82v4.122h5.454v1.332H38.82v4.482h5.994V16h-7.488V3.4zm14.428 7.992L48.28 7h1.8l2.592 3.384L55.336 7h1.62l-3.474 4.32 3.69 4.68h-1.728l-2.862-3.69L49.666 16h-1.638l3.726-4.608zm9.19-3.69a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM75.516 16v-5.994a9.51 9.51 0 00-.027-.729 2.442 2.442 0 00-.126-.63 1.01 1.01 0 00-.288-.441.734.734 0 00-.495-.162c-.408 0-.753.168-1.035.504-.282.336-.495.756-.639 1.26V16h-1.368V7h.936l.27 1.098h.072c.12-.18.237-.351.351-.513.114-.162.246-.303.396-.423.15-.12.327-.213.531-.279.204-.066.462-.099.774-.099.18 0 .366.027.558.081.192.054.369.138.531.252.162.114.303.267.423.459s.198.426.234.702c.276-.468.585-.834.927-1.098.342-.264.813-.396 1.413-.396.396 0 .717.066.963.198s.438.321.576.567c.138.246.234.54.288.882.054.342.081.723.081 1.143V16h-1.368V9.88c0-.252-.012-.489-.036-.711a2.268 2.268 0 00-.135-.585.967.967 0 00-.27-.396c-.114-.096-.267-.144-.459-.144-.42 0-.774.168-1.062.504-.288.336-.504.816-.648 1.44V16h-1.368zm8.812-5.85a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zM96.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm19.18 11.466a4.53 4.53 0 01-.765.54 5.645 5.645 0 01-.963.432 7.06 7.06 0 01-1.089.279 6.633 6.633 0 01-1.143.099c-.72 0-1.356-.111-1.908-.333a3.674 3.674 0 01-1.386-.954 4.158 4.158 0 01-.846-1.485c-.192-.576-.288-1.224-.288-1.944 0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.504 0 1.002.066 1.494.198a2.95 2.95 0 011.305.747c.378.366.669.87.873 1.512.204.642.276 1.473.216 2.493h-6.966c0 1.08.291 1.887.873 2.421.582.534 1.359.801 2.331.801.324 0 .645-.039.963-.117.318-.078.621-.171.909-.279.288-.108.543-.228.765-.36.222-.132.393-.252.513-.36l.558 1.026zm-3.798-6.894a4.86 4.86 0 00-1.125.126 2.564 2.564 0 00-.936.423c-.27.198-.492.456-.666.774-.174.318-.285.711-.333 1.179h5.598c-.06-.792-.315-1.407-.765-1.845-.45-.438-1.041-.657-1.773-.657zm10.27-.036c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm0 7.074c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm20.216-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zM155.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM178.89 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zM189.358 7h2.142V5.218l1.404-.396V7h4.806v1.206h-4.806v4.248c0 .876.213 1.524.639 1.944.426.42 1.035.63 1.827.63.54 0 1.011-.102 1.413-.306a7.614 7.614 0 001.089-.666l.468 1.062c-.42.336-.921.606-1.503.81a5.377 5.377 0 01-1.791.306c-.48 0-.933-.069-1.359-.207a3.12 3.12 0 01-1.125-.639 3.06 3.06 0 01-.774-1.107c-.192-.45-.288-.987-.288-1.611V8.206h-2.142V7zm13.186.702a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM214.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zM226.09 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm15.166 3.942a7.111 7.111 0 00-.891-.243 4.64 4.64 0 00-.945-.099c-1.176 0-2.052.276-2.628.828-.576.552-.864 1.428-.864 2.628 0 .528.084.999.252 1.413.168.414.408.765.72 1.053.312.288.687.51 1.125.666.438.156.921.234 1.449.234.564 0 1.113-.096 1.647-.288.534-.192.981-.444 1.341-.756l.63 1.044a5.095 5.095 0 01-.63.45 6.053 6.053 0 01-1.971.774 6.38 6.38 0 01-1.305.126c-.78 0-1.467-.111-2.061-.333a3.914 3.914 0 01-1.485-.954 4.083 4.083 0 01-.9-1.494 5.818 5.818 0 01-.306-1.935c0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.888 0 1.611.078 2.169.234.558.156 1.029.33 1.413.522l-.018.054v2.502h-1.296v-1.71zm4.708 2.124v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zM273.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm24.05-7.704a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zm8.884-4.806a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.412l.162 1.458h.09c.12-.204.279-.405.477-.603a3.741 3.741 0 011.575-.927 3.593 3.593 0 011.026-.144c.552 0 1.041.06 1.467.18.426.12.78.333 1.062.639.282.306.495.72.639 1.242.144.522.216 1.185.216 1.989V16h-1.404v-4.896c0-.996-.162-1.746-.486-2.25-.324-.504-.912-.756-1.764-.756-.312 0-.615.063-.909.189a3.137 3.137 0 00-.801.495c-.24.204-.45.441-.63.711-.18.27-.312.555-.396.855V16h-1.386v-5.85zm16.408-6.75h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm19.208-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm11.026-7.11h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM389.436 3.4h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.192 3.51c0-1.452.378-2.601 1.134-3.447.756-.846 1.836-1.269 3.24-1.269.756 0 1.407.123 1.953.369s.999.579 1.359.999c.36.42.627.918.801 1.494.174.576.261 1.194.261 1.854 0 .72-.096 1.371-.288 1.953a4.057 4.057 0 01-.846 1.485 3.738 3.738 0 01-1.377.945c-.546.222-1.167.333-1.863.333-.744 0-1.392-.123-1.944-.369a3.815 3.815 0 01-1.368-.999 4.073 4.073 0 01-.801-1.494 6.381 6.381 0 01-.261-1.854zm1.494 0c0 .42.051.84.153 1.26.102.42.267.798.495 1.134.228.336.525.606.891.81.366.204.813.306 1.341.306.96 0 1.683-.297 2.169-.891.486-.594.729-1.467.729-2.619 0-.432-.051-.855-.153-1.269a3.353 3.353 0 00-.504-1.125 2.656 2.656 0 00-.9-.81c-.366-.204-.813-.306-1.341-.306-.96 0-1.68.294-2.16.882-.48.588-.72 1.464-.72 2.628zm11.422-8.1h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm15.94 0h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm7.408-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm3.718.216h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm11.116-4.896v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm5.41 6.966a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896z"/></g><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M296 21l14 7-14 7-.001-6H46v-2h249.999l.001-6z"/><text id="mouse-move-direction" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="93" y="22">mouse move direction</tspan></text></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="563" height="94" viewBox="0 0 563 94"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="path-1" d="M47 38h262v21H47z"/><mask id="mask-2" width="262" height="21" x="0" y="0" fill="#fff" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox"><use xlink:href="#path-1"/></mask></defs><g id="selection-range" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="selection-direction-forward.svg"><text id="anchor" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="18.2" y="78">anchor</tspan></text><text id="focus" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="285" y="78">focus</tspan></text><use id="Rectangle" fill="#C9DCEA" stroke="#C9DCEA" stroke-dasharray="5,2" stroke-width="2" mask="url(#mask-2)" xlink:href="#path-1"/><g id="Group" fill="#AF6E24" fill-rule="nonzero" transform="translate(13 39)"><path id="<p>Example:<i>italic</i>and<b>bold</b></p>" d="M.81 10.51v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08L.81 10.51zm12.718-.36a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM37.326 3.4h7.398v1.332H38.82v4.122h5.454v1.332H38.82v4.482h5.994V16h-7.488V3.4zm14.428 7.992L48.28 7h1.8l2.592 3.384L55.336 7h1.62l-3.474 4.32 3.69 4.68h-1.728l-2.862-3.69L49.666 16h-1.638l3.726-4.608zm9.19-3.69a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM75.516 16v-5.994a9.51 9.51 0 00-.027-.729 2.442 2.442 0 00-.126-.63 1.01 1.01 0 00-.288-.441.734.734 0 00-.495-.162c-.408 0-.753.168-1.035.504-.282.336-.495.756-.639 1.26V16h-1.368V7h.936l.27 1.098h.072c.12-.18.237-.351.351-.513.114-.162.246-.303.396-.423.15-.12.327-.213.531-.279.204-.066.462-.099.774-.099.18 0 .366.027.558.081.192.054.369.138.531.252.162.114.303.267.423.459s.198.426.234.702c.276-.468.585-.834.927-1.098.342-.264.813-.396 1.413-.396.396 0 .717.066.963.198s.438.321.576.567c.138.246.234.54.288.882.054.342.081.723.081 1.143V16h-1.368V9.88c0-.252-.012-.489-.036-.711a2.268 2.268 0 00-.135-.585.967.967 0 00-.27-.396c-.114-.096-.267-.144-.459-.144-.42 0-.774.168-1.062.504-.288.336-.504.816-.648 1.44V16h-1.368zm8.812-5.85a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zM96.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm19.18 11.466a4.53 4.53 0 01-.765.54 5.645 5.645 0 01-.963.432 7.06 7.06 0 01-1.089.279 6.633 6.633 0 01-1.143.099c-.72 0-1.356-.111-1.908-.333a3.674 3.674 0 01-1.386-.954 4.158 4.158 0 01-.846-1.485c-.192-.576-.288-1.224-.288-1.944 0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.504 0 1.002.066 1.494.198a2.95 2.95 0 011.305.747c.378.366.669.87.873 1.512.204.642.276 1.473.216 2.493h-6.966c0 1.08.291 1.887.873 2.421.582.534 1.359.801 2.331.801.324 0 .645-.039.963-.117.318-.078.621-.171.909-.279.288-.108.543-.228.765-.36.222-.132.393-.252.513-.36l.558 1.026zm-3.798-6.894a4.86 4.86 0 00-1.125.126 2.564 2.564 0 00-.936.423c-.27.198-.492.456-.666.774-.174.318-.285.711-.333 1.179h5.598c-.06-.792-.315-1.407-.765-1.845-.45-.438-1.041-.657-1.773-.657zm10.27-.036c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm0 7.074c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm20.216-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zM155.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM178.89 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zM189.358 7h2.142V5.218l1.404-.396V7h4.806v1.206h-4.806v4.248c0 .876.213 1.524.639 1.944.426.42 1.035.63 1.827.63.54 0 1.011-.102 1.413-.306a7.614 7.614 0 001.089-.666l.468 1.062c-.42.336-.921.606-1.503.81a5.377 5.377 0 01-1.791.306c-.48 0-.933-.069-1.359-.207a3.12 3.12 0 01-1.125-.639 3.06 3.06 0 01-.774-1.107c-.192-.45-.288-.987-.288-1.611V8.206h-2.142V7zm13.186.702a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM214.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zM226.09 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm15.166 3.942a7.111 7.111 0 00-.891-.243 4.64 4.64 0 00-.945-.099c-1.176 0-2.052.276-2.628.828-.576.552-.864 1.428-.864 2.628 0 .528.084.999.252 1.413.168.414.408.765.72 1.053.312.288.687.51 1.125.666.438.156.921.234 1.449.234.564 0 1.113-.096 1.647-.288.534-.192.981-.444 1.341-.756l.63 1.044a5.095 5.095 0 01-.63.45 6.053 6.053 0 01-1.971.774 6.38 6.38 0 01-1.305.126c-.78 0-1.467-.111-2.061-.333a3.914 3.914 0 01-1.485-.954 4.083 4.083 0 01-.9-1.494 5.818 5.818 0 01-.306-1.935c0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.888 0 1.611.078 2.169.234.558.156 1.029.33 1.413.522l-.018.054v2.502h-1.296v-1.71zm4.708 2.124v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zM273.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm24.05-7.704a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zm8.884-4.806a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.412l.162 1.458h.09c.12-.204.279-.405.477-.603a3.741 3.741 0 011.575-.927 3.593 3.593 0 011.026-.144c.552 0 1.041.06 1.467.18.426.12.78.333 1.062.639.282.306.495.72.639 1.242.144.522.216 1.185.216 1.989V16h-1.404v-4.896c0-.996-.162-1.746-.486-2.25-.324-.504-.912-.756-1.764-.756-.312 0-.615.063-.909.189a3.137 3.137 0 00-.801.495c-.24.204-.45.441-.63.711-.18.27-.312.555-.396.855V16h-1.386v-5.85zm16.408-6.75h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm19.208-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm11.026-7.11h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM389.436 3.4h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.192 3.51c0-1.452.378-2.601 1.134-3.447.756-.846 1.836-1.269 3.24-1.269.756 0 1.407.123 1.953.369s.999.579 1.359.999c.36.42.627.918.801 1.494.174.576.261 1.194.261 1.854 0 .72-.096 1.371-.288 1.953a4.057 4.057 0 01-.846 1.485 3.738 3.738 0 01-1.377.945c-.546.222-1.167.333-1.863.333-.744 0-1.392-.123-1.944-.369a3.815 3.815 0 01-1.368-.999 4.073 4.073 0 01-.801-1.494 6.381 6.381 0 01-.261-1.854zm1.494 0c0 .42.051.84.153 1.26.102.42.267.798.495 1.134.228.336.525.606.891.81.366.204.813.306 1.341.306.96 0 1.683-.297 2.169-.891.486-.594.729-1.467.729-2.619 0-.432-.051-.855-.153-1.269a3.353 3.353 0 00-.504-1.125 2.656 2.656 0 00-.9-.81c-.366-.204-.813-.306-1.341-.306-.96 0-1.68.294-2.16.882-.48.588-.72 1.464-.72 2.628zm11.422-8.1h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm15.94 0h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm7.408-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm3.718.216h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm11.116-4.896v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm5.41 6.966a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896z"/></g><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M296 21l14 7-14 7-.001-6H46v-2h249.999l.001-6z"/><text id="mouse-move-direction" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="93" y="22">mouse move direction</tspan></text></g></g></svg> \ No newline at end of file diff --git a/2-ui/99-ui-misc/02-selection-range/selection-firefox.svg b/2-ui/99-ui-misc/02-selection-range/selection-firefox.svg index aa7ff1eb7..050852d3d 100644 --- a/2-ui/99-ui-misc/02-selection-range/selection-firefox.svg +++ b/2-ui/99-ui-misc/02-selection-range/selection-firefox.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="556" height="428" viewBox="0 0 556 428"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="rect-1" d="M48 88h448v281H48z"/></defs><g id="selection-range" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="selection-firefox.svg"><g id="Bitmap"><image width="448" height="281" x="48" y="88" xlink:href="data:image/png;base64,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ARIgARLIdALZmQ6A/ScBEiABEiABEiABEiABEiABEiABEog/gZyNGzfKvn374l8TayABEiABEiABEiABEiABEiABEiABEshYAtlcASNjrz07TgIkQAIkQAIkQAIkQAIkQAIkQAKBEcgyBIg8Oh8JjDcrIgESIAESIAESIAESIAESIAESIIGMJEAfEBl52dlpEiABEiABEiABEiABEiABEiABEgiWAAWIYHmzNhIgARIgARIgARIgARIgARIgARLISALZnH6RkdednSYBEiABEiABEiABEiABEiABEiCBQAnQAiJQ3KyMBEiABEiABEiABEiABEiABEiABDKTQPaBAwcys+fsNQmQAAmQAAmQAAmQAAmQAAmQAAmQQGAEsvKMEFhtrIgESIAESIAESIAESIAESIAESIAESCAjCWRTf8jI685OkwAJkAAJkAAJkAAJkAAJkAAJkECgBOiEMlDcrIwESIAESIAESIAESIAESIAESIAEMpMALSAy87qz1yRAAiRAAiRAAiRAAiRAAiRAAiQQKAGughEoblZGAiRAAiRAAiRAAiRAAiRAAiRAAplJgAJEZl539poESIAESIAESIAESIAESIAESIAEAiVAASJQ3KyMBEiABEiABEiABEiABEiABEiABDKTAAWIzLzu7DUJkAAJkAAJkAAJkAAJkAAJkAAJBEqAq2AEipuVkQAJkAAJkAAJkAAJkAAJkAAJkEBmEqAFRGZed/aaBEiABEiABEiABEiABEiABEiABAIlQAEiUNysjARIgARIgARIgARIgARIgARIgAQykwAFiMy87uw1CZAACZAACZAACZAACZAACZAACQRKgAJEoLhZGQmQAAmQAAmQAAmQAAmQAAmQAAlkJgEKEJl53dlrEiABEiABEiABEiABEiABEiABEgiUAAWIQHGzMhIgARIgARIgARIgARIgARIgARLITAIUIDLzurPXJEACJEACJEACJEACJEACJEACJBAoAQoQgeJmZSRAAiRAAiRAAiRAAiRAAiRAAiSQmQQoQGTmdWevSYAESIAESIAESIAESIAESIAESCBQAtl5eXmBVsjKSIAESIAESIAESIAESIAESIAESIAEMo9AdlZWVub1mj0mARIgARIgARIgARIgARIgARIgARIIlACnYASKm5WRAAmQAAmQAAmQAAmQAAmQAAmQQGYSoACRmdedvSYBEiABEiABEiABEiABEiABEiCBQAnQB0SguFkZCZAACZAACZAACZAACZAACZAACWQmAVpAZOZ1Z69JgARIgARIgARIgARIgARIgARIIFACdEIZKG5WRgIkQAIkQAIkQAIkQAIkQAIkQAKZSYAWEJl53dlrEiABEiABEiABEiABEiABEiABEgiUAH1ABIqblZEACZAACZAACZAACZAACZAACZBAZhKgBURmXnf2mgRIgARIgARIgARIgARIgARIgAQCJUABIlDcrIwESIAESIAESIAESIAESIAESIAEMpMAnVBm5nVnr0mABEiABEiABEiABEiABEiABEggUAK0gAgUNysjARIgARIgARIgARIgARIgARIggcwkkH3gwIHM7Dl7TQIkQAIkQAIkQAIkQAIkQAIkQAIkEBiBrDwjBFYbKyIBEiABEiABEiABEiABEiABEiABEshIAlyGMyMvOztNAiRAAiRAAiRAAiRAAiRAAiRAAsESoBPKYHmzNhIgARIgARIgARIgARIgARIgARLISAK0gMjIy85OkwAJkAAJkAAJkAAJkAAJkAAJkECwBLgKRrC8WRsJkAAJkAAJkAAJkAAJkAAJkAAJZCQBChAZednZaRIgARIgARIgARIgARIgARIgARIIlgAFiGB5szYSIAESIAESIAESIAESIAESIAESyEgCFCAy8rKz0yRAAiRAAiRAAiRAAiRAAiRAAiQQLAGughEsb9ZGAiRAAiRAAiRAAiRAAiRAAiRAAhlJgBYQGXnZ2WkSIAESIAESIAESIAESIAESIAESCJYABYhgebM2EiABEiABEiABEiABEiABEiABEshIAhQgMvKys9MkQAIkQAIkQAIkQAIkQAIkQAIkECwBChDB8mZtJEACJEACJEACJEACJEACJEACJJCRBChAZORlZ6dJgARIgARIgARIgARIgARIgARIIFgCFCCC5c3aSIAESIAESIAESIAESIAESIAESCAjCVCAyMjLzk6TAAmQAAmQAAmQAAmQAAmQAAmQQLAEKEAEy5u1kQAJkAAJkAAJkAAJkAAJkAAJkEBGEqAAkZGXnZ0mARIgARIgARIgARIgARIgARIggWAJZOfl5QVbI2sjARIgARIgARIgARIgARIgARIgARLIOALZWVlZGddpdpgESIAESIAESIAESIAESIAESIAESCBYApyCESxv1kYCJEACJEACJEACJEACJEACJEACGUmAAkRGXnZ2mgRIgARIgARIgARIgARIgARIgASCJUAfEMHyZm0kQAIkQAIkQAIkQAIkQAIkQAIkkJEEaAGRkZednSYBEiABEiABEiABEiABEiABEiCBYAnQCWWwvFkbCZAACZAACZAACZAACZAACZAACWQkAVpAZORlZ6dJgARIgARIgARIgARIgARIgARIIFgC9AERLG/WRgIkQAIkQAIkQAIkQAIkQAIkQAIZSYAWEBl52dlpEiABEiABEiABEiABEiABEiABEgiWAAWIYHmzNhIgARIgARIgARIgARIgARIgARLISAJ0QpmRl52dJgESIAESIAESIAESIAESIAESIIFgCdACIljerI0ESIAESIAESIAESIAESIAESIAEMpJA9oEDBzKy4+w0CZAACZAACZAACZAACZAACZAACZBAcASy8owQXHWsiQRIgARIgARIgARIgARIgARIgARIIBMJcBnOTLzq7DMJkAAJkAAJkAAJkAAJkAAJkAAJBEyATigDBs7qSIAESIAESIAESIAESIAESIAESCATCdACIhOvOvtMAiRAAiRAAiRAAiRAAiRAAiRAAgET4CoYAQNndSRAAiRAAiRAAiRAAiRAAiRAAiSQiQRyEt3p9xYmugWsnwRIIFUJdGuQqi1nu0mABEiABEiABEiABEgg8wjQAiLzrjl7TAIkQAIkQAIkQAIkQAIkQAIkQAKBE6AAEThyVkgCJEACJEACJEACJEACJEACJEACmUeAq2Bk3jVnj0mABEiABEiABEiABEiABEiABEggcAK0gAgcOSskARIgARIgARIgARIgARIgARIggcwjQAEi8645e0wCJEACJEACJEACJEACJEACJEACgROgABE4clZIAiRAAiRAAiRAAiRAAiRAAiRAAplHgAJE5l1z9pgESIAESIAESIAESIAESIAESIAEAidAASJw5KyQBEiABEiABEiABEiABEiABEiABDKPAAWIzLvm7DEJkAAJkAAJkAAJkAAJkAAJkAAJBE6AAkTgyFkhCZAACZAACZAACZAACZAACZAACWQeAQoQmXfN2WMSIAESIAESIAESIAESIAESIAESCJwABYjAkbNCEiABEiABEiABEiABEiABEiABEsg8Atl5eXmZ12v2mARIgARIgARIgARI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CBABIkAEiAARIAJEgAgQASJQUQjQBkRFVReZJQJEgAgQASJABIgAESACRIAIEAEiUJkIUABRmfVGrokAESACRIAIEAEiQASIABEgAkSACFQUAvXsEYxMRXFMZokAESACRIAIEAEiQASIABEgAkSACBCBikOAGhAVV2VkmAgQASJABIgAESACRIAIEAEiQASIQOUhUH/x4sWVxzU5JgJEgAgQASJABIgAESACRIAIEAEiQAQqCgEewaio6iKzRIAIEAEiQASIABEgAkSACBABIkAEKhOB+jQBUZkVR66JABEgAkSACBABIkAEiAARIAJEgAhUEgL169WrV0n8klciQASIABEgAkSACBABIkAEiAARIAJEoAIRoAZEBVYaWSYCRIAIEAEiQASIABEgAkSACBABIlBpCPAWjEqrMfJLBIgAESACRIAIEAEiQASIABEgAkSgAhGgAKICK40sEwEiQASIABEgAkSACBABIkAEiAARqDQEKICotBojv0SACBABIkAEiAARIAJEgAgQASJABCoQAQogKrDSyDIRIAJEgAgQASJABIgAESACRIAIEIFKQ4C3YFRajZFfIkAEiAARIAJEgAgQASJABIgAESACFYgANSAqsNLIMhEgAkSACBABIkAEiAARIAJEgAgQgUpDgAKISqsx8ksEiAARIAJEgAgQASJABIgAESACRKACEaAAogIrjSwTASJABIgAESACRIAIEAEiQASIABGoNAQogKi0GiO/RIAIEAEiQASIABEgAkSACBABIkAEKhABCiAqsNLIMhEgAkSACBABIkAEiAARIAJEgAgQgUpDgAKISqsx8ksEiAARIAJEgAgQASJABIgAESACRKACEaAAogIrjSwTASJABIgAESACRIAIEAEiQASIABGoNAQogKi0GiO/RIAIEAEiQASIABEgAkSACBABIkAEKhABCiAqsNLIMhEgAkSACBABIkAEiAARIAJEgAgQgUpDoH4mk6k0nskvESACRIAIEAEiQASIABEgAkSACBABIlBhCNSvV69ehbFMdokAESACRIAIEAEiQASIABEgAkSACBCBSkOARzAqrcbILxEgAkSACBABIkAEiAARIAJEgAgQgQpEgAKICqw0skwEiAARIAJEgAgQASJABIgAESACRKDSEKANiEqrMfJLBIgAESACRIAIEAEiQASIABEgAkSgAhGgBkQFVhpZJgJEgAgQASJABIgAESACRIAIEAEiUGkI0AhlpdUY+SUCRIAIEAEiQASIABEgAkSACBABIlCBCFADogIrjSwTASJABIgAESACRIAIEAEiQASIABGoNARoA6LSaoz8EgEiQASIABEgAkSACBABIkAEiAARqEAEqAFRgZVGlokAESACRIAIEAEiQASIABEgAkSACFQaAhRAVFqNkV8iQASIABEgAkSACBABIkAEiAARIAIViACNUFZgpZFlIkAEiAARIAJEgAgQASJABIgAESAClYYANSAqrcbILxEgAkSACBABIkAEiAARIAJEgAgQgQpEoP7ixYsrkG2yTASIABEgAkSACBABIkAEiAARIAJEgAhUEgL1MpYqiWHySgSIABEgAkSACBABIkAEiAARIAJEgAhUHgK8hrPy6owcEwEiQASIABEgAkSACBABIkAEiAARqDgEaISy4qqMDBMBIkAEiAARIAJEgAgQASJABIgAEag8BKgBUXl1Ro6JABEgAkSACBABIkAEiAARIAJEgAhUHAK8BaPiqowMEwEiQASIABEgAkSACBABIkAEiAARqDwEKICovDojx0SACBABIkAEiAARIAJEgAgQASJABCoOAQogKq7KyDARIAJEgAgQASJABIgAESACRIAIEIHKQ4ACiMqrM3JMBIgAESACRIAIEAEiQASIABEgAkSg4hBoUK9evYpjmgwTASJABIgAESACRIAIEAEiULcQePDjulVeljZdBA5YN930mFphCFADojDcGIsIEAEiQASIABEgAkSACBABIkAEiAARyAMBCiDyAItBiQARIAJEgAgQASJABIgAESACRIAIEIHCEKAAojDcGIsIEAEiQASIABEgAkSACBABIkAEiAARyAMBCiDyAItBiQARIAJEgAgQASJABIgAESACRIAIEIHCEKAAojDcGIsIEAEiQASIABEgAkSACBABIkAEiAARyAMBCiDyAItBiQARIAJEgAgQASJABIgAESACRIAIEIHCEKAAojDcGIsIEAEiQASIABEgAkSACBABIkAEiAARyAMBCiDyAItBiQARIAJEgAgQASJABIgAESACRIAIEIHCEKAAojDcGIsIEAEiQASIABEgAkSACBABIkAEiAARyAOBBplMxtSrVy+PKOUd9Oabbzavvvqqx+QFF1xg1ltvvfJmOEXu+vXrZ2bPnm0aNGhg7rzzTrP00kunmDqTIgK1D4ETTzzR/Pzzz963Mnz4cLPUUksVXMjvvvvOnH766V78jh07mvPOO6/gtAqJmGZZCsk/jTjDhg0zL7/8spfUgAEDzAYbbJBGsmWRBsqF8oEOPPBAs88++5QFX2QiGoEff/zRnHbaaebvv//22iPaZTE0Z84cc+utt5opU6aYjz76yLRo0cJ07tzZoM846KCDTOPGjYtJvsbjJukHa0NfVeNAkwEiUKYI/PzjLDPyslM87lZdp5PpdcK5Zcop2apJBOpZAUSmJhnAALxgwYKiWGjTpo1ZeeWVvTQOPvhgc//993vvL730ktlhhx0KTvuvv/7yJh4TJ040Z599ttl3330LTqs6IrZu3dpgsgSaP39+xU9kSonZ0KFDDRacPXv2NMVOKNPgs9z4SaNMlZBGs2bNzG+//eax+scff5hlllmmYLanTZtmNtxwQy/+dtttZ8aNG5eVVqn7kzTLksV4Nf7o06ePufvuu70cn3vuObPzzjtXY+6lzQqLzuOPP97LZPDgwWbgwIGlzZCpp4LA9OnTTYcOHby0tt12W/Paa68VnC76hAMOOMCN0/6EKmHcjuvH4vpBlLk29FX+uquk35gbDxo0yLRv395ce+21pnnz5pXEvnnw44pit84x+9Wn080Z3Zf0metv3tUMvveVssLggHWTsVPp30myUtZcqAY1l/WSnLfffvvQwTgpb9iduPrqq5MGTxwOk4Ubb7zRC9+/f39vx6o2aYskBqKWBcSCEzswoLffftsceuihZq211qqxUpYbPzUGRC3PmP1JLa9gFo8IRCCAjRYtfGjatKnZaqutzA8//GDef/9907t374rYNGA/FlHJFeKFTZfx48d72sI77rijOfzwwyuEc7JJBKoPAX4npcW6xgUQpS1ecalrYcMvv/xiattxleLQqdzYfjX733//vUYLU2781CQYjz/+uPniiy88odAKK6xQk6yknjf7k9QhDUwQC7rRo0ebtdde2+yxxx6BYehIBKobARyLFA3Fdddd1+BIjmhuLly40EADqxKoLvZjlTIuJeWzfv0q82/QuiERASKQiwC/k1xM0nSpcRsQsNOAM9hBdNddd5mPP16ia9WrVy+z6aabBgXzdhECPYp03Gabbczee+9t3njjDXPxxRcb3RiLTJrRaxABnLFF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UQR4jEoEiAARIAJEgAgQASJABIhA9SAQJ4CoHi5qVy5aAHHvlMVWWFPWCvJFgU8BRFHwpRa59raw1CBiQkSACBABIkAEiAARIAJEgAgQASJABIhAsQhQAFEsgoxPBIgAESACRIAIEAEiQASIABEgAkSACMQiQAFELEQMQASIABEgAkSACBABIkAEiAARIAJEgAgUiwAFEMUiyPhEgAgQASJABIgAESACRIAIEAEiQASIQCwCFEDEQsQARIAIEAEiQASIABEgAkSACBABIkAEiECxCDTAFVa4P5hEBIgAESACRIAIEAEiQASIABEgAnUHge16Hm5+/+1ns9RSDUz9pbg3XXdqvuZKyms4aw575kwEiAARIAJEgAgQASJABIhAQgR4DWdCoBgsEAFewxkIS7U7UsxV7ZAzQyJABIgAESACRIAIEAEiQASIABEgAnUPAWpA1L06Z4mJABEgAkSACBCBOoYAd47rWIWnWFzuGqcIJpMiAkTA1IcNCBIRIAJEgAgQASJABIgAESACRIAIEAEiQARKiQCPYJQSXaZNBIgAESACRIAIEAEiQASIABEgAkSACHgI1OcNGGwJRIAIEAEiQASIABEgAkSACBABIkAEiECpEaAGRKkRZvpEgAgQASJABIgAESACRIAIEAEiQASIAG1AsA0QASJABIgAESACRIAIEAEiQASIABEgAqVHgBoQpceYORABIkAEiAARIAJEgAgQASJABIgAEajzCFAAUeebAAEgAkSACBABIkAEiAARIAJEgAgQASJQegRohLL0GDMHIkAEiAARIAJEgAgQASJABIgAESACdR4BakDU+SZAAIgAESACRIAIEAEiQASIABEgAkSACJQegQaLFy82Sy21VOlzSjmHfv36mdmzZ5sGDRqYO++80yy99NIp58DkiAARIAJEoJwQ+O6778zpp5/usdSxY0dz3nnnlRN7JeVl3LhxZujQoV4e+++/v+nVq1dJ82PiRIAIVC8CUye8ap6/f8k3vs0eB5t/7dKzehmoo7m9/PLLZtiwYV7pDzzwQLPPPvvUUSRYbCJQfQjUr0ThA+AZPXq0uf/++80999xj/vzzz+pDjDkRgTwQ+Pbbb827777r/X3xxRd5xDTm888/d3F/+OGHvOIyMBGojQj8/PPPXr+Pvv+ZZ54puogvvfSS6dq1qznyyCPNL7/8UnR6pUzg008/dWV///33S5lVxaeNvna//fYze+65p/nggw9qvDzlxk+NA0IGAhH49vPpZvyY+7y/mdPfCwxDxyUIQBi7xRZbmIsuuqhoSD7++GP2rUWjWDMJVNIYXjMIlW+uDTKZjKlXr175ckjOiEAFI3DfffeZM8880yvBSiut5AkVmjRpElsiLLQ23nhj89tvv3lhhw8fbvr27RsbjwGIABFIjsCAAQPM+PHjzauvvmp23HFHc/jhhyePzJBli8CIESPMI4884vG38sormzvuuKNGeS03fmoUDGZOBIpEAPOiE0880Uvl7bffNoceeqhZa621ikyV0SsRAY7hlVhrS3imEcrKrTty/g8CN998s7ntttvKEo8TTjjBQPAA+vHHH82NN96YiM+rr77aCR/WXXddc9hhhyWKx0BEoBIRgIbPDTfcYJ5++ulqZb9+/SozSPPnz6/WvJlZ6RDQmyrz5s0rXUYJUy43fhKyzWBEoCwR8Gtu//7774F8Pv744964MmfOnED/uupYm3DhGF65rbg+NCBIRKBSEYB67UknnWSOO+64sixC48aNzf/93/853i655BID7YYowrGNiy++2AUZMmSIZ+vEOfCFCNQyBLBb3b9/f3cOt7qKd8YZZ5hVV13V036gTYXqQr30+eAc96abbmogvD3llFNKn2FMDuXGTwy79CYCZY0A5lUXXHCBadq0qTf3gz0gP8G+HTZuMK7ke/zVn1Zt+l3bcOEYXrmts0Hlsk7OiYCp9h3TQjDv06ePufzyyw3OGUJ18MorrzSXXnppaFIQUghtt912pkePHvKTTyJQKxHAjkxN0N57723wR6pdCKy33nrmnXfeKZtClRs/ZQMMGSECBSIwaNAgg78wwtEMOcIaFqYuutc2XDiGV24rrtI/rdwykPM6jMBjjz1W9qXHTS1XXHGF4xMaEdByCKJPPvnE4EiJEIQVJCJQmxHAJLG6j17UZjxZNiJABIhAXUdg7NixdR2CwPITl0BY6FgDCJSlBgTOysOyKW4PmDRpkoG61b/+9S+z2WabeRbL8TsfwtVtr732mpk6daqZPHmyZ+18o4028oz8bb755qZTp06Jk8ORFaQF1f8pU6Z4T/ADNV4Ywdl55509y7yS4PTp040sksH/TjvtJF6Bz+eff94rMzwPOOAAs+aaa2aFGzNmjFeOFVdc0bPcDk/g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o+BwdCUCRIAI1EkEYIXfL3gAEFdccYU57rjj6iQmLDQRIAJEgAgQASJABIgAESgEgQZQK466frCQRBmHCBABIlBbEOjTp493bReuRmzatKl3pRTuKMe1uyQiQASIABGomwgs12wFs233g73Cr7pOp7oJAktdZxHAtc4HHXSQV/6NNtqozuLAgheGAK/hLAw3xiICRIAIEAEiQASIQMUgwGs4K6aqyo5RXsNZdlVChohARSPAazgruvrIPBEgAkSACBABIkAEiAARIAJEgAgQgcpAgBoQlVFP5JIIEAEiQASIABEgAkSACBABIkAEiEBFI0ANiIquPjJPBIgAESACRIAIEAEiQASIABEgAkSgMhCoXxlskksiQASIABEgAkSACBABIkAEiAARIAJEoJIRoACikmuPvBMBIkAEiAARIAJEgAgQASJABIgAEagQBCiAqJCKIptEgAgQASJABIgAESACRIAIEAEiQAQqGQEKICq59sg7ESACRIAIEAEiQASIABEgAkSACBCBCkGgfr169SqEVbJJBIgAESACRIAIEAEiQASIABEgAkSACFQqAtSAqNSaI99EgAgQASJABIgAESACRIAIEAEiQAQqCAEKICqossgqESACRIAIEAEiQASIABEgAkSACBCBSkWAAohKrTnyTQSIABEgAkSACBABIkAEiAARIAJEoIIQaFBBvJLVEAT69etnZs+ebRo0aGDuvPNOs/TSS4eEpDMRqL0InHjiiebnn3/22v/IkSNrb0GLKNlff/1l7rrrLjNhwgQzdepUs3jxYrPRRhuZTp06mZ49e5o11lijiNQZlQgQASJABIgAESACRIAIRCNQL2MpOgh9yx2B1q1bmx9//NFjc/78+aZx48ZZLA8dOtQMHz7cW2AMGDAgy6+2/KgLZawtdVWqcjRr1sz89ttvXvKFdGtYnJ922mlm4sSJ5uyzzzb77rtvqVitkXS/+uor07t3b/Pmm28G5v/qq6+aLl26BPrRsfYg8NJLL5lBgwaZ9u3bm2uvvdY0b968bArHfrxsqoKMEAEiQASIABEoGQIUQJQM2upLOEoAgQUZFmZCn332mVlrrbXkZ6141oUy1oqKKnEhihVAvPjii2an/2/vPuCtKA49js+9IBZsICioIAQpKvaCsYA99oLYu1ETsbwYNep7L7aosRETY+8+O6JiARtGsZFo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AAEEEEAAAQRCFqAGRMi5R9oRQAABBBBAAAEEEEAAAQQQCESAAohAMopkIoAAAggggAACCCCAAAIIIBCyAAUQIeceaUcAAQQQQAABBBBAAAEEEEAgEAEKIALJKJKJAAIIIIAAAggggAACCCCAQMgCFECEnHukHQEEEEAAAQQQQAABBBBAAIFABCiACCSjSCYCCCCAAAIIIIAAAggggAACIQtQABFy7pF2BBBAAAEEEEAAAQQQQAABBAIRoAAikIwimQgggAACCCCAAAIIIIAAAgiELEABRMi5R9oRQAABBBBAAAEEEEAAAQQQCESgNpfLBZJUkokAAggggAACCCCAAAIIIIAAAqEK1NbU1ISadtKNAAIIIIAAAggggAACCCCAAAKBCNAEI5CMIpkIIIAAAggggAACCCCAAAIIhCxAAUTIuUfaEUAAAQQQQAABBBBAAAEEEAhEgD4gAskokokAAggggAACCCCAAAIIIIBAyALUgAg590g7AggggAACCCCAAAIIIIAAAoEI0AllIBlFMhFAAAEEEEAAAQQQQAABBBAIWYAaECHnHmlHAAEEEEAAAQQQQAABBBBAIBAB+oAIJKNIJgIIIIAAAggggAACCCCAAAIhC1ADIuTcI+0IIIAAAggggAACCCCAAAIIBCJAAUQgGUUyEUAAAQQQQAABBBBAAAEEEAhZgE4oQ8490o4AAggggAACCCCAAAIIIIBAIALUgAgko0gmAggggAACCCCAAAIIIIAAAiEL1NbV1YWcftKOAAIIIIAAAggggAACCCCAAAIBCNTkbAggnSQRAQQQQAABBBBAAAEEEEAAAQQCFmAYzoAzj6QjgAACCCCAAAIIIIAAAgggEIoAnVCGklOkEwEEEEAAAQQQQAABBBBAAIGABagBEXDmkXQEEEAAAQQQQAABBBBAAAEEQhFgFIxQcop0IoAAAggggAACCCCAAAIIIBCwAAUQAWceSUcAAQQQQAABBBBAAAEEEEAgFAEKIELJKdKJAAIIIIAAAggggAACCCCAQMACFEAEnHkkHQEEEEAAAQQQQAABBBBAAIFQBBgFI5ScIp0IIIAAAggggAACCCCAAAIIBCxADYiAM4+kI4AAAggggAACCCCAAAIIIBCKAAUQoeQU6UQAAQQQQAABBBBAAAEEEEAgYAEKIALOPJKOAAIIIIAAAggggAACCCCA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"/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><path id="Line" fill="#C06334" fill-rule="nonzero" d="M309.315 59.871l1.064 1.694-.847.532-130.147 81.799 3.193 5.08L167 150.5l8.128-13.377 3.193 5.079 130.147-81.799.847-.532z"/><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M349.496 60.872l.004 1 .45 128.874 6.001-.02L349 204.75l-7.049-13.975 5.999-.022-.45-128.875-.003-1 2-.006z"/><path id="Line-Copy-2" fill="#C06334" fill-rule="nonzero" d="M386.71 57.027l.256.966 35.404 133.219 5.8-1.54L425 205l-10.361-11.732 5.798-1.542-35.403-133.22-.257-.966 1.933-.513z"/><text id="selection" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="20" font-weight="normal"><tspan x="295" y="44">selection</tspan></text></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="556" height="428" viewBox="0 0 556 428"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="rect-1" d="M48 88h448v281H48z"/></defs><g id="selection-range" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="selection-firefox.svg"><g id="Bitmap"><image width="448" height="281" x="48" y="88" xlink:href="data:image/png;base64,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5YNp/frug8PwkowpRvFBfdGDnYJl4R0U4B9r6WAtH2wT7bE9b+Orc2vbZNug5TajhHytbxulDZmmTWb5oPKyUWOV16q6/rbZuGzK9pdXHfv2zYWrmJBJG1W2fpyD8y4zKStVHlla/N///Z+ZM2dOlWQffvih0eexxx7znKpus8023vmmTZuanj17eoNGRcjpqgQBf9AAXvEKcjzkv9Y//fST2WWXXYy2/qD6hw8f7n3uuusub1lbDVL9QfNKFXbeeeeE0Heoef311ytPS0DQ55lnnjGfffaZJz4cdthhlee1ozr1eeqppzyhQssI2yCLMvVXQSvWaDlUTYHxB9Wvj+a6ytFsFB88GnxroK3lOf1B/X711Ve9zwsvvGCefPLJtG/Q/Pm1r7I10JcAEwy6FvrccsstXrv33HPPKkkkekgc08odwfD+++8bfe69917z+OOPe1OD/GkkAllmo0ePNv37968i7rz77rtGHwkjYn7aaaet8qZN1+yCCy4wb731lvfJxGLD3yb2IQCBeAlITND9UoNrGzQY12+XlpQODkrznd62IY5t0DrRCgwSqoPTMew5+/xg25fP5whbR6pt8PrYtHrZqf7Zj9Klaqv6q98SBV17XWf11X7Cpo0nq9u2oVi29hnHPt/adttje97G22N73sbbY3vexrONj0BSJ5T2CywT+WyCHDjqgSksKD7ZubD0UeL0pq9bt27eG7Uo+fxpmzRZ6f/CsvCfi7qvB0g9ACZ74xi1PNf0GvDrLZt/AOCaNx/pfv99WpViNWiKEoIrZ7jkzcdyNC71+tNowGdveP74fO+rTv1YyTtwMQb7v+f646kfY5dVMPwsbNm2Lv+5XO3r+u+zzz6VxR1++OGmd+/enmn8v//9b2+Ar8G43oRra/9fNVh9+eWXvYHto48+apRPlg4KGtDqLbwNEjCs1ZZM7iV2WPFB/2fyd9GpUycjy4B//etfnhCi87LICAobtkwtdamw/fbbm7///e/m66+/9oQHDeaVV+3VfU1Bb+Q7duzoDb5f/0uwUDpZT9x+++1emuAfWShofq7m9ErEUH7dsx588EGvfbIW2G+//byBteuAWcv4+sWHAQMGeA9z+i267777vAc2DeYPPvhg89FHH0WaOnHHHXdUER90PWRN8sMPPxiZudolgPfaay/zzTffeNYXts8SJvzig6YI9erV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IqAIKAKKgCKgCCgCioAioAgoAoqAIqAIVIaACiAqw01jKQKKgCKgCCgCioAioAgoAoqAIqAIKAKKQBkItC0UCmaWWWYpI0p9B73sssvMk08+GTA5YMAA07Vr1/pmOEfu+vTpYyZPnmzatm1rrr76ajPbbLPlmLompQi0PgSOPvpo88033wTfyjXXXGNmnXXWigs5ceJEc8IJJwTxV1llFXPaaadVnFYlEfMsSyX55xHniiuuMI8//niQVL9+/czKK6+cR7J1kQblonzQXnvtZXbeeee64EuZSEbgyy+/NMcff7z53//+F7RH2mU1NGXKFPPvf//bjBs3zrz11lumQ4cOpkePHoY+Y++99zZzzz13Ncm3eNws/WBr6KtaHGhlQBGoUwSmfDnRXHXujLnQUsuvYvY6snnnQnUKi7IVQmAWK4AohNya9ScD8M8//1xVnosssohZdNFFgzT22Wcfc/PNNwfvjz32mNl0000rTvu3334LJh4vvfSSOeWUU8wuu+xScVrNEbFTp06GyRI0derUhp/I1BKzYcOGGRacO+ywg6l2QpkHn/XGTx5laoQ05p13XvPDDz8ErE6fPt3MPvvsFbM9fvx4061btyD+xhtvbEaPHl2UVq37kzzLUsR4M/448MADzfXXXx/k+NBDD5levXo1Y+61zYpF5xFHHBFkMnDgQHPGGWfUNkNNPRcE3n77bbPiiisGaW244Ybmqaeeqjhd+oQ99tjDj9PhhBph3E7rx9L6QcrcGvqqcN010m/mxv379zfLLbecufDCC818883XSOybe99uKHZnOmY/fm+8Oab3jLlQt7U2NueMKJ4LtTQgvTPuSzf6d9LSOKfl3zYtQK39e/bsGTsYZ82b3Ynzzz8/a/DM4ZgsXHLJJUH4vn37BjtWrUlbJDMQrSwgC052YKAXX3zR7LfffmbZZZdtsVLWGz8tBkQrz1j7k1ZewVo8RSABATZapPChffv2Zr311jNffPGFee2118yee+7ZEJsG2o8lVHKDeLHp8vTTTwfawptvvrk54IADGoRzZVMRaD4E9DupLdYtLoCobfGqS10KG7777jvT2o6rVIdO48YOq9n/9NNPLVqYeuOnJcG4++67zUcffRQIhRZYYIGWZCX3vLU/yR3SyARZ0N16662mS5cuZtttt40Mo46KQHMjwLFIp6G4wgorGI7kOM3N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tOlrd911V7PddtuZ119/vcXLU2/8tDggykAkAp9NeMeMvu/m4G/C2/qNR4L0hyPC2HXWWccMGjQoKVgmv3feeUf71kxI1V+gRhrD6w+9luWobaFQMLPMMkvLcqG5KwKtFIGbbrrJnHTSSUHpFl544UCo0K5du9TSstBabbXVzA8//BCEveaaa8xBBx2UGk8DKAKKQHYE+vXrZ55++mnz5JNPms0339wccMAB2SNryLpF4NprrzV33nlnwN+iiy5qrrrqqhbltd74aVEwNHNFoEoEmBcdffTRQSovvvii2W+//cyyyy5bZaoavRER0DG8EWttBs9qhLJx6045/wOByy67zFx55ZV1icdRRx1lEDxAX375pbnkkksy8Xn++ed74cMKK6xg9t9//0zxNJAi0IgIoOFz8cUXm1GjRjUr+23aNJlBmjp1arPmrZnVDgG5qfLjjz/WLqOMKdcbPxnZ1mCKQF0iENbc/umnnyL5vPvuu4NxZcqUKZH+M6tja8JFx/DGbcVt0IBQUgQaFQHUa4855hhz+OGH12UR5p57bvPPf/7T8/aPf/zDoN2QRBzbOOuss3yQoUOHBrZOvIO+KAKtDAF2q/v27evP4TZX8U488USzxBJLBNoPalOhuVCvfT6c415jjTUMwtu//OUvtc8wJYd64yeFXfVWBOoaAeZVAwYMMO3btw/mftgDChP27di4YVwp9/hrOK3W9Lu14aJjeOO2zraNy7pyrgiYZt8xrQTzAw880Jx77rmGc4aoDg4ePNicffbZsUkhpHC08cYbm969e7uf+lQEWiUC7Mi0BO20006GP6XWhUDXrl3Nyy+/XDeFqjd+6gYYZUQRqBCB/v37G/7iiKMZ7ghrXJiZ0b214aJjeOO24ib908Ytg3I+EyNw11131X3puanlvPPO83yiEYGWQxS9++67hiMljhBWKCkCrRkBJonNffSiNeOpZVMEFAFFYGZH4IEHHpjZIYgsv+ISCYs6tgACdakBwVl5LJtye8CYMWMM6lZrr722WXPNNQOL5fwuh7i67amnnjJvvPGGeeWVVwJr56uuumpg5G+ttdYy3bt3z5wcR1ZIC9X/cePGBU/4QY0XIzi9evUKLPO6BN9++23jFsnwv8UWWzivyOfDDz8clBnPPfbYwyyzzDJF4e67776gHAsttFBguR1PcHruuecCviZNmhRgte666xr+FltsMR//l19+Ma+++qp55plnAqNrX3/9daCiyu4MxtdIMwuhzgYG1A1/8803X6DuCqbbb7994pWoWC5mweGwQB2MNF566SXz7LPPGhbgnTt3NiuuuKLp2bOn2XTTTSNZev/994OFOgbkHMlFPm6o52GDQdLPP/9sbrvtNn8rBW2Dci+++OJmueWWM1tvvXVZ7UGmnfS+4447mvXWWy+oJ8Kh5XDppZeWRDn99NO925577hnUoXeIeKm2bWPc8quvvgoM0XKUJenb4ow8whG+AdpVJXYpWrr9UgYWu3yXEyZMMB9//LHhDOHKK69sVl999cByfthIKAbk6JMgpO18L2l0xx13GG4tgPjmae9ZqBb1gX2FG2+8MdDA4dv9/vvvg/qjzXfr1i24KUD2E1F8fvvtt4ZrIOlr2EGhL8FIKt/8NttsYzp27BgVLdWN7xftIEf0qeHvGB7pV+KI87/w9fzzzwffF7wuv/zyQZ1yC0K4D5XpuPaIG4bMwCSK4ItjIq7NcPPSkksuGfxhiX3LLbcM+puouFndwAJs6Q+5AadHjx5BX06/QX8o7QikpenGKfjmj7FvkUUWCdo4dUbfOs888yQmE+6rp0+fHmDM+EH/D22wwQbBeMf4zDjgiDZGWSgT4fnG+G4o07777mtmn312FzT2iZCWm07Agj9+06fT7hjbtt122yDdqAS4JcRNtLnlBAwlSf9jjz026Pf4ThhHX3jhheDJOXN4Xmmllcw+++xj5p9/fplEWe8yvyh+OJbn7Bi5PoZ2DT/gyNjIOXbaNTy5MGUxERP4999+M6+/+IT54M1XzHtvvGS+/uIzs/Tyq5jOK/Yw3dfZ1CyxTGl/9/03k81D/73ap7jpjvubBRdummt4jz9e3hn3ohn3/GPBrznname23++YcBDDXCDgY/xY8+VnH5qJn7xvfv1luum0xDJmuZXXMOtstoNZaNElS+I5h/tvGmZ+nvqD6dJtTdNj/S2CuG+/+rx5a+wzZvyYGe11xdU3MCt0X8cs331t0659U3v96cfvzbuWx/Fjng7Cz2LbK+UGg57b72tmi2mvP373jXnwthn2p9bvtYtZrPPyBrfXXxpt3h8/JkgT/pZfZS3TuWsP02O9zc0881XejlxZeVZSbzI+7x++M848+9Cd5otPJ5ivJn5s0/zVdFxkSdPR4gxOq224pZm7XftwtMjfn376aTDO4IndqySj2cyJGYOhtP798ssvD8Yswh522GH+O3T9Exs8xx13nO8L+JYYs7Gj5Yhvi3mlJJmWdHfvzI/pC/jjG5xzzjlNly5dgu+PuVl4nuDihZ/1MkfLCxdZPtmv9enTx8w111zmww8/9OsD5vUYAeY4HPMrDD1TX3HkxmPmE4ccckgQjPkp9Uc9cFMVeVB3u+yyS+Dv4vAjaQzHnz6VtSXjIeMi4zn9KbyxDkTjWNqUII6kqH6asfahhx4KbmZkjGLsW3rppYM2ONtss8no+h5G4H//+5/Fr37oiSeeKNhJBoYpIv/s5KlgFw0Fu9j3/nZREVsAewtBYnrkc+qppxbs5Co2DedhO5KCnQj7fON4tI3RRSnY6+J8eLsY9u5xL/bD8uHvvffekmB7772397eT4MLxxx/vf0fxY627B2nYBVQB7KLC4Abm8JpG1113XWwapGMnogUrRIhNxtXtDjvsUKDerJAlMT070SrYiWFRehLTuPK4MsmIw4cPT20LxKNt2Y5ORs3lnbqQ/IZxsp11on+YiTzatvyO7AQinEXRbzuweP7sgFLkl/VHS7Vfvl1rNdvzL+tBvtuJU8HeCV5UHDsQ+nhHHnlkkV/UDyvkKmpnVqgYFSzSLc/6oH+w5yM977Kc4Xe+wziyA3/BClhj0wEz2efFpRN2z1If8EmbcWQnDp4PKyws2IVp0VgQLhe/Bw4cWLCLG5dE0VO2RzsxKfLjB/1mlj6ffC666KKS+Fkc6AdlG4sqA2nzvTu/M844IzZpK4Qu0L+6sFFP2hn9TRLJvtoKdQp2chabJu2DfCHai4sblbcV9hXsRkBs1vBFvx8VV7pZoUIwF4hK6IorrvDxqf8wSX/y4xuVaYffKY8V4oWTyfxb5hfFj2zXF1xwQYG+1tqvSOSJectvv/2WmQcC3vNW8d/wJycWVl1v88R8Dv3bBYW7xv9eFHfk678WVlpjQx9vzU22Ldz95v+Kwri8bnp+SqHDggv7sHsddXpRuJFv/FbY/y+DCh0Xie9jXH0c2e+SorguD55ztZsxb7SCisLNL35b6LZWfHslr+FPTQrSGnrbCz6uy0c+l+qycuGika9E5nvpvU390VH9LysMG/VWYZElm+amMh3eyffCO8ZEpkUZjhnY1G737TMwNlyl9ebwGvHMl4W1N02fy8Lz4adfFPCR1tCswN3XMfHsYi8yCm2WMcNhQ98RR3bx6cMRnn7Ikexj3PydOZVLN+3JN+dIfp/nnHNOwQo+E9OBf7vJ4KLHPutljlYpLrEF+8ND4maFEYV77rknETcrqA/G1Lh03XgMvlB4Tuzq9N///rdPwsXBL2oMdwHtkbzUPtUKtQvMFeNI9tP2ZqVgXmE3b0vKTNtUSkeA3cy6oeuvvz6yIsMLZ9l50ejiBBBWAluSHnHlJN81aBZUTDbjyO5ARE6qZCdIWvxmAeJILpbzFkBYaWJR+ZiwhLGBHxYH4clMVFj4txJBx3rJk8WXw8s9wTKcJ35W06IkPg4OL54bbtg0gSEOaYX5xN3umBWlxUSQQSu8KHJu7okwxJHdvSzhnTqHh3A64ForkguDcLnonB2u1nBSIgt5tW35LTS3AKI52+8nn3zisXUY025ZxITbL7+tpNvjb3dxi+JaDR7vF/Ui2xpplbNIyLM+wsJJvjm+Cf7cd+iwsEZPo4pSiOqT4VHy6dK4+uqrI9OIc7Q7JsG3F+bFfb/uSTkcyQkA/uG6Y3Eb/p7hz2qWuCSKnkmTF+qNPsKVjydp02eExyT8rIZIUdpZftjdkpI8SIv0w2WT5YoTQMQt/qP6VfKxO0uxbLp64RnGAZydP+nwR5j777+/CC/co8LihoAsim699daSNGhvUe0W4VAUyYlx1IJf+iPIcmXgSbnAP1w+/KzmY1R2qW4yvyh+ZLsGx3Ddx7XrpPqLYsotQHmyEJaCAcrH78U7lwo+ttjlTyWL4Ssfer8INxbPMn33TlyHr9U8KNw57peicAguwnkiTCBs2J10htzyXFF8l48TQPBcrlvxd4sQwfk7XgjT/9+l7TUqLG4IXVxe7ikFEF1XW68kjzihyhmX31uSFmlmEUBUW28IfML4wCcCpc5dSzepzhkxOuA1qj2F3eS4EBbku7DMpV0duCeL1yiSYykCUEny+5QCCPpJ2VeSB2Gdu3sivHYkv89w357UH7z1lq20GKqnORoCCFduh3kWXGKK5p0lblH9aLgeyJO+TWLvE7MvcjwGW1nHku9HH33UR5Nx4gQQ//nPf0raHOlFjYvkaTXPfPryRfbTVou5cMopp0SmG26rMg19b0KgbgQQTMRkY6NhyMGeyQoL6fDATCOKEkCMHDmyqGGweJaSLfJDiiYbNTtyUcRENNwpsZtu1W2C4Oyu2SMBBaueXrDqYkVJ1FIA4Xhn4j9t2jSfL1JDORC4cOBLhy4nfkyaJaZ//vOffTryJTyxREps1bB9kPHjxxdhZI9OeD/5IusYvvjNIkdKy6kbFuCOb54sAqNIhonyd25yAs3OUVjDgd9MfOnMKtnNdfmkPa3aV1G53E7gI488UuQe1vqQ6ebZtmU7aW4BhKu75mi/4MeuKosYBiOrziwhDepctk1rJLTInwWA45dvP4nsbQo+rLXUnRS0xC+v+gjvHI0YMaLouydj6ps+C6m/272WDOHmyswTgZlVS/VBwNCqovow4Cf9fcCUFzkhpY6SSE4AHG+MFfQPsl9jgiMFXPAWJThKmryggebyoI+0RzxKWEPQyoIyLEwsCRjjYI+b+DzIi3YnxzPwpE92fLhnlAAiLDCBZ/oyNzlnnHrzzTdLNBnihM7yeyBfJpNocUmBmtTKcLzxZLykb3MaljzD4y39fhQhwId3q2JboA7k2EbeF154YREe9jhISTJyYhy14Jf+jm+Ew4zjklhEyUk0k+xKSOYXxU817ZrxMiu5hTOLfhb4ruwsSC+553W/KGaxfeDxZ3t/wp09/HHv79I54bziTaMrHny3KMzfL76jKI0rHninyN+lwy47i+D9jzurcOXDHxSFIY5cMNtjAUX+Lo2wgIH0zr3hyQILbhfm5KFNWkSu7DxZeKPl4LQ4eB57ZvH8kLK6dNxTCiBcevB60V2veq0RBC4DrhxVJJxASyJKoJEmgMij3hB+OF4ROA299fmScsE/Ghg9e+/r/bK0MXucyacd1c5J469//asP4/gIj7cuL4TULoy1neWcg6fsn1wfJwPIBbE91ia9St7l9+nyQ7iZ1h/ECUDreY5WDi4lQIUconCzR3P92ojgjLvhPhuNvyiS47GrX8aC22+/PdCEpv//7LPP/JhGGjJOlACCeY6rU55sOrFecVqRtB3m3+TjwsUJyGU/7fgjDmM04x1zEMobNZ+KKu/M7lY3Agg5EWPAnzx5cmTd0PhcI3FPOWEjEg1KTuTjdvcIi6TLpcNTCj3wh+QuII3O3mYwwyPD/1oLIBAMRFGUSmlU2Ygrd5yYzIeJj14KYFjARRF1JrG0lu1LgsmPlrBMiONIqvza83yRwWR+kQGsI/y7cOTf0iQXFAxgTM5ZGDsekazGUd5tW34nLSGAaI7267CUC1TnJp+XXHKJr4PwgtLa6/B+SdJtFoyuHnmGj9nI/KLe86oPuahPOl4RxYNzs+dqfVmYVMSR1GTiyEe5JHktVwABXuH+3+VPfyT7GwSzYUqavFjbFL781H/eFBa6o3ofR+GdligBBIIx1/aYTEmBu0wXwbEUkoXbugsrsSPdOKFo//79fb6EY/yWAmWXHk957IbFRRylfauSf6mO69KTE+OohZD0h+c//elPLmrJk902hytPN3EtCZjgIPOL4kdObMmDdh2HYbhd2/PpCTkXe7mFsxQMsBi+fexUv9B0YXjuc2xT3bJIl37unUWqw4dddLew5oiDFAr85eyrI+OTDkKC8DEPlz5PhAMuD9KUfu5d5kXY65/+IjKcLBPhEFTc/spPkWG327fp2F7v/fuUhAkLINCUuOO16SXh4BHhjCsDzyiBRpoAIo96O+ikpn7tyDMujeTVYSqfxS0p+pe17eDLyLgQRW6Mkws+NoiiyIUFr3A7l/1T3gII1Oqd8DTMV7g/CIer9zlaLQUQSVreci1EfXJkJ0xyPCYM6w630RsO637LOFECCHm8kfl2VFshLcY32d6ixpVwPw2PtZgbuLK19mfd3IIxZMgQW5czyEpIzYILLuh+Fj0xlobBmSTCwI3dAQuC2E7KWBXe2OAYs8IAoyNpEM25DRo0yL0aeMMQVD2QldIFBuCieMHwHWV3ZCeZgbEf91s+7aTf/+SqSNuh+t+82EWiwdgMZAcKb/wycBD/qDNpRNHuvgnf0leMFGFcLY4OPfRQ7+Xq0zuU8YJRGTvYBTGsdDIwklNG9NyD2gm7TxMDOhhBw8gRBJ9J99bn3bY9Iy3w0lzt1xUtyfgRYezA7IIaq/7n33nBCJ0juwscGEt1v+XTahj5n1ZQERit8g7N+NKhQwefm92lD4xGeocMLxjdtLsWPmTYMKT3sC92Mex/2jOg/r05Xvr16xdrOJX+yC5UPRvl9iFyDLK7Gz6dvF7sro6/Jo6+OmwwV+aT1Ce4cFbbxr2av//974HRSe8gXjCMJa/6xUCpMwgnghW9Mua6PrTIw/6QGONHe8BQWBRhvM1RUn2kfavyamJn7NWlW8lTjlvh+JtttllR2e3uVjhI7r8ZI+IwDLdrq8FSdv43XjLAxzns7xeaOeaKNuy94wF/8eE+fPs1881XpWW3dhms4cIlgnBvWiOOI6+dYfzv0v5HBEYh8dhomz1Mr10P9mmFXzD4mWT8bRlrDNLu1gfRMDSJocck2ulPx/nw4XAbbNXUJ+C399FnmDnmjG6vG23T1F6/+HTGnDKcnvy911H9Yg1WLrZ0F7PzwSf44Pdcf5F/z/qSR72179A0t57wVr79GmOeIwzQMt+SxDzSffe77rprYLwXfwzvYhBakt0Q8WHpHzEU2Fx02mmnxRr9DfcHVtBbxFZrmqMVFSzDDysojw1F328FCt7far7697gXjE9ixLJSshvWRuZz5plnxhpAZnyj3h0ljQkujBVoGCtUdz/1WSYCdSGAsDtB3so8/GPJNIlYTCeR3VX33ggfkiz7ExDrrY7Cd4dbaVlgPd7526Mc7rXFn3vttVdsJwlzUlCClfY4wiK5nFzaXdyioE74gCOWZ5MmCggoHIUXcc7dPeWizrnJp7RaXMkky6WF9XhuJ3GE0MmqXLmfzf7Eer49BuLzldduWlXEROvKebZtz0ALvTRX+81aPHkDAgtwSVjAt5or3slqRfl3+WKNtPqfUoDmHZvpBcvOTgCJUJH2b7UxMucuF6T2OFXiJIBbCRyRl9U4cj9r/gwvfsMZcrONI2sHxL1menLDgyMmQtwSgxXsvAisHDEGzTHHHO5nyRPBO5OdOLLHFPxknTB21ycuaOBO+5DpWZXUxPDc4hNHVuOhyIsJehzJsNX06fShjqqtE6t9liooRFjqiEltrYnFWRJV065/sze4IExw1GP9prHRubknNzbYXX33M7iZwv/444UwJw250TtfO+RUc8WgPub5R+4K3BAcHD3gcu9f6cuiSzdt/HBrRRKts3l8e+3Yqbi9dl83vr06wQp5cVNEGnFTRxJtvefh3vvTD4qF3N4j5iWvelvJ3gTi6MFbrzTDzjwmVaDjwqc9GSet5oMPZrXb/DsvLM4d2SNyRfMyNrokWYP0/qc9HmUQUjUH0R/QPyZRUn/QmuZoSRiE/bhpSM7Zw/7Mw6UgPW0+wi2A3DBVDck8aJdyfRKVLmtLN29iDhieB4bjMF9XqhyBtpVHzS+mnBhaFRgjd++icpGTmCh/uSOStMPu4srOhomYVbH0nZ3kjXwXWGABF63Fn2lX58lrguSELYpxMHcfG+WXJPH8v//7vxKptgwrO192XpMojX/XEZBGtYsaNFfYnUUiTzlZkNEZsaigo5N5JfGclx+SYgQPcofAHn8xVhU4MQtZF9W27cSMmsEzrf7zar/holgV5mCxxg4Luy5c88QCzqo8h4MW/UagYC0fB25WpTrY6ZU7tSyo0I5w5K6Jcr+b88lgD49OWAtftC944gorBJKS9zBvcnFIm5MCs3BYqyZY5GQt+Kcu6IoiVPiDbzbtu5VXQ5bbh/B9oZXAdW8Q3yt/aCwdfPDBqZOZtGK5nUDCZbkKOuk6Ua5XdcQ4lYaLyxMNLEj2K4FD6F/SLpT8TomW9F3LsGn1QbviWjPaIlhRRr5RNgXS+A2xn/gzCVcXUbaj8PjowuT1pO7Srkgm//c5AABAAElEQVSV/KThGOaL6xYl3SS0IaS7e/9qYpPg7vOP3jUrr9G0wHRh7I0TZu9jzjA3X3pm4HTvDZc4L3Py+Teb9h2yzZum//yTmfTJB+aLzyaYiR+/bxfGU8wv06eZX6b9bCbavLPSAgvF75rOYa8BlZR0fShXhjri2sskskdAzJxzN4WPCrvokst550CT4/tvzTzzdvBuSS951dsSy65ottvnKMO1pdD9N14W/PXe79hAS8XasEhiI9WP63HRfoCsDRWz1VZb+ThWDd+/I6iUgjSurpYbfFad3oflqufmoqRFtONBfn/h/kD2TY0+R3PlzfLMgpvEw9rXSEy2WuEDicsxlute04irVuHRaSQTX27OhuNnSTMcR383IVB3AoilllqqibuYt4UWWijGZ4az3HmXu5pxkeadd95gwuYWgyxMuMcVYjLtKMtExYVtjif3umelpI8oLQ0pRWQhIxdZSXGdQCMuTNJENS5Ope5M8Lm7HmGD23lE7Y9dbf7QlEGVinuem4MQZKGqfPLJJ/vsOIaUtCgkYJ5t22fcQi/N1X4pHpMEhGcsJis9JoCEn50PhJS0bY4YMdlyZG2puNdgBzrLItBHqMELGkYIIg4//HAv6OKICH8sUlGrZ6ecXaswyYGb/jDpCEY4rutHw+55/651fwx21i6IYXyQR/Nw44+dshNOOCE4glDJfd9SyJO0wHe4JX0vMq2sfZgca2Uf7/KTz06dOsmfse+0+TSNw9jIf3ggZGChMnTo0OBbSwtfrX+acL7a9MuNX+t2/eVnHxax9N//nFf0O+kHi+Y42uvI083Lo0eZd8e96IPsdugpZtUEDQMXcILVyLjPCi3Ykc+DOiyYrb0iNIg7flIuH4t1btLQiIs7a9u2wXGVyZM+DYJ8bZ9ZBRB51Rv92hH22Mxc88xr/nvluZ5VhEb8WeOkZueDTjAcVWlrj2uVSxz/derr9jpL43aJWZg7TSuOanTs2DHY0GNu6sZTtJnceCTHabQlmouq7Q9a0xytHMzdmikpjpzzp405cmM4Kc0kPykMylqvCFKcAAIhCfO+KOI4SXNp5UTl3xrc2tRDIewNBJ6NLJN2FmlJ4eQRgqTjAj5T+yLPW1oDWN5LppWmmeEjVfESlqYmJZW2SyLjVvOhhM+4MWBk+WPHNYnK4T8pnax+dBjWiIxBfZ7FgyRrAC44ssJCq9wdJZlOOe9hbQfUDNNItsdq23ZaXmH/vHEpp/6rab/YNEF7YbvttisSPtCHoAWDVgD2SPhLI3lc65prrikKLs8aHnjggUV+tfiRpT6sgaZg55gFtNQcQ6hw0kknBdJ+twsueQwLD7N87y4MuwjNQXIXqlb58Y3ZG38CoSUCGznuMElByINqp9T8ysqL/JazfAtM2ONIjqFZ+wWpjSDHvKg8ZNgo/7zc7M0qwVlvhMJusULatC1w5hwxfhwLyosQMNUT1bpdf//N5KLickQi6x8L9jhqM+usRmoMEC4pvEtn1C1XmL479SgRPnD0Y+1Ntzeb7XRAsGPvwmd5hrUcssRprjBzzDm3z+rnn37072kvedYbfcRBJ55j7A0jBnsZsp4QIA0+cR9zyr4bmk/efzONrRL/tdZay/eTbPK4I1LWKLkP62zBwAdHMR0hsIBYnLoxCKF/lo1El0a1z2q/P9mvZ+2L49Yf5ZYly5yg3DTzDC/nBmxUhLUnZV5yrJXu5bx/++23PjiCtywkx7qkcbHadpKFl9Yepi40IGTnksXAEx9Z0i4bu0luB891fkkVSXqusyMckx1HctLeHGc/myMPV7asT2xJODzttWhFZ4ezplEv4RBeWYv+wd/YsWONtWDr1erhEVVzpKbWAm7NWU7TdohiIM+2HZV+khtHFRqRMDx07bXXetapY4Q/K620knfjhb5Chivy/OMHkyVnLPC2224zHOdgYUhbcpo19BnSGFdUOnm4Za0PdpQ48mNvqDAPPPCAufjii42b6NHvYdDPXtNZZHtH7maAF4vwmZnoAxFSYpDYXj1p0FZy9Y0ggkkyO1/l7Nqw0+L61Sx1yeI8jqRWIG0yC3G8wVGSdoULU+snk1FsTThcmYDaq/fM7rvvbsIaGIxDqHcrlY9Ax0Wb7Gegbn/hf18uP5GIGHdfd6EZ98LjRT4j/tXPrLHxNmb5VdYqcnc/XnnmYXNZ/yPdT7PuFjvZBfHxhiMd4cXbeGvgUtqu8JHq5AVthiz02YdNtl+kjYm0uLWoN7Q2Dv3bBWa/voPM6PtuMndePcQ4/hBEHL39ymbYqLfMEssk20SQvDOv4cgE4yP0zDPPBHNGjlg4kpstfPOMSRDaeQjN7fXwLqiRYb1jHb/MrHM0OZ7EVY+9acJ7cdw+q1DARyrzRY4bWdaCJC/XYDJ+mVlr8AwI1IUGhFSNkWdZ4/iXwoKoMFKgwU5fGsmPgkmP3BGR6pBpKkNp+WTRbpCqtGnpNZe/XKhJ43TNlX+t8sGqsr1S1NBGOJrhCINz48aNcz/r6pln2w4XLK19ZhlgwmnWw293hh9emOiwmJZt2vGYpa9gMc8OrCNnVEsev+Aca3jy7MKX88y7PtAiwfAgQgh7/XCRRWqEKjI/qb1kr+8th+1WHRZNBWxoIGzg9gi5S8ONHOWQPP8c1jKLSiepfcqJUtYxRFqdz3psI4qvvNxQd3Vnx0nTXncX2OiRZXN5SdtMzk2f2RBYdKkuPuD7b4wpufXKe5bx8v74seaqc0/0MdbcpOlo2nnH72Vvw4je6X/8nhE+Djdl/O2i/5ru6/SM7D+zGIH0ibXAy7dff2nS7ESEb++Yv2P2Y7S1qDcH01zt5jFb73lYIGzAoKjUiLjBCpHKJWn3gSO7zNndt432qRRwI6x3/SjjqL0mOPj2XZ7SgLhzq+fnzDpHkwv3uPqRY5g0kh8Xvlp3KViX411SutI2BUISpdoh0CZJBaZ22RanLM8F0VGlqbOmLYI32mgjn4G8Fs87hl6k9V1p0Z1gsgGjdYE0txySwoy0SRNqtG73p5w8ah1WdhTyXF6t8y03fbmAKicuAwZnjuV5fna065HybNuUT141mLYIqlehTFI9MeBJgWXSMQt5djMpTXm7BZoDHPGQxy+c4cekNOL8mqs+uAkGI19O24u+Tdq7kYtjdqOy7h7ElSurO5PPRiB2bjh+gV0RR9Jqu3NLeqIB4ejhhx92r7HPpO8PgZGbxFOXbrIflxg4//e///Xe9TDReumllzw/nLtFlTuO5PGMuDDqHo0Axy3kAvONl56MDpjRFcORg0/Y24fe7bBTTb/L7jYr/WGsEqOSV/7zOO8vX2Te3BARd9Tu6y8/91d6yvj19v7++DGJLL3w2D3ef5EllzXYhMhKeddbVL70az1772POvKqpX3v9xSeigia6yZtwECTKW8fkZg+JcPvPzjvv7NPDVpecZ8rbiHygMl8wXNtc1EhztDxxQRMwzZA3V087kpu7zi3vpzRkycYLNy4mEWtPp5VIOCkoS4qnfpUh0KbWKjBZ2MKAl1RZltcSRsVHFTaJdtppJ++Nobjw1Zre075w/EKqF8u4hGMnU15XVo4xNuLLjww+ks4UNYfaPzyVS3IwQe3V7fqWm04twrtJN2k7wzGV5EM9b7LJJj5q1HdB5zV16lQfpiVeZPustm3DvxQuJd1a8uOPPwZG4VqizNXkGa6vOAN59AODBw/OlBWLI3efNd8DAkwn5MBYlvzmMyUoAjVnfWAItUePHj53MHDEUQJ3/IwFLUcPakXyGx41alRwI0mt8so7XblI/vnnn8tKXk6s0aaQu0PhhBg7koz/MobKa42l0cxwWvy+5ZZbfJsFf1mOqPDN4SYnr1IQF86bnTZ53W3YX3+nI7Ber6YF31XnnlCk/ZQeuzgEmg9Obb9z11XNvscOCBbWJ5w73Ad86ParzNMPNgm8nMc0YQNh7vbzOeeS5z3D/1XiVo8O8vaPMH9s9t15zVDvvMZGW/v3rC951ltSnvLIzHR7A0m5hADbCTWZl8lNvqgrfeW8Bg1UxhyITaG4MTuNJ3lGP6nvTEunXH9Zlnqco9UKF+pM3nISxo0NLnnEddNNNw0Hyf03Ws6uHcKf3CiKyoyjlY5Y90mbFc5dn/khUBdHMCjOwIEDfamwMM4EKYpoQFI6GhUG695yF5L3KK0KJjxcp+YkXky4uQkhTM6KL+4svv/2t7/FGipkF5EdUUfS0jiLFMoWRSxkajnJj8ozqxvq6lh7d3TAAQeYkSNHup8lTzQ52F1LOrNcEqlCB3mtT1K7YFBLUsFioerOLMJK+Cz3+eefb+i4UcH+179abjKUd9uWqvaokEftdCN84OpBNymosKpaJJobfFzmciLk3NgF4JrWcgRYsp+QRzK4VaIayqs+sCmAsVVpnDDMF5pkTJAcSTsC7EphH8URQl/6QSmkcH48Eayy05W0Sy/Dy/fwLoM8/yvDNfc7i34EInFlhh+pRSCFR1l4ZQImBe/0q1F9Jkef+P7SSIahL2RMjdIKYzeS64cdcduEFAI59+Z+yj6XNhClMchxSQy8NmJf1Nx4JuV34PFne2+OYZx/yv7m+2++9m7hF26pwF5DmJ575C4z6ubLvfOJg0eY2eeYYYSWHf6+/7jK+/3r7wcbeaUnHp1XbBKAPv3ADJsBPsIfL0/ef4sp56aOcPzm/P3YXdebR+1fmDiacfmZxxTZsNjt0FPDwVJ/51Fv773+snnJ3laSdFzkmf9rEhZlud0jinGMPjtCUxDCVo78zp0/10I7kotYqZXq/LM+5bEyObfLGr/ScPU+R6slLqyNpCabwxDDnLvuuqv7GVwJjm2f5iDmdo647S5qAxXhIHMcKaBIE+K7NPVZOQLZ9b8qzyNTTHbZmYw5SSWGaJj89ezZM7DJgPSMxQNuWejCCy8MBBVMVDjWQMfHIhqJGJMtJsoYE5OqnCwypTValw+7nZz7ZRELoTGB6u3WW28dpEseCB5YlJMXvLqjG0hv5V3y8PDCCy8ExrbY5SHes88+WyQZdPnW05PFKYMIQhTKy80BlH/99dcP7nJmAc9EmaMLThBAOdllrSWhteAWjiyQ5G4eZ7lYHGIUiasIIQY6zhSyS83RC4RQtIXLL7/cH39BEOV2uImDQEl2RuTDbQh5nPMn/XIpz7bNZH7AgAEBC9QtAh2MDjJJmDZtWnDWnU7ZCenK5bWlw7MzTDt1RhcxaIUFbtw4W47BUTSuyj36hDFKd2e5036grFKVtJKy51Uf9CvuJg4Wtpy7ReWfPgchE/2s1DQDk/C3yk4VE0DX55522mnmhhtuCDTCnA0Nvnls42BgjH6BxSxX3pZDCPX43l577bUgGvyyE8F3SL9CO2yuyYrkmyMVGO7kmApCbMYQhCVYycZYMoYQ5Y4OY0S5hJDAXTGHEJp6QoiFIArBB4JzvnewTSNwx+Aq1/tCfNcIG6hH6otxCdsfV13VtCikTAjh64Hgn/6bsvKHVgb1jqAG1Xz6adpXFizqoTz1zAPGDw8+ZbC55ryTAzZH33ezee25R80GW+9ullpuZYM2wjdfTTRfff6xee6RkYZrI7mRYrUNevlicSzi/FMO8L///NfzTecVir/9XrsebJ57eKTh6AFXeF5w6oFm0DUP+6MWPdbbwrzy9Awh6B1XDQ6u8OT6x4UXX9rmP8mwEB7z1IybEXxGdf5CGZ97+E5D2RZevLPBdgXlkAY6t9v36KCM5RYlj3rjSAVaKxzp6Nl7X7Okre+FF1vazDF3uwDzFx+/1zxy57Weta33KL9fIzJzrfCGG/P6KOKoMjvO4RuZXN8YFSfNTV6fyByRo5PMW8mLMQs7FU7LLy2tcv3reY5WS1yYCzGGIQznhjE2NV555RXDjWFyDnnWWWf5PqBcbMsNzxoAoRYbJBBzNOYY3KpE/dMWOJ7h5oiEgf9u3brxqlRLBOziygp/6oPsZLZghRAFW97EPztpK9gG5MPYSWpkAezkrWB3QH24uHTtpKdgF9eRaThHuwtcsI0yNS3ysBM9Fy14WulfwU5iU+PazrFghSA+nJ3gFqXDD9uBe397hrvEXzpILO31k9Kr5N1OeH26Yf5dYPuhZqofh7MVQLio/gnWzt/uPHv3qBd7hZMPaxeMUUEKtsMryDRd2u5pj00E8dzvtCdphbGyu4gleVh160h+ynG0u52+fPBVDuXZtq1ArYiPOIxsB+1xsINLOez6sC3Rfq0gKlP5rBCqYNUng7B2YPI8x73YBWdRulbIFRe0LPc86oNvL64ew+58+3ZnOZJHq0FRsIKWzGnZBWJkOmmOVhMjNg87ofHR+TYd//RvaXTRRRf58FaIWBI8qT1SFpdX2pN0rBZISfpZHKyALzUfxjHGA8eHFTJEJk1fhZ8Ll/S0E/6SsUomKvvVpL4aP5cPcZKIscWFpd2Fye5Uen8XLupphfY+HN9hmK644grvz3whTGn+4fCuX4AX8i6X0vLLu13H8XfPW4WC+xv5xm+FI06/2OMUhbN0swIIH/eu8b8XVttwSx931fU2L5CeS1s+hz81qWBtTviwfzrxHB/ujtemF+yxDe8n85Pv9irOwiGnDPHhrnrkQ5+Gy0vmQbrOPfzEz6VNnLC//D38yab2unjnFUrCXnpvU3+0/pa7FDbZvml+5vIIP7fY5U+F28dOLUmLfI8Z2NRu9+0zMDJMNfVGHn8+NXu/RnlGvv5rwEdcm4pzD89vwMEe84wLXrCCUV8vhGXOnLQ+SeufiGsXmUVpyrqwgnXPS9r36QP+8ZKlP6jXOVo5uITLHf4tcfv73/9esBsJsXg77BmT4yhpPK4mjr2Os8B453hIelqNiYLd9IjMrtx+OjIRdfQI1M0RDNsgDNfXIKVitz1KMolkDbVidnjcDhzx4nai2c1FHQhpmzO2RnhHuGEQh52V/fbbzzlHPtn1woI+WhjwEUW2Qwx2RaXhScKxs4iBu759+0ZFC3bW2AnDArA8ixtlkIkdXUdp1zjKsFFpuXR4yrTkuwyD6haG68BBagjIMLyzY8XNA7KOXBipYRJlZ8GF4yl5juMJCSu7ekgzo8i1DbDFACF1FEW4oz7GjiO7gpJIA+m8I9tJ5nI2TJbPpZ31mWfbRuOBXe5wueEFXCg7Umx2DFzbr5R32Sbj6tRhIMOm5SfTku+kxTEMvr+467zQvGK3+4gjjjAYZ4Rmn3324Jn0L2zQkqs986A86gMNFrR64soMn/SxaEFwV3tU/0gY+jK+ZY5qxH1jhGPHnt333XbbjZ9lE1pJaBRE9fvyXm7ZDmT7iMtQhg+3C+LINML+7Jah7ZRUbvy43x7tsHD8OJ7C7mggUAe0wzBRL1wbTB8nLcvLcsk49FWMJWg+xNU9fTdtA001p6kn03DvWftq2Y/LOC4d+ZQYyXcXBo0H2lpcX4SmDrd8sIvn1Laj0pFu8t3lI93ku/MPP2V/EId9OI78LfOQ7y6MTFO2SecffsrwUemFw0f9Jo3e+x9rrnjwXWMXz8GOeFQ4dsp779/H7H30DM0awjx+zw1ecwGDlsedfU3ReC3Tmb9jJyPtQVw39K9mktUKgGaz/ew/hz9udjn4RBnFv2NT4tgz/22O++e1putq63n3KOONc8w5l/eXbdI7/vEi/WSccDh+y3zke1RYjjRwg4QVlJiluhTPIQhvBRjGChiCsswx19xRSWTKr5p6I9P1bF1zlMMZCY1iBL9+w+42J5w3ooinqLBxbtwYJftOxuGkeWP4uAW2FGRdhfORfU1UONzom+M00+T5fvkNyfdwnu53lv6gXudo5eDiypvlyXXkGD9GMzRqPkGfjYFRtIfjSPZ9WeqBdLLE4fg0GupoYsS1QTcP5OpnjqBGkex3Zb5RYdUtHYFZEEWkB2uZEKgKW4lTcCxilVVWiW0UWbhDnRXjVRj6shLAQNVcnnnOkoYMw9la1JxRxaVR8sExeZYdkwzv3onH2VbUkegA+RhQQW5E4tw3xxy4d56PkQ4ItfaWKg98wA8qutQHi7BwR0Ldc+yGs9aodsMzt7DQFmTnEq4P7AQgHCMMaoFZO8dwOrX4nWfbxtAmKmmc2XOGpKIG91qUoznSpHwsYLCRwISIYwlOSFVu/u4YFvFIi+MceWOVR33QzrlKk++C/odFJ8ePmCCWSwwX9F+uH+W74RtKMhpYTh58nxzroH8kL/oTBJ8t/b3RX3BMB3so9HX0GfxJ4Ug55YwLy7dMO2KsQoArb4iKi5Pkbnd+Ats3qMaSFnYqGmXiBM+0A/peJvNR13EmlV39ShG49+1SN+ny/TeTDbdW/PrLdNNu3g5m3g4dzXxWAJE0Nsr41byT5xeffWgmT/zEcD3lYnbBjoCinunj98abY3rPUNXuvs6m5uzhj3l2f7JHTj6bMAPwJZddycxpjzjUiiqttx++nRIYEMUY6KxtZzMLLryYWcD+RfHau2utuK99uvTb9CXM1xn3GK/zGrOycF+vc7RqccFwPhs3EBsQ8ipq7PUw12KMpP+up3GHdsA8hvkV81zsdlQ6D8xS/xomGoG6FkBEs6yuioAioAi0PALYgUCzBsIuDJoLSoqAIqAI1CsCaQKIeuW7XvmSAohua21szhkxul5ZrZqvRhZAVF14TSASASmAQPPO2R+KDKyOikAIgTZ1rAARYlV/KgKKgCJQHwhgMNEJH+AINXklRUARUAQUAUVAEVAEFAFFQBFIRqBNsrf6KgKKgCKgCEgEfvnll8CKsnPjzCNHGpQUAUVAEVAEFAFFQBFQBBQBRSAZARVAJOOjvoqAIjCTI+C0xLCf8MwzzwTXFrorI4GGqxqVFAFFQBFQBBQBRUARUAQUAUUgHYG2eRtNS89SQygCioAi0DgIcEvBHXfcETCMIUdJ9hqqwEiidNN3RUARUAQUAUVAEVAEFAFFQBGIRqBttLO6KgKKgCKgCIAAVvjDggfczzvvPHP44YfzqqQIKAKKgCKgCCgCioAioAgoAhkQaItacXNcsZSBFw2iCCgCikDdIXDggQcG13ZxNWL79u2DK6W4o5xrd5UUAUVAEVAEZk4E5pl3frPJ9nsHhV9q+VVmThC01DMtAlzrvPfeM9r/qquuOtPioAWvDAG9hrMy3DSWIqAIKAKKgCKgCCgCDYOAXsPZMFVVd4zqNZx1VyXKkCLQ0AjoNZwNXX3KvCKgCCgCioAioAgoAoqAIqAIKAKKgCLQGAioBkRj1JNyqQgoAoqAIqAIKAKKgCKgCCgCioAioAg0NAKqAdHQ1afMKwKKgCKgCCgCioAioAgoAoqAIqAIKAKNgUCbxmBTuVQEFAFFQBFQBBQBRUARUAQUAUVAEVAEFIFGRkAFEI1ce8q7IqAIKAKKgCKgCCgCioAioAgoAoqAItAgCKgAokEqStlUBBQBRUARUAQUAUVAEVAEFAFFQBFQBBoZARVANHLtKe+KgCKgCCgCioAioAgoAoqAIqAIKAKKQIMg0GaWWWZpEFaVTUVAEVAEFAFFQBFQBBQBRUARUAQUAUVAEWhUBFQDolFrTvlWBBQBRUARUAQUAUVAEVAEFAFFQBFQBBoIARVANFBlKauKgCKgCCgCioAioAgoAoqAIqAIKAKKQKMioAKIRq055VsRUAQUAUVAEVAEFAFFQBFQBBQBRUARaCAE2jYQr8pqDAJ9+vQxkydPNm3btjVXX321mW222WJCqrMi0HoROProo80333wTtP/hw4e33oJWUbLffvvNXHfddeaFF14wb7zxhvn999/Nqquuarp372522GEHs/TSS1eRukZVBBQBRUARUAQUAUVAEVAEkhGYpWApOYj61jsCnTp1Ml9++WXA5tSpU83cc89dxPKwYcPMNddcEyww+vXrV+TXWn7MDGVsLXVVq3LMO++85ocffgiSr6RbY3F+/PHHm5deesmccsopZpdddqkVqy2S7ieffGL23HNP89xzz0Xm/+STT5qNNtoo0k8dWw8Cjz32mOnfv79ZbrnlzIUXXmjmm2++uimc9uN1UxXKiCKgCCgCioAiUDMEVABRM2ibL+EkAQQLMhZmjt5//32z7LLLup+t4jkzlLFVVFSNC1GtAOLRRx81W2yxRcDlEkssYT7++GPTmm4JQvhw2223+VrYcMMNg/enn37atG/f3kyZMiXQovIB9KVVIoCQiTqH0BQ64IAD6qKc2o/XRTUoE4qAIqAIKAKKQM0R0CMYNYe4ZTOYddZZixj46aefin7X848vvvjC3HrrraZLly5m2223jWW1kcsYWyj1aHYEpLDhu+++M2hRSLdmZyjHDF977bUi4cOzzz5r1ltvvSAHjmGo8CFHsOs8qTZtmkw/oTFXL6T9eL3UhPKhCCgCioAioAjUFoGmmUht89HUWwgBjmMMGDAg2OE8/PDDzSqrrNJCnJSf7Z133mn69u1rrrjiisTIjVzGxIKpZ7MisMEGG5iddtrJLLzwwmbo0KFGLtSalZEaZIbNB0eHHXaYFz7gxsJvoYUWct76bOUInHjiiQYNn80339zstttudVNa7cfrpiqUEUVAEVAEFAFFoKYI6BGMmsLbPIknHcFoHg5qk8t2221nRo0aFSwKR44cWZtMNNVWg0C1RzBaDRARBTnjjDPMoEGDAh8M1R588MERodRJEVAEFAFFQBFQBBQBRUARqC0CbSox1lZbljR1RcAExgQRPigpAopA9QhggNIRGh5KioAioAgoAoqAIqAIKAKKQEsg0LYezzgjFHnqqafM66+/bsaNGxc8Uc9EbRQDir169TLrrLNOLF7jx48PrpkjPmefuZ5y9dVXD66b23jjjc1iiy0WGzfsMXHixIAXrqx75ZVXDGfDubZutdVWM2uttVZwfV04jvxN/g888EDgdOyxxwY3VEyfPt3ceOON5uGHHzaTJk0K/DbddFMTdUMFt1tgtXzs2LFmzJgxQfy1117brLnmmmaTTTYpufFC5u3esSyOgS9wOO6440pUy++7777gSj7UsN3O6Lvvvmuef/754I+8F1hgAbPyyisH5d59990zGav7/PPPzYMPPmg++OCD4I/fGLsDu3XXXTew6xCl5o6BtHPPPdexH7SB8847z//mpVu3bmb77bf3bmll9AHtS7V1Wiu8JI9x79jwoD3QHvk2JkyYYLp27Rq0b65SpH1HYerSq7Y9unTinpwpR3D09ttvB7xhyBF+aDt8g7vuuqtp165dXPTAHdsffB/vvPOO+eijj8z3338ffLOLL754UO9oxpTzDcvMpk2bZi6//HLzyy+/BM58S5tttlnwzhWeV155ZfC+zDLLmD322ENGDd5dO+P7w2Al9hP4Lrk5A7sKfDedO3c2K664ounZs6fhu04jbt+4/fbbg/7lvffeC/oEykpfN//885dEB79jjjmmxD3K4ccffwzaizyCgSFK2o8jvsetttrK/fTPem1r4ToAvyeeeCKohxdffNF89dVXQVujXHwP1GUWcunQz1Ofn332WXBkrUePHkE98p3FUSXfVVQc2jtjH30g/ow12Or4//buA06PovD/+NwlBAhIDSV0CKGDgPTeIop0CZ2AlB9FUEG6fxCQpjQFQVACgVCkl9AhGoIg0gOEUCVA6C0oTfHy/Oe7yczN7u3u89xz89w9l3zm9Uqe3Z3d2d337vPczuwU/a3Rd8gF/Y3U90P3nNZ/8cUXk/tl8ODBZvvt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AAIIIIAAAggggAACxQIMw1lsQwwCCCCAAAIIIIAAAggggAACCEQSoBPKSJAkgwACCCCAAAIIIIAAAggggAACxQLUgCi2IQYBBBBAAAEEEEAAAQQQQAABBCIJMApGJEiSQQABBBBAAAEEEEAAAQQQQACBYgEKIIptiEEAAQQQQAABBBBAAAEEEEAAgUgCFEBEgiQZBBBAAAEEEEAAAQQQQAABBBAoFqAAotiGGAQQQAABBBBAAAEEEEAAAQQQiCTAKBiRIEkGAQQQQAABBBBAAAEEEEAAAQSKBagBUWxDDAIIIIAAAggggAACCCCAAAIIRBKgACISJMkggAACCCCAAAIIIIAAAggggECxAAUQxTbEIIAAAggggAACCCCAAAIIIIBAJAEKICJBkgwCCCCAAAIIIIAAAggggAACCBQLUABRbEMMAggggAACCCCAAAIIIIAAAghEEqAAIhIkySCAAAIIIIAAAggggAACCCCAQLEABRDFNsQggAACCCCAAAIIIIAAAggggEAkAQogIkGSDAIIIIAAAggggAACCCCAAAIIFAtQAFFsQwwCCCCAAAIIIIAAAggggAACCEQSaK1UKpGSIhkEEEAAAQQQQAABBBBAAAEEEEAgX6C1paUlP4alCCCAAAIIIIAAAggggAACCCCAQCQBmmBEgiQZBBBAAAEEEEAAAQQQQAABBBAoFqAAotiGGAQQQAABBBBAAAEEEEAAAQQQiCRAHxCRIEkGAQQQQAABBBBAAAEEEEAAAQSKBagBUWxDDAIIIIAAAggggAACCCCAAAIIRBKgE8pIkCSDAAIIIIAAAggggAACCCCAAALFAtSAKLYhBgEEEEAAAQQQQAABBBBAAAEEIgnQB0QkSJJBAAEEEEAAAQQQQAABBBBAAIFiAWpAFNsQgwACCCCAAAIIIIAAAggggAACkQQogIgESTIIIIAAAggggAACCCCAAAIIIFAsQCeUxTbEIIAAAggggAACCCCAAAIIIIBAJAFqQESCJBkEEEAAAQQQQAABBBBAAAEEECgWaG1rayuOJQYBBBBAAAEEEEAAAQQQQAABBBCIINBSsSFCOiSBAAIIIIAAAggggAACCCCAAAIIFAowDGchDREIIIAAAggggAACCCCAAAIIIBBLgE4oY0mSDgIIIIAAAggggAACCCCAAAIIFApQA6KQhggEEEAAAQQQQAABBBBAAAEEEIglwCgYsSRJBwEEEEAAAQQQQAABBBBAAAEECgUogCikIQIBBBBAAAEEEEAAAQQQQAABBGIJUAARS5J0EEAAAQQQQAABBBBAAAEEEECgUIACiEIaIhBAAAEEEEAAAQQQQAABBBBAIJYAo2DEkiQdBBBAAAEEEEAAAQQQQAABBBAoFKAGRCENEQgggAACCCCAAAIIIIAAAgggEEuAAohYkqSDAAIIIIAAAggggAACCCCAAAKFAhRAFNIQgQACCCCAAAIIIIAAAggggAACsQQogIglSToIIIAAAggggAACCCCAAAIIIFAoQAFEIQ0RCCCAAAIIIIAAAggggAACCCAQS4ACiFiSpIMAAggggAACCCCAAAIIIIAAAoUCFEAU0hCBAAIIIIAAAggggAACCCCAAAKxBCiAiCVJOggggAACCCCAAAIIIIAAAgggUChAAUQhDREIIIAAAggggAACCCCAAAIIIBBLoLVSqcRKi3QQQAABBBBAAAEEEEAAAQQQQACBXIHWlpaW3AgWIoAAAggggAACCCCAAAIIIIAAArEEaIIRS5J0EEAAAQQQQAABBBBAAAEEEECgUIACiEIaIhBAAAEEEEAAAQQQQAABBBBAIJYAfUDEkiQdBBBAAAEEEEAAAQQQQAABBBAoFKAGRCENEQgggAACCCCAAAIIIIAAAgggEEuATihjSZIOAggggAACCCCAAAIIIIAAAggUClADopCGCAQQQAABBBBAAAEEEEAAAQQQiCVAHxCxJEkHAQQQQAABBBBAAAEEEEAAAQQKBagBUUhDBAIIIIAAAggggAACCCCAAAIIxBKgACKWJOkggAACCCCAAAIIIIAAAggggEChAJ1QFtIQgQACCCCAAAIIIIAAAggggAACsQSoARFLknQQQAABBBBAAAEEEEAAAQQQQKBQoLWtra0wkggEEEAAAQQQQAABBBBAAAEEEEAghsD/BwDhXHdqSizjAAAAAElFTkSuQmCC"/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><path id="Line" fill="#C06334" fill-rule="nonzero" d="M309.315 59.871l1.064 1.694-.847.532-130.147 81.799 3.193 5.08L167 150.5l8.128-13.377 3.193 5.079 130.147-81.799.847-.532z"/><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M349.496 60.872l.004 1 .45 128.874 6.001-.02L349 204.75l-7.049-13.975 5.999-.022-.45-128.875-.003-1 2-.006z"/><path id="Line-Copy-2" fill="#C06334" fill-rule="nonzero" d="M386.71 57.027l.256.966 35.404 133.219 5.8-1.54L425 205l-10.361-11.732 5.798-1.542-35.403-133.22-.257-.966 1.933-.513z"/><text id="selection" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="20" font-weight="normal"><tspan x="295" y="44">selection</tspan></text></g></g></svg> \ No newline at end of file diff --git a/2-ui/99-ui-misc/03-event-loop/article.md b/2-ui/99-ui-misc/03-event-loop/article.md index f33188491..012402355 100644 --- a/2-ui/99-ui-misc/03-event-loop/article.md +++ b/2-ui/99-ui-misc/03-event-loop/article.md @@ -1,33 +1,47 @@ +# ইভেন্ট লুপ: microtasks এবং macrotasks -# Event loop: microtasks and macrotasks +ব্রাউজার বা Node.js এ জাভাস্ক্রিপ্ট এক্সিকিউশন ফ্লো হয় *event loop* এর উপর ভিত্তি করে। -Browser JavaScript execution flow, as well as in Node.js, is based on an *event loop*. +একটি সঠিক আর্কিটেকচার তৈরি করতে এবং অপ্টিমাইজেশনের জন্য কিভাবে ইভেন্ট লুপ কাজ করে তা বুঝা গুরুত্বপূর্ণ। -Understanding how event loop works is important for optimizations, and sometimes for the right architecture. +প্রথমে আমরা এর তাত্ত্বিক বিশ্লেষণ করব, এবং তা আমাদের ব্যবহারিক জীবনে এটি কিভাবে ব্যবহার করতে পারি তা দেখব। -In this chapter we first cover theoretical details about how things work, and then see practical applications of that knowledge. +## ইভেন্ট লুপ -## Event Loop +*event loop* এর ধারণাটি একদম সহজ। একটি ইনফিনিট লুপ থাকে, যেখানে জাভাস্ক্রিপ্ট ইঞ্জিন টাস্কের জন্য অপেক্ষা করে, টাস্ক আসলে তাদের এক্সিকিউট করে স্লিপ মোডে যাবে, এবং আরো টাস্কের জন্য অপেক্ষা করবে। -The *event loop* concept is very simple. There's an endless loop, where the JavaScript engine waits for tasks, executes them and then sleeps, waiting for more tasks. +ইঞ্জিনের অ্যালগরিদমটি হল: -The general algorithm of the engine: +1. যখন কোন টাস্ক আসবে: + - তাদের এক্সিকিউট করবে, প্রথমে সবার শুরুতে আসা টাস্কটা এক্সিকিউট করবে। +2. টাস্ক আসা পর্যন্ত স্লিপ মোডে থাকবে, এরপর আবার ১ম ধাপে যাবে। -1. While there are tasks: - - execute them, starting with the oldest task. -2. Sleep until a task appears, then go to 1. +যখন আমরা কোন একটি পেজ ব্রাউজ করা শুরু করি তখনি এটি ইনিশিয়ালাইজ হয়। বেশিরভাগ সময় জাভাস্ক্রিপ্ট ইঞ্জিন কিছু করে না, এটি শুধুমাত্র রান হয় কোন একটি স্ক্রিপ্ট/হ্যান্ডেলার/ইভেন্ট এর কার্যকলাপ ঘটলে। +<<<<<<< HEAD +কিছু টাস্কের উদাহরণ: +======= That's a formalization of what we see when browsing a page. The JavaScript engine does nothing most of the time, it only runs if a script/handler/event activates. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Examples of tasks: +- যখন কোন এক্সটার্নাল স্ক্রিপ্ট লোড হয় `<script src="...">`, টাস্ক এটিকে এক্সিকিউট করে। +- যখন ইউজার মাউস মুভ করবে, টাস্কটি হবে `mousemove` ইভেন্টকে ডিসপ্যাস করা এবং হ্যান্ডেলারটি রান করা। +- যখন শিডিউলড ফাংশন যেমন `setTimeout` কল করা, তখন টাস্কটি হবে এর কলব্যাককে এক্সিকিউট করা। +- ...এবং আরো অনেক -- When an external script `<script src="...">` loads, the task is to execute it. -- When a user moves their mouse, the task is to dispatch `mousemove` event and execute handlers. -- When the time is due for a scheduled `setTimeout`, the task is to run its callback. -- ...and so on. +টাস্ক সেট হয় -- ইঞ্জিন এদের হ্যান্ডেল করে -- এবং আরো টাস্কের জন্য অপেক্ষা করে। -Tasks are set -- the engine handles them -- then waits for more tasks (while sleeping and consuming close to zero CPU). +ইঞ্জিন ব্যাস্ত থাকার সময় কোন একটি টাস্ক আসলে, এটি enqueued হিসেবে অপেক্ষা করবে। +<<<<<<< HEAD +টাস্ক queue হিসেবে থাকে যাকে বলা হয় "macrotask queue" (v8 term): + +![](eventLoop.svg) + +যেমন, যখন জাভাস্ক্রিপ্ট ইঞ্জিন একটি `script` এক্সিকিউট করতে ব্যস্ত, তখন ইউজার মাউস মুভ করার জন্য `mousemove` ইভেন্ট টাস্ক এবং `setTimeout` ফাংশন ইত্যাদি queue তে অপেক্ষা করবে যা আমরা উপরের ছবিটিতে দেখছি। + +এতদূর আমরা বুঝছি, তাই না? +======= It may happen that a task comes while the engine is busy, then it's enqueued. The tasks form a queue, the so-called "macrotask queue" ([v8](https://v8.dev/) term): @@ -37,28 +51,37 @@ The tasks form a queue, the so-called "macrotask queue" ([v8](https://v8.dev/) t For instance, while the engine is busy executing a `script`, a user may move their mouse causing `mousemove`, and `setTimeout` may be due and so on, these tasks form a queue, as illustrated in the picture above. Tasks from the queue are processed on a "first come – first served" basis. When the engine browser is done with the `script`, it handles `mousemove` event, then `setTimeout` handler, and so on. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -So far, quite simple, right? +আরো দুটি ব্যাপার: +1. ইঞ্জিন টাস্ক এক্সিকিউশনের সময় কোন পেজে কোন কিছু রেন্ডার হবে না। এখানে টাস্ক এক্সিকিউট হতে অনেক সময় লাগছে কিনা তা বিবেচ্য নয়। মূল কথা DOM এর যে কোন পরিবর্তন ঘটবে টাস্ক এক্সিকিউট হওয়ার পর। +2. যদি টাস্ক এক্সিকিউট হতে অনেক সময় লাগে, সে সময় ব্রাউজার অন্য কোন টাস্ক এক্সিকিউট করতে পারে না , যেমন ইউজারের ইভেন্ট প্রসেসিং। সুতরাং কিছু সময় পর, এটি এমন একটি অ্যালার্ট দেখাবে "Page Unresponsive", যা আমাদের পুরো পেজকে এক্সিট করতে পরামর্শ দেয়। জটিল গণনা বা কোন ধরণের প্রোগ্রামিং এরর বা ইনফিনিট লুপের জন্য এমন হতে পারে। +<<<<<<< HEAD +এতক্ষণ আমরা তাত্ত্বিক ব্যপারটা জানলাম। এখন চলুন দেখি কিভাবে এটি প্রাত্যহিক জীবনে ব্যবহার করব। +======= Two more details: 1. Rendering never happens while the engine executes a task. It doesn't matter if the task takes a long time. Changes to the DOM are painted only after the task is complete. 2. If a task takes too long, the browser can't do other tasks, such as processing user events. So after some time, it raises an alert like "Page Unresponsive", suggesting killing the task with the whole page. That happens when there are a lot of complex calculations or a programming error leading to an infinite loop. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -That was the theory. Now let's see how we can apply that knowledge. +## ব্যবহার ক্রিয়া ১: CPU-hungry টাস্ককে ভাগ করা -## Use-case 1: splitting CPU-hungry tasks +ধরুন আমাদের একটি টাস্ক আছে যা প্রচুর পরিমাণ CPU রিসোর্স ব্যবহার করে। -Let's say we have a CPU-hungry task. +যেমন, সিনট্যাক্স হাইলাইটিং কিছুটা CPU-heavy টাস্ক। কোন একটি কোড হাইলাইট করার সময়, এটি বিভিন্ন ধরণের অ্যানালাইসিস করে, বিভিন্ন এলিমেন্ট তৈরি করে, এবং তাদের DOM এ সংযুক্ত করে। দীর্ঘ কোন কোডকে হাইলাইট করার সময় এটি অনেক সময় নিবে। -For example, syntax-highlighting (used to colorize code examples on this page) is quite CPU-heavy. To highlight the code, it performs the analysis, creates many colored elements, adds them to the document -- for a large amount of text that takes a lot of time. +যখন ইঞ্জিন সিনট্যাক্স হাইলাইটিং প্রসেস করবে, তখন এটি DOM এর অন্য কোন কাজ বা ইউজার ইভেন্ট ইত্যাদি প্রসেস করতে পারবে না। এছাড়াও অনেক সময় ব্রাউজার হ্যাং হয়ে যেতে পারে যা আমরা আশা করি না। -While the engine is busy with syntax highlighting, it can't do other DOM-related stuff, process user events, etc. It may even cause the browser to "hiccup" or even "hang" for a bit, which is unacceptable. +এইক্ষেত্রে একটি বড় টাস্ককে অসংখ্য ক্ষুদ্র ক্ষুদ্র অংশে ভাগ করে আমরা সমস্যাটি সমাধান করতে পারি। প্রথম ১০০ লাইনকে হাইলাইট করবে তারপর পরের ১০০ লাইন কে শিডিউল `setTimeout` (zero-delay) এভাবে শেষ পর্যন্ত। +<<<<<<< HEAD +সমস্যাটি বুঝতে এবং সহজে প্রদর্শনের জন্য সিনট্যাক্স হাইলাইটারের বদলে চলুন `1` থেকে `1000000000` পর্যন্ত গণনা করার একটি ফাংশন লিখি। +======= We can avoid problems by splitting the big task into pieces. Highlight the first 100 lines, then schedule `setTimeout` (with zero-delay) for the next 100 lines, and so on. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -To demonstrate this approach, for the sake of simplicity, instead of text-highlighting, let's take a function that counts from `1` to `1000000000`. - -If you run the code below, the engine will "hang" for some time. For server-side JS that's clearly noticeable, and if you are running it in-browser, then try to click other buttons on the page -- you'll see that no other events get handled until the counting finishes. +যদি আপনি নিচের কোডটি রান করেন তাহলে ব্রাউজার কিছু সময়ের জন্য হ্যাং হয়ে যাবে। সার্ভার সাইডে আমরা সহজেই এটি বুঝতে পারব, ব্রাউজারের ক্ষেত্রে আপনি মাউসের ডানের বাটন (`contextmenu` ইভেন্ট ট্রিগার) ক্লিক করুন গণনাটি শেষ হওয়া পর্যন্ত দেখবেন কন্টেক্সট মেনুটি দেখাবে না। ```js run let i = 0; @@ -78,9 +101,9 @@ function count() { count(); ``` -The browser may even show a "the script takes too long" warning. +এছাড়াও এই ধরণের একটি ওয়ার্নিং দেখাতে পারে "the script takes too long"। -Let's split the job using nested `setTimeout` calls: +চলুন এখন আমরা এটিকে `setTimeout` দ্বারা বিভক্ত করি: ```js run let i = 0; @@ -105,21 +128,21 @@ function count() { count(); ``` -Now the browser interface is fully functional during the "counting" process. +এখন গণনা চলার সময় আমাদের ব্রাউজার হ্যাং হবে না, মাউসের ডানের বাটন (`contextmenu` ইভেন্ট ট্রিগার) ক্লিক করুন দেখবেন সাথে সাথে কন্টেক্সট মেনুটি দেখাবে। -A single run of `count` does a part of the job `(*)`, and then re-schedules itself `(**)` if needed: +প্রতিটি `count` কলে `(*)` অংশটুকু এক্সিকিউট হবে, এবং যতক্ষণ প্রয়োজন হয় ততক্ষণ `(**)` অংশটুকু শিডিউলড হবে: -1. First run counts: `i=1...1000000`. -2. Second run counts: `i=1000001..2000000`. -3. ...and so on. +1. প্রথমবার রান হওয়ার পর গণনা হবে: `i=1...1000000`। +2. দ্বিতীয়বান রান হওয়ার পর গণনা হবে: `i=1000001..2000000`. +3. ...এভাবে চলতে থাকবে -Now, if a new side task (e.g. `onclick` event) appears while the engine is busy executing part 1, it gets queued and then executes when part 1 finished, before the next part. Periodic returns to the event loop between `count` executions provide just enough "air" for the JavaScript engine to do something else, to react to other user actions. +এখন, প্রথমবার রান হওয়ার সময় যদি অন্য কোন ইভেন্ট যেমন মাউসের ডানের বাটন ক্লিকে `contextmenu` ইভেন্ট ট্রিগার হলে তা *event loop* এ queue তে এক্সিকিউট হওয়ার জন্য অপেক্ষা করবে এবং এরপর `count` এর দ্বিতীয় অংশটুকু এক্সিকিউট হবে। সুতরাং গণনার সময় অন্য কোন ইভেন্ট ট্রিগার হলে তা শিডিউলের মাঝের queue তে অপেক্ষা করবে। -The notable thing is that both variants -- with and without splitting the job by `setTimeout` -- are comparable in speed. There's not much difference in the overall counting time. +উভয়ই ক্ষেত্রের লক্ষনীয় পার্থক্য হল -- `setTimeout` এর দ্বারা কোডকে ক্ষুদ্র ক্ষুদ্র অংশে বিভক্ত করার ফলে তাদের সময় একটু বেশি লাগছে। -To make them closer, let's make an improvement. +চলুন পারফরম্যান্স আর কিছুটা বাড়াতে চেষ্টা করি। -We'll move the scheduling to the beginning of the `count()`: +শিডিউল `count()` কলটাকে আমরা শুরুত নিয়ে আসি : ```js run let i = 0; @@ -146,25 +169,25 @@ function count() { count(); ``` -Now when we start to `count()` and see that we'll need to `count()` more, we schedule that immediately, before doing the job. +এখন `count()` শুরুর পূর্বে আমরা যাচাই করে নিচ্ছি আমাদের আর `count()` লাগবে কিনা যদি লাগে তাহলে সাথে সাথে গণনা শুরুর পূর্বেই একে আমরা শিডিউল করে দিচ্ছি। -If you run it, it's easy to notice that it takes significantly less time. +যদি আপনি এটি রান করেন, তাহলে দেখবেন পূর্বেরটার চেয়ে এটি আরো দ্রুত গণনা শেষ করছে। -Why? +কেন? -That's simple: as you remember, there's the in-browser minimal delay of 4ms for many nested `setTimeout` calls. Even if we set `0`, it's `4ms` (or a bit more). So the earlier we schedule it - the faster it runs. +কারণ, ব্রাউজারের সর্বনিম্ন নেস্টেড `setTimeout` কলের জন্য 4ms সময় লাগে। যদি আমরা `delay` কে `0` সেট করি তারপরও। সুতরাং যদি একে আগে শিডিউল করি তাহলে এটি দ্রুত রান হবে। -Finally, we've split a CPU-hungry task into parts - now it doesn't block the user interface. And its overall execution time isn't much longer. +আমরা দেখলাম কিভাবে আমাদের একটি CPU-hungry দীর্ঘ কাজকে ছোট ছোট অংশে বিভক্ত করতে পারি, যার ফলে এটি আমাদের UI কে ব্লক করতে পারে না, এবং সর্বমোট এক্সিকিউশন সময়ের মধ্যেও তেমন পার্থক্য থাকে না। -## Use case 2: progress indication +## ব্যবহার ক্রিয়া ২: প্রগ্রেস ইন্ডিকেশন -Another benefit of splitting heavy tasks for browser scripts is that we can show progress indication. +একটি দীর্ঘ টাস্ককে ছোট ছোট টাস্কে ভাগ করার আরেকটি সুবিধা হল UI তে টাস্কের প্রগ্রেস দেখাতে পারব। -As mentioned earlier, changes to DOM are painted only after the currently running task is completed, irrespective of how long it takes. +উপরে উল্লেখিত কোডে আমরা দেখছি সম্পূর্ণ টাস্কটি শেষ হলে আমরা UI তে তা দেখায়। -On one hand, that's great, because our function may create many elements, add them one-by-one to the document and change their styles -- the visitor won't see any "intermediate", unfinished state. An important thing, right? +তবে অনেক সময় এই ফিচারটি সুবিধাজনক, কেননা অনেক সময় আমাদের অনেক এলিমেন্ট তৈরি করা লাগে এবং তাদের বিভিন্ন স্ট্যাইল অ্যাট্রিবিউট এর বিভিন্ন পরিবর্তন করতে হয় এবং আমাদের এলিমেন্টগুলো সম্পূর্ণ হতে কিছু সময় লাগতে পারে, এই সময় অসম্পূর্ণ এলিমেন্টগুলো ইউজারের কাছে অদৃশ্য থাকা উচিত, তাই না? -Here's the demo, the changes to `i` won't show up until the function finishes, so we'll see only the last value: +এখানে একটি উদাহরণ দেখুন, এখানে ফাংশনটির ক্যাল্কুলেশন শেষ না হওয়া পর্যন্ত `i` এর মান দেখাবে না, এক্ষেত্রে শুধুমাত্র শেষ মানটি অর্থাৎ `999999` দেখাবে: ```html run @@ -183,11 +206,11 @@ Here's the demo, the changes to `i` won't show up until the function finishes, s </script> ``` -...But we also may want to show something during the task, e.g. a progress bar. +...কিন্তু আমরা টাস্কটি চলার সময় UI তে এমন কিছু দেখাতে চাই যেন ইউজার বুঝতে পারে টাস্কটি চলছে, যেমন progress bar। -If we split the heavy task into pieces using `setTimeout`, then changes are painted out in-between them. +যদি আমরা কাজটিকে `setTimeout` এর মাধ্যমে বিভক্ত করে `i` এর মান UI তে দেখায় তাহলে ইউজার কাউন্টের প্রগ্রেস দেখবে। -This looks prettier: +এখন দেখুন: ```html run <div id="progress"></div> @@ -213,40 +236,40 @@ This looks prettier: </script> ``` -Now the `<div>` shows increasing values of `i`, a kind of a progress bar. +এখন `<div>` এ `i` এর মান বাড়ছে তা দেখব, যা একটি প্রগ্রেস বারের মত। -## Use case 3: doing something after the event +## ব্যবহার ক্রিয়া ৩: ইভেন্ট হ্যান্ডেলের পর কোন কিছু করা -In an event handler we may decide to postpone some actions until the event bubbled up and was handled on all levels. We can do that by wrapping the code in zero delay `setTimeout`. +একটি ইভেন্ট হ্যান্ডেলার আমাদের এমনভাবে ডিজাইন করতে হয় যেন হ্যান্ডেলারের সকল টাস্ক শেষ হওয়ার পর যেন আমাদের নতুন টাস্কটি শুরু হয়। এক্ষেত্রে আমরা `setTimeout` এর দ্বিতীয় আর্গুমেন্ট `0` ms সেট করব। -In the chapter <info:dispatch-events> we saw an example: custom event `menu-open` is dispatched in `setTimeout`, so that it happens after the "click" event is fully handled. +যা আমরা এই অধ্যায়ে আলোচনা করেছিলাম <info:dispatch-events> আমরা একটি উদাহরণ দেখেছিলাম: কাস্টম ইভেন্ট `menu-open` কে `setTimeout` এ আবদ্ধ করেছি, যার ফলে ইভেন্টটি ডিস্প্যাচ হয় সম্পূর্ন "click" ইভেন্টটি হ্যান্ডেল হওয়ার পর। ```js menu.onclick = function() { // ... - // create a custom event with the clicked menu item data + // মেনুতে ক্লিকের জন্য একটি কাস্টম ইভেন্ট তৈরি করি let customEvent = new CustomEvent("menu-open", { bubbles: true }); - // dispatch the custom event asynchronously + // ইভেন্টটি অ্যাসিঙ্ক্রোনাসলি ডিস্প্যাচ হয় setTimeout(() => menu.dispatchEvent(customEvent)); }; ``` -## Macrotasks and Microtasks +## Macrotasks এবং Microtasks -Along with *macrotasks*, described in this chapter, there are *microtasks*, mentioned in the chapter <info:microtask-queue>. +এই অধ্যায়ে আলোচিত *macrotasks* এর পাশাপাশি *microtasks* নামের আরেকটি টার্ম আছে, যা এই অধ্যায়ে আলোচনা করা হয়েছে <info:microtask-queue>। -Microtasks come solely from our code. They are usually created by promises: an execution of `.then/catch/finally` handler becomes a microtask. Microtasks are used "under the cover" of `await` as well, as it's another form of promise handling. +মাইক্রোটাস্ক আমাদের স্ক্রিপ্ট থেকে জেনারেট হয়। যা promises দ্বারা তৈরি করা হয়: `.then/catch/finally` কে এক্সিকিউশনের সময় এদের হ্যান্ডেলার মাইক্রোটাস্ক হিসেবে বিবেচিত হয়। `await` এর ক্ষেত্রেও বিহাইন্ড দ্যা সীনে মাইক্রোটাস্ক ব্যবহৃত হয়, যেহেতু এটি `promise` এর উপর ভিত্তি করে গড়ে উঠেছে। -There's also a special function `queueMicrotask(func)` that queues `func` for execution in the microtask queue. +এছাড়াও একটি বিশেষ ফাংশন আছে `queueMicrotask(func)` যার ফলে `func` টি মাইক্রোটাস্ক কিউতে এক্সিকিউশন হয়। -**Immediately after every *macrotask*, the engine executes all tasks from *microtask* queue, prior to running any other macrotasks or rendering or anything else.** +**প্রতিটি *macrotask* এর পর, ইঞ্জিন অন্য সকল *macrotask* এর আগে *microtask* এর সকল টাস্ক সম্পন্ন করবে।** -For instance, take a look: +এই উদাহরণটি দেখুন: ```js run setTimeout(() => alert("timeout")); @@ -257,23 +280,23 @@ Promise.resolve() alert("code"); ``` -What's going to be the order here? +এখানে কোড এক্সিকিউশনের ধাপগুলো খেয়াল করছেন? -1. `code` shows first, because it's a regular synchronous call. -2. `promise` shows second, because `.then` passes through the microtask queue, and runs after the current code. -3. `timeout` shows last, because it's a macrotask. +1. প্রথমে দেখাবে `code`, কেননা এটি একটি সিঙ্ক্রোনাস কল। +2. এরপর দেখাবে `promise`, কেননা `.then` পাস হয় *microtask* তে, তাই এটি দ্বিতীয় অ্যালার্টে দেখাবে। +3. সবার শেষে `timeout`, কেননা এটি একটি *macrotask*। -The richer event loop picture looks like this (order is from top to bottom, that is: the script first, then microtasks, rendering and so on): +নিচের ছবিটিতে দেখুন (এক্সিকিশনের ক্রমটি হল উপর থেকে নিচে, অর্থাৎ প্রথমে script, তারপর microtasks, rendering ইত্যাদি): ![](eventLoop-full.svg) -All microtasks are completed before any other event handling or rendering or any other macrotask takes place. +ইভেন্ট হ্যান্ডেলিং বা রেন্ডারিং বা অন্যান্য macrotask এর আগে microtasks সম্পন্ন হবে। -That's important, as it guarantees that the application environment is basically the same (no mouse coordinate changes, no new network data, etc) between microtasks. +কেন এটি গুরুত্বপূর্ন, এটি আমাদের নিশ্চয়তা প্রদান করে যে microtask চলাকালীন আমাদের অ্যাপ্লিকেশনের এনভায়রনম্যান্ট একই (no mouse coordinate changes, no new network data, ইত্যাদি)। -If we'd like to execute a function asynchronously (after the current code), but before changes are rendered or new events handled, we can schedule it with `queueMicrotask`. +আমরা যদি কোন একটি ফাংশনকে রেন্ডার বা কোন একটি ইভেন্ট হ্যান্ডেল করার আগে অ্যাসিঙ্ক্রোনাসলি চালাতে চায় তাহলে `queueMicrotask` দ্বারা করতে পারি। -Here's an example with "counting progress bar", similar to the one shown previously, but `queueMicrotask` is used instead of `setTimeout`. You can see that it renders at the very end. Just like the synchronous code: +এখানে উপরের "counting progress bar" কে আবার ইমপ্লিমেন্ট করলাম, তবে এখানে `setTimeout` এর বদলে `queueMicrotask` ব্যবহার করছি। যার ফলে রেন্ডারকৃত মানটি দেখব সবার শেষে। সিঙ্ক্রোনাস কোডের মত: ```html run <div id="progress"></div> @@ -301,39 +324,39 @@ Here's an example with "counting progress bar", similar to the one shown previou </script> ``` -## Summary +## সারাংশ -A more detailed event loop algorithm (though still simplified compared to the [specification](https://html.spec.whatwg.org/multipage/webappapis.html#event-loop-processing-model)): +ইভেন্ট লুপ সম্পর্কে আরো বিস্তারিত([specification](https://html.spec.whatwg.org/multipage/webappapis.html#event-loop-processing-model)): -1. Dequeue and run the oldest task from the *macrotask* queue (e.g. "script"). -2. Execute all *microtasks*: - - While the microtask queue is not empty: - - Dequeue and run the oldest microtask. -3. Render changes if any. -4. If the macrotask queue is empty, wait till a macrotask appears. -5. Go to step 1. +1. *macrotask* কিউতে থাকা টাস্কগুলো থেকে সবার প্রথমে আসা টাস্ককে রান করে টাস্কটি DEQUE হবে (যেমন "script")। +2. সকল *microtasks* কে এক্সিকিউট করবে: + - যদি microtask কিউটি খালি না হয়: + - সবার প্রথমের টাস্কটিকে এক্সিকিউট এর পর দ্বিতীয়টি এভাবে সব টাস্ক এক্সিকিউট করে। +3. কোন পরিবর্তন হলে রেন্ডার করবে। +4. যদি *macrotask* কিউ খালি হয় তাহলে আরেকটি *macrotask* সংগঠিত হওয়ার জন্য অপেক্ষা করবে। +5. এর পর আবার ধাপ 1 এ যাবে। -To schedule a new *macrotask*: -- Use zero delayed `setTimeout(f)`. +একটি নতুন *macrotask* শিডিউলের জন্য: +- `setTimeout(f)` এর দ্বিতীয় আর্গুমেন্ট `0` ms সেট করি। -That may be used to split a big calculation-heavy task into pieces, for the browser to be able to react to user events and show progress between them. +যার সাহায্যে কোন একটি দীর্ঘ টাস্ককে ছোট ছোট টাস্কে বিভক্ত করতে পারি, এবং টাস্কটি চলাকালীন আমাদের ব্রাউজার হ্যাং হবে না। -Also, used in event handlers to schedule an action after the event is fully handled (bubbling done). +এছাড়াও কোন একটি ইভেন্ট হ্যান্ডেলার সম্পূর্ন হওয়ার পর অন্য কোন টাস্ক শিডিউলড করতে ব্যবহার করতে পারি। -To schedule a new *microtask* -- Use `queueMicrotask(f)`. -- Also promise handlers go through the microtask queue. +একটি নতুন *microtask* শিডিউলের জন্য: +- `queueMicrotask(f)` কল করুন। +- এছাড়াও প্রমিস হ্যান্ডেলারগুলো microtask queue শিডিউল হয়। -There's no UI or network event handling between microtasks: they run immediately one after another. +microtask চলাকালীন আমাদের অ্যাপ্লিকেশনের এনভায়রনম্যান্টের কোন পরিবর্তন হয় না, এরা একটার পর একটা রান হয়। -So one may want to `queueMicrotask` to execute a function asynchronously, but within the environment state. +সুতরাং একই এনভায়রনম্যান্ট স্টেটের জন্য কোন ফাংশনকে অ্যাসিঙ্ক্রোনাসলি ব্যবহার করতে আমরা `queueMicrotask` ব্যবহার করতে পারি। ```smart header="Web Workers" -For long heavy calculations that shouldn't block the event loop, we can use [Web Workers](https://html.spec.whatwg.org/multipage/workers.html). +কোন জটিল গণনার জন্য আমাদের ইভেন্ট লুপকে ব্লক করে রাখা উচিত নয়, এক্ষেত্রে আমরা ব্যবহার করতে পারি [Web Workers](https://html.spec.whatwg.org/multipage/workers.html)। -That's a way to run code in another, parallel thread. +এর সাহায্যে আমরা কোডকে প্যারালাল থ্রেডে রান করতে পারি। -Web Workers can exchange messages with the main process, but they have their own variables, and their own event loop. +মেইন প্রসেসের সাথে ওয়েব ওয়ার্কার ডাটা আদান প্রদান করতে পারে, তবে এর নিজস্ব ভ্যারিয়েবল এবং ইভেন্ট লুপ আছে। -Web Workers do not have access to DOM, so they are useful, mainly, for calculations, to use multiple CPU cores simultaneously. +এটির DOM এ কোন অ্যাক্সেস নেই, সুতরাং জটিল গণনা একাধিক কোরে একইসাথে চালাতে Web Worker ব্যবহার করা হয়। ``` diff --git a/2-ui/99-ui-misc/03-event-loop/eventLoop.svg b/2-ui/99-ui-misc/03-event-loop/eventLoop.svg index 6dc459ef8..ffe197664 100644 --- a/2-ui/99-ui-misc/03-event-loop/eventLoop.svg +++ b/2-ui/99-ui-misc/03-event-loop/eventLoop.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="500" height="279" viewBox="0 0 500 279"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="promise" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="eventLoop.svg"><path id="Rectangle-1-Copy-5" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M218 173h108v28H218z"/><text id="..." fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="258.9" y="189">...</tspan></text><path id="Rectangle-1-Copy-6" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M218 90h108v28H218z"/><path id="Rectangle-1-Copy-8" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M218 117h108v28H218z"/><text id="mousemove" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="233.7" y="136">mousemove</tspan></text><path id="Rectangle-1-Copy-9" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M218 145h108v28H218z"/><text id="script" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="246.8" y="109">script</tspan></text><text id="event-loop" fill="#C06334" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal"><tspan x="76.422" y="134">event</tspan> <tspan x="82.615" y="167">loop</tspan></text><text id="macrotask-queue" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal"><tspan x="348.371" y="136">macrotask</tspan> <tspan x="371.451" y="169">queue</tspan></text><path id="Path" fill="#C06334" fill-rule="nonzero" d="M192 40c22.467 0 43.818 7.359 61.285 20.712l.622.479.143.122 8.961 8.422-4.584-14.61 3.817-1.197 6.869 21.895 1.064 3.392-3.452-.852-22.278-5.5.959-3.883 14.864 3.669-8.886-8.352-.55-.424c-16.564-12.656-36.757-19.698-58.036-19.87L192 44c-30.748 0-59.095 14.403-77.315 38.412l-.549.73-3.208-2.387C129.87 55.303 159.664 40 192 40z"/><path id="Path-Copy-2" fill="#C06334" fill-rule="nonzero" d="M269.882 208.148l2.823 2.834-.366.365a533.245 533.245 0 00-3.982 4.033l-.333.34c-9.922 10.12-14.79 14.544-22.017 19.272-15.185 9.934-34.01 15.688-51.594 15.688-25.222 0-47.144-6.827-64.077-19.673l-.589-.45-.089-.07-.08-.078-8.854-8.581 4.36 14.68-3.835 1.138-6.532-21.998-1.012-3.409 3.439.906 22.19 5.841-1.018 3.868-14.808-3.898 8.766 8.497.488.374c16.02 12.15 36.782 18.698 60.792 18.85l.859.003c16.796 0 34.862-5.522 49.404-15.035 6.911-4.521 11.624-8.806 21.35-18.725l.334-.34a633.126 633.126 0 013.46-3.511l.736-.736.185-.185z"/><text id="setTimeout" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="230" y="164">setTimeout</tspan></text></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" width="479" height="279" viewBox="0 0 479 279"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="promise" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="eventLoop.svg"><path id="Rectangle-1-Copy-5" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M218 173h108v28H218z"/><text id="..." fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="258.9" y="189">...</tspan></text><path id="Rectangle-1-Copy-6" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M218 90h108v28H218z"/><path id="Rectangle-1-Copy-8" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M218 117h108v28H218z"/><text id="mousemove" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="233.7" y="136">mousemove</tspan></text><path id="Rectangle-1-Copy-9" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M218 145h108v28H218z"/><text id="script" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="246.8" y="109">script</tspan></text><text id="event-loop" fill="#C06334" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal"><tspan x="69.422" y="134">event</tspan> <tspan x="75.615" y="167">loop</tspan></text><text id="macrotask-queue" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal"><tspan x="344.871" y="136">macrotask</tspan> <tspan x="367.951" y="169">queue</tspan></text><path id="Path" fill="#C06334" fill-rule="nonzero" d="M192 40c22.467 0 43.818 7.359 61.285 20.712l.622.479.143.122 8.961 8.422-4.584-14.61 3.817-1.197 6.869 21.895 1.064 3.392-3.452-.852-22.278-5.5.959-3.883 14.864 3.669-8.886-8.352-.55-.424c-16.564-12.656-36.757-19.698-58.036-19.87L192 44c-30.748 0-59.095 14.403-77.315 38.412l-.549.73-3.208-2.387C129.87 55.303 159.664 40 192 40z"/><path id="Path-Copy-2" fill="#C06334" fill-rule="nonzero" d="M269.882 208.148l2.823 2.834-.366.365a533.245 533.245 0 00-3.982 4.033l-.333.34c-9.922 10.12-14.79 14.544-22.017 19.272-15.185 9.934-34.01 15.688-51.594 15.688-25.222 0-47.144-6.827-64.077-19.673l-.589-.45-.089-.07-.08-.078-8.854-8.581 4.36 14.68-3.835 1.138-6.532-21.998-1.012-3.409 3.439.906 22.19 5.841-1.018 3.868-14.808-3.898 8.766 8.497.488.374c16.02 12.15 36.782 18.698 60.792 18.85l.859.003c16.796 0 34.862-5.522 49.404-15.035 6.911-4.521 11.624-8.806 21.35-18.725l.334-.34a633.126 633.126 0 013.46-3.511l.736-.736.185-.185z"/><text id="setTimeout" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="230" y="164">setTimeout</tspan></text></g></g></svg> \ No newline at end of file diff --git a/5-network/05-fetch-crossorigin/xhr-preflight.svg b/5-network/05-fetch-crossorigin/xhr-preflight.svg index 049572cee..c96e05ab2 100644 --- a/5-network/05-fetch-crossorigin/xhr-preflight.svg +++ b/5-network/05-fetch-crossorigin/xhr-preflight.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="620" height="633" viewBox="0 0 620 633"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="network" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="xhr-preflight.svg"><path id="Rectangle-227" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 16h128v64H1z"/><text id="JavaScript" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="33" y="50">JavaScript</tspan></text><path id="Rectangle-228" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M240 16h128v64H240z"/><text id="Browser" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="278" y="48">Browser</tspan></text><path id="Rectangle-229" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M491 16h128v64H491z"/><text id="Server" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="534" y="50">Server</tspan></text><path id="Line" stroke="#7E7C7B" stroke-linecap="square" d="M66 82v520M305 82v520M556 82v520"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M291 133l14 7-14 7-.001-6H67v-2h223.999l.001-6z"/><text id="fetch()" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="166" y="131">fetch()</tspan></text><text id="OPTIONS" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="400" y="173">OPTIONS</tspan></text><text id="Origin-Access-Contro" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="406.721" y="198">Origin</tspan> <tspan x="321.866" y="216">Access-Control-Request-Method</tspan> <tspan x="320" y="234">Access-Control-Request-Headers</tspan></text><path id="Line" fill="#C06334" fill-rule="nonzero" d="M319 285.5v6h237v2H319v6l-14-7 14-7z"/><text id="200-OK" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="407" y="285">200 OK</tspan></text><path id="Line-4" fill="#C06334" fill-rule="nonzero" d="M542 173l14 7-14 7-.001-6H305v-2h236.999l.001-6z"/><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M319 495v6h237v2H319v6l-14-7 14-7z"/><path id="Line-3" fill="#C06334" fill-rule="nonzero" d="M90.5 544.5v8h214v3h-214v8l-19-9.5 19-9.5z"/><text id="Access-Control-Allow" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="336" y="522">Access-Control-Allow-Origin</tspan></text><text id="Main-HTTP-response" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="355" y="495">Main HTTP-response</tspan></text><text id="otherwise-error" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="130" y="570">otherwise error</tspan></text><text id="if-allowed:-success," fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="115.5" y="545">if allowed: success,</tspan></text><path id="Line-5" fill="#C06334" fill-rule="nonzero" d="M542 429l14 7-14 7-.001-6H304v-2h237.999l.001-6z"/><text id="Origin" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="405" y="454">Origin</tspan></text><text id="Main-HTTP-request" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="360" y="429">Main HTTP-request</tspan></text><text id="preflight" fill="#7E7C7B" font-family="OpenSans-Regular, Open Sans" font-size="22" font-weight="normal"><tspan x="210.145" y="186">preflight</tspan></text><text id="if-allowed" fill="#7E7C7B" font-family="OpenSans-Regular, Open Sans" font-size="22" font-weight="normal"><tspan x="198.338" y="441">if allowed</tspan></text><text id="1" fill="#181717" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal"><tspan x="570.139" y="186">1</tspan></text><text id="2" fill="#181717" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal"><tspan x="570.139" y="302">2</tspan></text><text id="3" fill="#181717" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal"><tspan x="570.139" y="443">3</tspan></text><text id="4" fill="#181717" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal"><tspan x="570.139" y="509">4</tspan></text><text id="Access-Control-Allow" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"> <tspan x="340.89" y="311.33">Access-Control-Allow-Origin</tspan> <tspan x="332" y="329.33">Access-Control-Allow-Methods</tspan> <tspan x="333.473" y="347.33">Access-Control-Allow-Headers</tspan> <tspan x="352.443" y="365.33">Access-Control-Max-Age</tspan></text></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" width="620" height="633" viewBox="0 0 620 633"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="network" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="xhr-preflight.svg"><path id="Rectangle-227" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 16h128v64H1z"/><text id="JavaScript" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="33" y="50">JavaScript</tspan></text><path id="Rectangle-228" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M240 16h128v64H240z"/><text id="Browser" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="278" y="48">Browser</tspan></text><path id="Rectangle-229" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M491 16h128v64H491z"/><text id="Server" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="534" y="50">Server</tspan></text><path id="Line" stroke="#7E7C7B" stroke-linecap="square" d="M66 82v520M305 82v520M556 82v520"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M291 133l14 7-14 7-.001-6H67v-2h223.999l.001-6z"/><text id="fetch()" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="166" y="131">fetch()</tspan></text><text id="OPTIONS" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="400" y="173">OPTIONS</tspan></text><text id="Origin-Access-Contro" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="406.721" y="198">Origin</tspan> <tspan x="321.866" y="216">Access-Control-Request-Method</tspan> <tspan x="320" y="234">Access-Control-Request-Headers</tspan></text><path id="Line" fill="#C06334" fill-rule="nonzero" d="M319 285.5v6h237v2H319v6l-14-7 14-7z"/><text id="200-OK" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="407" y="285">200 OK</tspan></text><path id="Line-4" fill="#C06334" fill-rule="nonzero" d="M542 173l14 7-14 7-.001-6H305v-2h236.999l.001-6z"/><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M319 495v6h237v2H319v6l-14-7 14-7z"/><path id="Line-3" fill="#C06334" fill-rule="nonzero" d="M90.5 544.5v8h214v3h-214v8l-19-9.5 19-9.5z"/><text id="Access-Control-Allow" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="336" y="522">Access-Control-Allow-Origin</tspan></text><text id="Main-HTTP-response" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="355" y="495">Main HTTP-response</tspan></text><text id="otherwise-error" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="130" y="570">otherwise error</tspan></text><text id="if-allowed:-success," fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="115.5" y="545">if allowed: success,</tspan></text><path id="Line-5" fill="#C06334" fill-rule="nonzero" d="M542 429l14 7-14 7-.001-6H304v-2h237.999l.001-6z"/><text id="Origin" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="405" y="454">Origin</tspan></text><text id="Main-HTTP-request" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="360" y="429">Main HTTP-request</tspan></text><text id="preflight" fill="#7E7C7B" font-family="OpenSans-Regular, Open Sans" font-size="22" font-weight="normal"><tspan x="210.145" y="186">preflight</tspan></text><text id="if-allowed" fill="#7E7C7B" font-family="OpenSans-Regular, Open Sans" font-size="22" font-weight="normal"><tspan x="198.338" y="441">if allowed</tspan></text><text id="1" fill="#181717" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal"><tspan x="570.139" y="186">1</tspan></text><text id="2" fill="#181717" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal"><tspan x="570.139" y="302">2</tspan></text><text id="3" fill="#181717" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal"><tspan x="570.139" y="443">3</tspan></text><text id="4" fill="#181717" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal"><tspan x="570.139" y="509">4</tspan></text><text id="Access-Control-Allow" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"> <tspan x="340.917" y="308.33">Access-Control-Allow-Origin</tspan> <tspan x="335.366" y="326.33">Access-Control-Allow-Method</tspan> <tspan x="333.5" y="344.33">Access-Control-Allow-Headers</tspan> <tspan x="352.47" y="362.33">Access-Control-Max-Age</tspan></text></g></g></svg> \ No newline at end of file diff --git a/5-network/06-fetch-api/article.md b/5-network/06-fetch-api/article.md index 5f55c78ef..58dd32ee1 100644 --- a/5-network/06-fetch-api/article.md +++ b/5-network/06-fetch-api/article.md @@ -1,58 +1,79 @@ - # Fetch API -So far, we know quite a bit about `fetch`. +আমরা এখন পর্যন্ত `fetch` সম্পর্কে অনেক কিছু জেনেছি। -Let's see the rest of API, to cover all its abilities. +এবার চলুন বাকি API গুলো দেখে নেই, যাতে এটির সব সক্ষমতা কভার করতে পারি। ```smart -Please note: most of these options are used rarely. You may skip this chapter and still use `fetch` well. +মনে রাখবেন: এই অপশনগুলোর বেশিরভাগ খুব কমই ব্যবহার করা হয়। আপনি এই অধ্যায়টি না পড়েও `fetch` ভালোভাবে ব্যবহার করতে পারবেন। -Still, it's good to know what `fetch` can do, so if the need arises, you can return and read the details. +তবুও, এটা ভালো যে আমরা জানি `fetch` কি কি করতে পারে, তাহলে কখনো প্রয়োজন হলে, আমরা ফিরে এসে বিস্তারিত দেখতে পারবো। ``` -Here's the full list of all possible `fetch` options with their default values (alternatives in comments): +এখানে সব সম্ভাব্য `fetch` অপশনগুলোর সম্পূর্ণ তালিকা দেওয়া হলো তাদের ডিফল্ট ভ্যালু সহ (কমেন্টে বিকল্পগুলো দেখানো হয়েছে): ```js let promise = fetch(url, { - method: "GET", // POST, PUT, DELETE, etc. + method: "GET", // POST, PUT, DELETE, ইত্যাদি headers: { - // the content type header value is usually auto-set - // depending on the request body + // content type header ভ্যালু সাধারণত অটো-সেট হয় + // request body এর উপর নির্ভর করে "Content-Type": "text/plain;charset=UTF-8" }, +<<<<<<< HEAD + body: undefined // string, FormData, Blob, BufferSource, বা URLSearchParams + referrer: "about:client", // বা "" কোনো Referer header পাঠানোর জন্য, + // বা বর্তমান origin এর একটি url + referrerPolicy: "no-referrer-when-downgrade", // no-referrer, origin, same-origin... +======= body: undefined, // string, FormData, Blob, BufferSource, or URLSearchParams referrer: "about:client", // or "" to send no Referer header, // or an url from the current origin referrerPolicy: "strict-origin-when-cross-origin", // no-referrer-when-downgrade, no-referrer, origin, same-origin... +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 mode: "cors", // same-origin, no-cors credentials: "same-origin", // omit, include - cache: "default", // no-store, reload, no-cache, force-cache, or only-if-cached + cache: "default", // no-store, reload, no-cache, force-cache, বা only-if-cached redirect: "follow", // manual, error - integrity: "", // a hash, like "sha256-abcdef1234567890" + integrity: "", // একটি হ্যাশ, যেমন "sha256-abcdef1234567890" keepalive: false, // true - signal: undefined, // AbortController to abort request + signal: undefined, // request বাতিল করার জন্য AbortController window: window // null }); ``` -An impressive list, right? +অসাধারণ একটা তালিকা, তাই না? + +আমরা <info:fetch> অধ্যায়ে `method`, `headers` এবং `body` সম্পূর্ণভাবে কভার করেছি। -We fully covered `method`, `headers` and `body` in the chapter <info:fetch>. +`signal` অপশন <info:fetch-abort> এ কভার করা হয়েছে। -The `signal` option is covered in <info:fetch-abort>. +<<<<<<< HEAD +এবার চলুন বাকি সক্ষমতাগুলো এক্সপ্লোর করি। +## referrer, referrerPolicy + +এই অপশনগুলো নিয়ন্ত্রণ করে কিভাবে `fetch` HTTP `Referer` হেডার সেট করবে। +======= Now let's explore the remaining capabilities. ## referrer, referrerPolicy These options govern how `fetch` sets the HTTP `Referer` header. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 + +সাধারণত এই হেডার অটোমেটিকভাবে সেট হয় এবং request দেওয়া পেজের url ধারণ করে। বেশিরভাগ পরিস্থিতিতে, এটি একেবারেই গুরুত্বপূর্ণ নয়, কখনো কখনো, নিরাপত্তার জন্য, এটি সরিয়ে ফেলা বা ছোট করা যুক্তিসঙ্গত হয়। -Usually that header is set automatically and contains the url of the page that made the request. In most scenarios, it's not important at all, sometimes, for security purposes, it makes sense to remove or shorten it. +<<<<<<< HEAD +**`referrer` অপশন আমাদের বর্তমান origin এর মধ্যে যেকোনো `Referer` সেট করতে বা সরিয়ে ফেলতে দেয়।** +কোনো referer পাঠানোর জন্য, একটি খালি স্ট্রিং সেট করুন: + +======= **The `referrer` option allows to set any `Referer` (within the current origin) or remove it.** To send no referrer, set an empty string: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js fetch('/page', { *!* @@ -61,30 +82,44 @@ fetch('/page', { }); ``` -To set another url within the current origin: +বর্তমান origin এর মধ্যে অন্য একটি url সেট করতে: ```js fetch('/page', { - // assuming we're on https://javascript.info - // we can set any Referer header, but only within the current origin + // ধরে নিচ্ছি আমরা https://javascript.info এ আছি + // আমরা যেকোনো Referer header সেট করতে পারি, কিন্তু শুধু বর্তমান origin এর মধ্যে *!* referrer: "https://javascript.info/anotherpage" */!* }); ``` -**The `referrerPolicy` option sets general rules for `Referer`.** +**`referrerPolicy` অপশন `Referer` এর জন্য সাধারণ নিয়ম সেট করে।** -Requests are split into 3 types: +Request গুলো ৩ ধরনের হয়ে থাকেঃ -1. Request to the same origin. -2. Request to another origin. -3. Request from HTTPS to HTTP (from safe to unsafe protocol). +1. একই origin এ request। +2. অন্য origin এ request। +3. HTTPS থেকে HTTP এ request (নিরাপদ থেকে অনিরাপদ প্রোটোকলে)। +<<<<<<< HEAD +`referrer` অপশনের মতো যেটি সঠিক `Referer` ভ্যালু সেট করতে দেয়, `referrerPolicy` ব্রাউজারকে প্রতিটি request টাইপের জন্য সাধারণ নিয়ম বলে দেয়। +======= Unlike the `referrer` option that allows to set the exact `Referer` value, `referrerPolicy` tells the browser general rules for each request type. - -Possible values are described in the [Referrer Policy specification](https://w3c.github.io/webappsec-referrer-policy/): - +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 + +সম্ভাব্য ভ্যালুগুলো [Referrer Policy specification](https://w3c.github.io/webappsec-referrer-policy/) এ বর্ণনা করা হয়েছে: + +<<<<<<< HEAD +- **`"no-referrer-when-downgrade"`** -- ডিফল্ট ভ্যালু: সবসময় পুরো `Referer` পাঠানো হয়, যদি না আমরা HTTPS থেকে HTTP এ request পাঠাই (কম নিরাপদ প্রোটোকলে)। +- **`"no-referrer"`** -- কখনো `Referer` পাঠাবে না। +- **`"origin"`** -- শুধু origin পাঠাবে `Referer` এ, পুরো পেজ URL না, যেমন শুধু `http://site.com` পাঠাবে `http://site.com/path` এর বদলে। +- **`"origin-when-cross-origin"`** -- একই origin এ পুরো `Referer` পাঠাবে, কিন্তু cross-origin request এর জন্য শুধু origin অংশ (উপরের মতো)। +- **`"same-origin"`** -- একই origin এ পুরো `Referer` পাঠাবে, কিন্তু cross-origin request এর জন্য কোনো `Referer` নেই। +- **`"strict-origin"`** -- শুধু origin পাঠাবে, HTTPS→HTTP request এর জন্য `Referer` পাঠাবে না। +- **`"strict-origin-when-cross-origin"`** -- একই origin এর জন্য পুরো `Referer` পাঠাবে, cross-origin এর জন্য শুধু origin পাঠাবে, যদি না এটি HTTPS→HTTP request হয়, তাহলে কিছুই পাঠাবে না। +- **`"unsafe-url"`** -- সবসময় `Referer` এ পুরো url পাঠাবে, HTTPS→HTTP request এর জন্যও। +======= - **`"strict-origin-when-cross-origin"`** -- the default value: for same-origin send the full `Referer`, for cross-origin send only the origin, unless it's HTTPS→HTTP request, then send nothing. - **`"no-referrer-when-downgrade"`** -- full `Referer` is always sent, unless we send a request from HTTPS to HTTP (to the less secure protocol). - **`"no-referrer"`** -- never send `Referer`. @@ -93,9 +128,24 @@ Possible values are described in the [Referrer Policy specification](https://w3c - **`"same-origin"`** -- send the full `Referer` to the same origin, but no `Referer` for cross-origin requests. - **`"strict-origin"`** -- send only the origin, not the `Referer` for HTTPS→HTTP requests. - **`"unsafe-url"`** -- always send the full url in `Referer`, even for HTTPS→HTTP requests. - -Here's a table with all combinations: - +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 + +এখানে সব কম্বিনেশনের একটি টেবিল দেওয়া হলো: + +<<<<<<< HEAD +| ভ্যালু | একই origin এ | অন্য origin এ | HTTPS→HTTP | +| ----------------------------------------------- | ------------ | ------------- | ---------- | +| `"no-referrer"` | - | - | - | +| `"no-referrer-when-downgrade"` বা `""` (ডিফল্ট) | পুরো | পুরো | - | +| `"origin"` | origin | origin | origin | +| `"origin-when-cross-origin"` | পুরো | origin | origin | +| `"same-origin"` | পুরো | - | - | +| `"strict-origin"` | origin | origin | - | +| `"strict-origin-when-cross-origin"` | পুরো | origin | - | +| `"unsafe-url"` | পুরো | পুরো | পুরো | + +ধরা যাক আমাদের একটি অ্যাডমিন জোন আছে যার URL structure সাইটের বাইরে থেকে জানা উচিত না। +======= | Value | To same origin | To another origin | HTTPS→HTTP | |-------|----------------|-------------------|------------| | `"no-referrer"` | - | - | - | @@ -108,44 +158,70 @@ Here's a table with all combinations: | `"unsafe-url"` | full | full | full | Let's say we have an admin zone with a URL structure that shouldn't be known from outside of the site. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -If we send a `fetch`, then by default it always sends the `Referer` header with the full url of our page (except when we request from HTTPS to HTTP, then no `Referer`). +আমরা যদি একটি `fetch` পাঠাই, তাহলে ডিফল্টভাবে এটি সবসময় `Referer` হেডার পাঠায় আমাদের পেজের পুরো url সহ (যদি না আমরা HTTPS থেকে HTTP এ request করি, তাহলে কোনো `Referer` নেই)। -E.g. `Referer: https://javascript.info/admin/secret/paths`. +যেমন `Referer: https://javascript.info/admin/secret/paths`। +<<<<<<< HEAD +আমরা যদি চাই অন্য ওয়েবসাইটগুলো শুধু origin অংশটা জানুক, URL-path না, তাহলে আমরা অপশনটি সেট করতে পারি: +======= If we'd like other websites know only the origin part, not the URL-path, we can set the option: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js -fetch('https://another.com/page', { +fetch("https://another.com/page", { // ... - referrerPolicy: "origin-when-cross-origin" // Referer: https://javascript.info + referrerPolicy: "origin-when-cross-origin", // Referer: https://javascript.info }); ``` -We can put it to all `fetch` calls, maybe integrate into JavaScript library of our project that does all requests and uses `fetch` inside. +আমরা এটি সব `fetch` কলে ব্যবহার করতে পারি, হয়তো আমাদের প্রজেক্টের JavaScript লাইব্রেরিতে ইন্টিগ্রেট করে যে সব request করে এবং ভিতরে `fetch` ব্যবহার করে। -Its only difference compared to the default behavior is that for requests to another origin `fetch` sends only the origin part of the URL (e.g. `https://javascript.info`, without path). For requests to our origin we still get the full `Referer` (maybe useful for debugging purposes). +ডিফল্ট বিহেভিয়ারের সাথে এর একমাত্র পার্থক্য হলো যে অন্য origin এ request এর জন্য `fetch` শুধু URL এর origin অংশটা পাঠায় (যেমন `https://javascript.info`, path ছাড়া)। আমাদের origin এ request এর জন্য আমরা এখনো পুরো `Referer` পাই (ডিবাগিংয়ের জন্য হয়তো কাজে লাগে)। -```smart header="Referrer policy is not only for `fetch`" -Referrer policy, described in the [specification](https://w3c.github.io/webappsec-referrer-policy/), is not just for `fetch`, but more global. +```smart header="Referrer policy শুধু `fetch`এর জন্য না" +[specification](https://w3c.github.io/webappsec-referrer-policy/) এ বর্ণিত Referrer policy, শুধু`fetch` এর জন্য না, বরং আরো গ্লোবাল। +<<<<<<< HEAD +বিশেষ করে, `Referrer-Policy` HTTP হেডার ব্যবহার করে পুরো পেজের জন্য ডিফল্ট পলিসি সেট করা সম্ভব, বা প্রতি-লিংকে, `<a rel="noreferrer">` দিয়ে। + +```` +======= In particular, it's possible to set the default policy for the whole page using the `Referrer-Policy` HTTP header, or per-link, with `<a rel="noreferrer">`. ``` +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ## mode -The `mode` option is a safe-guard that prevents occasional cross-origin requests: +`mode` অপশনটি এমন একটি সুরক্ষা ব্যবস্থা যা মাঝে মাঝে cross-origin অনুরোধগুলিকে প্রতিরোধ করে: +<<<<<<< HEAD +- **`"cors"`** -- ডিফল্ট, cross-origin request অনুমতি প্রাপ্ত, যেমন <info:fetch-crossorigin> এ বর্ণনা করা হয়েছে, +- **`"same-origin"`** -- cross-origin request নিষিদ্ধ, +- **`"no-cors"`** -- শুধু সাধারণ cross-origin request অনুমতি প্রাপ্ত। +======= - **`"cors"`** -- the default, cross-origin requests are allowed, as described in <info:fetch-crossorigin>, - **`"same-origin"`** -- cross-origin requests are forbidden, - **`"no-cors"`** -- only safe cross-origin requests are allowed. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -This option may be useful when the URL for `fetch` comes from a 3rd-party, and we want a "power off switch" to limit cross-origin capabilities. +এই অপশনটি কাজে লাগে যখন `fetch` এর জন্য URL একটি 3rd-party থেকে আসে, এবং আমরা cross-origin ক্ষমতাগুলো সীমিত করার জন্য একটি "পাওয়ার অফ সুইচ" চাই। ## credentials -The `credentials` option specifies whether `fetch` should send cookies and HTTP-Authorization headers with the request. +`credentials` অপশনটি নির্দিষ্ট করে যে `fetch` request এর সাথে কুকিজ এবং HTTP-Authorization হেডার পাঠাবে কিনা। + +<<<<<<< HEAD +- **`"same-origin"`** -- ডিফল্ট, cross-origin request এর জন্য পাঠাবে না, +- **`"include"`** -- সবসময় পাঠাবে, cross-origin সার্ভার থেকে `Accept-Control-Allow-Credentials` প্রয়োজন যাতে JavaScript response অ্যাক্সেস করতে পারে, এটি <info:fetch-crossorigin> চ্যাপ্টারে কভার করা হয়েছে, +- **`"omit"`** -- কখনো পাঠাবে না, একই origin request এর জন্যও না। +## cache + +ডিফল্টভাবে, `fetch` request গুলো স্ট্যান্ডার্ড HTTP-caching ব্যবহার করে। অর্থাৎ, এটি `Expires`, `Cache-Control` হেডার মেনে চলে, `If-Modified-Since` পাঠায়, এবং এরকম অন্যান্য। ঠিক যেমন সাধারণ HTTP-request গুলো করে। +======= - **`"same-origin"`** -- the default, don't send for cross-origin requests, - **`"include"`** -- always send, requires `Access-Control-Allow-Credentials` from cross-origin server in order for JavaScript to access the response, that was covered in the chapter <info:fetch-crossorigin>, - **`"omit"`** -- never send, even for same-origin requests. @@ -153,53 +229,83 @@ The `credentials` option specifies whether `fetch` should send cookies and HTTP- ## cache By default, `fetch` requests make use of standard HTTP-caching. That is, it respects the `Expires` and `Cache-Control` headers, sends `If-Modified-Since` and so on. Just like regular HTTP-requests do. - -The `cache` options allows to ignore HTTP-cache or fine-tune its usage: - +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 + +`cache` অপশন HTTP-cache উপেক্ষা করতে বা এর ব্যবহার ফাইন-টিউন করতে দেয়: + +<<<<<<< HEAD +- **`"default"`** -- `fetch` স্ট্যান্ডার্ড HTTP-cache নিয়ম এবং হেডার ব্যবহার করে, +- **`"no-store"`** -- সম্পূর্ণভাবে HTTP-cache উপেক্ষা করে, এই মোডটি ডিফল্ট হয়ে যায় যদি আমরা একটি হেডার `If-Modified-Since`, `If-None-Match`, `If-Unmodified-Since`, `If-Match`, বা `If-Range` সেট করি, +- **`"reload"`** -- HTTP-cache থেকে রেজাল্ট নেবে না (যদি থাকে), কিন্তু response দিয়ে cache পপুলেট করবে (যদি response হেডার অনুমতি দেয়), +- **`"no-cache"`** -- যদি ক্যাশেড response থাকে তাহলে একটি কন্ডিশনাল request তৈরি করবে, অন্যথায় একটি সাধারণ request। HTTP-cache কে response দিয়ে পপুলেট করবে, +- **`"force-cache"`** -- HTTP-cache থেকে একটি response ব্যবহার করবে, যদিও এটি স্টেল হয়ে গেছে। যদি HTTP-cache এ কোনো response না থাকে, তাহলে একটি রেগুলার HTTP-request করবে, সাধারণভাবে আচরণ করবে, +- **`"only-if-cached"`** -- HTTP-cache থেকে একটি response ব্যবহার করবে, যদিও এটি স্টেল হয়ে গেছে। যদি HTTP-cache এ কোনো response না থাকে, তাহলে এরর। শুধু তখনই কাজ করে যখন `mode` হলো `"same-origin"`। +======= - **`"default"`** -- `fetch` uses standard HTTP-cache rules and headers, - **`"no-store"`** -- totally ignore HTTP-cache, this mode becomes the default if we set a header `If-Modified-Since`, `If-None-Match`, `If-Unmodified-Since`, `If-Match`, or `If-Range`, - **`"reload"`** -- don't take the result from HTTP-cache (if any), but populate the cache with the response (if the response headers permit this action), - **`"no-cache"`** -- create a conditional request if there is a cached response, and a normal request otherwise. Populate HTTP-cache with the response, - **`"force-cache"`** -- use a response from HTTP-cache, even if it's stale. If there's no response in HTTP-cache, make a regular HTTP-request, behave normally, - **`"only-if-cached"`** -- use a response from HTTP-cache, even if it's stale. If there's no response in HTTP-cache, then error. Only works when `mode` is `"same-origin"`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ## redirect -Normally, `fetch` transparently follows HTTP-redirects, like 301, 302 etc. +সাধারণত, `fetch` স্বচ্ছভাবে HTTP-redirect গুলো ফলো করে, যেমন 301, 302 ইত্যাদি। -The `redirect` option allows to change that: +`redirect` অপশন এটি পরিবর্তন করতে দেয়: +<<<<<<< HEAD +- **`"follow"`** -- ডিফল্ট, HTTP-redirect গুলো ফলো করবে, +- **`"error"`** -- HTTP-redirect এর ক্ষেত্রে এরর, +- **`"manual"`** -- HTTP-redirect ফলো করবে না, কিন্তু `response.url` হবে নতুন URL, এবং `response.redirected` হবে `true`, যাতে আমরা নতুন URL এ ম্যানুয়ালি রিডাইরেক্ট করতে পারি (যদি প্রয়োজন হয়)। +======= - **`"follow"`** -- the default, follow HTTP-redirects, - **`"error"`** -- error in case of HTTP-redirect, - **`"manual"`** -- allows to process HTTP-redirects manually. In case of redirect, we'll get a special response object, with `response.type="opaqueredirect"` and zeroed/empty status and most other properies. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ## integrity -The `integrity` option allows to check if the response matches the known-ahead checksum. +`integrity` অপশনটি চেক করতে দেয় যে response আগে থেকে জানা checksum এর সাথে মেলে কিনা। + +<<<<<<< HEAD +[specification](https://w3c.github.io/webappsec-subresource-integrity/) এ বর্ণিত হিসাবে, সাপোর্টেড হ্যাশ-ফাংশন গুলো হলো SHA-256, SHA-384, এবং SHA-512, ব্রাউজারের উপর নির্ভর করে অন্যান্যও থাকতে পারে। +উদাহরণ হিসাবে, আমরা একটি ফাইল ডাউনলোড করছি, এবং আমরা জানি যে এর SHA-256 checksum হলো "abcdef" (আসল checksum অবশ্যই দীর্ঘ)। +======= As described in the [specification](https://w3c.github.io/webappsec-subresource-integrity/), supported hash-functions are SHA-256, SHA-384, and SHA-512, there might be others depending on the browser. For example, we're downloading a file, and we know that its SHA-256 checksum is "abcdef" (a real checksum is longer, of course). +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -We can put it in the `integrity` option, like this: +আমরা এটি `integrity` অপশনে রাখতে পারি, এভাবে: ```js fetch('http://site.com/file', { integrity: 'sha256-abcdef' }); -``` +```` -Then `fetch` will calculate SHA-256 on its own and compare it with our string. In case of a mismatch, an error is triggered. +তারপর `fetch` SHA-256 নিজে থেকে ক্যালকুলেট করবে এবং এটি আমাদের স্ট্রিং এর সাথে তুলনা করবে। মিসম্যাচ হলে, একটি এরর ট্রিগার হবে। ## keepalive -The `keepalive` option indicates that the request may "outlive" the webpage that initiated it. +`keepalive` অপশনটি নির্দেশ করে যে request টি এটি শুরু করা ওয়েবপেজটি থেকে "বেঁচে থাকতে" পারে। + +<<<<<<< HEAD +উদাহরণ হিসাবে, আমরা পরিসংখ্যান সংগ্রহ করি যে বর্তমান ভিজিটর আমাদের পেজ কিভাবে ব্যবহার করে (মাউস ক্লিক, পেজ ফ্র্যাগমেন্ট যেগুলো সে দেখে), বিশ্লেষণ এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করার জন্য। + +যখন ভিজিটর আমাদের পেজ ছাড়ে -- আমরা সার্ভারে ডেটা সংরক্ষণ করতে চাই। +আমরা এর জন্য `window.onunload` ইভেন্ট ব্যবহার করতে পারি: +======= For example, we gather statistics on how the current visitor uses our page (mouse clicks, page fragments he views), to analyze and improve the user experience. When the visitor leaves our page -- we'd like to save the data to our server. We can use the `window.onunload` event for that: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run window.onunload = function() { @@ -213,12 +319,24 @@ window.onunload = function() { }; ``` +<<<<<<< HEAD +সাধারণত, যখন একটি ডকুমেন্ট আনলোড হয়, সব সংশ্লিষ্ট নেটওয়ার্ক request বাতিল হয়ে যায়। কিন্তু `keepalive` অপশন ব্রাউজারকে বলে যে পেজ ছাড়ার পরেও রিকুয়েস্টটি ব্যাকগ্রাউন্ডে সম্পাদন করতে হবে। তাই এই অপশনটি আমাদের request সফল হওয়ার জন্য অপরিহার্য। +======= Normally, when a document is unloaded, all associated network requests are aborted. But the `keepalive` option tells the browser to perform the request in the background, even after it leaves the page. So this option is essential for our request to succeed. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -It has a few limitations: +এটির কিছু সীমাবদ্ধতা আছে: +<<<<<<< HEAD +- আমরা মেগাবাইট পাঠাতে পারবো না: `keepalive` request এর জন্য body লিমিট ৬৪কেবি। + - যদি আমাদের ভিজিট সম্পর্কে অনেক পরিসংখ্যান সংগ্রহ করতে হয়, আমাদের এটি নিয়মিত প্যাকেটে পাঠাতে হবে, যাতে শেষ `onunload` request এর জন্য অনেক কিছু না থাকে। + - এই লিমিট সব `keepalive` request একসাথে প্রয়োগ হয়। অন্য কথায়, আমরা একাধিক `keepalive` request প্যারালেলে সম্পাদন করতে পারি, কিন্তু তাদের body length এর যোগফল ৬৪কেবি ছাড়তে পারবে না। +- আমরা সার্ভার response হ্যান্ডেল করতে পারবো না যদি ডকুমেন্ট আনলোড হয়ে যায়। তাই আমাদের উদাহরণে `fetch` `keepalive` এর কারণে সফল হবে, কিন্তু পরবর্তী ফাংশনগুলো কাজ করবে না। + - বেশিরভাগ ক্ষেত্রে, যেমন পরিসংখ্যান পাঠানো, এটি কোনো সমস্যা না, কারণ সার্ভার শুধু ডেটা গ্রহণ করে এবং সাধারণত এমন request এর জন্য একটি খালি response পাঠায়। +======= - We can't send megabytes: the body limit for `keepalive` requests is 64KB. - If we need to gather a lot of statistics about the visit, we should send it out regularly in packets, so that there won't be a lot left for the last `onunload` request. - This limit applies to all `keepalive` requests together. In other words, we can perform multiple `keepalive` requests in parallel, but the sum of their body lengths should not exceed 64KB. - We can't handle the server response if the document is unloaded. So in our example `fetch` will succeed due to `keepalive`, but subsequent functions won't work. - In most cases, such as sending out statistics, it's not a problem, as the server just accepts the data and usually sends an empty response to such requests. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 diff --git a/5-network/11-websocket/websocket-handshake.svg b/5-network/11-websocket/websocket-handshake.svg index 96c2cd3ef..a8ec2389a 100644 --- a/5-network/11-websocket/websocket-handshake.svg +++ b/5-network/11-websocket/websocket-handshake.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="429" height="348" viewBox="0 0 429 348"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="network" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="websocket-handshake.svg"><path id="Rectangle-227" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M2 16h128v64H2z"/><text id="Browser" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="40" y="49">Browser</tspan></text><path id="Rectangle-228" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M298 16h128v64H298z"/><text id="Server" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="340" y="49">Server</tspan></text><path id="Line" stroke="#7E7C7B" stroke-linecap="square" d="M67 81v250.5M363 81v251.5"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M349 133l14 7-14 7v-6H68v-2h281v-6z"/><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M83 204v6h281v2H83v6l-14-7 14-7z"/><text id="HTTP-request" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="172.015" y="130">HTTP-request</tspan></text><text id=""Hey,-server,-let's" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="102.605" y="161">"Hey, server, let's talk WebSocket?"</tspan></text><text id="HTTP-response-"Okay!" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="166.419" y="204">HTTP-response</tspan> <tspan x="191.972" y="226">"Okay!"</tspan></text><path id="Line-Copy-2" fill="#C06334" fill-rule="nonzero" d="M81 272v6h2v2h-2v6l-14-7 14-7zm268 0l14 7-14 7v-14zm-254 6v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm-126 0v2h-4v-2h4zm138 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm-126 0v2h-4v-2h4z" transform="matrix(-1 0 0 1 430 0)"/><text id="WebSocket-protocol" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="151.604" y="272">WebSocket protocol</tspan></text></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" width="429" height="348" viewBox="0 0 429 348"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="network" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="websocket-handshake.svg"><path id="Rectangle-227" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M2 16h128v64H2z"/><text id="Browser" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="40" y="49">Browser</tspan></text><path id="Rectangle-228" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M298 16h128v64H298z"/><text id="Server" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="340" y="49">Server</tspan></text><path id="Line" stroke="#7E7C7B" stroke-linecap="square" d="M67 81v250.5M363 81v251.5"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M349 133l14 7-14 7v-6H68v-2h281v-6z"/><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M83 204v6h281v2H83v6l-14-7 14-7z"/><text id="HTTP-request" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="172.015" y="130">HTTP-request</tspan></text><text id=""Hey,-server,-let's" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="102.605" y="161">"Hey, server, let's talk WebSocket?"</tspan></text><text id="HTTP-response-"Okay!" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="166.419" y="204">HTTP-response</tspan> <tspan x="191.972" y="226">"Okay!"</tspan></text><path id="Line-Copy-2" fill="#C06334" fill-rule="nonzero" d="M81 272v6h2v2h-2v6l-14-7 14-7zm268 0l14 7-14 7v-14zm-260 6v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4z"/><text id="WebSocket-protocol" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="151.604" y="272">WebSocket protocol</tspan></text></g></g></svg> \ No newline at end of file diff --git a/7-animation/1-bezier-curve/bezier3-draw1.svg b/7-animation/1-bezier-curve/bezier3-draw1.svg index b3cf15aed..fd3ca092f 100644 --- a/7-animation/1-bezier-curve/bezier3-draw1.svg +++ b/7-animation/1-bezier-curve/bezier3-draw1.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="340" height="350" viewBox="0 0 340 350"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="animation" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="bezier3-draw1.svg"><path id="Path-8" stroke="#DBAF88" d="M37.282 314.328L171.238 46.82l134.966 268.494"/><path id="Path-7" stroke="#A7333A" stroke-width="2" d="M37.738 314.328c98.312-197.562 188.187-157.862 268.157 1.49"/><circle id="Oval-1" cx="37" cy="316" r="4" fill="#FFF" stroke="#DBAF88"/><text id="1" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="33" y="337">1</tspan></text><circle id="Oval-3" cx="306" cy="316" r="4" fill="#FFF" stroke="#DBAF88"/><text id="3" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="302" y="337">3</tspan></text><circle id="Oval-2" cx="171" cy="47" r="4" fill="#FFF" stroke="#DBAF88"/><circle id="Oval-4" cx="104" cy="215" r="4" fill="#A7333A"/><text id="2" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="167" y="39">2</tspan></text><text id=".25" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="100" y="238">0.25</tspan></text><text id="t-=-0.25" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="12" y="254.849">t = 0.25</tspan></text><text id=".25" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="209" y="112">0.25</tspan></text><path id="Line" stroke="#1C85B5" stroke-linecap="square" stroke-width="2" d="M70.5 247.5l134-133"/><image id="ease-in" width="133" height="135" x="231" y="-133" xlink:href="data:image/png;base64,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"/></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="340" height="350" viewBox="0 0 340 350"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="animation" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="bezier3-draw1.svg"><path id="Path-8" stroke="#DBAF88" d="M37.282 314.328L171.238 46.82l134.966 268.494"/><path id="Path-7" stroke="#A7333A" stroke-width="2" d="M37.738 314.328c98.312-197.562 188.187-157.862 268.157 1.49"/><circle id="Oval-1" cx="37" cy="316" r="4" fill="#FFF" stroke="#DBAF88"/><text id="1" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="33" y="337">1</tspan></text><circle id="Oval-3" cx="306" cy="316" r="4" fill="#FFF" stroke="#DBAF88"/><text id="3" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="302" y="337">3</tspan></text><circle id="Oval-2" cx="171" cy="47" r="4" fill="#FFF" stroke="#DBAF88"/><circle id="Oval-4" cx="104" cy="215" r="4" fill="#A7333A"/><text id="2" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="167" y="39">2</tspan></text><text id=".25" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="100" y="238">0.25</tspan></text><text id="t-=-0.25" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="12" y="254.849">t = 0.25</tspan></text><text id=".25" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="209" y="112">0.25</tspan></text><path id="Line" stroke="#1C85B5" stroke-linecap="square" stroke-width="2" d="M70.5 247.5l134-133"/><image id="ease-in" width="133" height="135" x="231" y="-133" xlink:href="data:image/png;base64,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"/></g></g></svg> \ No newline at end of file diff --git a/7-animation/1-bezier-curve/bezier3-e.svg b/7-animation/1-bezier-curve/bezier3-e.svg index a892258c4..4c5c741dc 100644 --- a/7-animation/1-bezier-curve/bezier3-e.svg +++ b/7-animation/1-bezier-curve/bezier3-e.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="149" height="187" viewBox="0 0 149 187"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="animation" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="bezier3-e.svg"><path id="Triangle-1" stroke="#DBAF88" d="M74.5 43L125 144H24z"/><path id="Path-4" stroke="#A7333A" stroke-width="2" d="M24.279 143.124c50.221-100.184 89.93-17.718 99.822.521"/><circle id="Oval-1" cx="24" cy="144" r="4" fill="#FFF" stroke="#DBAF88"/><text id="1" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="20" y="165">1</tspan></text><circle id="Oval-2" cx="124" cy="144" r="4" fill="#FFF" stroke="#DBAF88"/><text id="3" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="120" y="165">3</tspan></text><circle id="Oval-3" cx="74" cy="44" r="4" fill="#FFF" stroke="#DBAF88"/><text id="2" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="70.19" y="36">2</tspan></text></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" width="149" height="187" viewBox="0 0 149 187"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="animation" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="bezier3-e.svg"><path id="Triangle-1" stroke="#DBAF88" d="M74.5 43L125 144H24z"/><path id="Path-4" stroke="#A7333A" stroke-width="2" d="M24.279 143.124c50.221-100.184 89.93-17.718 99.822.521"/><circle id="Oval-1" cx="24" cy="144" r="4" fill="#FFF" stroke="#DBAF88"/><text id="1" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="20" y="165">1</tspan></text><circle id="Oval-2" cx="124" cy="144" r="4" fill="#FFF" stroke="#DBAF88"/><text id="3" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="120" y="165">3</tspan></text><circle id="Oval-3" cx="74" cy="44" r="4" fill="#FFF" stroke="#DBAF88"/><text id="-4" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="70.19" y="36">3</tspan></text></g></g></svg> \ No newline at end of file diff --git a/7-animation/1-bezier-curve/bezier3.svg b/7-animation/1-bezier-curve/bezier3.svg index ff95f8877..35f1eb6e3 100644 --- a/7-animation/1-bezier-curve/bezier3.svg +++ b/7-animation/1-bezier-curve/bezier3.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="149" height="187" viewBox="0 0 149 187"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="animation" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="bezier3.svg"><path id="Path-4" stroke="#A7333A" stroke-width="2" d="M24.279 143.124c50.221-100.184 89.93-17.718 99.822.521"/><circle id="Oval-1" cx="24" cy="144" r="4" fill="#FFF" stroke="#DBAF88"/><text id="1" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="20" y="165">1</tspan></text><circle id="Oval-2" cx="124" cy="144" r="4" fill="#FFF" stroke="#DBAF88"/><text id="3" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="120" y="165">3</tspan></text><circle id="Oval-3" cx="74" cy="44" r="4" fill="#FFF" stroke="#DBAF88"/><text id="2" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="70.19" y="36">2</tspan></text></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" width="149" height="187" viewBox="0 0 149 187"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="animation" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="bezier3.svg"><path id="Path-4" stroke="#A7333A" stroke-width="2" d="M24.279 143.124c50.221-100.184 89.93-17.718 99.822.521"/><circle id="Oval-1" cx="24" cy="144" r="4" fill="#FFF" stroke="#DBAF88"/><text id="1" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="20" y="165">1</tspan></text><circle id="Oval-2" cx="124" cy="144" r="4" fill="#FFF" stroke="#DBAF88"/><text id="3" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="120" y="165">3</tspan></text><circle id="Oval-3" cx="74" cy="44" r="4" fill="#FFF" stroke="#DBAF88"/><text id="2" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="69.99" y="32">2</tspan></text></g></g></svg> \ No newline at end of file diff --git a/8-web-components/1-webcomponents-intro/web-components-twitter.svg b/8-web-components/1-webcomponents-intro/web-components-twitter.svg index 8f59f789f..9d3b0b00b 100644 --- a/8-web-components/1-webcomponents-intro/web-components-twitter.svg +++ b/8-web-components/1-webcomponents-intro/web-components-twitter.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="716" height="399" viewBox="0 0 716 399"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="web-components-twitter.svg"><image id="Снимок-экрана-2019-03-28-в-20.29.32" width="717" height="407" x="0" y="0" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABZoAAAMuCAYAAACQG7arAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAFmqADAAQAAAABAAADLgAAAADAinDtAABAAElEQVR4Aey9B2CkBZ3+/51eMpPes9lsb8DSi4BUERABBQUExfPkTj1/3nniFcudev/rHqd36Hm2Q1EUaUoRBem9l2V7S7KbbHqb3uf/fN/J7GazqZvJZJI8X5hk5u3v5503O/O8z/t8TWmUsEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEjgKAmYj3I+zkYCJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACBgEKzXwjkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJzIgAheYZ4ePMJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACFJr5HiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEpgRAQrNM8LHmUmABEiABEiABEiABEiABEiABEiABEiABEiABEiABCg08z1AAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiQwIwIUmmeEjzOTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAlYiYAESIAESIAESIAESIAESIAESIAESIAESIAESIAE5gOB/ZGU7A4kpTWUkvZoUvpiaRlMpCWSSkt6PuxAHrbRhHU4zSYptZqkwm6SBodFmtxmWeWxSKNz9nzHpjQqD/vHVZAACZAACZAACZAACZAACZAACZAACZAACZAACZDAtAnsDSXlpf6EvDaUkI5Yatrzc4ZDBOrsZjmlxCpnlFtlhdtyaEQOnlFozgFELoIESIAESIAESIAESIAESIAESIAEZpNAMpWSWDwhsURSEsmk6OuUuvfoHZtN7Fz2LBMwmUxixsNiMYvVYhG7FQ+bVSzm2XNczvIuTWvxev4GAwHp7++X3r4+6dPH0KBEIhERcNHyej0S9PmltqZWqior8dorNTU14vF4MElmmmmtdJ5N/NpgQh7piclmOJhZuSdwLBzOF1fZ5ZTS3IReUGjO/THiEkmABEiABEiABEiABEiABEiABEhgxgRSEKHCkZiEYzGJ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QAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkMO8IUGied4eMG0wCJEACJEACJEACJEACJEACJEACJEACJEACJEAChUWAQnNhHQ9uDQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAnMOwLW8bb4kq3jjeFwEiABEiABEiCBLIHfb8g+428SIAESIAESIAESIAESIAESIAESWLwE6GhevMeee04CJEACJEACJEACJEACJEACJEACJEACJEACJEACOSEwrqM5J0vnQkiABEiABEiABKZFwOIpntb0nJgESIAESIAESIAESIAESIAESIAE8kEgGfBNuBo6mifEw5EkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKTEaDQPBkhjicBEiABEiABEiABEiABEiABEiABEiABEiABEiABEpiQAIXmCfFwJAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQwGQEKDRPRojjSYAESIAESIAESIAESIAESIAESIAESIAESIAESIAEJiRAoXlCPBxJAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiQwGQEKzZMR4ngSIAESIAESIAESIAESIAESIAESIAESIAESIAESIIEJCVBonhAPR5IACZAACZAACZAACZAACZAACZAACZAACZAACZAACUxGgELzZIQ4ngRIgARIgARIgARIgARIgARIgARIgARIgARIgARIYEICFJonxMORJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACkxGg0DwZIY4nARIgARIgARIgARIgARIgARIgARIgARIgARIgARKYkACF5gnxcCQJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkMBkBCg0T0aI40mABEiABEiABEiABEiABEiABEiABEiABEiABEiABCYkQKF5QjwcSQIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkMBkBCs2TEeJ4EiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBCQlQaJ4QD0eSAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAlMRsA62QQcTwIkQAIkQAIkQAIkcHQEIqm0hJNpcZhN4raYpAgPJx74n0UCJEACJEACJEACJEACJEAC0yKArxYSwY8gHiE8ovi+4dLvGPi+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pbXFqDb7MWUxyl8sFbO29g4LQrA+fJ+z7Ih9zoBkHerPrvfaVmXQb+vxWtoKZFJXQRAP+yU29wpLG0RABERABERABERABERABHYogQTur3hvghsm473KQIYymgeStvYlAiIgAiKwxxFQRvP2faXLZr5kTYvmWGztUicaJ1KwveiIY1DApPmDQQth4MBgOAQ7jJhZKID1cWtubbKORMyC2B6NRsxfajZo/4k2et9DbMKgo7evQ9tYe10iY0gYsIqgz/YtD+CSTiECIiACIiACIiACIiACIiACA0uAthXzWvF2KHRmvHBp9RxUph9jSxnNEpr7EbaaEgEREAER2PsISGjun++cWcmtq5dY69qV8HFea/HmJovH2zHoX7u1d7S7wQA70knnzxwuLbPKusFWO2SkDRo22gaPnGh+f/9eQG3tUSFpwNZAbKYNGsXmsaV+ZTZvLUSVFwEREAEREAEREAEREAER2GYCzGRe1J52InMIlhlDwgEk82xzcz1W3JLQLOuMHrFppQiIgAiIgAiIwEAS8EEorhg+1k0Dud/+2hcv4OoxnPM6+DUze2AW/oyIBuXZ3F+A1Y4IiIAIiIAIiIAIiIAIiECvBOjJTLuMVNZnFJnr4cu8M1JxJDT3+hVpgwiIgAiIgAiIgAj0nQAvqpg1wNGdOzDYIQffWB03qwv5rSbsswgGMtwZF3t9PwKVFAEREAEREAEREAEREAER2B0I4EVKi6ez1oCxYnj/EecKGPjRLqMOloM7675DQvPu8OtRH0VABERABERABHYLAi6zGT5o7bjoa07xgs9nK3HVtxKCs0IEREAEREAEREAEREAEREAEdgSBMLKYOfBfKZJbdmZIaN6Z9LVvERABERABERCBPZIAL/BKAwGLwSetA6IzMwxS2axl8CqbQgREQAREQAREQAREQAREQAS2h4Dfl7WgD29NInW5BPce0Z08Zo13LBKaPRKai4AIiIAIiIAIiEA/E4gixZmTQgREQAREQAREQAREQAREQAT2dAI7y7JjT+eq4xMBERABERABERABERABERABERABERABERABERCBvYaAhOa95qvWgYqACIiACIiACIiACIiACIiACIiACIiACIiACIjAjiEgoXnHcFWrIiACIiACIiACIiACIiACIiACIiACIiACIiACIrDXEJDQvNd81TpQERABERABERABERABERABERABERABERABERABEdgxBCQ07xiualUEREAEREAEREAEREAEREAEREAEREAEREAEREAE9hoCEpr3mq9aByoCIiACIiACIiACIiACIiACIiACIiACIiACIiACO4aAhOYdw1WtioAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiMBeQ0BC817zVetARUAEREAEREAEREAEREAEREAEREAEREAEREAERGDHEJDQvGO4qlUREAEREAEREAEREAEREAEREAEREAEREAEREAER2GsISGjea75qHagIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAI7BgCEpp3DFe1KgIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAJ7DQEJzXvNV60DFQEREAEREAEREAEREAEREAEREAEREAEREAEREIEdQ0BC847hqlZFQAREQAREQAREQAREQAREQAREQAREQAREQAREYK8hIKF5r/mqdaAiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIisGMISGjeMVzVqgiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAjsNQSCe82R6kBFQAREQAREYDcgkG5t3g16qS6KgAiIgAiIgAiIgAiIgAiIgAiIQGcCymjuzEOfREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEtpKAMpq3EpiKi4AIiIAIiMCOJDCsrnpHNq+2RUAEREAEREAEREAEREAEREAERGCbCKza0LjZespo3iwebRQBERABERABERABERABERABERABERABERABERABEdgSAQnNWyKk7SIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgApslIKF5s3i0UQREQAREQAREQAREQAREQAREQAREQAREQAREQAREYEsEJDRviZC2i4AIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIbJaAhObN4tFGERABERABERABERABERABERABERABERABERABERCBLRGQ0LwlQtouAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiKwWQISmjeLRxtFQAREQAREQAREQAREQAREQAREQAREQAREQAREQAS2RCC4pQJ7y/YDSwN2eHXQppQHbFSp32pCfisP+izi91nAZ+bDtLnIZs3SmOKZrLWmstaQzNiy9ozNak3by40pm96e3lx1bRMBERABERABERABERABERABERABERABERABERCB3ZbAXik0VwXMToCofFJ9xCZXBKwu4jfoydsVFKKhS1sQDZVhYUjUb/tVmJ00JNcs9GfbEM/Y7Ja0PbQubk9AfG6S9rxdzFVZBERABERABERABERABERABERABERABERABERg1yCw1wjNEyH8njEkbCfWh2xUCZTmAQ4K2fXoA6fj0QfGso60Pb4uaf9ak7A3Y5kB7pF2JwIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAL9Q2CPFprLoO5eODRkZw2L2kjYYexqQcH70n04RW05bDbuWRWzu1YnrY3pzwoREAEREAEREAEREAEREAEREAEREAEREAEREAER2E0I7JFC88FlAbtsVNSOHRRy/spb8120tbZaK6aO9naLd3RYrK3dWttaLQvxNwsj5kwmYx1tbZZOpy0YDFq0pMSCoRA8nH1WXlFu4UjUwuGwlWK5vKLSrevL/imEf2p8qX18nNnT65N287KYvdYmb42+sFMZERABERABERABERABERABERABERABERABERCBnUtgjxKaj6sM2hVjozYV874ExeKNG9ZbY2OjNTc1WcOGDRaLxQyKMgTjiAUMWdAQluOJBDycfeb3b8qKpshMQZniczuEZ9Zra2lxu02mUhYMBCyAKYgyFRUVVlVTbVW1tVZbV2d+rO8tOPDgCbDW4DSjOWU3LIrZU5grREAEREAEREAEREAEREAEREAEREAEREAEREAERGBXJdA3RXZX7X2+X4eXB+wz40rtQI7yt4WgILx2zWpbv26dNW7c6LKSKRYnICa3I4s5mUy6FmheEQoEITb7LACBOQ3BOQ0BmRnNFJzDzGKm8Iy6WazjegrMDH7O5kXpLMTspoYGt6/s/AWWQfna+kE2aMgQGzJsmEWjUVenpz8UzH91ULlNx6iBP1/Ybi+3KsO5J05aJwIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIisHMJ+Faub+jREPjkWTu3Y33Z+2DI5FfBbuLtg8NbLL5i+XJbhWkNRGYKyyEIxZyYmZyCQEyBOR6Pu2V+pnAcDcECI1ri7DGY0cwy7bDTSGHO7bTLCKB+iBPa4naKzRmIyxShKUYz65nCtGe7QaEZ2jUmnytD0Xno8OE2fPiILR7D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VhPLz49HuUP7ppyJE8T92pKQtDFI0EDQwLKjgY31TDr35rtto+12kb3VbCE9m/M0iwigGVvD4CaAHoOsDATXyk4DJvlgqNuhGNgMAI2FYuZNmsDjNJWD+iJLRj1PuQfyteRpNlK27FiGZvFkqM5MgdDZKgt8Cu9yx/xs61aSaysV51jHwmxrX5BpxTlZNuKIY+yx9z5fpkDmX3/91ZOV9ek30Fbp098GDRmqXBWr2K6779kkeRnP/eGbbmHn/O3clB/6a6+97uf33e+A+HmAuuuuv9HWWGsd6646B6+6uvVcpa9tsLF4au+4K16Ojf/97wO/fuTRxzY5nmqnLfUmXo+9on/9Bgy2AYOGaHBimB11zHE2ZszYxGLz3QZk/JOoD9ZdfyOvp//AITbyyKPt+RdenO91yScZ8CDCdbvtd3J99+0/yOs88aRT9L45rknxX375xXVz6GFHOGh62ulnuE4HDl7N9Uq+gh9//KnJNal2LrzoYq8nSip80cWX+D73kyzkg9hxp1398xoiPaEz2gVcTxbu5fobbrLNttzGevXuZz169TH6xDtCaweI+R2SZJfvRveevf172HXlnrb1ttvHI4Rpt7X3wPsVnwufMZ81dfGdvve++/29M/EeuC++23w/SDxJwmPu94orr44X+27UKEP//E6oj+801yUnqpwwYbxfs/rqQ+PXRhvFSpodSb3e71slBIrUz596bEH15CjKef+dutse23Z1eqGU5WnDX8BTng0HgwaCBoIGggaCBoIGggZWOA0s9YhmNNivX385JPvbvffeJRCU969YDC4vwyTlY2os72ROZYHDqUgluInBUImaYAEsg+NYe46vKkDYQdtqRQhnpBMJVW159XkeWaXLBSZzHpdY8LMIkmuILlYdOL60V6sXzjo5yERSV1eJ97lC25lVipzK9ihmj16mL4q6duoMXU9/hOm6KHZYznWM+7lSESPV4o4meVGa+pqdJ0BcjnksglsRWvRf16s5B5uJVgYABixPE2icm5dv+YXFiu7Ot4qyCjnicszliDt1hlqL3lfhr9QV3gfoQxxY9lCyWAQQ+2mq0yv3XkIJ0mC9e3W3IoEEy4PsvfeeBl9gJEQ3vyqn+/X/vBEd8vVee+4R3yfqZy8NZiRHEw8btrptteUW1q9vXxsyZIg9/Mgjduutt8evWxwbt9/2L09eR11w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bxkkdWtyUcj80yNYUxIgARLI/wS27d6b6UlQ0ZwpHh4kARIgARIggdwlQEVz7vLOK6VZRbOtT/uWTdR/cy9dAI6+mC2TgvQL38prN21Tf80HA55Wq6b11Xq1vt/j8xavlJIliwc87jcRA/MkAVz7v42boi5ytknd2nHSpV0rU88ZC5bIuk1bpX6tODn3jG7SorH/vpAnT4qV8iKwbcdO+XDESNm6fadXeHZ2SpYorveI3uqGp0V2smFaEiABEiABEgiZABXNISNjAhIgARIgARI4fgSoaD5+7I9nyf+u3yQvv/+1LvJXSgacd5Z0atPseFaHZZMACeQige279sjU2Yt0wb9FknAo0ZRcVhf7O6lDG/Xf3EaqVq6Yi7VhUTlFYNeevbIv4UC2sy9evLjEVa0sUVF0ZZRtmMyABEiABEggZAJUNIeMjAlIgARIgARI4PgRoKL5+LE/3iWvXLtBalWvKqVVwUQhARIoXASSdVHHnfF7dWHQ9cYtCiyYK8eWNwsAFi4SPFsSIAESIAESIIG8TICK5rzcOqwbCZAACZAACfgQoKLZBwh3SYAESIAESIAESIAESIAESIAE8gSBrBTNfN8mTzQTK0ECJEACJEACJEACJEACJEACJEACJEACJEACJEAC+ZcAFc35t+1YcxIgARIgARIgARIgARIgARIgARIgARIgARIgARLIEwSoaM4TzcBKkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkED+JUBFc/5tO9acBEiABEiABEiABEiABEiABEiABEiABEiABEiABPIEASqa80QzsBIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkkH8JUNGcf9uONScBEiABEiABEiABEiABEiABEiABEiABEiABEiCBPEGAiuY80QysBAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAnkXwJUNOfftmPNSYAESIAESIAESIAESIAESIAESIAESIAESIAESCBPEKCiOU80AytBAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAvmXQHSgqteoFBvoEMNJgARIgARIgATSCGzbvZcsSIAESIAESIAESIAESIAESIAESKDQE6BFc6HvAgRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAtkjQEVz9vgxNQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAkUegJUNBf6LkAAJEACJEACJEACJEACJEACJEACJEACJEACJEACJJA9AlQ0Z48fU5MACZAACZAACZAACZAACZAACZAACZAACZAACZBAoSdARXOh7wIEQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQALZI0BFc/b4MTUJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJFHoCVDQX+i5AACRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiSQPQLR2UvO1CRAAiRAAiRAApEksG333khmx7xIgARIgARIgARIgARIgARIgARIIFcI0KI5VzCzEBIgARIgARIgARIgARIgARIgARIgARIgARIgARIouARo0Vxw25ZnRgIkQAIkkA8J1KgUmw9rzSqTAAmQAAmQAAmQAAmQAAmQAAkUdAJZvYFLi+aC3gN4fiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiSQwwSoaM5hwMyeBEiABEiABEiABEiABEiABEiABEiABEiABEiABAo6ASqaC3oL8/xIgARIgARIgARIgARIgARIgARIgARIgARIgARIIIcJUNGcw4CZPQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAkUdAJUNBf0Fub5kQAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEAOE6CiOYcBM3sSIAESIAESIAESIAESIAESIAESIAESIAESIAESKOgEqGgu6C3M8yMBEiABEiABEiABEiABEiABEiABEiABEiABEiCBHCZARXMOA2b2JEACJEACJEACJEACJEACJEACJEACJEACJEACJFDQCVDRXNBbmOdHAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAjlMgIrmHAbM7EmABEiABEiABEiABEiABEiABEiABEiABEiABEigoBOgormgtzDPjwRIgARIgARIgARIgARIgARIgARIgARIgARIgARymAAVzTkMmNmTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQEEnQEVzQW9hnh8JkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJ5DABKppzGDCzJwESIAESIAESIAESIAESIAESIAESIAESIAESIIGCToCK5oLewjw/EiABEiABEiABEiABEiABEiAB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gZ4Y5CtdghtLjzBf6U4rFC++axxafSVQ1S/ams6LQnNNibE9CZAACZAACZAACZAACZAACZBAXRCo6u/fc0ZoBmwIxMYUo8i/eU/aHvlq8yIVnL+UpJS9EhkSLK2bR0oTzfLePDhaerY63ywtmroywtvoaGvHURc3kNcgARIgARLwbgJV/aKt6egpNNeUGNuTAAmQAAmQAAmQAAmQAAmQAAnUBYGq/v49p4RmJ3CXC3MjOan/th/ZJgvWL5D1+9ZKi9AwGZgwQM5re4HEhrVRUw1NCmgcm+lj6+THbRIgARIgAReBqn7R1pQTheaaEmN7EiABEiABEiABEiABEiABEiCBuiBQ1d+/+uH6c7PYdHY+6tDcsUUn6XhxpwpB2LYVNuABEiABEiABEiABEiABEiABEiABEiABEiABEiABEjiHCTAb2Dl88zl1EiABEiABEiABEiABEiABEiABEiABEiABEiABEvAEAQrNnqDIPkiABEiABEiABEiABEiABEiABEiABEiABEiABEjgHCZAofkcvvmcOgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAl4ggCFZk9QZB8kQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkcA4ToNB8Dt98Tp0ESIAESIAESIAESIAESIAESIAESIAESIAESIAEPEGAQrMnKLIPEiABEiABEiABEiABEiABEiABEiABEiABEiABEjiHCVBoPodvPqdOAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAp4gQKHZExTZBwmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmcwwQoNJ/DN59TJwESIAESIAESIAESIAESIAESIAESIAESIAESIAFPEKDQ7AmK7IMESIAESIAESIAESIAESIAESIAESIAESIAESIAEzmECFJrP4ZvPqZMACZAACZAACZAACZAACZAACZAACZAACZAACZCAJwg09kQnp9PHwZRjp3MazyEBEiABEiCBGhGIiQyrUXs2JgESIAESIAESIAESIAESIAESIAESqDkBRjTXnBnPIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEScBA4axHNjDBz3AVukgAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEA9JnDWhOZ6zIxDJwESIAESIAESIAGPEThxolD2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"/><path id="Rectangle" stroke="#C06334" stroke-width="3" d="M1.5 1.5h714v33H1.5z"/><path id="Rectangle-Copy" stroke="#C06334" stroke-width="3" d="M1.5 43.5h230v169H1.5z"/><path id="Rectangle-Copy-2" stroke="#C06334" stroke-width="3" d="M241.5 95.5h473v128h-473z"/><path id="Rectangle-Copy-3" stroke="#C06334" stroke-width="3" d="M241.5 333.5h473v64h-473z"/><path id="Rectangle-Copy-6" stroke="#C06334" stroke-width="3" d="M241.5 228.5h473v101h-473z"/><path id="Rectangle-Copy-4" stroke="#C06334" stroke-width="3" d="M714.5 47.5v43h-473v-43h473z"/><path id="Rectangle-Copy-5" stroke="#C06334" stroke-width="3" d="M1.5 221.5h230v176H1.5z"/><circle id="Oval-5-Copy" cx="18" cy="17" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="1" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="13" y="22">1</tspan></text><circle id="Oval-5-Copy" cx="18" cy="60" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="2" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="13" y="65">2</tspan></text><circle id="Oval-5-Copy-2" cx="259" cy="65" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="4" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="254" y="70">4</tspan></text><circle id="Oval-5-Copy-3" cx="19" cy="238" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="3-copy" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="14" y="243">3</tspan></text><circle id="Oval-5-Copy" cx="259" cy="113" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="5" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="254" y="118">5</tspan></text><circle id="Oval-5-Copy-4" cx="259" cy="246" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="6" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="254" y="251">6</tspan></text><circle id="Oval-5-Copy-5" cx="259" cy="351" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="7" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="254" y="356">7</tspan></text></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="716" height="399" viewBox="0 0 716 399"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="web-components-twitter.svg"><image id="Снимок-экрана-2019-03-28-в-20.29.32" width="717" height="407" x="0" y="0" xlink:href="data:image/png;base64,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6rp2Tdh1dXfo7qZ6l/rNe5h7yvaCvYq9f/6a/uutfVH7Wvb77K8/YHug+iDjYGkD0jC9oadR1NjelNrUdmj0oZZm/+aDh4cf3n7E8kjVUcOjy45RjxUf6z9edLz3hPRE98mskx0tk1vunRp36sbpsadbz0SdOX82/Oypc+xzx88HnD9ywe/CoYs+FxsveV1quOx5+eBvnr8dbPVqbbjifaXpqu/V5rZRbceuBV07eT30+tkb3BuXbsbcbLuVdOvO7Qm32+8I7jy7m3v35e8Fv/fdm3ufcL/0ge6D8oemD2v+5fivPe1e7UcfhT66/Djh8b0OfsfzP+R/fOosfkJ/Uv7U4mntM/dnR7rCu67+Of7PzufS533dJX/p/VX9wuHFgb+D/77cM66n86XsZf+rJa+NX29/M/JNS29c78O3eW/73pW+N36/44PPh3MfUz4+7Zv2ifSp4rPj5+YvUV/u9+f190t5Mp5qK4DBgWZmAvBqOwD0VAAYV+H+Ybz6nKcSRH02VSHwn7D6LKgSLwDq4U25XeecAGAvHHbBkBvelVv1xGCAengMDo3IMz3c1Vw0eOIhvO/vf20GAAnuZz7L+vv71vf3f94Kk70LwImp6vOlUojwbLApWIluGk1cDL6TfwOWyYCwhO6N0AAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAFmqADAAQAAAABAAADLgAAAADjQlLXAABAAElEQVR4AeydB2Bkd3ntv+lVGvW6q+327uK1vca9YQPGBmMb7AA2AfySQAghLyGkkeSlkbwUEkIKJMAjARuIcQNjm2JjGxt3cN319qZdrVarrtH0qne+v3TlWVltV6PRSDofzE6793/v/d258sy5557PNoISFgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmcIgH7Kc7H2UiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEjAEKDQzA8CCZAACZAACZAACZAACZAACZAACZAACZAACZAACZDAnAhQaJ4TPs5MAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAoZmfARIgARIgARIgARIgARIgARIgARIgARIgARIgARIggTkRoNA8J3ycmQRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgEIzPwMkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAJzIkCheU74ODMJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkICTCEiABEiABEiABEiABEiABEiABEiABEiABEiABEhgMRDoSuTkcDQrx+I56U3mJJzOSyw7Ipn8iIwshg0owTrasAyX3SYBp01CbrvUex3S4nfIqqBTmn2OeVsD2whq3kbnwCRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiQwBwJHYll5dSAtu4YyMghhmXXqBKohPG+qcslZNW5pCxTXg0yh+dT3C+ckARIgARIgARIgARIgARIgARIggZIQyOXzks5kJZPNSTaXE32eV/cevWMl4c+FzA8Bm80mdtwcDrs4HQ5xOR3idjnFYV8eSa96/MaiURkYGJC+/n7px20gPCTJZFIEXLQqKoISHY5IU2OT1NfV4XmFNDY2SjAYxCSj08zP3imPUbcPpuWZnpS0w8HMKj6B1XA4X9zgkS3V7qIMTqG5KBg5CAmQAAmQAAmQAAmQAAmQAAmQAAkUl0AeIlQimZZkOm0E5uKOztFIoHwJuJxO8Xpc4vO4jRBdvmt6amvW39cnB/btl31794jL5ZJ4MiHRWFSceFxVW2Nei8ViEoEIHQwGxO10STqZMsKyyw4HKv42qDC/au0aWbdhg9TW1p3aipTxXAciWXnkWIICc4n2kQrOb2/xybqKuTmcKTSXaIdxMSRAAiRAAiRAAiRAAiRAAiRAAiQwGwLqVo4lUhCfUuOTq3HRAWHJYccN7k91gaqbcTk4Gsch8MGSI6COXr3pSZV8Li/ZPNz6cOzj6Xj5vR4J+DyL3uWs29l+qF2e+OlPRX3Ibri3PRDTA4GgOPF4YGhIDh85LMeOd0k6lxW32y09PT0QkWtl61lnSywSFZ/XK6tXtklfb69kcIWD0+MRgfvbhizeCy+8WFa2tS2JvwkPdMSNi3n8Q8AHJSOg7ubrVvpPeXkUmk8ZHWckARIgARIgARIgARIgARIgARIggeISiCaSEo3jsvmxUgFK3Z16Y5HAciGQyWpMTFayiIqxKuj3StDntZ4uqvuuY8fkJw89bERgJ6JBPC43RGO3uHHSKK1XLGQy0tPXKy+98rK8/OorEovHpQ4xGYlEwribT4Nrued4t1RAlD7v3HPh9vZKY1OjBBCjkYGAnU5nzDgK5cq3vk0aGhoXFR9rZbXJ373tMelEkz/WwhFoRdPAm1YHTqlpIIXmhdtvXDIJkAAJkAAJkAAJkAAJkAAJkAAJGAKavTwcSxhxTV9QYdntdi16Fyd3LwnMhYDJJoeIqqKzlh4XlQEf7h1zGbZk82ax3s8+/Yzs3r3bLDPg94vP54OjGbE4iMro6+1GLnOfdHR0SGdnpwwMDiAqR69kgOcZLmWz3bjCQecLw/FcEayQ0zacJk0QktesXSutbaskWBWCGO02YnUUURsqWq9dt07e/Obz4JRePCeodoczcsfBmKSRPc9aeAJufP5uWRuQjSHXSa0MheaTwsWJSYAESIAESIAESIAESIAESIAESKC4BBKptISjcTOoHZfBe5FLq/mrLBIggVEC2gAzieMkD9FVKxSEYIvjpJxreHhY7rnrbhMFopEXKjBrRSIRUYdz+8H9cujgPtHpwkNhSaT0b4BdHC6Nx3FKbiQnmTQiNOCANq9D+PO6PcbhHPAHpBaO54svu0zWn3a6BOFs1mgdjR3RbOc4HNEqVr/7uutN80A8KevShn//A5GZVX4EPgix+WQaBVJoLr99yDUiARIgARIgARIgARIgARIgARJYJgQ0izkST5itVUHJq5mrLBIggUkJJFMpSSObWKsCzuYA8pvLsXqRrfyDBx5A1nTeZC17ITSreDw4OCi7du2S7du3yeH2dhkODyJiGSeX8L4H26IxGsORYQjqI+JBLrXXDfezbUSSaAo6gvxqJ8bIan4zmgOGQlVyyeWXyxlnnilNTU1oGhg0QryKzeqkjsVjRqi+5pp3GlG6HDnpOqmT+bb90XJdPa4XCNy6PjhrZ7OdxEiABEiABEiABEiABEiABEiABEiABEpPoFBk9qDxF0Xm0u8DLnFxEdBjRI8VrQiiZmIFDTPLZUtUZH7g+9830TehUEj8iL3Qxn7h8JC8ggzmp556Unbs2CGDiMLIw3Vsh2icRNxFd2+f9A0OyYjNgdfcEJczksLrqUxOHJhmBI1A9eZCPnMGQrQ2C+06fhzu6C7jitbIDC1tEOpyuaQKQrQHru+HHvqxiecoFz6F66GZzBqXwSpvArqPdF/Npuhong0lTkMCJEACJEACJEACJEACJEACJEACRSRQGJehURluCEMsEiCB2RFIQ1TVKA2tcorRiJi4jDvN8VxRWWnWT4Xf3t5eef755+XFF1+U7u5uk72sTmb08ROXCueIZNZ85QSubggEAsbhHEUEhg/ND624ELvNbgRrbSY4gggRO0RnJ2I2WltaZM2aNXL22WfLunXrjMisy9Sbups1mkNFaI3RCCLjuZzqi7uG2fivnHbINOuiDQJ/a9PoZ3qayRD+wiIBEiABEiABEiABEiABEiABEiABEigZAW38Z2UyqzuTInPJ0HNBS4SAHjOWs1mPJT2mFro0ruK+795rxOBKOJnVVaylAvLhw4fl4MGDMgQXswrM6nDWlncZCMEjyF5W0VxF50q4kG14X5/X1tRCf3YgBiMniUQSr43Ghui2ZuFo1mmG4IDWcVXEfuqpp8xyVFTWm8ZwqEitkRoa2/GDBx8wkRpmpcrgnwc64hSZy2A/zHYVOuM50X02U1FonokQ3ycBEiABEiABEiABEiABEiABEiCBIhIYjo3+WNdMZo+bTuYiouVQy4iAHjujjfJErGNqITf/5889C5HYJpWVFeJ0OuAoFjTli0l7+0HkMu+U48e74DDWfOkRSaWSuKUgBOckD7E5B5FaleZRAR3b5XSKz+tWo7M4MKYL0Rl23Ou0mUwa2cu44d4FBk5Mm0wmZe/evbJv3z6I0gnjZB7BeJbYHUCetYrOL7zwi4VENL7sA5GsPNOTGn/OB4uDgO4z3XfTlbauXFSVyo3Ij48m5Oc9SQm47HJ9m1/OqCnvTqPlBFj5HY5mpR0fjEORjAym89IWcMrqCr25pBlWeP1DxiIBEiABEiABEiABEiABEiABEig+gSiciepINA3A2Piv+IA54oIQiOLkyZ79B2QADttoNGaygUOIjljdtkJam5vmbZ00szmby5tjSo+tIKImFqJURD506IAEA36Iu6NSmzYCVKH52LFjcBq3w808CGexw4jNKjSbLGU90ZTPigcRGFmBiJyMixdNANWBHIX7WbIZCcD9rIJxBiJ1ArnM6SSah44gGgPW0dQIGoiikaDf5zPO6QMHDsimTZuktbXVYFCxWW8as6FZ0QfxvsZsNDbO3z6ZDf9Hjo02QJ3NtJymvAjovlt3+tQRLItGaMZVAfJEV0LuOxyXYYijo5WTz28Py+Zqt7xvTcCIpeWFv3zWRvn9+GhcvtceN5dYFK7ZnqHRwHh9rQVC869trJS1EJ6Xc+klJke7unGpyetsisGjuqpSGupw+Yue2mSRAAmQAAksGwKJzIjs6M7Ivv6s9MXzsq7GKafXOWVd7Rv/e4vfAoLzwuLkdWfL5vPBDSUBElg+BHJwFEbjSbPBmsvMIoHFTqB/YFC+++CPZe/+g0bQnGx7qqtC8q6rrpStZ54x2dtzfk2PpThEZj22fHjsQPREKUuF3MceeRhuZDcylX3ji1ZdQWMzwuGwcRmrDqBCs0ZsuHAfDAYkFArCrexENjO0mrTTCMaaqaEOZx/iN0Yg5gQQfeHxeiSVTkkYecsRiNfqhjZ/TyDwD8Mu6MR4GpdxtLPTCNvNzc3GwazL0mXqsj0Q5XWdHnv0Ubn5lg8umC6xfTAt7TBAshYnAd13ug+3QIudrN7462ayqRb4tV/0puTeQzHpnqLD4U5s4GdxO7/BIzeuDkiDz7HAa1xei+9CjsrX9gzLweHRA1n5rA46ZQ3E5GqPQ46owxm3Q8MZOYZp/+/Lg/LOlX55zyo/fuQuL0FUg/IffPin8pMnnjZ/lOdjT9ZUV8mH3/ceOX39mvkYnmOSAAmQAAkUmUBXJCfNFaf+3eLFzrT82zNR6YfAPLHObXXLpy4JSpXPLsexnEf2p2R3b0b+6qrQxEn5nARIgARIYAkQiCVGLxVXYUmFIRYJLFYC0ELlmedfkB88/KgxaNXDUNW2okVWtrZIc1MDGtBFpKOza+zWKd+++z7ZtmO33HT9u4zrt5jbrceSHlMZiKp6jFUiJqKUdQRuZW3Up8KxirpWaRO+Tgi/PT09JtpCoytUIFax1wvheNXKFjBrkiSE4zgEYx+cyRVoBKjzOdBSbcP69UY8dmjzPwyqQrMK6pF4VAYh8PcNDsrx3iHEhiQkEolAjPZKDML2kSNHTFNAFb31ygm9WaXu50gE0yAzetXq1dbLJb1nZEZJcc/LwnQfTiU023DmRT+vZVm74bS9+2BUDs6Q/1G48g7oole0+OQGiKQViNZY7qUi/L+8hg6jehbMaZMPb6iQCyDIT1aJ7IjccSAqTx4fPcOucRp/fHaVuJeR2Hz/Q4/Kjx/9mcFTibOGmmNUzOrtG8BlPTlz2cuffOo3pLG+rpjDcywSIAESIIEiE9BvSR/97qC863Sv3HTGyf834f5dCfnqz2PTrlXIa5eVIYdxPOuXsj+5olIuXjW5Q2DagfgmCZAACZBAWRPI4zdZz2DYrGPA7yu567Ks4XDlFhUBvfL3v799p+w/2G4E0/e862o5d+uZU25DX/+AfOe790v7kaNGZP7wzTfJutWrppz+VN5Qd28sPhrH0FATgvBbOtPcXXd8C839XMhmrjQuYSOy4Z+Dhw7K008/La++8or09fVJGo5jNbepKK1i/NYtm6SlPiSdHYdFY0aam5qM4JzEdrQg2qKlpdm4xLVhoIrTSdzykJy1KeDx7uNy5CgiOboG5FBHt9ghtIfUAY0vr+shUF955ZWyatUqE5dhCc16r85mFaUzmazc8sFfPhXUc5rnSCwr/7k7MqcxOHN5EPjExgoTxTtxbcrS0XwUH7y7D8Zk20B64vrO+FwvNX20MyFPQyy9Bq7ca1b4xKPq8zKs/lRevrwLf0DwheYMWNo/ig9ByD21+O6DEP2ryFk5t94jX901bHKcv7E3Kr+O+ZZD6R/8R554xmzqTe++Wq689MITzvwVg0EEWVVfue0OOXi4Qx578jm55cZ3F2NYjkECJEACJDBPBI6Ec9IdzcnXX4wZJ8kvnYTY3IF5v/HizJ2Zw8m86E3P63703ICsqXHI8x24UmvlaAOYedo0DksCJEACJFBiAonU6O9bbRJW6kv7S7ypXNwSJ/AgXMwqMm9Yt0ZuvvE6I5JOt8l1tTXyyY/eKk88/Zz86JHH5dt33Sd/8L8/jpiJ4uUp6zGlx1YW+ed6rAXgGC5F9ff3SR5ZzG4sD2nIo4vEnT5W8Vmb/8UTcdP0T8VvRCsbQ5vmVjfV18LYl5HqCh+c4I3S3NAgA/394oBQvqKpBe7oUWFYbG64tV2SzLgkbxuRdNYjTlsGgRl5SSDts7tvyGxzEk0ANR5Dl6Puac11thk3MxZqhHfVxmzg7ofQPCz9WFZtbW0pMI0v49VT0PnGZz6JB3p1/tZT6Oe2F1f6h8fjek9igctwUt2X2vNtYr3xlYlTlPC5CqPfQ0TGM91J6/A85aUnoTjf1x6TxxBSrREQb2nGJQN6TC2j+va+iEQyeSMuf2JzpfghJM+mzsTBeMv6oHwNZ5mexb64EA5ofW2pV3dvn8lK0stVrrjkgqKLzMqvApfSXH7x+UZoPnqsa6kj5faRAAmQwKInoCKzVd+A2NwXy8n/enNAvLP4b6qK02k9Az7LqvHb5f5dSbl7e0L+/poQfgawSIAESIAElhIBdSNq6SX+LBJYrAT2HTwkz/78RdGojF/95Q9AzJzd51mdtFdcepFx0j702BNy3w8eklt+6YaiYtBjS4XmZAoN9EokNO/dvVO1W5w80iZ/+VE9F7EXKjW7nG7xuL0CbVhycBCro9iJmzYsrA1VShDr6MXzhjWrpbqq2jT989c3iBuNAAPQJWBPNldEO7FdeYjobtxyELVzHoyNZbqdXglHMnIk0CUZzWxOJ8WNZoS1EPY1o7mqutq4vG12p3Eym5XDfnBBAHc6k7J/3/6SC827CnqEFXXnTxgsBEA3Qgs82XqgIy6LJdpDxfTLGl8/obI7nBGNzi1V6b68buUblza1vfWN087bKzFENtyJyIbP/HxAni6CyFy4oto48PZ9UfmTXwzIC8h6Xi7VgczlV/pHv8h8EKLxbEVmi88ljV7TZFGf348GjMuh0vjDr6X/AdTco/mqZHJ0bM2PYpEACZAACZQ3gYlXRT24Oymf/P6QvHxs5maxu3pmnqZw6/ti6EyOE8R/845KWYEoDRYJkAAJkMDSIaCX9WcggKmpcD6EZm34dbynTw60d8gA4jnUzcgigWITSMEpfNf3HjS/mW++8fpZi8yF6/G2t1wirS1N8uKr2+W1XXsK35rzY+vY0t/aeszNd2lMxYED+yDawmmMxzlcTa43jcnB/8XtgaBcUysBf8CIzR4IxhXITa5CDrPmSHsh0oeCFVJVUSlum0PymZyglaF4IAxDYRYbhGuHmhbwug3fEfWxE5ZonTbghaBcVQUXdK201FVLKIB8ZwjYdricY5FhNBHMiRPNCZGpITasnw2it82hz13A4sA6e2Xf/vYpGzjOB7su9F0bpFu4aGg1HvcdiA62bm+ufV10LtpCphlI96Xu04k1u1NPE+cq0nM98H58NC4/OBKXOMTm+SxtJPilncOyFrnDN68LyoaQHlxLt37aNeoKVyfy+YjCOJW6dUNQ/s8Lg3IAlw4chnC9Cg0El0PFcbnJX3/+i/KB91wrbz6reF1xk8mUfBdnbZ96/sXlgJHbSAIkQAJLgoBmJ6uzuPBbirqc/+wnYblstcdkN5/RhC/vE7a2J5qXSKpwrgkTTPLUjaivz749JKurl8d/bydBwJdIgARIYMkSsEwthY3CirGxw2jq9cDDj8vL23adMJw6J9922QXy9rdcbC6/P+HNMnryi5dfk7vvf0je9fbLcVXpeSe1Zg889Lg8+dzsflude/ab5P03XHNS4+vE//61b6OZ3XH5qz/85HjMgwr56uLVq1ULa6rXC6dZ7I9feGWbDA6FcZXuBWhk13pKm6OfzVtuvEE+/6Wvyk8ef1LO2HT6KY0z1UxWfIYecz7P/F6ZrY331G2sV0WPxuHYT/jOWAUhWHOTXXAoq5PZgTNNTtw8+Px4EGvhRDTGCARxmJTxXXLU7eyAiKyDqOicRexGHuKy14eoDLdb8vCqZSD2p0fwOsZRF3UzspxXrxqSKJoJRmGY055QnZ1HZdfu3VLf3IrPbUBSYKH6G5q0YbycGTuN8WOI9tSmjSG4q0tRqiuVqk7iosITVkk5sWZPQPdps+9Eg8yC/pK573BMHiixW1YbC/7jtrB89txqaZoAY/Yoy3/KHWgCqHVJ06lnHjWAz/pKp6gdXpsKLhehWbnpH+n/+vbdOMv6GjKn3i3aGHAutWvvAfnWPd83/1GeyziclwRIgARIoLQENM7irGaXvNL1Rnfyk+0p0VtzhUOu2uCRc1rcxomssRrjGX0nsbp1AXQXr1vQr2YnsbaclARIgARI4GQIqJtZywlhqFiVgKj0r1/9loQhFHkgQm3euA6C1Yjs3n9I1OTykyeelcHwsNz83ncVa5FFH0dFMXVfp8ZiRU5mAe4JYu8I1LrhyGgD3soKOEjRcM0q/ylmAcdiCbN+hdrT3/7LV01Du7+E+FxYU71eOM1if7xj916zCVs2b5zTpjQ11sPpWy2dx47LED6jVUUUOlV8hZ/ZXEEAfXZeq3+gz7i73XAO65XRCETWS6RHH2PJ+hlV4VtLReNcPC1Zjb/I1pjPlV6JkHM4xA4h2oVj2IjVEJ3Vi63Zyg4bxGgXxGhEJBiXNj6ILmQwO2weyYwgIkTFdHy2a6qrIHZ7zJXZKl7HYjHpOnZMomj654bz2YjZmFdFVO1NlR+7ulpjRrqP95RMaD5WwliHIbht//jFQcPe+ucyXLn/LvRxs0q1rtuRrlCKaoS+ptG2szXZaqs5FXCPwzQ7z77cOW3+ZPt0QX/N6NkcLf03gIMnCujzWZVYxjCWkRu7pGE+l7WQY+sB1TNmX2/2z+2LTIt/VGjeg6yXd06SvbKQ2zlfyw5VVshbL7tIHnzoMXnltV2y7+BhnP1+p5w3TRfdqdZFv+Dd++BD8jQyrLSaGxvgkn6TPPjwT6eaha+TAAmQAAmUGYFPXhSUP/hhWIbQsG+y6ork5PaX4uam32lqIRir+HyyVekZ/V50svNxehIgARIggfInoIKqlh0iULHquRdfNSJzfW21/O4nboWo9fpVu7v2HoRx5l554ZUdcAqfL00NdcVabNmMc/VbLxW9Fdbv/8U/mqd/9Nsfg/j+Oo/CaU7m8fvfc40R7VXEKyyNSZispnp9smkX42tHjnYaEVUb2c21VrY2S1//ABzjx4orNI8dY9YxN9f1nG7+vt7ecVFZhWabisYQiPUx/jUOZj/czkHEZGi+ciYNYVgjL2pqJBj0m8gNFaIz+PsQR8Smupz9Lo9p4peHCJxJZ9DcD/nMqmHhRIp+6kYwPgY2qrEDkRhOqJCVFUHEc/ikq7sHTme7uOBiVqe1Sm65DEyImF8/suqc1kG0yaDd7pYAXPkDgyeKsdNt71zf602+MWZhrmMWa/6/PLsKQv/od/F+rOe/IBHBqo+dViFtY1f4Z6DWf/aVIestubrVJ5dCwLbqi7uGRRMVtE6rdMkvrfZLEFqk9S0/jfnVBXz7/uikAvLbmr2iUbY+3cdjpeL0i/0p+eHRhPWS/PXWqvHPnvXixeivdgESDVQP/HesRylqsn26oELzDQjmXocoixqvwzSdexARGjOVRkFcjTMQqypcEoNorALovWggOJuukP/nnCrpBXCf0y6tk3RGnGnZi+X9QTRV1NKP5Vxd25ZQPTQ2phl4if+j/1G4CrlRW3AJzzfv+p4cOnJUvn7HvcbdfIvpqFsxKwI79+6Xb99zv3Ex639srrriErn2qitl976Ds5qfE5EACZAACSw8gYMDWelGDMYfvqVC/uaxYWQoT/7D0lpTfVezlvV2slXtK574cLLL5vQkQAIkQALzS0CbhGnZVfkpUh041GFGuuDNZ50gMuuLm05ba24qOB9EbvNEoTkWT8iRo13GZbludZtM5fjt7RuQ42iankikjJC1bk2beAviCCK49F7NNfV1NWZdejC9Rkhs3LDGPFeB7Hh3rxyDa9IPIWwFBEp1G09Wyujg4dGM6VCoQta0rZizWKxj9g8OGWdpoWtWnaQDQ8PGbVpTFRpfHV3fvv5BRBo44BINSS1uKYh9WnrVq9XLJwcRULd11LHqnPT1wuXp/AOInFDmQTRrW43YCcvpqu+pq7tvYEiCYKSc0ljm/vYj0/LS+UpZ6UzG7OumhnpxF0HEX9HSjMiXHXChF9dRah1jpchoDg8NmYZ/GoljhOYxkRmSs9k1+loAecxeZDWre1gtxbVo0NcIA5o2COyFUN2Xx+cLCrAHonFNqEpa0MTPH6gQuxtCtTOFzxgiMzBaBo7o4XhUBvr6ZCgSlhQ+ww44ob2BSnxm/DgG62T/wUMSxuesFg0IqxDZUVmBcbBO2sNaI6vhZR4VwSE06zpX5iokHp9ZhyvW52w2ul2xlnWy40Qh5taOmT7UfeyG6KyisJZe3W/pvk48WI3n7WMxIGdWuw1fnU4nt0RmbUR4Xt2JJ6h0Gh13AwToPzqzSv4NYra6nLX0E/OpN1VKA/TRiaU919SN3Qoj6Nf2RswJB20EOLH0Fd3XQe0UWaKabJ8uqNCs230GhGMt3ZEzlQrT71n9+n+UAjjzo/EOW2vd8nc4ozCZZdsaU3dCHXZY/SQ7zZpmqdxbznDdXtckH76T2U5LaLY+/Ccz72KfVr+M/d5v/po8+uSzxt28bece2X/oiLwP7uYLzjlrys3TL1r3PPhjeebnL5lp1MX8kQ+8V1ataJlyHr5BAiRAAiRQngSS+NL5f386bL5ceuf5S1sVheby/BBwrUiABEigCAQsp6sKT8UqzW3V0pi+yy96sxGUCsd+zzvfJuefs0Ua6mrHX1bh9f4fP4YrLl8ef00frIeA/NEP3WRckPpcm7595fa7jDCqzwvr5hvfJefiKk2tb939gGlA+Jnf+Zj859e/YxzWzYhFUKFZfzt97Vv3QmA7MZdV1+l9yEsuJHGsq0f+4nNfNEKmtSyNA/nNX71ZWpsbrZdO+n4AIvPn/v2/zHb93Z/97vgyX96+W+6870dmvH/4898bz7E+gHX+ym13yZpVK+STv3oLtulOCMCD8tnP/G+zrbpNWhr1oeOqaK58J3v9z3//N820KsZ//Y7vvYHlWy+7ENnUl5lpuiDGf+HLt5v91VhfK5o/rfXxW98/pTBvJijhP1nENGj50MyuGOUfG0cb6hWzrGNMG/LNd6VSKcPD7dZjUYPTEJ+mix3bJg9E4qrKEIRmj2ThZtYEZ81z1vvu410SHuzHyae8OcEQgAs5hpMZ4XBYeqprpK6q2ojUaRw/EWRBDwwPQZSPSDgakWE8jyfiOFGUl4qKKqmpa0DcJxoMIvLTZIWriIznmlGdQ/NAGxoAamaxHv8ar6NivLqa83Dqp3Gsl6pi+F5drvXqQFreCjexVaozPt+bMuZNS2QufE+FZpXbqj2vG0U646PHiDqZC0Vm3eyhVE6q3JrDPfqXLwhF+MPrAvIfuyNm2PdA7ywUmdXFHMdOq8X41t9K7Tmn6/goerLp8lW0bilIMVDdrh8m0a4SRpRMtk8XXGi2dpQKxtOVAr2hQGQunFZt6B/bWCmffWkQh+vkVed9fedMPsXSedU6o6DbPNdSsVprGA4uZWt9wM2Ly+Af40Se4G6+7TvflZeQ3fzBm64XjdkorJ179pssZs2ZKnQx6xlxFgmQAAmQwOIjsKrKab5E6pfzWHqqbxnF2a4NtWXztaw4G8RRSIAESIAExglYYpolgo2/MYcHW8/YJK9AMD0Ax/Lf/POXYYY5UzbCyayuYRWRamuqzK1wEXd87wdmHnXbWs33Hn/6F0Yo/crtdxtxVae/43s/NMKoTncBhOE6xHO8tnufvPraHrnn/ofHhWZr7C9/404jMjfA2XzWGRuls6tb9DWtN52+3gjPxyCmavO/n7+0HeJpUK4piL3Ygd9RKiy/822XGVH42V+8YgTeO+/7sXwasSCnWuq01t9smmPd0dklbYhr0Npz4ND4kIePHpO1EJa1dD20ztmyydwX/qMNBVubG+SJZ14wv/Uuu/AcNAQMmliEyV7XeVXY+8KXbzPZ0RvWrpKzwUYdvI8++bw89uRzxhn89ssvHF+MXv2qfDT2YNWKZrhfq8bfW+gHPjit1QV77Phx6KiQVOd40qSz67jZJM1rLmZZ62Udc8Uc+w1jwYnshojsgqCsy7NuRmjG10bVT4IQfNU1Xxn04TlE5YA2DhyN1WhpapYVMKSZGA27UxLIVk7AYazN+5JwQPsQg+H1+CSLz0wGIqLH55eVEKHtMF1qNEgmm5GjcMnHITzr8VON5eiJEXXFu/HcFFZCc56dIxCWYZrQddJ/9T6H5aQhlpeqNHaiXOuZnuQJQrM6lVVoPnvMHFu43uuQsKD1pipkcxe88ULfqGj/vjWvG2RVMP7ca3Cg648JlMZwqL6ptRJJCypU63uFwrT2lvt/cC5rqcj9p2chg3tM7VZnswrNX9mDJo4Qrj+z5fUrMrYNZuTBjtI51HX9JtunZfOLZiah+bwG7wk7UDeosFZjR+kYlk298D19PBvH9MR5FutzKzrDj4iQuZZa9LWy+IOgTukK/IFajjXR3bx911757Oe/KO+77hq58NytkkCe0r0PPCTP/IIu5uX4+eA2kwAJLF0CAVy2ePVpXvnRnuS8b+Q5rfPbGX3eN4ALIAESIAESKCmBN21cLzdd9w75/o8eM0KmNv/Tm1YbRMrzzj4DDtkzx926Kv6qMK0u3M/89kchZo6aYS469yz5u3/9mhw6fNQIxC1wEO/eNyrEqsvZit3YCvH10OH/MMsKD0ch4L7eMF2NNr/+kffJaetWm+Wru1nrLRefJ9ddfYV5rP+oc/qbd92P302vnCA0q0nnM7/zUQi3owLN1i0b5bP/9J8mcmN85lN8oGOpmL5rz4FxoXn/wSPjo+3Zf2hcaN6JabS2bD5t/H3rwbngqaVCsxdO0OuuvtJ6a8rXf/bsC4aXCswfet9149Ofc+Zm+Qc4oh/B/rrykvPGX9dmhsrw1pvfM+fYkPFBi/RAlQE94dDd0ycaqdIA5/VcSoV/rZbGU3esz2X5xZhXpUMVtvXzq2WJ2xqLoaJyX2+PDPT3GVHYhZMHkHoRmQGRHrdaOJa9Xjem6ZXjxzNoEJhD7IEdx2eFcUDH4FjWWIs6RGLEEwlEZaQRqZJGNOeQpCEw63IdGLNOr1iAazmBuBV1TrsRweHCCQEVs9U8a7PucfLJhUaJ2mRQ/6dxHZkU8qFniIUzG1akf0al1iINVuRh1JmrPd20t5vWisDo30d1J0+sGojDWoUitG7bS8hRVubqVrZKm/mdXxCh0YP8Z0to1mkuhdbZEcueoHcehTNaBWWr1EzqGzPneiA4q4t5ukQHa75S3E+2T8tGaFYLuQKzVP6JQArt4BPfs5634GzAVEJzoQXdmn6p3g/gQ6hlicRz2c5CsXoAFvzlKjQrw8nczbffdZ/cA4E5l8+Zy8voYp7Lp43zkgAJkEB5EvjwVr88eyQtQ4nR/77Ox1q2VTmkzj/6pXU+xueYJEACJEACS5OAisTnwWm7E/EZKg5rhINeOq9ZwHr70WNPye994n8ZUVjzmrXO3Hy6cfgWElHhUx226ji+AULzpz7+YeNe1UaDWppPvBuCrAqhWiOmq5h5aP656Lyzx0VmFR7UZa319rdcZO6tf8560+kS/JWb4fTNnXA18pkQdi2RWadVx7O6qVXA1hgPT0EutDXWbO+3btlshOYdEJG1eaBug27PxedvledeeNX00FEntb6m7NSdrDnKxSjLIX3WGadLPzKYC2tla5Mc7jgGd3W7hLC9Vn3wpmvLTmS21m3z6RuM0Nze0TEnoTkDJ606o1VUVfftYi3jCLalJOFIGJFZr6NXTcAFUVcbf0YQddF5tEPyEIldLuT+IlNZXfABxGfYoEa3HzqAqAxkc+M1H3KcA8ha1mNDozKynqyEkLPswAmh8HAY5rYEjgOPdIFbH8RrP7KfkzC8VSLXuaa6Tmrr6mVlS4t0wKGv2eEuGA/V6VwJB7QNArNRQCF0jyCsOQ9388hIDsvK4vlo47rFug+Kud474Ai+CA31tDSWoho6Zf2YwKuGZBWi9TWVkVUs1qxmq7QpHrTqE17T93S6QmHZmt66r0cSgcP2+jj6+uUFIrM1XeF9rad8hObC9bIen7g11qsLdK+O5I6xQO2Jq6BdE2eq6aZZTo7mAXzAtVR4n2vp2RhlpwK+OqVXvf7fv7kOvWjnL3Q3P/TYk+bsom6MZjDfjGaBzGJetLuWK04CJEACkxKohGvh8+8KyV8+Miwd4Zm/j0w6yAwvXr5m9EvtDJPxbRIgARIgARJ4AwGNWVDxWG9a2rDule275P6HHocjMiG33Xmf/PbHPgRhr9e8/9TzL4neJisVWlVE0UvwtefMtp17pasbjswJOcsT5920Ye34S+Hw6CXfKtb64PydWOtWr5z4ktQh5mNiWfGDKlzPpVQ4VjFTGxJqY799hw6b4TRHuqe334jz2qjNatquwnSx6jjcv1q3fef7Uw45iKaEltBcV1NdNJF7ygXO4Y1zztoiTzz9vDz82M/wedtknN2nMtyPHvkpnLRZufLSracye9nMo4azXM5hmjmOupn16NGme4jRwHtpOJE9Lpc0NjQaUd2Wz0o1xOMKbYiJkzUrIAy3ovmfxlxoLIkTIrUez+ZEDFzPGTRg1GxsFa8dEItVjG7FPJWIg/HgcTKVxGt+PA9JECdmqnDcamRONSJXqipCpkmgnqTJ4PON4dTebARxgcg8GvMxem9WugT/KJ25Hs/zuZpPIj7DEpp1OVe1+MYb/fUjY/kI9Mpzx9zJF9R7TjB3vtI/GpuhAvXJlBeG25PtrabzlEtNtiZzVyKLuHUqaE4lNOtOe3vr1Ge6VGTuGgvenmyVZormmGyexfiaRlwcGB7tirsOZ06KUetwqYAKzXvCGTkbgeis193Nb7vsIjl05Kg5215O+VncRyRAAiRAAsUl0Bh0yBfeXSU/PZCSB3Yn5MhQ8QRnP/Lyrts49Xec4m4JRyMBEiABElgIAnqZu5XfamXIzmU9EmhA/pXb7jQu4F/75ZtOGMrv8xq3bnNTvXzpv+4wzuY8XIxWVMaqlS2ibtrJakVLkxGVv/Cft41nvZ571mbRHN2Wpgb53g8egfA8KlgXzl/Yu8aKDyh8f6bHejn/xMpPcE1PfP9knm9FdIU2QNyLbOa9+9vNrOtWt8GdOyo06286KzZDYy6KVZZYrg0Q3e43XoKvy1lR0OywKnRiD6BirUexxtFG92+9/GJ55PGnENnysHzgva/Hgcx2GQcPH5Enn/25OZlx5WUXz3a2WU9nff6KcZzNtFAPRF4bPqdOOJVVcLOWqVojjngIvFk4i53S3NQIB3idJCLDxrXsxmvaBNDvqYK4DIEZz7W0SZ/OmYR7WUVmFYTVmayfCx1TT96okKxOZhVsNUrDrgK0PygOiNV+iM8qZOvx6PG4jGtajywdN2/XObRdodbo4xFI4i53cXQjM+wM/6igmi7jnGY1V2qmspUOUKh/7RvOymuD6XGheQsynAvrWeQ5a2mTvsJ6/HhSHupMFL70hscXQrQ+p0Br++cdw6IO6cVQk4nkpftEzYLQdPEWO7BDn0Dg9VsKukBaQ6o9/WsIwp7u87pchOaXIMhrtkwAmTBrJsmSsZidzP0WhJ8/052UZ3CA/BJCzcvo5MnJbMa8TKtnFvULCosESIAESGBpE9DvGH/2k2HpjuAKnyJHaFy7EZdKIguaRQIkQAIksHQJqNCTg6VQRTBLjJrL1mpGsDqU8/luREHg8viC6AVr3EbNbh0rbRzWPNZ0TTOAr77yEustc6+ZuweR0dyCafYf6jAis0ZXFGY564TqQp2stPmgVZZYqlEUMTiqAwXRCOoo/scv/rfh8Kef/rg1y7zfa760Cs07dh+QfQfbRZsWeiD8qqv5Bz95wsSO7IEArY5ia/2LsVLKfN/Bw3L+1i2yuq31hCE1XqSvfxCxByGzD/VN/X1Z7nXVFZeB4175xUuvylr8Fj5v61mzXuXBobDc+d0HzP6//p1XIU6i+JKUJTTbT9JZOuuNKJiwAtEf0eFhCM3IPsYxbo5tfGfUfGYVoPUzlsRXvBCOpRWtrdLThTfxurqdnW6HeJCnrH8bHHAa6zdBhwrWeJBDXEx+JCN2TW3Dl9Cg1y+pWAIN/RArA1HZh+aDaYjYOQjL2tbPCZE5g5NJmsusETRBRHDYMWYWx5s2DNTvsSN5lb5HNDzDjKmc0nhf3dGlKtWp0vPcXHuu26IGy61jom/ht3PNX9ZcZI3QUE2s8L0hxNcm9Q2UCunaIM8SYN+MsQqF5nqvQz65scLsK53+3vaY7Bszi+pzrXe0eOXbB0djivS5Ngq8vm00zieP/fYP28NGENf3Cqt2LDu68LX5fqz7dGKV1V+xRgRaT1e3oeviN/dFxYrI0J23aygjf/nioOzDh2Gq0r8vddiZy6EePzZ6puQiZLpMsr9PCcE5dW7xYTDNo3mxr3QdSU9pZTkTCZAACZAACcwDAf0u8U40BRyAyDz6NbI4C6ny2eW9b6KbuTg0OQoJkAAJlC8BS4hVkaAYpT/t14wJl1/71r24hH70su3CsR998nnzVKP/3Lh832pw99Onfm6yj61pVXD6r29/V+6+/yHpgeCsYqCWzme5oPW5ZjT3DQzqQwjcU2+Him1rVq0w0z3w0OPm3vrnSTTH09xlFZ9H3ZvWO/N7vwqsPBDjXtq202Q0n7Z+tVmgOrXVTfrkcy8iViMtW8/cNKsVUYf4ZDXxdRW4te770aOSVofqWGkzxa/cdpdhbr22WO414uGWG28w3FQ0/tZd3zURLTOt//Mvviz/9MWvIKt60Aiylot3pvlO9n3rGHOUQLTXDGV1Hut+1+NI84/1po39NG4mgBxlvAFh0gahuUXqcfInh7zmPLKRvRCLfW6PVPj8UgFhWG9Bv9d8TnXdVXpWQTOH8Z2a+YxvoJqprDqPB7nNPoj0IYyv82k8hzYY1OgNXSeN0HAjE1qdyyZHGp/tdDqFz2AKURwpiM/6OIn88wRiPEonNIeQb1zu9RTiMyaWashW873JnMbbYYwtLHUxW6V9zv7mnGr52GkV8vHTK+R3Nlea/nRGr8M+e3UgLf1wUmtDQKvOgFv6L8+uko+sC8qnMP17V/nNftd5+pKjrmuddmKPu9NDLvnjM0Ny6/rSZd5Otk+Lf/rIInMK940ziMH6n7LHIKTqzYcjTs8UjJ00mHZpGpS9HFy4T+HDrMK7E7+Gr15RvB+tmjFz9Qq/3IczLXfsj8rmKpcExzpxTgueb5IACZAACZDAEiLw1nUeOTCQle/vnP7yt9lusooEn740KJoBzSIBEiABEljaBNTxmIYbOJ+DQInHxagP3vRu+dy//5fJHv7zv/93CMkbpB6O3CREpd17XxeFb3jnW83iNAdZmwc+iwZ4f/sv/0+0QZ0XzcU0MiI8HDGX25+xEc3ekFuspZnF37z7fqmtrpajx44jdqLdvK7/PPjw4/K+G64Zfz7xwY3Xvl0+/x/fkBdeec2snwrPeyFU98LBq3X9NVdOnGVen+t/c1Vo1/XR2rh+rbnX19cjM1pFdC1LGDZPpvhHBdIkokv+9avflLbWZnkvtlVrstfP23oGmiw+D37d8rdf+Kps2bRBEqmU7Npz0IiTKmyrA1Vd6YupWhD38enf/Jh857vfRx74TjmA3OvLL75Q2tC3qBXxK/q50pMRPb190nHsmLy8bQf2/0GTQ3zeOWfJS6++Jt/4n7vl1lt+SbTBYDErp8cYyootKebYE8eqrqmRA/v3m32p7+nnyTgS9EQERETloAK0NvLTJoAVwQpJxIYh9qaN+KzajRuisQt/E9TNrI3/1GUcR1xGDuKyOqIrEJehr8fRQNCBz56KzrDDYj6XeZ6B+JyEsJ1D/rNqZqHKSsSSVJmTSzp+XvOYzf/M2ukamtITQvp6bV2d9dK836ubd2K0xLwv9CQXoIKyao2FWcuF4vJumFybxhoEWkM/3XOiIfMxpDFsRTKAZXhVPXKyhoDf70ATybFBbj8Qkz86o9LoefqSBzNtgvZWWKp/fufQ605ndVEXuqd1D1eqVlecXqaFi57yse7TiVVWQvPJxFsklPAs62TGneWQZTfZYeTAqNtbS/Nk7i6w2RdjZVNjZ6z1koAv7RyWPzrrjc0airEcjkECJEACJEAC5UzgY+cFpLnCIXe8GpcwHAVzqffAyXxOy4n5bnMZj/OSAAmQAAmULwEXhCKtLC6Zd8uJ4sGprnWoMiif/sSt8sNHfyavvrbH3ArH0hxmFXTXtI26i/W9G697h8nGffjxZyD+7RqffMPaVXLze99pHMzaPO+at10mD//06fExNdLhykvPN9ES6nzWJoHXXvWW8fknPtDIiN/9jVvlm3fdb4RmbcSnpZEf77/halm/ps08n87VbDlSVRArRp0DUdcSmteOOa513NM3rDFCcyUatGmkxmRVGGlxzVsvlR8+8jPp6DxuBHpLaJ7sdV3338U+uuv7PzIsVeS36uLzt8oN14yeBLBeW0z3DfW18lsf+xV5/Kln5CE0B/zBw4+a1ddt1maS0WjsBBf3ptPWyw3XXm0+Q1s2b5Tb7rjH3D5y803ypo2nFW3TtUGflnXMFW3gSQZSoVkd1CmcPPBAVLZBplJhWWMz9KafYRWbY8MJseN1vbIghhibDE4GqRPajXiLnIm+QGwKhGY9HnQ+dTwbJzSEYnXiZ/Pqhh8xrmZ1TKvYbMO8Ol0W46RwRUMKuc0qYHshSKuT2jpu8nBW69gjWBe8OP665jtrtnRNzesRO5NsYlFfapkhxaCoC5vDYAeQx1wo8u4tiLZ4EXG1VzR5x0ePIro2DJ1sYn0eOcvvXumXi5C/jN14QmkO9P0dceNmtt6IIkHgb7aF5Va4mFej39qEWUxm87cgRheK3jqvvvbBtQEjTFtjlfJ+sn0Kdz0+7WVSuiK/8WRf0cPB34pOkR/eUDrr+ELgVGH5h/iglqo+d0GNTHbmolTLn4/ltHd0whHwVdPY72//9PfmYxFmzNd275P/+O9vocNsk/zJpz4xb8vhwCRAAiRAAvNHIJEZkde6M/LI/pQ8ffhEF8NslnrJKo/8weUVcC3MZmpOQwIkQAIksNgJ5CAO9Q4Oq84DhyIupy9yqQuyf3AIsRfD4sfl99qoXJ2y05W6aDVHuRYuaHVOTiyNehgYDJtmZjVwQ1vChy5D4xNUmJ1N6bqpk1nXZ7bzzGbcxTaNSi+ayay6Ry1ymZXhUqmBoSHZ9tpuuOD34zMzZERmzSXWBpLNjY2IUlkp69asOmFzd+J38W3fuce89pEPQGzeVByxeRgCt1Z9daURes2TefpH9+k9d3xnVNzVLHLsXPUJ6wPNaRa4jMODA9J7vEsyiZgM9PXIUF8v4i58UocrBUJwK3tx7OkJGA9iNOz4TMSiUenC9Cm45kNwJtfV1kkc8/b09OLY9kt9fb34fD4jEse1aSD+tsSSaYkmEtKvx3+oShqaWyVYXStVcCvnRnDkQlBGAPi40KzHciwWlWQ8Kde/96Zx8XmeMI0P25XIyb/BuLjcqhpXL66rcOGEwYgchWO6b4ZGf7p/WiHKrww4JQwB+kgsJypET1fqgA7BzayfPjWIqtO5FPXbiPZonuDwLitHs8JU9/HRgmySYoBZDo7mqxCVUePF2bApPntPdCVMpsx5OJuyfpomgT8+GhfttHk5mi62+if/eFThIFlqInMxPmccgwRIgARIYPkQGMZ/K584mJJnTkFkfscGr/zWRcE3uBuWDz1uKQmQAAksPwLqbFSHZQaXuGfgMHThEvhilhtilbqIrYZ/sxlbGwhO1kTQmlfdl5rTPLGqqyonvjTtc103dUkv91KHaf0UjunFzqYGgugVl15obrPdls2IaVE38+3fuVduv/Ne+fVbP/gGMXq2Y1nT6bGlpceX5Yi33puPe92nbatWy+EDB5Ghqy5j5DFrtIUtb1zIHg9E5KqA+FOIzEAnv0AmJDGc4Ekls5JOIe4i4JA8jrMM/j5o/vIIGvfFITCnMnhPU5ptTonEkuaEEDwOkoKwHUHWcgqLcGouM/6mpPBGGmJyOIbs5RE4qAMh8fhDYnf6oA+54GR2wBwNtS2niptK4BCNEKcRjyRk5aq2konMumwVJKuR0zw4iQNY31+qpRrbC3C9z7ZUIlZBWm+zLc1r7oFbvpSl+3KiyKzLL+5/3YqwRY0Umk+JYhV28Nvg3J6qotm8HDscFy/Ocrxjivxm/WBakRvvWRUQPeuynKpy7Ix/BGdAh3EWsRIZSvNRnV3HzbDTfambj+VyTBIgARIggbkR6I/n5fBQVl7szMgP9yQlcxIxXrpkvWzu/Vv88qGtJQxOm9smc24SIAESIIEiEvDiEvhMFg7EeRCai7iaHIoESkZAIzM+/IEb5X/uvk/0d/JE1/PJroglNHsh8Jaq1p22Qfbv2WuiMLxe5CZDaM5DcNYGgbFUHPEhaclCWrHDtexDfrK/MiqxgbDEEmmxRWKSceTFlYc0B9dgNp2VXBoSs9Mjbg/ymN0+scGN7HCiSSDknhzGHYhGxJaM4z0n4jp8WI4NTeEgXCNyw4vGfiE4oH0VlWJ3eSUL4VmTREzzTsyrUvMIpstArM6ksrJ23fpSYRpfjkZSPDMh03j8TT5YVAQK40UKV7zshOb5cB83wOm73GtzlVsegND8bHdK3tbqk1XBN+76exEqnsUZsiZY9JebyKyfjxpcXqaXmOklZ7ff+T15xxWXmsD+4n12RuRgeweaQTxrhtywdnXxhuZIJEACJEACRScwmMjLT/Yn5YWjGSMwx9Knfgna5gaX/OaFAVld/cb//hZ9xTkgCZAACZBAWRLwedwSiSckaxp3jea3luWKcqVIoIQEzth0uvz1n/7+nKNENJ5Gjy0tPdZKVbV1tfLM888gDs0hwYAXDmFBbAEa9KUTON4jJr85hYgLJ97wQ0C2oymozw6RGFEZ6RzylTMQkiFOa25zIqpZzmj0B7ey2+mGMKzNApHXGwiKM41YjVQC46ZgmM5DjNboFbiZs3A8Y3yo1VJZg4aD1QFx4er0HLSdDLKd08gDVonZZnOMZUAjNiOekixeq6ktXT6ztT/OQpM8Cs0WjcV9r/tysiq7XzsrcOlAMUtzStQlvdxrI84anY/YjJ/3puSft4flw+uDck7daCi5Zr18rz0ujx1L4E+NmPeWK68P3nS9fAn5yTv37De3+eKgWVVvveyi+Rqe45IACZAACRSBQLXPbhzIG+szcs9rCXmpM31So+p/UzdBYH7X6V65Yq3npOblxCRAAiRAAkuPgB2XtvjhatRL4zW32IfHLBIgAUQIFyGvWo8pLT3GpmsyWWzeGp9x7Q3Xy2f+4PfFrU33EE2RQQRGUp3MEJyRqAEBPCMOTFfh9UkI+cpNcB274bp2eCAkp52Sh2icg5tZG/rZkP6hzzM2/J1wJSWGMW3425HOpZHFjBNVI1nEY/jEgQxebfSXwXKSmThiNNziDXoxph0iMv4HoXkEy9QwEQR64H9qmEBEB+ZJ43bppRcXG8WsxmtD7vBqGB/bo6MxJ7OaiROVHQHdh7ovJ6vJX51syhK9thXiZ9AVmzHoerarc0mjF2eW9Kce6yOnVYiGr3fggP4SAtjd4FLhsskA8mL0T45Seu+agGyunvysxHIguOm0dfKHv/UxdBF+XI50dpkvgMXcbs0z02671151RdFz2Yq5nhyLBEiABEjgdQJnNrlEb4cGs/KzQynZ1ZOVff34MQCHSGG5cXK71m+XhqBdLljpFm34p89ZJEACJEACJGARCPhGhWYTn5HDpfFFENissXlPAsuVQBbZtFZshh5jpa6rr75GPvprv4JsC3iHIe7mIfKqozgLR7ELERcqFCOzwkRjpJHVQzRiJAAAQABJREFU64EYXp2pEg/czE41I+PrImKdzd8DFYLjMZgAkausTf9ccDdrqdA8gu3UWJCg1w9R24VYDgjNWKZGZHgRs+FElEYGURoqWpv2XXBZw/uM9cEzrJcdWdCJDFzTcFCvQoPGhaqLGzwUmhcKfpGWq/twqrKhS+aJv5KmmrKErx8YzshXdkWkd4ZOjDOt0gXY8F87vQIHLYVmi5XGST5wOAb3clIiY10rlU4bzkb8MlzOG0KlyzKy1on3JEACJEACJLDYCOiXpziiNCI4WYsoPVH3cwVcKSwSIAESIAESmIlANIFL3eNJI/oE/VP32ZlpHL5PAiQwSiCKSBrNRA76vRL0eRcEy5NP/kxuuuEGCMp2CLmIqcAtlU2Lw+UYczWrUJwRj9Muba3NsnnDemmsDkklhONqZCt7kakMgc5kJyfQNwr9+kyUp8fjERXS0zk0k4NY7MffDF/QDyE7J8OJhPQhBiOGfOeqmjppalmBRoBBCNxwMmM9RrRBIWI69Hur04V7TJdOJ+XqK69Ao8+FbdD5lT0Ris0L8kmd+0LVzfxxaK1TVVkKzbqyKogejmSkT922elScRKmjSCM46r2MzJgOWz/YDqHT6QrY3TVihEUCJEACJEACJEACJEACJEACJDD/BPrDETgwc8hidcKhOLUzbP7XhEsggcVNIAmHsDp7XYibqA1NLX6VYis//anfkXu+c7cRhB1wHGfhJLZDaB6x5eAq1kyMLCI08lJfVyPr21ZKE4TmWojGNWgS6IMb2aHCMATiDOJ1RiCK+Tya+Yy4C3T0y2M+J/KaNXJDHdKpTApCc0Z6YznJugLS0LxCqqqrsSzEcOB69QzE6RyW70JetTqZ7XbkOSM3eiME7ssuuLAUOKZdxoFIVr62NzLtNHyzPAl8FGkJ6yqmDsgoW6G5PHFyrUiABEiABEiABEiABEiABEiABEhgbgRUZFaxWcvjduPGK0vnRpRzL0cCKeQyp9BET0tFZhWbF7IScBhfcu75kk7Byex0SQoO5iycxxnEXjiQj+H3ucSD+NJQRVBa6uukEhEaAZxsqqkKmXxnjcuoCFSIz+0VTbvIQyx2IP5ChWWN4NAYDY3jiCXiaDKYkPSIW8JpxMUGG6Wxpc28n1QeiMbIqjiN/wWQ5wz1WpLJKFzNIre+/31GsF5ITtayH+iIszGgBWOR3GtkxnUr/dOuLYMDp8XDN0mABEiABEiABEiABEiABEiABEiguARUEAvByailQlk6M9rIrLhL4WgksHQJ6DFjicx6LC20yKykNVP5/h//UCorg1JREZBGiMlNDXUSwnMvhGIPRGU3XMleCMYVwYCJwUiqMzkWlcFoRIbjMYnheQ5XnDu8bnEgb9rudYkTkSB6n4GrOYroi2EIzWHcIrhl0BTQhoaBms+RV0c0nNRONAb0wCHtR4yGx+NHk8E0GiQ65X3XX182IrPyUsGy1b+wJwd0PVizI6D7aiaRWUeio3l2PDkVCZAACZAACZAACZAACZAACZAACRSVQCyRkgjyZbXobC4qWg62hAkUOpkr4NgNwBlcTrVrxw751G/9BoTfEfHDvZzOJuEojiEaAyIc4jNCgYCsXbUK7mW/RIYHJQkndA75yW5Yjn0+vwT8AamurIZYPRoF4kDecxau6EgkClF6GGMlJQNBOpm1STjplJRAVA6GpKGxUZqbWhGhUSNOXCmhmc46jzYgvOn6t0P4riknTGZduhI5+fLuiKQhmLPKl4Abrvrf2Fghzb6ZTwxQaC7f/cg1IwESIAESIAESIAESIAESIAESWOIECsVmZjYv8Z3NzZszASuTWQcqR5HZ2sCdO7bLxz7+IXF6nNB780hNHjGNCoPIXa6tCEljbZ144VgegRjd19cr/f2DcB6nkNvullCoShobGqUagnEaVzw4NRIE00WiUenuOS4DgwPiQDxGsKpKDnf3yc4D7TKIKJ6m5lY579wLZOOmLRCpQ4jXyKHnmUNuvuHdxlltrVu53e8OZ+S2/dFyWy2uTwGBW9cHZWNodhFPFJoLwPEhCZAACZAACZAACZAACZAACZAACZSaQAKZruFo3CxWG3d50cDLCRcjiwRIYJRAFnnFSRwn+TzCi1Eal+HDcVLO1X74gFx5zblwKXtk/ZrV0tbSIo7MiLjyNqkKVkgA8RkuxGIkUojDgFA80Ncv4fCwaQBYCyG6tr4eQvEI3MsZxOukJIpojcHBfkmmU1JbUy0tq1plIDUEsblD+geHkOksiMuoxN8P5FW7glIVqpd//LN/knqMVe61fTAt/3MwVu6ruSzX74NrA7KlevbHGoXmZfkx4UaTAAmQAAmQAAmQAAmQAAmQAAmUEwFtEDgcS0gmmzWr5UKWqxtNAh0QnlkksFwJ5CAsp9H0r/C4qERcRjlkMs9mn8QTMfnn//wrOXRoh9RCBJZkRlw5NP3zIKMZERrBqkpxIOYiqw1C+/vl6NFO6enpNaK6HSebvH4fYjVyaO6XlRw6BOrfhKrqkDQ1NUpNc5Xkg4jQcMSM+Dw0CCG6LyrRSFouPOsq+e1b/0h8XjQDXCSlzuY7IDYzRqM8dpjGZdwCkXm2TmZrrSk0WyR4TwIkQAIkQAIkQAIkQAIkQAIkQAILTCCaSMK5mBxfC71sXkVnvbFIYLkQUGFZbyrAWhWE+zfo81pPF9X9/vad8oV/+4w4knlprKgVv91jrlqorqsVMSeT7EZIVtd2OByWvoFBGRoeFjdc2ypI2xDwnMll4VR2SiXEaXVJp+xxCbY5xFaZhTCdkVwmj6Z/bnn/pb8vqxpOX1R8rJXVzOZ722PSGX99v1vv8b50BLTx302rA7PKZJ64VhSaJxLhcxIgARIgARIgARIgARIgARIgARJYQALq4tTs5jgyW61CXy/ksjrgcMYN+ax2vGAbu1nT8J4EFhsBjYbQW15vaIiXRf6DOnjxdLz8aPYXgLC62N39Gvuxfdsz8uCdX5NsLC0uu0vq6urEAzHZ5XJBTIZo7MBJJTzO4zhXB3MKGc0VlZV4nJXe/j6JxiJix8mnEYwVTvdLriYpuSBOTCFp50Nv+UM5o+1S/G1Y/FdBPNARl2d6Xv/7N/5h4IN5J3Bxg0euW+k/5eVQaD5ldJyRBEiABEiABEiABEiABEiABEiABOaPgIpviWQal8Wn4e6kw2/+SHPkciOgDn6vx2VymPWkylIqFdY72/fLtud+Jp37dyEOwwmBHakayGpOp7PiwLZ74GJ2IVJD85sdcDEn00kZCg+Z507EZ2iOe96TljMvvUDOPeNKWVG7AQ0HlxanA5GsPHIsIe3R0TihpfQZKMdtWR10yttbfLKuYm5Xz1BoLse9y3UiARIgARIgARIgARIgARIgARIggQICJqs2o3ECyGuF41Of5/OjbtCCyfiQBBYVAXXlq5CsLn1tgKnZy24Iq4vdvTzbnaDO5Gh4UPqOH5Xuo4dloPu4DA8PIq89KgnE6CifZDYNx7JdqmrqpLVttaxavV5aWlcjq7kOqRuL3708EyttFKjuZgrOM5E6tfdVYFYX88k0/JtuSRSap6PD90iABEiABEiABEiABEiABEiABEiABEiABEiABBaUwJFYVl4dSMuuoYwMpmEBZ50ygWq3XTZVueSsGre0BebmYJ64EhSaJxLhcxIgARIgARIgARIgARIgARIgARIgARIgARIggbIkoE0DDyNS4xiaBvYmc8irRq59dkQyepVHWa5x6VdKg1RcdpsEnDYJQViu9zqkBU3+VsHB3OxDqPc8FYXmeQLLYUmABEiABEiABEiABEiABEiABEiABEiABEiABEhguRBY+mEuy2VPcjtJgARIgARIgARIgARIgARIgARIgARIgARIgARIYIEIUGheIPBcLAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAksFQIUmpfKnuR2kAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkMACEaDQvEDguVgSIAESIAESIAESIAESIAESIAESIAESIAESIAESWCoEKDQvlT3J7SABEiABEiABEiABEiABEiABEiABEiABEiABEiCBBSLgnGq5v/JE71Rv8fWTIPD1t9SfxNSclARIgARIgARIgARIgARIgARIgARIgARIgARIgAQWHwE6mhffPuMakwAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEBZEZjS0VxWa7mIV4bO8EW885bQqtNZv4R2JjeFBEiABEiABEiABEiABEiABEiABEiABMqQAB3NZbhTuEokQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIksJgI2B772dMji2mFua4kQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQALlRcB57Fhnea0R14YESIAESIAESIAESIAESIAESIAESIAESIAESIAESGBREbB19Q3S0byodhlXlgRIgARIgARIgARIgARIgARIgARIgARIgARIgATKiwAzmstrf3BtSIAESIAESIAESIAESIAESIAESIAESIAESIAESGDREaDQvOh2GVeYBEiABEiABEiABEiABEiABEiABEiABEiABEiABMqLAIXm8tofXBsSIAESIAESIAESIAESIAESIAESIAESIAESIAESWHQEKDQvul3GFSYBEiABEiABEiABEiABEiABEiABEiABEiABEiCB8iJAobm89gfXhgRIgARIgARIgARIgARIgARIgARIgARIgARIgAQWHQEKzYtul3GFSYAESIAESIAESIAESIAESIAESIAESIAESIAESKC8CFBoLq/9wbUhARIgARIgARIgARIgARIgARIgARIgARIgARIggUVHgELzottlXGESIAESIAESIAESIAESIAESIAESIAESIAESIAESKC8CFJrLa39wbUiABEiABEiABEiABEiABEiABEiABEiABEiABEhg0RGg0LzodhlXmARIgARIgARIgARIgARIgARIgARIgARIgARIgATKiwCF5vLaH1wbEiABEiABEiABEiABEiABEiABEiABEiABEiABElh0BCg0L7pdxhUmARIgARIgARIgARIgARIgARIgARIgARIgARIggfIiQKG5vPYH14YESIAESIAESIAESIAESIAESIAESIAESIAESIAEFh0B51Rr/MevZaZ6i6+TAAmQAAmQAAmMEfi7M1xkQQIkQAIkQAIkQAIkQAIkQAIkQALLngAdzcv+I0AAJEACJEACJEACJEACJEACJEACJEACJEACJEACJDA3AlM6muc2LOcmARIgARIgARI4FQKuYMWpzMZ5SIAESIAESIAESIAESIAESIAESGBeCWSikWnHp6N5Wjx8kwRIgARIgARIgARIgARIgARIgARIgARIgARIgARIYCYCFJpnIsT3SYAESIAESIAESIAESIAESIAESIAESIAESIAESIAEpiVAoXlaPHyTBEiABEiABEiABEiABEiABEiABEiABEiABEiABEhgJgIUmmcixPdJgARIgARIgARIgARIgARIgARIgARIgARIgARIgASmJUCheVo8fJMESIAESIAESIAESIAESIAESIAESIAESIAESIAESGAmAhSaZyLE90mABEiABEiABEiABEiABEiABEiABEiABEiABEiABKYlQKF5Wjx8kwRIgARIgARIgARIgARIgARIgARIgARIgARIgARIYCYCFJpnIsT3SYAESIAESIAESIAESIAESIAESIAESIAESIAESIAEpiVAoXlaPHyTBEiABEiABEiABEiABEiABEiABEiABEiABEiABEhgJgIUmmcixPdJgARIgARIgARIgARIgARIgARIgARIgARIgARIgASmJUCheVo8fJMESIAESIAESIAESIAESIAESIAESIAESIAESIAESGAmAhSaZyLE90mABEiABEiABEiABEiABEiABEiABEiABEiABEiABKYlQKF5Wjx8kwRIgARIgARIgARIgARIgARIgARIgARIgARIgARIYCYCFJpnIsT3SYAESIAESIAESIAESIAESIAESIAESIAESIAESIAEpiVAoXlaPHyTBEiABEiABEiABEiABEiABEiABEiABEiABEiABEhgJgLOmSbg+yRAAiRAAiRAAiRAAqdGIJUbkSRubrtNfE7cHHbxOGyC/7NIgARIgARIgARIgARIgARI4KQI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Gqta47a+Pc9lElQgmyCMV9cGPqdgFwStQxIBERABERABERABERCB3ZxAB44/inuOBtx78P6DA/8xaJfBTOYdITJz/xKaSUEhAiIgAiIgAiIgAtuAgM9sbsPras3IbGaHb117wk3boHpVIQIiIAIiIAIiIAIiIAIiIALdCISQ0cKB/wbakzm7IRKas4nouwiIgAiIgAiIgAhsJQF28IqCAYsgy4DZzUgywGtsSetMNNjK2rW5CIiACIiACIiACIiACIjA7kyACS6BvDyjDTOzmAswDYaQ0DwYzoLaIAIiIAIiIAIisEsSYIdvsHT6dknAOigREAEREAEREAEREAEREIFBQ0BWgYPmVKghIiACIiACIiACIiACIiACIiACIiACIiACIiACIrBzEpDQvHOeN7VaBERABERABERABERABERABERABERABERABERABAYNAQnNg+ZUqCEiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIisHMSkNC8c543tVoEREAEREAEREAEREAEREAEREAEREAEREAEREAEBg0BCc2D5lSoISIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiKwcxKQ0Lxznje1WgREQAREQAREQAREQAREQAREQAREQAREQAREQAQGDQEJzYPmVKghIiACIiACIiACIiACIiACIiACIiACIiACIiACIrBzEpDQvHOeN7VaBERABERABERABERABERABERABERABERABERABAYNAQnNg+ZUqCEiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIisHMSkNC8c543tVoEREAEREAEREAEREAEREAEREAEREAEREAEREAEBg0BCc2D5lSoISIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiKwcxKQ0Lxznje1WgREQAREQAREQAREQAREQAREQAREQAREQAREQAQGDQEJzYPmVKghIiACIiACIiACIiACIiACIiACIiACIiACIiACIrBzEpDQvHOeN7VaBERABERABERABERABERABERABERABERABERABAYNAQnNg+ZUqCEiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIisHMSCO6czVarRUAEREAERGDXJBBrbto1D0xHJQIiIAIiIAIiIAIiIAIiIAIisEsTUEbzLn16dXAiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIisP0JKKN5+zPWHkRABERABESg3wRGDKnsd1kVFAEREAEREAEREAEREAEREAEREIGBIrBmY32vu1JGc694tFIEREAEREAEREAEREAEREAEREAEREAEREAEREAERKAvAhKa+yKk9SIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAr0SkNDcKx6tFAEREAEREAEREAEREAEREAEREAEREAEREAEREAER6IuAhOa+CGm9CIiACIiACIiACIiACIiACIiACIiACIiACIiACIhArwQkNPeKRytFQAREQAREQAREQAREQAREQAREQAREQAREQAREQAT6IiChuS9CWi8CIiACIiACIiACIiACIiACIiACIiACIiACIiACItArAQnNveLRShEQAREQAREQAREQAREQAREQAREQAREQAREQAREQgb4IBPsqsLusH1UctGmVIZtYFrSRxQGrCOdbcTDfwvl5Fsgzy8PUWySTZglM0Y6ktcY7rCHaYbWtCVvSFLf59TFb3RrvbXOtEwEREAEREAEREAEREAEREAEREAEREAEREAEREIGdlsBuKTQXQDmeDlH50GGFNqk8aFUFAYOevFVBITrICRUVBwM2tDCAukN25IhUtdCfbVMkYYsb4/bCunZ7C+JzhMq0QgREQAREQAREQAREQAREQAREQAREQAREQAREQAR2cgK7jdBM4feIEQX2npoCZCwP/GFTyB6CNnA6ZFiB+9nUIsv5xfURe3ZNxDa0J3byn5KaLwIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIisLsSGHjFdQBJh6DuHgVx+f2ji50dxgDuul+7ouD9kT04lTibjcdWtdp/ITrHmP6sEAEREAEREAEREAEREAEREAEREAEREAEREAEREIGdhMAuKTSPLgnaSeOK7SBkL9NfeUuipbnZmjG1tbZae1ubtbe0WnNLsyUh/iZhxNzR0WGtLS2WSCQsGAxaUVGRBUMheDjnWWlZqYULCi0cDlsJ5kvLyt2y/uyfvtAfm1Jm50wus1eQ5Xz/8lZb1SJf5/6wUxkREAEREAEREAEREAEREAEREAEREAEREAEREIEdS2CXEponwxP59IklNq0i1C+qFIvrNm6w+vp6a2xowPxGa29vNyjKEIwhUls+BOYOi0ajTkjOz89P10uRmYIy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QFrPv1keozmkZxuiwhDuAbFUGxQLUYEsRhOA6BaTT8WoTUccZTivl1HiMv5oJOAvgS/XJWiRGfkrKA/7jDQMmvg7cOJUj2DuD6fymEYCJEACJEACJEACJEACJEACJEACJEACmUkgY5WXzDwTHosESIAELASeWhAn1ljMt9QobNnKRRIgARIgARIgARIgARIgARIgARIgARIggVASoNAcSposiwRIINsQOHbWFRUIUW/614rSoVqyTeVYERIgARIgARIgARIgARIgARIgARIgARLIZQQoNOeyC8rTIQEScBH4+tKMi8dMxiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAp4E/J+pynM/rpEACZAACZAACZAACZAACZAACZAACZAACZAACZAACZCAJkChmQ2BBEiABEiABEiABEiABEiABEiABEiABEiABEiABEggKAIUmoPCx51JgARIgARIgARIgARIgARIgARIgARIgARIgARIgAQoNLMNkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJBEWAQnNQ+LgzCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAAhWa2ARIgARIgARIgARIgARIgARIgARIgARIgARIgARIggaAIUGgOCh93JgESIAESIAESIAESIAESIAESIAESIAESIAESIAESoNDMNkACJEACJEACJEACJEACJEACJEACJEACJEACJEACJBAUgYig9ubOJEACJEACJEACJEACQRE4dy5J9uz/T+KPHJU8+JcHf6I/CxcqKBXKlpa8efmTLSjI3JkESIAESIAESIAESIAESCDDCfCpJcMR8wAkQAIkQAIkQAIk4Eng5KnTMnbyLNm0bafsO3BQkpLOe2awrIWF5ZHSJUtIbMWy0qNjWylZPMaylYskQAI5icCFCxfk9JmzkpiYKOfPXxDc35GRkZIvMq8eXLKeC/KeOZsoZ8+edefNmzev5M8XmSqvdT8uZz8Cp06fkW0798ixhBNBVw5tpXKFslIspmjQZbEAEiABEiABEgg1AQrNoSbK8kiABEiABEiABEjAB4FV6zbJ0JHj5WjCcYmICNcey5XKl9GigdKVBOKS+k/Oq7/jJ07Krj37Zfe+/7QgvWTFOrnm8o7SvvUl2uvZx2G4KZsRSDx3TvbuP6gFIqeqnVXC4/pN29WgQ5LTZiVG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7BMPN5IACZAACZBA5hKg0Jy5vLPL0YzQbOrTuF4tFYe1h5oAjrGYDZPc9InYytt27fUZr7lerarKe7WK42kvW7VeChTI53W7405MzJYEcO+PmzJLh8iprMKrtFBhVWALl6+W7aqNxFYoJz07t5M6NZzbQrY8KVbKg8C+AwdlyLBRsnf/fx7pwawUyJ9Pf0c0b1wvmGK4LwmQAAmQAAkETIBCc8DIuAMJkAAJkAAJZB0BCs1Zxz4rj7xl+y55/8uf9SR/N17VTZo1rJOV1eGxSYAEMpHAAeXtOnfRCjXh30o5fvKUPnJhNdlfq6YNpU3zRlKqRLFMrA0PlVEEDsUfUYNLx4MuPjIyUsqWKiHh4QxlFDRMFkACJEACJBAwAQrNASPjDiRAAiRAAiSQdQQoNGcd+6w+8satO6R8mVJSSAlMNBIggYuLQKKa1PHQ4SN6YlBEx6hTo6oUjy6qJwC8uEjwbEmABEiABEiABLIzAQrN2fnqsG4kQAIkQAIkYCNAodkGhKskQAIkQAIkQAIkQAIkQAIkQALZgkBaQjPft8kWl4mVIAESIAESIAESIAESIAESIAESIAESIAESIAESIIGcS4BCc869dqw5CZAACZAACZAACZAACZAACZAACZAACZAACZAACWQLAhSas8VlYCVIgARIgARIgARIgARIgARIgARIgARIgARIgARIIOcSoNCcc68da04CJEACJEACJEACJEACJEACJEACJEACJEACJEAC2YIAheZscRlYCRIgARIgARIgARIgARIgARIgARIgARIgARIgARLIuQQoNOfca8eakwAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEC2IEChOVtcBlaCBEiABEiABEiABEiABEiABEiABEiABEiABEiABHIuAQrNOffaseYkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkkC0IUGjOFpeBlSABEiABEiABEiABEiABEiABEiABEiABEiABEiCBnEsgwlvVyxSP9raJ6SRAAiRAAiRAAskE9scdIQsSIAESIAESIAESIAESIAESIAESuOgJ0KP5om8CBEACJEACJEACJEACJEACJEACJEACJEACJEACJEACwRGg0BwcP+5NAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAhc9AQrNF30TIAASIAESIAESIAES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QCDZjTZdlIxoThcxi28IGAKGgCFgCBgChoAhYAgYAoaAIVARCCSb/1aviEpUxjJ0ObuqrqrLEbvLObt3TVhNjZswggUYAoaAIWAIGAKGgCFgCBgChoAhYAgYAoaAIWAIGAKGgCGwCSNQdRM+dzt1Q8AQMAQMAUPAEDAEDAFDwBAwBAwBQ+D/2TsPwCqq9O2/UhMghZCQAoEAoffei0oRLCCoiB172YK7rtvU/bu73xbdteuKil1AehGpIkqV3ltCAgFCQnovFL/znMu5TG7aTXKT3ITn1cnMnDlz5pzfnZB7n3nvc0iABEiABEiABEjABQQoNLsAIpsgARIgARIgARIgARIgARIgARIgARIgARIgARIggWuZAIXma/nV59hJgARIgARIgARIgARIgARIgARIgARIgARIgARIwAUEKDS7ACKbIAESIAESIAESIAESIAESIAESIAESIAESIAESIIFrmQCF5mv51efYSYAESIAESIAESIAESIAESIAESIAESIAESIAESMAFBCg0uwAimyABEiABEiABEiABEiABEiABEiABEiABEiABEiCBa5kAheZr+dXn2EmABEiABEiABEiABEiABEiABEiABEiABEiABEjABQQoNLsAIpsgARIgARIgARIgARIgARIgARIgARIgARIgARIggWuZAIXma/nV59hJgARIgARIgARIgARIgARIgARIgARIgARIgARIwAUEKDS7ACKbIAESIAESIAESIAESIAESIAESIAESIAESIAESIIFrmQCF5mv51efYSYAESIAESIAESIAESIAESIAESIAESIAESIAESMAFBOq5oI1yNRGXlFqu83gSCZAACZAACZSFQFAz37JUZ10SIAESIAESIAESIAESIAESIAESIIFyEGBGczmg8RQSIAESIAESIAESIAESIAESIAESIAESIAESIAESIIGrBKoto5kZZldfBG6RAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQE0mUG1Cc02Gxr6TAAmQAAmQAAmQgKsIXLx4Sc7GnZfk1DS5Dv9dh0X0uknjRtIyOFDq1+dbNlfxZjskQAIkQAIkQAIkQAIkQAKVQ4CfWiqHK1slARIgARIgARIggWIJZOfkyop1GyUiOkbOxSfIpUuXi61bp851EhjgL2GhwXLT9UMloFnTYuvyAAmQgHsT+PnnnyU3L18uXLggly//LPj9btCggTRsUF8/XLL2HnXz8i9Ifn6+vW79+vXFo2GDQnWt53Hb/Qjk5OZJdMxZSc/IqnDncK+0bhksfk19KtwWGyABEiABEiABVxOg0OxqomyPBEiABEiABEiABEogcOBIhMxetFLSMjKlXr26OmO5VYsgLRooXUkgLqkfclktmVnZcvpsnJw5d14L0rv2HZFJ46+XkYP76aznEi7DQ25G4MLFixIbl6AFoqK6lq+Ex6MRJ9VDh0tFHVZiZH0JDQkSb6/GRR5nofsTyMrOkaORJ2X3gSPqdzpecnLypFEjD2nTqoX06dZJ2rdtrUVkjCQ3L08iomJk98GjWqDMzs4VT8+G+t+LPt07S6fwMGncyNP9B80eqtc8Wj6es1T/e+4qHHhAMf6GYXLz6OGuapLtkAAJkAAJkIBLCFx3LjFFfZopHPRQLsyEJSRAAiRAAiTgSCAuKdWxqEL7/PtbIXxuf/Kib9fLuh+3Sd26dbRIMHbUYKlXt26p/Ubm4/Y9B2X+N2uVOJUrndu3kWemT1XZkJzXuVR4blABGazvzJojUSqjccyIQXL7hBsK9WrND1tlycrvC5U7FvTs0kGmTR4v3k0oODuycef91PQMwWv80+4DeI4k4WGh0qSxp6SkZciJk6e1aDxsQG99f2Aca37cKpu275VsJU63U3Wb+nopoTJHIqNP64dMA/t0l7EjB4uvt5c7D/ua7xseGLz0yv8kJzdXBvbuLi1DAivMJD0zS7bs2Kuzo3/5yDT996DCjbIBEiABEiABEnCSQGmff5nR7CRIViMBEiABEiABEiCBihA4fDxKi8ywvnjsvikqM7G5080he21Q3+5aUPjk66VyJCJaVm/YqsTqoU63wYrVQ8AqMqMHa9WDBmR5THYQmwf16SF11YODi8XYqMA+AffQvsPHJSE5Rf7wy4edekhRPaPmVa0EkM2+6ac9svGn3er3PkjuUQ8Kmvn6XHm9L+ns5q+XrVFC9Badua6+0qBFaf+mvvLQXbepTPZA/VpfunxZkpSXO74RgbYaeXrIuFFDpH49fqSz8nan7eiYWJ3JPLhfD7nvjptd1jV8C+aDLxYKviGDB48MEiABEiABEnAXAnxX4i6vBPtBAiRAAiRAAiRQawnAn/PLhSu0H+vD0yaVSWS2QvHxbiKP3TtZ/vbaB7Lyu03Ss0t7CQlyXrC2tsXtyidgFZlhk4KJH7FGVjssUqbcfKO9E7DEuHH4QPt+URu3jBkhXyz4RrbtOiAbtuyU0aXUL6oNllU9gfiEZFm/eYe2Pnni/jvEx6uJvRMN1VbHdmFy/5Sb5atF38qSVev1saDmAXLf5AnaVsNeWW1AXH7ygTtk5hcLZP2mHdKra6dy/3tibZfblUMgQ2UfI5r7+7n0Aqa9jMxsl7bLxkiABEiABEigogT4fcuKEuT5JEACJEACJEACJFAKAWSxpqqvyOOr7pjEqSIBX1ZkRF5UXr4LvvmuIk3x3EokYBWZu3duLyMH9dVXmzpxnDRTk3h9t/En9fqtK1MPrrvuOrlt7Ch9Dvx7GTWDwI/bdunJ+24YOqBYy5Ow0BBtm4GJARuoCf/GqIcIKCsqYJuCtuqo+2HjT7uKqsIyNyPwzdofBUtJE7862+X9hyPk7Y/mOFud9UiABEiABEigSgkwo7lKcfNiJEACJEACJEAC1yKBqFNntK/qGCU0uyJ6KJ/eoIBmepIwZMZCr8ChDgAAQABJREFUgHR1JCSlyIp1P6prxGqRPEBl5PXq2kHGXV/wq/qY4Gzpqg1yPOqUpKVnSuvQYDVRWRsZNaSffWIzV/etJrS3+NvvtCczPJUfufd2+WbNj7rbEJmfffw+ef2DL1VG6nbt1durW0enh+Tr46WzohOTXesPX1IH9h48pv2CUWfkkL7SvVO4vTr8Yld/v0UOHo3U9wn6B4EUk5SZrEtUhvD+0VeL7ec5brRpZTvHsbw27INNYICf9uct7ncV5b26dlSezelynfqvt5ocsKS6sNNorto8cCRS1JckKi2QkfvZvG90+6NHDNC/285cbL+yeFmnHqaci0+Uy8ryo4WyCsKYRg3pr/8tRBvLVm9QFiHbdHPdOrVTmdp3Fmga3wJB9r6J69W/KVNuGW12a9QaDL5V30LZe+i4PHjnLRKqrC/KGvi3dv7ytdqvvxL+yS9rd1ifBEiABEiABIokQKG5SCwsJAESIAESIAESIAHXEMDEX6fPxom/X1Px9MAX5V0TrVoGSVxCksQnJmvR2TWt2lo5oISxmZ8v0AKRaTc27rxg2ai8Zl/+3ZNKRG6o919973PJU/7BJo6fOCVYduw9JM8/86A0VBma12L0UqJak8aNZMKNw/Xkj1YGfhCbn7hfW2iUR3CytlXZ2+fV/fXR7MX2e6F921C70IyHEX9//UOBB7EJlGHB6/+0mrCyW8d2+tDZc/HKY/qEqVZonasmS4M4XdviwoWLgokAIQx7qfuhpGjYsIGyQxmkq8BipaTANxuaqOXk6VjNv7J8mr9Xlh/mdevRJdwpoXnOklWycdvuAt3HJIZYMKnp8888pEV0PHyAAIvIVpOcWmPhiu/UhHf77EW9u3eSyTfXTJEZg8C/A/hWy2Y1id+/3/1UMBHshBuHOe2zDuF+9uKVegJAfCtm/A3D5P3P59v5cIMESIAESIAE3IUArTPc5ZVgP0iABEiABEiABGolgUQ1cRs8mlu1qJhlhiMc017M2XOOhyq0D9Hw49lL7AIQxHF/P197m8hw/Grht8pjWHSGqhGZUQ8ZmUZYPhefIB/PWWI/71rbwARdt44dWUhkNhz8fL3lrtvGahsNU+Zua3hKv/PxXPu94Ni/T+YutYvMEL/uUNmm/Xt1tVebpTKYL1/G1IfqYUtsvL0cHsUYv3UJau5vP16bNurUtX3cuqx+YbCUFhCYSxOZ0Ya1PUwi6cqAvQMeYs1TExSuUtnqZQl8e8OIzHVUv8aMHCQTbxolEMYRp86ckx+2lmz3Af95WMuYwL8rj95zuz0T2pTXpDX+fbx3ygT55SPTtEf3qvWb5Z9vfax5lDQOZDF/qiaAfV89+IMYD5a/e/ohCQ6snb8vJbHgMRIgARIggZpBgBnNNeN1Yi9JgARIgARIgARqKAGTsVenjmvtLZD9iMjNvZpN7ApE23cftGcow/rghRmPaeFr0/Y9MnvRSn2Jg0dPKIEkVotRKIC4/LffP6MnKoOVwp/+8bYWJ/G1fogjmMCMUfMIzFmyUoqz6IBmGqMy9RFeyjMY4pe5x/FgBXYReAgRn5CoRLGAAoLa/6mMePNAouZRKVuPIQI39fEWCIbZaiktq9nZ1vF7hcXP10dxd63Q/Ju//Mf+AMHZ/ph6x9S3GUzcpyY4HNS3u97tqcTiv/53pt7Gvx+w1ikqMMnlcuVlbKKnsut57L7JxdqImHo1ZY0HUC/+5jFZqPz1kd386nufam/um0ePKPSAwTGL+YG7bpXgWvpApqa8fuwnCZAACZBA6QRc+66k9OuxBgmQAAmQAAmQAAlcUwQg1kJUM6KcqwafdMWjFzYMroxYlYls4qbrh9rFj4F9bIIRjkFAtI6nb4/OdjEZE5Vh38Seg0fNJtc1iMCu/Ydl6879usfwA3cMeMQ2bFBfF+cqYRle4SYys7LNpvh6e+ltk9GMzFZkSh8+HiV7DhyV5NR0e93autG2dQtJUePE4qpIVV7O8HNG266OS1fsLMrTLuxiTGRlX70PILKb8G929RsSpgxr+DEji9pE987h8vh9U2qNyGzGBduhq9nNXrJ6w1b5x1uztA0K6uChBL4tUCiLmSKzQcg1CZAACZCAGxNgRrMbvzjsGgmQAAmQAAmQQM0ngAm9QlsEyomTp7WFhqt8mg8eO6EFGHi/ujIgDMIGAYGJ/UycPXfebGqv6UuXLtn38y9csG9jw2RxYzshMQUrRg0igIcYn8xdpnvcVXksw7rgq0XfFhpB/97d5EdlgwC7lXc+mSv9enaR6FNn7YIZ7iPPK9nscecT9fn5+Rfk939/s8A90qVDO3lUTZjocSVLv9CFanhBr66dZNf+IxJzLk7at2stFbW6gLUFhHtMvtmri/MTSTqL8emH7hIjNsPCAp7rzkaPzu3l66Wr9eu7bPUP+t88fKMBEwOa6Gd5EGXKotR9Aw9nEwHNmsoT999Z60RmMz6sHbOb//O/z5SXd5AkpaQJHtbg9+cBNXEgvhHAIAESIAESIIGaQoAZzTXllWI/SYAESIAESIAEaiyBju3CtKfxN5avhFdkMBBkziihCe3C79aVAU/V3/9iul7M17Qxudu7n3xtvwwExpCgq+LHbpWZijoITB635+Axe920jEz7NjfcnwBEzLdmzdFCIbKPH7lnkkgxri9Tlcd0ByWcIo5FntTe3Vt22iZwg//yLx6+Wx9LVsKZefgAUdps64PqByab+2Ru7fXzDg8LFf+mvrJX/V5kWbK9zfjLukamML4pAO/0dqptV0eXDm31hI/dO4VLcyX4liV8vJuoiS7v06fgtf5W+S0v+GadnggPhcjkDW/TqlCTjvcE/j1xtf98oYu6QYE1u7llcKAeMzy6J42//ooX89V/Z92gu+wCCZAACZAACZRKgBnNpSJiBRIgARIgARIgARKoGIGxowbrjMYNW3YIMkQh5JQ3MBnfrDmL9emjRwwsbzNOn7d5+16Zs2SVXRyEuDV5wg1Sv149PZkbrA8gEr2s/FdxDEKzNRwFJOsxbrsfgXnLVtsfGkAohhBWXLz50ewC2a64JyAuInBfzPxigSA7Nt5yT8BKBhOiNfXxUh61+2TOYpvvN/y8ce/geG2LRo08pK/K9l63cZvsO3Rchg/qU6Eh7jt8XD9oGj18oKBtd4rI6Bh548PZBboE6yAzaeicxau0lRCy30uL/302X/72/NPS4IpFS2n1a/JxZDdjoad9TX4V2XcSIAESIAEQoNDM+4AESIAESIAESIAEKpkABLgH1UROr773mcyavVhnqw0b0LvMXwu/fPlndf4S/ZX5Pt07V0iwLm3I8An9eM5SORIRZa8KkRwWBw3q27x5n5k+Vd76aI4gaxmCshGZIRaabVd7SNs7ww2XE4AYuPGnPbpdWLz8sHWn3o6Nu+rbvX3PITXBX5L07tbJLjJjMrrnnnpAwkJD9Ff+X3v/Cz1RJDLvd+8/KkP695T3/vWnQv0dPrC37Nh70G6ZgAzW2ig04/e/R5f2AoF45febJbxtq3JP6gYLkpXrN4u/yjTu0aWDfuBTCGw1FqxQGczm4dLgfj3kjptHa/sUZLp/uWCFPgZrjaKE5lYtgmTogF7q4cMqPQI8VINly/S7J1bjiKr20pw4tWp582okQAIkQAKuJ0DrDNczZYskQAIkQAIkQAIkUIgA/Dan332bFpchpLzy7qfy0+6DOjMRk6OVFvC2/fTrZXI86pS0CG4u90weX9op5T6ObNS/vvaBXWSGkPjwtIkCYRnZiSbgHfry80+pY5Nk1JB+csuYEfJbJThCkDYBr1VGxQjsPXTMbj1QVEsQH49ERBd1qExllvn8tLcuJmfDYp348ZyaLBJlsEsxMUhNFAmRGYHJ4G6/+UZzSGfy46FD1KkzesnNy7cfw4b1/sjMujphXIFKtWCnVUiw9FHifEZWlvYwzlETKJY1wO5rNVlehrLf6KseNMHP150C/47BQsXE7eNvsHt0D+nX0/4QAQ+xrJOOoj4sgH7z5P0yfGAf6RgeZppQDyIO6Ukj7QXcIAESIAESIAEScGsCzGh265eHnSMBEiABEiABEqhNBPr26CLt27TWdgHIbvxsnm3CtTp1rhNfH2+5f8rNBUQWM3ZM/PXJ3KUCQTEkqLn8SlkPVFbmG8Sif7/ziSCbEAGvXYjHTVX/rIGJyD690v8Wqk93Kb9exEU1SeD76ivvJnqqrEtG+Qnk5OTKh18uFG8lxM147F4JDGhWoDFkDcM/G76ur7z4rHqQUeBwmXZwrvVBgjnZ6quMhw7I0MUklybqqmtbIzMz276LevDoPXg0UpfdMGyA3HHLaL2NDP2DR0/Y6yKjtbZG3bp15Pqh/fUDAUwMunL9JvVgZqT6doBzH8cuXLgoqzdskciTMdK6RYh+sIM2qzMwaWTOlQcHPl6N7aKy6ZP1HsFDDKu4fvXusdUO8G9q/6YEMphf/Ne7dhsWPGBrG9bS5X70pp9ckwAJkAAJkAAJuI6Ac+9sXHc9tkQCJEACJEACJEAC1zQBbyXIPPHAHQLxODrmjFpiBcJTohJtjp44WUBohhC3RolLK77bKJikDV9FnzpxnF2QqQyQELOMyIz2IWyvWLex0KVuGzdKIqJi9FfhkcUIQRoeo8vW/CDIWET06tpRMKEcQ5RQ3FhjSM+wCfjOMvH09JBblSAJrq9/8KXMeNw20RrOhx8uROZ8JUJOu/2mConMaA8i8+t/fQ6bBWLzjr16oj8U3jp2hIwbNUQLptt27df1Nm7bLa1Udm3Prh30fT1PZd2a6BTeWiBOG6F5wxabHUebVi1kw+Yd9nsNVh2tWgSb02rlGr8L0yaNk4/mLFHfZjig7S+Q6VuvbkGh3nHweHiD+luV/UQzNang3aoNd/i9wsOvqJizurv4RgMeNuFbDsh6R7zz8Vx54M5btAC9XN2/5t8V3A9BzYuf5M67SWM9aSAEZgQedMz8fIGeHM/yfEMf4w8SIAESIAESIAH3IkCh2b1eD/aGBEiABEiABEjgGiEQGhKovvoeKCMG9dWi3duz5hQY+TmVvfz5vOVy6sw5bUcwbdJN0rt7pwJ1KmMHk5VZwwiE1jJsQ2y8dexIWbrqe30IWavWwFfh71biJ8NGwFhLQLTt36tbmUThm24YKjhh2eoN8sbML7W4n5qeYReZ4f89oHe3KkXdKRyTl7VV967NwxteulisAb/lEYP7Sp3r6sgm5f0cp7yd4d+7ftN2azW9/fj9U3RWdqEDtaygpRLk77x1rMxdslJWKa/lukp0Hdq/V4mj3K5E5m9VBnR9lf18lzq3ZXBgifWr8+C9UybIf5QXPQL/dv3t9Q8LdeehqbAQKlRcoAD3M6yFzP118nSsrP1xq4wdObhAPbffKWWcbt9/dpAESIAESIAEykiger9vVcbOsjoJkAAJkAAJkAAJ1HYCEOKQVfzPt2ZpoQbWEy88+1iViMxgm5CU4jTicaMGy8SbRumMVXMSshU7tGstf/z1I4LMRIaNQNvWLaV753CdBf7mR18p7+LDehtZ4UUt2coywxo3XT9Esb5e0pWlCTLdYamBTOaqEJkhFDsGhMKnHrxT0C9YaTjG8EF9VAbqgzr7HrYesF8ZpiZ6cwx/P195/pmHpGO7MMdDtXa/s/Ignjjuei26L/hmrZ7cz0ygZx00yjDx33z1EOeS2sY5nSz+xda6lbd9VSnF77Y16hRh3dFWZaqbiSGtdbENP+6nHrqryIkAHeti/6Gptxa4t5as/N4+yWhR9d2xzM/HR3crQn37wJVh2sM3SRgkQAIkQAIk4E4ErjuXmKIcswpHUDPfwoW1oORnZRCWl5cnKSkp9iUpKUnS09N1OY57eHiIj3pT4OfnJ/7+/uLr66v3GzZsqJ6+X32zVQtwcAgkQAIkQAIVJBCXlFrBFgqeXlv//hYcJfccCWAiN2Q0w3oAE/GdPhunPZiR+TiwT9Vmqjr2zZl92HokJCVLnpqwEBOUwXOaUZhApprE7fP5ywv4EheuZSsJbxMqv3ni/kKH1/ywVSC44T1pVYjMhTpQRAGE79S0dH3vwiIE4rGjKGlO0/dKcorAxzmoeTOdrW+OXUtrfObYpjKVl63ZILgvhvXvLWPVgxtfby+NARnrazZslU079mhGEJkHqizfmvRZJFd95kpQfyMvKusLZLe7g91HVd9j8Lz/+xsfaoEcv9OuyEaHBQk8/vEg4vlnpivLmdrrbV7VrxevRwIkQAIkUDqB0j7/1nqhGX+AU1NT5dixY7Jt2zaJiIiQmJgYgbiMJScnR3keXrK/GUZ9LHhzXE9lZ0B0huAcHBwsISEhEhYWJkOGDJGuXbtqAbr0l4A1SIAESIAEajOB0v7QlnXsFJrLSqx21DdCsxkNvI3vVlYZxtfXlHNdOwjAWzlaWQGU5NfctWNblb3apsgB7zlwVPneNiz2eJEnsdAtCeB3/1vlwQ6bidahITJA2aogtu89KLCLCGsZIhNuHKb9z91yAOxUqQTgWT1rzlKJjTtfal1nK8DTHH8j+vfq6uwprEcCJEACJEACLiFQ2uffWik0QyiGgLx27VrZvn277Nu3T86cOSNZWVly4cIFQQZBXTXpBjICUBdr7GMxQjPKUM+I0NjG03jUgfDcunVradGihdxxxx3So0cPadq0aY3KMHDJ3cVGChDAVwMy834Wr4bM4ioAhjskUMsJlPaHtqzDp9BcVmK1oz4mA/zv+1+Il7KawIRafXt0rh0D4yhIgARKJRCfmCxbduxTnsT7JfPKRJpN1MSBg/r0kCH9e+ps4FIbYQW3J4AJX9MzMivczwZq0s7g5v7qc2lBK5MKN8wGSIAESIAESMAJAqV9/q1VQjNE4lOnTsncuXNly5YtOnM5IyND8vPzdXYyMpRRB1G/fn29NsKy3rnywwjPRohGMYRmiNQQmxEQnNEGlvbt28uwYcNkypQp0qZNG3t2tK7IH7WewCWlMM/akSWbTuVJcvZladesntzexVNGtW1Y68fOAZIACYiU9oe2rIwoNJeVWO2pfzzqlLQIan5Nfr289ryKHAkJlI/ABeW3nZiSqicGVfkueqLFZr4+egLA8rXIs0iABEiABEiABEjA9QRK+/xbK4RmiMVRUVEyc+ZMLTCnpaUp37dMgaeyEZaNaIwMZQSsMUzWMvaxjYCgbD1HF6ofqG8WlEFwNvXwVBkREBAgI0aMkHvvvVc6duyoxWh9gD9qJYHknMvS1KOOvLM1U1ZHFJywB9aUL9zgLb2C60ueejbBLOdaeQtwUCSgCZT2h7asmCg0l5UY65MACZAACZAACZAACZAACZAACVQFgdI+/9ZooRmicGxsrHzyySeybt06iY+P11YXEJORcYxJ/0wYz2Vjj4EsZ2yjHGGEZmwbAdmU4zrWBXXNYhWmkTENcRuWGtdff7088MAD2tvZ2jbaZNRcAupWkEWHcmTBwWzJUDYZDepeJ/lIaS4i6qlbS82No5dWvnXlF4ObSJfmtkz6IqqziARIoIYSKO0PbVmHRaG5rMRYnwRIgARIgARIgARIgARIgARIoCoIlPb5t8YKzfBgXrVqlSxatEgOHjyoPZlRBpEYYi8EYAjOyDaGoIwMZGN7AXEZ4i/qIHCO2TYCslmj3NTFttm3ZjdD0EYdXAttwWLD399fOnfuLNOmTdOic6NGjari9eY1KpnA7H3ZMntvdrmuojRpefNWXwlrWq9c5/MkEiAB9yRQ2h/asvaaQnNZibE+CZAACZAACZAACZAACZAACZBAVRAo7fNvjVS8MLHfrFmz5LvvvpO4uDjJzc3VIi+EXojLJiMZGcbYNwKzVTxGHbMPIdoIzdYXxQjLpj2Iy6iLMO0agRl1UYZ91ElJSZGdO3fK6dOnZe/evTJ9+nQJCQmxNu8W26mpaXL48GE5eOiQREdH62zs8PBwGTZ0iDRp0qRQH8Fyz5699vJ27drqyRHtBcVsgM/OnbvsRyHEt2kTZt83GxDp9+7dZ3b1JIvh4e3s+2XdOHnypCQkJOrTmqgJliD+lzey8n+WefvLJzLjmkh8/nxPtrykLDXKGxfVPXYmNl6iY86q2cljlY9nIwkNCZJWLQIlRPl6uioyMrPUzNgJ6veqvrRp1aLUZtPUxCZx8YnaV7RlSGCp9ctToSquUZ5+8ZyqJ3BB/TuUr7wsG3t6lHhx/LuTkZUjXo099b/NJVbmQRIgARIgARIgARIgARIgARIgARIggQoRqFFCMwRfiLcffPCBEjv3aDHXKv5CVEAdCL0QfXEMZViMqIx1UeFYjnMQJZXjGK6Ba5o1zoPAjTXsOSCKL1iwQE9S+Pjjj0ufPn3sdh1F9aOqyiDO//Xv/08+/HBWkZeEyPzHPzwv0x960D5xIipmKgFywi232c/5+KMP5NZbb9H7ERGRegJG7CCDe/DgQfZ6qco323rexIm3yUcfvG8/bjbS09ML1Jsy+XZ5/3/vmsNlXr/6n9dk3vwF+ryhSjxfssi2XeaG1AnRKSor3jaXZHlO1+ccT7RNJlmeBjZv3ytzlqyyP0gx95xpKyw0RB648xYJUrNQVzSORp6UT+YuFR+vJvLPP//K3tyJU2ckLT1Di89Nfa4K5lt37pdlqzcI+vD8Mw/Z67tyY//hCJmzeKWeef3/nnvSlU2zrRpGICE5TeKTUqVVcHNp5utVZO/xb/Cp2POSkp4p7Vu3kCaNShali2yEhSRAAiRAAiRAAiRAAiRAAiRAAiRAAk4TqDFCM0TblStXypw5c2T//v2SlZVlF3SNqGyE3/r1bT64EBpQZhWLUYYwZdg3ZY7UTB2zxnFrXQh9RtRGHewj4xd9xTb6gfpJSUmyefNmyc7O1hMFjh49uoB463jdyt6PjDwhjzz2hM5kLu5amEzxzy+8JIePHJHX//sfO6/i6qN87tdfy1tv20Th1q1by87tW0uqXuOOwY/Z2UDdKd08ZfXxXMGkgSbq2yzBza5T68ysbPngy4USGX1aGqqs/ck33yDhbVpJUIC/fqByLj5B1vywTXbtPyx/fe0DuXfyBBk6oJdTbZe10uIV30mUyqa+dexIGX/D0LKezvok4BICgc2aSrrKVI45d1635yg2499dIzIH+PlQZHYJdTZCAiRAAiRAAiRAAiRAAiRAAiRAAiUTqBFCMzyQITAjM/j48eNayDUWFhB0kUGMNQRnZBdjgfBrFYWLw2AVkYurU1I5roXAtdEWxGWUYR82EEZwhsi8fft2SVOZvQkJCTJ16lTtJV1S25VxDEJ4USJzly5dpH37cGVHsl5lLWfaL/3VV3Oki7KbePyxR3WZp/qqOrKcDdu2bdva69b2jfjMS04P8d5ejbTQvCc2v4DQfEndLolZl8W/sfOK8/ufzdfibqfwNvLIPZO0PQU6kq/ur7p16kpoiyBdPmpoP3l95pfy1aJvpVXLYGWpUX4Li/A2oTL97onSpDG9xZ1+0VmxygjUrVtH2rcKkYiY2EJiMx4lWkXmloEVz/CvsoHxQiRAAiRAAiRAAiRAAiRAAiRAAiRQgwm4vdAMkXn27NnytcqWjYyM1KghMkPUNaKy4W/KIfJiMWK0OV4Za4jJmHwQa/QHQrO1H7im6QfqHFJeyEaUhtgMX+mqjK/nzS+QyQyv5KVLFkqH9u11NyBEz5+/UH4141l7tz5Q9hpGaMZYX/n3P+3HauoGss6Tk1MkMLC5U9naG6Lz5LWNGU4Nt6N/Pbm9q6esP5EnRxMKWmUgu/m5lanyr3E+EuRl8/suqdEftu7SInMrJSb/6tFpuuqP23bJD1t3CzKZ8SBj+MDe0r93N/l23Sbp26Oz7Nh7SN775OsClheO18jKzpFGnvCtdTxi24ctRv9eXYs+6GRpfv4FycnNE2+vxk4xdrLZAtXwwANjoSBeAMs1sVOU2OynbDROnY3XdhnIZKbIfE3cChwkCZAACZAACZAACZAACZAACZCAmxBwa6EZwuz8+fN1NjNEZgi2EJZMtrLJYgZLiLw4biYArGimsrOvD66D60KgNf1AH9E3HEO5ybg25VFRUXpMOH733Xfr485eryL10JcXXvxLgSaWL10s1sn20Ndp06bK0uXLdXYzKp86dUqOR0RoMVp7KN981aP57397Wc6di5N33/ufnI2NtbeNc4YNH6X3v/ziU/Hx9bUfK+/GpMl3SOKVif0ee+wRefCB++1NHT58RB5/4in7/qefzCowLnNgt/L2/sMf/ix71ASNCHhRP/LwQ/L8754rUfSfuy9bLttcV0xTRa7rK8uMGcO8JDX3snyw/WpmuLUyMppXR+TKg30aW4sLbecpMXz+8rW6/OFpk9S9r+xJlqyUjT/t0WWeHg3V/XVJic67ZNuuA4L68Ec+pyblO3MuXpJT08XP96qPcqwSppes/F5OnDytBWDco8hcfvjuSfLPt2bJdXWuk5d/95TUV/fAkYho+fTrZRIY4Ce/eeJ++XLBCjlwNFIwSSBixbqNsmHLTmnXuqU8fv8UXWZ+7D98XBZ8s04Sk1N1Ea7TtWNb5R99qz0bGwf+8ur/JDcvX5594j5lA9LMnK7X8IL+4IuFuv+//8X0Asewc/zEKZmn2MSdT7Q94FF9DlMZrndPHCfBgQGF6rOgdhJwFJuT1OSmWTl5QpG5dr7eHBUJkAAJkAAJkAAJkAAJkAAJkIB7E3BboRnC8bp167RdRnR0tD0rGOUIIyRD5MWCciwoxxplEHYrO3Adk0GN7GRcHwI5yk1f0Af0xfQLgu+xY8dk4cKFgozisWPHamG6svuKiQmtthg3TxhfpBiLfrzz1huCyf1MtAgJ0ZuXldp6TNmXmMjIyJCk5KQCZeaYqZetMk4dheYMNelfXFy8qWpfp6Qk27cdN44dOy6JiYm6GL7X1sjNyy3QB2QsO8a+fftl3E03FygGjzffeke2bvtJli1ZZL/PrJXOZ16WM2lF22YMCG0g59Ivyekrx2GZEepTV/76Xbpk5hd//+2OvaCEZutVCm+fOn1O3zMDenfVE+Bt33PQLjI/cf8d0rNrBy3Uvvyf9yUtI1MLxK1bhkj7tq200Bx16rQSam1ZycdOnJS3Z83V7eFKEH9xP0KwhciM8xGXlLdHffWvAnyhISrXUfczAgKeEZmxj3OxH59Y8PWKORsn739um3DRXAN1DxyJlNc/+EpemPEoTteRlJKm28H94RjIhkb7uSoj2jHOq2u+8eFX9mJc54L6nYqIipH/9+YsefKBO6Rbp3D7cW7UbgIQm8NbBcuhyBgtMns19mQmc+1+yTk6EiABEiABEiABEiABEiABEiABNyXgtkIzJvybO3eutpqwCrQQb7EY4daIyRB3sW0EZpPZXBp3c35R9XCd0gJ1IByjj9iGwInFeDVDBMMCMRpra32IzRhjy5YtpVu3bqVdqsLHT5yIKtDG6NE3Fti37kAAx+JMDBkyWH77m2dl5arVdlsOZAo/8fhj+vRmzfwKNbP++w3SvWfvQuWVWWBE9nFK2G/m30zWrFlrF663b98hc+Z+Lffde0+hLjQoweHinp6NJFhZYPx5TZoSZUUmX7HM2H6msNBtbbihExMLRqmsXkRblTUMgX+hmogPcfekcVpkxrZHwwYyuH9PWbV+s/To0l7dXyItgpvjkMQn2ETgi+ree++Tefoe9fXxkl88fLeEqKxfZBMvW71BZybrE0r48eg9t+vs6bc/niuxcedl9PCBcqNaIPJZA78HyLR+6sG7dLY0BOvla3+Ujdt26/NOKyEantKuiHunTJAByjKkXt16Eh1zRt5VdiGw6pg1e4m88tIMLby74jpsw70J4HHOmThbZns99YAvQ00SmJSaIY4TBLr3KNg7EiABEiABEiABEiABEiABEiABEqj5BNxSaI6Li5OPP/5Ydu/erQVaIyobERliFkRb7AcHB0uIyraF2JucnCwpKSl6QZ3SAqIvlpKiJCEa55nrQNj2VfYQXl5eet24cWM5ceKEnvjPeDKjzwj0G4EJAjHGL774Qp577jkJCKjcr/xHqv5YIziooOC3fPk38vwf/mStYt+GvcRzv/2Nfd+60ad3b8Fy4UK+XWhu1qyZ/OH3v7NXS0m12SjYC6pp429//T958onH9dXPnz8vY8aNl9jYc3r/jTffLlJo9vWsI61860pMauGs5n9uyJB/3eQj/2+sj6TnXZZU5cE8sxjLDOuQewXXt+4WuR19+qwub9UiWE7HxukM38aNPGXYgIKp0CnKIgPRq1snvTb7LYJsgvO2Xft1xi8O/v6Z6eLj3UTXg0h9121j5awSjpENXFLgugiPBrZ+Y1JI047jec9Mn6rFcZTDO3nyhBu00Iz9+MQklwjNd946Rob274UmdUCM/8MvH9Z2HLAQ+VHZiUAIZ9RuAhCZrZ7Mwf5+RU4QWLspcHQkQAIkQAIkQAIkQAIkQAIkQAIk4B4E3E5oRjbwnDlzZNu2bQJbBthRQMw1Yi2EYWxDWIaYOXHiRBk9erQWnuELfOTIEdmr/HdPnz4tEBIh5uIck2EM7BB80aYRiVHmKChbBWgjEKMewgjf6Af6B6E7LCxMevXqJR07dpRWrVrpa65cuVJPYpiQkKAnDER9LOgLhGlcPy0tTXkhf6fPefTRR3U921Vc/7NevYLi5qXLBYXTXDXxorGmcLx6lspMremBDO1HHp5uH0bz5s3lmaefkj+/8JIuw/2Tm5srHh4e9jpm45lBTeQv69Il92JBO4z4zEvyh1VpWmxGZvPLyjIjqwTLDLTXzq+eTOxiE25N+0WtjbiLe/18Uoqu0rl9G3X/Xn04gnsInsiIbp3a6fWhY7YHCvAsRhw+Zstk79y+bZHi8A1DB5QqNOuGnPiBPkP0tUZD9TsC32RMXpipsk0rGvh9HKYmQHSMgGZNpWN4mByLPCnHo05RaHYEVMv2HUVmM/Ffe3XfR8TESsy583rEzGyuZS88h0MCJEACJEACJEACJEACJEACJOC2BNxOaN68ebOsWrVKZydbxWEjMCMbGAsEtiCVkTtw4EDp2tXmQ9ulSxcZM2aMYLK97du3y6ZNm2SPmvwNQi/CCMTm1YDYa9qDeGXEZbRt6kIYNrYcOI5yLA0bNtQTyfXp00eGDx8ugwYNkjZtIALaspaxho/w+vXrtXhr2jPH0S7awxiRib1ixQptnzFy5EjTPZevrZP+ofHTVzJmzYXM+M2+dQ0mrgzYV7zx+n8KNZmkWJhJBAsdrGBBz549NG9rMz179LDuSvTJk9K5ky0z2Hqga2B9eXxAY3lrS+EJ/iA2/25lqoT51pOdZ0u2zIBjxt9V9nPjBlfFYut1rNttWrXQk/ydPB0r+Rdsk01aj2MbEwHCLqJ1y2CBoAtbC9QPUdnMvt5euroRqYMDi7ZCCWxecCI+x2uUZb9ZU5+yVC9XXUxwiAkLi4qWwYFaaI47X9DDu6i6LKu5BIoTmTEixwkCUUaxGRQYJEACJEACJEACJEACJEACJEACJFC5BIpWayr3msW2DkF48eLFgknrIMwisIYAahVBIXpC6G3RooXOJoZ4C+EWdZFhjKzi1q1by4gRI/SEghBxIT6jDZwHWwsfHx/tQQyrC+xjwbloI09l9mJBNjTEYmRGI7sa2a5Y43rIXkb748eP1+0gCxbtow6OY0H/IIbDQgPtogxhxoIyCN1Yo38LFiyQnj17ausNXdHFP9qHhxdoccGChSrD9yF72R1TJgsWBDLDR4wq3sPZflI5NzyU9UJRHtCGTWnNOgrf+cpvuLRooER9x3C83mU1GV5x0UoJycVFYtZlScwqvQ/NGtURr4ali8y4Tpia2A9xJOKkDFE+zIh9h44LJtGDoLv34DGZv3ytLu/eub3yBr8g7306T+8/es8kvcYPZEQjcJ8VFReLEbGLqltambnHS6tX2nHH19da3/E1sx4z2d6YHJBRewnEJyqLpPRMCfDzKXLiP0exuZFHA+0dXnuJcGQkQAIkQAIkQAIkQAIkQAIkQAIkUP0EilfOqrhvEMFgNbF161bJysqyW11YxTEITNiHqAzBGNYZRqxEdjLC1IfwCwsL2FFAFF63bp0Wj9u1aydt27YVPz8/nZGMdsyCNnA+hDlkMWOB4IxJ5GApATE4Ojpa214MHjxYkH2M+mZB/yAcm77AmiEwMFALzLAEgQhnrWvdxnVgF7Jo0SKZPn26XYx25csQHBwk7dq1VcK3zUph565dsmbtWhmrssAd4+NPPnMscqv9o8eOF+gPHgaUFvvUBJMQMK1iaGRkQd/q1q1bFdtMm6Z1dSZyadYYxTagDiAz2tnApH5eTRoroTlKRg7uo4UyZC+/+O93dfYyvIgxFozp+8079JKVnSMP3X2bBDW/mr0cGOAn5xOTJVZZVxQVMWqCPneL5Cu+00X1C0I7Jkc0orK1DsaJCAxwXZa2tX1uuwcBb+X9DTE5oIQMeiM2J6j7paiHTO4xEvaCBEiABEiABEiABEiABEiABEiABGoPAbcRmiEUrlmzRk/kB7G2pKxFCLQ43qhRI71AGMY5EN1QbrKbUYaA0Ny5c2ftvYs65vziXkacB/HZGuEqG3jAgAG6yAiVaAcin7keMqJNv1HepEkTPTkgTkIfjQBtbRf1EJ6ennrsENtvu+02u4BurVvRbfTtX//4f3Ln1Gn2pu6970F5/bX/yM0TxkvTpk11P5Hp/Olnn9vrlGcDfscQ6mEN4qoICQm2e0hv3rzF3n6+us68+QtLvQwm/Vux4lu59dZbdN2cnByZ+eFH9vPw0AKvWXHRsN518mi/xvJmEfYZxZ1jLYddxoN9GluLStzGffb4fZPlv+9/IZ/NWy7PPHy3zF60Uttj4L4ZrnyKx98wTP759scCgbl921bSt0dn+XbdJtm597A8/dBdun1kRh84EqktJdIzs8Rbidcm1C0s637cZnardA37C4jlELodfZ13HzhSbF8w9p37D8mAXt0K1MlVWe0YJyJUWWgwai+BRp4NBUtpAbE5yL9padV4nARIgARIgARIgARIgARIgARIgARIwAUE3EJohmC7fPly2a8yTk0Y8dbsW9eobxYjLuM4BCjsQyg2IjDEVezDGgNiL9pFoBx1zLbeKOKHqWNt17SBMrMYgdmscS2IrOa4uY7pt7m+qY82scBmA/YhyMQ2x4roVrmLRo0aKeNvGicrV622t/Hsb54TLBBai5sM0F65hA2I5da4acIt0rFDB3npxRekoUfpopD13KK24YG9f/8BfQj97NGrr9xy8wT5RonHzvb74Ucfl1/98hlludJCTdQ4Tw4fPmy/1JNPPG7fLm5jTHsP8fGoI/MOZEtM6iUJVBMAnky+KEWZUsAio3GDOpJz4WeVyVxPHlEitX9jm31Kce07lrcLC5URg/vKj8qL+d2P58oT99+hRVnc0+oW1vHvF36t7mWRLTv3ylcLv9Vlj0y7ap1x/bD+suK7Tfr34z/vfSYzHrtX/FQmKMTpuUtWSVyC837GdevZHt4kJtsmJ3Tsb1n2m/p46WsjG7tfzy7SRGWpItb+sE2L4iW19fm8b6Spt7cW11EPgvWbH36lx4j9G0cMxIpBAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRQRQTcQmiGDzImAIS/McRVCMZWkRXbVoEW4q31OPZxHOchsIZoC6EXPss4jgxlY41hzjUistk3zE059q3HTLk1MxmCMsK0DQHQ7GON47g+jpt+6gpXfpg2MXZkRMOmAyzuvPPOSvNq/t9778hLf3lZPv/iS2tXCom1o0aOkA0//FigTkk7mGzPGhCFsfzimaclWGUjVzQeuP8+Wbp0mb0ZiMsm87osIvlbb79rb8NswNP7iccfNbslrgeENhAsJuYfyJHPdmeZXb32UNnPfx/jI+2aVfxXbOptYwUT4C1Z+b28ocTUrh3bScfwMGkTGiLZOblyNPKkHDkepUVbTAj45IN3SGiLIHt/PNS9/8Cdt8inXy+TxORUeUFZb+BeNL8vmEDvzLl4e/2SNgL8mkpEVIxs3blfL2GqD88/81BJpxR7DAL4nMWrJCEpRZ7/2xsSpOwuUtIytGjs49VE0jIKT7xoGkPfX//gS2ncyFMvxjIDxyfeNEpwPoMEaiqBuKTUmtp19psESIAESIAESIAESIAESIAESOAaJlC29MpKArV+/XqJiIjQ4heEXVu2pi1d0wi9EGSNKIsyLPA1xuR8JsPY1IWIZiwbYK9hJuqDOGXqQABGe2YfQ7NewwzViHE4hnPMeTiOYxCQjchsspJRF2OANUN6erquhz6Za+E4AvtoA/toA+fAyzkyMlK+//57XacyfiC7+7//eUU++/Rj6a1sRRwD9hEQo7/68qp9Rv36NsHU0Re3nsUaY8zo0fKnP/6+RPsJx2s57tetW1CYNcI96o0YPkzeeP2/jqfIoEEDZfnSxQXKTeattfCJxx+TF/70R2uR3r7ttltl7epv9X1S6KATBXd295SnBzWRHkH1dbbzqDYN5a9jvF0iMuPyuE/Gjhws//fckzqD90hEtCxa8Z221PjfZ/O1NzN8i0eqzOe/Pv+UdGwXVqjXA3p3k989/aC0bhlsF5lhXdGra0d52DJxoKOXLawHrDH+hqESHBhgL8pTExBao96VjGdrGbbrqvvfMYb27y1jRg6yFyOzGpnJENKfmT7VXm42TF+a+/vJPZPHa59qZGUbkRl+1o/fN0XGjRpiTuGaBEiABEiABEiABEiABEiABEiABEiABEigighcdy4xpahv/UtQM98q6QJE1hkzZmh/ZgizVmERxyCyGUEWHTJZwViPGDFC/vznP0toaKgWllEfC45BEMZ5pj3TFtow20bkNdfAuqgw9a3HrGVmG+2Z/uH6J0+elH/84x+yaZPNtsC0b+qjPfgYG7HaTBiIPsOnGeciy7myA32AuH36zBlp26atmiyxjR5Hea+L8eEBALK0GzZUVhM+3uVtqsjz8IDhmJoMENnqHTt1lKa+ZbtX8drExJzWGdwdlLWHr69Pkddx58JkJSyfOnNO3d91xN/PV01+56+3ne1zZla23api/+Hj8v7nC3Rm8KsvPetsEy6rd0G9HmfPnddiNCZAxO+QM6FuM5XFnajugxwJUeK3p6eHM6exDgm4nICrM5D9vJmR7/IXiQ2SAAmQAAmQAAmQAAmQAAmQAAlUmEByevHfPkfjBdNHK3y5sjcAMRY+uRBZkREMkRWCLMRKLI6iE0RR1EFd+BnHx8drodlMPGfEXPTEiMzYtpabbce2Ua+oMPWtx6xl2Eb/kUWNfqFdiM6xsbFyRom3OIY6EJRxzIwT47OK3TiGMoxl+/bt9rFZr1sZ2+g3JkvE4orAWL2Vfy6WygjYoPTo0b3cTeN1gJiOpaYGPJaxOBNHI6PlrY/m6HvvtZd/K8haNn7Ily//LN+s3aibaRlSPRPoIbMaFhxlDXWbSXBz/7Kexvok4PYEGlz5Bonbd5QdJAESIAESIAESIAESIAESIAESIAELAedSBy0nuHoT2b5xcXFacEX2LkRKI75a9yHCQhBFGYRYX5XFOn78eC0yGwEXfYOIi0BZVYT1eui7CfQT2bLXX3+9yuj1sVtjoD7GB/EZojIm0MN52Ec5AmNNTk7WmdCmPa5JoLwE2rZuaX/48Y83Z8meA0fl3PlE2XfouLzy7id2f+bJE24s7yV4HgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQwDVOoFqFZgit27Ztk7S0NC2EQUhGmQkIr0Z8tZZDxO3du7dMnDhRQkJCtFBrsoGt9Uw7lbm2isu4DvYhhKMfgYGB2gKjb9++Orsa5QiTtQ3RGfVwDhYjjmOdlZUlW7Zs0fX5gwQqQgAZzL94eKr+HYOf8YdfLZK/vfaBzPxigcScjdPld6kJB0OrKaO5ImPjuSRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAu5BoGrSfosZKwTm6OhoLXRBfIXoCmEZojEWePFCdMUCX12TDdymTRudzRweHq7rGbEWl3EUfou5tMuK0U8E+o1rYx9r9AkLsponTJggUVFR2rMZtg9mjFgjkxljh8iO8yBGmzHANxmTCVaWBYXLILAhtyfQKbyNvPOPP7h9P9lBEiABEiABEiABEiABEiABEiABEiABEiCBmkmgWjOaDx48qC0iILRCRDYZvgYlyo3obOogm7lPnz4yZMgQLUBDrMViwir8mrLKXENMRmBt+gFhHP2FYAwBGX1FBjZsMjBGI5qbseE8M36UYRuRlJQkR44c0dv8QQIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQALuSqBahWaIqMhqNiKtEWYhtkKMhaiMMFm+EGT9/f2lZ8+e0rx5c7uwa8RltGOygY0AXNngreIyrmXtgxGN0VeI402bNtVjgRCNfqIuBGkjokNgxjGUYzszM1MiIiIqewhsnwRIgARIgARIgARIgARIgARIgARIgARIgARIgAQqRKBaheazZ89qL2IjFGONxYjFGBlEV5Pxi/LQ0FCBZQbEWQTKjGiLuiZMm2a/stamr1jjmiYzGX0xZegrLDSCg4N1GcRk1MW4UMdxLDiGspycHDl16lRldZ3tkgAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkIBLCFSb0IwsZWTsYm0yfCHSYh9rCK3YhmBrJgnEGpP/QbB1DAi2WBBWwdmxnqv3cU1kXyOMaGwVuY2gjD63bt1a4NFsxohz0FczXtTNzc3VZcjmRr2EhAR75jbqM0iABEiABEiABEiABEiABEiABEiABEiABEiABEjA3QhUm9AMQTU+Pt7uswyRFaKrWaxiLaAh+xdCM6wz/Pz8tKhrFZdRxwjNjuU4VlmBa1n7aq5t+oLrQjQPCAjQdh8Q1U0ms6ljhHGsDQfUwXmJiYlafK6s/rNdEiABEiABEiABEiABEiABEiABEiABEiABEiABEqgogXoVbaC858MWIjk5WQuryAg2Yq0Rao34ivbNNoTXRo0a6Un1UG6EWmxXZ5i+F9cH9BMTASKb2fTZCMo4B2VmjNZybCPrG6I8xl0dcTztghxLvSAnMy/KueyLkpp/WXIvqgcC1dEZXtNpAsjt96h3nfg2qCPBjepJWJN60tG3vnTwqe90G6xIAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAs4SqDahGeJpenq6PYPXCK1GiEVGrzVQDuEVGcEQnFHf1LXWc8dtawazGQfGAssMM26sjciM+hgnIjs7u8ozms/nXJIfzuXK1vO5kpJX8HVwR77sU2ECeBCQox4I5Fy8pB4QXJLdiXm6UtOGdWRwcw8ZGewhzT1tPueFz2YJCZAACZAACZAACZAACZAACZAACZAACZAACZSNQLUJzchiRlYzBFUIrtYw4iuEV4iuZt/UwT4WCM41ITAGjAVh+m7GhDXEZ7Nv6pj6EOTz8/P1uZX9I01lKy87lS3rY3PslwpuVFe6NW0g7bzrS4vGdcWvYV3xVJmyNjdsezVuuBkBIzQn512Ss1mX5ET6BTmYkq9F529PZwuWG0I85bbWjcRHZT0zSIAESIAESIAESIAESIAESIAESIAESIAESKAiBKpNaIawaibBcxSazYBMxjLqmsVkAZtjpq47r01fjZhsFZ5xDIs5ZsZpzsF4Ub+y48e4XJl7IlNnweJaw4I8ZIRa2tNqobLRV0r7eBDQSD0QaKQe5LRsXE8GNm+orxOhrFDwWm9SCx4oIGv97nZN9GtdKR1hoyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAtcEgWoTmkEXGcnFCcdGfDVr1IcIiyzovLy8avMsRj/KGshORmYy+m0VlM3YUGaEZaxNOa4DRuZYWa/rbP0vIjLtWcx9/RvKpLBGWpx09nzWqzkE8OAAy7iWnrLkZLbsUpYanxzLkFMZF+X+9k1qzkDYUxIgARIgARIgARIgARIgARIgARIgARIgAbciUG3fmYdlBia4g4WGYziKrWYfojR8nbHUlDDCcmpqqmAx2cxGPHZcY1woM1nMHh4edr/myhjz24fS7SLzgx285BddvSkyVwZoN2sTWc54rfGaI5DdjHuBQQIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQALlIVBtQnPDhg3Fy8tLC6pGSMYAjDBrtq3HIEpDrE1LSytQrzwDr6pzzHhSUlJ03zEGZDgbgdkIytg3dXHcbEOMB6vKCAiLmCTOV3n0/qmXr4xSE8Qxri0CeM3x2uMewL1Asfnaev05WhIgARIgARIgARIgARIgARIgARIgARJwFYFqE5ohoHp7e2tB1UzqZ0RliKxYrPvYRkZzYmKiJCQkaIHaiLRFwSjpWFH1y1tmvQ62jUBsXWM7KSlJ9x1jwFgQ1jrWseIY9i9cuCBNmjSpFJsQ2GUYkfm3PXzoxQzo12jASgP3gBGbcW8wSIAESIAESIAESIAESIAESIAESIAESIAESKAsBKpVaPbx8bFnNEOkNWIrBmBEW4ix2EaWL9axsbESExOjRVrsG49na30ItEbELQuM8tTFdU2YvmDf2h/05cyZMxIfH6/7i3Ga49bsZuv4UY5x+Pv7i6enp7mES9aYDA5WCYinu9AqwyVQa3gjsNLAvYDAvYF7hEECJEACJEACJEACJEACJEACJEACJEACJEACzhKoNqEZHs1NmzbV/sP5+fl2kRmiLARXYx8B8RYZz9jHdnJyshaaMSkg6sGKwojRWGOBQGuypJ0FUd56uA5EY/QNgT6ZbdOvjIwMOXHihLbOQH1z3IjM5hyMpX79+vY2IDBDaHblWNLyL8vcE7aMVfjzIpuVQQIggHvBeDbjHsG9wiABEiABEqg4gbT0TImMjpGEpBT1HoD/tlacKFsgARIgARIgARIgARIgARJwRwL1qrNToaGh2n84Ly9Pi6sQbCESG7HV9A1CLI5BmM3KypIDBw5IRESE9OnTR5+HehCujbALWw5T37RRmWtcCyKx8VI2gjH6g7EcP35c9zk7O9suoGNMWFAHayNYmzFg3aBBAwkODnZp15edypaciz9LX/+G9GR2Kdna0Rg8mw8m58su5deMe+X+9k1qx8A4ChIggVpLID0jSxZ9u05CQ4LkxuEDC4xz0/Y9snXnfv231nrAx6uJdGrfRoYP7KP+LtvsrKzHXbGdlZ0jXy38Vo5EREueeqBujSH9esotY0eIr7dtQlbrMWe2//PeZ3LyzDl55cUZ0sjTQ45GRss7H38tIwb1kbtuG6vek1ySGS+9KoEBzeTFZx9zpslaUed41CkJDwvV77XKO6AX/vWOpKoHA0WFV+NG0jIkUG4bN0rdb4FFVSm1LCk5Veo3qC/eTRqXWre6KlRmH8E3KztXXv/rc9U1PF6XBEiABEiABEiABEigEglUq9DcoUMH7UEMURUBgRYB4RVhMn4h5GKBmIxs4GPHjsmWLVukc+fOWoxFPRw3gq0Ra1Fe2YE+o19Y0AcjEGMbfc3NzZWNGzdqYRzH0CczXqxRB2UQpNGWye6G8Ax/5vDwcJcN4XzOJbtlxqSwRi5rlw3VLgK4NyA0w0JjXEtPae5Zt3YNkKMhARKoNQQgMr/xwZcSl5Ak2/cc0gLhlJtvtI9vw5adEhuXYN+3buw7fFz2HTouv3zkbvv7Duvximyfjo3X/crJzdN/41u3DJYWwc0lOSVdi8Jbdu4TXP+FGY+Jj3fZH+hlZGXb33OgnxcuXNT7+fkXdLcv/2x735Sj3oNcK3H58s/y4ZeLtAg8fGDvcg87TzHEe7jGjTzVe7Orb5Pz8vIlLUN92+dYphw6dkJ+88R9Et6mVZmv8+Ir74mXEpn//cKvy3xuVZ1QmX2EyOz44KWqxsXrkAAJkAAJkAAJkAAJVD6Bq++gK/9aha4AodnPz08yM/zpfSMAAEAASURBVDP1m3ojuEIwNsIxyiDAGnEWAmxKSops3rxZBg8eLL1799Z1UQcZxRBucT6E36oI9MeIxRCVPTw89PWReY3+7Nu3T7Zu3aptMzAWhBHSzZiwxoJyrCE6IwICAgSMXBU/nLN94BwW5CHw5GWQQFEEcG/gHtmkfJpxz9zZ1n2zrorqP8tIgASuDQJWkdmM+LuNP+lNIzY/cs/tcvBIpFxWf1utcSY2TnYfOKpFX2Q8D+nf03q4QtvIJn7t/S+0mBYWGiK/fuweaai+oWQiIzNL/quOn09MlplfLJDnn3nIHHJ6ff8dtwhEZGQzM2wEtu7apzJlc2TZ6g0yVL2e5j1Xefn8+tF7dPay9fwz6gHC5/O/kTPn4mXu0jXqQcGj1sNOb+M9rrtHTeijuzNk/0iABEiABEiABEjgWiRQ+Sm/JVANCQmR1q1bayHZCMRGuLWKsBBgUQ4x2QjQe/fulXnz5mnRGZfAcRwzGcElXNalh9A39B2WH/BUNiKyl5eXFpeXLVtmz2Y2YrIRlNERCOJmbGgH26iH9tq2bavFZld1eOt5m9A8QomIDBIoiYC5R8w9U1JdHiMBEiCBqiaQnZNrz2R2vDbE5qVKbEQEN/eXMSMHybhRgwssEKC7dQrXdY5HndRrV/34btN2LTIHNGsqv33ygQIiM66BbNbfPHG/vtzJ07E6SxY7ucpGDJnZEEsdIzklTR8z7438/XwlwN/PsZpT+/nq/UVk9GnZvvegJKl2HQMCfrzqhwn0CRm8pn/IRkU/zp47Lz/tPqBE1/N6H/WRVXxKWXps23VAjp04qfdNO9Y1xHiMHfWiY87KBfX+riKB6y5Z+b1uAvw279hXkeaKPRe2GTePHq6Px51PLFQvU2WaHzwaKXsPHiv0OuIYWCIwfmwnp6bbueK4NTAO1ElXDyaskasyq4sqL+na1vNLev2L66P1fGzjvtm1/7B+jTGW4gIZ4GCxfY+615RlCIMESIAESIAESIAESKD2E6jWtFaIrP369dPZyfBpxgcXiK0mjCCLcmSmYB9iMsRYZAyvWbNGWrZsKVOnThUfHx9dBxnFyCyG6FsVAfEbXsrmwx+ujX30b/bs2bJu3TrBZIBGQEafjBht+mfGibHhXIjlGMfAgQMrnJFjrnE87YKk5F2W4EZ13XoCwHz1YfHJjYU/vJlxmLVPgzry+uBmZtep9QHlPfz6AduH6jZe9eTFPk2lqDKnGqvllTAxIO6Vc9mXBPdOB04aWctfcQ6PBGoWgQMqSxliG6wNBvftIT9u262ze3t16yhblMj4/aYdcuuYkepvaPH+yyFBAXLgSIRkZBYU+CpKYs2GLbqJW8aMUH/7i36e7+3VWHspQ7DLUgIjPKN37D0scxavlAk3DhOca403PvxKEpVQ99rLvxUP9W2p15VdCCYWfPWlZ7XFg7VuSduw7Ji9aKV+L2Xq4drPPfWANFPiNWLWnMUSERUjL//uKX2d1LQMCQlqLiMH99X9u+mGobJVMYaIaKJDu9YybdJN8sq7n6pM6zxTrPv2gvKIxjVMwDd77pLVBfqAY1MnjtPXMPXKsjbZzOYcV2U1m/asa18fm682XkMTmOBxwTdr5Yetu0yRXoPLM9OnSn31fvej2Yvl+IlTuhxi/V//O1NzAc+vl66WTuFt5FePTrOfD0YQc2G78vtfTLeXr/xuk6z9cZvcNnak4Fxnrm1OLu31L66P//zzr3QTEL3f/2y+fkhg2sR63PVDZKLyrTYBMRw2JkciokyRXvfv1bXQ616gAndIgARIgARIgARIgARqPIGiPwFV4bD69u2rRWJjFwGx1Wp7YRWfUQeCM+pgwr+0tDR5//33ZeHChVpcRrdRHyIzMoIrM4ywjD7hWugXxHLswwpk5syZ8tlnn0liYqLuE45jMYFtCMwQqs352DcitL+/vwwaNKjAOebc8qyPpdp4dGt69eu75Wmnss9RL5+o/0td8pQgXda4oM4xbedcsp1fVFlZ262t9c29Yu6d2jpOjosESKDmEejRpb0WZJ99/D7p2C5MDwB/P++dfLMWLO+7Y4L6+1m8yFxZI4aAaITWvj06l3iZUUP6CSw+IOJWRSB7+MsFK6Suev+BrNx7p0zQ4iYE43+8NatQBu6bStyGyBykJhTsZxnLqvWbtRXJ7eNv0GI5RFQIqC8r4RSZxRCkp91+k87cRlbu8tU/2IcHIdYI3bArue+Om2XYAJufMsTW9SobvKxhzWY251ZWVjOu9e13G/VlunW0ZcRj57N5y7TI7OfrrZlgQkZsg8vbs+bo+oP69LBPVon3gJi48sbhA6R39076OCYyRPsmMMEjAhniEJNN4OEIom/PLnrtzLVR0ZnXv7g+4nz04Z9vztIic8fwMH3/4IEIXv/V328R3Bcm3vpothaZ4XN9q6qDhwjt27ZSD1MOVTh73VyDaxIgARIgARIgARIgAfckUK0ZzUDSp08fPakfJswzFhIQX43oijXKIeIiIDCjDHXwRh3Zwu+8844cPXpUZsyYIaGhofZzkRlsso1xTkUCwjIEbqxx3ezsbD1ZH8qQhY1yeDLv3r1bPv74Y/n++++14AzRHNe2Zmpb+2EynU1mtFl3795d2rRpY61aoe2Tmbavpbbztvk/V6ixKjy5gRIKikoIa9aQE9RV9suAe2Xt2Rwx905lX4/tkwAJkICzBDw9GtqzflOU/YAJ/KmH0FldcT4xRV8aAhveK1hj577DynKgsH1AezWhXNvWLa1VXb4NawoIuYg//foRCVTiMWJo/17Kc3i5FiE3bd+r7UX0AfUDtg6/fGSadG5vey+y8ac9+hCExZd+83iBTOp5y9boYy+q7GW/pj56u7my9njzw9nazxgFmKhw0Yrv9LGHp02SfleE0iH9ekqXDm3lgy8XytJVyl95QK9CdiP6pGJ+OGYzm2oVzWpesGKdeDW2TZwMj++cnDxt84GHCbj/blJZvIjTZ+MEry2ytv/vuadUsoTt/ckwNSHh/736P21TgjqD+nbX9WHtgvONjzgK8bAhNu68av+MtAsLlbT0zALCf9SpM1qohWUMMvkhYsOaxdlrBwX6l+n1L6qPeAiAhxJ9e3SRR+6ZpMeCH8hSxkOGlUpoHq1saqJPndViNO6TF599XEzmN34vP/16qZ60034yN0iABEiABEiABEiABGodgWoXmkF0xIgRAs9lZCgjGxkCsclshhALGwlk+CJT+PTp01p4hoAMAddMADh//nzZv3+/TJs2TYYMGSLdunXTLxYEaoi9pj0UIoMY7WIpKSAeY8F1sOBDIwRjrBs3bqw+dOTo/qLPx44dk+XLl2s7j5MnT+prGJG5pGugXwgzDow9MDBQjwFlropz2TahuUXjksfsquu5qp0Z3X2ks2/p4jiSgE5nXZTI9AuSp7KV23nVl7be9aR+BTPaMi9cloj0ixKjhPrmnsp2RLXp73GVYfbFnyUh12b30qTeddLsyjEkTJ9R/UE0rHudBKlzTaAcxxGYeE8ddssw94q5d9yyk+wUCZAACbgRgSz1EBpRr4j3F2t/2Cqn1WRyjjF25OBKF5rhpwyBtGVwoH4PA9sNE/17ddNC81ZlqwEvaxPDB6lEgCsisynDGpnIENJNwAcbEar8i43IjP1Af5uYffFKNu5pNYEeBG/4SxuRGfUQsDyBMI0JEk+dPiewnHAmispmNufZspr3yvCBfUxRmdbG5qKok2AVYcZ6UPlXI5CZnJJ29aEHyvr37qazfbfu2i+hLYJQVGQM6N1VeUyfl/2HI7TQbLKZxytrDAi4h5UFBTKCDx+3WVH069lVt+PstQeofpT19Xfs6P7Dx3URMvWt9w8Kw5S9R5Ty2j4SES0QxRF4YGBEZl2gftw+/kYKzQYG1yRAAiRAAiRAAiRQSwlUu9AMsXf06NGyYMECLSRDaDVZwxCJ4VN8//33S1hYmJw5c0Z++uknWb9+vZw7d06LvxBqkQUMsRcC76uvviqtWrXS50HARsY0RGrUwbUgEkOkdiYgLqMvVmHa2HqgPDk5WXbs2KGXrVu3yqlTp+x1zbm4DrZLClPXiOEY6/Dhw+0id0nnOnssNd8maPvVwkzgqIyL8qbyXk5XorA16inu0zs2kSGBZZ/8EML1V5GZsj628KRMHZVf8TNdvcWrfh358VyOfB1lm6jHW+2/OcT2wXp3Yp68d9j2gROv/qyRAYI1fLJf3Hn1A/7M4f5KaC75/rCOqSq3zb1i7p2qvDavRQIkQAI1kUBw8wDdbWR+qrcJ6u//1VHceesYlRF6dWK33fuPyJ6DR69WqMStsypbFnFGib1/UVm2RQWyaK3RrWM766592yoyo/C6Kw90IRRbw5SbsvMJyXoTYndRERYarIXmuIREp4VmiOMQlIuLZcq2A1nbjtnlxdW3lj9x/x0SrDKBTeRfuChHlNC7eOV6PfEgxoFMbDBFbNiyUy+mvnVdVCa79Xg/lSWMyQz3KTH39gk32L2NMZHl6g1b5dDRE9oD2dhm9FNZxAhnr12e19/aP2zHxifoImSeFxeYtDL+fJI+3KpFcKFqPt5NtNVGRSd/LNQwC0iABEiABEiABEiABNyGQLULzSDRokULueGGGyQmJkZSU1N1di/EVwivKIuLi5PBgwdrgRiT7UFIhtXGqlWrdGYx6kKgRgYwxOn4+Hg9Ed/ixYulbdu2esLAsLAwbasBOwpkO0OYhmhc2ocPtI16sMpAxvShQ4e07/Lhw4f1+uzZs3riPyNkow/oN86DsI1tLMWFuT4ypXEdnD906FC7BUhx55W1PFdl3iI8VdZtTYpINREdfJStgc+0xj84UWUT/313ivZettbB9kX1Kf/DoxlST50wIKBs2eH/O5IuOxNsdi1oC9RML46pPr2kxOLX1GSEQ4M87EIzhO4MtUCA3puUj9N04DyMAxPs7bC0GaqymWEN4q5h7hVz77hrP9kvEiABEnAXAhDS8Hcdf/ePR520+0ejf+HKIsMajhOlWY85bl+0TJTseMyZfdgYIGDv0Mfit2w916NhwYfwvj7e1sMV3sb7IoRttoTCzRkf4rp1rn4DqHCtqyU6m3nV91cLitiqSFZzM2UB4iietwxWFhfx5+Wn3Qdl94EjWmiuf8Uqo22rFtI6NKSIXoi0KiGbGScgOxpWGMjoRp+PRZ7S18bEj8hkPhapvimnEiYOHo3U2eToB8LZaxv2ZXn99QUsP2yJFnk6o71hMQkbyNo2Gc2XLl+d3NvSDDdJgARIgARIgARIgARqOQG3EJrxBnjSpEna1zgrK6tABjCE588//1yioqJkypQpMmzYMG1TAW9mfJhbvXq1noAPwjECZRCbIfwiExmeyZGRkVrExZvku+66S4vP3t7eBa5T1OsM8RcfFiEYp6SkyKZNm3RfIHajffQbmc04jixpbCNwHZyHfqCOEZOLugbOQR2zhIeHy9ixY3WbRdUvb5kRSd1X1ix6ZItOXs3+MjUwho9VhjACgrAZG2wo/tTLV+orL4ovIjJUtnGurjNLic39/J0Xmk+qDGmryPxkZ28Z2Lyhtub4++5UyVfCN7J8V57OlgmhjSRA2WUY+wycd32IpxxNvSo0oxO7VIYzhGasTQwOdL5P5pyqXJt7xfCtymvzWiRAAiRQUwnAc3jT9j0yf/k6eWHGo0UOIzMrW9tVWA/WUe8FEMictQYE2HRLJrT1mLPbIYG2v5lNlbcvMqutkZuXL7uUx7Cvj5e1WL0PKegxXeBgOXaCmtu+8ROlPHzNex/TDN4+nbhiuQA/YWeitGxm00ZFsppNG9Z1V5XpDaE5SWXvIloEIUP7kHRSNiOYHM8a8cpPOTL6tLQoJovbWhdex99+t0m1fUB7IV/fo78+jOtBaN6sPLQx0SQmkTTh9LWvvD8ty+tvrmHWIUEBqh9ZMljd3+0cPMUjomK0SA5blKArVioRanJDZJNbAzyYzWwlwm0SIAESIAESIAESqH0EXPspopx8ILK2bt1abrrpJoEADIHYZAFD7EVG86JFi+TTTz/V9hkhISE6wxmiMSbNg+gL8RfnGcEXvs5oF+v69etLQkKChIWF6WvASgN10XZJAYHY2G0EBARoOwu0ATEc/cS1IHDjA5PpM9qEdzMyrCE443xnAmNAPydMmCAdOnRw5hTWUQROKVHYxIxu3jpjG0nb0zt4iccV82MIw7FXPKpN3ZLWsL0w0d2vgRaZsY8M5CltGptDdtF4kBKhTexMzNdCdLKyyLDGwZQLejdK+T2bGKayoRkkQAIkQAJVR+CQ8tN95d1PlReuzW/WXBkexv99/wv5fvMOU1Tu9e3jr9f2AJjc7d1PvlbCse3ff9MgbDXe+Xiu/X2OKfdW2dCI3fsPmyK9XvX95kJ1C1RwYgcioVeTxnqSNuPra06DFcRXi77VGbqmrDLWoSFBOhs3IzNL1vywtcAlvtv0k6SmZehJ8loXYblQoLLacSab2ZxjsprNfkXX/n5NdRMZmTY/bvhLI9b+sE1PoKh31A+8N3zv03mabdz5RFOs1+Y9rrXQ2GEs+na9Lu6sbDkQXa74ZC/4Zp3e73tlEkXsOHvt8rz+jn3sf8UXer6a+NF6T6emZ8ibH83W48STf3g4I7bvOSSnzpzT2/iB9uZemZDSXsgNEiABEiABEiABEiCBWkfALTKaQRWiLjJ5d+7cKfA7hnCLMgi2WEM0RjkE33vvvVcaNWok27dvF1hhxMbGSlJSkhZ+IdhC7IUIjDYg3iKzGPs33nijro82UY52SwpcEx8UUB/Rrl07PXHhnj17tJiMa5m+QVBGXexDfMYbahxHG1hKCwji8JMGA/TN1YEeIDMVS+m9cfXVy9/eKJUd3KJRQbEeVhgI2FSYSfXgx2wm4jNXC1Hnwb8ZgTUm63MmYq5M4oe67b0Lvhadm17dj8+2PagYEewhy2NsHzhhkXHoiqiM82HxcTAlX2JVm1FqokLYeSCQBQ2LDXcOW09r1v3izjzZNxIggUoicOWfdvwNLi2OnTilxdYPv1qkJ8ZDfWSmQihDlnFd9Tf8+qG2TNLS2iruuKenhzw9/S5575N5AmH79397U3kOt9KT48XGJwomesN7hKCAZhKnMjxNIEsU7yGSU9O1j3K3TuESo4Q6ZPqi3FH4M+c5s8b5d08cJxj3e0r87tKhnco8bSbIOsUEhTg+ZsQgZ5oqdx1kSN835WaZ+cUCWbpqgxxQE9+1VWOOjjlrz2a+Z/IE9ZC+4N/8oi7obDazOdeVWc2eHraHywnK5gIBy4vhA3vLxp/2yEuvvKeFVg9VB37KEM+RKd6rq02MRn3YmCAz+d/vfCJhoSEyVb0uCNwPsLbAgwhE+zaheh0S1NzuawzLiratWupy/HD22mV9/Yvq4+B+PZRf9BaJORsnL/77PTWmDnocB45E6nsTGdmY/A8LJozcsmOfHmPvbp0EljJ4uIN7m0ECJEACJEACJEACJFC7CbiN0oU3wWFhYXLbbbdJUJBtZm6It0aoxRpZyZgIcNu2bdKkSRPp2rWrTJ06VSZPnqzFXWQS44MYPmyiPgRb7KMcWczwZoZADR9kZ8Rf86EVmcloC9fs27evNG/eXHs2Q7xG+2gL/Ud/sQ9hGmI39lFeUuBcnIMxwxoEftWVER5XRNacK17NlXGNymgT3sqjW3gWWEYpYRdhvmZc3HWtOcVOasyltmu1izbX91eisU8D2+uM7GlYaiCQUT22pc3SBfLH3CuTBuLYAEsWNPbdMcy9Yu4dd+wj+0QCJEACAVcyTLNzcuXEydMlAhk3arCEhgSqv9GX7dmW8MWFyIyM36kTx5Z4vrMHO7YLk7/9/hnpFN5GWwVAjFu38Sc5fPyEFrMfvOtW+f0vpxdorpESqB+7d7IWFROSUnR2dfTpWJl8843SLswmLjq+d3G0t3B8z2H+TuFCvbt3kl88fLceJ/qxftN2LTLD7mDGY/faLQ8KdMqyU6eYOQUgziMc+2aubdao01OJk88+fp8WX6OUwAwmENIhsP760Xvs2bCoW1IsW/NDSYcLHUNW8zZlSeFMODJ0PKfpFe9q45mM43dPGi8TbxqlX9sdew/Jxm27tcjcMTxMnn/6oQLi+a1jR+j3hsj23XvwWIHmIdYigpXVidUHuUO71rq8d/eOirPetP9w9tplef2L6iNe3z/9+hH9GiErHcL6TmW5kqfe844Y3FceuPNWe5/unXyzTLhxmL6XMeElJkpMVZNNwlrEOi77CdwgARIgARIgARIgARKoNQSuO5eYUmQKUFAz32oZ5Pnz52XmzJmycOFCSUtLs4u3eONvRN0xY8bIL3/5SwkMDNRWGitWrJDMzEw5cOCAHD9+XAvLxicZ2cUQiTGZ4B//+Edt0WHaQZuOH4wcB23EZpQjQzo6OlqeffZZnXnt6+trt98w7aBtI3SjfSzIqDaiM7KcsW36hzZ9fHy0WD5jxgy97dgHV+z/aUeynFMZuH/r11TgZeyukadSlJ/cdPUrps/39JXOvleziB37/diPifYs4b+rsbW4MjYIwk9svHrsXwP85KzKKn77kC2bJlhlO/+jv5/AJsOxbPmpbDHe0OEqo/nPva/+LixRntFL1XFER+W5/AflCY34MjJTvjubo7fND2Qzz+juI4/9mGD3kTbHXhnop7Oazb47rs8oXi+qSQ8NK3fsI/tEAu5AIC4p1aXdqK6/vy4dRBU2hr+7f3/jI4E9AcTQNqEt9N9YaxcwsdtdSkRuoN4PQHR8S2UwI5PXBETmGY/dowU+U+aqNRKt4xMSdaZqoMpa9fUu6IXseB3YQqA+3j80929WSFh0rF+e/RwlyieqTG5flWmKsVdHQKBMSEwRf5UR7DgRYXX0x1XXTFOCaoZ6cBGg3kdXtajq7LUr+vrjfS4e0OADBB5U1FPva4uLpORUuazqw3LEUSQv7hyWkwAJkAAJkAAJkAAJuC+B0j7/up3iCGuMW265RQu6W7Zs0aIx3tBCmMWCbOHDhw/Lvn375M4779ST9ME+o3379tK5c2fZvHmzFpZhpQGRGRnC+BA6atQogTCMMAKzEYedfflwHiwukBWNsIrQZhttmnZRBiEZGdToA8IIzBCccRzHBg0apIVm+D5XVgQ3qqeF5rNZl9xaaC7r+LsoK4v9yTZrk1f3p8kvuiqfZj0ZYKZdgIZFRaBnXS00O9M+Jv4zQnOksrtYGJ0lI1UWdYSyxfjmikUG2rF6LOO4o9Dcs1kDgU00hNrYKzYbOM9b9QfWGe4euFcQuHcYJEACJOCuBPC3+eFpk+T/s3cV4FFcXfT+BA0EtxAhwYK7FAkS3F2KF1po8dKWtlSoAS3FKbRAixQKFChaXIpbcQsSnCQEh+DW/523ecPsZjcr2U02cO/3zc7Mm6dnZndnztx37i+/L6CbgjxVQeVM+1tRTOeHPEVazzTUT3jPKrLZlSQz+gByDQHSVJA0036Z7oMsh0erKw3yHn5iSUwDCesrvMtfNYNMBJbEMFvbju/5x30uXprYYlkEEc3GCDACjAAjwAgwAowAI/D6IOB2DBJuXiFxARL55s2bdPToUc1DGGQtvIGvX79O27ZtkwStt7e3JJHxoHnixAkKCgqSWswLFiyQUheQo5g/f77UaFZSGqhDkcHWTjXyKRIZeVEWC9qzxVAe/UYdWINoRlkQzdgGOd6sWTO5trVPtrRrmicgXXLpvXtGEKcgUl8V61koPQ3YKaKYCw+wO09e0NADsT0Lewvy2R7LLkjpekLyYvVlg4cyyGU9wYy6cgs89UQzAgWmEfocSm4CecpkNeBcIksqQTQbvKCRXlbIgSQFw7UCw7XDxggwAoyAOyPg652dPh/wjtREhmezermr+pwlU0ahbftSmgpk8wAh4YCp/0VE0LXMwuOZjRFgBBgBRoARYAQYAUaAEWAEGAFGIH4IuCWDBEI4ODhYajI/evSITp8+LR8aFRELKYr9+/cTyOSOHTtKr+X79+9TsWLFJBoI2hcSEiLL5MmTRwbwAyGtCGZFHKv6bIUQ+UESq8WWcqoNRTajDNLQF/SzadOmUtYDpLMrLShGfgKB6V4l8xTkLmQoJgpJDHgf6y1zqmTUt0gGCvCyH9u2edNRDuHJO0dIYoDEVgZpxBChGd1eHDe1UoJQ3hH1SCaDdM4k2odBZ1rpNmMfwQOTgqlrRV07SaHP3EdGgBF4fRGA/EKZ4oVsBgBB3RDEjY0RYAQYAUaAEWAEGAFGgBFgBBgBRsA5CLidRrN+WFeuXJFazfBIPn/+vPQABkELb2AYZDEaN24spTZAKMMgRYHgfyCTEZAPAfxA7CqiF+VhOI50RQTLRDMfyKeIadQBDemPPvqI/vnnHymhoY6ZKSqTcBzEtMqn+pI7d27ptY1AhtCattYPS/Xbkz5w1w269fgFDRa6wvmFvvCrZkLemS7de0aPxEagIJdTQbfCCXZbeEqjXng6Q4LjdTDIhAw7eFuS5aPfsG167OuAC4+RETCHgDWNKnNl4kpjjea40OFjjAAjwAgwAowAI8AIMAKMACPACDACiYWAtedf+109E3Ak2bNnp4YNG0qSeOHChXThwgVJ2IK4BekbEREhZTEuXrxIlStXlsSzn58feXl5aSRyVFSUDCoIj2F/f39J+qIs6nCU3AVprIhjW+FAWyC+UQ4kMzyZoUWdUCQz+lkxe2paeekBbbny6JUkmsErO+K9bO0cZkyZjDJmTmkt2yt1HNcIDNcMGyPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjYA0BtyaaQQaDlAUhC5J28eLFkmxGOhYYdJxXr15Ne/fulVIUIJqzZMkiNZnh+YwlPDyc4PHcqVMnGRAQdany1gBSx/WktD0kM0htJdmB7YCAABn4r0mTJoS+6utVbblqjYB1IJq3CRKxrtAg9hW6wmyMgCkCl+8/k9cI0nHNsDECjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAtYQcHumEUQsyGYQs56envT3339TaGgoPX36VJLJIIxB4F66dEl6OEM6A/tp0qSR5DTKR0dHU40aNaRUBfbh3ay8km0helUetQaotpLNaAtkd+rUqalgwYJS6qNBgwbS+9rayXH2cUg/hORKQxsjHtKS8w+oj51B8pzdH67PPRHAtQHDtYJrho0RYAQYAUaAEWAEGAFGgBFgBBgBRoARYAQYAUaAEbCGgMEt2FquRD4OMjkwMFB6Anfp0oVKliwpiWSQzSBxQfpCizllypRyGx7LIJcRNPDBgwca4axIaQxHEc22DM0cqYw0EM9oC2ssKh/a0e+D9C5evLgMXAhN5ly5ctnSrEvyNMntSQhUt+/6Y9oUaZBHcElDXGmSRADXBK4NXCO4VtgYAUaAEWAEGAFGgBFgBBgBRoARYAQYAUaAEWAEGAFbEHB7j2Y1CBC3kMSoX7++XC9ZsoR27NghpTNAOIPcBdEL4hlSFfAkRplHjwxkKghheDrDFEmM43EZ8qkyyIttpKnyaBOGY0hT26ot9CNz5swUHBwsPbJLly6tBSeUmRPhI4PQG26XNx1NPxlNM09Fk4+nxyup15wI0Cb5JhEAENcEDNcIrhU2RoARYAQYAUaAEWAEGAFGgBFgBBgBRoARYAQYAUbAFgSSDNGMwYDQhXwGiFtvb28pqbFt2zY6ceKE9F5WBLAikFOkSCHTUVaRxCCBka73RMZxc6bIYxDGyA9TbaAO1AkvahDdMKSB6Aa5nTFjRqkZDWK8Tp060iMb9biDVc2Zmi5EP5MSGpOO36UPimdgvWZ3ODGJ2AfoMuNagEEyA9cIGyPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjYCsCSYpoVoMCYRsUFCQlKCBJgWCA8G6OiorSPJsfPnwoSWZoIz958kQjlhXhDFLYmikvaZDLWNAu0rAGoYw2UI/yaAYZDeLZ39+fKlWqRLVq1aIyZcpQ+vTpZR5r7SXk8U7509HtJy9ov5BJGHX4DvUqnJ49mxPyBLhRW/BkBsmM66F01lSEa4ONEWAEGAFGgBFgBBgBRoARYAQYAUaAEWAEGAFGgBGwB4EkSTSrAXp5eVH16tWpWLFitH37dlq+fDkdOXKE7t+/rxG7IIFBCiNIIEx5Kau18n5WderXipRGHrXAexnbKA8CGW2BzIZBJ7ps2bLSg7lcuXIy4J+7eDHrx6W2+4pggBOO3ZVk87CDt6lLAYGnN3uyKnxehzU0mZVcBkhmXBNsjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAoyAvQgkaaIZgwWRmz17dmrWrBnVqFFDEs4rVqyggwcPUmRkpPQ4hl4ztJJBEINwVh7J8E5GmiXDcZDNMJRRchs5c+aU+/BoRt05cuSgUqVKUc2aNalixYpSQxplk4KBWJx1+p6U0QDhePTmE2oW4MlSGknh5MWjj5DKWHL+gQz8h2ogl8GezPEAlIsyAowAI8AIMAKMACPACDACjAAjwAgwAowAI/CaI/C/yOu3DFHsTIDImSWjSYr774IUBnEMAjgsLIy2bt1KO3fulJ7GvXr1ooIFC2q6yrYSwcrzGaNH/ZDh2LNnDy1atIgePHggpTFAMhcqVEi2Y2u97obmliuPaN6Ze/TwmeFyqCI0eqHTmz+DdYkRdxsL98cyApDJwLneJhZYmuT/k4H/WJPZMmZ8hBGwhsCVG7etZbHreFL8/7VrgJyZEWAEGAFGgBFgBBgBRoARYAQYAUYgSSJg7fn3lSKa1RkCOYwFpLMih+HJDI9keCAjXRHIcXk0Iz/KowxMlUfa7du3KU2aNHJR7Sb19R2h0bvswgPp3azG4u3pQUUzpaS86VOQT1oPypzKQ5KTlv3AVUleJyYCeF2AlwY3Hz+n8PvP6czdp3T01hOKfGAIaom+wYu5SW5PypAyaXjfJyae3DYjEBcC1v5o4ypr7hgTzeZQ4TRGgBFgBBgBRoARYAQYAUaAEWAEGIHERsDa8+8rSTSbAx06zZC/UCQ0PI/jIpn1dehJabWN47aW19eVFLavPnxOm4V2786rj+jWY4N0SFLoN/fROgKZUiWjitlTUzWhxZ09jYf1ApyDEWAErCJg7Y/WagUmGZhoNgGEdxkBRoARYAQYAUaAEWAEGAFGgBFgBNwCAWvPv68N0ewWZyMJduKUkFo4efspnb/3THjDPqPbwuv5kfCUNau3kgTH96p2GR7nqYUsRkbhreztmZwC0iWnoIwpqABLobyqp5zHlYgIWPujtbdrTDTbixjnZwQYAUaAEWAEGAFGgBFgBBgBRoARSAgErD3/JvlggAkB4uvcBohJJidf5yuAx84IMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACFhHgMVZrWPEORgBRoARYAQYAUaAEWAEGAFGgBFgBBgBRoARYAQYAUaAEWAE4kCAPZrjAIcPMQKMACPACDACjID9CNy7d4/27NlDhw8fptDQUDp37hyFh4fTtWvXKDo6mh4/fiwrRaBeLy8vypYtG/n4+FBgYCAVKlSIihcvTuXLl6d06dLZ3ziXYAQYAUaAEWAEGAFGgBFgBBgBRoARSBQEmGhOFNi5UUaAEWAEGAFG4NVCYPv27bRq1Spav3497d6926bBPXr0iLCAgD5+/HisMhUqVKBatWpR/fr1qXLlyrGOu2vCvv376cVz24PppkiRgkqWLCEDFu/du8+uYZUoUZxSpkxJ4RERFBEeoZVF+v379yks7IyWZutG2bJl7Ap4/Oz5c7ocEUXnLobThcsRlNbTk/xy5SR/nxyUK2d2W5t1Wr7oe/cp4so1gUsKCvT3sVrvneh7dCXquuh3GvLNlcNqfnfN8J8IoHHrzl1Kny4tJU9uPuBv5NXrdPfuPcqWJRNlzpTBXYfC/WIEGAFGgBFgBBgBRoARSKIIcDDAJHriuNuMACPACDAC7oGAtWAI9vYyKQUDPHnyJM2aNYvmzZtHZ87YT2jag03evHmpXbt21KlTJwoKCrKnaILnDcxbgODVbatlzZqVQo8dplu3b1OBoMK2FpP59u/bQ36+vjTkq29o0s+/aGW3bN5IFy5cpE6du2pptm5EXL5AIL9tse17DtLcJavpxQsDsZ4sWTJtG+UD/HJR59aNKGf2rLZU55Q8/x48RtPnLaUMXulo+Gf9tDrPXLhMd+5GS/I5U4b0Wvrqf3bQsjWbZF8H9e6qpSeVjbNiXHMWr6YrgkRW58FLkM1N6lSjSuVKGL00GD15FoWdu0QNawXLJamMkfvJCDACjAAjwAgwAowAI+AeCFh7/mWPZvc4T9wLRoARYAQYAUYgySCwceNGmjhxIi1atCjB+gwie+jQoXJp0aIF9e7dm0JCQhKsfW7IGIF79x/QlNl/SdIylfCobtEwhPIF+lPObFnpufBwjoy6Rms376J9h4/TN6OnUIcWDahy+ZLGlSTw3uIVG+is8LpuLAjY+iFJx0M+LphA9P+xaKWWJU3qVPTw0WOCVzfSw85fpC5tmmjHeYMRYAQYAUaAEWAEGAFGgBFwJQJMNLsSXa6bEWAEGAFGgBF4hRCAPMbw4cNpxYoViToqENxYGjZsSJ9++qnbyWqkTp3aLo9mSDw4avAgtmQeHpaPWSpja/ovMxdI0rZgvkDq3r6ZlJ1A2SdPn5JHMg/y88kp06tXLktjJs+WpKe/r7eQ1HC9NEW+QD96q11TSpfW09bhJMl8Dx4+kt7k6Lyvdw7q072dlM1A+sz5y+hIaBjt3n+UKpQuRjhPbIwAI8AIMAKMACPACDACjICrEWCi2dUIc/2MACPACDACjEASR+DGjRs0ePBgmjJliluNBIQ3lh49etCwYcMoS5YsbtE/yGCYM8ga9Hi3Fy1duszo8OiRPxrtq52mTZvQr1NeymGodFvXtYW+9bWol7rNKPfDiJE0ctRorYq1a1ZSqZL2eRpv3rlPksz+gkzu9/absq4tu/bR5p37pSczyO/gCqWoXKmitHL9NipTvBBBzmLS9D+NpCy0TjiwAY9qS0QyZDHKlSziQK0vizx58lR6Bqf3SmskPfEyh/HWQ0HuwtKkSW18wIV7u/Yd1qQyBvToQJ4xbWPdo2Mr+mToOLr/4CEdP3k2TqIZeXBtQm6DjRFgBBgBRoARYAQYAUaAEYgPAkw0xwc9LssIMAKMACPACLziCMyePZsGDhwoA/a561BBgC9evJhGjx5NHTt2dNdu0qjRY2ORzEO/+4Zq1kw6EiCPnzyhBcvXSYy7vdlMBDAkmrdkFW3dfUCmQbrh2bPngnTeR7v2HSHkh+5xpAi2dzkyim7evkuZM6an3xcsp2OCAI3LalQqS/V0EheXwq9ID96LYg1iFJIdBfL6U70alY2C/oWePkcz/lxGObJlpoE9O9HshSvoyIkwKSeB9las30qbduylvLl9qUenlkZdOHz8FC38ez1dv3lbpoM0LxKUR+hMN9a8tlUBeA7PE/rUaA9kLQwBBRvUrELPRf/WCemQEoULUPsW9VURp65VHwsXyKuRzKoBeLNDH/vYyTMULgIjmhrwW71xO63bsksS6jieInlyqhlcnhrVrkbJkv3PtAjvMwKMACPACDACjAAjwAi4GAHcW6/dvFME1c5JhfLbPyPt6bNntHHbHsrj70v58/i7uLfmq2ei2TwunMoIMAKMACPACLz2CPTs2dPtvJgtnZRr167JQIFbt26lyZMnW8qWaOmLlyylET+ONGq/c6eO1OOdt43S3H3nwqVISfKWL1WEsmfNTHsOHNVI5p6dWlGJIgXo0eMn9PXIX+hO9D1JXub2zSVvdEE0n71wSRDNRejGrTsa8WtpzCivzFSLGKQoSGzIQ4Cwfl949OYN8JPZ4e0MjeJk/zOQpTduG7cFkhXHo67fVNXLNQjsX35fKLdVUEPkRRtjpvxBnw94ea6uirI/TpqpEcwohDIgnEHEq/Ig1l1l6UWwQ0iRFC5g/iHk2o1bsumsmTPE6sKaTTs1b2jVVzyYIDDis+cvqEWDpPPyI9bgOIERYAQYAUaAEWAEGIEkikDUteu0dPU/ckYdHB0qlC5q80hwLzdZ3MseP3VWxE7xkw4XNhd2YkYmmp0IJlfFCDACjAAjwAi8CgicPHmSunTpQrt3705yw4F386FDh2jmzJkUFBTkFv3ff+AA9ej5nlFfKleuJPSuhxqlme5AYuPgwUOmydr+1199SQ0buMZbVmvEZOPshcsyJY/wBn7x4j/6SwTYg7VrVleSzNhOnSolVSxXQnrMFi+cX9woE/l4Z8chirpmIHd7dGwpPZ9lYszHf8KFY8yU2QSCFJ7BjWpXlUduClJaBbyrVLYEtW5SW3ozIx0BCUEQgwge882HktjW14ntt9s3l21NmDaPIq5cpVrBFYTnbgUy1bAGqQyP7Pe6tJE35yCsl6/bQlt37Zfl4FEN7WkY+qO8mKFRXbJIQekFfOb8JfpZ6FcjIJ+rrV6NSsKbu5LZZuBlDTIchiCNpoaxwlMG5yFzpgzivNyQXuAXLkdKLxgmmk0R431GgBFgBBgBRoARYARcj0DO7FmpvJCfgzMHZgDCbCGbQTL/MnOhmGl3lpIn9xCBr6u4vrMWWnBdlBgLDXIyI8AIMAKMACPACLgvAhs3bqTg4OAkSTIrVEGQYwwYS2JbeEQEdejYxagbuXPnpum/TaWUKawHAbxw4QJZWuDFndB27lK4bNLfx5suRVyRnsEghauUL23UlVsxnrwlixaU6WrfJ6eBcEaZDOnTGS2QcQDJDA/b93t21KQq/lppILMhBdGxVUNJMqNSEKTIB3IYxCl0oM2Zait1TNBF6CijbXMaz73faitJZtSD43rCNer6DVl9eORVOn32otzu2LKh0KAuLEnr/wlGHaTuR0IqxBHDGFYJOYs/l66x6u0dV/2nzl6giUIPG5YtSyYqW6JwrOzwCB/Qo6PEEAdzZMtCTetVl/nQD5DsbIwAI8AIMAKMACPACDACCY9AlzaNJdkMJwyQzbv3H4mzE6Yk87udWzskuxFnI3YcZKLZDrA4KyPACDACjAAj8CojsHTpUqqFAHKJQGA6G1eMAWPBmBLLHjx4QO07dKbr169rXUiXLh3N/WMWZcqUSUtLShsgbWHPhNdEuPAOhkE/Tq/pC6ISWsewogXzyjW0gmEB/rnk2vQDes7/bP9XJvfo2IJy5cimZTl73uBFXSBPboq8et1ogTQFvKth8PyIj2Fsqi5VD3SgvWP6cu++QYdZke0gxMubmc6YU5C2mK5orx0+fpqWr90s9a3/Fp7U9tpzIXmxZNU/NFZ4d+McILhf/3c6mA1mWFxoR8PzXG/AV9m9GM1ptc9rRoARYAQYAUaAEWAEGIGEQQDOC8Zk898y9om51p8+hSfzAs2TGSRz4QJ5zGVNsDSWzkgwqLkhRoARYAQYAUbAfREAIdusWTP37aADPYMXAMa0ZMkSatq0qQM1OF4ERF+v3n3p+PHjRpXMmP4b5c+fzyjN0k7dOnXoxxHfWzpM6dN7WTzmqgOB/j7yRvf8pQh6Im5szRkCAUI6Irevt/Q+hlwF8ucS3swZzfT57MVwbWog5DJAgioDeaq0mhEYBYslu30n2tIhm9KzCA9pW0zJfyB/cg8Ps0Xg8R127pLZY5YS06RJpR0CSWyPAV/IiCgMgvIFUHcRrNGc1zbqzZbV3IsOg6a1Pe1yXkaAEWAEGAFGgBFgBBgB5yOgyGbUDGeKWQv/Flv/0RtlimuNgWSGZNuJsHNSLsMdSGZ0LtGI5is3DNG8NYR4gxFgBBgBRoARcAECObNkdEGtr1aVkJho3rz5qzUo3WgwtvXr11NISIgu1bWbw78fQStWrjJq5Pvhw6ha1WCjtLh2UguJB29vgyZwXPkS8liACOwHCz19nioJHWbYoWOnZHA/EK8Hj56UwfCQXqxQfnry5ClNmjEfu0IrOfaLDBCj44QHLgx6zg1qGuvJ4WWBMkhkxEXAeufIqrI6tIaHsi2Glwiw5EJ+wpJ52FiXvnxQ3gDq9/abdOfuPSpXsoj+UJzbIN/hyQyDB3b7FvWtlnekf3F2gg8yAowAI8AIMAKMACPACDgVgdhk8wpZP8hmdyWZ0UHLd8hOhYcrYwQYAUaAEWAEGAF3RACB/9q1a0d6Qs8d+xmfPmFsGOPWrVsTJEDggoV/0dhx4426/Hb3t6h7t65GaUlxB0H9QPYi0Ei1iqWlPjK8l7/4YaIkOR8/eSI1lkHGQgoDC4LmdW3XhBDcRG9Pnj6Vwf+gKwct4e4iaJ+pIZgJJC1Qx5vN65vVGzYt4+r9nNmzyCauCz1pXFt4CDA1SHw4YgXzBdpVbLXQdF4m5DZg0Iru0LJBLEkMuyrkzIwAI8AIMAKMACPACDACboOAObIZswoPHD1BJ8POu5UnswIt0Yhm9jBTp4DXjAAjwAgwAoxA4iHQpUuXV0KT2RqC0GzGWHft2mUta7yO7923T0pm6CuBLnOrVi3pyBHLGsJBBYP0ReR2ZGRknGWQqUCB/JQq1UvJhViVODkBXr/QUB71yyyaOX859e7WjuYsWkWQxwC5HFyhlIxyPXzCNEkO58/jLwjQQrRy/Tbae/A49eraRuvR1NmLZPA/eOEO7NmJEKDOnPnlyimnBO7ce9gs0Tzu1zkyOF/VN0pTmyZ1zFXh1DTIYsBAkO87HBqrTwikd/REmFPbNFcZAicqkhmSI6be4ObKcBojwAgwAowAI8AIMAKMQNJCwJRsnrdktRwAHDLcRS5Dj6j5O3p9Dt5mBBgBRoARYAQYgVcSgZ49e9Lu3btfybGZGxTGijFPnjzZ3GGnpP3116JY9dy7d4/q1W8UK12fcPDAXvL09NQn0Z49/1JIrbiJ03lzZlPNmgknCYIO5g3wo6oVy9AWocU8cdo86tmplQyi5yH0ipVz7w+f9xfevkQ79h6kP/5aKccFzWBly9ZsIhUgEHIRGdKnU4dirRvXqSqJZnhRg1htLEhV3HC/ePEf7dx7SHpzoFCRIEPgwVgVxCR4iJtx2PWbt2JSHFtBexrLhcuRNGvB35Qpg5fEBLWBZB4tSPiEMAQOhPnlysEkc0IAzm0wAowAI8AIMAKMACOQSAiYks3uSjIDHiaaE+ki4WYZAUaAEWAEGIHERGD27Nk0ZcqUxOxCorSNMQcHB1PHjh0Tpf1XpdG2wnM4c8b0Uht47NQ/JMmLAHSBfrnowcNHghg+T6GnztKVazekpMa7XVqRn49Bb/rWnbu0+p8dGhTwjjZnXmk9afhn/QgBCN8oU0wGIYRUxNpNOylHtiwUJepWesmF8ucREbbjJpqzZc4kPZ/hGY0lQPR1UO+u5pq2mtaxZUMaMXGG9GpG/yEnkjpVSumhbbWwkzKcPntR1nQpIor6DLYcNDKkSnlq0SBhX0Y4aYhcDSPACDACjAAjwAgwAoxADAKKbC4o7rl9RJBtdW/tbgAx0exuZ4T7wwgwAowAI8AIuBiBGzdu0MCBA13civtWj7HXr1+fsmQxaO06s6ceHo7dWnkkM3jbOrMvrqwLN7p1qlWkkkWC6I9FK4Vm8znNQ1m1CymMasLzGZIO+iB+/wlPZL0pslifhm1oOCvr3Lqx9JpevHIjQRM6MuqaPAQpjxqVylKTetU1b2pVxsMjmdqU6/ohlencpQit7GMRqFBv8AwxZ+YC50Gr+quP3iXIf5wXdUbfuy8XlId8CORM1m9xnUzLs2fP6U70Pa27ljBEBnPHzI1JeaNrlfIGI8AIMAKMACPACDACjIBbIYB7cAQDdGf7X+T1W8Z3+zG9ZQ1ldz5t3DdGgBFgBBgBd0Hgyo3bTu1KQvz/Qj7idfRm1p+oHj16uFRCQ9/W67J989YdKScBgjdr5ozC6zgrmZK9zsACHtMItgeP5yyZMrqkDXv6CSI3/Mo1oTHtIT2t8QAAQnydIJrhZd2nW1t7quO8jAAjwAgwAowAI8AIMAKMgNsiYO351zG3G7cdLneMEWAEGAFGgBFgBOJCYPv27a89yQx8QLR37tyZKleuHBdcfMwOBDJnykBYXG2eaVJT3ty+rm7G5vrhVQ2dZDZGgBFgBBgBRoARYAQYAUbgdUfAeE7h644Gj58RYAQYAUaAEXjFERg+fPgrPkLbh8dY2I4V52QEGAFGgBFgBBgBRoARYAQYAUbAGgJMNFtDiI8zAowAI8AIMAKvCAIbN26kFStWJPpoIC2AJbENWAATNkaAEWAEGAFGgBFgBBgBRoARYAQYgfgjwNIZ8ceQa2AEGAFGgBFgBJIEAhMnTnSLfnp4GIKuPXv2LNH7A0xCQkISvR/cgVcLgbIlClOG9OkoV85sr9bAeDSMACPACDACjAAjwAgwAoxAHAhwMMA4wOFDjAAjwAgwAoyANQSsBUOwVt70uKuCAZ48eZIKFixo2lyC76dMmZIKFChAT58+pdOnTxMCqSW2nThxgoKCghK7G9w+I8AIMAKMACPACDACjAAjwAgwAm6NgLXnX5bOcOvTx51jBBgBRoARYAScg8CsWbOcU5GDtSBgGuQy8uTJQwMHDqT33nuPsmfPLtMSW0YjsbFxEFIuxggwAowAI8AIMAKMACPACDACjIBbIcBEs1udDu4MI8AIMAKMACPgGgTmzZvnmoptqFURyZDMqF27tpSqgFyFkqxQx22oyiVZEhMblwyIK2UEGAFGgBFgBBgBRoARYAQYAUYgERBgojkRQOcmGQFGgBFgBBiBhERg+/btdObMmYRs0qgtEMn//fcflSpViurWrUs+Pj5SxqNBgwYUGBgojyUm2QxsgBEbI8AIMAKMACPACDACjAAjwAgwAoyA4wgw0ew4dlySEWAEGAFGgBFIEgisWrUq0fqpCOTUqVNT48aNqXz58lIuA1IalSpVokaNGsn9ROtgTMOJiVFij53bZwQYAUaAEWAEGAFGgBFgBBgBRsAZCDDR7AwUuQ5GgBFgBBgBRsCNEVi/fn2i9g7ezMHBwVS9enXKlCmTpsvs6+tLderUoZIlS8r+gXxOLEtsjBJr3NwuI8AIMAKMACPACDACjAAjwAgwAs5CIPGe6Jw1Aq6HEWAEGAFGgBFgBCwicO/ePdq9e7fF4648oLyZQS43a9aMihcvTiooINqFZnOZMmWoaZOmlCplKtkVVcaV/TJXNzACVmyMACPACDACjAAjwAgwAowAI8AIMAKOIcBEs2O4cSlGgBFgBBgBRiBJILBnz55E66cijeG1XLFiRUqXLp3WF3UsS5YsVL1GdapcuXKiazUnJlYaMLzBCDACjAAjwAgwAowAI8AIMAKMQBJFgInmJHriuNuMACPACDACjIAtCBw+fNiWbE7PA89lSGZAHqNp06aUP39+TTJDNQayOXny5FS0aFFq3qI5ZciQIVHJ5sTCSuHBa0aAEWAEGAFGgBFgBBgBRoARYASSMgJMNCfls8d9ZwQYAUaAEWAErCAQGhpqJYfzDytvZdSMAIDlypUjBAO0ZOnTp5cezbVq1ZJZ9OUtlXFFemJg5YpxcJ2MACPACDACjAAjwAgwAowAI8AIJAYCyROjUW6TEWAEGAFGgBFgBBIGgXPnziVMQ7pWQBTDm7lgwYLUqFEj8vHxieXNrMsudZvz5MkjdZx37NhBkZGRMu3Fixf6bC7fdhZWN27coLNnDbiXK1fW5f12pwbOnTtP169fJz8/P8qZM4c7dY37wgjYjEBERCSFh4fL4KX58uW1uZyjGW/dvk1hp8PI09OTihQpbLUa9RuTIWMGKiBmizjD8Ju9Xfz+Hj8eShcvXqJUqVLK73EpEay1RInizmjCbB1od+/effJYqVIl5SwXsxnjmXji5EmKvhtNAQG5KVu2bA7V9uTJEzp0yDBLqGDBIPLy8jKqxx4ML1wm8v0rAABAAElEQVS4QFevXpPlMeMnoziXlmzvvn3034v/KGvWrBQYGGApG9l7HVmsyMIB1edkHsmoTOnSFnIZkvcfOEDPnz0nfH8Qp8Fd7eLFixQVdZVy5MhO/v7+7tpN7hcjwAgwAkkKAfZoTlKnizvLCDACjAAjwAjYhwDIkoQ05Y2cIkUKatWqlSAoSlDKlCnj7AIeztOkSSM9n+vVqxcnKR1nRfE86CysNm/ZSg0aNZELxvY62XfDhstx//33iiQ77EuXLtGGDRsJxFRSt4QYC673jRv/IZBwrrSEGIvq/8K/FsnreNz4CSrJpes9e/6V7fXq08+oHUvYLlv+t8z/3XfDjPI7uvPvv3spuGoNIWHUmj77/EuaPGUqjZ8wkT4a9AnVqlOP2rXvSJfN/JccPnxEfleioqIcbZpu37kjx4LfzHv37jtcj7WCQ4Z8LdvBd9tRuyZeoqnf9tDQE0bV2IshyE1V18APPjSqS7+zaPESqt+gscy7a1fcgX0tXUf6+uKzPWr0WNmPevUbkbXf+Jat2sq8O3buik+TdpWNjo6W16M1nPSV/jZthuzn9Bm/65N5mxFgBBgBRiAeCDDRHA/wuCgjwAgwAowAI+DuCFy7ZvCYSqh+Km/mMmXKEEhjeGAhTb+ovoCEhdfy8+fP5ZIjRw6p5wzvZqRD5zkhLaGxSsixcVu2I7B23QZJrI0YMdL2Qm6aMyHG0qp1W2r7ZgcKCzvjUhQSYiwuHYADlScEtvBgbtOuPZ08dUoGbH27+1v07Tdf0Zvt2moBXEHOdunajR4+fGg0itFjxsrvyt8rVhmlv247jmBYvnw56tunl4RquXgxt2r1mliwgcD/4MNBMr127VrUrl2bWHkSK+Gjjz+VHtSJ1b65duGJj5cijZs2N3eY0xgBRoARYAQSCAGWzkggoLkZRoARYAQYAUYgMRCAh09CmfJmTps2LbVt25aCgoK0adCKgFZ9AZFsSjSDWC5WrJjUdZ4wYYIkm03LqfKuWCckVq7oP9fJCDACSROBkkKaYvasmZRRBERNaBs9dpzwJL5HuXPnptUrl8uXg6oPY0aPJHh39+nbn+C9PGfun9S9W1d1mNcxCDiK4aCPPqSVq1bTmTNnaeAHH1GlihVFUNz0Gq7wKMe5SZcuHY0e+aN8YasdNLORkNcRJJLgJT5+3BgzPUk6Se3atqZKlSpSnsDApNNp7ikjwAgwAm6OQMK6CiUCGPeevKCI6Kd08voj2h/5wCkL6kKdqJuNEWAEGAFGgBFwZwQeP36cYN1TpHCVKlWoZs2ahCB/ypSEhCKXlSfzs2fPNI9mbOOBun79+lS4cGFJRCvyWtXjynVCYmVtHHfv3pW4WMuH4/AIv3nzpiQkbMmv8oBYx3kwZ0gHkWDpuLkyltIwFmiH2moPHjwgdzoXcfXbmX1FXU+ePo2ruVjH7LlOYhW2IQEk1+3bd+R30YbscWbB+HCdPrVjjLj+HHkBZC8uGCeWxDLM5qhbpzZVqFDe4S48evTI7u8sfo+VlAQIZMxA0ZuHhwe1bdOaGjaoL5N37ko4GQR9P7Bt7znFb05C/I7EB0MEyf150k9yqPi9HTb8e23YkMxQXs6jR/1ok+a9rddRfH/f8T8NmzvvT9q0abPWZ3s38J/vyPfb3nbiyl+oUCH53cufP5/ZbJAEwu8W/mfZGAFGgBFgBGxD4JUkmq/ce0qLQ2/Tp+suU/9VF+mLjeE0YvsVmrjnqlMW1IU6UTfaQFtok40RYAQYAUaAEXhdEVAkc+bMmaljx47SOw4khZ4oViQzHtjwgKknmVUa8uTNm5eaN28uglGleq3gBKEHD7ay5StS3vwFKV+BQtSt+zvS480cEAsW/kV16jagnLn8KKhQUQrMW0Aun38xxGiKOzwRqwRXp779BkjieNz4n2S5PPmC6I7QR4XWJo6PGzeBjh07Tp27vCXbL1SkuFwPGPiBJHnM9cFS2rPnz2ja9BnaWAoEFSbUN+nnX8w+sONBfpCYiv1GpSqUOzAf+foHUrUatejb74YajWXZsuWyrxg3rh+9/TFnrjyGcqZT/KEhjDG279hZX8Roe7nQvUWekaNGy3RMZ8d+zdp1jQh3W/tqVLmFnfv379M3334n28C4fXxzU+s27ejAwYPyWkD7OH96s+U6sXUs+nrVNgi974YOk+cL11T+oEKUPacPdezUlRCUTBmmp6N/yt7s0FHuzxVer8qgq/zp4M/kdYnx4TrNJcaIstAf1huuM9SHNnAd9urdV15/7/bqI9OtnRdbcNG3B4Jr8OdfyGtOfXdw/c0T5Bl+h2wxZ12Pu3fvkWPs/k5P2awt2Kr+AUdo+PrlziPPGX47bP3O4jukCHbgZ8k6dHhTyBo1oUARSA+G7yXO1YqVBskMXC/Yx++X+q7he4igheZMnevpM2aaO6yl2XtOw8LOEDDEbw1+c/A70qxFK4J+sqvMUQxVfxBs8cMPBspd/GZCZ1kvmdGkSWNq3qypyh7n2vQ6QmZX/L63btVSkLN1ZF/6vz9Qu4bi7JzuILy4cV68ffwJ/0O4Vr7+5ju6deuWlgv/b7imsKiXIeogiPLeQs8cx7q+1Z0QpBDbXcS2MlUWsiZx2cRJP8uy+G9ShvpnzPxd/jb4+AXI3y38z+K/AP1iYwQYAUaAEYgbgVdKOuPo1Ye0Ouwu7b7sukASpnDeffyEwm7dpDlHblIF37RUL196Kpo9jWk2t9kPPXGC7kVb9tjAdOds2bJqmppu03GTjqio9khGnwsXLmSSI2nv4vkm6tp1OncxQizh8gHXzycn+ebKQQG+uchDRHs2Z+cvRQjvjSeU28+bUicBggbjPHXmvBxKvkB/i+MyN1ZOYwQYAdsQAFkLTzdXGwhlPJzVEQ+fwcHB5OnpGYtkBpmMPFji2kbwQHhEr1mzhnbv3i3rsZX4ic84E5PYDg0NpRYieBK82mDwLMQ2yE4sY8eMog7t39SGB23U4d+P0PZz5fIWZHC0fOBHIK8rQtvz1ymGB2eQrtBfzZAxA40R0+S//+FHrRw2EOAKx1evWUtjRfAzEE/KYw3bf/wxl8Ivh9OC+fOMysW184PQN1YEFurCNsYz5KtvhEfrM+rfr49W/ODBQ/Rmh07a2FX+48ePE5Y1a9bR3DmzyM/Pj4oXLyb7isKHjxyh0qVKafWsWrVGOwayMlh41itbs3adPBaXxygCkQEHval9df3Z01d9Pea2r169KsdtSiRv2rxFkK37Cd6OwAzEtjJbrxNbxqLq1K/hUd22XQeNUMZ1mDJlCoqIiKQ1a9fKZcO6NfI8gNRT1yvqQB6iSIq6GiWrjIy8QnXqNTTKA3kGkEII1gX94Y3r1wq5nKIy/8ULlyT+kBH46utvtXJPn4iZiVbOi624yIbEBwjw1m3flJIFKg3XHdru2/997fpXxyytnXU9IiAexuiR3PBoZg1b1Z+t27ZrXq/qe2PPdxZBWytXrkTbt+8g/KbgdwTazKYBXGvXqkVYlIWHRxidE7SJ/mfPnp2gPazO198rVlKXzp1UMbkG+YzfFFgJIRliyew9pyDccU0pU3hgbAi6h31XmKMY6vvy/oB+8oUifu/6DXifcvv7a7/DP/4wXJ81zm3T6wiZXfH7jv/7H0d8T9t37JDf+2Hf/0DDvvs2zr6pg198+RX9MnmK2pXnRf3Wb/xnEy3+az7hhXUz8WIDZC+I9z7iJemObZspU6ZMstz06TNp/oKFcnvs2FHifuKFds2pitU1iBdKcdnVq9dk2WvXrmvZvhVBNn+aOEnu47rJkiWL/N3CbzVegGF2hul1rRXmDUaAEWAEGAEyz1YlMWBOCCmL77deoa83RSYoyWwKEwhu9AF9QZ/c0d59r4+82VJRjk3X1WrUpMJFS1DFysH05/wF7jgE2Se8dVZ9H/D+By7rJx6g8BZdLQkxBe/shcv0ydBx9M3oKTRr4d+0bc8B2rH3EP25dA2N+vl3Gjx8Ah09EWZ2zBN+m0vjfp1Dp89dMnvc3RLvCU8u9BfLQxcRYWcEnvuPhNKtO3fdbfjcH0YgQRDw8vJyeTvKmzlXrlzUuXNn8cIym0Yyg6ADsWzqvQyiGYuldG9vb2rVqpV8CEX9WFxtCYGVuTEAh/4DPpDEWkgN4cF6cD+FHjtMF8+foQH9+8ki+K87cuSo3L4jfs8Uyfz54E9l3kMH9tHpk8fp40EfyjxLly6LJcOAB3aQzCD7oL3697IlpB8zyFk8UK9bs4rOnTkl6gulDwa+L+sD+Xni5Em5bcsHiCcErzpy6ICsa9+/uzQPuLHjxmtV4PxD/xX/tyC5li1ZRGfDTlJk+EWaPu1Xef5BGHw6+AtZJiAgQMqqYGeLziMW9YAIVbZz5261KderxUsLWIP69eTa3Efr1i0llgpD9B/nAQu88+3tq7k29GkgU0FcgMhYuOBPuhJxSY7795nTNWJen9+e68TaWPT16rcPHjiokcxLFi/Urq29e3ZSUIECMuvM32fJ9a4d2+RxVX6RIIiAVY933pZJv02bJs9r3rx5aP3a1XJsqGfPrh3yXCPTP2am3avrAUHpgMWokSNkvZbOiz24qL5+/e1QjWSe88fvsm9nTp+gtWtWyu8Hrl9bzFXXozVsVd/QT3yf4/Od/fADw3ccdX740ccED054ieKFFX4TcN2b2ghBfuJcV69WVR5Sv0PTfpsqr+dub3WV6YoM1JdXchC4nvQvivR57D2nuD9/973esgpcb1s2b5S/I5cvnqOpMS/cbD2n+n7Yuu0Ihvq6QexP+snwu4iXHSBcYZDVAOnqDHPm7zv64+2dk7779mvZtalTf7PJa3ztunUayYyx4TcP/zVrVq+Q1zEIZ2hVw0Dg//LzRHk94f8BwQdheAHxiZglAfvm6yFUVgQezpMnkE4cP0IL/jS8wMAx9dtduvTLl5FIt2a4lhTJ/Plng+X/Kn638PvQpnUrWRwvZdgYAUaAEWAELCOQpInm6CfPacq+60LGIoL2Cf1ldzH0BX1C39DHpGi4ycGNvrkbxKQ4Hkf7fOjQYRm9GBGMsdy8+XJKl6N1Wir34sV/NH/ZWhopyORo4VVVL6QyfdirC40f+jFNHP4pffXhu9SwVjDdf/CQJs2YT9PnLbVUFafrEFi8YgP9+sdi2rXPeOqxLgtvMgKvNAIgfV1tCOKHpUWLFlSuXDnpDafIZ+W9DOJALSAu1LZaI02lK2KjcuXKQrO0QoJpNScEVubOxQrh9QepBHiP/vbrFPkAj3xp0qShzwZ/Qi1bNJfF5sw1PEQfOHBA7iN///59NV3V5MIbskP79vIYPuAxa2qYpr35n/XUsUN7qQeLMnqbLoiikiVLyKSMwgNa73l88eJFfdY4t9E3eFTnzJlD5vMXHnqqLhA+apr+MiFXoTzPZv8+kypWfEO+VEC/GjVsQBPGGx7oQSKDKIG1iJlGvm79BrmPDzU9GiQT7J8YogbbYWFnYrxtiapUqYwks4Y20e9MmQzEDmYGYR8LzJG+mm1IJF66fFmbgj1l8iSqVjVYktnoQ/16dWnkjz/EKmrPdWJtLLEqj0m4HB6uHSpSuIi2DTITpNIbb1QgaJbCELRMYYP9LJmzyH3MZoBt375Trgf06ys9V9EnWGBggPbSAd7N5uy3qZNp+LChEgs/P19Zr6XzYg8uaAvXA17EwNAOPHXRN/yG4fvx1wLbPfdRhyuuR2vYol1l8f3OVhG/s6tEEEC85FIGSQxI8ECSI7+QoAD5h9mEyqC/j3OPWYWwdOKFJvbxmwFTsy/wcuv8+fMyTX0guCCsaxfLMjb2nlPUqbzr/1o4nwoVLCh/RzBLBZ6xSgdZ9cHZa0cwNO1DkSKFCS9XlOF81KtrkKdQafFdx/daMW2//ZvttJkjffsPsDp7avBnX8oqhg/9jlq1bCF/85CAFw6zfp8uj+Haw2wImJ+vr/YfgO8sZHne6fGePAbpjp493pHb+MBLUv1/OK5HLCCs7TF4gCsrIWbQqN8tXPNffvGZ/A3E/5n6D1N5ec0IMAKMACPwEoEkSzRvuXCPBqy6TOvO3H05GjfbQt/QR/TVXa1mzRAxPdmwYKqbqcGbgS1hEFj9z3batGOviDjuRZ8PeJua1KlGefx9KNn/kkmvtOxZM0ui+btPelPmjOnp34PHZP6E6R23wggwAkkVAR8fH5d2HeQMyGR49sGbWXnIwpNZTyKrbf1aEcv6NLWNYxkyZJBezRkzZkwQstnVWFk6EZBJgFUUJB6m74LQ0S8g92Dz/jTMNKoqSMmIyxeEt7ChHI6B/APZ+v2IH7Fr0QZ/+rFGDplmAklbrFhRo2SQ3UqCwp4H6+bNmkj5FH1lpUqV1Hbv3DEEB1TkMbyHTdtGZgQhA8kJO3TwsFzXrWcgX0BiqT5hG/beuz0luYB61ZTpbdu3y2Mg7OMjj+JIX2XDZj727jWQ5iBCaoaExMoBEsbU7L1OTMvbsl9FyCgoq1YjhKZM/VV6suN7Wb16NVq+dLFG/Kh8ltbLly2W12nbtm20LNCehX405GAsGTwUoUtrq9mLy5GjR2XV8CSvb8bDHdebPe0n1vWIQTjrOwvM/5w3h/bv20M/TRhH7YVMj/re4cXQrNl/UPk3KmmazNbODSRFsMCWLl2uZb9yJUrKdCChmfiNsGT2nlNI2sDwe+EjZtaYWlNxPeF8u9LiiyF+y5bosIJX89mz55zWZWddK/oO4YXy6FEGCSc4KY0ZO15/2Ggb+svqxRIkU/T/cdhOnSq1vJ5RaN369VpZvHBUBDxkRfBiEr+bE8aPkS+HtIxO2vAV90xq9gbkdYYO+156a8PTGcEW8RuIRb1UcVKzXA0jwAgwAq8UAsZuLElkaPAUdmeCWQ/j3cfPacLuq1JKo0cZg0eM/nhibuOGa96c2UZdgPcTAjIorwBM6UR08LjeBuPhFm9/cwhdNvXWV1UqI2ALLbYUwlMERIGtD3i4EcXDLTw6XGW4Ybh167bmbRWfdkCoYCpzdPRdOU5FtNhaZ8SVq/T3ui0Sp8/6v01pPdPQ6bMXafm6zXT2gkGjOcAvF73buTXNWrCCCuYLpF37j0gP6OKF8lPmTAYPEnPtPRLjxJRfnANbDeN5+OgxeaZJbVQEXtf37j8QdXmI82N8zCijbgce2ClSJKeUdnoU6KqwuAly65HQpDbtp8UCFg5gXNFCxgP12IOTheo42cUIPBUE5BOh8ZrWyjWI6zj6/kPySpsmQWQXXDxsh6sPDAx0uKwtBfGgid8YBAAsXLiwfPAD9sqT2dxan4ZttYDMMt0uXbo0VatWTZAVS+V5RN2uMldjZanfJ2MkKZQes6V8IHwQPA5ehMAK+RF469+9ezUZAEtlVbq5l8rqWJ48Bm9gtR+fNfSUTc2c/MkZ4V0KK2Ih1gLKFBfkNwiKsDMG2aiCQUGSkACxsXPXLun1qshkkPK1a9WkuSKg2z5B4IMcBUYwEBbxMUf6aqm9ixcuykNBQQXMkiU4xyBT1P0YMjtynVhq31I6NHahvYqgbtBc/uxzgwci7hlDQmpQe6Hfi7W5c2laJ+4JQSAheNaOnTsJs8RskS/AixR7zF5cFNmF+B6W7m9xPSLQny2WWNcj+ubM7yzqgwdp2zat5YJ9YAXyE8H+YJDUOLD/XwIZZ80gnwHJn7l//ilnXiC/Ch4IIh/XtyWz95zitwCG/yBzhvMMchN6za42RzH84ssh2vcd3zd8VxDwDi9sTJ+vHBmDs68V1Qe8ZB763TfytwKSEvidLSZ+s00tLOa3HumQP4zLTGfjDPnyC6lhbdCBJ4JutdJrjqseR49Brqdrt7fl+YDUk5J7wktXvCCBhAY09NkYAUaAEWAEzCNgO/NkvnyCpkZEP5Wk7ekbjxK0XWc0tjbsDp279Zj6VshOubzsm8LjjPZtrQMPGLgRU9F9cROobm4QJOg7ERwBhpuKiUJLbMjXX2sBPaAviKmfCJAAra5Zf8zR3lyr9vGA21No95nzFEFEaEQU3yPW6kEEN1qdOnaQHkrQArNmIL37iSAuR48e07J+/72IjC2mBcLgITf1198IU+xAosMwxkqVKhKmdqobI3iF9ej5npCwiJZ51Efzlq0ouUdyqYHZuHEjwhTT0aPH0uIlS7U+qzo7igjdffv0Jky1smYz5xseZto1qydJ5j0Hj9KMectkMXgLgnhGoL8hP/5Mj8UYGwtv55pVytO6LbvoRNh5qlTOMM1ZtYOXA7MXrqBDx09JqQ2kZ82ckcqXKiq8oquKB0SVU+i/zZwv6o6k7m82k4Tw8rVb6NTZC1SuZGHq0sZwI7h55z5at3kn3bx9VyuIfpUpXojat6hPqYS2nN5u3LxNc5esEYEML0vCGseQp0r5klISBOOxZkdCT9OcRavohSCVShQuINtRZXYLkn3NPzvoyrUbMimDVzoqVEBEFq8fQunTGaZxYvxHhJY1ZEhgK9ZvlR7geXP7Uo9OLWXaoWOnaNnazRQZdU3u4wP9BJ7N6tdg0llDxb02rt28Q1E3bpO/d3bKktHLbOdARl6IuEq37t6j/Ll9KJ3n6/tAUKhQIbMYOSMRZBOwDhLEX9euXeXLREUyK8IYa0Ugq7U6pvbVWp+ONCwgCFq2bEnbtm0jBJFSbTqj/6Z1uBIr07b0+wiOB8N/XtGiRfSHYm3jBS7yN2rcVJOcgOdhUzE9vED+/FRQEJfd3+kZqxwSUL+SNTCXIbl4YeAsS5HctnsdNfZkySy3nTLmP+aJCAqnrFnTpjRq9BjaJDR+6whvaAQCw/iAAeQxQDSDfK4kPHSVJixI5/iYo3011+bTZy/HYu440kyDeKr2bb1OlKyBpfotpUPSAB7mq1evpQ0bN9K6devlPQ6IVywdxP3NmFEjrZLNf8yZK4lG1Q5Imvz581EBoc3777//0l+LFqtDRmtoddtj9uKC3xVYqpSpLDaT3MbrV1WQGNcj2o7vdxbfkd2790gv4HbiJYKp4bcFkjdvVChPjZo0k4dxv24L0dxE3CeDaAYJjJcMeL5YKF46wPDCIi6z95y++O+FrC6uFyCm96qW2sczwKrVq+VhpVFvKS/SnYEhnrHm/TlfNgP9azyPgdTHLIqJk37RZIfi6oe1Y/G9VuKqHy8VFi9eKvs7YOAHtGZV7BkL6nuHetQsHUt16iUwkAfXkCKZsT9NBAPEbAS85HaFVRDX+55d22m9iNOzXkg0wbscL/22ivsQLL9NmyHjCbjSIcoV4+I6GQFGgBFIKASSDNF89OpDGrMjiu49fUFeqT0obUoPSumhY8sSCjEH2nny/D+6L7Sazwqi+YsN4fR+pRxUNLt1os2BpuJdBIF+FMmMyurWra09SNy8cVN7qAUB27pNO6kpqW8U01ShZaymsOqPYRvpWEaJ6NqdO3XUDo8b/5PmLaElig0Qzj//MllO2UNk8sDAAJFq3kAiIxCIfjom9AQVyYyo7Z26vBWrb7hxUA9Pf8yeKR5Ya9ODhw+0sepbUx4T8OCGflhD8UZef+Oj8qLOseMm0ObNWwnBdOJ6sEek5EsRUeQlCNKKZYvTzVt3NJK5VtU3qFk9g+fQ1Nl/0cFjJ2UTJYsG0Q2RD0Rz2PmLsYhmaBIrAyEM8ua6IH9XbtgmSeR+3duLFwiGm7PrgrQDGRshyNbFKzcSvEX1tvDv9bRx2x4tCTfqyIM6Id9x+240vd/j5bk8KYjvCdPmyeMopNoHQb5B1HNYEMiD+3ePRU5rDYiNfYdD6bc5hjGAGG7VuJZ2eMafS2nPgZcvElD/neh7UoM59NQ5+rRfd0rvlZZuiCmIimRGYfQX+1HXb8q69GQ+EkB+w4sb/fxn+790OTLKaFyyEH+4BQI5smSiu8JT+WLkVdkfU7JZTzJny5zhtSaZAVDx4sVdct7wQI/vH2af9O7dWwT3yiWJYT3RjAdLPXlsbhtp5vKpNLw4A5Fdv359mjdvntaGKwblKqys9TUoKL98eH2ra2ehAfm5tewyEKCaPjx71gwqI7y+lWG2jiVzRw+svHnzyLGfOWvwSDTX99AThv8+5FUGHWMQzQjy16VzJ3m/AGkMXJeQIIEh0FytmjXlNvKDoI2POdpXc20qWYKTJ0/Ja9qUMMHMLvXSXZW39zpR5RxZQ36ge7eucsH9Fe7dRo4aI8/VH3/MpXe6dydoyloy3A+CZIRh2juua/xWKMM9mSXT57OUR59uLy5q5kLoiRPy9wm/Y6YW1/Vomhf7iXE9muuHvWm4l0WAUHw32ghPZnNYoE4Qb8iDa/LMGcMsBGttYXYfXlrMmPm78IpeJoLaZZJEJBw8qsUEEbRUh73nNK+YjQFvZVM9aFU//pdsDWaK31ZgAoPDiHrRhf2HYpaeMo+Y++j4Yojvwnu9+shq8TIGv2c4D3DKwfMJvMkxSwMe+O5qcEoaM2YkBVetIR15fv5lSqyuBgYGaGmzZs6wWXri4cOH4uVpD1kW8iQg30H2/jJ5CvXu9Z5Wp7M3cP02F/EAsMBOnT5Nv/46jabPmClkqo5LpyX8RrIxAowAI8AIxEYgSRDN/4bfp1E7oyiLZ3IqlsuT8mZMRZnFtuCayd2pZkzwRTzAmw+e0Znbj+n09Uf03ZZI+qBiDirnY/C8jH1aEiYFN4uNmxoCDKHFa9euGU29xdtmRJE2ZyBXzRGs8OzFw4gy3GAikMVd8cAx+LMvtClhs2fP0Yjmffv3G5HMuAHFtCvcEO7atVtWhb5iChMCGJkzPAQheKGeZP7h+2GEN+zKEN1d3zc8kIIwxU2csg4du9Dxo4coQHhwfPjBQDpy5KhRFPt33gGJmV7qzq1ctdoIA2jaQT4ENz/jJ0yUVSK401rhCYRAJJbsUsQVeSjQ36Apt3jVRrlfvHB+atEgRCtWo3I5STSDEPXOnlVomRm8iK9cNXj1ahljNny9c1BP4bmbRXgyP3z4SMhwbJEevWHnLon1vwQSW28IRAiDl3IxIccBgheyF4pkrhVcgWqKJUP6dOKh+AX9tWK9rA8SH8+ePZfENdJ/FQQxiKM0qVNR727tKNAvlyDuHwki+LAos4Gu3bhFazftlF7Z+vbVNoL2/b7AcE5KFClA73RooT347D10TCOZ2zWrKzykS4tj/5MyI7/8vkASzlNmLZRBFN9u31z2C6Q3pElU/z08DA+Uazftkk1CkqTf228KPFPRM0GKwVMa3s8YF/qaTZCabO6FAM5hfvF9OX0xIhbZjN9c5ckMktk3h+Wpue41Ktf1pnz58i6pXBHNpUQQnzfffFO2oYhktVZksZ5M1qfZmg6SoKnwYN20aZP43Y2QZCLSnG2uwspaP4sWNUwzhofnJx8PMiI2UBYPtt98O1QGKlv013ypF4l0TN/Vk8xIg+dgUjJFniDQ05AvP5dT9/X9h/ckHuphhXXe+dB/hecr7kVAZMFUoD/IduAYZi7hvgTWqFFDuY7Ph6N9NdemGgteTG/evEXKUejz/TFnjn5Xbtt7ncSqwIaEb78bSnNEwC0QKLgPgoFEwsyvXwsGUVAhw7UK0iUuohleoco+HjTIiGRG+p49L19gq3yOru3FpVChgrIpYA+PbQQD1Bu0cucIb2x7LDGuR3v6ZykvvIxhuM9eKu6HFalmmh/PCMgDK1asmOlhi/sICojvJ7x1ldQBiFQ1W9JSQXvPabFihusSQcy/GvKFUVA4tLFl6zaje3ZL7SI9p9DhVXbx4iXKly+v2qW9QqZImXpxFV8MB30yWMN23NhR2j3v8KHfStkf4P5e7760bs3KWP8Nqi/usIaEDGIADBv+g/i/+i5Wl6BvjGc8fO9WioB/7du3M8oDWaiatetSVNRVmjH9NzlLFhnw/AZHH5SdKyQff5s2Tb4IQDqciRT+RpXFYwfPdx98OIiKihdpC+bP02rCbBl4m+O5Ff8tJ8SLKjZGgBFgBBgB8wgYGBfzx9wiFSTzaEEy58mciurmz0BNC2SgkEAvesPHk8p6p6Uybr6gj+gr+oy+YwwYC8aEsSW2gchVi/LWVX2qIGQu0otATHHZx4M+pC2bN9LRwweoXNky8kZO5YdOGsheBBvEjWsH3Q0FCFhlXw75Wm3KB8NNG9dJfUAEWkD9yvCgqY+GrtKfv3hOHw762GgK5pjRI41IZrSHabTK8KD+y88TZbTx0ydDjbycps/4Xd7MoG14l+mtr/Da++Tjjwhv1PeLGw1luPlB9GNMy/3i889kEBXkwWLJu0KVvXA5Um4G+BqI5gNHDZ5bLRuaPPgIz2EYZCRgt2JkLPxyvbwhlgfEB0jeQb27SpIZadBTbtOkDpUsEiSzQB4DBI+pdWzZkLoLghYSGyCoQbbCoFvcomFNSTJjH0QfSGdlt4Q+NWzH3kOaVMcnfbvJYIYgo0COI3+BvLllvgNHzN+cQaJDkcxVypeiHh1baTfcKDh38WpZvmGtYKr6RhlJMiMhfx5/QRa3l8fOXgyX3t5oE6R46pSG6dvAAPvp0nrKfJD3gIGQB8kMw7RC1J0v0I8QfPFqjPezPMgfboWAIptxrcOz+cbtaJIkc3iUlMtgkvnl6cLDcIUKL7+vL4/EfwvB+vr37y8lgiBdBBIZC17+YTHdVsdN01VedVztqzU8mhCor0mTJlIXEb8rzjZgpIgDZ9YNOam4Fnhst2jeTP7vgDSF/JMidNAPeNeBZEZalSqVZNfULBn8LwIjZSD3eglNT2WPxEs+d7d2IlAc/kNhPXq8Z/Q/j/GAYIGVKlmS9Nq9uAYgVwADEQ97Q3edY3YSbNr0GXJdS9yL2Gpqxs/ly+FG+DraV3PtgqSFPAUMUif7DxyQMjRPxPUwT9yvKI9KfVl7rxOUtTQWfb36bchagAjCdH28bNcbvK+VKdId++p7Ex4Rrg4bxeQ4dvzlLCT8Toz4cRRtEuQ6DN9tW83SWOzFpVDBgvKeDe326z/Q6OUMSOau3brb2iUtn6uuR3PYao06YQOewEq3HZJxCPpnKtly6fJlgcnbWmsVdC8vkwtpI1h4+GXtuH6jZMkSUjcZ1xReYsDwgsya2XtOUaf6HUFfIbOkDJ7rmPFoq+XVzZz4adIk+T+GsvhuqhdX2M/t748VxQdDOLvgJRts9KgfSa9tD/kMEJsw/Nb/OHK03Hbnj969e1nUyUa/1curz774UsodqbHgmsNvHp5F8V9XtkxpeWjtunXab/j4caOlF3S/vn20QJP47QRBrUx5mWMfwQf1BtnEtu3ayyUszLJXfmHxIgrXK36joC+vN8w0UY5WxWJebuiP8zYjwAgwAoyAAYHk7gwE5DJGCrmMAEHM1ghMT+WEN3OGVB5u78VsiqkHiLYU/6MA4YmdKU1ySpM8GT1/cVeO7Ytq3okqo6GmbqLP+KPGH6syyFmsW7+Rli7+y+z0pgH9+2k3DKrMr1N+ISzK8EABb4DDR47E+rNGHhzXexljChTeeCt7W0zNxE220mp7qtNnVHnwVhmLMmjJdexgIB1Vmr4NeDkh+Bv0HJXhgUnlgTfEoI8+UIcsrvU3g8CtVJly1Fh4TFWq+Ab1EeOADqEtljZGO/aJIAtA2IIABklq6kkLb15YqWIGT5zjp87K/UB/X7nWf1SvVFZ7uNSnN6hZRXpFw5MbUhogU5VBw9lU6xkexeOHfiy+cy9JHZQNF8QeZDhM7bTQdobBS9i0/0hHMEPIV6SMIX+Rpgxezuu3GjzYg/IFGGkyI89dUQ7SFrB8AX4UefXltYo01Anc4IW97/BxqlOtIpItGjzGIf2xbc8BSUxXKlecgvIGSCJ6YM9OFsvxAfdBQJHNyrMZcin3Hz4mJpljn6NawmNv927D9yv2UftTMK0X04lr1KhBzZs3l7/lmPqP3y8QLjgOj2NsY4Gptdq2dExmjvlQZbDGg2h9IZ+xZcsWCg0NlfU706sZGLnCAvLkj7NaSDz17PEOjfzxB6nJCa9mLJhVhCnZCMYFCxIEYLe33pLbISHV5WwbPAiXKVeBSgh5lLNnz0lSWhFTyAiNz/Hjx2DTbQ0yCSAQ2nfoLKdElypdThJfON/qvx1jAj64rvTWQGh0TvrZcM8BkklPEMEDV3k6VxfT9DNnfvl/p6/D3LbSn8VLam8ff3kfEnYqVHrlOtpXc+1889UQOnbsmCQu6tZrKNtRLxmUTrEiNVAeWNlznaCMpbGYSnUgLwwvzYEjCJ+QWnUkwe/r60Mg3ZWTQOXKlaQWtqEEAtIFynOFc4hzhXsozCjDOcH9UbPmrQiSADDUgTGqYyByoHM6fJiBhFR1mltbGosjuMDrFZ6J6F+tOvXk9ytDxgzavaC59q2lueJ6NIfte+/2tNYVm4/jOpgx7VeqWr2mxGLgBx8RHECgFZ9JBPEOFzNI1PcQlSKIeEaBk7Lc/n5yc8JPkwgLJER+nzldHZZrSKegXhh+1zAma2bvOcXLNwSIe6v7O/IcFixcTDp7REdHm5XCi6t9ELyYwYh4M5CJ2bZth/Rqxv+O+j5++skgLRicoxgi4F3/9w3PG/iNMn12QR9btWwh/w8ga4iAdJA0hBOLuxoCf48fO1p+p8z1sVPH9rRo8WJ5jlq1bkt4DsXviz5I49gxo2TA26ioKOr5ruEFAXTh1cwDxG34afxYec3i/xGk9djRo2RzOXPk1JotULCI/D1aMH+uxOzixYtSaxkZ9OS0ViBmIyAgQDpI4aVCL/Gi84cRI6V3M8rgPxeG3y/Vn5hivGIEGAFGgBHQIWB8x647kNibCPw3WpDMXoJYLuvtSWVyelLGJEgy63H8n9jBGDCWsoI0x9gwRow1MQwPA3v37NSW0GOHReCDHZIsVf3BG3Q81JszSx4JmOYKj6yy5SuSj18AVawcLG4Uemk3Z/q6zsc8QKu0MjFvsNU+bmbf7dlDaKT1kktgYIA6ZHGN6NjwHtPb8dAT2i5uEnFzo18UyYxM6qFeK2Bho1OnDtIDWx3GgxO8pvuKsVeqUpVKlCojPUOsESG5YzyZz10MF0RztKrOaA1i90homHzIBgkLiYcNW/fI/aIFX07pU4X8cr280VJpWOfKmU3bjYoJpKcSCuWPfeOvSJ6d+w7RT9P+pI++GUP9Px9BIybOoKMnwlRRba3q9Pf11tL0G5D7AAGN4H2mpkhmpCvZCn2eyCvXtN1xv86hb0dPibWAZIbdtoCjVoHYaCICKioyPPT0WaEJvYQGfTuWPh06niAjAu1pNvdHAGRzPn9v+V0AyeyVNg3LZZg5bSBonWX4XcDvGgKNNW7cmM6dOyeJ31PC81a/nBZT67GEhYUJ0uqMtj4rtHixjzUWlDdd8DusFjwcYkHeu3fvSu/sVGIWgvp9cta4nImRPUGX1DgaNqhPiEWgSATMNlL/R3jIRsBdRfBAlqpfX8MDOP7TEOwOns8gADEraOD7AyQsSLt18xYpLy9zL/n0+KUQLw/MWYoU9vslJBPfTVNTYzVNxwP79m2bZf9xDP/JitwCcbVz+1bNg01fFvcMilgPqVHd6JrQezc3FHJc9hj0Y9uLKf/KFPmLfUf7qurSrzEl/58N62RwPRDLaAfjwZiXLPpLk5vwSu+lFbPnOkGhuMaiVarbwDWGa03d44EYhiwZ1ugbSMM5s383wvqbr4doJD/GAJ1wfEfnz5ujnTcVRAtN4eXKlk0btFYRBBqmrjNLsgpxjcVeXIA9vivAGobviroXxPcHRDRMfXfkjpUPZ1yPpgHrzGGr74YzvrMIvLZDfP8wkw/nGOcQvz/4XVHfQ+gFr1m9Qs5S1LffvVs37SUC0u8JpwBTayrKKtPHZ1Fp+jX+05XZe04hj7N61d/y5QjqgJYvzitIwQnjxmgzCDzELD1rBulARejjd3jDho3acwxmLsKrVm+OYAhCX/22jBHkqrnfR6T9OOJ7ral33+ujeVhriWY2TK8jZHHGtWKmqVhJkLKA048y/fcZL6iXLFoo/6NwrQFbRTKDdJ4qnJUgtwL7aNAnEh+cv6+HDFHVyTUC937+2WC5jZcBOD8w/H59P3yYPOfYB77PhbwfzEMEc1em75NK068nCCIbDlWqjyuE1IcimXFdrvx7GdkSpF5fJ28zAowAI/A6IfC/yOu3MNs4luXMkjFWWkImDF4fTqdvPKJigmRuUSgjFcmaRvwBG3qAB1xF3qm1o31Tf+pYq21n16+vG/0U3adj1x/SotDbdCTyAeXPkpqG1fJxdAh2latWo5amdYg/z3NnXk6DVBVhqiS8WJThYWucuAGaM2eeePM+UCXThXNhsYLcYboniFa9oR3odj15+kS7YcXxa1ER8iawfoOXN6B4yC5WrKi+uNlt3HwoTyVzGeAdhgcZZZgyZym6ucqjX0dcviAeeFLIGxcEN1R2+OB+oxsLkB5z5s6TD2HqAUXlVWvcrPbv31ftml33Gfy9lKf4+qP36JOh42Sedzu3ouJCJgPkLYhdePPm8feR+sPT5i6hvYeOS69fSEwo++CrUTLfe11aS51lla7WuLZ7f2qYhgeJDOgxfztmKkVGXaOmIuhg3erGXsD37j+Qx1VQPcgU+Aqpjlw5shHI7Nl/rZBVo98gbYf8+LPUNYYeMqQ2rBnq/fg7w3iRt3Xj2lLHGV6RkAT5pG937XsPD+6fhN4yTO+JLRNMPiqWLaGNZeSkmQQ5jcaCWK4fUtkoJ9o5fPw0HTh6glC/IqqRCZ5zH77XWXpnGxXiHbdCAH9gF2LkMkDu4SWMv3d2Mg0Q6MpOX7lx26nVu+r/N1++fJLgdVZn8R1J65lWYP5M/n9a+z/GcfU/q/pgrYy5fGgX3q62llV1xLXOmzevJMLjypOQxzDbB2R88uQppLcXvPvMGV6qYlr7C3HdYwx4iFd27tx5Sile7iGoW1IySImcFS8fUqZISf7CW9KS5607jMnZfb0jZjWlS5dWjhnb+QoYZjBBnkw/20uN3dbrROW3d43rC1PF79y9Q5kzZSJvcS3BY9Eew/cUdcB7M2fOHEbjgGzG2bPnJEntzECV9uIC+RkE/wM55+/vL///7Rnjq5QX13R4eLiUsMH5h4coMFEvuRwZK6QrqlYLkUXPnz0tX1LaW4+95xTXFuQRcuTITvBQdtQgv4Br44YIiO7n6yu9sa1dq67A0NH+u3s5eC3j9wGkLch603uEhOj/kK++kTNj+gjZD8QJ0BvO5RXRR8x88ErnJfuJl+xsjAAjwAi87ghYe/59+WrPjZCasu86nRIkc3KP/5FfhpSUPW0KjWzCDSs0HBGhFzdCem1CR4aAPzTcgOAGXj2g4ebkypUrRvpejtSNvuJmxFfcmGQU088U4QzCHGPC2I4LeRCMFWPuUcagUehIW84s4+vna1Sd8qgyShQ7Ci99+qci4J8yeGWNHjWCCgotPIwd0YGVZ4TKky9vPrUp1/A80BPNmPL2fsx0O2To+c7bVK5cWaMy2Plt6mSaPPVXzRtl8pSpMqAgpujBCooANsow/Xjb1k1q1+E1rj1M1Xu7ezfpdY2Hwt17dtO6dRuMSPBpM2ZYJZpLFQ0Scg+hwkt5NxUukFeQnmfol98XSq1lEMwgVmAgTL8b+6sMble1YhkRDO8lyawfSETUdbNEM+QylOXQyWYgLZUZOYvlazdLqQtoNPfu1pYK5MmtikutOkU0q0QQwAigF3X9hkoyWl8Wntl7hVyFp5ALMZW26NW1DRUtmE8+xP6xaCVdiogSgQh3a1rQ3rqgbiCAldayUQN27gDXkgJ7LLA7d+/RP9v/pbWbd0oJgIXL10li385qOXsCIaAnmSGX4S2uPyWjgS4kJNmcQEOOVzPt2rWjoUOHxqsOfWG8qIm+92p4/gMbdzL8v8Jjy5rhPwj/aeYsMDDAXLLbp+Elr6UxuVvn49NXEGeY9QVbv3a1DGgFCQll08W9AwzefJaIMluvE1mRAx+4vmyROYiratz/gUQy5/2HFyhFihSOq7hDx+zFBd6NSeWacwgQOwrhmg4ICJCLHcXizDpDxD6BvdW1i0MkM8rae05xbemfJ1CHI4YAhmqWia3lXYGhrW0ntXx4/jb3Ei0hx6Hi/+D3ztRwLvGCAQsbI8AIMAKMgO0IuB3RvOXCPVp35q4cQQpBNGdM7UGeyQ2uzCBuYbg5R6TXFStWSIkE3MQ6YqgPnjJVq1YVUwuradGQb9++LfS4tomo7v/G680q6s+SJYsMXoToyfizQhr6izFhbBjjs+f/yTEXzJqaquZO58hQnFIGBP5l4Rn17VCDx6uqVAVkUPuW1tCSVFPAkOe9d3sYPSj/u3dfrKLwkMB0UaV59ttv06lJ40YaiT1//kItSAYKQ8/Q1BAgCFP68gtNZGjMKevTbwBtFYEKTR9kQGaD8EaEcGVoVwUTKluujKb1pY6rdURkhPawVKxEafmGG8egJ4apXgg+hMVLSENAqw521wYJhjeb1xdSFGdo3ZZdIqjdm8KLLZn0tAXJXDBfIHVu04hmzl9OJ8POUzJx/SCwH7xw4UH8SZ+3xBhTy7bUxyZBloLINf1qbNt9QGWx6hWMjGHnL8v8pYXns55kRuKZmGMyQ8wHpDmOnTwjlrMiwM+jWP2at3iVJMsRgM+UaIauM6xy+ZK0/d+DdP5ShPRuhlc3vKUziQdwEN7QiN69/4hGQMc0TY/EVN0vfpgkPbrf6dCCoC9tyW7eukNfj5osCfyvPnpXk/JAsMBm9WsIPWgxbXTfkVg60Jbq4/SER8CUZPaNeRGR3z8Xk80WTkenTp2cSjSjGUf/fy10USar//q48jj7GLBhYwQSEgEQZwiWjCnfmDkFiQQQWjdu3qCVYpq2uof4bPAnLvmeJeRYua3XD4Hz589L+Y1LQtt72vQZEoAewlmEjRFwFwSg0Y7nTARkhFUNruIuXeN+MAKMACOQ5BFwK6I5+slzmnnwpSdkMsEfC75NEmt48FQLprGADMZNDDxelbenvWcD9cGLAV5D0JODdxZMeTRDDzI+D9GoD8Qr5BVA4qIt1Id2QRYaxvay1xh7Ke805JXS42WiC7fQt2w5rE+pRWAYW8x0Wt0cIaNRuHBhie2q1au1P3JVF/DBuRvy5RdSwxnp0FNrKfSTmwrdz1179hiRzIiKrYLjqDr0a5xHaFaOnzBRJsMTe9jwH+jbb76ikBo1pGabCmRTs3ZdSU5XFBHqTdsZLB7qlKU2IXC7iSAjFd94Q2o3QtcP0blhn38xRL6oAOkNrdFlyw2SEjgWXMVYrgFppuYp2nmrXRPpxTz+17lSQqJHx5biWoGmmMGbuf/b7eX+hcsRNG7qHHosXriAcDYlmVH3neh7NHX2X9StfTMxM8BwPR08elIS2TgeXKGUIPNTYDNOSxmjywnv4ufPX2h9AQn86x+LtLJPYoI0hlQuT+s275LfpQlC5qL/O+3lVFSQw3sPHpckMwqVK1lEK2tu421BFH85YpKsZ+rsRfRpP4OERj0hfQEv68Wr/qGsmTNpZDLan7dktSZ9EZQvt1at0le8LnRKlWXOZAhkAwznL10rsG8qvp8GnNDXiBg9aD8f81rXqh5eJw4Clkhm9MY0QCDS2LMZKIhgckLCqEWLFrRo0cvvruGI45/4P0vqBkyADRsjkNAIQJasTbsOUtIMQadMDTEq2rVtY5rM+4yA2yNwSujz66X0oHcLXWw2RsBdEDh54pT2EgTPmOZmzLpLX7kfjAAjwAgkNQTcimiee+QW3X1sEOy3BCQeakHaYgFpC49kR8lg1IWyIDwhg4A6YUqOQxHYjtaPclhQHxZ4NKNOS/Vh7MDAXSQ0gMWokSNs/uOF5zBI6TVr16Ko9NJRwRlkgskHPH1BTjdv1pRWrlqtkcoIQIJFb9B5/mXST/oks9sI4DJn7p+apzHkOhqL4CC4gYDXccPGTTWva7zBVm+xVWVNmzYRY6itdqmwydRleF5D6xn19ejxNiEiMQh7LF26dtPK6TdUMBF9mrlteO72fqstQX95gZBs2LbnIEFSI09uX+nJe+rsBTpx+hyduWDwMoYGcvVKsWVEVN0Hj52kfp/9QDmzZZHEM7yjYWk901Cj2lVVtjjXJUSfLlyOlFIdH349miBfcUN4A0NbWX0/UMH43+bS20LzOX8ef2pStzotW7NJeiS//+VI6TkNyQ71Igf9qRlcPs52M2dMTy3F+IDD5cgoISmyi2pVfUMs4sXAvsNSnmPyLIO0CAILXhE61sqAS+pUqdQuZROENIIL7tx7WC7wnB7Uuys1qBVMS1f/Iz3DD315inyFri++myDVVV9rVCqn1cMb7oNA1PVbdEvInEAuQ3ky63tnSjZ7pk4pZWj0eV7X7d69ezuVaH4VcAQmbIxAYiCAKeMb1q0Ws+i2005x3xMZGUnp06eXchUIZli4sHX5lMToN7fJCFhDIH++/FJWDvkqVChPCKDGxgi4EwLBwZVp0sQJ0hGJX4K405nhvjACjMCrgIDBVdINRnLi+iNNMiOu7oAAUkRzXPnsOabqVGtn1q8nxm3x/IJsCLBITIMXMqKKI8p7XNGhzRHm48eNlmSzaf+riwjuP5sQxYePHJHZUM/UyT/TTxPGaVGC9eVbtmguorKvJT8/Py1ZeZ8iIYXOMxcBGkaP+lHLh41effpJ4hAPbHt2bSeQyaYGInvwpx9LMlsfeAjabLN+n6FFU9eXQ4DDVSuXS89ofbrarly5Ei1bsogqVnxDJVldFwnKS0M/7UMVyxan20LzeeWGbTIA3pgps2nF+q2SZC5eOD8NFh6+CLhnydo1q0tB+QLkYZCwSue5WKF89O3HvURAi5eBLDxi9J+V57S+zro1KlElEVgPBu9feDKDZAZZ/Pn770jPaBxD2l2xwOqJMghGqNq4ev2mRtxiXB8IfWU9SS0LiQ/TtOqC5IXEBmzRyo1SPxnSGV8M7CHbRX6MS5HMCFTYoUWDWLggAKB3jmyyHnw8jvG+RuDDVo1qSQIS3/2L4VckqY7trJkzEjzK45Lf0CrkjQRHIH1aT/LNmdUsyaw6o8hm72yZ7Q5epep4FdchISHUsGHDV3FoDo0JWAATNkYgsRDAbLfq1avRp58MovHjxshAxt3e6sokc2KdEG7XKQgEBgbIGYWYVdioYQOLTjZOaYwrYQQcQADPla1btWRPewew4yKMACPACFhD4H+R12+Znffqqqj3ljr0/dYrtC/ygXYYpGzaVMmoVZFMVDMgPaURmsZIU7IZmzdvll5Z9+/fd/jmBfWBVKxVqxbVr19fRMPOKduAJMeyZcto586dsj/mCFWto3FsoH4EcWnTpo14m19BRBJPp8lnPHz2H204f5cWHrtF9x+/MBpDGW9P+iQ4aU/ZRwThS5cuUSrhWZo7d27SB7iJAzJ56MaNG3TmzFnySu9FuUWka3PBGazVYe04PMzPn78gPZ/hUeTj62OVjEL0bXgupxC6ihmEx5GeGIU8SnhEBN0S8gxeXoaoxDj38bX7Dx5K8vPho0eUJVNGypk9q/DWTWlztSgfJYhmyGuAHHb0Wn70+In0IgYJCx1mEL7KIqOuyesaOsqmhnIR4jikQeBZbI7MNi1jz/4tQcZDbxnYZBDXi3hnYbfhe3r7bjTdun1X/h5ACzq910si3u4KucBrh4C1qLv2AuLq/9/t27dTlSqsRYjzgngMlStblzey9xxyfkaAEWAEGAFGgBFgBBgBRoARYAReRQSsPf++ZIsScfTHrj40IpmtdQXEkDMN9ak6sQaZ5izT121rnSDcgUmR7GlsLeJ2+XLmzCGIe4M3qr2dQwBFLK40eBBhmpQ9U6VAeFsivTHVFYuzDTIXhQvkcbhalIf0RnwN5LZfLvPnU+8tbNoOyuXx9zFNdto+SGEs8TGQ786oJz594LKMQEIiAGK1R48eNGXKlIRs1u3aAgZMMrvdaeEOMQKMACPACDACjAAjwAgwAoxAEkbA8E4zqwAAGXpJREFULaQz1gi5CHvMVvJW5bO0Vm3iOEytzW1bqkNfRlbipA97MXFSs1wNI8AIMAKMwGuAwLBhwyhbtpeSMq/BkI2GiLEDAzZGgBFgBBgBRoARYAQYAUaAEWAEGAHnIZDoRPO1+89oz2WDtqvzhmWoCV6rCMBnaUkpJBBwDPng1ahfkIbjKo+lOpDPFWQzMAE2bIwAI8AIMAKMgLMRwKyR0aNHO7vaJFMfxu7qmTNJBgzuKCPACDACjAAjwAgwAowAI8AIMAJOQiDRpTP2RQqSGQ7FpmoY5tJsHDSI39SpU1PZsmWlnIE5XVqkQWMXGsKBgYFGkgiQQChTpgxlz55dakIrb2bT5pF+7do1OnDgAEHz11w7pmVi7ccxTmBTL1+GWEU4gRFgBBgBRoARiC8CHTt2pK1bt752EhqQzMDY2RgBRoARYAQYAUaAEWAEGAFGgBFgBJyLQKITzYeuvAwA6KyhgfCFB3KRIkXI29tb81TW14888EYG0QzdXRDTiihG0L6goCDyF4HoHj9+TM+fP4/ltazI55MnT9Kh/7d3pjFyVdkdP91V3dXV++a1PRjTgNO2MRCQjQeMieVMwpBhi5KgiAiNEsFohiiIKF9Aky/xzIckYoSiLCaaGaFRIicSARELIsWMwNgBsxk8LN7w3m6P7XbvXdW1tHP+t+pWv1q6lu6qfq+7/0dTfu/dd9+59/zelXr416lzP/vM6bps52BDoblsOOmIBEiABEggg8CuXbvM37CDBw9m3FmYl9iYFzHTSIAESIAESIAESIAESIAESIAEyk/AVaE5NnlNrozHkgnN6SnNeRJ9i6YAsTkYDKZKY9gHISjjg4xm9IHYjKPP5zOCsm1Df4jRdnNAiMvW0IYsZvS1ArW9V8pxKs4p33j+mlQZNmDkr64qxSX7kgAJkAAJkEDRBF5++WXZunWr+YVO0Q/Nw46oy4xYaSRAAiRAAiRAAiRAAiRAAiRAApUh4KrQHImni6vpIea7l94z1xXEXwjIyE5GnWWIylYQdh4hLkNMhmCMPjD0Rx+0IZvZmhWacUR7JBIxY9j7Mz8i1txiMhhRaJ45WT5JAiRAAiSQnwB+wbN7927ZsWNH1q938j85f+7ibzpiRKw0EiABEiABEiABEiABEiABEiCByhBwVWiOalZwwiC05hKWc7UVDwKCMcpiQHC2QrMVma0X2w7B2d5DGz4Qmq24bPvj2grNto+9N7OjjdEe070kGLm+Z2P6pHhFAiRAAiSwoAhs375dXn31VXn44YcXVFw2GMSGGGkkQAIkQAIkQAIkQAIkQAIkQAKVI+Cq0IyyEFOWmdHrvDfVq9gziMY2UxmCs1NIzvSBvlZkxj17nSky2+fQjrIZyGqG2Fwey4w/4TWdUXlGohcSIAESIAESyCTw0EMPyWuvvSaPPPJI1pesmX3nyzX+nkNkRmw0EiABEiABEiABEiABEiABEiCByhJwVWieCk1FVkf946l2PZuF3oz/wLTZyTg6xeS0MZIX9j6EZJzb68y+qM9s70/XJ/OZnNfO2Jzn6Kzje8GODUXl6GBUTo/GpE/raQ9GJiUc06xuL0yOc5iWAFZPnb9KWmurZUW9X65v9Mva1hq5uaVm2md4gwRIgAQgyO7du1cee+yxeV+zGTWZUS6Dmcxc1yRAAiRAAiRAAiRAAiRAAiQwNwS8ITTnUi1ztZXIxIrBeMx5XshNPvHYmeWcr1+hMdLuI9ZMXbkM8aeNUcLFpVBc3ukLy3uXwjIwYcublOCAXV0ngOUT0i8EQrG4fkEQl0+uTJg5tQWqZcvSOtm2ok6WBn2uz5MTIAES8B4BCLPvvvuuPPHEE3Lw4EHvTbCIGW3evNls/MeazEXAYhcSIAESIAESIAESIAESIAESKBMBbwjN0wXjotg63ZTK3u6hGIc0W/n1M+PyywuhVJgr6n2yoa1WuptrpKvBJ+0BnwQ1UzZTF089wBNPELBC89WJuPSOxeXr4ah8PhAxovMb58YFn+0rg/Lg6npp0axnGgmQAAk4CUCgff/99+Wpp56Sl156yXnL8+dPPvmk7Nq1y/Pz5ARJgARIgARIgARIgARIgARIYKERcF1oRsUMFGJwZgpbyBDLPKTD2mmV7eiMLzP+a6rkTldNpGwTcDjadzEsu78eNVmwaL5neZ3cq5+bWGrBQWn+nOKLgHr9QqDe75dVDX7ZvDRgJn9cS6HgXe/XD75QQNb6Y92N5l3Pn+g4UxIggbkiAMF269at8uyzz3q+lAZKZbzwwgvy+OOPzxUejkMCJEACJEACJEACJEACJEACJOAg4IFURijNVnKdOmYKr445L7jTRKxTsRt5PcWk8uH+4vio/PzoiBGZ7+gMyN/c2SZ/uraJInPl0c/5CPjiAO8W7xjvGuU18O6xBmgkQAIkkIsAhNuvvvpKkCnsVcPcMEeKzF59Q5wXCZAACZAACZAACZAACZDAYiDgAaHZYkYOpvOjl9BeF7qlYnTGjvO5sX/4YjhVKuOJm5vk6fXNJgN2bkbnKG4RQJYz3jXeOQzZzVgLNBIgARLIRaCjo8OUo9i/f7888MADubq40oa5YE7IvMYcaSRAAiRAAiRAAiRAAiRAAiRAAu4RcF9oVqHV5PJqBi8ye+3HPSTujGzjTh0xjZQIXZk5QVjEJnGtWqP3udta5T7dII62uAjgnePdYw1gLVBsXlzvn9GSQKkE7r77btmzZ4+89dZb8uijj5b6eNn6Y2zMAXPBnGgkQAIkQAIkQAIkQAIkQAIkQALuE3BfaAaDHIIqKkfMYfUId95EMkYTZ+YMcjDJ7DKba5RKsCLzX25sYZmM2cCc58+inAbWgBWbWUZjnr9QTp8E5oDA9u3b5ZVXXpEjR47I888/L93d3RUfFWNgLIyJsTEHGgmQAAmQAAmQAAmQAAmQAAmQgHcIuL4ZYEpNzhJW0WA/3gFW3pnY+PSI3f+cVoU23C+/YTM4lEqAfX8dS2WUn/D884hSGlgLP/500KyN1U1+bhA4/14jZ0wCc05g7dq1snPnTvM5cOCAvPnmm7J37145ePBgWeayefNm2bFjh9x///3MXC4LUTohARIgARIgARIgARIgARIggcoRcFdohpaqsSUylysjqlYOXRk9m9DT47+mwnOO5lkPOhSZlN1fJzZ+Q31eZLPSSAAEsBawJl4+NmLWyK3ttdKiJTVoJEACJFAMAZSwwAfC8+joqHzwwQdy+PBhs0nfqVOnpLe3Vy5fviwjIyMyMTFhXAYCAWlqapIlS5ZIV1eXrFmzRnp6emTjxo2yadMmaWxsLGZo9iEBEiABEiABEiABEiABEiABEvAAAVeFZqe06jwHF1yXO6EX9Y+rqjIyh11+CYgxM3bnlPLdc/Yr9vz1M+MSil2TOzoDrMlcLLRF1A81mz+/GpGPtV4z1sqf3ESRZxG9foZKAmUjAIEYpS1Y3qJsSOmIBEiABEiABEiABEiABEiABDxPwP10RVVaIQBnmVFgc7RndczfAGG53OKy9WmP+WdQ4O40cRomubgUcJfv9qVQPFUy4+Hr6/N15b1FTMCuDZRXwZqhkQAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEAhAq5mNGNyRkrWfzLFZqO/4v4MtebJyUkZGxuToaEhwU9zq6urpxWca2trTR+fz2fmEY/Hzc96o9FoTn7wjU84HJZQKFHrOGfHAo3pMWYGmiydUcBHKbff6Qub7vcsrxPU5PWiRSavyffevVJwaijp8JMtHQX7OTv8SjN1f/KrIdO0RmsQ//A32yRXm/OZxXiOtYE1sl9reWPN/MENDYsRA2MmARIgARIgARIgARIgARIgARIgARIgARIogYDraqMRW63i6px44kb+uhLO/o5ziNYQiQ8dOiTnz58Xv99vhGZHl9QpBOgbb7zRfOrrE1m+qC157NgxOXPmTKqf8wT+7Rjnzp0TCNMzMmjLNk5JL+mhI8xYZJ9uLu9dSgjN96qI6FUzOIqY3IQK0qVaVJ+xT4XiibNcbaX6XYj9sUYgNGPNUGheiG+YMZEACZAACZAACZAACZAACZAACZAACZBAeQm4LjRboRUCY5Zp25Q0mHU3bwM2Gnr77benzWK2DyOLGbvZL1++XILBoGkeHByUAwcOyL59+2y3aY8QnJHdPBMzsSXjhp8sy9WW1am4hmNDURmYmJQV9b55tQFgbXWV+HIUeOkI+IoLnL1mRAAbA2Kt9I3HBWvnZm4aOSOOfIgESIAESIAESIAESIAESIAESIAESIAEFgsB14Vmkx2stHMJrbnainkxqJ2MZ4vJNEa/WCxmPra/vcaxWJtpHWiMnyvOa8kYih2/UL+jg4kyIBvaagt19dT9Z25pkZ7WmoJzQoLzubGYnBiOyoRmK3c31cgNzX6pUaF6NjYanZTjwzE5OxqTpUEV6dVnZ92UyD2uGyteDicy2hv9VdKRvIeE6fM6H1jAVyXL9VlraE8mVJsSJnrbk4a10jceEqwdCs2efEWcFAmQAAmQAAmQAAmQAAmQAAmQAAmQAAl4hoAHhGZlkSNzF005cnyLBleM8GsFXgjMEJWdQrM9x4DF+Cp6YhkdESNiVV053YwAnd40m6vTKpTCupsLi7azGceNZ0+OxORFrb08rKKw0/wK9btrG+Wby0ovFQLh+t9OjKY2T3T6XavZvT9Y3yxNNdWyry8k/3FyzNxu1usXv5moG/3JlQn5py+HTTte7U+3LTHFUZBV/sOPBlLudm3tFF/Wy0/ddvUEa+V/e0Ni146rk+HgJEACJEACJEACJEACJEACJEACJEACJEACniaQoyjB3M3XZJsaQTWR1Wuze9OPlZ8PSl9AWLZHnFsRupKjGzE9T/xQoGebkWvn3zeeEJq7GqYya+09Lx9PaNmGw7qJn/Pz+UAkNeUrmk2885OBLJEZHWLK71+PjMgHlydS/Ys9+eevhtNEZuf3AEd1Tn+tYjG+JLjbUe8aQvdIUuz+tH9qjuiHOGAfOubyDd10D6VBvGp2rdi149V5cl4kQAIkQAIkQAIkQAIkQAIkQAIkQAIkQALuE3A1o7lGi+9OicrpMCDCmlRfI+fhonKC3NQcEoI3BOfKC80mQBNjrrES4avQnKtAcTqqoq4GI4ls3/Z5Vtv4v04nsoWdQWIl/EwzhGEQhMEKtkqF2+dua1VmVfKL4yOabZzY/PCnKjbf2RlIdCri39OaIf2RQxD+Xk+zbF4aMKU5dn4yKBFNdwbPN8+Ny7e/US9LtFyGLZ+B535rZVCODE4JzRjyY81wRt1jHK1tWVb8nOwzc3m0a8Wunbkcm2ORAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAnMLwLuZzRbXlCWMz5GgDWKs+1UmWOm0GyvZztaLgE5zafGlooxI3bbr1wZzWGtJQwLah3hhWRnVBS29syGZhMfQvzuzU1Slyx+DGH4QjKj2/bNd0TZC2u3tNcakRnXyED+/TUN9lZKNL5LRWhrH12JGCH6qpbIcNrnA4mM5pNa79naPY5saNvmpaNdK3bteGlunAsJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkIC3CLic0VwlnfU1cqp/QstWpIMxYm9GW3oPMaUukH08mxrK+cRge88eM8cvdG1iKCCUX9MYJ1UIzYwBcjDYIDt3Mdt9mh3cVZ9e7sOfLDeBMhV2Uz3UY7Yb8VleK/U51G+G4YjN+oqxs8lN/ND3poya1j1tUzWufz2e2ATw3hV18t9nx41rlMj4IikqowEb6qHUxwX1eVI3KkQ5DxiyoFHjmUYCJEACJEACJEACJEACJEACJEACJEACJEACC4GAq0IzAN7e1Sgfnh1JlslwIE1m+5pEX0czTqurq6W+vl6WLVsmY2NTpRWKFYStqIujz+eT5uZmc7Ttfr9fWlpajH+nT+d5xpTSLq0fNLa3t0swGMwSkiE3mtgS/6Q9by60A9iUy+pUZA1pVjM+9UUKruUaezZ+Ni0JSE/rlLjr9FVdYBM95/cUpYSczy82CbRm+3WqaNxSWy1DWk4D2dMoqQFDRvW3VgWN0IzHdic3DcS9TY4saFx70bBWYFg7NBIgARIgARIgARIgARIgARIgARIgARIgARLIR8B1oXnTdU3yL/t7ZRKCq8NwGY1PSkjFuxjSVh0zra2tlZ6eHuns7JRQKJTayA+PFyMGQwi2InNdXZ10dHRIY+OUqAtxeNu2bbJx40aJRCImcxp+i/WNeUAMh2Dd0NBgBGsI2k5DTIgNMSYymtPjr7pWJWBTLmtVITQUi8vVibgKzQ6Y5RrABT8NKoAikxlZwvj0atZwl5a3gEEQPj+ayDjGdbdmJuN+Mbam0S+HkuUzsAnhd1bXpx6z7WhAxrS1O1UQf6s3ZC6PJzf+u1HHXKcZzZBp8XZtOzpt0yxorxvWCgxrh0YCJEACJEACJEACJEACJEACJEACJEACJEAC+Qi4rjgua6qVLdc3y7tfD2bNMxKJy8XhCRkMx6U5uYkdBGIIuE1NTUbMhRAci8VSInApYjDE30AgYLKjIV5DHMbzaGtraxOI0NFo1AjZmFwpvu084QPZ1xgL/q0hJsSGGNUx/pdmW7o1o1rZlMtW1PulT0s99I7FzaZ55fLrtp91WsoCYjDs7w4PydPrtU6z2QxwNFWmAiUqlgV9RQvN2PjPbkJ4QstdvHJqzAjDEIr3JEtkYDxnjWUIx1Zoxj3YrR21gsonK1SQvpAss4H2Zp0PSmd43bBWYFg7NBIgARIgARIgARIgARIgARIgARIgARIgARLIR8ATCtJ31nfIvuMDWfOMa1rqsUvjcvpqSLqaE6KdzRSGgAsxF0Iw6jQXIwI7B8Cz1heE5ZqaGiMGww/OIQ5D0IaIDf+lGvxDXIYv+IcvtOGDBG3EhNjisdy+waScdr1m6WKTu69VOIWQulDsqZ5meea9fonqWkHpih8dyv7C4gcqPpdiS1WU/l0tefE/5xMZyhCXnQIzfK1Wnk6hGRsFYvM8W24Cfe7oTHC+tSOgQnOinAbakf08HwxrBYa1QyMBEiABEiABEiABEiABEiABEiABEiABEiCBfAQ8oSDduqpJNq1ulvdPDWXN9Xx/yLSvagnIDe11KXHYCrkQgWciBGMg6wOCsBWCbTtEaIjEMxGxrQ/rH74xBq5hZwbCJibEhrIZmXbXmhYBk3La2mSdY2xMt5AM9ab/dnO7/OMXw4LsY6e1B6rlz9e3yPVNpS/zP+pulGWayfvvJ0aNiG394g1u7wrKH+v9TLtdBeX/+3XYNEN0btPxYagzbes24xqbB84Hs2vFrp35MGfOkQRIgARIgARIgARIgARIgARIgARIgARIwB0CVX1XBrKVTp3L8o7WOZ3R5xdG5S/+80jOMdsaa+Xem9vk2+s6ZA3EZu2Fms5GYEbZiZxPFW40sm8yyxjCshGCk/6swFxqprRzVPiHT+O7usrUDT51NSxvfNkv+44NyMBobtH3xT/8DdmwMlvIdPqeyfmz7/fLwMSkPHdbq9zUknuDvZn49cozyBQ/NxqTsJ6sUXE5gLoVZbBBzZSGX2Q6owTHYjCUCfnxp4NGLH/hrvJm1y8GfoxxcRG42J/9S4rZEJjrv7+zmSufJQESIAESIAESIAESIAESIAESWDwECv33b+mpnhViB2H1gQ2dsufwpbQRICIPjEzIO0f65Yoe71rTKuuWN0hHQ434jTic2Ggt7aEiL1IyJAbRzGJ7nRCXjUysSvHs/Udj16R/LCJfXhzTTOZB+aJ3VAbHtOSHitp2TDvl39u4tCIiM/xvWVonb5wbl30XwwtSaIauPJPsZct+uiM2w2ttL1+97OnG8VI71ggMa4ZGAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAoUIeEZoxkT/7O5Vsu9ovwyGYmnzjmvO8lXdOO/DcFROXRqTFa110t6otY/9Wo4i2bPUrGb7XNpAaJzG0TTNaY87L6x/PDcRi8vV0aj0DYZVLI9IWDNkrT97xLOtQb9h4PRTznNsWAeheb+KiL+jNYhXaV1hGglkEjg/FjNrBO1YMzQSIAESIAESIAESIAESIAESIAESIAESIAESKETAU0pjswqt37/vOvnRnhNZ84YgOx6Ky9lwTHq1tnGNv1rKVBkha6xyN6CkQ1Q3/cPmhrprobq3MnT6SIgdDCplKP2wfWVQfnkhJK+dHpenS9wkr1Lzol9vEcDagGGtYM3QSIAESIAESIAESIAESIAESIAESIAESIAESKAQgcqpmoVGnub+t9Yvkc/ODsvrhy5O00NrM+udSCSu/0K0nQ9WlSEtZ8/7wduXC2KvtD24ul7euxSWj69MyNt9YbmPGauVRj6v/GNNYG1gM0OsFRoJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJFEPA7/P5JB6P6aZ11Zpsmy2AFuOk3H3+6v5uOd43orWMR8rt2iV/+TcsXN/VJIh5LqxF6w0/1t0oPz86Ii8fG5Guet+CrNc8FywX2hjYABBrAoY1grVCIwESIAESWNgEzupmt5fDcVlS55PrGj2Xf1BW+BH9ZdnfHx6SgG7Q/MwtLfJp/4RU66bNt3cUvw/D0cGojOqv1LCpcnONu38n9/aG5OClCfltLYe2aUmgrKyKcTYcnRT8f4eg/sRwXVuCITadPjmS3laML/YhARIgARIgARIgARKY/wQmJyfl/wHM0Uut7L4DJQAAAABJRU5ErkJggg=="/><path id="Rectangle" stroke="#C06334" stroke-width="3" d="M1.5 1.5h714v33H1.5z"/><path id="Rectangle-Copy" stroke="#C06334" stroke-width="3" d="M1.5 43.5h230v169H1.5z"/><path id="Rectangle-Copy-2" stroke="#C06334" stroke-width="3" d="M241.5 95.5h473v128h-473z"/><path id="Rectangle-Copy-3" stroke="#C06334" stroke-width="3" d="M241.5 333.5h473v64h-473z"/><path id="Rectangle-Copy-6" stroke="#C06334" stroke-width="3" d="M241.5 228.5h473v101h-473z"/><path id="Rectangle-Copy-4" stroke="#C06334" stroke-width="3" d="M714.5 47.5v43h-473v-43h473z"/><path id="Rectangle-Copy-5" stroke="#C06334" stroke-width="3" d="M1.5 221.5h230v176H1.5z"/><circle id="Oval-5-Copy" cx="18" cy="17" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="1" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="13" y="22">1</tspan></text><circle id="Oval-5-Copy" cx="18" cy="60" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="2" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="13" y="65">2</tspan></text><circle id="Oval-5-Copy-2" cx="259" cy="65" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="4" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="254" y="70">4</tspan></text><circle id="Oval-5-Copy-3" cx="19" cy="238" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="3-copy" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="14" y="243">3</tspan></text><circle id="Oval-5-Copy" cx="259" cy="113" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="5" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="254" y="118">5</tspan></text><circle id="Oval-5-Copy-4" cx="259" cy="246" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="6" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="254" y="251">6</tspan></text><circle id="Oval-5-Copy-5" cx="259" cy="351" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="7" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="254" y="356">7</tspan></text></g></g></svg> \ No newline at end of file diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index ade62cdf2..9be94adfe 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -1,108 +1,116 @@ -# Patterns and flags +# প্যাটার্ন এবং ফ্ল্যাগ -Regular expressions are patterns that provide a powerful way to search and replace in text. +টেক্সটে কোনকিছু খোঁজা অথবা রিপ্লেস করার একটি পাওয়ারফুল মাধ্যম হল রেগুলার এক্সপ্রেশন। -In JavaScript, they are available via the [RegExp](mdn:js/RegExp) object, as well as being integrated in methods of strings. +জাভাস্ক্রিপ্টে এটি [RegExp](mdn:js/RegExp) অবজেক্টের অধীনে আছে এবং স্ট্রিং এর মেথডগুলোর মধ্যে এদের ব্যবহার করতে পারি। -## Regular Expressions +## রেগুলার এক্সপ্রেশনস -A regular expression (also "regexp", or just "reg") consists of a *pattern* and optional *flags*. +রেগুলার এক্সপ্রেশন (যা "regexp" অথবা "reg" নামেও পরিচিত) হল *প্যাটার্ন* এবং অপশনাল *ফ্ল্যাগ* এর মাধ্যমে গঠিত একটি সমন্বিতরূপ। -There are two syntaxes that can be used to create a regular expression object. +দুইভাবে আমরা রেগুলার এক্সপ্রেশন অবজেক্ট তৈরি করতে পারি। -The "long" syntax: +"লং" সিনট্যাক্সঃ ```js -regexp = new RegExp("pattern", "flags"); +regexp = new RegExp("প্যাটার্ন", "ফ্ল্যাগ"); ``` -And the "short" one, using slashes `"/"`: +এবং "শর্ট" সিনট্যাক্স যা `"/"` দ্বারা ডিক্লেয়ার করা হয়ঃ ```js -regexp = /pattern/; // no flags -regexp = /pattern/gmi; // with flags g,m and i (to be covered soon) +regexp = /pattern/; // ফ্ল্যাগ ছাড়া +regexp = /pattern/gmi; // ফ্ল্যাগ সহ g,m and i (এগুলো সম্পর্কে সামনেই জানতে পারব) ``` -Slashes `pattern:/.../` tell JavaScript that we are creating a regular expression. They play the same role as quotes for strings. +স্ল্যাস `pattern:/.../` ব্যবহারের মাধ্যমে জাভাস্ক্রিপ্ট ইঞ্জিন বুঝতে পারে এটি একটি রেগুলার এক্সপ্রেশন। যেভাবে `""` অথবা `''` দ্বারা স্ট্রিং কে চিনতে পারে। -In both cases `regexp` becomes an instance of the built-in `RegExp` class. +উভয়ক্ষেত্রে `regexp` বিল্টইন `RegExp` ক্লাস এর ইনস্ট্যান্স হিসেবে তৈরি হয়। -The main difference between these two syntaxes is that pattern using slashes `/.../` does not allow for expressions to be inserted (like string template literals with `${...}`). They are fully static. +এই দুই সিনট্যাক্সের মূল পার্থক্য হল `/.../` এখানে ডাইনামিক্যালি কোন ভেরিয়েবল (যেমনঃ টেমপ্লেট লিটারেলস স্ট্রিং `${...}`) ব্যবহার করতে পারবেন না। এটি পুরোপুরি স্ট্যাটিক। +<<<<<<< HEAD +বেশিরভাগ ক্ষেত্রে কোড লিখার সময় যখন আমরা রেগুলার এক্সপ্রেশনটি জানি তখন স্ল্যাস ব্যবহার করি। আর `new RegExp` ব্যবহার করি যখন আমাদের প্যাটার্ন জেনারেট করতে হয় ডাইনামিক্যালি। উদাহরণস্বরুপঃ +======= Slashes are used when we know the regular expression at the code writing time -- and that's the most common situation. While `new RegExp` is more often used when we need to create a regexp "on the fly" from a dynamically generated string. For instance: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js -let tag = prompt("What tag do you want to find?", "h2"); +let tag = prompt("আপনি কোন ট্যাগটি খুঁজতে চাচ্ছেন?", "h2"); -let regexp = new RegExp(`<${tag}>`); // same as /<h2>/ if answered "h2" in the prompt above +let regexp = new RegExp(`<${tag}>`); // এটি /<h2>/ এর মত যদি prompt এ ইনপুট h2 দেয় ``` -## Flags +## ফ্ল্যাগ -Regular expressions may have flags that affect the search. +রেগুলার এক্সপ্রেশনে কিছু ফ্ল্যাগ আছে যা সার্চিং এর সময় ব্যবহৃত হয়। -There are only 6 of them in JavaScript: +জাভাস্ক্রিপ্টে ৬ ধরনের ফ্ল্যাগ আছেঃ `pattern:i` -: With this flag the search is case-insensitive: no difference between `A` and `a` (see the example below). +: এই ফ্ল্যাগটি কেস ইনসেনসিটিভ বুঝায়ঃ `A` এবং `a` এর মধ্যে কোন পার্থক্য নেই (নিচের উদাহরণ দেখুন)। `pattern:g` -: With this flag the search looks for all matches, without it -- only the first match is returned. +: এই ফ্ল্যাগটি টেক্সটে সব মিল খুঁজে, এটি ছাড়া -- শুধু প্রথম মিলটি রিটার্ন করে। `pattern:m` -: Multiline mode (covered in the chapter <info:regexp-multiline-mode>). +: মাল্টিলাইন মোড (বিস্তারিত এই অধ্যায়ে <info:regexp-multiline-mode>)। `pattern:s` -: Enables "dotall" mode, that allows a dot `pattern:.` to match newline character `\n` (covered in the chapter <info:regexp-character-classes>). +: "dotall" মোড, নিউলাইন ক্যারেক্টার `\n` কে ডট `pattern:.` দিয়ে খোঁজা যায় (বিস্তারিত এই অধ্যায়ে <info:regexp-character-classes>). `pattern:u` +<<<<<<< HEAD +: ফুল ইউনিকোর্ড সাপোর্ট এনাবল করে। ফ্ল্যাগটি সঠিকভাবে সারোগেটজোড় কে প্রসেসিংয়ের সাপোর্ট দেয়। আরো জানতে পারবেন এই অধ্যায়ে <info:regexp-unicode>। +======= : Enables full Unicode support. The flag enables correct processing of surrogate pairs. More about that in the chapter <info:regexp-unicode>. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 `pattern:y` -: "Sticky" mode: searching at the exact position in the text (covered in the chapter <info:regexp-sticky>) +: "Sticky" মোডঃ সার্চিং এর সময় টেক্সটে এক্স্যাক্ট পজিশনটি জানা যায় (বিস্তারিত এই অধ্যায়ে <info:regexp-sticky>) -```smart header="Colors" -From here on the color scheme is: +```smart header="কালারস" +এখানে কালার স্কিমটা হলঃ - regexp -- `pattern:red` -- string (where we search) -- `subject:blue` +- string (যেখানে আমরা সার্চ করি) -- `subject:blue` - result -- `match:green` ``` -## Searching: str.match +## সার্চিংঃ str.match -As mentioned previously, regular expressions are integrated with string methods. +আমরা পূর্বেই জেনেছি, রেগুলার এক্সপ্রেশনগুলো স্ট্রিংয়ের মেথডগুলোর সাথে ইন্টিগ্রেটেড। -The method `str.match(regexp)` finds all matches of `regexp` in the string `str`. +`str.match(regexp)` মেথডটির সাহায্যে `str` এর মধ্যে `regexp` এর সকল মিল খুঁজা যায়। -It has 3 working modes: +এটির ৩ ধরণের মোড আছেঃ -1. If the regular expression has flag `pattern:g`, it returns an array of all matches: +1. যদি রেগুলার এক্সপ্রেশনে `pattern:g` এই ফ্ল্যাগটি ব্যবহৃত হয়, এটি সব মিলপ্রাপ্ত প্যাটার্নগুলোকে অ্যারেতে রিটার্ন করেঃ ```js run let str = "We will, we will rock you"; - alert( str.match(/we/gi) ); // We,we (an array of 2 substrings that match) + alert( str.match(/we/gi) ); // We,we (অ্যারে আকারে এই ২টি সাবস্ট্রিং রিটার্ন করবে) ``` - Please note that both `match:We` and `match:we` are found, because flag `pattern:i` makes the regular expression case-insensitive. + লক্ষ্য করুন এখানে `match:We` এবং `match:we` দুটিই দেখাবে, যেহেতু আমরা কেস-ইনসেনসিটিভ ফ্ল্যাগটি ব্যবহার করেছি। -2. If there's no such flag it returns only the first match in the form of an array, with the full match at index `0` and some additional details in properties: +2. যদি আমরা কোন ফ্ল্যাগ ব্যবহার না করি তাহলে এটি প্রথম মিলটিকে অ্যারে আকারে রিটার্ন করবে, সম্পূর্ন মিলটিকে আমরা ইনডেক্স `0` তে পাই এবং প্রপার্টিগুলোর অতিরিক্ত কিছু বর্ননাঃ ```js run let str = "We will, we will rock you"; - let result = str.match(/we/i); // without flag g + let result = str.match(/we/i); // ফ্ল্যাগ g ছাড়া - alert( result[0] ); // We (1st match) + alert( result[0] ); // We (১ম মিল) alert( result.length ); // 1 // Details: - alert( result.index ); // 0 (position of the match) + alert( result.index ); // 0 (প্রাপ্ত মিলের পজিশন) alert( result.input ); // We will, we will rock you (source string) ``` - The array may have other indexes, besides `0` if a part of the regular expression is enclosed in parentheses. We'll cover that in the chapter <info:regexp-groups>. + `0` এর পাশাপাশি অ্যারের অন্যান্য ইনডেক্সও থাকতে পারে যদি এক্সপ্রেশনটিতে প্রথম বন্ধনী থাকে। আমরা এই অধ্যায়ে এসম্পর্কে বিস্তারিত জানতে পারব <info:regexp-groups>। -3. And, finally, if there are no matches, `null` is returned (doesn't matter if there's flag `pattern:g` or not). +3. এবং, সর্বশেষে যদি কোন মিল খুঁজে পাওয়া না যায় `null` রিটার্ন করবে (এটি `pattern:g` ফ্ল্যাগের উপর নির্ভর করে না)। - This a very important nuance. If there are no matches, we don't receive an empty array, but instead receive `null`. Forgetting about that may lead to errors, e.g.: + একটি গুরুত্বপূর্ন ব্যাপার খেয়াল রাখা উচিত। কোন মিল খুঁজে পাওয়া না গেলে এম্পটি স্ট্রিং এর বদলে `null` রিটার্ন করে। এজন্য এম্পটি চেকিংয়ের জন্য ভুলভাবে চেকিংয়ের জন্য এরর পেতে পারেন, যেমনঃ ```js run let matches = "JavaScript".match(/HTML/); // = null @@ -112,50 +120,50 @@ It has 3 working modes: } ``` - If we'd like the result to always be an array, we can write it this way: + নিম্নোক্ত উপায়ে রেজাল্ট আমরা সর্বদা অ্যারে হিসেবে চেক করতে পারিঃ ```js run let matches = "JavaScript".match(/HTML/)*!* || []*/!*; if (!matches.length) { - alert("No matches"); // now it works + alert("No matches"); // এখন এটি কাজ করবে } ``` -## Replacing: str.replace +## রিপ্লেসিংঃ str.replace -The method `str.replace(regexp, replacement)` replaces matches found using `regexp` in string `str` with `replacement` (all matches if there's flag `pattern:g`, otherwise, only the first one). +`str.replace(regexp, replacement)` মেথডটি `regexp` দ্বারা প্রাপ্ত সব মিলকে `replacement` করে `pattern:g` ফ্ল্যাগের জন্য, অন্যথায় শুধু প্রথম মিলটিকে রিপ্লেস করে। -For instance: +উদাহরণস্বরূপঃ ```js run -// no flag g +// g ফ্ল্যাগ ছাড়া alert( "We will, we will".replace(/we/i, "I") ); // I will, we will -// with flag g +// g ফ্ল্যাগ সহ alert( "We will, we will".replace(/we/ig, "I") ); // I will, I will ``` -The second argument is the `replacement` string. We can use special character combinations in it to insert fragments of the match: +দ্বিতীয় আর্গুমেন্টে `replacement` স্ট্রিংটি পাস করা হয়। মিল খুঁজে পাওয়া অংশগুলো `replacement` এর সাথে ব্যবহার করতে আমরা কিছু স্পেশাল ক্যারেক্টার সংযুক্ত করতে পারি। -| Symbols | Action in the replacement string | +| সিম্বলস | রিপ্লসমেন্ট স্ট্রিংয়ে সংগঠিত অ্যাকশন | |--------|--------| -|`$&`|inserts the whole match| -|<code>$`</code>|inserts a part of the string before the match| -|`$'`|inserts a part of the string after the match| -|`$n`|if `n` is a 1-2 digit number, then it inserts the contents of n-th parentheses, more about it in the chapter <info:regexp-groups>| -|`$<name>`|inserts the contents of the parentheses with the given `name`, more about it in the chapter <info:regexp-groups>| -|`$$`|inserts character `$` | +|`$&`|পুরো মিলটিকে সংযুক্ত করে| +|<code>$`</code>|মিলের আগ পর্যন্ত স্ট্রিংকেও সংযুক্ত করে| +|`$'`|মিলের পরের স্ট্রিংকেও সংযুক্ত করে| +|`$n`|যদি `n` ১-২ ডিজিটের নাম্বার হয়, আমরা বন্ধনী দ্বারা পাওয়া মানগুলোকে `$n` সংযুক্ত করতে পারি, বিস্তারিত এই অধ্যায়ে <info:regexp-groups>| +|`$<name>`|আমরা বন্ধনী দ্বারা পাওয়া মানগুলোকে `name` সংযুক্ত করতে পারি,বিস্তারিত এই অধ্যায়ে <info:regexp-groups>| +|`$$`|`$` ক্যারাক্টারটি সংযুক্ত করতে| -An example with `pattern:$&`: +`pattern:$&` এর একটি উদাহরণঃ ```js run alert( "I love HTML".replace(/HTML/, "$& and JavaScript") ); // I love HTML and JavaScript ``` -## Testing: regexp.test +## টেস্টিংঃ regexp.test -The method `regexp.test(str)` looks for at least one match, if found, returns `true`, otherwise `false`. +`regexp.test(str)` মেথডটি অন্তত একটি মিল খুঁজে পেলে `true` রিটার্ন করে, অন্যথায় `false` রিটার্ন করে। ```js run let str = "I love JavaScript"; @@ -164,14 +172,14 @@ let regexp = /LOVE/i; alert( regexp.test(str) ); // true ``` -Later in this chapter we'll study more regular expressions, walk through more examples, and also meet other methods. +পরবর্তী অধ্যায়গুলোতে রেগুলার এক্সপ্রেশন সম্পর্কে আমরা আরো অনেক কিছু শিখব, আরো অনেক উদাহরণ এবং রেগুলার এক্সপ্রেশনের অন্যান্য মেথডগুলোও জানব। -Full information about the methods is given in the article <info:regexp-methods>. +মেথডগুলো সম্পর্কে বিস্তারিত আমরা এই অধ্যায়ে জানব <info:regexp-methods>. -## Summary +## সারাংশ -- A regular expression consists of a pattern and optional flags: `pattern:g`, `pattern:i`, `pattern:m`, `pattern:u`, `pattern:s`, `pattern:y`. -- Without flags and special symbols (that we'll study later), the search by a regexp is the same as a substring search. -- The method `str.match(regexp)` looks for matches: all of them if there's `pattern:g` flag, otherwise, only the first one. -- The method `str.replace(regexp, replacement)` replaces matches found using `regexp` with `replacement`: all of them if there's `pattern:g` flag, otherwise only the first one. -- The method `regexp.test(str)` returns `true` if there's at least one match, otherwise, it returns `false`. +- রেগুলার এক্সপ্রেশন গঠিত হয় প্যাটার্ন এবং অপশনাল ফ্ল্যাগের সমন্বয়েঃ `pattern:g`, `pattern:i`, `pattern:m`, `pattern:u`, `pattern:s`, `pattern:y`। +- ফ্ল্যাগ এবং স্পেশাল সিম্বল ছাড়া (পরবর্তীতে জানব) regexp এর সার্চ substring সার্চ এর মত কাজ করে. +- `str.match(regexp)` মেথডটি `pattern:g` ফ্ল্যাগের জন্য প্যাটার্নের সাথে সকল মিল খুঁজে, অন্যথায় শুধু প্রথম মিলটি খুঁজে। +- `str.replace(regexp, replacement)` মেথডটি `regexp` দ্বারা প্রাপ্ত সব মিলকে `replacement` করে `pattern:g` ফ্ল্যাগের জন্য, অন্যথায় শুধু প্রথম মিলটিকে রিপ্লেস করে। +- `regexp.test(str)` মেথডটি অন্তত একটি মিল খুঁজে পেলে `true` রিটার্ন করে, অন্যথায় `false` রিটার্ন করে। diff --git a/9-regular-expressions/02-regexp-character-classes/article.md b/9-regular-expressions/02-regexp-character-classes/article.md index 201c78a05..fcdd4788e 100644 --- a/9-regular-expressions/02-regexp-character-classes/article.md +++ b/9-regular-expressions/02-regexp-character-classes/article.md @@ -1,14 +1,18 @@ -# Character classes +# ক্যারাক্টার ক্লাস -Consider a practical task -- we have a phone number like `"+7(903)-123-45-67"`, and we need to turn it into pure numbers: `79031234567`. +একটি প্রাক্টিক্যাল টাস্কের কথা চিন্তা করুন -- আমাদের এই ধরণের `"+7(903)-123-45-67"` একটি নাম্বার আছে, এখন আমাদের এটিকে এই ধরণের `79035419441` নাম্বারে পরিবর্তন করতে হবে। -To do so, we can find and remove anything that's not a number. Character classes can help with that. +তো আমাদের এটি করতে যেসব ক্যারেক্টার "ডিজিট বা অঙ্ক" নয় তাদের বাদ দিতে হবে। ক্যারেক্টার ক্লাসের সাহায্যে আমরা এটি করতে পারি। -A *character class* is a special notation that matches any symbol from a certain set. +*ক্যারেক্টার ক্লাস* হল একটি বিশেষ চিহ্ন বা বর্ণ যা দ্বারা কোন একটি নির্দিষ্ট সেটের যেকোন সিম্বলকে নির্দেশ করে। -For the start, let's explore the "digit" class. It's written as `pattern:\d` and corresponds to "any single digit". +শুরুতে, চলুন "ডিজিট" ক্লাস সম্পর্কে জানি। এটি লিখা হয় `pattern:\d` দিয়ে এবং এটি যেকোন "একক ডিজিট বা অঙ্কের" সাথে মিলে। +<<<<<<< HEAD +উদাহরণস্বরূপ, চলুন ফোন নম্বরটিতে প্রথমে ডিজিটটি খুঁজি: +======= For instance, let's find the first digit in the phone number: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run let str = "+7(903)-123-45-67"; @@ -18,39 +22,39 @@ let regexp = /\d/; alert( str.match(regexp) ); // 7 ``` -Without the flag `pattern:g`, the regular expression only looks for the first match, that is the first digit `pattern:\d`. +`pattern:g` ফ্ল্যাগটি ছাড়া, রেগুলার এক্সপ্রেশনটি শুধু প্রথম মিলটি খুঁজে, এখানে প্রথম ডিজিটের প্যাটার্ন হল `pattern:\d`। -Let's add the `pattern:g` flag to find all digits: +এখন চলুন সব ডিজিটের জন্য ফ্ল্যাগ `pattern:g` ব্যবহার করি: ```js run let str = "+7(903)-123-45-67"; let regexp = /\d/g; -alert( str.match(regexp) ); // array of matches: 7,9,0,3,1,2,3,4,5,6,7 +alert( str.match(regexp) ); // মিলকৃত অঙ্কগুলো অ্যারে আকারে রিটার্ন করেঃ 7,9,0,3,1,2,3,4,5,6,7 -// let's make the digits-only phone number of them: -alert( str.match(regexp).join('') ); // 79031234567 +// চলুন শুধু ডিজিটগুলো দিয়ে ফোন নাম্বারটি তৈরি করিঃ +alert( str.match(regexp).join('') ); // 79035419441 ``` -That was a character class for digits. There are other character classes as well. +এই ক্যারাক্টার ক্লাসটি শুধু ডিজিটের জন্য। অন্যান্য ক্যারাক্টারগুলোর জন্যও এই ধরণের ক্লাস আছে। -Most used are: +সর্বাধিক ব্যবহৃত ক্লাশগুলো হল: -`pattern:\d` ("d" is from "digit") -: A digit: a character from `0` to `9`. +`pattern:\d` ("d" দ্বারা বুঝায় "digit" বা অঙ্ক) +: "digit" বা অঙ্ক হল: `0` to `9` পর্যন্ত অঙ্কগুলো। -`pattern:\s` ("s" is from "space") -: A space symbol: includes spaces, tabs `\t`, newlines `\n` and few other rare characters, such as `\v`, `\f` and `\r`. +`pattern:\s` ("s" দ্বারা বুঝায় "space") +: স্পেস সিম্বল হল: স্পেসসহ, ট্যাব `\t`, নিউলাইন `\n` এছাড়াও কিছু বিরল ক্যারেক্টার আছে, যেমন: `\v`, `\f` এবং `\r`। -`pattern:\w` ("w" is from "word") -: A "wordly" character: either a letter of Latin alphabet or a digit or an underscore `_`. Non-Latin letters (like cyrillic or hindi) do not belong to `pattern:\w`. +`pattern:\w` ("w" দ্বারা বুঝায় "word" বা বর্ণ) +: "wordly" ক্যারেক্টার হল: লাতিন বর্ণমালার বর্ণ বা অঙ্ক বা আন্ডারস্কোর `_`। নন-লাতিন বর্ণ (যেমন হিন্দি বা বাংলা) বর্ণগুলো `pattern:\w` দ্বারা বুঝায় না। -For instance, `pattern:\d\s\w` means a "digit" followed by a "space character" followed by a "wordly character", such as `match:1 a`. +উদাহরণস্বরূপ, `pattern:\d\s\w` দ্বারা বুঝায় একটি "অঙ্ক" একটি "স্পেস ক্যারেক্টার" একটি "বর্ণ ক্যারাক্টার" যেমন: `match:1 a`। -**A regexp may contain both regular symbols and character classes.** +**রেগুলার এক্সপ্রেশনে রেগুলার সিম্বল এবং ক্যারেক্টার ক্লাসের সিম্বল একসাথে থাকতে পারে।** -For instance, `pattern:CSS\d` matches a string `match:CSS` with a digit after it: +উদাহরণস্বরূপ, `pattern:CSS\d` এই প্যাটার্নটি `match:CSS` এবং একটি ডিজিটদ্বারা গঠিত স্ট্রিংয়ের সাথে মিলেঃ ```js run let str = "Is there CSS4?"; @@ -59,32 +63,32 @@ let regexp = /CSS\d/ alert( str.match(regexp) ); // CSS4 ``` -Also we can use many character classes: +একইভাবে আমরা অনেক ক্যারেক্টার ক্লাসের মাধ্যমেও চেক করতে পারি: ```js run alert( "I love HTML5!".match(/\s\w\w\w\w\d/) ); // ' HTML5' ``` -The match (each regexp character class has the corresponding result character): +মিলটিতে (প্রতিটি রেগুলার এক্সপ্রেশন ক্যারেক্টার ক্লাস রেজাল্টের ক্যারেক্টারগুলোর সাথে মিলে): ![](love-html5-classes.svg) -## Inverse classes +## ইনভার্স ক্লাস -For every character class there exists an "inverse class", denoted with the same letter, but uppercased. +প্রতিটি ক্যারেক্টার ক্লাসের আবার একটি "ইনভার্স ক্লাস" আছে, তবে এদের বড় হাতের অক্ষর দিয়ে প্রকাশ করা হয়। -The "inverse" means that it matches all other characters, for instance: +ইনভার্স ক্লাস দ্বারা বুঝানো হয় এটি দ্বারা অন্যান্য ক্যারেক্টার গুলোর সাথে মিলবে, উদাহরণস্বরূপ: `pattern:\D` -: Non-digit: any character except `pattern:\d`, for instance a letter. +: নন-ডিজিট: `pattern:\d` বাদে অন্যান্য ক্যারেক্টার। উদাহরণস্বরূপ, বর্ণমালা। `pattern:\S` -: Non-space: any character except `pattern:\s`, for instance a letter. +: নন-স্পেস: `pattern:\s` বাদে অন্যান্য ক্যারেক্টার। উদাহরণস্বরূপ, বর্ণমালা। `pattern:\W` -: Non-wordly character: anything but `pattern:\w`, e.g a non-latin letter or a space. +: নন-ওয়ার্ডলি ক্যারাক্টার: `pattern:\w` বাদে অন্যান্য ক্যারেক্টার, যেমন: লাতিন বর্ণমালা বা স্পেস বাদে অন্যান্যসমূহ। -In the beginning of the chapter we saw how to make a number-only phone number from a string like `subject:+7(903)-123-45-67`: find all digits and join them. +এই অধ্যায়ের শুরুতে আমরা দেখেছি কিভাবে স্ট্রিং হতে শুধু ফোন নাম্বার পেতে পারি যেমন: `subject:+7(903)-123-45-67` এখানে সব ডিজিট খুঁজে তাদের একত্র করা। ```js run let str = "+7(903)-123-45-67"; @@ -92,7 +96,8 @@ let str = "+7(903)-123-45-67"; alert( str.match(/\d/g).join('') ); // 79031234567 ``` -An alternative, shorter way is to find non-digits `pattern:\D` and remove them from the string: + +এর পরিবর্তে, আমরা আরো সংক্ষিপ্তভাবে সকল নন-ডিজিট `pattern:\D` নাম্বারগুলোকে বাদ দিয়েও এটি করতে পারি: ```js run let str = "+7(903)-123-45-67"; @@ -100,104 +105,124 @@ let str = "+7(903)-123-45-67"; alert( str.replace(/\D/g, "") ); // 79031234567 ``` -## A dot is "any character" +## ডট দ্বারা "যেকোন ক্যারেক্টার" বুঝায় -A dot `pattern:.` is a special character class that matches "any character except a newline". +ডট `pattern:.` হল একটি বিশেষ ক্যারেক্টার যা দ্বারা নিউলাইন `\n` ব্যতীত সকল ক্লাসকে বুঝার। -For instance: +উদাহরণস্বরূপ: ```js run alert( "Z".match(/./) ); // Z ``` -Or in the middle of a regexp: +রেগুলার এক্সপ্রেশনের মধ্যের কোন ক্যারেক্টারকে বুঝাতে: ```js run let regexp = /CS.4/; alert( "CSS4".match(regexp) ); // CSS4 alert( "CS-4".match(regexp) ); // CS-4 -alert( "CS 4".match(regexp) ); // CS 4 (space is also a character) +alert( "CS 4".match(regexp) ); // CS 4 (স্পেসও একটি ক্যারাক্টার) ``` +<<<<<<< HEAD +অনুগ্রহ করে মনে রাখবেন যদিও ডট দ্বারা "যেকোন ক্যারেক্টার" বুঝায়, কিন্ত "ক্যারাক্টারের অনুপস্থিতি বা শূণ্যস্থান" কে বুঝায় না। মিলের জন্য অবশ্যই একটি ক্যারেক্টার থাকা লাগবে: +======= Please note that a dot means "any character", but not the "absence of a character". There must be a character to match it: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run -alert( "CS4".match(/CS.4/) ); // null, no match because there's no character for the dot +alert( "CS4".match(/CS.4/) ); // null, কেননা ডট দ্বারা বুঝাতে কোন ক্যারেক্টার নাই ``` -### Dot as literally any character with "s" flag +### s ফ্ল্যাগের সাথে ডট হল যেকোন ক্যারেক্টার -By default, a dot doesn't match the newline character `\n`. +ডিফল্টভাবে ডট নিউলাইন ক্যারেক্টারের `\n` সাথে মিলেনা। -For instance, the regexp `pattern:A.B` matches `match:A`, and then `match:B` with any character between them, except a newline `\n`: +উদাহরণস্বরূপ, `pattern:A.B` এই রেগুলার এক্সপ্রেশটি প্রথমে `match:A` এবং `match:B` এর মাঝে নিউলাইন `\n` ব্যতীত অন্য কোন ক্যারেক্টার থাকলে মিলবে: ```js run alert( "A\nB".match(/A.B/) ); // null (no match) ``` -There are many situations when we'd like a dot to mean literally "any character", newline included. +অনেক সময় আমাদের ডট দ্বারা নিউলাইনসহ যেকোন ক্যারেক্টারকে বুঝাতে হয়। -That's what flag `pattern:s` does. If a regexp has it, then a dot `pattern:.` matches literally any character: +`pattern:s` ফ্ল্যাগের সাহায্যে এটি আমরা করতে পারি। যদি রেগুলার এক্সপ্রেশনে এটি থাকে তাহলে ডট `pattern:.` যেকোন ক্যারেক্টারের সাথে মিলে: ```js run alert( "A\nB".match(/A.B/s) ); // A\nB (match!) ``` +<<<<<<< HEAD +````warn header=" Firefox, IE, Edge এ কাজ করে না" +বর্তমানে যেসব ব্রাউজারে সাপোর্ট করে তা চেক করুন <https://caniuse.com/#search=dotall>। এই লিখাটি লিখার সময় এটি Firefox, IE, Edge এ কাজ করে না। + +সৌভাগ্যক্রমে, অন্য একটি উপায় আছে, যা সব জায়গায় কাজ করে। +আমরা রেগুলার এক্সপ্রেশনে এভাবেও `pattern:[\s\S]` ব্যবহার করতে পারি যা "যেকোন ক্যারেক্টারের " সাথে মিলে। +======= ````warn header="Not supported in IE" The `pattern:s` flag is not supported in IE. Luckily, there's an alternative, that works everywhere. We can use a regexp like `pattern:[\s\S]` to match "any character" (this pattern will be covered in the article <info:regexp-character-sets-and-ranges>). +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run alert( "A\nB".match(/A[\s\S]B/) ); // A\nB (match!) ``` -The pattern `pattern:[\s\S]` literally says: "a space character OR not a space character". In other words, "anything". We could use another pair of complementary classes, such as `pattern:[\d\D]`, that doesn't matter. Or even the `pattern:[^]` -- as it means match any character except nothing. +`pattern:[\s\S]`-টি দ্বারা আক্ষরিক অর্থে বুঝানো হচ্ছে "একটি স্পেস ক্যারেক্টার অথবা স্পেস ক্যারেক্টার নয়"। অন্য অর্থে, "যেকোন কিছু"। এর পরিবর্তে আমরা এভাবেও করতে পারি `pattern:[\d\D]`। -Also we can use this trick if we want both kind of "dots" in the same pattern: the actual dot `pattern:.` behaving the regular way ("not including a newline"), and also a way to match "any character" with `pattern:[\s\S]` or alike. +ট্রিকটি সবখানে কাজ করবে। এছাড়াও যদি আমরা এই ফ্ল্যাগটি `pattern:s` ছাড়া ব্যবহার করতে চাই তাও কাজ করবে। ```` -````warn header="Pay attention to spaces" -Usually we pay little attention to spaces. For us strings `subject:1-5` and `subject:1 - 5` are nearly identical. +````warn header="স্পেস ব্যবহারের সতর্কতা" +সাধারণত আমাদের স্পেস ব্যবহারের সতর্কতা অবলম্বন করা প্রয়োজন। যেমন `subject:1-5` এবং `subject:1 - 5` স্ট্রিং দুটি প্রায় একই। -But if a regexp doesn't take spaces into account, it may fail to work. +কিন্তু যদি রেগুলার এক্সপ্রেশনে আমরা স্পেস এর ব্যাপারে খেয়াল না করি, এটি কাজ করবে না। -Let's try to find digits separated by a hyphen: +চলুন হাইফেন দ্বারা আলাদা ডিজিটগুলো খুঁজার চেষ্টা করি: ```js run -alert( "1 - 5".match(/\d-\d/) ); // null, no match! +alert( "1 - 5".match(/\d-\d/) ); // null, মিল পাবেনা! ``` -Let's fix it adding spaces into the regexp `pattern:\d - \d`: +স্পেসযুক্ত করে রেগুলার এক্সপ্রেশনটি ঠিক করি `pattern:\d - \d`: ```js run -alert( "1 - 5".match(/\d - \d/) ); // 1 - 5, now it works -// or we can use \s class: -alert( "1 - 5".match(/\d\s-\s\d/) ); // 1 - 5, also works +alert( "1 - 5".match(/\d - \d/) ); // 1 - 5, এখন এটি কাজ করবে +// অথবা আমরা \s ক্লাসটিও ব্যবহার করতে পারি: +alert( "1 - 5".match(/\d\s-\s\d/) ); // 1 - 5, এটিও কাজ করবে ``` -**A space is a character. Equal in importance with any other character.** +**স্পেসও একটি ক্যারেক্টার। এটি অন্যান্য ক্যারেক্টারের মত গুরুত্বপূর্ণ।** +<<<<<<< HEAD +রেগুলার এক্সপ্রেশনে স্পেস যোগ বা বাদ দিয়ে সঠিকভাবে কাজ করবে আমরা এই আশা করতে পারিনা। +======= We can't add or remove spaces from a regular expression and expect it to work the same. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -In other words, in a regular expression all characters matter, spaces too. +অন্য অর্থে বলা যায়, রেগুলার এক্সপ্রেশনে স্পেসসহ প্রতিটি ক্যারেক্টার তাৎপর্যপূর্ণ। ```` -## Summary +## সারাংশ -There exist following character classes: +রেগুলার এক্সপ্রেশনে নিম্নোক্ত ক্যারেক্টার ক্লাসগুলো আছে: -- `pattern:\d` -- digits. -- `pattern:\D` -- non-digits. -- `pattern:\s` -- space symbols, tabs, newlines. -- `pattern:\S` -- all but `pattern:\s`. -- `pattern:\w` -- Latin letters, digits, underscore `'_'`. -- `pattern:\W` -- all but `pattern:\w`. -- `pattern:.` -- any character if with the regexp `'s'` flag, otherwise any except a newline `\n`. +- `pattern:\d` -- ডিজিট বা অঙ্ক। +- `pattern:\D` -- নন-ডিজিট বা অঙ্ক ব্যতীত অন্যান্য ক্যারাক্টার। +- `pattern:\s` -- স্পেস, ট্যাব, নিউলাইন। +- `pattern:\S` -- `pattern:\s` ব্যতীত বাকীসব। +- `pattern:\w` -- লাতিন বর্ণমালা, অঙ্ক, আন্ডারস্কোর `'_'`। +- `pattern:\W` -- `pattern:\w` ব্যতীত বাকীসব। +- `pattern:.` -- যেকোন ক্যারাক্টার যদি `'s'` ফ্ল্যাগ থাকে, অন্যথায় নিউলাইন `\n` ব্যতীত বাকীসব। -...But that's not all! +...কিন্ত এখানেই শেষ নয়! +<<<<<<< HEAD +ইউনিকোড এনকোডিং, জাভাস্ক্রিপ্টে স্ট্রিংয়ে অন্যান্য বিভিন্ন ক্যারেক্টার যেমনঃ অন্যান্য ভাষার বর্ণ বা চিহ্ন ইত্যাদি ব্যবহৃত হয়। +======= Unicode encoding, used by JavaScript for strings, provides many properties for characters, like: which language the letter belongs to (if it's a letter), is it a punctuation sign, etc. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -We can search by these properties as well. That requires flag `pattern:u`, covered in the next article. +আমরা এই ধরণের প্রোপার্টিগুলো দ্বারাও সার্চ করতে পারি। এজন্য এই ফ্ল্যাগটি `pattern:u` প্রয়োজন, যা পরবর্তী অনুচ্ছেদে আমরা জানব। diff --git a/9-regular-expressions/04-regexp-anchors/1-start-end/solution.md b/9-regular-expressions/04-regexp-anchors/1-start-end/solution.md index 702f992d7..7bd2e6d37 100644 --- a/9-regular-expressions/04-regexp-anchors/1-start-end/solution.md +++ b/9-regular-expressions/04-regexp-anchors/1-start-end/solution.md @@ -1,5 +1,5 @@ -An empty string is the only match: it starts and immediately finishes. +শুধু এম্পটি স্ট্রিং মিলবে: কেননা এটি শুরু হয়ে অবিলম্বে শেষ হয়ে যায়। -The task once again demonstrates that anchors are not characters, but tests. +টাস্কটি দেখায় যে অ্যাঙ্করগুলো ক্যারাক্টার নয়, তবে টেস্ট। -The string is empty `""`. The engine first matches the `pattern:^` (input start), yes it's there, and then immediately the end `pattern:$`, it's here too. So there's a match. +এম্পটি স্ট্রিং `""`। Regexp ইঞ্জিন প্রথমে `pattern:^` (ইনপুটের শুরুতে) মিলটি খুঁজে, হ্যাঁ এটি মিলে, তারপর এর শেষও খুঁজে `pattern:$`, এটিও মিলে। তাই শুধু খালি স্ট্রিংয়ের সাথে প্যাটার্নটি মিলে। diff --git a/9-regular-expressions/04-regexp-anchors/1-start-end/task.md b/9-regular-expressions/04-regexp-anchors/1-start-end/task.md index abdfec938..9745e8b7c 100644 --- a/9-regular-expressions/04-regexp-anchors/1-start-end/task.md +++ b/9-regular-expressions/04-regexp-anchors/1-start-end/task.md @@ -1,3 +1,3 @@ # Regexp ^$ -Which string matches the pattern `pattern:^$`? +কোন স্ট্রিংটি প্যাটার্নটির `pattern:^$` সাথে মিলবে? diff --git a/9-regular-expressions/04-regexp-anchors/article.md b/9-regular-expressions/04-regexp-anchors/article.md index 63e4efa93..9ffb513fc 100644 --- a/9-regular-expressions/04-regexp-anchors/article.md +++ b/9-regular-expressions/04-regexp-anchors/article.md @@ -1,34 +1,34 @@ -# Anchors: string start ^ and end $ +# অ্যাঙ্করস: স্ট্রিংয়ের শুরু ^ এবং শেষ $ -The caret `pattern:^` and dollar `pattern:$` characters have special meaning in a regexp. They are called "anchors". +রেগুলার এক্সপ্রেশনে ক্যারেট চিহ্ন `pattern:^` এবং ডলার চিহ্ন `pattern:$` এর বিশেষ অর্থ আছে। এদের বলা হয় "অ্যাঙ্করস"। -The caret `pattern:^` matches at the beginning of the text, and the dollar `pattern:$` -- at the end. +ক্যারেট চিহ্ন `pattern:^` বাক্যের শুরুতে এবং ডলার চিহ্ন `pattern:$` বাক্যের শেষে মিল খুঁজে। -For instance, let's test if the text starts with `Mary`: +উদাহরণস্বরূপ, চলুন বাক্যটি `Mary` দিয়ে শুরু হয়েছে কিনা দেখি: ```js run let str1 = "Mary had a little lamb"; alert( /^Mary/.test(str1) ); // true ``` -The pattern `pattern:^Mary` means: "string start and then Mary". +প্যাটার্ন `pattern:^Mary` দ্বারা বুঝায়: "স্ট্রিংয়ের শুরু Mary দিয়ে"। -Similar to this, we can test if the string ends with `snow` using `pattern:snow$`: +অনুরূপভাবে, আমরা বাক্যটি `snow` দ্বারা শেষ কিনা যাচাই করতে পারি এভাবে `pattern:snow$`: ```js run let str1 = "its fleece was white as snow"; alert( /snow$/.test(str1) ); // true ``` -In these particular cases we could use string methods `startsWith/endsWith` instead. Regular expressions should be used for more complex tests. +বিশেষক্ষেত্রে স্ট্রিংয়ের শুরু এবং শেষ চেক করতে `startsWith/endsWith` মেথডদ্বয় ব্যবহার করতে পারি। এই ধরণের জটিল টেস্ট কেসের জন্য আমাদের রেগুলার এক্সপ্রেশন ব্যবহার করা উচিত। -## Testing for a full match +## পুরো মিলের টেস্টিং -Both anchors together `pattern:^...$` are often used to test whether or not a string fully matches the pattern. For instance, to check if the user input is in the right format. +উভয় অ্যাঙ্কর `pattern:^...$` প্রায় সময় ব্যবহার করা হয় কোন স্ট্রিং পুরো মিলেছে কিনা তা যাচাই করতে। উদাহরণস্বরূপ, ইউজারের ইনপুট প্যাটার্নটি সঠিকভাবে আছে কিনা তা যাচাই করতে। -Let's check whether or not a string is a time in `12:34` format. That is: two digits, then a colon, and then another two digits. +চলুন আমরা একটি সময়ের ফরম্যাট `12:34` এভাবে আছে কিনা যাচাই করি। প্রথমে দুটি ডিজিট তারপর একটি কোলন তারপর আবার দুটি ডিজিট। -In regular expressions language that's `pattern:\d\d:\d\d`: +রেগুলার এক্সপ্রেশনে এটি এভাবে লিখা হয় `pattern:\d\d:\d\d`: ```js run let goodInput = "12:34"; @@ -39,14 +39,14 @@ alert( regexp.test(goodInput) ); // true alert( regexp.test(badInput) ); // false ``` -Here the match for `pattern:\d\d:\d\d` must start exactly after the beginning of the text `pattern:^`, and the end `pattern:$` must immediately follow. +এখানে উপরোক্ত মিলের জন্য `pattern:\d\d:\d\d` এর শুরু আমাদের অবশ্যই `pattern:^` দিয়ে করতে হবে এবং `pattern:$` দ্বারা শেষ করতে হবে। -The whole string must be exactly in this format. If there's any deviation or an extra character, the result is `false`. +পুরো স্ট্রিংটি অবশ্যই এই ফরম্যাটে হতে হবে। যদি কোন ভুল ফরম্যাট বা অন্য কোন অতিরিক্ত ক্যারাক্টার থাকে তাহলে রেজাল্ট `false` হবে। -Anchors behave differently if flag `pattern:m` is present. We'll see that in the next article. +যদি `pattern:m` ফ্ল্যাগ থাকে তাহলে এর রেজাল্ট অন্যরকম হয়। পরবর্তী আর্টিকেলে আমরা এটি দেখব। -```smart header="Anchors have \"zero width\"" -Anchors `pattern:^` and `pattern:$` are tests. They have zero width. +```smart header="অ্যাঙ্করগুলো জিরো উইডথ\"" +অ্যাঙ্কর `pattern:^` এবং `pattern:$` টেস্টের সময় জিরো উইডথ। -In other words, they do not match a character, but rather force the regexp engine to check the condition (text start/end). -``` +অন্য অর্থে বলা যায়, এরা কোন ক্যারাক্টারের সাথে মিলে না কিন্তু এর সাহায্যে রেগুলার এক্সপ্রেশনে (টেক্সটের শুরু/শেষ) যাচাই করতে পারি। +``` \ No newline at end of file diff --git a/9-regular-expressions/05-regexp-multiline-mode/article.md b/9-regular-expressions/05-regexp-multiline-mode/article.md index 82f4d781d..5a9fe1613 100644 --- a/9-regular-expressions/05-regexp-multiline-mode/article.md +++ b/9-regular-expressions/05-regexp-multiline-mode/article.md @@ -1,14 +1,14 @@ -# Multiline mode of anchors ^ $, flag "m" +# মাল্টিলাইনে মোডে অ্যাঙ্কর ^ $ ও ফ্ল্যাগ "m" -The multiline mode is enabled by the flag `pattern:m`. +`pattern:m` ফ্ল্যাগের মাধ্যমে মাল্টিলাইন মোড এনাবল হয়। -It only affects the behavior of `pattern:^` and `pattern:$`. +এটি কেবলমাত্র `pattern:^` এবং `pattern:$` এর বিহেভিয়ারকে প্রভাবিত করে। -In the multiline mode they match not only at the beginning and the end of the string, but also at start/end of line. +মাল্টিলাইন মোডে এটি কেবল স্ট্রিং এর শুরু এবং শেষে মিল খুঁজে না, লাইনের শুরু ও শেষে-ও মিল খুঁজে। -## Searching at line start ^ +## ক্যারেট চিহ্ন ^ লাইনের শুরুতে সার্চ করে -In the example below the text has multiple lines. The pattern `pattern:/^\d/gm` takes a digit from the beginning of each line: +যেমন নিম্নোক্ত টেক্সটে মাল্টিপল লাইন আছে। প্যাটার্নটি `pattern:/^\d/gm` প্রতি লাইনের শুরুর অঙ্কটি নিবে: ```js run let str = `1st place: Winnie @@ -20,7 +20,7 @@ console.log( str.match(/^\d/gm) ); // 1, 2, 3 */!* ``` -Without the flag `pattern:m` only the first digit is matched: +`pattern:m` ফ্ল্যাগটি ছাড়া কেবলমাত্র প্রথম অংশটি মিলবেঃ ```js run let str = `1st place: Winnie @@ -32,19 +32,23 @@ console.log( str.match(/^\d/g) ); // 1 */!* ``` -That's because by default a caret `pattern:^` only matches at the beginning of the text, and in the multiline mode -- at the start of any line. +কেননা ক্যারেট চিহ্ন `pattern:^` ডিফল্টভাবে কেবলমাত্র টেক্সটের শুরুতে মিল খুঁজে, এবং মাল্টিলাইন মোডে -- এটি যেকোন লাইনের শুরুতে মিল খুঁজে। ```smart +<<<<<<< HEAD +"লাইনের শুরু" দিয়ে বুঝায় "লাইন ব্রেকের পরপর": মাল্টিলাইন মোডে `pattern:^` লাইনের শুরু হতে নিউলাইন ক্যারাক্টারের `\n` আগ পর্যন্ত মিলে। +======= "Start of a line" formally means "immediately after a line break": the test `pattern:^` in multiline mode matches at all positions preceded by a newline character `\n`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -And at the text start. +এবং টেক্সটের শুরু হতে। ``` -## Searching at line end $ +## ডলার চিহ্ন $ লাইনের শেষে সার্চ করে -The dollar sign `pattern:$` behaves similarly. +ডলার চিহ্নও `pattern:$` একই ধরণের আচরণ করে। -The regular expression `pattern:\d$` finds the last digit in every line +`pattern:\d$` রেগুলার এক্সপ্রেশনটি প্রতি লাইনের শেষ অংশটি খুঁজবে। ```js run let str = `Winnie: 1 @@ -54,21 +58,21 @@ Eeyore: 3`; console.log( str.match(/\d$/gm) ); // 1,2,3 ``` -Without the flag `pattern:m`, the dollar `pattern:$` would only match the end of the whole text, so only the very last digit would be found. +`m` ফ্ল্যাগ ছাড়া, ডলার চিহ্ন `pattern:$` কেবলমাত্র টেক্সটের শেষে মিল খুঁজে, সুতরাং আমরা শুধু শেষের অংশটি পাবো। ```smart -"End of a line" formally means "immediately before a line break": the test `pattern:$` in multiline mode matches at all positions succeeded by a newline character `\n`. +"লাইনের শেষ" দিয়ে বুঝায় "লাইন ব্রেকের পূর্বপর্যন্ত": মাল্টিলাইন মোডে `pattern:$` নিউলাইন ক্যারাক্টারের `\n` আগ হতে শুরু করে নতুন নিউলাইন অথবা টেক্সটের শুরু পর্যন্ত মিল খুঁজে। -And at the text end. +এবং টেক্সটের শেষ হতে। ``` -## Searching for \n instead of ^ $ +## ^ $ এর পরিবর্তে \n দিয়ে সার্চিং -To find a newline, we can use not only anchors `pattern:^` and `pattern:$`, but also the newline character `\n`. +নতুন লাইন শুরু হয়েছে কিনা তা কেবল `pattern:^` এবং `pattern:$` দিয়ে জানা ছাড়াও আমরা `\n` ক্যারাক্টারও ব্যবহার করে জানতে পারি। -What's the difference? Let's see an example. +চলুন একটা উদাহরণের মাধ্যমে পার্থক্য বুঝার চেষ্টা করি। -Here we search for `pattern:\d\n` instead of `pattern:\d$`: +এখানে আমরা `pattern:\d$` এর পরিবর্তে `pattern:\d\n` খুঁজি: ```js run let str = `Winnie: 1 @@ -78,10 +82,10 @@ Eeyore: 3`; console.log( str.match(/\d\n/g) ); // 1\n,2\n ``` -As we can see, there are 2 matches instead of 3. +এখানে আমরা দেখতে পাচ্ছি। ৩ টা ফলাফলের বদলে ২ টি ফলাফল পাওয়া গেছে। -That's because there's no newline after `subject:3` (there's text end though, so it matches `pattern:$`). +কেননা `subject:3` এর পর কোন নিউলাইন নেই (যদি টেক্সট শেষও হয়ে যায়, `pattern:$` ব্যবহার করলে আমরা `subject:3`-ও পেতাম)। -Another difference: now every match includes a newline character `match:\n`. Unlike the anchors `pattern:^` `pattern:$`, that only test the condition (start/end of a line), `\n` is a character, so it becomes a part of the result. +আরেকটি পার্থক্য: এখন পাওয়া প্রতিটি মিলে একটি নিউলাইন `match:\n` ক্যারাক্টারও অন্তর্ভুক্ত। অ্যাঙ্কর প্যাটার্নগুলো `pattern:^` `pattern:$` কেবল লাইনের শুরু আর শেষের কন্ডিশন চেক করে, যেহেতু `\n` ও একটি ক্যারাক্টার, এটিও ফলাফলের একটি অংশ হয়ে যায়। -So, a `\n` in the pattern is used when we need newline characters in the result, while anchors are used to find something at the beginning/end of a line. +সুতরাং, আমাদের ফলাফলে যদি নিউলাইন ক্যারাক্টার প্রয়োজন হয় আমরা প্যাটার্নে `\n` ব্যবহার করি, অন্যথায় লাইনের শুরুতে বা শেষে কিছু খুঁজতে অ্যাঙ্কর ব্যবহার করি। diff --git a/9-regular-expressions/07-regexp-escaping/article.md b/9-regular-expressions/07-regexp-escaping/article.md index 1ad3ac98c..58c0976a0 100644 --- a/9-regular-expressions/07-regexp-escaping/article.md +++ b/9-regular-expressions/07-regexp-escaping/article.md @@ -1,49 +1,55 @@ -# Escaping, special characters +# এস্কেপিং, স্পেশাল ক্যারাক্টার -As we've seen, a backslash `pattern:\` is used to denote character classes, e.g. `pattern:\d`. So it's a special character in regexps (just like in regular strings). +আমরা দেখেছি, ব্যকস্ল্যাশ `pattern:\` বিভিন্ন ক্যারাক্টার ক্লাস বুঝাতে ব্যবহার করা হয়, যেমন `pattern:\d`। তাই এটি রেগুলার এক্সপ্রেশনের একটি স্পেশাল ক্যারাক্টার (স্ট্রিংয়ের মত)। +<<<<<<< HEAD +এছাড়াও আরো কিছু স্পেশাল ক্যারাক্টার আছে, যা রেগুলার এক্সপ্রেশনে ভিন্ন অর্থ বুঝায়। এদের সাহায্যে বিভিন্ন জটিল প্যাটার্ন আমরা খুঁজতে পারি। এদের সম্পূর্ন তালিকাটি হল: `pattern:[ \ ^ $ . | ? * + ( )`। + +তালিকাটি আপনার মুখস্ত করার দরকার নেই -- খুব তাড়াতাড়ি আমরা প্রত্যেকটি স্পেশাল ক্লাস সম্পর্কে বিস্তারিত জানব, আর তখন আমরা অটোমেটিক প্রত্যেকটি ক্যারাক্টার শিখে যাব। +======= There are other special characters as well, that have special meaning in a regexp, such as `pattern:[ ] { } ( ) \ ^ $ . | ? * +`. They are used to do more powerful searches. Don't try to remember the list -- soon we'll deal with each of them, and you'll know them by heart automatically. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -## Escaping +## এস্কেপিং -Let's say we want to find literally a dot. Not "any character", but just a dot. +মনে করুন আমরা একটি ডট খুঁজে পেতে চাই। "যেকোন ক্যারাক্টার" নয় শুধু ডট(যেহেতু রেগুলার এক্সপ্রেশনে ডট দ্বারা যেকোন ক্যারাক্টার বুঝায়)। -To use a special character as a regular one, prepend it with a backslash: `pattern:\.`. +স্পেশাল ক্যারাক্টার সমূহকে রেগুলার ক্যারাক্টারের মত ব্যবহার করতে চাইলে এর পূর্বে একটি ব্যাকস্ল্যাশ যুক্ত করতে হবে: `pattern:\.`। -That's also called "escaping a character". +একে বলা হয় "ক্যারাক্টার এস্কেপিং"। -For example: +যেমন: ```js run alert( "Chapter 5.1".match(/\d\.\d/) ); // 5.1 (match!) -alert( "Chapter 511".match(/\d\.\d/) ); // null (looking for a real dot \.) +alert( "Chapter 511".match(/\d\.\d/) ); // null (এখানে ডট খুঁজা হচ্ছে \.) ``` -Parentheses are also special characters, so if we want them, we should use `pattern:\(`. The example below looks for a string `"g()"`: +প্রথম বন্ধনীও স্পেশাল ক্যারাক্টার, তো যদি আমরা এদের খুঁজতে চাই, আমাদের এভাবে লিখা উচিত `pattern:\(`। নিচের উদাহরণটিতে দেখুন আমরা `"g()"` কে খুঁজে পেতে চাই: ```js run alert( "function g()".match(/g\(\)/) ); // "g()" ``` -If we're looking for a backslash `\`, it's a special character in both regular strings and regexps, so we should double it. +যদি আমরা ব্যাকস্ল্যাশ `\` খুঁজে পেতে চাই, রেগুলার এক্সপ্রেশন এবং রেগুলার স্ট্রিং উভয়ের মধ্যেই এটি একটি স্পেশাল ক্যারাক্টার, তো ব্যাকস্ল্যাশের জন্য আমাদের দুটি ব্যাকস্ল্যাশ দিতে হবে। ```js run alert( "1\\2".match(/\\/) ); // '\' ``` -## A slash +## স্ল্যাশ -A slash symbol `'/'` is not a special character, but in JavaScript it is used to open and close the regexp: `pattern:/...pattern.../`, so we should escape it too. +যদিও স্ল্যাশ চিহ্ন `'/'` কোন স্পেশাল ক্যারাক্টার না, কিন্তু জাভাস্ক্রিপ্টে এটি দ্বারা রেগুলার এক্সপ্রেশন বুঝায়: `pattern:/...pattern.../`, তাই আমাদের এদেরও স্কেপ করার প্রয়োজন হতে পারে। -Here's what a search for a slash `'/'` looks like: +আমরা এভাবে স্ল্যাশ `'/'` খুঁজতে পারি: ```js run alert( "/".match(/\//) ); // '/' ``` -On the other hand, if we're not using `pattern:/.../`, but create a regexp using `new RegExp`, then we don't need to escape it: +আবার যখন আমরা এভাবে প্যাটার্ন `pattern:/.../` তৈরির বদলে `new RegExp` দিয়ে প্যাটার্ন বানাব, তখন আমাদের এটি স্কেপ করা লাগবে না: ```js run alert( "/".match(new RegExp("/")) ); // finds / @@ -51,9 +57,9 @@ alert( "/".match(new RegExp("/")) ); // finds / ## new RegExp -If we are creating a regular expression with `new RegExp`, then we don't have to escape `/`, but need to do some other escaping. +যদি আমরা `new RegExp` এর মাধ্যমে রেগুলার এক্সপ্রেশন তৈরি করি, আমাদের স্ল্যাশ `/` কে স্কেপ করা লাগবে না, কিন্তু অন্যান্য স্পেশাল ক্যারাক্টারকে স্কেপ করা লাগবে। -For instance, consider this: +উদাহরণস্বরূপ, এটি দেখুন: ```js run let regexp = new RegExp("\d\.\d"); @@ -61,39 +67,49 @@ let regexp = new RegExp("\d\.\d"); alert( "Chapter 5.1".match(regexp) ); // null ``` -The similar search in one of previous examples worked with `pattern:/\d\.\d/`, but `new RegExp("\d\.\d")` doesn't work, why? +এই প্যাটার্নটি `pattern:/\d\.\d/` আগের উদাহরণে কাজ করছিল, কিন্তু `new RegExp("\d\.\d")` এর সাথে কাজ করছে না কেন? -The reason is that backslashes are "consumed" by a string. As we may recall, regular strings have their own special characters, such as `\n`, and a backslash is used for escaping. +কেননা রেগুলার স্ট্রিংয়ে ব্যাকস্ল্যাশ "নিজস্ব স্পেশাল ক্যারাক্টারের" জন্য ব্যবহৃত হয় যেমন `\n`, এখানে ব্যাকস্ল্যাশ এস্কেপিংয়ের জন্য ব্যবহৃত হয়। +<<<<<<< HEAD +এখানে দেখুন "\d\.\d" এর আউটপুট কি দেখায়: +======= Here's how "\d\.\d" is perceived: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run alert("\d\.\d"); // d.d ``` -String quotes "consume" backslashes and interpret them on their own, for instance: +স্ট্রিংয়ে ব্যাকস্ল্যাশ স্পেশাল কিছু ক্যারাক্টারের জন্য ব্যবহৃত হয়, উদাহরণস্বরূপ: -- `\n` -- becomes a newline character, -- `\u1234` -- becomes the Unicode character with such code, -- ...And when there's no special meaning: like `pattern:\d` or `\z`, then the backslash is simply removed. +- `\n` -- নিউলাইন ক্যারাক্টার বুঝায়, +- `\u1234` -- ইউনিকোড বুঝায়, +- ...এবং যখন কোন বিশেষ ক্যারাক্টার বুঝায় না: যেমন `pattern:\d` বা `\z`, তখন ব্যাকস্ল্যাশ ক্যারাক্টারটি রিমুভ হয়ে যায়। -So `new RegExp` gets a string without backslashes. That's why the search doesn't work! +সুতরাং `new RegExp` স্ট্রিং হতে ব্যাকস্ল্যাশ রিমুভ হয়ে যায়। এজন্য সার্চ কাজ করে না! -To fix it, we need to double backslashes, because string quotes turn `\\` into `\`: +এটি ফিক্স করতে আমাদের দুটি ব্যাকস্ল্যাশ ব্যবহার করতে হবে, কেননা `\\` এটির আউটপুট হবে `\`: ```js run *!* let regStr = "\\d\\.\\d"; */!* -alert(regStr); // \d\.\d (correct now) +alert(regStr); // \d\.\d (এখন ঠিক আছে) let regexp = new RegExp(regStr); alert( "Chapter 5.1".match(regexp) ); // 5.1 ``` -## Summary +## সারাংশ +<<<<<<< HEAD +- সাধারণত স্পেশাল ক্যারাক্টারসমূহ সার্চ করতে `pattern:[ \ ^ $ . | ? * + ( )` আমাদের ব্যাকস্ল্যাশ `\` দ্বারা ("এস্কেপের জন্য") প্রিপেন্ড করে নিতে হবে। +- যদি `pattern:/.../` এভাবে প্যাটার্ন ডিক্লেয়ার করি আমাদের `/` কেও এস্কেপ করে নিতে হবে (তবে `new RegExp` এ না)। +- যখন প্যাটার্নটি `new RegExp` এর মাধ্যমে ডিক্লেয়ার করা হবে, আমাদের দুটি ব্যাকস্ল্যাশ `\\` ব্যবহার করতে হবে, কেননা স্ট্রিংয়ে এটিকে একটি হিসেবে বিবেচনা করা হবে। +======= - To search for special characters `pattern:[ \ ^ $ . | ? * + ( )` literally, we need to prepend them with a backslash `\` ("escape them"). - We also need to escape `/` if we're inside `pattern:/.../` (but not inside `new RegExp`). - When passing a string to `new RegExp`, we need to double backslashes `\\`, cause string quotes consume one of them. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 diff --git a/9-regular-expressions/08-regexp-character-sets-and-ranges/1-find-range-1/solution.md b/9-regular-expressions/08-regexp-character-sets-and-ranges/1-find-range-1/solution.md index 85c7748f7..7a5e7eda0 100644 --- a/9-regular-expressions/08-regexp-character-sets-and-ranges/1-find-range-1/solution.md +++ b/9-regular-expressions/08-regexp-character-sets-and-ranges/1-find-range-1/solution.md @@ -1,11 +1,15 @@ -Answers: **no, yes**. +উত্তর: **না, হ্যাঁ**। -- In the script `subject:Java` it doesn't match anything, because `pattern:[^script]` means "any character except given ones". So the regexp looks for `"Java"` followed by one such symbol, but there's a string end, no symbols after it. +- `subject:Java` এ কোন কিছুর সাথে ম্যাচ হবেনা, কারন `pattern:[^script]` দ্বারা বুঝায় "প্রদত্ত ক্যারাক্টার ব্যতীত যেকোন ক্যারাক্টার"। সুতরাং রেগুলার এক্সপ্রেশনটি `"Java"` এর পর যেকোন একটি ক্যারাক্টার খুঁজে, কিন্তু স্ট্রিংটির শেষে কোন ক্যারাক্টার নেই। ```js run alert( "Java".match(/Java[^script]/) ); // null ``` +<<<<<<< HEAD +- হ্যাঁ, কারণ `pattern:[^script]` অংশটি `"S"` ক্যারাক্টারের সাথে ম্যাচ করে। `"S"` ক্যারাক্টারটি `pattern:script` এর মধ্যে নেই। যেহেতু রেগুলার এক্সপ্রেশন কেস-সেনসিটিভ (কোন `pattern:i` ফ্ল্যাগ নেই), তাই ক্যারাক্টার `"S"` এবং `"s"` কে আলাদা হিসেবে বিবেচনা করে। +======= - Yes, because the `pattern:[^script]` part matches the character `"S"`. It's not one of `pattern:script`. As the regexp is case-sensitive (no `pattern:i` flag), it treats `"S"` as a different character from `"s"`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run alert( "JavaScript".match(/Java[^script]/) ); // "JavaS" diff --git a/9-regular-expressions/08-regexp-character-sets-and-ranges/1-find-range-1/task.md b/9-regular-expressions/08-regexp-character-sets-and-ranges/1-find-range-1/task.md index 5a48e01e7..bf3f739b2 100644 --- a/9-regular-expressions/08-regexp-character-sets-and-ranges/1-find-range-1/task.md +++ b/9-regular-expressions/08-regexp-character-sets-and-ranges/1-find-range-1/task.md @@ -1,5 +1,5 @@ # Java[^script] -We have a regexp `pattern:/Java[^script]/`. +আমাদের এ ধরণের একটি প্যাটার্ন আছে `pattern:/Java[^script]/`। -Does it match anything in the string `subject:Java`? In the string `subject:JavaScript`? +এটি কি এই স্ট্রিংয়ের `subject:Java` সাথে ম্যাচ হবে? অথবা এই স্ট্রিংয়ের `subject:JavaScript`? diff --git a/9-regular-expressions/08-regexp-character-sets-and-ranges/2-find-time-2-formats/solution.md b/9-regular-expressions/08-regexp-character-sets-and-ranges/2-find-time-2-formats/solution.md index 69ade1b19..9830d049e 100644 --- a/9-regular-expressions/08-regexp-character-sets-and-ranges/2-find-time-2-formats/solution.md +++ b/9-regular-expressions/08-regexp-character-sets-and-ranges/2-find-time-2-formats/solution.md @@ -1,8 +1,8 @@ -Answer: `pattern:\d\d[-:]\d\d`. +উত্তর: `pattern:\d\d[-:]\d\d`. ```js run let regexp = /\d\d[-:]\d\d/g; alert( "Breakfast at 09:00. Dinner at 21-30".match(regexp) ); // 09:00, 21-30 ``` -Please note that the dash `pattern:'-'` has a special meaning in square brackets, but only between other characters, not when it's in the beginning or at the end, so we don't need to escape it. +দয়া করে মনে রাখা উচিত তৃতীয় বন্ধনীতে ড্যাশ `pattern:'-'` এর স্পেশাল অর্থ আছে, কিন্তু যদি দুটি ক্যারাক্টারের মাঝে ব্যবহার করি, কিন্তু শুরুতে অথবা শেষে ড্যাশ-ই বুঝায়, সুতরাং আমাদের এটি এস্কেপ করার প্রয়োজন নেই। diff --git a/9-regular-expressions/08-regexp-character-sets-and-ranges/2-find-time-2-formats/task.md b/9-regular-expressions/08-regexp-character-sets-and-ranges/2-find-time-2-formats/task.md index c8441caf4..2f35da7e7 100644 --- a/9-regular-expressions/08-regexp-character-sets-and-ranges/2-find-time-2-formats/task.md +++ b/9-regular-expressions/08-regexp-character-sets-and-ranges/2-find-time-2-formats/task.md @@ -1,12 +1,12 @@ -# Find the time as hh:mm or hh-mm +# সময় খুঁজা hh:mm অথবা hh-mm -The time can be in the format `hours:minutes` or `hours-minutes`. Both hours and minutes have 2 digits: `09:00` or `21-30`. +সময়ের ফরম্যাট হতে পারে এভাবে `hours:minutes` অথবা `hours-minutes`. ঘন্টা এবং মিনিট উভয়েই দুই ডিজিটের হয়: `09:00` অথবা `21-30`. -Write a regexp to find time: +উপরোল্লিখিত ফরম্যাটে সময় খুঁজার জন্য প্যাটার্ন লিখুন: ```js let regexp = /your regexp/g; alert( "Breakfast at 09:00. Dinner at 21-30".match(regexp) ); // 09:00, 21-30 ``` -P.S. In this task we assume that the time is always correct, there's no need to filter out bad strings like "45:67". Later we'll deal with that too. +বি.দ্র. দুই ডিজিটের যেকোন সময় সঠিক হিসেবে বিবেচনা করতে পারি, আমাদের স্ট্রিং ভ্যালিডেশন নিয়ে চিন্তিত হতে হবে না যেমন "45:67"। পরবর্তীতে আমরা এটিও দেখব। diff --git a/9-regular-expressions/08-regexp-character-sets-and-ranges/article.md b/9-regular-expressions/08-regexp-character-sets-and-ranges/article.md index b7b82d45f..3c5036743 100644 --- a/9-regular-expressions/08-regexp-character-sets-and-ranges/article.md +++ b/9-regular-expressions/08-regexp-character-sets-and-ranges/article.md @@ -1,169 +1,188 @@ -# Sets and ranges [...] +# সেট এবং রেঞ্জ [...] -Several characters or character classes inside square brackets `[…]` mean to "search for any character among given". +তৃতীয় বন্ধনীর `[…]` এর মধ্যে বিভিন্ন ক্যারাক্টার অথবা বিভিন্ন ক্যারাক্টার ক্লাসের দ্বারা বুঝায় "প্রদত্ত ক্যারাক্টারসমূহের যেকোন একটি ক্যারাক্টার থাকতে পারে"। -## Sets +## সেট -For instance, `pattern:[eao]` means any of the 3 characters: `'a'`, `'e'`, or `'o'`. +উদাহরণস্বরূপ, `pattern:[eao]` এর মানে `'a'`, `'e'`, বা `'o'` এ ৩টি ক্যারাক্টারের যেকোন একটি। -That's called a *set*. Sets can be used in a regexp along with regular characters: +একে বলা হয় *সেট*। রেগুলার এক্সপ্রেশন প্যাটার্নে রেগুলার ক্যারাক্টারের সাথে সেটও ব্যবহার করা যায়: ```js run -// find [t or m], and then "op" +// প্রথমে [t বা m] খুঁজবে, এবং তারপর "op" alert( "Mop top".match(/[tm]op/gi) ); // "Mop", "top" ``` -Please note that although there are multiple characters in the set, they correspond to exactly one character in the match. +দয়া করে মনে রাখা উচিত সেটে অনেক ক্যারাক্টার থাকলেও, এরা যেকোন একটি ক্যারাক্টারের সাথে ম্যাচ করে। -So the example below gives no matches: +সুতরাং নিচের উদাহরণটিতে কোন ম্যাচ হবেনা: ```js run -// find "V", then [o or i], then "la" -alert( "Voila".match(/V[oi]la/) ); // null, no matches +// প্রথমে "V", তারপর [o অথবা i], তারপর "la" +alert( "Voila".match(/V[oi]la/) ); // null, কোন ম্যাচ হবেনা ``` -The pattern searches for: +প্যাটার্নটি এভাবে সার্চ করে: - `pattern:V`, -- then *one* of the letters `pattern:[oi]`, -- then `pattern:la`. +- তারপর যেকোন *একটি* অক্ষর `pattern:[oi]`, +- তারপর `pattern:la`। -So there would be a match for `match:Vola` or `match:Vila`. +সুতরাং এটি `match:Vola` অথবা `match:Vila` এর সাথে ম্যাচ হতে পারে। -## Ranges +## রেঞ্জ -Square brackets may also contain *character ranges*. +তৃতীয় বন্ধনীতে *ক্যারাক্টারের রেঞ্জ*-ও থাকতে পারে। -For instance, `pattern:[a-z]` is a character in range from `a` to `z`, and `pattern:[0-5]` is a digit from `0` to `5`. +উদাহরণস্বরূপ, `pattern:[a-z]` হল `a` হতে `z` পর্যন্ত ক্যারাক্টারসমূহের রেঞ্জ, এবং `pattern:[0-5]` হল `0` হতে `5` ডিজিটসমূহের রেঞ্জ। -In the example below we're searching for `"x"` followed by two digits or letters from `A` to `F`: +নিচের উদাহরণটিতে আমরা হেক্সাডেসিমেল সংখ্যার জন্য `"x"` এর পর দুটি ডিজিট অথবা `A` to `F` পর্যন্ত অক্ষরগুলো খুঁজি: ```js run alert( "Exception 0xAF".match(/x[0-9A-F][0-9A-F]/g) ); // xAF ``` -Here `pattern:[0-9A-F]` has two ranges: it searches for a character that is either a digit from `0` to `9` or a letter from `A` to `F`. +এখানে `pattern:[0-9A-F]` এর দুটি রেঞ্জ রয়েছে: এটি সার্চ করে কোন ক্যারাক্টার `0` হতে `9` অথবা `A` হতে `F` এর মধ্যে আছে কিনা তা চেক করে। -If we'd like to look for lowercase letters as well, we can add the range `a-f`: `pattern:[0-9A-Fa-f]`. Or add the flag `pattern:i`. +যদি আমরা ছোট হাতের অক্ষর দিয়েও খুঁজতে চাই, আমরা এই `a-f` রেঞ্জটাও যুক্ত করতে পারি: `pattern:[0-9A-Fa-f]`। অথবা এই ফ্ল্যাগটাও `pattern:i` যুক্ত করতে পারি। -We can also use character classes inside `[…]`. +আমরা `[…]` এর মধ্যে ক্যারাক্টার ক্লাসও ব্যবহার করতে পারি। -For instance, if we'd like to look for a wordly character `pattern:\w` or a hyphen `pattern:-`, then the set is `pattern:[\w-]`. +উদাহরণস্বরূপ, যদি আমরা কোন ওয়ার্ডলি ক্যারাক্টার `pattern:\w` অথবা হাইফেন `pattern:-` খুঁজতে চাই সেটটি হবে এমন `pattern:[\w-]`। -Combining multiple classes is also possible, e.g. `pattern:[\s\d]` means "a space character or a digit". +অনেকগুলো ক্লাসকে একসাথে করা যায়, যেমন `pattern:[\s\d]` দ্বারা বুঝায় "একটি স্পেস ক্যারাক্টার অথবা একটি ডিজিট"। -```smart header="Character classes are shorthands for certain character sets" -For instance: +```smart header="ক্যারাক্টার ক্লাসগুলো নির্দিষ্ট ক্যারাক্টার সেটের শর্টহ্যান্ড" +উদাহরণস্বরূপ: +<<<<<<< HEAD +- **\d** -- এটি `pattern:[0-9]` এর মত, +- **\w** -- এটি `pattern:[a-zA-Z0-9_]` এর মত, +- **\s** -- এটি `pattern:[\t\n\v\f\r ]` এর মত, এছাড়াও আরো কিছু ইউনিকোড স্পেস ক্যারাক্টার। +======= - **\d** -- is the same as `pattern:[0-9]`, - **\w** -- is the same as `pattern:[a-zA-Z0-9_]`, - **\s** -- is the same as `pattern:[\t\n\v\f\r ]`, plus few other rare Unicode space characters. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ``` -### Example: multi-language \w +### উদাহরণ: মাল্টি-ল্যাংগুয়েজ \w -As the character class `pattern:\w` is a shorthand for `pattern:[a-zA-Z0-9_]`, it can't find Chinese hieroglyphs, Cyrillic letters, etc. +যেহেতু `pattern:[a-zA-Z0-9_]` এর শর্টহ্যান্ড ক্যারাক্টার ক্লাস হল `pattern:\w`, তাই এটি দ্বারা চাইনিজ, সিরিলিক ইত্যাদি ভাষার অক্ষরগুলো পাওয়া যায় না। +<<<<<<< HEAD +আমরা আরো সহজে প্যাটার্ন লিখতে পারি, যা দ্বারা যেকোন ভাষার ওয়ার্ডলি ক্যারাক্টার খুঁজা যায়। ইউনিকোড প্রপার্টি দ্বারা সহজে করা যায়: `pattern:[\p{Alpha}\p{M}\p{Nd}\p{Pc}\p{Join_C}]`। + +চলুন এর মর্মার্থ বুঝি. এটি `pattern:\w` এর মত আমরা নিজেদের একটি সেট তৈরি করেছি যাতে নিম্নলিখিত ইউনিকোড বৈশিষ্ট্যযুক্ত অক্ষরসমূহ অন্তর্ভুক্ত: +======= We can write a more universal pattern, that looks for wordly characters in any language. That's easy with Unicode properties: `pattern:[\p{Alpha}\p{M}\p{Nd}\p{Pc}\p{Join_C}]`. Let's decipher it. Similar to `pattern:\w`, we're making a set of our own that includes characters with following Unicode properties: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -- `Alphabetic` (`Alpha`) - for letters, -- `Mark` (`M`) - for accents, -- `Decimal_Number` (`Nd`) - for digits, -- `Connector_Punctuation` (`Pc`) - for the underscore `'_'` and similar characters, -- `Join_Control` (`Join_C`) - two special codes `200c` and `200d`, used in ligatures, e.g. in Arabic. +- `Alphabetic` (`Alpha`) - বর্ণের জন্য, +- `Mark` (`M`) - অ্যাকসেন্টের জন্য, +- `Decimal_Number` (`Nd`) - ডিজিটের জন্য, +- `Connector_Punctuation` (`Pc`) - আন্ডারস্কোর `'_'` এবং এ ধরণের ক্যারাক্টারের জন্য, +- `Join_Control` (`Join_C`) - দুটি বিশেষ কোড `200c` এবং `200d`, লিগচারে ব্যবহৃত হয় যেমন আরবীতে। -An example of use: +উদাহরণস্বরূপ: ```js run let regexp = /[\p{Alpha}\p{M}\p{Nd}\p{Pc}\p{Join_C}]/gu; let str = `Hi 你好 12`; -// finds all letters and digits: +// সব অক্ষর এবং ডিজিট পাব: alert( str.match(regexp) ); // H,i,你,好,1,2 ``` +<<<<<<< HEAD +অবশ্যই, আমরা প্যাটার্নটি ইডিট করতে পারি: নতুন প্রপার্টি সংযুক্ত বা বাদ দিতে পারি। ইউনিকোড প্রপার্টি সম্পর্কে বিস্তারিত এখানে জানতে পারবেন <info:regexp-unicode>। + +```warn header="ইউনিকোড প্রপার্টি ফায়ারফক্স এবং এজে সমর্থিত নয়" +ইউনিকোড প্রপার্টিসমূহ `pattern:p{…}` ফায়ারফক্স এবং এজে সমর্থিত নয়. যদি আমাদের দরকার হয়, তাহলে এই লাইব্রেরীটি ব্যবহার করতে হবে [XRegExp](http://xregexp.com/)। +======= Of course, we can edit this pattern: add Unicode properties or remove them. Unicode properties are covered in more details in the article <info:regexp-unicode>. ```warn header="Unicode properties aren't supported in IE" Unicode properties `pattern:p{…}` are not implemented in IE. If we really need them, we can use library [XRegExp](https://xregexp.com/). +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Or just use ranges of characters in a language that interests us, e.g. `pattern:[а-я]` for Cyrillic letters. +অথবা শুধু নির্দিষ্ট ভাষার রেঞ্জ ব্যবহার করতে পারি, যেমন: `pattern:[а-я]` সিরিলিক বর্ণের জন্য। ``` -## Excluding ranges +## এক্সক্লুডিং রেঞ্জ -Besides normal ranges, there are "excluding" ranges that look like `pattern:[^…]`. +নরমাল রেঞ্জের পাশাপাশি "এক্সক্লুডিং" রেঞ্জ আছে যার প্যাটার্নটি এমন `pattern:[^…]`। -They are denoted by a caret character `^` at the start and match any character *except the given ones*. +এটি রেঞ্জের শুরুতে ক্যারেট ক্যারাক্টার `^` দ্বারা লিখা হয় এবং *শুধুমাত্র রেঞ্জ সেটটি ব্যতীত* বাকী সকল ধরণের ক্যারাক্টারের সাথে ম্যাচ হয়। -For instance: +উদাহরণস্বরূপ: -- `pattern:[^aeyo]` -- any character except `'a'`, `'e'`, `'y'` or `'o'`. -- `pattern:[^0-9]` -- any character except a digit, the same as `pattern:\D`. -- `pattern:[^\s]` -- any non-space character, same as `\S`. +- `pattern:[^aeyo]` -- `'a'`, `'e'`, `'y'` বা `'o'` ব্যতীত যেকোন ক্যারাক্টার। +- `pattern:[^0-9]` -- ডিজিট ব্যতীত যেকোন ক্যারাক্টার, `pattern:\D` এর মত। +- `pattern:[^\s]` -- যেকোন নন-স্পেস ক্যারাক্টার, `\S` এর মত। -The example below looks for any characters except letters, digits and spaces: +নিচের উদাহরণটিতে অক্ষর, ডিজিট, স্পেস ব্যতীত অন্যান্য ক্যারাক্টার পাব: ```js run -alert( "alice15@gmail.com".match(/[^\d\sA-Z]/gi) ); // @ and . +alert( "alice15@gmail.com".match(/[^\d\sA-Z]/gi) ); // @ এবং . ``` -## Escaping in […] +## […] এস্কেপিং -Usually when we want to find exactly a special character, we need to escape it like `pattern:\.`. And if we need a backslash, then we use `pattern:\\`, and so on. +সাধারণত যখন আমরা স্পেশাল ক্যারাক্টার খুঁজি আমাদের ক্যারাক্টারটিকে এস্কেপ করে নিতে হয় যেমন `pattern:\.`, ব্যাকস্ল্যাশের জন্য `pattern:\\` ইত্যাদি। -In square brackets we can use the vast majority of special characters without escaping: +তবে তৃতীয় বন্ধনীর এর মধ্যে বেশিরভাগ স্পেশাল ক্যারাক্টার এস্কেপিং ছাড়া ব্যবহার করা যায়: -- Symbols `pattern:. + ( )` never need escaping. -- A hyphen `pattern:-` is not escaped in the beginning or the end (where it does not define a range). -- A caret `pattern:^` is only escaped in the beginning (where it means exclusion). -- The closing square bracket `pattern:]` is always escaped (if we need to look for that symbol). +- সিম্বলস `pattern:. + ( )` এস্কেপিংয়ের প্রয়োজন নেই। +- হাইফেন `pattern:-` শুরুতে অথবা শেষে এস্কেপিংয়ের প্রয়োজন নেই (যখন এটি দ্বারা রেঞ্জ বুঝায় না)। +- ক্যারেট `pattern:^` শুধুমাত্র শুরুতে এস্কেপ করে নিতে হয় (যেখানে এটি দ্বারা বুঝানো হয় সেটটি ব্যতীত)। +- ক্লোজিং ব্রাকেট `pattern:]` কে সর্বদা এস্কেপ করতে হয় (যদি আমাদের এটি ম্যাচ করতে হয়)। -In other words, all special characters are allowed without escaping, except when they mean something for square brackets. +অন্যার্থে বলা যায়, তৃতীয় বন্ধনীতে যেসব স্পেশাল ক্যারাক্টার ব্যবহৃত হয় সেসব ব্যতীত সকল স্পেশাল ক্যারাক্টার এস্কেপিং ছাড়া ব্যবহার করতে পারব। -A dot `.` inside square brackets means just a dot. The pattern `pattern:[.,]` would look for one of characters: either a dot or a comma. +তৃতীয় বন্ধনীতে ডট `.` দ্বারা শুধুমাত্র ডট বুঝায়। প্যাটার্নটি `pattern:[.,]` যেকোন একটি ক্যারাক্টার খুঁজবে: ডট অথবা কমা। -In the example below the regexp `pattern:[-().^+]` looks for one of the characters `-().^+`: +নিম্নের উদাহরণে `pattern:[-().^+]` প্যাটার্নটি `-().^+` এসব ক্যারাক্টার খুঁজবে: ```js run -// No need to escape +// এস্কেপ করার প্রয়োজন নেই let regexp = /[-().^+]/g; alert( "1 + 2 - 3".match(regexp) ); // Matches +, - ``` -...But if you decide to escape them "just in case", then there would be no harm: +...কিন্তু আপনি যদি "কোন ক্ষেত্রে" এদের এস্কেপ করেন, তাহলেও এটি আগের উদাহরণের মত কাজ করবে: ```js run -// Escaped everything +// সব ক্যারাক্টারকে এস্কিপিং করা হয়েছে let regexp = /[\-\(\)\.\^\+]/g; -alert( "1 + 2 - 3".match(regexp) ); // also works: +, - +alert( "1 + 2 - 3".match(regexp) ); // এটিও কাজ করে: +, - ``` -## Ranges and flag "u" +## রেঞ্জ এবং ফ্ল্যাগ "u" -If there are surrogate pairs in the set, flag `pattern:u` is required for them to work correctly. +যদি সেটে কোন "সারোগেট জোড়" <info:string> থাকে, তাহলে সঠিকভাবে কাজ করার জন্য `pattern:u` ফ্ল্যাগটি ব্যবহার করতে হবে। -For instance, let's look for `pattern:[𝒳𝒴]` in the string `subject:𝒳`: +উদাহরণস্বরূপ, চলুন এই স্ট্রিংয়ে `subject:𝒳` আমরা এই প্যাটার্নটি খুঁজি `pattern:[𝒳𝒴]`: ```js run -alert( '𝒳'.match(/[𝒳𝒴]/) ); // shows a strange character, like [?] -// (the search was performed incorrectly, half-character returned) +alert( '𝒳'.match(/[𝒳𝒴]/) ); // এমন [?] অদ্ভুত একটি ক্যারাক্টার দেখাবে +// (সার্চিংটি সঠিকভাবে কাজ করবে না, হাফ-ক্যারেক্টার রিটার্ন করবে) ``` -The result is incorrect, because by default regular expressions "don't know" about surrogate pairs. +রেজাল্টটি সঠিকভাবে পাব না, কেননা ডিফল্টভাবে রেগুলার এক্সপ্রেশন "সারোগেট জোড়" সম্পর্কে জানেনা। -The regular expression engine thinks that `[𝒳𝒴]` -- are not two, but four characters: -1. left half of `𝒳` `(1)`, -2. right half of `𝒳` `(2)`, -3. left half of `𝒴` `(3)`, -4. right half of `𝒴` `(4)`. +রেগুলার এক্সপ্রেশন ইঞ্জিন `[𝒳𝒴]` -- একে দুটি ক্যারাক্টারের বদলে চারটি ক্যারাক্টার ভাবে: +1. `𝒳` `(1)` এর বামের অর্ধেক, +2. `𝒳` `(2)` এর ডানের অর্ধেক, +3. `𝒴` `(3)` এর বামের অর্ধেক, +4. `𝒴` `(4)` এর ডানের অর্ধেক। -We can see their codes like this: +নিম্নে আমরা তাদের কোডগুলো দেখতে পাই: ```js run for(let i=0; i<'𝒳𝒴'.length; i++) { @@ -171,27 +190,27 @@ for(let i=0; i<'𝒳𝒴'.length; i++) { }; ``` -So, the example above finds and shows the left half of `𝒳`. +সুতরাং, উপরের উদাহরণে আমরা `𝒳` এর বামের অর্ধেক পাই। -If we add flag `pattern:u`, then the behavior will be correct: +যদি আমরা ফ্ল্যাগ `pattern:u` ব্যবহার করি, তাহলে এটি সঠিকভাবে কাজ করবে: ```js run alert( '𝒳'.match(/[𝒳𝒴]/u) ); // 𝒳 ``` -The similar situation occurs when looking for a range, such as `[𝒳-𝒴]`. +রেঞ্জের জন্যও এই ঘটনাটি ঘটে, যেমন `[𝒳-𝒴]`। -If we forget to add flag `pattern:u`, there will be an error: +যদি আমরা ফ্ল্যাগ `pattern:u` ব্যবহার না করি, তাহলে একটি ইরোর পাব: ```js run '𝒳'.match(/[𝒳-𝒴]/); // Error: Invalid regular expression ``` -The reason is that without flag `pattern:u` surrogate pairs are perceived as two characters, so `[𝒳-𝒴]` is interpreted as `[<55349><56499>-<55349><56500>]` (every surrogate pair is replaced with its codes). Now it's easy to see that the range `56499-55349` is invalid: its starting code `56499` is greater than the end `55349`. That's the formal reason for the error. +ফ্ল্যাগ `pattern: u` ছাড়া "সারোগেট জোড়া" এর কারণে দুটি অক্ষর হিসেবে বিবেচনা করে, সুতরাং `[𝒳-𝒴]` এটি এভাবে `[<55349><56499>-<55349><56500>]` বিবেচিত হয় (প্রতিটি সারোগেট জোড় তার কোড দ্বারা প্রতিস্থাপিত হয়)। এখন রেঞ্জটি এভাবে বিবেচিত হয় `56499-55349` যা ইনভ্যালিড: কেননা রেঞ্জের শুরুর ক্যারাক্টারটি `56499` শেষের ক্যারাক্টার হতে বড় `55349`। এই কারণেই ইরোরটি সংঘটিত হয়। -With the flag `pattern:u` the pattern works correctly: +ফ্ল্যাগ `pattern:u` এর সাথে প্যাটার্নটি সঠিকভাবে কাজ করে: ```js run -// look for characters from 𝒳 to 𝒵 +// 𝒳 to 𝒵 পর্যন্ত ক্যারাক্টার সমূহকে খুঁজে alert( '𝒴'.match(/[𝒳-𝒵]/u) ); // 𝒴 ``` diff --git a/9-regular-expressions/09-regexp-quantifiers/1-find-text-manydots/solution.md b/9-regular-expressions/09-regexp-quantifiers/1-find-text-manydots/solution.md index 21b8762ec..2fe88aa59 100644 --- a/9-regular-expressions/09-regexp-quantifiers/1-find-text-manydots/solution.md +++ b/9-regular-expressions/09-regexp-quantifiers/1-find-text-manydots/solution.md @@ -1,9 +1,9 @@ -Solution: +সমাধান: ```js run let regexp = /\.{3,}/g; alert( "Hello!... How goes?.....".match(regexp) ); // ..., ..... ``` -Please note that the dot is a special character, so we have to escape it and insert as `\.`. +আমাদের মনে রাখা উচিত ডট একটি স্পেশাল ক্যারাক্টার, সুতরাং এটিকে আমাদের ব্যাকস্লাশের `\.` মাধ্যমে এস্কেপিং করে নিতে হবে। \ No newline at end of file diff --git a/9-regular-expressions/09-regexp-quantifiers/1-find-text-manydots/task.md b/9-regular-expressions/09-regexp-quantifiers/1-find-text-manydots/task.md index 4140b4a98..c34825162 100644 --- a/9-regular-expressions/09-regexp-quantifiers/1-find-text-manydots/task.md +++ b/9-regular-expressions/09-regexp-quantifiers/1-find-text-manydots/task.md @@ -1,14 +1,14 @@ -importance: 5 +গুরুত্বপূর্ন: ৫ --- -# How to find an ellipsis "..." ? +# কিভাবে একটি উপবৃত্ত খুঁজে পাব "..." ? -Create a regexp to find ellipsis: 3 (or more?) dots in a row. +একটি রেগুলার এক্সপ্রেশন লিখুন যা: ৩ (অথবা ততোধিক?) ডটের উপবৃত্ত খুঁজবে। -Check it: +এটি দেখুন: ```js -let regexp = /your regexp/g; +let regexp = /আপনার রেগুলার এক্সপ্রেশনটি লিখুন/g; alert( "Hello!... How goes?.....".match(regexp) ); // ..., ..... ``` diff --git a/9-regular-expressions/09-regexp-quantifiers/2-find-html-colors-6hex/solution.md b/9-regular-expressions/09-regexp-quantifiers/2-find-html-colors-6hex/solution.md index afee89c50..e902a4c91 100644 --- a/9-regular-expressions/09-regexp-quantifiers/2-find-html-colors-6hex/solution.md +++ b/9-regular-expressions/09-regexp-quantifiers/2-find-html-colors-6hex/solution.md @@ -1,10 +1,10 @@ -We need to look for `#` followed by 6 hexadecimal characters. +আমাদের `#` এর পর ৬টি হেক্সাডেসিমেল ক্যারাক্টার খোঁজা লাগবে। -A hexadecimal character can be described as `pattern:[0-9a-fA-F]`. Or if we use the `pattern:i` flag, then just `pattern:[0-9a-f]`. +`pattern:[0-9a-fA-F]` এর মাধ্যমে আমরা হেক্সাডেসিমেল ক্যারাক্টার সংজ্ঞায়িত করতে পারি। অথবা যদি আমরা `pattern:i` ফ্ল্যাগ ব্যবহার করি তাহলে প্যাটার্নটি হবে `pattern:[0-9a-f]`। -Then we can look for 6 of them using the quantifier `pattern:{6}`. +এখন আমরা কোয়ান্টিফায়ার `pattern:{6}` ব্যবহার করে ৬টি ক্যারাক্টার খুঁজতে পারি। -As a result, we have the regexp: `pattern:/#[a-f0-9]{6}/gi`. +ফলস্বরূপ, রেগুলার এক্সপ্রেশনটি হবে: `pattern:/#[a-f0-9]{6}/gi`। ```js run let regexp = /#[a-f0-9]{6}/gi; @@ -14,18 +14,18 @@ let str = "color:#121212; background-color:#AA00ef bad-colors:f#fddee #fd2" alert( str.match(regexp) ); // #121212,#AA00ef ``` -The problem is that it finds the color in longer sequences: +তবে এর সমস্যা হল দীর্ঘতম সিক্যুয়েন্সেও এটি কালার খুঁজবে: ```js run alert( "#12345678".match( /#[a-f0-9]{6}/gi ) ) // #123456 ``` -To fix that, we can add `pattern:\b` to the end: +শেষে `pattern:\b` সংযোজন করে আমরা এটি সমাধান করতে পারি: ```js run -// color +// সঠিক কালার কোড alert( "#123456".match( /#[a-f0-9]{6}\b/gi ) ); // #123456 -// not a color +// ভুল কালার কোড alert( "#12345678".match( /#[a-f0-9]{6}\b/gi ) ); // null ``` diff --git a/9-regular-expressions/09-regexp-quantifiers/2-find-html-colors-6hex/task.md b/9-regular-expressions/09-regexp-quantifiers/2-find-html-colors-6hex/task.md index 9a1923a7e..5a4867cc4 100644 --- a/9-regular-expressions/09-regexp-quantifiers/2-find-html-colors-6hex/task.md +++ b/9-regular-expressions/09-regexp-quantifiers/2-find-html-colors-6hex/task.md @@ -1,15 +1,15 @@ -# Regexp for HTML colors +# এইচটিএমএল কালারের জন্য রেগুলার এক্সপ্রেশন -Create a regexp to search HTML-colors written as `#ABCDEF`: first `#` and then 6 hexadecimal characters. +হেক্সাডেসিমেল এইচটিএমএল কালার `#ABCDEF`: প্রথমে `#` তারপর ৬ টি হেক্সাডেসিমেল ক্যারাক্টার খোঁজার জন্য একটি রেগুলার এক্সপ্রেশন লিখুন। -An example of use: +ব্যবহারযোগ্য একটি উদাহরণ: ```js -let regexp = /...your regexp.../ +let regexp = /...আপনার রেগুলার এক্সপ্রেশনটি লিখুন.../ let str = "color:#121212; background-color:#AA00ef bad-colors:f#fddee #fd2 #12345678"; alert( str.match(regexp) ) // #121212,#AA00ef ``` -P.S. In this task we do not need other color formats like `#123` or `rgb(1,2,3)` etc. +পুনশ্চ এই টাস্কে আমাদের `#123` বা `rgb(1,2,3)` ইত্যাদি কালার ফরমেটগুলোর প্রয়োজন নেই। \ No newline at end of file diff --git a/9-regular-expressions/09-regexp-quantifiers/article.md b/9-regular-expressions/09-regexp-quantifiers/article.md index 1a7eecfeb..81b4ae172 100644 --- a/9-regular-expressions/09-regexp-quantifiers/article.md +++ b/9-regular-expressions/09-regexp-quantifiers/article.md @@ -1,46 +1,46 @@ -# Quantifiers +, *, ? and {n} +# কোয়ান্টিফায়ার +, *, ? এবং {n} -Let's say we have a string like `+7(903)-123-45-67` and want to find all numbers in it. But unlike before, we are interested not in single digits, but full numbers: `7, 903, 123, 45, 67`. +এখন মনে করন আমাদের এমন একটি `+7(903)-123-45-67` স্ট্রিং আছে এবং আমরা এর সকল নাম্বার খুঁজে পেতে চাই। কিন্ত পূর্বের মত, আমরা একক অঙ্ক চাই না, পূর্ণ সংখ্যাগুলো চাই: `7, 903, 123, 45, 67`। -A number is a sequence of 1 or more digits `pattern:\d`. To mark how many we need, we can append a *quantifier*. +সংখ্যা হল এক বা একাধিক অঙ্কের একটি সমষ্টি `pattern:\d`। আমাদের প্রয়োজনমত অঙ্কের জন্য আমরা *quantifier* সংযোজন করতে পারি। -## Quantity {n} +## সংখ্যা {n} -The simplest quantifier is a number in curly braces: `pattern:{n}`. +সবচেয়ে সহজ কোয়ান্টিফায়ার হল দ্বিতীয় বন্ধনীর মধ্যে একটি সংখ্যা: `pattern:{n}`। -A quantifier is appended to a character (or a character class, or a `[...]` set etc) and specifies how many we need. +কোয়ান্টিফায়ারে যেকোন ধরণের ক্যারাক্টার (অথবা ক্যারাক্টার ক্লাস, অথবা `[...]` সেট ইত্যাদি) আমাদের প্রয়োজনমত সংযোজন করতে পারি। -It has a few advanced forms, let's see examples: +এটি ব্যবহারের বিভিন্ন উপায় আছে, চলুন কয়েকটি উদাহরণ দেখি: -The exact count: `pattern:{5}` -: `pattern:\d{5}` denotes exactly 5 digits, the same as `pattern:\d\d\d\d\d`. +নির্দিষ্ট সংখ্যা গণনা: `pattern:{5}` +: `pattern:\d{5}` এটি দ্বারা ৫টি অঙ্ক বুঝায়, যা `pattern:\d\d\d\d\d` এর অনুরূপ। - The example below looks for a 5-digit number: + নিচের উদাহরণে একটি ৫ অঙ্কের সংখ্যা খোঁজা হচ্ছে: ```js run alert( "I'm 12345 years old".match(/\d{5}/) ); // "12345" ``` - We can add `\b` to exclude longer numbers: `pattern:\b\d{5}\b`. + আমরা `\b` যুক্ত করে এর চেয়ে বড় অঙ্কের সংখ্যাগুলো বাদ দিতে পারি: `pattern:\b\d{5}\b`। -The range: `pattern:{3,5}`, match 3-5 times -: To find numbers from 3 to 5 digits we can put the limits into curly braces: `pattern:\d{3,5}` +রেঞ্জ: `pattern:{3,5}`, ৩-৫ অঙ্কের সংখ্যার সাথে মিল খুঁজে +: ৩ থেকে ৫ অঙ্কের মধ্যের সংখ্যা গুলো খুঁজতে আমরা দ্বিতীয় বন্ধনীতে সীমা নির্ধারণ করে দিতে পারি: `pattern:\d{3,5}` ```js run alert( "I'm not 12, but 1234 years old".match(/\d{3,5}/) ); // "1234" ``` - We can omit the upper limit. + আমরা সর্বোচ্চ সীমাটি বাদ দিতে পারি। - Then a regexp `pattern:\d{3,}` looks for sequences of digits of length `3` or more: + এ রেগুলার এক্সপ্রেশনটি `pattern:\d{3,}` ৩ বা ততোধিক অঙ্কের মিল গুলো খোঁজে: ```js run alert( "I'm not 12, but 345678 years old".match(/\d{3,}/) ); // "345678" ``` -Let's return to the string `+7(903)-123-45-67`. +এখন আমাদের পূর্বের `+7(903)-123-45-67` স্ট্রিংটি দেখি। -A number is a sequence of one or more digits in a row. So the regexp is `pattern:\d{1,}`: +সংখ্যা হল এক বা একাধিক অঙ্কের সমষ্টি। সুতরাং রেগুলার এক্সপ্রেশনটি হবে `pattern:\d{1,}`: ```js run let str = "+7(903)-123-45-67"; @@ -50,14 +50,14 @@ let numbers = str.match(/\d{1,}/g); alert(numbers); // 7,903,123,45,67 ``` -## Shorthands +## সংক্ষিপ্তরূপ -There are shorthands for most used quantifiers: +কোয়ান্টিফায়ারের কিছু সংক্ষিপ্তরূপ আছে: `pattern:+` -: Means "one or more", the same as `pattern:{1,}`. +: এটি দ্বারা বুঝায় "এক বা ততোধিক", এটি `pattern:{1,}` এর অনুরূপ। - For instance, `pattern:\d+` looks for numbers: + উদাহরণস্বরূপ, `pattern:\d+` প্যাটার্নটি দ্বারা সংখ্যা খোঁজা হয়: ```js run let str = "+7(903)-123-45-67"; @@ -66,11 +66,11 @@ There are shorthands for most used quantifiers: ``` `pattern:?` -: Means "zero or one", the same as `pattern:{0,1}`. In other words, it makes the symbol optional. +: এটি দ্বারা বুঝায় "শূন্য বা এক", এটি `pattern:{0,1}` এর অনুরূপ। অন্যথায় বলা যায়, এটি ঐচ্ছিক কোয়ান্টিফায়ার। - For instance, the pattern `pattern:ou?r` looks for `match:o` followed by zero or one `match:u`, and then `match:r`. + উদাহরণস্বরূপ, `pattern:ou?r` প্যাটার্নটি `match:o` এর পর শূন্য বা একটি `match:u` এর খুঁজ করে, এবং তারপর `match:r` এর সাথে মিল খুঁজে। - So, `pattern:colou?r` finds both `match:color` and `match:colour`: + সুতরাং, `pattern:colou?r` প্যাটার্নটি দ্বারা `match:color` এবং `match:colour` উভয়ের সাথে মিল হবে: ```js run let str = "Should I write color or colour?"; @@ -79,64 +79,64 @@ There are shorthands for most used quantifiers: ``` `pattern:*` -: Means "zero or more", the same as `pattern:{0,}`. That is, the character may repeat any times or be absent. +: এটি দ্বারা বুঝায় "শূন্য বা ততোধিক", এটি `pattern:{0,}` এর অনুরূপ। অন্যথায় বলা যায়, ক্যারাক্টারটি একাধিকও থাকতে পারে অথবা নাও থাকতে পারে। - For example, `pattern:\d0*` looks for a digit followed by any number of zeroes (may be many or none): + উদাহরণস্বরূপ, `pattern:\d0*` প্যাটার্নটি দ্বারা শূন্যের খুঁজ করে (একাধিকও থাকতে পারে অথবা নাও থাকতে পারে): ```js run alert( "100 10 1".match(/\d0*/g) ); // 100, 10, 1 ``` - Compare it with `pattern:+` (one or more): + চলুন একে `pattern:+` এর সাথে তুলনা করে দেখি (এক বা ততোধিক): ```js run alert( "100 10 1".match(/\d0+/g) ); // 100, 10 - // 1 not matched, as 0+ requires at least one zero + // 1 এর সাথে মিল পায়নি, যেহেতু 0+ দ্বারা অন্তত একটি শূন্য থাকতে হবে বুঝায় ``` -## More examples +## আরো কিছু উদাহরণ -Quantifiers are used very often. They serve as the main "building block" of complex regular expressions, so let's see more examples. +রেগুলার এক্সপ্রেশনে আমরা প্রায় কোয়ান্টিফায়ার ব্যবহার করি। এরা জটিল রেগুলার এক্সপ্রেশনে প্রধান "বিল্ডিং ব্লক" হিসেবে কাজ করে, চলুন কিছু উদাহরণ দেখি। -**Regexp for decimal fractions (a number with a floating point): `pattern:\d+\.\d+`** +**দশমিক ভগ্নাংশের জন্য রেগুলার এক্সপ্রেশন (দশমিক সহ সংখ্যা): `pattern:\d+\.\d+`** -In action: +এটি দেখুন: ```js run alert( "0 1 12.345 7890".match(/\d+\.\d+/g) ); // 12.345 ``` -**Regexp for an "opening HTML-tag without attributes", such as `<span>` or `<p>`.** +**"অ্যাট্রিবিউট ছাড়া শুরুর এইচটিএমএল ট্যাগ" এর জন্য রেগুলার এক্সপ্রেশন, যেমন `<span>` অথবা `<p>`.** -1. The simplest one: `pattern:/<[a-z]+>/i` +1. সাধারণ এই প্যাটার্নটি দেখুন: `pattern:/<[a-z]+>/i` ```js run alert( "<body> ... </body>".match(/<[a-z]+>/gi) ); // <body> ``` - The regexp looks for character `pattern:'<'` followed by one or more Latin letters, and then `pattern:'>'`. + রেগুলার এক্সপ্রেশনটি প্রথমে `pattern:'<'` এর সাথে মিলে তারপর এক বা একাধিক লাতিন বর্ণের সাথে মিলে শেষে `pattern:'>'` এর সাথে মিলে। -2. Improved: `pattern:/<[a-z][a-z0-9]*>/i` +2. উন্নত এই প্যাটার্নটি দেখুন: `pattern:/<[a-z][a-z0-9]*>/i` - According to the standard, HTML tag name may have a digit at any position except the first one, like `<h1>`. + স্ট্যান্ডার্ড নামানুসারে, এইচটিএমএল ট্যাগে প্রথম ক্যারাক্টারটি বাদে যেকোন পজিশনে অঙ্ক থাকতে পারে, যেমন `<h1>`। ```js run alert( "<h1>Hi!</h1>".match(/<[a-z][a-z0-9]*>/gi) ); // <h1> ``` -**Regexp "opening or closing HTML-tag without attributes": `pattern:/<\/?[a-z][a-z0-9]*>/i`** +**"অ্যাট্রিবিউট ছাড়া শুরুর এবং শেষের এইচটিএমএল ট্যাগ" এর জন্য রেগুলার এক্সপ্রেশন: `pattern:/<\/?[a-z][a-z0-9]*>/i`** -We added an optional slash `pattern:/?` near the beginning of the pattern. Had to escape it with a backslash, otherwise JavaScript would think it is the pattern end. +আমরা প্যাটার্নের শুরুতে একটি ঐচ্ছিক স্লাশ `pattern:/?` দিয়ে শুরু করেছি। এটি ব্যাকস্লাশ দিয়ে বাদ দিতে হবে, অন্যথায় জাভাস্ক্রিপ্ট ইঞ্জিন প্যাটার্ন শেষ হিসেবে ধরে নিবে। ```js run alert( "<h1>Hi!</h1>".match(/<\/?[a-z][a-z0-9]*>/gi) ); // <h1>, </h1> ``` -```smart header="To make a regexp more precise, we often need make it more complex" -We can see one common rule in these examples: the more precise is the regular expression -- the longer and more complex it is. +```smart header="একটি রেগুলার এক্সপ্রেশন কে যথাযথ ব্যবহার করতে, আমরা প্রায় এটিকে জটিল করে তৈরি করি" +আমরা এই উদাহরণগুলোতে একটি সাধারন নিয়ম দেখতে পারছি: রেগুলার এক্সপ্রেশনটি আরো সুনির্দিষ্ট হচ্ছে -- দীর্ঘতর এবং আরো জটিল হচ্ছে। -For instance, for HTML tags we could use a simpler regexp: `pattern:<\w+>`. But as HTML has stricter restrictions for a tag name, `pattern:<[a-z][a-z0-9]*>` is more reliable. +উদাহরণস্বরূপ, এইচটিএমএল ট্যাগের জন্য আমরা সহজ এই রেগুলার এক্সপ্রেশনটি: `pattern:<\w+>` ব্যবহার করতে পারি। কিন্তু এইচটিএমএল ট্যাগের নামানুসারে আমরা এই `pattern:<[a-z][a-z0-9]*>` প্যাটার্নটি আরো পঠনযোগ্য করতে পারি। -Can we use `pattern:<\w+>` or we need `pattern:<[a-z][a-z0-9]*>`? +আমরা কি এটি `pattern:<\w+>` অথবা এটি `pattern:<[a-z][a-z0-9]*>` ব্যবহার করতে পারি? -In real life both variants are acceptable. Depends on how tolerant we can be to "extra" matches and whether it's difficult or not to remove them from the result by other means. +বাস্তবক্ষেত্রে দুটিই ব্যবহারযোগ্য। এটি নির্ভর করে আমরা কিভাবে "অতিরিক্ত" মিলগুলো ব্যবহার করব এবং অন্যান্য ক্ষেত্রে মিল গুলো থেকে কিভাবে তাদের বাদ দিব তার উপর নির্ভর করে। ``` diff --git a/9-regular-expressions/10-regexp-greedy-and-lazy/1-lazy-greedy/solution.md b/9-regular-expressions/10-regexp-greedy-and-lazy/1-lazy-greedy/solution.md index b8e022223..3203c41cc 100644 --- a/9-regular-expressions/10-regexp-greedy-and-lazy/1-lazy-greedy/solution.md +++ b/9-regular-expressions/10-regexp-greedy-and-lazy/1-lazy-greedy/solution.md @@ -1,6 +1,6 @@ -The result is: `match:123 4`. +ফলাফলটি হল: `match:123 4`। -First the lazy `pattern:\d+?` tries to take as little digits as it can, but it has to reach the space, so it takes `match:123`. +প্রথমে লেজি মোডে এই প্যাটার্নটি `pattern:\d+?` চেষ্টা করে যত কম সম্ভব অঙ্ক নেয়ার, কিন্তু প্যাটার্নের পরবর্তী স্পেস এর জন্য এটি স্পেস পর্যন্ত মেলে, সুতরাং এটি `match:123` এর সাথে মেলে। -Then the second `\d+?` takes only one digit, because that's enough. +অতঃপর পরবর্তী `\d+?` শুধু একটি অঙ্ক নেই, কেননা এরপর আর কোন প্যাটার্ন নেই। diff --git a/9-regular-expressions/10-regexp-greedy-and-lazy/1-lazy-greedy/task.md b/9-regular-expressions/10-regexp-greedy-and-lazy/1-lazy-greedy/task.md index 596f61a4e..2d297b2dc 100644 --- a/9-regular-expressions/10-regexp-greedy-and-lazy/1-lazy-greedy/task.md +++ b/9-regular-expressions/10-regexp-greedy-and-lazy/1-lazy-greedy/task.md @@ -1,6 +1,6 @@ -# A match for /d+? d+?/ +# /d+? d+?/ এর মিল -What's the match here? +এখানে অনুসন্ধানে কি পাওয়া যাবে? ```js alert( "123 456".match(/\d+? \d+?/g) ); // ? diff --git a/9-regular-expressions/10-regexp-greedy-and-lazy/3-find-html-comments/solution.md b/9-regular-expressions/10-regexp-greedy-and-lazy/3-find-html-comments/solution.md index 0244963d1..5c0477108 100644 --- a/9-regular-expressions/10-regexp-greedy-and-lazy/3-find-html-comments/solution.md +++ b/9-regular-expressions/10-regexp-greedy-and-lazy/3-find-html-comments/solution.md @@ -1,8 +1,8 @@ -We need to find the beginning of the comment `match:<!--`, then everything till the end of `match:-->`. +আমাদের প্রথমে খুঁজা লাগবে কমেন্ট এর শুরুর `match:<!--` অংশ, এরপর কমেন্টের শেষ `match:-->` অংশ। -An acceptable variant is `pattern:<!--.*?-->` -- the lazy quantifier makes the dot stop right before `match:-->`. We also need to add flag `pattern:s` for the dot to include newlines. +সুতরাং প্যাটার্নটি হবে `pattern:<!--.*?-->` -- লেজি কোয়ান্টিফায়ারের ডটের জন্য এটি `match:-->` এর পূর্ব পর্যন্ত মেলে। আমাদের এই ফ্ল্যাগটি `pattern:s` দিতে হবে যেন ডট দ্বারা নিউলাইন ক্যারাক্টারকেও নির্দেশ করে। -Otherwise multiline comments won't be found: +অন্যথায় একের অধিক লাইনের কমেন্টগুলো অনুসন্ধানে আসবে না: ```js run let regexp = /<!--.*?-->/gs; diff --git a/9-regular-expressions/10-regexp-greedy-and-lazy/3-find-html-comments/task.md b/9-regular-expressions/10-regexp-greedy-and-lazy/3-find-html-comments/task.md index 551d9c725..9aa26ffed 100644 --- a/9-regular-expressions/10-regexp-greedy-and-lazy/3-find-html-comments/task.md +++ b/9-regular-expressions/10-regexp-greedy-and-lazy/3-find-html-comments/task.md @@ -1,12 +1,12 @@ -# Find HTML comments +# এইচটিএমএল কমেন্ট অনুসন্ধান -Find all HTML comments in the text: +নিচের টেক্সট হতে সকল এইচটিএমএল কমেন্ট খুঁজার একটি প্যাটার্ন লিখুন: ```js -let regexp = /your regexp/g; +let regexp = /আপনার প্যাটার্ন/g; let str = `... <!-- My -- comment - test --> .. <!----> .. + test --> .. <!----> .. `; alert( str.match(regexp) ); // '<!-- My -- comment \n test -->', '<!---->' diff --git a/9-regular-expressions/10-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/solution.md b/9-regular-expressions/10-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/solution.md index b4d9f7496..a0fd389f3 100644 --- a/9-regular-expressions/10-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/solution.md +++ b/9-regular-expressions/10-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/solution.md @@ -1,5 +1,5 @@ -The solution is `pattern:<[^<>]+>`. +সমাধানটি হল `pattern:<[^<>]+>`। ```js run let regexp = /<[^<>]+>/g; diff --git a/9-regular-expressions/10-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/task.md b/9-regular-expressions/10-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/task.md index 6759152ff..e0abf1bd2 100644 --- a/9-regular-expressions/10-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/task.md +++ b/9-regular-expressions/10-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/task.md @@ -1,15 +1,19 @@ -# Find HTML tags +# এইচটিএমএল ট্যাগের অনুসন্ধান -Create a regular expression to find all (opening and closing) HTML tags with their attributes. +একটি প্যাটার্ন লিখুন যেন সকল এইচটিএমএল ট্যাগগুলো(অ্যাট্রিবিউটসহ) খুঁজে পায়. -An example of use: +উদাহরণস্বরূপ: ```js run -let regexp = /your regexp/g; +let regexp = /আপনার প্যাটার্ন/g; let str = '<> <a href="/"> <input type="radio" checked> <b>'; alert( str.match(regexp) ); // '<a href="/">', '<input type="radio" checked>', '<b>' ``` +<<<<<<< HEAD +এখানে কিছুটা সহজের জন্য আমরা ধরে নিয়েছি অ্যাট্রিবিউটের মাঝে এই দুটি বন্ধনী `<` এবং `>` থাকবে না। +======= Here we assume that tag attributes may not contain `<` and `>` (inside quotes too), that simplifies things a bit. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 diff --git a/9-regular-expressions/10-regexp-greedy-and-lazy/article.md b/9-regular-expressions/10-regexp-greedy-and-lazy/article.md index e20175075..55fa08619 100644 --- a/9-regular-expressions/10-regexp-greedy-and-lazy/article.md +++ b/9-regular-expressions/10-regexp-greedy-and-lazy/article.md @@ -1,20 +1,25 @@ -# Greedy and lazy quantifiers +# গ্রীডি এবং লেজি কোয়ান্টিফায়ার -Quantifiers are very simple from the first sight, but in fact they can be tricky. +প্রথম দেখায় কোয়ান্টিফায়ারকে সহজ মনে হতে পারে, কিন্তু বাস্তবে এরা কৌশলী। -We should understand how the search works very well if we plan to look for something more complex than `pattern:/\d+/`. +জটিল কিছু খোঁজার পূর্বে আমাদের বুঝতে হবে `pattern:/\d+/` এরা কিভাবে কাজ করে। -Let's take the following task as an example. +উদাহরণ হিসাবে নিচের টাস্কটি নিয়ে কাজ করি। -We have a text and need to replace all quotes `"..."` with guillemet marks: `«...»`. They are preferred for typography in many countries. +আমাদের কাছে একটি টেক্সট আছে এবং আমরা সকল উদ্ধৃতি চিহ্নকে `"..."` +গিলিমেট চিহ্ন `«...»` দিয়ে প্রতিস্থাপন করব। অনেক দেশে টাইপোগ্রাফির জন্য এগুলোই বেশি পছন্দের। +<<<<<<< HEAD +উদাহরণস্বরূপ: `"Hello, world"` হবে `«Hello, world»`. আরো অনেক ধরণের উদ্ধৃতি চিহ্ন আছে, যেমন `„Witam, świat!”` (পোলিশ) অথবা `「你好,世界」` (চাইনিজ), কিন্ত আমাদের টাস্কের জন্য এখন এটিই `«...»` যুতসই। +======= For instance: `"Hello, world"` should become `«Hello, world»`. There exist other quotes, such as `„Witaj, świecie!”` (Polish) or `「你好,世界」` (Chinese), but for our task let's choose `«...»`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -The first thing to do is to locate quoted strings, and then we can replace them. +আমাদের প্রথম কাজটি হল স্ট্রিং হতে উদ্ধৃতি চিহ্নগুলোকে চিহ্নিত করা, এবং তারপর এদের আমরা প্রতিস্থাপন করতে পারব। -A regular expression like `pattern:/".+"/g` (a quote, then something, then the other quote) may seem like a good fit, but it isn't! +রেগুলার এক্সপ্রেশনে আমাদের প্যাটার্নটি হবে এমন `pattern:/".+"/g` (শুরুর উদ্ধৃতি চিহ্ন, তারপর কিছু ক্যারাক্টার, অতঃপর শেষ উদ্ধৃতি চিহ্ন) যদিও দেখতে সঠিক মনে হচ্ছে, তবে এটি সঠিক নই! -Let's try it: +চেষ্টা করা যাক: ```js run let regexp = /".+"/g; @@ -24,85 +29,89 @@ let str = 'a "witch" and her "broom" is one'; alert( str.match(regexp) ); // "witch" and her "broom" ``` -...We can see that it works not as intended! +...আমরা দেখতে পাচ্ছি এটি আমাদের চাহিদামত কাজ করছে না! -Instead of finding two matches `match:"witch"` and `match:"broom"`, it finds one: `match:"witch" and her "broom"`. +`match:"witch"` এবং `match:"broom"` এই দুটি মিল খুঁজে পাওয়ার পরিবর্তে এটি দেখায়: `match:"witch" and her "broom"`। -That can be described as "greediness is the cause of all evil". +এজন্য বলা হয় "লোভ হল সকল পাপের কারণ"। -## Greedy search +## গ্রীডি অনুসন্ধান -To find a match, the regular expression engine uses the following algorithm: +কোন একটি মিল খুঁজতে রেগুলার এক্সপ্রেশন ইঞ্জিন নিম্নে উল্লেখিত অ্যালগরিদম অনুযায়ী কাজ করে: -- For every position in the string - - Try to match the pattern at that position. - - If there's no match, go to the next position. +- স্ট্রিংয়ের প্রতিটি অবস্থানের জন্য + - অই অবস্থানে প্যাটার্নটির অবস্থান মেলানোর চেষ্টা করে। + - যদি কোন মিল না পায়, তাহলে পরের অবস্থানে যায়। -These common words do not make it obvious why the regexp fails, so let's elaborate how the search works for the pattern `pattern:".+"`. +উপরোল্লিখিত নিয়ম থেকে রেগুলার এক্সপ্রেশন কিভাবে কাজ করে তা আমাদের কাছে সহজে বোধগম্য নই, চলুন এই প্যাটার্নটি `pattern:".+"` কিভাবে মিল খুঁজে তা বিস্তারিত দেখি। -1. The first pattern character is a quote `pattern:"`. +১. আমাদের প্যাটার্নের প্রথম ক্যারাক্টারটি একটি উদ্ধৃতি চিহ্ন `pattern:"`। - The regular expression engine tries to find it at the zero position of the source string `subject:a "witch" and her "broom" is one`, but there's `subject:a` there, so there's immediately no match. + রেগুলার এক্সপ্রেশন ইঞ্জিন প্রদত্ত স্ট্রিংয়ের `subject:a "witch" and her "broom" is one` শূন্যতম অবস্থানে একটি উদ্ধৃতি চিহ্ন মেলানোর চেষ্টা করে, কিন্তু অই অবস্থানে ক্যারাক্টারটি হল `subject:a`, সুতরাং কোন মিল খুঁজে পাবে না। - Then it advances: goes to the next positions in the source string and tries to find the first character of the pattern there, fails again, and finally finds the quote at the 3rd position: + তারপর এটি এর পরবর্তী অবস্থানে যাবে: অই অবস্থানে প্রদত্ত স্ট্রিংয়ের সাথে প্যাটার্নের প্রথম ক্যারাক্টারটি মেলানোর চেষ্টা করে, এবং এটিও মেলে না, অবশেষে ৩য় অবস্থানে এটি উদ্ধৃতি চিহ্নের সাথে মেলে: ![](witch_greedy1.svg) -2. The quote is detected, and then the engine tries to find a match for the rest of the pattern. It tries to see if the rest of the subject string conforms to `pattern:.+"`. +২. উদ্ধৃতি চিহ্নের সাথে মিল হওয়ার পর, ইঞ্জিন বাকি প্যাটার্নটির মিল খুঁজে। ইঞ্জিন প্রদত্ত স্ট্রিংয়ের সাথে আমাদের প্যাটার্নের `pattern:.+"` মিল খুঁজে। - In our case the next pattern character is `pattern:.` (a dot). It denotes "any character except a newline", so the next string letter `match:'w'` fits: + এইক্ষত্রে, আমাদের প্যাটার্নের পরবর্তী ক্যারাক্টারটি হল `pattern:.` (একটি ডট ক্যারাক্টার)। এটি দ্বারা বুঝায় "নতুন লাইন ব্যাতীত সকল ক্যারাক্টার", সুতরাং স্ট্রিংয়ের পরবর্তী বর্ণ `match:'w'` এর সাথে মিল খুঁজে পায়: ![](witch_greedy2.svg) -3. Then the dot repeats because of the quantifier `pattern:.+`. The regular expression engine adds to the match one character after another. +৩. এরপর ডটের সাথে কোয়ান্টিফায়ার `pattern:.+` থাকার কারনে রেগুলার এক্সপ্রেশন ইঞ্জিন পরবর্তী ক্যারাক্টার গুলোর সাথে মিলতে থাকে। - ...Until when? All characters match the dot, so it only stops when it reaches the end of the string: + ...কিন্তু কতক্ষণ পর্যন্ত মিলবে? এটি স্ট্রিংয়ের শেষ পর্যন্ত এর সকল ক্যারাক্টার ডটের সাথে মেলতে থাকে: ![](witch_greedy3.svg) -4. Now the engine finished repeating `pattern:.+` and tries to find the next character of the pattern. It's the quote `pattern:"`. But there's a problem: the string has finished, there are no more characters! +৪. এখন ইঞ্জিন এই প্যাটার্নের `pattern:.+` পুনরাবৃত্তি শেষে পরের প্যাটার্নটি খুঁজে। এটি হল উদ্ধৃতি চিহ্ন `pattern:"`। কিন্ত এখানে একটি সমস্যা আছে: প্যাটার্নের অবস্থান প্রদত্ত স্ট্রিংটির শেষে, এরপর আর কোন ক্যারাক্টার নেয়! - The regular expression engine understands that it took too many `pattern:.+` and starts to *backtrack*. + রেগুলার এক্সপ্রেশন ইঞ্জিন বুঝতে পারে `pattern:.+` অনেক বেশী অগ্রসর হয়ে গেছে সুতরাং এটি প্রাপ্ত মিলটিকে *ব্যাকট্রাক* বা প্রত্যাখ্যান করা শুরু করে। - In other words, it shortens the match for the quantifier by one character: + অন্যথায় বলা যায়, কোয়ান্টিফায়ারের জন্য একটি ক্যারাক্টার বাদ দেয়: ![](witch_greedy4.svg) - Now it assumes that `pattern:.+` ends one character before the string end and tries to match the rest of the pattern from that position. + এখন এটি ধরা যাক `pattern:.+` শেষ। স্ট্রিংয়ের শেষ অবস্থান হতে একটি ক্যারাক্টার নেয় এবং সেই অবস্থান থেকে বাকী প্যাটার্নটি মেলাতে চেষ্টা করে। - If there were a quote there, then the search would end, but the last character is `subject:'e'`, so there's no match. + যদি অই অবস্থানে উদ্ধৃতি চিহ্ন থাকে তবে আমাদের অনুসদ্ধানটি শেষ হবে, কিন্তু শেষ ক্যারাক্টারটি হল `subject:'e'`, সুতরাং কোন মিল হবেনা। -5. ...So the engine decreases the number of repetitions of `pattern:.+` by one more character: +৫. ...সুতরাং ইঞ্জিন `pattern:.+` এর জন্য আরও একটি ক্যারাক্টার কমাবে: ![](witch_greedy5.svg) - The quote `pattern:'"'` does not match `subject:'n'`. + কিন্তু `pattern:'"'` উদ্ধৃতি চিহ্ন `subject:'n'` এর সাথে মেলেনা। -6. The engine keep backtracking: it decreases the count of repetition for `pattern:'.'` until the rest of the pattern (in our case `pattern:'"'`) matches: +৬. ইঞ্জিনটি ব্যাকট্র্যাকিং চালিয়ে যায়: এটি `pattern:'.'` এর জন্য ক্রমাগত অনুসন্ধানকৃত ফলাফলটিকে সংক্ষিপ্ত করতে থাকে যতক্ষণ পর্যন্ত আমাদের প্যাটার্নটির (এইক্ষেত্রে `pattern:'"'`) মিল শেষ হয়: ![](witch_greedy6.svg) -7. The match is complete. +৭. অনুসন্ধানটি সম্পূর্ন হয়। -8. So the first match is `match:"witch" and her "broom"`. If the regular expression has flag `pattern:g`, then the search will continue from where the first match ends. There are no more quotes in the rest of the string `subject:is one`, so no more results. +৮. সুতরাং আমাদের প্রথম অনুসন্ধানটি হল `match:"witch" and her "broom"`। যদি রেগুলার এক্সপ্রেশনে `pattern:g` ফ্ল্যাগটি থাকে, তাহলে অনুসন্ধানটি চলবে যেখানে প্রথম মিলটি শেষ হয়। বাকী স্ট্রিংয়ে `subject:is one` আর কোন উদ্ধৃতি চিহ্ন নেই, সুতরাং অন্য কোন ফলাফল আসবে না। -That's probably not what we expected, but that's how it works. +যদিওবা এটি আমাদের চাহিদামত কাজ করেনি, কিন্তু আমরা বুঝতে পারছি এটি কিভাবে কাজ করে। +<<<<<<< HEAD +**গ্রীডি অবস্থায়(ডিফল্ট ভাবে) একটি কোয়ান্টিফায়ার যতবার সম্ভব এর পুনরাবৃত্তি ঘটায়।** +======= **In the greedy mode (by default) a quantified character is repeated as many times as possible.** +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -The regexp engine adds to the match as many characters as it can for `pattern:.+`, and then shortens that one by one, if the rest of the pattern doesn't match. +রেগুলার এক্সপ্রেশন ইঞ্জিন যত সম্ভব ক্যারাক্টার `pattern:.+` এর জন্য সংযোজন করে, এবং এরপর বাকী প্যাটার্ন না মিললে একটির পর একটি ক্যারাক্টার বাদ দিতে থাকে। -For our task we want another thing. That's where a lazy mode can help. +আমাদের টাস্কের জন্য আরো একটি বিষয় জানা উচিত। এই ক্ষেত্রে আমরা লেজি মোডের সাহায্য নিতে পারি। -## Lazy mode +## লেজি মোড -The lazy mode of quantifiers is an opposite to the greedy mode. It means: "repeat minimal number of times". +লেজি মোড কোয়ান্টিফায়ার হল গ্রীডি মোড কোয়ান্টিফায়ারের বিপরীত। অর্থাৎ: "সবচেয়ে কম সংখ্যকবার পুনরাবৃত্তি"। -We can enable it by putting a question mark `pattern:'?'` after the quantifier, so that it becomes `pattern:*?` or `pattern:+?` or even `pattern:??` for `pattern:'?'`. +কোয়ান্টিফায়ারের পর প্রশ্নবোধক চিহ্ন সংযুক্ত করে `pattern:'?'` এটিকে চালু করা যায়, সুতরাং এরা হতে পারে `pattern:*?` অথবা `pattern:+?` এমনকি `pattern:'?'` এর জন্য`pattern:??`। -To make things clear: usually a question mark `pattern:?` is a quantifier by itself (zero or one), but if added *after another quantifier (or even itself)* it gets another meaning -- it switches the matching mode from greedy to lazy. +আমাদের এটি বুঝতে হবে: সাধারণত প্রশ্নবোধক চিহ্ন `pattern:?` নিজেই একটি কোয়ান্টিফায়ার এটি দ্বারা বুঝায় (শূন্য অথবা এক), কিন্তু যদি আমরা এটি *অন্য কোয়ান্টিফায়ারের (এমনকি প্রশ্নবোধক চিহ্নের) পর* সংযুক্ত করি এর অন্য অর্থ বোঝায় -- তখন এটি দ্বারা বুঝায় অনুসন্ধান গ্রীডি হতে লেজি মোডে পরিবর্তন হয়েছে। -The regexp `pattern:/".+?"/g` works as intended: it finds `match:"witch"` and `match:"broom"`: +`pattern:/".+?"/g` রেগুলার এক্সপ্রেশনটি আমাদের চাহিদামত কাজ করবে: অনুসন্ধানকৃত ফলাফল হবে `match:"witch"` এবং `match:"broom"`: ```js run let regexp = /".+?"/g; @@ -112,67 +121,67 @@ let str = 'a "witch" and her "broom" is one'; alert( str.match(regexp) ); // "witch", "broom" ``` -To clearly understand the change, let's trace the search step by step. +পরিবর্তনটি বোঝার জন্য, আসুন ধাপগুলো একে একে বোঝার চেষ্টা করি। -1. The first step is the same: it finds the pattern start `pattern:'"'` at the 3rd position: +১. প্রথম ধাপটি পূর্বের মত: ৩য় অবস্থানে প্যাটার্নটি `pattern:'"'` খুঁজে: ![](witch_greedy1.svg) -2. The next step is also similar: the engine finds a match for the dot `pattern:'.'`: +২. এর পরের স্টেপটিও একই: ইঞ্জিন ডটের `pattern:'.'` জন্য একটি মিল খুঁজে: ![](witch_greedy2.svg) -3. And now the search goes differently. Because we have a lazy mode for `pattern:+?`, the engine doesn't try to match a dot one more time, but stops and tries to match the rest of the pattern `pattern:'"'` right now: +৩. এবং এর পরবর্তী অনুসন্ধানটি পূর্বের চেয়ে ভিন্ন হয়। কেননা আমরা এখন লেজি মোডে `pattern:+?` খুঁজ করছি, ইঞ্জিন ডটের জন্য একের অধিক মিল খুঁজবে না, অতঃপর এখন এটি এর পরবর্তী প্যাটার্নটি `pattern:'"'` মেলানোর চেষ্টা করবে: ![](witch_lazy3.svg) - If there were a quote there, then the search would end, but there's `'i'`, so there's no match. -4. Then the regular expression engine increases the number of repetitions for the dot and tries one more time: + এখন এখানে যদি উদ্ধৃতি চিহ্ন থাকত, তাহলে অনুসন্ধানটি শেষ হত, কিন্তু এর পরবর্তী অবস্থানে আছে `'i'`, সুতরাং কোন মিল হবেনা। +৪. অতঃপর রেগুলার এক্সপ্রেশন ইঞ্জিন পূর্বের ধাপটির পুনরাবৃত্তি করবে এবং আরো একবার উদ্ধৃতি চিহ্ন `pattern:'"'` এর সাথে মেলানোর চেষ্টা করবে: ![](witch_lazy4.svg) - Failure again. Then the number of repetitions is increased again and again... -5. ...Till the match for the rest of the pattern is found: + আবারো মেলবে না। অতঃপর ধাপটি বার বার পুনরাবৃত্তি করবে... +৫. ...পরবর্তী প্যাটার্নের সাথে মিল হওয়া পর্যন্ত অনুসন্ধানটি চলবে: ![](witch_lazy5.svg) -6. The next search starts from the end of the current match and yield one more result: +৬. পরবর্তী অনুসন্ধানটি শেষ বর্তমান মিলপ্রাপ্ত অবস্থান থেকে শুরু হয় এবং নতুন আরো একটি মিল যুক্ত হয়: ![](witch_lazy6.svg) -In this example we saw how the lazy mode works for `pattern:+?`. Quantifiers `pattern:*?` and `pattern:??` work the similar way -- the regexp engine increases the number of repetitions only if the rest of the pattern can't match on the given position. +এই উদাহরণে আমরা `pattern:+?` কোয়ান্টিফায়ারের জন্য লেজি মোড কিভাবে কাজ করে দেখলাম। `pattern:*?` এবং `pattern:??` এই কোয়ান্টিফায়ারগুলোর জন্যও অনুরূপভাবে কাজ হয় -- রেগুলার এক্সপ্রেশন ইঞ্জিন কেবল পুনরাবৃত্তি করতে থাকে যদি বাকী প্যাটার্নগুলো অই অবস্থানে না মিলতে থাকে। -**Laziness is only enabled for the quantifier with `?`.** +**লেজি মোড কেবল কাজ করবে যদি কোয়ান্টিফায়ারের পর `?` দেয়া হয়।** -Other quantifiers remain greedy. +অন্যথায় কোয়ান্টিফায়ারগুলো গ্রীডি মোডে থাকে। -For instance: +উদাহরণস্বরূপ: ```js run alert( "123 456".match(/\d+ \d+?/) ); // 123 4 ``` -1. The pattern `pattern:\d+` tries to match as many digits as it can (greedy mode), so it finds `match:123` and stops, because the next character is a space `pattern:' '`. -2. Then there's a space in the pattern, it matches. -3. Then there's `pattern:\d+?`. The quantifier is in lazy mode, so it finds one digit `match:4` and tries to check if the rest of the pattern matches from there. +১. `pattern:\d+` এই প্যাটার্নটি (গ্রীডি মোড) অনুসন্ধানে সর্বোচ্চ যতটা সম্ভব তত অঙ্কের সাথে মেলানোর চেষ্টা করে, অতঃপর এটি এর সাথে মেলে `match:123` এবং এই প্যাটার্নের অনুসন্ধান শেষ হয়, কেননা পরবর্তী ক্যারাক্টারটি হল স্পেস `pattern:' '`। +২. এরপর প্যাটার্নে একটি স্পেস থাকে, এবং এটি এর সাথে মেলে। +৩. অতঃপর পরবর্তী প্যাটার্নটি হল `pattern:\d+?`। এখানে কোয়ান্টিফায়ারটি লেজি মোডে আছে, সুতরাং এটি একটি অঙ্কের `match:4` সাথে মেলে এবং বাকী প্যাটার্নের সাথে মেলানোর চেষ্টা করে। - ...But there's nothing in the pattern after `pattern:\d+?`. + ...কিন্তু এখানে `pattern:\d+?` এর পর আর কোন প্যাটার্ন নাই। - The lazy mode doesn't repeat anything without a need. The pattern finished, so we're done. We have a match `match:123 4`. + লেজি মোডে প্রয়োজন ছাড়া পুনরাবৃত্তি হয় না। অবশেষে প্যাটার্নটি সম্পন্ন হয়, এবং সাথে অনুসন্ধানও। সুতরাং আমরা ফলাফল হিসেব পায় `match:123 4`। -```smart header="Optimizations" -Modern regular expression engines can optimize internal algorithms to work faster. So they may work a bit differently from the described algorithm. +```smart header="অপ্টিমাইজেশন" +বর্তমানে রেগুলার এক্সপ্রেশন ইঞ্জিনগুলো দ্রুত কাজ করার জন্য নিজস্ব অপ্টিমাইজেশন অ্যালগরিদম ব্যবহার করে। সুতরাং এরা উপরে বর্ণিত ধাপগুলোর থেকে কিছুটা ভিন্নভাবে কাজ করে। -But to understand how regular expressions work and to build regular expressions, we don't need to know about that. They are only used internally to optimize things. +কিন্তু কিভাবে রেগুলার এক্সপ্রেশন কাজ করে এবং কিভাবে রেগুলার এক্সপ্রেশন লিখা যায় তা বোঝার জন্য, আমাদের এইসম্পর্কে না জানলেও হবে। অপ্টিমাইজেশনের জন্য এদের ইন্টারনালি ব্যবহার করা হয়। -Complex regular expressions are hard to optimize, so the search may work exactly as described as well. +জটিল রেগুলার এক্সপ্রেশনগুলো অপ্টিমাইজ করা কঠিন, সুতরাং এরা উপরে বর্ণিত নিয়মানুযায়ী কাজ করে। ``` -## Alternative approach +## ভিন্ন উপায়ে -With regexps, there's often more than one way to do the same thing. +রেগুলার এক্সপ্রেশনে একই কাজ বিভিন্ন উপায়ে করা সম্ভব। -In our case we can find quoted strings without lazy mode using the regexp `pattern:"[^"]+"`: +এইক্ষেত্রে লেজি মোড ছাড়াও আমরা উদ্ধৃতি চিহ্নের উক্তিগুলো খুঁজে পেতে পারি এই প্যাটার্নের মাধ্যমে `pattern:"[^"]+"`: ```js run let regexp = /"[^"]+"/g; @@ -182,120 +191,128 @@ let str = 'a "witch" and her "broom" is one'; alert( str.match(regexp) ); // "witch", "broom" ``` -The regexp `pattern:"[^"]+"` gives correct results, because it looks for a quote `pattern:'"'` followed by one or more non-quotes `pattern:[^"]`, and then the closing quote. +এই প্যাটার্নটি `pattern:"[^"]+"` আমাদের সঠিক ফলাফল দেয়, কেননা এটি `pattern:'"'` একটি উদ্ধৃতি চিহ্ন খুঁজে অতঃপর `pattern:[^"]` এক বা একাধিক উদ্ধৃতি চিহ্ন নয় এমন ক্যারাক্টার খুঁজে, এবং শেষ উদ্ধৃতি চিহ্ন খুঁজ করে। -When the regexp engine looks for `pattern:[^"]+` it stops the repetitions when it meets the closing quote, and we're done. +যখন রেগুলার এক্সপ্রেশন ইঞ্জিন `pattern:[^"]+` এর মাধ্যমে বারবার মিল খুঁজে এটি শেষ উদ্ধৃতি চিহ্ন পর্যন্ত খুঁজ করে, এবং অনুসন্ধানটি শেষ হয়। -Please note, that this logic does not replace lazy quantifiers! +তবে আমাদের মনে রাখা উচিত, এটি লেজি কোয়ান্টাফায়ার মোডের বিকল্প না! -It is just different. There are times when we need one or another. +এটি সম্পূর্ণ ভিন্ন। আমাদের চাহিদামত আমরা এগুলোকে ব্যবহার করব। -**Let's see an example where lazy quantifiers fail and this variant works right.** +**চলুন আরেকটি উদাহরণ দেখি যেখানে লেজি কোয়ান্টিফায়ার কাজ করেনা কিন্ত অন্য উপায়টি কাজ করে।** -For instance, we want to find links of the form `<a href="..." class="doc">`, with any `href`. +উদাহরণস্বরূপ, আমরা এই `<a href="..." class="doc">` ট্যাগের `href` অ্যাট্রিবিউট হতে লিঙ্ক গুলো খুঁজে পেতে চাই। -Which regular expression to use? +কোন রেগুলার এক্সপ্রেশনটি আমরা ব্যবহার করব? -The first idea might be: `pattern:/<a href=".*" class="doc">/g`. +আমাদের চিন্তায় প্রথমে এটি আসতে পারে: `pattern:/<a href=".*" class="doc">/g`. -Let's check it: +চলুন এটি দেখি: ```js run let str = '...<a href="link" class="doc">...'; let regexp = /<a href=".*" class="doc">/g; -// Works! +// এটি কাজ করছে! alert( str.match(regexp) ); // <a href="link" class="doc"> ``` -It worked. But let's see what happens if there are many links in the text? +এটি কাজ করছে। কিন্তু একাধিক ট্যাগের জন্য এটি কিভাবে কাজ করবে? ```js run let str = '...<a href="link1" class="doc">... <a href="link2" class="doc">...'; let regexp = /<a href=".*" class="doc">/g; -// Whoops! Two links in one match! +// ওওপস! দুইটি লিঙ্ক একটি মিলের জন্য! alert( str.match(regexp) ); // <a href="link1" class="doc">... <a href="link2" class="doc"> ``` -Now the result is wrong for the same reason as our "witches" example. The quantifier `pattern:.*` took too many characters. +এখন এই ফলাফলটি পূর্বের "witches" উদাহরণের মত ভুল। কোয়ান্টিফায়ারটি `pattern:.*` একাধিক ক্যারাক্টার নিয়ে নেয়। -The match looks like this: +অনুসন্ধানটি দেখতে অনেকটা এমন: ```html <a href="....................................." class="doc"> <a href="link1" class="doc">... <a href="link2" class="doc"> ``` -Let's modify the pattern by making the quantifier `pattern:.*?` lazy: +এখন আমাদের প্যাটার্নটিকে লেজি কোয়ান্টিফায়ার `pattern:.*?` দিয়ে পরিবর্তন করি: ```js run let str = '...<a href="link1" class="doc">... <a href="link2" class="doc">...'; let regexp = /<a href=".*?" class="doc">/g; -// Works! +// এটি কাজ করছে! alert( str.match(regexp) ); // <a href="link1" class="doc">, <a href="link2" class="doc"> ``` -Now it seems to work, there are two matches: +এখন এরা কাজ করছে, এখানে দুটি মিল আছে: ```html <a href="....." class="doc"> <a href="....." class="doc"> <a href="link1" class="doc">... <a href="link2" class="doc"> ``` -...But let's test it on one more text input: +...কিন্তু চলুন ভিন্ন টেস্টের জন্য আরেকটি ইনপুট নিয়ে দেখি: ```js run let str = '...<a href="link1" class="wrong">... <p style="" class="doc">...'; let regexp = /<a href=".*?" class="doc">/g; -// Wrong match! +// ভুল অনুসন্ধান! alert( str.match(regexp) ); // <a href="link1" class="wrong">... <p style="" class="doc"> ``` -Now it fails. The match includes not just a link, but also a lot of text after it, including `<p...>`. +কিন্তু এবার এটি কাজ করল না। অনুসন্ধানে লিঙ্ক ব্যতীত `<p...>` সহ আরো অনেক কিছু যুক্ত হয়েছে। -Why? +কিন্তু এমন কেন? -That's what's going on: +চলুন দেখি এটি কিভাবে কাজ করল: -1. First the regexp finds a link start `match:<a href="`. -2. Then it looks for `pattern:.*?`: takes one character (lazily!), check if there's a match for `pattern:" class="doc">` (none). -3. Then takes another character into `pattern:.*?`, and so on... until it finally reaches `match:" class="doc">`. +১. প্রথমে রেগুলার এক্সপ্রেশন `match:<a href="` এটি দ্বারা খুঁজা শুরু করে। +২. অতঃপর এটি `pattern:.*?` এর মাধ্যমে খুঁজ চালিয়ে যায়: (লেজি মোডে!) একটি ক্যারাক্টার নেয়, `pattern:" class="doc">` এটির জন্য কোন মিল খুঁজে পায় কিনা দেখে (কোন মিল পায় না)। +৩. অতঃপর `pattern:.*?` এর জন্য আরো একটি ক্যারাক্টার নেয়, এবং এভাবেই চলতে থাকে... যতক্ষণ না এটি `match:" class="doc">` এর সাথে মিল হয়। -But the problem is: that's already beyond the link `<a...>`, in another tag `<p>`. Not what we want. +কিন্ত মূল সমস্যাটি হল: `<a...>` এই লিঙ্কের পর আরো একটি ট্যাগ `<p>` আছে। কিন্তু আমরা এটি চাই না। -Here's the picture of the match aligned with the text: +নিচের ছবিটি দেখুন এরা টেক্সটের সাথে কিভাবে মিল হচ্ছে: ```html <a href="..................................." class="doc"> <a href="link1" class="wrong">... <p style="" class="doc"> ``` -So, we need the pattern to look for `<a href="...something..." class="doc">`, but both greedy and lazy variants have problems. +সুতরাং, আমরা এই প্যাটার্নটির খুঁজ করি `<a href="...something..." class="doc">`, কিন্তু লেজি এবং গ্রীডি উভয়ই মোডে এটি সঠিক ফলাফল দেয় না। -The correct variant can be: `pattern:href="[^"]*"`. It will take all characters inside the `href` attribute till the nearest quote, just what we need. +সঠিক পদ্ধতিটি হতে পারে: `pattern:href="[^"]*"`। এটি `href` অ্যাট্রিবিউট শেষ হওয়ার পূর্বে পর্যন্ত এর মধ্যকার সকল ক্যারাক্টার নেয়, যা আমাদের দরকার। -A working example: +সঠিক এই উদাহরণটি দেখুন: ```js run let str1 = '...<a href="link1" class="wrong">... <p style="" class="doc">...'; let str2 = '...<a href="link1" class="doc">... <a href="link2" class="doc">...'; let regexp = /<a href="[^"]*" class="doc">/g; -// Works! -alert( str1.match(regexp) ); // null, no matches, that's correct +// এটি কাজ করছে! +alert( str1.match(regexp) ); // নাল, কোন মিল নেই, যা সঠিক alert( str2.match(regexp) ); // <a href="link1" class="doc">, <a href="link2" class="doc"> ``` -## Summary +## সারাংশ -Quantifiers have two modes of work: +দুটি মোডে কোয়ান্টিফায়ার কাজ করে: +<<<<<<< HEAD +গ্রীডি +: রেগুলার এক্সপ্রেশন ইঞ্জিন ডিফল্টভাবে কোয়ান্টিফায়ারকে যত বেশী সম্ভব এর পুনরাবৃত্তি করে। উদাহরণস্বরূপ, `pattern:\d+` সকল সম্ভাব্য অঙ্কের সাথে মিলে। যখন আর কোন কিছুর সাথে মিল খুঁজে পায় না (স্ট্রিং শেষ অথবা আর কোন অঙ্ক থাকে না), তারপর এটি বাকী প্যাটার্নের সাথে মিল খুঁজে। আর যদি কোন মিল না থাকে তাহলে পুনরাবৃত্তিকৃত ফলাফলটিকে কমাতে থাকে এবং আবার মেলানোর চেষ্টা করে। + +লেজি +: কোয়ান্টিফায়ারের পরে প্রশ্নবোধক চিহ্ন `pattern:?` দিলে এই মোডটি চালু হয়। রেগুলার এক্সপ্রেশন ইঞ্জিন কোয়ানটিফায়ারের পুনরাবৃত্তির পূর্বে বাকী প্যাটার্নটি মেলানোর চেষ্টা করে। +======= Greedy : By default the regular expression engine tries to repeat the quantified character as many times as possible. For instance, `pattern:\d+` consumes all possible digits. When it becomes impossible to consume more (no more digits or string end), then it continues to match the rest of the pattern. If there's no match then it decreases the number of repetitions (backtracks) and tries again. Lazy : Enabled by the question mark `pattern:?` after the quantifier. The regexp engine tries to match the rest of the pattern before each repetition of the quantified character. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -As we've seen, the lazy mode is not a "panacea" from the greedy search. An alternative is a "fine-tuned" greedy search, with exclusions, as in the pattern `pattern:"[^"]+"`. +এছাড়াও আমরা দেখেছি, গ্রীডি অনুসন্ধানের জন্য লেজি মোড "প্যানাসিয়া বা সর্বসব" না। এর পরিবর্তে গ্রীডি অনুসন্ধানের জন্য এই প্যাটার্নটিও `pattern:"[^"]+"` যথেষ্ট কাজের। diff --git a/9-regular-expressions/11-regexp-groups/01-test-mac/solution.md b/9-regular-expressions/11-regexp-groups/01-test-mac/solution.md index f7a5f1e39..cbc339e81 100644 --- a/9-regular-expressions/11-regexp-groups/01-test-mac/solution.md +++ b/9-regular-expressions/11-regexp-groups/01-test-mac/solution.md @@ -1,21 +1,21 @@ -A two-digit hex number is `pattern:[0-9a-f]{2}` (assuming the flag `pattern:i` is set). +একটি দুই অঙ্কবিশিষ্ট হেক্সাডেসিমেল নাম্বারের প্যাটার্ন হল `pattern:[0-9a-f]{2}` (ধরে নিই, `pattern:i` ফ্ল্যাগ সেট আছে)। -We need that number `NN`, and then `:NN` repeated 5 times (more numbers); +সুতরাং আমাদের এই নাম্বারটি `NN` লাগবে, এবং এটির `:NN` ৫ বার পুনরাবৃত্তি হবে; -The regexp is: `pattern:[0-9a-f]{2}(:[0-9a-f]{2}){5}` +সুতরাং রেগুলার এক্সপ্রেশনটি হবে: `pattern:[0-9a-f]{2}(:[0-9a-f]{2}){5}` -Now let's show that the match should capture all the text: start at the beginning and end at the end. That's done by wrapping the pattern in `pattern:^...$`. +এখন চলুন ম্যাচটি শুরু থেকে শেষ পর্যন্ত সকল পুরো লাইনটি পাঠ করার উপযোগী করি। এজন্য সম্পূর্ন প্যাটার্নটি `pattern:^...$` এর মধ্যে লিখি। -Finally: +শেষ পর্যন্ত: ```js run let regexp = /^[0-9a-f]{2}(:[0-9a-f]{2}){5}$/i; -alert( regexp.test('01:32:54:67:89:AB') ); // true +alert( regexp.test('01:32:54:67:89:AB') ); // সত্য -alert( regexp.test('0132546789AB') ); // false (no colons) +alert( regexp.test('0132546789AB') ); // মিথ্যা (কোলন নেয়) -alert( regexp.test('01:32:54:67:89') ); // false (5 numbers, need 6) +alert( regexp.test('01:32:54:67:89') ); // মিথ্যা (৫টি নাম্বার, অবশ্যই ৬টি হতে হবে) -alert( regexp.test('01:32:54:67:89:ZZ') ) // false (ZZ in the end) +alert( regexp.test('01:32:54:67:89:ZZ') ) // মিথ্যা (শেষে ZZ) ``` diff --git a/9-regular-expressions/11-regexp-groups/01-test-mac/task.md b/9-regular-expressions/11-regexp-groups/01-test-mac/task.md index a2e799cfa..e914c8df3 100644 --- a/9-regular-expressions/11-regexp-groups/01-test-mac/task.md +++ b/9-regular-expressions/11-regexp-groups/01-test-mac/task.md @@ -1,20 +1,24 @@ -# Check MAC-address +# MAC-address যাচাই -[MAC-address](https://en.wikipedia.org/wiki/MAC_address) of a network interface consists of 6 two-digit hex numbers separated by a colon. +[MAC-address](https://en.wikipedia.org/wiki/MAC_address) হল নেটওয়ার্ক ইন্টারফেসের ৬ টি দুই অঙ্কবিশিষ্ট একটি হেক্সাডেসিমেল নাম্বার যা কোলন দ্বারা পৃথক থাকে। -For instance: `subject:'01:32:54:67:89:AB'`. +যেমন: `subject:'01:32:54:67:89:AB'`। -Write a regexp that checks whether a string is MAC-address. +MAC-address যাচাইয়ের জন্য একটি রেগুলার এক্সপ্রেশন লিখুন। -Usage: +উদাহরণস্বরুপ: ```js -let regexp = /your regexp/; +let regexp = /আপনার প্যাটার্ন লিখুন/; -alert( regexp.test('01:32:54:67:89:AB') ); // true +alert( regexp.test('01:32:54:67:89:AB') ); // সত্য -alert( regexp.test('0132546789AB') ); // false (no colons) +alert( regexp.test('0132546789AB') ); // মিথ্যা (কোলন নেয়) -alert( regexp.test('01:32:54:67:89') ); // false (5 numbers, must be 6) +alert( regexp.test('01:32:54:67:89') ); // মিথ্যা (৫টি নাম্বার, অবশ্যই ৬টি হতে হবে) +<<<<<<< HEAD +alert( regexp.test('01:32:54:67:89:ZZ') ) // মিথ্যা (শেষে ZZ) +======= alert( regexp.test('01:32:54:67:89:ZZ') ) // false (ZZ at the end) +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ``` diff --git a/9-regular-expressions/11-regexp-groups/02-find-webcolor-3-or-6/solution.md b/9-regular-expressions/11-regexp-groups/02-find-webcolor-3-or-6/solution.md index 0806dc4fd..8aea4299e 100644 --- a/9-regular-expressions/11-regexp-groups/02-find-webcolor-3-or-6/solution.md +++ b/9-regular-expressions/11-regexp-groups/02-find-webcolor-3-or-6/solution.md @@ -1,12 +1,12 @@ -A regexp to search 3-digit color `#abc`: `pattern:/#[a-f0-9]{3}/i`. +৩ অঙ্কবিশিষ্ট সংখ্যা খুঁজার রেগুলার এক্সপ্রেশন হল `#abc`: `pattern:/#[a-f0-9]{3}/i`। -We can add exactly 3 more optional hex digits. We don't need more or less. The color has either 3 or 6 digits. +এরপর আমরা শুধুমাত্র আরো ৩অঙ্কবিশিষ্ট অপশনাল হেক্সাডেসিমেল নাম্বার খুঁজার প্যাটার্ন লিখব, আমাদের এর বেশি বা কমের জন্য লাগবে না। সুতরাং কালারটি হবে ৩ বা ৬ অঙ্কের। -Let's use the quantifier `pattern:{1,2}` for that: we'll have `pattern:/#([a-f0-9]{3}){1,2}/i`. +চলুন এই জন্য এই কোয়ান্টিফায়ারটি `pattern:{1,2}` ব্যবহার করি: আমাদের প্যাটার্নটি হবে `pattern:/#([a-f0-9]{3}){1,2}/i`। -Here the pattern `pattern:[a-f0-9]{3}` is enclosed in parentheses to apply the quantifier `pattern:{1,2}`. +এখানে আমরা এই প্যাটার্নটি `pattern:[a-f0-9]{3}` প্যারান্টেসিসের মধ্যে লিখব, যাতে এই কোয়ান্টিফায়ারটি `pattern:{1,2}` ব্যবহার করা যায়। -In action: +এখানে দেখুন: ```js run let regexp = /#([a-f0-9]{3}){1,2}/gi; @@ -16,7 +16,7 @@ let str = "color: #3f3; background-color: #AA00ef; and: #abcd"; alert( str.match(regexp) ); // #3f3 #AA00ef #abc ``` -There's a minor problem here: the pattern found `match:#abc` in `subject:#abcd`. To prevent that we can add `pattern:\b` to the end: +তবে এখানে একটি ছোট্ট সমস্যা আছে `match:#abc` এই স্ট্রিংয়ের জন্যও কাজ করবে `subject:#abcd`, যা সঠিক নয়। এজন্য আমাদের শেষে `pattern:\b` ব্যবহার করা লাগবে: ```js run let regexp = /#([a-f0-9]{3}){1,2}\b/gi; diff --git a/9-regular-expressions/11-regexp-groups/02-find-webcolor-3-or-6/task.md b/9-regular-expressions/11-regexp-groups/02-find-webcolor-3-or-6/task.md index 09108484a..7203ea33a 100644 --- a/9-regular-expressions/11-regexp-groups/02-find-webcolor-3-or-6/task.md +++ b/9-regular-expressions/11-regexp-groups/02-find-webcolor-3-or-6/task.md @@ -1,14 +1,14 @@ -# Find color in the format #abc or #abcdef +# এই কালার ফরম্যাটগুলো খুঁজুন #abc বা #abcdef -Write a RegExp that matches colors in the format `#abc` or `#abcdef`. That is: `#` followed by 3 or 6 hexadecimal digits. +একটি রেগুলার এক্সপ্রেশন লিখুন যা এই দুটি কালার ফরম্যাটের সাথে ম্যাচ করবে `#abc` বা `#abcdef`। এটি হবে: `#` দ্বারা ৩ বা ৬ অঙ্কের হেক্সাডেসিমেল নাম্বার। -Usage example: +উদাহরণস্বরুপ: ```js -let regexp = /your regexp/g; +let regexp = /আপনার প্যাটার্ন লিখুন/g; let str = "color: #3f3; background-color: #AA00ef; and: #abcd"; alert( str.match(regexp) ); // #3f3 #AA00ef ``` -P.S. This should be exactly 3 or 6 hex digits. Values with 4 digits, such as `#abcd`, should not match. +বি.দ্র. এটি অবশ্যই ৩ বা ৬ অঙ্কের হেক্সাডেসিমেল নাম্বার হতে হবে। যেমন, ৪ অঙ্কের সাথে `#abcd` এরা মিলবে না। \ No newline at end of file diff --git a/9-regular-expressions/11-regexp-groups/03-find-decimal-numbers/solution.md b/9-regular-expressions/11-regexp-groups/03-find-decimal-numbers/solution.md index 813d619ef..9aaa47bcb 100644 --- a/9-regular-expressions/11-regexp-groups/03-find-decimal-numbers/solution.md +++ b/9-regular-expressions/11-regexp-groups/03-find-decimal-numbers/solution.md @@ -1,6 +1,10 @@ +<<<<<<< HEAD +আমরা পূর্বের চ্যাপ্টারে ডেসিমেল সংখ্যা কে অপশনাল রেখে খুঁজার উপায় দেখেছিলাম: `pattern:\d+(\.\d+)?`। +======= A positive number with an optional decimal part is: `pattern:\d+(\.\d+)?`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Let's add the optional `pattern:-` in the beginning: +ঋণাত্নক সংখ্যা খুঁজার জন্য শুরুতে `pattern:-` কে অপশনাল হিসেবে যোগ করি: ```js run let regexp = /-?\d+(\.\d+)?/g; diff --git a/9-regular-expressions/11-regexp-groups/03-find-decimal-numbers/task.md b/9-regular-expressions/11-regexp-groups/03-find-decimal-numbers/task.md index 4f5a73fff..6f4f3fcdb 100644 --- a/9-regular-expressions/11-regexp-groups/03-find-decimal-numbers/task.md +++ b/9-regular-expressions/11-regexp-groups/03-find-decimal-numbers/task.md @@ -1,11 +1,11 @@ -# Find all numbers +# সকল নাম্বার খুঁজুন -Write a regexp that looks for all decimal numbers including integer ones, with the floating point and negative ones. +সকল ডেসিমেল (পূর্ণ সংখ্যা এবং ঋণাত্নক) সংখ্যা খুঁজার একটি রেগুলার এক্সপ্রেশন লিখুন। -An example of use: +উদাহরণস্বরুপ: ```js -let regexp = /your regexp/g; +let regexp = /আপনার প্যাটার্ন লিখুন/g; let str = "-1.5 0 2 -123.4."; diff --git a/9-regular-expressions/11-regexp-groups/04-parse-expression/solution.md b/9-regular-expressions/11-regexp-groups/04-parse-expression/solution.md index b23813395..e3a062cc6 100644 --- a/9-regular-expressions/11-regexp-groups/04-parse-expression/solution.md +++ b/9-regular-expressions/11-regexp-groups/04-parse-expression/solution.md @@ -1,21 +1,33 @@ +<<<<<<< HEAD +সংখ্যা খুঁজার রেগুলার এক্সপ্রেশন: `pattern:-?\d+(\.\d+)?`। যা আমরা পূর্বের টাস্কে করেছিলাম। +======= A regexp for a number is: `pattern:-?\d+(\.\d+)?`. We created it in the previous task. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -An operator is `pattern:[-+*/]`. The hyphen `pattern:-` goes first in the square brackets, because in the middle it would mean a character range, while we just want a character `-`. +অপারেটর হল `pattern:[-+*/]`. হাইফেন `pattern:-` অবশ্যই ব্রাকেটের শুরুতে হতে হবে, কেননা মাঝে হলে এটি দ্বারা ক্যারাক্টারের রেঞ্জ বুঝায়, এখানে আমরা `-` কে ক্যারাক্টার হিসেবে ব্যবহার করতে চায়। -The slash `/` should be escaped inside a JavaScript regexp `pattern:/.../`, we'll do that later. +স্ল্যাশ `/` অবশ্যই জাভাস্ক্রিপ্টের রেগুলার এক্সপ্রেশনের মাঝে এস্কেপড `pattern:/.../` হয়, এটি আমরা এটি পরে দেখব। -We need a number, an operator, and then another number. And optional spaces between them. +আমাদের খুঁজা লাগবে একটি সংখ্যা অতঃপর একটি গাণিতিক চিহ্ন এবং শেষে আরো একটি সংখ্যা এবং তাদের মাঝের অতিরিক্ত স্পেস। -The full regular expression: `pattern:-?\d+(\.\d+)?\s*[-+*/]\s*-?\d+(\.\d+)?`. +<<<<<<< HEAD +সুতরাং রেগুলার এক্সপ্রেশনটি হবে: `pattern:-?\d+(\.\d+)?\s*[-+*/]\s*-?\d+(\.\d+)?`। +======= It has 3 parts, with `pattern:\s*` between them: 1. `pattern:-?\d+(\.\d+)?` - the first number, 2. `pattern:[-+*/]` - the operator, 3. `pattern:-?\d+(\.\d+)?` - the second number. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -To make each of these parts a separate element of the result array, let's enclose them in parentheses: `pattern:(-?\d+(\.\d+)?)\s*([-+*/])\s*(-?\d+(\.\d+)?)`. +এর ৩টি অংশ আছে, সাথে এটিও `pattern:\s*`: +১. `pattern:-?\d+(\.\d+)?` - প্রথম সংখ্যাটি। +২. `pattern:[-+*/]` - গাণিতিক চিহ্নটি। +৩. `pattern:-?\d+(\.\d+)?` - দ্বিতীয় সংখ্যাটি। -In action: +তাদের প্রত্যেককে রেজাল্ট অ্যারের আলাদা আলাদা উপাদান হিসেবে রাখতে প্যারান্টেসিস দ্বারা গ্রুপ করি: `pattern:(-?\d+(\.\d+)?)\s*([-+*/])\s*(-?\d+(\.\d+)?)`। + +যেমন: ```js run let regexp = /(-?\d+(\.\d+)?)\s*([-+*\/])\s*(-?\d+(\.\d+)?)/; @@ -23,22 +35,22 @@ let regexp = /(-?\d+(\.\d+)?)\s*([-+*\/])\s*(-?\d+(\.\d+)?)/; alert( "1.2 + 12".match(regexp) ); ``` -The result includes: +রেজাল্টে: -- `result[0] == "1.2 + 12"` (full match) -- `result[1] == "1.2"` (first group `(-?\d+(\.\d+)?)` -- the first number, including the decimal part) -- `result[2] == ".2"` (second group`(\.\d+)?` -- the first decimal part) -- `result[3] == "+"` (third group `([-+*\/])` -- the operator) -- `result[4] == "12"` (forth group `(-?\d+(\.\d+)?)` -- the second number) -- `result[5] == undefined` (fifth group `(\.\d+)?` -- the last decimal part is absent, so it's undefined) +- `result[0] == "1.2 + 12"` (সম্পূর্ন এক্সপ্রেশনটি) +- `result[1] == "1.2"` (প্রথম গ্রুপ `(-?\d+(\.\d+)?)` -- প্রথম সংখ্যাটি, দশমিক অংশটিসহ) +- `result[2] == ".2"` (দ্বিতীয় গ্রুপ`(\.\d+)?` -- প্রথম দশমিক অংশটি) +- `result[3] == "+"` (তৃতীয় গ্রুপ `([-+*\/])` -- গাণিতিক চিহ্নটি) +- `result[4] == "12"` (চতুর্থ গ্রুপ `(-?\d+(\.\d+)?)` -- দ্বিতীয় সংখ্যাটি) +- `result[5] == undefined` (পঞ্চম গ্রুপ `(\.\d+)?` -- দ্বিতীয় দশমিক অংশটি অনুপস্থিত, সুতরাং এটি undefined) -We only want the numbers and the operator, without the full match or the decimal parts, so let's "clean" the result a bit. +আমরা শুধু সংখ্যাগুলো এবং গাণিতিক চিহ্নটি চায়, সম্পূর্ন অংশটি বা দশমিক অংশটি চায় না, সুতরাং আমাদের রেজাল্টকে আরো কিছুটা "clean" করি। -The full match (the arrays first item) can be removed by shifting the array `result.shift()`. +সম্পূর্ন অংশটি যা অ্যারের প্রথম ইলিমেন্ট একে আমরা `result.shift()` মেথডের সাহায্যে বাদ দিতে পারি। -Groups that contain decimal parts (number 2 and 4) `pattern:(.\d+)` can be excluded by adding `pattern:?:` to the beginning: `pattern:(?:\.\d+)?`. +যে গ্রুপগুলোতে দশমিক অংশ থাকে (২ এবং ৪ আইটেম) এই অংশের `pattern:(.\d+)` শুরুতে `pattern:?:` যোগ করে তাদের বাদ দিতে পারি: `pattern:(?:\.\d+)?`। -The final solution: +সুতরাং সমাধানটি হবে: ```js run function parse(expr) { diff --git a/9-regular-expressions/11-regexp-groups/04-parse-expression/task.md b/9-regular-expressions/11-regexp-groups/04-parse-expression/task.md index 8b54d4683..7e45e5585 100644 --- a/9-regular-expressions/11-regexp-groups/04-parse-expression/task.md +++ b/9-regular-expressions/11-regexp-groups/04-parse-expression/task.md @@ -1,23 +1,23 @@ -# Parse an expression +# এক্সপ্রেশনকে পার্স -An arithmetical expression consists of 2 numbers and an operator between them, for instance: +একটি গাণিতিক সমীকরণে দুটি নাম্বার এবং তাদের মাঝে একটি গাণিতিক চিহ্ন আছে, যেমন: - `1 + 2` - `1.2 * 3.4` - `-3 / -6` - `-2 - 2` -The operator is one of: `"+"`, `"-"`, `"*"` or `"/"`. +গাণিতিক চিহ্নগুলো হল: `"+"`, `"-"`, `"*"` অথবা `"/"`। -There may be extra spaces at the beginning, at the end or between the parts. +এখানে সমীকরণের শুরুতে,মাঝে এবং শেষে অতিরিক্ত স্পেস থাকতে পারে। -Create a function `parse(expr)` that takes an expression and returns an array of 3 items: +একটি ফাংশন লিখুন যা `parse(expr)` একটি সমীকরণ নিবে এবং তাদের কে একটি অ্যারের ৩ টি উপাদান হিসেবে রিটার্ন করবে: -1. The first number. -2. The operator. -3. The second number. +১. প্রথম সংখ্যাটি। +২. গাণিতিক চিহ্নটি। +৩. দ্বিতীয় সংখ্যাটি। -For example: +যেমন: ```js let [a, op, b] = parse("1.2 * 3.4"); diff --git a/9-regular-expressions/11-regexp-groups/article.md b/9-regular-expressions/11-regexp-groups/article.md index 8fec60ccc..6e20db57a 100644 --- a/9-regular-expressions/11-regexp-groups/article.md +++ b/9-regular-expressions/11-regexp-groups/article.md @@ -1,31 +1,31 @@ -# Capturing groups +# গ্রুপ ক্যাপচারিং -A part of a pattern can be enclosed in parentheses `pattern:(...)`. This is called a "capturing group". +প্যাটার্নের কোন একটা অংশকে প্যারেন্টেসিস `pattern:(...)` দ্বারা লিখাকে "গ্রুপ ক্যাপচারিং" বলে। -That has two effects: +এর ফলে ফলাফলে দুটি পরিবর্তন আছে: -1. It allows to get a part of the match as a separate item in the result array. -2. If we put a quantifier after the parentheses, it applies to the parentheses as a whole. +১. এটি দ্বারা লব্ধ ফলাফলের অ্যারেতে কোন একটা অংশকে আলাদা পজিশনে রাখা যায়। +২. যদি প্যারেন্টেসিসের পরে আমরা কোয়ান্টিফায়ার রাখি, এটি সম্পূর্ন গ্রুপের জন্য কাজ করবে। -## Examples +## উদাহরণ -Let's see how parentheses work in examples. +চলুন উদাহরণ দিয়ে দেখি গ্রুপ ক্যাপচারিং কিভাবে কাজ করে। -### Example: gogogo +### উদাহরণ: gogogo -Without parentheses, the pattern `pattern:go+` means `subject:g` character, followed by `subject:o` repeated one or more times. For instance, `match:goooo` or `match:gooooooooo`. +প্যারেন্টেসিস ছাড়া, এই প্যাটার্নটি `pattern:go+` দ্বারা বুঝায় `subject:g` এবং `subject:o` এই দুটি ক্যারাক্টার এক বা একাধিকবার পুনরাবৃত্তি হবে। উদাহরণস্বরুপ, `match:goooo` অথবা `match:gooooooooo`। -Parentheses group characters together, so `pattern:(go)+` means `match:go`, `match:gogo`, `match:gogogo` and so on. +প্যারেন্টেসিস দ্বারা গ্রুপ ক্যারাক্টারগুলো একসাথে বুঝায়, সুতরাং `pattern:(go)+` দ্বারা প্রাপ্তমিলগুলো হতে পারে `match:go`, `match:gogo`, `match:gogogo` অনুরূপ আরো অনেক। ```js run alert( 'Gogogo now!'.match(/(go)+/ig) ); // "Gogogo" ``` -### Example: domain +### উদাহরণ: ডোমেন -Let's make something more complex -- a regular expression to search for a website domain. +চলুন আরো কঠিন কিছু করি -- রেগুলার এক্সপ্রেশন দ্বারা ওয়েবসাইটের ডোমেন খুঁজে বের করা। -For example: +যেমন: ``` mail.com @@ -33,9 +33,9 @@ users.mail.com smith.users.mail.com ``` -As we can see, a domain consists of repeated words, a dot after each one except the last one. +এইক্ষেত্রে আমরা দেখছি, ডোমেনে শেষ শব্দটি ব্যতীত প্রতিটি শব্দের শেষে একটি ডট থাকবে। -In regular expressions that's `pattern:(\w+\.)+\w+`: +রেগুলার এক্সপ্রেশন আমরা এটি এভাবে লিখতে পারি `pattern:(\w+\.)+\w+`: ```js run let regexp = /(\w+\.)+\w+/g; @@ -43,17 +43,17 @@ let regexp = /(\w+\.)+\w+/g; alert( "site.com my.site.com".match(regexp) ); // site.com,my.site.com ``` -The search works, but the pattern can't match a domain with a hyphen, e.g. `my-site.com`, because the hyphen does not belong to class `pattern:\w`. +এটি কাজ করছে, কিন্তু উপরের প্যাটার্নটি হাইফেনসহ ডোমেনের জন্য সঠিকভাবে কাজ করবে না, যেমন. `my-site.com`, কেননা `pattern:\w` এই ক্যারাক্টার ক্লাস দ্বারা হাইফেনকে নির্দেশিত করা যায় না। -We can fix it by replacing `pattern:\w` with `pattern:[\w-]` in every word except the last one: `pattern:([\w-]+\.)+\w+`. +`pattern:\w` এর পরিবর্তে `pattern:[\w-]` লিখার মাধ্যমে আমরা এটিকে নির্ভুল করতে পারি সুতরাং প্যাটার্নটি হবে: `pattern:([\w-]+\.)+\w+`। -### Example: email +### উদাহরণ: ইমেইল -The previous example can be extended. We can create a regular expression for emails based on it. +পূর্ববর্তী উদাহরণটিকে কিছুটা বর্ধিত করে আমরা ইমেইল এর জন্য একটি রেগুলার এক্সপ্রেশন লিখতে পারি। -The email format is: `name@domain`. Any word can be the name, hyphens and dots are allowed. In regular expressions that's `pattern:[-.\w]+`. +ইমেইল এর ফরম্যাট: `name@domain`। নামের মধ্যে ডট হাইফেন ইত্যাদি থাকতে পারে। সুতরাং রেগুলার এক্সপ্রেশনটি হবে `pattern:[-.\w]+`। -The pattern: +প্যাটার্ন: ```js run let regexp = /[-.\w]+@([\w-]+\.)+[\w-]+/g; @@ -61,24 +61,24 @@ let regexp = /[-.\w]+@([\w-]+\.)+[\w-]+/g; alert("my@mail.com @ his@site.com.uk".match(regexp)); // my@mail.com, his@site.com.uk ``` -That regexp is not perfect, but mostly works and helps to fix accidental mistypes. The only truly reliable check for an email can only be done by sending a letter. +এটি পুরোপুরি নির্ভুল নই, কিন্তু বেশিরভাগক্ষেত্রে অ্যাক্সিডেন্টালি ভুল টাইপিং এড়ানোর জন্য কাজের। আমরা একটি ইমেইল নির্ভুল কিনা তা যাচাই করতে পারি শুধুমাত্র ইমেইল প্রেরণের মাধ্যমে। -## Parentheses contents in the match +## রেজাল্টে প্যারেন্টেসিসের কন্টেন্টগুলো কিভাবে থাকে -Parentheses are numbered from left to right. The search engine memorizes the content matched by each of them and allows to get it in the result. +প্যারেন্টেসিসের কন্টেন্ট গুলোকে বাম থেকে ডানে হিসেব করা হয়। সার্চ ইঞ্জিন মিলকৃত সকল কন্টেন্টকে মনে রাখে এবং রেজাল্টে এদের পাওয়া যায়। -The method `str.match(regexp)`, if `regexp` has no flag `g`, looks for the first match and returns it as an array: +`str.match(regexp)` মেথড, যদি `regexp` কোন `g` ফ্ল্যাগ না থাকে, তাহলে প্রথম মিলটি খুঁজে এবং এটি অ্যারে হিসেবে দেখায়: -1. At index `0`: the full match. -2. At index `1`: the contents of the first parentheses. -3. At index `2`: the contents of the second parentheses. -4. ...and so on... +১. `0` তম ইনডেক্সে: সম্পূর্ণ মিলটি। +২. `1` তম ইনডেক্সে: প্রথম প্যারেন্টেসিসের মিলগুলো। +৩. `2` তম ইনডেক্সে: দ্বিতীয় প্যারেন্টেসিসের মিলগুলো। +৪. ...এভাবেই চলতে থাকে... -For instance, we'd like to find HTML tags `pattern:<.*?>`, and process them. It would be convenient to have tag content (what's inside the angles), in a separate variable. +উদাহরণস্বরূপ, আমরা HTML ট্যাগ `pattern:<.*?>` খুঁজে পেতে চাই, এবং এদের নিয়ে কাজ করতে চাই। এজন্য আমাদের ট্যাগগুলো এবং ট্যাগের নাম গুলো আলাদা আলাদা ভ্যারিয়েবলে রাখা সুবিধাজনক। -Let's wrap the inner content into parentheses, like this: `pattern:<(.*?)>`. +চলুন ট্যাগ নামগুলোকে আমরা প্যারেন্টেসিসের দ্বারা আবদ্ধ করি, এভাবে: `pattern:<(.*?)>`। -Now we'll get both the tag as a whole `match:<h1>` and its contents `match:h1` in the resulting array: +এখন আমরা পুরো ট্যাগটি `match:<h1>` এবং ট্যাগ নামটি `match:h1` রেজাল্টে অ্যারে হিসেবে পাব: ```js run let str = '<h1>Hello, world!</h1>'; @@ -89,23 +89,23 @@ alert( tag[0] ); // <h1> alert( tag[1] ); // h1 ``` -### Nested groups +### নেস্টেড গ্রুপ -Parentheses can be nested. In this case the numbering also goes from left to right. +প্যারেন্টেসিসগুলো নেস্টেডও হতে পারে। এক্ষেত্রেও রেজাল্টে এরা বাম থেকে ডানে আসবে। -For instance, when searching a tag in `subject:<span class="my">` we may be interested in: +উদাহরণস্বরূপ, যখন আমরা এই ধরণের ট্যাগে `subject:<span class="my">` অনুসন্ধান করব আমরা ফলাফলটিকে নিম্নোক্তভাবে রাখতে পারব: -1. The tag content as a whole: `match:span class="my"`. -2. The tag name: `match:span`. -3. The tag attributes: `match:class="my"`. +১. পুরো কন্টেন্টটি: `match:span class="my"`। +২. ট্যাগ নামটি: `match:span`। +৩. ট্যাগ অ্যাট্রিবিউট: `match:class="my"`। -Let's add parentheses for them: `pattern:<(([a-z]+)\s*([^>]*))>`. +সুতরাং নেস্টেড প্যাটার্নটি হবে এমন: `pattern:<(([a-z]+)\s*([^>]*))>`। -Here's how they are numbered (left to right, by the opening paren): +দেখুন এরা কিভাবে ক্রম হয় (প্যারেন্টেসিসের উপর ভিত্তি করে বাম থেকে ডানে): ![](regexp-nested-groups-pattern.svg) -In action: +উদাহরণ: ```js run let str = '<span class="my">'; @@ -119,59 +119,58 @@ alert(result[2]); // span alert(result[3]); // class="my" ``` -The zero index of `result` always holds the full match. +`result` এর শূন্যতম ইনডেক্সে সম্পূর্ণ কন্টেন্টটি। -Then groups, numbered from left to right by an opening paren. The first group is returned as `result[1]`. Here it encloses the whole tag content. +এরপর গ্রুপিং, ওপেনিং প্যারেন্টেসিসের এর উপর নির্ভর করে বাম থেকে ডানে। প্রথম গ্রুপটি হবে `result[1]`। এখানে পুরো ট্যাগ কন্টেন্টটি আসবে। -Then in `result[2]` goes the group from the second opening paren `pattern:([a-z]+)` - tag name, then in `result[3]` the tag: `pattern:([^>]*)`. +এরপর `result[2]` হল দ্বিতীয় ওপেনিং প্যারেন্টেসিসের `pattern:([a-z]+)` কন্টেন্ট - ট্যাগ নাম, এরপর `result[3]` ট্যাগ অ্যাট্রিবিউট: `pattern:([^>]*)`। -The contents of every group in the string: +স্ট্রিংয়ের প্রতিটি গ্রুপ: ![](regexp-nested-groups-matches.svg) -### Optional groups +### অপশনাল গ্রুপ -Even if a group is optional and doesn't exist in the match (e.g. has the quantifier `pattern:(...)?`), the corresponding `result` array item is present and equals `undefined`. +যদি কোন গ্রুপ অপশনাল হয় এবং কোন মিল না পায় (যেমন এই কোয়ান্টিফায়ারটি `pattern:(...)?`), `result` অ্যারেতে আইটেমটি `undefined` হিসেবে থাকবে। -For instance, let's consider the regexp `pattern:a(z)?(c)?`. It looks for `"a"` optionally followed by `"z"` optionally followed by `"c"`. +উদাহরণস্বরূপ, রেগুলার এক্সপ্রেশনটি দেখুন `pattern:a(z)?(c)?`। এটি প্রথমে `"a"` খুঁজে অতঃপর `"z"` এবং `"c"` কে অপশনাল হিসেবে খুঁজে। -If we run it on the string with a single letter `subject:a`, then the result is: +যদি আমরা একটি ক্যারাক্টার `subject:a` এর জন্য প্যাটার্নটি ব্যবহার করি, তাহলে ফলাফলটি হবে: ```js run let match = 'a'.match(/a(z)?(c)?/); alert( match.length ); // 3 -alert( match[0] ); // a (whole match) +alert( match[0] ); // a (সম্পূর্ন সাবজেক্ট) alert( match[1] ); // undefined alert( match[2] ); // undefined ``` +অ্যারেটির সাইজ `3`, কিন্তু গ্রুপ ইনডেক্স গুলো 'undefined'। -The array has the length of `3`, but all groups are empty. - -And here's a more complex match for the string `subject:ac`: +এখানে পূর্বেরটির চেয়ে আরেকটি জটিল সাব্জেক্ট আছে `subject:ac`: ```js run let match = 'ac'.match(/a(z)?(c)?/) alert( match.length ); // 3 -alert( match[0] ); // ac (whole match) -alert( match[1] ); // undefined, because there's nothing for (z)? +alert( match[0] ); // ac (সম্পূর্ন সাবজেক্ট) +alert( match[1] ); // undefined, কেননা (z)? এর সাথে কোন মিল নেই alert( match[2] ); // c ``` -The array length is permanent: `3`. But there's nothing for the group `pattern:(z)?`, so the result is `["ac", undefined, "c"]`. +অ্যারেটির সাইজ: `3`। কিন্তু `pattern:(z)?` এর জন্য কোন ফলাফল নেই, সুতরাং অ্যারেটি হবে `["ac", undefined, "c"]`। -## Searching for all matches with groups: matchAll +## সকল ম্যাচের জন্য গ্রুপ অনুসন্ধান: matchAll -```warn header="`matchAll` is a new method, polyfill may be needed" -The method `matchAll` is not supported in old browsers. +```warn header="`matchAll` হল একটি নতুন মেথড, এজন্য পলিফিলের দরকার হতে পারে" +`matchAll` পুরাতন ব্রাউজারের জন্য কাজ করবে না। -A polyfill may be required, such as <https://github.com/ljharb/String.prototype.matchAll>. +এজন্য পলিফিলের দরকার, যেমন <https://github.com/ljharb/String.prototype.matchAll>. ``` -When we search for all matches (flag `pattern:g`), the `match` method does not return contents for groups. +যখন আমরা সকল ম্যাচের জন্য ফ্ল্যাগ (`pattern:g`) দ্বারা অনুসন্ধান করব, `match` মেথডটি গ্রুপ কন্টেন্টগুলো রিটার্ন করে না। -For example, let's find all tags in a string: +যেমন, স্ট্রিংটি হতে সকল ট্যাগগুলো খুঁজি: ```js run let str = '<h1> <h2>'; @@ -181,55 +180,61 @@ let tags = str.match(/<(.*?)>/g); alert( tags ); // <h1>,<h2> ``` -The result is an array of matches, but without details about each of them. But in practice we usually need contents of capturing groups in the result. +রেজাল্টে আমরা ম্যাচকৃত সকল অ্যারে দেখি, কিন্তু তাদের প্রত্যেকের গ্রুপ কন্টেন্টের বিস্তারিত নেই। কিন্তু সাধারণত আমাদের ক্যাপচারিং গ্রুপের কন্টেন্ট গুলো রেজাল্টে লাগতে পারে। -To get them, we should search using the method `str.matchAll(regexp)`. +এজন্য, আমাদের সার্চিংটা `str.matchAll(regexp)` এই মেথডের সাহায্যে চালাতে হবে। -It was added to JavaScript language long after `match`, as its "new and improved version". +এটি জাভাস্ক্রিপ্টে `match` মেথডের অনেক পরে সংযুক্ত হয়েছে, এজন্য এটি "নতুন এবং উন্নত ভার্সন"। -Just like `match`, it looks for matches, but there are 3 differences: +`match` এর মত এটিও মিলগুলো খুঁজে, কিন্তু `match` এর সাথে ৩টি পার্থক্য আছে: -1. It returns not an array, but an iterable object. -2. When the flag `pattern:g` is present, it returns every match as an array with groups. -3. If there are no matches, it returns not `null`, but an empty iterable object. +১. এটি অ্যারে রিটার্নের পরিবর্তে একটি ইটারেবল অবজেক্ট রিটার্ন করে। +২. যখন `pattern:g` এই ফ্ল্যাগটি থাকে, এটি প্রতিটি মিলকে গ্রুপ কন্টেন্ট সহ একটি অ্যারে আকারে থাকে। +৩. যদি কোন মিল না থাকে, এটি `null` রিটার্নের পরিবর্তে একটি এম্পটি ইটারেবল অবজেক্ট রিটার্ন করে। -For instance: +উদাহরণস্বরূপ: ```js run let results = '<h1> <h2>'.matchAll(/<(.*?)>/gi); -// results - is not an array, but an iterable object +// results - অ্যারে পরিবর্তে একটি ইটারেবল অবজেক্ট alert(results); // [object RegExp String Iterator] alert(results[0]); // undefined (*) -results = Array.from(results); // let's turn it into array +results = Array.from(results); // অ্যারেতে নিয়ে যায় alert(results[0]); // <h1>,h1 (1st tag) alert(results[1]); // <h2>,h2 (2nd tag) ``` +<<<<<<< HEAD +আমরা দেখছি, প্রথম পার্থক্যটি অনেক গুরত্বপূর্ণ, `(*)` দ্বারা নির্দেশিত লাইনটি খেয়াল করুন। আমরা মিলটিকে `results[0]` এর মধ্যে পায় না, কেননা অবজেক্টটি সুডোঅ্যারে নই। আমরা এটিকে `Array.from` এর মাধ্যমে `Array` তে নিতে পারি। সুডোঅ্যারে এবং ইটারেবল সম্পর্কে বিস্তারিত জানতে পারবেন এই আর্টিকেলে <info:iterable>। + +`Array.from` ছাড়াও আমরা লুপের মাধ্যমে রেজাল্ট গুলো দেখতে পারি: +======= As we can see, the first difference is very important, as demonstrated in the line `(*)`. We can't get the match as `results[0]`, because that object is a pseudoarray. We can turn it into a real `Array` using `Array.from`. There are more details about pseudoarrays and iterables in the article <info:iterable>. There's no need for `Array.from` if we're looping over results: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run let results = '<h1> <h2>'.matchAll(/<(.*?)>/gi); for(let result of results) { alert(result); - // first alert: <h1>,h1 - // second: <h2>,h2 + // প্রথম অ্যালার্ট: <h1>,h1 + // দ্বিতীয়: <h2>,h2 } ``` -...Or using destructuring: +...অথবা destructuring ব্যবহারের মাধ্যমে: ```js let [tag1, tag2] = '<h1> <h2>'.matchAll(/<(.*?)>/gi); ``` -Every match, returned by `matchAll`, has the same format as returned by `match` without flag `pattern:g`: it's an array with additional properties `index` (match index in the string) and `input` (source string): +`matchAll` দ্বারা রিটার্নকৃত রেজাল্টের প্রতিটি ম্যাচ ফ্ল্যাগ `pattern:g` ছাড়া `match` মেথডের মত: তবে এর সাথে দুটি অতিরিক্ত প্রোপার্টি থাকে `index` (স্ট্রিংয়ে মিলকৃত ইনডেক্সটি) এবং `input` (সোর্স স্ট্রিং): ```js run let results = '<h1> <h2>'.matchAll(/<(.*?)>/gi); @@ -242,23 +247,27 @@ alert( tag1.index ); // 0 alert( tag1.input ); // <h1> <h2> ``` -```smart header="Why is a result of `matchAll` an iterable object, not an array?" -Why is the method designed like that? The reason is simple - for the optimization. +```smart header="`matchAll` এর রেজাল্ট অ্যারে না হয়ে ইটারেবল অবজেক্ট কেন?" +কেন এই মেথডটি এভাবে ডিজাইন করা হয়েছে? এর কারণ সহজ - অপ্টিমাইজেশনের জন্য। -The call to `matchAll` does not perform the search. Instead, it returns an iterable object, without the results initially. The search is performed each time we iterate over it, e.g. in the loop. +`matchAll` কল হলে এটি স্ট্রিংয়ে সার্চ করে না। তার পরিবর্তে, রেজাল্ট ইনিশিয়াল না হয়ে এটি একটি ইটারেবল অবজেক্ট রিটার্ন করে। এবং ইটারেটরের সময় সার্চ সম্পন্ন হয়, যেমন লুপে। -So, there will be found as many results as needed, not more. +সুতরাং, এটি প্রয়োজনমত রেজাল্ট খুঁজে পায়, এর বেশি না। +<<<<<<< HEAD +যেমন কোন টেক্সটে ১০০ টি ম্যাচ আছে, এবং `for..of` এর মাধ্যমে আমরা ৫টি মিল খুঁজি, তারপর আমরা লুপ হতে `break` এর মাধ্যমে বের হয়ে যেতে পারি। সুতরাং ইঞ্জিনের বাকী ৯৫টি মিল খুঁজার জন্য অতিরিক্ত সময় অতিবাহিত করা লাগবে না। +======= E.g. there are potentially 100 matches in the text, but in a `for..of` loop we found 5 of them, then decided it's enough and made a `break`. Then the engine won't spend time finding other 95 matches. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ``` -## Named groups +## গ্রুপের নামকরণ -Remembering groups by their numbers is hard. For simple patterns it's doable, but for more complex ones counting parentheses is inconvenient. We have a much better option: give names to parentheses. +ইনডেক্স দিয়ে গ্রুপগুলোকে মনে রাখা কষ্টসাধ্য। সহজ প্যাটার্নগুলোর জন্য এটি সহনীয়, তবে জটিল প্যাটার্নগুলোর জন্য প্যারেন্টেসিস গুনে ইনডেক্সিং করা অসুবিধাজনক। আমাদের কাছে প্যারেন্টেসিসের নামকরণের একটি উপায় আছে। -That's done by putting `pattern:?<name>` immediately after the opening paren. +শুরুর প্যারেন্টেসিসের পর `pattern:?<name>` লিখার মাধ্যমে আমরা নাম দিতে পারি। -For example, let's look for a date in the format "year-month-day": +যেমন, তারিখকে আমরা এভাবে ফরম্যাট করতে পারি "year-month-day": ```js run *!* @@ -273,11 +282,11 @@ alert(groups.month); // 04 alert(groups.day); // 30 ``` -As you can see, the groups reside in the `.groups` property of the match. +এখানে দেখতে পাচ্ছি, ক্যাপচারিং গ্রুপগুলো `.groups` এর প্রপার্টি হিসেবে আছে। -To look for all dates, we can add flag `pattern:g`. +একাধিক তারিখ বের করার জন্য আমাদের `pattern:g` এর সাহায্য নেয়া লাগবে। -We'll also need `matchAll` to obtain full matches, together with groups: +গ্রুপের সাথে সম্পূর্ণ মিল খুঁজার জন্য `matchAll` মেথডের সাহায্য লাগবে: ```js run let dateRegexp = /(?<year>[0-9]{4})-(?<month>[0-9]{2})-(?<day>[0-9]{2})/g; @@ -295,11 +304,11 @@ for(let result of results) { } ``` -## Capturing groups in replacement +## রিপ্লেসের জন্য ক্যাপচারিং গ্রুপ -Method `str.replace(regexp, replacement)` that replaces all matches with `regexp` in `str` allows to use parentheses contents in the `replacement` string. That's done using `pattern:$n`, where `pattern:n` is the group number. +`str.replace(regexp, replacement)` মেথডের সাহায্যে `regexp` এর সাথে মিলকৃত কন্টেন্ট সমূহকে রিপ্লেস করা যায়, এবং `str` এর `replacement` এ প্যারেন্টেসিস কন্টেন্টসমূহ ব্যবহার করতে পারি। এটি করা যায় `pattern:$n` এর মাধ্যমে, যেখানে `pattern:n` হল গ্রুপ নাম্বার। -For example, +যেমন, ```js run let str = "John Bull"; @@ -308,9 +317,9 @@ let regexp = /(\w+) (\w+)/; alert( str.replace(regexp, '$2, $1') ); // Bull, John ``` -For named parentheses the reference will be `pattern:$<name>`. +গ্রুপের নামকরণ এর ক্ষেত্রে ব্যবহার করা যায় এভাবে `pattern:$<name>`। -For example, let's reformat dates from "year-month-day" to "day.month.year": +যেমন, চলুন আমাদের তারিখটিকে "year-month-day" থেকে "day.month.year" এভাবে সাজাই: ```js run let regexp = /(?<year>[0-9]{4})-(?<month>[0-9]{2})-(?<day>[0-9]{2})/g; @@ -321,21 +330,25 @@ alert( str.replace(regexp, '$<day>.$<month>.$<year>') ); // 30.10.2019, 01.01.2020 ``` -## Non-capturing groups with ?: +## নন-ক্যাপচারিং গ্রুপ ?: -Sometimes we need parentheses to correctly apply a quantifier, but we don't want their contents in results. +অনেক সময় আমাদের গ্রুপ ক্যাপচারিং এমনভাবে করা লাগে, যেন ওই গ্রুপের কন্টেন্ট রেজাল্টের মধ্যে না আছে। -A group may be excluded by adding `pattern:?:` in the beginning. +একটি গ্রপের কন্টেন্ট কে রেজাল্ট থেকে বাদ দিতে পারি শুরুর প্যারেন্টেসিস পর `pattern:?:` দেয়ার মাধ্যমে। -For instance, if we want to find `pattern:(go)+`, but don't want the parentheses contents (`go`) as a separate array item, we can write: `pattern:(?:go)+`. +যেমন, আমরা `pattern:(go)+` এটিকে খুঁজতে চাই, কিন্তু আমরা (`go`) এর কন্টেন্টকে অ্যারের আলাদা আইটেম হিসেবে চাই না, সুতরাং আমরা এভাবে লিখতে পারি: `pattern:(?:go)+` -In the example below we only get the name `match:John` as a separate member of the match: +সুতরাং এজন্য আমরা শুধু এই নামটি `match:John` ১ম ইনডেক্সে পাব: ```js run let str = "Gogogo John!"; *!* +<<<<<<< HEAD +// ?: এর দ্বারা 'go' কে ক্যাপচারিং হতে বাদ দিতে পারি +======= // ?: excludes 'go' from capturing +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 let regexp = /(?:go)+ (\w+)/i; */!* @@ -343,22 +356,22 @@ let result = str.match(regexp); alert( result[0] ); // Gogogo John (full match) alert( result[1] ); // John -alert( result.length ); // 2 (no more items in the array) +alert( result.length ); // 2 (আর কোন আইটেম নেয়) ``` -## Summary +## সারাংশ -Parentheses group together a part of the regular expression, so that the quantifier applies to it as a whole. +প্যারেন্টেসিস গ্রুপগুলো রেগুলার এক্সপ্রেশনের একটি অংশ, সুতরাং কোয়ান্টিফায়ারগুলো এদের সম্পূর্নটার উপর কাজ করবে। -Parentheses groups are numbered left-to-right, and can optionally be named with `(?<name>...)`. +প্যারেন্টেসিস গ্রুপগুলো বাম থেকে ডানে ক্রম করা হয়, এবং চাইলে এদের নামকরণও করা যেতে পারে `(?<name>...)`। -The content, matched by a group, can be obtained in the results: +কন্টেন্ট যখন গ্রুপদ্বারা ম্যাচ হয়, তখন এদের রেজাল্টে পাওয়া যায়: -- The method `str.match` returns capturing groups only without flag `pattern:g`. -- The method `str.matchAll` always returns capturing groups. +- `str.match` মেথডটি এই ফ্ল্যাগছাড়া `pattern:g` ক্যাপচারিং করলে ক্যাপচারিং কন্টেন্টগুলো রিটার্ন করে। +- `str.matchAll` মেথডটি সর্বদা ক্যাপচারিং গ্রুপগুলো রিটার্ন করে। -If the parentheses have no name, then their contents is available in the match array by its number. Named parentheses are also available in the property `groups`. +যদি প্যারেন্টেসিসে নাম না থাকে, তাহলে অ্যারেতে এদের গ্রুপের ক্রমানুসারে পাওয়া যাবে। এবং গ্রুপের নামকরণ করলে এরা `groups` এর প্রপার্টি হিসেবে থাকবে। -We can also use parentheses contents in the replacement string in `str.replace`: by the number `$n` or the name `$<name>`. +গ্রুপ কন্টেন্টগুলো আমরা রিপ্লেসম্যান্টের সময় ব্যবহার করতে পারব `str.replace`: ইনডেক্স এর ক্ষেত্রে `$n` এবং নামের ক্ষেত্রে `$<name>`। -A group may be excluded from numbering by adding `pattern:?:` in its start. That's used when we need to apply a quantifier to the whole group, but don't want it as a separate item in the results array. We also can't reference such parentheses in the replacement string. +আমরা গ্রুপের শুরুতে `pattern:?:` ব্যবহারের মাধ্যমে রেজাল্ট হতে এদের বাদ দিতে পারি। আমরা যখন সম্পূর্ন গ্রুপে কোয়ান্টিফায়ার ব্যবহার করব, কিন্তু রেজাল্টে এদের আলাদা করে চায় না তখন এটি ব্যবহার করতে পারি। এছাড়াও স্ট্রিং রিপ্লেসম্যান্টের সময় আমরা প্যারেন্টেসিস ব্যবহার করতে পারব না। \ No newline at end of file diff --git a/9-regular-expressions/12-regexp-backreferences/article.md b/9-regular-expressions/12-regexp-backreferences/article.md index b80fa85cf..fde969f59 100644 --- a/9-regular-expressions/12-regexp-backreferences/article.md +++ b/9-regular-expressions/12-regexp-backreferences/article.md @@ -1,33 +1,33 @@ -# Backreferences in pattern: \N and \k<name> +# প্যাটার্নে ব্যাকরেফারেন্স: \N এবং \k<name> -We can use the contents of capturing groups `pattern:(...)` not only in the result or in the replacement string, but also in the pattern itself. +আমরা ক্যাপচারিং গ্রুপের `pattern:(...)` কন্টেন্ট কে রেজাল্ট বা রিপ্লেসমেন্ট ছাড়াও প্যাটার্নের কন্টেন্ট হিসেবে ব্যবহার করতে পারি। -## Backreference by number: \N +## নাম্বারের ব্যাকরেফারেন্স: \N -A group can be referenced in the pattern using `pattern:\N`, where `N` is the group number. +আমরা গ্রুপকে রেফারেন্স হিসেবে প্যাটার্নে `pattern:\N` ব্যবহার করতে পারি, এখানে `N` হল গ্রুপ নাম্বার। -To make clear why that's helpful, let's consider a task. +এর ব্যবহার আরো ভালোভাবে বুঝতে, চলুন একটা সমস্যা দেখি। -We need to find quoted strings: either single-quoted `subject:'...'` or a double-quoted `subject:"..."` -- both variants should match. +আমাদের একটি উক্তি খুঁজতে হবে: উক্তি হতে পারে একক উদ্ধৃতি চিহ্নের মাধ্যমে `subject:'...'` বা যুগল উদ্ধৃতি চিহ্নের মাধ্যমে `subject:"..."` -- শুরু এবং শেষ উভয় চিহ্নই মিলতে হবে। -How to find them? +কিভাবে আমরা এদের খুঁজব? -We can put both kinds of quotes in the square brackets: `pattern:['"](.*?)['"]`, but it would find strings with mixed quotes, like `match:"...'` and `match:'..."`. That would lead to incorrect matches when one quote appears inside other ones, like in the string `subject:"She's the one!"`: +আমরা উভয়ই চিহ্নই ব্রাকেটে রাখতে পারি: `pattern:['"](.*?)['"]`, তবে এটি মিশ্র চিহ্নদ্বারা গঠিত স্ট্রিংগুলোও খুঁজে পাবে, যেমন `match:"...'` বা `match:'..."`. কিছু স্ট্রিংয়ের জন্য এটি ভুল ফলাফল দেখাতে পারে, যেমন, `subject:"She's the one!"`: ```js run let str = `He said: "She's the one!".`; let regexp = /['"](.*?)['"]/g; -// The result is not what we'd like to have +// এটি একটি ভুল মিল alert( str.match(regexp) ); // "She' ``` -As we can see, the pattern found an opening quote `match:"`, then the text is consumed till the other quote `match:'`, that closes the match. +এখানে আমরা দেখছি, প্যাটার্নের শুরুর চিহ্নটি `match:"`, এরপর টেক্সটের মাঝে আরো একটি চিহ্ন `match:'` আছে, এবং অনুসন্ধানটি শেষ হয়। -To make sure that the pattern looks for the closing quote exactly the same as the opening one, we can wrap it into a capturing group and backreference it: `pattern:(['"])(.*?)\1`. +এজন্য আমাদের নিশ্চিত হতে হবে শেষ উক্তি চিহ্নটি অবশ্যই শুরুর চিহ্নের অনুরূপ, এজন্য আমরা শুরুর অংশটিকে গ্রুপ করে এর ব্যাকরেফারেন্স করতে পারি: `pattern:(['"])(.*?)\1`। -Here's the correct code: +সুতরাং প্যাটার্নটি হবে: ```js run let str = `He said: "She's the one!".`; @@ -39,27 +39,29 @@ let regexp = /(['"])(.*?)\1/g; alert( str.match(regexp) ); // "She's the one!" ``` -Now it works! The regular expression engine finds the first quote `pattern:(['"])` and memorizes its content. That's the first capturing group. +এখন এটি কাজ করছে! রেগুলার এক্সপ্রেশন প্রথম চিহ্নটি খুঁজে `pattern:(['"])` এবং কন্টেন্ট হিসেবে সংরক্ষণ করবে। যা প্রথম ক্যাপচারিং গ্রুপ। -Further in the pattern `pattern:\1` means "find the same text as in the first group", exactly the same quote in our case. +এই প্যাটার্ন `pattern:\1` দ্বারা বুঝায় "প্রথম গ্রুপের অনুরূপ অনুসন্ধান", এখানে আমাদের ক্ষেত্রে একই উদ্ধৃতি চিহ্ন। -Similar to that, `pattern:\2` would mean the contents of the second group, `pattern:\3` - the 3rd group, and so on. +অনুরূপভাবে, `pattern:\2` দ্বারা বুঝায় দ্বিতীয় গ্রুপ, `pattern:\3` - তৃতীয় গ্রুপ, এভাবেই হতে থাকে। ```smart -If we use `?:` in the group, then we can't reference it. Groups that are excluded from capturing `(?:...)` are not memorized by the engine. +যদি আমরা গ্রুপে এটি `?:` ব্যবহার করি, তাহলে আমরা গ্রুপকে রেফারেন্স করতে পারব না। যেসব গ্রুপকে ক্যাপচারিং `(?:...)` হতে বাদ দেয়া হয় তাদেরকে ইঞ্জিন সংরক্ষণ করে না। ``` -```warn header="Don't mess up: in the pattern `pattern:\1`, in the replacement: `pattern:$1`" -In the replacement string we use a dollar sign: `pattern:$1`, while in the pattern - a backslash `pattern:\1`. +```warn header="প্যাটার্নকে `pattern:\1`, রিপ্লেসমেন্টের প্যাটার্নের: `pattern:$1` সাথে গুলিয়ে না ফেলা" +রিপ্লেসমেন্টের সময় আমরা ডলার চিহ্ন ব্যবহার করি: `pattern:$1`, আর ব্যাকরেফারেন্সের জন্য ব্যাকস্ল্যাশ `pattern:\1`। ``` -## Backreference by name: `\k<name>` +## নামের ব্যাকরেফারেন্স: `\k<name>` -If a regexp has many parentheses, it's convenient to give them names. +রেগুলার এক্সপ্রেশনে যদি একাধিক প্যারেন্টেসিস থাকে, তাহলে এদের নামকরণ করা সুবিধাজনক। -To reference a named group we can use `pattern:\k<name>`. -In the example below the group with quotes is named `pattern:?<quote>`, so the backreference is `pattern:\k<quote>`: +নেমড গ্রুপগুলোকে ব্যাকরেফারেন্স হিসেবে ব্যবহারের প্যাটার্ন `pattern:\k<name>`। + + +যেমন নিচের উদাহরণে উদ্ধৃতি চিহ্নকে `pattern:?<quote>` দ্বারা নামকরণ করা হল, সুতরাং ব্যাকরেফারেন্স হবে `pattern:\k<quote>`: ```js run let str = `He said: "She's the one!".`; @@ -69,4 +71,4 @@ let regexp = /(?<quote>['"])(.*?)\k<quote>/g; */!* alert( str.match(regexp) ); // "She's the one!" -``` +``` \ No newline at end of file diff --git a/9-regular-expressions/13-regexp-alternation/01-find-programming-language/solution.md b/9-regular-expressions/13-regexp-alternation/01-find-programming-language/solution.md index e33f9cf2f..83056b5d8 100644 --- a/9-regular-expressions/13-regexp-alternation/01-find-programming-language/solution.md +++ b/9-regular-expressions/13-regexp-alternation/01-find-programming-language/solution.md @@ -1,7 +1,7 @@ -The first idea can be to list the languages with `|` in-between. +আমরা ল্যাংগুয়েজগুলোকে অল্টারনেশন `|` দ্বারা আলাদা আলাদা লিখতে পারি। -But that doesn't work right: +কিন্তু এটি কাজ করবে না: ```js run let regexp = /Java|JavaScript|PHP|C|C\+\+/g; @@ -11,18 +11,18 @@ let str = "Java, JavaScript, PHP, C, C++"; alert( str.match(regexp) ); // Java,Java,PHP,C,C ``` -The regular expression engine looks for alternations one-by-one. That is: first it checks if we have `match:Java`, otherwise -- looks for `match:JavaScript` and so on. +অল্টারনেশনের সময় রেগুলার এক্সপ্রেশন ইঞ্জিন এক এক করে খুঁজে। অর্থাৎ: প্রথমত এটি `match:Java` চেক করবে, যদি না মিলে এরপর `match:JavaScript` এভাবে চলতে থাকে। -As a result, `match:JavaScript` can never be found, just because `match:Java` is checked first. +যার ফলে, `match:JavaScript` কখনোই খুঁজে পাবে না, কেননা এটি শুরুতেই `match:Java` এর সাথে মিল হয়। -The same with `match:C` and `match:C++`. +অনুরূপভাবে `match:C` এবং `match:C++`। -There are two solutions for that problem: +এ সমস্যার দুটি সমাধান আছে: -1. Change the order to check the longer match first: `pattern:JavaScript|Java|C\+\+|C|PHP`. -2. Merge variants with the same start: `pattern:Java(Script)?|C(\+\+)?|PHP`. +১. আমাদের প্যাটার্নটিকে এভাবে সাজিয়ে: `pattern:JavaScript|Java|C\+\+|C|PHP`। +২. অথবা একই নামগুলোর জন্য অপশনাল গ্রুপ মার্জ করে: `pattern:Java(Script)?|C(\+\+)?|PHP`। -In action: +যেমন: ```js run let regexp = /Java(Script)?|C(\+\+)?|PHP/g; diff --git a/9-regular-expressions/13-regexp-alternation/01-find-programming-language/task.md b/9-regular-expressions/13-regexp-alternation/01-find-programming-language/task.md index e0f7af95c..0f3779da7 100644 --- a/9-regular-expressions/13-regexp-alternation/01-find-programming-language/task.md +++ b/9-regular-expressions/13-regexp-alternation/01-find-programming-language/task.md @@ -1,11 +1,11 @@ -# Find programming languages +# প্রোগ্রামিং ল্যাংগুয়েজ অনুসন্ধান -There are many programming languages, for instance Java, JavaScript, PHP, C, C++. +বর্তমানে অনেক প্রোগ্রামিং ল্যাংগুয়েজ আছে, যেমন Java, JavaScript, PHP, C, C++। -Create a regexp that finds them in the string `subject:Java JavaScript PHP C++ C`: +একটি রেগুলার এক্সপ্রেশন লিখুন যা দ্বারা এদের খুঁজে পাওয়া যায় `subject:Java JavaScript PHP C++ C`: ```js -let regexp = /your regexp/g; +let regexp = /আপনার প্যাটার্ন/g; alert("Java JavaScript PHP C++ C".match(regexp)); // Java JavaScript PHP C++ C ``` diff --git a/9-regular-expressions/13-regexp-alternation/02-find-matching-bbtags/solution.md b/9-regular-expressions/13-regexp-alternation/02-find-matching-bbtags/solution.md index fb6682b6b..e85016f6d 100644 --- a/9-regular-expressions/13-regexp-alternation/02-find-matching-bbtags/solution.md +++ b/9-regular-expressions/13-regexp-alternation/02-find-matching-bbtags/solution.md @@ -1,11 +1,19 @@ +<<<<<<< HEAD +শুরুর ট্যাগটি হবে `pattern:\[(b|url|quote)\]`। +======= Opening tag is `pattern:\[(b|url|quote)]`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Then to find everything till the closing tag -- let's use the pattern `pattern:.*?` with flag `pattern:s` to match any character including the newline and then add a backreference to the closing tag. +তারপর ট্যাগটি শেষ হওয়ার পূর্ব পর্যন্ত সকল কন্টেন্ট পেতে এটি `pattern:.*?` লিখি এবং নতুন লাইন সহ সকল ক্যারাক্টারের জন্য এই ফ্ল্যাগটি `pattern:s` ব্যবহার করি, অতঃপর শেষ ট্যাগটি লিখার জন্য ব্যাকরেফারেন্স ব্যবহার করি। +<<<<<<< HEAD +সম্পূর্ন প্যাটার্নটি হবে: `pattern:\[(b|url|quote)\].*?\[/\1\]`। +======= The full pattern: `pattern:\[(b|url|quote)\].*?\[/\1]`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -In action: +যেমন: ```js run let regexp = /\[(b|url|quote)].*?\[\/\1]/gs; @@ -20,4 +28,8 @@ let str = ` alert( str.match(regexp) ); // [b]hello![/b],[quote][url]http://google.com[/url][/quote] ``` +<<<<<<< HEAD +আমরা এই বন্ধনী `pattern:[` এবং `pattern:]` এর পূর্বে ব্যাকস্ল্যাশ দ্বারা এস্কেপিং করেছি, অনুরূপভাবে শেষ ট্যাগটিকেও `pattern:[\/\1]` এস্কেপিং করা লাগবে, কেননা স্ল্যাশ দ্বারা প্যাটার্নের শেষ বুঝায়। +======= Please note that besides escaping `pattern:[`, we had to escape a slash for the closing tag `pattern:[\/\1]`, because normally the slash closes the pattern. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 diff --git a/9-regular-expressions/13-regexp-alternation/02-find-matching-bbtags/task.md b/9-regular-expressions/13-regexp-alternation/02-find-matching-bbtags/task.md index 72d715afd..3e417da4a 100644 --- a/9-regular-expressions/13-regexp-alternation/02-find-matching-bbtags/task.md +++ b/9-regular-expressions/13-regexp-alternation/02-find-matching-bbtags/task.md @@ -1,25 +1,25 @@ -# Find bbtag pairs +# bbtag অনুসন্ধান -A "bb-tag" looks like `[tag]...[/tag]`, where `tag` is one of: `b`, `url` or `quote`. +"bb-tag" দেখতে এমন `[tag]...[/tag]`, যেখানে `tag` গুলো হতে পারে: `b`, `url` বা `quote`। -For instance: +উদাহরণস্বরূপ: ``` [b]text[/b] [url]http://google.com[/url] ``` -BB-tags can be nested. But a tag can't be nested into itself, for instance: +BB-tags একটার মধ্যে আরেকটা হতে পারে। কিন্তু একই ট্যাগের ভেতর নেস্টেড হবে না, যেমন: ``` -Normal: +সঠিক: [url] [b]http://google.com[/b] [/url] [quote] [b]text[/b] [/quote] -Can't happen: +ভুল: [b][b]text[/b][/b] ``` -Tags can contain line breaks, that's normal: +সাধারণত ট্যাগের মধ্যে লাইন ব্রেক থাকতে পারে: ``` [quote] @@ -27,21 +27,21 @@ Tags can contain line breaks, that's normal: [/quote] ``` -Create a regexp to find all BB-tags with their contents. +একটি রেগুলার এক্সপ্রেশন লিখুন যা দ্বারা সকল BB-tags এবং এদের কন্টেন্ট খুঁজে পাওয়া যায়। -For instance: +উদাহরণস্বরূপ: ```js -let regexp = /your regexp/flags; +let regexp = /আপনার রেগুলার এক্সপ্রেশন/ফ্ল্যাগস; let str = "..[url]http://google.com[/url].."; alert( str.match(regexp) ); // [url]http://google.com[/url] ``` -If tags are nested, then we need the outer tag (if we want we can continue the search in its content): +যদি ট্যাগটি নেস্টেড হয়, তবে আমরা প্যারেন্ট ট্যাগটি খুঁজব(তাহলে আমরা পরবর্তীতে এর মধ্যের কন্টেন্টগুলোতে অনুসন্ধান চালাতে পারব): ```js -let regexp = /your regexp/flags; +let regexp = /আপনার রেগুলার এক্সপ্রেশন/ফ্ল্যাগস;; let str = "..[url][b]http://google.com[/b][/url].."; alert( str.match(regexp) ); // [url][b]http://google.com[/b][/url] diff --git a/9-regular-expressions/13-regexp-alternation/03-match-quoted-string/solution.md b/9-regular-expressions/13-regexp-alternation/03-match-quoted-string/solution.md index 2749f3ff0..fde21d606 100644 --- a/9-regular-expressions/13-regexp-alternation/03-match-quoted-string/solution.md +++ b/9-regular-expressions/13-regexp-alternation/03-match-quoted-string/solution.md @@ -1,13 +1,20 @@ -The solution: `pattern:/"(\\.|[^"\\])*"/g`. +সমাধানটি হবে: `pattern:/"(\\.|[^"\\])*"/g`। -Step by step: +ধাপে ধাপে দেখি: +<<<<<<< HEAD +- প্রথমে আমরা একটি শুরুর উদ্ধৃতি চিহ্নটি খুঁজব `pattern:"` +- এরপর আমরা ব্যাকস্ল্যাশ খুঁজব `pattern:\\` (এজন্য আমাদের দুটি ব্যাকস্ল্যাশ দিতে হবে, কেননা এটি একটি স্পেশাল ক্যারাক্টার), এরপর যেকোন ক্যারাক্টারের জন্য(একটি ডট)। +- অন্যথায় আমরা উদ্ধৃতি চিহ্ন এবং ব্যাকস্ল্যাশ ব্যতীত সকল ক্যারাক্টার নিব: `pattern:[^"\\]` +- ...এবং সর্বশেষ শেষ উদ্ধৃতি চিহ্ন। +======= - First we look for an opening quote `pattern:"` - Then if we have a backslash `pattern:\\` (we have to double it in the pattern because it is a special character), then any character is fine after it (a dot). - Otherwise we take any character except a quote (that would mean the end of the string) and a backslash (to prevent lonely backslashes, the backslash is only used with some other symbol after it): `pattern:[^"\\]` - ...And so on till the closing quote. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -In action: +সমাধানটি হবে: ```js run let regexp = /"(\\.|[^"\\])*"/g; diff --git a/9-regular-expressions/13-regexp-alternation/03-match-quoted-string/task.md b/9-regular-expressions/13-regexp-alternation/03-match-quoted-string/task.md index 27b6bc5c8..7a003f50f 100644 --- a/9-regular-expressions/13-regexp-alternation/03-match-quoted-string/task.md +++ b/9-regular-expressions/13-regexp-alternation/03-match-quoted-string/task.md @@ -1,21 +1,34 @@ -# Find quoted strings +# স্ট্রিংয়ে উক্তি খুঁজা -Create a regexp to find strings in double quotes `subject:"..."`. +একটি রেগুলার এক্সপ্রেশন লিখুন যা স্ট্রিংয়ে উক্তি খুঁজে `subject:"..."`। +<<<<<<< HEAD +স্ট্রিংটি অবশ্যই জাভাস্ক্রিপ্ট স্ট্রিংয়ের মত এস্কেপিং সাপোর্ট করবে, উক্তিটির মধ্যে উদ্ধৃতি চিহ্ন `subject:\"` বা নিউলাইন ক্যারাক্টার থাকবে `subject:\n` এবং স্ল্যাশ `subject:\\` থাকবে। +======= The strings should support escaping, the same way as JavaScript strings do. For instance, quotes can be inserted as `subject:\"` a newline as `subject:\n`, and the backslash itself as `subject:\\`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js let str = "Just like \"here\"."; ``` -Please note, in particular, that an escaped quote `subject:\"` does not end a string. +আমাদের মনে রাখা উচিত যে, উক্তির মাঝে উদ্ধৃতি চিহ্ন থাকলে `subject:\"` তা দ্বারা বুঝায় উক্তিটি শেষ হয়নি। -So we should search from one quote to the other ignoring escaped quotes on the way. +সুতরাং অনুসন্ধানের সময় আমাদের উক্তির মাঝে এস্কেপিং উদ্ধৃতি চিহ্নগুলোও খুঁজতে হবে। -That's the essential part of the task, otherwise it would be trivial. +এটিই আমাদের এই টাস্কের জন্য কঠিন অংশ, অন্যথায় এটি একটি সহজ টাস্ক। -Examples of strings to match: +উদাহরণস্বরূপ এইগুলো দেখুন: ```js +<<<<<<< HEAD +.. *!*"test me"*/!* .. +.. *!*"Say \"Hello\"!"*/!* ... (উক্তির ভেতরে এস্কেপিং উদ্ধৃতি চিহ্ন) +.. *!*"\\"*/!* .. (উক্তির ভেতরে দুটি স্ল্যাশ) +.. *!*"\\ \""*/!* .. (উক্তির ভেতরে দুটি স্ল্যাশ এবং এস্কেপিং উদ্ধৃতি চিহ্ন) +``` + +জাভাস্ক্রিপ্টে স্ট্রিংয়ের মাঝে ডাবল স্ল্যাশ এভাবে লিখতে হবে: +======= .. *!*"test me"*/!* .. .. *!*"Say \"Hello\"!"*/!* ... (escaped quotes inside) .. *!*"\\"*/!* .. (double backslash inside) @@ -23,6 +36,7 @@ Examples of strings to match: ``` In JavaScript we need to double the backslashes to pass them right into the string, like this: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run let str = ' .. "test me" .. "Say \\"Hello\\"!" .. "\\\\ \\"" .. '; diff --git a/9-regular-expressions/13-regexp-alternation/04-match-exact-tag/solution.md b/9-regular-expressions/13-regexp-alternation/04-match-exact-tag/solution.md index 5d4ba8d96..6f9734b41 100644 --- a/9-regular-expressions/13-regexp-alternation/04-match-exact-tag/solution.md +++ b/9-regular-expressions/13-regexp-alternation/04-match-exact-tag/solution.md @@ -1,13 +1,13 @@ -The pattern start is obvious: `pattern:<style`. +প্যাটার্নটি শুরু হবে: `pattern:<style`। -...But then we can't simply write `pattern:<style.*?>`, because `match:<styler>` would match it. +...কিন্তু আমরা এটিকে এভাবে `pattern:<style.*?>` লিখতে পারব না, কেননা `match:<styler>` এর সাথেও মিলবে। -We need either a space after `match:<style` and then optionally something else or the ending `match:>`. +`match:<style` এর পর আমাদের একটি স্পেস লাগবে এবং এর পর তাদের অপশনাল অ্যাট্রিবিউট লাগবে এবং শেষ হবে `match:>` দ্বারা। -In the regexp language: `pattern:<style(>|\s.*?>)`. +সুতরাং প্যাটার্নটি হবে: `pattern:<style(>|\s.*?>)`। -In action: +সমাধানটি হবে: ```js run let regexp = /<style(>|\s.*?>)/g; diff --git a/9-regular-expressions/13-regexp-alternation/04-match-exact-tag/task.md b/9-regular-expressions/13-regexp-alternation/04-match-exact-tag/task.md index e8a9e31b4..9a1fbb0a5 100644 --- a/9-regular-expressions/13-regexp-alternation/04-match-exact-tag/task.md +++ b/9-regular-expressions/13-regexp-alternation/04-match-exact-tag/task.md @@ -1,13 +1,13 @@ -# Find the full tag +# সম্পূর্ন ট্যাগ অনুসন্ধান -Write a regexp to find the tag `<style...>`. It should match the full tag: it may have no attributes `<style>` or have several of them `<style type="..." id="...">`. +এই ট্যাগটি খুঁজার `<style...>` একটি রেগুলার এক্সপ্রেশন লিখুন। এটি অবশ্যই সম্পূর্ণ ট্যাগটির সাথে মিলবে: এটি অ্যাট্রিবিউট ছাড়াও হতে পারে `<style>` আবার এর একাধিক অ্যাট্রিবিউট থাকতে পারে `<style type="..." id="...">`। -...But the regexp should not match `<styler>`! +...কিন্তু এটি এর সাথে `<styler>` মিলবে না! -For instance: +উদাহরণস্বরূপ: ```js -let regexp = /your regexp/g; +let regexp = /আপনার প্যাটার্ন/g; alert( '<style> <styler> <style test="...">'.match(regexp) ); // <style>, <style test="..."> ``` diff --git a/9-regular-expressions/13-regexp-alternation/article.md b/9-regular-expressions/13-regexp-alternation/article.md index 0fe2175c7..79dda5b2f 100644 --- a/9-regular-expressions/13-regexp-alternation/article.md +++ b/9-regular-expressions/13-regexp-alternation/article.md @@ -1,14 +1,14 @@ -# Alternation (OR) | +# অল্টারনেশন (অর) | -Alternation is the term in regular expression that is actually a simple "OR". +রেগুলার এক্সপ্রেশনের অল্টারনেশন টার্মটিকে সহজ ভাষায় বলা হয় "OR (অর)"। -In a regular expression it is denoted with a vertical line character `pattern:|`. +রেগুলার এক্সপ্রেশনে এটিকে ভার্টিকেল লাইন ক্যারাক্টার `pattern:|` দ্বারা বুঝায়। -For instance, we need to find programming languages: HTML, PHP, Java or JavaScript. +যেমন, আমরা প্রোগ্রামিং ল্যাংগুয়েজগুলো খুঁজতে চাই: HTML, PHP, Java or JavaScript। -The corresponding regexp: `pattern:html|php|java(script)?`. +এজন্য রেগুলার এক্সপ্রেশটি হবে: `pattern:html|php|java(script)?`। -A usage example: +যেমন: ```js run let regexp = /html|php|css|java(script)?/gi; @@ -18,50 +18,62 @@ let str = "First HTML appeared, then CSS, then JavaScript"; alert( str.match(regexp) ); // 'HTML', 'CSS', 'JavaScript' ``` -We already saw a similar thing -- square brackets. They allow to choose between multiple characters, for instance `pattern:gr[ae]y` matches `match:gray` or `match:grey`. +আমরা ইতোমধ্যে স্কয়ার ব্র্যাকেট দ্বারা এমন সমস্যা সমাধান করেছি। এটি আমাদেরকে একাধিক ক্যারাক্টার নির্বাচন করতে দেয় , যেমন `pattern:gr[ae]y` এটি `match:gray` বা `match:grey` এর সাথে মিলবে। +<<<<<<< HEAD +স্কয়ার ব্র্যাকেট শুধুমাত্র ক্যারাক্টার বা ক্যারাক্টার সেট এর জন্য প্রযোজ্য। আর অল্টারনেশন যেকোন এক্সপ্রেশনের জন্য কাজ করে। রেগুলার এক্সপ্রেশটি `pattern:A|B|C` দ্বারা বুঝায় `A`, `B` বা `C`। +======= Square brackets allow only characters or character classes. Alternation allows any expressions. A regexp `pattern:A|B|C` means one of expressions `A`, `B` or `C`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -For instance: +যেমন: -- `pattern:gr(a|e)y` means exactly the same as `pattern:gr[ae]y`. -- `pattern:gra|ey` means `match:gra` or `match:ey`. +- `pattern:gr(a|e)y` দ্বারা বুঝায় এটি হুবহু `pattern:gr[ae]y` এর মত। +- `pattern:gra|ey` দ্বারা বুঝায় `match:gra` বা `match:ey`। -To apply alternation to a chosen part of the pattern, we can enclose it in parentheses: -- `pattern:I love HTML|CSS` matches `match:I love HTML` or `match:CSS`. -- `pattern:I love (HTML|CSS)` matches `match:I love HTML` or `match:I love CSS`. +আমরা কোন নির্দিষ্ট অংশকে অল্টারনেশন করতে চাইলে, একে প্যারেন্টেসিসের মধ্যে রাখতে হবে: +- `pattern:I love HTML|CSS` এটি মিলবে `match:I love HTML` বা `match:CSS` এর সাথে। +- `pattern:I love (HTML|CSS)` এটি মিলবে `match:I love HTML` বা `match:I love CSS` এর সাথে। -## Example: regexp for time +## উদাহরণ: সময়ের জন্য রেগুলার এক্সপ্রেশ +<<<<<<< HEAD +পূর্ববর্তীতে আমাদের একটি টাস্ক ছিল রেগুলার এক্সপ্রেশ দ্বারা সময় `hh:mm` খুঁজা, যেমন `12:00`। কিন্তু এই প্যাটার্নটি `pattern:\d\d:\d\d` একেবারে নির্ভুল ছিলনা। কেননা এটি `25:99` এর সাথেও মিল খুঁজে পেত(এখানে 25 এবং 99 প্যাটার্নের সাথে মিলে কিন্তু এটি একটি ভুল সময়)। +======= In previous articles there was a task to build a regexp for searching time in the form `hh:mm`, for instance `12:00`. But a simple `pattern:\d\d:\d\d` is too vague. It accepts `25:99` as the time (as 99 minutes match the pattern, but that time is invalid). +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -How can we make a better pattern? +আমরা কিভাবে আরো নির্ভুল প্যাটার্ন লিখতে পারি? -We can use more careful matching. First, the hours: +আমাদের ্প্যাটার্নটি আরো নিখুঁতভাবে করতে হবে। প্রথমত, ঘন্টা: -- If the first digit is `0` or `1`, then the next digit can be any: `pattern:[01]\d`. -- Otherwise, if the first digit is `2`, then the next must be `pattern:[0-3]`. -- (no other first digit is allowed) +- যদি প্রথম সংখ্যাটি `0` বা `1` হয়, পরবর্তী অংকটি যেকোন কিছু হতে পারে: `pattern:[01]\d`। +- অথবা, যদি প্রথম সংখ্যাটি `2` হয়, পরবর্তী অংকটি `pattern:[0-3]` এর মধ্যে হতে হবে। +- (প্রথম সংখ্যাটি ০,১ বা ২ ব্যতীত অন্য কিছু হবেনা) -We can write both variants in a regexp using alternation: `pattern:[01]\d|2[0-3]`. +সুতরা আমরা এটি অল্টারনেশনের সাহায্যে লিখতে পারি: `pattern:[01]\d|2[0-3]`। -Next, minutes must be from `00` to `59`. In the regular expression language that can be written as `pattern:[0-5]\d`: the first digit `0-5`, and then any digit. +এরপর, মিনিট হবে `00` থেকে `59` এর মধ্যে। রেগুলার এক্সপ্রেশনে এটিকে আমরা এভাবে লিখতে পারি `pattern:[0-5]\d`: প্রথম সংখ্যাটি `0-5` এর মধ্যে, এবং এরপর যেকোন অংক। +<<<<<<< HEAD +এখন ঘন্টা এবং মিনিটকে একত্রে লিখলে প্যাটার্নটি হবে: `pattern:[01]\d|2[0-3]:[0-5]\d`। +======= If we glue hours and minutes together, we get the pattern: `pattern:[01]\d|2[0-3]:[0-5]\d`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -We're almost done, but there's a problem. The alternation `pattern:|` now happens to be between `pattern:[01]\d` and `pattern:2[0-3]:[0-5]\d`. +আমাদের প্যাটার্ন লেখা প্রায় শেষ, ্কিন্তু এখানে একটি সমস্যা আছে। অল্টারনেশন `pattern:|` দ্বারা বুঝানো হচ্ছে হয় এটি `pattern:[01]\d` অথবা এটি `pattern:2[0-3]:[0-5]\d`। -That is: minutes are added to the second alternation variant, here's a clear picture: +অর্থাৎ মিনিটও দ্বিতীয় অল্টারনেশন ভ্যারিয়েন্ট এর সাথে যুক্ত হয়ে গেছে, এখানে ভালোভাবে দেখুন: ``` [01]\d | 2[0-3]:[0-5]\d ``` -That pattern looks for `pattern:[01]\d` or `pattern:2[0-3]:[0-5]\d`. +প্যাটার্নটি খুঁজবে `pattern:[01]\d` বা `pattern:2[0-3]:[0-5]\d`। -But that's wrong, the alternation should only be used in the "hours" part of the regular expression, to allow `pattern:[01]\d` OR `pattern:2[0-3]`. Let's correct that by enclosing "hours" into parentheses: `pattern:([01]\d|2[0-3]):[0-5]\d`. +কিন্তু এটি ভুল, অল্টারনেশন শুধুমাত্র "ঘন্টার" এর জন্য প্রযোজ্য হবে, হয় এটি হবে `pattern:[01]\d` নয়ত এটি `pattern:2[0-3]`। চলুন "ঘন্টার" অংশটিকে প্যারেন্টেসিসের মধ্যে লিখি: `pattern:([01]\d|2[0-3]):[0-5]\d`। -The final solution: +সুতরাং সমাধানটি হবে: ```js run let regexp = /([01]\d|2[0-3]):[0-5]\d/g; diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/solution.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/solution.md index ebc12689d..7b90f4355 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/solution.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/solution.md @@ -1,9 +1,13 @@ -The regexp for an integer number is `pattern:\d+`. +পূর্ণসংখ্যার রেগুলার এক্সপ্রেশন হল `pattern:\d+`। +<<<<<<< HEAD +আমরা ঋণাত্নক সংখ্যাগুলোকে বাদ দিতে পারি নেগেটিভ লুকবিহাইন্ড এর মাধ্যমে: `pattern:(?<!-)\d+`। +======= We can exclude negatives by prepending it with the negative lookbehind: `pattern:(?<!-)\d+`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Although, if we try it now, we may notice one more "extra" result: +সম্ভবত, আমরা এটি চেষ্টা করতে পারি, তবে এক্ষেত্রে আমরা "অতিরিক্ত" ফলাফল পাব: ```js run let regexp = /(?<!-)\d+/g; @@ -13,11 +17,11 @@ let str = "0 12 -5 123 -18"; console.log( str.match(regexp) ); // 0, 12, 123, *!*8*/!* ``` -As you can see, it matches `match:8`, from `subject:-18`. To exclude it, we need to ensure that the regexp starts matching a number not from the middle of another (non-matching) number. +এখানে দেখতে পাচ্ছি, `subject:-18` এর মিল `match:8`। এটিকে বাদ দিতে হলে, আমাদের নিশ্চিত হতে হবে রেগুলার এক্সপ্রেশনটি অন্য সংখ্যার মাঝে যাচাই করবে না। -We can do it by specifying another negative lookbehind: `pattern:(?<!-)(?<!\d)\d+`. Now `pattern:(?<!\d)` ensures that a match does not start after another digit, just what we need. +এজন্য আমরা আরো একটি লুকবিহাইন্ড ব্যবহার করতে পারি: `pattern:(?<!-)(?<!\d)\d+`। এখন `pattern:(?<!\d)` এর দ্বারা নিশ্চিত করছি কোন ম্যাচ অন্য ডিজিটের মাঝ থেকে যাচাই করবে না। -We can also join them into a single lookbehind here: +আমরা একে একটি লুকবিহাইন্ডে সংযোগ করতে পারি: ```js run let regexp = /(?<![-\d])\d+/g; diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/task.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/task.md index cd58f9923..c9d0efa90 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/task.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/task.md @@ -1,12 +1,12 @@ -# Find non-negative integers +# অঋণাত্নক পূর্ণসংখ্যার অনুসন্ধান -There's a string of integer numbers. +এখানে পূর্ণসংখ্যার একটি স্ট্রিং আছে। -Create a regexp that looks for only non-negative ones (zero is allowed). +একটি রেগুলার এক্সপ্রেশন লিখুন যা অঋণাত্নক পূর্ণসংখ্যার অনুসন্ধান করে (শূন্যও অনুসন্ধান করবে)। -An example of use: +উদাহরণ: ```js -let regexp = /your regexp/g; +let regexp = /আপনার প্যাটার্ন/g; let str = "0 12 -5 123 -18"; diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/solution.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/solution.md index 68bca8842..a72da27aa 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/solution.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/solution.md @@ -1,8 +1,14 @@ +<<<<<<< HEAD +`<body>` ট্যাগ ভিতরে নতুন ট্যাগ স্থাপনের জন্য, আমাদের প্রথমে এটি খুঁজে বের করতে হবে। এজন্য আমরা এই রেগুলার এক্সপ্রেশনটি ব্যবহার করব `pattern:<body.*>`। + +এই টাস্কের জন্য আমাদের `<body>` ট্যাগকে প্রতিস্থাপিত করা লাগবে না। আমাদের শুধুমাত্র ট্যাক্সটিকে সংযোগ করতে হবে। +======= In order to insert after the `<body>` tag, we must first find it. We can use the regular expression pattern `pattern:<body.*?>` for that. In this task, we don't need to modify the `<body>` tag. We only need to add the text after it. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Here's how we can do it: +এখানে দেখুন আমরা কিভাবে এটি করতে পারি: ```js run let str = '...<body style="...">...'; @@ -11,9 +17,14 @@ str = str.replace(/<body.*?>/, '$&<h1>Hello</h1>'); alert(str); // ...<body style="..."><h1>Hello</h1>... ``` +<<<<<<< HEAD +======= In the replacement string `$&` means the match itself, that is, the part of the source text that corresponds to `pattern:<body.*?>`. It gets replaced by itself plus `<h1>Hello</h1>`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 + +রিপ্লেসমেন্ট স্ট্রিংয়ে `$&` দ্বারা বুঝায় মিলের কন্টেন্টটি অর্থাৎ সোর্সের ট্যাক্সটি `pattern:<body.*>`। মিলকৃত কন্টেন্টটি অতঃপর `<h1>Hello</h1>`। -An alternative is to use lookbehind: +বিকল্প আরেকটি হতে পারে লুকবিহাইন্ড: ```js run let str = '...<body style="...">...'; @@ -22,8 +33,20 @@ str = str.replace(/(?<=<body.*?>)/, `<h1>Hello</h1>`); alert(str); // ...<body style="..."><h1>Hello</h1>... ``` -As you can see, there's only lookbehind part in this regexp. +এখানে দেখতে পাচ্ছি, এখানে রেগুলার এক্সপ্রেশনে শুধুমাত্র লুকবিহাইন্ডের অংশটি আছে। + +<<<<<<< HEAD +এটি এভাবে কাজ করছে: +- টেক্সটের প্রতিটি পজিশনে। +- যাচাই করছে পূর্বে `pattern:<body.*>` আছে কিনা। +- যদি থাকে তাহলে আমাদের মিলটি পাব। + +`pattern:<body.*>` ট্যাগটি রিটার্ন করবে না। সুতরাং রেজাল্ট হবে এম্পটি স্ট্রিং, কিন্ত ম্যাচটির অবস্থান হবে `pattern:<body.*>` এর পরের অবস্থানটি। + +সুতরা আমরা "empty line" টিকে রিপ্লেস করব `<h1>Hello</h1>` দ্বারা যার পূর্বে `pattern:<body.*>` আছে। সুতরাং নতুন ট্যাগটি হবে `<body>` এর পর। +লক্ষ্যনীয় রেগুলার এক্সপ্রেশন ফ্ল্যাগ, যেমন `pattern:s` এবং `pattern:i` দরকারী: `pattern:/<body.*>/si`। `pattern:s` ফ্ল্যাগটি `pattern:.` দ্বারা নিউলাইন ক্যারাক্টারকেও বুঝায়, এবং `pattern:i` ফ্ল্যাগ কেস-ইন্সেসিটিভ বুঝায় `pattern:<body>` এটি `match:<BODY>` এর সাথেও ম্যাচ করবে। +======= It works like this: - At every position in the text. - Check if it's preceded by `pattern:<body.*?>`. @@ -34,3 +57,4 @@ The tag `pattern:<body.*?>` won't be returned. The result of this regexp is lite So it replaces the "empty line", preceded by `pattern:<body.*?>`, with `<h1>Hello</h1>`. That's the insertion after `<body>`. P.S. Regexp flags, such as `pattern:s` and `pattern:i` can also be useful: `pattern:/<body.*?>/si`. The `pattern:s` flag makes the dot `pattern:.` match a newline character, and `pattern:i` flag makes `pattern:<body>` also match `match:<BODY>` case-insensitively. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/task.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/task.md index 5ee42798a..d5a69af94 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/task.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/task.md @@ -1,14 +1,13 @@ -# Insert After Head +# Body এর ভিতরে H1 ট্যাগ -We have a string with an HTML Document. +HTML Document এর একটি স্ট্রিং আছে। -Write a regular expression that inserts `<h1>Hello</h1>` immediately after `<body>` tag. The tag may have attributes. +একটি রেগুলার এক্সপ্রেশন লিখুন যার মাধ্যমে `<body>` ট্যাগ এর পর `<h1>Hello</h1>` কে সংযোগ করতে পারি। ট্যাগটির একাধিক অ্যাট্রিবিউট থাকতে পারে। -For instance: +উদাহরণস্বরূপ: ```js -let regexp = /your regular expression/; - +let regexp = /আপনার প্যাটার্ন/; let str = ` <html> <body style="height: 200px"> @@ -20,8 +19,12 @@ let str = ` str = str.replace(regexp, `<h1>Hello</h1>`); ``` +<<<<<<< HEAD +এর পর `str` এর মান হবে: +======= After that the value of `str` should be: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```html <html> <body style="height: 200px"><h1>Hello</h1> diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md index cee8215f9..998ebd5c1 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md @@ -1,39 +1,47 @@ -# Lookahead and lookbehind +# লুকঅ্যাহেড এবং লুকবিহাইন্ড +<<<<<<< HEAD +অনেক সময় আমাদের এমন প্যাটার্ন খুঁজা লাগে যা অন্য প্যাটার্নের উপর নির্ভর করে। +======= Sometimes we need to find only those matches for a pattern that are followed or preceded by another pattern. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -There's a special syntax for that, called "lookahead" and "lookbehind", together referred to as "lookaround". +এজন্য রেগুলার এক্সপ্রেশনে একটি বিশেষ সিনট্যাক্স আছে "লুকঅ্যাহেড" এবং "লুকবিহাইন্ড", এদের একত্রে বলা হয় "লুকঅ্যারাউন্ড"। -For the start, let's find the price from the string like `subject:1 turkey costs 30€`. That is: a number, followed by `subject:€` sign. +চলুন একটি ব্যবহারিক উদাহরণ দেখি, `subject:1 turkey costs 30€` এ স্ট্রিং হতে আমরা দাম খুঁজে বের করব। প্যাটার্নটি হবে প্রথমে একটি `subject:€` চিহ্ন তারপর একটি সংখ্যা। -## Lookahead +## লুকঅ্যাহেড -The syntax is: `pattern:X(?=Y)`, it means "look for `pattern:X`, but match only if followed by `pattern:Y`". There may be any pattern instead of `pattern:X` and `pattern:Y`. +সিনট্যাক্সটি হবে: `pattern:X(?=Y)`, এটি দ্বারা বুঝায় এর সাথে মিলবে `pattern:X`, কেবলমাত্র এটি যদি `pattern:Y` দ্বারা শুরু হয়। `pattern:X` এবং `pattern:Y` এর পরিবর্তে যেকোন প্যাটার্ন হতে পারে। -For an integer number followed by `subject:€`, the regexp will be `pattern:\d+(?=€)`: +`subject:€` পর একটি পূর্ণ সংখ্যা হবে, সুতরাং রেগুলার এক্সপ্রেশনটি হবে `pattern:\d+(?=€)`: ```js run let str = "1 turkey costs 30€"; -alert( str.match(/\d+(?=€)/) ); // 30, the number 1 is ignored, as it's not followed by € +alert( str.match(/\d+(?=€)/) ); // 30, 1 এর সাথে মিল হবে না কেননা এর পূর্বে € নাই ``` -Please note: the lookahead is merely a test, the contents of the parentheses `pattern:(?=...)` is not included in the result `match:30`. +লক্ষ্য করুন: লুকঅ্যাহেড হল একটি যাচাই পদ্ধতি, প্যারেন্টেসিসের কন্টেন্ট `pattern:(?=...)` রেজাল্টের মধ্যে আসবে না অর্থাৎ রেজাল্ট হবে `match:30`। -When we look for `pattern:X(?=Y)`, the regular expression engine finds `pattern:X` and then checks if there's `pattern:Y` immediately after it. If it's not so, then the potential match is skipped, and the search continues. +চলুন `pattern:X(?=Y)` কিভাবে কাজ করছে তা বোঝার চেষ্টা করি, রেগুলার এক্সপ্রেশন ইঞ্জিন প্রথমে খুঁজবে `pattern:X` এবং এরপর খুঁজবে `pattern:Y` আছে কিনা। যদি এটি না মেলে, তাহলে ঐ মিলগুলো বাদ দিবে, এবং অনুসন্ধান চালিয়ে যাবে। -More complex tests are possible, e.g. `pattern:X(?=Y)(?=Z)` means: +আমরা আরো জটিল অনুসন্ধানও চালাতে পারি, যেমন `pattern:X(?=Y)(?=Z)` দ্বারা বুঝায়: -1. Find `pattern:X`. -2. Check if `pattern:Y` is immediately after `pattern:X` (skip if isn't). -3. Check if `pattern:Z` is also immediately after `pattern:X` (skip if isn't). -4. If both tests passed, then the `pattern:X` is a match, otherwise continue searching. +১. প্রথমে `pattern:X` খুঁজবে। +২. পরবর্তী অনুসন্ধান চালাবে যদি `pattern:X` এরপর `pattern:Y` থাকে(অন্যথায় বাদ যাবে)। +৩. পরবর্তী অনুসন্ধান চালাবে যদি `pattern:X` এরপর `pattern:Z` থাকে(অন্যথায় বাদ যাবে)। +৪. যদি উভয়ই অনুসন্ধান মিলে, তাহলে `pattern:X` রেজাল্ট দেখাবে। -In other words, such pattern means that we're looking for `pattern:X` followed by `pattern:Y` and `pattern:Z` at the same time. +অন্য কথায় বলা যায়, আমরা `pattern:X` কে এমনভাবে খুঁজছি যার পরে `pattern:Y` এবং `pattern:Z` থাকবে। -That's only possible if patterns `pattern:Y` and `pattern:Z` aren't mutually exclusive. +এটি অবশ্যই সম্ভব হবে যদি `pattern:Y` এবং `pattern:Z` পরস্পর সাংঘর্ষিক না হয়। +<<<<<<< HEAD +যেমন, `pattern:\d+(?=\s)(?=.*30)` দ্বারা বুঝায় `pattern:\d+` এরপর একটি স্পেস থাকবে, এবং তারপর যেকোন অবস্থানে `30` থাকবে: +======= For example, `pattern:\d+(?=\s)(?=.*30)` looks for `pattern:\d+` that is followed by a space `pattern:(?=\s)`, and there's `30` somewhere after it `pattern:(?=.*30)`: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run let str = "1 turkey costs 30€"; @@ -41,71 +49,83 @@ let str = "1 turkey costs 30€"; alert( str.match(/\d+(?=\s)(?=.*30)/) ); // 1 ``` -In our string that exactly matches the number `1`. +এক্ষেত্রে আমাদের প্রাপ্ত ফলাফলটি হবে `1`। -## Negative lookahead +## নেগেটিভ লুকঅ্যাহেড -Let's say that we want a quantity instead, not a price from the same string. That's a number `pattern:\d+`, NOT followed by `subject:€`. +চলুন আমরা দামের বদলে পরিমাণ খুঁজে বের করি। সুতরাং সংখ্যাটি হবে `pattern:\d+` যার পরে `subject:€` থাকবে না। -For that, a negative lookahead can be applied. +এজন্য আমরা, নেগেটিভ লুকঅ্যাহেড এর সাহায্য নিতে পারি। -The syntax is: `pattern:X(?!Y)`, it means "search `pattern:X`, but only if not followed by `pattern:Y`". +সিনট্যাক্সটি হবে: `pattern:X(?!Y)`, এটি দ্বারা বুঝায় "`pattern:X` কে খুঁজবে, কেবলমাত্র এরপর যদি `pattern:Y` না থাকে"। ```js run let str = "2 turkeys cost 60€"; +<<<<<<< HEAD +alert( str.match(/\d+(?!€)/) ); // 2 (দামকে বাদ দেয়া হয়েছে) +======= alert( str.match(/\d+\b(?!€)/g) ); // 2 (the price is not matched) +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ``` -## Lookbehind +## লুকবিহাইন্ড +<<<<<<< HEAD +লুকঅ্যাহেড একটি শর্ত আরোপ করে "পরবর্তী অবস্থান"। +======= ```warn header="Lookbehind browser compatibility" Please Note: Lookbehind is not supported in non-V8 browsers, such as Safari, Internet Explorer. ``` Lookahead allows to add a condition for "what follows". +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Lookbehind is similar, but it looks behind. That is, it allows to match a pattern only if there's something before it. +লুকবিহাইন্ড ও অনুরূপ, কিন্তু এটি পূর্বের অবস্থান খুঁজে। অর্থাৎ এটি মিলবে কেবল প্যাটার্নের পূর্বের কোন একটি প্যাটার্নের সাথে মিললে। -The syntax is: -- Positive lookbehind: `pattern:(?<=Y)X`, matches `pattern:X`, but only if there's `pattern:Y` before it. -- Negative lookbehind: `pattern:(?<!Y)X`, matches `pattern:X`, but only if there's no `pattern:Y` before it. +সিনট্যাক্সটি হবে: +- পজেটিভ লুকবিহাইন্ড: `pattern:(?<=Y)X`, `pattern:X` মিলবে, কেবল এরপূর্বে যদি `pattern:Y` থাকে। +- নেগেটিভ লুকবিহাইন্ড: `pattern:(?<!Y)X`, `pattern:X` মিলবে, কেবল এরপূর্বে যদি `pattern:Y` না থাকে। -For example, let's change the price to US dollars. The dollar sign is usually before the number, so to look for `$30` we'll use `pattern:(?<=\$)\d+` -- an amount preceded by `subject:$`: +যেমন, চলুন আমরা দামটিকে US ডলার চিহ্ন দ্বারা প্রকাশ করি। ডলার চিহ্ন সাধারণত সংখ্যার পূর্বে থাকে, সুতরাং `$30` এটি খুঁজতে আমাদের প্যাটার্নটি হবে `pattern:(?<=\$)\d+` -- দামের পূর্বে একটি `subject:$` চিহ্ন: ```js run let str = "1 turkey costs $30"; -// the dollar sign is escaped \$ -alert( str.match(/(?<=\$)\d+/) ); // 30 (skipped the sole number) +// রেজাল্টে ডলার চিহ্নটি আসবে না \$ +alert( str.match(/(?<=\$)\d+/) ); // 30 (পরিমাণটি বাদ যাবে) ``` -And, if we need the quantity -- a number, not preceded by `subject:$`, then we can use a negative lookbehind `pattern:(?<!\$)\d+`: +এবং আমাদের যদি পরিমাণটি লাগে, অর্থাৎ আর পূর্বে `subject:$` থাকবে না, এজন্য আমরা নেগেটিভ লুকবিহাইন্ড ব্যবহার করতে পারব `pattern:(?<!\$)\d+`: ```js run let str = "2 turkeys cost $60"; +<<<<<<< HEAD +alert( str.match(/(?<!\$)\d+/) ); // 2 (দাম বাদ যাবে) +======= alert( str.match(/(?<!\$)\b\d+/g) ); // 2 (the price is not matched) +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ``` -## Capturing groups +## ক্যাপচারিং গ্রুপ -Generally, the contents inside lookaround parentheses does not become a part of the result. +সাধারণত, লুকঅ্যারাউন্ড এর প্যারেন্টেসিস এর কন্টেন্টগুলো রেজাল্টে আসেনা। -E.g. in the pattern `pattern:\d+(?=€)`, the `pattern:€` sign doesn't get captured as a part of the match. That's natural: we look for a number `pattern:\d+`, while `pattern:(?=€)` is just a test that it should be followed by `subject:€`. +যেমন এই প্যাটার্নে `pattern:\d+(?=€)`, `pattern:€` এই চিহ্নটি আমাদের মিলের অংশ হিসেবে দেখাবে না। এটিই স্বাভাবিক: কেননা আমরা এখানে একটি সংখ্যার `pattern:\d+` খুঁজ করছি, যেখানে `pattern:(?=€)` এটি দ্বারা শুধুমাত্র আমরা নিশ্চিত করছি সংখ্যাটি `subject:€` এরপর আসবে। -But in some situations we might want to capture the lookaround expression as well, or a part of it. That's possible. Just wrap that part into additional parentheses. +কিন্তু কিছু ক্ষেত্রে আমাদের লুক অ্যারাউন্ডের এক্সপ্রেশনটিকেও ক্যাপচার করতে হতে পারে, অথবা এর একটি অংশও হতে পারে। এটিও সম্ভব। আমাদের শুধু অংশটিকে আরেকটি আলাদা প্যারেন্টেসিসের মধ্যে লিখা লাগবে। -In the example below the currency sign `pattern:(€|kr)` is captured, along with the amount: +নিচের উদাহরণে আমরা দামের পাশাপাশি কারেন্সী চিহ্নকেও `pattern:(€|kr)` ক্যাপচার করব: ```js run let str = "1 turkey costs 30€"; -let regexp = /\d+(?=(€|kr))/; // extra parentheses around €|kr +let regexp = /\d+(?=(€|kr))/; // অতিরিক্ত একটি প্যারেন্টেসিস €|kr alert( str.match(regexp) ); // 30, € ``` -And here's the same for lookbehind: +লুকবিহাইন্ডের জন্য অনুরূপ: ```js run let str = "1 turkey costs $30"; @@ -114,21 +134,22 @@ let regexp = /(?<=(\$|£))\d+/; alert( str.match(regexp) ); // 30, $ ``` -## Summary +## সারাংশ -Lookahead and lookbehind (commonly referred to as "lookaround") are useful when we'd like to match something depending on the context before/after it. +"লুকঅ্যাহেড" এবং "লুকবিহাইন্ড" (একত্রে বলা হয় "লুকঅ্যারাউন্ড") ব্যবহার উপযোগী যদি কোন অংশ এর আগে বা পরের অংশের উপর নির্ভর করে। -For simple regexps we can do the similar thing manually. That is: match everything, in any context, and then filter by context in the loop. +সাধারণ রেগুলার এক্সপ্রেশনের মাধ্যমেই আমরা একই ব্যাপার করতে পারি। +অর্থাৎ যা সবকিছুর সাথেই মিল খুঁজবে, তারপর লুপের মাধ্যমে অই কন্টেক্সট গুলো যাচাই বাচাইয়ের মাধ্যমে খুঁজতে পারি। -Remember, `str.match` (without flag `pattern:g`) and `str.matchAll` (always) return matches as arrays with `index` property, so we know where exactly in the text it is, and can check the context. +মনে রাখবেন, `str.match` (`pattern:g` ফ্ল্যাগছাড়া) এবং `str.matchAll` (সর্বদাই) মিলগুলোকে `index` অ্যারে আকারে রিটার্ন করে, সুতরাং আমরা জানি আমাদের কোন ইনডেক্সে কোন কন্টেক্সট নিয়ে যাচাই বাছাই করা লাগবে। -But generally lookaround is more convenient. +তবে লুকঅ্যারাউন্ড এর মাধ্যমে আমরা এটি আরো সহজে করতে পারি। -Lookaround types: +লুকঅ্যারাউন্ড এর টাইপস: -| Pattern | type | matches | +| প্যাটার্ন | টাইপ | ম্যাচ | |--------------------|------------------|---------| -| `X(?=Y)` | Positive lookahead | `pattern:X` if followed by `pattern:Y` | -| `X(?!Y)` | Negative lookahead | `pattern:X` if not followed by `pattern:Y` | -| `(?<=Y)X` | Positive lookbehind | `pattern:X` if after `pattern:Y` | -| `(?<!Y)X` | Negative lookbehind | `pattern:X` if not after `pattern:Y` | +| `X(?=Y)` | পজেটিভ লুকঅ্যাহেড | `pattern:X` এর পরবর্তী প্যাটার্ন হবে `pattern:Y` | +| `X(?!Y)` | নেগেটিভ লুকঅ্যাহেড | `pattern:X` এর পরবর্তী প্যাটার্ন `pattern:Y` হবে না | +| `(?<=Y)X` | পজেটিভ লুকবিহাইন্ড | `pattern:X` এর পূর্ববর্তী প্যাটার্ন হবে `pattern:Y` | +| `(?<!Y)X` | নেগেটিভ লুকবিহাইন্ড | `pattern:X` এর পূর্ববর্তী প্যাটার্ন `pattern:Y` হবে না | \ No newline at end of file diff --git a/9-regular-expressions/15-regexp-catastrophic-backtracking/article.md b/9-regular-expressions/15-regexp-catastrophic-backtracking/article.md index c1d4040f7..40863b1b8 100644 --- a/9-regular-expressions/15-regexp-catastrophic-backtracking/article.md +++ b/9-regular-expressions/15-regexp-catastrophic-backtracking/article.md @@ -1,22 +1,22 @@ -# Catastrophic backtracking +# ধ্বংসাত্নক ব্যাকট্রাকিং (Catastrophic backtracking) -Some regular expressions are looking simple, but can execute a veeeeeery long time, and even "hang" the JavaScript engine. +কিছু রেগুলার এক্সপ্রেশন দেখতে মনে হয় সাধারণ, কিন্তু এদের এক্সিকিউশনে সময় এত বেশি নেয়, এরা জাভাস্ক্রিপ্ট ইঞ্জিনকে "হ্যাং" করে দিতে পারে। -Sooner or later most developers occasionally face such behavior. The typical symptom -- a regular expression works fine sometimes, but for certain strings it "hangs", consuming 100% of CPU. +বেশিরভাগ ডেভলাপারই আগে বা পরে এই বিপর্যয়ের সম্মুখীন হন, কেননা এ ধরণের রেগুলার এক্সপ্রেশন লিখা সহজ। সাধারণত -- অনেক সময় এই রেগুলার এক্সপ্রেশনগুলো কাজ করে, কিন্তু কিছু নির্দিষ্ট স্ট্রিংয়ের জন্য এরা ১০০% সিপিউ ব্যবহারের মাধ্যমে "হ্যাং" হয়ে যায়। -In such case a web-browser suggests to kill the script and reload the page. Not a good thing for sure. +এক্ষেত্রে ওয়েব ব্রাউজার স্ক্রিপ্টটিকে ধ্বংশ করে পুনরায় পেজটিকে রিলোড করার পরামর্শ দেয়। নিশ্চিতভাবে ব্যাপারটি ভালো না। -For server-side JavaScript such a regexp may hang the server process, that's even worse. So we definitely should take a look at it. +সার্ভার-সাইড জাভাস্ক্রিপ্টে এই ধরণের রেগুলার এক্সপ্রেশন সার্ভারের প্রসেস কে হ্যাং করে দেয়, যা আরো ভয়ানক! সুতরাং অবশ্যই আমাদের এই ব্যাপারটি জেনে রাখা উচিত.. -## Example +## উদাহরণ -Let's say we have a string, and we'd like to check if it consists of words `pattern:\w+` with an optional space `pattern:\s?` after each. +মনে করুন আমাদের একটি স্ট্রিং আছে, এবং আমরা এটি শব্দ `pattern:\w+` দ্বারা গঠিত কিনা যাচাই করতে চাই সেই সাথে প্রতিটির শেষে অপশনাল স্পেস `pattern:\s?` আছে কিনা যাচাই করব। -An obvious way to construct a regexp would be to take a word followed by an optional space `pattern:\w+\s?` and then repeat it with `*`. +রেগুলার এক্সপ্রেশনে আমরা এটি সহজেই করতে পারি, একটি শব্দ নিয়ে তারপর একটি অপশনাল স্পেস `pattern:\w+\s?` এবং এটিকে বারবার পুনরাবৃত্তি করব `*` কোয়ান্টিফায়ারের সাহায্যে। -That leads us to the regexp `pattern:^(\w+\s?)*$`, it specifies zero or more such words, that start at the beginning `pattern:^` and finish at the end `pattern:$` of the line. +সুতরাং রেগুলার এক্সপ্রেশনটি হবে `pattern:^(\w+\s?)*$`, এটি দ্বারা যাচাই করা হচ্ছে লাইনের শুরুতে `pattern:^` এবং `pattern:$` শেষে শূন্য বা একাধিক শব্দ আছে কিনা। -In action: +যেমন: ```js run let regexp = /^(\w+\s?)*$/; @@ -25,59 +25,77 @@ alert( regexp.test("A good string") ); // true alert( regexp.test("Bad characters: $@#") ); // false ``` -The regexp seems to work. The result is correct. Although, on certain strings it takes a lot of time. So long that JavaScript engine "hangs" with 100% CPU consumption. +এটি কাজ করছে। রেজাল্টটিও সঠিকভাবে দেয়। তবে, কিছু নির্দিষ্ট স্ট্রিংয়ের জন্য এটি প্রচুর সময় নিবে। সুতরাং জাভাস্ক্রিপ্ট ইঞ্জিন ১০০% সিপিউ ব্যবহারের মাধ্যমে "হ্যাং" হয়ে যাবে। -If you run the example below, you probably won't see anything, as JavaScript will just "hang". A web-browser will stop reacting on events, the UI will stop working (most browsers allow only scrolling). After some time it will suggest to reload the page. So be careful with this: +যদি আপনি নিচের উদাহরণটি রান করান, হয়তো আপনি কিছু দেখবেন না, তবে জাভাস্ক্রিপ্ট "হ্যাং" হয়ে যাবে। ওয়েব ব্রাউজারের ইভেন্ট, ইউ আই কাজ করা বন্ধ করে দিবে(তবে কিছু ব্রাউজারের স্ক্রল কাজ করতে পারে)। এবং কিছু সময় পর এটি পুনরায় পেজটিকে রিলোড করার পরামর্শ দিবে। সুতরাং এই ব্যাপারটি আপনার জেনে রাখা উচিত: ```js run let regexp = /^(\w+\s?)*$/; let str = "An input string that takes a long time or even makes this regexp hang!"; -// will take a very long time +// এটি অনেক সময় নিবে alert( regexp.test(str) ); ``` +<<<<<<< HEAD +কিছু রেগুলার এক্সপ্রেশন ইঞ্জিন এই ধরণের সার্চ করতে পারে, তবে বেশিরভাগই পারেনা। ব্রাউজার ইঞ্জিন সাধারণত হ্যাং হয়ে যায়। +======= To be fair, let's note that some regular expression engines can handle such a search effectively, for example V8 engine version starting from 8.8 can do that (so Google Chrome 88 doesn't hang here), while Firefox browser does hang. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -## Simplified example +## উদাহরণকে সহজীকরণ +<<<<<<< HEAD +এখানে কি ঘটছে? কেন রেগুলার এক্সপ্রেশন ইঞ্জিন "হ্যাং" হয়? +======= What's the matter? Why does the regular expression hang? +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -To understand that, let's simplify the example: remove spaces `pattern:\s?`. Then it becomes `pattern:^(\w+)*$`. +এটি বুঝার জন্য, চলুন সহজ একটি উদাহরণ দেখি: স্পেসটি বাদ দেন `pattern:\s?`। সুতরাং এটি হবে `pattern:^(\w+)*$`। -And, to make things more obvious, let's replace `pattern:\w` with `pattern:\d`. The resulting regular expression still hangs, for instance: +এবং, ব্যাপারটিকে আরো সুস্পষ্ট করে তুলতে, `pattern:\w` এর পরিবর্তে `pattern:\d` ব্যবহার করি। রেজাল্টের জন্য রেগুলার এক্সপ্রেশন ইঞ্জিন হ্যাং থাকবে, যেমন: ```js run let regexp = /^(\d+)*$/; let str = "012345678901234567890123456789z"; -// will take a very long time (careful!) +// এটি অনেক সময় নিবে (careful!) alert( regexp.test(str) ); ``` -So what's wrong with the regexp? +এই রেগুলার এক্সপ্রেশনের ভুলটি কোথায়? -First, one may notice that the regexp `pattern:(\d+)*` is a little bit strange. The quantifier `pattern:*` looks extraneous. If we want a number, we can use `pattern:\d+`. +প্রথমত, আমরা লক্ষ্য করছি আমাদের প্যাটার্নটি `pattern:(\d+)*` কিছুটা অদ্ভুত। কোয়ান্টিফায়ারটি `pattern:*` এখানে অপ্রয়োজনীয় মনে হচ্ছে। যদি আমরা সংখ্যা চাই, আমরা `pattern:\d+` এটি ব্যবহার করতে পারি। +<<<<<<< HEAD +প্রকৃতপক্ষে, রেগুলার এক্সপ্রেশনটি আর্টিফিশিয়াল, পূর্বের উদাহরণে আমরা এটি দেখেছি। কিন্তু এটি কেন এত ধীরে কাজ করছে। চলুন আগে এটি বুঝি, এবং তারপর আমাদের কাছে উপরের উদাহরণটি আরো সুস্পষ্ট হবে। +======= Indeed, the regexp is artificial; we got it by simplifying the previous example. But the reason why it is slow is the same. So let's understand it, and then the previous example will become obvious. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -What happens during the search of `pattern:^(\d+)*$` in the line `subject:123456789z` (shortened a bit for clarity, please note a non-digit character `subject:z` at the end, it's important), why does it take so long? +`subject:123456789z` এর মধ্যে `pattern:^(\d+)*$` এর দ্বারা অনুসন্ধানে কি ঘটে(সংক্ষিপ্তরূপটি আমাদের বুঝার সুবিধার্তে শেষে আমরা একটি অঙ্ক নয় এমন একটি ক্যারাক্টার `subject:z` সবার শেষে রেখেছি), কেন এটি এত সময় নেয়? -Here's what the regexp engine does: +এখানে রেগুলার এক্সপ্রেশন ইঞ্জিন কিভাবে কাজ করছে: -1. First, the regexp engine tries to find the content of the parentheses: the number `pattern:\d+`. The plus `pattern:+` is greedy by default, so it consumes all digits: +১. প্রথমত, রেগুলার এক্সপ্রেশনটি প্যারেন্টেসিসের অংশটি একটি সংখ্যা `pattern:\d+` অনুসন্ধান করে। কোয়ান্টিফায়ারটি `pattern:+` ডিফল্টভাবে গ্রীডি, সুতরাং এটি সকল অঙ্ক নিবে: ``` \d+....... (123456789)z ``` +<<<<<<< HEAD + সকল অঙ্ক নেয়ার পর, `pattern:\d+` অনুসন্ধানকৃত মানটি (`match:123456789`)। +======= After all digits are consumed, `pattern:\d+` is considered found (as `match:123456789`). Then the star quantifier `pattern:(\d+)*` applies. But there are no more digits in the text, so the star doesn't give anything. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 - The next character in the pattern is the string end `pattern:$`. But in the text we have `subject:z` instead, so there's no match: + এরপর এটি `pattern:(\d+)*` কোয়ান্টিফায়ার প্রয়োগ করবে, কিন্ত এখানে আর কোন অঙ্ক নেই, সুতরাং * কোন কিছু দিবে না। + + প্যাটার্নের শেষ অংশটি হল `pattern:$`, কিন্তু স্ট্রিংয়ের শেষ ক্যারাক্টারটি হল `subject:z`, সুতরাং এখানে কোন মিল পাবে না: ``` X @@ -85,16 +103,16 @@ Here's what the regexp engine does: (123456789)z ``` -2. As there's no match, the greedy quantifier `pattern:+` decreases the count of repetitions, backtracks one character back. +২. যেহেতু কোন মিল খুঁজে পাবে না, গ্রীডি কোয়ান্টিফায়ার `pattern:+` সুতরাং এটি আবার ক্যারাক্টারকে কমাতে থাকবে, সুতরাং এর অবস্থানটি পূর্ববর্তী ক্যারাক্টারে আসবে। - Now `pattern:\d+` takes all digits except the last one (`match:12345678`): + এখন `pattern:\d+` শেষ ক্যারাক্টারটি বাদে সকল ক্যারাক্টার নিবে (`match:12345678`): ``` \d+....... (12345678)9z ``` -3. Then the engine tries to continue the search from the next position (right after `match:12345678`). +৩. অতঃপর ইঞ্জিন পরবর্তী অবস্থান (`match:12345678`) থেকে পুনরায় অনুসন্ধান চালাবে। - The star `pattern:(\d+)*` can be applied -- it gives one more match of `pattern:\d+`, the number `match:9`: + `pattern:(\d+)*` কোয়ান্টিফায়ারটি আবার প্রয়োগ হবে -- এটি আরো একটি সংখ্যার `pattern:\d+` সাথে মিলে, সংখ্যাটি `match:9`: ``` @@ -102,7 +120,7 @@ Here's what the regexp engine does: (12345678)(9)z ``` - The engine tries to match `pattern:$` again, but fails, because it meets `subject:z` instead: + ইঞ্জিন প্যাটার্নের `pattern:$` শেষ অংশটি আবার মিলাতে চেষ্টা করে, কিন্তু আবারো মিলবে না, কেননা শেষ ক্যারাক্টারটি হল `subject:z`: ``` X @@ -111,11 +129,15 @@ Here's what the regexp engine does: ``` +<<<<<<< HEAD +৪. আবারো কোন মিল খুঁজে পাবে না, সুতরাং ইঞ্জিন আবারো ব্যাকট্রাকিং চালাবে, এবং সংখ্যার পুনরাবৃত্তি কমাবে। ব্যাকট্রাকিং সাধারণত এভাবে কাজ করে: শেষ গ্রীডি কোয়ান্টিফায়ার যত সম্ভব সংখ্যার পুনরাবৃত্তি কমাবে। তারপর এর পূর্ববর্তী কোয়ান্টিফায়ারের জন্য কমাবে, এভাবেই চলতে থাকে। +======= 4. There's no match, so the engine will continue backtracking, decreasing the number of repetitions. Backtracking generally works like this: the last greedy quantifier decreases the number of repetitions until it reaches the minimum. Then the previous greedy quantifier decreases, and so on. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 - All possible combinations are attempted. Here are their examples. + সকল সম্ভাব্যতা যাচাইয়ের চেষ্টা করবে। যেমন: - The first number `pattern:\d+` has 7 digits, and then a number of 2 digits: + প্রথম সংখ্যাটিতে `pattern:\d+` ৭টি অঙ্ক আছে, এবং পরবর্তী সংখ্যাটিতে ২টি অঙ্ক আছে: ``` X @@ -123,7 +145,7 @@ Here's what the regexp engine does: (1234567)(89)z ``` - The first number has 7 digits, and then two numbers of 1 digit each: + প্রথম সংখ্যাটিতে `pattern:\d+` ৭টি অঙ্ক আছে, এবং পরবর্তী ২টি সংখ্যাতে ১টি করে অঙ্ক আছে: ``` X @@ -131,7 +153,7 @@ Here's what the regexp engine does: (1234567)(8)(9)z ``` - The first number has 6 digits, and then a number of 3 digits: + প্রথম সংখ্যাটিতে `pattern:\d+` ৬টি অঙ্ক আছে, এবং পরবর্তী সংখ্যাতে ৩টি অঙ্ক আছে: ``` X @@ -139,7 +161,7 @@ Here's what the regexp engine does: (123456)(789)z ``` - The first number has 6 digits, and then 2 numbers: + প্রথম সংখ্যাটিতে `pattern:\d+` ৭টি অঙ্ক আছে, এবং পরবর্তী ২টি সংখ্যাতে ২টি এবং ১টি করে অঙ্ক আছে: ``` X @@ -147,22 +169,26 @@ Here's what the regexp engine does: (123456)(78)(9)z ``` - ...And so on. + ...এভাবেই চলতে থাকে। -There are many ways to split a sequence of digits `123456789` into numbers. To be precise, there are <code>2<sup>n</sup>-1</code>, where `n` is the length of the sequence. +এখানে `123456789` অঙ্কগুলোকে বিভিন্ন উপায়ে সাজানোর পদ্ধতি আছে। মোট উপায়টি হল, <code>2<sup>n</sup>-1</code>, যেখানে `n` হল সেটটির অঙ্কের সংখ্যা। -- For `123456789` we have `n=9`, that gives 511 combinations. -- For a longer sequence with `n=20` there are about one million (1048575) combinations. -- For `n=30` - a thousand times more (1073741823 combinations). +- `123456789` এ `n=9`, এর মোট ৫১১টি কম্বিনেশন আছে। +- আরো বড় সিক্যুয়েন্সের জন্য `n=20` মোট ১০৪৮৫৭৫ টি কম্বিনেশন আছে। +- `n=30` এর জন্য - আরো হাজার গুণ (১০৭৩৭৪১৮২৩ টি কম্বিনেশন)। -Trying each of them is exactly the reason why the search takes so long. +ইঞ্জিন প্রতিটি কম্বিনেশন মেলাতে চেষ্টা করে, তাই এটি এত সময় নেয়। -## Back to words and strings +## পুনরায় শব্দ এবং স্ট্রিং +<<<<<<< HEAD +একই ব্যাপারটি ঘটে আমাদের প্রথম উদাহরণে, যখন আমরা প্যাটার্নটি দ্বারা `pattern:^(\w+\s?)*$` স্ট্রিংয়ে `subject:An input that hangs!` শব্দের অনুসন্ধান চালায়। +======= The similar thing happens in our first example, when we look for words by pattern `pattern:^(\w+\s?)*$` in the string `subject:An input that hangs!`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -The reason is that a word can be represented as one `pattern:\w+` or many: +কেননা আমরা শব্দকে `pattern:\w+` এক বা একাধিক উপায়ে প্রকাশ করতে পারি: ``` (input) @@ -172,27 +198,27 @@ The reason is that a word can be represented as one `pattern:\w+` or many: ... ``` -For a human, it's obvious that there may be no match, because the string ends with an exclamation sign `!`, but the regular expression expects a wordly character `pattern:\w` or a space `pattern:\s` at the end. But the engine doesn't know that. +একজন মানুষ সহজেই বুঝতে পারে এখানে কোন মিল নেই, কেননা স্ট্রিংটি একটি আশ্চর্যবোধক চিহ্ন দ্বারা `!` শেষ হয়, কিন্তু আমাদের প্যাটার্নটি সবার শেষে `pattern:\w` একটি বর্ণ বা স্পেস `pattern:\s` খুঁজে। কিন্ত ইঞ্জিন এটি বুঝতে পারেনা। -It tries all combinations of how the regexp `pattern:(\w+\s?)*` can "consume" the string, including variants with spaces `pattern:(\w+\s)*` and without them `pattern:(\w+)*` (because spaces `pattern:\s?` are optional). As there are many such combinations (we've seen it with digits), the search takes a lot of time. +`pattern:(\w+\s?)*` এই প্যাটার্নটি স্ট্রিংয়ের সকল সম্ভাব্যতা এমনকি স্পেসসহ `pattern:(\w+\s)*` এবং স্পেসছাড়া `pattern:(\w+)*` সবকে যাচাই করে(কেননা স্পেস হল `pattern:\s?` অপশনাল)। এখানে অনেক কম্বিনেশন আছে(সংখ্যার উদাহরণে আমরা দেখেছি), এরা প্রচুর সময় নেয়। -What to do? +এক্ষেত্রে আমরা কি করতে পারি? -Should we turn on the lazy mode? +আমরা কি লেজি মোডে অনুসন্ধান করব? -Unfortunately, that won't help: if we replace `pattern:\w+` with `pattern:\w+?`, the regexp will still hang. The order of combinations will change, but not their total count. +দুর্ভাগ্যবশত, এটি কাজ করবে না: যদি আমরা `pattern:\d+` এর পরিবর্তে `pattern:\d+?` ব্যবহার করি, তাও রেগুলার এক্সপ্রেশন ইঞ্জিন হ্যাং হয়ে যাবে। কম্বিনেশন পরিবর্তন হবে, কিন্তু সম্পূর্ন সংখ্যার পরিবর্তন হবে না। -Some regular expression engines have tricky tests and finite automations that allow to avoid going through all combinations or make it much faster, but most engines don't, and it doesn't always help. +কিছু রেগুলার এক্সপ্রেশন ইঞ্জিন কৌশলে সসীম অটোমেশন যাচাই করে, যাতে সকল কম্বিনেশন যাচাই করতে না হয়, এর ফলে এরা কিছুটা দ্রুত কাজ করে, কিন্তু সকল ইঞ্জিন সকল টেস্টের জন্য এভাবে যাচাই করতে পারে না। -## How to fix? +## কিভাবে সমাধান করতে পারি? -There are two main approaches to fixing the problem. +সমস্যাটি সমাধানের দুটি পদ্ধতি আছে। -The first is to lower the number of possible combinations. +প্রথমটি হল আমরা যথাযথ সম্ভব কম্বিনেশনকে কমাব। -Let's make the space non-optional by rewriting the regular expression as `pattern:^(\w+\s)*\w*$` - we'll look for any number of words followed by a space `pattern:(\w+\s)*`, and then (optionally) a final word `pattern:\w*`. +চলুন প্যাটার্নটি আবার লিখি `pattern:^(\w+\s)*\w*` - প্রথমে আমরা খুঁজব শব্দের শেষে কোন স্পেস আছে কিনা `pattern:(\w+\s)*`, এবং সর্বশেষে একটি(অপশনাল) শব্দ `pattern:\w*`। -This regexp is equivalent to the previous one (matches the same) and works well: +এই প্যাটার্নটি পূর্বের মত(একই মিল খুঁজে) এবং এটি ভালোভাবে কাজ করে: ```js run let regexp = /^(\w+\s)*\w*$/; @@ -201,34 +227,38 @@ let str = "An input string that takes a long time or even makes this regex hang! alert( regexp.test(str) ); // false ``` -Why did the problem disappear? +সমস্যাটি কিভাবে দূরীভূত হল? -That's because now the space is mandatory. +কেননা এখন স্পেসটি বাধ্যতামূলক। -The previous regexp, if we omit the space, becomes `pattern:(\w+)*`, leading to many combinations of `\w+` within a single word +পূর্ববর্তী রেগুলার এক্সপ্রেশনে, যদি আমরা স্পেসটি বাদ দেই এটি হবে এমন `pattern:(\w+)*`, যা দ্বারা একটি শব্দের একাধিক `\w+` কম্বিনেশন হবে। -So `subject:input` could be matched as two repetitions of `pattern:\w+`, like this: +সুতরাং `subject:input` এটি পুনরাবৃত্তির সময় `pattern:\w+` দুইবার মিলবে, যেমন: ``` \w+ \w+ (inp)(ut) ``` -The new pattern is different: `pattern:(\w+\s)*` specifies repetitions of words followed by a space! The `subject:input` string can't be matched as two repetitions of `pattern:\w+\s`, because the space is mandatory. +কিন্ত আমাদের নতুন প্যাটার্নটিতে আমরা স্পেস দ্বারা শব্দকে নির্দিষ্ট করে দিচ্ছি: `pattern:(\w+\s)*`! `subject:input` স্ট্রিংটি দ্বিতীয়বার পুনরাবৃত্তিতে মিলবে না `pattern:\w+\s`, কেননা এখন স্পেসটি বাধ্যতামূলক। -The time needed to try a lot of (actually most of) combinations is now saved. +এর সাহায্যে আমরা একাধিক অপ্রয়োজনীয় কম্বিনেশন কে এড়াতে পারি। -## Preventing backtracking +## প্রিভেন্ট ব্যাকট্রাকিং +<<<<<<< HEAD +পুনরায় রেগুলার এক্সপ্রেশন লিখা সবসময় সহজ নয়। উপরের উদাহরণে এটি পরিবর্তন করা সহজ ছিল, কিন্তু সবসময় আমাদের কাছে এটি সহজবোধ্য থাকে না। +======= It's not always convenient to rewrite a regexp though. In the example above it was easy, but it's not always obvious how to do it. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Besides, a rewritten regexp is usually more complex, and that's not good. Regexps are complex enough without extra efforts. +এছাড়াও, পুনরায় লিখিত রেগুলার এক্সপ্রেশন আরো জটিল হয়, এবং এটি ভালোও না। এমনিতেও রেগুলার এক্সপ্রেশনসমূহ যথেষ্ট জটিল। -Luckily, there's an alternative approach. We can forbid backtracking for the quantifier. +তবে, আমাদের কাছে আরো একটি উপায় আছে। যার মাধ্যমে আমরা কোয়ান্টিফায়ারের জন্য ব্যাকট্রাকিং কে বাধা দিতে পারি। -The root of the problem is that the regexp engine tries many combinations that are obviously wrong for a human. +তবে রেগুলার এক্সপ্রেশন ইঞ্জিন এমন সব সম্ভাব্যতা নিয়ে চেষ্টা করে, কম্বিনেশনগুলো ভুল তা মানুষ সহজেই বুঝতে পারে। -E.g. in the regexp `pattern:(\d+)*$` it's obvious for a human, that `pattern:+` shouldn't backtrack. If we replace one `pattern:\d+` with two separate `pattern:\d+\d+`, nothing changes: +যেমন রেগুলার এক্সপ্রেশনটি `pattern:(\d+)*$` প্রোগ্রামারদের কাছে সুষ্পষ্ট, এটির `pattern:+` ব্যাকট্রাকিং করা উচিত নয়। যদি আমরা এটিকে `pattern:\d+` দুটি `pattern:\d+\d+` প্যাটার্নে বিভক্ত করি, তারপরও কোন পরিবর্তন হবে না: ``` \d+........ @@ -238,55 +268,75 @@ E.g. in the regexp `pattern:(\d+)*$` it's obvious for a human, that `pattern:+` (1234)(56789)! ``` +<<<<<<< HEAD +এবং আমাদের মূল উদাহারণটিতে `pattern:^(\w+\s?)*$` আমরা চাই ব্যাকট্রাকিংকে বাদ দিতে `pattern:\w+`। সুতরাং: `pattern:\w+` এটি সম্ভাব্য পুরো শব্দের সাথে মিলবে। পুনরাবৃত্তি কে না কমিয়ে আমরা `pattern:\w+` কে `pattern:\w+\w+` দুটি শব্দে বিভক্ত করতে পারি। +======= And in the original example `pattern:^(\w+\s?)*$` we may want to forbid backtracking in `pattern:\w+`. That is: `pattern:\w+` should match a whole word, with the maximal possible length. There's no need to lower the repetitions count in `pattern:\w+` or to split it into two words `pattern:\w+\w+` and so on. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -Modern regular expression engines support possessive quantifiers for that. Regular quantifiers become possessive if we add `pattern:+` after them. That is, we use `pattern:\d++` instead of `pattern:\d+` to stop `pattern:+` from backtracking. +আধুনিক রেগুলার এক্সপ্রেশ ইঞ্জিন গুলো পসেসিভ কোয়ান্টিফায়ার সমর্থন করে। পসেসিভের কোয়ান্টিফায়ারের জন্য কোয়ান্টিফায়ারের পরে `pattern:+` যোগ করলে হবে। ব্যাকট্রাকিংকে থামাতে আমরা `pattern:\d+` এর বদলে `pattern:\d++` লিখব। +<<<<<<< HEAD +পসেসিভের কোয়ান্টিফায়ার সমূহ আরো সহজ। এরা ব্যাকট্রাকিং ছাড়া যতটা সম্ভব মেলাতে চেষ্টা করে। ব্যাকট্রাকিং ছাড়া এই অনুসন্ধানটি আরো সহজবোধ্য। +======= Possessive quantifiers are in fact simpler than "regular" ones. They just match as many as they can, without any backtracking. The search process without backtracking is simpler. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -There are also so-called "atomic capturing groups" - a way to disable backtracking inside parentheses. +এদেরকে "এটমিক ক্যাপচারিং গ্রুপও" বলা হয় - প্যারেন্টেসিসের ভিতর ব্যাকট্রাকিংয় রোধের একটি উপায়। +<<<<<<< HEAD +...কিন্তু দুর্ভাগ্যবশত, জাভাস্ক্রিপ্টে এটি সাপোর্ট করে না। +======= ...But the bad news is that, unfortunately, in JavaScript they are not supported. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -We can emulate them though using a "lookahead transform". +তবে লুকঅ্যাহেডের মাধ্যমে আমরা অনূরূপ কাজ করতে পারি। ### Lookahead to the rescue! -So we've come to real advanced topics. We'd like a quantifier, such as `pattern:+` not to backtrack, because sometimes backtracking makes no sense. +এখন আমরা আমাদের মূল সমস্যাটির আলোচনা করব। আমরা এমন একটি কোয়ান্টিফায়ার চাই, যেমন `pattern:+` যেন ব্যাকট্রাক না করে, কেননা অনেক সময় ব্যাকট্রাকিং কাজে আসে না। +<<<<<<< HEAD +`pattern:(?=(\w+))\1` প্যাটার্নটি ব্যাকট্রাকিং ছাড়াই সর্বোচ্চ সংখ্যক `pattern:\w` পুনরাবৃত্তিকে ক্যাপচার করে। অবশ্য, আমরা `pattern:\w` এর পরিবর্তে অন্যান্য প্যাটার্নও নিতে পারি। +======= The pattern to take as many repetitions of `pattern:\w` as possible without backtracking is: `pattern:(?=(\w+))\1`. Of course, we could take another pattern instead of `pattern:\w`. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -That may seem odd, but it's actually a very simple transform. +এটি দেখতে যদিও বিদঘুটে, কিন্তু আসলেই এটি সাধারণ একটি পরিবর্তন। -Let's decipher it: +চলুন প্যাটার্নটি বুঝার চেষ্টা করি: -- Lookahead `pattern:?=` looks forward for the longest word `pattern:\w+` starting at the current position. -- The contents of parentheses with `pattern:?=...` isn't memorized by the engine, so wrap `pattern:\w+` into parentheses. Then the engine will memorize their contents -- ...And allow us to reference it in the pattern as `pattern:\1`. +- লুকঅ্যাহেড `pattern:?=` বর্তমান পজিশন থেকে সবচেয়ে দীর্ঘ শব্দটি `pattern:\w+` খুঁজে। +- প্যারেন্টেসিসের `pattern:?=...` ভিতরের কন্টেন্ট `pattern:?=...` ইঞ্জিন সংরক্ষণ করে না, সুতরাং আমরা `pattern:\w+` কে আরো একটি প্যারেন্টেসিসের মধ্যে রাখি। এখন ইঞ্জিন কন্টেন্টসমূহকে সংরক্ষণ করে +- ...এবং আমরা একে প্যাটার্নে রেফারেন্স হিসেবে ব্যবহার করি `pattern:\1`। -That is: we look ahead - and if there's a word `pattern:\w+`, then match it as `pattern:\1`. +অর্থাৎ: আমরা পরবর্তী ক্যারাক্টারগুলো দেখছি এবং যদি কোন শব্দ `pattern:\w+` থাকে, তারপর `pattern:\1` এটির সাথে মিলবে। -Why? That's because the lookahead finds a word `pattern:\w+` as a whole and we capture it into the pattern with `pattern:\1`. So we essentially implemented a possessive plus `pattern:+` quantifier. It captures only the whole word `pattern:\w+`, not a part of it. +কেন? কেননা লুকঅ্যাহেড সম্পূর্ন শব্দকে `pattern:\w+` খুঁজে এবং আমরা এটিকে প্যাটার্নে ক্যাপচার করি `pattern:\1`। এটি দ্বারা আসলে আমরা পসেসিভ কোয়ান্টিফায়ারকে `pattern:+` বাস্তবায়িত করছি। এটি দ্বারা কোন একটি অংশ ক্যাপচার না হয়ে সম্পূর্ন শব্দটি ক্যাপচার হচ্ছে `pattern:\w+`। -For instance, in the word `subject:JavaScript` it may not only match `match:Java`, but leave out `match:Script` to match the rest of the pattern. +যেমন, `subject:JavaScript` এই শব্দটি কেবল `match:Java` এর সাথে ম্যাচ করবে না, এবং বাকী প্যাটার্নের `match:Script` সাথে মিল খুঁজে বাদ দেয়। -Here's the comparison of two patterns: +এখানে প্যাটার্ন দুটির তুলনা দেখুন: ```js run alert( "JavaScript".match(/\w+Script/)); // JavaScript alert( "JavaScript".match(/(?=(\w+))\1Script/)); // null ``` -1. In the first variant `pattern:\w+` first captures the whole word `subject:JavaScript` but then `pattern:+` backtracks character by character, to try to match the rest of the pattern, until it finally succeeds (when `pattern:\w+` matches `match:Java`). -2. In the second variant `pattern:(?=(\w+))` looks ahead and finds the word `subject:JavaScript`, that is included into the pattern as a whole by `pattern:\1`, so there remains no way to find `subject:Script` after it. +1. প্রথম প্যাটার্নটিতে `pattern:\w+` প্রথমে সম্পুর্ন শব্দটি `subject:JavaScript` ক্যাপচার করে এবং তারপর `pattern:+` ব্যাকট্রাকিং করে শেষ হতে, এবং বাকী প্যাটার্নটি মেলানোর চেষ্টা করে, এবং শেষ পর্যন্ত মিলে যায় (যখন `pattern:\w+` প্যাটার্নটি `match:Java` এর সাথে মিলে)। +2. দ্বিতীয় লুকঅ্যাহেড প্যাটার্নটি `pattern:(?=(\w+))` শব্দটি `subject:JavaScript` খুঁজে, এবং এটিও প্যাটার্নে `pattern:\1` সংযুক্ত হয়, সুতরাং এর পরে আর `subject:Script` খুঁজে পায় না। -We can put a more complex regular expression into `pattern:(?=(\w+))\1` instead of `pattern:\w`, when we need to forbid backtracking for `pattern:+` after it. +আমরা `pattern:(?=(\w+))\1` এই প্যাটার্নে `pattern:\w` এর পরিবর্তে আরো জটিল এক্সপ্রেশন রাখতে পারি, যদি আমরা `pattern:+` এর ব্যাকট্রাকিং রোধ করতে চায়। ```smart +<<<<<<< HEAD +পসেসিভ কোয়ান্টফায়ার এবং লুকঅ্যাহেড সম্পর্কে আরো বিস্তারিত জানতে এই আর্টিকেলগুলো দেখুন [Regex: Emulate Atomic Grouping (and Possessive Quantifiers) with LookAhead](http://instanceof.me/post/52245507631/regex-emulate-atomic-grouping-with-lookahead) এবং [Mimicking Atomic Groups](http://blog.stevenlevithan.com/archives/mimic-atomic-groups)। +======= There's more about the relation between possessive quantifiers and lookahead in articles [Regex: Emulate Atomic Grouping (and Possessive Quantifiers) with LookAhead](https://instanceof.me/post/52245507631/regex-emulate-atomic-grouping-with-lookahead) and [Mimicking Atomic Groups](https://blog.stevenlevithan.com/archives/mimic-atomic-groups). +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ``` -Let's rewrite the first example using lookahead to prevent backtracking: +চলুন আমাদের প্রথম উদাহরণটি লুকঅ্যাহেড এর সাহায্যে আবার লিখি যা ব্যাকট্রাকিং রোধ করে: ```js run let regexp = /^((?=(\w+))\2\s?)*$/; @@ -295,10 +345,10 @@ alert( regexp.test("A good string") ); // true let str = "An input string that takes a long time or even makes this regex hang!"; -alert( regexp.test(str) ); // false, works and fast! +alert( regexp.test(str) ); // ভুল, এবং দ্রুত কাজ করছে! ``` -Here `pattern:\2` is used instead of `pattern:\1`, because there are additional outer parentheses. To avoid messing up with the numbers, we can give the parentheses a name, e.g. `pattern:(?<word>\w+)`. +এখানে আমরা এর `pattern:\1` পরিবর্তে `pattern:\2` ব্যবহার করেছি, কেননা এখানে আরো একটি অতিরিক্ত একটি প্যারেন্টেসিস আছে। ক্রমের ঝামেলা এড়াতে আমরা গ্রুপের নাম দিতে পারি, যেমন `pattern:(?<word>\w+)`। ```js run // parentheses are named ?<word>, referenced as \k<word> @@ -311,8 +361,8 @@ alert( regexp.test(str) ); // false alert( regexp.test("A correct string") ); // true ``` -The problem described in this article is called "catastrophic backtracking". +এই আর্টিকেলে বর্ণিত সমস্যাটিকে বলা হয় "catastrophic backtracking"। -We covered two ways how to solve it: -- Rewrite the regexp to lower the possible combinations count. -- Prevent backtracking. +আমরা এখানে দুটি উপায় দেখেছি কিভাবে সমস্যাটি সমাধান করা যায়: +- রেগুলার এক্সপ্রেশন পুনরায় লিখে কম্বিনেশনের সংখ্যা কমানো। +- প্রিভেন্ট ব্যাকট্রাকিং। diff --git a/9-regular-expressions/16-regexp-sticky/article.md b/9-regular-expressions/16-regexp-sticky/article.md index ece2c960f..c80a4ca6f 100644 --- a/9-regular-expressions/16-regexp-sticky/article.md +++ b/9-regular-expressions/16-regexp-sticky/article.md @@ -1,55 +1,60 @@ -# Sticky flag "y", searching at position +# স্টিকি ফ্ল্যাগ "y", নির্দিষ্ট (পজিশনে) অবস্থানে অনুসন্ধান -The flag `pattern:y` allows to perform the search at the given position in the source string. +`pattern:y` ফ্ল্যাগটির মাধ্যমে আমরা প্রদত্ত স্ট্রিংয়ের কোন একটা নির্দিষ্ট পজিশনে অনুসন্ধান চালাতে পারি। -To grasp the use case of `pattern:y` flag, and better understand the ways of regexps, let's explore a practical example. +`pattern:y` ফ্ল্যাগ এর ব্যবহারিক প্রয়োগ, এবং রেগুলার এক্সপ্রেশনকে আরো ভালোভাবে বুঝতে, চলুন একটি উদাহরণ দেখি। -One of common tasks for regexps is "lexical analysis": we get a text, e.g. in a programming language, and need to find its structural elements. For instance, HTML has tags and attributes, JavaScript code has functions, variables, and so on. +রেগুলার এক্সপ্রেশনের একটি সাধারণ কাজ হল "(লেক্সিকাল অ্যানালাইসিস) lexical analysis": কোন একটি টেক্সটে প্রোগ্রামিং ভাষাগুলোর এলিমেন্টের স্ট্রাকচার খুঁজা। যেমন, HTML এর আছে ট্যাগ অ্যাট্রিবিউট, জাভাস্ক্রিপ্টে আছে ফাংশন, ভ্যারিয়েবল ইত্যাদি। -Writing lexical analyzers is a special area, with its own tools and algorithms, so we don't go deep in there, but there's a common task: to read something at the given position. +লেক্সিকাল অ্যানালাইজার হল একটি বিশেষ টার্ম এবং এর নিজস্ব টুল এবং অ্যালগরিদম আছে, তবে এখানে আমাদের এই ব্যাপারটির বিস্তারিত জানা লাগবে না এবং এর একটি কমন কাজ হল: কোন একটি নির্দিষ্ট অবস্থানে কোন কিছু পড়া। -E.g. we have a code string `subject:let varName = "value"`, and we need to read the variable name from it, that starts at position `4`. +যেমন আমাদের একটি স্ট্রিং আছে `subject:let varName = "value"`, এখানে আমাদের ভ্যারিয়েবলের নামটি লাগবে, যা শুরু হয় `4` নাম্বার ইনডেক্স থেকে। -We'll look for variable name using regexp `pattern:\w+`. Actually, JavaScript variable names need a bit more complex regexp for accurate matching, but here it doesn't matter. +আমরা রেগুলার এক্সপ্রেশনে `pattern:\w+` এর মাধ্যমে ভ্যারিয়েবলটি খুঁজতে পারি। প্রকৃতপক্ষে, ভ্যালিড জাভাস্ক্রিপ্ট ভ্যারিয়েবলের নাম যাচাইকরণের জন্য আমাদের আরো জটিল রেগুলার এক্সপ্রেশন লাগে, তবে এখানে আমরা ব্যাপারটি বুঝতে সাধারণ একটি প্যাটার্ন ব্যবহার করছি। +<<<<<<< HEAD +- `str.match(/\w+/)` এটি এক্সিকিউট হলে আমরা শুধু প্রথম শব্দটি পাব (`var`)। কিন্তু আমরা এটি চাই না। +- আমরা `pattern:g` ফ্ল্যাগটি ব্যবহার করতে পারি। কিন্তু `str.match(/\w+/g)` এটি টেক্সটের সকল শব্দ অনুসন্ধান করে, যেখানে আমাদের শুধু একটি শব্দ চাই যার অবস্থান শুরু `4` হতে। কিন্তু, এটি দ্বারাও আমাদের সমস্যার সমাধান হবে না। +======= - A call to `str.match(/\w+/)` will find only the first word in the line (`let`). That's not it. - We can add the flag `pattern:g`. But then the call `str.match(/\w+/g)` will look for all words in the text, while we need one word at position `4`. Again, not what we need. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -**So, how to search for a regexp exactly at the given position?** +**সুতরাং, আমরা রেগুলার এক্সপ্রেশনের মাধ্যমে কিভাবে কোন একটি নির্দিষ্ট অবস্থানে অনুসন্ধান করতে পারি?** -Let's try using method `regexp.exec(str)`. +চলুন এই `regexp.exec(str)` মেথডটি দেখি। -For a `regexp` without flags `pattern:g` and `pattern:y`, this method looks only for the first match, it works exactly like `str.match(regexp)`. +`regexp` এ `pattern:g` এবং `pattern:y` ফ্ল্যাগ ছাড়া মেথডটি প্রথম মিলটি দেখায়, এটি অনেকটা `str.match(regexp)` এর মত কাজ করে। -...But if there's flag `pattern:g`, then it performs the search in `str`, starting from position stored in the `regexp.lastIndex` property. And, if it finds a match, then sets `regexp.lastIndex` to the index immediately after the match. +...কিন্তু যদি `pattern:g` ফ্ল্যাগটি থাকে, তাহলে `str` এ `regexp.lastIndex` প্রপার্টির অবস্থান হতে অনুসন্ধানটি চালায়। এবং এটি যদি কোন মিল খুঁজে পায়, তাহলে মিলের পরবর্তী অবস্থানটি `regexp.lastIndex` এ সেট হয়। -In other words, `regexp.lastIndex` serves as a starting point for the search, that each `regexp.exec(str)` call resets to the new value ("after the last match"). That's only if there's `pattern:g` flag, of course. +অন্যকথায় বলা যায়, `regexp.lastIndex` স্ট্রিংয়ের শুরু হতে অনুসন্ধানটি চালায়, তারপর কোন একটি অবস্থান মিল পেলে `regexp.exec(str)` এর পরের অবস্থানটি `regexp.lastIndex` এ নতুন ভ্যালু হিসেবে সেট হয় আর না পেলে এটি রিসেট হয়ে যায়। তবে এই ব্যাপারটি ঘটে যদি শুধুমাত্র `pattern:g` ব্যবহার করি। -So, successive calls to `regexp.exec(str)` return matches one after another. +সুতরাং, `regexp.exec(str)` একটির পর আরেকটি মিল রিটার্ন করতে থাকে। -Here's an example of such calls: +আসুন উদাহরণের মাধ্যমে আরো বিস্তারিত দেখি: ```js run -let str = 'let varName'; // Let's find all words in this string +let str = 'let varName'; // স্ট্রিংয়ের প্রতিটি শব্দ খুঁজি let regexp = /\w+/g; -alert(regexp.lastIndex); // 0 (initially lastIndex=0) +alert(regexp.lastIndex); // 0 (ডিফল্ট lastIndex=0) let word1 = regexp.exec(str); -alert(word1[0]); // let (1st word) -alert(regexp.lastIndex); // 3 (position after the match) +alert(word1[0]); // let (১ম শব্দটি) +alert(regexp.lastIndex); // 3 (মিলের পর নতুন অবস্থান) let word2 = regexp.exec(str); -alert(word2[0]); // varName (2nd word) -alert(regexp.lastIndex); // 11 (position after the match) +alert(word2[0]); // varName (২য় শব্দটি) +alert(regexp.lastIndex); // 11 (পরবর্তী মিলের পর নতুন অবস্থান) let word3 = regexp.exec(str); -alert(word3); // null (no more matches) -alert(regexp.lastIndex); // 0 (resets at search end) +alert(word3); // null (আর কোন শব্দ নেই) +alert(regexp.lastIndex); // 0 (অনুসন্ধান শেষে পুনরায় অবস্থান 0) ``` -We can get all matches in the loop: +সকল মিলকে লুপের মাধ্যমে খুঁজতে পারি: ```js run let str = 'let varName'; @@ -59,23 +64,23 @@ let result; while (result = regexp.exec(str)) { alert( `Found ${result[0]} at position ${result.index}` ); - // Found let at position 0, then - // Found varName at position 4 + // শূন্যতম অবস্থানে let, তারপর + // varName ৪র্থ অবস্থানে } ``` -Such use of `regexp.exec` is an alternative to method `str.matchAll`, with a bit more control over the process. +`regexp.exec` এটির ব্যবহার অনেকটা `str.matchAll` এর মত, তবে প্রসেসটিতে কিছুটা কন্ট্রোল থাকে। -Let's go back to our task. +চলুন আমাদের টাস্কটিতে ফিরে যায়। -We can manually set `lastIndex` to `4`, to start the search from the given position! +আমরা `lastIndex` এর পজিশন `4` সেট করি, অই অবস্থান হতে অনুসন্ধানটি চালু হবে! -Like this: +এভাবে: ```js run let str = 'let varName = "value"'; -let regexp = /\w+/g; // without flag "g", property lastIndex is ignored +let regexp = /\w+/g; // "g" ফ্ল্যাগছাড়া lastIndex প্রপার্টি পাব না *!* regexp.lastIndex = 4; @@ -85,15 +90,19 @@ let word = regexp.exec(str); alert(word); // varName ``` -Hooray! Problem solved! +ইয়েহহহহহহ! সমস্যাটি সমাধান করে ফেলেছি! -We performed a search of `pattern:\w+`, starting from position `regexp.lastIndex = 4`. +আমরা `pattern:\w+` এর মাধ্যমে `regexp.lastIndex = 4` সেটের মাধ্যমে অনুসন্ধানটি সম্পন্ন করেছি। -The result is correct. +এবং আমরা সঠিক ফলাফল পেয়েছি। -...But wait, not so fast. +...কিন্তু থামুন। +<<<<<<< HEAD +দয়া করে মনে রাখুন: `regexp.exec` অনুসন্ধান শুরু করে `lastIndex` এর অবস্থান হতে এবং পরবর্তী অবস্থানে যায়। যদি `lastIndex` এ পজিশনে কোন শব্দ না থাকে কিন্তু এরপরে থাকে তাহলে আমরা মিলটি পাব: +======= Please note: the `regexp.exec` call starts searching at position `lastIndex` and then goes further. If there's no word at position `lastIndex`, but it's somewhere after it, then it will be found: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run let str = 'let varName = "value"'; @@ -101,21 +110,21 @@ let str = 'let varName = "value"'; let regexp = /\w+/g; *!* -// start the search from position 3 +// ৩য় অবস্থান হতে অনুসন্ধান শুরু regexp.lastIndex = 3; */!* -let word = regexp.exec(str); -// found the match at position 4 +let word = regexp.exec(str); +// ৪র্থ অবস্থানে মিল খুঁজে পায় alert(word[0]); // varName alert(word.index); // 4 ``` -For some tasks, including the lexical analysis, that's just wrong. We need to find a match exactly at the given position at the text, not somewhere after it. And that's what the flag `y` is for. +কিন্ত আমাদের টাস্কে লেক্সিকাল অ্যানালাইসিসের মতে এটি ভুল। আমাদের একটি নির্দিষ্ট অবস্থানে নির্দিষ্ট একটি মিল খুঁজতে হবে, অই অবস্থানের আগে বা পরে নই। এবং এজন্যই `y` ফ্ল্যাগটি এসেছে। -**The flag `pattern:y` makes `regexp.exec` to search exactly at position `lastIndex`, not "starting from" it.** +**`pattern:y` ফ্ল্যাগটি নিশ্চিত করে `regexp.exec` এটি `lastIndex` এর নির্দিষ্ট অবস্থানে অনুসন্ধান চালাবে, "শুরু থেকে" নই।** -Here's the same search with flag `pattern:y`: +চলুন একই অনুসন্ধানটি `pattern:y` ব্যবহারের মাধ্যমে দেখি: ```js run let str = 'let varName = "value"'; @@ -123,16 +132,16 @@ let str = 'let varName = "value"'; let regexp = /\w+/y; regexp.lastIndex = 3; -alert( regexp.exec(str) ); // null (there's a space at position 3, not a word) +alert( regexp.exec(str) ); // null (৩য় অবস্থানে একটি স্পেস, সুতরাং মিল পাবে না) regexp.lastIndex = 4; -alert( regexp.exec(str) ); // varName (word at position 4) +alert( regexp.exec(str) ); // varName (৪র্থ অবস্থানে শব্দ) ``` -As we can see, regexp `pattern:/\w+/y` doesn't match at position `3` (unlike the flag `pattern:g`), but matches at position `4`. +এখানে আমরা দেখছি, রেগুলার এক্সপ্রেশনটিতে `pattern:/\w+/y` এটি `3` অবস্থানে মিলবে না(`pattern:g` ফ্ল্যাগের মত না), কিন্তু `4` অবস্থানে মিলবে। -Not only that's what we need, there's an important performance gain when using flag `pattern:y`. +এটি রেহুলার এক্সপ্রেশন ইঞ্জিনের পারফরম্যান্সে গুরুত্বপূর্ন ভূমিকা রাখে `pattern:y`। -Imagine, we have a long text, and there are no matches in it, at all. Then a search with flag `pattern:g` will go till the end of the text and find nothing, and this will take significantly more time than the search with flag `pattern:y`, that checks only the exact position. +মনে করুন, আমাদের একটি বড় ট্যাক্সটে অনুসন্ধান চালাতে হবে, এবং সেখানে আমাদের কাঙ্ক্ষিত প্যাটার্নটি নাই। যদি আমরা `pattern:g` ফ্ল্যাগের মাধ্যমে চালাই, তাহলে এটি শেষ পর্যন্ত অনুসন্ধান চালাবে, এবং কোন মিল পাবে না এবং এটি অবশ্যই `pattern:y` এর তুলনায় অনেক বেশী সময় নেবে। যেখানে আমরা শুধুমাত্র `pattern:y` এর মাধ্যমে একটি নির্দিষ্ট অবস্থানে অনুসন্ধানটি করতে পারতাম। -In tasks like lexical analysis, there are usually many searches at an exact position, to check what we have there. Using flag `pattern:y` is the key for correct implementations and a good performance. +আমাদের টাস্কের অনুরূপ, লেক্সিকাল অ্যানালাইসিসে নির্দিষ্ট অবস্থানে কি আছে তা অনুসন্ধান করতে হয়। `pattern:y` ফ্ল্যাগের মাধ্যমে আমাদের অনুসন্ধানটির পারফরম্যান্স অনেক ভালো হবে। diff --git a/9-regular-expressions/17-regexp-methods/article.md b/9-regular-expressions/17-regexp-methods/article.md index 897d0ffb6..5e4acb208 100644 --- a/9-regular-expressions/17-regexp-methods/article.md +++ b/9-regular-expressions/17-regexp-methods/article.md @@ -1,30 +1,36 @@ -# Methods of RegExp and String +# রেগুলার এক্সপ্রেশন এবং স্ট্রিংয়ের মেথড -In this article we'll cover various methods that work with regexps in-depth. +এই অধ্যায়ে আমরা রেগুলার এক্সপ্রেশনের বিভিন্ন মেথড নিয়ে বিস্তারিত আলোচনা করব। ## str.match(regexp) -The method `str.match(regexp)` finds matches for `regexp` in the string `str`. +`str.match(regexp)` মেথডটি `str` স্ট্রিংয়ের মধ্যে এই `regexp` প্যাটার্নটি অনুসন্ধান করবে। -It has 3 modes: +এটির ৩টি মোড আছে: -1. If the `regexp` doesn't have flag `pattern:g`, then it returns the first match as an array with capturing groups and properties `index` (position of the match), `input` (input string, equals `str`): +১. যদি `regexp` প্যাটার্নে `pattern:g` ফ্ল্যাগ না থাকে, তাহলে প্রথম ম্যাচটি অ্যারে আকারে রিটার্ন করে। এবং এতে `index` (ম্যাচের পজিশন), `input` (ইনপুট স্ট্রিং অর্থাৎ, `str`) এবং `groups` (প্যারেন্টেসিসের দ্বারা ক্যাপচার করা গ্রুপগুলো) প্রপার্টি থাকে: ```js run let str = "I love JavaScript"; let result = str.match(/Java(Script)/); - alert( result[0] ); // JavaScript (full match) - alert( result[1] ); // Script (first capturing group) + alert( result[0] ); // JavaScript (সম্পূর্ন মিলটি) + alert( result[1] ); // Script (প্রথম ক্যাপচারিং গ্রুপস) alert( result.length ); // 2 +<<<<<<< HEAD + // আরো কিছু প্রপার্টি: + alert( result.index ); // 7 (যে অবস্থান হতে মিলটি শুরু হয়) + alert( result.input ); // I love JavaScript (সোর্স স্ট্রিং) +======= // Additional information: alert( result.index ); // 7 (match position) alert( result.input ); // I love JavaScript (source string) +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ``` -2. If the `regexp` has flag `pattern:g`, then it returns an array of all matches as strings, without capturing groups and other details. +২. যদি `regexp` প্যাটার্নে `pattern:g` ফ্ল্যাগ থাকে, মিলকৃত স্ট্রিংসমূহকে ক্যাপচারিং গ্রুপ এবং অন্যান্য প্রপার্টিসমূহ ছাড়া অ্যারে আকারে রিটার্ন করে। ```js run let str = "I love JavaScript"; @@ -34,9 +40,9 @@ It has 3 modes: alert( result.length ); // 1 ``` -3. If there are no matches, no matter if there's flag `pattern:g` or not, `null` is returned. +৩. যদি কোন মিল না খুঁজে না পায়, ফ্ল্যাগ `pattern:g` থাক বা না থাক সর্বদা `null` রিটার্ন করে। - That's an important nuance. If there are no matches, we don't get an empty array, but `null`. It's easy to make a mistake forgetting about it, e.g.: + এটি অবশ্যই একটি গুরুত্বপূর্ন বিষয়। যদি কোন মিল না খুঁজে না পায় তাহলে এটি `null` রিটার্ন করে, কোন এমপ্টি অ্যারে রিটার্ন করে না। সুতরাং আমরা যাচাইয়ের সময় ভুল করে ফেলতে পারি, যেমন: ```js run let str = "I love JavaScript"; @@ -44,10 +50,10 @@ It has 3 modes: let result = str.match(/HTML/); alert(result); // null - alert(result.length); // Error: Cannot read property 'length' of null + alert(result.length); // এটি Error দেখাবে। Error: Cannot read property 'length' of null ``` - If we want the result to be an array, we can write like this: + যদি কোন মিল খুঁজে না পায় এবং রেজাল্ট অ্যারে আকারে পেতে চাই, তাহলে এভাবে লিখতে পারি: ```js let result = str.match(regexp) || []; @@ -55,19 +61,25 @@ It has 3 modes: ## str.matchAll(regexp) -[recent browser="new"] +`str.matchAll(regexp)` মেথডটি `str.match` এর "নতুন, আধুনিক" ভার্সন। -The method `str.matchAll(regexp)` is a "newer, improved" variant of `str.match`. +এটি ব্যবহার করা হয় ফ্ল্যাগ `pattern:g` ব্যবহার করে সকল মিলের রেজাল্ট গ্রুপসহ পেতে। -It's used mainly to search for all matches with all groups. +`match` এর সাথে এর ৩টি পার্থক্য আছে: -There are 3 differences from `match`: +1. এটি মিলসমূহকে অ্যারের পরিবর্তে ইটারেবল অবজেক্ট হিসেবে রিটার্ন করে। `Array.from` এর সাহায্যে একে অ্যারেতে কনভার্ট করতে পারি। +2. প্রতিটি মিলকে ক্যাপচারিং গ্রুপসহ অ্যারে আকারে রিটার্ন করে ( `pattern:g` ফ্ল্যাগ ব্যতীত `str.match` এর মত)। +3. যদি কোন মিল খুঁজে না পায়, এটি `null` এর পরিবর্তে এম্পটি ইটারেবল অবজেক্ট রিটার্ন করে। +<<<<<<< HEAD +উদাহরণ: +======= 1. It returns an iterable object with matches instead of an array. We can make a regular array from it using `Array.from`. 2. Every match is returned as an array with capturing groups (the same format as `str.match` without flag `pattern:g`). 3. If there are no results, it returns an empty iterable object instead of `null`. Usage example: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 ```js run let str = '<h1>Hello, world!</h1>'; @@ -75,9 +87,9 @@ let regexp = /<(.*?)>/g; let matchAll = str.matchAll(regexp); -alert(matchAll); // [object RegExp String Iterator], not array, but an iterable +alert(matchAll); // [object RegExp String Iterator], অ্যারে না, তবে একটি ইটারেবল অবজেক্ট -matchAll = Array.from(matchAll); // array now +matchAll = Array.from(matchAll); // অ্যারেতে রূপান্তর let firstMatch = matchAll[0]; alert( firstMatch[0] ); // <h1> @@ -86,19 +98,19 @@ alert( firstMatch.index ); // 0 alert( firstMatch.input ); // <h1>Hello, world!</h1> ``` -If we use `for..of` to loop over `matchAll` matches, then we don't need `Array.from` any more. +যদি আমরা `matchAll` এর রেজাল্ট কে `for..of` লুপের সাহায্যে ইটারেট করি তাহলে আমাদের একে অ্যারেতে কনভার্ট করতে হবে না। ## str.split(regexp|substr, limit) -Splits the string using the regexp (or a substring) as a delimiter. +রেগুলার এক্সপ্রেশন(বা সাবস্ট্রিং) ব্যবহার করে স্ট্রিংকে আমরা split (টুকরো টুকরো) করতে পারি। -We can use `split` with strings, like this: +আমরা স্ট্রিংকে `split` করতে পারি, এভাবে: ```js run alert('12-34-56'.split('-')) // array of ['12', '34', '56'] ``` -But we can split by a regular expression, the same way: +অনূরূপভাবে আমরা রেগুলার এক্সপ্রেশনের সাহায্যেও করতে পারি: ```js run alert('12, 34, 56'.split(/,\s*/)) // array of ['12', '34', '56'] @@ -106,77 +118,81 @@ alert('12, 34, 56'.split(/,\s*/)) // array of ['12', '34', '56'] ## str.search(regexp) -The method `str.search(regexp)` returns the position of the first match or `-1` if none found: +`str.search(regexp)` মেথডটি মিল খুঁজে পেলে প্রথম মিলের অবস্থান আর কোন মিল খুঁজে না পেলে `-1` রিটার্ন করে: ```js run let str = "A drop of ink may make a million think"; -alert( str.search( /ink/i ) ); // 10 (first match position) +alert( str.search( /ink/i ) ); // 10 (প্রথম মিলের অবস্থান) ``` -**The important limitation: `search` only finds the first match.** +**গুরুত্বপূর্ন সীমাবদ্ধতা: `search` শুধুমাত্র প্রথম মিলের অবস্থান রিটার্ন করে.** -If we need positions of further matches, we should use other means, such as finding them all with `str.matchAll(regexp)`. +যদি আমাদের আরো বেশি মিল যাচাই করা লাগে, তাহলে আমাদের `str.matchAll(regexp)` এর সাহায্য নিতে হবে। ## str.replace(str|regexp, str|func) -This is a generic method for searching and replacing, one of most useful ones. The swiss army knife for searching and replacing. +অনুসন্ধান করে প্রতিস্থাপনের জন্য এটিই সর্বাধিক ব্যবহৃত মেথড। -We can use it without regexps, to search and replace a substring: +আমরা রেগুলার এক্সপ্রেশন প্যাটার্ন ছাড়া সাবস্ট্রিংয়ের সাহায্যেও রিপ্লেস করতে পারি: ```js run -// replace a dash by a colon -alert('12-34-56'.replace("-", ":")) // 12:34-56 +// ড্যাশকে কোলনের সাহায্যে রিপ্লেস +alert('12-34-56'.replace("-", ":")) // 12:34-56, তবে শুধুমাত্র প্রথমটি রিপ্লেস হয় ``` -There's a pitfall though. +তবে এটির একটি সীমাবদ্ধতা আছে। -**When the first argument of `replace` is a string, it only replaces the first match.** +**যখন প্রথম আর্গুমেন্ট দ্বারা আমরা স্ট্রিং কে `replace` করি, এটি শুধুমাত্র প্রথম মিলটিকে রিপ্লেস করে।** -You can see that in the example above: only the first `"-"` is replaced by `":"`. +উপরের উদাহরণে আমরা এটি দেখেছি: শুধুমাত্র প্রথম `"-"` হাইফেনটি `":"` কোলন দ্বারা রিপ্লেস হয়। -To find all hyphens, we need to use not the string `"-"`, but a regexp `pattern:/-/g`, with the obligatory `pattern:g` flag: +সকল হাইফেন খুঁজে পেতে, আমরা স্ট্রিংয়ের `"-"` পরিবর্তে প্যাটার্ন ব্যবহার করতে পারি `pattern:/-/g`, এবং অবশ্যই `pattern:g` ফ্ল্যাগটি লাগবে: ```js run -// replace all dashes by a colon +// সকল ড্যাশকে কোলনের সাহায্যে রিপ্লেস alert( '12-34-56'.replace( *!*/-/g*/!*, ":" ) ) // 12:34:56 ``` +<<<<<<< HEAD +দ্বিতীয় আর্গুমেন্টটি হল একটি স্ট্রিং যা দ্বারা আমরা রিপ্লেস করব। আমরা এখানে স্পেশাল ক্যারাক্টারও ব্যবহার করতে পারব: +======= The second argument is a replacement string. We can use special characters in it: +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -| Symbols | Action in the replacement string | +| সিম্বলস | রিপ্লসমেন্ট স্ট্রিংয়ে সংগঠিত অ্যাকশন | |--------|--------| -|`$&`|inserts the whole match| -|<code>$`</code>|inserts a part of the string before the match| -|`$'`|inserts a part of the string after the match| -|`$n`|if `n` is a 1-2 digit number, inserts the contents of n-th capturing group, for details see [](info:regexp-groups)| -|`$<name>`|inserts the contents of the parentheses with the given `name`, for details see [](info:regexp-groups)| -|`$$`|inserts character `$` | +|`$&`|পুরো মিলটিকে রিপ্লেস করে| +|<code>$`</code>|মিলের আগ পর্যন্ত স্ট্রিংকে রিপ্লেস করে| +|`$'`|মিলের পরের স্ট্রিংকে রিপ্লেস করে| +|`$n`|যদি `n` ১-২ অঙ্কের সংখ্যা হয়, আমরা প্যারেন্টেসিস দ্বারা করা গ্রুপ সমূহ $n দ্বারা রিপ্লেস করতে পারি। বিস্তারিত এই অধ্যায়ে [](info:regexp-groups) +|`$<name>`|আমরা প্যারেন্টেসিস দ্বারা করা গ্রুপ সমূহের নামকরণ করলে `name` দ্বারা রিপ্লেস করতে পারি। বিস্তারিত এই অধ্যায়ে [](info:regexp-groups) +|`$$`| `$` দ্বারা রিপ্লেস হবে | -For instance: +উদাহরণ: ```js run let str = "John Smith"; -// swap first and last name +// আমরা নামকে অদল বদল করলাম alert(str.replace(/(john) (smith)/i, '$2, $1')) // Smith, John ``` -**For situations that require "smart" replacements, the second argument can be a function.** +**কিছু কিছু সময় আমাদের রিপ্লেসম্যান্ট আরো "smart" ভাবে করা লাগে, তখন দ্বিতীয় আর্গুমেন্ট হিসেবে একটি ফাংশন পাঠাতে পারি** -It will be called for each match, and the returned value will be inserted as a replacement. +প্রতিটি ম্যাচের জন্য ফাংশনটি কল হবে, এবং ফাংশনের রিটার্ন ভ্যালু দ্বারা ম্যাচটি রিপ্লেসড হবে। -The function is called with arguments `func(match, p1, p2, ..., pn, offset, input, groups)`: +ফাংশনটি এর আর্গুমেন্ট সমূহ হবে `func(match, p1, p2, ..., pn, offset, input, groups)`: -1. `match` -- the match, -2. `p1, p2, ..., pn` -- contents of capturing groups (if there are any), -3. `offset` -- position of the match, -4. `input` -- the source string, -5. `groups` -- an object with named groups. +1. `match` -- প্রাপ্ত মিলটি, +2. `p1, p2, ..., pn` -- ক্যাপচারিং গ্রুপসমূহ (if there are any), +3. `offset` -- মিলের পজিশনটি, +4. `input` -- সোর্স স্ট্রিং, +5. `groups` -- groups অবজেক্ট। -If there are no parentheses in the regexp, then there are only 3 arguments: `func(str, offset, input)`. +যদি রেগুলার এক্সপ্রেশনে গ্রুপ না থাকে, তাহলে ফাংশনের আর্গুমেন্ট হবে ৩টি: `func(str, offset, input)`। -For example, let's uppercase all matches: +উদাহরণস্বরূপ, সকল মিলকে আমরা ক্যাপিটাল অক্ষরে রূপান্তর করব: ```js run let str = "html and css"; @@ -186,13 +202,13 @@ let result = str.replace(/html|css/gi, str => str.toUpperCase()); alert(result); // HTML and CSS ``` -Replace each match by its position in the string: +ম্যাচ কে তাদের পজিশন দ্বারা রিপ্লেস: ```js run alert("Ho-Ho-ho".replace(/ho/gi, (match, offset) => offset)); // 0-3-6 ``` -In the example below there are two parentheses, so the replacement function is called with 5 arguments: the first is the full match, then 2 parentheses, and after it (not used in the example) the match position and the source string: +নিচের উদাহরণে আমরা ২টি গ্রুপ করছি, সুতরাং রিপ্লেসম্যান্ট ফাংশনটিতে ৫টি আর্গুম্যান্ট থাকবে: প্রথমটি হবে সম্পূর্ন মিলটি, তারপর ২টি গ্রুপ, এবং শেষে পজিশন এবং সোর্স স্ট্রিং (যদিও উদাহরণে আমরা এটি ব্যবহার করি নি): ```js run let str = "John Smith"; @@ -202,7 +218,7 @@ let result = str.replace(/(\w+) (\w+)/, (match, name, surname) => `${surname}, $ alert(result); // Smith, John ``` -If there are many groups, it's convenient to use rest parameters to access them: +যদি আমাদের একাধিক গ্রুপ থাকে, তাহলে আমরা rest parameters দ্বারা তাদের অ্যাক্সেস করতে পারি: ```js run let str = "John Smith"; @@ -212,7 +228,7 @@ let result = str.replace(/(\w+) (\w+)/, (...match) => `${match[2]}, ${match[1]}` alert(result); // Smith, John ``` -Or, if we're using named groups, then `groups` object with them is always the last, so we can obtain it like this: +অথবা, যদি আমরা গ্রুপের নামকরণ করি, তাহলে `groups` অবজেক্টটি সবার শেষে থাকবে, সুতরাং একে আমরা এভাবে লিখতে পারি: ```js run let str = "John Smith"; @@ -226,7 +242,7 @@ let result = str.replace(/(?<name>\w+) (?<surname>\w+)/, (...match) => { alert(result); // Smith, John ``` -Using a function gives us the ultimate replacement power, because it gets all the information about the match, has access to outer variables and can do everything. +রিপ্লেসম্যান্ট আমরা যদি ফাংশন এর সাহায্যে করি তাহলে আমাদের কাছে পূর্ণ স্বাধীনতা থাকবে, কেননা এতে আমরা মিলের সকল ইনফরমেশন পাব, এছাড়াও অন্যান্য ভ্যারিয়েবলগুলোও অ্যাক্সেস করতে পারব। ## str.replaceAll(str|regexp, str|func) @@ -247,21 +263,25 @@ alert('12-34-56'.replaceAll("-", ":")) // 12:34:56 ## regexp.exec(str) +<<<<<<< HEAD +`regexp.exec(str)` মেথডটি `regexp` দ্বারা `str` এর মধ্যে মিল খুঁজা হয়। তবে পূর্বেরটির সাথে এর পার্থক্য হল এটি স্ট্রিংয়ের সাথে কাজ করে শুধুমাত্র রেগুলার এক্সপ্রেশন দ্বারা কাজ করে। +======= The `regexp.exec(str)` method returns a match for `regexp` in the string `str`. Unlike previous methods, it's called on a regexp, not on a string. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -It behaves differently depending on whether the regexp has flag `pattern:g`. +এটি `pattern:g` ফ্ল্যাগের উপর ভিত্তি করে ভিন্ন ভিন্ন আচরণ করে। -If there's no `pattern:g`, then `regexp.exec(str)` returns the first match exactly as `str.match(regexp)`. This behavior doesn't bring anything new. +যদি `pattern:g` ফ্ল্যাগ না থাকে, তাহলে `regexp.exec(str)` রিটার্ন করবে প্রথম মিলটি, এটি `str.match(regexp)` এর অনুরূপ। -But if there's flag `pattern:g`, then: -- A call to `regexp.exec(str)` returns the first match and saves the position immediately after it in the property `regexp.lastIndex`. -- The next such call starts the search from position `regexp.lastIndex`, returns the next match and saves the position after it in `regexp.lastIndex`. -- ...And so on. -- If there are no matches, `regexp.exec` returns `null` and resets `regexp.lastIndex` to `0`. +কিন্ত যদি `pattern:g` থাকে, তাহলে: +- `regexp.exec(str)` কল হলে এটি প্রথম মিলটি রিটার্ন করে এবং `regexp.lastIndex` এ এর পরবর্তী অবস্থানটি সংরক্ষণ করে। +- পরবর্তী কলে `regexp.lastIndex` থেকে অনুসন্ধানটি শুরু হয় এবং এর পরের মিলটি রিটার্ন করে এবং আগের মত `regexp.lastIndex` এ পরবর্তী অবস্থানটি সংরক্ষণ করে। +- ...এভাবেই চলতে থাকে। +- আর যদি কোন মিল না হয়, `regexp.exec` রিটার্ন করে `null` এবং `regexp.lastIndex` এর মান `0` তে রিসেট হয়। -So, repeated calls return all matches one after another, using property `regexp.lastIndex` to keep track of the current search position. +সুতরাং প্রতিবার মেথডটি কল হলে এটি মিলগুলো একটির পর একটি রিটার্ন করে, এবং `regexp.lastIndex` এ অবস্থানটি সংরক্ষণ করে সেখান থেকে অনুসন্ধান চালিয়ে যায়। -In the past, before the method `str.matchAll` was added to JavaScript, calls of `regexp.exec` were used in the loop to get all matches with groups: +`str.matchAll` মেথডটি জাভাস্ক্রিপ্টে সংযুক্ত হওয়ার পূর্বে লুপে `regexp.exec` চালিয়ে আমরা গ্রুপসহ সকল মিলগুলো খুঁজে বের করতাম: ```js run let str = 'More about JavaScript at https://javascript.info'; @@ -271,56 +291,56 @@ let result; while (result = regexp.exec(str)) { alert( `Found ${result[0]} at position ${result.index}` ); - // Found JavaScript at position 11, then - // Found javascript at position 33 + // ১১ তম অবস্থানে জাভাস্ক্রিপ্ট, তারপর + // ৩৩ তম অবস্থানে জাভাস্ক্রিপ্ট } ``` -This works now as well, although for newer browsers `str.matchAll` is usually more convenient. +এটিও কাজ করবে, তবে মর্ডান ব্রাউজারে `str.matchAll` আরো বেশি সুবিধা জনক। -**We can use `regexp.exec` to search from a given position by manually setting `lastIndex`.** +**তবে আমরা`regexp.exec` এ ম্যানুয়ালি `lastIndex` সেট করতে পারি।** -For instance: +উদাহরণস্বরূপ: ```js run let str = 'Hello, world!'; -let regexp = /\w+/g; // without flag "g", lastIndex property is ignored -regexp.lastIndex = 5; // search from 5th position (from the comma) +let regexp = /\w+/g; // "g" ফ্ল্যাগ ছাড়া, lastIndex প্রপার্টি ইগনোর হবে +regexp.lastIndex = 5; // ৫ম তম অবস্থান হতে অনুসন্ধানটি শুরু হবে (কমা থেকে) alert( regexp.exec(str) ); // world ``` -If the regexp has flag `pattern:y`, then the search will be performed exactly at the position `regexp.lastIndex`, not any further. +যদি `pattern:y` ফ্ল্যাগটি থাকে, তাহলে এটি শুধুমাত্র `regexp.lastIndex` এ অনুসন্ধানটি চালাবে, এবং এর বেশি চালাবে না। -Let's replace flag `pattern:g` with `pattern:y` in the example above. There will be no matches, as there's no word at position `5`: +চলুন উপরের উদাহরণটিতে `pattern:g` এর বদলে `pattern:y` ফ্ল্যাগ ব্যবহার করি। এখানে কোন মিল পাবে না, কেননা `5` তম অবস্থানে কোন ওয়ার্ড ক্যারাক্টার নাই: ```js run let str = 'Hello, world!'; let regexp = /\w+/y; -regexp.lastIndex = 5; // search exactly at position 5 +regexp.lastIndex = 5; // ৫ম তম অবস্থানে অনুসন্ধান চালাবে alert( regexp.exec(str) ); // null ``` -That's convenient for situations when we need to "read" something from the string by a regexp at the exact position, not somewhere further. +এটি আমাদের দরকার পড়ে যখন আমরা একটি নির্দিষ্ট অবস্থানে কোন কিছু "পড়তে" চাই। ## regexp.test(str) -The method `regexp.test(str)` looks for a match and returns `true/false` whether it exists. +`regexp.test(str)` মেথডটি কোন একটি স্ট্রিংয়ে মিল পাওয়া না পাওয়ার উপর ভিত্তি করে `true/false` রিটার্ন করে। -For instance: +উদাহরণস্বরূপ: ```js run let str = "I love JavaScript"; -// these two tests do the same +// এখানে টেস্ট দুটি একই কাজ করে alert( *!*/love/i*/!*.test(str) ); // true alert( str.search(*!*/love/i*/!*) != -1 ); // true ``` -An example with the negative answer: +মিল খুঁজে না পাওয়ার একটি উদাহরণ: ```js run let str = "Bla-bla-bla"; @@ -329,33 +349,33 @@ alert( *!*/love/i*/!*.test(str) ); // false alert( str.search(*!*/love/i*/!*) != -1 ); // false ``` -If the regexp has flag `pattern:g`, then `regexp.test` looks from `regexp.lastIndex` property and updates this property, just like `regexp.exec`. +যদি `pattern:g` ফ্ল্যাগটি থাকে, তাহলে `regexp.test` মেথডটি `regexp.lastIndex` প্রপার্টি হতে অনুসন্ধান শুরু করে, `regexp.exec` এর মত। -So we can use it to search from a given position: +সুতরাং আমরা নির্দিষ্ট একটি অবস্থান হতে অনুসন্ধানটি চালাতে পারি: ```js run let regexp = /love/gi; let str = "I love JavaScript"; -// start the search from position 10: +// ১০ম তম অবস্থান হতে অনুসন্ধানটি শুরু হবে: regexp.lastIndex = 10; alert( regexp.test(str) ); // false (no match) ``` -````warn header="Same global regexp tested repeatedly on different sources may fail" -If we apply the same global regexp to different inputs, it may lead to wrong result, because `regexp.test` call advances `regexp.lastIndex` property, so the search in another string may start from non-zero position. +````warn header="regexp.test(str) এ একই সোর্স দ্বারা দ্বিতীয়বার যাচাইয়ে ভুল রেজাল্ট আসতে পারে" +যদি আমরা একই সোর্স দ্বারা দুইবার রেগুলার এক্সপ্রেশন এ যাচাই করি এটি অনাকাংখিত রেজাল্ট দেখাতে পারে, কেননা `regexp.test` এ দ্বিতীয়বার যাচাইয়ে `regexp.lastIndex` এর মান শূন্য নয় এমন অবস্থান থেকে অনুসন্ধান শুরু করে। -For instance, here we call `regexp.test` twice on the same text, and the second time fails: +উদাহরণস্বরূপ, এখানে আমরা একই সোর্স দ্বারা `regexp.test` এ দুই বার কল করি, এবং দ্বিতীয়বার যাচাইয়ে এটি ভুল false দেখায়: ```js run -let regexp = /javascript/g; // (regexp just created: regexp.lastIndex=0) +let regexp = /javascript/g; // (১ম বার regexp.lastIndex=0) -alert( regexp.test("javascript") ); // true (regexp.lastIndex=10 now) +alert( regexp.test("javascript") ); // true (এখন regexp.lastIndex=10) alert( regexp.test("javascript") ); // false ``` -That's exactly because `regexp.lastIndex` is non-zero in the second test. +এটিই সঠিক কেননা দ্বিতীয়বার কলে `regexp.lastIndex` এর অবস্থান আর শূন্যতম অবস্থানে নেই। -To work around that, we can set `regexp.lastIndex = 0` before each search. Or instead of calling methods on regexp, use string methods `str.match/search/...`, they don't use `lastIndex`. +এভাবে কাজ করার সময় আমাদের প্রতিবার যাচাইয়ের আগে `regexp.lastIndex` কে রিসেট করে নিব `regexp.lastIndex = 0` । অথবা আমরা `str.match/search/...` এর মাধ্যমেও যাচাই করতে পারি। ```` diff --git a/README.md b/README.md index 371793d6d..e3cf02345 100755 --- a/README.md +++ b/README.md @@ -1,39 +1,162 @@ -# The Modern JavaScript Tutorial +# The Modern JavaScript Tutorial in Bengali +<<<<<<< HEAD +This repository hosts the translation of <https://javascript.info> in Bengali. +======= This repository hosts the English content of the Modern JavaScript Tutorial, published at [https://javascript.info](https://javascript.info). +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 -## Translations -We'd like to make the tutorial available in many languages. Please help us to translate. +**That's how you can contribute:** -See <https://javascript.info/translate> for the details. +- See the [Bengali Translate Progress](https://github.com/javascript-tutorial/bn.javascript.info/issues/1) issue. +- Choose an unchecked article you'd like to translate. +- Add a comment with the article title to the issue, e.g. `An Introduction to JavaScript`. + - Our bot will mark it in the issue, for everyone to know that you're translating it. + - Your comment should contain only the title. +- Fork the repository, translate and send a PR when done. + - PR title should match article title, the bot will write it's number into the issue. -## Contributions +Please kindly allow maintainers to review and merge or request changes in your translation. -We'd also like to collaborate on the tutorial with other people. +If maintainers do not respond, or if you'd like to become a maintainer, write us at the [main repo](https://github.com/javascript-tutorial/en.javascript.info/issues/new). +<<<<<<< HEAD +**Let others know what you're translating, in message boards or chats in your language. Invite them to join!** + +🎉 Thank you! +======= Something's wrong? A topic is missing? Explain it to people, add it as PR 👏 **You can edit the text in any editor.** The tutorial uses an enhanced "markdown" format, easy to grasp. And if you want to see how it looks on-site, there's a server to run the tutorial locally at <https://github.com/javascript-tutorial/server>. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 + +Your name and the contribution size will appear in the "About project" page when the translation gets published. -The list of contributors is available at <https://javascript.info/about#contributors>. +P.S. The full list of languages can be found at <https://javascript.info/translate>. ## Structure +<<<<<<< HEAD +Every chapter, an article or a task resides in its own folder. + +The folder is named `N-url`, where `N` – is the number for sorting (articles are ordered), and `url` is the URL-slug on the site. +======= Every chapter, article, or task has its folder. The folder is named like `N-url`, where `N` is a number for the sorting purposes and `URL` is the URL part with the title of the material. +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11 + +The folder has one of files: + +- `index.md` for a section, +- `article.md` for an article, +- `task.md` for a task formulation (+`solution.md` with the solution text if any). + +A file starts with the `# Title Header`, and then the text in Markdown-like format, editable in a simple text editor. + +Additional resources and examples for the article or the task, are also in the same folder. + +## Translation Tips + +Please keep line breaks and paragraphs "as is": don't add newlines and don't remove existing ones. Makes it easy to merge future changes from the English version into the translation. + +If you see that the English version can be improved – great, please send a PR to it. + +### Terms + +- Some specification terms are not to be translated, e.g. "Function Declaration" can be left "as is". +- For other terms like `resolved promise`, `slash`, `regexp`, and so on - look for a glossary, hopefully there's one for your language already. If not, look for translations in manuals, such as [MDN](https://developer.mozilla.org/en-US/). + +### Text in Code Blocks + +- Translate comments. +- Translate user-messages and example strings. +- Don't translate variables, classes, identifiers. +- Ensure that the code works after the translation :) + +Example: + +```js +// Example +const text = "Hello, world"; +document.querySelector('.hello').innerHTML = text; +``` + +✅ DO (translate comment): + +```js +// Ejemplo +const text = 'Hola mundo'; +document.querySelector('.hello').innerHTML = text; +``` + +❌ DON'T (translate class): -The type of the material is defined by the file inside the folder: +```js +// Ejemplo +const text = 'Hola mundo'; +// ".hello" is a class +// DO NOT TRANSLATE +document.querySelector('.hola').innerHTML = text; +``` + + +### External Links - `index.md` stands for a chapter - `article.md` stands for an article - `task.md` stands for a task (solution must be provided in `solution.md` file as well) -Each of these files starts from the `# Main header`. +If an external link is to Wikipedia, e.g. `https://en.wikipedia.org/wiki/JavaScript`, and a version of that article exists in your language that is of decent quality, link to that version instead. + +Example: + +```md +[JavaScript](https://en.wikipedia.org/wiki/JavaScript) is a programming language. +``` + +✅ OK (en -> es): + +```md +[JavaScript](https://es.wikipedia.org/wiki/JavaScript) es un lenguaje de programación. +``` + +For links to MDN, a partially translated version is ok. + +If a linked article has no translated version, leave the link "as is". + +### Metadata + +Some files, usually tasks, have YAML metadata at the top, delimited by `---`: + +```md +importance: 5 + +<<<<<<< HEAD +--- +... +``` + +Please don't translate "importance" (and other top metadata). + +### Anchors + +Some headers have `[#anchor]` at the end, e.g. + +```md +## Spread operator [#spread-operator] +``` + +Please don't translate or remove the `[#...]` part, it's for URL anchors. + +## Running locally -It's very easy to add something new. +You can run the tutorial server locally to see how the translation looks. +The server and install instructions are at <https://github.com/javascript-tutorial/server>. +======= --- ♥ Ilya Kantor @iliakan +>>>>>>> ff804bc19351b72bc5df7766f4b9eb8249a3cb11