diff --git a/.gitignore b/.gitignore index 872f349..62bb8f7 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ org/configs/** /public/ resources/_gen /content/configs/ +/.log/ diff --git a/content/posts/2023-04-13-emacs.md b/content/posts/2023-04-13-emacs.md new file mode 100644 index 0000000..ac57a79 --- /dev/null +++ b/content/posts/2023-04-13-emacs.md @@ -0,0 +1,164 @@ ++++ +title = "916 days of Emacs" +author = ["Pavel Korytov"] +date = 2023-04-13 +tags = ["emacs"] +draft = false +scripts = ["/js/chart.js", "/js/chartjs-adapter-date-fns.bundle.min.js", "/js/chartjs-plugin-datalabels.js", "/js/2023-04-13-emacs.js"] ++++ + + + +> Poof I made my free-time disappear + +

- Ellis Kenyő, on being called an "elisp mage" + +Little did I know on the fateful day of **[2020-10-09 Fri]**, when I had installed [GNU Emacs](https://www.gnu.org/software/emacs/). I wasn't thinking about the [ethical aspects](https://www.gnu.org/philosophy/philosophy.html) of free software, the [aesthetics of Lisp](https://www.webofstories.com/play/marvin.minsky/44), or these other things with which an occasional layperson might explain how an almost [half a century old](https://www.jwz.org/doc/emacs-timeline.html) program can still be in [active use](https://emacsconf.org/2022/talks/survey/). + +In fact, when considering using software X for anything, the most important question to me was: can X provide a better user experience? For Emacs, the answer to most of these questions turned out to be yes. + +So over time, Emacs has become my programming environment, email client, window manager, knowledge base, [and a lot more](https://sqrtminusone.xyz/configs/emacs/). I think I ended up using Emacs for almost as many things as possible; I even authored a few packages that implement certain parts of my workflows that weren't readily available. + +Among other things, the Emacs community is responsible for my introduction to [Zettelkasten](https://zettelkasten.de/), RSS, Lisps... Perhaps even my English became slightly less broken because Emacs is so text-centered. A lot has changed over the course of these short 2.5 years. + +Anyway, this post is an attempt to quantify some aspects of that story. The numbers mostly come from projects called [ActivityWatch](https://activitywatch.net/) and [WakaTime](https://wakatime.com/). + +Mostly I'm curious myself, but also every now and then I see Emacs people discussing their journeys through the Elisp-land, or a potential convert wondering whether this rabbit hole is worth investigating. If any of this applies to you, you might find something interesting in this document. + + + + +## Everything goes into Emacs {#everything-goes-into-emacs} + +As I mentioned earlier, I use Emacs for a lot of things, which are described in my [Emacs config](https://sqrtminusone.xyz/configs/emacs/#introduction). Fig. 1 shows how Emacs replaced various programs over time. + + +

Also, unfortunately this post turned out to be rather inaccessible for those reading that with a screen-reader. I guess, if that applies to you, just mentally skip the figure references.

+ +

I did try to describe what's going on in these in the post body.

+ + +As you can see, I used Neovim for a little over a year. We'll get into some numbers on that later. + +The process of moving from knowing nothing about Emacs to using EXWM took about 13 months. + +Fig. 2 shows the dynamics of the direct screen time ratio spent in Emacs per month, i.e. the average number of non-AFK seconds in the Emacs window. + + + +It's hard to discern any general trend here. It appears that the ratio started at 0.2 in October 2020, oscillated around 0.3 for about 7 months, then moved closer to 0.4 until January 2023, after which jumped to 0.45-0.5. + +The three peaks in September 2021 (0.526), January 2022 (0.532), and August 2022 (0.568) may correspond to my vacations, during which I didn't have to spend time in Chrome DevTools (I do web development as my "primary" job), but I'm not entirely sure. + +The jump in January 2023 definitely matches my adoption of [telega.el](https://github.com/zevlg/telega.el) instead of the official desktop client. The time redistributes rather cleanly in the detailed ActivityWatch data. + +It's also interesting that switching from [i3](https://i3wm.org/) to [EXWM](https://github.com/ch11ng/exwm) didn't seem to have any distinguishable effects. + +The mean Emacs screen time ratios are 0.39 since October 2020 and 0.47 since January 2023. So, as you might infer, Emacs is quite prominent in my PC usage. + + +## Time spent in Emacs {#time-spent-in-emacs} + +Now let's examine the structure of time spent in Emacs. Fig. 3 shows how many Emacs-hours per month I spent on different activities, and Fig. 4 shows the same in stacked form. + +Unlike Fig. 2, the time here is calculated with a 15-minute timeout preference, as [it's done in WakaTime](https://wakatime.com/faq#timeout). For instance, if I work on a project in Emacs for 10 minutes, then switch to something else for 10 minutes (i.e. no [heartbeats](https://wakatime.com/developers/#heartbeats) recorded during that time), then return to the project another 10 minutes, this will be counted as 30 minutes in that project. + +This is mostly so because it's the default format for the [WakaTime export](https://wakatime.com/faq#exporting), but I also believe it's reasonable since I may open package documentation during configuration, experiment in scratch buffers while working on a package, and so on. This time really has to be included in the final tally. + +Of course, this will also include all the times I was distracted by the [System Crafters](https://wiki.systemcrafters.net/community/chat-with-us/) Discord server, [emacs.ch](https://emacs.ch/) instance, or whatever else. Therefore, consider the numbers that follow as an upper bound. + + + + + +The categories are as follows: + +- **Config** ([REDACTED] total hours, [REDACTED]% of all time)
+ Time spent on actual Emacs configuration. +- **Emacs Packages** ([REDACTED] total hours, [REDACTED]% of all time)
+ Time spent in other Emacs Lisp files, such as writing my packages or debugging other packages. See the [packages](#emacs-packages) section. +- **Org Mode** ([REDACTED] total hours, [REDACTED]% of all time)
+ Time spent in my `org-mode` project, which is mostly [org-journal](https://github.com/bastibe/org-journal), [org-roam](https://www.orgroam.com/), and project management. By the way, guess the month in which I read [Sönke Ahrens' book](https://www.soenkeahrens.de/en/takesmartnotes) about Zettelkasten. +- **sqrtminusone.xyz** ([REDACTED] total hours, [REDACTED]% of all time)
+ Working on this strange little website. +- **Other Code** ([REDACTED] total hours, [REDACTED]% of all time)
+ Doing something marginally useful in Emacs, which is mostly work, education, and a few personal projects unrelated to Emacs. +- **Misc** ([REDACTED] total hours, [REDACTED]% of all time) + Time spent in Emacs but not in an actual project (i.e. accounted by the [window watcher](https://github.com/ActivityWatch/aw-watcher-window) of ActivityWatch but not WakaTime, which watches for files). That includes reading RSS, writing emails, using messengers, doing some idle experimentation in scratch buffers, etc. + +The [REDACTED]% of time spent on configuration is actually less than I expected. Unsurprisingly, the first month had the highest value of around 20% (I used Emacs without WakaTime for a few days). + +By the way, I spent just 39.0 hours configuring Neovim, although the number is probably not representative anymore because Neovim has changed a lot over these 2 years. + + +## Switching from Neovim {#switching-from-neovim} + +The period of my transition from Neovim to Emacs seems particularly interesting. Fig 5 zooms in on that, with the switch represented by "Other Code (Emacs)" replacing "Other Code (Vim)". + + + +It appears that getting from zero to somewhat productive took me about 11.1 hours over 4 days of just experimenting with Emacs, and one day with 3.8 hours on configuring and 4.4 hours on coding, apparently alternating between the two. + + +## Configuration {#configuration} + +Now, let's examine where these [REDACTED] config hours went. + +Configuration sizes are a common topic of discussion among Emacs users. I'd guess that mine falls into the category of the longest, although maybe I'll do some research on that someday. Fig. 6 shows how my configuration size changed over time. + + + +So, my Emacs.org is [REDACTED] lines long, and the resulting init.el is [REDACTED] lines long. + +As you can see, I switched to [literate configuration](https://leanpub.com/lit-config) pretty early on, and so far, I have not regretted it. It's also interesting to note how the two sizes diverged as I was writing more elaborate commentary. + +Also, I never had any substantial issues with maintaining that configuration. Perhaps [Emacs Bankruptcies](https://www.emacswiki.org/emacs/DotEmacsBankruptcy) are just not that common nowadays. + +For the sake of completeness, let's compare that to my Neovim usage. Fig. 7 shows the dynamics of config size for the first 400 days of using both programs. + + + +As I previously mentioned, Neovim (or rather its ecosystem) seems to have undergone significant changes since I last used it, so my number of [REDACTED] init.vim lines may no longer be relevant. Nonetheless, it's quite interesting. + + +## Emacs packages {#emacs-packages} + +Working with Emacs packages was an interesting experience, not least because it was my first experience with Lisp. Fig. 8 shows the breakdown of the [REDACTED] hours I spent on that. + + + +As I expected, my [org-journal-tags](https://github.com/SqrtMinusOne/org-journal-tags) tops the chart with [REDACTED] hours. The most interesting part was implementing set logic on the [org-journal](https://github.com/bastibe/org-journal) entities to create a query engine. I'm fairly certain that I'm the only user of this package, but I use it all the time. + +The second place, "Unknown project", stands for Emacs Lisp files that didn't belong to any project, which should be mostly built-in Emacs files. + +My [elfeed-summary](https://github.com/SqrtMinusOne/elfeed-summary) ([REDACTED] hours), [lyrics-fetcher](https://github.com/SqrtMinusOne/lyrics-fetcher.el) ([REDACTED] hours), and [reverso](https://github.com/SqrtMinusOne/reverso.el) ([REDACTED] hours) are also among the packages that I use almost daily. Thus, I do not regret investing time in developing any of those. + + +## `org-roam` {#org-roam} + +It's not directly related to Emacs, but I include it here because it's highly unlikely that I would have heard the term "Zettelkasten" outside the Emacs space. + +I already mentioned [Sönke Ahrens' book](https://www.soenkeahrens.de/en/takesmartnotes), but I believe the website [zettelkasten.de](https://zettelkasten.de/posts/overview/) would be a better resource if you are curious about that. And I was initially made curious by [this stream](https://www.youtube.com/watch?v=-TpWahIzueg) of David Wilson. + +Anyway, Fig. 9 shows the dynamics of my [org-roam](https://github.com/org-roam/org-roam) node count over time. A significant fraction of my [REDACTED] hours spent on Org Mode went there. Although I don't have any particular goals in this regard. + + + + +## Some observations {#some-observations} + +Let's see where all of that leads us. + +As I said, I started from the point of zero experience with Lisp. I had a degree in software engineering, but I don't feel like it has helped me in any direct sense. At most, it exposed me to different kinds and concepts of programming, but I am confident that it's anything but a prerequisite, as also shown by the story of [Protesilaos](https://protesilaos.com/). + +The number of [REDACTED] total hours of configuration may seem huge, but I don't think it's that much over 2.5 years and in comparison to the alternatives. For instance, it would take 6th place from the top if placed among my job projects. Also, my [AntennaPod](https://antennapod.org/) shows 196.9 hours of podcasts played since December 2021, and some of my friends report having spent thousands of hours on video games. + +And keep in mind that I use Emacs almost as extensively as it gets. You might as well spend much less time figuring it out for a more minimal use case. So, at least in my view, this weighs against describing Emacs usage in terms of sunk cost fallacy. + +However, my story is consistent with the perception of a [steep learning curve](https://stackoverflow.com/questions/10942008/what-does-emacs-learning-curve-actually-look-like) in the Emacs community. 19.3 hours over 5 days to get started is definitely a lot. diff --git a/layouts/_default/single.html b/layouts/_default/single.html index 443deaa..9fe61e1 100644 --- a/layouts/_default/single.html +++ b/layouts/_default/single.html @@ -1,5 +1,8 @@ {{ define "main" }} +{{ range $script := .Params.scripts }} + +{{ end}}

{{ .Title }}

diff --git a/org/2023-04-13-emacs.org b/org/2023-04-13-emacs.org new file mode 100644 index 0000000..4c99c6d --- /dev/null +++ b/org/2023-04-13-emacs.org @@ -0,0 +1,175 @@ +#+HUGO_SECTION: posts +#+HUGO_BASE_DIR: ../ +#+TITLE: 916 days of Emacs +#+DATE: 2023-04-13 +#+HUGO_TAGS: emacs +#+HUGO_DRAFT: false +#+HUGO_CUSTOM_FRONT_MATTER: :scripts '("/js/chart.js" "/js/chartjs-adapter-date-fns.bundle.min.js" "/js/chartjs-plugin-datalabels.js" "/js/2023-04-13-emacs.js") + +#+begin_export html + +#+end_export + +#+MACRO: num @@html:[REDACTED]@@ + +#+begin_quote +Poof I made my free-time disappear +#+end_quote + +@@html:

- Ellis Kenyő, on being called an "elisp mage"@@ + +Little did I know on the fateful day of *[2020-10-09 Fri]*, when I had installed [[https://www.gnu.org/software/emacs/][GNU Emacs]]. I wasn't thinking about the [[https://www.gnu.org/philosophy/philosophy.html][ethical aspects]] of free software, the [[https://www.webofstories.com/play/marvin.minsky/44][aesthetics of Lisp]], or these other things with which an occasional layperson might explain how an almost [[https://www.jwz.org/doc/emacs-timeline.html][half a century old]] program can still be in [[https://emacsconf.org/2022/talks/survey/][active use]]. + +In fact, when considering using software X for anything, the most important question to me was: can X provide a better user experience? For Emacs, the answer to most of these questions turned out to be yes. + +So over time, Emacs has become my programming environment, email client, window manager, knowledge base, [[https://sqrtminusone.xyz/configs/emacs/][and a lot more]]. I think I ended up using Emacs for almost as many things as possible; I even authored a few packages that implement certain parts of my workflows that weren't readily available. + +Among other things, the Emacs community is responsible for my introduction to [[https://zettelkasten.de/][Zettelkasten]], RSS, Lisps... Perhaps even my English became slightly less broken because Emacs is so text-centered. A lot has changed over the course of these short 2.5 years. + +Anyway, this post is an attempt to quantify some aspects of that story. The numbers mostly come from projects called [[https://activitywatch.net/][ActivityWatch]] and [[https://wakatime.com/][WakaTime]]. + +Mostly I'm curious myself, but also every now and then I see Emacs people discussing their journeys through the Elisp-land, or a potential convert wondering whether this rabbit hole is worth investigating. If any of this applies to you, you might find something interesting in this document. + +#+begin_export html + +#+end_export + +* Everything goes into Emacs +As I mentioned earlier, I use Emacs for a lot of things, which are described in my [[https://sqrtminusone.xyz/configs/emacs/#introduction][Emacs config]]. Fig. 1 shows how Emacs replaced various programs over time. + +#+begin_export html + +

Also, unfortunately this post turned out to be rather inaccessible for those reading that with a screen-reader. I guess, if that applies to you, just mentally skip the figure references.

+ +

I did try to describe what's going on in these in the post body.

+ +#+end_export + +As you can see, I used Neovim for a little over a year. We'll get into some numbers on that later. + +The process of moving from knowing nothing about Emacs to using EXWM took about 13 months. + +Fig. 2 shows the dynamics of the direct screen time ratio spent in Emacs per month, i.e. the average number of non-AFK seconds in the Emacs window. + +#+begin_export html + +#+end_export + +It's hard to discern any general trend here. It appears that the ratio started at 0.2 in October 2020, oscillated around 0.3 for about 7 months, then moved closer to 0.4 until January 2023, after which jumped to 0.45-0.5. + +The three peaks in September 2021 (0.526), January 2022 (0.532), and August 2022 (0.568) may correspond to my vacations, during which I didn't have to spend time in Chrome DevTools (I do web development as my "primary" job), but I'm not entirely sure. + +The jump in January 2023 definitely matches my adoption of [[https://github.com/zevlg/telega.el][telega.el]] instead of the official desktop client. The time redistributes rather cleanly in the detailed ActivityWatch data. + +It's also interesting that switching from [[https://i3wm.org/][i3]] to [[https://github.com/ch11ng/exwm][EXWM]] didn't seem to have any distinguishable effects. + +The mean Emacs screen time ratios are 0.39 since October 2020 and 0.47 since January 2023. So, as you might infer, Emacs is quite prominent in my PC usage. + +* Time spent in Emacs +Now let's examine the structure of time spent in Emacs. Fig. 3 shows how many Emacs-hours per month I spent on different activities, and Fig. 4 shows the same in stacked form. + +Unlike Fig. 2, the time here is calculated with a 15-minute timeout preference, as [[https://wakatime.com/faq#timeout][it's done in WakaTime]]. For instance, if I work on a project in Emacs for 10 minutes, then switch to something else for 10 minutes (i.e. no [[https://wakatime.com/developers/#heartbeats][heartbeats]] recorded during that time), then return to the project another 10 minutes, this will be counted as 30 minutes in that project. + +This is mostly so because it's the default format for the [[https://wakatime.com/faq#exporting][WakaTime export]], but I also believe it's reasonable since I may open package documentation during configuration, experiment in scratch buffers while working on a package, and so on. This time really has to be included in the final tally. + +Of course, this will also include all the times I was distracted by the [[https://wiki.systemcrafters.net/community/chat-with-us/][System Crafters]] Discord server, [[https://emacs.ch/][emacs.ch]] instance, or whatever else. Therefore, consider the numbers that follow as an upper bound. + +#+begin_export html + +#+end_export + +#+begin_export html + +#+end_export + +The categories are as follows: + +- *Config* ({{{num("config_hours_total")}}} total hours, {{{num("config_hours_percent")}}}% of all time)\\ + Time spent on actual Emacs configuration. +- *Emacs Packages* ({{{num("package_hours_total")}}} total hours, {{{num("package_hours_percent")}}}% of all time)\\ + Time spent in other Emacs Lisp files, such as writing my packages or debugging other packages. See the [[*Emacs packages][packages]] section. +- *Org Mode* ({{{num("orgmode_hours_total")}}} total hours, {{{num("orgmode_hours_percent")}}}% of all time)\\ + Time spent in my =org-mode= project, which is mostly [[https://github.com/bastibe/org-journal][org-journal]], [[https://www.orgroam.com/][org-roam]], and project management. By the way, guess the month in which I read [[https://www.soenkeahrens.de/en/takesmartnotes][Sönke Ahrens' book]] about Zettelkasten. +- *sqrtminusone.xyz* ({{{num("sqrt_hours_total")}}} total hours, {{{num("sqrt_hours_percent")}}}% of all time)\\ + Working on this strange little website. +- *Other Code* ({{{num("other_code_hours_total")}}} total hours, {{{num("other_code_hours_percent")}}}% of all time)\\ + Doing something marginally useful in Emacs, which is mostly work, education, and a few personal projects unrelated to Emacs. +- *Misc* ({{{num("misc_hours_total")}}} total hours, {{{num("misc_hours_percent")}}}% of all time) + Time spent in Emacs but not in an actual project (i.e. accounted by the [[https://github.com/ActivityWatch/aw-watcher-window][window watcher]] of ActivityWatch but not WakaTime, which watches for files). That includes reading RSS, writing emails, using messengers, doing some idle experimentation in scratch buffers, etc. + +The {{{num("config_hours_percent")}}}% of time spent on configuration is actually less than I expected. Unsurprisingly, the first month had the highest value of around 20% (I used Emacs without WakaTime for a few days). + +By the way, I spent just 39.0 hours configuring Neovim, although the number is probably not representative anymore because Neovim has changed a lot over these 2 years. + +* Switching from Neovim +The period of my transition from Neovim to Emacs seems particularly interesting. Fig 5 zooms in on that, with the switch represented by "Other Code (Emacs)" replacing "Other Code (Vim)". + +#+begin_export html + +#+end_export + +It appears that getting from zero to somewhat productive took me about 11.1 hours over 4 days of just experimenting with Emacs, and one day with 3.8 hours on configuring and 4.4 hours on coding, apparently alternating between the two. + +* Configuration +Now, let's examine where these {{{num("config_hours_total")}}} config hours went. + +Configuration sizes are a common topic of discussion among Emacs users. I'd guess that mine falls into the category of the longest, although maybe I'll do some research on that someday. Fig. 6 shows how my configuration size changed over time. + +#+begin_export html + +#+end_export + +So, my Emacs.org is {{{num("emacs_org_length")}}} lines long, and the resulting init.el is {{{num("init_el_length")}}} lines long. + +As you can see, I switched to [[https://leanpub.com/lit-config][literate configuration]] pretty early on, and so far, I have not regretted it. It's also interesting to note how the two sizes diverged as I was writing more elaborate commentary. + +Also, I never had any substantial issues with maintaining that configuration. Perhaps [[https://www.emacswiki.org/emacs/DotEmacsBankruptcy][Emacs Bankruptcies]] are just not that common nowadays. + +For the sake of completeness, let's compare that to my Neovim usage. Fig. 7 shows the dynamics of config size for the first 400 days of using both programs. + +#+begin_export html + +#+end_export + +As I previously mentioned, Neovim (or rather its ecosystem) seems to have undergone significant changes since I last used it, so my number of {{{num("init_vim_length")}}} init.vim lines may no longer be relevant. Nonetheless, it's quite interesting. + +* Emacs packages +Working with Emacs packages was an interesting experience, not least because it was my first experience with Lisp. Fig. 8 shows the breakdown of the {{{num("package_hours_total")}}} hours I spent on that. + +#+begin_export html + +#+end_export + +As I expected, my [[https://github.com/SqrtMinusOne/org-journal-tags][org-journal-tags]] tops the chart with {{{num("org-journal-tags_total")}}} hours. The most interesting part was implementing set logic on the [[https://github.com/bastibe/org-journal][org-journal]] entities to create a query engine. I'm fairly certain that I'm the only user of this package, but I use it all the time. + +The second place, "Unknown project", stands for Emacs Lisp files that didn't belong to any project, which should be mostly built-in Emacs files. + +My [[https://github.com/SqrtMinusOne/elfeed-summary][elfeed-summary]] ({{{num("elfeed-summary_total")}}} hours), [[https://github.com/SqrtMinusOne/lyrics-fetcher.el][lyrics-fetcher]] ({{{num("lyrics-fetcher_total")}}} hours), and [[https://github.com/SqrtMinusOne/reverso.el][reverso]] ({{{num("reverso_total")}}} hours) are also among the packages that I use almost daily. Thus, I do not regret investing time in developing any of those. + +* =org-roam= +It's not directly related to Emacs, but I include it here because it's highly unlikely that I would have heard the term "Zettelkasten" outside the Emacs space. + +I already mentioned [[https://www.soenkeahrens.de/en/takesmartnotes][Sönke Ahrens' book]], but I believe the website [[https://zettelkasten.de/posts/overview/][zettelkasten.de]] would be a better resource if you are curious about that. And I was initially made curious by [[https://www.youtube.com/watch?v=-TpWahIzueg][this stream]] of David Wilson. + +Anyway, Fig. 9 shows the dynamics of my [[https://github.com/org-roam/org-roam][org-roam]] node count over time. A significant fraction of my {{{num("orgmode_hours_total")}}} hours spent on Org Mode went there. Although I don't have any particular goals in this regard. + +#+begin_export html + +#+end_export + +* Some observations +Let's see where all of that leads us. + +As I said, I started from the point of zero experience with Lisp. I had a degree in software engineering, but I don't feel like it has helped me in any direct sense. At most, it exposed me to different kinds and concepts of programming, but I am confident that it's anything but a prerequisite, as also shown by the story of [[https://protesilaos.com/][Protesilaos]]. + +The number of {{{num("config_hours_total")}}} total hours of configuration may seem huge, but I don't think it's that much over 2.5 years and in comparison to the alternatives. For instance, it would take 6th place from the top if placed among my job projects. Also, my [[https://antennapod.org/][AntennaPod]] shows 196.9 hours of podcasts played since December 2021, and some of my friends report having spent thousands of hours on video games. + +And keep in mind that I use Emacs almost as extensively as it gets. You might as well spend much less time figuring it out for a more minimal use case. So, at least in my view, this weighs against describing Emacs usage in terms of sunk cost fallacy. + +However, my story is consistent with the perception of a [[https://stackoverflow.com/questions/10942008/what-does-emacs-learning-curve-actually-look-like][steep learning curve]] in the Emacs community. 19.3 hours over 5 days to get started is definitely a lot. diff --git a/repos/dotfiles b/repos/dotfiles index 17d6192..f12737b 160000 --- a/repos/dotfiles +++ b/repos/dotfiles @@ -1 +1 @@ -Subproject commit 17d6192394e6321e80fde5417954f84256fb6f57 +Subproject commit f12737bb44edafecec2b79b8d9a70d5ed1a1ff99 diff --git a/static/data/2023-03-13-emacs/emacs-packages.json b/static/data/2023-03-13-emacs/emacs-packages.json new file mode 100644 index 0000000..afd1b90 --- /dev/null +++ b/static/data/2023-03-13-emacs/emacs-packages.json @@ -0,0 +1,78 @@ +[ +{"name":"org-journal-tags","hours":45.80413027777777}, +{"name":"Unknown Project","hours":30.883538055555544}, +{"name":"elfeed-summary","hours":24.781949999999995}, +{"name":"lyrics-fetcher","hours":19.423725}, +{"name":"reverso","hours":16.14068888888889}, +{"name":"pomm","hours":15.724073888888888}, +{"name":"elfeed_sync","hours":10.33835}, +{"name":"perspective-exwm","hours":7.68676111111111}, +{"name":"ivy-pass","hours":4.8407888888888895}, +{"name":"exwm-modeline","hours":4.785227777777777}, +{"name":"elfeed","hours":1.9590416666666668}, +{"name":"elfeed-recommender","hours":1.606401111111111}, +{"name":"avy-dired","hours":1.5198916666666664}, +{"name":"sqrtminusone.xyz","hours":1.4861027777777778}, +{"name":"copilot","hours":1.393622222222222}, +{"name":"SEM10_DataP","hours":1.3383138888888888}, +{"name":"org-mode","hours":1.285122222222222}, +{"name":"emms","hours":1.2402194444444448}, +{"name":"digital-trajectories-backend","hours":0.817338888888889}, +{"name":"SEM11_SD","hours":0.6001722222222221}, +{"name":"dank-mode","hours":0.5951249999999999}, +{"name":"org-roam","hours":0.5180888888888888}, +{"name":"sqrtminusone.github.io","hours":0.4424444444444445}, +{"name":"eshell-info-banner","hours":0.3441305555555555}, +{"name":"org-ref","hours":0.3417222222222222}, +{"name":"org","hours":0.33160555555555554}, +{"name":"org-contrib","hours":0.2974138888888889}, +{"name":"perspective-el","hours":0.291275}, +{"name":"wakatime-mode","hours":0.2859333333333333}, +{"name":"exwm","hours":0.2593944444444445}, +{"name":"elcord","hours":0.25727777777777777}, +{"name":"general","hours":0.2553944444444444}, +{"name":"digital-trajectories-frontend","hours":0.25507222222222226}, +{"name":"flycheck-mix-alphabets","hours":0.1779611111111111}, +{"name":"evil-collection","hours":0.17116388888888892}, +{"name":"lispy","hours":0.16847222222222222}, +{"name":"devdocs","hours":0.16563333333333333}, +{"name":"mmm-mode","hours":0.14494444444444443}, +{"name":"posframe","hours":0.13803333333333334}, +{"name":"ytel","hours":0.13270833333333334}, +{"name":"melpa","hours":0.11238055555555555}, +{"name":"tldr","hours":0.11088888888888888}, +{"name":"org-journal","hours":0.10692777777777777}, +{"name":"deft","hours":0.09949999999999999}, +{"name":"org-transclusion","hours":0.08256666666666668}, +{"name":"transient","hours":0.08187777777777777}, +{"name":"treemacs","hours":0.08161666666666667}, +{"name":"lsp-treemacs","hours":0.07749722222222223}, +{"name":"web-mode","hours":0.07611666666666667}, +{"name":"dap-mode","hours":0.070775}, +{"name":"themes","hours":0.06796666666666668}, +{"name":"Emacs-langtool","hours":0.06696388888888888}, +{"name":"projectile","hours":0.0635}, +{"name":"doom-modeline","hours":0.06344999999999999}, +{"name":"package-build","hours":0.06199444444444445}, +{"name":"emacs-which-key","hours":0.06048055555555555}, +{"name":"jest-test-mode","hours":0.05506944444444444}, +{"name":"gazprom-classes-frontend","hours":0.04866388888888889}, +{"name":"digital-schedule-backend","hours":0.04549166666666667}, +{"name":"company-mode","hours":0.04083888888888889}, +{"name":"emacs-jupyter","hours":0.03719166666666666}, +{"name":"swiper","hours":0.03139444444444444}, +{"name":"org-habit-stats","hours":0.028275}, +{"name":"SEM9_AMOS","hours":0.016411111111111112}, +{"name":"elfeed-org","hours":0.014444444444444446}, +{"name":"org-agenda-conflict","hours":0.013563888888888887}, +{"name":"org-ql","hours":0.013541666666666667}, +{"name":"test","hours":0.013236111111111112}, +{"name":"alert","hours":0.012311111111111111}, +{"name":"prodigy","hours":0.0079}, +{"name":"lsp-mode","hours":0.007405555555555556}, +{"name":"google-translate","hours":0.007016666666666668}, +{"name":"err","hours":0.005344444444444444}, +{"name":"testing","hours":0.004497222222222223}, +{"name":"dired-plus","hours":0.003427777777777778}, +{"name":"magit","hours":0.0} +] \ No newline at end of file diff --git a/static/data/2023-03-13-emacs/emacs-related-time-per-month.json b/static/data/2023-03-13-emacs/emacs-related-time-per-month.json new file mode 100644 index 0000000..4a8190c --- /dev/null +++ b/static/data/2023-03-13-emacs/emacs-related-time-per-month.json @@ -0,0 +1,33 @@ +[ +{"period":"2020-10-01T00:00:00Z","misc_hours":21.499994166666667,"other_code_hours":45.492286944444444,"config_hours":16.605819444444446,"orgmode_hours":7.039610277777778,"package_hours":0.4319083333333334,"sqrt_hours":0.0}, +{"period":"2020-11-01T00:00:00Z","misc_hours":7.922545277777687,"other_code_hours":130.25115500000007,"config_hours":12.954636111111114,"orgmode_hours":8.673049444444446,"package_hours":0.6693083333333334,"sqrt_hours":0.0}, +{"period":"2020-12-01T00:00:00Z","misc_hours":44.62867111111112,"other_code_hours":172.2617105555556,"config_hours":7.404536111111111,"orgmode_hours":5.94598888888889,"package_hours":0.016411111111111112,"sqrt_hours":0.0}, +{"period":"2021-01-01T00:00:00Z","misc_hours":40.97078361111109,"other_code_hours":108.33508166666668,"config_hours":6.398185833333335,"orgmode_hours":1.7350899999999998,"package_hours":0.0,"sqrt_hours":0.0}, +{"period":"2021-02-01T00:00:00Z","misc_hours":23.105469444444452,"other_code_hours":103.90097305555558,"config_hours":9.639255277777778,"orgmode_hours":6.35959,"package_hours":0.1454027777777778,"sqrt_hours":9.579580555555557}, +{"period":"2021-03-01T00:00:00Z","misc_hours":85.43768361111111,"other_code_hours":70.83901499999999,"config_hours":5.351164444444444,"orgmode_hours":3.7601916666666666,"package_hours":0.050147222222222225,"sqrt_hours":0.0}, +{"period":"2021-04-01T00:00:00Z","misc_hours":39.610666111111044,"other_code_hours":125.15684861111119,"config_hours":17.82253972222222,"orgmode_hours":5.481723333333335,"package_hours":0.0683388888888889,"sqrt_hours":9.427069444444443}, +{"period":"2021-05-01T00:00:00Z","misc_hours":57.33526833333332,"other_code_hours":113.36815361111115,"config_hours":20.12919444444444,"orgmode_hours":9.530327777777776,"package_hours":3.1570388888888887,"sqrt_hours":0.85215}, +{"period":"2021-06-01T00:00:00Z","misc_hours":19.274042777777794,"other_code_hours":126.66362527777778,"config_hours":6.006847222222222,"orgmode_hours":1.051963888888889,"package_hours":0.0,"sqrt_hours":0.0}, +{"period":"2021-07-01T00:00:00Z","misc_hours":81.67501916666666,"other_code_hours":51.52624416666663,"config_hours":22.17445277777778,"orgmode_hours":12.676333333333334,"package_hours":0.6769444444444445,"sqrt_hours":0.0}, +{"period":"2021-08-01T00:00:00Z","misc_hours":61.93839333333341,"other_code_hours":130.07233138888884,"config_hours":11.854841666666667,"orgmode_hours":11.899877777777776,"package_hours":17.619797222222225,"sqrt_hours":2.2672416666666666}, +{"period":"2021-09-01T00:00:00Z","misc_hours":71.1573447222222,"other_code_hours":120.12417027777782,"config_hours":9.464760000000004,"orgmode_hours":12.50451666666667,"package_hours":0.01851111111111111,"sqrt_hours":6.370205555555555}, +{"period":"2021-10-01T00:00:00Z","misc_hours":81.92015388888885,"other_code_hours":116.64286166666663,"config_hours":11.370164166666664,"orgmode_hours":7.676310277777775,"package_hours":0.29834166666666667,"sqrt_hours":2.6114666666666664}, +{"period":"2021-11-01T00:00:00Z","misc_hours":54.09148222222214,"other_code_hours":83.06970250000002,"config_hours":26.667271388888892,"orgmode_hours":17.463530277777775,"package_hours":12.023868333333331,"sqrt_hours":2.957238888888889}, +{"period":"2021-12-01T00:00:00Z","misc_hours":73.14686083333333,"other_code_hours":98.72174722222223,"config_hours":18.940516666666674,"orgmode_hours":9.036408333333334,"package_hours":8.266713888888889,"sqrt_hours":2.5470305555555557}, +{"period":"2022-01-01T00:00:00Z","misc_hours":78.7037844444445,"other_code_hours":90.03770083333329,"config_hours":9.120791666666667,"orgmode_hours":12.36731388888889,"package_hours":20.481719166666664,"sqrt_hours":5.263049999999999}, +{"period":"2022-02-01T00:00:00Z","misc_hours":65.48075472222229,"other_code_hours":59.16844611111107,"config_hours":6.861180555555555,"orgmode_hours":11.32403333333334,"package_hours":22.03164722222222,"sqrt_hours":3.680427777777778}, +{"period":"2022-03-01T00:00:00Z","misc_hours":59.85770472222208,"other_code_hours":101.48262166666677,"config_hours":3.2610216666666663,"orgmode_hours":7.583500000000001,"package_hours":18.58566944444444,"sqrt_hours":0.11891944444444444}, +{"period":"2022-04-01T00:00:00Z","misc_hours":68.30733527777787,"other_code_hours":112.87104388888886,"config_hours":7.927665277777777,"orgmode_hours":7.156380555555556,"package_hours":6.058352777777777,"sqrt_hours":0.0}, +{"period":"2022-05-01T00:00:00Z","misc_hours":72.09807583333335,"other_code_hours":109.0747988888889,"config_hours":2.0066166666666665,"orgmode_hours":4.990799999999998,"package_hours":12.661681666666665,"sqrt_hours":5.370564722222222}, +{"period":"2022-06-01T00:00:00Z","misc_hours":79.17945000000002,"other_code_hours":99.92501694444441,"config_hours":2.295294722222222,"orgmode_hours":4.66531138888889,"package_hours":1.937625,"sqrt_hours":4.099763888888889}, +{"period":"2022-07-01T00:00:00Z","misc_hours":100.25373388888889,"other_code_hours":80.96754916666667,"config_hours":7.048831944444444,"orgmode_hours":6.63810111111111,"package_hours":8.259250000000002,"sqrt_hours":0.30644166666666667}, +{"period":"2022-08-01T00:00:00Z","misc_hours":51.45677333333333,"other_code_hours":42.76726638888889,"config_hours":5.659562777777778,"orgmode_hours":33.62366111111111,"package_hours":25.84174444444444,"sqrt_hours":0.007108333333333333}, +{"period":"2022-09-01T00:00:00Z","misc_hours":93.71000527777774,"other_code_hours":59.957424166666726,"config_hours":2.910955555555555,"orgmode_hours":20.163738888888883,"package_hours":0.0,"sqrt_hours":5.0835}, +{"period":"2022-10-01T00:00:00Z","misc_hours":100.06510222222227,"other_code_hours":75.89180972222216,"config_hours":1.3981391666666667,"orgmode_hours":16.778726111111112,"package_hours":0.03719166666666666,"sqrt_hours":0.31931388888888895}, +{"period":"2022-11-01T00:00:00Z","misc_hours":72.92531194444443,"other_code_hours":88.36294638888896,"config_hours":0.3248416666666667,"orgmode_hours":19.864126388888884,"package_hours":0.71435,"sqrt_hours":0.16440277777777776}, +{"period":"2022-12-01T00:00:00Z","misc_hours":90.02505416666664,"other_code_hours":70.48672027777783,"config_hours":3.6556722222222215,"orgmode_hours":24.646485833333337,"package_hours":6.301308333333334,"sqrt_hours":0.0}, +{"period":"2023-01-01T00:00:00Z","misc_hours":81.74121027777785,"other_code_hours":74.15600861111108,"config_hours":8.502313888888889,"orgmode_hours":23.546456388888878,"package_hours":1.2940805555555555,"sqrt_hours":3.091511111111111}, +{"period":"2023-02-01T00:00:00Z","misc_hours":59.22556611111115,"other_code_hours":71.66723777777779,"config_hours":6.266827777777776,"orgmode_hours":21.286059722222213,"package_hours":1.6511055555555558,"sqrt_hours":0.0}, +{"period":"2023-03-01T00:00:00Z","misc_hours":80.38888166666672,"other_code_hours":65.02923749999997,"config_hours":1.528583333333333,"orgmode_hours":56.1532963888889,"package_hours":0.737786111111111,"sqrt_hours":0.027744444444444447}, +{"period":"2023-04-01T00:00:00Z","misc_hours":6.3998452777777715,"other_code_hours":0.0,"config_hours":10.446358333333334,"orgmode_hours":9.446027777777772,"package_hours":0.7153416666666667,"sqrt_hours":15.621758333333334} +] \ No newline at end of file diff --git a/static/data/2023-03-13-emacs/emacs-screen-time.json b/static/data/2023-03-13-emacs/emacs-screen-time.json new file mode 100644 index 0000000..021aff2 --- /dev/null +++ b/static/data/2023-03-13-emacs/emacs-screen-time.json @@ -0,0 +1,33 @@ +[ +{"date_trunc":"2020-10-01T00:00:00Z","percent":0.20421706158872063}, +{"date_trunc":"2020-11-01T00:00:00Z","percent":0.2656396332934231}, +{"date_trunc":"2020-12-01T00:00:00Z","percent":0.328156158373562}, +{"date_trunc":"2021-01-01T00:00:00Z","percent":0.30293494692052564}, +{"date_trunc":"2021-02-01T00:00:00Z","percent":0.29825278394208066}, +{"date_trunc":"2021-03-01T00:00:00Z","percent":0.24318066017980156}, +{"date_trunc":"2021-04-01T00:00:00Z","percent":0.3774396720741769}, +{"date_trunc":"2021-05-01T00:00:00Z","percent":0.2907218886830386}, +{"date_trunc":"2021-06-01T00:00:00Z","percent":0.37853346779023606}, +{"date_trunc":"2021-07-01T00:00:00Z","percent":0.3451648046146705}, +{"date_trunc":"2021-08-01T00:00:00Z","percent":0.5261220707445486}, +{"date_trunc":"2021-09-01T00:00:00Z","percent":0.4095219799672908}, +{"date_trunc":"2021-10-01T00:00:00Z","percent":0.3562719759085607}, +{"date_trunc":"2021-11-01T00:00:00Z","percent":0.3946809530892407}, +{"date_trunc":"2021-12-01T00:00:00Z","percent":0.46327503042546997}, +{"date_trunc":"2022-01-01T00:00:00Z","percent":0.5318326577174478}, +{"date_trunc":"2022-02-01T00:00:00Z","percent":0.4358549401255391}, +{"date_trunc":"2022-03-01T00:00:00Z","percent":0.41948172412528684}, +{"date_trunc":"2022-04-01T00:00:00Z","percent":0.4430246367606649}, +{"date_trunc":"2022-05-01T00:00:00Z","percent":0.39880827117107315}, +{"date_trunc":"2022-06-01T00:00:00Z","percent":0.39962422579568685}, +{"date_trunc":"2022-07-01T00:00:00Z","percent":0.3741313993218909}, +{"date_trunc":"2022-08-01T00:00:00Z","percent":0.5678526580569381}, +{"date_trunc":"2022-09-01T00:00:00Z","percent":0.3912379067398905}, +{"date_trunc":"2022-10-01T00:00:00Z","percent":0.3807843143331747}, +{"date_trunc":"2022-11-01T00:00:00Z","percent":0.36358283951988357}, +{"date_trunc":"2022-12-01T00:00:00Z","percent":0.3664672426322652}, +{"date_trunc":"2023-01-01T00:00:00Z","percent":0.5015832592260838}, +{"date_trunc":"2023-02-01T00:00:00Z","percent":0.48874221007685836}, +{"date_trunc":"2023-03-01T00:00:00Z","percent":0.43940966116785446}, +{"date_trunc":"2023-04-01T00:00:00Z","percent":0.5047683251058214} +] \ No newline at end of file diff --git a/static/data/2023-03-13-emacs/emacs-vim-switch.json b/static/data/2023-03-13-emacs/emacs-vim-switch.json new file mode 100644 index 0000000..cd34d8f --- /dev/null +++ b/static/data/2023-03-13-emacs/emacs-vim-switch.json @@ -0,0 +1,42 @@ +[ +{"period":"2020-10-01T00:00:00Z","misc_emacs_hours":0.0,"emacs_other_code_hours":0.0,"vim_other_code_hours":4.593828333333334,"config_hours":0.0,"orgmode_hours":0.0,"package_hours":0.0}, +{"period":"2020-10-02T00:00:00Z","misc_emacs_hours":0.0,"emacs_other_code_hours":0.0,"vim_other_code_hours":5.804007777777778,"config_hours":0.0,"orgmode_hours":0.0,"package_hours":0.0}, +{"period":"2020-10-03T00:00:00Z","misc_emacs_hours":0.0,"emacs_other_code_hours":0.0,"vim_other_code_hours":0.7722222222222223,"config_hours":0.0,"orgmode_hours":0.0,"package_hours":0.0}, +{"period":"2020-10-04T00:00:00Z","misc_emacs_hours":0.0,"emacs_other_code_hours":0.0,"vim_other_code_hours":4.997453333333334,"config_hours":0.0,"orgmode_hours":0.0,"package_hours":0.0}, +{"period":"2020-10-05T00:00:00Z","misc_emacs_hours":0.0,"emacs_other_code_hours":0.0,"vim_other_code_hours":3.792777777777778,"config_hours":0.0,"orgmode_hours":0.0,"package_hours":0.0}, +{"period":"2020-10-06T00:00:00Z","misc_emacs_hours":0.0,"emacs_other_code_hours":0.0,"vim_other_code_hours":1.2219444444444443,"config_hours":0.0,"orgmode_hours":0.0,"package_hours":0.0}, +{"period":"2020-10-07T00:00:00Z","misc_emacs_hours":0.0,"emacs_other_code_hours":0.0,"vim_other_code_hours":0.6566666666666666,"config_hours":0.0,"orgmode_hours":0.0,"package_hours":0.0}, +{"period":"2020-10-08T00:00:00Z","misc_emacs_hours":0.0,"emacs_other_code_hours":0.0,"vim_other_code_hours":2.1977777777777776,"config_hours":0.0,"orgmode_hours":0.0,"package_hours":0.0}, +{"period":"2020-10-09T00:00:00Z","misc_emacs_hours":1.544538888888889,"emacs_other_code_hours":0.0,"vim_other_code_hours":2.2808333333333333,"config_hours":0.0,"orgmode_hours":0.0,"package_hours":0.0}, +{"period":"2020-10-10T00:00:00Z","misc_emacs_hours":2.166045,"emacs_other_code_hours":0.0,"vim_other_code_hours":2.765833333333333,"config_hours":0.0,"orgmode_hours":0.0,"package_hours":0.0}, +{"period":"2020-10-11T00:00:00Z","misc_emacs_hours":0.0,"emacs_other_code_hours":0.0,"vim_other_code_hours":1.522777777777778,"config_hours":0.0,"orgmode_hours":0.0,"package_hours":0.0}, +{"period":"2020-10-12T00:00:00Z","misc_emacs_hours":3.373538055555555,"emacs_other_code_hours":0.0,"vim_other_code_hours":2.8524999999999996,"config_hours":1.1968416666666668,"orgmode_hours":0.0,"package_hours":0.0}, +{"period":"2020-10-13T00:00:00Z","misc_emacs_hours":0.0,"emacs_other_code_hours":0.0,"vim_other_code_hours":3.1955855555555557,"config_hours":0.0,"orgmode_hours":0.0,"package_hours":0.0}, +{"period":"2020-10-14T00:00:00Z","misc_emacs_hours":0.0,"emacs_other_code_hours":0.6688305555555559,"vim_other_code_hours":0.07459444444444445,"config_hours":2.822041666666667,"orgmode_hours":0.0,"package_hours":0.06048055555555555}, +{"period":"2020-10-15T00:00:00Z","misc_emacs_hours":1.0370783333333335,"emacs_other_code_hours":4.3661255555555565,"vim_other_code_hours":0.24187555555555554,"config_hours":3.7891083333333335,"orgmode_hours":0.0,"package_hours":0.2898111111111111}, +{"period":"2020-10-16T00:00:00Z","misc_emacs_hours":1.2085813888888888,"emacs_other_code_hours":2.804672222222222,"vim_other_code_hours":0.0020166666666666666,"config_hours":0.4711361111111111,"orgmode_hours":0.0,"package_hours":0.0}, +{"period":"2020-10-17T00:00:00Z","misc_emacs_hours":1.5149327777777772,"emacs_other_code_hours":1.431163888888889,"vim_other_code_hours":0.24356111111111112,"config_hours":2.4144055555555557,"orgmode_hours":1.0415694444444443,"package_hours":0.0}, +{"period":"2020-10-18T00:00:00Z","misc_emacs_hours":1.185498611111111,"emacs_other_code_hours":4.190124999999999,"vim_other_code_hours":0.0,"config_hours":0.1758361111111111,"orgmode_hours":0.5317666666666666,"package_hours":0.0}, +{"period":"2020-10-19T00:00:00Z","misc_emacs_hours":1.0136511111111104,"emacs_other_code_hours":2.7192686111111115,"vim_other_code_hours":0.0022222222222222222,"config_hours":0.03091111111111111,"orgmode_hours":0.3985694444444444,"package_hours":0.0}, +{"period":"2020-10-20T00:00:00Z","misc_emacs_hours":1.6019416666666655,"emacs_other_code_hours":1.8278999999999996,"vim_other_code_hours":0.0,"config_hours":0.09761388888888889,"orgmode_hours":1.1227472222222223,"package_hours":0.0}, +{"period":"2020-10-21T00:00:00Z","misc_emacs_hours":0.10150999999999932,"emacs_other_code_hours":4.24669138888889,"vim_other_code_hours":0.014744444444444444,"config_hours":0.4583833333333333,"orgmode_hours":0.1297222222222222,"package_hours":0.0}, +{"period":"2020-10-22T00:00:00Z","misc_emacs_hours":0.0,"emacs_other_code_hours":5.37636388888889,"vim_other_code_hours":0.05089722222222222,"config_hours":0.024694444444444446,"orgmode_hours":0.21722777777777777,"package_hours":0.0}, +{"period":"2020-10-23T00:00:00Z","misc_emacs_hours":0.40990444444444485,"emacs_other_code_hours":4.576274999999999,"vim_other_code_hours":0.09225833333333333,"config_hours":0.6420833333333333,"orgmode_hours":0.5016444444444444,"package_hours":0.08161666666666667}, +{"period":"2020-10-24T00:00:00Z","misc_emacs_hours":0.07689472222222271,"emacs_other_code_hours":1.2494466666666666,"vim_other_code_hours":0.0061111111111111106,"config_hours":0.4475111111111111,"orgmode_hours":0.8585111111111111,"package_hours":0.0}, +{"period":"2020-10-25T00:00:00Z","misc_emacs_hours":1.3529136111111115,"emacs_other_code_hours":2.2984227777777777,"vim_other_code_hours":0.0,"config_hours":0.22775833333333334,"orgmode_hours":0.03581666666666667,"package_hours":0.0}, +{"period":"2020-10-26T00:00:00Z","misc_emacs_hours":2.2822991666666663,"emacs_other_code_hours":1.8299355555555556,"vim_other_code_hours":0.21062777777777777,"config_hours":0.5299861111111112,"orgmode_hours":0.9724463888888889,"package_hours":0.0}, +{"period":"2020-10-27T00:00:00Z","misc_emacs_hours":2.4492977777777787,"emacs_other_code_hours":1.3149833333333336,"vim_other_code_hours":0.0,"config_hours":1.6067777777777779,"orgmode_hours":0.7547583333333333,"package_hours":0.0}, +{"period":"2020-10-28T00:00:00Z","misc_emacs_hours":0.0,"emacs_other_code_hours":0.9042833333333333,"vim_other_code_hours":0.08348333333333334,"config_hours":0.7079055555555556,"orgmode_hours":0.14482499999999998,"package_hours":0.0}, +{"period":"2020-10-29T00:00:00Z","misc_emacs_hours":0.328835555555556,"emacs_other_code_hours":3.784140277777778,"vim_other_code_hours":0.15638888888888888,"config_hours":0.4212972222222222,"orgmode_hours":0.07462222222222221,"package_hours":0.0}, +{"period":"2020-10-30T00:00:00Z","misc_emacs_hours":0.27459194444444435,"emacs_other_code_hours":0.07239999999999996,"vim_other_code_hours":0.2136111111111111,"config_hours":0.38052222222222226,"orgmode_hours":0.20900277777777776,"package_hours":0.0}, +{"period":"2020-10-31T00:00:00Z","misc_emacs_hours":0.0,"emacs_other_code_hours":2.46487,"vim_other_code_hours":0.0,"config_hours":0.16100555555555557,"orgmode_hours":0.04638055555555556,"package_hours":0.0}, +{"period":"2020-11-01T00:00:00Z","misc_emacs_hours":0.609663055555556,"emacs_other_code_hours":5.329877777777778,"vim_other_code_hours":0.0,"config_hours":0.02627777777777778,"orgmode_hours":0.30374999999999996,"package_hours":0.0}, +{"period":"2020-11-02T00:00:00Z","misc_emacs_hours":1.6059166666666673,"emacs_other_code_hours":2.984023055555556,"vim_other_code_hours":0.02325,"config_hours":0.8176666666666665,"orgmode_hours":0.016177777777777777,"package_hours":0.003427777777777778}, +{"period":"2020-11-03T00:00:00Z","misc_emacs_hours":0.3323786111111109,"emacs_other_code_hours":2.076485,"vim_other_code_hours":0.0,"config_hours":0.0,"orgmode_hours":0.44376611111111114,"package_hours":0.0}, +{"period":"2020-11-04T00:00:00Z","misc_emacs_hours":0.0,"emacs_other_code_hours":5.921964722222222,"vim_other_code_hours":0.0,"config_hours":0.500686111111111,"orgmode_hours":1.411311111111111,"package_hours":0.0}, +{"period":"2020-11-05T00:00:00Z","misc_emacs_hours":0.0,"emacs_other_code_hours":7.012325,"vim_other_code_hours":0.0,"config_hours":0.3160166666666667,"orgmode_hours":0.008994444444444446,"package_hours":0.0}, +{"period":"2020-11-06T00:00:00Z","misc_emacs_hours":0.8303497222222229,"emacs_other_code_hours":1.9601530555555557,"vim_other_code_hours":0.0,"config_hours":0.0,"orgmode_hours":1.155611111111111,"package_hours":0.0}, +{"period":"2020-11-07T00:00:00Z","misc_emacs_hours":0.0,"emacs_other_code_hours":5.815349444444445,"vim_other_code_hours":0.0,"config_hours":0.0,"orgmode_hours":0.0,"package_hours":0.0}, +{"period":"2020-11-08T00:00:00Z","misc_emacs_hours":0.5992686111111123,"emacs_other_code_hours":7.439156111111109,"vim_other_code_hours":0.0,"config_hours":0.0,"orgmode_hours":0.08499444444444444,"package_hours":0.0}, +{"period":"2020-11-09T00:00:00Z","misc_emacs_hours":0.0,"emacs_other_code_hours":2.465256666666667,"vim_other_code_hours":0.0,"config_hours":0.0,"orgmode_hours":0.620813888888889,"package_hours":0.0} +] \ No newline at end of file diff --git a/static/data/2023-03-13-emacs/lengths.csv b/static/data/2023-03-13-emacs/lengths.csv new file mode 100644 index 0000000..da2fd24 --- /dev/null +++ b/static/data/2023-03-13-emacs/lengths.csv @@ -0,0 +1,685 @@ +commit,date,Emacs.org,init.el,init.vim,Desktop.org,Console.org,Mail.org,Guix.org +19911d3c96fda1f2eb0d6b0b9ca863498eebae7f,2023-04-03T11:30:26+03:00,8867,6235,1053,3747,1018,616,726 +516f7b0ffde496e5b6f073fde840f048132993ea,2023-04-03T11:28:32+03:00,8867,6235,1053,3747,1018,616,726 +d7f69b10715ddc43a38c3c9e84804dfd25f62cd2,2023-04-03T11:28:01+03:00,8867,6235,1053,3747,1018,616,726 +2a69f52ca0979437f5f8872a180c4fc5fa46257c,2023-03-20T13:29:04+03:00,8866,6234,1053,3747,1018,616,726 +cd7e9934a7f2e4b8cf3633a4c546ede9d7ac0ef4,2023-03-15T17:38:28+03:00,8866,6234,1053,3747,1018,616,726 +89d9a729e091c8bffadce98ddd598cbde7af0cbc,2023-03-14T12:34:56+03:00,8866,6234,1053,3747,1018,616,726 +9b52defcc8df025f6f80b59ce7bbd5018b5019af,2023-03-14T12:31:41+03:00,8866,6234,1053,3747,1018,616,726 +aefff14a6a25b2afcce3048e3ded8fc309b00423,2023-03-14T12:31:28+03:00,8866,6234,1053,3747,1018,616,726 +128c7d8020e52b22acd9d97ef7e661c3583bb1a4,2023-03-14T12:31:06+03:00,8866,6234,1053,3747,1018,616,726 +c8b995d6db6c83e326f13f908a11ad27a2f05e81,2023-03-07T23:06:01+03:00,8855,6227,1053,3747,1018,616,726 +5e0d3dc8e28cb8cecf1aec536e1c2fb867efc986,2023-03-01T22:16:33+03:00,8856,6227,1053,3747,1018,616,726 +a346ca31760f7367d41b2b6054a2b4142adb1cd6,2023-03-01T18:18:37+03:00,8835,6211,1053,3747,1018,616,726 +8017eea0ca1e9d4e9ec4da0175625370b25ea5cb,2023-03-01T18:18:16+03:00,8835,6211,1053,3747,1017,616,726 +f1780832f0f2065324fad65e242815e7f0c1b5b1,2023-03-01T18:17:57+03:00,8835,6211,1053,3743,1017,616,726 +018c35dba99112e8e444fda9408ca80e32e85104,2023-03-01T11:06:42+03:00,8831,6207,1053,3743,1017,616,726 +8a82a52ed017516c00a1d6753cea989253ae78e1,2023-02-22T18:54:45+03:00,8831,6207,1053,3741,1017,616,726 +ce2b447f15e7f1d790870abccc787cbbe3ce9115,2023-02-20T15:12:44+03:00,8814,6196,1053,3741,1017,616,726 +3adca25f883641cc7d43a7e8b8774fb6316aa399,2023-02-19T23:58:25+03:00,8813,6196,1053,3741,1017,616,726 +978e5f682676d2546506f9b26a8d3f1198f4f91a,2023-02-19T23:57:30+03:00,8813,6196,1053,3740,1017,616,726 +9831d1909245c818551660d1df6ed2e572445c3f,2023-02-18T17:33:37+03:00,8788,6178,1053,3740,1017,616,726 +6bbf74279c1e4f8c246bedb737318f02ddde75bd,2023-02-18T17:33:11+03:00,8788,6178,1053,3740,1017,616,726 +bd718b254d9bfb0d14c4f408350087eb220cf5d6,2023-02-17T21:07:13+03:00,8670,6087,1053,3740,1017,616,726 +739d92c5ed11d011852f9e2c18e45393d266c92e,2023-02-17T20:45:32+03:00,8670,6087,1053,3767,1017,616,726 +5056dceda84def0c791601f3d32196c7065ec466,2023-02-14T23:52:48+03:00,8657,6076,1053,3740,1017,616,726 +5ec42f4356a34f8577adfab5645f6a7181acd103,2023-02-13T18:38:57+03:00,8657,6076,1053,3740,1014,616,726 +45cc0e249d450a228211919c288ceca6a40dfd40,2023-02-13T18:30:50+03:00,8657,6076,1053,3740,1014,616,726 +868e94ef20694e583c9fad77d896ad371dc33bf6,2023-02-13T18:30:33+03:00,8657,6076,1053,3740,1014,616,726 +d2620549b86ce8beaeba45a88296946853183ae7,2023-02-12T23:37:13+03:00,8636,6061,1053,3740,1014,616,726 +41464749cfcdd17640b1ca8272cae373abf966c3,2023-02-08T23:54:00+03:00,8526,5998,1053,3740,1014,616,726 +5fe019fbd5cc653c73bb8702bcb59135350367df,2023-02-08T23:52:16+03:00,8509,5985,1053,3728,1009,616,726 +a1b77e233021fe22c6fcf1c2bc33da13586fe0c3,2023-02-08T13:08:16+03:00,8526,5998,1053,3740,1014,616,726 +b96a7f62fb09f662336676cbcb40430ea91ac95f,2023-02-08T13:02:35+03:00,8526,5998,1053,3740,1009,616,726 +8b954419fe17d0a32093d7b1b72eefbb555a5e68,2023-02-08T13:02:26+03:00,8526,5998,1053,3728,1009,616,726 +87626e053967305056f0d9c4463ababe63282368,2023-01-30T22:50:09+03:00,8509,5985,1053,3728,1009,616,726 +49398d4cb8f216858b0d0ce9c000ba2e8affd24f,2023-01-30T01:37:41+03:00,8509,5985,1053,3728,1002,616,726 +e966318c57215f6678eefbe1807520d98def61d7,2023-01-30T01:09:21+03:00,8488,5968,1053,3728,1002,616,726 +2b11ae1f67b2e7c1ef3e64f4076e45ac9b8095c2,2023-01-30T01:07:51+03:00,8388,5897,1053,3728,1001,616,726 +8516c33edccf7e60942344459f5842d9a6885b10,2023-01-27T13:52:21+03:00,8475,5958,1053,3728,1002,616,726 +be08c8b2b6f5dd021567d65a390746d6abbe5b33,2023-01-27T13:49:36+03:00,8474,5957,1053,3728,1002,616,726 +1b6951cf398a9ac04f5a8839d5a9fb2d7ad5d8d1,2023-01-27T13:48:45+03:00,8474,5957,1053,3728,1002,616,726 +2136be197ff9a9235cca896d8aa13423dd75b049,2023-01-25T17:30:47+03:00,8474,5957,1053,3728,1002,616,726 +c1532698cdb86c982a17e50b784af20b3205fbe9,2023-01-24T23:33:42+03:00,8474,5957,1053,3728,1001,616,726 +f5255ccecb0519a2dd21dd51c3a44e00f8eeddfe,2023-01-24T11:46:06+03:00,8375,5885,1053,3728,1001,616,726 +c8ba987151e70c01f4821b7a79da5f0bd1c88c35,2023-01-24T08:13:45+00:00,8375,5885,1053,3728,1001,616,726 +b2536657d2aba6975e286dd7a719ebe34683d11e,2023-01-21T23:53:09+03:00,8375,5885,1053,3728,1001,616,726 +44142f3c4b7a9f21d9281de00125f35ab382a512,2023-01-14T23:39:28+03:00,8353,5878,1053,3728,1001,616,726 +2cc69241abe26f090418006c10b906ddf53f8887,2023-01-14T23:39:21+03:00,8353,5878,1053,3728,1001,616,726 +0c6c2e6acfa4707426429c0dbe887ad57c1e2c4e,2023-01-14T23:39:07+03:00,8353,5878,1053,3728,1001,616,726 +86798c2875c81c6f89196efbd3dc77b781d62236,2023-01-08T23:52:07+03:00,8327,5856,1053,3728,1001,616,726 +2009a87910aa21337afeee73dd0e36190b8b7d6a,2023-01-07T23:13:43+03:00,8304,5840,1053,3728,1001,616,726 +eb20f672ebb17a1619a96108b2f6c5ab9b448968,2023-01-05T00:03:39+03:00,8146,5716,1053,3728,1001,616,726 +3f5967a5f63928ea9c8567d8d9f31e84cdbbc21f,2023-01-03T18:31:37+03:00,8142,5715,1053,3728,1001,616,726 +66c1734309a4c0b1655b99e24f79ac94cbaadee0,2023-01-02T12:05:25+03:00,8037,5688,1053,3728,1001,616,726 +33bac98368bf7f78482b843722bb6fa26dcd006a,2023-01-02T12:01:39+03:00,8037,5688,1053,3728,1001,616,726 +e7391ff0888d21b0f485bd1498ae37fd41a7349e,2023-01-02T12:01:25+03:00,8027,5683,1053,3728,1001,616,726 +1e5a588ef5c4e71466a3c09e1061c329eb4bc441,2022-12-27T10:25:02+03:00,8027,5683,1053,3728,1040,616,726 +fc68c8d0eb8ce9455a8fb12358d83515d073e82c,2022-12-27T10:24:40+03:00,7857,5538,1053,3728,1040,616,726 +33ecd0197e0ebbeb996ad0c98ee231d2cc770248,2022-12-03T23:35:48+03:00,7857,5538,1053,3728,1040,616,726 +d0be119ad6b38bf30dd313ece7de474d0c0af3a3,2022-12-03T23:35:27+03:00,7827,5513,1053,3728,1040,616,726 +f5e612afe9fdcd999e07cc9c479e7db4ee68385a,2022-12-02T15:26:27+03:00,7827,5513,1053,3730,1040,616,726 +d9cc1e6690ceb3ad5612233f7d1f8f6991631e6b,2022-12-02T15:21:55+03:00,7827,5513,1053,3730,1040,616,726 +e9e3899c9ecf07ed57dcc87cc8889ff6d0193527,2022-12-02T15:21:40+03:00,7827,5513,1053,3730,1040,616,726 +a05697a4236674aab9f1df3612ce08862a9a2687,2022-11-15T22:46:44+03:00,7827,5513,1053,3745,1040,616,726 +12ea14e42b0e938d6ae9644eb4e0a21e264115f5,2022-10-28T09:45:20+03:00,7720,5429,1053,3745,1040,616,726 +bf70b39efea5e957690e5d2cde668ddbe353db28,2022-10-28T09:44:59+03:00,7720,5429,1053,3745,1040,633,726 +d093e755fd97a88157d10f4df7353a1729071ee5,2022-10-22T13:29:27+03:00,7720,5429,1053,3745,1040,633,726 +cf592a86e2e4d034e2d966116683dca98bf796d7,2022-10-13T23:00:11+03:00,7720,5429,1053,3745,1040,633,726 +e855da1a9f7a8148a2a4fc880b4157c1f10f005e,2022-10-13T22:51:59+03:00,7699,5413,1053,3745,1040,633,726 +dee410617f609530771f94f6f42c429b00ef4a98,2022-09-23T16:32:30+03:00,7699,5413,1053,3744,1040,633,726 +1d3e2940b419f96ac1957647387154132071962e,2022-09-18T18:33:36+03:00,7678,5399,1053,3744,1040,633,726 +ca3b1781eb70346e0e253ca72fb40d68e34e4e30,2022-09-15T12:44:33+03:00,7599,5394,1053,3744,1040,633,726 +56b2711f52b201497582b1d884f63567d96b500f,2022-09-15T12:43:53+03:00,7599,5394,1053,3744,1040,633,726 +44cf90eb363e4c8b2649800272d31321e1c20938,2022-09-15T12:43:32+03:00,7599,5394,1053,3744,1040,633,726 +7c0e26d42c4385bd4e967d02f72dd0e2438a2ad8,2022-09-15T12:43:02+03:00,7559,5360,1053,3744,1040,633,726 +71c78397bb3b2fb479ff214348bc9a226aae5a1d,2022-09-03T12:49:12+03:00,7559,5360,1053,3743,1040,633,726 +86ed4185e13a4b1f95321e431b8e4fe27f34174e,2022-08-31T21:07:19+03:00,7493,5316,1053,3743,1040,625,726 +4c52cf6e80c3b540a778c601d128bef8e659309b,2022-08-31T16:22:43+03:00,7493,5316,1053,3743,1040,625,723 +804e6c2932477169a6374661d614e2424e55479e,2022-08-28T18:38:43+03:00,7489,5312,1053,3743,1040,625,723 +07cc13ad5c098e9ba3a9b1a0f5f63dbcb498e667,2022-08-19T10:08:00+05:00,7385,5228,1053,3743,1040,625,723 +46904ca73bec195a5a845e1433973e94abd42175,2022-08-19T10:04:54+05:00,7385,5228,1053,3743,1040,625,723 +749c354ef369e6376dfd4f76108426f5daf964ac,2022-08-19T10:04:38+05:00,7386,5229,1053,3743,1040,625,723 +182d01ace4468f53c8014ddd602946bd220721d9,2022-08-15T19:01:17+05:00,7386,5229,1053,3743,1040,625,723 +7f69c7851ee48f9ceede4d0d68c69bd1d0c9500e,2022-08-15T19:00:37+05:00,7386,5229,1053,3743,1040,625,723 +b5a3ed89e30e9f3dbfe8648a7f1cc06239f3d79e,2022-08-15T19:00:03+05:00,7386,5229,1053,3743,1035,625,723 +3a9eaa14421993917cd45758ed41f246c31f31df,2022-08-15T18:59:26+05:00,7308,5171,1053,3743,1035,625,723 +22762966dca788e0b88092cb52eb644b6d4fb237,2022-08-03T20:24:05+03:00,7308,5171,1053,3743,1035,625,723 +fbe878c3121ac4d3ab796b066cdb88a7050d08c7,2022-08-03T14:45:30+03:00,7308,5171,1053,3743,1035,625,723 +973be91ef9efec381e374fc0d38a577d5ee63ba6,2022-08-03T14:45:16+03:00,7308,5171,1053,3743,1025,625,723 +e2717a0ca8b3501ddd007003b34aad3784181e14,2022-07-28T23:20:51+03:00,7308,5171,1053,3741,1025,625,722 +ed580177698f2e65656335fafe33c1c0e5812341,2022-07-25T23:34:39+03:00,7291,5158,1053,3741,1025,625,722 +1af534fcd24c14cbe65d22301cb85821008210eb,2022-07-25T23:34:24+03:00,7291,5158,1053,3741,1025,625,722 +194aadcd1da9a68fb3e1aed4eb40a4f6218efacc,2022-07-25T00:15:53+03:00,7287,5154,1053,3741,1025,625,722 +36eccc1af1c85a01511d239f03626ea8be86e2dd,2022-07-24T23:30:41+03:00,7271,5138,1053,3741,1025,625,722 +ae469d99c9c172e1eedb6868abe936e404ee9db8,2022-07-24T23:30:23+03:00,7239,5113,1053,3741,1025,625,722 +7954f46715baf611f9bcf90586edee83e0dfa4f1,2022-07-24T20:53:41+03:00,7239,5113,1053,3626,1025,625,722 +bd688bdc866d3bba3bd6672e091746127ca54734,2022-07-24T19:36:39+03:00,7484,5113,1053,3760,1062,648,753 +4c97ef1a9c8c31d225bcee1ec49b5184c1936c53,2022-07-20T22:36:10+03:00,7469,5103,1053,3760,1062,648,753 +ce79da5b3f20539c4e29ed375c99ec4c0965cc39,2022-07-20T16:19:01+03:00,7462,5130,1053,3760,1062,648,753 +777c37245b62c326edee3ff60f7defd980c54b14,2022-07-14T23:01:01+03:00,7422,5120,1053,3760,1062,648,753 +23cb747ae8b560adfd416bc22a12aa025b6a6b34,2022-07-11T12:56:33+03:00,7386,5076,1053,3760,1062,648,753 +82ab1fa96e98e2e2331f954454262f702f7fb96e,2022-07-09T23:12:54+03:00,7386,5076,1053,3759,1062,648,753 +977c0c2be111287d056937827d569b5cbbcf77f0,2022-07-09T23:12:07+03:00,7386,5076,1053,3755,1062,648,753 +ae66dcacc14c9ca018cbe26a46b6546dfb55b906,2022-07-09T23:11:37+03:00,7372,5096,1053,3755,1062,648,753 +460e6a8d32b845fbebd51d0f07485ec349083abd,2022-07-02T14:56:16+03:00,7372,5096,1053,3755,1060,648,753 +7de55fa15f09b8e5229fc54471dcfcb642a8ff93,2022-06-26T22:03:18+03:00,7372,5096,1053,3755,1060,570,753 +f12737bb44edafecec2b79b8d9a70d5ed1a1ff99,2022-06-26T21:53:26+03:00,7372,5096,1053,3755,1060,570,753 +fbca334a3585ef6a1d595402ed708917a785789d,2022-06-26T21:53:11+03:00,7372,5096,1053,3756,1062,572,753 +3d1df15f9adf7d9ed734c2cd3664e3dd6c3e989c,2022-06-26T21:52:54+03:00,7372,5096,1053,3756,1062,572,755 +17d6192394e6321e80fde5417954f84256fb6f57,2022-06-17T23:36:47+03:00,7396,5092,1053,3756,1062,572,755 +0b1d5457a6a942d8b2f1c20400d09d4ffd0cfb81,2022-06-17T23:36:29+03:00,7396,5092,1053,3756,1062,572,755 +ca3ee40b6eb65e49f140c890853ef6e885aa210b,2022-06-09T22:26:56+03:00,7401,5097,1053,3756,1062,572,755 +a2c6f501ea650454dd1eebce9beec9dd67c1afd6,2022-06-06T22:31:53+03:00,7393,5089,1053,3756,1062,572,755 +95ac6c9e27eacf96208fac83763be6211f5ddf47,2022-06-06T22:29:27+03:00,7393,5089,1053,3756,1062,572,755 +8e591e0d2afd909ae5be00caf17f9b17c6cd8b61,2022-05-29T23:01:58+03:00,7408,5114,1053,3756,1062,572,755 +062233413d50c91bc4665ce3f6470e5bc7a425c6,2022-05-29T23:01:38+03:00,7408,5114,1053,3756,1062,572,755 +4b176a5bb1a5e20a7fdd7398b74df79701267a7e,2022-05-14T21:53:15+03:00,7322,5045,1053,3756,1062,572,755 +c838c4ca10392e6786d9f22d31bbd41196e4b1d9,2022-05-14T20:32:31+03:00,7153,4949,1053,3756,1062,572,755 +bf3a0c19d7aedb6cf35d1421113cfb1170fad053,2022-05-14T20:31:16+03:00,7153,4949,1053,3756,1062,572,755 +cbf772803b505ef7ca72b01c7e78aff91fee8605,2022-05-14T20:31:01+03:00,7153,4949,1053,3754,1062,572,755 +c6e3c19c31cd0e2ccfd42903bb21788276444798,2022-05-03T23:16:37+03:00,7145,4939,1053,3754,1062,572,755 +9010944b8b42c6d193896a29b2867126f2cf4c00,2022-05-03T23:15:53+03:00,7145,4939,1053,3753,1062,572,755 +586d0c9cd51e248b2e8cb4b4656d20c1182f8b42,2022-05-03T23:15:31+03:00,7103,4900,1053,3753,1062,572,755 +c42b693c51dcf11179573439ebfc9fe40adb1a59,2022-04-30T20:21:07+03:00,7103,4900,1053,3753,1062,572,755 +a33abd485d58bf20be4c3667feaa6897c7f401a4,2022-04-30T20:20:16+03:00,7103,4900,1053,3753,1062,572,755 +86bb113b322dcd94bc865c89b5a18836f5dd0fa0,2022-04-19T20:36:47+03:00,6825,4663,1053,3753,1062,572,755 +4d10d68737842c9629b678bb58b4d1878f9f6c10,2022-04-19T20:32:42+03:00,6825,4663,1053,3751,1062,572,755 +e6ce327e69cb1a7609a71a58bac62859e5efff8d,2022-04-16T12:47:29+03:00,6779,4629,1053,3751,1062,572,755 +cded48d484676b2a85a71a305a0a43c7a44ba3d9,2022-04-14T22:59:58+03:00,6831,4676,1053,3751,1062,572,755 +9b1a3b4b43986d5b0c9c2b96ac1f55fb1c3deb3e,2022-04-14T12:34:51+03:00,6831,4676,1053,3751,1062,572,755 +53eb9132dc38e042badd77fe63cf619141d4a895,2022-04-14T12:33:33+03:00,6714,4570,1053,3751,1062,572,755 +efe1aadaa1bb5b77607840c82405d3fab1abd2fd,2022-04-14T12:33:24+03:00,6714,4570,1053,3751,1062,551,755 +a1eef2a025e25fa1d58da52475e2fefe57c27943,2022-04-09T12:53:58+03:00,6714,4570,1053,3747,1062,551,755 +33a8a2b3382b0cd866b07d2c347b56036080a571,2022-04-09T12:51:02+03:00,6714,4570,1053,3747,1062,551,755 +9028fc32356e6874709bbff1883176fa9f2ae682,2022-04-09T12:20:05+03:00,6714,4570,1053,3747,1062,551,755 +24665dea142b613a6317c89bf215fef8823cac6b,2022-04-09T12:18:36+03:00,6714,4570,1053,3747,1062,551,755 +7190f2c42bdbd8233e734221f9676dfdcbd03fa8,2022-04-08T23:17:37+03:00,6714,4570,1053,3765,1062,551,755 +8145157f01ca6579e5909725ac78b774e89f3f7e,2022-04-08T23:17:01+03:00,6714,4570,1053,3765,1062,551,731 +ac1b6a54341bacce0c52a1674e56f695ae7c85dd,2022-04-01T00:11:48+03:00,6640,4449,1053,3765,1062,551,731 +93ef763b716832b852b35613543e474d8785af4d,2022-03-31T23:40:56+03:00,6588,4449,1053,3765,1062,551,731 +fb88d105ea4cbc0943d2164fae6d9776e01de32e,2022-03-30T14:48:38+03:00,6573,4449,1053,3765,1062,551,731 +64020613192947d106659c30e655619b5f67bf88,2022-03-30T14:48:22+03:00,6573,4449,1053,3765,1058,551,731 +f22856746acf6313ae0e48116c78e035ca9b41aa,2022-03-28T12:17:32+03:00,6573,4449,1053,3762,1058,551,731 +7380dfeb2b9ba65079bc02321de9a82358aa9ade,2022-03-28T12:14:04+03:00,6573,4449,1053,3762,1058,551,731 +025278a1e180e86f3aade20242e4ac1cdc1a2f13,2022-03-22T11:14:12+03:00,6682,4541,1053,3762,1058,551,731 +fc758b407365f7a582ab6c08c3c24a82afcada78,2022-03-22T11:11:08+03:00,6667,4533,1053,3762,1058,551,731 +5aba1733029458ddd880575e89cf5826ef167b70,2022-03-21T22:56:53+03:00,6667,4533,1053,3761,1058,551,731 +97f41fdca43b844b29f92bb767f6f8f24390305a,2022-03-19T23:05:35+03:00,6667,4533,1053,3761,1058,551,731 +c0957bacc87f56ed517d55904e0b46dfc2c34e96,2022-03-17T16:43:50+03:00,6667,4533,1053,3761,1058,551,731 +026f211498252ba4756170f7f243d18c928443af,2022-03-17T16:43:26+03:00,6667,4533,1053,3741,1058,551,731 +1a6c6cf01edcb351c41791e0e27ecce3564175bd,2022-02-25T10:10:00+03:00,6638,4514,1053,3741,1058,551,731 +68d2b3317dc38231d6ee441eaa189d3c798fda98,2022-02-17T23:01:26+03:00,6608,4496,1053,3741,1058,551,731 +4d922dad493f73994b6d7625e19f9456dbbcfa4f,2022-02-17T22:58:22+03:00,6608,4496,1053,3741,1058,551,731 +00ca2648ed3c3c7f926646f319a2064f80bfa691,2022-02-17T22:57:31+03:00,6608,4496,1053,3741,1058,548,731 +78447d47496920c06a47dac0249bc3da26474966,2022-02-15T21:56:26+03:00,6608,4496,1053,3728,1058,548,731 +a02a8c1466fb8362601b352a5f79361f64bd22b8,2022-02-13T18:36:34+03:00,6600,4489,1053,3728,1058,548,731 +33e22565a0c33d37f7547f1863cd4d4dc95f5106,2022-02-13T14:30:27+03:00,6588,4478,1053,3728,1058,548,731 +bb976c89dfb954ff178b8a202423b6f686007de2,2022-02-12T23:11:17+03:00,6588,4478,1053,3705,1058,548,731 +53e45a5e38f0fa2c8ec5372358e95955c5cbccf0,2022-02-12T23:10:16+03:00,6523,4475,1053,3705,1058,548,731 +fa4856faef8f8b2f0d7111c079132a1fd6068410,2022-02-12T23:09:39+03:00,6523,4475,1053,3589,1058,548,731 +f2ab0a59cf1ce70554c42952a9bf3c23d4db87f5,2022-02-10T11:09:40+03:00,6523,4475,1053,3589,1058,548,731 +51ba1ce4d91f46d00eb7445eb94a183a9445f606,2022-02-09T22:31:04+03:00,6523,4475,1053,3570,1058,548,731 +906f66c9e50b7074776568c466a985606414dfe3,2022-02-07T23:00:19+03:00,6523,4475,1053,3570,1058,548,731 +840c3607d1b070d2b296d19a826afc5cab547543,2022-02-02T23:35:19+03:00,6501,4459,1053,3570,1058,548,731 +a3690db9567574bbea77a85fecce20bb4c5cf349,2022-01-31T10:54:36+03:00,6501,4459,1053,3570,1058,548,731 +d2648918fcc338bd5c1cd6d5c0aa60a65077ccf7,2022-01-24T12:40:41+03:00,6802,4677,1053,3570,1058,548,731 +8c32db93f31b72454ecf7002e083e044dec3cfd3,2022-01-24T12:40:00+03:00,6796,4665,1053,3570,1058,545,731 +f3c770650359ba851c2a4f562ae60ee7de59c881,2022-01-22T22:28:23+03:00,6796,4665,1053,3570,1058,543,731 +c83041584d44537c35d2d8beb7b19911db258991,2022-01-22T22:27:27+03:00,6796,4665,1053,3570,1058,542,731 +cea6bbf45c11f675f6be66bdb7de9460ff8dd651,2022-01-20T00:00:25+03:00,6772,4624,1053,3570,1058,542,731 +9612c69ffc2dba30bfa8a697e032e7a04913b2be,2022-01-19T22:34:11+03:00,6772,4624,1053,3570,1042,542,731 +7971eb63e5c684757215a852dba8b53e1297f86e,2022-01-18T18:31:26+03:00,6739,4612,1053,3570,1042,540,731 +90d7c91f0c319554edbfc434419960a175ba21cf,2022-01-17T14:41:31+03:00,6739,4612,1053,3570,1042,540,731 +5b9d5db173b0d16e2485c8a18bb900e37dafe464,2022-01-17T14:41:18+03:00,6739,4612,1053,3569,1042,540,731 +2733147293b7f5b39f0b1a8c814414ebf48b4408,2022-01-17T11:00:52+03:00,6739,4612,1053,3569,1037,540,731 +2210e8f81b0ba08f69af3ee0cdbccf520fbcc69b,2022-01-15T18:34:06+03:00,6725,4605,1053,3569,1037,540,731 +3d87852745caacc0863c747f1fa9871d367240d2,2022-01-15T13:26:12+03:00,6725,4629,1053,3569,1037,540,731 +0f0b664922416ec4a409df3abecdb1d8c1161aff,2022-01-13T11:24:11+03:00,6718,4622,1053,3569,1037,540,731 +e606c96d2b3c35b3d107a25a889c68bd04e1deb7,2022-01-13T11:23:50+03:00,6718,4622,1053,3546,1037,540,731 +269a416e5b1c595927ed9da9f351521dc0792bd1,2022-01-13T11:23:19+03:00,6717,4621,1053,3546,1037,540,731 +e68db3ed0da46f27ea2e84ca3da9cd8230ef2de5,2022-01-12T12:01:05+03:00,6717,4621,1053,3546,1037,540,716 +d697aab011bb08f4b58b2833823ebdcdc431117d,2022-01-11T10:19:16+03:00,6717,4621,1053,3546,1037,540,716 +7d1d5b5b725dee8fcb83fa987abd6ac350643353,2022-01-11T08:56:47+03:00,6717,4621,1053,3546,1037,540,716 +aff8463412f03195747071c7d19e610487d5adee,2022-01-11T08:55:30+03:00,6717,4621,1053,3546,1037,540,716 +fcca97d5547876ec6dfa3347ef57bd890d26db00,2022-01-11T08:54:57+03:00,6717,4621,1053,3535,1037,540,716 +d5409891f023ea22d7f7384e0497ef79205fe3f5,2022-01-11T08:54:25+03:00,6696,4604,1053,3535,1037,540,716 +a4d42098976e591bd95096c713e956118f49a199,2022-01-09T21:52:55+03:00,6696,4604,1053,3535,1037,540,706 +b02ccf4aa79ee83eb8c79629c299462e4fe34755,2022-01-09T21:51:44+03:00,6696,4604,1053,3518,1037,540,706 +aaf9b8725f6fa8ff7c9f4da8edfec756dd5ad4a8,2022-01-09T21:19:39+03:00,6696,4604,1053,3518,1037,540,706 +b7896679f5d11e2371648e55bd20c09778b95f35,2022-01-09T21:19:01+03:00,6690,4596,1053,3518,1037,540,706 +49add5c0fbb0105f139e458131886145fcb41fe4,2022-01-07T00:27:09+03:00,6685,4593,1053,3518,1037,536,706 +803ab24b1e16760e1ac8dd0c3bc83e3176359ef6,2022-01-05T10:44:17+03:00,6679,4585,1053,3518,1037,540,706 +d8d1bb83edd3f44fb4d2c473f474547a5867c186,2022-01-05T10:15:34+03:00,6679,4585,1053,3518,1037,536,706 +4b1e141a6ee2a3039382619b39877cda36926318,2022-01-04T22:09:43+03:00,6679,4585,1053,3518,1031,536,706 +35ea3ab7964ea1c58411bd8167082814d5ed6798,2022-01-04T15:44:48+03:00,6679,4585,1053,3518,1031,535,706 +554c8b85ebff5952a6442b3653e660eefe2f5e98,2022-01-04T12:05:35+03:00,6679,4585,1053,3518,1031,535,706 +82aca7bad4a42334c885405de6710de586dd67af,2022-01-04T12:05:13+03:00,6679,4585,1053,3518,1024,535,706 +941c1d44ee5527bd5a037993c6f7c0ee939d53ad,2022-01-04T12:03:45+03:00,6679,4585,1053,3448,1024,535,706 +4617e07cfdce1cbcaf4da2abc7ca01681cf65891,2022-01-02T13:33:01+03:00,6634,4552,1053,3448,1024,535,706 +03c986cfb8246c3509a9010508ce953a7760de1a,2022-01-01T17:59:04+03:00,6634,4553,1053,3448,1024,535,706 +135b3419e4174754e9fcb173a36d29d42a9c0bd0,2022-01-01T17:58:21+03:00,6632,4551,1053,3448,1024,535,706 +ba38d54cf6366c742eb1f68fd2861911a292173a,2022-01-01T17:53:01+03:00,6633,4551,1053,3448,1024,535,706 +1121bd865cb9ed019e9e4c257155e2fb483d98c5,2021-12-29T13:22:38+03:00,6635,4553,1053,3379,1024,535,706 +623df333e4e115ddd540478b46b603ddbfb85f2f,2021-12-28T23:10:44+03:00,6633,4551,1053,3379,1024,535,706 +79bb3e8a687d4281f84f6e2497b2cc678b7ccf18,2021-12-28T23:10:27+03:00,6633,4551,1053,3384,1024,535,706 +5a3ff8d2554b4c9a18a8b088d4717010e73fa79d,2021-12-22T22:10:24+03:00,6625,4541,1053,3384,1024,535,706 +62eba36159f8cd6eb15faece59cb4904ead2105b,2021-12-20T17:12:33+03:00,6625,4541,1053,3383,1024,535,706 +a3ac781355ec59c44e7cbdad8f7d92bb36433bbc,2021-12-19T22:10:27+03:00,6562,4488,1053,3383,1024,535,706 +40c5ef92a017856f89a00862ded93382894d5fc6,2021-12-18T15:45:28+03:00,6554,4482,1053,3383,1024,535,706 +b0e93e10eecc2e7cbb703dca423dddc4ed130d48,2021-12-14T23:01:28+03:00,6091,4168,1053,3383,1024,535,706 +f4476648fad0b6be8675d74fb06efe23a372ad86,2021-12-12T22:28:56+03:00,6054,4146,1053,3383,1024,535,706 +f8eb4f63ceb9485e4c31dc91981ccd34e7ece12a,2021-12-08T21:56:14+03:00,6053,4145,1053,3356,1024,535,706 +5ae655b39c6f33eed21567023841047f77a919b8,2021-12-08T21:55:55+03:00,6043,4138,1053,3356,1024,535,706 +dcdb7d0109fb27b0610888320eecc1d46bf73982,2021-12-07T22:14:37+03:00,6043,4138,1053,3328,1024,535,706 +3c02a9ee3da300d58fece97f39e5773f94677981,2021-12-07T22:13:57+03:00,6032,4134,1053,3328,1024,535,706 +2cf8314c1f222f3f18a0ab16b3d6e8cfef7d9371,2021-12-06T23:38:47+03:00,6043,4138,1053,3328,1024,535,706 +5be9577a2eade9ee13f2f4c0cc641a9572a51467,2021-12-06T14:56:49+03:00,6032,4134,1053,3328,1024,535,706 +bcbea86087c7103de1780ba081aa251313abb327,2021-12-04T00:08:06+03:00,6035,4134,1053,3328,1024,535,706 +c6987720e980de48461f1682e5d6323a66950bca,2021-12-04T00:07:43+03:00,6035,4134,1053,3322,1024,535,706 +df2f07f949e9ec3efccc9af3f4ba082362e6520f,2021-12-03T17:57:42+03:00,6037,4120,1053,3322,1024,535,706 +9b0bee3ddd4a285b468e2279388dc8b599e1c985,2021-12-03T17:55:00+03:00,6037,4120,1053,3322,1024,535,706 +ff990dc88990a6b1079f5e73e25ad31c2a9408a7,2021-12-02T22:31:31+03:00,6033,4120,1053,3322,1024,535,706 +3c22b441befa8d4ed552f0d8432895ef967a92cf,2021-12-02T22:29:39+03:00,6033,4120,1053,3311,1024,535,706 +a17dee9be51d7f9e62f50ccd414ae0a3bdd8d0eb,2021-12-01T12:59:19+03:00,5959,4070,1053,3311,1024,535,706 +267fb8a98ed4bd60a46b627fb8d7befe5a27f785,2021-12-01T12:24:09+03:00,5959,4070,1053,3311,1024,535,706 +1bd1d0fe95f81bd860e7065c5697ca222f7a3c33,2021-12-01T12:23:02+03:00,5959,4070,1053,3328,1024,535,706 +8594d6f53e42c70bbf903e168607841854818a38,2021-11-27T14:44:54+03:00,6162,4213,1053,3328,1024,535,706 +19ff54db9fe21fd5bdf404a8d2612176baa8a6f5,2021-11-26T22:49:34+03:00,6312,4332,1053,3328,1024,535,706 +78ecd7e1bba152ac73ea6206906384aea384c58a,2021-11-26T21:01:20+03:00,6311,4330,1053,3327,1024,535,706 +ba92551ade9d231b2c13663f815b82804bcc60d3,2021-11-26T17:46:40+03:00,6311,4330,1053,3327,1024,535,706 +c30062c70f8a0b7ef2454996a670ab9eb6193c86,2021-11-25T09:37:31+03:00,6311,4330,1053,3327,1024,535,706 +739e0f69d928eccdcd7e7eec3d039d8b7d1e0d7d,2021-11-25T09:36:56+03:00,6184,4227,1053,3327,1024,535,706 +f31ada645dfd9f90fb09447e6b527af201e3a475,2021-11-23T18:24:51+03:00,6184,4227,1053,3326,1024,535,706 +b85731122cb10b324db0f511218ad87d0fa62360,2021-11-23T15:12:49+03:00,6184,4227,1053,3325,1024,535,706 +96175214c64351daf54edac73c4e8f9edc8e85d6,2021-11-21T10:24:19+03:00,6184,4227,1053,3086,1024,535,706 +45a5439661f26889a2ca5133672079679d7edaa9,2021-11-20T17:55:20+03:00,6184,4227,1053,3082,1024,535,706 +867644c28e482adf2440716e44a0bbd779c311d6,2021-11-20T17:47:25+03:00,6184,4227,1053,3081,1024,535,706 +aa530b1c732ebc391619efa052b179f987deea1e,2021-11-18T07:05:50+03:00,6180,4223,1053,3081,1024,535,706 +d3f9973d63d64a20fa05021357e61730b3e63b1a,2021-11-18T07:05:30+03:00,6176,4219,1053,3081,1024,535,706 +a8a2ea0b00339577023419fe0864fb128d5a0c65,2021-11-15T14:13:09+03:00,6176,4219,1053,3034,1024,535,706 +92f88b798f050b98d69df224aca73f887b2438b7,2021-11-15T14:07:34+03:00,6177,4219,1053,3016,1024,535,706 +851bb9bc974c18e9c906a0ba4e50a6821d8ca1cf,2021-11-09T22:03:45+03:00,6171,4207,1053,2533,1024,535,706 +54e1ee0ea70f38dd6b9f07323b8c91bc8e42e974,2021-11-05T22:17:26+03:00,6017,3999,1053,2533,1024,535,706 +67dabb3f4bc5cca24d5bb75f5bab42b5ee68a9a0,2021-11-05T22:17:11+03:00,6017,3999,1053,2518,1024,535,706 +785a6609f31f4573bf6cdf34599d9a566278995c,2021-11-01T19:15:36+03:00,6001,3989,1053,2518,1024,535,706 +90f60f3cc303f1543c41deeb3e625386bcc9ca1a,2021-11-01T19:15:08+03:00,6001,3989,1053,2513,1024,535,706 +e7aeb61ba2a9ee3a121a64f9def1410a7679d56d,2021-10-29T18:07:41+03:00,5973,3963,1053,2513,1024,535,706 +9df931b94c291851b6e9afc22e640cd20def6f4a,2021-10-28T15:49:32+03:00,5944,3948,1053,2513,1024,535,706 +0dc4420eccf84062659cf819b087215901d8d7da,2021-10-28T15:48:50+03:00,5923,3931,1053,2513,1024,535,706 +770a2421a6e0c719662d1fac29abddf5145bb9f2,2021-10-25T10:41:43+03:00,5923,3931,1053,2509,1024,535,706 +515101ffcde32dc4ac5889e92e841d6f069fc43d,2021-10-24T21:37:29+03:00,5918,3927,1053,2509,1024,535,706 +182125df06fab50aacb51b462f7f299300552d06,2021-10-24T21:35:14+03:00,5918,3927,1053,2509,1024,535,706 +710e838db4074fd51d945f668082e9db207aa8c9,2021-10-24T21:34:49+03:00,5918,3927,1053,2507,1023,535,706 +c87c2029c0f6196528f9c8fdbbc2ff36af335f4d,2021-10-21T20:56:29+03:00,5841,3874,1053,2507,1023,535,706 +1ed3800f8d3d9c4085e411222b821b832c7ac252,2021-10-21T20:55:12+03:00,5841,3874,1053,2507,1023,535,706 +7ac1215aded90d5c50f80d9df2b81f99948a3481,2021-10-21T20:54:42+03:00,5841,3874,1053,2507,1022,535,706 +b781888b847636e9fc33899ab08d0287b1e1fd53,2021-10-13T10:50:00+03:00,5778,3817,1053,2507,1022,535,706 +f8f21351a19dcbc8f3b6c29c23494fe6ea3804b0,2021-10-13T10:49:39+03:00,5750,3817,1053,2507,1022,535,706 +53692feda00bf0ccf246222dc7d0a06e86f97a6e,2021-10-13T10:49:03+03:00,5750,3817,1053,2506,1022,535,706 +a19a36e2d388570fc9610f9e87656fa19e6dfe68,2021-10-06T16:30:53+03:00,5750,3817,1053,2506,1008,535,706 +3331e30435c2eefb0587839d0aa417558f3a8a26,2021-10-04T11:21:26+03:00,5685,3779,1053,2506,1008,535,706 +20af706fa28d1c33e594b99e531aa385bb9ce26d,2021-10-03T20:46:40+03:00,5685,3779,1053,2495,1008,535,706 +a0f25dd23f9ca2e592676fc6a72d7e446c3a1edb,2021-10-01T18:55:52+03:00,5573,3705,1053,2480,1008,535,706 +c14a738f2abfa813b56e90745e99f5e13a770459,2021-10-01T18:49:37+03:00,5573,3705,1053,2480,1008,535,706 +44ce42a6f035235535e033242bf8ca5a97de5604,2021-09-30T19:15:18+03:00,5573,3705,1053,2480,1008,535,704 +138d5522f9e7fa0faf7b8e2a0bc40c73c21a8206,2021-09-30T19:14:03+03:00,5573,3705,1053,2480,1008,533,704 +f1e4731ca5cae8f383f48254d94eae954bc48561,2021-09-30T19:13:31+03:00,5573,3705,1053,2480,1000,533,704 +3d56b8db18ea22388751e9e3cf5b6297e583d097,2021-09-22T11:55:05+03:00,5549,3697,1053,2480,1000,533,704 +9f226b54be2e926c8957937259c1ae292d0199aa,2021-09-22T11:53:46+03:00,5489,3666,1053,2480,1000,533,704 +2dfa789d641564cea5e7bf1160c29936d20f7cd2,2021-09-18T23:08:20+03:00,5489,3666,1053,2465,1000,533,704 +0fb670bf083539ce5920eb0fc4cdcde1dc9cdaf9,2021-09-18T11:45:13+03:00,5489,3666,1053,2465,1000,533,704 +4f0dbc0529179b7d1fd49ba0292e844e1a7729c8,2021-09-18T10:04:12+03:00,5455,3645,1053,2465,1000,533,704 +15295971dbad55d7964de9e40dbea3bbc9898480,2021-09-18T10:03:46+03:00,5452,3635,1053,2465,1000,533,704 +9d89de7053f0be08e16a6fca550db4608928e514,2021-09-17T21:17:00+03:00,5452,3635,1053,2463,1000,533,703 +cbed53fc072960a10865371b2dc37f5a4c87753a,2021-09-11T10:35:17+03:00,5452,3635,1053,2462,1000,533,701 +456b4a24a0ad8d3213b0606f248627c63cfe6bd5,2021-09-11T10:35:07+03:00,5440,3636,1053,2462,1000,533,701 +1b9a46394b4bf9add804d4842ed4835d37bf79a6,2021-09-11T10:34:49+03:00,5440,3636,1053,2462,1000,533,701 +ba29177f960f2cd1d12c7eba4320dc9121fa7d55,2021-09-08T15:02:34+05:00,5440,3636,1053,2459,1000,533,701 +f9cecf57bb21e89b7d74d3079a1dd556762b667e,2021-09-03T13:43:07+05:00,5440,3636,1053,2459,1000,533,701 +50979e53c722d90eefb3a7272e1d6743c07bf0b0,2021-09-03T13:42:42+05:00,5440,3636,1053,2459,1000,533,701 +d6d6f40f2c756db7b8c7bbdf4e4ed3f805c00dfd,2021-08-31T16:40:49+05:00,5209,3454,1053,2459,1000,533,701 +3576f37d27585fda81e52f65c4015a278adbb95f,2021-08-31T16:39:15+05:00,5209,3454,1053,2458,1000,533,701 +4d759a129ccb08dc4ac4f604557e34775e3159f3,2021-08-25T19:32:09+03:00,5249,3487,1053,2458,1000,533,701 +08801fc5ecc77de57738797cb1b490a0630f737e,2021-08-25T19:25:57+03:00,5249,3487,1053,2458,1000,533,701 +c5294aea224ff136f5441094b9dde2424cf41659,2021-08-22T21:50:41+03:00,5242,3482,1053,2458,1000,533,701 +9148fea7cfec4dd19e3e023685820156568adee7,2021-08-22T12:50:42+03:00,5242,3482,1053,2458,1000,533,701 +bf5ad786470627382da83fde64c034a683b9c8eb,2021-08-19T14:29:56+03:00,5226,3475,1053,2453,997,529,698 +d22dc6c645b22ea6c7c0d5d53e11053c396ab0c4,2021-08-18T22:27:53+03:00,5226,3475,1053,2453,997,529,698 +0ad807a8416146c9a5b124fc6c5219fbd8239373,2021-08-18T22:27:14+03:00,5226,3475,1053,2444,997,529,698 +0ae6b3127d0486f1271b2279b9422160b7d8309a,2021-08-18T22:26:19+03:00,5150,3415,1053,2444,997,529,698 +ab7832732b8ecf58cb5cee9ff0b0194cb151443d,2021-08-18T14:25:04+03:00,5150,3415,1053,2444,990,529,698 +1a47ddbcc0cb26981a66b87651376be07942c24f,2021-08-13T21:16:35+03:00,5150,3415,1053,2444,990,529,698 +1a74ee8b6c93b91077394db40440501ca3a4c101,2021-08-13T21:15:44+03:00,5123,3392,1053,2444,990,529,698 +d1c61211df1f9253bc505cee2584e163071d6572,2021-08-12T10:10:33+03:00,5123,3392,1053,2441,990,529,698 +f2e42b9212e97dc390799ccfb2f24843873e0c4d,2021-08-11T22:17:21+03:00,5091,3363,1053,2441,990,529,698 +36106c8f47d48930512eb94fd1c31c3301ac0cd3,2021-08-11T13:14:55+03:00,5067,3352,1053,2441,990,529,698 +750b12ef7655f5b422e97e9a2d9d391784078616,2021-08-09T13:53:23+03:00,5065,3336,1053,2441,990,529,698 +cc296f08e8a96ce00be46f4a8684db7828fb6f30,2021-08-09T13:28:39+03:00,5065,3336,1053,2441,990,529,698 +e13ab60bb4acc1dbe3d4852f8572d51646c06713,2021-08-08T21:12:13+03:00,5027,3322,1053,2441,990,529,698 +0a3127d4254bb2ac9a1316cdbafa3981dfb3417a,2021-08-08T21:01:40+03:00,5027,3322,1053,2441,990,529,698 +32b2794b76288b8236ad688dcfa2db284c6be577,2021-08-07T18:57:23+03:00,4973,3283,1053,2441,990,529,698 +6fa7b9334ce28a8efccafc649576c6a92d39a56f,2021-08-07T18:57:06+03:00,4973,3283,1053,2441,983,529,698 +9854573203e6aa4e1bbd3ef5b342799a2e79d5b3,2021-08-07T09:58:55+03:00,4947,3255,1053,2441,983,529,698 +57559ee47d5763ceb77627d2be26d9301dc1810c,2021-08-05T17:07:51+03:00,4947,3255,1053,2441,983,529,698 +79e89529509d1711904e26f7576886b101a01601,2021-08-05T17:03:15+03:00,4947,3255,1053,2441,983,529,698 +0e769a951f5d9adee9e0e16a50a06f2105f7b959,2021-08-05T17:02:42+03:00,4947,3255,1053,2439,983,529,698 +56e87062d74149287e081ddf4b2889182a5be551,2021-08-05T17:02:23+03:00,4894,3214,1053,2439,983,529,698 +52bb3c9d2917c9fec02541fb73ea1f1a78640cea,2021-08-04T18:46:14+03:00,4894,3214,1053,2439,968,529,698 +624b24a4d3fcc79bab9ffd5b58a7b1542a33b466,2021-08-04T16:39:40+03:00,4894,3214,1053,2432,968,529,698 +7049a698224c1ea6078cf8a078ca9f58bf465db5,2021-08-04T16:29:03+03:00,4894,3214,1053,2432,968,529,698 +09aace32d759bc1a3503316e38d008ef8fd91d68,2021-08-04T16:28:32+03:00,4894,3214,1053,2432,968,527,698 +a2d1135165ab9a13311e5449e63499ebe2d60356,2021-08-04T12:02:45+03:00,4895,3214,1053,2432,968,527,698 +bc243cd1d3e44eb382031a54080ba1c9f3199b26,2021-08-04T11:29:35+03:00,4895,3209,1053,2432,968,527,698 +4c544d850853a45ef35eb678ad23c9a7512e6ad2,2021-08-04T11:29:27+03:00,4895,3209,1053,2432,968,527,698 +9f4a0b1e09601bd30e942cac5530b26357ea4602,2021-08-04T11:27:50+03:00,4759,3139,1053,2432,968,527,698 +1be22593a48bdc277971b24233dfbf4bf3de0521,2021-07-31T21:25:59+03:00,4759,3139,1053,2418,968,273,698 +304993a14eecf3292ea357a15b2304f4e8f1815b,2021-07-31T16:46:08+03:00,4767,3124,1053,2418,970,273,698 +b9f06e77275ef032dbc1a2fae36394b1c4fe171e,2021-07-31T16:44:20+03:00,4767,3124,1053,2418,968,273,698 +9ac94c39670da168de60daedbd77da029ad4a7fb,2021-07-31T16:28:25+03:00,4767,3124,1053,2418,930,273,698 +48fd28b543cf411bfc069e20818eb60e113b3df0,2021-07-31T09:46:48+03:00,4767,3124,1053,2418,916,273,698 +f92bd16c509fdbad1c18636341b1d5e2e23c0b69,2021-07-29T16:48:45+03:00,4736,3118,1053,2418,916,273,698 +d14808fa7fece33dd31eb3e62b96edf5401a9825,2021-07-29T16:47:57+03:00,4670,3087,1053,2418,916,273,698 +7f50bdb82ce941dce8fb109841346c38fe0e4aa1,2021-07-27T18:27:50+03:00,4670,3087,1053,2418,915,273,698 +a26e5fa8ef4cb2b4cc90dccfdf82a960306051b3,2021-07-27T12:49:23+03:00,4670,3087,1053,2416,915,252,698 +6070c4bca93967753399a95d14ab7b6fb4867c14,2021-07-27T12:46:27+03:00,4647,3073,1053,2416,914,252,698 +349b0fd5dd5665950a9c09a2651e72ae68f4473d,2021-07-26T17:39:15+03:00,4695,3073,1053,2416,807,252,697 +776cab2b89971e284a5413d7c7d0ed824a55ed14,2021-07-26T17:38:55+03:00,4620,3015,1053,2416,807,252,697 +3a441661bb2de23bf1a39121d22f315c1e4668ac,2021-07-26T17:37:05+03:00,4620,3015,1053,2412,807,252,697 +bd3743e3a370309d36d957188c7272dbe2f4279b,2021-07-22T22:06:24+03:00,4620,3015,1053,2412,807,252,697 +d209886abc2ddc8282e1a53f20afe3ad291fd582,2021-07-22T17:49:10+03:00,4498,2927,1053,2412,807,252,697 +ba9d50d4914cab4cc7270bbb90f073e2865469a1,2021-07-22T14:29:10+03:00,4472,2927,1053,2412,807,252,697 +740753d69683c4e04748f000e996e59ac9974833,2021-07-22T12:16:10+03:00,4472,2927,1053,2412,807,252,697 +b880e8a2e10c148b6aa1dd937315c21409587c63,2021-07-21T20:59:26+03:00,4426,2890,1053,2412,807,252,697 +57b757a78f3fb151ba012da56791686d90b74a07,2021-07-21T15:14:59+03:00,4423,2890,1053,2412,807,252,697 +4785f72fec3efa497cea17ac79b3c366185a90e3,2021-07-20T21:43:59+03:00,4423,2890,1053,2387,807,252,694 +7973aec28eedf4e40a4e1ad82d939dfc89acd24d,2021-07-20T21:43:08+03:00,4321,2801,1053,2387,807,252,694 +bd7d246fef7a25aaa2b21ed40499891b822c1b50,2021-07-20T21:41:58+03:00,4319,2799,1053,2387,799,252,694 +b89a27b39010799ad06db6004b7fccdd5af39b2f,2021-07-17T20:32:04+03:00,4319,2799,1053,2387,799,252,694 +f319f1a31f8dbdee045b06385bf7eace899b4fb1,2021-07-17T10:53:14+03:00,4257,2783,1053,2387,799,252,694 +99505117b4568d8c57a2b9fdd3c6c627c9e2b041,2021-07-17T10:50:50+03:00,4257,2783,1053,2384,799,252,689 +2615f584d2ea741b0b6da6dd45d4637c3f27327f,2021-07-14T21:57:17+03:00,4078,2698,1053,2384,799,252,689 +82d66af51b9ae6d1ba843f86df41bf6e9f707ca5,2021-07-14T21:57:02+03:00,4078,2698,1053,2384,799,236,689 +42065f16eec254a212622e51248dc258c80cb84b,2021-07-14T18:43:29+03:00,4060,2665,1053,2384,799,236,689 +68c28de2c6a72d36ffd7deb71a56d24c621dbaba,2021-07-14T18:43:00+03:00,4035,2665,1053,2384,799,236,689 +59d56cfb8aee27d5822f2127462bcd0d2729acd5,2021-07-13T16:04:41+03:00,4035,2665,1053,2384,749,236,689 +ab011b826f9cc1f8a4c33f974f3879171f1a1c98,2021-07-12T19:38:21+03:00,4027,2665,1053,2384,749,236,689 +342b9f5d485af8164856c5ae1a32d5de03c2a7c1,2021-07-12T19:33:35+03:00,4028,2666,1053,2384,749,236,689 +c138635f6aa5c79b1c058529b7186d64ea37864e,2021-07-12T12:14:23+03:00,4028,2666,1053,2384,716,236,649 +00141e7dca1a7c7fc381fa9399b17cc23f699b04,2021-07-12T10:10:38+03:00,4028,2666,1053,2387,716,236,632 +21d8917821634fe8b79200cb79e6c74197036fab,2021-07-10T19:49:10+03:00,4028,2666,1053,2387,716,249,632 +f5e7d44aedeb3c9e0969ad200072ae0fa271ad8d,2021-07-10T19:44:11+03:00,4028,2666,1053,2387,711,249,570 +e298ab4c667ad0e8ffa60bb92b2cebb7b4cd408c,2021-07-10T19:43:37+03:00,4028,2666,1053,2387,711,239,570 +2c3505505f8e5acb05370a564a9aec37016f47f8,2021-07-10T19:42:57+03:00,4025,2663,1053,2387,711,239,570 +b046e1dd06d181a252e76c0ca86ee1a04ffc85dc,2021-07-02T17:09:52+03:00,4025,2663,1053,2374,711,239,570 +53ce1053565d920e0cd7d511ef3e3f964a8b1d4f,2021-07-01T12:45:59+03:00,3986,2663,1053,2374,711,239,570 +5e4b4a6087c4ac9da53639f9cbddac8d8f522ded,2021-06-30T20:54:13+03:00,3986,2663,1053,2374,711,239,570 +9b2179110d1c133cc68c1b72883b0d19416c931f,2021-06-29T13:59:38+03:00,3905,2618,1053,2374,711,239,570 +27301786daa82dd29285abff0c2fa5a0ade6ceee,2021-06-26T18:34:06+03:00,3905,2618,1053,2365,711,239,565 +c2b1b0a66a3e5c3e627db5fb1513187dd38c6498,2021-06-25T20:30:45+03:00,3905,2618,1053,2365,711,239,580 +88fab62141ce1af37bff70f81f2784beb5f72ee2,2021-06-25T19:57:56+03:00,3901,2602,1053,2365,711,239,580 +d43a07adcf87eb032ab4ab1f158ca4b9895f7a2f,2021-06-23T20:32:52+03:00,3901,2602,1053,2355,711,239,580 +c2231d32b9f7cf9361a404926077f7d4cf70e05a,2021-06-23T20:01:12+03:00,3900,2602,1053,2331,711,215,574 +557a6765d879dd6392fcd3d9b3a56f47fb11c129,2021-06-23T19:59:48+03:00,3900,2602,1053,2331,711,215,556 +12e25acdeb334916fdd269e9743d02019b365ba4,2021-06-22T08:54:46+03:00,3900,2602,1053,2326,711,215,556 +f39b410440fe71da7b9029216c5785f234eda5fd,2021-06-22T08:54:38+03:00,3900,2602,1053,2323,696,215,555 +02664b08f71e63f0c5f41e334586e4845fccadff,2021-06-21T09:23:36+03:00,3901,2602,1053,2323,686,215,555 +b887ae0c7dd17923eabd91b747120b32c46f98d5,2021-06-20T20:16:34+03:00,3901,2602,1053,2277,685,215,518 +2747239adda94a6580646b39a50189e1fe7fbfe5,2021-06-20T19:05:05+03:00,3901,2602,1053,2282,685,215,507 +35d0a94387dc7f27ce4e59c400a6bcd4be20f2c8,2021-06-20T08:35:45+03:00,3901,2602,1053,2282,685,215,490 +fc674b814237648f3c004b2398ae62d99d00a88e,2021-06-20T07:40:24+03:00,3901,2602,1053,2282,685,215,490 +2380ebf4d101ce6269f48559db9983ff0cc3e92f,2021-06-20T07:40:14+03:00,3901,2602,1053,2282,685,215,490 +5e4504b764c313f72a393aa5885f419c24b36ed9,2021-06-20T07:37:55+03:00,3890,2585,1053,2282,685,215,490 +2d0893ed6d1fcda879640f34a17e389d7eaa5977,2021-06-20T07:37:26+03:00,3890,2585,1053,2278,685,215,489 +c38db5027e0f5efebb406683ab3d1334e429164c,2021-06-19T20:11:45+03:00,3890,2585,1053,2278,684,215,489 +12a25ded4ba3de9a96ff1b0953b5ce243cbe81b5,2021-06-19T17:18:51+03:00,3890,2585,1053,2278,684,215,489 +eec899a0b089d13ad70514489d6e2209f6ebb3a9,2021-06-18T21:36:50+03:00,3890,2585,1053,2277,684,215,418 +cd54e345e5f0cad99c9d4188b973faddd6bb5a09,2021-06-18T18:14:30+03:00,3890,2585,1053,2266,684,215,445 +a37ab00e9bbb2cf781f4eeb94bbc4ae2f3b42fdb,2021-06-18T18:13:55+03:00,3889,2584,1053,2266,684,215,445 +7d61969160b9a669335656a149cbda17f857d4dc,2021-06-18T17:06:12+03:00,3889,2584,1053,2249,677,215,443 +198156ab889643ca5397e7824201e9b40af9ac26,2021-06-18T17:05:28+03:00,3889,2584,1053,2249,676,215,443 +470794016384374b86129197385edf47965911ad,2021-06-18T17:03:51+03:00,3889,2584,1053,2191,676,215,443 +973062cca2f5f24e22fa7046807b335954b68823,2021-06-18T17:02:20+03:00,3900,2589,1053,2191,676,215,443 +c53d3a39322720d0f147fa402d80f91112e1e0cd,2021-06-18T09:50:42+03:00,3790,2547,1053,1932,554,0,0 +bee1990318a5a36cbc7394183c8c39fdf1c0b777,2021-06-17T11:46:49+03:00,3900,2589,1053,2191,676,0,443 +738595780fa6dd70e39e927f0a8fcbc3e540dba1,2021-06-17T11:45:59+03:00,3890,2562,1053,2191,676,0,443 +a3f937cd44640831db2183b81473037b83fedfa2,2021-06-11T19:13:03+03:00,3890,2562,1053,2149,676,0,443 +f63a3d7c98da8412dca75a5ed793d58bac87989f,2021-06-11T11:39:31+03:00,3890,2562,1053,2082,676,0,488 +e055f895d9b8d6b775755c34cfbd94cf9cea9eed,2021-06-11T11:39:31+03:00,3886,2562,1053,2082,676,0,488 +87124deb8c3eebf6f9721de05352c8205e6cf8ca,2021-06-11T11:39:31+03:00,3886,2562,1053,2081,676,0,488 +912ca5d181056723ada8c48629741bca0d0cb778,2021-06-11T11:39:31+03:00,3886,2562,1053,2081,676,0,488 +695629551ff9641e92bc2fe52ca4e5cb5d865dcb,2021-06-11T11:39:31+03:00,3886,2562,1053,2081,663,0,488 +d91c66288433fa864f7fb6021f33832328acd134,2021-06-11T11:39:31+03:00,3873,2562,1053,2081,663,0,488 +0f98e475c1785c2dc6adc42a79125859eae5eaae,2021-06-11T11:39:31+03:00,3873,2562,1053,2081,663,0,458 +07c4551000f45c7c9910db9662ba6b4ea3f5a992,2021-06-11T11:39:31+03:00,3873,2562,1053,2078,663,0,411 +9ea0f5834b1451fb7d15dc4b7a6032e180aa5fe8,2021-06-11T11:39:31+03:00,3873,2562,1053,1998,663,0,411 +8b6f2f37517758455c356866e3263478cbb1ae74,2021-06-11T11:39:31+03:00,3873,2562,1053,1998,663,0,360 +8c7105de9d64696b1fe2ed2d387ba0551073a84e,2021-06-11T11:39:30+03:00,3873,2562,1053,1998,655,0,360 +c40d199aad7fa076a155ed0d82f73090b722baf6,2021-06-11T11:39:30+03:00,3868,2561,1053,1989,650,0,324 +5d006c082ce4f9a43f391d354723512302a071f1,2021-06-11T11:39:30+03:00,3868,2561,1053,1989,650,0,278 +762ae0e5bc0c9eba00cb8e3738b9334481167cd0,2021-06-11T11:39:30+03:00,3868,2561,1053,1932,650,0,278 +d1dd4b8929b3be7e8c39f392416af948ab2a8ceb,2021-06-11T11:39:30+03:00,3868,2561,1053,1932,650,0,280 +349e9c66aa7066a85c23914657473b3ce577df3b,2021-06-11T11:39:30+03:00,3868,2561,1053,1932,650,0,148 +87e4cd15797198ce514e305f93e558d867a5caf8,2021-06-11T11:39:30+03:00,3868,2561,1053,1932,554,0,148 +fd2e6ea2adf1bb98528aac859f43093b79aaa07b,2021-06-11T11:39:28+03:00,3868,2561,1053,1932,554,0,144 +02540932bf150d4693731513ee08f13bcb008c1a,2021-06-11T11:33:48+03:00,3779,2530,1053,1932,554,0,144 +8aef8f37a65d824a5ce7612faaadf56e2dab21d8,2021-06-11T11:33:48+03:00,3779,2530,1053,1932,554,0,0 +338d1fcb59b4d712b4d4b10e54312e900a4bd1d5,2021-06-11T11:33:48+03:00,3779,2530,1053,1932,554,0,0 +11d91f9ad67d8674ac66e302506d57e9ec699964,2021-06-10T12:25:33+03:00,3779,2530,1053,1932,554,0,0 +24a43d5e0f3c6a27f8cdd290a719044a5dc76281,2021-05-29T22:02:49+03:00,3716,2471,1053,1932,554,0,0 +a09570538230bec8d2051282e09937d2d3a0f514,2021-05-28T19:12:53+03:00,3693,2471,1053,1932,554,0,0 +4ac1cc194ce62efeeff04c33d0a2b3185bb4c825,2021-05-26T21:13:43+03:00,3659,2444,1053,1932,554,0,0 +3ac14ed61736343e953d79ac621500dde4498fb3,2021-05-24T16:11:09+03:00,3623,2417,1053,1932,554,0,0 +6d896e9002dfd6509b14fcce53ae4432e6888e53,2021-05-24T16:10:17+03:00,3617,2417,1053,1932,554,0,0 +99d53def658470d765476a4398d07bf5283637c0,2021-05-21T09:31:26+03:00,3541,2364,1053,1932,554,0,0 +57fbd4ea49b483363d095f190e1058394c048411,2021-05-19T20:42:30+03:00,3534,2363,1053,1932,554,0,0 +9685c77a707d1f924a9af222ef1fe9b471fb4dae,2021-05-19T17:25:24+03:00,3534,2363,1053,1931,554,0,0 +4f50f53ae11c1fc64f7e23db1f1023d08c893830,2021-05-18T12:59:12+03:00,3503,2350,1053,1931,554,0,0 +741c6d77fa5fba19484cdaa96d98fa30424dcc42,2021-05-18T11:22:25+03:00,3497,2347,1053,1931,554,0,0 +ae58af4e7d5cf79e464c5a6def1f53b43e5e1a99,2021-05-16T10:11:27+03:00,3496,2346,1053,1931,554,0,0 +1b91184f12a3e71d008acdb5e7eb76b1e86f5a65,2021-05-15T12:56:49+03:00,3391,2251,1053,1931,554,0,0 +3a01bee95c8ae0cc1288e251fcdd538c624eea95,2021-05-14T19:52:08+03:00,3350,2228,1053,1931,554,0,0 +20590a08317ae7f712c59e5ce33d82ef2f183676,2021-05-09T19:21:32+03:00,3342,2221,1053,1931,554,0,0 +b576436028e544d6e751bd88bfd6168346411445,2021-05-08T17:23:37+03:00,3281,2175,1053,1931,554,0,0 +9b8459b5879e6954cb62edd6710bd48deb3ff51f,2021-05-08T12:52:35+03:00,3273,2174,1053,1931,554,0,0 +21d6ccd089f43ce0e6ba441b8497fff920f967ac,2021-05-06T22:46:13+03:00,3270,2171,1053,1931,554,0,0 +e0e0da8364bcacfda6846abc513c8d70e2af3316,2021-05-04T22:23:06+03:00,3220,2143,1053,1931,554,0,0 +edd7cfd8cef803f0124d083aac4de3d658443b2d,2021-05-04T20:11:15+03:00,3187,2117,1053,1931,554,0,0 +6b06c6f73af0e4b61d736ae940d4db19ef3cacd9,2021-05-04T12:11:09+03:00,3096,2061,1053,1931,554,0,0 +b5f98822bb56047cd39565f154a8cadfcb15f6c6,2021-05-02T18:16:22+03:00,3046,2020,1053,1931,554,0,0 +d4d65c6fcf696bb7dcf3a06d1b5a3ea87bb437ea,2021-05-02T18:07:13+03:00,3019,2006,1053,1931,554,0,0 +24db4458c03014010f050c832b8633084b249014,2021-05-01T19:03:07+03:00,3019,2006,1053,1931,555,0,0 +8654bd179bafccd3460d3373249d5aee6bcf2409,2021-05-01T18:56:52+03:00,3019,2006,1053,1931,555,0,0 +fe7ad2de8f642b89b7086114f661490dc50cf4d1,2021-05-01T18:52:59+03:00,2996,1990,1053,1930,555,0,0 +6b70df8719785bfb0100e27d14f5df7146053c2c,2021-04-29T20:43:34+03:00,2996,1990,1053,1857,544,0,0 +7f38639fc477a6640fce04774018114a9c328c9c,2021-04-26T16:33:34+03:00,2935,1959,1053,1857,544,0,0 +c0c9bdb65eb3136f7029df8bcc55035dc7b415f1,2021-04-26T16:16:10+03:00,2934,1945,1053,1857,544,0,0 +022afcfb98219cf13d9c2074f5b871fb571f90d5,2021-04-25T21:39:47+03:00,2888,1923,1053,1857,544,0,0 +31cab6a7872705ec7a11c7ee38740e6dcaf884fa,2021-04-22T22:01:59+03:00,2862,1909,1053,1857,544,0,0 +382bc7b3f3097e025a1262d2f58d889f624d679d,2021-04-22T18:47:30+03:00,2809,1820,1053,1857,544,0,0 +8eeee8e301bf266745a2efad22b01075644ccd44,2021-04-22T16:17:49+03:00,2809,1820,1053,1857,544,0,0 +aa9c57e331ba9fbb929f741ff4798e20a91616b4,2021-04-22T10:18:36+03:00,2793,1810,1053,1857,544,0,0 +b2ba760b8207b93914e748bb28e7acbe35ed839d,2021-04-22T10:18:17+03:00,2793,1810,1053,1857,544,0,0 +e78acbbcf965f718fa58f96ea66187a8d35e1e48,2021-04-21T22:43:08+03:00,2781,1801,1053,1857,544,0,0 +e49d12622ee3e14751215df9aed907e3fa069e14,2021-04-21T18:01:56+03:00,2781,1801,1053,1857,544,0,0 +35fa298833248615bde7e95fcf5647f0452dd23f,2021-04-21T17:57:41+03:00,2780,1801,1053,1857,544,0,0 +4f9cddd68771a81f3eb66cf5ad02cb17dab3980f,2021-04-21T17:55:42+03:00,2780,1801,1053,1857,544,0,0 +c7630813c36eac9cf8067af35fe743b8b9dc4064,2021-04-19T15:05:27+03:00,2768,1797,1053,1857,544,0,0 +81efbdf27277de7a7e9dde154f96081524a36ce1,2021-04-18T19:20:58+03:00,2724,1762,1053,1857,544,0,0 +9592cad3afd6e210157d77eba18560f8f0053cc2,2021-04-17T14:43:06+03:00,2697,1720,1053,1857,544,0,0 +f756d6c4fe42cd4bfc7a8596cba956f57d0ba0b1,2021-04-17T12:17:42+03:00,2696,1720,1053,1857,544,0,0 +c50e6ed2673fcebdad5a50e198c26de75636a57f,2021-04-17T10:56:53+03:00,2624,1603,1053,1857,544,0,0 +244da2546eb15f2dd8a68126d1e48489087985be,2021-04-17T10:56:20+03:00,2624,1603,1053,1857,544,0,0 +2b4935ba773f35238fdcc0a2056b316163f5cafc,2021-04-16T21:50:01+03:00,2624,1603,1053,1857,0,0,0 +6ebf968c017f93e3a8b4c33acd2cfd291f22963e,2021-04-16T16:48:18+03:00,2624,1603,1053,1857,0,0,0 +2fe8ce6f0dc0a3e09cd9ec426689b6157e62bee3,2021-04-15T11:36:07+03:00,2624,1603,1053,1857,0,0,0 +52618736ca77e5ecb39719807384f0c49c92822b,2021-04-13T20:12:47+03:00,2596,1572,1053,1857,0,0,0 +be475e702cf41aaab7540ac30569ac4c2311b21c,2021-04-13T20:00:37+03:00,2570,1556,1053,1857,0,0,0 +751106d8c86fb4056d8d79b82f7d92fcdbfbbacb,2021-04-10T22:00:55+03:00,2540,1517,1053,1857,0,0,0 +32014e97d2bcca6d0060afad8a1a2216e43d65c2,2021-04-10T20:02:07+03:00,2539,1514,1053,1857,0,0,0 +03faea8c65d0f55c8910dbbb91f0b0d69745075f,2021-04-09T21:34:32+03:00,2503,1484,1053,1857,0,0,0 +43c3446e9fb34636ea80aa149ac5c86e4f1f74c0,2021-04-06T20:17:51+03:00,2491,1483,1053,1857,0,0,0 +d55b62899800e9b6d317542eff153e8c1b63ac7d,2021-04-06T20:17:34+03:00,2486,1480,1053,1857,0,0,0 +af0211208a41462a160a466d26178ec7280dd696,2021-04-06T13:46:00+03:00,2487,1479,1053,1857,0,0,0 +87ad371915306dcd9ca563814193a54635a0b100,2021-04-05T20:56:04+03:00,2482,1476,1053,1857,0,0,0 +c41a2567b68db24153e2f78d2bef482ca77c3490,2021-04-05T18:59:22+03:00,2461,1460,1053,1857,0,0,0 +c777b0b4b2f5394d05c2d12fd6e91064284f196a,2021-04-04T21:41:53+03:00,2442,1446,1053,1857,0,0,0 +09c09ac94285b62722e26c4ccf25906e41a3e697,2021-04-04T11:38:40+03:00,2442,1446,1053,1857,0,0,0 +07a34b94fbb037e37d9e5479209a2807514e8d9c,2021-04-04T11:35:15+03:00,2442,1446,1053,1816,0,0,0 +9197605658b64f71b3d53e1ab8aabd1fc1975769,2021-04-03T22:13:29+03:00,2435,1442,1053,1816,0,0,0 +718014f5db3d3358e171b24e9218c2f9452e3b78,2021-04-03T22:08:17+03:00,2426,1433,1053,1816,0,0,0 +da773a1d4bd1e75bc0d8d20a8e1d999b9fa70e2d,2021-04-03T16:00:16+03:00,2381,1407,1053,1816,0,0,0 +5e5c243ba8ef363dcf6a443832341ea44d35666d,2021-04-03T15:55:16+03:00,2381,1407,1053,1816,0,0,0 +6bbf600710719bf844bd884e055b8e79bfbb6167,2021-04-03T15:53:08+03:00,2230,1407,1053,1816,0,0,0 +1fff2396552149436ff13fa5893cf16bb3bbb228,2021-04-03T15:40:12+03:00,2230,1407,1053,1816,0,0,0 +97d5d2bb699691f5220281cc075b6e78d6c0e765,2021-04-03T15:39:01+03:00,2230,1407,1053,1816,0,0,0 +dcffb1658060c093c38a6adada1de5c55630d09f,2021-04-03T15:38:41+03:00,2230,1407,1053,1816,0,0,0 +ab84a36a1348d6226df8c730f65b88ac3bbdd11b,2021-03-31T21:49:31+03:00,2098,1533,1053,1816,0,0,0 +80d6256f5ec9c43e53e4aca4cabae8de4a57506b,2021-03-31T21:48:20+03:00,2098,1533,1053,1812,0,0,0 +286994dd42913a27f78c9c7f2239915ef7fd9bc0,2021-03-31T21:47:03+03:00,2098,1533,1053,1812,0,0,0 +e46c512575f3dbdd375853a24bcefec6677fde61,2021-03-30T22:07:14+03:00,2098,1533,1053,1812,0,0,0 +9c30ffa3a198dbccd4ed4fafec8d844991d2e449,2021-03-30T21:45:27+03:00,2098,1533,1053,1716,0,0,0 +e7fce64a54f376f727c9c6d046665ac8f41d431e,2021-03-28T22:32:21+03:00,2098,1533,1053,1716,0,0,0 +78cfd6586b9352b6347f772922b075050f64e815,2021-03-28T13:13:02+03:00,2098,1533,1053,1329,0,0,0 +9d39f4ee90e5f8f4811a3a44c557a3aa10cfd8f6,2021-03-28T12:59:55+03:00,2098,1533,1053,1329,0,0,0 +e0fcb960ccaeef1fda6cb87f2f5476d87b8a4473,2021-03-28T12:56:53+03:00,2098,1533,1053,1329,0,0,0 +0eff8c56ac5ded25018f608b1018b95eb6b3912e,2021-03-28T12:21:15+03:00,2098,1533,1053,1113,0,0,0 +22d86a6c24e8593276f3d12d45517c7c4d3ab4bf,2021-03-28T11:14:59+03:00,2088,1530,1053,1063,0,0,0 +0e3b17edb685c91d6bbf7088e0f8cbaf762b831c,2021-03-27T21:54:12+03:00,2088,1530,1053,1063,0,0,0 +93a0573fc41f58c6c7f94ac5beb9d6c5222906a6,2021-03-27T17:35:21+03:00,2071,1517,1053,1063,0,0,0 +845e1a273963abbb19275c34fc92d0d2d708d8f0,2021-03-27T17:29:07+03:00,2069,1517,1053,1063,0,0,0 +d869192bf14ab2ee9d68c633bb4644588d357a27,2021-03-27T16:27:39+03:00,2069,1517,1053,536,0,0,0 +ef440cfb499ca873054350a53e821ad658cb6d35,2021-03-27T14:28:50+03:00,2069,1517,1053,538,0,0,0 +2c3dd0b0af7bbb6dd726c82fc44b149d3a350583,2021-03-27T12:47:05+03:00,2069,1517,1053,0,0,0,0 +7a992d21eb87e74c6f135e562e71e171d2590314,2021-03-27T12:46:42+03:00,2069,1517,1053,0,0,0,0 +c520a1387d0cabcb6f908e93d1316fde7b462af5,2021-03-27T12:46:14+03:00,2069,1517,1053,0,0,0,0 +cdbeaa1fffa1ce2e6d30ae0ceec97b39a87ca604,2021-03-24T10:21:49+03:00,2067,1505,1053,0,0,0,0 +67f69904c610757b5a7523ce027c36f5c79f7240,2021-03-24T10:18:46+03:00,2067,1505,1053,0,0,0,0 +ce14de2074b023c935cd1077a82797a9040c6d1b,2021-03-24T10:16:54+03:00,2067,1505,1053,0,0,0,0 +b6fb14b7054c3fa91b9c8cc482b50d4fd8463a70,2021-03-24T10:14:26+03:00,2067,1505,1053,0,0,0,0 +54e153d02dabc29ddc9ec553fa677725e674d047,2021-03-21T21:46:31+03:00,2067,1505,1053,0,0,0,0 +4d116f29495302e8970b0fa7d3494e598aaa995a,2021-03-21T21:27:56+03:00,2067,1505,1053,0,0,0,0 +47f8a13f8da87f7ff304f0095f65eba080ec14aa,2021-03-21T21:27:37+03:00,2067,1515,1053,0,0,0,0 +7f7afe5b68a97743152fddce32b879744541eab4,2021-03-16T13:01:56+03:00,2067,1505,1053,0,0,0,0 +e258ec45ffe7bd9813a846258eac2ecc379f0486,2021-03-16T13:01:49+03:00,2060,1522,1053,0,0,0,0 +67b6dc3d2c99caca93bb345c051a8bcd405eb451,2021-03-16T11:49:15+03:00,2067,1515,1053,0,0,0,0 +b3224f4eb6461f709a42a78b447f08d1eef491df,2021-03-16T07:30:26+03:00,2060,1532,1053,0,0,0,0 +24981a6c8e57063c83ee29247670c3d930a14958,2021-03-16T07:28:55+03:00,2060,1532,1053,0,0,0,0 +bce9a520f37f87e1f03f664ebe5391378f0c112e,2021-03-13T13:16:37+03:00,2060,1532,1053,0,0,0,0 +9eda3a739ceef8ff4f676be03738c7c10664a3d0,2021-03-09T08:55:44+03:00,2060,1532,1053,0,0,0,0 +9d1ef91caa5786d1d5c95ab0782dd83ee0f9dc95,2021-03-08T13:28:05+03:00,2060,1532,1053,0,0,0,0 +2c26a2116191b2366bb0e95791b3280443c7e2cf,2021-03-08T13:18:35+03:00,2060,1532,1053,0,0,0,0 +7e75f0d9340c57d5e3541dbe882ca7a129f77649,2021-03-07T16:03:28+03:00,2060,1532,1053,0,0,0,0 +3f9d86fe95083ba35e555971cdd09f07de8e2c6d,2021-03-07T16:02:27+03:00,2060,1532,1053,0,0,0,0 +fad031bcb92fdf419c577e5555504eef769e5901,2021-03-04T12:49:53+03:00,1998,1484,1053,0,0,0,0 +f39411a3cd079b0daae00383e2473aba39eb6953,2021-03-04T12:34:52+03:00,1995,1481,1053,0,0,0,0 +42276738dff3e3ea8dc69b831e70b9fc0bafde86,2021-03-04T11:38:01+03:00,1995,1481,1053,0,0,0,0 +fd5f3eb3ea8f6af19ad735e3f88baff34180060e,2021-03-04T10:28:32+03:00,1997,1483,1053,0,0,0,0 +708e3021479e4f8408a4ed68daa73269dff8cb09,2021-03-01T11:29:05+05:00,1983,1469,1053,0,0,0,0 +6d0217c49c3c83546cf11ee95c5d53484594d464,2021-02-28T15:01:49+03:00,1983,1469,1053,0,0,0,0 +0429ab2126e080435cafc77ccc1e9e86adef2510,2021-02-28T15:01:33+03:00,1983,1469,1053,0,0,0,0 +077391d793ef085cde93f83b70b5c760b1b6c6bf,2021-02-22T19:39:16+03:00,1959,1454,1053,0,0,0,0 +a5b8c27879cc18b2089a74f38c2207450ad12cd2,2021-02-22T19:37:10+03:00,1959,1454,1053,0,0,0,0 +e4edc119e69ae357403daf360430fe16800f1394,2021-02-15T12:24:20+03:00,1917,1425,1053,0,0,0,0 +483af5e3c4d56fb90a247527c38b528c78ceea20,2021-02-14T20:53:31+03:00,1876,1389,1053,0,0,0,0 +167f1d58ced56b7b3586b0650d9f85e74a58bacb,2021-02-14T20:53:00+03:00,1876,1389,1053,0,0,0,0 +22b6fc87325dad25baec84c9d89df3544dd87336,2021-02-12T21:39:01+03:00,1831,1348,1053,0,0,0,0 +ddcabd0b57affdcdc9b63f49cae239ced321fb43,2021-02-12T18:28:48+03:00,1831,1348,1053,0,0,0,0 +89c54713da960a18fdfdf7ce3a9ec6b13e32bbbc,2021-02-11T21:03:44+03:00,1831,1348,1053,0,0,0,0 +e7b0bbc58fa9c4d70027ce8a089a95db92e183f6,2021-02-11T21:02:52+03:00,1810,1329,1053,0,0,0,0 +b7a40a3b7c25673a8d7eb0dfd0a23f92e2534174,2021-02-10T11:05:44+03:00,1810,1329,1053,0,0,0,0 +2e3c0412b34ff51266da33cbb89c7b9fdf94b88a,2021-02-10T11:05:25+03:00,1810,1329,1053,0,0,0,0 +16326a010d26c1217fbec8ff42cdd299d0d39ae0,2021-02-06T21:28:00+03:00,1735,1341,1053,0,0,0,0 +5483eeb34eac68015a9a66def102bcf8db54c92c,2021-02-06T23:15:52+05:00,1735,1341,1053,0,0,0,0 +fbed354c68e3c4b466fb29f8726fc4a8c05fff6c,2021-02-04T20:48:12+05:00,1735,1341,1053,0,0,0,0 +133530c1c0763dccb9ba91b5f8d281ccff571190,2021-02-04T20:47:57+05:00,1730,1333,1053,0,0,0,0 +f3b697a935e1564ced0995be0f298d52c39ac719,2021-02-04T20:47:31+05:00,1730,1333,1053,0,0,0,0 +a533a06d061ddbe74f77fc7c66e5af2c2022c5e0,2021-02-01T11:16:37+05:00,1730,1333,1053,0,0,0,0 +1496e7ec0392cfea4eb424e1da2308878bcd300d,2021-02-01T11:15:44+05:00,1730,1333,1053,0,0,0,0 +55343c49a9ca3c49c9c6fa715cb215b66e66067f,2021-01-30T14:36:51+03:00,1730,1333,1053,0,0,0,0 +09fe035d6f5500147a1897d039d995e5ab627cc4,2021-01-29T21:59:37+03:00,1730,1331,1053,0,0,0,0 +27ce988287c518f798b926dda4efab0cf6e89c7f,2021-01-28T10:31:42+03:00,1728,1331,1053,0,0,0,0 +afcf8ef14c5a8187eae15142100704803f2980ec,2021-01-27T11:07:17+03:00,1728,1328,1053,0,0,0,0 +33b7ae403693d2df7628b8899b79da27e76498f6,2021-01-26T21:57:38+03:00,1726,1332,1053,0,0,0,0 +229dce2461ef05617cbc2b716a331a0bcbd15b56,2021-01-26T21:56:20+03:00,1688,1331,1053,0,0,0,0 +29f620f809a129b6e0ebe96247fe9d8c8afaee6c,2021-01-25T18:32:13+03:00,1688,1331,1053,0,0,0,0 +d5953c7dd0b4fbc89f930059322c4fb2aad64a8e,2021-01-25T18:06:11+03:00,1688,1331,1053,0,0,0,0 +54983088c0d82da49eaeb918ea1dfc2a1c506872,2021-01-25T18:05:33+03:00,1688,1331,1053,0,0,0,0 +dfa19d31418cece79ccb438297bc99c9402394fa,2021-01-25T12:39:18+03:00,1688,1331,1053,0,0,0,0 +c872a03c989bf9ce5453aa6903a58add9115eb4a,2021-01-25T12:39:00+03:00,1688,1331,1053,0,0,0,0 +63ebaff53cea4044089a39a0ec797eea727717e6,2021-01-22T21:00:24+03:00,1669,1329,1053,0,0,0,0 +29f9d3ee07376106a74670207fc0e7e01074923c,2021-01-22T20:59:43+03:00,1641,1302,1053,0,0,0,0 +7c4cc0a498f77c69b5f1b9bc5fa7d52602900bbc,2021-01-20T17:39:48+03:00,1641,1302,1053,0,0,0,0 +dfc9956cb8cd814221e3594c4a254be236c52f2a,2021-01-20T17:39:09+03:00,1638,1302,1053,0,0,0,0 +d578d31d6a60224793c6168ec9246b47ae36733a,2021-01-20T17:38:14+03:00,1638,1302,1053,0,0,0,0 +6fe3ba654de04250751f0762ac378eae6f8c7649,2021-01-14T12:41:37+03:00,1638,1302,1053,0,0,0,0 +e6167f6ac4c9cf26c16c95fe3ac0b02c783e0a0e,2021-01-14T12:33:22+03:00,1638,1302,1053,0,0,0,0 +1ab81470e4651a5d7945c8268d750cf88be136c4,2021-01-14T10:27:40+03:00,1638,1302,1053,0,0,0,0 +cba9ad4f2517396b31abecde1dabcbf582937180,2021-01-14T09:04:52+03:00,1632,1298,1053,0,0,0,0 +a0265b82e724a130e1d7181ddcd968dc1ae12a17,2021-01-14T09:04:05+03:00,1631,1297,1053,0,0,0,0 +7877dd1bc6ebe586e8c87b555471460d197524ec,2021-01-11T20:05:27+03:00,1619,1287,1053,0,0,0,0 +d2dad7072ac5aecc39d1c2bf4cb305c209fde4d5,2021-01-11T17:53:45+03:00,1618,1280,1053,0,0,0,0 +f5db6388432210a20210df5cd00dae1320369c9a,2021-01-10T12:36:32+03:00,1570,1294,1053,0,0,0,0 +5a3f3fa4d6bc1c65e96099ad6af2a2c26bead55c,2021-01-07T18:27:10+03:00,1550,1277,1053,0,0,0,0 +8b4424e4e392e3bda1f0e96dc289ff261ab7ab9e,2021-01-05T10:39:48+03:00,1534,1264,1053,0,0,0,0 +585ad0747660e3fd3fbff0261cf01b99ec3cbf03,2020-12-31T11:53:28+03:00,1503,1246,1053,0,0,0,0 +ac499424a9eb9b599443f4a4309b61eabe7c09e6,2020-12-31T09:48:31+03:00,1503,1246,1053,0,0,0,0 +e4bbb752a0cf80b325ae216e9ea81fc78bfdc857,2020-12-30T14:09:24+03:00,1491,1236,1053,0,0,0,0 +81fbfa7ab3e9862904ed99d62164474db6f91b80,2020-12-30T13:41:24+03:00,1491,1236,1053,0,0,0,0 +1fad2e5ebe70df29dedd5ffbd06c7447d9942b73,2020-12-30T13:28:23+03:00,1491,1236,1053,0,0,0,0 +4e0d2fb6e2681d53b160d676858e1cdb1e81fd95,2020-12-30T12:57:37+03:00,1491,1236,1053,0,0,0,0 +a3f3fd784eff39f3dac57789a3160e6ff3d32635,2020-12-30T12:28:30+03:00,1491,1236,0,0,0,0,0 +7abea5d6ceb3cf7356eea79b47f024ba4f05b076,2020-12-20T09:17:16+03:00,0,0,0,0,0,0,0 +e39bc85628ecaff84cded2f1e9bbe92a4d8c49d4,2020-12-20T08:17:16+03:00,1359,1143,1053,0,0,0,0 +bfd415a0dd77bb9ab5eef89a396329bb3e6c4cbd,2020-12-11T12:57:42+03:00,1345,1139,1053,0,0,0,0 +0cf54d68feb5253595f04f8e7434f2c6e298e20a,2020-11-28T11:47:18+03:00,1245,1051,1053,0,0,0,0 +3f3504ca33e79296357dfb0682eca09863beefbf,2020-11-25T20:19:24+03:00,1214,1023,1053,0,0,0,0 +707ddaddfea796478ac16d54185ddbd7a5f8c082,2020-11-24T18:47:13+03:00,1176,990,1053,0,0,0,0 +a83efdaec5386bee0c7ddc8093ec279bb1c4465b,2020-11-20T22:41:40+03:00,0,1036,1053,0,0,0,0 +30219f8ec1a08fa64a6f7f0bf32491a19130b9bb,2020-11-11T10:55:01+03:00,0,968,1053,0,0,0,0 +6ff999d23d7ce6393b49dbcded3279af9c3ae668,2020-10-27T17:18:29+03:00,0,905,1053,0,0,0,0 +a3271bb7a58760f49710329e68269ac588028391,2020-10-21T11:58:28+03:00,0,655,1053,0,0,0,0 +c42173d363499c5e073e51bdccc9d247e6421b18,2020-10-18T09:35:20+03:00,0,614,1053,0,0,0,0 +8cea88e9ea892c47daf54d0844e3f8e2bf69330a,2020-10-15T14:01:37+03:00,0,410,1053,0,0,0,0 +b3ab7d320771a826390995df660dacb6cbf773a4,2020-10-06T12:43:53+03:00,0,0,1053,0,0,0,0 +7d7208ad0384a8ebe2a4e9807b0f88bc214aeb85,2020-09-28T10:41:14+03:00,0,0,1053,0,0,0,0 +958f363ca70a092fbf636bc198a27a7f3511415e,2020-09-22T12:59:25+03:00,0,0,1053,0,0,0,0 +208f4553dc15c237df9dac00b8e115107d030263,2020-09-15T09:53:30+03:00,0,0,1041,0,0,0,0 +63f9a8c0345c0c276bb8d602d7afa740f4c09f95,2020-09-09T18:47:23+03:00,0,0,1041,0,0,0,0 +9e17ed451f30f88249a5236854974242bfa0bad1,2020-08-24T15:52:43+05:00,0,0,1041,0,0,0,0 +587d6edb6a999580d921d7feb4bb4b6fb27af7a2,2020-08-08T21:39:06+03:00,0,0,1038,0,0,0,0 +ab4aadffa7858deffadfc037d0c586ed61971d27,2020-08-08T16:02:42+03:00,0,0,1038,0,0,0,0 +44f15a73a342acc4f5a336d4afdaad55948f9969,2020-07-29T17:42:24+03:00,0,0,1038,0,0,0,0 +4fe9afc57b5e22537ddcef251a0ca12a7f7b4a55,2020-07-28T18:44:45+03:00,0,0,1038,0,0,0,0 +9c6ae2446ba4c62f94dc462d7cfca367e29a80a2,2020-07-28T18:43:54+03:00,0,0,1038,0,0,0,0 +835a98d398908cfc06594123bda22930bd496a5e,2020-07-26T15:49:48+03:00,0,0,1038,0,0,0,0 +45d65fa04392cebd6abc7f55319b46e11e097ed1,2020-07-26T15:48:34+03:00,0,0,1038,0,0,0,0 +983827586e37e8b7555e3079f85b2cc3317febca,2020-07-24T07:13:57+03:00,0,0,1038,0,0,0,0 +ba8b16fb05cd2a6382cbe64538562e69e54bfea8,2020-07-18T12:31:08+03:00,0,0,1038,0,0,0,0 +0212d5380e83d0d909a1beafede68382a48692a3,2020-07-18T12:24:30+03:00,0,0,1038,0,0,0,0 +f8e1ccfd17cc3a19ff8fcb9bc2a931bdd3cc4d2a,2020-07-16T18:49:21+03:00,0,0,1038,0,0,0,0 +281373a5f2a940dfe9dd088ab39ab9165c82b11f,2020-07-15T09:28:26+03:00,0,0,1038,0,0,0,0 +634ea50e9215d5eb5bb96a0a371897810de4bc9a,2020-07-15T09:21:35+03:00,0,0,1038,0,0,0,0 +19dbd1e74019486d7e6d01aa62a36fc34b9a5fb6,2020-07-15T09:20:53+03:00,0,0,1038,0,0,0,0 +2f67e73efaabe1f3f251d65e0ac0b3e123717d16,2020-06-09T21:39:27+03:00,0,0,1039,0,0,0,0 +6118624a167f6f554a1d87370583be5a2e9c8b20,2020-05-27T16:03:08+03:00,0,0,1013,0,0,0,0 +57d54e38d0a7536a0869e6a0942788963ee4ffee,2020-05-27T16:02:59+03:00,0,0,1013,0,0,0,0 +ffbb49576dc31133fad21a3ab3a57ff7723bfeaa,2020-05-22T14:26:14+03:00,0,0,1011,0,0,0,0 +c03481f21e52a2a165cbd16d53dc8a151e45c814,2020-05-19T21:39:54+03:00,0,0,1011,0,0,0,0 +d7418bdcbcde041b6461d54563ec0114ad48ae26,2020-05-19T21:39:51+03:00,0,0,1011,0,0,0,0 +1ce7bb3b7faf0f6abaeb22f74939b15f404035da,2020-05-13T19:00:35+03:00,0,0,1011,0,0,0,0 +25355ce8eeec1703e6c6e5c77c86c99b9d70d399,2020-05-13T18:05:05+03:00,0,0,1011,0,0,0,0 +a676fb74a9ddec73a6eed0c943adff22d82f86e9,2020-05-11T18:46:57+03:00,0,0,1009,0,0,0,0 +dba4c7051df1deb6bd3ce388fca91e18564c9f0e,2020-05-08T21:02:58+03:00,0,0,995,0,0,0,0 +35bc4fcd993f2abb906e4c126b46e6f6d4f495b8,2020-05-08T07:56:42+03:00,0,0,995,0,0,0,0 +db54f66d8c8323b63448a6bcac24c694b407a500,2020-04-27T18:18:10+03:00,0,0,995,0,0,0,0 +5051d4a9a93d6c53d08176e32de23ded500685e9,2020-04-11T19:58:49+03:00,0,0,968,0,0,0,0 +9c0374e0a3e26c21a4b94f58d0fce6ab748a1901,2020-04-08T20:35:04+03:00,0,0,968,0,0,0,0 +478e9d9bc505594ff39ad86dae80faba49639138,2020-04-07T08:52:31+03:00,0,0,967,0,0,0,0 +9b14b0bf4c4c2688d9bf0c8f507c2876c3e8c0fa,2020-03-27T08:25:41+03:00,0,0,894,0,0,0,0 +569544c81b9e1dffda20f6f6c3ccb8d8cd8183d8,2020-03-17T22:55:11+03:00,0,0,889,0,0,0,0 +068f6138b4d59258e854a889a51cb867b0fbef99,2020-03-15T21:44:00+03:00,0,0,889,0,0,0,0 +76e3b3f25f8cac86e5d16939535343979e600b93,2020-03-10T08:57:45+03:00,0,0,857,0,0,0,0 +e9585c86349037ed4a6abf3746b116662dc48ee4,2020-03-05T11:44:08+03:00,0,0,847,0,0,0,0 +cb059221310544f7931d0b08b5b22ae2acc9078e,2020-02-28T13:14:46+03:00,0,0,841,0,0,0,0 +2a78620d5dbdeac8928c70e46578900c8fae0350,2020-02-25T08:16:46+03:00,0,0,841,0,0,0,0 +ff00cc966fba6ada8402fc4d52544f064e8eb17d,2020-02-21T07:04:13+03:00,0,0,785,0,0,0,0 +367d7abd8bcfae477f70fd00bf6ba48bbce53d0b,2020-02-21T06:56:30+03:00,0,0,785,0,0,0,0 +25421d1454145e17b7e8196666f2f6e1af1f1e9f,2020-02-17T18:06:08+03:00,0,0,748,0,0,0,0 +39afeb939ef92a250823c8a0f60fc3c04db86d9f,2020-02-12T19:49:56+03:00,0,0,748,0,0,0,0 +6f181eb0e4ad99e4012340cd253c98734e7b6e87,2020-02-08T15:19:10+03:00,0,0,748,0,0,0,0 +bf887b0b4daa447cf80a155377345c39ff1645b1,2020-02-07T06:37:12+03:00,0,0,723,0,0,0,0 +ca75876e1c40d5ad47640d123b88c3ea02dfbd94,2020-02-06T10:25:39+03:00,0,0,717,0,0,0,0 +a620c11a68e9bc06d1d281e852b85d4124a58e5b,2020-02-04T22:05:24+03:00,0,0,717,0,0,0,0 +ef158ec872a6977b5b0d5443f41586aa8d639e07,2020-01-28T07:07:38+03:00,0,0,691,0,0,0,0 +040f24f12b6cdbfdd4f1fac431abc476de20b02c,2020-01-22T21:36:35+03:00,0,0,684,0,0,0,0 +c064a71918d3e17b26df80789da61e76507b83d2,2020-01-20T09:00:19+03:00,0,0,668,0,0,0,0 +97657355749ec681d2fcf41f422e077b69c1dc45,2020-01-15T17:53:26+03:00,0,0,644,0,0,0,0 +8d845533bccacf2e1a4bd9dc6052de8876935c96,2020-01-12T13:42:41+03:00,0,0,566,0,0,0,0 +36912a33427e29d480d6073e281b77bbffa50fa1,2020-01-05T13:20:36+03:00,0,0,484,0,0,0,0 +dd078552597b827c1ced12379bfdde5222654605,2019-12-31T16:56:49+03:00,0,0,418,0,0,0,0 +117176319fc584fd132865740b6d413c40f25edb,2019-12-25T07:53:39+03:00,0,0,411,0,0,0,0 +c17914fa4ffeb96cceaa59fed93f711f41869cc2,2019-11-30T13:34:57+03:00,0,0,398,0,0,0,0 +91983f536b450061c3b8931806dd1727364a4747,2019-11-21T08:25:37+03:00,0,0,388,0,0,0,0 +c217e480bfb2328d2ecb5d7bb822b002af6c4ff4,2019-11-21T08:25:19+03:00,0,0,388,0,0,0,0 +315e167fbd494bc1cc49b5e13410f67a5314de7f,2019-10-21T10:18:03+03:00,0,0,379,0,0,0,0 +87211c3e501388adf3e880154fc6d0fe30c1f02c,2019-10-21T08:31:34+03:00,0,0,379,0,0,0,0 +bfa5fb959a5ef7b5b8f362992414ff5e0380433d,2019-10-18T20:40:03+03:00,0,0,377,0,0,0,0 +26dc6f9f72a9ac76c4454146d4404c7ad018d1cb,2019-10-18T16:57:21+03:00,0,0,377,0,0,0,0 +f7ec83d186fc546c424c87b6b3394a2b5d6a6059,2019-10-16T22:06:02+03:00,0,0,377,0,0,0,0 +1e2550f7381f2506987f5e71380c43d28575bdfc,2019-10-14T10:48:32+03:00,0,0,377,0,0,0,0 +273b90172e8f451fcaa561bcdf682b287e4ee04b,2019-10-09T22:00:03+03:00,0,0,376,0,0,0,0 +474903d04ea3b7acc5d3c55f3b5d3283320ff4bb,2019-10-04T08:55:27+03:00,0,0,368,0,0,0,0 +2b82da4a18274de3ba82c99137083999b1df7e7a,2019-09-28T17:33:16+03:00,0,0,364,0,0,0,0 +ecc70effda3f7680864e5abc0ec9334c56288bb8,2019-09-18T20:18:25+03:00,0,0,354,0,0,0,0 +bd170af28494bcc3100fb9a98c2edbf5c9e4dcb3,2019-09-11T22:13:34+03:00,0,0,350,0,0,0,0 +4e13110bd4ee9007950a119c387cee53165209e7,2019-09-10T12:32:11+03:00,0,0,316,0,0,0,0 +69e6c77f0b382da16c2f704dee9f5c26a1033543,2019-06-21T20:19:08+03:00,0,0,304,0,0,0,0 +15f77e6947d4e6dc4a2c4eacc424436629e70535,2019-06-01T11:59:02+03:00,0,0,288,0,0,0,0 +b885ed7594f8f4e30e3396add6a9e5bb221cbe90,2019-05-23T18:12:27+03:00,0,0,264,0,0,0,0 +b866f7de55fb8e6383d4e7fc5446b73db08a0af5,2019-05-20T22:30:19+03:00,0,0,247,0,0,0,0 +e80709e371b9586a7cc104c908111f8c43b8cc6e,2019-05-20T10:31:15+03:00,0,0,229,0,0,0,0 +5587b1deb21e8b010f1e08ed7c54925e87b7ab7b,2019-05-20T10:30:51+03:00,0,0,229,0,0,0,0 +83450733e407d9d3988851086cc6a966b2e58302,2019-05-19T13:13:36+03:00,0,0,227,0,0,0,0 +5d3c243cbaef7e178f31d00b7d503aca2297af16,2019-05-18T23:38:16+03:00,0,0,227,0,0,0,0 +02e74e52f04758d0fbcca1531a45939bce2bc397,2019-05-17T14:25:10+03:00,0,0,218,0,0,0,0 +463db6e22059078ebbb42fcc4b8a2ac8815d42e2,2019-05-13T13:48:16+03:00,0,0,217,0,0,0,0 +e4a1a9e40a9eb00dc867d900f91cede36e415c38,2019-05-10T15:35:36+03:00,0,0,217,0,0,0,0 +c9727bf397a3941cdc98fc4e15f69dccbc29fc01,2019-05-08T21:07:58+03:00,0,0,203,0,0,0,0 +0b9731f31c6fb41921fd4bc0b89438dc509cbec4,2019-05-08T14:38:49+03:00,0,0,197,0,0,0,0 +18bd6fdf9d41ee5b56c4ae78c124c3d1fd5d87aa,2019-05-06T00:02:57+03:00,0,0,159,0,0,0,0 +2ed4d3a8ef86ef61b300412e28eb899635f657f3,2019-04-30T22:21:22+03:00,0,0,159,0,0,0,0 +0efdea9c6dcfbebafdd2c0477df04ca20fc27fb8,2019-04-22T13:39:06+03:00,0,0,145,0,0,0,0 +1a861308ba62c0ed7151de2ef177e9c4be9159f7,2019-04-22T11:51:31+03:00,0,0,145,0,0,0,0 +9c07ef14b5494720b850b4bd060d1deb088a95f6,2019-04-20T14:12:01+03:00,0,0,137,0,0,0,0 +6f0c52b7dbd8108638eeb7adc47736e1ed5d7649,2019-04-20T14:07:42+03:00,0,0,135,0,0,0,0 +5ce2dcd9fa929d3732230eac379073182eb56507,2019-04-18T18:24:31+03:00,0,0,134,0,0,0,0 +4bee614548d574c27202d7ed03895317e73df765,2019-04-17T23:07:21+03:00,0,0,132,0,0,0,0 +bed50d44db96ce0784539f4e7cd35c755e19bde8,2019-04-14T14:02:12+03:00,0,0,104,0,0,0,0 +aa45f576d4c2fbbb878af041495f7ee72781f49f,2019-04-12T23:42:06+03:00,0,0,99,0,0,0,0 +4d7fa920a40fdf3064fc71d16830cd6a4de046c4,2019-04-12T18:24:23+03:00,0,0,91,0,0,0,0 +1ff1714599ddf2c41e0ab75562be495e55bb35e2,2019-04-09T12:47:05+03:00,0,0,91,0,0,0,0 +f396584f72311246c3b52ed68d778745df5aea90,2019-04-03T10:36:35+03:00,0,0,91,0,0,0,0 +fa57d73f3597407223ff205439cfe84f338ec3bc,2019-04-02T17:52:05+03:00,0,0,91,0,0,0,0 +e4cc35e62e20104fec2dcdc1220de7ab1980cc3f,2019-03-31T20:06:29+03:00,0,0,62,0,0,0,0 +5044283019dc34c95d2836485ed492b34f49230e,2019-03-31T13:52:50+03:00,0,0,62,0,0,0,0 diff --git a/static/data/2023-03-13-emacs/roam-stats.csv b/static/data/2023-03-13-emacs/roam-stats.csv new file mode 100644 index 0000000..efb4e79 --- /dev/null +++ b/static/data/2023-03-13-emacs/roam-stats.csv @@ -0,0 +1,599 @@ +commit,date,nodes +7d2146ba5d0657b73eb68423727bea25311131d8,2023-04-10,782 +587b56bc6e9daf00cae2e6e68611a02480272349,2023-04-09,767 +fcc7be872eae173fced04193293b409687fdf348,2023-04-08,766 +d321c16721b6931a3d4e3964efaa6524b04f1740,2023-04-07,766 +5191644d9f54d51e74cd2a41e7293af1f369e525,2023-04-06,766 +9038b9dd39b98832cbdcf988a5bc1b84b23d9ae7,2023-04-05,766 +c313be402a76ab0908f6ebe0c0f4046ee2bf39cb,2023-04-04,761 +626c90f5262ecfbaa0bbb9c1fce15d7cdbfacdb5,2023-04-03,758 +63bbe29b3fb505aeb6165dd3024f911ef5dc21af,2023-04-02,758 +3b4a5cedeb9c3532b3032a5ae71142997dcf03c8,2023-04-01,755 +7ae3d9e9d1601efc1a936dc3dce05b08d769acbf,2023-03-31,755 +7331740d20329f50dc32278b4193f6b1c44c1d1f,2023-03-30,755 +d820d5e1107f1cbaf62e364d7220ae8c49e972fe,2023-03-29,755 +c1904342faac1cc033f9dbc31ebb3a17de43401a,2023-03-28,752 +ce1e015ef924afcabc7fedca6526269e6deb8739,2023-03-27,748 +996a6d4faff65a1e0c0a9feb4fe90a597e21b401,2023-03-26,744 +bdbd06b53e60270dc36c23df3adff5149a79f311,2023-03-25,728 +ddc0d3a57c7ec11a41142816b290c7d29420497b,2023-03-24,720 +8649b00592142da7b23f2a435586e9b693a33cce,2023-03-23,649 +611fd512295b30ea9a020ebe006335b099bc493f,2023-03-22,649 +0dc1e8f555b83e5bf66b9e55973b613a8a46e324,2023-03-21,644 +e13ec465361575256d7b2411ca1731ddb5113c86,2023-03-20,640 +7c709caebe1853cec9576410d04c1f97b8e90439,2023-03-19,640 +38d4421a645ccd0b0e67754678760af20646c58f,2023-03-18,640 +6a224aa648ecb0f2daf3a3cef1efd028e2b1a113,2023-03-17,640 +1a71c0b1f5cf1c0c7d9c63aaf1524386b1f6b922,2023-03-16,640 +3c5da73fd9cb2e58b4a423a8fcca9f562b1a7d2e,2023-03-15,640 +53c5b9810d66ce574fa0ba30422c2804910d2696,2023-03-14,640 +3816308a83090e0d14d48b8947bc3fb38d7e539a,2023-03-13,638 +02c8120a41f6eec194605e3c406117430c09de12,2023-03-12,638 +9eae91861501ec17c98d240dd39e079185898092,2023-03-11,635 +2cfd7cafb24bd91f6d4b0e6494177296d889f0aa,2023-03-10,635 +0dd579bedd9a5a5ea5c857f5937021052789c32d,2023-03-09,635 +6a960b83dc4aa61be58ac684055b72b5c6a898b6,2023-03-08,635 +96577929fe5c9984645c6e4a2b8ffadeec6203f3,2023-03-07,635 +0d1233ad24f80567f16fe68c47ec925de9f503bc,2023-03-06,635 +2bf72e7564e873c22e7319114a4312f7443f825d,2023-03-05,635 +ece45ab57d1d8573bd768a426ca0552155acbea0,2023-03-04,635 +c21e4bbf4ea16d124a8fd301b43ac91d1e1118fb,2023-03-03,635 +5dce76e69141c9b9b844da2101bd84162b7f83bf,2023-03-02,635 +71f0c44a73c495691d183de652fc4eeec68be48f,2023-03-01,634 +54082f6b8b87171bf01ffa349aea627c98ecd7e9,2023-02-28,634 +24155e199711dc1bfb03c632a8b3612a3688d6ec,2023-02-27,634 +10b626d45bd028ebd1744a99e773c9c93af630f2,2023-02-26,634 +bd45afb6a2450810732527187b859c23d20d3490,2023-02-25,625 +abb95acc6c90c773c3e9e06b2f94141be7e59433,2023-02-24,622 +e19679b51fdffc379c2aebe0bd80434e926a22ae,2023-02-23,622 +735b9ac1360451f4fad4f8bf017191960ee632db,2023-02-22,614 +f417f6fb5e7bc951c53b6658ca683eb4505bc781,2023-02-21,614 +4147dff4d5420826d2528b501ea96b789e160fe2,2023-02-20,614 +4146b1fa835bef59d2fe3ded09967f7004fc2608,2023-02-19,614 +e7915bad596085c381300c70dce5782633e0b72f,2023-02-18,611 +45d989f9fee9d45ee8600c1caf5d0546e05f58e9,2023-02-17,611 +67e4b48386053c036ef4bbe2a1beed0063e32d0e,2023-02-16,611 +a6cc6a82eef96a02861132a3f44913447e5fdab8,2023-02-15,611 +ace67c9d64efaba295eb5fee3969a805c52fa287,2023-02-14,611 +43a6a3a93e0b10c1644e8cc040c621f3924661a7,2023-02-13,611 +94dd819a281752a78aa92db018979dcd732f4f04,2023-02-12,611 +83cac83f6a9198a058b569c088ff5784b4a352db,2023-02-11,576 +b754ccdd7c603b8cacfa8edf83d45fff8758d456,2023-02-10,576 +03542592d57716e484f732f4a8f676dd941e6905,2023-02-09,576 +e87b4a6de153f32750240db68b020ea090d39ab9,2023-02-08,576 +063d0d26c92b99762cc9c1d8ff106c86df952a16,2023-02-07,575 +983bbb45af6142b4722505213ab5fd5a027468fb,2023-02-06,575 +f4363df6483f7e3177d1bec57773183508a832c4,2023-02-05,575 +0963686ca01479bee659416acf5320fdb2044e22,2023-02-04,574 +1c66246a44c7a60368bb9f8c5a67e3e932a745c0,2023-02-03,572 +a11387d4ed83d8833327b6c96a602f3dfb1f9708,2023-02-02,572 +beabc4253b3f1fccb600e9f61809de988d8ec58c,2023-02-01,572 +febe7bbde32ad8663525639efce506cbc8c45c3c,2023-01-31,572 +e76082b09b229e6259c929008225a11854a86ccf,2023-01-30,572 +a0481ebde5404f6aa3e753804f1f12474203c6e5,2023-01-29,571 +c39a78dcad99541598427a5656f78d78e78c7a1a,2023-01-28,571 +11b3d023561940c3da8a4e8208c56e16f13d6295,2023-01-27,571 +d90e0786d630e19e50118b0bc08dd1feac349338,2023-01-26,571 +36a42a99798d4a7ed4d42ea2296e3f0c5478a665,2023-01-25,571 +f6b3a7f0a0d9acb00d2e00130a980d0a00a03778,2023-01-24,571 +0b91db129dd827e7e80f2bbf59cccfbba19ee9fc,2023-01-23,571 +328c6daedd5f56c56ac0e662ed52d85b5ca78475,2023-01-22,571 +42f74c81d1c13947f01122a8b0278de4668d26e1,2023-01-21,571 +5b6750af58bdd7f3f97b984ba6a912dd583756c0,2023-01-20,571 +10ecd58c1c7da8d0b7a56305ce495e8e89db78dd,2023-01-19,571 +ec8dc2d671aec39acd3876b9f34dede563e33019,2023-01-18,571 +15f82de47dbdd1405f0af7e37c86dc24f885b5f7,2023-01-17,571 +3b6c956eb739f7961374c7496a81a445509696db,2023-01-16,571 +a2750287138c69f6153216a6001c013c13608dff,2023-01-15,571 +09da5b749b67369afd1957df7b22810620b4a8fd,2023-01-14,571 +42c1bd3838d5b636dd412d3f02d2d88b3232e7df,2023-01-13,570 +802812876d58c7ec669370acdab3cad940d59cbd,2023-01-12,570 +ee7118f5ba67c4ccb68d0d28c7534b83d5a1653b,2023-01-11,570 +73ebf5a1a39847a338fa6fd36d4a56f36ed89a74,2023-01-10,560 +71a6615b379992253501b19cce5b7a07611abf3e,2023-01-09,554 +7d8b0f93ea6ce549a6be9c69f055d714874e7440,2023-01-08,554 +5090a8249579b05fdfb38766f90741bbaebc1772,2023-01-07,554 +8ff01228477f77bfe049e731745490a5422f6bf8,2023-01-06,554 +ebf41880422e90b1e2af43d56d7661c1710d1edb,2023-01-05,546 +d701d6634ff643a9bb53820a2a0428e75f02c0e4,2023-01-04,546 +c41c1aa5945bf7a31a674ab3e666f63ee4d3e510,2023-01-03,546 +c9a7619d65e9435dc754ca57cf45c4f5b9e72fed,2023-01-02,492 +1b6ce52785b2839e5bae4dde1f997196a29f691f,2023-01-01,491 +b85cbb2b42f8ef2c6a21933fe0de711c7b2ab548,2022-12-31,491 +9c2d0adfc4773ab5bb2ad80be53ee2a52f776891,2022-12-30,491 +f7d5fa85e4d8fb2325d0f5240486ae6fed035d46,2022-12-29,491 +c1a2b14b471f5aa2057f996945f16cab0554b698,2022-12-28,491 +541e6d8012cde71123f582cdf317d5008205ce7a,2022-12-27,491 +d48bad04cd0de72cb52a7f3c95c4dbd9d0da9910,2022-12-25,491 +6b020eb46d9bbea33322f50b286ea734848020c5,2022-12-23,491 +54ce903b18bbf11018b87c05efb7ef9c8e4bb5a3,2022-12-22,491 +96d74247dd09871653ff6ebd9e39fd51668e0abc,2022-12-21,491 +716d7f904aea55d1f188510fec9a368641ed3682,2022-12-20,491 +95021c6f8531a9d3ec5ed2eb7cad452d8973e5f4,2022-12-19,481 +93f4d63413a4bd9abadce61df3af3d7c33a43150,2022-12-18,481 +0e565a9cb37141a8d111855b2a6a739da33dd7f2,2022-12-17,481 +9e9e4ed1cc6d6ce2aeedcf46b6e8218efada0a5b,2022-12-16,481 +75e9b54e1d32fcba951fa266ec2b10a7f75a0c22,2022-12-15,481 +df2482018d82ae6168bc5b0aaad7b23d12a2b652,2022-12-14,481 +04c7c1f2cfff75a053861b9047f60b5b512d1499,2022-12-13,481 +04a95cdb55d6e947f692c929b255f83ac618f2c6,2022-12-12,481 +0ca716683af7d0e43ad940e70a4eb51b90e7da38,2022-12-11,481 +d1cd3d313bafa3e39a8791d5aad1380f400e182b,2022-12-10,481 +94a1e2b91b0546eed6841ed10400a9435b2b1e0f,2022-12-09,474 +20f6585a0134efa2fdbf9cac258ede54b36cdfd7,2022-12-07,474 +f7beec5edb2ddd7620ac83de2b38f183d0b3a05e,2022-12-06,474 +daf12421d3656b508dd09f51906cf99b94546787,2022-12-05,474 +f5d5f4af8f5366e421b086912f697f16c826f88c,2022-12-04,458 +5554b9bb0d537aad38b9ad034104e94bccc11aac,2022-12-02,458 +557b474d2123100f1c7346a0a8335b4e41b0e80d,2022-12-01,458 +2dea686b87e1d88aac1aa32a3549ec94e1952e60,2022-11-30,433 +92ccda71e56707ad4fa43086f930b989c729efc4,2022-11-29,433 +48fdb394dc54f174e379374481fddea370a6978d,2022-11-28,433 +5a524ea021438e364b8a0b2a0b0dd0d9b207e60f,2022-11-27,433 +517f4df898b80febbe134ad54fac4752d7e19bb5,2022-11-26,433 +1cbdfb0c3adbfbdeaeb1298f1fcd3025c1db16a6,2022-11-25,423 +218034df9d72faf7b6ba68009ef8d41ca96d1989,2022-11-24,420 +5aebea4c597c3f3f2e8d2e7d4b76e450d1ddfe5b,2022-11-23,410 +a2e11724e8640ace7c085674e86d87f073d8ea05,2022-11-22,410 +ef0646a9be637daf65ac4db908eb96696f3894bf,2022-11-21,410 +16e80a12ce7a040de4d6e97efb8fdcde054280b2,2022-11-20,410 +8fc56a6be3af76d9fc273c90661a8165cb03a467,2022-11-19,410 +0503fe3685c68bd8191f8e35cbeb84e42ff8c831,2022-11-18,410 +944cbfa346d760b940dc8166c2a014afe4335d83,2022-11-17,410 +f697e4dc8dc83d9d583855167c8a126bc5c77d51,2022-11-16,410 +51a964210d1117a3372f9a3c2e7d2289afa3fd6d,2022-11-15,409 +1474187381cee1fe56f49b0236fbda9eb9ae352f,2022-11-14,409 +5b135e6083ab66b7c6fac06d5be44c87fb0a39b6,2022-11-13,400 +52b33e419c8034f2cdb49141fecd260163350a44,2022-11-12,398 +65ad217fe94b2274c47fa550c227a4fedb3e4407,2022-11-11,384 +2a23bed5749ce5e6fd69b873453c8530f4ce22f3,2022-11-10,384 +835a9bfa53f9180603096b82ea490a29a1b02fb4,2022-11-09,384 +539ee51b2c38688d4e94cc1e05aa140892ad2269,2022-11-08,384 +f270ef9dfe1e976cd27b9f020a9432d50c8c10cc,2022-11-07,384 +a093b45b7f318627354245b260e0dbea0e4e603e,2022-11-06,382 +8384c240655f20fe382ad5348662d87a70e2595e,2022-11-05,381 +60ea76995d1dfd96c72513954367fa7608acf7aa,2022-11-04,381 +67cbc40ee38091338bde12b9054786fcc038ffbe,2022-11-03,377 +06ff91651d6509bca253f5cc9c307193eb89bcb0,2022-11-02,377 +3db312af50fdb550bf6b14b87dc2b9724b9bd835,2022-11-01,377 +b3360a6da4b8b3f652e4aabefcf95843deb16912,2022-10-31,371 +8829c16b02f25e3f5b1c963075d29c6d69709f41,2022-10-30,371 +01185d0e3bf22db294ca75b2f63f9077f5ec77ba,2022-10-29,368 +3449d24a3e83b5bf5a2ec43cfaa861e55a3c8f72,2022-10-28,368 +93a3763e89fde8b341650834b5ab43356144c93e,2022-10-27,361 +983c6c1d0896a23c2294597aa46d95bbbe184d49,2022-10-26,361 +2c3d5410d8b12551211e36663569a085d108f34f,2022-10-25,361 +b644033ec7d0d967cce48681236d1120274f5705,2022-10-24,346 +1fd3205c62626ce368b8e197d03a38c4439607d0,2022-10-23,346 +810a15ed945daa96fd82655ed6584ec0331fab53,2022-10-22,331 +f2854af27ad1b4aa648565b20254a0e0536792d9,2022-10-21,331 +caade03be3adf65267e05aacb4839783936e5740,2022-10-20,322 +2347b8fba3d77d0074a8f03ff7d0e91497189722,2022-10-19,322 +205e4b150765b564e4cda9dff226e30cf965c742,2022-10-18,322 +c37102a49aedab3616165cd43424ddc2cea54437,2022-10-17,316 +49ce7bc2b1e6c33da16cf6b15cdeaffdc9bd549e,2022-10-16,316 +4dca5339bf43f60f5b7708b08074780d4f97337f,2022-10-15,311 +e23cecc3ecd6815a010ece192410b3234c584b6b,2022-10-14,311 +3d3d2ebd3b93462bfe2a7324f00774f5b9477d32,2022-10-13,301 +a6dca2f508264cbbf598bde6daac966c819e6f79,2022-10-12,301 +6cfa6b1fd0bd980d96aa49ce36fd434b85537c18,2022-10-11,301 +2f17f60037e2e23c6f08739506d443c95380dd9b,2022-10-10,301 +7c772b75f09c4575de915d2431c3b7bcd9b663fc,2022-10-09,301 +3a2c43e2b8b7648081813f6f719f877082c09e0a,2022-10-08,298 +f05273468f0f539267da93d91b34aae74b9e7621,2022-10-07,293 +418e10308d2e664c774d9b90b7eeb11c9923a02c,2022-10-06,293 +538e08eebd770b0a98e3ae7beec652af21a22c2d,2022-10-05,293 +93e73f373c5515725f2bc90fb94485be7d5acc78,2022-10-03,292 +a6a09e09d8892c4d9b2079744e08b836617d6fef,2022-10-02,290 +085e857f6abac4864079793a83866d90e77b17dc,2022-10-01,290 +fbcc03448e817337602a7236c1f19b039675a387,2022-09-30,290 +2785c689baa1698d1849082fb400be692cf5d5d7,2022-09-29,290 +162cdec1af7121e6bb0eafbf6bfd588bf615af97,2022-09-27,290 +7087c29251339e8aa3ba8fdfb69c7dbdc05f3b4d,2022-09-26,290 +7129ad92cfe5f1af675a3731ddc55bf8d036afd2,2022-09-25,288 +fb30f3a595b8e7136d864c72e8ebc56fd02f4065,2022-09-24,288 +0c3fb94fbcfb0e8b99dd63cc4c4db21e751a900a,2022-09-23,287 +9a2f831bdf100eb12a248d80ae1aa1c236f017af,2022-09-22,287 +07ccb94805c5c4dc8660b3297cbaf7a9f75ea196,2022-09-21,287 +325a02d02a0a2154c3692b821f68134db3e98011,2022-09-20,287 +73dd8430ae7e183f75e396f8ac3900739d11eeae,2022-09-19,285 +ac461b2e16c3ad14737d27b92c137f21776a03eb,2022-09-18,285 +4a7969820fe38062a1d796b8f8e036cb305a9e9e,2022-09-17,285 +101c9a0320550459cebde75fa8ca0782af9434f1,2022-09-16,283 +7cef09035cdc9aa27e03944df8df8fb6a1faa78b,2022-09-15,275 +44cea8eb1557bb36c92ec42500ccee1d55d88553,2022-09-14,275 +72fd1098d6da914b3131b7139b2a3574fabf0c94,2022-09-13,275 +6ab2ef94c8b39671e4bd5f0c1d46b204a8fd7fc9,2022-09-12,275 +d1fab225bd3964ab676a9c2126d925023942d3a6,2022-09-11,274 +119643ba2a4a007bd81ede293155e42eeebed646,2022-09-10,265 +48cafa8a2be437190cdf32b3adbe95a05a6c8f0e,2022-09-09,255 +38774fdaa3a2aca08738f39a24d69ba07dbf9e7a,2022-09-08,253 +43c656ddd5b4915718d78a623e1bc5c70e9fa286,2022-09-07,253 +a0c76ff22985c24ed39cefce1ac4e24f184b3878,2022-09-06,248 +8fe45cde534e57f8d2760936290f9cf34faaa9ce,2022-09-05,248 +d4b3b61376388b60a28e8507979699aedb2a9459,2022-09-04,245 +e52b6077be9afb11c95db553b2e8d6dfb0a56280,2022-09-03,244 +d8ee0e721379e621850321983fe58207938827e7,2022-09-02,233 +f343a3681659834916fc33ddf6b20e6beadc7fc0,2022-09-01,231 +841ce0c5e1ed273dfdd9017fd63902869f09f4fa,2022-08-31,231 +3c0ebef568c9ae7d3d1888b4106f0dc30ee09887,2022-08-30,212 +efa9ee4d116dc7ec4a29e16e9fed5b3cb3634252,2022-08-29,211 +2b080b832aecad6a1f5fbc89a0bccd2ff9aa1747,2022-08-28,208 +2f123edbf2525ba67361ecb0dd7510e4229808d2,2022-08-27,207 +d19c64ac096eb4495563346bcc445df465d613ec,2022-08-26,201 +8b40de811b668f8de97092da780ef402089f0079,2022-08-25,193 +a0529c2f1443f3d75990aa8e7a82d4bea22d7792,2022-08-24,193 +0d3236702288028eaf9fb0403ef4e486355f301f,2022-08-23,188 +1d32f3aad237d80a0c2171215a159e18a77d1e9e,2022-08-22,188 +26bee1cdf63cd5ec8eeee76ca0f0fc3ae823efa6,2022-08-21,183 +aa7a1eedbc6c414498e5489ee84474c17314134c,2022-08-20,183 +cf5f67c0fb14bc47666cabd10341851d114b8b19,2022-08-19,182 +d738dab01fc2d396004645093749e448ebdf4f9d,2022-08-18,179 +8e2858516d066263015cd3fe494bf4dcfec7cea8,2022-08-17,175 +2c597253b0168a6161cd77dd0ae17ec12b76caf4,2022-08-16,172 +b9f0e34aa96eb4797472dbdeba0d91e1135851ef,2022-08-15,172 +cbb8c34d3e29b6c0681ab51698c2ed67c0889f8a,2022-08-14,158 +107382aa8536339ae288a4103359755c0e760960,2022-08-13,158 +f82394576103d47d8485bdf871af1faf93ade795,2022-08-12,155 +988ebdf89f6f135997223beb1982060d87374fff,2022-08-11,117 +86b8aa54a40e7d92cbfab844295dbf49c6812ac2,2022-08-10,117 +e7ab61d234fbcfb942f62e7270218119ec68f3c1,2022-08-09,103 +bcc9f88ca12bd8a081154c062e648ca1b7f77abc,2022-08-08,99 +48611bde1d7dc11a6b2fb7982928b0c4ca0f35b2,2022-08-07,92 +e661b776c8d90e1ff61179392172026be40effa4,2022-08-06,92 +362d2e5af651d33ebc05d6c0b1b11d106de816df,2022-08-05,92 +ac7610faff813ef5173dce2b101d88d1fba3834b,2022-08-04,92 +47c00deef8ab63d42fa1f8a7668c86c4b21d6ea2,2022-08-03,92 +4243f108eb56bcd4b957235dfdfa742c05b68c03,2022-08-02,92 +0a2490c29de09ba73babe75f93a4ea8de63ef134,2022-08-01,92 +4729118405c64c84e2af01d3daa808d44093bfb0,2022-07-31,92 +7928338bbc652e5f81b2f0b7c46b4457be83832a,2022-07-30,92 +2b9346a2de7689fe72bd10afae8a8c07693875a4,2022-07-29,92 +6c7893fffca014c4d9c27e7875896dbf9da756ba,2022-07-28,92 +c753a9083e7d72cb74c376b8666db6da895f929c,2022-07-27,92 +0d36226b85ee9cbbf3a5d5233877976d2d8aeb92,2022-07-26,92 +add0b492b4f7c92c1cdf619f9b87111bc675559b,2022-07-25,92 +655f8d79f63323d85901f8927fe33253c5f26e71,2022-07-24,92 +f31cb791a15f775e605e3c65b2f3db7f8af6166d,2022-07-23,92 +044dd4b4677341a7ea66d91bcbc67c98588f5c9f,2022-07-22,92 +603e308fe8dd8959855ff77f92648114040e267d,2022-07-20,92 +286e81411aac76343d090da080e653c5bbb43cdc,2022-07-19,92 +0a79b4b58eeabdbe564f64e4a9f200da91593850,2022-07-18,92 +2fdad183d485d94aab5ac9b60d9c948b73285b76,2022-07-17,92 +eee585a505ae9020a78efb1d5391d2539da931eb,2022-07-15,92 +50a7f01308241ed7ed161ebdc6f45417ae32474f,2022-07-14,92 +1f109765f709a3e64dafa72b35777a6dab0ddb25,2022-07-13,92 +4899aee5e52feba57917365917332ab805cd857d,2022-07-12,92 +1a397e5b1ab95ddbe3f9ad2c417bdf7cebb0e0d8,2022-07-11,92 +da15c955ea857d36cad5d4b0f0376f64c1174b79,2022-07-10,92 +6f6de53aa6882109f7aece8af3f782d6c5b4d2d9,2022-07-09,92 +bf19671c1ad2796bb0bccf792e86024b7be499f7,2022-07-08,92 +44f0273dda80594bb2c0013edded9ec7b4c820dc,2022-07-07,92 +c051ca84f94b3d9f74d746e50f69bda71cd75705,2022-07-06,92 +5671a906fb057c7190a5f1d0b30d521cf3ae4bc5,2022-07-05,92 +1cc1ad4cc1e8697edefeffa18bcde175a2da2946,2022-07-04,92 +9ff0d25b1f971ca6b17ca5cc1ebdf47fec3903cb,2022-07-03,92 +dd62eddac517989169fafbf4d8bcb962c13e90cb,2022-07-02,92 +2c5f24ef890fbf8e41657f9ea6dc4f193066d01f,2022-07-01,92 +088adf6e18cea941219fd043a8e375e6b065a164,2022-06-30,92 +7e89bea327abdab506bb31649da75fcc7ce2e168,2022-06-29,92 +92d9f6511449ef59e7b8dc646b66e8401c96b474,2022-06-28,92 +f11213a2e98eef02965cd2fd2cf9e1932191e738,2022-06-27,92 +dc2d74f3d23f7208778b6dda20cc24a0e1712710,2022-06-26,92 +abbb0d386cfed405f58898904e00c67ce546df39,2022-06-25,92 +2a4aa0073854aebafab2e158325e4bebfc43f5d2,2022-06-23,92 +b1ee32e34df73d95f7e73adb24546a5d49e939e3,2022-06-22,92 +0bb4b7d8475efee404b1129122d42eef793b6df2,2022-06-21,92 +cfc638ceb21d456d385e290d26ac242591d5794e,2022-06-20,92 +2d9998b4788b85422806ae3032cb1c85861cd821,2022-06-18,92 +913d6a715289481bb749ce90ddcf322094e91f92,2022-06-17,92 +44ee273cfae97cd7008acdc513e08a557407b327,2022-06-16,92 +d315afb20be4acd8708c57eef7403f1afad2dcdd,2022-06-15,92 +f8ebbd134f17f5126ada65b90ac736c26f4bf6d5,2022-06-14,92 +d9a5a0f71ddec2c43266820677eb59f223ac9e01,2022-06-13,92 +253c9b6ae48d7f05c292a031b56a5b5527674db2,2022-06-11,92 +bb0a3e30c1b096d0424a93e7fd936ac2f35d76a4,2022-06-09,92 +2efb84b8f1929f0e2f89111afc4a65ee95b6827d,2022-06-08,92 +46f4d6c5312626bd3d720f3cd0895d84e3c02973,2022-06-06,92 +b4defeba3fc8e55505dee196c8f231e2026e1513,2022-06-04,92 +59ccfaaf2c16c825aaf0e0e11d9915d4854349dd,2022-06-02,92 +dd8a3dbf7f83ff8e2a6581eebbbf204cf0d7ab95,2022-06-01,92 +75b697fea4e313fb00160bf3bb0f52a272f8c24c,2022-05-31,92 +aae4141419b9520cd437de78a9ea96c68f305311,2022-05-30,92 +cd802bda7ad54481c6dda4ce708904cd4cf55b2f,2022-05-29,92 +7c6f0526c130086295fa83cfd356678ede65fd2e,2022-05-27,92 +7ff5a58fcc48cdbb83b5b13d62f06a3a508c0d78,2022-05-26,92 +5c846893c71f053e75d911e161f7b301c323172a,2022-05-25,92 +ee5fd72dae70118a22d753c0faa8016d87b03317,2022-05-24,92 +af12245bc084220ae45e5e3f60e8bbd45751aa63,2022-05-23,92 +30b7f93b0662f21cfbba349ca63ea3fd75f080a2,2022-05-22,92 +61a2e31ed6989024d1c3c9a71357e7c4f4b0ec58,2022-05-21,92 +649872bfa2b8c6ad26c881faf961f1488311a73d,2022-05-20,92 +5e352e47e9ee871b9861ecbcccc3dd387fa31bc9,2022-05-19,92 +336084ba84809a7eacadb24950dff28eaa6e03c8,2022-05-17,92 +318f0457829c84d5d4d05c806aa60280d27b2e60,2022-05-15,92 +f0e925fb1dd6ab08d4eb24ccbdfc23084ebbcc3c,2022-05-13,92 +f869e0ba8501c1caf4756c575b4f09add28aea56,2022-05-11,92 +24363782e0386258ff2499ebe0029eadd59f96a3,2022-05-10,92 +b7fb215304313fef3890060d1327f8cb46187dbd,2022-05-09,92 +a40aab0a48a08f6f5e25e34ae22f5a2e71b10b73,2022-05-08,92 +b8a52dbffc87faeec082136d42fb8c248f2bea77,2022-05-07,92 +0b792ab0e143a038529a2a03a077c14e9d09862b,2022-05-06,92 +fc00023be58fe15b093170a21a72aba5cb23be1f,2022-05-05,92 +bf5fcc72b99b01b02f13ba93227b1121a238a5dd,2022-05-04,92 +23acc274c96758fecabaee9dacac9357fcad43e8,2022-05-03,92 +d09965bd19a8932f931fbd27905b8178e85ddb23,2022-05-02,92 +a608c27e689ffd1364f1c4301c98c2b29a85cb0f,2022-05-01,92 +87c7626b66b0284a0fbe8c509f88abc7c8099293,2022-04-30,92 +481901b71dbaeeb90449a4b4ad1e0bfb3dc67c5d,2022-04-29,92 +5b4fbda3d12c7194d2048ebdef0cee51b0b311a1,2022-04-27,92 +4c85e9dcc269b3bda2b52ea992d07c1fcb5da3e1,2022-04-26,92 +03c24ded21651d691b1896d07ac2fecca1767495,2022-04-25,92 +f5580b30dc9fc1c7361c4f7a73fe5fc8d23759ab,2022-04-24,92 +a5a110a2604365e8f7259234bb0cdb5a1d2ed7df,2022-04-23,92 +2c74dbd0c19d2ece9c6f1fdfeef9071c7d72169c,2022-04-21,92 +1b703639b02d0dad31f511f23aa1eb6158873eec,2022-04-20,92 +c47115c44ff79ec92de273f8f58bb19ad75d1ac9,2022-04-19,92 +23461caf0f9306fcf0adadc28f0090ddf90ee919,2022-04-18,92 +8e98496d4e9915fc037f32fa29f8d9f6e1666992,2022-04-17,92 +a5529ded1a2682fc0213dca4619a66659ad0161a,2022-04-16,92 +dfa2e91d716e1599b87636b99fe663896d803ad4,2022-04-15,92 +c2cd81beb65a1234600955dfd3eaac59914553e6,2022-04-14,92 +03e25bf2b3a8e351f237bbf875afacecee828282,2022-04-13,92 +ffaa1ced8019fd4cab3d8c97703d00aaab908450,2022-04-12,92 +381ae3ae289fec7fade76a748a50506edf076a31,2022-04-11,92 +ff817038bae9e090de862f002e7c5d403d714361,2022-04-10,92 +affb7ef33b540dc8300fdab3e18bc70f22939a1e,2022-04-09,92 +9aa74d9e445d30f9456bf7f8f3aea938c12c3154,2022-04-08,92 +dbd610d1d8fd9d691c965a27703aac11a91e1cab,2022-04-07,92 +a5833324e45ddc21657cf6451e2e89af58451638,2022-04-06,92 +64bdbc893d103f7d869d953d9b14d0b0b542ae72,2022-04-05,92 +318b529356982864e270f97632755851374077fa,2022-04-04,92 +069c9b402a8a802fa1e5b056a1c8906d8bf0b965,2022-04-03,92 +9a368ab393f7027457a2cbbbccc1d61c825844f7,2022-04-02,92 +8336511a8d7a5b36f34db54f0c5f3e44d3662049,2022-04-01,92 +8eb8f124397d6f27a9c01ab8a702ed5750d00910,2022-03-30,92 +ec1f634978849669012c7aedcd03c96287002a9b,2022-03-29,92 +63d21980848db4b4c47d9e4cd70070f72c1642c9,2022-03-28,92 +98709c642dcbe1d8507fd7fb2b15d15da4d1a30d,2022-03-27,92 +af5e23d6cbe23ebed9c3242e35c5c2452981ff1f,2022-03-26,104 +08600794d788124d762c3129a50bf6f78b77d984,2022-03-25,104 +a2d8b6cb1bf24b231e661dfc62bf6e6f7af13294,2022-03-24,104 +bb8e0dcbcc88fef5b0850ca78989f9579b77bb60,2022-03-23,104 +4a1ce3559e8a780aa7d7ade87c501716a3f49c24,2022-03-22,104 +26d3ded0d633519c1208778b6203e8c3b7340791,2022-03-21,104 +faf630a54013ab0c7d38019622f38e1dab145c43,2022-03-20,104 +b12a789c977fc18fa77d674d044f42af00670174,2022-03-19,104 +9d972283f0b6aaffe72313ad793a46202a50d300,2022-03-18,104 +910000d4190a99537a6a4f72493ba243965eb414,2022-03-17,104 +ba4bd3340716821537aedbe54ef03a14ccba88ab,2022-03-16,104 +b766668dd162ea6bfbf696f722d29ebe5bfbfa11,2022-03-15,104 +818bbb89a76f2129ba26d067e561d6f1c19ba12a,2022-03-14,104 +361fcb01e2fed0587e033c7da6dfe0853e30921a,2022-03-13,104 +557a29f4ab54f6bc35074919f2b2b6426b745d0d,2022-03-12,104 +8d9db24ce820c0435021cf2203f885775eeddd5a,2022-03-11,104 +c678ffa46ca1158ae42dbd88294f56bd828c5837,2022-03-10,104 +48323c36d96fa35f8a08a65c8fae296c656984fe,2022-03-09,104 +8c83bb3087c1b569651baa21b45b853ac962c6e4,2022-03-08,104 +64f9f4fa7b12082512531719866965668d65d6ec,2022-03-07,104 +daea15b539438ea5369a7f98254c10951a22c7a9,2022-03-06,104 +db2fbe76bdd5699258099f82b08f9b3d353aa873,2022-03-05,104 +9e6bedf8caebd5246862e0da56fc1f21e1c479d5,2022-03-04,104 +fcc5624e213e10dc94be86c6030d5ea219fd8ae1,2022-03-03,104 +c85393b094bcdf5a82e334f456f356c356ebca1a,2022-03-02,104 +cdab7773199b5a00cf77180d4936afc9159a074c,2022-03-01,104 +340621c154e24d2f674ccea296791f2a2d00b660,2022-02-28,104 +92f1e36622d368f82fdcd42a457a373fe31cbacf,2022-02-27,104 +6c035edfe4181373875da6c4ce39fed4bf2e5be7,2022-02-26,104 +24929134d55e36fd757c90177f80ffdd0da800d7,2022-02-25,104 +b0ccc269628594828e193867eea7345f79730588,2022-02-24,104 +392a6c92394e4ffc6ee5129c7888225c15a68347,2022-02-23,104 +d60e4ccad6417ce2340d1c6bcda650158a09494b,2022-02-22,104 +a3237135c1ed5617a2bbaddd7e6bdfa93626d8f6,2022-02-21,104 +a22cf3def43405b9955d6858210982f25d56b0d1,2022-02-20,104 +8265f5b5f62a8b140e28195206bab3489074bd46,2022-02-19,104 +5af73e708b145f1eadb77880f128d26b9e7cd4c8,2022-02-18,104 +f85980512cb9a06dcb33d4ba2b45537efa728d06,2022-02-17,104 +7bf2fa58f6df083717c99f38c85ab7ee15a3f0fa,2022-02-16,104 +adda1eb482035036728c48672cddd2b8b11109e9,2022-02-15,104 +99877118258e9c18ddbd370461b92d6a46952d28,2022-02-14,104 +fd5c03cba5fadd2625ddee1ce5e4438f8aaa5a42,2022-02-13,104 +9369ecc9f56a3b08f38c2b8ab3f1c44917d4fe2e,2022-02-12,104 +89068e89c41419c39209ba263af217fb1dc91080,2022-02-11,104 +7758c681ed38139ac7157d5e3a9413bd8ecada5b,2022-02-10,104 +503797a245b77d82324ee4f81fe296633841efd1,2022-02-09,104 +f00a498886d6f81f7d3507ff635e778dda47cc92,2022-02-08,106 +7eff0cd5b2368c67ca25b86db71b6f00a7fe22ca,2022-02-07,104 +2e39274e93ea56ee08ae22d6e25cf2f0e732ae0b,2022-02-05,104 +a1f1ffc443d2ed7bcc02e62358e822c35f730217,2022-02-04,104 +54e91e0ee77af316d5879bea4bf08dcfd7ab15c0,2022-02-03,104 +96eda4198c8ab93c4ab2159b3e3d33b16d2c6d92,2022-02-02,104 +19d173da7b63272f45975218a47ed8b2083a6968,2022-02-01,104 +0018267b08633559b9390aa123b5db8412ec995e,2022-01-31,104 +d29e98cf96109d2131350d0456bfc93a988fe6aa,2022-01-30,104 +09bea5e7598345c9a8a9e57dbbdaf9a1446d0d99,2022-01-29,104 +ddddd3f57c48c4909e3433deaef089508e4d7a0f,2022-01-27,104 +3b38613adecd609f95897bf50cb87a838071eda2,2022-01-26,104 +6b49de990979707ebb6a5d10c20764cd57c7b52b,2022-01-25,104 +e0f45222e72bd580b349bbc176e92bb15d56416b,2022-01-24,104 +653756f69e56eec595411cd9d9f3c6ff8a3ad1ea,2022-01-23,104 +0643847c5c1527aba38f3d2cd1979c4eddf715ad,2022-01-22,104 +4017ba65ed2cf0c6b080fba4125b714f6acb5888,2022-01-21,104 +a24301e0fd06c1d91e986527d38957712d2d16a1,2022-01-20,104 +4e7df8c6b579e8cc2ef47ec98a6e288e95c27dbe,2022-01-19,103 +a9e0ce048ef859595fa7f6bbf08c031cd54f9531,2022-01-18,103 +16163f2beaffc011b378f3ec9674d0a7c6e1d132,2022-01-17,103 +2c1735b1282879fee2c2039074c8d0d173535887,2022-01-16,103 +220ee3c5f783b6624d2569bc447502b7efc490a1,2022-01-15,103 +284b200309fab58e293965aa5c9b60320035cbf0,2022-01-14,103 +2c132e6dabdce695f2189f27fa16a95ea3e7e5d1,2022-01-13,103 +0ba3aa89f5c7aa1012deac9b3f38f5dd425b8551,2022-01-12,103 +00308e161806a0a862f9fbe07d9bafc39f090929,2022-01-11,103 +12bcc35276d6fa58eee5f3dd0984f84adaa0fe15,2022-01-10,103 +749eec6aac3869952f6ac0cb44e561969d90242f,2022-01-09,103 +ea123c8c8e8a90fdc1410ea3239832874e3912d1,2022-01-08,103 +1a9cb863db07835c3aa54d6f1b66c33d9b5a72ec,2022-01-07,103 +6448fa6f9e8bd8487c5ea88717832c5662eb4c43,2022-01-06,103 +9c5e7ca89cd64e6e9a75468639aa80a321b92e3a,2022-01-05,103 +f87d12651c110a1abe2c2f5677e5037bb8cdfc43,2022-01-04,104 +a4b7b134fdeb53babc7c70807d77c529980a923e,2022-01-03,104 +c9d70b94855eff1bff7c24ded5dfba8da301af39,2022-01-02,104 +ebd591f39ed6fcf4e79bae8f0efa257b33c66333,2022-01-01,104 +64b6b5b18133cf70ff8ad3bddd590096a7a1ec7f,2021-12-31,104 +66bd5ebdae622761ac40569c7de16e842df4d3e6,2021-12-30,104 +634f3f627ca52654bde076932096a5ced040ee3d,2021-12-29,104 +e6a08f9e26f455b0a81aa0fa049f7a803a930b79,2021-12-28,104 +ef0c055ca0063842ca8700934d6a25f802cad367,2021-12-27,104 +ace56c83b3a642ac285bc7715e285bdafaf41c89,2021-12-26,104 +3a46acd81213ad2875355bb42514ca982fb2a181,2021-12-25,104 +17f5c67d3a69aa346b7301969407f05c5a410c7b,2021-12-24,104 +eace008d8beb01223a81e8af610ba9c583ec7918,2021-12-23,104 +86f86ce2559e33e55284851c8150c11c09d4dbe0,2021-12-22,104 +3bf7cd1d21d54de2b02245fc261c61e6c80d3752,2021-12-21,104 +1defc5dd7b702e330ff24d8d27de11ed177d1b53,2021-12-20,104 +8d76b4c76b43b955bed87cc15508bab29df9c427,2021-12-19,104 +8c0f141839cf964f7462a886a5825b0dd424ac30,2021-12-18,94 +bf5ba9836423e84cd806ca9374c4bc746a031b46,2021-12-16,94 +cc94c913f1f1df6b3800e6898e297b11803ed7e4,2021-12-15,93 +5158e4f0dffc6662e63e50b23ced6abfca8bf90a,2021-12-14,91 +ca8309dafe36042fb036f5891585de11e2edfc13,2021-12-13,91 +07474bc6b08d40c0848f7323bfb0f2496c52e48a,2021-12-12,91 +c595f8c0f4a233018a34cf938ea288aca388ea8d,2021-12-11,91 +665535214937c62040a3c6e05a6a24de6e11f670,2021-12-10,91 +0b4dc55f8909037088cd7748327f9b5054f73d4c,2021-12-09,91 +af575294d3ac814f2e46401259392eee3f450b32,2021-12-08,91 +2d11e4e624249edd57fba11beba6652664164a01,2021-12-07,91 +8f443b62910f595a4d2f2a5894faeeed6c7dd8ee,2021-12-06,91 +494d87eb5bc554ea4a7159fa1bade3186abacfa2,2021-12-05,91 +700464f4b4469d08ad3304ed11d0fab237ac3119,2021-12-04,91 +d025693d8b219892547e9591008263ac8302a28e,2021-12-03,91 +40da49ff88e93a08bd2883992576074acffb525d,2021-12-02,91 +6962346d9b0c2cc907f1cd7c488e2cfaa8a323ab,2021-12-01,91 +19e718178c0fb2e98bf443c5d78be9fe7c414296,2021-11-30,91 +f456cf7f5b1ab8fc05397ce3e90f68819073645f,2021-11-29,91 +31fcac5c6f29b97715ef9ad8824d851cccd39557,2021-11-28,91 +b37f05a3e69d4f615214bebe7e1b72d73d807689,2021-11-27,87 +89cda9c5a562a92eee43386b49b640a08b7ddc37,2021-11-26,86 +b80f7a3ff2026b627cb7df53dd69b31a77cf77c9,2021-11-25,86 +b9d6e3e6408097c81f592322a6715a0952d9006f,2021-11-24,86 +a313467b37e943c360ad02f439c431fa4ca78f5a,2021-11-22,81 +8024f901bbf97e35ea7e2e4eba3d97b19dbdbecf,2021-11-21,81 +dec614644b2cf0478300e3c4528ff245887854c3,2021-11-20,68 +0cb2b2248d280eccfe49a237366ece71d80332b2,2021-11-19,62 +cf38e75c24ff566c9fc20f84801565ba465aa8e2,2021-11-18,62 +2df8021174c2fe5dc7b03f939021473953f05fbd,2021-11-17,62 +8d5692fabc246d5b265d0a81c61292dd95ff053f,2021-11-16,62 +e2e88f803d73d6b18d883b5fbd8ef4c4da624997,2021-11-15,62 +de8e37fceee5add8a2e36143b58f39ac867868a0,2021-11-14,50 +2ff3a76ba8ce7052ba35f256b7f002ce3e43752b,2021-11-13,50 +986be47eda5447e31ee5b6489cc6dfe2bf4f18a3,2021-11-12,50 +e6b161a052c62a24537c9c5fdb7a39311ace3880,2021-11-11,50 +f315586bcb1c826c81fdf440c7c084d89547e773,2021-11-10,50 +6dd2580a4125df25b647755c85017e16e8f7f42e,2021-11-09,49 +596c67abb04d971a86bc0d6227f70ded7ebce60c,2021-11-08,49 +4a93363dbb7d634ccfb4322cb5d54676947aa146,2021-11-07,49 +5f24e04b17e6179bf0d0a5b0229aafbd878ca550,2021-11-06,39 +86fe8605410f9ce7f0c37499af8d4047165c1170,2021-11-05,28 +7797e0bba5cc933d14639876ed609be6420b13e7,2021-11-04,23 +18e6d5169b9f83769e6dc49a2b8937bf504b0576,2021-11-03,23 +c573f92853f6053650ac03335a16af931bbc4ba1,2021-11-02,23 +1d12ac108e4bc418999858e5d2f48f69d82bdef8,2021-11-01,22 +df19d1c72d461b41fa0087905fb82da9799ce318,2021-10-31,12 +3fb0a7630fba674415dcb35afd4eed4165e627ce,2021-10-30,16 +07da2e883248d8614eb030f71a774be0135ce784,2021-10-29,16 +22a37f7cf3eb35d1b7672016fb65f826940e367f,2021-10-28,16 +41c1210f0f4dcbc737c34fac8396e39552b58170,2021-10-27,16 +677620c5065a721ba6a16a0a2ad1bb6e5dc93a12,2021-10-26,16 +d3730f7df0292c2458eeaaa57cc449d22f7262be,2021-10-25,16 +04b2599cae62b46af26eabe8d5f5695565915052,2021-10-24,16 +767605772e70154bda85876b1519eb99b574fe9d,2021-10-23,16 +3bb09aff9cccd5bce37a599ac547a3c6b4c512b5,2021-10-22,16 +b27341b1984fb944eade211086c5f54388945c90,2021-10-20,16 +e11e155f42941b4e3d9738dc3cad4d3cd637b7f9,2021-10-19,16 +349bb0d18d4775db49c0d32cb4e82040e965c8ec,2021-10-18,16 +cfece9de32ec833adccaa7ddab807b3e3653d83b,2021-10-17,16 +a1b08c098d1d8febf49beba31fc3a454edbf40e5,2021-10-16,16 +715c994ea755d4fd92f95110c59b647f845d0539,2021-10-14,16 +9d1ffa7d012d873bf145aa45735b25e96fc17fae,2021-10-13,16 +b16a3fd2dc86163c9975bb504c980ed741c76b15,2021-10-11,16 +9af94490961fce3a83e93a7d0a92bd2ee4773210,2021-10-10,16 +4a57f6fdee3269394c4c4c060fa4aa3b611e262e,2021-10-09,16 +f8002dbb8e4fd8c74b72f00ac48472c84cfeb92a,2021-10-08,16 +ce19a3615b291cf28a669d7e1ed52db86d91e3d6,2021-10-07,16 +f931a9de82ae6e291c462ac76a7a6dadb3022738,2021-10-06,16 +40c65a331279ca4a2066d4dd746c898e0fc614d6,2021-10-04,16 +24ad29375cd273ac4b1b5d57673f1f30b8c07d0c,2021-10-02,16 +ecbe491ed50d27ade140a07014990b9a0269a064,2021-10-01,16 +bd94ccb1248138f34ac4f880a9d7a93904817756,2021-09-30,16 +7e9cdb83f83da7d3900664f1db73dbe8db7cf0cb,2021-09-29,16 +93de515166cb4a5d311d4a42753c7adc266cf288,2021-09-28,16 +6d10a037efa8b9f0ec19601140401f3f26f2445e,2021-09-27,16 +47b2729a646d4e7af3b2f8669ded71298ddc3b45,2021-09-26,16 +7368309795d81a1af6f9afbe108329fdb250156b,2021-09-25,16 +989261c6478348ba6beec21f61189b12f493105d,2021-09-24,16 +12dd7b5869435aad11002ffe11843adc2adac822,2021-09-23,16 +515444554ccc730e45078983327731a0d8ac553d,2021-09-22,16 +e61a2509eadfad2f2f499b88f1c1df63cce4120b,2021-09-21,16 +28418652709fa6abe9c3f7d096ac1c4baf49fe64,2021-09-19,16 +9f98839d1a60e8eee66aa34a51eff1f7e7009240,2021-09-18,16 +946eff61a46fb84f531588c9c75729f57fdcb15a,2021-09-17,14 +e3d8cf1bb3bdd0b48b8c65760b5c9cd6c96fc96e,2021-09-16,14 +7d68262892df9a9d6d24b2042ded7433b53c799b,2021-09-15,14 +149b1e1c0947af48fc3326718f1c511c34cac31b,2021-09-14,14 +6f9b5aa8c92d06e3120a71dbd22723b16e9869b9,2021-09-13,14 +81152599214ceaf6d40d6d683a7408480b47bad1,2021-09-12,14 +acb29080a5137a6ee38c7a6b3acf199391514131,2021-09-11,14 +2d20bdcea7083161fb9e88ca6f0ec0d9fd05aed5,2021-09-10,14 +014f8a7904402ef9ddf3ff28be744fc05771978e,2021-09-09,14 +b98c2cbf9373411b61cf2aeea18eb624919b7c5e,2021-09-08,14 +3263593f9eface7725e37d7f1916449d1aebafda,2021-09-07,14 +a5e76908b2c734df275366dfaa10464970222e42,2021-09-06,14 +abe95a378c55f5c6d00acb724812e0ab32e29cd6,2021-09-05,14 +1d6ecf3a8880a752a0fb3450644d84c8906ea06f,2021-09-03,14 +a3566d396f39e23f662c6a339abdfaf7ac99366c,2021-09-02,14 +3f10700e0c434b541708782c3c6d06f4569df889,2021-09-01,14 +fd8581b086bceba80ba0902ed38509b38b912a5f,2021-08-31,13 +78f55ca171e30423534539501865df425c063620,2021-08-30,13 +e47d52a7e95d6fd8b1b89149da67a94158b524cc,2021-08-29,13 +973c27d84bf30857547aa611985475b32df271d3,2021-08-28,13 +3a11199fea36c1a954b164039f39cd66ca2e1b25,2021-08-27,13 +9b6eea6569448c26940f755a5fdb42b52d253be2,2021-08-25,13 +5f58500187ef89038e88bbded8fbd6ac4ec665ce,2021-08-24,13 +d10ab7787ae0e20642f1915b458d0aa070421d83,2021-08-23,13 +d48cdeff341e926310b5b769845ef3427bfd3cbf,2021-08-22,13 +9b23d661ab7e2faf4348cae4fac92783aad7d3c9,2021-08-21,13 +416c719504ddcc5eaf631e1aef6c508e492c6edb,2021-08-20,13 +b2e4aeedf9def1dca92dc361528dc2e8d311ebab,2021-08-19,13 +4db5db006fad4c2edd6fe065622aac1f38acd8da,2021-08-18,13 +b14ad80d016dc334da9b9b39bac0cda4aced4ced,2021-08-17,13 +933cfffcb228706cca132e05a055f0dbd5d63b6c,2021-08-16,13 +ffef6749e73964a582aad380acb4055faf17ff13,2021-08-14,13 +a448f1d8a0b7cfbac92bc2c5007c0158c7eb7ab1,2021-08-13,12 +ed2067b34a126d68a65cdf99b9e8fd39fb412525,2021-08-12,12 +1e727bccf0a4f82e1b532b62491ce408a5e46612,2021-08-11,11 +e7d104e758da790607d92eb7b3ab3b9c1e99a28c,2021-08-10,11 +cfa7906d2f096a6ceacb0cf4e4187394ba26e687,2021-08-09,11 +df808f202ad3eeaffbf944c168c78f33fc6b5a58,2021-08-08,11 +4ce4148671d5fda665fe6d436ce4dfb31c0c0ddb,2021-08-07,8 +13c15048e8e49afc8e0dd1a8f76c24fed6b4b229,2021-08-06,8 +f8aa5e61a52079af81e4aedff34cbc5ad7f1a4f2,2021-08-05,8 +210f0f1e7e9cf0b4a37fa5d0ecb80ba46492edb2,2021-08-04,8 +4a452af8f0a4afd0c1e1957bf269ec40d41c3e06,2021-08-02,7 +a3e39d3b28a65828e862c300700eebddbe4ea2d7,2021-08-01,7 +a8a7061b9cd489dd3f291e5f92f9fc7c0af32d62,2021-07-31,7 +1701151827f67473067ff43450d11365095c9404,2021-07-30,5 +57aa39a3011216c72bea56e52d860e93b2b0054a,2021-07-29,4 +0d3f2cf312335cae4bfd4614750d602fb25d7c6d,2021-07-28,4 +4392d58b81f338ada9542668b42d97a4f76b8788,2021-07-27,4 +12400a485bdd947d69dbbdf8a389f214a685ba3c,2021-07-26,4 +feccc1d2cf05ad3e80b90d05be696152f8cdd974,2021-07-24,4 +60781f353f28dddb263e6ed876f21d11fec9305b,2021-07-23,4 +27699ee3c013372a7e3580c6109015e48f6844bb,2021-07-22,4 +8efc08a8df6748240c5ecc80fca02260bb340110,2021-07-21,4 +0f696eabaca269daac96d6c2e0624a3a3e31f43e,2021-07-20,4 +55e8ce91cbe8a326f64e71e50513b7b829aa1c3d,2021-07-19,3 +523b1d007bd5766d387d8d228f4cdb88c8fd0b1f,2021-07-18,3 +55dadc57d58e26cde19841d0c1ff83fdfbae1c54,2021-07-17,2 +2221e2dbe308a9eb3c7d3f8377b5b0a5f930361a,2021-07-16,1 +76db4cad3ff129753e6067013558cb5810cb7c45,2021-07-15,1 +1fbd90858dac580977409df66f439dfaeab8e1ba,2021-06-30,0 diff --git a/static/js/2023-04-13-emacs.js b/static/js/2023-04-13-emacs.js new file mode 100644 index 0000000..08fd1b3 --- /dev/null +++ b/static/js/2023-04-13-emacs.js @@ -0,0 +1,957 @@ +const TODAY = new Date("2023-04-14"); +const TODAY_LOCALE = TODAY.toLocaleDateString("en-GB"); + +const EMACS_ITEM = { + backgroundColor: "#8261bb", + borderColor: "black", + borderWidth: 0, + borderSkipped: false, + borderRadius: 0, + datalabels: { + color: "white", + }, +}; + +const COLORS = [ + "#77bceb", + "#ff6384", + "#73d9d9", + "#ff9f40", + "#ffcd56", + "#c9cbcf", +]; + +let i = 0; + +const EMACS_DATA = { + labels: [ + "Editor/IDE", + "File manager", + "Email", + "RSS", + "Passwords", + "Multimedia", + "WM", + "Messenger", + ], + datasets: [ + { + label: "Jupyter", + data: [ + { + name: "Editor/IDE", + span: [new Date("2018-10-24"), new Date("2021-04-01")], + }, + ], + yAxisID: "yAxis1", + }, + { + label: "NeoVim", + data: [ + { + name: "Editor/IDE", + span: [new Date("2019-03-30"), new Date("2020-10-12")], + }, + ], + yAxisID: "yAxis1", + }, + { + label: "DataGrip", + data: [ + { + name: "Editor/IDE", + span: [new Date("2020-02-01"), TODAY], + }, + ], + yAxisID: "yAxis1", + }, + { + label: "Emacs", + data: [ + { + name: "Editor/IDE", + span: [new Date("2020-10-12"), TODAY], + }, + ], + yAxisID: "yAxis1", + ...EMACS_ITEM, + }, + { + label: "ranger", + data: [ + { + name: "File manager", + span: [new Date("2019-04-03"), new Date("2020-02-17")], + }, + ], + yAxisID: "yAxis2", + }, + { + label: "vifm", + data: [ + { + name: "File manager", + span: [new Date("2020-02-17"), new Date("2020-11-11")], + }, + ], + yAxisID: "yAxis2", + }, + { + label: "Dired", + data: [ + { + name: "File manager", + span: [new Date("2020-11-11"), TODAY], + }, + ], + yAxisID: "yAxis2", + ...EMACS_ITEM, + }, + { + label: "Mailspring", + data: [ + { + name: "Email", + span: [new Date("2019-01-28"), new Date("2021-01-29")], + }, + ], + yAxisID: "yAxis3", + }, + { + label: "notmuch", + data: [ + { + name: "Email", + span: [new Date("2021-01-29"), TODAY], + }, + ], + yAxisID: "yAxis3", + ...EMACS_ITEM, + }, + { + label: "newsboat", + data: [ + { + name: "RSS", + span: [new Date("2021-01-22"), new Date("2021-05-24")], + }, + ], + yAxisID: "yAxis4", + }, + { + label: "elfeed", + data: [ + { + name: "RSS", + span: [new Date("2021-05-24"), TODAY], + }, + ], + yAxisID: "yAxis4", + ...EMACS_ITEM, + }, + { + label: "Tiny Tiny RSS", + data: [ + { + name: "RSS", + span: [new Date("2022-05-28"), TODAY], + hint: "Sync with elfeed", + }, + ], + yAxisID: "yAxis4", + }, + { + label: "KeePassXC", + data: [ + { + name: "Passwords", + span: [new Date("2019-01-31"), new Date("2021-07-26")], + }, + ], + yAxisID: "yAxis5", + }, + { + label: "password-store & pass.el", + data: [ + { + name: "Passwords", + span: [new Date("2021-07-26"), TODAY], + }, + ], + yAxisID: "yAxis5", + ...EMACS_ITEM, + }, + { + label: "Google Play Music", + data: [ + { + name: "Multimedia", + span: [new Date("2019-05-12"), new Date("2020-07-26")], + }, + ], + yAxisID: "yAxis6", + }, + { + label: "MPD", + data: [ + { + name: "Multimedia", + span: [new Date("2020-07-26"), TODAY], + }, + ], + yAxisID: "yAxis6", + }, + { + label: "ncmpcpp", + data: [ + { + name: "Multimedia", + span: [new Date("2020-07-26"), new Date("2021-07-31")], + }, + ], + yAxisID: "yAxis6", + }, + { + label: "EMMS", + data: [ + { + name: "Multimedia", + span: [new Date("2021-07-31"), TODAY], + }, + ], + yAxisID: "yAxis6", + ...EMACS_ITEM, + }, + { + label: "MPV", + data: [ + { + name: "Multimedia", + span: [new Date("2021-09-07"), TODAY], + }, + ], + yAxisID: "yAxis6", + }, + { + label: "Cinnamon", + data: [ + { + name: "WM", + span: [new Date("2018-08-01"), new Date("2020-05-08")], + }, + ], + yAxisID: "yAxis7", + }, + { + label: "i3(-gaps)", + data: [ + { + name: "WM", + span: [new Date("2020-05-08"), new Date("2021-11-14")], + }, + ], + yAxisID: "yAxis7", + }, + { + label: "EXWM", + data: [ + { + name: "WM", + span: [new Date("2021-11-14"), TODAY], + }, + ], + yAxisID: "yAxis7", + ...EMACS_ITEM, + }, + { + label: "Telegram Desktop", + data: [ + { + name: "Messenger", + span: [new Date("2022-03-22"), new Date("2023-01-07")], + }, + ], + yAxisID: "yAxis8", + }, + { + label: "telega.el", + data: [ + { + name: "Messenger", + span: [new Date("2023-01-07"), TODAY], + }, + ], + yAxisID: "yAxis8", + ...EMACS_ITEM, + }, + ].map((d) => { + if (!d.backgroundColor) { + d.backgroundColor = COLORS[i]; + } + i = (i + 1) % COLORS.length; + return d; + }), +}; + +function replaceNumbers(data) { + for (const [key, value] of Object.entries(data)) { + const items = document.querySelectorAll(`[data-num="${key}"]`); + for (const item of items) { + item.innerHTML = value; + } + } +} + +function emacsChart() { + const ctx = document.getElementById("chart-emacs-history"); + new Chart(ctx, { + type: "bar", + data: EMACS_DATA, + plugins: [ChartDataLabels], + options: { + indexAxis: "y", + grouped: true, + aspectRatio: 1.1, + parsing: { + yAxisKey: "name", + xAxisKey: "span", + }, + layout: { + padding: 1, + }, + scales: { + x: { + type: "time", + min: new Date("2018-09"), + }, + ...Object.fromEntries( + [1, 2, 3, 4, 5, 6, 7].map((i) => [ + `yAxis${i}`, + { + display: false, + }, + ]) + ), + }, + plugins: { + legend: { + display: false, + }, + title: { + display: true, + text: "Figure 1. Everything goes into Emacs", + color: "black", + font: { + size: 15, + }, + }, + datalabels: { + formatter: function (value, context) { + return context.dataset.label; + }, + color: "black", + }, + tooltip: { + callbacks: { + label: function (context) { + const startDate = new Date( + context.parsed._custom.start + ).toLocaleDateString("en-GB"); + let endDate = new Date( + context.parsed._custom.end + ).toLocaleDateString("en-GB"); + if (endDate === TODAY_LOCALE) { + endDate = "Today"; + } + const label = context.dataset.label; + return `${label}: ${startDate} - ${endDate}`; + }, + }, + }, + }, + }, + }); +} + +async function emacsScreenTimeChart() { + const response = await fetch("/data/2023-03-13-emacs/emacs-screen-time.json"); + const rawData = await response.json(); + const data = { + labels: rawData.map((d) => new Date(d["date_trunc"])), + datasets: [ + { + data: rawData.map((d) => ({ + period: new Date(d["date_trunc"]), + value: d["percent"], + })), + }, + ], + }; + + const ctx = document.getElementById("chart-emacs-screen-time"); + new Chart(ctx, { + type: "bar", + data, + options: { + parsing: { + xAxisKey: "period", + yAxisKey: "value", + }, + scales: { + x: { + type: "time", + min: data.labels[0], + }, + y: { + title: { + display: true, + text: "Ratio of direct screen time", + }, + }, + }, + plugins: { + legend: { + display: false, + }, + title: { + display: true, + text: "Figure 2. Emacs direct screen time ratio over time", + color: "black", + font: { + size: 15, + }, + }, + }, + }, + }); +} + +async function emacsTimeChart() { + const response = await fetch( + "/data/2023-03-13-emacs/emacs-related-time-per-month.json" + ); + const rawData = await response.json(); + const labels = [ + ["config_hours", "Config", "#A989C5"], + ["package_hours", "Emacs Packages", "#7172AD"], + ["orgmode_hours", "Org Mode", "#509EE3"], + ["sqrt_hours", "sqrtminusone.xyz", "#51528D"], + ["other_code_hours", "Other Code", "#F2A86F"], + ["misc_hours", "Misc", "#F9D45C"], + ]; + const data = { + labels: rawData.map((d) => new Date(d["period"])), + datasets: labels.map(([key, label, color]) => ({ + label, + data: rawData.map((d) => ({ + period: new Date(d["period"]), + value: d[key], + })), + backgroundColor: color, + })), + }; + const replaceData = {}; + for (const [key] of labels) { + replaceData[`${key}_total`] = 0; + replaceData[`${key}_percent`] = 0; + } + let total = 0; + for (const rawDatum of rawData) { + for (const [key] of labels) { + replaceData[`${key}_total`] += rawDatum[key] || 0; + total += rawDatum[key] || 0; + } + } + for (const [key] of labels) { + replaceData[`${key}_total`] = replaceData[`${key}_total`].toFixed(1); + replaceData[`${key}_percent`] = ( + (replaceData[`${key}_total`] / total) * + 100 + ).toFixed(1); + } + replaceNumbers(replaceData); + + const ctx = document.getElementById("chart-emacs-time"); + new Chart(ctx, { + type: "bar", + data, + options: { + parsing: { + xAxisKey: "period", + yAxisKey: "value", + }, + scales: { + x: { + type: "time", + min: data.labels[0], + stacked: true, + }, + y: { + stacked: true, + title: { + display: true, + text: "Hours", + }, + }, + }, + plugins: { + title: { + display: true, + text: "Figure 3. Structure of Emacs usage per month", + color: "black", + font: { + size: 15, + }, + }, + }, + }, + }); + + const rawStackedData = rawData.map((d) => { + let sum = 0; + for (const [key] of labels) { + sum += d[key]; + } + for (const [key] of labels) { + d[key] /= sum; + } + return d; + }); + const stackedData = { + labels: rawData.map((d) => new Date(d["period"])), + datasets: labels.map(([key, label, color]) => ({ + label, + data: rawStackedData.map((d) => ({ + period: new Date(d["period"]), + value: d[key], + })), + backgroundColor: color, + })), + }; + + const stackedCtx = document.getElementById("chart-emacs-time-stacked"); + new Chart(stackedCtx, { + type: "bar", + data: stackedData, + options: { + parsing: { + xAxisKey: "period", + yAxisKey: "value", + }, + scales: { + x: { + type: "time", + min: data.labels[0], + stacked: true, + }, + y: { + stacked: true, + min: 0, + max: 1, + title: { + display: true, + text: "Hours (%)", + }, + }, + }, + plugins: { + title: { + display: true, + text: "Figure 4. Structure of Emacs usage per month (stacked)", + color: "black", + font: { + size: 15, + }, + }, + }, + }, + }); +} + +async function configsChart() { + const response = await fetch("/data/2023-03-13-emacs/lengths.csv"); + const csv = await response.text(); + const lines = csv.split("\n"); + const labels = lines[0].split(","); + const rawData = lines + .slice(1) + .reverse() + .map((line) => { + const values = line.split(","); + return Object.fromEntries( + values.map((value, i) => { + const key = labels[i]; + switch (key) { + case "date": + value = new Date(value); + break; + case "commit": + break; + default: + value = Number(value); + break; + } + return [key, value]; + }) + ); + }); + const data = { + labels: rawData.map((d) => d.date), + datasets: [ + { + label: "Emacs.org", + data: rawData.map((d) => ({ + x: d.date, + y: d["Emacs.org"], + })), + }, + { + label: "init.el", + data: rawData.map((d) => ({ + x: d.date, + y: d["init.el"], + })), + }, + ], + }; + + const numbers = { + emacs_org_length: rawData[rawData.length - 1]["Emacs.org"], + init_el_length: rawData[rawData.length - 1]["init.el"], + init_vim_length: rawData[rawData.length - 1]["init.vim"], + }; + replaceNumbers(numbers); + + const ctx = document.getElementById("chart-emacs-config-size"); + new Chart(ctx, { + type: "line", + data, + options: { + pointRadius: 0, + tension: 0.1, + parsing: { + xAxisKey: "x", + yAxisKey: "y", + }, + scales: { + x: { + type: "time", + min: new Date("2020-10-01"), + max: TODAY, + }, + y: { + title: { + display: true, + text: "Lines of code", + }, + }, + }, + plugins: { + title: { + display: true, + text: "Figure 6. Emacs.org and init.el lengths", + color: "black", + font: { + size: 15, + }, + }, + }, + }, + }); + + const emacsVimData = { + datasets: [ + { + label: "Emacs.org", + data: rawData.map((d) => ({ + x: d.date, + y: d["Emacs.org"], + })), + xAxisID: "xAxis1", + }, + { + label: "init.el", + data: rawData.map((d) => ({ + x: d.date, + y: d["init.el"], + })), + xAxisID: "xAxis1", + }, + { + label: "init.vim", + data: rawData.map((d) => ({ + x: d.date, + y: d["init.vim"], + })), + xAxisID: "xAxis2", + }, + ], + }; + const ctxEmacsVim = document.getElementById("chart-emacs-vim-config-size"); + new Chart(ctxEmacsVim, { + type: "line", + data: emacsVimData, + options: { + pointRadius: 0, + tension: 0.1, + parsing: { + xAxisKey: "x", + yAxisKey: "y", + }, + scales: { + xAxis1: { + type: "time", + min: new Date("2020-10-12"), + max: new Date( + new Date("2020-10-12").getTime() + 450 * (1000 * 60 * 60 * 24) + ), + display: false, + }, + xAxis2: { + type: "time", + min: new Date("2019-03-30"), + max: new Date( + new Date("2019-03-30").getTime() + 450 * (1000 * 60 * 60 * 24) + ), + title: { + display: true, + text: "Days into", + }, + ticks: { + display: false, + }, + }, + y: { + title: { + display: true, + text: "Lines of code", + }, + }, + }, + plugins: { + title: { + display: true, + text: "Figure 7. Emacs vs. Vim config size", + color: "black", + font: { + size: 15, + }, + }, + }, + }, + }); +} + +async function packagesChart() { + const response = await fetch("/data/2023-03-13-emacs/emacs-packages.json"); + const rawData = await response.json(); + + const data = [ + ...rawData.slice(0, 15), + { + name: "Other", + hours: rawData.slice(15).reduce((acc, d) => acc + d.hours, 0), + }, + ]; + + const replaceData = {}; + for (const datum of data) { + replaceData[`${datum.name}_total`] = datum.hours.toFixed(1); + } + replaceNumbers(replaceData); + + const ctx = document.getElementById("chart-emacs-packages"); + new Chart(ctx, { + type: "bar", + data: { + labels: data.map((d) => d.name), + datasets: [ + { + data, + }, + ], + }, + options: { + aspectRatio: 1.3, + parsing: { + yAxisKey: "name", + xAxisKey: "hours", + }, + indexAxis: "y", + scales: { + x: { + title: { + display: true, + text: "Hours", + }, + }, + }, + plugins: { + title: { + display: true, + text: "Figure 8. Time spent on Emacs packages", + color: "black", + font: { + size: 15, + }, + }, + legend: { + display: false, + }, + }, + }, + }); +} + +async function emacsVimSwitchChart() { + const response = await fetch("/data/2023-03-13-emacs/emacs-vim-switch.json"); + const rawData = await response.json(); + const labels = [ + ["config_hours", "Config", "#A989C5"], + ["package_hours", "Emacs Packages", "#7172AD"], + ["orgmode_hours", "Org Mode", "#509EE3"], + ["emacs_other_code_hours", "Other Code (Emacs)", "#F2A86F"], + ["vim_other_code_hours", "Other Code (Vim)", "#59c26e"], + ["misc_emacs_hours", "Misc (Emacs)", "#F9D45C"], + ]; + const data = { + labels: rawData.map((d) => new Date(d["period"])), + datasets: labels.map(([key, label, color]) => ({ + label, + data: rawData.map((d) => ({ + period: new Date(d["period"]), + value: d[key], + })), + backgroundColor: color, + })), + }; + + const ctx = document.getElementById("chart-emacs-vim-switch"); + new Chart(ctx, { + type: "bar", + data, + options: { + parsing: { + xAxisKey: "period", + yAxisKey: "value", + }, + scales: { + x: { + type: "time", + min: data.labels[0], + stacked: true, + }, + y: { + stacked: true, + title: { + display: true, + text: "Hours", + }, + }, + }, + plugins: { + title: { + display: true, + text: "Figure 5. Switch from Neovim to Emacs", + color: "black", + font: { + size: 15, + }, + }, + }, + }, + }); +} + +async function zkChart() { + const response = await fetch("/data/2023-03-13-emacs/roam-stats.csv"); + const csv = await response.text(); + const lines = csv.split("\n"); + const labels = lines[0].split(","); + const rawData = lines + .slice(1) + .reverse() + .map((line) => { + const values = line.split(","); + return Object.fromEntries( + values.map((value, i) => { + const key = labels[i]; + switch (key) { + case "date": + value = new Date(value); + break; + case "commit": + break; + default: + value = Number(value); + break; + } + return [key, value]; + }) + ); + }); + const data = { + labels: rawData.map((d) => d.date), + datasets: [ + { + label: "Roam Nodes", + data: rawData.map((d) => ({ + x: d.date, + y: d["nodes"], + })), + }, + ], + }; + console.log(data) + + const ctx = document.getElementById("chart-roam-nodes"); + new Chart(ctx, { + type: "line", + data, + options: { + pointRadius: 0, + tension: 0.1, + parsing: { + xAxisKey: "x", + yAxisKey: "y", + }, + scales: { + x: { + type: "time", + min: data.labels[1], + max: TODAY, + }, + y: { + title: { + display: true, + text: "Roam Nodes", + }, + }, + }, + plugins: { + title: { + display: true, + text: "Figure 9. Roam Nodes", + color: "black", + font: { + size: 15, + }, + }, + }, + }, + }); +} + +document.addEventListener( + "DOMContentLoaded", + async function () { + emacsChart(); + emacsScreenTimeChart(); + emacsTimeChart(); + configsChart(); + packagesChart(); + emacsVimSwitchChart(); + zkChart(); + }, + false +); diff --git a/static/js/chart.js b/static/js/chart.js new file mode 100644 index 0000000..d819689 --- /dev/null +++ b/static/js/chart.js @@ -0,0 +1,20 @@ +/** + * Skipped minification because the original files appears to be already minified. + * Original file: /npm/chart.js@4.2.1/dist/chart.umd.js + * + * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files + */ +/*! + * Chart.js v4.2.1 + * https://www.chartjs.org + * (c) 2023 Chart.js Contributors + * Released under the MIT License + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Chart=e()}(this,(function(){"use strict";var t=Object.freeze({__proto__:null,get Colors(){return jo},get Decimation(){return Uo},get Filler(){return ha},get Legend(){return fa},get SubTitle(){return ba},get Title(){return pa},get Tooltip(){return La}});function e(){}const i=(()=>{let t=0;return()=>t++})();function s(t){return null==t}function n(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.slice(0,7)&&"Array]"===e.slice(-6)}function o(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function a(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function r(t,e){return a(t)?t:e}function l(t,e){return void 0===t?e:t}const h=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100:+t/e,c=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function d(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function u(t,e,i,s){let a,r,l;if(n(t))if(r=t.length,s)for(a=r-1;a>=0;a--)e.call(i,t[a],a);else for(a=0;at,x:t=>t.x,y:t=>t.y};function v(t){const e=t.split("."),i=[];let s="";for(const t of e)s+=t,s.endsWith("\\")?s=s.slice(0,-1)+".":(i.push(s),s="");return i}function M(t,e){const i=y[e]||(y[e]=function(t){const e=v(t);return t=>{for(const i of e){if(""===i)break;t=t&&t[i]}return t}}(e));return i(t)}function w(t){return t.charAt(0).toUpperCase()+t.slice(1)}const k=t=>void 0!==t,S=t=>"function"==typeof t,P=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};function D(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}const C=Math.PI,O=2*C,A=O+C,T=Number.POSITIVE_INFINITY,L=C/180,E=C/2,R=C/4,I=2*C/3,z=Math.log10,F=Math.sign;function V(t,e,i){return Math.abs(t-e)t-e)).pop(),e}function W(t){return!isNaN(parseFloat(t))&&isFinite(t)}function H(t,e){const i=Math.round(t);return i-e<=t&&i+e>=t}function j(t,e,i){let s,n,o;for(s=0,n=t.length;sl&&h=Math.min(e,i)-s&&t<=Math.max(e,i)+s}function et(t,e,i){i=i||(i=>t[i]1;)s=o+n>>1,i(s)?o=s:n=s;return{lo:o,hi:n}}const it=(t,e,i,s)=>et(t,i,s?s=>{const n=t[s][e];return nt[s][e]et(t,i,(s=>t[s][e]>=i));function nt(t,e,i){let s=0,n=t.length;for(;ss&&t[n-1]>i;)n--;return s>0||n{const i="_onData"+w(e),s=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...e){const n=s.apply(this,e);return t._chartjs.listeners.forEach((t=>{"function"==typeof t[i]&&t[i](...e)})),n}})})))}function rt(t,e){const i=t._chartjs;if(!i)return;const s=i.listeners,n=s.indexOf(e);-1!==n&&s.splice(n,1),s.length>0||(ot.forEach((e=>{delete t[e]})),delete t._chartjs)}function lt(t){const e=new Set;let i,s;for(i=0,s=t.length;i{s=!1,t.apply(e,i)})))}}function dt(t,e){let i;return function(...s){return e?(clearTimeout(i),i=setTimeout(t,e,s)):t.apply(this,s),e}}const ut=t=>"start"===t?"left":"end"===t?"right":"center",ft=(t,e,i)=>"start"===t?e:"end"===t?i:(e+i)/2,gt=(t,e,i,s)=>t===(s?"left":"right")?i:"center"===t?(e+i)/2:e;function pt(t,e,i){const s=e.length;let n=0,o=s;if(t._sorted){const{iScale:a,_parsed:r}=t,l=a.axis,{min:h,max:c,minDefined:d,maxDefined:u}=a.getUserBounds();d&&(n=J(Math.min(it(r,a.axis,h).lo,i?s:it(e,l,a.getPixelForValue(h)).lo),0,s-1)),o=u?J(Math.max(it(r,a.axis,c,!0).hi+1,i?0:it(e,l,a.getPixelForValue(c),!0).hi+1),n,s)-n:s-n}return{start:n,count:o}}function mt(t){const{xScale:e,yScale:i,_scaleRanges:s}=t,n={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!s)return t._scaleRanges=n,!0;const o=s.xmin!==e.min||s.xmax!==e.max||s.ymin!==i.min||s.ymax!==i.max;return Object.assign(s,n),o}class bt{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,s){const n=e.listeners[s],o=e.duration;n.forEach((s=>s({chart:t,initial:e.initial,numSteps:o,currentStep:Math.min(i-e.start,o)})))}_refresh(){this._request||(this._running=!0,this._request=ht.call(window,(()=>{this._update(),this._request=null,this._running&&this._refresh()})))}_update(t=Date.now()){let e=0;this._charts.forEach(((i,s)=>{if(!i.running||!i.items.length)return;const n=i.items;let o,a=n.length-1,r=!1;for(;a>=0;--a)o=n[a],o._active?(o._total>i.duration&&(i.duration=o._total),o.tick(t),r=!0):(n[a]=n[n.length-1],n.pop());r&&(s.draw(),this._notify(s,i,t,"progress")),n.length||(i.running=!1,this._notify(s,i,t,"complete"),i.initial=!1),e+=n.length})),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){const e=this._charts;let i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce(((t,e)=>Math.max(t,e._duration)),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const i=e.items;let s=i.length-1;for(;s>=0;--s)i[s].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var xt=new bt; +/*! + * @kurkle/color v0.3.0 + * https://github.com/kurkle/color#readme + * (c) 2022 Jukka Kurkela + * Released under the MIT License + */function _t(t){return t+.5|0}const yt=(t,e,i)=>Math.max(Math.min(t,i),e);function vt(t){return yt(_t(2.55*t),0,255)}function Mt(t){return yt(_t(255*t),0,255)}function wt(t){return yt(_t(t/2.55)/100,0,1)}function kt(t){return yt(_t(100*t),0,100)}const St={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},Pt=[..."0123456789ABCDEF"],Dt=t=>Pt[15&t],Ct=t=>Pt[(240&t)>>4]+Pt[15&t],Ot=t=>(240&t)>>4==(15&t);function At(t){var e=(t=>Ot(t.r)&&Ot(t.g)&&Ot(t.b)&&Ot(t.a))(t)?Dt:Ct;return t?"#"+e(t.r)+e(t.g)+e(t.b)+((t,e)=>t<255?e(t):"")(t.a,e):void 0}const Tt=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Lt(t,e,i){const s=e*Math.min(i,1-i),n=(e,n=(e+t/30)%12)=>i-s*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function Et(t,e,i){const s=(s,n=(s+t/60)%6)=>i-i*e*Math.max(Math.min(n,4-n,1),0);return[s(5),s(3),s(1)]}function Rt(t,e,i){const s=Lt(t,1,.5);let n;for(e+i>1&&(n=1/(e+i),e*=n,i*=n),n=0;n<3;n++)s[n]*=1-e-i,s[n]+=e;return s}function It(t){const e=t.r/255,i=t.g/255,s=t.b/255,n=Math.max(e,i,s),o=Math.min(e,i,s),a=(n+o)/2;let r,l,h;return n!==o&&(h=n-o,l=a>.5?h/(2-n-o):h/(n+o),r=function(t,e,i,s,n){return t===n?(e-i)/s+(e>16&255,o>>8&255,255&o]}return t}(),Ht.transparent=[0,0,0,0]);const e=Ht[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}const $t=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;const Yt=t=>t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,Ut=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function Xt(t,e,i){if(t){let s=It(t);s[e]=Math.max(0,Math.min(s[e]+s[e]*i,0===e?360:1)),s=Ft(s),t.r=s[0],t.g=s[1],t.b=s[2]}}function qt(t,e){return t?Object.assign(e||{},t):t}function Kt(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=Mt(t[3]))):(e=qt(t,{r:0,g:0,b:0,a:1})).a=Mt(e.a),e}function Gt(t){return"r"===t.charAt(0)?function(t){const e=$t.exec(t);let i,s,n,o=255;if(e){if(e[7]!==i){const t=+e[7];o=e[8]?vt(t):yt(255*t,0,255)}return i=+e[1],s=+e[3],n=+e[5],i=255&(e[2]?vt(i):yt(i,0,255)),s=255&(e[4]?vt(s):yt(s,0,255)),n=255&(e[6]?vt(n):yt(n,0,255)),{r:i,g:s,b:n,a:o}}}(t):Bt(t)}class Zt{constructor(t){if(t instanceof Zt)return t;const e=typeof t;let i;var s,n,o;"object"===e?i=Kt(t):"string"===e&&(o=(s=t).length,"#"===s[0]&&(4===o||5===o?n={r:255&17*St[s[1]],g:255&17*St[s[2]],b:255&17*St[s[3]],a:5===o?17*St[s[4]]:255}:7!==o&&9!==o||(n={r:St[s[1]]<<4|St[s[2]],g:St[s[3]]<<4|St[s[4]],b:St[s[5]]<<4|St[s[6]],a:9===o?St[s[7]]<<4|St[s[8]]:255})),i=n||jt(t)||Gt(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=qt(this._rgb);return t&&(t.a=wt(t.a)),t}set rgb(t){this._rgb=Kt(t)}rgbString(){return this._valid?(t=this._rgb)&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${wt(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`):void 0;var t}hexString(){return this._valid?At(this._rgb):void 0}hslString(){return this._valid?function(t){if(!t)return;const e=It(t),i=e[0],s=kt(e[1]),n=kt(e[2]);return t.a<255?`hsla(${i}, ${s}%, ${n}%, ${wt(t.a)})`:`hsl(${i}, ${s}%, ${n}%)`}(this._rgb):void 0}mix(t,e){if(t){const i=this.rgb,s=t.rgb;let n;const o=e===n?.5:e,a=2*o-1,r=i.a-s.a,l=((a*r==-1?a:(a+r)/(1+a*r))+1)/2;n=1-l,i.r=255&l*i.r+n*s.r+.5,i.g=255&l*i.g+n*s.g+.5,i.b=255&l*i.b+n*s.b+.5,i.a=o*i.a+(1-o)*s.a,this.rgb=i}return this}interpolate(t,e){return t&&(this._rgb=function(t,e,i){const s=Ut(wt(t.r)),n=Ut(wt(t.g)),o=Ut(wt(t.b));return{r:Mt(Yt(s+i*(Ut(wt(e.r))-s))),g:Mt(Yt(n+i*(Ut(wt(e.g))-n))),b:Mt(Yt(o+i*(Ut(wt(e.b))-o))),a:t.a+i*(e.a-t.a)}}(this._rgb,t._rgb,e)),this}clone(){return new Zt(this.rgb)}alpha(t){return this._rgb.a=Mt(t),this}clearer(t){return this._rgb.a*=1-t,this}greyscale(){const t=this._rgb,e=_t(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){return this._rgb.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return Xt(this._rgb,2,t),this}darken(t){return Xt(this._rgb,2,-t),this}saturate(t){return Xt(this._rgb,1,t),this}desaturate(t){return Xt(this._rgb,1,-t),this}rotate(t){return function(t,e){var i=It(t);i[0]=Vt(i[0]+e),i=Ft(i),t.r=i[0],t.g=i[1],t.b=i[2]}(this._rgb,t),this}}function Jt(t){if(t&&"object"==typeof t){const e=t.toString();return"[object CanvasPattern]"===e||"[object CanvasGradient]"===e}return!1}function Qt(t){return Jt(t)?t:new Zt(t)}function te(t){return Jt(t)?t:new Zt(t).saturate(.5).darken(.1).hexString()}const ee=["x","y","borderWidth","radius","tension"],ie=["color","borderColor","backgroundColor"];const se=new Map;function ne(t,e,i){return function(t,e){e=e||{};const i=t+JSON.stringify(e);let s=se.get(i);return s||(s=new Intl.NumberFormat(t,e),se.set(i,s)),s}(e,i).format(t)}const oe={values:t=>n(t)?t:""+t,numeric(t,e,i){if(0===t)return"0";const s=this.chart.options.locale;let n,o=t;if(i.length>1){const e=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(e<1e-4||e>1e15)&&(n="scientific"),o=function(t,e){let i=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;Math.abs(i)>=1&&t!==Math.floor(t)&&(i=t-Math.floor(t));return i}(t,i)}const a=z(Math.abs(o)),r=Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:n,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(l,this.options.ticks.format),ne(t,s,l)},logarithmic(t,e,i){if(0===t)return"0";const s=i[e].significand||t/Math.pow(10,Math.floor(z(t)));return[1,2,3,5,10,15].includes(s)||e>.8*i.length?oe.numeric.call(this,t,e,i):""}};var ae={formatters:oe};const re=Object.create(null),le=Object.create(null);function he(t,e){if(!e)return t;const i=e.split(".");for(let e=0,s=i.length;et.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>te(e.backgroundColor),this.hoverBorderColor=(t,e)=>te(e.borderColor),this.hoverColor=(t,e)=>te(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(e)}set(t,e){return ce(this,t,e)}get(t){return he(this,t)}describe(t,e){return ce(le,t,e)}override(t,e){return ce(re,t,e)}route(t,e,i,s){const n=he(this,t),a=he(this,i),r="_"+e;Object.defineProperties(n,{[r]:{value:n[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[r],e=a[s];return o(t)?Object.assign({},e,t):l(t,e)},set(t){this[r]=t}}})}apply(t){t.forEach((t=>t(this)))}}var ue=new de({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[function(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>"onProgress"!==t&&"onComplete"!==t&&"fn"!==t}),t.set("animations",{colors:{type:"color",properties:ie},numbers:{type:"number",properties:ee}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>0|t}}}})},function(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})},function(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.lineWidth,tickColor:(t,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:ae.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&"callback"!==t&&"parser"!==t,_indexable:t=>"borderDash"!==t&&"tickBorderDash"!==t&&"dash"!==t}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:t=>"backdropPadding"!==t&&"callback"!==t,_indexable:t=>"backdropPadding"!==t})}]);function fe(){return"undefined"!=typeof window&&"undefined"!=typeof document}function ge(t){let e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e}function pe(t,e,i){let s;return"string"==typeof t?(s=parseInt(t,10),-1!==t.indexOf("%")&&(s=s/100*e.parentNode[i])):s=t,s}const me=t=>t.ownerDocument.defaultView.getComputedStyle(t,null);function be(t,e){return me(t).getPropertyValue(e)}const xe=["top","right","bottom","left"];function _e(t,e,i){const s={};i=i?"-"+i:"";for(let n=0;n<4;n++){const o=xe[n];s[o]=parseFloat(t[e+"-"+o+i])||0}return s.width=s.left+s.right,s.height=s.top+s.bottom,s}function ye(t,e){if("native"in t)return t;const{canvas:i,currentDevicePixelRatio:s}=e,n=me(i),o="border-box"===n.boxSizing,a=_e(n,"padding"),r=_e(n,"border","width"),{x:l,y:h,box:c}=function(t,e){const i=t.touches,s=i&&i.length?i[0]:t,{offsetX:n,offsetY:o}=s;let a,r,l=!1;if(((t,e,i)=>(t>0||e>0)&&(!i||!i.shadowRoot))(n,o,t.target))a=n,r=o;else{const t=e.getBoundingClientRect();a=s.clientX-t.left,r=s.clientY-t.top,l=!0}return{x:a,y:r,box:l}}(t,i),d=a.left+(c&&r.left),u=a.top+(c&&r.top);let{width:f,height:g}=e;return o&&(f-=a.width+r.width,g-=a.height+r.height),{x:Math.round((l-d)/f*i.width/s),y:Math.round((h-u)/g*i.height/s)}}const ve=t=>Math.round(10*t)/10;function Me(t,e,i,s){const n=me(t),o=_e(n,"margin"),a=pe(n.maxWidth,t,"clientWidth")||T,r=pe(n.maxHeight,t,"clientHeight")||T,l=function(t,e,i){let s,n;if(void 0===e||void 0===i){const o=ge(t);if(o){const t=o.getBoundingClientRect(),a=me(o),r=_e(a,"border","width"),l=_e(a,"padding");e=t.width-l.width-r.width,i=t.height-l.height-r.height,s=pe(a.maxWidth,o,"clientWidth"),n=pe(a.maxHeight,o,"clientHeight")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:s||T,maxHeight:n||T}}(t,e,i);let{width:h,height:c}=l;if("content-box"===n.boxSizing){const t=_e(n,"border","width"),e=_e(n,"padding");h-=e.width+t.width,c-=e.height+t.height}h=Math.max(0,h-o.width),c=Math.max(0,s?h/s:c-o.height),h=ve(Math.min(h,a,l.maxWidth)),c=ve(Math.min(c,r,l.maxHeight)),h&&!c&&(c=ve(h/2));return(void 0!==e||void 0!==i)&&s&&l.height&&c>l.height&&(c=l.height,h=ve(Math.floor(c*s))),{width:h,height:c}}function we(t,e,i){const s=e||1,n=Math.floor(t.height*s),o=Math.floor(t.width*s);t.height=Math.floor(t.height),t.width=Math.floor(t.width);const a=t.canvas;return a.style&&(i||!a.style.height&&!a.style.width)&&(a.style.height=`${t.height}px`,a.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==s||a.height!==n||a.width!==o)&&(t.currentDevicePixelRatio=s,a.height=n,a.width=o,t.ctx.setTransform(s,0,0,s,0,0),!0)}const ke=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};window.addEventListener("test",null,e),window.removeEventListener("test",null,e)}catch(t){}return t}();function Se(t,e){const i=be(t,e),s=i&&i.match(/^(\d+)(\.\d+)?px$/);return s?+s[1]:void 0}function Pe(t){return!t||s(t.size)||s(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}function De(t,e,i,s,n){let o=e[n];return o||(o=e[n]=t.measureText(n).width,i.push(n)),o>s&&(s=o),s}function Ce(t,e,i,s){let o=(s=s||{}).data=s.data||{},a=s.garbageCollect=s.garbageCollect||[];s.font!==e&&(o=s.data={},a=s.garbageCollect=[],s.font=e),t.save(),t.font=e;let r=0;const l=i.length;let h,c,d,u,f;for(h=0;hi.length){for(h=0;h0&&t.stroke()}}function Ee(t,e,i){return i=i||.5,!e||t&&t.x>e.left-i&&t.xe.top-i&&t.y0&&""!==r.strokeColor;let c,d;for(t.save(),t.font=a.string,function(t,e){e.translation&&t.translate(e.translation[0],e.translation[1]);s(e.rotation)||t.rotate(e.rotation);e.color&&(t.fillStyle=e.color);e.textAlign&&(t.textAlign=e.textAlign);e.textBaseline&&(t.textBaseline=e.textBaseline)}(t,r),c=0;ct[0])){k(s)||(s=Qe("_fallback",t));const o={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:i,_fallback:s,_getTarget:n,override:n=>He([n,...t],e,i,s)};return new Proxy(o,{deleteProperty:(e,i)=>(delete e[i],delete e._keys,delete t[0][i],!0),get:(i,s)=>Xe(i,s,(()=>function(t,e,i,s){let n;for(const o of e)if(n=Qe(Ye(o,t),i),k(n))return Ue(t,n)?Ze(i,s,t,n):n}(s,e,t,i))),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(t,e)=>ti(t).includes(e),ownKeys:t=>ti(t),set(t,e,i){const s=t._storage||(t._storage=n());return t[e]=s[e]=i,delete t._keys,!0}})}function je(t,e,i,s){const a={_cacheable:!1,_proxy:t,_context:e,_subProxy:i,_stack:new Set,_descriptors:$e(t,s),setContext:e=>je(t,e,i,s),override:n=>je(t.override(n),e,i,s)};return new Proxy(a,{deleteProperty:(e,i)=>(delete e[i],delete t[i],!0),get:(t,e,i)=>Xe(t,e,(()=>function(t,e,i){const{_proxy:s,_context:a,_subProxy:r,_descriptors:l}=t;let h=s[e];S(h)&&l.isScriptable(e)&&(h=function(t,e,i,s){const{_proxy:n,_context:o,_subProxy:a,_stack:r}=i;if(r.has(t))throw new Error("Recursion detected: "+Array.from(r).join("->")+"->"+t);r.add(t),e=e(o,a||s),r.delete(t),Ue(t,e)&&(e=Ze(n._scopes,n,t,e));return e}(e,h,t,i));n(h)&&h.length&&(h=function(t,e,i,s){const{_proxy:n,_context:a,_subProxy:r,_descriptors:l}=i;if(k(a.index)&&s(t))e=e[a.index%e.length];else if(o(e[0])){const i=e,s=n._scopes.filter((t=>t!==i));e=[];for(const o of i){const i=Ze(s,n,t,o);e.push(je(i,a,r&&r[t],l))}}return e}(e,h,t,l.isIndexable));Ue(e,h)&&(h=je(h,a,r&&r[e],l));return h}(t,e,i))),getOwnPropertyDescriptor:(e,i)=>e._descriptors.allKeys?Reflect.has(t,i)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,i),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(e,i)=>Reflect.has(t,i),ownKeys:()=>Reflect.ownKeys(t),set:(e,i,s)=>(t[i]=s,delete e[i],!0)})}function $e(t,e={scriptable:!0,indexable:!0}){const{_scriptable:i=e.scriptable,_indexable:s=e.indexable,_allKeys:n=e.allKeys}=t;return{allKeys:n,scriptable:i,indexable:s,isScriptable:S(i)?i:()=>i,isIndexable:S(s)?s:()=>s}}const Ye=(t,e)=>t?t+w(e):e,Ue=(t,e)=>o(e)&&"adapters"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function Xe(t,e,i){if(Object.prototype.hasOwnProperty.call(t,e))return t[e];const s=i();return t[e]=s,s}function qe(t,e,i){return S(t)?t(e,i):t}const Ke=(t,e)=>!0===t?e:"string"==typeof t?M(e,t):void 0;function Ge(t,e,i,s,n){for(const o of e){const e=Ke(i,o);if(e){t.add(e);const o=qe(e._fallback,i,n);if(k(o)&&o!==i&&o!==s)return o}else if(!1===e&&k(s)&&i!==s)return null}return!1}function Ze(t,e,i,s){const a=e._rootScopes,r=qe(e._fallback,i,s),l=[...t,...a],h=new Set;h.add(s);let c=Je(h,l,i,r||i,s);return null!==c&&((!k(r)||r===i||(c=Je(h,l,r,c,s),null!==c))&&He(Array.from(h),[""],a,r,(()=>function(t,e,i){const s=t._getTarget();e in s||(s[e]={});const a=s[e];if(n(a)&&o(i))return i;return a||{}}(e,i,s))))}function Je(t,e,i,s,n){for(;i;)i=Ge(t,e,i,s,n);return i}function Qe(t,e){for(const i of e){if(!i)continue;const e=i[t];if(k(e))return e}}function ti(t){let e=t._keys;return e||(e=t._keys=function(t){const e=new Set;for(const i of t)for(const t of Object.keys(i).filter((t=>!t.startsWith("_"))))e.add(t);return Array.from(e)}(t._scopes)),e}function ei(t,e,i,s){const{iScale:n}=t,{key:o="r"}=this._parsing,a=new Array(s);let r,l,h,c;for(r=0,l=s;re"x"===t?"y":"x";function oi(t,e,i,s){const n=t.skip?e:t,o=e,a=i.skip?e:i,r=q(o,n),l=q(a,o);let h=r/(r+l),c=l/(r+l);h=isNaN(h)?0:h,c=isNaN(c)?0:c;const d=s*h,u=s*c;return{previous:{x:o.x-d*(a.x-n.x),y:o.y-d*(a.y-n.y)},next:{x:o.x+u*(a.x-n.x),y:o.y+u*(a.y-n.y)}}}function ai(t,e="x"){const i=ni(e),s=t.length,n=Array(s).fill(0),o=Array(s);let a,r,l,h=si(t,0);for(a=0;a!t.skip))),"monotone"===e.cubicInterpolationMode)ai(t,n);else{let i=s?t[t.length-1]:t[0];for(o=0,a=t.length;o0===t||1===t,ci=(t,e,i)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*O/i),di=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*O/i)+1,ui={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*E),easeOutSine:t=>Math.sin(t*E),easeInOutSine:t=>-.5*(Math.cos(C*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>hi(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>hi(t)?t:ci(t,.075,.3),easeOutElastic:t=>hi(t)?t:di(t,.075,.3),easeInOutElastic(t){const e=.1125;return hi(t)?t:t<.5?.5*ci(2*t,e,.45):.5+.5*di(2*t-1,e,.45)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-ui.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*ui.easeInBounce(2*t):.5*ui.easeOutBounce(2*t-1)+.5};function fi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:t.y+i*(e.y-t.y)}}function gi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:"middle"===s?i<.5?t.y:e.y:"after"===s?i<1?t.y:e.y:i>0?e.y:t.y}}function pi(t,e,i,s){const n={x:t.cp2x,y:t.cp2y},o={x:e.cp1x,y:e.cp1y},a=fi(t,n,i),r=fi(n,o,i),l=fi(o,e,i),h=fi(a,r,i),c=fi(r,l,i);return fi(h,c,i)}const mi=/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/,bi=/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;function xi(t,e){const i=(""+t).match(mi);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t}function _i(t,e){const i={},s=o(e),n=s?Object.keys(e):e,a=o(t)?s?i=>l(t[i],t[e[i]]):e=>t[e]:()=>t;for(const t of n)i[t]=+a(t)||0;return i}function yi(t){return _i(t,{top:"y",right:"x",bottom:"y",left:"x"})}function vi(t){return _i(t,["topLeft","topRight","bottomLeft","bottomRight"])}function Mi(t){const e=yi(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function wi(t,e){t=t||{},e=e||ue.font;let i=l(t.size,e.size);"string"==typeof i&&(i=parseInt(i,10));let s=l(t.style,e.style);s&&!(""+s).match(bi)&&(console.warn('Invalid font style specified: "'+s+'"'),s=void 0);const n={family:l(t.family,e.family),lineHeight:xi(l(t.lineHeight,e.lineHeight),i),size:i,style:s,weight:l(t.weight,e.weight),string:""};return n.string=Pe(n),n}function ki(t,e,i,s){let o,a,r,l=!0;for(o=0,a=t.length;oi&&0===t?0:t+e;return{min:a(s,-Math.abs(o)),max:a(n,o)}}function Pi(t,e){return Object.assign(Object.create(t),e)}function Di(t,e,i){return t?function(t,e){return{x:i=>t+t+e-i,setWidth(t){e=t},textAlign:t=>"center"===t?t:"right"===t?"left":"right",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}}(e,i):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function Ci(t,e){let i,s;"ltr"!==e&&"rtl"!==e||(i=t.canvas.style,s=[i.getPropertyValue("direction"),i.getPropertyPriority("direction")],i.setProperty("direction",e,"important"),t.prevTextDirection=s)}function Oi(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function Ai(t){return"angle"===t?{between:Z,compare:K,normalize:G}:{between:tt,compare:(t,e)=>t-e,normalize:t=>t}}function Ti({start:t,end:e,count:i,loop:s,style:n}){return{start:t%i,end:e%i,loop:s&&(e-t+1)%i==0,style:n}}function Li(t,e,i){if(!i)return[t];const{property:s,start:n,end:o}=i,a=e.length,{compare:r,between:l,normalize:h}=Ai(s),{start:c,end:d,loop:u,style:f}=function(t,e,i){const{property:s,start:n,end:o}=i,{between:a,normalize:r}=Ai(s),l=e.length;let h,c,{start:d,end:u,loop:f}=t;if(f){for(d+=l,u+=l,h=0,c=l;hx||l(n,b,p)&&0!==r(n,b),v=()=>!x||0===r(o,p)||l(o,b,p);for(let t=c,i=c;t<=d;++t)m=e[t%a],m.skip||(p=h(m[s]),p!==b&&(x=l(p,n,o),null===_&&y()&&(_=0===r(p,n)?t:i),null!==_&&v()&&(g.push(Ti({start:_,end:t,loop:u,count:a,style:f})),_=null),i=t,b=p));return null!==_&&g.push(Ti({start:_,end:d,loop:u,count:a,style:f})),g}function Ei(t,e){const i=[],s=t.segments;for(let n=0;nn&&t[o%e].skip;)o--;return o%=e,{start:n,end:o}}(i,n,o,s);if(!0===s)return Ii(t,[{start:a,end:r,loop:o}],i,e);return Ii(t,function(t,e,i,s){const n=t.length,o=[];let a,r=e,l=t[e];for(a=e+1;a<=i;++a){const i=t[a%n];i.skip||i.stop?l.skip||(s=!1,o.push({start:e%n,end:(a-1)%n,loop:s}),e=r=i.stop?a:null):(r=a,l.skip&&(e=a)),l=i}return null!==r&&o.push({start:e%n,end:r%n,loop:s}),o}(i,a,r{t[a](e[i],n)&&(o.push({element:t,datasetIndex:s,index:l}),r=r||t.inRange(e.x,e.y,n))})),s&&!r?[]:o}var Yi={evaluateInteractionItems:Ni,modes:{index(t,e,i,s){const n=ye(e,t),o=i.axis||"x",a=i.includeInvisible||!1,r=i.intersect?Wi(t,n,o,s,a):ji(t,n,o,!1,s,a),l=[];return r.length?(t.getSortedVisibleDatasetMetas().forEach((t=>{const e=r[0].index,i=t.data[e];i&&!i.skip&&l.push({element:i,datasetIndex:t.index,index:e})})),l):[]},dataset(t,e,i,s){const n=ye(e,t),o=i.axis||"xy",a=i.includeInvisible||!1;let r=i.intersect?Wi(t,n,o,s,a):ji(t,n,o,!1,s,a);if(r.length>0){const e=r[0].datasetIndex,i=t.getDatasetMeta(e).data;r=[];for(let t=0;tWi(t,ye(e,t),i.axis||"xy",s,i.includeInvisible||!1),nearest(t,e,i,s){const n=ye(e,t),o=i.axis||"xy",a=i.includeInvisible||!1;return ji(t,n,o,i.intersect,s,a)},x:(t,e,i,s)=>$i(t,ye(e,t),"x",i.intersect,s),y:(t,e,i,s)=>$i(t,ye(e,t),"y",i.intersect,s)}};const Ui=["left","top","right","bottom"];function Xi(t,e){return t.filter((t=>t.pos===e))}function qi(t,e){return t.filter((t=>-1===Ui.indexOf(t.pos)&&t.box.axis===e))}function Ki(t,e){return t.sort(((t,i)=>{const s=e?i:t,n=e?t:i;return s.weight===n.weight?s.index-n.index:s.weight-n.weight}))}function Gi(t,e){const i=function(t){const e={};for(const i of t){const{stack:t,pos:s,stackWeight:n}=i;if(!t||!Ui.includes(s))continue;const o=e[t]||(e[t]={count:0,placed:0,weight:0,size:0});o.count++,o.weight+=n}return e}(t),{vBoxMaxWidth:s,hBoxMaxHeight:n}=e;let o,a,r;for(o=0,a=t.length;o{s[t]=Math.max(e[t],i[t])})),s}return s(t?["left","right"]:["top","bottom"])}function es(t,e,i,s){const n=[];let o,a,r,l,h,c;for(o=0,a=t.length,h=0;ot.box.fullSize)),!0),s=Ki(Xi(e,"left"),!0),n=Ki(Xi(e,"right")),o=Ki(Xi(e,"top"),!0),a=Ki(Xi(e,"bottom")),r=qi(e,"x"),l=qi(e,"y");return{fullSize:i,leftAndTop:s.concat(o),rightAndBottom:n.concat(l).concat(a).concat(r),chartArea:Xi(e,"chartArea"),vertical:s.concat(n).concat(l),horizontal:o.concat(a).concat(r)}}(t.boxes),l=r.vertical,h=r.horizontal;u(t.boxes,(t=>{"function"==typeof t.beforeLayout&&t.beforeLayout()}));const c=l.reduce(((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1),0)||1,d=Object.freeze({outerWidth:e,outerHeight:i,padding:n,availableWidth:o,availableHeight:a,vBoxMaxWidth:o/2/c,hBoxMaxHeight:a/2}),f=Object.assign({},n);Ji(f,Mi(s));const g=Object.assign({maxPadding:f,w:o,h:a,x:n.left,y:n.top},n),p=Gi(l.concat(h),d);es(r.fullSize,g,d,p),es(l,g,d,p),es(h,g,d,p)&&es(l,g,d,p),function(t){const e=t.maxPadding;function i(i){const s=Math.max(e[i]-t[i],0);return t[i]+=s,s}t.y+=i("top"),t.x+=i("left"),i("right"),i("bottom")}(g),ss(r.leftAndTop,g,d,p),g.x+=g.w,g.y+=g.h,ss(r.rightAndBottom,g,d,p),t.chartArea={left:g.left,top:g.top,right:g.left+g.w,bottom:g.top+g.h,height:g.h,width:g.w},u(r.chartArea,(e=>{const i=e.box;Object.assign(i,t.chartArea),i.update(g.w,g.h,{left:0,top:0,right:0,bottom:0})}))}};class os{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,i){}removeEventListener(t,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,i,s){return e=Math.max(0,e||t.width),i=i||t.height,{width:e,height:Math.max(0,s?Math.floor(e/s):i)}}isAttached(t){return!0}updateConfig(t){}}class as extends os{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const rs={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},ls=t=>null===t||""===t;const hs=!!ke&&{passive:!0};function cs(t,e,i){t.canvas.removeEventListener(e,i,hs)}function ds(t,e){for(const i of t)if(i===e||i.contains(e))return!0}function us(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||ds(i.addedNodes,s),e=e&&!ds(i.removedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}function fs(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||ds(i.removedNodes,s),e=e&&!ds(i.addedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}const gs=new Map;let ps=0;function ms(){const t=window.devicePixelRatio;t!==ps&&(ps=t,gs.forEach(((e,i)=>{i.currentDevicePixelRatio!==t&&e()})))}function bs(t,e,i){const s=t.canvas,n=s&&ge(s);if(!n)return;const o=ct(((t,e)=>{const s=n.clientWidth;i(t,e),s{const e=t[0],i=e.contentRect.width,s=e.contentRect.height;0===i&&0===s||o(i,s)}));return a.observe(n),function(t,e){gs.size||window.addEventListener("resize",ms),gs.set(t,e)}(t,o),a}function xs(t,e,i){i&&i.disconnect(),"resize"===e&&function(t){gs.delete(t),gs.size||window.removeEventListener("resize",ms)}(t)}function _s(t,e,i){const s=t.canvas,n=ct((e=>{null!==t.ctx&&i(function(t,e){const i=rs[t.type]||t.type,{x:s,y:n}=ye(t,e);return{type:i,chart:e,native:t,x:void 0!==s?s:null,y:void 0!==n?n:null}}(e,t))}),t);return function(t,e,i){t.addEventListener(e,i,hs)}(s,e,n),n}class ys extends os{acquireContext(t,e){const i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(function(t,e){const i=t.style,s=t.getAttribute("height"),n=t.getAttribute("width");if(t.$chartjs={initial:{height:s,width:n,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",i.boxSizing=i.boxSizing||"border-box",ls(n)){const e=Se(t,"width");void 0!==e&&(t.width=e)}if(ls(s))if(""===t.style.height)t.height=t.width/(e||2);else{const e=Se(t,"height");void 0!==e&&(t.height=e)}}(t,e),i):null}releaseContext(t){const e=t.canvas;if(!e.$chartjs)return!1;const i=e.$chartjs.initial;["height","width"].forEach((t=>{const n=i[t];s(n)?e.removeAttribute(t):e.setAttribute(t,n)}));const n=i.style||{};return Object.keys(n).forEach((t=>{e.style[t]=n[t]})),e.width=e.width,delete e.$chartjs,!0}addEventListener(t,e,i){this.removeEventListener(t,e);const s=t.$proxies||(t.$proxies={}),n={attach:us,detach:fs,resize:bs}[e]||_s;s[e]=n(t,e,i)}removeEventListener(t,e){const i=t.$proxies||(t.$proxies={}),s=i[e];if(!s)return;({attach:xs,detach:xs,resize:xs}[e]||cs)(t,e,s),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,s){return Me(t,e,i,s)}isAttached(t){const e=ge(t);return!(!e||!e.isConnected)}}function vs(t){return!fe()||"undefined"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas?as:ys}var Ms=Object.freeze({__proto__:null,_detectPlatform:vs,BasePlatform:os,BasicPlatform:as,DomPlatform:ys});const ws="transparent",ks={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){const s=Qt(t||ws),n=s.valid&&Qt(e||ws);return n&&n.valid?n.mix(s,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class Ss{constructor(t,e,i,s){const n=e[i];s=ki([t.to,s,n,t.from]);const o=ki([t.from,n,s]);this._active=!0,this._fn=t.fn||ks[t.type||typeof o],this._easing=ui[t.easing]||ui.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=o,this._to=s,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);const s=this._target[this._prop],n=i-this._start,o=this._duration-n;this._start=i,this._duration=Math.floor(Math.max(o,t.duration)),this._total+=n,this._loop=!!t.loop,this._to=ki([t.to,e,s,t.from]),this._from=ki([t.from,s,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,i=this._duration,s=this._prop,n=this._from,o=this._loop,a=this._to;let r;if(this._active=n!==a&&(o||e1?2-r:r,r=this._easing(Math.min(1,Math.max(0,r))),this._target[s]=this._fn(n,a,r))}wait(){const t=this._promises||(this._promises=[]);return new Promise(((e,i)=>{t.push({res:e,rej:i})}))}_notify(t){const e=t?"res":"rej",i=this._promises||[];for(let t=0;t{const a=t[s];if(!o(a))return;const r={};for(const t of e)r[t]=a[t];(n(a.properties)&&a.properties||[s]).forEach((t=>{t!==s&&i.has(t)||i.set(t,r)}))}))}_animateOptions(t,e){const i=e.options,s=function(t,e){if(!e)return;let i=t.options;if(!i)return void(t.options=e);i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}}));return i}(t,i);if(!s)return[];const n=this._createAnimations(s,i);return i.$shared&&function(t,e){const i=[],s=Object.keys(e);for(let e=0;e{t.options=i}),(()=>{})),n}_createAnimations(t,e){const i=this._properties,s=[],n=t.$animations||(t.$animations={}),o=Object.keys(e),a=Date.now();let r;for(r=o.length-1;r>=0;--r){const l=o[r];if("$"===l.charAt(0))continue;if("options"===l){s.push(...this._animateOptions(t,e));continue}const h=e[l];let c=n[l];const d=i.get(l);if(c){if(d&&c.active()){c.update(d,h,a);continue}c.cancel()}d&&d.duration?(n[l]=c=new Ss(d,t,l,h),s.push(c)):t[l]=h}return s}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const i=this._createAnimations(t,e);return i.length?(xt.add(this._chart,i),!0):void 0}}function Ds(t,e){const i=t&&t.options||{},s=i.reverse,n=void 0===i.min?e:0,o=void 0===i.max?e:0;return{start:s?o:n,end:s?n:o}}function Cs(t,e){const i=[],s=t._getSortedDatasetMetas(e);let n,o;for(n=0,o=s.length;n0||!i&&e<0)return n.index}return null}function Es(t,e){const{chart:i,_cachedMeta:s}=t,n=i._stacks||(i._stacks={}),{iScale:o,vScale:a,index:r}=s,l=o.axis,h=a.axis,c=function(t,e,i){return`${t.id}.${e.id}.${i.stack||i.type}`}(o,a,s),d=e.length;let u;for(let t=0;ti[t].axis===e)).shift()}function Is(t,e){const i=t.controller.index,s=t.vScale&&t.vScale.axis;if(s){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[s]||void 0===e[s][i])return;delete e[s][i],void 0!==e[s]._visualValues&&void 0!==e[s]._visualValues[i]&&delete e[s]._visualValues[i]}}}const zs=t=>"reset"===t||"none"===t,Fs=(t,e)=>e?t:Object.assign({},t);class Vs{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=As(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&Is(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,i=this.getDataset(),s=(t,e,i,s)=>"x"===t?e:"r"===t?s:i,n=e.xAxisID=l(i.xAxisID,Rs(t,"x")),o=e.yAxisID=l(i.yAxisID,Rs(t,"y")),a=e.rAxisID=l(i.rAxisID,Rs(t,"r")),r=e.indexAxis,h=e.iAxisID=s(r,n,o,a),c=e.vAxisID=s(r,o,n,a);e.xScale=this.getScaleForId(n),e.yScale=this.getScaleForId(o),e.rScale=this.getScaleForId(a),e.iScale=this.getScaleForId(h),e.vScale=this.getScaleForId(c)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&rt(this._data,this),t._stacked&&Is(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(o(e))this._data=function(t){const e=Object.keys(t),i=new Array(e.length);let s,n,o;for(s=0,n=e.length;s0&&i._parsed[t-1];if(!1===this._parsing)i._parsed=s,i._sorted=!0,d=s;else{d=n(s[t])?this.parseArrayData(i,s,t,e):o(s[t])?this.parseObjectData(i,s,t,e):this.parsePrimitiveData(i,s,t,e);const a=()=>null===c[l]||f&&c[l]t&&!e.hidden&&e._stacked&&{keys:Cs(i,!0),values:null})(e,i,this.chart),h={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:c,max:d}=function(t){const{min:e,max:i,minDefined:s,maxDefined:n}=t.getUserBounds();return{min:s?e:Number.NEGATIVE_INFINITY,max:n?i:Number.POSITIVE_INFINITY}}(r);let u,f;function g(){f=s[u];const e=f[r.axis];return!a(f[t.axis])||c>e||d=0;--u)if(!g()){this.updateRangeFromParsed(h,t,f,l);break}return h}getAllParsedValues(t){const e=this._cachedMeta._parsed,i=[];let s,n,o;for(s=0,n=e.length;s=0&&tthis.getContext(i,s,e)),c);return f.$shared&&(f.$shared=r,n[o]=Object.freeze(Fs(f,r))),f}_resolveAnimations(t,e,i){const s=this.chart,n=this._cachedDataOpts,o=`animation-${e}`,a=n[o];if(a)return a;let r;if(!1!==s.options.animation){const s=this.chart.config,n=s.datasetAnimationScopeKeys(this._type,e),o=s.getOptionScopes(this.getDataset(),n);r=s.createResolver(o,this.getContext(t,i,e))}const l=new Ps(s,r&&r.animations);return r&&r._cacheable&&(n[o]=Object.freeze(l)),l}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||zs(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){const i=this.resolveDataElementOptions(t,e),s=this._sharedOptions,n=this.getSharedOptions(i),o=this.includeOptions(e,n)||n!==s;return this.updateSharedOptions(n,e,i),{sharedOptions:n,includeOptions:o}}updateElement(t,e,i,s){zs(s)?Object.assign(t,i):this._resolveAnimations(e,s).update(t,i)}updateSharedOptions(t,e,i){t&&!zs(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,s){t.active=s;const n=this.getStyle(e,s);this._resolveAnimations(e,i,s).update(t,{options:!s&&this.getSharedOptions(n)||n})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,i=this._cachedMeta.data;for(const[t,e,i]of this._syncList)this[t](e,i);this._syncList=[];const s=i.length,n=e.length,o=Math.min(n,s);o&&this.parse(0,o),n>s?this._insertElements(s,n-s,t):n{for(t.length+=e,a=t.length-1;a>=o;a--)t[a]=t[a-e]};for(r(n),a=t;a{s[t]=i[t]&&i[t].active()?i[t]._to:this[t]})),s}}function Ns(t,e){const i=t.options.ticks,n=function(t){const e=t.options.offset,i=t._tickSize(),s=t._length/i+(e?0:1),n=t._maxLength/i;return Math.floor(Math.min(s,n))}(t),o=Math.min(i.maxTicksLimit||n,n),a=i.major.enabled?function(t){const e=[];let i,s;for(i=0,s=t.length;io)return function(t,e,i,s){let n,o=0,a=i[0];for(s=Math.ceil(s),n=0;nn)return e}return Math.max(n,1)}(a,e,o);if(r>0){let t,i;const n=r>1?Math.round((h-l)/(r-1)):null;for(Ws(e,c,d,s(n)?0:l-n,l),t=0,i=r-1;t"top"===e||"left"===e?t[e]+i:t[e]-i,js=(t,e)=>Math.min(e||t,t);function $s(t,e){const i=[],s=t.length/e,n=t.length;let o=0;for(;oa+r)))return h}function Us(t){return t.drawTicks?t.tickLength:0}function Xs(t,e){if(!t.display)return 0;const i=wi(t.font,e),s=Mi(t.padding);return(n(t.text)?t.text.length:1)*i.lineHeight+s.height}function qs(t,e,i){let s=ut(t);return(i&&"right"!==e||!i&&"right"===e)&&(s=(t=>"left"===t?"right":"right"===t?"left":t)(s)),s}class Ks extends Bs{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:i,_suggestedMax:s}=this;return t=r(t,Number.POSITIVE_INFINITY),e=r(e,Number.NEGATIVE_INFINITY),i=r(i,Number.POSITIVE_INFINITY),s=r(s,Number.NEGATIVE_INFINITY),{min:r(t,i),max:r(e,s),minDefined:a(t),maxDefined:a(e)}}getMinMax(t){let e,{min:i,max:s,minDefined:n,maxDefined:o}=this.getUserBounds();if(n&&o)return{min:i,max:s};const a=this.getMatchingVisibleMetas();for(let r=0,l=a.length;rs?s:i,s=n&&i>s?i:s,{min:r(i,r(s,i)),max:r(s,r(i,s))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){d(this.options.beforeUpdate,[this])}update(t,e,i){const{beginAtZero:s,grace:n,ticks:o}=this.options,a=o.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=Si(this,n,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const r=a=n||i<=1||!this.isHorizontal())return void(this.labelRotation=s);const h=this._getLabelSizes(),c=h.widest.width,d=h.highest.height,u=J(this.chart.width-c,0,this.maxWidth);o=t.offset?this.maxWidth/i:u/(i-1),c+6>o&&(o=u/(i-(t.offset?.5:1)),a=this.maxHeight-Us(t.grid)-e.padding-Xs(t.title,this.chart.options.font),r=Math.sqrt(c*c+d*d),l=Y(Math.min(Math.asin(J((h.highest.height+6)/o,-1,1)),Math.asin(J(a/r,-1,1))-Math.asin(J(d/r,-1,1)))),l=Math.max(s,Math.min(n,l))),this.labelRotation=l}afterCalculateLabelRotation(){d(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){d(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:i,title:s,grid:n}}=this,o=this._isVisible(),a=this.isHorizontal();if(o){const o=Xs(s,e.options.font);if(a?(t.width=this.maxWidth,t.height=Us(n)+o):(t.height=this.maxHeight,t.width=Us(n)+o),i.display&&this.ticks.length){const{first:e,last:s,widest:n,highest:o}=this._getLabelSizes(),r=2*i.padding,l=$(this.labelRotation),h=Math.cos(l),c=Math.sin(l);if(a){const e=i.mirror?0:c*n.width+h*o.height;t.height=Math.min(this.maxHeight,t.height+e+r)}else{const e=i.mirror?0:h*n.width+c*o.height;t.width=Math.min(this.maxWidth,t.width+e+r)}this._calculatePadding(e,s,c,h)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,s){const{ticks:{align:n,padding:o},position:a}=this.options,r=0!==this.labelRotation,l="top"!==a&&"x"===this.axis;if(this.isHorizontal()){const a=this.getPixelForTick(0)-this.left,h=this.right-this.getPixelForTick(this.ticks.length-1);let c=0,d=0;r?l?(c=s*t.width,d=i*e.height):(c=i*t.height,d=s*e.width):"start"===n?d=e.width:"end"===n?c=t.width:"inner"!==n&&(c=t.width/2,d=e.width/2),this.paddingLeft=Math.max((c-a+o)*this.width/(this.width-a),0),this.paddingRight=Math.max((d-h+o)*this.width/(this.width-h),0)}else{let i=e.height/2,s=t.height/2;"start"===n?(i=0,s=t.height):"end"===n&&(i=e.height,s=0),this.paddingTop=i+o,this.paddingBottom=s+o}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){d(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||"bottom"===e||"x"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,i;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,i=t.length;e{const i=t.gc,s=i.length/2;let n;if(s>e){for(n=0;n({width:r[t]||0,height:l[t]||0});return{first:P(0),last:P(e-1),widest:P(k),highest:P(S),widths:r,heights:l}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return Q(this._alignToPixels?Oe(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&ta*s?a/i:r/s:r*s0}_computeGridLineItems(t){const e=this.axis,i=this.chart,s=this.options,{grid:n,position:a,border:r}=s,h=n.offset,c=this.isHorizontal(),d=this.ticks.length+(h?1:0),u=Us(n),f=[],g=r.setContext(this.getContext()),p=g.display?g.width:0,m=p/2,b=function(t){return Oe(i,t,p)};let x,_,y,v,M,w,k,S,P,D,C,O;if("top"===a)x=b(this.bottom),w=this.bottom-u,S=x-m,D=b(t.top)+m,O=t.bottom;else if("bottom"===a)x=b(this.top),D=t.top,O=b(t.bottom)-m,w=x+m,S=this.top+u;else if("left"===a)x=b(this.right),M=this.right-u,k=x-m,P=b(t.left)+m,C=t.right;else if("right"===a)x=b(this.left),P=t.left,C=b(t.right)-m,M=x+m,k=this.left+u;else if("x"===e){if("center"===a)x=b((t.top+t.bottom)/2+.5);else if(o(a)){const t=Object.keys(a)[0],e=a[t];x=b(this.chart.scales[t].getPixelForValue(e))}D=t.top,O=t.bottom,w=x+m,S=w+u}else if("y"===e){if("center"===a)x=b((t.left+t.right)/2);else if(o(a)){const t=Object.keys(a)[0],e=a[t];x=b(this.chart.scales[t].getPixelForValue(e))}M=x-m,k=M-u,P=t.left,C=t.right}const A=l(s.ticks.maxTicksLimit,d),T=Math.max(1,Math.ceil(d/A));for(_=0;_e.value===t));if(i>=0){return e.setContext(this.getContext(i)).lineWidth}return 0}drawGrid(t){const e=this.options.grid,i=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let n,o;const a=(t,e,s)=>{s.width&&s.color&&(i.save(),i.lineWidth=s.width,i.strokeStyle=s.color,i.setLineDash(s.borderDash||[]),i.lineDashOffset=s.borderDashOffset,i.beginPath(),i.moveTo(t.x,t.y),i.lineTo(e.x,e.y),i.stroke(),i.restore())};if(e.display)for(n=0,o=s.length;n{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:s,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",s=[];let n,o;for(n=0,o=e.length;n{const s=i.split("."),n=s.pop(),o=[t].concat(s).join("."),a=e[i].split("."),r=a.pop(),l=a.join(".");ue.route(o,n,l,r)}))}(e,t.defaultRoutes);t.descriptors&&ue.describe(e,t.descriptors)}(t,o,i),this.override&&ue.override(t.id,t.overrides)),o}get(t){return this.items[t]}unregister(t){const e=this.items,i=t.id,s=this.scope;i in e&&delete e[i],s&&i in ue[s]&&(delete ue[s][i],this.override&&delete re[i])}}class Zs{constructor(){this.controllers=new Gs(Vs,"datasets",!0),this.elements=new Gs(Bs,"elements"),this.plugins=new Gs(Object,"plugins"),this.scales=new Gs(Ks,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,i){[...e].forEach((e=>{const s=i||this._getRegistryForType(e);i||s.isForType(e)||s===this.plugins&&e.id?this._exec(t,s,e):u(e,(e=>{const s=i||this._getRegistryForType(e);this._exec(t,s,e)}))}))}_exec(t,e,i){const s=w(t);d(i["before"+s],[],i),e[t](i),d(i["after"+s],[],i)}_getRegistryForType(t){for(let e=0;et.filter((t=>!e.some((e=>t.plugin.id===e.plugin.id))));this._notify(s(e,i),t,"stop"),this._notify(s(i,e),t,"start")}}function tn(t,e){return e||!1!==t?!0===t?{}:t:null}function en(t,{plugin:e,local:i},s,n){const o=t.pluginScopeKeys(e),a=t.getOptionScopes(s,o);return i&&e.defaults&&a.push(e.defaults),t.createResolver(a,n,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function sn(t,e){const i=ue.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||i.indexAxis||"x"}function nn(t,e){if("x"===t||"y"===t||"r"===t)return t;var i;if(t=e.axis||("top"===(i=e.position)||"bottom"===i?"x":"left"===i||"right"===i?"y":void 0)||t.length>1&&nn(t[0].toLowerCase(),e))return t;throw new Error(`Cannot determine type of '${name}' axis. Please provide 'axis' or 'position' option.`)}function on(t){const e=t.options||(t.options={});e.plugins=l(e.plugins,{}),e.scales=function(t,e){const i=re[t.type]||{scales:{}},s=e.scales||{},n=sn(t.type,e),a=Object.create(null);return Object.keys(s).forEach((t=>{const e=s[t];if(!o(e))return console.error(`Invalid scale configuration for scale: ${t}`);if(e._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${t}`);const r=nn(t,e),l=function(t,e){return t===e?"_index_":"_value_"}(r,n),h=i.scales||{};a[t]=x(Object.create(null),[{axis:r},e,h[r],h[l]])})),t.data.datasets.forEach((i=>{const n=i.type||t.type,o=i.indexAxis||sn(n,e),r=(re[n]||{}).scales||{};Object.keys(r).forEach((t=>{const e=function(t,e){let i=t;return"_index_"===t?i=e:"_value_"===t&&(i="x"===e?"y":"x"),i}(t,o),n=i[e+"AxisID"]||e;a[n]=a[n]||Object.create(null),x(a[n],[{axis:e},s[n],r[t]])}))})),Object.keys(a).forEach((t=>{const e=a[t];x(e,[ue.scales[e.type],ue.scale])})),a}(t,e)}function an(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const rn=new Map,ln=new Set;function hn(t,e){let i=rn.get(t);return i||(i=e(),rn.set(t,i),ln.add(i)),i}const cn=(t,e,i)=>{const s=M(e,i);void 0!==s&&t.add(s)};class dn{constructor(t){this._config=function(t){return(t=t||{}).data=an(t.data),on(t),t}(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=an(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),on(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return hn(t,(()=>[[`datasets.${t}`,""]]))}datasetAnimationScopeKeys(t,e){return hn(`${t}.transition.${e}`,(()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]]))}datasetElementScopeKeys(t,e){return hn(`${t}-${e}`,(()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]]))}pluginScopeKeys(t){const e=t.id;return hn(`${this.type}-plugin-${e}`,(()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]]))}_cachedScopes(t,e){const i=this._scopeCache;let s=i.get(t);return s&&!e||(s=new Map,i.set(t,s)),s}getOptionScopes(t,e,i){const{options:s,type:n}=this,o=this._cachedScopes(t,i),a=o.get(e);if(a)return a;const r=new Set;e.forEach((e=>{t&&(r.add(t),e.forEach((e=>cn(r,t,e)))),e.forEach((t=>cn(r,s,t))),e.forEach((t=>cn(r,re[n]||{},t))),e.forEach((t=>cn(r,ue,t))),e.forEach((t=>cn(r,le,t)))}));const l=Array.from(r);return 0===l.length&&l.push(Object.create(null)),ln.has(e)&&o.set(e,l),l}chartOptionScopes(){const{options:t,type:e}=this;return[t,re[e]||{},ue.datasets[e]||{},{type:e},ue,le]}resolveNamedOptions(t,e,i,s=[""]){const o={$shared:!0},{resolver:a,subPrefixes:r}=un(this._resolverCache,t,s);let l=a;if(function(t,e){const{isScriptable:i,isIndexable:s}=$e(t);for(const o of e){const e=i(o),a=s(o),r=(a||e)&&t[o];if(e&&(S(r)||fn(r))||a&&n(r))return!0}return!1}(a,e)){o.$shared=!1;l=je(a,i=S(i)?i():i,this.createResolver(t,i,r))}for(const t of e)o[t]=l[t];return o}createResolver(t,e,i=[""],s){const{resolver:n}=un(this._resolverCache,t,i);return o(e)?je(n,e,void 0,s):n}}function un(t,e,i){let s=t.get(e);s||(s=new Map,t.set(e,s));const n=i.join();let o=s.get(n);if(!o){o={resolver:He(e,i),subPrefixes:i.filter((t=>!t.toLowerCase().includes("hover")))},s.set(n,o)}return o}const fn=t=>o(t)&&Object.getOwnPropertyNames(t).reduce(((e,i)=>e||S(t[i])),!1);const gn=["top","bottom","left","right","chartArea"];function pn(t,e){return"top"===t||"bottom"===t||-1===gn.indexOf(t)&&"x"===e}function mn(t,e){return function(i,s){return i[t]===s[t]?i[e]-s[e]:i[t]-s[t]}}function bn(t){const e=t.chart,i=e.options.animation;e.notifyPlugins("afterRender"),d(i&&i.onComplete,[t],e)}function xn(t){const e=t.chart,i=e.options.animation;d(i&&i.onProgress,[t],e)}function _n(t){return fe()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const yn={},vn=t=>{const e=_n(t);return Object.values(yn).filter((t=>t.canvas===e)).pop()};function Mn(t,e,i){const s=Object.keys(t);for(const n of s){const s=+n;if(s>=e){const o=t[n];delete t[n],(i>0||s>e)&&(t[s+i]=o)}}}class wn{static defaults=ue;static instances=yn;static overrides=re;static registry=Js;static version="4.2.1";static getChart=vn;static register(...t){Js.add(...t),kn()}static unregister(...t){Js.remove(...t),kn()}constructor(t,e){const s=this.config=new dn(e),n=_n(t),o=vn(n);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas with ID '"+o.canvas.id+"' can be reused.");const a=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||vs(n)),this.platform.updateConfig(s);const r=this.platform.acquireContext(n,a.aspectRatio),l=r&&r.canvas,h=l&&l.height,c=l&&l.width;this.id=i(),this.ctx=r,this.canvas=l,this.width=c,this.height=h,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Qs,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=dt((t=>this.update(t)),a.resizeDelay||0),this._dataChanges=[],yn[this.id]=this,r&&l?(xt.listen(this,"complete",bn),xt.listen(this,"progress",xn),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:n,_aspectRatio:o}=this;return s(t)?e&&o?o:n?i/n:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return Js}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():we(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Ae(this.canvas,this.ctx),this}stop(){return xt.stop(this),this}resize(t,e){xt.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const i=this.options,s=this.canvas,n=i.maintainAspectRatio&&this.aspectRatio,o=this.platform.getMaximumSize(s,t,e,n),a=i.devicePixelRatio||this.platform.getDevicePixelRatio(),r=this.width?"resize":"attach";this.width=o.width,this.height=o.height,this._aspectRatio=this.aspectRatio,we(this,a,!0)&&(this.notifyPlugins("resize",{size:o}),d(i.onResize,[this,o],this),this.attached&&this._doResize(r)&&this.render())}ensureScalesHaveIDs(){u(this.options.scales||{},((t,e)=>{t.id=e}))}buildOrUpdateScales(){const t=this.options,e=t.scales,i=this.scales,s=Object.keys(i).reduce(((t,e)=>(t[e]=!1,t)),{});let n=[];e&&(n=n.concat(Object.keys(e).map((t=>{const i=e[t],s=nn(t,i),n="r"===s,o="x"===s;return{options:i,dposition:n?"chartArea":o?"bottom":"left",dtype:n?"radialLinear":o?"category":"linear"}})))),u(n,(e=>{const n=e.options,o=n.id,a=nn(o,n),r=l(n.type,e.dtype);void 0!==n.position&&pn(n.position,a)===pn(e.dposition)||(n.position=e.dposition),s[o]=!0;let h=null;if(o in i&&i[o].type===r)h=i[o];else{h=new(Js.getScale(r))({id:o,type:r,ctx:this.ctx,chart:this}),i[h.id]=h}h.init(n,t)})),u(s,((t,e)=>{t||delete i[e]})),u(i,(t=>{ns.configure(this,t,t.options),ns.addBox(this,t)}))}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort(((t,e)=>t.index-e.index)),i>e){for(let t=e;te.length&&delete this._stacks,t.forEach(((t,i)=>{0===e.filter((e=>e===t._dataset)).length&&this._destroyDatasetMeta(i)}))}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let i,s;for(this._removeUnreferencedMetasets(),i=0,s=e.length;i{this.getDatasetMeta(e).controller.reset()}),this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;const n=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let o=0;for(let t=0,e=this.data.datasets.length;t{t.reset()})),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(mn("z","_idx"));const{_active:a,_lastEvent:r}=this;r?this._eventHandler(r,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){u(this.scales,(t=>{ns.removeBox(this,t)})),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);P(e,i)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:i,start:s,count:n}of e){Mn(t,s,"_removeElements"===i?-n:n)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,i=e=>new Set(t.filter((t=>t[0]===e)).map(((t,e)=>e+","+t.splice(1).join(",")))),s=i(0);for(let t=1;tt.split(","))).map((t=>({method:t[1],start:+t[2],count:+t[3]})))}_updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;ns.update(this,this.width,this.height,t);const e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],u(this.boxes,(t=>{i&&"chartArea"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))}),this),this._layers.forEach(((t,e)=>{t._idx=e})),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})){for(let t=0,e=this.data.datasets.length;t=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,i=t._clip,s=!i.disabled,n=function(t){const{xScale:e,yScale:i}=t;if(e&&i)return{left:e.left,right:e.right,top:i.top,bottom:i.bottom}}(t)||this.chartArea,o={meta:t,index:t.index,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetDraw",o)&&(s&&Re(e,{left:!1===i.left?0:n.left-i.left,right:!1===i.right?this.width:n.right+i.right,top:!1===i.top?0:n.top-i.top,bottom:!1===i.bottom?this.height:n.bottom+i.bottom}),t.controller.draw(),s&&Ie(e),o.cancelable=!1,this.notifyPlugins("afterDatasetDraw",o))}isPointInArea(t){return Ee(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,i,s){const n=Yi.modes[e];return"function"==typeof n?n(this,t,i,s):[]}getDatasetMeta(t){const e=this.data.datasets[t],i=this._metasets;let s=i.filter((t=>t&&t._dataset===e)).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=Pi(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const i=this.getDatasetMeta(t);return"boolean"==typeof i.hidden?!i.hidden:!e.hidden}setDatasetVisibility(t,e){this.getDatasetMeta(t).hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){const s=i?"show":"hide",n=this.getDatasetMeta(t),o=n.controller._resolveAnimations(void 0,s);k(e)?(n.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),o.update(n,{visible:i}),this.update((e=>e.datasetIndex===t?s:void 0)))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),xt.remove(this),t=0,e=this.data.datasets.length;t{e.addEventListener(this,i,s),t[i]=s},s=(t,e,i)=>{t.offsetX=e,t.offsetY=i,this._eventHandler(t)};u(this.options.events,(t=>i(t,s)))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,i=(i,s)=>{e.addEventListener(this,i,s),t[i]=s},s=(i,s)=>{t[i]&&(e.removeEventListener(this,i,s),delete t[i])},n=(t,e)=>{this.canvas&&this.resize(t,e)};let o;const a=()=>{s("attach",a),this.attached=!0,this.resize(),i("resize",n),i("detach",o)};o=()=>{this.attached=!1,s("resize",n),this._stop(),this._resize(0,0),i("attach",a)},e.isAttached(this.canvas)?a():o()}unbindEvents(){u(this._listeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._listeners={},u(this._responsiveListeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){const s=i?"set":"remove";let n,o,a,r;for("dataset"===e&&(n=this.getDatasetMeta(t[0].datasetIndex),n.controller["_"+s+"DatasetHoverStyle"]()),a=0,r=t.length;a{const i=this.getDatasetMeta(t);if(!i)throw new Error("No dataset found at index "+t);return{datasetIndex:t,element:i.data[e],index:e}}));!f(i,e)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}isPluginEnabled(t){return 1===this._plugins._cache.filter((e=>e.plugin.id===t)).length}_updateHoverStyles(t,e,i){const s=this.options.hover,n=(t,e)=>t.filter((t=>!e.some((e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)))),o=n(e,t),a=i?t:n(t,e);o.length&&this.updateHoverStyle(o,s.mode,!1),a.length&&s.mode&&this.updateHoverStyle(a,s.mode,!0)}_eventHandler(t,e){const i={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},s=e=>(e.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins("beforeEvent",i,s))return;const n=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,s),(n||i.changed)&&this.render(),this}_handleEvent(t,e,i){const{_active:s=[],options:n}=this,o=e,a=this._getActiveElements(t,s,i,o),r=D(t),l=function(t,e,i,s){return i&&"mouseout"!==t.type?s?e:t:null}(t,this._lastEvent,i,r);i&&(this._lastEvent=null,d(n.onHover,[t,a,this],this),r&&d(n.onClick,[t,a,this],this));const h=!f(a,s);return(h||e)&&(this._active=a,this._updateHoverStyles(a,s,e)),this._lastEvent=l,h}_getActiveElements(t,e,i,s){if("mouseout"===t.type)return[];if(!i)return e;const n=this.options.hover;return this.getElementsAtEventForMode(t,n.mode,n,s)}}function kn(){return u(wn.instances,(t=>t._plugins.invalidate()))}function Sn(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class Pn{static override(t){Object.assign(Pn.prototype,t)}constructor(t){this.options=t||{}}init(){}formats(){return Sn()}parse(){return Sn()}format(){return Sn()}add(){return Sn()}diff(){return Sn()}startOf(){return Sn()}endOf(){return Sn()}}var Dn={_date:Pn};function Cn(t){const e=t.iScale,i=function(t,e){if(!t._cache.$bar){const i=t.getMatchingVisibleMetas(e);let s=[];for(let e=0,n=i.length;et-e)))}return t._cache.$bar}(e,t.type);let s,n,o,a,r=e._length;const l=()=>{32767!==o&&-32768!==o&&(k(a)&&(r=Math.min(r,Math.abs(o-a)||r)),a=o)};for(s=0,n=i.length;sMath.abs(r)&&(l=r,h=a),e[i.axis]=h,e._custom={barStart:l,barEnd:h,start:n,end:o,min:a,max:r}}(t,e,i,s):e[i.axis]=i.parse(t,s),e}function An(t,e,i,s){const n=t.iScale,o=t.vScale,a=n.getLabels(),r=n===o,l=[];let h,c,d,u;for(h=i,c=i+s;ht.x,i="left",s="right"):(e=t.base"spacing"!==t,_indexable:t=>"spacing"!==t};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i,color:s}}=t.legend.options;return e.labels.map(((e,n)=>{const o=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,fontColor:s,lineWidth:o.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}}};constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){const i=this.getDataset().data,s=this._cachedMeta;if(!1===this._parsing)s._parsed=i;else{let n,a,r=t=>+i[t];if(o(i[t])){const{key:t="value"}=this._parsing;r=e=>+M(i[e],t)}for(n=t,a=t+e;nZ(t,r,l,!0)?1:Math.max(e,e*i,s,s*i),g=(t,e,s)=>Z(t,r,l,!0)?-1:Math.min(e,e*i,s,s*i),p=f(0,h,d),m=f(E,c,u),b=g(C,h,d),x=g(C+E,c,u);s=(p-b)/2,n=(m-x)/2,o=-(p+b)/2,a=-(m+x)/2}return{ratioX:s,ratioY:n,offsetX:o,offsetY:a}}(u,d,r),b=(i.width-o)/f,x=(i.height-o)/g,_=Math.max(Math.min(b,x)/2,0),y=c(this.options.radius,_),v=(y-Math.max(y*r,0))/this._getVisibleDatasetWeightTotal();this.offsetX=p*y,this.offsetY=m*y,s.total=this.calculateTotal(),this.outerRadius=y-v*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-v*l,0),this.updateElements(n,0,n.length,t)}_circumference(t,e){const i=this.options,s=this._cachedMeta,n=this._getCircumference();return e&&i.animation.animateRotate||!this.chart.getDataVisibility(t)||null===s._parsed[t]||s.data[t].hidden?0:this.calculateCircumference(s._parsed[t]*n/O)}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.chartArea,r=o.options.animation,l=(a.left+a.right)/2,h=(a.top+a.bottom)/2,c=n&&r.animateScale,d=c?0:this.innerRadius,u=c?0:this.outerRadius,{sharedOptions:f,includeOptions:g}=this._getSharedOptions(e,s);let p,m=this._getRotation();for(p=0;p0&&!isNaN(t)?O*(Math.abs(t)/e):0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=ne(e._parsed[t],i.options.locale);return{label:s[t]||"",value:n}}getMaxBorderWidth(t){let e=0;const i=this.chart;let s,n,o,a,r;if(!t)for(s=0,n=i.data.datasets.length;s{const o=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,fontColor:s,lineWidth:o.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=ne(e._parsed[t].r,i.options.locale);return{label:s[t]||"",value:n}}parseObjectData(t,e,i,s){return ei.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}getMinMax(){const t=this._cachedMeta,e={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach(((t,i)=>{const s=this.getParsed(i).r;!isNaN(s)&&this.chart.getDataVisibility(i)&&(se.max&&(e.max=s))})),e}_updateRadius(){const t=this.chart,e=t.chartArea,i=t.options,s=Math.min(e.right-e.left,e.bottom-e.top),n=Math.max(s/2,0),o=(n-Math.max(i.cutoutPercentage?n/100*i.cutoutPercentage:1,0))/t.getVisibleDatasetCount();this.outerRadius=n-o*this.index,this.innerRadius=this.outerRadius-o}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.options.animation,r=this._cachedMeta.rScale,l=r.xCenter,h=r.yCenter,c=r.getIndexAngle(0)-.5*C;let d,u=c;const f=360/this.countVisibleElements();for(d=0;d{!isNaN(this.getParsed(i).r)&&this.chart.getDataVisibility(i)&&e++})),e}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?$(this.resolveDataElementOptions(t,e).angle||i):0}}var Vn=Object.freeze({__proto__:null,BarController:class extends Vs{static id="bar";static defaults={datasetElementType:!1,dataElementType:"bar",categoryPercentage:.8,barPercentage:.9,grouped:!0,animations:{numbers:{type:"number",properties:["x","y","base","width","height"]}}};static overrides={scales:{_index_:{type:"category",offset:!0,grid:{offset:!0}},_value_:{type:"linear",beginAtZero:!0}}};parsePrimitiveData(t,e,i,s){return An(t,e,i,s)}parseArrayData(t,e,i,s){return An(t,e,i,s)}parseObjectData(t,e,i,s){const{iScale:n,vScale:o}=t,{xAxisKey:a="x",yAxisKey:r="y"}=this._parsing,l="x"===n.axis?a:r,h="x"===o.axis?a:r,c=[];let d,u,f,g;for(d=i,u=i+s;dt.controller.options.grouped)),o=i.options.stacked,a=[],r=t=>{const i=t.controller.getParsed(e),n=i&&i[t.vScale.axis];if(s(n)||isNaN(n))return!0};for(const i of n)if((void 0===e||!r(i))&&((!1===o||-1===a.indexOf(i.stack)||void 0===o&&void 0===i.stack)&&a.push(i.stack),i.index===t))break;return a.length||a.push(void 0),a}_getStackCount(t){return this._getStacks(void 0,t).length}_getStackIndex(t,e,i){const s=this._getStacks(t,i),n=void 0!==e?s.indexOf(e):-1;return-1===n?s.length-1:n}_getRuler(){const t=this.options,e=this._cachedMeta,i=e.iScale,s=[];let n,o;for(n=0,o=e.data.length;n=i?1:-1)}(u,e,r)*a,f===r&&(b-=u/2);const t=e.getPixelForDecimal(0),s=e.getPixelForDecimal(1),o=Math.min(t,s),h=Math.max(t,s);b=Math.max(Math.min(b,h),o),d=b+u,i&&!c&&(l._stacks[e.axis]._visualValues[n]=e.getValueForPixel(d)-e.getValueForPixel(b))}if(b===e.getPixelForValue(r)){const t=F(u)*e.getLineWidthForValue(r)/2;b+=t,u-=t}return{size:u,base:b,head:d,center:d+u/2}}_calculateBarIndexPixels(t,e){const i=e.scale,n=this.options,o=n.skipNull,a=l(n.maxBarThickness,1/0);let r,h;if(e.grouped){const i=o?this._getStackCount(t):e.stackCount,l="flex"===n.barThickness?function(t,e,i,s){const n=e.pixels,o=n[t];let a=t>0?n[t-1]:null,r=t=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:s,yScale:n}=e,o=this.getParsed(t),a=s.getLabelForValue(o.x),r=n.getLabelForValue(o.y),l=o._custom;return{label:i[t]||"",value:"("+a+", "+r+(l?", "+l:"")+")"}}update(t){const e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,s){const n="reset"===s,{iScale:o,vScale:a}=this._cachedMeta,{sharedOptions:r,includeOptions:l}=this._getSharedOptions(e,s),h=o.axis,c=a.axis;for(let d=e;d0&&this.getParsed(e-1);for(let i=0;i<_;++i){const g=t[i],_=b?g:{};if(i=x){_.skip=!0;continue}const v=this.getParsed(i),M=s(v[f]),w=_[u]=a.getPixelForValue(v[u],i),k=_[f]=o||M?r.getBasePixel():r.getPixelForValue(l?this.applyStack(r,v,l):v[f],i);_.skip=isNaN(w)||isNaN(k)||M,_.stop=i>0&&Math.abs(v[u]-y[u])>m,p&&(_.parsed=v,_.raw=h.data[i]),d&&(_.options=c||this.resolveDataElementOptions(i,g.active?"active":n)),b||this.updateElement(g,i,_,n),y=v}}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return i;const n=s[0].size(this.resolveDataElementOptions(0)),o=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(i,n,o)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}},PolarAreaController:Fn,PieController:class extends zn{static id="pie";static defaults={cutout:0,rotation:0,circumference:360,radius:"100%"}},RadarController:class extends Vs{static id="radar";static defaults={datasetElementType:"line",dataElementType:"point",indexAxis:"r",showLine:!0,elements:{line:{fill:"start"}}};static overrides={aspectRatio:1,scales:{r:{type:"radialLinear"}}};getLabelAndValue(t){const e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}parseObjectData(t,e,i,s){return ei.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta,i=e.dataset,s=e.data||[],n=e.iScale.getLabels();if(i.points=s,"resize"!==t){const e=this.resolveDatasetElementOptions(t);this.options.showLine||(e.borderWidth=0);const o={_loop:!0,_fullLoop:n.length===s.length,options:e};this.updateElement(i,void 0,o,t)}this.updateElements(s,0,s.length,t)}updateElements(t,e,i,s){const n=this._cachedMeta.rScale,o="reset"===s;for(let a=e;a0&&this.getParsed(e-1);for(let c=e;c0&&Math.abs(i[f]-_[f])>b,m&&(p.parsed=i,p.raw=h.data[c]),u&&(p.options=d||this.resolveDataElementOptions(c,e.active?"active":n)),x||this.updateElement(e,c,p,n),_=i}this.updateSharedOptions(d,n,c)}getMaxOverflow(){const t=this._cachedMeta,e=t.data||[];if(!this.options.showLine){let t=0;for(let i=e.length-1;i>=0;--i)t=Math.max(t,e[i].size(this.resolveDataElementOptions(i))/2);return t>0&&t}const i=t.dataset,s=i.options&&i.options.borderWidth||0;if(!e.length)return s;const n=e[0].size(this.resolveDataElementOptions(0)),o=e[e.length-1].size(this.resolveDataElementOptions(e.length-1));return Math.max(s,n,o)/2}}});function Bn(t,e,i,s){const n=_i(t.options.borderRadius,["outerStart","outerEnd","innerStart","innerEnd"]);const o=(i-e)/2,a=Math.min(o,s*e/2),r=t=>{const e=(i-Math.min(o,t))*s/2;return J(t,0,Math.min(o,e))};return{outerStart:r(n.outerStart),outerEnd:r(n.outerEnd),innerStart:J(n.innerStart,0,a),innerEnd:J(n.innerEnd,0,a)}}function Nn(t,e,i,s){return{x:i+t*Math.cos(e),y:s+t*Math.sin(e)}}function Wn(t,e,i,s,n,o){const{x:a,y:r,startAngle:l,pixelMargin:h,innerRadius:c}=e,d=Math.max(e.outerRadius+s+i-h,0),u=c>0?c+s+i+h:0;let f=0;const g=n-l;if(s){const t=((c>0?c-s:0)+(d>0?d-s:0))/2;f=(g-(0!==t?g*t/(t+s):g))/2}const p=(g-Math.max(.001,g*d-i/C)/d)/2,m=l+p+f,b=n-p-f,{outerStart:x,outerEnd:_,innerStart:y,innerEnd:v}=Bn(e,u,d,b-m),M=d-x,w=d-_,k=m+x/M,S=b-_/w,P=u+y,D=u+v,O=m+y/P,A=b-v/D;if(t.beginPath(),o){const e=(k+S)/2;if(t.arc(a,r,d,k,e),t.arc(a,r,d,e,S),_>0){const e=Nn(w,S,a,r);t.arc(e.x,e.y,_,S,b+E)}const i=Nn(D,b,a,r);if(t.lineTo(i.x,i.y),v>0){const e=Nn(D,A,a,r);t.arc(e.x,e.y,v,b+E,A+Math.PI)}const s=(b-v/u+(m+y/u))/2;if(t.arc(a,r,u,b-v/u,s,!0),t.arc(a,r,u,s,m+y/u,!0),y>0){const e=Nn(P,O,a,r);t.arc(e.x,e.y,y,O+Math.PI,m-E)}const n=Nn(M,m,a,r);if(t.lineTo(n.x,n.y),x>0){const e=Nn(M,k,a,r);t.arc(e.x,e.y,x,m-E,k)}}else{t.moveTo(a,r);const e=Math.cos(k)*d+a,i=Math.sin(k)*d+r;t.lineTo(e,i);const s=Math.cos(S)*d+a,n=Math.sin(S)*d+r;t.lineTo(s,n)}t.closePath()}function Hn(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r,options:l}=e,{borderWidth:h,borderJoinStyle:c}=l,d="inner"===l.borderAlign;if(!h)return;d?(t.lineWidth=2*h,t.lineJoin=c||"round"):(t.lineWidth=h,t.lineJoin=c||"bevel");let u=e.endAngle;if(o){Wn(t,e,i,s,u,n);for(let e=0;en?(h=n/l,t.arc(o,a,l,i+h,s-h,!0)):t.arc(o,a,n,i+E,s-E),t.closePath(),t.clip()}(t,e,u),o||(Wn(t,e,i,s,u,n),t.stroke())}function jn(t,e,i=e){t.lineCap=l(i.borderCapStyle,e.borderCapStyle),t.setLineDash(l(i.borderDash,e.borderDash)),t.lineDashOffset=l(i.borderDashOffset,e.borderDashOffset),t.lineJoin=l(i.borderJoinStyle,e.borderJoinStyle),t.lineWidth=l(i.borderWidth,e.borderWidth),t.strokeStyle=l(i.borderColor,e.borderColor)}function $n(t,e,i){t.lineTo(i.x,i.y)}function Yn(t,e,i={}){const s=t.length,{start:n=0,end:o=s-1}=i,{start:a,end:r}=e,l=Math.max(n,a),h=Math.min(o,r),c=nr&&o>r;return{count:s,start:l,loop:e.loop,ilen:h(a+(h?r-t:t))%o,_=()=>{f!==g&&(t.lineTo(m,g),t.lineTo(m,f),t.lineTo(m,p))};for(l&&(d=n[x(0)],t.moveTo(d.x,d.y)),c=0;c<=r;++c){if(d=n[x(c)],d.skip)continue;const e=d.x,i=d.y,s=0|e;s===u?(ig&&(g=i),m=(b*m+e)/++b):(_(),t.lineTo(e,i),u=s,b=0,f=g=i),p=i}_()}function qn(t){const e=t.options,i=e.borderDash&&e.borderDash.length;return!(t._decimated||t._loop||e.tension||"monotone"===e.cubicInterpolationMode||e.stepped||i)?Xn:Un}const Kn="function"==typeof Path2D;function Gn(t,e,i,s){Kn&&!e.options.segment?function(t,e,i,s){let n=e._path;n||(n=e._path=new Path2D,e.path(n,i,s)&&n.closePath()),jn(t,e.options),t.stroke(n)}(t,e,i,s):function(t,e,i,s){const{segments:n,options:o}=e,a=qn(e);for(const r of n)jn(t,o,r.style),t.beginPath(),a(t,e,r,{start:i,end:i+s-1})&&t.closePath(),t.stroke()}(t,e,i,s)}class Zn extends Bs{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:t=>"borderDash"!==t&&"fill"!==t};constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const i=this.options;if((i.tension||"monotone"===i.cubicInterpolationMode)&&!i.stepped&&!this._pointsUpdated){const s=i.spanGaps?this._loop:this._fullLoop;li(this._points,i,t,s,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=Ri(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){const i=this.options,s=t[e],n=this.points,o=Ei(this,{property:e,start:s,end:s});if(!o.length)return;const a=[],r=function(t){return t.stepped?gi:t.tension||"monotone"===t.cubicInterpolationMode?pi:fi}(i);let l,h;for(l=0,h=o.length;l=O||Z(n,a,r),g=tt(o,h+u,c+u);return f&&g}getCenterPoint(t){const{x:e,y:i,startAngle:s,endAngle:n,innerRadius:o,outerRadius:a}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],t),{offset:r,spacing:l}=this.options,h=(s+n)/2,c=(o+a+l+r)/2;return{x:e+Math.cos(h)*c,y:i+Math.sin(h)*c}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const{options:e,circumference:i}=this,s=(e.offset||0)/4,n=(e.spacing||0)/2,o=e.circular;if(this.pixelMargin="inner"===e.borderAlign?.33:0,this.fullCircles=i>O?Math.floor(i/O):0,0===i||this.innerRadius<0||this.outerRadius<0)return;t.save();const a=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(a)*s,Math.sin(a)*s);const r=s*(1-Math.sin(Math.min(C,i||0)));t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor,function(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r}=e;let l=e.endAngle;if(o){Wn(t,e,i,s,l,n);for(let e=0;e("string"==typeof e?(i=t.push(e)-1,s.unshift({index:i,label:e})):isNaN(e)&&(i=null),i))(t,e,i,s);return n!==t.lastIndexOf(e)?i:n}function ro(t){const e=this.getLabels();return t>=0&&ts=e?s:t,a=t=>n=i?n:t;if(t){const t=F(s),e=F(n);t<0&&e<0?a(0):t>0&&e>0&&o(0)}if(s===n){let e=0===n?1:Math.abs(.05*n);a(n+e),t||o(s-e)}this.min=s,this.max=n}getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:i,stepSize:s}=t;return s?(e=Math.ceil(this.max/s)-Math.floor(this.min/s)+1,e>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${e} ticks. Limiting to 1000.`),e=1e3)):(e=this.computeTickLimit(),i=i||11),i&&(e=Math.min(i,e)),e}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const n=function(t,e){const i=[],{bounds:n,step:o,min:a,max:r,precision:l,count:h,maxTicks:c,maxDigits:d,includeBounds:u}=t,f=o||1,g=c-1,{min:p,max:m}=e,b=!s(a),x=!s(r),_=!s(h),y=(m-p)/(d+1);let v,M,w,k,S=B((m-p)/g/f)*f;if(S<1e-14&&!b&&!x)return[{value:p},{value:m}];k=Math.ceil(m/S)-Math.floor(p/S),k>g&&(S=B(k*S/g/f)*f),s(l)||(v=Math.pow(10,l),S=Math.ceil(S*v)/v),"ticks"===n?(M=Math.floor(p/S)*S,w=Math.ceil(m/S)*S):(M=p,w=m),b&&x&&o&&H((r-a)/o,S/1e3)?(k=Math.round(Math.min((r-a)/S,c)),S=(r-a)/k,M=a,w=r):_?(M=b?a:M,w=x?r:w,k=h-1,S=(w-M)/k):(k=(w-M)/S,k=V(k,Math.round(k),S/1e3)?Math.round(k):Math.ceil(k));const P=Math.max(U(S),U(M));v=Math.pow(10,s(l)?P:l),M=Math.round(M*v)/v,w=Math.round(w*v)/v;let D=0;for(b&&(u&&M!==a?(i.push({value:a}),MMath.floor(z(t)),fo=(t,e)=>Math.pow(10,uo(t)+e);function go(t){return 1===t/Math.pow(10,uo(t))}function po(t,e,i){const s=Math.pow(10,i),n=Math.floor(t/s);return Math.ceil(e/s)-n}function mo(t,{min:e,max:i}){e=r(t.min,e);const s=[],n=uo(e);let o=function(t,e){let i=uo(e-t);for(;po(t,e,i)>10;)i++;for(;po(t,e,i)<10;)i--;return Math.min(i,uo(t))}(e,i),a=o<0?Math.pow(10,Math.abs(o)):1;const l=Math.pow(10,o),h=n>o?Math.pow(10,n):0,c=Math.round((e-h)*a)/a,d=Math.floor((e-h)/l/10)*l*10;let u=Math.floor((c-d)/Math.pow(10,o)),f=r(t.min,Math.round((h+d+u*Math.pow(10,o))*a)/a);for(;f=10?u=u<15?15:20:u++,u>=20&&(o++,u=2,a=o>=0?1:a),f=Math.round((h+d+u*Math.pow(10,o))*a)/a;const g=r(t.max,f);return s.push({value:g,major:go(g),significand:u}),s}class bo extends Ks{static id="logarithmic";static defaults={ticks:{callback:ae.formatters.logarithmic,major:{enabled:!0}}};constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,e){const i=ho.prototype.parse.apply(this,[t,e]);if(0!==i)return a(i)&&i>0?i:null;this._zero=!0}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=a(t)?Math.max(0,t):null,this.max=a(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!a(this._userMin)&&(this.min=t===fo(this.min,0)?fo(this.min,-1):fo(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let i=this.min,s=this.max;const n=e=>i=t?i:e,o=t=>s=e?s:t;i===s&&(i<=0?(n(1),o(10)):(n(fo(i,-1)),o(fo(s,1)))),i<=0&&n(fo(s,-1)),s<=0&&o(fo(i,1)),this.min=i,this.max=s}buildTicks(){const t=this.options,e=mo({min:this._userMin,max:this._userMax},this);return"ticks"===t.bounds&&j(e,this,"value"),t.reverse?(e.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),e}getLabelForValue(t){return void 0===t?"0":ne(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=z(t),this._valueRange=z(this.max)-z(t)}getPixelForValue(t){return void 0!==t&&0!==t||(t=this.min),null===t||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(z(t)-this._startValue)/this._valueRange)}getValueForPixel(t){const e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}}function xo(t){const e=t.ticks;if(e.display&&t.display){const t=Mi(e.backdropPadding);return l(e.font&&e.font.size,ue.font.size)+t.height}return 0}function _o(t,e,i,s,n){return t===s||t===n?{start:e-i/2,end:e+i/2}:tn?{start:e-i,end:e}:{start:e,end:e+i}}function yo(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},i=Object.assign({},e),s=[],o=[],a=t._pointLabels.length,r=t.options.pointLabels,l=r.centerPointLabels?C/a:0;for(let u=0;ue.r&&(r=(s.end-e.r)/o,t.r=Math.max(t.r,e.r+r)),n.starte.b&&(l=(n.end-e.b)/a,t.b=Math.max(t.b,e.b+l))}function Mo(t){return 0===t||180===t?"center":t<180?"left":"right"}function wo(t,e,i){return"right"===i?t-=e:"center"===i&&(t-=e/2),t}function ko(t,e,i){return 90===i||270===i?t-=e/2:(i>270||i<90)&&(t-=e),t}function So(t,e,i,s){const{ctx:n}=t;if(i)n.arc(t.xCenter,t.yCenter,e,0,O);else{let i=t.getPointPosition(0,e);n.moveTo(i.x,i.y);for(let o=1;ot,padding:5,centerPointLabels:!1}};static defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};static descriptors={angleLines:{_fallback:"grid"}};constructor(t){super(t),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){const t=this._padding=Mi(xo(this.options)/2),e=this.width=this.maxWidth-t.width,i=this.height=this.maxHeight-t.height;this.xCenter=Math.floor(this.left+e/2+t.left),this.yCenter=Math.floor(this.top+i/2+t.top),this.drawingArea=Math.floor(Math.min(e,i)/2)}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!1);this.min=a(t)&&!isNaN(t)?t:0,this.max=a(e)&&!isNaN(e)?e:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/xo(this.options))}generateTickLabels(t){ho.prototype.generateTickLabels.call(this,t),this._pointLabels=this.getLabels().map(((t,e)=>{const i=d(this.options.pointLabels.callback,[t,e],this);return i||0===i?i:""})).filter(((t,e)=>this.chart.getDataVisibility(e)))}fit(){const t=this.options;t.display&&t.pointLabels.display?yo(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,s){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,s))}getIndexAngle(t){return G(t*(O/(this._pointLabels.length||1))+$(this.options.startAngle||0))}getDistanceFromCenterForValue(t){if(s(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(s(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t=0;o--){const e=n.setContext(t.getPointLabelContext(o)),a=wi(e.font),{x:r,y:l,textAlign:h,left:c,top:d,right:u,bottom:f}=t._pointLabelItems[o],{backdropColor:g}=e;if(!s(g)){const t=vi(e.borderRadius),s=Mi(e.backdropPadding);i.fillStyle=g;const n=c-s.left,o=d-s.top,a=u-c+s.width,r=f-d+s.height;Object.values(t).some((t=>0!==t))?(i.beginPath(),We(i,{x:n,y:o,w:a,h:r,radius:t}),i.fill()):i.fillRect(n,o,a,r)}Ve(i,t._pointLabels[o],r,l+a.lineHeight/2,a,{color:e.color,textAlign:h,textBaseline:"middle"})}}(this,a),n.display&&this.ticks.forEach(((t,e)=>{if(0!==e){l=this.getDistanceFromCenterForValue(t.value);const i=this.getContext(e),s=n.setContext(i),r=o.setContext(i);!function(t,e,i,s,n){const o=t.ctx,a=e.circular,{color:r,lineWidth:l}=e;!a&&!s||!r||!l||i<0||(o.save(),o.strokeStyle=r,o.lineWidth=l,o.setLineDash(n.dash),o.lineDashOffset=n.dashOffset,o.beginPath(),So(t,i,a,s),o.closePath(),o.stroke(),o.restore())}(this,s,l,a,r)}})),i.display){for(t.save(),r=a-1;r>=0;r--){const s=i.setContext(this.getPointLabelContext(r)),{color:n,lineWidth:o}=s;o&&n&&(t.lineWidth=o,t.strokeStyle=n,t.setLineDash(s.borderDash),t.lineDashOffset=s.borderDashOffset,l=this.getDistanceFromCenterForValue(e.ticks.reverse?this.min:this.max),h=this.getPointPosition(r,l),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(h.x,h.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,i=e.ticks;if(!i.display)return;const s=this.getIndexAngle(0);let n,o;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach(((s,a)=>{if(0===a&&!e.reverse)return;const r=i.setContext(this.getContext(a)),l=wi(r.font);if(n=this.getDistanceFromCenterForValue(this.ticks[a].value),r.showLabelBackdrop){t.font=l.string,o=t.measureText(s.label).width,t.fillStyle=r.backdropColor;const e=Mi(r.backdropPadding);t.fillRect(-o/2-e.left,-n-l.size/2-e.top,o+e.width,l.size+e.height)}Ve(t,s.label,0,-n,l,{color:r.color})})),t.restore()}drawTitle(){}}const Do={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},Co=Object.keys(Do);function Oo(t,e){return t-e}function Ao(t,e){if(s(e))return null;const i=t._adapter,{parser:n,round:o,isoWeekday:r}=t._parseOpts;let l=e;return"function"==typeof n&&(l=n(l)),a(l)||(l="string"==typeof n?i.parse(l,n):i.parse(l)),null===l?null:(o&&(l="week"!==o||!W(r)&&!0!==r?i.startOf(l,o):i.startOf(l,"isoWeek",r)),+l)}function To(t,e,i,s){const n=Co.length;for(let o=Co.indexOf(t);o=e?i[s]:i[n]]=!0}}else t[e]=!0}function Eo(t,e,i){const s=[],n={},o=e.length;let a,r;for(a=0;a=0&&(e[l].major=!0);return e}(t,s,n,i):s}class Ro extends Ks{static id="time";static defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}};constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e={}){const i=t.time||(t.time={}),s=this._adapter=new Dn._date(t.adapters.date);s.init(e),x(i.displayFormats,s.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return void 0===t?null:Ao(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,e=this._adapter,i=t.time.unit||"day";let{min:s,max:n,minDefined:o,maxDefined:r}=this.getUserBounds();function l(t){o||isNaN(t.min)||(s=Math.min(s,t.min)),r||isNaN(t.max)||(n=Math.max(n,t.max))}o&&r||(l(this._getLabelBounds()),"ticks"===t.bounds&&"labels"===t.ticks.source||l(this.getMinMax(!1))),s=a(s)&&!isNaN(s)?s:+e.startOf(Date.now(),i),n=a(n)&&!isNaN(n)?n:+e.endOf(Date.now(),i)+1,this.min=Math.min(s,n-1),this.max=Math.max(s+1,n)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],i=t[t.length-1]),{min:e,max:i}}buildTicks(){const t=this.options,e=t.time,i=t.ticks,s="labels"===i.source?this.getLabelTimestamps():this._generate();"ticks"===t.bounds&&s.length&&(this.min=this._userMin||s[0],this.max=this._userMax||s[s.length-1]);const n=this.min,o=nt(s,n,this.max);return this._unit=e.unit||(i.autoSkip?To(e.minUnit,this.min,this.max,this._getLabelCapacity(n)):function(t,e,i,s,n){for(let o=Co.length-1;o>=Co.indexOf(i);o--){const i=Co[o];if(Do[i].common&&t._adapter.diff(n,s,i)>=e-1)return i}return Co[i?Co.indexOf(i):0]}(this,o.length,e.minUnit,this.min,this.max)),this._majorUnit=i.major.enabled&&"year"!==this._unit?function(t){for(let e=Co.indexOf(t)+1,i=Co.length;e+t.value)))}initOffsets(t=[]){let e,i,s=0,n=0;this.options.offset&&t.length&&(e=this.getDecimalForValue(t[0]),s=1===t.length?1-e:(this.getDecimalForValue(t[1])-e)/2,i=this.getDecimalForValue(t[t.length-1]),n=1===t.length?i:(i-this.getDecimalForValue(t[t.length-2]))/2);const o=t.length<3?.5:.25;s=J(s,0,o),n=J(n,0,o),this._offsets={start:s,end:n,factor:1/(s+1+n)}}_generate(){const t=this._adapter,e=this.min,i=this.max,s=this.options,n=s.time,o=n.unit||To(n.minUnit,e,i,this._getLabelCapacity(e)),a=l(s.ticks.stepSize,1),r="week"===o&&n.isoWeekday,h=W(r)||!0===r,c={};let d,u,f=e;if(h&&(f=+t.startOf(f,"isoWeek",r)),f=+t.startOf(f,h?"day":o),t.diff(i,e,o)>1e5*a)throw new Error(e+" and "+i+" are too far apart with stepSize of "+a+" "+o);const g="data"===s.ticks.source&&this.getDataTimestamps();for(d=f,u=0;dt-e)).map((t=>+t))}getLabelForValue(t){const e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}format(t,e){const i=this.options.time.displayFormats,s=this._unit,n=e||i[s];return this._adapter.format(t,n)}_tickFormatFunction(t,e,i,s){const n=this.options,o=n.ticks.callback;if(o)return d(o,[t,e,i],this);const a=n.time.displayFormats,r=this._unit,l=this._majorUnit,h=r&&a[r],c=l&&a[l],u=i[e],f=l&&c&&u&&u.major;return this._adapter.format(t,s||(f?c:h))}generateTickLabels(t){let e,i,s;for(e=0,i=t.length;e0?a:1}getDataTimestamps(){let t,e,i=this._cache.data||[];if(i.length)return i;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(t=0,e=s.length;t=t[r].pos&&e<=t[l].pos&&({lo:r,hi:l}=it(t,"pos",e)),({pos:s,time:o}=t[r]),({pos:n,time:a}=t[l])):(e>=t[r].time&&e<=t[l].time&&({lo:r,hi:l}=it(t,"time",e)),({time:s,pos:o}=t[r]),({time:n,pos:a}=t[l]));const h=n-s;return h?o+(a-o)*(e-s)/h:o}var zo=Object.freeze({__proto__:null,CategoryScale:class extends Ks{static id="category";static defaults={ticks:{callback:ro}};constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const e=this._addedLabels;if(e.length){const t=this.getLabels();for(const{index:i,label:s}of e)t[i]===s&&t.splice(i,1);this._addedLabels=[]}super.init(t)}parse(t,e){if(s(t))return null;const i=this.getLabels();return((t,e)=>null===t?null:J(Math.round(t),0,e))(e=isFinite(e)&&i[e]===t?e:ao(i,t,l(e,t),this._addedLabels),i.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let{min:i,max:s}=this.getMinMax(!0);"ticks"===this.options.bounds&&(t||(i=0),e||(s=this.getLabels().length-1)),this.min=i,this.max=s}buildTicks(){const t=this.min,e=this.max,i=this.options.offset,s=[];let n=this.getLabels();n=0===t&&e===n.length-1?n:n.slice(t,e+1),this._valueRange=Math.max(n.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let i=t;i<=e;i++)s.push({value:i});return s}getLabelForValue(t){return ro.call(this,t)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(t){return"number"!=typeof t&&(t=this.parse(t)),null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}},LinearScale:co,LogarithmicScale:bo,RadialLinearScale:Po,TimeScale:Ro,TimeSeriesScale:class extends Ro{static id="timeseries";static defaults=Ro.defaults;constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=Io(e,this.min),this._tableRange=Io(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:i}=this,s=[],n=[];let o,a,r,l,h;for(o=0,a=t.length;o=e&&l<=i&&s.push(l);if(s.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(o=0,a=s.length;ot.replace("rgb(","rgba(").replace(")",", 0.5)")));function Bo(t){return Fo[t%Fo.length]}function No(t){return Vo[t%Vo.length]}function Wo(t){let e=0;return(i,s)=>{const n=t.getDatasetMeta(s).controller;n instanceof zn?e=function(t,e){return t.backgroundColor=t.data.map((()=>Bo(e++))),e}(i,e):n instanceof Fn?e=function(t,e){return t.backgroundColor=t.data.map((()=>No(e++))),e}(i,e):n&&(e=function(t,e){return t.borderColor=Bo(e),t.backgroundColor=No(e),++e}(i,e))}}function Ho(t){let e;for(e in t)if(t[e].borderColor||t[e].backgroundColor)return!0;return!1}var jo={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(t,e,i){if(!i.enabled)return;const{data:{datasets:s},options:n}=t.config,{elements:o}=n;if(!i.forceOverride&&(Ho(s)||(a=n)&&(a.borderColor||a.backgroundColor)||o&&Ho(o)))return;var a;const r=Wo(t);s.forEach(r)}};function $o(t){if(t._decimated){const e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,writable:!0,value:e})}}function Yo(t){t.data.datasets.forEach((t=>{$o(t)}))}var Uo={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,i)=>{if(!i.enabled)return void Yo(t);const n=t.width;t.data.datasets.forEach(((e,o)=>{const{_data:a,indexAxis:r}=e,l=t.getDatasetMeta(o),h=a||e.data;if("y"===ki([r,t.options.indexAxis]))return;if(!l.controller.supportsDecimation)return;const c=t.scales[l.xAxisID];if("linear"!==c.type&&"time"!==c.type)return;if(t.options.parsing)return;let{start:d,count:u}=function(t,e){const i=e.length;let s,n=0;const{iScale:o}=t,{min:a,max:r,minDefined:l,maxDefined:h}=o.getUserBounds();return l&&(n=J(it(e,o.axis,a).lo,0,i-1)),s=h?J(it(e,o.axis,r).hi+1,n,i)-n:i-n,{start:n,count:s}}(l,h);if(u<=(i.threshold||4*n))return void $o(e);let f;switch(s(a)&&(e._data=h,delete e.data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(t){this._data=t}})),i.algorithm){case"lttb":f=function(t,e,i,s,n){const o=n.samples||s;if(o>=i)return t.slice(e,e+i);const a=[],r=(i-2)/(o-2);let l=0;const h=e+i-1;let c,d,u,f,g,p=e;for(a[l++]=t[p],c=0;cu&&(u=f,d=t[s],g=s);a[l++]=d,p=g}return a[l++]=t[h],a}(h,d,u,n,i);break;case"min-max":f=function(t,e,i,n){let o,a,r,l,h,c,d,u,f,g,p=0,m=0;const b=[],x=e+i-1,_=t[e].x,y=t[x].x-_;for(o=e;og&&(g=l,d=o),p=(m*p+a.x)/++m;else{const i=o-1;if(!s(c)&&!s(d)){const e=Math.min(c,d),s=Math.max(c,d);e!==u&&e!==i&&b.push({...t[e],x:p}),s!==u&&s!==i&&b.push({...t[s],x:p})}o>0&&i!==u&&b.push(t[i]),b.push(a),h=e,m=0,f=g=l,c=d=u=o}}return b}(h,d,u,n);break;default:throw new Error(`Unsupported decimation algorithm '${i.algorithm}'`)}e._decimated=f}))},destroy(t){Yo(t)}};function Xo(t,e,i,s){if(s)return;let n=e[t],o=i[t];return"angle"===t&&(n=G(n),o=G(o)),{property:t,start:n,end:o}}function qo(t,e,i){for(;e>t;e--){const t=i[e];if(!isNaN(t.x)&&!isNaN(t.y))break}return e}function Ko(t,e,i,s){return t&&e?s(t[i],e[i]):t?t[i]:e?e[i]:0}function Go(t,e){let i=[],s=!1;return n(t)?(s=!0,i=t):i=function(t,e){const{x:i=null,y:s=null}=t||{},n=e.points,o=[];return e.segments.forEach((({start:t,end:e})=>{e=qo(t,e,n);const a=n[t],r=n[e];null!==s?(o.push({x:a.x,y:s}),o.push({x:r.x,y:s})):null!==i&&(o.push({x:i,y:a.y}),o.push({x:i,y:r.y}))})),o}(t,e),i.length?new Zn({points:i,options:{tension:0},_loop:s,_fullLoop:s}):null}function Zo(t){return t&&!1!==t.fill}function Jo(t,e,i){let s=t[e].fill;const n=[e];let o;if(!i)return s;for(;!1!==s&&-1===n.indexOf(s);){if(!a(s))return s;if(o=t[s],!o)return!1;if(o.visible)return s;n.push(s),s=o.fill}return!1}function Qo(t,e,i){const s=function(t){const e=t.options,i=e.fill;let s=l(i&&i.target,i);void 0===s&&(s=!!e.backgroundColor);if(!1===s||null===s)return!1;if(!0===s)return"origin";return s}(t);if(o(s))return!isNaN(s.value)&&s;let n=parseFloat(s);return a(n)&&Math.floor(n)===n?function(t,e,i,s){"-"!==t&&"+"!==t||(i=e+i);if(i===e||i<0||i>=s)return!1;return i}(s[0],e,n,i):["origin","start","end","stack","shape"].indexOf(s)>=0&&s}function ta(t,e,i){const s=[];for(let n=0;n=0;--e){const i=n[e].$filler;i&&(i.line.updateControlPoints(o,i.axis),s&&i.fill&&na(t.ctx,i,o))}},beforeDatasetsDraw(t,e,i){if("beforeDatasetsDraw"!==i.drawTime)return;const s=t.getSortedVisibleDatasetMetas();for(let e=s.length-1;e>=0;--e){const i=s[e].$filler;Zo(i)&&na(t.ctx,i,t.chartArea)}},beforeDatasetDraw(t,e,i){const s=e.meta.$filler;Zo(s)&&"beforeDatasetDraw"===i.drawTime&&na(t.ctx,s,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const ca=(t,e)=>{let{boxHeight:i=e,boxWidth:s=e}=t;return t.usePointStyle&&(i=Math.min(i,e),s=t.pointStyleWidth||Math.min(s,e)),{boxWidth:s,boxHeight:i,itemHeight:Math.max(e,i)}};class da extends Bs{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=d(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter((e=>t.filter(e,this.chart.data)))),t.sort&&(e=e.sort(((e,i)=>t.sort(e,i,this.chart.data)))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width=this.height=0);const i=t.labels,s=wi(i.font),n=s.size,o=this._computeTitleHeight(),{boxWidth:a,itemHeight:r}=ca(i,n);let l,h;e.font=s.string,this.isHorizontal()?(l=this.maxWidth,h=this._fitRows(o,n,a,r)+10):(h=this.maxHeight,l=this._fitCols(o,s,a,r)+10),this.width=Math.min(l,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,i,s){const{ctx:n,maxWidth:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.lineWidths=[0],h=s+a;let c=t;n.textAlign="left",n.textBaseline="middle";let d=-1,u=-h;return this.legendItems.forEach(((t,f)=>{const g=i+e/2+n.measureText(t.text).width;(0===f||l[l.length-1]+g+2*a>o)&&(c+=h,l[l.length-(f>0?0:1)]=0,u+=h,d++),r[f]={left:0,top:u,row:d,width:g,height:s},l[l.length-1]+=g+a})),c}_fitCols(t,e,i,s){const{ctx:n,maxHeight:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.columnSizes=[],h=o-t;let c=a,d=0,u=0,f=0,g=0;return this.legendItems.forEach(((t,o)=>{const{itemWidth:p,itemHeight:m}=function(t,e,i,s,n){const o=function(t,e,i,s){let n=t.text;n&&"string"!=typeof n&&(n=n.reduce(((t,e)=>t.length>e.length?t:e)));return e+i.size/2+s.measureText(n).width}(s,t,e,i),a=function(t,e,i){let s=t;"string"!=typeof e.text&&(s=ua(e,i));return s}(n,s,e.lineHeight);return{itemWidth:o,itemHeight:a}}(i,e,n,t,s);o>0&&u+m+2*a>h&&(c+=d+a,l.push({width:d,height:u}),f+=d+a,g++,d=u=0),r[o]={left:f,top:u,col:g,width:p,height:m},d=Math.max(d,p),u+=m+a})),c+=d,l.push({width:d,height:u}),c}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:s},rtl:n}}=this,o=Di(n,this.left,this.width);if(this.isHorizontal()){let n=0,a=ft(i,this.left+s,this.right-this.lineWidths[n]);for(const r of e)n!==r.row&&(n=r.row,a=ft(i,this.left+s,this.right-this.lineWidths[n])),r.top+=this.top+t+s,r.left=o.leftForLtr(o.x(a),r.width),a+=r.width+s}else{let n=0,a=ft(i,this.top+t+s,this.bottom-this.columnSizes[n].height);for(const r of e)r.col!==n&&(n=r.col,a=ft(i,this.top+t+s,this.bottom-this.columnSizes[n].height)),r.top=a,r.left+=this.left+s,r.left=o.leftForLtr(o.x(r.left),r.width),a+=r.height+s}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){const t=this.ctx;Re(t,this),this._draw(),Ie(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:i,ctx:s}=this,{align:n,labels:o}=t,a=ue.color,r=Di(t.rtl,this.left,this.width),h=wi(o.font),{padding:c}=o,d=h.size,u=d/2;let f;this.drawTitle(),s.textAlign=r.textAlign("left"),s.textBaseline="middle",s.lineWidth=.5,s.font=h.string;const{boxWidth:g,boxHeight:p,itemHeight:m}=ca(o,d),b=this.isHorizontal(),x=this._computeTitleHeight();f=b?{x:ft(n,this.left+c,this.right-i[0]),y:this.top+c+x,line:0}:{x:this.left+c,y:ft(n,this.top+x+c,this.bottom-e[0].height),line:0},Ci(this.ctx,t.textDirection);const _=m+c;this.legendItems.forEach(((y,v)=>{s.strokeStyle=y.fontColor,s.fillStyle=y.fontColor;const M=s.measureText(y.text).width,w=r.textAlign(y.textAlign||(y.textAlign=o.textAlign)),k=g+u+M;let S=f.x,P=f.y;r.setWidth(this.width),b?v>0&&S+k+c>this.right&&(P=f.y+=_,f.line++,S=f.x=ft(n,this.left+c,this.right-i[f.line])):v>0&&P+_>this.bottom&&(S=f.x=S+e[f.line].width+c,f.line++,P=f.y=ft(n,this.top+x+c,this.bottom-e[f.line].height));if(function(t,e,i){if(isNaN(g)||g<=0||isNaN(p)||p<0)return;s.save();const n=l(i.lineWidth,1);if(s.fillStyle=l(i.fillStyle,a),s.lineCap=l(i.lineCap,"butt"),s.lineDashOffset=l(i.lineDashOffset,0),s.lineJoin=l(i.lineJoin,"miter"),s.lineWidth=n,s.strokeStyle=l(i.strokeStyle,a),s.setLineDash(l(i.lineDash,[])),o.usePointStyle){const a={radius:p*Math.SQRT2/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:n},l=r.xPlus(t,g/2);Le(s,a,l,e+u,o.pointStyleWidth&&g)}else{const o=e+Math.max((d-p)/2,0),a=r.leftForLtr(t,g),l=vi(i.borderRadius);s.beginPath(),Object.values(l).some((t=>0!==t))?We(s,{x:a,y:o,w:g,h:p,radius:l}):s.rect(a,o,g,p),s.fill(),0!==n&&s.stroke()}s.restore()}(r.x(S),P,y),S=gt(w,S+g+u,b?S+k:this.right,t.rtl),function(t,e,i){Ve(s,i.text,t,e+m/2,h,{strikethrough:i.hidden,textAlign:r.textAlign(i.textAlign)})}(r.x(S),P,y),b)f.x+=k+c;else if("string"!=typeof y.text){const t=h.lineHeight;f.y+=ua(y,t)}else f.y+=_})),Oi(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,i=wi(e.font),s=Mi(e.padding);if(!e.display)return;const n=Di(t.rtl,this.left,this.width),o=this.ctx,a=e.position,r=i.size/2,l=s.top+r;let h,c=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),h=this.top+l,c=ft(t.align,c,this.right-d);else{const e=this.columnSizes.reduce(((t,e)=>Math.max(t,e.height)),0);h=l+ft(t.align,this.top,this.bottom-e-t.labels.padding-this._computeTitleHeight())}const u=ft(a,c,c+d);o.textAlign=n.textAlign(ut(a)),o.textBaseline="middle",o.strokeStyle=e.color,o.fillStyle=e.color,o.font=i.string,Ve(o,e.text,u,h,i)}_computeTitleHeight(){const t=this.options.title,e=wi(t.font),i=Mi(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,s,n;if(tt(t,this.left,this.right)&&tt(e,this.top,this.bottom))for(n=this.legendHitBoxes,i=0;it.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:i,pointStyle:s,textAlign:n,color:o,useBorderRadius:a,borderRadius:r}}=t.legend.options;return t._getSortedDatasetMetas().map((t=>{const l=t.controller.getStyle(i?0:void 0),h=Mi(l.borderWidth);return{text:e[t.index].label,fillStyle:l.backgroundColor,fontColor:o,hidden:!t.visible,lineCap:l.borderCapStyle,lineDash:l.borderDash,lineDashOffset:l.borderDashOffset,lineJoin:l.borderJoinStyle,lineWidth:(h.width+h.height)/4,strokeStyle:l.borderColor,pointStyle:s||l.pointStyle,rotation:l.rotation,textAlign:n||l.textAlign,borderRadius:a&&(r||l.borderRadius),datasetIndex:t.index}}),this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class ga extends Bs{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const i=this.options;if(this.left=0,this.top=0,!i.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=t,this.height=this.bottom=e;const s=n(i.text)?i.text.length:1;this._padding=Mi(i.padding);const o=s*wi(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=o:this.width=o}isHorizontal(){const t=this.options.position;return"top"===t||"bottom"===t}_drawArgs(t){const{top:e,left:i,bottom:s,right:n,options:o}=this,a=o.align;let r,l,h,c=0;return this.isHorizontal()?(l=ft(a,i,n),h=e+t,r=n-i):("left"===o.position?(l=i+t,h=ft(a,s,e),c=-.5*C):(l=n-t,h=ft(a,e,s),c=.5*C),r=s-e),{titleX:l,titleY:h,maxWidth:r,rotation:c}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const i=wi(e.font),s=i.lineHeight/2+this._padding.top,{titleX:n,titleY:o,maxWidth:a,rotation:r}=this._drawArgs(s);Ve(t,e.text,0,0,i,{color:e.color,maxWidth:a,rotation:r,textAlign:ut(e.align),textBaseline:"middle",translation:[n,o]})}}var pa={id:"title",_element:ga,start(t,e,i){!function(t,e){const i=new ga({ctx:t.ctx,options:e,chart:t});ns.configure(t,i,e),ns.addBox(t,i),t.titleBlock=i}(t,i)},stop(t){const e=t.titleBlock;ns.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){const s=t.titleBlock;ns.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const ma=new WeakMap;var ba={id:"subtitle",start(t,e,i){const s=new ga({ctx:t.ctx,options:i,chart:t});ns.configure(t,s,i),ns.addBox(t,s),ma.set(t,s)},stop(t){ns.removeBox(t,ma.get(t)),ma.delete(t)},beforeUpdate(t,e,i){const s=ma.get(t);ns.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const xa={average(t){if(!t.length)return!1;let e,i,s=0,n=0,o=0;for(e=0,i=t.length;e-1?t.split("\n"):t}function va(t,e){const{element:i,datasetIndex:s,index:n}=e,o=t.getDatasetMeta(s).controller,{label:a,value:r}=o.getLabelAndValue(n);return{chart:t,label:a,parsed:o.getParsed(n),raw:t.data.datasets[s].data[n],formattedValue:r,dataset:o.getDataset(),dataIndex:n,datasetIndex:s,element:i}}function Ma(t,e){const i=t.chart.ctx,{body:s,footer:n,title:o}=t,{boxWidth:a,boxHeight:r}=e,l=wi(e.bodyFont),h=wi(e.titleFont),c=wi(e.footerFont),d=o.length,f=n.length,g=s.length,p=Mi(e.padding);let m=p.height,b=0,x=s.reduce(((t,e)=>t+e.before.length+e.lines.length+e.after.length),0);if(x+=t.beforeBody.length+t.afterBody.length,d&&(m+=d*h.lineHeight+(d-1)*e.titleSpacing+e.titleMarginBottom),x){m+=g*(e.displayColors?Math.max(r,l.lineHeight):l.lineHeight)+(x-g)*l.lineHeight+(x-1)*e.bodySpacing}f&&(m+=e.footerMarginTop+f*c.lineHeight+(f-1)*e.footerSpacing);let _=0;const y=function(t){b=Math.max(b,i.measureText(t).width+_)};return i.save(),i.font=h.string,u(t.title,y),i.font=l.string,u(t.beforeBody.concat(t.afterBody),y),_=e.displayColors?a+2+e.boxPadding:0,u(s,(t=>{u(t.before,y),u(t.lines,y),u(t.after,y)})),_=0,i.font=c.string,u(t.footer,y),i.restore(),b+=p.width,{width:b,height:m}}function wa(t,e,i,s){const{x:n,width:o}=i,{width:a,chartArea:{left:r,right:l}}=t;let h="center";return"center"===s?h=n<=(r+l)/2?"left":"right":n<=o/2?h="left":n>=a-o/2&&(h="right"),function(t,e,i,s){const{x:n,width:o}=s,a=i.caretSize+i.caretPadding;return"left"===t&&n+o+a>e.width||"right"===t&&n-o-a<0||void 0}(h,t,e,i)&&(h="center"),h}function ka(t,e,i){const s=i.yAlign||e.yAlign||function(t,e){const{y:i,height:s}=e;return it.height-s/2?"bottom":"center"}(t,i);return{xAlign:i.xAlign||e.xAlign||wa(t,e,i,s),yAlign:s}}function Sa(t,e,i,s){const{caretSize:n,caretPadding:o,cornerRadius:a}=t,{xAlign:r,yAlign:l}=i,h=n+o,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=vi(a);let g=function(t,e){let{x:i,width:s}=t;return"right"===e?i-=s:"center"===e&&(i-=s/2),i}(e,r);const p=function(t,e,i){let{y:s,height:n}=t;return"top"===e?s+=i:s-="bottom"===e?n+i:n/2,s}(e,l,h);return"center"===l?"left"===r?g+=h:"right"===r&&(g-=h):"left"===r?g-=Math.max(c,u)+n:"right"===r&&(g+=Math.max(d,f)+n),{x:J(g,0,s.width-e.width),y:J(p,0,s.height-e.height)}}function Pa(t,e,i){const s=Mi(i.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-s.right:t.x+s.left}function Da(t){return _a([],ya(t))}function Ca(t,e){const i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}const Oa={beforeTitle:e,title(t){if(t.length>0){const e=t[0],i=e.chart.data.labels,s=i?i.length:0;if(this&&this.options&&"dataset"===this.options.mode)return e.dataset.label||"";if(e.label)return e.label;if(s>0&&e.dataIndex{const e={before:[],lines:[],after:[]},n=Ca(i,t);_a(e.before,ya(Aa(n,"beforeLabel",this,t))),_a(e.lines,Aa(n,"label",this,t)),_a(e.after,ya(Aa(n,"afterLabel",this,t))),s.push(e)})),s}getAfterBody(t,e){return Da(Aa(e.callbacks,"afterBody",this,t))}getFooter(t,e){const{callbacks:i}=e,s=Aa(i,"beforeFooter",this,t),n=Aa(i,"footer",this,t),o=Aa(i,"afterFooter",this,t);let a=[];return a=_a(a,ya(s)),a=_a(a,ya(n)),a=_a(a,ya(o)),a}_createItems(t){const e=this._active,i=this.chart.data,s=[],n=[],o=[];let a,r,l=[];for(a=0,r=e.length;at.filter(e,s,n,i)))),t.itemSort&&(l=l.sort(((e,s)=>t.itemSort(e,s,i)))),u(l,(e=>{const i=Ca(t.callbacks,e);s.push(Aa(i,"labelColor",this,e)),n.push(Aa(i,"labelPointStyle",this,e)),o.push(Aa(i,"labelTextColor",this,e))})),this.labelColors=s,this.labelPointStyles=n,this.labelTextColors=o,this.dataPoints=l,l}update(t,e){const i=this.options.setContext(this.getContext()),s=this._active;let n,o=[];if(s.length){const t=xa[i.position].call(this,s,this._eventPosition);o=this._createItems(i),this.title=this.getTitle(o,i),this.beforeBody=this.getBeforeBody(o,i),this.body=this.getBody(o,i),this.afterBody=this.getAfterBody(o,i),this.footer=this.getFooter(o,i);const e=this._size=Ma(this,i),a=Object.assign({},t,e),r=ka(this.chart,i,a),l=Sa(i,a,r,this.chart);this.xAlign=r.xAlign,this.yAlign=r.yAlign,n={opacity:1,x:l.x,y:l.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==this.opacity&&(n={opacity:0});this._tooltipItems=o,this.$context=void 0,n&&this._resolveAnimations().update(this,n),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,s){const n=this.getCaretPosition(t,i,s);e.lineTo(n.x1,n.y1),e.lineTo(n.x2,n.y2),e.lineTo(n.x3,n.y3)}getCaretPosition(t,e,i){const{xAlign:s,yAlign:n}=this,{caretSize:o,cornerRadius:a}=i,{topLeft:r,topRight:l,bottomLeft:h,bottomRight:c}=vi(a),{x:d,y:u}=t,{width:f,height:g}=e;let p,m,b,x,_,y;return"center"===n?(_=u+g/2,"left"===s?(p=d,m=p-o,x=_+o,y=_-o):(p=d+f,m=p+o,x=_-o,y=_+o),b=p):(m="left"===s?d+Math.max(r,h)+o:"right"===s?d+f-Math.max(l,c)-o:this.caretX,"top"===n?(x=u,_=x-o,p=m-o,b=m+o):(x=u+g,_=x+o,p=m+o,b=m-o),y=x),{x1:p,x2:m,x3:b,y1:x,y2:_,y3:y}}drawTitle(t,e,i){const s=this.title,n=s.length;let o,a,r;if(n){const l=Di(i.rtl,this.x,this.width);for(t.x=Pa(this,i.titleAlign,i),e.textAlign=l.textAlign(i.titleAlign),e.textBaseline="middle",o=wi(i.titleFont),a=i.titleSpacing,e.fillStyle=i.titleColor,e.font=o.string,r=0;r0!==t))?(t.beginPath(),t.fillStyle=n.multiKeyBackground,We(t,{x:e,y:p,w:h,h:l,radius:r}),t.fill(),t.stroke(),t.fillStyle=a.backgroundColor,t.beginPath(),We(t,{x:i,y:p+1,w:h-2,h:l-2,radius:r}),t.fill()):(t.fillStyle=n.multiKeyBackground,t.fillRect(e,p,h,l),t.strokeRect(e,p,h,l),t.fillStyle=a.backgroundColor,t.fillRect(i,p+1,h-2,l-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){const{body:s}=this,{bodySpacing:n,bodyAlign:o,displayColors:a,boxHeight:r,boxWidth:l,boxPadding:h}=i,c=wi(i.bodyFont);let d=c.lineHeight,f=0;const g=Di(i.rtl,this.x,this.width),p=function(i){e.fillText(i,g.x(t.x+f),t.y+d/2),t.y+=d+n},m=g.textAlign(o);let b,x,_,y,v,M,w;for(e.textAlign=o,e.textBaseline="middle",e.font=c.string,t.x=Pa(this,m,i),e.fillStyle=i.bodyColor,u(this.beforeBody,p),f=a&&"right"!==m?"center"===o?l/2+h:l+2+h:0,y=0,M=s.length;y0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,i=this.$animations,s=i&&i.x,n=i&&i.y;if(s||n){const i=xa[t.position].call(this,this._active,this._eventPosition);if(!i)return;const o=this._size=Ma(this,t),a=Object.assign({},i,this._size),r=ka(e,t,a),l=Sa(t,a,r,e);s._to===l.x&&n._to===l.y||(this.xAlign=r.xAlign,this.yAlign=r.yAlign,this.width=o.width,this.height=o.height,this.caretX=i.x,this.caretY=i.y,this._resolveAnimations().update(this,l))}}_willRender(){return!!this.opacity}draw(t){const e=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(e);const s={width:this.width,height:this.height},n={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const o=Mi(e.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&a&&(t.save(),t.globalAlpha=i,this.drawBackground(n,t,s,e),Ci(t,e.textDirection),n.y+=o.top,this.drawTitle(n,t,e),this.drawBody(n,t,e),this.drawFooter(n,t,e),Oi(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const i=this._active,s=t.map((({datasetIndex:t,index:e})=>{const i=this.chart.getDatasetMeta(t);if(!i)throw new Error("Cannot find a dataset at index "+t);return{datasetIndex:t,element:i.data[e],index:e}})),n=!f(i,s),o=this._positionChanged(s,e);(n||o)&&(this._active=s,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,n=this._active||[],o=this._getActiveElements(t,n,e,i),a=this._positionChanged(o,t),r=e||!f(o,n)||a;return r&&(this._active=o,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),r}_getActiveElements(t,e,i,s){const n=this.options;if("mouseout"===t.type)return[];if(!s)return e;const o=this.chart.getElementsAtEventForMode(t,n.mode,n,i);return n.reverse&&o.reverse(),o}_positionChanged(t,e){const{caretX:i,caretY:s,options:n}=this,o=xa[n.position].call(this,t,e);return!1!==o&&(i!==o.x||s!==o.y)}}var La={id:"tooltip",_element:Ta,positioners:xa,afterInit(t,e,i){i&&(t.tooltip=new Ta({chart:t,options:i}))},beforeUpdate(t,e,i){t.tooltip&&t.tooltip.initialize(i)},reset(t,e,i){t.tooltip&&t.tooltip.initialize(i)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const i={tooltip:e};if(!1===t.notifyPlugins("beforeTooltipDraw",{...i,cancelable:!0}))return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",i)}},afterEvent(t,e){if(t.tooltip){const i=e.replay;t.tooltip.handleEvent(e.event,i,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:Oa},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>"filter"!==t&&"itemSort"!==t&&"external"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};return wn.register(Vn,zo,oo,t),wn.helpers={...Vi},wn._adapters=Dn,wn.Animation=Ss,wn.Animations=Ps,wn.animator=xt,wn.controllers=Js.controllers.items,wn.DatasetController=Vs,wn.Element=Bs,wn.elements=oo,wn.Interaction=Yi,wn.layouts=ns,wn.platforms=Ms,wn.Scale=Ks,wn.Ticks=ae,Object.assign(wn,Vn,zo,oo,t,Ms),wn.Chart=wn,"undefined"!=typeof window&&(window.Chart=wn),wn})); +//# sourceMappingURL=chart.umd.js.map diff --git a/static/js/chartjs-adapter-date-fns.bundle.min.js b/static/js/chartjs-adapter-date-fns.bundle.min.js new file mode 100644 index 0000000..37bffe6 --- /dev/null +++ b/static/js/chartjs-adapter-date-fns.bundle.min.js @@ -0,0 +1,7 @@ +/*! + * chartjs-adapter-date-fns v3.0.0 + * https://www.chartjs.org + * (c) 2022 chartjs-adapter-date-fns Contributors + * Released under the MIT license + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(require("chart.js")):"function"==typeof define&&define.amd?define(["chart.js"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).Chart)}(this,(function(t){"use strict";function e(t){if(null===t||!0===t||!1===t)return NaN;var e=Number(t);return isNaN(e)?e:e<0?Math.ceil(e):Math.floor(e)}function r(t,e){if(e.length1?"s":"")+" required, but only "+e.length+" present")}function n(t){r(1,arguments);var e=Object.prototype.toString.call(t);return t instanceof Date||"object"==typeof t&&"[object Date]"===e?new Date(t.getTime()):"number"==typeof t||"[object Number]"===e?new Date(t):("string"!=typeof t&&"[object String]"!==e||"undefined"==typeof console||(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule"),console.warn((new Error).stack)),new Date(NaN))}function a(t,a){r(2,arguments);var i=n(t),o=e(a);return isNaN(o)?new Date(NaN):o?(i.setDate(i.getDate()+o),i):i}function i(t,a){r(2,arguments);var i=n(t),o=e(a);if(isNaN(o))return new Date(NaN);if(!o)return i;var u=i.getDate(),s=new Date(i.getTime());s.setMonth(i.getMonth()+o+1,0);var c=s.getDate();return u>=c?s:(i.setFullYear(s.getFullYear(),s.getMonth(),u),i)}function o(t,a){r(2,arguments);var i=n(t).getTime(),o=e(a);return new Date(i+o)}var u=36e5;function s(t,a){r(1,arguments);var i=a||{},o=i.locale,u=o&&o.options&&o.options.weekStartsOn,s=null==u?0:e(u),c=null==i.weekStartsOn?s:e(i.weekStartsOn);if(!(c>=0&&c<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var d=n(t),l=d.getDay(),f=(l0?1:o}function m(t){r(1,arguments);var e=n(t);return!isNaN(e)}function w(t,e){r(2,arguments);var a=n(t),i=n(e),o=a.getFullYear()-i.getFullYear(),u=a.getMonth()-i.getMonth();return 12*o+u}function g(t,e){r(2,arguments);var a=n(t),i=n(e);return a.getFullYear()-i.getFullYear()}function v(t,e){var r=t.getFullYear()-e.getFullYear()||t.getMonth()-e.getMonth()||t.getDate()-e.getDate()||t.getHours()-e.getHours()||t.getMinutes()-e.getMinutes()||t.getSeconds()-e.getSeconds()||t.getMilliseconds()-e.getMilliseconds();return r<0?-1:r>0?1:r}function y(t,e){r(2,arguments);var a=n(t),i=n(e),o=v(a,i),u=Math.abs(f(a,i));a.setDate(a.getDate()-o*u);var s=v(a,i)===-o,c=o*(u-s);return 0===c?0:c}function b(t,e){r(2,arguments);var a=n(t),i=n(e);return a.getTime()-i.getTime()}var T=36e5;function p(t){r(1,arguments);var e=n(t);return e.setHours(23,59,59,999),e}function C(t){r(1,arguments);var e=n(t),a=e.getMonth();return e.setFullYear(e.getFullYear(),a+1,0),e.setHours(23,59,59,999),e}function M(t){r(1,arguments);var e=n(t);return p(e).getTime()===C(e).getTime()}function D(t,e){r(2,arguments);var a,i=n(t),o=n(e),u=h(i,o),s=Math.abs(w(i,o));if(s<1)a=0;else{1===i.getMonth()&&i.getDate()>27&&i.setDate(30),i.setMonth(i.getMonth()-u*s);var c=h(i,o)===-u;M(n(t))&&1===s&&1===h(t,o)&&(c=!1),a=u*(s-c)}return 0===a?0:a}var x={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};function k(t){return function(e){var r=e||{},n=r.width?String(r.width):t.defaultWidth;return t.formats[n]||t.formats[t.defaultWidth]}}var U={date:k({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:k({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:k({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},Y={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"};function N(t){return function(e,r){var n,a=r||{};if("formatting"===(a.context?String(a.context):"standalone")&&t.formattingValues){var i=t.defaultFormattingWidth||t.defaultWidth,o=a.width?String(a.width):i;n=t.formattingValues[o]||t.formattingValues[i]}else{var u=t.defaultWidth,s=a.width?String(a.width):t.defaultWidth;n=t.values[s]||t.values[u]}return n[t.argumentCallback?t.argumentCallback(e):e]}}function S(t){return function(e,r){var n=String(e),a=r||{},i=a.width,o=i&&t.matchPatterns[i]||t.matchPatterns[t.defaultMatchWidth],u=n.match(o);if(!u)return null;var s,c=u[0],d=i&&t.parsePatterns[i]||t.parsePatterns[t.defaultParseWidth];return s="[object Array]"===Object.prototype.toString.call(d)?function(t,e){for(var r=0;r0?"in "+n:n+" ago":n},formatLong:U,formatRelative:function(t,e,r,n){return Y[t]},localize:{ordinalNumber:function(t,e){var r=Number(t),n=r%100;if(n>20||n<10)switch(n%10){case 1:return r+"st";case 2:return r+"nd";case 3:return r+"rd"}return r+"th"},era:N({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:N({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:function(t){return Number(t)-1}}),month:N({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:N({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:N({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:(P={matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:function(t){return parseInt(t,10)}},function(t,e){var r=String(t),n=e||{},a=r.match(P.matchPattern);if(!a)return null;var i=a[0],o=r.match(P.parsePattern);if(!o)return null;var u=P.valueCallback?P.valueCallback(o[0]):o[0];return{value:u=n.valueCallback?n.valueCallback(u):u,rest:r.slice(i.length)}}),era:S({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:S({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:function(t){return t+1}}),month:S({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:S({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:S({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})},options:{weekStartsOn:0,firstWeekContainsDate:1}};function H(t,n){r(2,arguments);var a=e(n);return o(t,-a)}function E(t,e){for(var r=t<0?"-":"",n=Math.abs(t).toString();n.length0?r:1-r;return E("yy"===e?n%100:n,e.length)},M:function(t,e){var r=t.getUTCMonth();return"M"===e?String(r+1):E(r+1,2)},d:function(t,e){return E(t.getUTCDate(),e.length)},a:function(t,e){var r=t.getUTCHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return r.toUpperCase();case"aaa":return r;case"aaaaa":return r[0];default:return"am"===r?"a.m.":"p.m."}},h:function(t,e){return E(t.getUTCHours()%12||12,e.length)},H:function(t,e){return E(t.getUTCHours(),e.length)},m:function(t,e){return E(t.getUTCMinutes(),e.length)},s:function(t,e){return E(t.getUTCSeconds(),e.length)},S:function(t,e){var r=e.length,n=t.getUTCMilliseconds();return E(Math.floor(n*Math.pow(10,r-3)),e.length)}},F=864e5;function W(t){r(1,arguments);var e=1,a=n(t),i=a.getUTCDay(),o=(i=o.getTime()?a+1:e.getTime()>=s.getTime()?a:a-1}function Q(t){r(1,arguments);var e=L(t),n=new Date(0);n.setUTCFullYear(e,0,4),n.setUTCHours(0,0,0,0);var a=W(n);return a}var R=6048e5;function I(t){r(1,arguments);var e=n(t),a=W(e).getTime()-Q(e).getTime();return Math.round(a/R)+1}function G(t,a){r(1,arguments);var i=a||{},o=i.locale,u=o&&o.options&&o.options.weekStartsOn,s=null==u?0:e(u),c=null==i.weekStartsOn?s:e(i.weekStartsOn);if(!(c>=0&&c<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var d=n(t),l=d.getUTCDay(),f=(l=1&&l<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var f=new Date(0);f.setUTCFullYear(o+1,0,l),f.setUTCHours(0,0,0,0);var h=G(f,a),m=new Date(0);m.setUTCFullYear(o,0,l),m.setUTCHours(0,0,0,0);var w=G(m,a);return i.getTime()>=h.getTime()?o+1:i.getTime()>=w.getTime()?o:o-1}function j(t,n){r(1,arguments);var a=n||{},i=a.locale,o=i&&i.options&&i.options.firstWeekContainsDate,u=null==o?1:e(o),s=null==a.firstWeekContainsDate?u:e(a.firstWeekContainsDate),c=X(t,n),d=new Date(0);d.setUTCFullYear(c,0,s),d.setUTCHours(0,0,0,0);var l=G(d,n);return l}var B=6048e5;function z(t,e){r(1,arguments);var a=n(t),i=G(a,e).getTime()-j(a,e).getTime();return Math.round(i/B)+1}var A="midnight",Z="noon",K="morning",$="afternoon",_="evening",J="night",V={G:function(t,e,r){var n=t.getUTCFullYear()>0?1:0;switch(e){case"G":case"GG":case"GGG":return r.era(n,{width:"abbreviated"});case"GGGGG":return r.era(n,{width:"narrow"});default:return r.era(n,{width:"wide"})}},y:function(t,e,r){if("yo"===e){var n=t.getUTCFullYear(),a=n>0?n:1-n;return r.ordinalNumber(a,{unit:"year"})}return O.y(t,e)},Y:function(t,e,r,n){var a=X(t,n),i=a>0?a:1-a;return"YY"===e?E(i%100,2):"Yo"===e?r.ordinalNumber(i,{unit:"year"}):E(i,e.length)},R:function(t,e){return E(L(t),e.length)},u:function(t,e){return E(t.getUTCFullYear(),e.length)},Q:function(t,e,r){var n=Math.ceil((t.getUTCMonth()+1)/3);switch(e){case"Q":return String(n);case"QQ":return E(n,2);case"Qo":return r.ordinalNumber(n,{unit:"quarter"});case"QQQ":return r.quarter(n,{width:"abbreviated",context:"formatting"});case"QQQQQ":return r.quarter(n,{width:"narrow",context:"formatting"});default:return r.quarter(n,{width:"wide",context:"formatting"})}},q:function(t,e,r){var n=Math.ceil((t.getUTCMonth()+1)/3);switch(e){case"q":return String(n);case"qq":return E(n,2);case"qo":return r.ordinalNumber(n,{unit:"quarter"});case"qqq":return r.quarter(n,{width:"abbreviated",context:"standalone"});case"qqqqq":return r.quarter(n,{width:"narrow",context:"standalone"});default:return r.quarter(n,{width:"wide",context:"standalone"})}},M:function(t,e,r){var n=t.getUTCMonth();switch(e){case"M":case"MM":return O.M(t,e);case"Mo":return r.ordinalNumber(n+1,{unit:"month"});case"MMM":return r.month(n,{width:"abbreviated",context:"formatting"});case"MMMMM":return r.month(n,{width:"narrow",context:"formatting"});default:return r.month(n,{width:"wide",context:"formatting"})}},L:function(t,e,r){var n=t.getUTCMonth();switch(e){case"L":return String(n+1);case"LL":return E(n+1,2);case"Lo":return r.ordinalNumber(n+1,{unit:"month"});case"LLL":return r.month(n,{width:"abbreviated",context:"standalone"});case"LLLLL":return r.month(n,{width:"narrow",context:"standalone"});default:return r.month(n,{width:"wide",context:"standalone"})}},w:function(t,e,r,n){var a=z(t,n);return"wo"===e?r.ordinalNumber(a,{unit:"week"}):E(a,e.length)},I:function(t,e,r){var n=I(t);return"Io"===e?r.ordinalNumber(n,{unit:"week"}):E(n,e.length)},d:function(t,e,r){return"do"===e?r.ordinalNumber(t.getUTCDate(),{unit:"date"}):O.d(t,e)},D:function(t,e,a){var i=function(t){r(1,arguments);var e=n(t),a=e.getTime();e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0);var i=e.getTime(),o=a-i;return Math.floor(o/F)+1}(t);return"Do"===e?a.ordinalNumber(i,{unit:"dayOfYear"}):E(i,e.length)},E:function(t,e,r){var n=t.getUTCDay();switch(e){case"E":case"EE":case"EEE":return r.day(n,{width:"abbreviated",context:"formatting"});case"EEEEE":return r.day(n,{width:"narrow",context:"formatting"});case"EEEEEE":return r.day(n,{width:"short",context:"formatting"});default:return r.day(n,{width:"wide",context:"formatting"})}},e:function(t,e,r,n){var a=t.getUTCDay(),i=(a-n.weekStartsOn+8)%7||7;switch(e){case"e":return String(i);case"ee":return E(i,2);case"eo":return r.ordinalNumber(i,{unit:"day"});case"eee":return r.day(a,{width:"abbreviated",context:"formatting"});case"eeeee":return r.day(a,{width:"narrow",context:"formatting"});case"eeeeee":return r.day(a,{width:"short",context:"formatting"});default:return r.day(a,{width:"wide",context:"formatting"})}},c:function(t,e,r,n){var a=t.getUTCDay(),i=(a-n.weekStartsOn+8)%7||7;switch(e){case"c":return String(i);case"cc":return E(i,e.length);case"co":return r.ordinalNumber(i,{unit:"day"});case"ccc":return r.day(a,{width:"abbreviated",context:"standalone"});case"ccccc":return r.day(a,{width:"narrow",context:"standalone"});case"cccccc":return r.day(a,{width:"short",context:"standalone"});default:return r.day(a,{width:"wide",context:"standalone"})}},i:function(t,e,r){var n=t.getUTCDay(),a=0===n?7:n;switch(e){case"i":return String(a);case"ii":return E(a,e.length);case"io":return r.ordinalNumber(a,{unit:"day"});case"iii":return r.day(n,{width:"abbreviated",context:"formatting"});case"iiiii":return r.day(n,{width:"narrow",context:"formatting"});case"iiiiii":return r.day(n,{width:"short",context:"formatting"});default:return r.day(n,{width:"wide",context:"formatting"})}},a:function(t,e,r){var n=t.getUTCHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"});case"aaa":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return r.dayPeriod(n,{width:"narrow",context:"formatting"});default:return r.dayPeriod(n,{width:"wide",context:"formatting"})}},b:function(t,e,r){var n,a=t.getUTCHours();switch(n=12===a?Z:0===a?A:a/12>=1?"pm":"am",e){case"b":case"bb":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"});case"bbb":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return r.dayPeriod(n,{width:"narrow",context:"formatting"});default:return r.dayPeriod(n,{width:"wide",context:"formatting"})}},B:function(t,e,r){var n,a=t.getUTCHours();switch(n=a>=17?_:a>=12?$:a>=4?K:J,e){case"B":case"BB":case"BBB":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"});case"BBBBB":return r.dayPeriod(n,{width:"narrow",context:"formatting"});default:return r.dayPeriod(n,{width:"wide",context:"formatting"})}},h:function(t,e,r){if("ho"===e){var n=t.getUTCHours()%12;return 0===n&&(n=12),r.ordinalNumber(n,{unit:"hour"})}return O.h(t,e)},H:function(t,e,r){return"Ho"===e?r.ordinalNumber(t.getUTCHours(),{unit:"hour"}):O.H(t,e)},K:function(t,e,r){var n=t.getUTCHours()%12;return"Ko"===e?r.ordinalNumber(n,{unit:"hour"}):E(n,e.length)},k:function(t,e,r){var n=t.getUTCHours();return 0===n&&(n=24),"ko"===e?r.ordinalNumber(n,{unit:"hour"}):E(n,e.length)},m:function(t,e,r){return"mo"===e?r.ordinalNumber(t.getUTCMinutes(),{unit:"minute"}):O.m(t,e)},s:function(t,e,r){return"so"===e?r.ordinalNumber(t.getUTCSeconds(),{unit:"second"}):O.s(t,e)},S:function(t,e){return O.S(t,e)},X:function(t,e,r,n){var a=(n._originalDate||t).getTimezoneOffset();if(0===a)return"Z";switch(e){case"X":return et(a);case"XXXX":case"XX":return rt(a);default:return rt(a,":")}},x:function(t,e,r,n){var a=(n._originalDate||t).getTimezoneOffset();switch(e){case"x":return et(a);case"xxxx":case"xx":return rt(a);default:return rt(a,":")}},O:function(t,e,r,n){var a=(n._originalDate||t).getTimezoneOffset();switch(e){case"O":case"OO":case"OOO":return"GMT"+tt(a,":");default:return"GMT"+rt(a,":")}},z:function(t,e,r,n){var a=(n._originalDate||t).getTimezoneOffset();switch(e){case"z":case"zz":case"zzz":return"GMT"+tt(a,":");default:return"GMT"+rt(a,":")}},t:function(t,e,r,n){var a=n._originalDate||t;return E(Math.floor(a.getTime()/1e3),e.length)},T:function(t,e,r,n){return E((n._originalDate||t).getTime(),e.length)}};function tt(t,e){var r=t>0?"-":"+",n=Math.abs(t),a=Math.floor(n/60),i=n%60;if(0===i)return r+String(a);var o=e||"";return r+String(a)+o+E(i,2)}function et(t,e){return t%60==0?(t>0?"-":"+")+E(Math.abs(t)/60,2):rt(t,e)}function rt(t,e){var r=e||"",n=t>0?"-":"+",a=Math.abs(t);return n+E(Math.floor(a/60),2)+r+E(a%60,2)}var nt=V;function at(t,e){switch(t){case"P":return e.date({width:"short"});case"PP":return e.date({width:"medium"});case"PPP":return e.date({width:"long"});default:return e.date({width:"full"})}}function it(t,e){switch(t){case"p":return e.time({width:"short"});case"pp":return e.time({width:"medium"});case"ppp":return e.time({width:"long"});default:return e.time({width:"full"})}}var ot={p:it,P:function(t,e){var r,n=t.match(/(P+)(p+)?/),a=n[1],i=n[2];if(!i)return at(t,e);switch(a){case"P":r=e.dateTime({width:"short"});break;case"PP":r=e.dateTime({width:"medium"});break;case"PPP":r=e.dateTime({width:"long"});break;default:r=e.dateTime({width:"full"})}return r.replace("{{date}}",at(a,e)).replace("{{time}}",it(i,e))}},ut=ot,st=["D","DD"],ct=["YY","YYYY"];function dt(t){return-1!==st.indexOf(t)}function lt(t){return-1!==ct.indexOf(t)}function ft(t,e,r){if("YYYY"===t)throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(e,"`) for formatting years to the input `").concat(r,"`; see: https://git.io/fxCyr"));if("YY"===t)throw new RangeError("Use `yy` instead of `YY` (in `".concat(e,"`) for formatting years to the input `").concat(r,"`; see: https://git.io/fxCyr"));if("D"===t)throw new RangeError("Use `d` instead of `D` (in `".concat(e,"`) for formatting days of the month to the input `").concat(r,"`; see: https://git.io/fxCyr"));if("DD"===t)throw new RangeError("Use `dd` instead of `DD` (in `".concat(e,"`) for formatting days of the month to the input `").concat(r,"`; see: https://git.io/fxCyr"))}var ht=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,mt=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,wt=/^'([^]*?)'?$/,gt=/''/g,vt=/[a-zA-Z]/;function yt(t){return t.match(wt)[1].replace(gt,"'")}function bt(t,e){if(null==t)throw new TypeError("assign requires that input parameter not be null or undefined");for(var r in e=e||{})e.hasOwnProperty(r)&&(t[r]=e[r]);return t}function Tt(t,a,i){r(2,arguments);var o=i||{},u=o.locale,s=u&&u.options&&u.options.weekStartsOn,c=null==s?0:e(s),d=null==o.weekStartsOn?c:e(o.weekStartsOn);if(!(d>=0&&d<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var l=n(t),f=e(a),h=l.getUTCDay(),m=f%7,w=(m+7)%7,g=(w0,a=n?e:1-e;if(a<=50)r=t||100;else{var i=a+50;r=t+100*Math.floor(i/100)-(t>=i%100?100:0)}return n?r:1-r}var Jt=[31,28,31,30,31,30,31,31,30,31,30,31],Vt=[31,29,31,30,31,30,31,31,30,31,30,31];function te(t){return t%400==0||t%4==0&&t%100!=0}var ee={G:{priority:140,parse:function(t,e,r,n){switch(e){case"G":case"GG":case"GGG":return r.era(t,{width:"abbreviated"})||r.era(t,{width:"narrow"});case"GGGGG":return r.era(t,{width:"narrow"});default:return r.era(t,{width:"wide"})||r.era(t,{width:"abbreviated"})||r.era(t,{width:"narrow"})}},set:function(t,e,r,n){return e.era=r,t.setUTCFullYear(r,0,1),t.setUTCHours(0,0,0,0),t},incompatibleTokens:["R","u","t","T"]},y:{priority:130,parse:function(t,e,r,n){var a=function(t){return{year:t,isTwoDigitYear:"yy"===e}};switch(e){case"y":return Zt(4,t,a);case"yo":return r.ordinalNumber(t,{unit:"year",valueCallback:a});default:return Zt(e.length,t,a)}},validate:function(t,e,r){return e.isTwoDigitYear||e.year>0},set:function(t,e,r,n){var a=t.getUTCFullYear();if(r.isTwoDigitYear){var i=_t(r.year,a);return t.setUTCFullYear(i,0,1),t.setUTCHours(0,0,0,0),t}var o="era"in e&&1!==e.era?1-r.year:r.year;return t.setUTCFullYear(o,0,1),t.setUTCHours(0,0,0,0),t},incompatibleTokens:["Y","R","u","w","I","i","e","c","t","T"]},Y:{priority:130,parse:function(t,e,r,n){var a=function(t){return{year:t,isTwoDigitYear:"YY"===e}};switch(e){case"Y":return Zt(4,t,a);case"Yo":return r.ordinalNumber(t,{unit:"year",valueCallback:a});default:return Zt(e.length,t,a)}},validate:function(t,e,r){return e.isTwoDigitYear||e.year>0},set:function(t,e,r,n){var a=X(t,n);if(r.isTwoDigitYear){var i=_t(r.year,a);return t.setUTCFullYear(i,0,n.firstWeekContainsDate),t.setUTCHours(0,0,0,0),G(t,n)}var o="era"in e&&1!==e.era?1-r.year:r.year;return t.setUTCFullYear(o,0,n.firstWeekContainsDate),t.setUTCHours(0,0,0,0),G(t,n)},incompatibleTokens:["y","R","u","Q","q","M","L","I","d","D","i","t","T"]},R:{priority:130,parse:function(t,e,r,n){return Kt("R"===e?4:e.length,t)},set:function(t,e,r,n){var a=new Date(0);return a.setUTCFullYear(r,0,4),a.setUTCHours(0,0,0,0),W(a)},incompatibleTokens:["G","y","Y","u","Q","q","M","L","w","d","D","e","c","t","T"]},u:{priority:130,parse:function(t,e,r,n){return Kt("u"===e?4:e.length,t)},set:function(t,e,r,n){return t.setUTCFullYear(r,0,1),t.setUTCHours(0,0,0,0),t},incompatibleTokens:["G","y","Y","R","w","I","i","e","c","t","T"]},Q:{priority:120,parse:function(t,e,r,n){switch(e){case"Q":case"QQ":return Zt(e.length,t);case"Qo":return r.ordinalNumber(t,{unit:"quarter"});case"QQQ":return r.quarter(t,{width:"abbreviated",context:"formatting"})||r.quarter(t,{width:"narrow",context:"formatting"});case"QQQQQ":return r.quarter(t,{width:"narrow",context:"formatting"});default:return r.quarter(t,{width:"wide",context:"formatting"})||r.quarter(t,{width:"abbreviated",context:"formatting"})||r.quarter(t,{width:"narrow",context:"formatting"})}},validate:function(t,e,r){return e>=1&&e<=4},set:function(t,e,r,n){return t.setUTCMonth(3*(r-1),1),t.setUTCHours(0,0,0,0),t},incompatibleTokens:["Y","R","q","M","L","w","I","d","D","i","e","c","t","T"]},q:{priority:120,parse:function(t,e,r,n){switch(e){case"q":case"qq":return Zt(e.length,t);case"qo":return r.ordinalNumber(t,{unit:"quarter"});case"qqq":return r.quarter(t,{width:"abbreviated",context:"standalone"})||r.quarter(t,{width:"narrow",context:"standalone"});case"qqqqq":return r.quarter(t,{width:"narrow",context:"standalone"});default:return r.quarter(t,{width:"wide",context:"standalone"})||r.quarter(t,{width:"abbreviated",context:"standalone"})||r.quarter(t,{width:"narrow",context:"standalone"})}},validate:function(t,e,r){return e>=1&&e<=4},set:function(t,e,r,n){return t.setUTCMonth(3*(r-1),1),t.setUTCHours(0,0,0,0),t},incompatibleTokens:["Y","R","Q","M","L","w","I","d","D","i","e","c","t","T"]},M:{priority:110,parse:function(t,e,r,n){var a=function(t){return t-1};switch(e){case"M":return Bt(pt,t,a);case"MM":return Zt(2,t,a);case"Mo":return r.ordinalNumber(t,{unit:"month",valueCallback:a});case"MMM":return r.month(t,{width:"abbreviated",context:"formatting"})||r.month(t,{width:"narrow",context:"formatting"});case"MMMMM":return r.month(t,{width:"narrow",context:"formatting"});default:return r.month(t,{width:"wide",context:"formatting"})||r.month(t,{width:"abbreviated",context:"formatting"})||r.month(t,{width:"narrow",context:"formatting"})}},validate:function(t,e,r){return e>=0&&e<=11},set:function(t,e,r,n){return t.setUTCMonth(r,1),t.setUTCHours(0,0,0,0),t},incompatibleTokens:["Y","R","q","Q","L","w","I","D","i","e","c","t","T"]},L:{priority:110,parse:function(t,e,r,n){var a=function(t){return t-1};switch(e){case"L":return Bt(pt,t,a);case"LL":return Zt(2,t,a);case"Lo":return r.ordinalNumber(t,{unit:"month",valueCallback:a});case"LLL":return r.month(t,{width:"abbreviated",context:"standalone"})||r.month(t,{width:"narrow",context:"standalone"});case"LLLLL":return r.month(t,{width:"narrow",context:"standalone"});default:return r.month(t,{width:"wide",context:"standalone"})||r.month(t,{width:"abbreviated",context:"standalone"})||r.month(t,{width:"narrow",context:"standalone"})}},validate:function(t,e,r){return e>=0&&e<=11},set:function(t,e,r,n){return t.setUTCMonth(r,1),t.setUTCHours(0,0,0,0),t},incompatibleTokens:["Y","R","q","Q","M","w","I","D","i","e","c","t","T"]},w:{priority:100,parse:function(t,e,r,n){switch(e){case"w":return Bt(Dt,t);case"wo":return r.ordinalNumber(t,{unit:"week"});default:return Zt(e.length,t)}},validate:function(t,e,r){return e>=1&&e<=53},set:function(t,a,i,o){return G(function(t,a,i){r(2,arguments);var o=n(t),u=e(a),s=z(o,i)-u;return o.setUTCDate(o.getUTCDate()-7*s),o}(t,i,o),o)},incompatibleTokens:["y","R","u","q","Q","M","L","I","d","D","i","t","T"]},I:{priority:100,parse:function(t,e,r,n){switch(e){case"I":return Bt(Dt,t);case"Io":return r.ordinalNumber(t,{unit:"week"});default:return Zt(e.length,t)}},validate:function(t,e,r){return e>=1&&e<=53},set:function(t,a,i,o){return W(function(t,a){r(2,arguments);var i=n(t),o=e(a),u=I(i)-o;return i.setUTCDate(i.getUTCDate()-7*u),i}(t,i,o),o)},incompatibleTokens:["y","Y","u","q","Q","M","L","w","d","D","e","c","t","T"]},d:{priority:90,subPriority:1,parse:function(t,e,r,n){switch(e){case"d":return Bt(Ct,t);case"do":return r.ordinalNumber(t,{unit:"date"});default:return Zt(e.length,t)}},validate:function(t,e,r){var n=te(t.getUTCFullYear()),a=t.getUTCMonth();return n?e>=1&&e<=Vt[a]:e>=1&&e<=Jt[a]},set:function(t,e,r,n){return t.setUTCDate(r),t.setUTCHours(0,0,0,0),t},incompatibleTokens:["Y","R","q","Q","w","I","D","i","e","c","t","T"]},D:{priority:90,subPriority:1,parse:function(t,e,r,n){switch(e){case"D":case"DD":return Bt(Mt,t);case"Do":return r.ordinalNumber(t,{unit:"date"});default:return Zt(e.length,t)}},validate:function(t,e,r){return te(t.getUTCFullYear())?e>=1&&e<=366:e>=1&&e<=365},set:function(t,e,r,n){return t.setUTCMonth(0,r),t.setUTCHours(0,0,0,0),t},incompatibleTokens:["Y","R","q","Q","M","L","w","I","d","E","i","e","c","t","T"]},E:{priority:90,parse:function(t,e,r,n){switch(e){case"E":case"EE":case"EEE":return r.day(t,{width:"abbreviated",context:"formatting"})||r.day(t,{width:"short",context:"formatting"})||r.day(t,{width:"narrow",context:"formatting"});case"EEEEE":return r.day(t,{width:"narrow",context:"formatting"});case"EEEEEE":return r.day(t,{width:"short",context:"formatting"})||r.day(t,{width:"narrow",context:"formatting"});default:return r.day(t,{width:"wide",context:"formatting"})||r.day(t,{width:"abbreviated",context:"formatting"})||r.day(t,{width:"short",context:"formatting"})||r.day(t,{width:"narrow",context:"formatting"})}},validate:function(t,e,r){return e>=0&&e<=6},set:function(t,e,r,n){return(t=Tt(t,r,n)).setUTCHours(0,0,0,0),t},incompatibleTokens:["D","i","e","c","t","T"]},e:{priority:90,parse:function(t,e,r,n){var a=function(t){var e=7*Math.floor((t-1)/7);return(t+n.weekStartsOn+6)%7+e};switch(e){case"e":case"ee":return Zt(e.length,t,a);case"eo":return r.ordinalNumber(t,{unit:"day",valueCallback:a});case"eee":return r.day(t,{width:"abbreviated",context:"formatting"})||r.day(t,{width:"short",context:"formatting"})||r.day(t,{width:"narrow",context:"formatting"});case"eeeee":return r.day(t,{width:"narrow",context:"formatting"});case"eeeeee":return r.day(t,{width:"short",context:"formatting"})||r.day(t,{width:"narrow",context:"formatting"});default:return r.day(t,{width:"wide",context:"formatting"})||r.day(t,{width:"abbreviated",context:"formatting"})||r.day(t,{width:"short",context:"formatting"})||r.day(t,{width:"narrow",context:"formatting"})}},validate:function(t,e,r){return e>=0&&e<=6},set:function(t,e,r,n){return(t=Tt(t,r,n)).setUTCHours(0,0,0,0),t},incompatibleTokens:["y","R","u","q","Q","M","L","I","d","D","E","i","c","t","T"]},c:{priority:90,parse:function(t,e,r,n){var a=function(t){var e=7*Math.floor((t-1)/7);return(t+n.weekStartsOn+6)%7+e};switch(e){case"c":case"cc":return Zt(e.length,t,a);case"co":return r.ordinalNumber(t,{unit:"day",valueCallback:a});case"ccc":return r.day(t,{width:"abbreviated",context:"standalone"})||r.day(t,{width:"short",context:"standalone"})||r.day(t,{width:"narrow",context:"standalone"});case"ccccc":return r.day(t,{width:"narrow",context:"standalone"});case"cccccc":return r.day(t,{width:"short",context:"standalone"})||r.day(t,{width:"narrow",context:"standalone"});default:return r.day(t,{width:"wide",context:"standalone"})||r.day(t,{width:"abbreviated",context:"standalone"})||r.day(t,{width:"short",context:"standalone"})||r.day(t,{width:"narrow",context:"standalone"})}},validate:function(t,e,r){return e>=0&&e<=6},set:function(t,e,r,n){return(t=Tt(t,r,n)).setUTCHours(0,0,0,0),t},incompatibleTokens:["y","R","u","q","Q","M","L","I","d","D","E","i","e","t","T"]},i:{priority:90,parse:function(t,e,r,n){var a=function(t){return 0===t?7:t};switch(e){case"i":case"ii":return Zt(e.length,t);case"io":return r.ordinalNumber(t,{unit:"day"});case"iii":return r.day(t,{width:"abbreviated",context:"formatting",valueCallback:a})||r.day(t,{width:"short",context:"formatting",valueCallback:a})||r.day(t,{width:"narrow",context:"formatting",valueCallback:a});case"iiiii":return r.day(t,{width:"narrow",context:"formatting",valueCallback:a});case"iiiiii":return r.day(t,{width:"short",context:"formatting",valueCallback:a})||r.day(t,{width:"narrow",context:"formatting",valueCallback:a});default:return r.day(t,{width:"wide",context:"formatting",valueCallback:a})||r.day(t,{width:"abbreviated",context:"formatting",valueCallback:a})||r.day(t,{width:"short",context:"formatting",valueCallback:a})||r.day(t,{width:"narrow",context:"formatting",valueCallback:a})}},validate:function(t,e,r){return e>=1&&e<=7},set:function(t,a,i,o){return t=function(t,a){r(2,arguments);var i=e(a);i%7==0&&(i-=7);var o=1,u=n(t),s=u.getUTCDay(),c=((i%7+7)%7=1&&e<=12},set:function(t,e,r,n){var a=t.getUTCHours()>=12;return a&&r<12?t.setUTCHours(r+12,0,0,0):a||12!==r?t.setUTCHours(r,0,0,0):t.setUTCHours(0,0,0,0),t},incompatibleTokens:["H","K","k","t","T"]},H:{priority:70,parse:function(t,e,r,n){switch(e){case"H":return Bt(xt,t);case"Ho":return r.ordinalNumber(t,{unit:"hour"});default:return Zt(e.length,t)}},validate:function(t,e,r){return e>=0&&e<=23},set:function(t,e,r,n){return t.setUTCHours(r,0,0,0),t},incompatibleTokens:["a","b","h","K","k","t","T"]},K:{priority:70,parse:function(t,e,r,n){switch(e){case"K":return Bt(Ut,t);case"Ko":return r.ordinalNumber(t,{unit:"hour"});default:return Zt(e.length,t)}},validate:function(t,e,r){return e>=0&&e<=11},set:function(t,e,r,n){return t.getUTCHours()>=12&&r<12?t.setUTCHours(r+12,0,0,0):t.setUTCHours(r,0,0,0),t},incompatibleTokens:["a","b","h","H","k","t","T"]},k:{priority:70,parse:function(t,e,r,n){switch(e){case"k":return Bt(kt,t);case"ko":return r.ordinalNumber(t,{unit:"hour"});default:return Zt(e.length,t)}},validate:function(t,e,r){return e>=1&&e<=24},set:function(t,e,r,n){var a=r<=24?r%24:r;return t.setUTCHours(a,0,0,0),t},incompatibleTokens:["a","b","h","H","K","t","T"]},m:{priority:60,parse:function(t,e,r,n){switch(e){case"m":return Bt(Nt,t);case"mo":return r.ordinalNumber(t,{unit:"minute"});default:return Zt(e.length,t)}},validate:function(t,e,r){return e>=0&&e<=59},set:function(t,e,r,n){return t.setUTCMinutes(r,0,0),t},incompatibleTokens:["t","T"]},s:{priority:50,parse:function(t,e,r,n){switch(e){case"s":return Bt(St,t);case"so":return r.ordinalNumber(t,{unit:"second"});default:return Zt(e.length,t)}},validate:function(t,e,r){return e>=0&&e<=59},set:function(t,e,r,n){return t.setUTCSeconds(r,0),t},incompatibleTokens:["t","T"]},S:{priority:30,parse:function(t,e,r,n){return Zt(e.length,t,(function(t){return Math.floor(t*Math.pow(10,3-e.length))}))},set:function(t,e,r,n){return t.setUTCMilliseconds(r),t},incompatibleTokens:["t","T"]},X:{priority:10,parse:function(t,e,r,n){switch(e){case"X":return zt(Rt,t);case"XX":return zt(It,t);case"XXXX":return zt(Gt,t);case"XXXXX":return zt(jt,t);default:return zt(Xt,t)}},set:function(t,e,r,n){return e.timestampIsSet?t:new Date(t.getTime()-r)},incompatibleTokens:["t","T","x"]},x:{priority:10,parse:function(t,e,r,n){switch(e){case"x":return zt(Rt,t);case"xx":return zt(It,t);case"xxxx":return zt(Gt,t);case"xxxxx":return zt(jt,t);default:return zt(Xt,t)}},set:function(t,e,r,n){return e.timestampIsSet?t:new Date(t.getTime()-r)},incompatibleTokens:["t","T","X"]},t:{priority:40,parse:function(t,e,r,n){return At(t)},set:function(t,e,r,n){return[new Date(1e3*r),{timestampIsSet:!0}]},incompatibleTokens:"*"},T:{priority:20,parse:function(t,e,r,n){return At(t)},set:function(t,e,r,n){return[new Date(r),{timestampIsSet:!0}]},incompatibleTokens:"*"}},re=ee,ne=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,ae=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,ie=/^'([^]*?)'?$/,oe=/''/g,ue=/\S/,se=/[a-zA-Z]/;function ce(t,e){if(e.timestampIsSet)return t;var r=new Date(0);return r.setFullYear(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()),r.setHours(t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds(),t.getUTCMilliseconds()),r}function de(t){return t.match(ie)[1].replace(oe,"'")}var le=36e5,fe={dateTimeDelimiter:/[T ]/,timeZoneDelimiter:/[Z ]/i,timezone:/([Z+-].*)$/},he=/^-?(?:(\d{3})|(\d{2})(?:-?(\d{2}))?|W(\d{2})(?:-?(\d{1}))?|)$/,me=/^(\d{2}(?:[.,]\d*)?)(?::?(\d{2}(?:[.,]\d*)?))?(?::?(\d{2}(?:[.,]\d*)?))?$/,we=/^([+-])(\d{2})(?::?(\d{2}))?$/;function ge(t){var e,r={},n=t.split(fe.dateTimeDelimiter);if(n.length>2)return r;if(/:/.test(n[0])?(r.date=null,e=n[0]):(r.date=n[0],e=n[1],fe.timeZoneDelimiter.test(r.date)&&(r.date=t.split(fe.timeZoneDelimiter)[0],e=t.substr(r.date.length,t.length))),e){var a=fe.timezone.exec(e);a?(r.time=e.replace(a[1],""),r.timezone=a[1]):r.time=e}return r}function ve(t,e){var r=new RegExp("^(?:(\\d{4}|[+-]\\d{"+(4+e)+"})|(\\d{2}|[+-]\\d{"+(2+e)+"})$)"),n=t.match(r);if(!n)return{year:null};var a=n[1]&&parseInt(n[1]),i=n[2]&&parseInt(n[2]);return{year:null==i?a:100*i,restDateString:t.slice((n[1]||n[2]).length)}}function ye(t,e){if(null===e)return null;var r=t.match(he);if(!r)return null;var n=!!r[4],a=be(r[1]),i=be(r[2])-1,o=be(r[3]),u=be(r[4]),s=be(r[5])-1;if(n)return function(t,e,r){return e>=1&&e<=53&&r>=0&&r<=6}(0,u,s)?function(t,e,r){var n=new Date(0);n.setUTCFullYear(t,0,4);var a=n.getUTCDay()||7,i=7*(e-1)+r+1-a;return n.setUTCDate(n.getUTCDate()+i),n}(e,u,s):new Date(NaN);var c=new Date(0);return function(t,e,r){return e>=0&&e<=11&&r>=1&&r<=(Me[e]||(De(t)?29:28))}(e,i,o)&&function(t,e){return e>=1&&e<=(De(t)?366:365)}(e,a)?(c.setUTCFullYear(e,i,Math.max(a,o)),c):new Date(NaN)}function be(t){return t?parseInt(t):1}function Te(t){var e=t.match(me);if(!e)return null;var r=pe(e[1]),n=pe(e[2]),a=pe(e[3]);return function(t,e,r){if(24===t)return 0===e&&0===r;return r>=0&&r<60&&e>=0&&e<60&&t>=0&&t<25}(r,n,a)?r*le+6e4*n+1e3*a:NaN}function pe(t){return t&&parseFloat(t.replace(",","."))||0}function Ce(t){if("Z"===t)return 0;var e=t.match(we);if(!e)return 0;var r="+"===e[1]?-1:1,n=parseInt(e[2]),a=e[3]&&parseInt(e[3])||0;return function(t,e){return e>=0&&e<=59}(0,a)?r*(n*le+6e4*a):NaN}var Me=[31,null,31,30,31,30,31,31,30,31,30,31];function De(t){return t%400==0||t%4==0&&t%100}const xe={datetime:"MMM d, yyyy, h:mm:ss aaaa",millisecond:"h:mm:ss.SSS aaaa",second:"h:mm:ss aaaa",minute:"h:mm aaaa",hour:"ha",day:"MMM d",week:"PP",month:"MMM yyyy",quarter:"qqq - yyyy",year:"yyyy"};t._adapters._date.override({_id:"date-fns",formats:function(){return xe},parse:function(t,a){if(null==t)return null;const i=typeof t;return"number"===i||t instanceof Date?t=n(t):"string"===i&&(t="string"==typeof a?function(t,a,i,o){r(3,arguments);var u=String(t),s=String(a),d=o||{},l=d.locale||q;if(!l.match)throw new RangeError("locale must contain match property");var f=l.options&&l.options.firstWeekContainsDate,h=null==f?1:e(f),m=null==d.firstWeekContainsDate?h:e(d.firstWeekContainsDate);if(!(m>=1&&m<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var w=l.options&&l.options.weekStartsOn,g=null==w?0:e(w),v=null==d.weekStartsOn?g:e(d.weekStartsOn);if(!(v>=0&&v<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(""===s)return""===u?n(i):new Date(NaN);var y,b={firstWeekContainsDate:m,weekStartsOn:v,locale:l},T=[{priority:10,subPriority:-1,set:ce,index:0}],p=s.match(ae).map((function(t){var e=t[0];return"p"===e||"P"===e?(0,ut[e])(t,l.formatLong,b):t})).join("").match(ne),C=[];for(y=0;y0&&ue.test(u))return new Date(NaN);var P=T.map((function(t){return t.priority})).sort((function(t,e){return e-t})).filter((function(t,e,r){return r.indexOf(t)===e})).map((function(t){return T.filter((function(e){return e.priority===t})).sort((function(t,e){return e.subPriority-t.subPriority}))})).map((function(t){return t[0]})),E=n(i);if(isNaN(E))return new Date(NaN);var O=H(E,c(E)),F={};for(y=0;y=1&&f<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var h=s.options&&s.options.weekStartsOn,w=null==h?0:e(h),g=null==u.weekStartsOn?w:e(u.weekStartsOn);if(!(g>=0&&g<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!s.localize)throw new RangeError("locale must contain localize property");if(!s.formatLong)throw new RangeError("locale must contain formatLong property");var v=n(t);if(!m(v))throw new RangeError("Invalid time value");var y=c(v),b=H(v,y),T={firstWeekContainsDate:f,weekStartsOn:g,locale:s,_originalDate:v},p=o.match(mt).map((function(t){var e=t[0];return"p"===e||"P"===e?(0,ut[e])(t,s.formatLong,T):t})).join("").match(ht).map((function(e){if("''"===e)return"'";var r=e[0];if("'"===r)return yt(e);var n=nt[r];if(n)return!u.useAdditionalWeekYearTokens&<(e)&&ft(e,a,t),!u.useAdditionalDayOfYearTokens&&dt(e)&&ft(e,a,t),n(b,e,s.localize,T);if(r.match(vt))throw new RangeError("Format string contains an unescaped latin alphabet character `"+r+"`");return e})).join("");return p}(t,a,this.options)},add:function(t,n,s){switch(s){case"millisecond":return o(t,n);case"second":return function(t,n){r(2,arguments);var a=e(n);return o(t,1e3*a)}(t,n);case"minute":return function(t,n){r(2,arguments);var a=e(n);return o(t,6e4*a)}(t,n);case"hour":return function(t,n){r(2,arguments);var a=e(n);return o(t,a*u)}(t,n);case"day":return a(t,n);case"week":return function(t,n){r(2,arguments);var i=e(n),o=7*i;return a(t,o)}(t,n);case"month":return i(t,n);case"quarter":return function(t,n){r(2,arguments);var a=e(n),o=3*a;return i(t,o)}(t,n);case"year":return function(t,n){r(2,arguments);var a=e(n);return i(t,12*a)}(t,n);default:return t}},diff:function(t,e,a){switch(a){case"millisecond":return b(t,e);case"second":return function(t,e){r(2,arguments);var n=b(t,e)/1e3;return n>0?Math.floor(n):Math.ceil(n)}(t,e);case"minute":return function(t,e){r(2,arguments);var n=b(t,e)/6e4;return n>0?Math.floor(n):Math.ceil(n)}(t,e);case"hour":return function(t,e){r(2,arguments);var n=b(t,e)/T;return n>0?Math.floor(n):Math.ceil(n)}(t,e);case"day":return y(t,e);case"week":return function(t,e){r(2,arguments);var n=y(t,e)/7;return n>0?Math.floor(n):Math.ceil(n)}(t,e);case"month":return D(t,e);case"quarter":return function(t,e){r(2,arguments);var n=D(t,e)/3;return n>0?Math.floor(n):Math.ceil(n)}(t,e);case"year":return function(t,e){r(2,arguments);var a=n(t),i=n(e),o=h(a,i),u=Math.abs(g(a,i));a.setFullYear("1584"),i.setFullYear("1584");var s=h(a,i)===-o,c=o*(u-s);return 0===c?0:c}(t,e);default:return 0}},startOf:function(t,e,a){switch(e){case"second":return function(t){r(1,arguments);var e=n(t);return e.setMilliseconds(0),e}(t);case"minute":return function(t){r(1,arguments);var e=n(t);return e.setSeconds(0,0),e}(t);case"hour":return function(t){r(1,arguments);var e=n(t);return e.setMinutes(0,0,0),e}(t);case"day":return d(t);case"week":return s(t);case"isoWeek":return s(t,{weekStartsOn:+a});case"month":return function(t){r(1,arguments);var e=n(t);return e.setDate(1),e.setHours(0,0,0,0),e}(t);case"quarter":return function(t){r(1,arguments);var e=n(t),a=e.getMonth(),i=a-a%3;return e.setMonth(i,1),e.setHours(0,0,0,0),e}(t);case"year":return function(t){r(1,arguments);var e=n(t),a=new Date(0);return a.setFullYear(e.getFullYear(),0,1),a.setHours(0,0,0,0),a}(t);default:return t}},endOf:function(t,a){switch(a){case"second":return function(t){r(1,arguments);var e=n(t);return e.setMilliseconds(999),e}(t);case"minute":return function(t){r(1,arguments);var e=n(t);return e.setSeconds(59,999),e}(t);case"hour":return function(t){r(1,arguments);var e=n(t);return e.setMinutes(59,59,999),e}(t);case"day":return p(t);case"week":return function(t,a){r(1,arguments);var i=a||{},o=i.locale,u=o&&o.options&&o.options.weekStartsOn,s=null==u?0:e(u),c=null==i.weekStartsOn?s:e(i.weekStartsOn);if(!(c>=0&&c<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var d=n(t),l=d.getDay(),f=6+(lr.right&&(a|=2),er.bottom&&(a|=4),a}function u(t,e){var r,a,o=e.anchor,n=t;return e.clamp&&(n=function(t,e){for(var r,a,o,n=t.x0,i=t.y0,l=t.x1,u=t.y1,d=s(n,i,e),c=s(l,u,e);d|c&&!(d&c);)8&(r=d||c)?(a=n+(l-n)*(e.top-i)/(u-i),o=e.top):4&r?(a=n+(l-n)*(e.bottom-i)/(u-i),o=e.bottom):2&r?(o=i+(u-i)*(e.right-n)/(l-n),a=e.right):1&r&&(o=i+(u-i)*(e.left-n)/(l-n),a=e.left),r===d?d=s(n=a,i=o,e):c=s(l=a,u=o,e);return{x0:n,x1:l,y0:i,y1:u}}(n,e.area)),"start"===o?(r=n.x0,a=n.y0):"end"===o?(r=n.x1,a=n.y1):(r=(n.x0+n.x1)/2,a=(n.y0+n.y1)/2),function(t,e,r,a,o){switch(o){case"center":r=a=0;break;case"bottom":r=0,a=1;break;case"right":r=1,a=0;break;case"left":r=-1,a=0;break;case"top":r=0,a=-1;break;case"start":r=-r,a=-a;break;case"end":break;default:o*=Math.PI/180,r=Math.cos(o),a=Math.sin(o)}return{x:t,y:e,vx:r,vy:a}}(r,a,t.vx,t.vy,e.align)}var d=function(t,e){var r=(t.startAngle+t.endAngle)/2,a=Math.cos(r),o=Math.sin(r),n=t.innerRadius,i=t.outerRadius;return u({x0:t.x+a*n,y0:t.y+o*n,x1:t.x+a*i,y1:t.y+o*i,vx:a,vy:o},e)},c=function(t,e){var r=l(t,e.origin),a=r.x*t.options.radius,o=r.y*t.options.radius;return u({x0:t.x-a,y0:t.y-o,x1:t.x+a,y1:t.y+o,vx:r.x,vy:r.y},e)},h=function(t,e){var r=l(t,e.origin),a=t.x,o=t.y,n=0,i=0;return t.horizontal?(a=Math.min(t.x,t.base),n=Math.abs(t.base-t.x)):(o=Math.min(t.y,t.base),i=Math.abs(t.base-t.y)),u({x0:a,y0:o+i,x1:a+n,y1:o,vx:r.x,vy:r.y},e)},f=function(t,e){var r=l(t,e.origin);return u({x0:t.x,y0:t.y,x1:t.x,y1:t.y,vx:r.x,vy:r.y},e)},x=function(t){return Math.round(t*r)/r};function y(t,e){var r=e.chart.getDatasetMeta(e.datasetIndex).vScale;if(!r)return null;if(void 0!==r.xCenter&&void 0!==r.yCenter)return{x:r.xCenter,y:r.yCenter};var a=r.getBasePixel();return t.horizontal?{x:a,y:null}:{x:null,y:a}}function v(t,e,r){var a=r.backgroundColor,o=r.borderColor,n=r.borderWidth;(a||o&&n)&&(t.beginPath(),function(t,e,r,a,o,n){var i=Math.PI/2;if(n){var l=Math.min(n,o/2,a/2),s=e+l,u=r+l,d=e+a-l,c=r+o-l;t.moveTo(e,u),sr.x+r.w+2||t.y>r.y+r.h+2)},intersects:function(t){var e,r,a,o=this._points(),n=t._points(),i=[M(o[0],o[1]),M(o[0],o[3])];for(this._rotation!==t._rotation&&i.push(M(n[0],n[1]),M(n[0],n[3])),e=0;et.getProps([e],!0)[e]}),n=a.geometry(),i=$(l,a.model(),n),o._box.update(i,n,a.rotation()));(function(t,e){var r,a,o,n;for(r=t.length-1;r>=0;--r)for(o=t[r].$layout,a=r-1;a>=0&&o._visible;--a)(n=t[a].$layout)._visible&&o._box.intersects(n._box)&&e(o,n)})(t,(function(t,e){var r=t._hidable,a=e._hidable;r&&a||a?e._visible=!1:r&&(t._visible=!1)}))}(t)},lookup:function(t,e){var r,a;for(r=t.length-1;r>=0;--r)if((a=t[r].$layout)&&a._visible&&a._box.contains(e))return t[r];return null},draw:function(t,e){var r,a,o,n,i,l;for(r=0,a=e.length;r