From 7de1594e2f35077a50541a23607f453e423ff83e Mon Sep 17 00:00:00 2001 From: iOS Date: Thu, 20 Feb 2025 21:36:07 +0100 Subject: [PATCH] mid-feb flush --- .obsidian/icons/test-pack/IMG6265.png | Bin 0 -> 6456 bytes .obsidian/plugins/cron/data.json | 2 +- .obsidian/plugins/ledger-obsidian/data.json | 2 +- .obsidian/plugins/meld-encrypt/main.js | 7 +- .obsidian/plugins/meld-encrypt/manifest.json | 26 +- .obsidian/plugins/meld-encrypt/styles.css | 51 +- .../obsidian-activity-history/data.json | 150 +- .obsidian/plugins/obsidian-commits/data.json | 1365 +- .obsidian/plugins/obsidian-map-view/data.json | 26 +- .obsidian/plugins/obsidian-map-view/main.js | 125278 +++++++-------- .../plugins/obsidian-map-view/manifest.json | 2 +- .../plugins/obsidian-map-view/styles.css | 66 +- .../plugins/obsidian-media-db-plugin/main.js | 81 +- .../obsidian-media-db-plugin/manifest.json | 2 +- .../plugins/obsidian-read-it-later/main.js | 112 +- .../obsidian-read-it-later/manifest.json | 4 +- .../plugins/obsidian-reminder-plugin/main.js | 17183 +- .../obsidian-reminder-plugin/manifest.json | 2 +- .../obsidian-reminder-plugin/styles.css | 125 +- .../plugins/obsidian-tasks-plugin/main.js | 275 +- .../obsidian-tasks-plugin/manifest.json | 4 +- .obsidian/plugins/templater-obsidian/main.js | 4 +- .../plugins/templater-obsidian/manifest.json | 2 +- .obsidian/types.json | 28 + .obsidian/workspace-mobile.json | 118 +- 00.01 Admin/Calendars/2024-09-08.md | 2 +- 00.01 Admin/Calendars/2024-09-24.md | 2 +- 00.01 Admin/Calendars/2025-01-15.md | 7 +- 00.01 Admin/Calendars/2025-01-16.md | 134 + 00.01 Admin/Calendars/2025-01-17.md | 134 + 00.01 Admin/Calendars/2025-01-18.md | 140 + 00.01 Admin/Calendars/2025-01-19.md | 134 + 00.01 Admin/Calendars/2025-01-20.md | 134 + 00.01 Admin/Calendars/2025-01-21.md | 134 + 00.01 Admin/Calendars/2025-01-22.md | 136 + 00.01 Admin/Calendars/2025-01-23.md | 134 + 00.01 Admin/Calendars/2025-01-24.md | 134 + 00.01 Admin/Calendars/2025-01-25.md | 134 + 00.01 Admin/Calendars/2025-01-26.md | 134 + 00.01 Admin/Calendars/2025-01-27.md | 135 + 00.01 Admin/Calendars/2025-01-28.md | 134 + 00.01 Admin/Calendars/2025-01-29.md | 134 + 00.01 Admin/Calendars/2025-01-30.md | 134 + 00.01 Admin/Calendars/2025-01-31.md | 136 + 00.01 Admin/Calendars/2025-02-01.md | 136 + 00.01 Admin/Calendars/2025-02-02.md | 134 + 00.01 Admin/Calendars/2025-02-03.md | 137 + 00.01 Admin/Calendars/2025-02-04.md | 134 + 00.01 Admin/Calendars/2025-02-05.md | 134 + 00.01 Admin/Calendars/2025-02-06.md | 134 + 00.01 Admin/Calendars/2025-02-07.md | 134 + 00.01 Admin/Calendars/2025-02-08.md | 134 + 00.01 Admin/Calendars/2025-02-09.md | 134 + 00.01 Admin/Calendars/2025-02-10.md | 134 + 00.01 Admin/Calendars/2025-02-11.md | 134 + 00.01 Admin/Calendars/2025-02-12.md | 134 + 00.01 Admin/Calendars/2025-02-13.md | 134 + 00.01 Admin/Calendars/2025-02-14.md | 134 + 00.01 Admin/Calendars/2025-02-15.md | 136 + 00.01 Admin/Calendars/2025-02-16.md | 136 + 00.01 Admin/Calendars/2025-02-17.md | 134 + 00.01 Admin/Calendars/2025-02-18.md | 134 + 00.01 Admin/Calendars/2025-02-19.md | 134 + 00.01 Admin/Calendars/2025-02-20.md | 134 + .../Events/2023-01-23 🩺 Médecin.md | 13 + .../Events/2023-02-06 📠Genève.md | 12 + .../Events/2023-02-09 🩺 Médecin.md | 13 + .../2023-02-11 💠Mariage Eloi & Zélie.md | 91 + .../2023-02-19 ðŸŽžï¸ Tár @ Riff Raff.md | 13 + .../Events/2023-03-06 🩺 Médecin.md | 12 + ...023-03-11 🠠Marg & Arnold à Zürich.md | 13 + ...8 🇨🇭 Molly & boyfriend in Zürich.md | 12 + .../Events/2023-04-14 🩺 Médecin.md | 13 + .../Events/2023-12-21 🠠Arrivée Papa.md | 10 + .../Events/2023-12-27 🗼 Départ Papa.md | 10 + .../2025-01-25 âš½ï¸ PSG - Reims (1-1).md | 20 + ... ‘Saturday Night Live’ Cast Members.md | 171 + ...ng a new trail from Japan to the majors.md | 197 - ... of Killing Seven Babies. Did She Do It.md | 441 - 00.03 News/A Bullshit Genius.md | 102 - .... What Came After Has Stunned Everyone..md | 164 - ...drum The Story Behind the Rise of Hamas.md | 409 - 00.03 News/A Knife Forged in Fire.md | 230 - ...Fatal Plunge Into the London Underworld.md | 364 - ...rs High baseball team torn apart - ESPN.md | 298 - ...ell the Real Story of Human Trafficking.md | 172 - ...e to Live Becomes the Scene of a Murder.md | 201 + ...rs ago. His mother is still on the case.md | 567 - ...s Italy depopulates, wilderness is back.md | 175 - ... Black Bear Denning Secrets in Arkansas.md | 174 - ...G. Mian, Translated by Elettra Pauletto.md | 201 - ...itary Units Linked to Killings or Rapes.md | 94 - 00.03 News/Buying Baja Hakai Magazine.md | 232 - ...et’s Endurance Run The Untold History.md | 153 - ...Crime’s Latest U.S. Target Gift Cards.md | 104 - ...Cillian Murphy Is the Man of the Moment.md | 227 - 00.03 News/Dark Matter Hazlitt.md | 193 - ...ident López Obrador’s First Campaign.md | 248 - .../Eastern Promises Dylan Levi King.md | 117 + ...ntanyl, the portrait of a mass murderer.md | 403 - ... depression and the secret to happiness.md | 193 + ...Harassment, It’s Been More Harassment.md | 169 - ...ces to Sow Distrust in Public Education.md | 95 - 00.03 News/Fun is dead..md | 113 - ...ng America’s Illegal Marijuana Market.md | 373 - ...y Advanced Civilization Hiding on Earth.md | 71 - ... a Predator’ Done More Harm Than Good.md | 59 + ...n den USA mit Fasnacht und Urdemokratie.md | 134 - ...'s parks. Her methods are extraordinary.md | 185 + ...rgotten genius who changed British food.md | 193 - ...rthog. One Day, It Decided to Kill Him..md | 141 - 00.03 News/His Very Best (1924-2024).md | 10 +- ...n moves sanctioned oil around the world.md | 6 +- ...o Star in, Well, Pretty Much Everything.md | 180 - ...me the World’s Best Basketball Player.md | 136 - ...ed or Expelled, As Told by a Spycatcher.md | 159 - ...olving Immigrants in Mexico’s History.md | 234 - ...ng Ring and Ultimately Saved Each Other.md | 244 - ...ary in Colorado Supermax Federal Prison.md | 164 - ...ent’s Package Scam Came Crashing Down.md | 108 - ...How a Script Doctor Found His Own Voice.md | 183 - ...nge is turning camels into the new cows.md | 206 - ... in the World Was Created in Pittsburgh.md | 77 + .../Hvaldimir, the Whale Who Went AWOL.md | 80 - ...tigate International Formula Marketing..md | 83 - ...med the ‘Brat Pack’ - I Stand By It.md | 81 - ...hree decades on, I discovered the truth.md | 194 - ...age 49. Here’s why I have no regrets..md | 101 - ...e left. I hope my goodbye inspires you..md | 74 - ...Former President More Than $100 Million.md | 155 - 00.03 News/In the Land of the Very Old.md | 244 - ...the Glorious Afterlife of Roger Federer.md | 253 - ...ing World of Professional Slap Fighting.md | 234 - ...y, Secretive World of Glass-Eel Fishing.md | 199 - ...at bolster Boston’s lacking nightlife.md | 80 - ...e Life of the former Wirecard Executive.md | 430 - 00.03 News/Joe Biden’s Last Campaign.md | 320 - ...n Jesse Eisenberg’s ‘A Real Pain’.md | 88 + ...n The Black Caddies of Augusta National.md | 206 - ...ievous Vision for “The White Lotusâ€.md | 79 + ... Benefits From His Businesses, Campaign.md | 299 - ...uspect. Now, I’m looking for answers..md | 586 - ... AI to Translate the Herculaneum Papyri.md | 158 - ...y groups coerce children into self-harm.md | 256 - 00.03 News/On the Grid.md | 2 +- ...g. Wall Street's boys club ignored her..md | 139 - ...y journals, Science investigation finds.md | 143 - ...andscape and Abandonment — Switchyard.md | 2 +- ...freerider who took skiing to its limits.md | 214 - ...sination attempt - The Sunday Long Read.md | 95 + ...rporate owner chose profits over safety.md | 279 + ...ering the Lost Aviators of World War II.md | 237 - ... him a legend. Then one broke his neck..md | 438 - ...f an Alabama Pastor An American Tragedy.md | 471 - 00.03 News/Ripples of hate.md | 482 - ... Coming Schism in Orthodox Christianity.md | 206 - ...irst†Movement’s War Over Democracy.md | 243 - 00.03 News/Scent Makes a Place.md | 146 + ...ust, scandal in 1920s Baltimore society.md | 303 - ...Town Grapples With Its Divided Schools..md | 321 - ...s inside the dark heart of modern chess.md | 155 - ... Scams Are Driving Teen Boys to Suicide.md | 417 - ...ool America’s Hidden Education Crisis.md | 201 - ...le comes into focus - Los Angeles Times.md | 2 +- ...eal-Life Game of ‘Grand Theft Auto’.md | 167 + .../The (Many) Vintages of the Century.md | 100 - 00.03 News/The After Dark Bandit.md | 2 +- ...ornia Squatters Rights in Beverly Hills.md | 202 - ... Their Teams to Avoid Millions in Taxes.md | 259 - .../The Butterfly in the Prison Yard.md | 269 - ...he Excel superstars throw down in Vegas.md | 236 - ...blem and the Truth About Misinformation.md | 76 - ... University Displaced a Black Community.md | 122 - ...an Conflict and the Long Shadow of 1948.md | 139 - .../The Juror Who Found Herself Guilty.md | 390 - ... the Hollywood Classic “Mean Girlsâ€.md | 175 - 00.03 News/The New Rules.md | 377 - ...icon Valley Problem, by Andrew Cockburn.md | 104 - ...he Taylor Swift deepfakes are a warning.md | 194 - 00.03 News/The Worm Charmers.md | 107 - ...tch found the answer to burnout culture.md | 79 - ...ou inherit memories from your ancestors.md | 77 - 00.03 News/The fugitive prince.md | 301 + 00.03 News/The last days of Boston Market.md | 98 - ...e caregiver and the missing $30 million.md | 219 - 00.03 News/The rise and fall of robots.txt.md | 100 - ... a professional bridesmaid - The Hustle.md | 171 - ...cinemas in San Francisco - Gazetteer SF.md | 123 - ...ollar†Art Fraud That Shook the World.md | 152 - ...ey got soaring costs and a culture war..md | 172 - ...e force that isn't supposed to be fatal.md | 106 - ...cals She Found in Human Blood Were Safe.md | 258 - ...€˜The Black Swan Election’ - POLITICO.md | 2 +- ...Breslin and the Lost Rhythm of New York.md | 113 - ...k Gore the Last NFL Running Back - ESPN.md | 301 - ...o Northwestern University at Stateville.md | 205 - ...o the Chesapeake - The Sunday Long Read.md | 155 + ...est Turned Star Andrew Huberman, Really.md | 268 - ... So Much in the World's Richest Country.md | 141 - ...Is Going All In on the Apple Vision Pro.md | 122 - 00.03 News/Will Rogers Is on Fire.md | 165 + ...Story of D-Day, as Told by Paratroopers.md | 204 - ... Path From Olympic Athlete to Drug Lord.md | 247 + ...t, You Can’t Kill Eminem. Not Really..md | 51 - ...minutes before the Key Bridge collapsed.md | 122 - .../Bookmarks - Admin & services.md | 3 +- 00.08 Bookmarks/Bookmarks - Investments.md | 6 +- 00.08 Bookmarks/Bookmarks - Media.md | 3 +- 00.08 Bookmarks/Bookmarks - Obsidian.md | 6 +- 00.08 Bookmarks/Bookmarks - Social Media.md | 6 +- 01.01 Life Orga/@Life Admin.md | 3 +- 01.02 Home/@Shopping list.md | 38 +- 01.02 Home/Household.md | 16 +- 01.03 Family/Joséphine Bédier.md | 3 +- 01.03 Family/Pia Bousquié.md | 3 +- 01.03 Family/Thaïs Bédier.md | 3 +- 01.04 Partner/Davinie.md | 3 + 01.06 Health/2024-06-29 Fungal treatment.md | 46 +- 01.06 Health/2024-11-18 Skin checkup.md | 2 +- 01.07 Animals/2023-07-13 Health check.md | 3 +- 01.07 Animals/@Ambar.md | 9 +- 01.07 Animals/@Sally.md | 9 +- 02.02 Paris/@@Paris.md | 6 +- 02.03 Zürich/@@Zürich.md | 6 +- 02.03 Zürich/Minnie Sushi.md | 117 + 03.02 Travels/Andermatt.md | 122 + 03.03 Food & Wine/Beef Noodles with Beans.md | 10 +- ...Szechuan Noodles with Garlic Chilli Oil.md | 10 +- 03.03 Food & Wine/Thai Pork Rice Bowl.md | 10 +- .../Anatomy of a Fall (2023).md | 105 + 05.01 Computer setup/Storage and Syncing.md | 3 +- 05.02 Networks/Configuring UFW.md | 14 +- 05.02 Networks/Selfhosting.md | 5 +- 06.01 Finances/2024.ledger | 88 - 06.01 Finances/2025.ledger | 373 + 06.02 Investments/Crypto Tasks.md | 7 +- 236 files changed, 68986 insertions(+), 106691 deletions(-) create mode 100644 .obsidian/icons/test-pack/IMG6265.png create mode 100644 .obsidian/types.json create mode 100644 00.01 Admin/Calendars/2025-01-16.md create mode 100644 00.01 Admin/Calendars/2025-01-17.md create mode 100644 00.01 Admin/Calendars/2025-01-18.md create mode 100644 00.01 Admin/Calendars/2025-01-19.md create mode 100644 00.01 Admin/Calendars/2025-01-20.md create mode 100644 00.01 Admin/Calendars/2025-01-21.md create mode 100644 00.01 Admin/Calendars/2025-01-22.md create mode 100644 00.01 Admin/Calendars/2025-01-23.md create mode 100644 00.01 Admin/Calendars/2025-01-24.md create mode 100644 00.01 Admin/Calendars/2025-01-25.md create mode 100644 00.01 Admin/Calendars/2025-01-26.md create mode 100644 00.01 Admin/Calendars/2025-01-27.md create mode 100644 00.01 Admin/Calendars/2025-01-28.md create mode 100644 00.01 Admin/Calendars/2025-01-29.md create mode 100644 00.01 Admin/Calendars/2025-01-30.md create mode 100644 00.01 Admin/Calendars/2025-01-31.md create mode 100644 00.01 Admin/Calendars/2025-02-01.md create mode 100644 00.01 Admin/Calendars/2025-02-02.md create mode 100644 00.01 Admin/Calendars/2025-02-03.md create mode 100644 00.01 Admin/Calendars/2025-02-04.md create mode 100644 00.01 Admin/Calendars/2025-02-05.md create mode 100644 00.01 Admin/Calendars/2025-02-06.md create mode 100644 00.01 Admin/Calendars/2025-02-07.md create mode 100644 00.01 Admin/Calendars/2025-02-08.md create mode 100644 00.01 Admin/Calendars/2025-02-09.md create mode 100644 00.01 Admin/Calendars/2025-02-10.md create mode 100644 00.01 Admin/Calendars/2025-02-11.md create mode 100644 00.01 Admin/Calendars/2025-02-12.md create mode 100644 00.01 Admin/Calendars/2025-02-13.md create mode 100644 00.01 Admin/Calendars/2025-02-14.md create mode 100644 00.01 Admin/Calendars/2025-02-15.md create mode 100644 00.01 Admin/Calendars/2025-02-16.md create mode 100644 00.01 Admin/Calendars/2025-02-17.md create mode 100644 00.01 Admin/Calendars/2025-02-18.md create mode 100644 00.01 Admin/Calendars/2025-02-19.md create mode 100644 00.01 Admin/Calendars/2025-02-20.md create mode 100644 00.01 Admin/Calendars/Events/2023-01-23 🩺 Médecin.md create mode 100644 00.01 Admin/Calendars/Events/2023-02-06 📠Genève.md create mode 100644 00.01 Admin/Calendars/Events/2023-02-09 🩺 Médecin.md create mode 100644 00.01 Admin/Calendars/Events/2023-02-11 💠Mariage Eloi & Zélie.md create mode 100644 00.01 Admin/Calendars/Events/2023-02-19 ðŸŽžï¸ Tár @ Riff Raff.md create mode 100644 00.01 Admin/Calendars/Events/2023-03-06 🩺 Médecin.md create mode 100644 00.01 Admin/Calendars/Events/2023-03-11 🠠Marg & Arnold à Zürich.md create mode 100644 00.01 Admin/Calendars/Events/2023-03-18 🇨🇭 Molly & boyfriend in Zürich.md create mode 100644 00.01 Admin/Calendars/Events/2023-04-14 🩺 Médecin.md create mode 100644 00.01 Admin/Calendars/Events/2023-12-21 🠠Arrivée Papa.md create mode 100644 00.01 Admin/Calendars/Events/2023-12-27 🗼 Départ Papa.md create mode 100644 00.01 Admin/Calendars/Events/2025-01-25 âš½ï¸ PSG - Reims (1-1).md create mode 100644 00.03 News/50 ‘Saturday Night Live’ Cast Members Reveal Their Favorite ‘Saturday Night Live’ Cast Members.md delete mode 100644 00.03 News/A 19-year-old Stanford phenom is blazing a new trail from Japan to the majors.md delete mode 100644 00.03 News/A British Nurse Was Found Guilty of Killing Seven Babies. Did She Do It.md delete mode 100644 00.03 News/A Bullshit Genius.md delete mode 100644 00.03 News/A Family’s Disappearance Rocked New Zealand. What Came After Has Stunned Everyone..md delete mode 100644 00.03 News/A Gaza Conundrum The Story Behind the Rise of Hamas.md delete mode 100644 00.03 News/A Knife Forged in Fire.md delete mode 100644 00.03 News/A Teen’s Fatal Plunge Into the London Underworld.md delete mode 100644 00.03 News/A racial slur and a Fort Myers High baseball team torn apart - ESPN.md delete mode 100644 00.03 News/After Two Decades Undercover, She’s Ready to Tell the Real Story of Human Trafficking.md create mode 100644 00.03 News/An Affordable Place to Live Becomes the Scene of a Murder.md delete mode 100644 00.03 News/An Iowa paperboy disappeared 41 years ago. His mother is still on the case.md delete mode 100644 00.03 News/As Italy depopulates, wilderness is back.md delete mode 100644 00.03 News/Bear Hibernation Uncovering Black Bear Denning Secrets in Arkansas.md delete mode 100644 00.03 News/Behind the New Iron Curtain, by Marzio G. Mian, Translated by Elettra Pauletto.md delete mode 100644 00.03 News/Blinken Is Sitting on Staff Recommendations to Sanction Israeli Military Units Linked to Killings or Rapes.md delete mode 100644 00.03 News/Buying Baja Hakai Magazine.md delete mode 100644 00.03 News/Cabaret’s Endurance Run The Untold History.md delete mode 100644 00.03 News/Chinese Organized Crime’s Latest U.S. Target Gift Cards.md delete mode 100644 00.03 News/Cillian Murphy Is the Man of the Moment.md delete mode 100644 00.03 News/Dark Matter Hazlitt.md delete mode 100644 00.03 News/Did Drug Traffickers Funnel Millions of Dollars to Mexican President López Obrador’s First Campaign.md create mode 100644 00.03 News/Eastern Promises Dylan Levi King.md delete mode 100644 00.03 News/Fentanyl, the portrait of a mass murderer.md create mode 100644 00.03 News/Fergal Keane on PTSD, depression and the secret to happiness.md delete mode 100644 00.03 News/For the Women Who Accused the Trump Campaign of Harassment, It’s Been More Harassment.md delete mode 100644 00.03 News/Former Far-Right Hard-Liner Says Billionaires Are Using School Board Races to Sow Distrust in Public Education.md delete mode 100644 00.03 News/Fun is dead..md delete mode 100644 00.03 News/Gangsters, Money and Murder How Chinese Organized Crime Is Dominating America’s Illegal Marijuana Market.md delete mode 100644 00.03 News/Harvard Scientists Say There May Be an Unknown, Technologically Advanced Civilization Hiding on Earth.md create mode 100644 00.03 News/Has ‘To Catch a Predator’ Done More Harm Than Good.md delete mode 100644 00.03 News/Helvetia ein Schweizer Dorf in den USA mit Fasnacht und Urdemokratie.md create mode 100644 00.03 News/Her job is to remove homeless people from SF's parks. Her methods are extraordinary.md delete mode 100644 00.03 News/Hippy, capitalist, guru, grocer the forgotten genius who changed British food.md delete mode 100644 00.03 News/His Best Friend Was a 250-Pound Warthog. One Day, It Decided to Kill Him..md delete mode 100644 00.03 News/How Jesse Plemons Came to Star in, Well, Pretty Much Everything.md delete mode 100644 00.03 News/How Nikola Jokić Became the World’s Best Basketball Player.md delete mode 100644 00.03 News/How Russian Spies Get Flipped or Expelled, As Told by a Spycatcher.md delete mode 100644 00.03 News/How Shifting U.S. Policies Led to One of the Deadliest Incidents Involving Immigrants in Mexico’s History.md delete mode 100644 00.03 News/How Two Single Moms Escaped an Alleged Sex-Trafficking Ring and Ultimately Saved Each Other.md delete mode 100644 00.03 News/How a Con Man Ended Up in Solitary in Colorado Supermax Federal Prison.md delete mode 100644 00.03 News/How a Miami Student’s Package Scam Came Crashing Down.md delete mode 100644 00.03 News/How a Script Doctor Found His Own Voice.md delete mode 100644 00.03 News/How climate change is turning camels into the new cows.md create mode 100644 00.03 News/How the Most Famous Burger in the World Was Created in Pittsburgh.md delete mode 100644 00.03 News/Hvaldimir, the Whale Who Went AWOL.md delete mode 100644 00.03 News/I Got Mailers Promoting Toddler Milk for My Children. I Went on to Investigate International Formula Marketing..md delete mode 100644 00.03 News/I Was the Person Who Named the ‘Brat Pack’ - I Stand By It.md delete mode 100644 00.03 News/I always believed my funny, kind father was killed by a murderous teenage gang. Three decades on, I discovered the truth.md delete mode 100644 00.03 News/I am dying at age 49. Here’s why I have no regrets..md delete mode 100644 00.03 News/I have little time left. I hope my goodbye inspires you..md delete mode 100644 00.03 News/IRS Audit of Trump Could Cost Former President More Than $100 Million.md delete mode 100644 00.03 News/In the Land of the Very Old.md delete mode 100644 00.03 News/Inside the Glorious Afterlife of Roger Federer.md delete mode 100644 00.03 News/Inside the Savage, Surreal, Booming World of Professional Slap Fighting.md delete mode 100644 00.03 News/Inside the Slimy, Smelly, Secretive World of Glass-Eel Fishing.md delete mode 100644 00.03 News/Inside the house shows that bolster Boston’s lacking nightlife.md delete mode 100644 00.03 News/Jan Marsalek an Agent for Russia The Double Life of the former Wirecard Executive.md delete mode 100644 00.03 News/Joe Biden’s Last Campaign.md create mode 100644 00.03 News/Kieran Culkin on Jesse Eisenberg’s ‘A Real Pain’.md delete mode 100644 00.03 News/Masters of the Green The Black Caddies of Augusta National.md create mode 100644 00.03 News/Mike White’s Mischievous Vision for “The White Lotusâ€.md delete mode 100644 00.03 News/Multiple Trump Witnesses Have Received Significant Financial Benefits From His Businesses, Campaign.md delete mode 100644 00.03 News/My cousin was killed by a car bomb in Milwaukee. A mob boss was the top suspect. Now, I’m looking for answers..md delete mode 100644 00.03 News/Nat Friedman Embraces AI to Translate the Herculaneum Papyri.md delete mode 100644 00.03 News/On popular online platforms, predatory groups coerce children into self-harm.md delete mode 100644 00.03 News/One woman saw the Great Recession coming. Wall Street's boys club ignored her..md delete mode 100644 00.03 News/Paper mills are bribing editors at scholarly journals, Science investigation finds.md delete mode 100644 00.03 News/Precipice of fear the freerider who took skiing to its limits.md create mode 100644 00.03 News/Presidential historian Jim Robenalt talks surprising JFK home movie, mysteries around Trump assassination attempt - The Sunday Long Read.md create mode 100644 00.03 News/Rape under wraps how Tinder, Hinge and their corporate owner chose profits over safety.md delete mode 100644 00.03 News/Recovering the Lost Aviators of World War II.md delete mode 100644 00.03 News/Riding the baddest bulls made him a legend. Then one broke his neck..md delete mode 100644 00.03 News/Right-Wing Media and the Death of an Alabama Pastor An American Tragedy.md delete mode 100644 00.03 News/Ripples of hate.md delete mode 100644 00.03 News/Russia, Ukraine, and the Coming Schism in Orthodox Christianity.md delete mode 100644 00.03 News/Scenes From a MAGA Meltdown Inside the “America First†Movement’s War Over Democracy.md create mode 100644 00.03 News/Scent Makes a Place.md delete mode 100644 00.03 News/Secret in the walls Hidden letters reveal love, lust, scandal in 1920s Baltimore society.md delete mode 100644 00.03 News/Segregation Academies Still Operate Across the South. One Town Grapples With Its Divided Schools..md delete mode 100644 00.03 News/Sexism, cheating, and nightclubs inside the dark heart of modern chess.md delete mode 100644 00.03 News/Sextortion Scams Are Driving Teen Boys to Suicide.md delete mode 100644 00.03 News/Skipping School America’s Hidden Education Crisis.md create mode 100644 00.03 News/Teenage Carjacking Gangs Play a Real-Life Game of ‘Grand Theft Auto’.md delete mode 100644 00.03 News/The (Many) Vintages of the Century.md delete mode 100644 00.03 News/The Battle Over California Squatters Rights in Beverly Hills.md delete mode 100644 00.03 News/The Billionaire Playbook How Sports Owners Use Their Teams to Avoid Millions in Taxes.md delete mode 100644 00.03 News/The Butterfly in the Prison Yard.md delete mode 100644 00.03 News/The Excel superstars throw down in Vegas.md delete mode 100644 00.03 News/The Fake Fake-News Problem and the Truth About Misinformation.md delete mode 100644 00.03 News/The Family Photographs That Helped Us Investigate How a University Displaced a Black Community.md delete mode 100644 00.03 News/The Israeli-Palestinian Conflict and the Long Shadow of 1948.md delete mode 100644 00.03 News/The Juror Who Found Herself Guilty.md delete mode 100644 00.03 News/The Local Girls Who Inspired the Hollywood Classic “Mean Girlsâ€.md delete mode 100644 00.03 News/The New Rules.md delete mode 100644 00.03 News/The Pentagon’s Silicon Valley Problem, by Andrew Cockburn.md delete mode 100644 00.03 News/The Taylor Swift deepfakes are a warning.md delete mode 100644 00.03 News/The Worm Charmers.md delete mode 100644 00.03 News/The art of doing nothing have the Dutch found the answer to burnout culture.md delete mode 100644 00.03 News/The big idea can you inherit memories from your ancestors.md create mode 100644 00.03 News/The fugitive prince.md delete mode 100644 00.03 News/The last days of Boston Market.md delete mode 100644 00.03 News/The professor, the caregiver and the missing $30 million.md delete mode 100644 00.03 News/The rise and fall of robots.txt.md delete mode 100644 00.03 News/The surreal life of a professional bridesmaid - The Hustle.md delete mode 100644 00.03 News/The true story behind the kid who went 1940s viral for his week at the cinemas in San Francisco - Gazetteer SF.md delete mode 100644 00.03 News/The “Multi-Multi-Multi-Million-Dollar†Art Fraud That Shook the World.md delete mode 100644 00.03 News/They came for Florida's sun and sand. They got soaring costs and a culture war..md delete mode 100644 00.03 News/This is how reporters documented 1,000 deaths after police force that isn't supposed to be fatal.md delete mode 100644 00.03 News/Toxic Gaslighting How 3M Executives Convinced a Scientist the Forever Chemicals She Found in Human Blood Were Safe.md delete mode 100644 00.03 News/Vital City Jimmy Breslin and the Lost Rhythm of New York.md delete mode 100644 00.03 News/Was Frank Gore the Last NFL Running Back - ESPN.md delete mode 100644 00.03 News/Welcome to Northwestern University at Stateville.md create mode 100644 00.03 News/When Flamingos Came to the Chesapeake - The Sunday Long Read.md delete mode 100644 00.03 News/Who Is Podcast Guest Turned Star Andrew Huberman, Really.md delete mode 100644 00.03 News/Why Parents Struggle So Much in the World's Richest Country.md delete mode 100644 00.03 News/Why Tim Cook Is Going All In on the Apple Vision Pro.md create mode 100644 00.03 News/Will Rogers Is on Fire.md delete mode 100644 00.03 News/‘As Lonely as a Man Can Get’ The True Story of D-Day, as Told by Paratroopers.md create mode 100644 00.03 News/‘He Had No Fear’ Ryan Wedding’s Path From Olympic Athlete to Drug Lord.md delete mode 100644 00.03 News/‘The Death of Slim Shady’ or Not, You Can’t Kill Eminem. Not Really..md delete mode 100644 00.03 News/‘The whole bridge just fell down.’ The final minutes before the Key Bridge collapsed.md create mode 100644 02.03 Zürich/Minnie Sushi.md create mode 100644 03.02 Travels/Andermatt.md create mode 100644 03.04 Cinematheque/Anatomy of a Fall (2023).md create mode 100644 06.01 Finances/2025.ledger diff --git a/.obsidian/icons/test-pack/IMG6265.png b/.obsidian/icons/test-pack/IMG6265.png new file mode 100644 index 0000000000000000000000000000000000000000..9df7f84b2fce3dd9d189a00cf1c99b5938972c06 GIT binary patch literal 6456 zcmaJ`X-}Nj6(08844YYO3}#vXy>YjZ<4vmtjF3(jdqzgODlo}^yw%dcso#o>31d9KWo>T^fEy6( zm7Q@8#!iAx7Yc1{sI^baymgnoSFCDLE$O0zplX^^!1`u~)7MeM6#&7d5zdY22tIx) zoWt|8Ai7f!8$|Hg#RV7(enojuH3L4rP=-?t;GE55a1&$;l5Pd9LK2c2xstS+@?|K& zI@JAl#D2us=8iZ+e7T@BA|j;@X7w>G1VexD7=u8!7A}HSU&asj>g>Hn=!iq0ZHT}c z1?_$HRV^UKuyq(lG9L#vL}}~})1|=)hdlcASAT(8g496F6&3vx&~`}GL?RfltqeYR zE-fH(+FdFE;W()3@MbNv1T$GkELZdMW#?Vmmq$M-oQzHX3!?t|ZoJ(D*t2A3r$ zggOg}sQ0a_@$5I=+NVwN4b6d_cr>e|{-hRc6zh{GY+R4Oc%wXZF6zp2(GuCqQB$Yj zu0VqKh8=qyu}7hXkE&CPgu}z&sQ@#}Szxd3fefg8i3#6(I<5d#JEXXbbpw3<8mQkJ zR3(8Hejiwk5gp&f_cI@1jt776)XrvCHe#x#K6om&khkPa9#_^jFaQQ>ZKA>RXTNw} zb2Q`HvoKe9(CupVEwH(ga>yV=&;w;!12IAW6D1OzD^B&@JAObMwI?_|dQbx-{;Q{D zELYS_%o#E2S;?#uU{aLuv81Ljx9(uWxVY6&Lwmv)WZ5z?x~@0$Y+FyrTA{=YIU6M!+2qpy}H0{Ua@dwawysZjp_zGC(XfRv8oi z^0B=h?AsSQ_eEw}5m>$RCfK+#SsBCp3#PV32WSyx72SWmnB@%^CmZ>InwfI-bqVv5 z3F@If|2d1bSOTrJ&^K6lf-ESO+d+srK&lvL%6Hl#LV}jwo6q>cOoccgRorj_BuE{g z{wN$l2+g@P(7=Z;fmI*i+WEO#e;orCRDuNdwG9|51NlB|Z5lR*f{Ng9f=LU)@b`3! zB5pBpmW$yn-wUpReN4c4<=ver;_-LO1*td*`rt=7tPKILB9{m}ydc_;1l`fez7F(t zdx>%9yl7?H0R=*U7z}>=#p5wZM0uR3L&QZ369;JsUd@US$riIodg zIu2rv0F{$Un9h}DFehlp;4rIgoj<3n8v$>uoAsfR1gl<|obBdXSq`jDwb>J~umvNc zSONL{MwiJuI}fJ1YigaIB9qC?AQw{}@}-n=NNX{V*>MC^#Df@wsPhg` zZ3~f{j&`ty*`8&6#0uO{39*j=dh^4_>Y)RocB%)U?WaMBsyS!O_`w5IRflXhi_aVE zEv7Kf!_Dv6ARH~NXITOqVfq2Cl}F#DYWM1SrxR{`$Z_V*&4q134tan0XDC5d*>Z$f zR!(Y#j3^Do6a&p8K42H*_S^G0Y%w-(ug>T=Q>T%cnmrDhO8` zg8kw}5RkS5vP0CbBdosuh8E9#YhBIHM-T||3kc(?RH6R;HFc9@bhT|k41OY6%;YW6 zEU>PMrkk%q7f1-qTwUjjtN0?`*-8k@3(#|aEMoOm`|jTrG6oK1U1jEgqIhTq`$N9l z#LZm!;l0Q2{^0hHZ@l45V1j`Iyfvy7Nd#;WtJ$;~IH@{LWu3(MM^3GQdo@8CC727v z%193Z%@rFL?mrWh36p26p*2!fF(STf0<1x!44)9Cg2%YFbtdcjlf(Qzb5_M5PeU*p zqnRB&EEpar=c&3^wSvHA4eKC<=kM&_>V*n}j6wtj>`oPYT^9H4w}MdrJ(k*P6jrU0Kfyz?0&|YKOQ=`f_M;>0k}0lzU5IE&$qzZn1~>Uceq88r*fJhr17wfF}bfTiO&DM~C)$u*-OA zRz9_T_R57o`%zf@k~;ZYFT>ujl#TiaT=`>uDV*t(tO9_S&67yqor-RWgM+!{hH_9M zgl&Xh>0Ubp2Gk`|h4;@V-;wYllohg}Hhl1;#KEj(pkI^@s)J7th!4&ci;n~5sl-_* ziXgF8^dT(*gRhTDN{v&UdgRvg2(T0!@kL-Dk&c)w1Dg=^HHCbvCB{DNto=G25(4 zo7!p-uT6}qKA7>vM>cItFq5P*w*wRS;w{m~pyDC z&?M;kWl&D=$FD-ILjbl70dG{J*Yung;2|20fR1aSO|h!AfEauiFC#CMCrQODehpr% z^Cjj0=%mhLY6Nkn8apC&kK$F!v4|fmn`M zohpSA+{gKjc6Xw4p2e=gRIZtJSh4!R9;jY*XJE3BG<3nr$pkGQn4j08OkL%3^vDc!>lULhSltB{uKhK+8Pp1y|n%i z+%)AR#ItY(>H@9ev?4vV8yD>>hqza6pvd>q{?cF&Hdc3uZzz@xpG$rilKpPZ-ICVEfC&42MZbCUP{CSJ0S~@G9K0OBGA3pL4uF@ zp?!$&(E{um-~LCf$OJ76V=3==3BNs@3SwCRZIGHHiC`Z1%1tg?1B-c3yiuqu$O0E# z{OA?13o=+xHGC49xm@I)fKJHSNAJ~r#z_Eg(~_9|;Y%#;k{r;zrzIxr19jskHBnz) z43E72=0RBB=kVn6f zDd6DUe}i+qd%-*QpBK)*A+b`Z8<%aWc35<+tVE#DvElUl^f7V1&(mY-#I9U&ZMAU& z+)GrdIY#CVCe-9{&pyW-BXjQT$h1tgR~ZIJPpTu7Nam1QMDElwyKGDPqSvYnMc=y| z@b$C55=YoxevbXzpvC-Qx#z^y^TP2!ws~x>Mjo(+m0nvy?#H`-tsmf$k|E=pAc}yE zy`>j4I+yg(pCp#iAi6vZI$Lbsc7Um8<___kRrX+|Kw=>R)~Tw2vt5S3Gv3H zMN}~d#ta$#{3*V$ROPu5_9EoQOET)Xb)mxPT$mhbOuxxfvMGU@XvO@tyFVLJWyNMc+^!9)Rw6zx8KBPzQJdjp{7-^(SL1-oG3GjLo>)2!r85~# zMFwMup}=T27MP0)%!Q@7Mx)ti#Qf$;%Xc1`UvxMp*Z=P$s;cmq&e~|>S=2G*{{@)Z BQLq32 literal 0 HcmV?d00001 diff --git a/.obsidian/plugins/cron/data.json b/.obsidian/plugins/cron/data.json index 3993e8f0..bd039b19 100644 --- a/.obsidian/plugins/cron/data.json +++ b/.obsidian/plugins/cron/data.json @@ -19,7 +19,7 @@ "601d1cc7-a4f3-4f19-aa9f-3bddd7ab6b1d": { "locked": false, "lockedDeviceName": "iPhone", - "lastRun": "2025-01-15T07:37:12+01:00" + "lastRun": "2025-02-20T10:26:22+01:00" } } } \ No newline at end of file diff --git a/.obsidian/plugins/ledger-obsidian/data.json b/.obsidian/plugins/ledger-obsidian/data.json index 49fd8918..ccd42528 100644 --- a/.obsidian/plugins/ledger-obsidian/data.json +++ b/.obsidian/plugins/ledger-obsidian/data.json @@ -1,7 +1,7 @@ { "tutorialIndex": 0, "currencySymbol": "CHF", - "ledgerFile": "06.01 Finances/2024.ledger", + "ledgerFile": "06.01 Finances/2025.ledger", "assetAccountsPrefix": "assets", "expenseAccountsPrefix": "expenses", "incomeAccountsPrefix": "income", diff --git a/.obsidian/plugins/meld-encrypt/main.js b/.obsidian/plugins/meld-encrypt/main.js index bd67d40d..7e00c7c3 100644 --- a/.obsidian/plugins/meld-encrypt/main.js +++ b/.obsidian/plugins/meld-encrypt/main.js @@ -3,7 +3,8 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD if you want to view the source, please visit the github repository of this plugin */ -var ae=Object.defineProperty;var Te=Object.getOwnPropertyDescriptor;var Ce=Object.getOwnPropertyNames;var xe=Object.prototype.hasOwnProperty;var Fe=(y,t)=>{for(var e in t)ae(y,e,{get:t[e],enumerable:!0})},Se=(y,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Ce(t))!xe.call(y,i)&&i!==e&&ae(y,i,{get:()=>t[i],enumerable:!(n=Te(t,i))||n.enumerable});return y};var Ie=y=>Se(ae({},"__esModule",{value:!0}),y);var Le={};Fe(Le,{default:()=>re});module.exports=Ie(Le);var oe=require("obsidian");var k=require("obsidian");var J=class{constructor(){this.values=new Map}put(t,e){this.values.set(t,e)}get(t,e){var n;return(n=this.values.get(t))!=null?n:e}getFirst(t,e){for(let n=0;n{s.setValue(this.settings.confirmPassword).onChange(async o=>{this.settings.confirmPassword=o,await this.plugin.saveSettings()})});let n=()=>{if(!this.settings.rememberPassword){i.settingEl.hide(),r.settingEl.hide();return}i.settingEl.show(),r.settingEl.show();let s=this.settings.rememberPasswordTimeout,o=`For ${s} minutes`;s==0&&(o="Until Obsidian is closed"),i.setName(`Remember Password (${o})`)};new k.Setting(e).setName("Remember password?").setDesc("Remember the last used passwords when encrypting or decrypting. Passwords are remembered until they timeout or Obsidian is closed").addToggle(s=>{s.setValue(this.settings.rememberPassword).onChange(async o=>{this.settings.rememberPassword=o,await this.plugin.saveSettings(),g.setActive(this.settings.rememberPassword),n()})});let i=new k.Setting(e).setDesc("The number of minutes to remember passwords.").addSlider(s=>{s.setLimits(0,120,5).setValue(this.settings.rememberPasswordTimeout).onChange(async o=>{this.settings.rememberPasswordTimeout=o,await this.plugin.saveSettings(),g.setAutoExpire(this.settings.rememberPasswordTimeout),n()})}),r=new k.Setting(e).setName("Remember passwords by:").setDesc(this.buildRememberPasswordDescription()).addDropdown(s=>{s.addOption(g.LevelVault,"Vault").addOption(g.LevelParentPath,"Folder").addOption(g.LevelFilename,"File").setValue(this.settings.rememberPasswordLevel).onChange(async o=>{this.settings.rememberPasswordLevel=o,await this.plugin.saveSettings(),g.setLevel(this.settings.rememberPasswordLevel),n()})});n(),this.features.forEach(s=>{s.buildSettingsUi(e,async()=>await this.plugin.saveSettings())})}buildRememberPasswordDescription(){let e=new DocumentFragment,n=e.createEl("table").createTBody(),i=n.createEl("tr");return i.createEl("th",{text:"Vault:",attr:{align:"left"}}),i.createEl("td",{text:"typically, you'll use the same password every time."}),i=n.createEl("tr"),i.createEl("th",{text:"Folder:",attr:{align:"left"}}),i.createEl("td",{text:"typically, you'll use the same password for each note within a folder."}),i=n.createEl("tr"),i.createEl("th",{text:"File:",attr:{align:"left"}}),i.createEl("td",{text:"typically, each note will have a unique password."}),e}};var x=require("obsidian");var M=require("obsidian"),H=class extends M.Modal{constructor(e,n,i=""){super(e);this.decryptInPlace=!1;this.canDecryptInPlace=!0;this.titleEl.setText(n),this.text=i}onOpen(){var s;let{contentEl:e}=this;e.empty(),e.classList.add("meld-encrypt-decrypt-modal");let n;(s=new M.Setting(e).addTextArea(o=>{n=o,o.setValue(this.text),o.inputEl.setSelectionRange(0,0),o.inputEl.readOnly=!0,o.inputEl.rows=10}).settingEl.querySelector(".setting-item-info"))==null||s.remove();let r=new M.Setting(e);r.addButton(o=>{o.setButtonText("Copy").onClick(a=>{navigator.clipboard.writeText(n.getValue()),new M.Notice("Copied!")})}),this.canDecryptInPlace&&r.addButton(o=>{o.setWarning().setButtonText("Decrypt in-place").onClick(a=>{this.decryptInPlace=!0,this.close()})})}};var v=require("obsidian");var K=require("obsidian"),P=class{static isSettingsModalOpen(){return document.querySelector(".mod-settings")!==null}static buildPasswordSetting({container:t,name:e,desc:n="",autoFocus:i=!1,placeholder:r="",initialValue:s="",onChangeCallback:o,onEnterCallback:a}){let l=new K.Setting(t).setName(e).setDesc(n).addButton(w=>{w.setIcon("reading-glasses").onClick(f=>{let d=l.components.find((h,c,u)=>h instanceof K.TextComponent);d instanceof K.TextComponent&&(d.inputEl.type=d.inputEl.type=="password"?"text":"password")})}).addText(w=>{w.setPlaceholder(r),w.setValue(s),w.inputEl.type="password",o!=null&&w.onChange(o),a!=null&&(w.inputEl.onkeydown=f=>{f.key==="Enter"&&(f.preventDefault(),a(w.getValue()))}),i&&setTimeout(()=>w.inputEl.focus(),0)});return l}};var L=class extends v.Modal{constructor(e,n,i,r,s=null,o=null,a=!1){super(e);this.defaultPassword=null;this.resultConfirmed=!1;this.resultPassword=null;this.resultShowInReadingView=null;this.resultTextToEncrypt=null;this.defaultPassword=s,this.confirmPassword=i,this.showInReadingView=r,this.isEncrypting=n,this.defaultHint=o!=null?o:"",this.showTextToEncrypt=a}onOpen(){var h;let{contentEl:e}=this;e.empty(),e.classList.add("meld-encrypt-password-modal"),this.invalidate();let n=(h=this.defaultPassword)!=null?h:"",i="",r=this.defaultHint,s=this.showInReadingView,o="";new v.Setting(e).setHeading().setName(this.isEncrypting?"Encrypting":"Decrypting"),P.buildPasswordSetting({container:e,name:"Password:",placeholder:this.isEncrypting||r.length==0?"":`Hint: ${r}`,initialValue:n,autoFocus:!0,onChangeCallback:c=>{n=c,this.invalidate()},onEnterCallback:c=>{if(n=c,this.invalidate(),n.length>0)if(a.settingEl.isShown()){let u=a.components.find(E=>E instanceof v.TextComponent);u instanceof v.TextComponent&&u.inputEl.focus()}else if(l.settingEl.isShown()){let u=l.components.find(E=>E instanceof v.TextComponent);u instanceof v.TextComponent&&u.inputEl.focus()}else d()&&this.close()}});let a=P.buildPasswordSetting({container:e,name:"Confirm Password:",onChangeCallback:c=>{i=c,this.invalidate()},onEnterCallback:c=>{if(i=c,this.invalidate(),i.length>0&&d()&&l.settingEl.isShown()){let u=l.components.find(E=>E instanceof v.TextComponent);u instanceof v.TextComponent&&u.inputEl.focus()}}});this.confirmPassword||a.settingEl.hide();let l=new v.Setting(e).setName("Optional Password Hint").addText(c=>{c.inputEl.placeholder="Password Hint",c.setValue(r),c.onChange(u=>r=u),c.inputEl.on("keypress","*",(u,E)=>{u.key=="Enter"&&E instanceof HTMLInputElement&&E.value.length>0&&(u.preventDefault(),d()&&this.close())})});this.isEncrypting||l.settingEl.hide();let w=new v.Setting(e).setName("Show encrypted marker in Reading view").addToggle(c=>{c.setValue(s).onChange(u=>{s=u})});this.isEncrypting||w.settingEl.hide();let f=new v.Setting(e).setName("Text to encrypt").addTextArea(c=>{c.setValue("").onChange(u=>o=u),c.inputEl.rows=5,c.inputEl.style.width="100%"});this.showTextToEncrypt||f.settingEl.hide(),new v.Setting(e).addButton(c=>{c.setButtonText("Confirm").onClick(u=>{d()&&this.close()})});let d=()=>(this.invalidate(),a.setDesc(""),this.confirmPassword&&n!=i?(a.setDesc("Passwords don't match"),!1):(this.resultConfirmed=!0,this.resultPassword=n,this.resultHint=r,this.resultShowInReadingView=s,this.resultTextToEncrypt=o,!0))}invalidate(){this.resultConfirmed=!1,this.resultPassword=null,this.resultHint="",this.resultTextToEncrypt=""}};var ce=new TextEncoder,De=new TextDecoder,Ae=1e3,Ne=ce.encode("XHWnDAT6ehMVY2zD"),W=class{async deriveKey(t){let e=ce.encode(t),n=await crypto.subtle.importKey("raw",e,{name:"PBKDF2"},!1,["deriveKey"]);return crypto.subtle.deriveKey({name:"PBKDF2",hash:{name:"SHA-256"},iterations:Ae,salt:Ne},n,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}async encryptToBytes(t,e){let n=await this.deriveKey(e),i=ce.encode(t),r=crypto.getRandomValues(new Uint8Array(16)),s=new Uint8Array(await crypto.subtle.encrypt({name:"AES-GCM",iv:r},n,i)),o=new Uint8Array(r.byteLength+s.byteLength);return o.set(r,0),o.set(s,r.byteLength),o}convertToString(t){let e="";for(let n=0;nt.startsWith(i)))!=null?e:"",this.suffix=(n=V.find(i=>t.endsWith(i)))!=null?n:"",this.hasEncryptedPrefix=this.prefix.length>0,this.hasEncryptedSuffix=this.suffix.length>0,this.hasObsoleteEncryptedPrefix=this.prefix===he,this.containsEncryptedMarkers=[...A,...V].some(i=>t.includes(i)),this.canDecrypt=this.hasEncryptedPrefix&&this.hasEncryptedSuffix,this.canEncrypt=!this.hasEncryptedPrefix&&!this.containsEncryptedMarkers,this.canDecrypt){let i=this.parseDecryptableContent(t);i!=null?this.decryptable=i:this.canDecrypt=!1}}parseDecryptableContent(t){let e=new Z;if(!this.hasEncryptedPrefix||!this.hasEncryptedSuffix)return null;this.hasObsoleteEncryptedPrefix?e.version=0:this.prefix==ee||this.prefix==te?e.version=2:(this.prefix==pe||this.prefix==ue)&&(e.version=1);let n=t.substring(this.prefix.length,t.length-this.suffix.length);if([...A,...V].some(i=>n.includes(i)))return null;if(n.substring(0,S.length)==S){let i=n.indexOf(S,S.length);if(i<0)return null;e.hint=n.substring(S.length,i),e.base64CipherText=n.substring(i+S.length)}else e.base64CipherText=n;return e}};var Y=class{async onload(t,e){this.plugin=t,this.pluginSettings=e,this.featureSettings=e.featureInplaceEncrypt,this.plugin.registerMarkdownPostProcessor((n,i)=>this.processEncryptedCodeBlockProcessor(n,i)),t.addCommand({id:"meld-encrypt",name:"Encrypt/Decrypt",icon:"lock",editorCheckCallback:(n,i,r)=>this.processEncryptDecryptCommand(n,i,!1)}),this.plugin.addRibbonIcon("file-lock","Encrypt/Decrypt",n=>{let i=this.plugin.app.workspace.getActiveViewOfType(x.MarkdownView);if(i==null){console.debug("no active view found");return}return this.processEncryptDecryptCommand(!1,i.editor,!1)}),t.addCommand({id:"meld-encrypt-in-place",name:"Encrypt/Decrypt In-place",icon:"lock",editorCheckCallback:(n,i,r)=>this.processEncryptDecryptCommand(n,i,!0)})}onunload(){}replaceMarkersRecursive(t,e=0){if(t instanceof HTMLElement){for(let i of Array.from(t.childNodes)){var n=this.replaceMarkersRecursive(i,e+1);i.replaceWith(...n)}return[t]}if(t instanceof Text){let i=t.textContent;if(i==null)return[t];if(!i.contains("\u{1F510}"))return[t];let r=/ðŸ”(.*?)ðŸ”/g,s=i.split(r),o=[];for(let a=0;a{let i=n;i!=null&&i.onClickEvent(async r=>{let s=r.target;if(s==null)return;let o=s.dataset.meldEncryptEncrypted;if(o==null)return;let a=new X(o);await this.handleReadingIndicatorClick(t,a.decryptable)})})}async handleReadingIndicatorClick(t,e){if(e==null){new x.Notice("\u274C Decryption failed!");return}if(await this.showDecryptedTextIfPasswordKnown(t,e))return;let n=await this.fetchPasswordFromUser(e.hint);n!=null&&(await this.showDecryptedResultForPassword(e,n)?g.putByPath({password:n,hint:e.hint},t):new x.Notice("\u274C Decryption failed!"))}async showDecryptedResultForPassword(t,e){let i=await C.BuildFromDecryptableOrThrow(t).decryptFromBase64(t.base64CipherText,e);return i===null?!1:new Promise(r=>{let s=new H(this.plugin.app,"\u{1F513}",i);s.canDecryptInPlace=!1,s.onClose=()=>{r(!0)},s.open()})}async fetchPasswordFromUser(t){return new Promise(e=>{let n=new L(this.plugin.app,!1,!1,this.featureSettings.showMarkerWhenReadingDefault,"",t);n.onClose=()=>{e(n.resultPassword)},n.open()})}async showDecryptedTextIfPasswordKnown(t,e){let n=g.getByPath(t);return n.password==null?!1:await this.showDecryptedResultForPassword(e,n.password)}buildSettingsUi(t,e){new x.Setting(t).setHeading().setName("In-place encryption"),new x.Setting(t).setName("Expand selection to whole line?").setDesc("Partial selections will get expanded to the whole line.").addToggle(n=>{n.setValue(this.featureSettings.expandToWholeLines).onChange(async i=>{this.featureSettings.expandToWholeLines=i,await e()})}),new x.Setting(t).setName("By default, show encrypted marker when reading").setDesc("When encrypting inline text, should the default be to have a visible marker in Reading view?").addToggle(n=>{n.setValue(this.featureSettings.showMarkerWhenReadingDefault).onChange(async i=>{this.featureSettings.showMarkerWhenReadingDefault=i,await e()})})}processEncryptDecryptCommand(t,e,n){if(t&&P.isSettingsModalOpen())return!0;let i=e.getCursor("from"),r=e.getCursor("to");if(this.featureSettings.expandToWholeLines){i={line:i.line,ch:0};let a=r.line,l=e.getLine(a);r={line:a,ch:l.length}}else if(!e.somethingSelected()){let o=this.getClosestPrefixCursorPos(e),a=this.getClosestSuffixCursorPos(e);if(o==null||a==null||i.linea.line)return this.promptForTextToEncrypt(t,e,i);i=o,r=a}let s=e.getRange(i,r);return this.processSelection(t,e,s,i,r,n)}promptForTextToEncrypt(t,e,n){let i=this.plugin.app.workspace.getActiveFile();if(i==null)return!1;if(t)return!0;let r="",s="";if(this.pluginSettings.rememberPassword){let l=g.getByPath(i.path);r=l.password,s=l.hint}let o=this.pluginSettings.confirmPassword,a=new L(this.plugin.app,!0,o,this.featureSettings.showMarkerWhenReadingDefault,r,s,!0);return a.onClose=async()=>{var h,c,u,E;if(!a.resultConfirmed)return;let l=(h=a.resultPassword)!=null?h:"",w=(c=a.resultHint)!=null?c:"",f=(u=a.resultTextToEncrypt)!=null?u:"",d=new ne;d.text=f,d.hint=w,this.encryptSelection(e,d,l,n,n,(E=a.resultShowInReadingView)!=null?E:this.featureSettings.showMarkerWhenReadingDefault),g.putByPath({password:l,hint:w},i.path)},a.open(),!1}getClosestPrefixCursorPos(t){let e=A.reduce((i,r,s)=>s==0||r.length>i.length?r:i),n=t.posToOffset(t.getCursor("from"))+e.length;for(let i=n;i>=0;i--){let r=t.offsetToPos(i);for(let s of A){let o=i-s.length,a=t.offsetToPos(o);if(t.getRange(a,r)==s)return t.offsetToPos(o)}}return null}getClosestSuffixCursorPos(t){let e=A.reduce((s,o,a)=>a==0||o.length>s.length?o:s),n=t.posToOffset(t.getCursor("from"))-e.length+1,i=t.lastLine(),r=t.posToOffset({line:i,ch:t.getLine(i).length});for(let s=n;s<=r;s++){let o=t.offsetToPos(s);for(let a of V){let l=s+a.length,w=t.offsetToPos(l);if(t.getRange(o,w)==a)return w}}return null}processSelection(t,e,n,i,r,s,o=!0){var c;let a=new X(n);if(a.isEmpty)return t||new x.Notice("Nothing to Encrypt."),!1;if(!a.canDecrypt&&!a.canEncrypt)return t||new x.Notice("Unable to Encrypt or Decrypt that."),!1;if(a.canEncrypt&&!o)return!1;let l=this.plugin.app.workspace.getActiveFile();if(l==null)return!1;if(t)return!0;let w="",f=(c=a.decryptable)==null?void 0:c.hint;if(this.pluginSettings.rememberPassword){let u=g.getByPath(l.path);w=u.password,f=f!=null?f:u.hint}let d=a.canEncrypt&&this.pluginSettings.confirmPassword,h=new L(this.plugin.app,a.canEncrypt,d,this.featureSettings.showMarkerWhenReadingDefault,w,f);return h.onClose=async()=>{var ye,me,Ee;if(!h.resultConfirmed)return;let u=(ye=h.resultPassword)!=null?ye:"",E=(me=h.resultHint)!=null?me:"";if(a.canEncrypt){let j=new ne;j.text=n,j.hint=E,this.encryptSelection(e,j,u,i,r,(Ee=h.resultShowInReadingView)!=null?Ee:this.featureSettings.showMarkerWhenReadingDefault),g.putByPath({password:u,hint:E},l.path)}else a.decryptable&&await this.decryptSelection(e,a.decryptable,u,i,r,s)&&g.putByPath({password:u,hint:E},l.path)},h.open(),!0}async encryptSelection(t,e,n,i,r,s){let o=C.BuildDefault(),a=this.encodeEncryption(await o.encryptToBase64(e.text,n),e.hint,s);t.setSelection(i,r),t.replaceSelection(a)}async decryptSelection(t,e,n,i,r,s){let a=await C.BuildFromDecryptableOrThrow(e).decryptFromBase64(e.base64CipherText,n);if(a===null)return new x.Notice("\u274C Decryption failed!"),!1;if(s)t.setSelection(i,r),t.replaceSelection(a);else{let l=new H(this.plugin.app,"\u{1F513}",a);l.onClose=()=>{t.focus(),l.decryptInPlace&&(t.setSelection(i,r),t.replaceSelection(a))},l.open()}return!0}encodeEncryption(t,e,n){if(!A.some(i=>t.includes(i))&&!V.some(i=>t.includes(i))){let i=n?ve:Pe,r=n?fe:ge;return e.length>0?i.concat(S,e,S,t,r):i.concat(t,r)}return t}},ne=class{};var F=require("obsidian");var m=require("obsidian");var O=class{static get showInlineTitle(){var t;return(t=app.vault.getConfig("showInlineTitle"))!=null?t:!0}static get readableLineLength(){var t;return(t=app.vault.getConfig("readableLineLength"))!=null?t:!0}};var ie=class{constructor(t,e,n){this.version="1.0";this.version=t,this.hint=e,this.encodedData=n}},we=class{static async encode(t,e,n){let r=await C.BuildDefault().encryptToBase64(n,t);return new ie(we.DEFAULT_VERSION,e,r)}static async decrypt(t,e){return t.encodedData==""?"":await C.BuildFromFileDataOrThrow(t).decryptFromBase64(t.encodedData,e)}},I=we;I.DEFAULT_VERSION="2.0";var D=class{static encode(t){return JSON.stringify(t,null,2)}static decode(t){return t===""?new ie(I.DEFAULT_VERSION,"",""):JSON.parse(t)}};var ke="encrypted",be="mdenc",se=be,N=[be,ke];var $="meld-encrypted-file-content-view",z=class extends m.TextFileView{constructor(e,n){var i;super(e);this.iconReadingView="book-open";this.iconSourceView="code";this.iconToggleEditView="edit";this.iconLockFile="lock";this.iconChangePassword="key";this.currentView=0;this.encryptionPassword="";this.hint="";this.currentEditorSourceText="";this.settings=n,this.defaultEditNoteView=(i=n.defaultView)!=null?i:"Source",this.currentEditNoteMode=this.defaultEditNoteView,this.elActionEditView=this.addAction(this.iconSourceView,"Source",()=>this.toggleReadingView()),this.elActionReadingView=this.addAction(this.iconReadingView,"Reading",()=>this.toggleReadingView()),this.elActionIconLockNote=this.addAction(this.iconLockFile,"Lock",()=>this.actionLockFile()),this.elActionChangePassword=this.addAction(this.iconChangePassword,"Change Password",()=>this.actionChangePassword()),this.elActionEditView.hide(),this.elActionReadingView.hide(),this.elActionIconLockNote.hide(),this.elActionChangePassword.hide(),this.containerEl.classList.add("meld-encrypt-encrypted-note-view"),this.contentEl.classList.add("meld-encrypt-encrypted-note-view-content")}toggleReadingView(){this.currentView==2&&(this.currentEditNoteMode=="Reading"?this.currentEditNoteMode="Source":this.currentEditNoteMode=="Source"&&(this.currentEditNoteMode="Reading"),this.refreshView(2))}actionLockFile(){this.encryptionPassword="",g.clearForFile(this.file),this.refreshView(1)}actionChangePassword(){this.refreshView(3)}onPaneMenu(e,n){n=="tab-header"&&this.currentView==2&&(e.addItem(i=>{i.setSection("action").setIcon(this.iconToggleEditView).setTitle("Toggle Editing/Reading").onClick(()=>this.toggleReadingView())}),e.addItem(i=>{i.setSection("action").setIcon(this.iconLockFile).setTitle("Lock").onClick(()=>this.actionLockFile())}),e.addItem(i=>{i.setSection("action").setIcon(this.iconChangePassword).setTitle("Change Password").onClick(()=>this.actionChangePassword())})),super.onPaneMenu(e,n)}addHeader(e,n){var i;e.createDiv({text:`\u{1F510} ${n} \u{1F510}`,cls:"encrypted-note-message"}),O.showInlineTitle&&e.createDiv({text:(i=this.file)==null?void 0:i.basename,cls:"inline-title"})}validatePassword(e){return""}validateConfirm(e,n){return e===n?"":"Password doesn't match"}addNewNoteView(e){this.addHeader(e,"This note will be encrypted");let n=this.addUserInputContainer(e);new m.Setting(n).setDesc("Please provide a password and hint to start editing this note.");let i=async(d,h,c)=>{let u=this.validatePassword(d),E=this.validateConfirm(d,h);l.setDesc(u),w.setDesc(E),u.length===0&&E.length===0&&(this.encryptionPassword=d,this.hint=c,O.showInlineTitle||(this.currentEditorSourceText=`# ${this.file.basename} +var oe=Object.defineProperty;var xe=Object.getOwnPropertyDescriptor;var Ce=Object.getOwnPropertyNames;var Ie=Object.prototype.hasOwnProperty;var Se=(g,t)=>{for(var e in t)oe(g,e,{get:t[e],enumerable:!0})},Ae=(g,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Ce(t))!Ie.call(g,s)&&s!==e&&oe(g,s,{get:()=>t[s],enumerable:!(n=xe(t,s))||n.enumerable});return g};var De=g=>Ae(oe({},"__esModule",{value:!0}),g);var He={};Se(He,{default:()=>re});module.exports=De(He);var ae=require("obsidian");var I=require("obsidian");var Pe=require("obsidian");var j=class{constructor(){this.values=new Map}put(t,e){this.values.set(t,e)}get(t,e){var n;return(n=this.values.get(t))!=null?n:e}getOrNull(t){var e;return(e=this.values.get(t))!=null?e:null}getFirst(t,e){for(let n=0;n{r.setValue(this.settings.confirmPassword).onChange(async a=>{this.settings.confirmPassword=a,await this.plugin.saveSettings()})});let e=()=>{if(!this.settings.rememberPassword){s.settingEl.hide(),n.settingEl.hide();return}this.settings.rememberPasswordLevel!=p.LevelExternalFile?(s.settingEl.show(),i.settingEl.hide()):(s.settingEl.hide(),i.settingEl.show()),n.settingEl.show();let r=this.settings.rememberPasswordTimeout,a=`For ${r} minutes`;r==0&&(a="Until Obsidian is closed"),s.setName(`Remember Password (${a})`)};new I.Setting(t).setName("Remember password?").setDesc("Remember the last used passwords when encrypting or decrypting. Passwords are remembered until they timeout or Obsidian is closed").addToggle(r=>{r.setValue(this.settings.rememberPassword).onChange(async a=>{this.settings.rememberPassword=a,await this.plugin.saveSettings(),p.setActive(this.settings.rememberPassword),e()})});let n=new I.Setting(t).setName("Remember passwords by:").setDesc(this.buildRememberPasswordDescription()).addDropdown(r=>{r.addOption(p.LevelVault,"Vault").addOption(p.LevelParentPath,"Folder").addOption(p.LevelFilename,"File").addOption(p.LevelExternalFile,"External File").setValue(this.settings.rememberPasswordLevel).onChange(async a=>{console.debug("rememberPasswordLevelSetting.onChange",{value:a}),this.settings.rememberPasswordLevel=a,await this.plugin.saveSettings(),p.setLevel(this.settings.rememberPasswordLevel),e()})}),s=new I.Setting(t).setDesc("The number of minutes to remember passwords.").addSlider(r=>{r.setLimits(0,120,5).setValue(this.settings.rememberPasswordTimeout).onChange(async a=>{this.settings.rememberPasswordTimeout=a,await this.plugin.saveSettings(),p.setAutoExpire(this.settings.rememberPasswordTimeout),e()})}),i=new I.Setting(t).setName("External File Paths").setDesc("When needed the password is read from one of these filepaths. Paths must be relative to vault root").addTextArea(r=>{r.setValue(this.settings.rememberPasswordExternalFilePaths.join(` +`)).onChange(async a=>{this.settings.rememberPasswordExternalFilePaths=a.trim().split(` +`),await this.plugin.saveSettings(),p.setExternalFilePaths(this.settings.rememberPasswordExternalFilePaths)}),r.inputEl.placeholder="Enter one relative path per line",r.inputEl.style.whiteSpace="pre",r.inputEl.style.width="100%",r.inputEl.rows=4}).addButton(r=>{r.setIcon("check").setTooltip("Check Paths").onClick(async()=>{let a=this.settings.rememberPasswordExternalFilePaths;for(let l of a)await p.canFetchContents(l)?new I.Notice(`\u2714\uFE0F ${l}`):new I.Notice(`\u274C ${l}`)})});i.controlEl.style.width="80%",e(),this.features.forEach(r=>{r.buildSettingsUi(t,async()=>await this.plugin.saveSettings())})}buildRememberPasswordDescription(){let t=new DocumentFragment,e=t.createEl("table").createTBody(),n=e.createEl("tr");return n.createEl("th",{text:"Vault:",attr:{align:"right"}}),n.createEl("td",{text:"Typically, you'll use the same password every time."}),n=e.createEl("tr"),n.createEl("th",{text:"Folder:",attr:{align:"right"}}),n.createEl("td",{text:"Typically, you'll use the same password for each note within a folder."}),n=e.createEl("tr"),n.createEl("th",{text:"File:",attr:{align:"right"}}),n.createEl("td",{text:"Typically, each note will have a unique password."}),n=e.createEl("tr"),n.createEl("th",{text:"External File:",attr:{align:"right",style:"width:12em;"}}),n.createEl("td",{text:"When needed the password/key is read from one of these filepaths."}),t}};var x=require("obsidian");var M=require("obsidian"),V=class extends M.Modal{constructor(e,n,s=""){super(e);this.decryptInPlace=!1;this.save=!1;this.canDecryptInPlace=!0;this.titleEl.setText(n),this.text=s}onOpen(){var r;let{contentEl:e}=this;e.empty(),e.classList.add("meld-encrypt-decrypt-modal");let n;(r=new M.Setting(e).addTextArea(a=>{n=a,a.setValue(this.text),a.inputEl.setSelectionRange(0,0),a.inputEl.rows=10}).settingEl.querySelector(".setting-item-info"))==null||r.remove();let i=new M.Setting(e);i.addButton(a=>{a.setButtonText("Save").onClick(l=>{this.save=!0,this.text=n.getValue(),this.close()})}),i.addButton(a=>{a.setButtonText("Copy").onClick(l=>{navigator.clipboard.writeText(n.getValue()),new M.Notice("Copied!")})}),this.canDecryptInPlace&&i.addButton(a=>{a.setWarning().setButtonText("Decrypt in-place").onClick(l=>{this.decryptInPlace=!0,this.text=n.getValue(),this.close()})})}};var E=require("obsidian");var X=require("obsidian"),A=class{static isSettingsModalOpen(){return document.querySelector(".mod-settings")!==null}static buildPasswordSetting({container:t,name:e,desc:n="",autoFocus:s=!1,placeholder:i="",initialValue:r="",onChangeCallback:a,onEnterCallback:l}){let c=new X.Setting(t).setName(e).setDesc(n).addButton(h=>{h.setIcon("reading-glasses").onClick(y=>{let w=c.components.find((f,d,u)=>f instanceof X.TextComponent);w instanceof X.TextComponent&&(w.inputEl.type=w.inputEl.type=="password"?"text":"password")})}).addText(h=>{h.setPlaceholder(i),h.setValue(r),h.inputEl.type="password",a!=null&&h.onChange(a),l!=null&&(h.inputEl.onkeydown=y=>{y.key==="Enter"&&(y.preventDefault(),l(h.getValue()))}),s&&setTimeout(()=>h.inputEl.focus(),0)});return c}};var H=class extends E.Modal{constructor(e,n,s,i,r=null,a=null,l=!1){super(e);this.defaultPassword=null;this.resultConfirmed=!1;this.resultPassword=null;this.resultShowInReadingView=null;this.resultTextToEncrypt=null;this.defaultPassword=r,this.confirmPassword=s,this.showInReadingView=i,this.isEncrypting=n,this.defaultHint=a!=null?a:"",this.showTextToEncrypt=l}onOpen(){var f;let{contentEl:e}=this;e.empty(),e.classList.add("meld-encrypt-password-modal"),this.invalidate();let n=(f=this.defaultPassword)!=null?f:"",s="",i=this.defaultHint,r=this.showInReadingView,a="";new E.Setting(e).setHeading().setName(this.isEncrypting?"Encrypting":"Decrypting"),A.buildPasswordSetting({container:e,name:"Password:",placeholder:this.isEncrypting||i.length==0?"":`Hint: ${i}`,initialValue:n,autoFocus:!0,onChangeCallback:d=>{n=d,this.invalidate()},onEnterCallback:d=>{if(n=d,this.invalidate(),n.length>0)if(l.settingEl.isShown()){let u=l.components.find(m=>m instanceof E.TextComponent);u instanceof E.TextComponent&&u.inputEl.focus()}else if(c.settingEl.isShown()){let u=c.components.find(m=>m instanceof E.TextComponent);u instanceof E.TextComponent&&u.inputEl.focus()}else w()&&this.close()}});let l=A.buildPasswordSetting({container:e,name:"Confirm Password:",onChangeCallback:d=>{s=d,this.invalidate()},onEnterCallback:d=>{if(s=d,this.invalidate(),s.length>0&&w()&&c.settingEl.isShown()){let u=c.components.find(m=>m instanceof E.TextComponent);u instanceof E.TextComponent&&u.inputEl.focus()}}});this.confirmPassword||l.settingEl.hide();let c=new E.Setting(e).setName("Optional Password Hint").addText(d=>{d.inputEl.placeholder="Password Hint",d.setValue(i),d.onChange(u=>i=u),d.inputEl.on("keypress","*",(u,m)=>{u.key=="Enter"&&m instanceof HTMLInputElement&&m.value.length>0&&(u.preventDefault(),w()&&this.close())})});this.isEncrypting||c.settingEl.hide();let h=new E.Setting(e).setName("Show encrypted marker in Reading view").addToggle(d=>{d.setValue(r).onChange(u=>{r=u})});this.isEncrypting||h.settingEl.hide();let y=new E.Setting(e).setName("Text to encrypt").addTextArea(d=>{d.setValue("").onChange(u=>a=u),d.inputEl.rows=5,d.inputEl.style.width="100%"});this.showTextToEncrypt||y.settingEl.hide(),new E.Setting(e).addButton(d=>{d.setButtonText("Confirm").onClick(u=>{w()&&this.close()})});let w=()=>(this.invalidate(),l.setDesc(""),this.confirmPassword&&n!=s?(l.setDesc("Passwords don't match"),!1):(this.resultConfirmed=!0,this.resultPassword=n,this.resultHint=i,this.resultShowInReadingView=r,this.resultTextToEncrypt=a,!0))}invalidate(){this.resultConfirmed=!1,this.resultPassword=null,this.resultHint="",this.resultTextToEncrypt=""}};var ce=new TextEncoder,ke=new TextDecoder,Le=1e3,Be=ce.encode("XHWnDAT6ehMVY2zD"),W=class{async deriveKey(t){let e=ce.encode(t),n=await crypto.subtle.importKey("raw",e,{name:"PBKDF2"},!1,["deriveKey"]);return crypto.subtle.deriveKey({name:"PBKDF2",hash:{name:"SHA-256"},iterations:Le,salt:Be},n,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}async encryptToBytes(t,e){let n=await this.deriveKey(e),s=ce.encode(t),i=crypto.getRandomValues(new Uint8Array(16)),r=new Uint8Array(await crypto.subtle.encrypt({name:"AES-GCM",iv:i},n,s)),a=new Uint8Array(i.byteLength+r.byteLength);return a.set(i,0),a.set(r,i.byteLength),a}convertToString(t){let e="";for(let n=0;nt.startsWith(s)))!=null?e:"",this.suffix=(n=N.find(s=>t.endsWith(s)))!=null?n:"",this.hasEncryptedPrefix=this.prefix.length>0,this.hasEncryptedSuffix=this.suffix.length>0,this.hasObsoleteEncryptedPrefix=this.prefix===he||this.prefix===ge,this.containsEncryptedMarkers=[...B,...N].some(s=>t.includes(s)),this.canDecrypt=this.hasEncryptedPrefix&&this.hasEncryptedSuffix,this.canEncrypt=!this.hasEncryptedPrefix&&!this.containsEncryptedMarkers,this.canDecrypt){let s=this.parseDecryptableContent(t);s!=null?this.decryptable=s:this.canDecrypt=!1}}parseDecryptableContent(t){let e=new q;if(!this.hasEncryptedPrefix||!this.hasEncryptedSuffix)return null;this.hasObsoleteEncryptedPrefix?e.version=0:this.prefix==Q||this.prefix==Z?e.version=2:(this.prefix==de||this.prefix==ue)&&(e.version=1);let n=t.substring(this.prefix.length,t.length-this.suffix.length);if([...B,...N].some(s=>n.includes(s)))return null;if(n.substring(0,k.length)==k){let s=n.indexOf(k,k.length);if(s<0)return null;e.hint=n.substring(k.length,s),e.base64CipherText=n.substring(s+k.length)}else e.base64CipherText=n;return e.showInReadingView=!this.prefix.includes("%%"),e}};var Fe=2e3,$=class{async onload(t,e){this.plugin=t,this.pluginSettings=e,this.featureSettings=e.featureInplaceEncrypt,this.plugin.registerMarkdownPostProcessor((n,s)=>this.processEncryptedCodeBlockProcessor(n,s)),t.addCommand({id:"meld-encrypt-in-place",name:"Encrypt/Decrypt In-place",icon:"file-lock",editorCheckCallback:(n,s,i)=>this.processEncryptDecryptCommand(n,s,!1)}),this.plugin.addRibbonIcon("file-lock","Encrypt/Decrypt In-place",n=>{let s=this.plugin.app.workspace.getActiveViewOfType(x.MarkdownView);if(s!=null)return this.processEncryptDecryptCommand(!1,s.editor,!1)})}onunload(){}replaceMarkersRecursive(t,e=0){if(t instanceof HTMLElement){for(let s of Array.from(t.childNodes)){var n=this.replaceMarkersRecursive(s,e+1);s.replaceWith(...n)}return[t]}if(t instanceof Text){let s=t.textContent;if(s==null)return[t];if(!s.contains("\u{1F510}"))return[t];let i=/ðŸ”(.*?)ðŸ”/g,r=s.split(i),a=[];for(let l=0;l{let s=n;s!=null&&s.onClickEvent(async i=>{let r=i.target;if(r==null)return;let a=r.dataset.meldEncryptEncrypted;if(a==null)return;let l=new Y(a);await this.handleReadingIndicatorClick(t,l.decryptable)})})}async handleReadingIndicatorClick(t,e){if(e==null){new x.Notice("\u274C Decryption failed!");return}if(await this.showDecryptedTextIfPasswordKnown(t,e))return;let n=await this.fetchPasswordFromUser(e.hint);n!=null&&(await this.showDecryptedResultForPassword(e,n)?p.putByPath({password:n,hint:e.hint},t):new x.Notice("\u274C Decryption failed!"))}async showDecryptedResultForPassword(t,e){let s=await D.BuildFromDecryptableOrThrow(t).decryptFromBase64(t.base64CipherText,e);return s===null?!1:new Promise(i=>{let r=new V(this.plugin.app,"\u{1F513}",s);r.canDecryptInPlace=!1,r.onClose=()=>{i(!0)},r.open()})}async fetchPasswordFromUser(t){return new Promise(e=>{let n=new H(this.plugin.app,!1,!1,this.featureSettings.showMarkerWhenReadingDefault,"",t);n.onClose=()=>{e(n.resultPassword)},n.open()})}async showDecryptedTextIfPasswordKnown(t,e){let n=await p.getByPathAsync(t);return n.password==null?!1:await this.showDecryptedResultForPassword(e,n.password)}buildSettingsUi(t,e){new x.Setting(t).setHeading().setName("In-place encryption"),new x.Setting(t).setName("Expand selection to whole line?").setDesc("Partial selections will get expanded to the whole line.").addToggle(n=>{n.setValue(this.featureSettings.expandToWholeLines).onChange(async s=>{this.featureSettings.expandToWholeLines=s,await e()})}),new x.Setting(t).setName("By default, show encrypted marker when reading").setDesc("When encrypting inline text, should the default be to have a visible marker in Reading view?").addToggle(n=>{n.setValue(this.featureSettings.showMarkerWhenReadingDefault).onChange(async s=>{this.featureSettings.showMarkerWhenReadingDefault=s,await e()})})}processEncryptDecryptCommand(t,e,n){if(t&&A.isSettingsModalOpen())return!0;let s=e.getCursor("from"),i=e.getCursor("to");if(this.featureSettings.expandToWholeLines){s={line:s.line,ch:0};let l=i.line,c=e.getLine(l);i={line:l,ch:c.length}}else if(!e.somethingSelected()){let a=this.getClosestPrefixCursorPos(e,Fe),l=this.getClosestSuffixCursorPos(e,Fe);if(a==null||l==null||s.linel.line)return this.promptForTextToEncrypt(t,e,s);s=a,i=l}let r=e.getRange(s,i);return this.processSelection(t,e,r,s,i,n)}promptForTextToEncrypt(t,e,n){let s=this.plugin.app.workspace.getActiveFile();if(s==null)return!1;if(t)return!0;let i="",r="";if(this.pluginSettings.rememberPassword){let c=p.getByPath(s.path);i=c.password,r=c.hint}let a=this.pluginSettings.confirmPassword,l=new H(this.plugin.app,!0,a,this.featureSettings.showMarkerWhenReadingDefault,i,r,!0);return l.onClose=async()=>{var f,d,u,m;if(!l.resultConfirmed)return;let c=(f=l.resultPassword)!=null?f:"",h=(d=l.resultHint)!=null?d:"",y=(u=l.resultTextToEncrypt)!=null?u:"",w=new ee;w.text=y,w.hint=h,this.encryptSelection(e,w,c,n,n,(m=l.resultShowInReadingView)!=null?m:this.featureSettings.showMarkerWhenReadingDefault),p.putByPath({password:c,hint:h},s.path)},l.open(),!1}getClosestPrefixCursorPos(t,e){let n=B.reduce((r,a,l)=>l==0||a.length>r.length?a:r),s=t.posToOffset(t.getCursor("from"))+n.length,i=Math.max(s-e,0);for(let r=s;r>=i;r--){let a=t.offsetToPos(r);for(let l of B){let c=r-l.length,h=t.offsetToPos(c);if(t.getRange(h,a)==l)return t.offsetToPos(c)}}return null}getClosestSuffixCursorPos(t,e){let n=B.reduce((a,l,c)=>c==0||l.length>a.length?l:a),s=t.posToOffset(t.getCursor("from"))-n.length+1,i=t.lastLine(),r=Math.min(s+e,t.posToOffset({line:i,ch:t.getLine(i).length}));for(let a=s;a<=r;a++){let l=t.offsetToPos(a);for(let c of N){let h=a+c.length,y=t.offsetToPos(h);if(t.getRange(l,y)==c)return y}}return null}processSelection(t,e,n,s,i,r,a=!0){var d;let l=new Y(n);if(l.isEmpty)return t||new x.Notice("Nothing to Encrypt."),!1;if(!l.canDecrypt&&!l.canEncrypt)return t||new x.Notice("Unable to Encrypt or Decrypt that."),!1;if(l.canEncrypt&&!a)return!1;let c=this.plugin.app.workspace.getActiveFile();if(c==null)return!1;if(t)return!0;let h="",y=(d=l.decryptable)==null?void 0:d.hint;if(this.pluginSettings.rememberPassword){let u=p.getByPath(c.path);h=u.password,y=y!=null?y:u.hint}let w=l.canEncrypt&&this.pluginSettings.confirmPassword,f=new H(this.plugin.app,l.canEncrypt,w,this.featureSettings.showMarkerWhenReadingDefault,h,y);return f.onClose=async()=>{var we,me,Ee;if(!f.resultConfirmed)return;let u=(we=f.resultPassword)!=null?we:"",m=(me=f.resultHint)!=null?me:"";if(l.canEncrypt){let G=new ee;G.text=n,G.hint=m,this.encryptSelection(e,G,u,s,i,(Ee=f.resultShowInReadingView)!=null?Ee:this.featureSettings.showMarkerWhenReadingDefault),p.putByPath({password:u,hint:m},c.path)}else l.decryptable&&await this.decryptSelection(e,l.decryptable,u,s,i,r)&&p.putByPath({password:u,hint:m},c.path)},f.open(),!0}async encryptSelection(t,e,n,s,i,r){let a=D.BuildDefault(),l=this.encodeEncryption(await a.encryptToBase64(e.text,n),e.hint,r);t.setSelection(s,i),t.replaceSelection(l)}async decryptSelection(t,e,n,s,i,r){let l=await D.BuildFromDecryptableOrThrow(e).decryptFromBase64(e.base64CipherText,n);if(l===null)return new x.Notice("\u274C Decryption failed!"),!1;if(r)t.setSelection(s,i),t.replaceSelection(l);else{let c=new V(this.plugin.app,"\u{1F513}",l);c.onClose=async()=>{var h;if(t.focus(),c.decryptInPlace)t.setSelection(s,i),t.replaceSelection(c.text);else if(c.save){let y=D.BuildDefault(),w=this.encodeEncryption(await y.encryptToBase64(c.text,n),(h=e.hint)!=null?h:"",e.showInReadingView);t.setSelection(s,i),t.replaceSelection(w)}},c.open()}return!0}encodeEncryption(t,e,n){if(!B.some(s=>t.includes(s))&&!N.some(s=>t.includes(s))){let s=n?be:ve,i=n?ye:fe;return e.length>0?s.concat(k,e,k,t,i):s.concat(t,i)}return t}},ee=class{};var T=require("obsidian");var b=require("obsidian");var S=class extends b.Modal{constructor(e,n,s,i,r){super(e);this.resultConfirmed=!1;this.title=n,this.defaultPassword=r,this.confirmPassword=i,this.isEncrypting=s}onOpen(){var c,h,y,w;let{contentEl:e}=this;e.empty(),this.invalidate();let n=(h=(c=this.defaultPassword)==null?void 0:c.password)!=null?h:"",s="",i=(w=(y=this.defaultPassword)==null?void 0:y.hint)!=null?w:"";new b.Setting(e).setHeading().setName(this.title),A.buildPasswordSetting({container:e,name:"Password:",placeholder:this.isEncrypting?"":`Hint: ${i}`,initialValue:n,autoFocus:n=="",onChangeCallback:f=>{n=f,this.invalidate()},onEnterCallback:f=>{if(n=f,this.invalidate(),n.length>0)if(r.settingEl.isShown()){let d=r.components.find(u=>u instanceof b.TextComponent);d instanceof b.TextComponent&&d.inputEl.focus()}else if(a.settingEl.isShown()){let d=a.components.find(u=>u instanceof b.TextComponent);d instanceof b.TextComponent&&d.inputEl.focus()}else l()&&this.close()}});let r=A.buildPasswordSetting({container:e,name:"Confirm Password:",autoFocus:n!="",onChangeCallback:f=>{s=f,this.invalidate()},onEnterCallback:f=>{if(s=f,this.invalidate(),s.length>0&&l()&&a.settingEl.isShown()){let d=a.components.find(u=>u instanceof b.TextComponent);d instanceof b.TextComponent&&d.inputEl.focus()}}});this.confirmPassword||r.settingEl.hide();let a=new b.Setting(e).setName("Optional Password Hint").addText(f=>{f.inputEl.placeholder="Password Hint",f.setValue(i),f.onChange(d=>i=d),f.inputEl.on("keypress","*",(d,u)=>{d.key=="Enter"&&u instanceof HTMLInputElement&&u.value.length>0&&(d.preventDefault(),l()&&this.close())})});this.isEncrypting||a.settingEl.hide(),new b.Setting(e).addButton(f=>{f.setButtonText("Confirm").onClick(d=>{l()&&this.close()})});let l=()=>(this.invalidate(),r.setDesc(""),this.confirmPassword&&n!=s?(r.setDesc("Passwords don't match"),!1):(this.resultConfirmed=!0,this.resultPassword={password:n,hint:i},!0))}open2Async(){return new Promise((e,n)=>{this.onClose=()=>{this.resultConfirmed==!0?e(this.resultPassword):e(null)},this.open()})}openAsync(){return new Promise((e,n)=>{this.onClose=()=>{this.resultConfirmed==!0?e(this.resultPassword):n()},this.open()})}invalidate(){this.resultConfirmed=!1,this.resultPassword={password:"",hint:""}}};var te=class{constructor(t,e,n){this.version="1.0";this.version=t,this.hint=e,this.encodedData=n}},ne=class ne{static async encrypt(t,e,n){let i=await D.BuildDefault().encryptToBase64(n,t);return new te(ne.DEFAULT_VERSION,e,i)}static async decrypt(t,e){return t.encodedData==""?"":await D.BuildFromFileDataOrThrow(t).decryptFromBase64(t.encodedData,e)}};ne.DEFAULT_VERSION="2.0";var F=ne,P=class{static encode(t){return JSON.stringify(t,null,2)}static isEncoded(t){try{return JSON.parse(t),!0}catch(e){return!1}}static decode(t){return t===""?new te(F.DEFAULT_VERSION,"",""):JSON.parse(t)}};var Me="encrypted",Te="mdenc",se=Te,C=[Te,Me];var U=require("obsidian");var ie=class ie extends U.MarkdownView{constructor(){super(...arguments);this.passwordAndHint=null;this.encryptedData=null;this.isSavingEnabled=!1;this.isLoadingFileInProgress=!1;this.isSavingInProgress=!1;this.allowNoFile=!1}getViewType(){return ie.VIEW_TYPE}canAcceptExtension(e){return C.includes(e)}async onLoadFile(e){if(this.setUnencryptedViewData("",!0),!this.app.workspace.layoutReady){this.leaf.detach();return}let n=await this.app.vault.read(e);this.encryptedData=P.decode(n),this.passwordAndHint=await p.getByFile(e),this.passwordAndHint.hint=this.encryptedData.hint;let s=await F.decrypt(this.encryptedData,this.passwordAndHint.password);for(;s==null;){if(this.passwordAndHint=await new S(this.app,`Decypting "${e.basename}"`,!1,!1,{password:"",hint:this.encryptedData.hint}).open2Async(),this.passwordAndHint==null){this.leaf.detach();return}s=await F.decrypt(this.encryptedData,this.passwordAndHint.password),s==null&&new U.Notice("Decryption failed")}if(s==null){this.leaf.detach();return}this.passwordAndHint!=null&&p.putByFile(this.passwordAndHint,e),this.setUnencryptedViewData(s,!0),this.isSavingEnabled=!0,this.isLoadingFileInProgress=!0;try{this.origFile=e,await super.onLoadFile(e)}finally{this.isLoadingFileInProgress=!1}}detachSafely(){this.save(),this.isSavingEnabled=!1,this.leaf.detach()}async onUnloadFile(e){this.passwordAndHint==null||this.encryptedData==null||await super.onUnloadFile(e)}async onRename(e){this.origFile&&p.clearForFile(this.origFile),this.passwordAndHint!=null&&p.putByFile(this.passwordAndHint,e),await super.onRename(e)}getUnencryptedViewData(){return super.getViewData()}getViewData(){if(this.isSavingInProgress){if(this.encryptedData==null)throw new Error("encryptedData is unexpectedly null");return P.encode(this.encryptedData)}return this.getUnencryptedViewData()}setUnencryptedViewData(e,n){super.setViewData(e,n)}setViewData(e,n){if(this.file==null){console.debug("View data will not be set because file is null");return}if(!this.isLoadingFileInProgress){if(P.isEncoded(e)){if(console.debug("View is being set with already encoded data, trying to decode",{data:e}),this.passwordAndHint==null){console.error("passwordAndHint == null");return}let s=P.decode(e);F.decrypt(s,this.passwordAndHint.password).then(i=>{if(i==null){console.error("View was being set with already encoceded data but the decryption failed, closing view"),this.isSavingEnabled=!1,this.leaf.detach();return}this.setUnencryptedViewData(i,n)});return}this.setUnencryptedViewData(e,n)}}async save(e){if(this.isSavingInProgress){console.debug("Saving was prevented because another save is in progress, Obsidian will try again later if the content changed.");return}this.isSavingInProgress=!0;try{if(this.file==null){console.debug("Saving was prevented beacuse there is no file loaded in the view yet");return}if(!C.includes(this.file.extension)){console.debug("Saving was prevented because the file is not an encrypted file");return}if(!this.isSavingEnabled){console.debug("Saving was prevented because the file was not yet loaded with a password or was explicitly disabled");return}if(this.passwordAndHint==null){console.debug("Saving was prevented beacuse there is no password set");return}let n=this.getUnencryptedViewData();if(P.isEncoded(n)){console.debug("Saving was prevented beacuse the data was already encoded but it was expected to not be");return}this.encryptedData=await F.encrypt(this.passwordAndHint.password,this.passwordAndHint.hint,n),await super.save(e)}finally{this.isSavingInProgress=!1}}async changePassword(){if(this.file==null){console.debug("Unable to change password beacuse there is no file loaded in the view yet");return}let e=new S(this.app,`Change password for "${this.file.basename}"`,!0,!0,await p.getByFile(this.file));try{let n=await e.openAsync();this.passwordAndHint=n,p.putByFile(n,this.file),await this.save(),new U.Notice("Password changed")}catch(n){new U.Notice("Password wasn't changed")}}};ie.VIEW_TYPE="meld-encrypted-view";var v=ie;var z=class{async onload(t,e){this.plugin=t,this.plugin.addCommand({id:"meld-encrypt-convert-to-or-from-encrypted-note",name:"Convert to or from an Encrypted note",icon:"file-lock-2",checkCallback:n=>this.processCommandConvertActiveNote(n)}),this.plugin.addRibbonIcon("file-lock-2","Convert to or from an Encrypted note",n=>this.processCommandConvertActiveNote(!1)),this.plugin.registerEvent(this.plugin.app.workspace.on("file-menu",(n,s)=>{s instanceof T.TFile&&(s.extension=="md"&&n.addItem(i=>{i.setTitle("Encrypt note").setIcon("file-lock-2").onClick(()=>this.processCommandEncryptNote(s))}),C.contains(s.extension)&&n.addItem(i=>{i.setTitle("Decrypt note").setIcon("file").onClick(()=>this.processCommandDecryptNote(s))}))}))}onunload(){}buildSettingsUi(t,e){}checkCanEncryptFile(t){return t==null?!1:t.extension=="md"}checkCanDecryptFile(t){return t==null?!1:C.contains(t.extension)}processCommandEncryptNote(t){this.getPasswordAndEncryptFile(t).catch(e=>{e&&new T.Notice(e,1e4)})}processCommandDecryptNote(t){this.getPasswordAndDecryptFile(t).catch(e=>{e&&new T.Notice(e,1e4)})}processCommandConvertActiveNote(t){let e=this.plugin.app.workspace.getActiveFile();if(t)return this.checkCanEncryptFile(e)||this.checkCanDecryptFile(e);(e==null?void 0:e.extension)=="md"&&this.getPasswordAndEncryptFile(e).catch(n=>{n&&new T.Notice(n,1e4)}),e&&C.contains(e.extension)&&this.getPasswordAndDecryptFile(e).catch(n=>{n&&new T.Notice(n,1e4)})}async getPasswordAndEncryptFile(t){if(!this.checkCanEncryptFile(t))throw new Error("Unable to encrypt file");try{let e=await p.getByFile(t);e.password==""&&(e=await new S(this.plugin.app,"Encrypt Note",!0,!0,e).openAsync());let n=await this.encryptFile(t,e);await this.closeUpdateRememberPasswordThenReopen(t,se,n,e),new T.Notice("\u{1F510} Note was encrypted \u{1F510}")}catch(e){e&&new T.Notice(e,1e4)}}async getPasswordAndDecryptFile(t){if(!this.checkCanDecryptFile(t))throw new Error("Unable to decrypt file");let e=await p.getByFile(t);if(e.password!=""){let r=await this.decryptFile(t,e.password);if(r!=null){await this.closeUpdateRememberPasswordThenReopen(t,"md",r,e);return}}let n=await this.plugin.app.vault.read(t),s=P.decode(n),i=new S(this.plugin.app,"Decrypt Note",!1,!1,{password:"",hint:s.hint});try{if(e=await i.openAsync(),!i.resultConfirmed)return;let r=await this.decryptFile(t,e.password);if(r==null)throw new Error("Decryption failed");await this.closeUpdateRememberPasswordThenReopen(t,"md",r,e),new T.Notice("\u{1F513} Note was decrypted \u{1F513}")}catch(r){r&&new T.Notice(r,1e4)}}async closeUpdateRememberPasswordThenReopen(t,e,n,s){let i=!1;this.plugin.app.workspace.iterateAllLeaves(r=>{r.view instanceof T.TextFileView&&r.view.file==t&&(r.view instanceof v?r.view.detachSafely():r.detach(),i=!0)});try{let r=R.getFilePathWithNewExtension(t,e);await this.plugin.app.fileManager.renameFile(t,r),await this.plugin.app.vault.modify(t,n),p.putByFile(s,t)}finally{i&&await this.plugin.app.workspace.getLeaf(!0).openFile(t)}}async encryptFile(t,e){let n=await this.plugin.app.vault.read(t),s=await F.encrypt(e.password,e.hint,n);return P.encode(s)}async decryptFile(t,e){let n=await this.plugin.app.vault.read(t),s=P.decode(n);return await F.decrypt(s,e)}};var L=require("obsidian");var _=class{async onload(t){this.plugin=t,this.plugin.addRibbonIcon("file-lock-2","New encrypted note",async e=>{await this.processCreateNewEncryptedNoteCommand(this.getDefaultFileFolder())}),this.plugin.addCommand({id:"meld-encrypt-create-new-note",name:"Create new encrypted note",icon:"file-lock-2",callback:async()=>await this.processCreateNewEncryptedNoteCommand(this.getDefaultFileFolder())}),this.plugin.registerEvent(this.plugin.app.workspace.on("file-menu",(e,n)=>{n instanceof L.TFolder&&e.addItem(s=>{s.setTitle("New encrypted note").setIcon("file-lock-2").onClick(()=>this.processCreateNewEncryptedNoteCommand(n))})})),this.statusIndicator=this.plugin.addStatusBarItem(),this.statusIndicator.hide(),this.statusIndicator.setText("\u{1F510}"),this.plugin.registerEvent(this.plugin.app.workspace.on("editor-menu",(e,n,s)=>{s.file==null||!C.includes(s.file.extension)||s instanceof v&&(e.addItem(i=>{i.setTitle("Change Password").setIcon("key-round").onClick(async()=>await s.changePassword())}),e.addItem(i=>{i.setTitle("Lock & Close").setIcon("lock").onClick(()=>this.lockAndClose(s))}))})),this.plugin.registerEvent(this.plugin.app.workspace.on("file-menu",(e,n)=>{if(!(n instanceof L.TFile)||!C.includes(n.extension))return;let s=this.plugin.app.workspace.getActiveViewOfType(v);s==null||s.file!=n||(e.addItem(i=>{i.setTitle("Change Password").setIcon("key-round").onClick(async()=>await s.changePassword())}),e.addItem(i=>{i.setTitle("Lock & Close").setIcon("lock").onClick(()=>this.lockAndClose(s))}))})),this.plugin.registerView(v.VIEW_TYPE,e=>new v(e)),this.plugin.registerExtensions(C,v.VIEW_TYPE),this.plugin.registerEvent(this.plugin.app.workspace.on("layout-change",()=>{if(this.plugin.app.workspace.getActiveViewOfType(v)==null){this.statusIndicator.hide();return}this.statusIndicator.show()})),this.plugin.registerEvent(this.plugin.app.workspace.on("active-leaf-change",async e=>{if(e!=null&&!(e.view instanceof v)&&e.view instanceof L.MarkdownView){let n=e.view.file;if(n==null)return;if(C.includes(n.extension)){let s=e.getViewState();s.type=v.VIEW_TYPE,await e.setViewState(s);return}}}))}lockAndClose(t){t.detachSafely(),t.file!=null&&p.clearForFile(t.file)}getDefaultFileFolder(){let t=this.plugin.app.workspace.getActiveFile();return t!=null?this.plugin.app.fileManager.getNewFileParent(t.path):this.plugin.app.fileManager.getNewFileParent("")}async processCreateNewEncryptedNoteCommand(t){let e=(0,L.moment)().format(`[Untitled] YYYYMMDD hhmmss[.${se}]`),n=(0,L.normalizePath)(t.path+"/"+e),s;if(p.getLevel()==p.LevelExternalFile&&(s=await p.getByPathAsync(n)),!s){let c=new S(this.plugin.app,"Please provide a password for encryption",!0,!0,await p.getByPathAsync(n));try{s=await c.openAsync()}catch(h){return}}let i=await F.encrypt(s.password,s.hint,""),r=P.encode(i),a=await this.plugin.app.vault.create(n,r);p.putByFile(s,a),await this.plugin.app.workspace.getLeaf(!0).openFile(a)}onunload(){this.plugin.app.workspace.detachLeavesOfType(v.VIEW_TYPE)}buildSettingsUi(t,e){}};var re=class extends ae.Plugin{constructor(){super(...arguments);this.enabledFeatures=[]}async onload(){p.init(this.app.vault.adapter),await this.loadSettings(),this.enabledFeatures.push(new _,new z,new $),this.addSettingTab(new K(this.app,this,this.settings,this.enabledFeatures)),this.addCommand({id:"meld-encrypt-clear-password-cache",name:"Clear Session Password Cache",icon:"shield-ellipsis",callback:()=>{let e=p.clear();new ae.Notice(`Items cleared: ${e}`)}}),this.enabledFeatures.forEach(async e=>{await e.onload(this,this.settings)})}onunload(){this.enabledFeatures.forEach(async e=>{e.onunload()}),super.onunload()}async loadSettings(){let e={confirmPassword:!0,rememberPassword:!0,rememberPasswordTimeout:30,rememberPasswordLevel:p.LevelVault,rememberPasswordExternalFilePaths:[],featureWholeNoteEncrypt:{},featureInplaceEncrypt:{expandToWholeLines:!1,showMarkerWhenReadingDefault:!0}};this.settings=Object.assign(e,await this.loadData()),p.setActive(this.settings.rememberPassword),p.setAutoExpire(this.settings.rememberPasswordTimeout==0?null:this.settings.rememberPasswordTimeout),p.setLevel(this.settings.rememberPasswordLevel),p.setExternalFilePaths(this.settings.rememberPasswordExternalFilePaths)}async saveSettings(){await this.saveData(this.settings)}}; - -`),await this.encodeAndSave(),g.putByFile({password:d,hint:c},this.file),this.currentEditNoteMode="Source",this.refreshView(2))},r=g.getByFile(this.file),s=r.password,o="",a=r.hint,l=P.buildPasswordSetting({container:n,name:"Password:",autoFocus:!0,initialValue:s,onChangeCallback:d=>{s=d,l.setDesc(this.validatePassword(s)),w.setDesc(this.validateConfirm(s,o))},onEnterCallback:d=>{var h;s=d,s.length>0&&((h=w.controlEl.querySelector("input"))==null||h.focus())}}),w=P.buildPasswordSetting({container:n,name:"Confirm:",autoFocus:!1,onChangeCallback:d=>{o=d,l.setDesc(this.validatePassword(s)),w.setDesc(this.validateConfirm(s,o))},onEnterCallback:d=>{var c;o=d,s===o&&((c=f.controlEl.querySelector("input"))==null||c.focus())}}),f=new m.Setting(n).setName("Hint:").addText(d=>{d.setValue(a),d.onChange(h=>{a=h})});f.controlEl.on("keydown","*",d=>{d.key==="Enter"&&(d.preventDefault(),i(s,o,a))}),new m.Setting(n).addButton(d=>{d.setCta().setIcon("go-to-file").setTooltip("Edit").onClick(h=>i(s,o,a))})}addDecryptNoteView(e){this.addHeader(e,"This note is encrypted");let n=this.addUserInputContainer(e);new m.Setting(n).setDesc("Please provide a password to unlock this note.");let i=P.buildPasswordSetting({container:n,name:"Password:",autoFocus:!0,placeholder:this.formatHint(this.hint),onChangeCallback:s=>{this.encryptionPassword=s,i.setDesc(this.validatePassword(this.encryptionPassword))},onEnterCallback:async()=>await this.handleDecryptButtonClick()});new m.Setting(n).addButton(s=>{s.setCta().setIcon("checkmark").setTooltip("Unlock & Edit").onClick(o=>this.handleDecryptButtonClick())});let r=g.getByFile(this.file);this.encryptionPassword=r.password,r.password.length>0&&this.decryptWithPassword(r.password).then(s=>{s!=null&&(this.currentEditorSourceText=s,this.refreshView(2),new m.Notice("Decrypted using remembered password",2e3))})}async encodeAndSave(){try{let e=await I.encode(this.encryptionPassword,this.hint,this.currentEditorSourceText);this.data=D.encode(e),this.requestSave()}catch(e){console.error(e),new m.Notice(e,1e4)}}addEditorSourceView(e){this.elActionReadingView.show(),this.elActionIconLockNote.show(),this.elActionChangePassword.show(),this.addHeader(e,"Editing an encrypted note");let n=e.createDiv({cls:"editor-source-view"},i=>{i.spellcheck=!0,i.autocapitalize="on",i.translate=!1,i.contentEditable="plaintext-only",i.style.tabSize="4",i.innerText=this.currentEditorSourceText});n.focus(),n.on("keydown","*",(i,r)=>{i.key=="Tab"&&this.handleTabInEditor(i,n)}),n.on("input","*",async(i,r)=>{this.updateAndSaveEditorSourceText(n)})}async updateAndSaveEditorSourceText(e){this.currentEditorSourceText=e.innerText,await this.encodeAndSave()}handleTabInEditor(e,n){let i=window.getSelection();if(i==null||i.rangeCount<1)return;e.preventDefault();let r=!e.shiftKey;for(let s=0;s{console.error(i)}),n.on("click","a.internal-link",async(i,r)=>{if(r instanceof HTMLAnchorElement){let s=(0,m.normalizePath)(decodeURI(r.pathname));this.app.workspace.openLinkText(s,this.file.path,i.ctrlKey)}})}addUserInputContainer(e){return e.createDiv({cls:"input-container"})}addChangePasswordView(e){this.addHeader(e,"Change encrypted note password");let n=this.addUserInputContainer(e),i="",r="",s="",o=async(f,d,h)=>{let c=this.validatePassword(f),u=this.validateConfirm(f,d);a.setDesc(c),l.setDesc(u),c.length===0&&u.length===0&&(this.encryptionPassword=f,this.hint=h,this.encodeAndSave(),this.refreshView(2),g.putByFile({password:f,hint:h},this.file),new m.Notice("Password and Hint were changed"))},a=P.buildPasswordSetting({container:n,name:"New Password:",autoFocus:!0,onChangeCallback:f=>{i=f,a.setDesc(this.validatePassword(i)),l.setDesc(this.validateConfirm(i,r))},onEnterCallback:f=>{var d;i=f,i.length>0&&((d=l.controlEl.querySelector("input"))==null||d.focus())}}),l=P.buildPasswordSetting({container:n,name:"Confirm:",onChangeCallback:f=>{r=f,a.setDesc(this.validatePassword(i)),l.setDesc(this.validateConfirm(i,r))},onEnterCallback:f=>{var h;r=f,i===r&&((h=w.controlEl.querySelector("input"))==null||h.focus())}}),w=new m.Setting(n).setName("New Hint:").addText(f=>{f.onChange(d=>{s=d})});w.controlEl.on("keydown","*",f=>{f.key==="Enter"&&(f.preventDefault(),o(i,r,s))}),new m.Setting(n).addButton(f=>{f.removeCta().setIcon("cross").setTooltip("Cancel").onClick(()=>{this.refreshView(2)})}).addButton(f=>{f.setCta().setIcon("checkmark").setTooltip("Change Password").setWarning().onClick(d=>{o(i,r,s)})})}formatHint(e){return e.length>0?`Hint: ${e}`:""}refreshView(e){this.currentView=e,this.elActionEditView.hide(),this.elActionReadingView.hide(),this.elActionIconLockNote.hide(),this.elActionChangePassword.hide(),this.contentEl.empty(),O.readableLineLength?this.contentEl.classList.add("is-readable-line-width"):this.contentEl.classList.remove("is-readable-line-width");let n=this.contentEl.createDiv({cls:"content-container"});switch(this.currentView){case 4:this.addNewNoteView(n);break;case 1:this.addDecryptNoteView(n);break;case 2:this.currentEditNoteMode=="Source"?this.addEditorSourceView(n):this.addEditorReadingView(n);break;case 3:this.addChangePasswordView(n);break}}async decryptWithPassword(e){let n=D.decode(this.data);return await I.decrypt(n,e)}async handleDecryptButtonClick(){let e=await this.decryptWithPassword(this.encryptionPassword);e===null?new m.Notice("Decryption failed"):(g.putByFile({password:this.encryptionPassword,hint:this.hint},this.file),this.currentEditorSourceText=e,this.refreshView(2))}canAcceptExtension(e){return N.contains(e)}getViewType(){return $}setViewData(e,n){if(n){let i;e===""?i=4:i=1,this.encryptionPassword="";let r=D.decode(this.data);this.hint=r.hint,this.refreshView(i)}else this.leaf.detach(),new m.Notice("Multiple views of the same encrypted note isn't supported")}getViewData(){return this.data}clear(){}};var G=class{async onload(t,e){this.plugin=t,this.settings=e.featureWholeNoteEncrypt,this.plugin.addRibbonIcon("file-lock-2","New encrypted note",n=>{this.processCreateNewEncryptedNoteCommand(this.getDefaultFileFolder())}),this.plugin.registerView($,n=>new z(n,this.settings)),this.plugin.registerExtensions(N,$),this.plugin.addCommand({id:"meld-encrypt-create-new-note",name:"Create new encrypted note",icon:"file-lock-2",callback:()=>this.processCreateNewEncryptedNoteCommand(this.getDefaultFileFolder())}),this.plugin.addCommand({id:"meld-encrypt-toggle-reading-view",name:"Toggle Reading View",icon:"edit",callback:()=>this.processToggleReadingViewCommand()}),this.plugin.registerEvent(this.plugin.app.workspace.on("file-menu",(n,i)=>{i instanceof F.TFolder&&n.addItem(r=>{r.setTitle("New encrypted note").setIcon("file-lock-2").onClick(()=>this.processCreateNewEncryptedNoteCommand(i))})}))}onunload(){this.plugin.app.workspace.detachLeavesOfType($)}processToggleReadingViewCommand(){let t=this.plugin.app.workspace.getActiveViewOfType(z);t==null||t.toggleReadingView()}getDefaultFileFolder(){let t=this.plugin.app.workspace.getActiveFile();return t!=null?this.plugin.app.fileManager.getNewFileParent(t.path):this.plugin.app.fileManager.getNewFileParent("")}processCreateNewEncryptedNoteCommand(t){try{let e=(0,F.moment)().format(`[Untitled] YYYYMMDD hhmmss[.${se}]`),n=(0,F.normalizePath)(t.path+"/"+e);this.plugin.app.vault.create(n,"").then(async i=>{await this.plugin.app.workspace.getLeaf(!0).openFile(i)}).catch(i=>{new F.Notice(i,1e4)})}catch(e){console.error(e),new F.Notice(e,1e4)}}buildSettingsUi(t,e){new F.Setting(t).setHeading().setName("Whole note encryption"),new F.Setting(t).setName("Default view for new tabs").setDesc("The default view that a new encrypted note tab gets opened in").addDropdown(n=>{var i;n.addOption(`${"Source"}`,"Source view").addOption(`${"Reading"}`,"Reading view").setValue(`${(i=this.settings.defaultView)!=null?i:"Source"}`).onChange(async r=>{this.settings.defaultView=r,await e()})})}};var T=require("obsidian");var b=require("obsidian");var U=class extends b.Modal{constructor(e,n,i,r,s){super(e);this.resultConfirmed=!1;this.title=n,this.defaultPassword=s,this.confirmPassword=r,this.isEncrypting=i}onOpen(){var l,w,f,d;let{contentEl:e}=this;e.empty(),this.invalidate();let n=(w=(l=this.defaultPassword)==null?void 0:l.password)!=null?w:"",i="",r=(d=(f=this.defaultPassword)==null?void 0:f.hint)!=null?d:"";new b.Setting(e).setHeading().setName(this.title),P.buildPasswordSetting({container:e,name:"Password:",placeholder:this.isEncrypting?"":`Hint: ${r}`,initialValue:n,autoFocus:n=="",onChangeCallback:h=>{n=h,this.invalidate()},onEnterCallback:h=>{if(n=h,this.invalidate(),n.length>0)if(s.settingEl.isShown()){let c=s.components.find(u=>u instanceof b.TextComponent);c instanceof b.TextComponent&&c.inputEl.focus()}else if(o.settingEl.isShown()){let c=o.components.find(u=>u instanceof b.TextComponent);c instanceof b.TextComponent&&c.inputEl.focus()}else a()&&this.close()}});let s=P.buildPasswordSetting({container:e,name:"Confirm Password:",autoFocus:n!="",onChangeCallback:h=>{i=h,this.invalidate()},onEnterCallback:h=>{if(i=h,this.invalidate(),i.length>0&&a()&&o.settingEl.isShown()){let c=o.components.find(u=>u instanceof b.TextComponent);c instanceof b.TextComponent&&c.inputEl.focus()}}});this.confirmPassword||s.settingEl.hide();let o=new b.Setting(e).setName("Optional Password Hint").addText(h=>{h.inputEl.placeholder="Password Hint",h.setValue(r),h.onChange(c=>r=c),h.inputEl.on("keypress","*",(c,u)=>{c.key=="Enter"&&u instanceof HTMLInputElement&&u.value.length>0&&(c.preventDefault(),a()&&this.close())})});this.isEncrypting||o.settingEl.hide(),new b.Setting(e).addButton(h=>{h.setButtonText("Confirm").onClick(c=>{a()&&this.close()})});let a=()=>(this.invalidate(),s.setDesc(""),this.confirmPassword&&n!=i?(s.setDesc("Passwords don't match"),!1):(this.resultConfirmed=!0,this.resultPassword={password:n,hint:r},!0))}openAsync(){return new Promise((e,n)=>{this.onClose=()=>{this.resultConfirmed==!0?e(this.resultPassword):n()},this.open()})}invalidate(){this.resultConfirmed=!1,this.resultPassword={password:"",hint:""}}};var q=class{async onload(t,e){this.plugin=t,this.plugin.addCommand({id:"meld-encrypt-convert-to-or-from-encrypted-note",name:"Convert to or from an Encrypted note",icon:"file-lock",checkCallback:n=>this.processCommandConvertActiveNote(n)}),this.plugin.addRibbonIcon("file-lock","Convert to or from an Encrypted note",n=>this.processCommandConvertActiveNote(!1)),this.plugin.registerEvent(this.plugin.app.workspace.on("file-menu",(n,i)=>{i instanceof T.TFile&&(i.extension=="md"&&n.addItem(r=>{r.setTitle("Encrypt note").setIcon("file-lock").onClick(()=>this.processCommandEncryptNote(i))}),N.contains(i.extension)&&n.addItem(r=>{r.setTitle("Decrypt note").setIcon("file").onClick(()=>this.processCommandDecryptNote(i))}))}))}onunload(){}buildSettingsUi(t,e){}checkCanEncryptFile(t){return t==null?!1:t.extension=="md"}checkCanDecryptFile(t){return t==null?!1:N.contains(t.extension)}processCommandEncryptNote(t){this.getPasswordAndEncryptFile(t).catch(e=>{e&&new T.Notice(e,1e4)})}processCommandDecryptNote(t){this.getPasswordAndDecryptFile(t).catch(e=>{e&&new T.Notice(e,1e4)})}processCommandConvertActiveNote(t){let e=this.plugin.app.workspace.getActiveFile();if(t)return this.checkCanEncryptFile(e)||this.checkCanDecryptFile(e);(e==null?void 0:e.extension)=="md"&&this.getPasswordAndEncryptFile(e).catch(n=>{n&&new T.Notice(n,1e4)}),e&&N.contains(e.extension)&&this.getPasswordAndDecryptFile(e).catch(n=>{n&&new T.Notice(n,1e4)})}async getPasswordAndEncryptFile(t){if(!this.checkCanEncryptFile(t))throw new Error("Unable to encrypt file");let e=g.getByFile(t),n=new U(this.plugin.app,"Encrypt Note",!0,!0,e);try{let i=await n.openAsync(),r=await this.encryptFile(t,i);await this.closeUpdateRememberPasswordThenReopen(t,se,r,i),new T.Notice("\u{1F510} Note was encrypted \u{1F510}")}catch(i){i&&new T.Notice(i,1e4)}}async getPasswordAndDecryptFile(t){if(!this.checkCanDecryptFile(t))throw new Error("Unable to decrypt file");let e=g.getByFile(t);if(e.password!=""){let s=await this.decryptFile(t,e.password);if(s!=null){await this.closeUpdateRememberPasswordThenReopen(t,"md",s,e);return}}let n=await this.plugin.app.vault.read(t),i=D.decode(n),r=new U(this.plugin.app,"Decrypt Note",!1,!1,{password:"",hint:i.hint});try{if(e=await r.openAsync(),!r.resultConfirmed)return;let s=await this.decryptFile(t,e.password);if(s==null)throw new Error("Decryption failed");await this.closeUpdateRememberPasswordThenReopen(t,"md",s,e),new T.Notice("\u{1F513} Note was decrypted \u{1F513}")}catch(s){s&&new T.Notice(s,1e4)}}async closeUpdateRememberPasswordThenReopen(t,e,n,i){let r=!1;this.plugin.app.workspace.iterateAllLeaves(s=>{s.view instanceof T.TextFileView&&s.view.file==t&&(s.detach(),r=!0)});try{let s=R.getFilePathWithNewExtension(t,e);await this.plugin.app.fileManager.renameFile(t,s),await this.plugin.app.vault.modify(t,n),g.putByFile(i,t)}finally{r&&await this.plugin.app.workspace.getLeaf().openFile(t)}}async encryptFile(t,e){let n=await this.plugin.app.vault.read(t),i=await I.encode(e.password,e.hint,n);return D.encode(i)}async decryptFile(t,e){let n=await this.plugin.app.vault.read(t),i=D.decode(n);return await I.decrypt(i,e)}};var re=class extends oe.Plugin{constructor(){super(...arguments);this.enabledFeatures=[]}async onload(){await this.loadSettings(),this.enabledFeatures.push(new G,new q,new Y),this.addSettingTab(new _(this.app,this,this.settings,this.enabledFeatures)),this.addCommand({id:"meld-encrypt-clear-password-cache",name:"Clear Session Password Cache",icon:"file-lock",callback:()=>{let e=g.clear();new oe.Notice(`Items cleared: ${e}`)}}),this.enabledFeatures.forEach(async e=>{await e.onload(this,this.settings)})}onunload(){this.enabledFeatures.forEach(async e=>{e.onunload()})}async loadSettings(){let e={confirmPassword:!0,rememberPassword:!0,rememberPasswordTimeout:30,rememberPasswordLevel:g.LevelVault,featureWholeNoteEncrypt:{defaultView:"Source".toString()},featureInplaceEncrypt:{expandToWholeLines:!1,showMarkerWhenReadingDefault:!0}};this.settings=Object.assign(e,await this.loadData()),g.setActive(this.settings.rememberPassword),g.setAutoExpire(this.settings.rememberPasswordTimeout==0?null:this.settings.rememberPasswordTimeout),g.setLevel(this.settings.rememberPasswordLevel)}async saveSettings(){await this.saveData(this.settings)}}; +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/meld-encrypt/manifest.json b/.obsidian/plugins/meld-encrypt/manifest.json index 23400c0d..99092ce4 100644 --- a/.obsidian/plugins/meld-encrypt/manifest.json +++ b/.obsidian/plugins/meld-encrypt/manifest.json @@ -1,14 +1,14 @@ -{ - "id": "meld-encrypt", - "name": "Meld Encrypt", - "version": "2.3.7", - "minAppVersion": "1.0.3", - "description": "Hide secrets in your vault", - "author": "meld-cp", - "authorUrl": "https://github.com/meld-cp/obsidian-encrypt", - "isDesktopOnly": false, - "fundingUrl": { - "Buy Me a Coffee": "https://www.buymeacoffee.com/cleon", - "GitHub Sponsor": "https://github.com/sponsors/meld-cp" - } +{ + "id": "meld-encrypt", + "name": "Meld Encrypt", + "version": "2.4.0", + "minAppVersion": "1.0.3", + "description": "Hide secrets in your vault", + "author": "meld-cp", + "authorUrl": "https://github.com/meld-cp/obsidian-encrypt", + "isDesktopOnly": false, + "fundingUrl": { + "Buy Me a Coffee": "https://www.buymeacoffee.com/cleon", + "GitHub Sponsor": "https://github.com/sponsors/meld-cp" + } } \ No newline at end of file diff --git a/.obsidian/plugins/meld-encrypt/styles.css b/.obsidian/plugins/meld-encrypt/styles.css index 38cb0e27..82899503 100644 --- a/.obsidian/plugins/meld-encrypt/styles.css +++ b/.obsidian/plugins/meld-encrypt/styles.css @@ -1,42 +1,3 @@ -/* FEATURE WHOLE NOTE */ - -.meld-encrypt-encrypted-note-view-content{ - display: flex; - flex-direction: column; - height: calc( 100vh - var(--header-height) * 2.5 ) !important; -} - -.meld-encrypt-encrypted-note-view .encrypted-note-message{ - text-align: center; - padding-bottom: 0.5em; -} - - -.meld-encrypt-encrypted-note-view .input-container{ - max-width: 400px; -} - -.meld-encrypt-encrypted-note-view .content-container{ - width: 100%; -} - -.meld-encrypt-encrypted-note-view .is-readable-line-width .content-container{ - max-width: var(--file-line-width); - margin-left: auto; - margin-right: auto; -} - -.meld-encrypt-encrypted-note-view .editor-reading-view{ - user-select: text; -} - -.meld-encrypt-encrypted-note-view .editor-reading-view, -.meld-encrypt-encrypted-note-view .editor-source-view{ - padding-bottom: 233px; -} - -/* END FEATURE WHOLE NOTE */ - /* FEATURE IN LINE */ .meld-encrypt-inline-reading-marker { @@ -49,4 +10,14 @@ resize: vertical; } -/* END FEATURE IN LINE */ \ No newline at end of file +/* END FEATURE IN LINE */ + +/* FEATURE ENCRYPTED MD */ + +div[data-type="meld-encrypted-view"] .view-content { + background-position: center; + background-repeat: no-repeat; + background-image: url('data:image/svg+xml,'); +} + +/* END FEATURE ENCRYPTED MD */ \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-activity-history/data.json b/.obsidian/plugins/obsidian-activity-history/data.json index 6de3284e..0b7ba331 100644 --- a/.obsidian/plugins/obsidian-activity-history/data.json +++ b/.obsidian/plugins/obsidian-activity-history/data.json @@ -12,8 +12,8 @@ "checkpointList": [ { "path": "/", - "date": "2025-01-15", - "size": 11839252 + "date": "2025-02-20", + "size": 8986543 } ], "activityHistory": [ @@ -4418,7 +4418,151 @@ }, { "date": "2025-01-15", - "value": 1285 + "value": 3326664 + }, + { + "date": "2025-01-16", + "value": 1438 + }, + { + "date": "2025-01-17", + "value": 1982 + }, + { + "date": "2025-01-18", + "value": 1924 + }, + { + "date": "2025-01-19", + "value": 1567 + }, + { + "date": "2025-01-20", + "value": 1438 + }, + { + "date": "2025-01-21", + "value": 36348 + }, + { + "date": "2025-01-22", + "value": 3783 + }, + { + "date": "2025-01-23", + "value": 0 + }, + { + "date": "2025-01-24", + "value": 2971 + }, + { + "date": "2025-01-25", + "value": 1944 + }, + { + "date": "2025-01-26", + "value": 1782 + }, + { + "date": "2025-01-27", + "value": 1454 + }, + { + "date": "2025-01-28", + "value": 1560 + }, + { + "date": "2025-01-29", + "value": 1583 + }, + { + "date": "2025-01-30", + "value": 1446 + }, + { + "date": "2025-01-31", + "value": 2323 + }, + { + "date": "2025-02-01", + "value": 2045 + }, + { + "date": "2025-02-02", + "value": 200956 + }, + { + "date": "2025-02-03", + "value": 1881 + }, + { + "date": "2025-02-04", + "value": 1439 + }, + { + "date": "2025-02-05", + "value": 1749 + }, + { + "date": "2025-02-06", + "value": 1550 + }, + { + "date": "2025-02-07", + "value": 1101 + }, + { + "date": "2025-02-08", + "value": 1814 + }, + { + "date": "2025-02-09", + "value": 1408 + }, + { + "date": "2025-02-10", + "value": 2699 + }, + { + "date": "2025-02-11", + "value": 1461 + }, + { + "date": "2025-02-12", + "value": 1462 + }, + { + "date": "2025-02-13", + "value": 1434 + }, + { + "date": "2025-02-14", + "value": 42593 + }, + { + "date": "2025-02-15", + "value": 3313 + }, + { + "date": "2025-02-16", + "value": 135700 + }, + { + "date": "2025-02-17", + "value": 1634 + }, + { + "date": "2025-02-18", + "value": 1728 + }, + { + "date": "2025-02-19", + "value": 1446 + }, + { + "date": "2025-02-20", + "value": 1426 } ] } diff --git a/.obsidian/plugins/obsidian-commits/data.json b/.obsidian/plugins/obsidian-commits/data.json index cbd095aa..fa0baca1 100644 --- a/.obsidian/plugins/obsidian-commits/data.json +++ b/.obsidian/plugins/obsidian-commits/data.json @@ -1120,7 +1120,7 @@ "links": 1 }, "02.02 Paris/@@Paris.md": { - "size": 3811, + "size": 4348, "tags": 3, "links": 9 }, @@ -1515,7 +1515,7 @@ "links": 13 }, "05.02 Networks/Configuring UFW.md": { - "size": 6059, + "size": 7669, "tags": 2, "links": 6 }, @@ -1565,7 +1565,7 @@ "links": 1 }, "01.02 Home/Household.md": { - "size": 3024, + "size": 4189, "tags": 2, "links": 4 }, @@ -1860,7 +1860,7 @@ "links": 2 }, "01.02 Home/Fashion.md": { - "size": 2624, + "size": 3452, "tags": 3, "links": 2 }, @@ -2005,7 +2005,7 @@ "links": 2 }, "01.01 Life Orga/@Life Admin.md": { - "size": 3594, + "size": 4031, "tags": 5, "links": 5 }, @@ -5624,11 +5624,6 @@ "tags": 0, "links": 7 }, - "00.03 News/The New Rules.md": { - "size": 45639, - "tags": 2, - "links": 2 - }, "03.04 Cinematheque/The White Lotus (2021–2023).md": { "size": 2707, "tags": 0, @@ -6280,7 +6275,7 @@ "links": 4 }, "01.07 Animals/@Sally.md": { - "size": 2545, + "size": 2915, "tags": 2, "links": 4 }, @@ -7030,7 +7025,7 @@ "links": 2 }, "01.07 Animals/2023-07-13 Health check.md": { - "size": 1606, + "size": 1920, "tags": 3, "links": 3 }, @@ -7075,12 +7070,12 @@ "links": 6 }, "00.08 Bookmarks/Bookmarks - Investments.md": { - "size": 1545, + "size": 1049, "tags": 1, "links": 3 }, "00.08 Bookmarks/Bookmarks - Social Media.md": { - "size": 1918, + "size": 1418, "tags": 1, "links": 3 }, @@ -8914,31 +8909,6 @@ "tags": 0, "links": 6 }, - "00.03 News/How a Script Doctor Found His Own Voice.md": { - "size": 54609, - "tags": 3, - "links": 2 - }, - "00.03 News/Fun is dead..md": { - "size": 14141, - "tags": 3, - "links": 2 - }, - "00.03 News/Was Frank Gore the Last NFL Running Back - ESPN.md": { - "size": 66986, - "tags": 4, - "links": 2 - }, - "00.03 News/Why Parents Struggle So Much in the World's Richest Country.md": { - "size": 27199, - "tags": 3, - "links": 2 - }, - "00.03 News/A Gaza Conundrum The Story Behind the Rise of Hamas.md": { - "size": 53340, - "tags": 3, - "links": 2 - }, "00.02 Inbox/Fifth Sun.md": { "size": 878, "tags": 0, @@ -9004,26 +8974,6 @@ "tags": 0, "links": 5 }, - "00.03 News/A Knife Forged in Fire.md": { - "size": 39211, - "tags": 2, - "links": 2 - }, - "00.03 News/Skipping School America’s Hidden Education Crisis.md": { - "size": 34308, - "tags": 4, - "links": 2 - }, - "00.03 News/An Iowa paperboy disappeared 41 years ago. His mother is still on the case.md": { - "size": 63764, - "tags": 4, - "links": 2 - }, - "00.03 News/After Two Decades Undercover, She’s Ready to Tell the Real Story of Human Trafficking.md": { - "size": 42929, - "tags": 3, - "links": 2 - }, "00.01 Admin/Calendars/Events/2024-01-14 âš½ï¸ RC Lens - PSG (0-2).md": { "size": 214, "tags": 0, @@ -9144,16 +9094,6 @@ "tags": 3, "links": 2 }, - "00.03 News/My cousin was killed by a car bomb in Milwaukee. A mob boss was the top suspect. Now, I’m looking for answers..md": { - "size": 50717, - "tags": 4, - "links": 2 - }, - "00.03 News/Hvaldimir, the Whale Who Went AWOL.md": { - "size": 5906, - "tags": 2, - "links": 2 - }, "00.01 Admin/Calendars/2024-01-22.md": { "size": 1585, "tags": 0, @@ -9164,11 +9104,6 @@ "tags": 0, "links": 6 }, - "00.03 News/Inside the house shows that bolster Boston’s lacking nightlife.md": { - "size": 6081, - "tags": 4, - "links": 2 - }, "03.04 Cinematheque/Rain Man (1988).md": { "size": 2353, "tags": 0, @@ -9229,36 +9164,6 @@ "tags": 0, "links": 1 }, - "00.03 News/The Juror Who Found Herself Guilty.md": { - "size": 60531, - "tags": 3, - "links": 2 - }, - "00.03 News/The Taylor Swift deepfakes are a warning.md": { - "size": 25838, - "tags": 5, - "links": 2 - }, - "00.03 News/Fentanyl, the portrait of a mass murderer.md": { - "size": 63340, - "tags": 6, - "links": 2 - }, - "00.03 News/Hippy, capitalist, guru, grocer the forgotten genius who changed British food.md": { - "size": 42365, - "tags": 3, - "links": 2 - }, - "00.03 News/Ripples of hate.md": { - "size": 31054, - "tags": 4, - "links": 2 - }, - "00.03 News/In the Land of the Very Old.md": { - "size": 32749, - "tags": 3, - "links": 2 - }, "00.01 Admin/Calendars/Events/2024-01-28 âš½ï¸ PSG - Brest 29 (2-2).md": { "size": 449, "tags": 0, @@ -9274,11 +9179,6 @@ "tags": 0, "links": 6 }, - "00.03 News/Bear Hibernation Uncovering Black Bear Denning Secrets in Arkansas.md": { - "size": 19008, - "tags": 4, - "links": 2 - }, "00.01 Admin/Calendars/2024-01-31.md": { "size": 1412, "tags": 0, @@ -9299,11 +9199,6 @@ "tags": 0, "links": 7 }, - "00.03 News/Did Drug Traffickers Funnel Millions of Dollars to Mexican President López Obrador’s First Campaign.md": { - "size": 39861, - "tags": 5, - "links": 2 - }, "00.01 Admin/Calendars/2024-02-02.md": { "size": 1412, "tags": 0, @@ -9334,21 +9229,6 @@ "tags": 4, "links": 2 }, - "00.03 News/How Two Single Moms Escaped an Alleged Sex-Trafficking Ring and Ultimately Saved Each Other.md": { - "size": 30685, - "tags": 4, - "links": 2 - }, - "00.03 News/Precipice of fear the freerider who took skiing to its limits.md": { - "size": 36913, - "tags": 2, - "links": 2 - }, - "00.03 News/Why Tim Cook Is Going All In on the Apple Vision Pro.md": { - "size": 25413, - "tags": 4, - "links": 2 - }, "00.01 Admin/Calendars/2024-02-05.md": { "size": 1412, "tags": 0, @@ -9389,31 +9269,6 @@ "tags": 0, "links": 4 }, - "00.03 News/Paper mills are bribing editors at scholarly journals, Science investigation finds.md": { - "size": 21152, - "tags": 5, - "links": 2 - }, - "00.03 News/Nat Friedman Embraces AI to Translate the Herculaneum Papyri.md": { - "size": 28833, - "tags": 4, - "links": 2 - }, - "00.03 News/How Nikola Jokić Became the World’s Best Basketball Player.md": { - "size": 35152, - "tags": 5, - "links": 2 - }, - "00.03 News/A Teen’s Fatal Plunge Into the London Underworld.md": { - "size": 89435, - "tags": 4, - "links": 4 - }, - "00.03 News/His Best Friend Was a 250-Pound Warthog. One Day, It Decided to Kill Him..md": { - "size": 23841, - "tags": 3, - "links": 2 - }, "00.01 Admin/Calendars/2024-02-12.md": { "size": 1412, "tags": 0, @@ -9454,41 +9309,11 @@ "tags": 0, "links": 4 }, - "00.03 News/Helvetia ein Schweizer Dorf in den USA mit Fasnacht und Urdemokratie.md": { - "size": 15353, - "tags": 3, - "links": 2 - }, - "00.03 News/The Israeli-Palestinian Conflict and the Long Shadow of 1948.md": { - "size": 14733, - "tags": 4, - "links": 2 - }, - "00.03 News/The art of doing nothing have the Dutch found the answer to burnout culture.md": { - "size": 13516, - "tags": 2, - "links": 2 - }, "00.03 News/Exclusive Life Aboard a Nuclear Submarine as the US Responds to Threats Around the Globe.md": { "size": 41441, "tags": 4, "links": 2 }, - "00.03 News/Cillian Murphy Is the Man of the Moment.md": { - "size": 40753, - "tags": 4, - "links": 2 - }, - "00.03 News/The rise and fall of robots.txt.md": { - "size": 19027, - "tags": 3, - "links": 2 - }, - "00.03 News/The surreal life of a professional bridesmaid - The Hustle.md": { - "size": 12131, - "tags": 4, - "links": 2 - }, "00.01 Admin/Calendars/2024-02-19.md": { "size": 1255, "tags": 0, @@ -9534,16 +9359,6 @@ "tags": 0, "links": 6 }, - "00.03 News/Recovering the Lost Aviators of World War II.md": { - "size": 41568, - "tags": 3, - "links": 2 - }, - "00.03 News/How a Con Man Ended Up in Solitary in Colorado Supermax Federal Prison.md": { - "size": 25800, - "tags": 4, - "links": 2 - }, "00.01 Admin/Calendars/2024-02-26.md": { "size": 1276, "tags": 0, @@ -9594,31 +9409,11 @@ "tags": 0, "links": 5 }, - "00.03 News/How Russian Spies Get Flipped or Expelled, As Told by a Spycatcher.md": { - "size": 16868, - "tags": 5, - "links": 2 - }, - "00.03 News/The (Many) Vintages of the Century.md": { - "size": 15031, - "tags": 3, - "links": 2 - }, - "00.03 News/I always believed my funny, kind father was killed by a murderous teenage gang. Three decades on, I discovered the truth.md": { - "size": 26351, - "tags": 3, - "links": 2 - }, "00.03 News/The Great Pretenders How two faux-Inuit sisters cashed in on a life of deception.md": { "size": 41977, "tags": 4, "links": 2 }, - "00.03 News/The Pentagon’s Silicon Valley Problem, by Andrew Cockburn.md": { - "size": 32155, - "tags": 2, - "links": 2 - }, "00.01 Admin/Calendars/2024-03-05.md": { "size": 1412, "tags": 0, @@ -9684,21 +9479,6 @@ "tags": 4, "links": 2 }, - "00.03 News/Joe Biden’s Last Campaign.md": { - "size": 84671, - "tags": 4, - "links": 2 - }, - "00.03 News/One woman saw the Great Recession coming. Wall Street's boys club ignored her..md": { - "size": 22974, - "tags": 4, - "links": 2 - }, - "00.03 News/Jan Marsalek an Agent for Russia The Double Life of the former Wirecard Executive.md": { - "size": 61636, - "tags": 4, - "links": 2 - }, "00.01 Admin/Calendars/2024-03-11.md": { "size": 1412, "tags": 0, @@ -9719,11 +9499,6 @@ "tags": 0, "links": 5 }, - "00.03 News/Gangsters, Money and Murder How Chinese Organized Crime Is Dominating America’s Illegal Marijuana Market.md": { - "size": 44544, - "tags": 5, - "links": 2 - }, "00.01 Admin/Calendars/2024-03-15.md": { "size": 1412, "tags": 0, @@ -9754,31 +9529,6 @@ "tags": 0, "links": 4 }, - "00.03 News/A Bullshit Genius.md": { - "size": 38874, - "tags": 3, - "links": 2 - }, - "00.03 News/On popular online platforms, predatory groups coerce children into self-harm.md": { - "size": 25834, - "tags": 5, - "links": 2 - }, - "00.03 News/How Jesse Plemons Came to Star in, Well, Pretty Much Everything.md": { - "size": 35947, - "tags": 4, - "links": 2 - }, - "00.03 News/The Battle Over California Squatters Rights in Beverly Hills.md": { - "size": 43484, - "tags": 3, - "links": 2 - }, - "00.03 News/Inside the Glorious Afterlife of Roger Federer.md": { - "size": 34022, - "tags": 4, - "links": 2 - }, "00.03 News/‘We wanted to invade media’ the hippies, nerds and Hollywood pros who brought The Simpsons to life.md": { "size": 14389, "tags": 3, @@ -9859,11 +9609,6 @@ "tags": 4, "links": 2 }, - "00.03 News/As Italy depopulates, wilderness is back.md": { - "size": 35448, - "tags": 6, - "links": 2 - }, "00.01 Admin/Calendars/2024-03-25.md": { "size": 1412, "tags": 0, @@ -9939,31 +9684,11 @@ "tags": 0, "links": 4 }, - "00.03 News/Masters of the Green The Black Caddies of Augusta National.md": { - "size": 27421, - "tags": 4, - "links": 2 - }, - "00.03 News/‘The whole bridge just fell down.’ The final minutes before the Key Bridge collapsed.md": { - "size": 8968, - "tags": 5, - "links": 2 - }, - "00.03 News/I am dying at age 49. Here’s why I have no regrets..md": { - "size": 8141, - "tags": 4, - "links": 2 - }, "00.01 Admin/Calendars/2024-04-01.md": { "size": 1412, "tags": 0, "links": 5 }, - "00.03 News/I have little time left. I hope my goodbye inspires you..md": { - "size": 4968, - "tags": 4, - "links": 2 - }, "00.01 Admin/Calendars/2024-04-02.md": { "size": 1412, "tags": 0, @@ -10034,46 +9759,11 @@ "tags": 0, "links": 8 }, - "00.03 News/Who Is Podcast Guest Turned Star Andrew Huberman, Really.md": { - "size": 51611, - "tags": 4, - "links": 2 - }, - "00.03 News/Right-Wing Media and the Death of an Alabama Pastor An American Tragedy.md": { - "size": 70069, - "tags": 4, - "links": 2 - }, - "00.03 News/This is how reporters documented 1,000 deaths after police force that isn't supposed to be fatal.md": { - "size": 9422, - "tags": 3, - "links": 2 - }, - "00.03 News/They came for Florida's sun and sand. They got soaring costs and a culture war..md": { - "size": 20864, - "tags": 3, - "links": 2 - }, - "00.03 News/Cabaret’s Endurance Run The Untold History.md": { - "size": 24942, - "tags": 2, - "links": 2 - }, - "00.03 News/Welcome to Northwestern University at Stateville.md": { - "size": 35309, - "tags": 2, - "links": 2 - }, "00.03 News/The soft life why millennials are quitting the rat race.md": { "size": 16096, "tags": 3, "links": 2 }, - "00.03 News/The last days of Boston Market.md": { - "size": 13437, - "tags": 3, - "links": 2 - }, "01.07 Animals/2024-04-11 First exercice.md": { "size": 697, "tags": 3, @@ -10114,36 +9804,11 @@ "tags": 1, "links": 1 }, - "00.03 News/A Family’s Disappearance Rocked New Zealand. What Came After Has Stunned Everyone..md": { - "size": 33158, - "tags": 3, - "links": 2 - }, - "00.03 News/Russia, Ukraine, and the Coming Schism in Orthodox Christianity.md": { - "size": 47732, - "tags": 4, - "links": 2 - }, - "00.03 News/The “Multi-Multi-Multi-Million-Dollar†Art Fraud That Shook the World.md": { - "size": 35225, - "tags": 3, - "links": 2 - }, - "00.03 News/Vital City Jimmy Breslin and the Lost Rhythm of New York.md": { - "size": 11868, - "tags": 3, - "links": 2 - }, "00.03 News/The Great Serengeti Land Grab.md": { "size": 55698, "tags": 4, "links": 2 }, - "00.03 News/The Butterfly in the Prison Yard.md": { - "size": 42906, - "tags": 4, - "links": 2 - }, "03.05 Vinyls/The Slim Shady LP (by Eminem - 1999).md": { "size": 1493, "tags": 1, @@ -10179,16 +9844,6 @@ "tags": 0, "links": 6 }, - "00.03 News/Chinese Organized Crime’s Latest U.S. Target Gift Cards.md": { - "size": 13304, - "tags": 5, - "links": 2 - }, - "00.03 News/I Got Mailers Promoting Toddler Milk for My Children. I Went on to Investigate International Formula Marketing..md": { - "size": 7854, - "tags": 3, - "links": 2 - }, "00.03 News/An Atlanta Movie Exec Praised for His Diversity Efforts Sent Racist, Antisemitic Texts.md": { "size": 19600, "tags": 3, @@ -10219,36 +9874,16 @@ "tags": 2, "links": 2 }, - "00.03 News/Sextortion Scams Are Driving Teen Boys to Suicide.md": { - "size": 41259, - "tags": 5, - "links": 2 - }, - "00.03 News/How climate change is turning camels into the new cows.md": { - "size": 17033, - "tags": 4, - "links": 2 - }, "00.03 News/Can a Film Star Be Too Good-Looking.md": { "size": 18715, "tags": 4, "links": 2 }, - "00.03 News/Behind the New Iron Curtain, by Marzio G. Mian, Translated by Elettra Pauletto.md": { - "size": 43446, - "tags": 3, - "links": 2 - }, "00.03 News/Frank Carone on Eric Adams’s Smash-and-Grab New York.md": { "size": 38318, "tags": 3, "links": 2 }, - "00.03 News/Dark Matter Hazlitt.md": { - "size": 35559, - "tags": 3, - "links": 2 - }, "00.01 Admin/Calendars/Events/2024-04-21 âš½ï¸ PSG - OL (4-1).md": { "size": 454, "tags": 0, @@ -10269,11 +9904,6 @@ "tags": 0, "links": 7 }, - "00.03 News/The Family Photographs That Helped Us Investigate How a University Displaced a Black Community.md": { - "size": 10905, - "tags": 5, - "links": 2 - }, "00.01 Admin/Calendars/2024-04-25.md": { "size": 1412, "tags": 0, @@ -10299,21 +9929,6 @@ "tags": 0, "links": 8 }, - "00.03 News/Riding the baddest bulls made him a legend. Then one broke his neck..md": { - "size": 49643, - "tags": 4, - "links": 2 - }, - "00.03 News/A racial slur and a Fort Myers High baseball team torn apart - ESPN.md": { - "size": 52752, - "tags": 4, - "links": 2 - }, - "00.03 News/The Fake Fake-News Problem and the Truth About Misinformation.md": { - "size": 13342, - "tags": 3, - "links": 2 - }, "00.01 Admin/Calendars/2024-04-29.md": { "size": 1640, "tags": 0, @@ -10344,11 +9959,6 @@ "tags": 0, "links": 6 }, - "00.03 News/How Shifting U.S. Policies Led to One of the Deadliest Incidents Involving Immigrants in Mexico’s History.md": { - "size": 37814, - "tags": 5, - "links": 2 - }, "00.01 Admin/Calendars/2024-05-04.md": { "size": 1412, "tags": 0, @@ -10364,11 +9974,6 @@ "tags": 4, "links": 2 }, - "00.03 News/The Billionaire Playbook How Sports Owners Use Their Teams to Avoid Millions in Taxes.md": { - "size": 37476, - "tags": 5, - "links": 2 - }, "00.01 Admin/Calendars/2024-05-06.md": { "size": 1554, "tags": 0, @@ -10389,11 +9994,6 @@ "tags": 0, "links": 7 }, - "00.03 News/Blinken Is Sitting on Staff Recommendations to Sanction Israeli Military Units Linked to Killings or Rapes.md": { - "size": 10044, - "tags": 5, - "links": 2 - }, "03.03 Food & Wine/Lemon Zucchini Muffins.md": { "size": 3099, "tags": 1, @@ -10424,26 +10024,6 @@ "tags": 0, "links": 4 }, - "00.03 News/How a Miami Student’s Package Scam Came Crashing Down.md": { - "size": 29433, - "tags": 5, - "links": 2 - }, - "00.03 News/Secret in the walls Hidden letters reveal love, lust, scandal in 1920s Baltimore society.md": { - "size": 21984, - "tags": 3, - "links": 2 - }, - "00.03 News/The professor, the caregiver and the missing $30 million.md": { - "size": 40805, - "tags": 4, - "links": 2 - }, - "00.03 News/A 19-year-old Stanford phenom is blazing a new trail from Japan to the majors.md": { - "size": 19485, - "tags": 4, - "links": 2 - }, "00.01 Admin/Calendars/2024-05-13.md": { "size": 1412, "tags": 0, @@ -10459,16 +10039,6 @@ "tags": 0, "links": 4 }, - "00.03 News/IRS Audit of Trump Could Cost Former President More Than $100 Million.md": { - "size": 19694, - "tags": 4, - "links": 2 - }, - "00.03 News/Former Far-Right Hard-Liner Says Billionaires Are Using School Board Races to Sow Distrust in Public Education.md": { - "size": 10028, - "tags": 4, - "links": 2 - }, "03.05 Vinyls/Oracular Spectacular (by MGMT - 2007).md": { "size": 1625, "tags": 1, @@ -10519,41 +10089,11 @@ "tags": 2, "links": 4 }, - "00.03 News/Sexism, cheating, and nightclubs inside the dark heart of modern chess.md": { - "size": 19635, - "tags": 3, - "links": 2 - }, - "00.03 News/The Local Girls Who Inspired the Hollywood Classic “Mean Girlsâ€.md": { - "size": 27799, - "tags": 5, - "links": 2 - }, "00.03 News/52,529 guns once owned by police departments have been later used in crimes, new data finds.md": { "size": 24819, "tags": 3, "links": 2 }, - "00.03 News/The true story behind the kid who went 1940s viral for his week at the cinemas in San Francisco - Gazetteer SF.md": { - "size": 10039, - "tags": 4, - "links": 2 - }, - "00.03 News/A British Nurse Was Found Guilty of Killing Seven Babies. Did She Do It.md": { - "size": 83026, - "tags": 4, - "links": 2 - }, - "00.03 News/Toxic Gaslighting How 3M Executives Convinced a Scientist the Forever Chemicals She Found in Human Blood Were Safe.md": { - "size": 54010, - "tags": 4, - "links": 2 - }, - "00.03 News/Segregation Academies Still Operate Across the South. One Town Grapples With Its Divided Schools..md": { - "size": 36548, - "tags": 4, - "links": 2 - }, "03.04 Cinematheque/Oppenheimer (2023).md": { "size": 2006, "tags": 0, @@ -10579,16 +10119,6 @@ "tags": 0, "links": 1 }, - "00.03 News/Scenes From a MAGA Meltdown Inside the “America First†Movement’s War Over Democracy.md": { - "size": 33237, - "tags": 3, - "links": 2 - }, - "00.03 News/For the Women Who Accused the Trump Campaign of Harassment, It’s Been More Harassment.md": { - "size": 19345, - "tags": 5, - "links": 2 - }, "03.04 Cinematheque/Spirited Away (2001).md": { "size": 2107, "tags": 0, @@ -10669,26 +10199,11 @@ "tags": 3, "links": 2 }, - "00.03 News/Buying Baja Hakai Magazine.md": { - "size": 37605, - "tags": 3, - "links": 2 - }, - "00.03 News/Inside the Savage, Surreal, Booming World of Professional Slap Fighting.md": { - "size": 40299, - "tags": 3, - "links": 2 - }, "00.01 Admin/Calendars/2024-06-03.md": { "size": 1412, "tags": 0, "links": 6 }, - "00.03 News/Multiple Trump Witnesses Have Received Significant Financial Benefits From His Businesses, Campaign.md": { - "size": 33042, - "tags": 4, - "links": 2 - }, "00.01 Admin/Calendars/2024-06-04.md": { "size": 1283, "tags": 0, @@ -10729,11 +10244,6 @@ "tags": 4, "links": 2 }, - "00.03 News/‘As Lonely as a Man Can Get’ The True Story of D-Day, as Told by Paratroopers.md": { - "size": 35861, - "tags": 5, - "links": 2 - }, "00.01 Admin/Calendars/2024-06-10.md": { "size": 1276, "tags": 0, @@ -10779,21 +10289,6 @@ "tags": 0, "links": 8 }, - "00.03 News/‘The Death of Slim Shady’ or Not, You Can’t Kill Eminem. Not Really..md": { - "size": 8199, - "tags": 5, - "links": 2 - }, - "00.03 News/I Was the Person Who Named the ‘Brat Pack’ - I Stand By It.md": { - "size": 11014, - "tags": 4, - "links": 2 - }, - "00.03 News/The Excel superstars throw down in Vegas.md": { - "size": 45051, - "tags": 4, - "links": 2 - }, "00.03 News/How the Fridge Changed Flavor.md": { "size": 11475, "tags": 3, @@ -10804,11 +10299,6 @@ "tags": 5, "links": 2 }, - "00.03 News/The Worm Charmers.md": { - "size": 29630, - "tags": 3, - "links": 2 - }, "03.04 Cinematheque/Tonari no Totoro (1988).md": { "size": 2599, "tags": 1, @@ -10824,11 +10314,6 @@ "tags": 0, "links": 4 }, - "00.03 News/The big idea can you inherit memories from your ancestors.md": { - "size": 9534, - "tags": 2, - "links": 2 - }, "00.01 Admin/Calendars/2024-06-18.md": { "size": 1412, "tags": 0, @@ -10879,21 +10364,11 @@ "tags": 4, "links": 2 }, - "00.03 News/Harvard Scientists Say There May Be an Unknown, Technologically Advanced Civilization Hiding on Earth.md": { - "size": 5896, - "tags": 3, - "links": 2 - }, "00.03 News/How the Naughty ’90s Set the Stage for Today’s Tragicomedy.md": { "size": 9392, "tags": 2, "links": 2 }, - "00.03 News/Inside the Slimy, Smelly, Secretive World of Glass-Eel Fishing.md": { - "size": 49371, - "tags": 3, - "links": 2 - }, "00.03 News/Why Did a Father of 16 Hire a Dark-Web Hit Man.md": { "size": 35050, "tags": 3, @@ -10950,7 +10425,7 @@ "links": 3 }, "01.06 Health/2024-06-29 Fungal treatment.md": { - "size": 10699, + "size": 17602, "tags": 2, "links": 3 }, @@ -11789,11 +11264,6 @@ "tags": 0, "links": 2 }, - "00.01 Admin/Calendars/Events/2025-01-22 âš½ï¸ PSG - Man City.md": { - "size": 190, - "tags": 0, - "links": 2 - }, "00.01 Admin/Calendars/Events/2025-01-29 âš½ï¸ Stuttgart - PSG.md": { "size": 191, "tags": 0, @@ -12785,7 +12255,7 @@ "links": 5 }, "01.07 Animals/@Ambar.md": { - "size": 2426, + "size": 2670, "tags": 2, "links": 4 }, @@ -13202,12 +12672,12 @@ "00.03 News/The After Dark Bandit.md": { "size": 76522, "tags": 4, - "links": 1 + "links": 2 }, "00.03 News/Trump’s Campaign Chiefs Tell Their Inside Story ‘The Black Swan Election’ - POLITICO.md": { "size": 31054, "tags": 3, - "links": 1 + "links": 2 }, "00.03 News/College Football Insiders Reveal ‘Secret Economy of NIL’.md": { "size": 1172, @@ -13217,7 +12687,7 @@ "00.03 News/His Very Best (1924-2024).md": { "size": 14832, "tags": 3, - "links": 1 + "links": 2 }, "00.01 Admin/Calendars/2025-01-07.md": { "size": 1412, @@ -13267,12 +12737,12 @@ "00.03 News/Power Failure On Landscape and Abandonment — Switchyard.md": { "size": 30893, "tags": 2, - "links": 1 + "links": 2 }, "00.03 News/Sunset Boulevard in ruins Palisades fire’s massive scale comes into focus - Los Angeles Times.md": { "size": 9546, "tags": 3, - "links": 1 + "links": 2 }, "00.03 News/Steward Health a cautionary tale in private equity's push into health care.md": { "size": 42865, @@ -13282,14 +12752,299 @@ "00.03 News/On the Grid.md": { "size": 28842, "tags": 4, - "links": 1 + "links": 2 }, "00.03 News/How Iran moves sanctioned oil around the world.md": { "size": 12518, "tags": 4, - "links": 1 + "links": 2 }, "00.01 Admin/Calendars/2025-01-15.md": { + "size": 1268, + "tags": 0, + "links": 4 + }, + "00.01 Admin/Calendars/2025-01-16.md": { + "size": 1412, + "tags": 0, + "links": 4 + }, + "00.01 Admin/Calendars/2025-01-17.md": { + "size": 1412, + "tags": 0, + "links": 4 + }, + "00.01 Admin/Calendars/2025-01-18.md": { + "size": 1412, + "tags": 0, + "links": 8 + }, + "00.01 Admin/Calendars/2025-01-19.md": { + "size": 1412, + "tags": 0, + "links": 5 + }, + "00.01 Admin/Calendars/2025-01-20.md": { + "size": 1412, + "tags": 0, + "links": 4 + }, + "00.01 Admin/Calendars/2025-01-21.md": { + "size": 1255, + "tags": 0, + "links": 5 + }, + "00.03 News/Will Rogers Is on Fire.md": { + "size": 23756, + "tags": 3, + "links": 1 + }, + "00.03 News/Presidential historian Jim Robenalt talks surprising JFK home movie, mysteries around Trump assassination attempt - The Sunday Long Read.md": { + "size": 10892, + "tags": 3, + "links": 1 + }, + "00.01 Admin/Calendars/2025-01-22.md": { + "size": 1412, + "tags": 0, + "links": 6 + }, + "03.04 Cinematheque/Anatomy of a Fall (2023).md": { + "size": 2236, + "tags": 1, + "links": 1 + }, + "00.01 Admin/Calendars/2025-01-23.md": { + "size": 1283, + "tags": 0, + "links": 4 + }, + "00.01 Admin/Calendars/2025-01-24.md": { + "size": 1412, + "tags": 0, + "links": 4 + }, + "00.01 Admin/Calendars/2025-01-25.md": { + "size": 1255, + "tags": 0, + "links": 5 + }, + "00.01 Admin/Calendars/2025-01-26.md": { + "size": 1412, + "tags": 0, + "links": 4 + }, + "00.01 Admin/Calendars/2025-01-27.md": { + "size": 1412, + "tags": 0, + "links": 7 + }, + "00.01 Admin/Calendars/2025-01-28.md": { + "size": 1412, + "tags": 0, + "links": 4 + }, + "00.01 Admin/Calendars/2025-01-29.md": { + "size": 1412, + "tags": 0, + "links": 4 + }, + "00.01 Admin/Calendars/2025-01-30.md": { + "size": 1255, + "tags": 0, + "links": 4 + }, + "00.01 Admin/Calendars/2025-01-31.md": { + "size": 1412, + "tags": 0, + "links": 7 + }, + "00.01 Admin/Calendars/2025-02-01.md": { + "size": 1412, + "tags": 0, + "links": 6 + }, + "00.01 Admin/Calendars/2025-02-02.md": { + "size": 1282, + "tags": 0, + "links": 4 + }, + "00.01 Admin/Calendars/Events/2025-01-25 âš½ï¸ PSG - Reims (1-1).md": { + "size": 382, + "tags": 0, + "links": 2 + }, + "00.03 News/50 ‘Saturday Night Live’ Cast Members Reveal Their Favorite ‘Saturday Night Live’ Cast Members.md": { + "size": 18636, + "tags": 3, + "links": 2 + }, + "00.03 News/Has ‘To Catch a Predator’ Done More Harm Than Good.md": { + "size": 9069, + "tags": 4, + "links": 1 + }, + "00.03 News/Fergal Keane on PTSD, depression and the secret to happiness.md": { + "size": 15793, + "tags": 3, + "links": 1 + }, + "00.03 News/Kieran Culkin on Jesse Eisenberg’s ‘A Real Pain’.md": { + "size": 18627, + "tags": 4, + "links": 1 + }, + "00.03 News/The fugitive prince.md": { + "size": 45137, + "tags": 4, + "links": 1 + }, + "00.03 News/Scent Makes a Place.md": { + "size": 19284, + "tags": 2, + "links": 1 + }, + "00.03 News/An Affordable Place to Live Becomes the Scene of a Murder.md": { + "size": 41034, + "tags": 4, + "links": 1 + }, + "00.03 News/Eastern Promises Dylan Levi King.md": { + "size": 33058, + "tags": 2, + "links": 1 + }, + "00.01 Admin/Calendars/2025-02-03.md": { + "size": 1459, + "tags": 0, + "links": 8 + }, + "00.01 Admin/Calendars/2025-02-04.md": { + "size": 1412, + "tags": 0, + "links": 4 + }, + "00.01 Admin/Calendars/2025-02-05.md": { + "size": 1412, + "tags": 0, + "links": 4 + }, + "00.01 Admin/Calendars/2025-02-06.md": { + "size": 1412, + "tags": 0, + "links": 4 + }, + "00.01 Admin/Calendars/2025-02-07.md": { + "size": 1412, + "tags": 0, + "links": 6 + }, + "00.01 Admin/Calendars/2025-02-08.md": { + "size": 1412, + "tags": 0, + "links": 5 + }, + "00.01 Admin/Calendars/2025-02-09.md": { + "size": 1276, + "tags": 0, + "links": 5 + }, + "00.01 Admin/Calendars/2025-02-10.md": { + "size": 1412, + "tags": 0, + "links": 4 + }, + "00.01 Admin/Calendars/2025-02-11.md": { + "size": 1412, + "tags": 0, + "links": 5 + }, + "00.01 Admin/Calendars/2025-02-12.md": { + "size": 1412, + "tags": 0, + "links": 5 + }, + "00.01 Admin/Calendars/2025-02-13.md": { + "size": 1255, + "tags": 0, + "links": 4 + }, + "00.01 Admin/Calendars/2025-02-14.md": { + "size": 1412, + "tags": 0, + "links": 5 + }, + "00.03 News/‘He Had No Fear’ Ryan Wedding’s Path From Olympic Athlete to Drug Lord.md": { + "size": 41155, + "tags": 5, + "links": 2 + }, + "00.01 Admin/Calendars/2025-02-15.md": { + "size": 1412, + "tags": 0, + "links": 6 + }, + "02.03 Zürich/Minnie Sushi.md": { + "size": 1556, + "tags": 3, + "links": 2 + }, + "00.01 Admin/Calendars/2025-02-16.md": { + "size": 1412, + "tags": 0, + "links": 6 + }, + "03.02 Travels/Andermatt.md": { + "size": 1962, + "tags": 3, + "links": 2 + }, + "00.03 News/How the Most Famous Burger in the World Was Created in Pittsburgh.md": { + "size": 6814, + "tags": 3, + "links": 2 + }, + "00.03 News/Teenage Carjacking Gangs Play a Real-Life Game of ‘Grand Theft Auto’.md": { + "size": 28440, + "tags": 4, + "links": 1 + }, + "00.03 News/Mike White’s Mischievous Vision for “The White Lotusâ€.md": { + "size": 15122, + "tags": 4, + "links": 1 + }, + "00.03 News/Rape under wraps how Tinder, Hinge and their corporate owner chose profits over safety.md": { + "size": 36527, + "tags": 4, + "links": 1 + }, + "00.03 News/Her job is to remove homeless people from SF's parks. Her methods are extraordinary.md": { + "size": 26066, + "tags": 3, + "links": 1 + }, + "00.03 News/When Flamingos Came to the Chesapeake - The Sunday Long Read.md": { + "size": 19967, + "tags": 3, + "links": 1 + }, + "00.01 Admin/Calendars/2025-02-17.md": { + "size": 1412, + "tags": 0, + "links": 4 + }, + "00.01 Admin/Calendars/2025-02-18.md": { + "size": 1412, + "tags": 0, + "links": 4 + }, + "00.01 Admin/Calendars/2025-02-19.md": { + "size": 1412, + "tags": 0, + "links": 4 + }, + "00.01 Admin/Calendars/2025-02-20.md": { "size": 1412, "tags": 0, "links": 4 @@ -13297,54 +13052,76 @@ }, "commitTypes": { "/": { - "Refactor": 14142, - "Create": 3219, - "Link": 17115, - "Expand": 2590 + "Refactor": 14282, + "Create": 3279, + "Link": 17226, + "Expand": 2612 } }, "dailyCommits": { "/": { "0": 231, - "1": 67, + "1": 69, "2": 33, "3": 13, "4": 47, - "5": 18, - "6": 77, - "7": 1270, - "8": 3645, - "9": 1425, - "10": 936, - "11": 755, - "12": 6911, - "13": 850, - "14": 778, - "15": 1052, - "16": 819, - "17": 981, - "18": 11403, - "19": 1256, - "20": 1067, - "21": 1068, - "22": 872, - "23": 1492 + "5": 19, + "6": 79, + "7": 1279, + "8": 3665, + "9": 1547, + "10": 965, + "11": 765, + "12": 6916, + "13": 860, + "14": 789, + "15": 1058, + "16": 824, + "17": 986, + "18": 11406, + "19": 1260, + "20": 1142, + "21": 1073, + "22": 880, + "23": 1493 } }, "weeklyCommits": { "/": { - "Mon": 3748, - "Tue": 2264, - "Wed": 12253, - "Thu": 1724, - "Fri": 1962, + "Mon": 3773, + "Tue": 2289, + "Wed": 12377, + "Thu": 1740, + "Fri": 1989, "Sat": 0, - "Sun": 15115 + "Sun": 15231 } }, "recentCommits": { "/": { "Expanded": [ + " 2024-06-29 Fungal treatment ", + " Andermatt ", + " Minnie Sushi ", + " Configuring UFW ", + " @Life Admin ", + " 2024-06-29 Fungal treatment ", + " Household ", + " @Sally ", + " 2023-07-13 Health check ", + " 2025-02-03 ", + " 2024-06-29 Fungal treatment ", + " @@Paris ", + " @Ambar ", + " Household ", + " 2024-06-29 Fungal treatment ", + " 2025-01-25 âš½ï¸ PSG - Reims ", + " 2025-01-25 âš½ï¸ PSG - Reims ", + " Configuring UFW ", + " Household ", + " @Gordon Liao - Circle ", + " 2024-06-29 Fungal treatment ", + " Fashion ", " Storage and Syncing ", " 2024-06-29 Fungal treatment ", " 2025-01-12 âš½ï¸ PSG - ASSE ", @@ -13373,84 +13150,83 @@ " Bookmarks - Hotels ", " Bookmarks - Hotels ", " Manna ", - " Populus ", - " Palazzo Talia ", - " Vocabolo Moscatelli ", - " Monastero Arx Vivendi ", - " Honey-Ginger Butternut Squash Soup ", - " Honey-Ginger Butternut Squash Soup ", - " Honey-Ginger Butternut Squash Soup ", - " Household ", - " Bookmarks - Webpages ", - " 2024-06-29 Fungal treatment ", - " Klosters ", - " New Year well Wishes ", - " Configuring UFW ", - " Davinie ", - " 2024-06-29 Fungal treatment ", - " @Shopping list ", - " 2024-12-23 ", - " 2024-12-23 ", - " Bookmarks - Media ", - " Bookmarks - Travels & Sport ", - " 2024-06-29 Fungal treatment ", - " Salzburg ", - " Salzburg " + " Populus " ], "Created": [ - " 2025-01-15 ", - " How Iran moves sanctioned oil around the world ", - " On the Grid ", - " Steward Health a cautionary tale in private equity's push into health care ", - " Sunset Boulevard in ruins Palisades fire’s massive scale comes into focus - Los Angeles Times ", - " Power Failure On Landscape and Abandonment — Switchyard ", - " 2025-01-14 ", - " 2025-01-13 ", - " Untitled ", - " 2025-01-12 ", - " 2025-01-11 ", - " 2025-01-10 ", - " 2025-01-09 ", - " 2025-01-08 ", - " 2025-01-07 ", - " His Very Best (1924-2024) ", - " College Football Insiders Reveal ‘Secret Economy of NIL’ ", - " Trump’s Campaign Chiefs Tell Their Inside Story ‘The Black Swan Election’ - POLITICO ", - " The After Dark Bandit ", - " 2025-01-06 ", - " 2025-01-05 ", - " 2025-01-04 ", - " Speed (1994) ", - " The Shining (1980) ", - " 2025-01-03 ", - " 2025-01-02 ", - " 2025-01-01 ", - " Untitled ", - " Untitled ", - " Untitled ", - " Untitled ", + " 2025-02-20 ", + " 2025-02-19 ", + " 2025-02-18 ", + " 2025-02-17 ", + " When Flamingos Came to the Chesapeake - The Sunday Long Read ", + " Her job is to remove homeless people from SF's parks. Her methods are extraordinary ", + " Rape under wraps how Tinder, Hinge and their corporate owner chose profits over safety ", + " Mike White’s Mischievous Vision for “The White Lotus†", + " Teenage Carjacking Gangs Play a Real-Life Game of ‘Grand Theft Auto’ ", + " How the Most Famous Burger in the World Was Created in Pittsburgh ", " Untitled ", + " 2025-02-16 ", " Untitled ", + " 2025-02-15 ", + " ‘He Had No Fear’ Ryan Wedding’s Path From Olympic Athlete to Drug Lord ", + " The Strategic Genius of Taylor Swift ", + " The warlord, the oligarch and the unravelling of Russia’s Amazon.com ", + " 2025-02-14 ", + " 2025-02-13 ", + " 2025-02-12 ", + " 2025-02-11 ", + " 2025-02-10 ", + " 2025-02-09 ", + " 2025-02-08 ", + " 2025-02-07 ", + " 2025-02-06 ", + " 2025-02-05 ", + " 2025-02-04 ", + " 2025-02-03 ", + " Eastern Promises Dylan Levi King ", + " An Affordable Place to Live Becomes the Scene of a Murder ", + " Scent Makes a Place ", + " The fugitive prince ", + " Kieran Culkin on Jesse Eisenberg’s ‘A Real Pain’ ", + " Fergal Keane on PTSD, depression and the secret to happiness ", + " Has ‘To Catch a Predator’ Done More Harm Than Good ", + " 50 ‘Saturday Night Live’ Cast Members Reveal Their Favorite ‘Saturday Night Live’ Cast Members ", + " 2025-02-02 ", + " 2025-02-01 ", + " 2025-01-31 ", + " 2025-01-30 ", + " 2025-01-29 ", + " 2025-01-28 ", + " 2025-01-27 ", + " 2025-01-26 ", " Untitled ", - " Untitled ", - " Untitled ", - " Untitled ", - " Bookmarks - Hotels ", - " 2024-12-31 ", - " Underground (1995) ", - " Honey-Ginger Butternut Squash Soup Alton Brown ", - " Velouté de carottes à l’anis ", - " The American Oil Industry’s Playbook, Illustrated How Drillers Offload Costly Cleanup Onto the Public ", - " The Ghosts in the Machine, by Liz Pelly ", - " La Chimera (2023) ", - " 2024-12-30 ", - " Klosters ", - " 2024-12-29 ", - " Mission - Impossible - Dead Reckoning Part One (2023) ", - " 2024-12-28 ", - " 2024-12-27 " + " 2025-01-25 ", + " 2025-01-24 ", + " 2025-01-23 ", + " Anatomy of a Fall (2023) ", + " 2025-01-22 " ], "Renamed": [ + " When Flamingos Came to the Chesapeake - The Sunday Long Read ", + " Her job is to remove homeless people from SF's parks. Her methods are extraordinary ", + " Rape under wraps how Tinder, Hinge and their corporate owner chose profits over safety ", + " Mike White’s Mischievous Vision for “The White Lotus†", + " Teenage Carjacking Gangs Play a Real-Life Game of ‘Grand Theft Auto’ ", + " How the Most Famous Burger in the World Was Created in Pittsburgh ", + " Andermatt ", + " Minnie Sushi ", + " ‘He Had No Fear’ Ryan Wedding’s Path From Olympic Athlete to Drug Lord ", + " Eastern Promises Dylan Levi King ", + " An Affordable Place to Live Becomes the Scene of a Murder ", + " Scent Makes a Place ", + " The fugitive prince ", + " Kieran Culkin on Jesse Eisenberg’s ‘A Real Pain’ ", + " Fergal Keane on PTSD, depression and the secret to happiness ", + " Has ‘To Catch a Predator’ Done More Harm Than Good ", + " 50 ‘Saturday Night Live’ Cast Members Reveal Their Favorite ‘Saturday Night Live’ Cast Members ", + " 2025-01-25 âš½ï¸ PSG - Reims (1-1) ", + " 2025-01-25 âš½ï¸ PSG - Reims (1-1) ", + " Presidential historian Jim Robenalt talks surprising JFK home movie, mysteries around Trump assassination attempt - The Sunday Long Read ", + " Will Rogers Is on Fire ", " How Iran moves sanctioned oil around the world ", " On the Grid ", " Steward Health a cautionary tale in private equity's push into health care ", @@ -13480,30 +13256,30 @@ " Velouté de carottes à l’anis ", " The American Oil Industry’s Playbook, Illustrated How Drillers Offload Costly Cleanup Onto the Public ", " La Fantaisie ", - " The Ghosts in the Machine, by Liz Pelly ", - " Mamiche ", - " Klosters ", - " Salzburg ", - " 2024-12-18 âš½ï¸ ASM - PSG (2-4) ", - " 2024-12-18 âš½ï¸ ASM - PSG ", - " Hope and Despair at Assad's 'Human Slaughterhouse' ", - " 2024-12-15 âš½ï¸ PSG - OL (3-1) ", - " 2024-12-15 âš½ï¸ PSG - OL ", - " 2024-12-15 PSG - OL ", - " Casa Monti ", - " Dame ", - " Brisket ", - " elmira ", - " 2024-12-10 âš½ï¸ RB Salzburg - PSG (0-3) ", - " Butcher's Crossing ", - " Art Cashin, New York Stock Exchange fixture for decades, dies at age 83 ", - " Unraveling the 50-Year Mystery of the Body in the Basement ", - " Inside the Tragic Life and Controversial Execution of Marcellus Williams ", - " ‘Teens and fentanyl’ ProPublica's Lizzie Presser weaves an emotional story about the impacts of the drug trade - The Sunday Long Read ", - " The Strange Theft of a Priceless Churchill Portrait ", - " 2024-12-03 Vet check " + " The Ghosts in the Machine, by Liz Pelly " ], "Tagged": [ + " Her job is to remove homeless people from SF's parks. Her methods are extraordinary ", + " When Flamingos Came to the Chesapeake - The Sunday Long Read ", + " Mike White’s Mischievous Vision for “The White Lotus†", + " Rape under wraps how Tinder, Hinge and their corporate owner chose profits over safety ", + " Teenage Carjacking Gangs Play a Real-Life Game of ‘Grand Theft Auto’ ", + " How the Most Famous Burger in the World Was Created in Pittsburgh ", + " Andermatt ", + " Minnie Sushi ", + " Minnie Sushi ", + " ‘He Had No Fear’ Ryan Wedding’s Path From Olympic Athlete to Drug Lord ", + " Eastern Promises Dylan Levi King ", + " An Affordable Place to Live Becomes the Scene of a Murder ", + " The fugitive prince ", + " Scent Makes a Place ", + " Fergal Keane on PTSD, depression and the secret to happiness ", + " Kieran Culkin on Jesse Eisenberg’s ‘A Real Pain’ ", + " 50 ‘Saturday Night Live’ Cast Members Reveal Their Favorite ‘Saturday Night Live’ Cast Members ", + " Has ‘To Catch a Predator’ Done More Harm Than Good ", + " Anatomy of a Fall (2023) ", + " Presidential historian Jim Robenalt talks surprising JFK home movie, mysteries around Trump assassination attempt - The Sunday Long Read ", + " Will Rogers Is on Fire ", " How Iran moves sanctioned oil around the world ", " On the Grid ", " Sunset Boulevard in ruins Palisades fire’s massive scale comes into focus - Los Angeles Times ", @@ -13533,30 +13309,17 @@ " Honey-Ginger Butternut Squash Soup ", " The American Oil Industry’s Playbook, Illustrated How Drillers Offload Costly Cleanup Onto the Public ", " The Ghosts in the Machine, by Liz Pelly ", - " La Chimera (2023) ", - " Klosters ", - " Mission - Impossible - Dead Reckoning Part One (2023) ", - " How France uncovered the mystery of the forbidden photos of Nazi-occupied Paris ", - " Monkey Man (2024) ", - " The Last Duel (2021) ", - " Kneecap (2024) ", - " Life Is a Miracle (2004) ", - " Dersu Uzala (1975) ", - " Mustang (2015) ", - " Killers of the Flower Moon (2023) ", - " The Strange Theft of a Priceless Churchill Portrait ", - " Salzburg ", - " City of God (2002) ", - " Hope and Despair at Assad's 'Human Slaughterhouse' ", - " The Bikeriders (2023) ", - " Casa Monti ", - " La Fantaisie ", - " Mamiche ", - " Mamiche ", - " Dame ", - " Brisket " + " La Chimera (2023) " ], "Refactored": [ + " Bookmarks - Social Media ", + " 2025-02-13 ", + " Bookmarks - Investments ", + " 2025-02-03 ", + " 2025-01-30 ", + " 2025-01-25 ", + " 2025-01-21 ", + " 2025-01-15 ", " College Football Insiders Reveal ‘Secret Economy of NIL’ ", " 2025-01-02 ", " Mallorca ", @@ -13599,121 +13362,113 @@ " 2024-09-30 ", " Green Lentil Daal ", " Green Lentil Daal ", - " 2024-06-29 Fungal treatment ", - " 2024-09-22 ", - " 2024-09-20 ", - " 2024-09-17 ", - " 2024-09-12 ", - " 2023-07-13 Health check ", - " 2024-09-09 ", - " 2024-09-06 ", - " 2024-09-04 " + " 2024-06-29 Fungal treatment " ], "Deleted": [ - " ‘Can the Queen sack a PM’ how Boris Johnson prorogued parliament ", - " 2024-11-10 ", - " 2024-11-06 âš½ï¸ PSG - Atletico Madrid ", - " Caminos del Southwest A road trip through Latino America in this election year - Los Angeles Times ", - " The Guru Who Says He Can Get Your 11-Year-Old Into Harvard ", - " This Is Exactly How an Elon Musk-Funded PAC Is Microtargeting Muslims and Jews With Opposing Messages ", - " Gordana ", - " Caminos del Southwest A road trip through Latino America in this election year - Los Angeles Times ", - " We only learnt of our son’s secret online life after he died at 25 ", - " 2022-12-30 🠠Stef & Kyna in Zürich ", - " 2022-12-26 🠠Papa à Zürich ", - " 2022-12-18 âš½ï¸ France - Argentine (3-3) ", - " 2022-12-16 🎡 Meg in the UK ", - " 2022-12-14 âš½ï¸ Maroc - France (0-2) ", - " 2022-12-10 âš½ï¸ France - Angleterre (2-1) ", - " 2022-12-10 â›·ï¸ Arosa ", - " 2022-12-04 âš½ï¸ France - Pologne (3-1) ", - " 2022-11-30 💠ZSC - HC Ajoie ", - " 2022-11-30 âš½ï¸ Tunisia - France (1-1) ", - " 2022-11-26 âš½ï¸ France - Denmark (2-1) ", - " 2022-11-22 âš½ï¸ France - Australie (4-1) ", - " 2022-11-20 🎠Mallorca ", - " 2022-11-19 💠Fiançailles Marguerite & Arnold ", - " 2022-11-13 âš½ï¸ PSG - AJ Auxerre (5-0) ", - " 2022-11-02 âš½ï¸ Juventus - PSG (1-2) ", - " 2022-10-29 âš½ï¸ PSG - Troyes (4-3) ", - " 2022-10-23 ðŸ½ï¸ Lunch w Mutti ", - " 2022-10-22 â˜•ï¸ Tea Time, fraterie ", - " 2022-10-21 🗼 Weekend à Paris ", - " 2022-10-16 âš½ï¸ PSG - Marseille (1-0) ", - " 2022-10-15 ðŸ½ï¸ Lunch w Marguerite & Arnold ", - " 2022-10-14 📠Weekend à GVA ", - " 2022-10-11 âš½ï¸ PSG - Benfica (1-1) ", - " 2022-10-07 🀠Weekend in Belfast ", - " 2022-10-05 📠Conference on FinTech ", - " 2022-10-03 🀠Meggi in Belfast ", - " 2022-10-05 âš½ï¸ Benfica - PSG (1-1) ", - " 2022-10-01 âš½ï¸ PSG - 0GC Nice (2-1) ", - " 2022-09-18 âš½ï¸ Lyon - Paris SG (0-1) ", - " 2022-09-14 âš½ï¸ Maccabi Haifa - PSG (1-3) ", - " 2022-09-13 ðŸ½ï¸ Diner Lorena ", - " 2022-09-08 ðŸŸï¸ Diamond League Final ", - " 2022-09-06 âš½ï¸ PSG - Juventus (2-1) ", - " 2022-09-03 âš½ï¸ Nantes - Paris SG (0-3) ", - " 2022-08-31 âš½ï¸ Toulouse - PSG (0-3) ", - " 2022-08-28 âš½ï¸ Paris SG - Monaco (1-1) ", - " 2022-08-11 â±ï¸ Reparation Oignon LIP ", - " 2022-08-10 🀠Meg's mum back to Belfast ", - " 2022-08-05 🠠Megan & mum back ", - " 2022-07-29 🀠Megan - Belfast ", - " 2022-06-17 🎶 Gorillaz - arenes de Nimes " + " The Strategic Genius of Taylor Swift ", + " The warlord, the oligarch and the unravelling of Russia’s Amazon.com ", + " 2025-01-22 âš½ï¸ PSG - Man City ", + " @Gordon Liao - Circle ", + " The Taylor Swift deepfakes are a warning ", + " The rise and fall of robots.txt ", + " The true story behind the kid who went 1940s viral for his week at the cinemas in San Francisco - Gazetteer SF ", + " The professor, the caregiver and the missing $30 million ", + " Who Is Podcast Guest Turned Star Andrew Huberman, Really ", + " The Worm Charmers ", + " The New Rules ", + " They came for Florida's sun and sand. They got soaring costs and a culture war. ", + " Vital City Jimmy Breslin and the Lost Rhythm of New York ", + " The Local Girls Who Inspired the Hollywood Classic “Mean Girls†", + " This is how reporters documented 1,000 deaths after police force that isn't supposed to be fatal ", + " Toxic Gaslighting How 3M Executives Convinced a Scientist the Forever Chemicals She Found in Human Blood Were Safe ", + " Why Parents Struggle So Much in the World's Richest Country ", + " Welcome to Northwestern University at Stateville ", + " The surreal life of a professional bridesmaid - The Hustle ", + " Was Frank Gore the Last NFL Running Back - ESPN ", + " The Pentagon’s Silicon Valley Problem, by Andrew Cockburn ", + " Why Tim Cook Is Going All In on the Apple Vision Pro ", + " Bear Hibernation Uncovering Black Bear Denning Secrets in Arkansas ", + " A Knife Forged in Fire ", + " Right-Wing Media and the Death of an Alabama Pastor An American Tragedy ", + " I am dying at age 49. Here’s why I have no regrets. ", + " Hippy, capitalist, guru, grocer the forgotten genius who changed British food ", + " The Butterfly in the Prison Yard ", + " Segregation Academies Still Operate Across the South. One Town Grapples With Its Divided Schools. ", + " The big idea can you inherit memories from your ancestors ", + " Nat Friedman Embraces AI to Translate the Herculaneum Papyri ", + " Did Drug Traffickers Funnel Millions of Dollars to Mexican President López Obrador’s First Campaign ", + " Buying Baja Hakai Magazine ", + " How a Miami Student’s Package Scam Came Crashing Down ", + " Fentanyl, the portrait of a mass murderer ", + " I have little time left. I hope my goodbye inspires you. ", + " Sextortion Scams Are Driving Teen Boys to Suicide ", + " Former Far-Right Hard-Liner Says Billionaires Are Using School Board Races to Sow Distrust in Public Education ", + " Russia, Ukraine, and the Coming Schism in Orthodox Christianity ", + " A Family’s Disappearance Rocked New Zealand. What Came After Has Stunned Everyone. ", + " Dark Matter Hazlitt ", + " The Juror Who Found Herself Guilty ", + " I Was the Person Who Named the ‘Brat Pack’ - I Stand By It ", + " How Russian Spies Get Flipped or Expelled, As Told by a Spycatcher ", + " Joe Biden’s Last Campaign ", + " The Battle Over California Squatters Rights in Beverly Hills ", + " A Teen’s Fatal Plunge Into the London Underworld ", + " I Got Mailers Promoting Toddler Milk for My Children. I Went on to Investigate International Formula Marketing. ", + " Chinese Organized Crime’s Latest U.S. Target Gift Cards ", + " Blinken Is Sitting on Staff Recommendations to Sanction Israeli Military Units Linked to Killings or Rapes ", + " The Excel superstars throw down in Vegas " ], "Linked": [ - " 2025-01-15 ", - " How Iran moves sanctioned oil around the world ", + " 2025-02-20 ", + " 2025-02-19 ", + " ‘He Had No Fear’ Ryan Wedding’s Path From Olympic Athlete to Drug Lord ", + " 2025-02-18 ", + " 50 ‘Saturday Night Live’ Cast Members Reveal Their Favorite ‘Saturday Night Live’ Cast Members ", + " 2025-02-17 ", + " Her job is to remove homeless people from SF's parks. Her methods are extraordinary ", + " When Flamingos Came to the Chesapeake - The Sunday Long Read ", + " Mike White’s Mischievous Vision for “The White Lotus†", + " Rape under wraps how Tinder, Hinge and their corporate owner chose profits over safety ", + " How the Most Famous Burger in the World Was Created in Pittsburgh ", + " Teenage Carjacking Gangs Play a Real-Life Game of ‘Grand Theft Auto’ ", + " How the Most Famous Burger in the World Was Created in Pittsburgh ", + " 2025-02-16 ", + " Andermatt ", + " 2025-02-16 ", + " 2025-02-15 ", + " 2025-02-15 ", + " Minnie Sushi ", + " 2025-02-15 ", + " ‘He Had No Fear’ Ryan Wedding’s Path From Olympic Athlete to Drug Lord ", + " 2025-02-14 ", + " 2025-02-14 ", + " 2025-02-13 ", + " 2025-02-12 ", + " 2025-02-12 ", + " 2025-02-11 ", + " 2025-02-11 ", + " 2025-02-10 ", + " 2025-02-09 ", + " 2025-02-08 ", + " 2025-02-08 ", + " 2025-02-07 ", + " 2025-02-07 ", + " 2025-02-07 ", + " 2025-02-05 ", + " 2025-02-06 ", + " 2025-02-05 ", + " 2025-02-04 ", + " 2025-02-03 ", + " 2025-02-03 ", " On the Grid ", - " Steward Health a cautionary tale in private equity's push into health care ", - " Sunset Boulevard in ruins Palisades fire’s massive scale comes into focus - Los Angeles Times ", - " 2025-01-12 ", - " Power Failure On Landscape and Abandonment — Switchyard ", - " 2025-01-14 ", - " 2025-01-10 ", - " 2025-01-13 ", - " 2025-01-13 ", - " 2025-01-12 âš½ï¸ PSG - ASSE ", - " 2025-01-12 ", - " 2025-01-12 ", - " 2025-01-11 ", - " 2025-01-10 ", - " 2025-01-10 ", - " 2025-01-09 ", - " 2025-01-08 ", - " 2025-01-07 ", " His Very Best (1924-2024) ", - " College Football Insiders Reveal ‘Secret Economy of NIL’ ", - " The After Dark Bandit ", - " Trump’s Campaign Chiefs Tell Their Inside Story ‘The Black Swan Election’ - POLITICO ", - " 2025-01-06 ", - " The American Oil Industry’s Playbook, Illustrated How Drillers Offload Costly Cleanup Onto the Public ", - " 2025-01-05 ", - " The Ghosts in the Machine, by Liz Pelly ", - " 2025-01-05 ", - " 2025-01-04 ", - " 2025-01-04 ", - " 2025-01-04 ", - " Speed (1994) ", - " 2025-01-03 ", - " The Shining (1980) ", - " 2025-01-03 ", - " 2025-01-02 ", - " 2025-01-01 ", - " Halo ", - " 2024-12-31 ", - " Laudat ", - " Sa Botiga ", - " La Bodeguilla ", - " El Camino ", - " Bookmarks - Hotels ", - " Manna ", - " Populus ", - " Palazzo Talia ", - " Vocabolo Moscatelli ", - " Monastero Arx Vivendi ", - " 2024-12-31 " + " 2025-02-03 ", + " Power Failure On Landscape and Abandonment — Switchyard ", + " How Iran moves sanctioned oil around the world ", + " Sunset Boulevard in ruins Palisades fire’s massive scale comes into focus - Los Angeles Times ", + " Eastern Promises Dylan Levi King ", + " An Affordable Place to Live Becomes the Scene of a Murder ", + " The fugitive prince ", + " Scent Makes a Place " ], "Removed Tags from": [ " La Fantaisie ", @@ -13769,6 +13524,8 @@ " Bros Beans & Beats " ], "Removed Links from": [ + " 2025-02-07 ", + " 2025-02-05 ", " 2024-12-30 ", " @Lifestyle ", " Configuring UFW ", @@ -13817,9 +13574,7 @@ " Exclusive Life Aboard a Nuclear Submarine as the US Responds to Threats Around the Globe ", " Quand tu arrives ici, tu te dis que rien n’est cher les Parisiens s’entichent de Marseille ", " 2023-04-01 Purchase decision ", - " Will's Deli ", - " La maison bleue ", - " Le Grand Quartier " + " Will's Deli " ] } }, diff --git a/.obsidian/plugins/obsidian-map-view/data.json b/.obsidian/plugins/obsidian-map-view/data.json index 0ad5677b..79ab1846 100644 --- a/.obsidian/plugins/obsidian-map-view/data.json +++ b/.obsidian/plugins/obsidian-map-view/data.json @@ -18,7 +18,7 @@ "prefix": "fas", "icon": "fa-circle", "markerColor": "blue", - "innerHTML": "" + "innerHTML": "" } }, { @@ -173,7 +173,10 @@ "openMapBehavior": "replaceCurrent", "openMapCtrlClickBehavior": "dedicatedPane", "openMapMiddleClickBehavior": "dedicatedTab", + "newPaneSplitDirection": "vertical", "newNoteNameFormat": "Location added on {{date:YYYY-MM-DD}}T{{date:HH-mm}}", + "newNotePath": "", + "newNoteTemplate": "Admin/Templates/Template Note", "showNoteNamePopup": true, "showLinkNameInPopup": "mobileOnly", "showNotePreview": true, @@ -200,12 +203,15 @@ } ], "mapControls": { - "filtersDisplayed": false, + "filtersDisplayed": true, "viewDisplayed": false, - "presetsDisplayed": false + "presetsDisplayed": false, + "minimized": true }, "maxClusterRadiusPixels": 20, "searchProvider": "osm", + "searchDelayMs": 250, + "geocodingApiKey": "", "useGooglePlaces": false, "mapSources": [ { @@ -218,13 +224,26 @@ "urlLight": "https://tile.openstreetmap.org/{z}/{x}/{y}.png" } ], + "frontMatterKey": "location", "chosenMapMode": "dark", "saveHistory": true, "letZoomBeyondMax": false, "queryForFollowActiveNote": "path:\"$PATH$\"", "supportRealTimeGeolocation": false, "fixFrontMatterOnPaste": true, + "geoHelperPreferApp": false, "geoHelperType": "auto", + "geoHelperCommand": "chrome", + "geoHelperUrl": "https://esm7.github.io/obsidian-geo-helper/", + "tagForGeolocationNotes": "", + "handleGeolinksInNotes": true, + "showGeolinkPreview": false, + "zoomOnGeolinkPreview": 10, + "handleGeolinkContextMenu": true, + "routingUrl": "https://www.google.com/maps/dir/?api=1&origin={x0},{y0}&destination={x1},{y1}", + "cacheAllTiles": true, + "offlineMaxTileAgeMonths": 6, + "offlineMaxStorageGb": 2, "geoHelperFilePath": "", "tilesUrl": null, "snippetLines": 3, @@ -233,6 +252,5 @@ "defaultZoom": null, "defaultMapCenter": null, "defaultTags": null, - "newNoteTemplate": "Admin/Templates/Template Note", "chosenMapSource": null } \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-map-view/main.js b/.obsidian/plugins/obsidian-map-view/main.js index 19d91ee3..ab7ddc39 100644 --- a/.obsidian/plugins/obsidian-map-view/main.js +++ b/.obsidian/plugins/obsidian-map-view/main.js @@ -6,61711 +6,55373 @@ if you want to view the source visit the plugins github repository 'use strict'; var obsidian = require('obsidian'); +var view = require('@codemirror/view'); var path$1 = require('path'); var child_process = require('child_process'); -var view = require('@codemirror/view'); -var state = require('@codemirror/state'); - -function _interopNamespace(e) { - if (e && e.__esModule) return e; - var n = Object.create(null); - if (e) { - Object.keys(e).forEach(function (k) { - if (k !== 'default') { - var d = Object.getOwnPropertyDescriptor(e, k); - Object.defineProperty( - n, - k, - d.get - ? d - : { - enumerable: true, - get: function () { - return e[k]; - }, - } - ); - } - }); - } - n['default'] = e; - return Object.freeze(n); +var state$1 = require('@codemirror/state'); + +function _interopNamespaceDefault(e) { + var n = Object.create(null); + if (e) { + Object.keys(e).forEach(function (k) { + if (k !== 'default') { + var d = Object.getOwnPropertyDescriptor(e, k); + Object.defineProperty(n, k, d.get ? d : { + enumerable: true, + get: function () { return e[k]; } + }); + } + }); + } + n.default = e; + return Object.freeze(n); } function _mergeNamespaces(n, m) { - m.forEach(function (e) { - e && - typeof e !== 'string' && - !Array.isArray(e) && - Object.keys(e).forEach(function (k) { - if (k !== 'default' && !(k in n)) { - var d = Object.getOwnPropertyDescriptor(e, k); - Object.defineProperty( - n, - k, - d.get - ? d - : { - enumerable: true, - get: function () { - return e[k]; - }, - } - ); - } - }); - }); - return Object.freeze(n); -} - -var path__namespace = /*#__PURE__*/ _interopNamespace(path$1); - -/****************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. + m.forEach(function (e) { + e && typeof e !== 'string' && !Array.isArray(e) && Object.keys(e).forEach(function (k) { + if (k !== 'default' && !(k in n)) { + var d = Object.getOwnPropertyDescriptor(e, k); + Object.defineProperty(n, k, d.get ? d : { + enumerable: true, + get: function () { return e[k]; } + }); + } + }); + }); + return Object.freeze(n); +} + +var path__namespace = /*#__PURE__*/_interopNamespaceDefault(path$1); + +var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function getDefaultExportFromCjs (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; +} + +function getAugmentedNamespace(n) { + if (n.__esModule) return n; + var f = n.default; + if (typeof f == "function") { + var a = function a () { + if (this instanceof a) { + return Reflect.construct(f, arguments, this.constructor); + } + return f.apply(this, arguments); + }; + a.prototype = f.prototype; + } else a = {}; + Object.defineProperty(a, '__esModule', {value: true}); + Object.keys(n).forEach(function (k) { + var d = Object.getOwnPropertyDescriptor(n, k); + Object.defineProperty(a, k, d.get ? d : { + enumerable: true, + get: function () { + return n[k]; + } + }); + }); + return a; +} + +var es_error_toString = {}; + +var isCallable; +var hasRequiredIsCallable; + +function requireIsCallable () { + if (hasRequiredIsCallable) return isCallable; + hasRequiredIsCallable = 1; + // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot + var documentAll = typeof document == 'object' && document.all; + + // `IsCallable` abstract operation + // https://tc39.es/ecma262/#sec-iscallable + // eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing + isCallable = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) { + return typeof argument == 'function' || argument === documentAll; + } : function (argument) { + return typeof argument == 'function'; + }; + return isCallable; +} + +var objectDefineProperty = {}; + +var fails; +var hasRequiredFails; + +function requireFails () { + if (hasRequiredFails) return fails; + hasRequiredFails = 1; + fails = function (exec) { + try { + return !!exec(); + } catch (error) { + return true; + } + }; + return fails; +} + +var descriptors; +var hasRequiredDescriptors; + +function requireDescriptors () { + if (hasRequiredDescriptors) return descriptors; + hasRequiredDescriptors = 1; + var fails = requireFails(); + + // Detect IE8's incomplete defineProperty implementation + descriptors = !fails(function () { + // eslint-disable-next-line es/no-object-defineproperty -- required for testing + return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7; + }); + return descriptors; +} + +var globalThis_1; +var hasRequiredGlobalThis; + +function requireGlobalThis () { + if (hasRequiredGlobalThis) return globalThis_1; + hasRequiredGlobalThis = 1; + var check = function (it) { + return it && it.Math === Math && it; + }; + + // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 + globalThis_1 = + // eslint-disable-next-line es/no-global-this -- safe + check(typeof globalThis == 'object' && globalThis) || + check(typeof window == 'object' && window) || + // eslint-disable-next-line no-restricted-globals -- safe + check(typeof self == 'object' && self) || + check(typeof commonjsGlobal == 'object' && commonjsGlobal) || + check(typeof globalThis_1 == 'object' && globalThis_1) || + // eslint-disable-next-line no-new-func -- fallback + (function () { return this; })() || Function('return this')(); + return globalThis_1; +} + +var isObject; +var hasRequiredIsObject; + +function requireIsObject () { + if (hasRequiredIsObject) return isObject; + hasRequiredIsObject = 1; + var isCallable = requireIsCallable(); + + isObject = function (it) { + return typeof it == 'object' ? it !== null : isCallable(it); + }; + return isObject; +} + +var documentCreateElement; +var hasRequiredDocumentCreateElement; + +function requireDocumentCreateElement () { + if (hasRequiredDocumentCreateElement) return documentCreateElement; + hasRequiredDocumentCreateElement = 1; + var globalThis = requireGlobalThis(); + var isObject = requireIsObject(); + + var document = globalThis.document; + // typeof document.createElement is 'object' in old IE + var EXISTS = isObject(document) && isObject(document.createElement); + + documentCreateElement = function (it) { + return EXISTS ? document.createElement(it) : {}; + }; + return documentCreateElement; +} + +var ie8DomDefine; +var hasRequiredIe8DomDefine; + +function requireIe8DomDefine () { + if (hasRequiredIe8DomDefine) return ie8DomDefine; + hasRequiredIe8DomDefine = 1; + var DESCRIPTORS = requireDescriptors(); + var fails = requireFails(); + var createElement = requireDocumentCreateElement(); + + // Thanks to IE8 for its funny defineProperty + ie8DomDefine = !DESCRIPTORS && !fails(function () { + // eslint-disable-next-line es/no-object-defineproperty -- required for testing + return Object.defineProperty(createElement('div'), 'a', { + get: function () { return 7; } + }).a !== 7; + }); + return ie8DomDefine; +} + +var v8PrototypeDefineBug; +var hasRequiredV8PrototypeDefineBug; + +function requireV8PrototypeDefineBug () { + if (hasRequiredV8PrototypeDefineBug) return v8PrototypeDefineBug; + hasRequiredV8PrototypeDefineBug = 1; + var DESCRIPTORS = requireDescriptors(); + var fails = requireFails(); + + // V8 ~ Chrome 36- + // https://bugs.chromium.org/p/v8/issues/detail?id=3334 + v8PrototypeDefineBug = DESCRIPTORS && fails(function () { + // eslint-disable-next-line es/no-object-defineproperty -- required for testing + return Object.defineProperty(function () { /* empty */ }, 'prototype', { + value: 42, + writable: false + }).prototype !== 42; + }); + return v8PrototypeDefineBug; +} + +var anObject; +var hasRequiredAnObject; + +function requireAnObject () { + if (hasRequiredAnObject) return anObject; + hasRequiredAnObject = 1; + var isObject = requireIsObject(); + + var $String = String; + var $TypeError = TypeError; -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ - -function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P - ? value - : new P(function (resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator['throw'](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done - ? resolve(result.value) - : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); + // `Assert: Type(argument) is Object` + anObject = function (argument) { + if (isObject(argument)) return argument; + throw new $TypeError($String(argument) + ' is not an object'); + }; + return anObject; } -typeof SuppressedError === 'function' - ? SuppressedError - : function (error, suppressed, message) { - var e = new Error(message); - return ( - (e.name = 'SuppressedError'), - (e.error = error), - (e.suppressed = suppressed), - e - ); - }; - -// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot -var documentAll = typeof document == 'object' && document.all; +var functionBindNative; +var hasRequiredFunctionBindNative; -// `IsCallable` abstract operation -// https://tc39.es/ecma262/#sec-iscallable -// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing -var isCallable = - typeof documentAll == 'undefined' && documentAll !== undefined - ? function (argument) { - return typeof argument == 'function' || argument === documentAll; - } - : function (argument) { - return typeof argument == 'function'; - }; - -var fails = function (exec) { - try { - return !!exec(); - } catch (error) { - return true; - } -}; - -// Detect IE8's incomplete defineProperty implementation -var descriptors = !fails(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return ( - Object.defineProperty({}, 1, { - get: function () { - return 7; - }, - })[1] !== 7 - ); -}); +function requireFunctionBindNative () { + if (hasRequiredFunctionBindNative) return functionBindNative; + hasRequiredFunctionBindNative = 1; + var fails = requireFails(); -var commonjsGlobal = - typeof globalThis !== 'undefined' - ? globalThis - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : typeof self !== 'undefined' - ? self - : {}; - -function createCommonjsModule(fn) { - var module = { exports: {} }; - return fn(module, module.exports), module.exports; -} - -var check = function (it) { - return it && it.Math === Math && it; -}; - -// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 -var global$1 = - // eslint-disable-next-line es/no-global-this -- safe - check(typeof globalThis == 'object' && globalThis) || - check(typeof window == 'object' && window) || - // eslint-disable-next-line no-restricted-globals -- safe - check(typeof self == 'object' && self) || - check(typeof commonjsGlobal == 'object' && commonjsGlobal) || - check(typeof commonjsGlobal == 'object' && commonjsGlobal) || - // eslint-disable-next-line no-new-func -- fallback - (function () { - return this; - })() || - Function('return this')(); - -var isObject = function (it) { - return typeof it == 'object' ? it !== null : isCallable(it); -}; - -var document$1 = global$1.document; -// typeof document.createElement is 'object' in old IE -var EXISTS$1 = isObject(document$1) && isObject(document$1.createElement); - -var documentCreateElement = function (it) { - return EXISTS$1 ? document$1.createElement(it) : {}; -}; - -// Thanks to IE8 for its funny defineProperty -var ie8DomDefine = - !descriptors && - !fails(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return ( - Object.defineProperty(documentCreateElement('div'), 'a', { - get: function () { - return 7; - }, - }).a !== 7 - ); - }); + functionBindNative = !fails(function () { + // eslint-disable-next-line es/no-function-prototype-bind -- safe + var test = (function () { /* empty */ }).bind(); + // eslint-disable-next-line no-prototype-builtins -- safe + return typeof test != 'function' || test.hasOwnProperty('prototype'); + }); + return functionBindNative; +} -// V8 ~ Chrome 36- -// https://bugs.chromium.org/p/v8/issues/detail?id=3334 -var v8PrototypeDefineBug = - descriptors && - fails(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return ( - Object.defineProperty( - function () { - /* empty */ - }, - 'prototype', - { - value: 42, - writable: false, - } - ).prototype !== 42 - ); - }); +var functionCall; +var hasRequiredFunctionCall; -var $String$4 = String; -var $TypeError$a = TypeError; +function requireFunctionCall () { + if (hasRequiredFunctionCall) return functionCall; + hasRequiredFunctionCall = 1; + var NATIVE_BIND = requireFunctionBindNative(); + + var call = Function.prototype.call; + + functionCall = NATIVE_BIND ? call.bind(call) : function () { + return call.apply(call, arguments); + }; + return functionCall; +} + +var getBuiltIn; +var hasRequiredGetBuiltIn; -// `Assert: Type(argument) is Object` -var anObject = function (argument) { - if (isObject(argument)) return argument; - throw new $TypeError$a($String$4(argument) + ' is not an object'); -}; +function requireGetBuiltIn () { + if (hasRequiredGetBuiltIn) return getBuiltIn; + hasRequiredGetBuiltIn = 1; + var globalThis = requireGlobalThis(); + var isCallable = requireIsCallable(); + + var aFunction = function (argument) { + return isCallable(argument) ? argument : undefined; + }; + + getBuiltIn = function (namespace, method) { + return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method]; + }; + return getBuiltIn; +} + +var functionUncurryThis; +var hasRequiredFunctionUncurryThis; + +function requireFunctionUncurryThis () { + if (hasRequiredFunctionUncurryThis) return functionUncurryThis; + hasRequiredFunctionUncurryThis = 1; + var NATIVE_BIND = requireFunctionBindNative(); + + var FunctionPrototype = Function.prototype; + var call = FunctionPrototype.call; + var uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call); + + functionUncurryThis = NATIVE_BIND ? uncurryThisWithBind : function (fn) { + return function () { + return call.apply(fn, arguments); + }; + }; + return functionUncurryThis; +} + +var objectIsPrototypeOf; +var hasRequiredObjectIsPrototypeOf; + +function requireObjectIsPrototypeOf () { + if (hasRequiredObjectIsPrototypeOf) return objectIsPrototypeOf; + hasRequiredObjectIsPrototypeOf = 1; + var uncurryThis = requireFunctionUncurryThis(); -var functionBindNative = !fails(function () { - // eslint-disable-next-line es/no-function-prototype-bind -- safe - var test = function () { - /* empty */ - }.bind(); - // eslint-disable-next-line no-prototype-builtins -- safe - return typeof test != 'function' || test.hasOwnProperty('prototype'); -}); + objectIsPrototypeOf = uncurryThis({}.isPrototypeOf); + return objectIsPrototypeOf; +} -var call$1 = Function.prototype.call; +var environmentUserAgent; +var hasRequiredEnvironmentUserAgent; + +function requireEnvironmentUserAgent () { + if (hasRequiredEnvironmentUserAgent) return environmentUserAgent; + hasRequiredEnvironmentUserAgent = 1; + var globalThis = requireGlobalThis(); -var functionCall = functionBindNative - ? call$1.bind(call$1) - : function () { - return call$1.apply(call$1, arguments); - }; + var navigator = globalThis.navigator; + var userAgent = navigator && navigator.userAgent; + + environmentUserAgent = userAgent ? String(userAgent) : ''; + return environmentUserAgent; +} -var aFunction = function (argument) { - return isCallable(argument) ? argument : undefined; -}; +var environmentV8Version; +var hasRequiredEnvironmentV8Version; -var getBuiltIn = function (namespace, method) { - return arguments.length < 2 - ? aFunction(global$1[namespace]) - : global$1[namespace] && global$1[namespace][method]; -}; +function requireEnvironmentV8Version () { + if (hasRequiredEnvironmentV8Version) return environmentV8Version; + hasRequiredEnvironmentV8Version = 1; + var globalThis = requireGlobalThis(); + var userAgent = requireEnvironmentUserAgent(); -var FunctionPrototype$1 = Function.prototype; -var call = FunctionPrototype$1.call; -var uncurryThisWithBind = - functionBindNative && FunctionPrototype$1.bind.bind(call, call); + var process = globalThis.process; + var Deno = globalThis.Deno; + var versions = process && process.versions || Deno && Deno.version; + var v8 = versions && versions.v8; + var match, version; + + if (v8) { + match = v8.split('.'); + // in old Chrome, versions of V8 isn't V8 = Chrome / 10 + // but their correct versions are not interesting for us + version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]); + } + + // BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0` + // so check `userAgent` even if `.v8` exists, but 0 + if (!version && userAgent) { + match = userAgent.match(/Edge\/(\d+)/); + if (!match || match[1] >= 74) { + match = userAgent.match(/Chrome\/(\d+)/); + if (match) version = +match[1]; + } + } + + environmentV8Version = version; + return environmentV8Version; +} + +var symbolConstructorDetection; +var hasRequiredSymbolConstructorDetection; + +function requireSymbolConstructorDetection () { + if (hasRequiredSymbolConstructorDetection) return symbolConstructorDetection; + hasRequiredSymbolConstructorDetection = 1; + /* eslint-disable es/no-symbol -- required for testing */ + var V8_VERSION = requireEnvironmentV8Version(); + var fails = requireFails(); + var globalThis = requireGlobalThis(); + + var $String = globalThis.String; + + // eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing + symbolConstructorDetection = !!Object.getOwnPropertySymbols && !fails(function () { + var symbol = Symbol('symbol detection'); + // Chrome 38 Symbol has incorrect toString conversion + // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances + // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will, + // of course, fail. + return !$String(symbol) || !(Object(symbol) instanceof Symbol) || + // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances + !Symbol.sham && V8_VERSION && V8_VERSION < 41; + }); + return symbolConstructorDetection; +} + +var useSymbolAsUid; +var hasRequiredUseSymbolAsUid; + +function requireUseSymbolAsUid () { + if (hasRequiredUseSymbolAsUid) return useSymbolAsUid; + hasRequiredUseSymbolAsUid = 1; + /* eslint-disable es/no-symbol -- required for testing */ + var NATIVE_SYMBOL = requireSymbolConstructorDetection(); + + useSymbolAsUid = NATIVE_SYMBOL && + !Symbol.sham && + typeof Symbol.iterator == 'symbol'; + return useSymbolAsUid; +} + +var isSymbol; +var hasRequiredIsSymbol; + +function requireIsSymbol () { + if (hasRequiredIsSymbol) return isSymbol; + hasRequiredIsSymbol = 1; + var getBuiltIn = requireGetBuiltIn(); + var isCallable = requireIsCallable(); + var isPrototypeOf = requireObjectIsPrototypeOf(); + var USE_SYMBOL_AS_UID = requireUseSymbolAsUid(); + + var $Object = Object; + + isSymbol = USE_SYMBOL_AS_UID ? function (it) { + return typeof it == 'symbol'; + } : function (it) { + var $Symbol = getBuiltIn('Symbol'); + return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it)); + }; + return isSymbol; +} + +var tryToString; +var hasRequiredTryToString; + +function requireTryToString () { + if (hasRequiredTryToString) return tryToString; + hasRequiredTryToString = 1; + var $String = String; + + tryToString = function (argument) { + try { + return $String(argument); + } catch (error) { + return 'Object'; + } + }; + return tryToString; +} + +var aCallable; +var hasRequiredACallable; + +function requireACallable () { + if (hasRequiredACallable) return aCallable; + hasRequiredACallable = 1; + var isCallable = requireIsCallable(); + var tryToString = requireTryToString(); + + var $TypeError = TypeError; + + // `Assert: IsCallable(argument) is true` + aCallable = function (argument) { + if (isCallable(argument)) return argument; + throw new $TypeError(tryToString(argument) + ' is not a function'); + }; + return aCallable; +} + +var isNullOrUndefined$1; +var hasRequiredIsNullOrUndefined; + +function requireIsNullOrUndefined () { + if (hasRequiredIsNullOrUndefined) return isNullOrUndefined$1; + hasRequiredIsNullOrUndefined = 1; + // we can't use just `it == null` since of `document.all` special case + // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec + isNullOrUndefined$1 = function (it) { + return it === null || it === undefined; + }; + return isNullOrUndefined$1; +} + +var getMethod$1; +var hasRequiredGetMethod; + +function requireGetMethod () { + if (hasRequiredGetMethod) return getMethod$1; + hasRequiredGetMethod = 1; + var aCallable = requireACallable(); + var isNullOrUndefined = requireIsNullOrUndefined(); + + // `GetMethod` abstract operation + // https://tc39.es/ecma262/#sec-getmethod + getMethod$1 = function (V, P) { + var func = V[P]; + return isNullOrUndefined(func) ? undefined : aCallable(func); + }; + return getMethod$1; +} + +var ordinaryToPrimitive; +var hasRequiredOrdinaryToPrimitive; -var functionUncurryThis = functionBindNative - ? uncurryThisWithBind - : function (fn) { - return function () { - return call.apply(fn, arguments); - }; - }; +function requireOrdinaryToPrimitive () { + if (hasRequiredOrdinaryToPrimitive) return ordinaryToPrimitive; + hasRequiredOrdinaryToPrimitive = 1; + var call = requireFunctionCall(); + var isCallable = requireIsCallable(); + var isObject = requireIsObject(); + + var $TypeError = TypeError; + + // `OrdinaryToPrimitive` abstract operation + // https://tc39.es/ecma262/#sec-ordinarytoprimitive + ordinaryToPrimitive = function (input, pref) { + var fn, val; + if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val; + if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val; + if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val; + throw new $TypeError("Can't convert object to primitive value"); + }; + return ordinaryToPrimitive; +} + +var sharedStore = {exports: {}}; + +var isPure; +var hasRequiredIsPure; -var objectIsPrototypeOf = functionUncurryThis({}.isPrototypeOf); +function requireIsPure () { + if (hasRequiredIsPure) return isPure; + hasRequiredIsPure = 1; + isPure = false; + return isPure; +} + +var defineGlobalProperty; +var hasRequiredDefineGlobalProperty; -var engineUserAgent = - (typeof navigator != 'undefined' && String(navigator.userAgent)) || ''; +function requireDefineGlobalProperty () { + if (hasRequiredDefineGlobalProperty) return defineGlobalProperty; + hasRequiredDefineGlobalProperty = 1; + var globalThis = requireGlobalThis(); -var process$1 = global$1.process; -var Deno$1 = global$1.Deno; -var versions = (process$1 && process$1.versions) || (Deno$1 && Deno$1.version); -var v8 = versions && versions.v8; -var match, version; + // eslint-disable-next-line es/no-object-defineproperty -- safe + var defineProperty = Object.defineProperty; -if (v8) { - match = v8.split('.'); - // in old Chrome, versions of V8 isn't V8 = Chrome / 10 - // but their correct versions are not interesting for us - version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]); + defineGlobalProperty = function (key, value) { + try { + defineProperty(globalThis, key, { value: value, configurable: true, writable: true }); + } catch (error) { + globalThis[key] = value; + } return value; + }; + return defineGlobalProperty; } -// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0` -// so check `userAgent` even if `.v8` exists, but 0 -if (!version && engineUserAgent) { - match = engineUserAgent.match(/Edge\/(\d+)/); - if (!match || match[1] >= 74) { - match = engineUserAgent.match(/Chrome\/(\d+)/); - if (match) version = +match[1]; - } -} +var hasRequiredSharedStore; -var engineV8Version = version; +function requireSharedStore () { + if (hasRequiredSharedStore) return sharedStore.exports; + hasRequiredSharedStore = 1; + var IS_PURE = requireIsPure(); + var globalThis = requireGlobalThis(); + var defineGlobalProperty = requireDefineGlobalProperty(); -/* eslint-disable es/no-symbol -- required for testing */ + var SHARED = '__core-js_shared__'; + var store = sharedStore.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {}); -var $String$3 = global$1.String; + (store.versions || (store.versions = [])).push({ + version: '3.39.0', + mode: IS_PURE ? 'pure' : 'global', + copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)', + license: 'https://github.com/zloirock/core-js/blob/v3.39.0/LICENSE', + source: 'https://github.com/zloirock/core-js' + }); + return sharedStore.exports; +} -// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing -var symbolConstructorDetection = - !!Object.getOwnPropertySymbols && - !fails(function () { - var symbol = Symbol('symbol detection'); - // Chrome 38 Symbol has incorrect toString conversion - // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances - // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will, - // of course, fail. - return ( - !$String$3(symbol) || - !(Object(symbol) instanceof Symbol) || - // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances - (!Symbol.sham && engineV8Version && engineV8Version < 41) - ); - }); +var shared; +var hasRequiredShared; -/* eslint-disable es/no-symbol -- required for testing */ +function requireShared () { + if (hasRequiredShared) return shared; + hasRequiredShared = 1; + var store = requireSharedStore(); + + shared = function (key, value) { + return store[key] || (store[key] = value || {}); + }; + return shared; +} + +var requireObjectCoercible; +var hasRequiredRequireObjectCoercible; -var useSymbolAsUid = - symbolConstructorDetection && - !Symbol.sham && - typeof Symbol.iterator == 'symbol'; +function requireRequireObjectCoercible () { + if (hasRequiredRequireObjectCoercible) return requireObjectCoercible; + hasRequiredRequireObjectCoercible = 1; + var isNullOrUndefined = requireIsNullOrUndefined(); + + var $TypeError = TypeError; + + // `RequireObjectCoercible` abstract operation + // https://tc39.es/ecma262/#sec-requireobjectcoercible + requireObjectCoercible = function (it) { + if (isNullOrUndefined(it)) throw new $TypeError("Can't call method on " + it); + return it; + }; + return requireObjectCoercible; +} + +var toObject; +var hasRequiredToObject; + +function requireToObject () { + if (hasRequiredToObject) return toObject; + hasRequiredToObject = 1; + var requireObjectCoercible = requireRequireObjectCoercible(); + + var $Object = Object; + + // `ToObject` abstract operation + // https://tc39.es/ecma262/#sec-toobject + toObject = function (argument) { + return $Object(requireObjectCoercible(argument)); + }; + return toObject; +} + +var hasOwnProperty_1; +var hasRequiredHasOwnProperty; + +function requireHasOwnProperty () { + if (hasRequiredHasOwnProperty) return hasOwnProperty_1; + hasRequiredHasOwnProperty = 1; + var uncurryThis = requireFunctionUncurryThis(); + var toObject = requireToObject(); + + var hasOwnProperty = uncurryThis({}.hasOwnProperty); + + // `HasOwnProperty` abstract operation + // https://tc39.es/ecma262/#sec-hasownproperty + // eslint-disable-next-line es/no-object-hasown -- safe + hasOwnProperty_1 = Object.hasOwn || function hasOwn(it, key) { + return hasOwnProperty(toObject(it), key); + }; + return hasOwnProperty_1; +} + +var uid; +var hasRequiredUid; + +function requireUid () { + if (hasRequiredUid) return uid; + hasRequiredUid = 1; + var uncurryThis = requireFunctionUncurryThis(); + + var id = 0; + var postfix = Math.random(); + var toString = uncurryThis(1.0.toString); + + uid = function (key) { + return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36); + }; + return uid; +} + +var wellKnownSymbol; +var hasRequiredWellKnownSymbol; + +function requireWellKnownSymbol () { + if (hasRequiredWellKnownSymbol) return wellKnownSymbol; + hasRequiredWellKnownSymbol = 1; + var globalThis = requireGlobalThis(); + var shared = requireShared(); + var hasOwn = requireHasOwnProperty(); + var uid = requireUid(); + var NATIVE_SYMBOL = requireSymbolConstructorDetection(); + var USE_SYMBOL_AS_UID = requireUseSymbolAsUid(); + + var Symbol = globalThis.Symbol; + var WellKnownSymbolsStore = shared('wks'); + var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid; + + wellKnownSymbol = function (name) { + if (!hasOwn(WellKnownSymbolsStore, name)) { + WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name) + ? Symbol[name] + : createWellKnownSymbol('Symbol.' + name); + } return WellKnownSymbolsStore[name]; + }; + return wellKnownSymbol; +} + +var toPrimitive; +var hasRequiredToPrimitive; + +function requireToPrimitive () { + if (hasRequiredToPrimitive) return toPrimitive; + hasRequiredToPrimitive = 1; + var call = requireFunctionCall(); + var isObject = requireIsObject(); + var isSymbol = requireIsSymbol(); + var getMethod = requireGetMethod(); + var ordinaryToPrimitive = requireOrdinaryToPrimitive(); + var wellKnownSymbol = requireWellKnownSymbol(); + + var $TypeError = TypeError; + var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); + + // `ToPrimitive` abstract operation + // https://tc39.es/ecma262/#sec-toprimitive + toPrimitive = function (input, pref) { + if (!isObject(input) || isSymbol(input)) return input; + var exoticToPrim = getMethod(input, TO_PRIMITIVE); + var result; + if (exoticToPrim) { + if (pref === undefined) pref = 'default'; + result = call(exoticToPrim, input, pref); + if (!isObject(result) || isSymbol(result)) return result; + throw new $TypeError("Can't convert object to primitive value"); + } + if (pref === undefined) pref = 'number'; + return ordinaryToPrimitive(input, pref); + }; + return toPrimitive; +} + +var toPropertyKey; +var hasRequiredToPropertyKey; + +function requireToPropertyKey () { + if (hasRequiredToPropertyKey) return toPropertyKey; + hasRequiredToPropertyKey = 1; + var toPrimitive = requireToPrimitive(); + var isSymbol = requireIsSymbol(); + + // `ToPropertyKey` abstract operation + // https://tc39.es/ecma262/#sec-topropertykey + toPropertyKey = function (argument) { + var key = toPrimitive(argument, 'string'); + return isSymbol(key) ? key : key + ''; + }; + return toPropertyKey; +} + +var hasRequiredObjectDefineProperty; + +function requireObjectDefineProperty () { + if (hasRequiredObjectDefineProperty) return objectDefineProperty; + hasRequiredObjectDefineProperty = 1; + var DESCRIPTORS = requireDescriptors(); + var IE8_DOM_DEFINE = requireIe8DomDefine(); + var V8_PROTOTYPE_DEFINE_BUG = requireV8PrototypeDefineBug(); + var anObject = requireAnObject(); + var toPropertyKey = requireToPropertyKey(); + + var $TypeError = TypeError; + // eslint-disable-next-line es/no-object-defineproperty -- safe + var $defineProperty = Object.defineProperty; + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe + var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + var ENUMERABLE = 'enumerable'; + var CONFIGURABLE = 'configurable'; + var WRITABLE = 'writable'; + + // `Object.defineProperty` method + // https://tc39.es/ecma262/#sec-object.defineproperty + objectDefineProperty.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) { + anObject(O); + P = toPropertyKey(P); + anObject(Attributes); + if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) { + var current = $getOwnPropertyDescriptor(O, P); + if (current && current[WRITABLE]) { + O[P] = Attributes.value; + Attributes = { + configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE], + enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE], + writable: false + }; + } + } return $defineProperty(O, P, Attributes); + } : $defineProperty : function defineProperty(O, P, Attributes) { + anObject(O); + P = toPropertyKey(P); + anObject(Attributes); + if (IE8_DOM_DEFINE) try { + return $defineProperty(O, P, Attributes); + } catch (error) { /* empty */ } + if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported'); + if ('value' in Attributes) O[P] = Attributes.value; + return O; + }; + return objectDefineProperty; +} + +var makeBuiltIn = {exports: {}}; + +var functionName; +var hasRequiredFunctionName; + +function requireFunctionName () { + if (hasRequiredFunctionName) return functionName; + hasRequiredFunctionName = 1; + var DESCRIPTORS = requireDescriptors(); + var hasOwn = requireHasOwnProperty(); + + var FunctionPrototype = Function.prototype; + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe + var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor; + + var EXISTS = hasOwn(FunctionPrototype, 'name'); + // additional protection from minified / mangled / dropped function names + var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something'; + var CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable)); + + functionName = { + EXISTS: EXISTS, + PROPER: PROPER, + CONFIGURABLE: CONFIGURABLE + }; + return functionName; +} + +var inspectSource; +var hasRequiredInspectSource; + +function requireInspectSource () { + if (hasRequiredInspectSource) return inspectSource; + hasRequiredInspectSource = 1; + var uncurryThis = requireFunctionUncurryThis(); + var isCallable = requireIsCallable(); + var store = requireSharedStore(); + + var functionToString = uncurryThis(Function.toString); + + // this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper + if (!isCallable(store.inspectSource)) { + store.inspectSource = function (it) { + return functionToString(it); + }; + } + + inspectSource = store.inspectSource; + return inspectSource; +} + +var weakMapBasicDetection; +var hasRequiredWeakMapBasicDetection; + +function requireWeakMapBasicDetection () { + if (hasRequiredWeakMapBasicDetection) return weakMapBasicDetection; + hasRequiredWeakMapBasicDetection = 1; + var globalThis = requireGlobalThis(); + var isCallable = requireIsCallable(); + + var WeakMap = globalThis.WeakMap; + + weakMapBasicDetection = isCallable(WeakMap) && /native code/.test(String(WeakMap)); + return weakMapBasicDetection; +} + +var createPropertyDescriptor; +var hasRequiredCreatePropertyDescriptor; + +function requireCreatePropertyDescriptor () { + if (hasRequiredCreatePropertyDescriptor) return createPropertyDescriptor; + hasRequiredCreatePropertyDescriptor = 1; + createPropertyDescriptor = function (bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; + }; + return createPropertyDescriptor; +} + +var createNonEnumerableProperty; +var hasRequiredCreateNonEnumerableProperty; + +function requireCreateNonEnumerableProperty () { + if (hasRequiredCreateNonEnumerableProperty) return createNonEnumerableProperty; + hasRequiredCreateNonEnumerableProperty = 1; + var DESCRIPTORS = requireDescriptors(); + var definePropertyModule = requireObjectDefineProperty(); + var createPropertyDescriptor = requireCreatePropertyDescriptor(); + + createNonEnumerableProperty = DESCRIPTORS ? function (object, key, value) { + return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); + } : function (object, key, value) { + object[key] = value; + return object; + }; + return createNonEnumerableProperty; +} + +var sharedKey; +var hasRequiredSharedKey; + +function requireSharedKey () { + if (hasRequiredSharedKey) return sharedKey; + hasRequiredSharedKey = 1; + var shared = requireShared(); + var uid = requireUid(); + + var keys = shared('keys'); + + sharedKey = function (key) { + return keys[key] || (keys[key] = uid(key)); + }; + return sharedKey; +} + +var hiddenKeys; +var hasRequiredHiddenKeys; + +function requireHiddenKeys () { + if (hasRequiredHiddenKeys) return hiddenKeys; + hasRequiredHiddenKeys = 1; + hiddenKeys = {}; + return hiddenKeys; +} + +var internalState; +var hasRequiredInternalState; + +function requireInternalState () { + if (hasRequiredInternalState) return internalState; + hasRequiredInternalState = 1; + var NATIVE_WEAK_MAP = requireWeakMapBasicDetection(); + var globalThis = requireGlobalThis(); + var isObject = requireIsObject(); + var createNonEnumerableProperty = requireCreateNonEnumerableProperty(); + var hasOwn = requireHasOwnProperty(); + var shared = requireSharedStore(); + var sharedKey = requireSharedKey(); + var hiddenKeys = requireHiddenKeys(); + + var OBJECT_ALREADY_INITIALIZED = 'Object already initialized'; + var TypeError = globalThis.TypeError; + var WeakMap = globalThis.WeakMap; + var set, get, has; + + var enforce = function (it) { + return has(it) ? get(it) : set(it, {}); + }; + + var getterFor = function (TYPE) { + return function (it) { + var state; + if (!isObject(it) || (state = get(it)).type !== TYPE) { + throw new TypeError('Incompatible receiver, ' + TYPE + ' required'); + } return state; + }; + }; + + if (NATIVE_WEAK_MAP || shared.state) { + var store = shared.state || (shared.state = new WeakMap()); + /* eslint-disable no-self-assign -- prototype methods protection */ + store.get = store.get; + store.has = store.has; + store.set = store.set; + /* eslint-enable no-self-assign -- prototype methods protection */ + set = function (it, metadata) { + if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED); + metadata.facade = it; + store.set(it, metadata); + return metadata; + }; + get = function (it) { + return store.get(it) || {}; + }; + has = function (it) { + return store.has(it); + }; + } else { + var STATE = sharedKey('state'); + hiddenKeys[STATE] = true; + set = function (it, metadata) { + if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED); + metadata.facade = it; + createNonEnumerableProperty(it, STATE, metadata); + return metadata; + }; + get = function (it) { + return hasOwn(it, STATE) ? it[STATE] : {}; + }; + has = function (it) { + return hasOwn(it, STATE); + }; + } + + internalState = { + set: set, + get: get, + has: has, + enforce: enforce, + getterFor: getterFor + }; + return internalState; +} + +var hasRequiredMakeBuiltIn; + +function requireMakeBuiltIn () { + if (hasRequiredMakeBuiltIn) return makeBuiltIn.exports; + hasRequiredMakeBuiltIn = 1; + var uncurryThis = requireFunctionUncurryThis(); + var fails = requireFails(); + var isCallable = requireIsCallable(); + var hasOwn = requireHasOwnProperty(); + var DESCRIPTORS = requireDescriptors(); + var CONFIGURABLE_FUNCTION_NAME = requireFunctionName().CONFIGURABLE; + var inspectSource = requireInspectSource(); + var InternalStateModule = requireInternalState(); + + var enforceInternalState = InternalStateModule.enforce; + var getInternalState = InternalStateModule.get; + var $String = String; + // eslint-disable-next-line es/no-object-defineproperty -- safe + var defineProperty = Object.defineProperty; + var stringSlice = uncurryThis(''.slice); + var replace = uncurryThis(''.replace); + var join = uncurryThis([].join); + + var CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () { + return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8; + }); + + var TEMPLATE = String(String).split('String'); + + var makeBuiltIn$1 = makeBuiltIn.exports = function (value, name, options) { + if (stringSlice($String(name), 0, 7) === 'Symbol(') { + name = '[' + replace($String(name), /^Symbol\(([^)]*)\).*$/, '$1') + ']'; + } + if (options && options.getter) name = 'get ' + name; + if (options && options.setter) name = 'set ' + name; + if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) { + if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true }); + else value.name = name; + } + if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) { + defineProperty(value, 'length', { value: options.arity }); + } + try { + if (options && hasOwn(options, 'constructor') && options.constructor) { + if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false }); + // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable + } else if (value.prototype) value.prototype = undefined; + } catch (error) { /* empty */ } + var state = enforceInternalState(value); + if (!hasOwn(state, 'source')) { + state.source = join(TEMPLATE, typeof name == 'string' ? name : ''); + } return value; + }; + + // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative + // eslint-disable-next-line no-extend-native -- required + Function.prototype.toString = makeBuiltIn$1(function toString() { + return isCallable(this) && getInternalState(this).source || inspectSource(this); + }, 'toString'); + return makeBuiltIn.exports; +} + +var defineBuiltIn; +var hasRequiredDefineBuiltIn; + +function requireDefineBuiltIn () { + if (hasRequiredDefineBuiltIn) return defineBuiltIn; + hasRequiredDefineBuiltIn = 1; + var isCallable = requireIsCallable(); + var definePropertyModule = requireObjectDefineProperty(); + var makeBuiltIn = requireMakeBuiltIn(); + var defineGlobalProperty = requireDefineGlobalProperty(); + + defineBuiltIn = function (O, key, value, options) { + if (!options) options = {}; + var simple = options.enumerable; + var name = options.name !== undefined ? options.name : key; + if (isCallable(value)) makeBuiltIn(value, name, options); + if (options.global) { + if (simple) O[key] = value; + else defineGlobalProperty(key, value); + } else { + try { + if (!options.unsafe) delete O[key]; + else if (O[key]) simple = true; + } catch (error) { /* empty */ } + if (simple) O[key] = value; + else definePropertyModule.f(O, key, { + value: value, + enumerable: false, + configurable: !options.nonConfigurable, + writable: !options.nonWritable + }); + } return O; + }; + return defineBuiltIn; +} + +var toStringTagSupport; +var hasRequiredToStringTagSupport; + +function requireToStringTagSupport () { + if (hasRequiredToStringTagSupport) return toStringTagSupport; + hasRequiredToStringTagSupport = 1; + var wellKnownSymbol = requireWellKnownSymbol(); + + var TO_STRING_TAG = wellKnownSymbol('toStringTag'); + var test = {}; + + test[TO_STRING_TAG] = 'z'; + + toStringTagSupport = String(test) === '[object z]'; + return toStringTagSupport; +} + +var classofRaw; +var hasRequiredClassofRaw; + +function requireClassofRaw () { + if (hasRequiredClassofRaw) return classofRaw; + hasRequiredClassofRaw = 1; + var uncurryThis = requireFunctionUncurryThis(); + + var toString = uncurryThis({}.toString); + var stringSlice = uncurryThis(''.slice); + + classofRaw = function (it) { + return stringSlice(toString(it), 8, -1); + }; + return classofRaw; +} + +var classof; +var hasRequiredClassof; + +function requireClassof () { + if (hasRequiredClassof) return classof; + hasRequiredClassof = 1; + var TO_STRING_TAG_SUPPORT = requireToStringTagSupport(); + var isCallable = requireIsCallable(); + var classofRaw = requireClassofRaw(); + var wellKnownSymbol = requireWellKnownSymbol(); + + var TO_STRING_TAG = wellKnownSymbol('toStringTag'); + var $Object = Object; + + // ES3 wrong here + var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments'; + + // fallback for IE11 Script Access Denied error + var tryGet = function (it, key) { + try { + return it[key]; + } catch (error) { /* empty */ } + }; + + // getting tag from ES6+ `Object.prototype.toString` + classof = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) { + var O, tag, result; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag + // builtinTag case + : CORRECT_ARGUMENTS ? classofRaw(O) + // ES3 arguments fallback + : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result; + }; + return classof; +} + +var toString; +var hasRequiredToString; + +function requireToString () { + if (hasRequiredToString) return toString; + hasRequiredToString = 1; + var classof = requireClassof(); + + var $String = String; + + toString = function (argument) { + if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string'); + return $String(argument); + }; + return toString; +} + +var normalizeStringArgument; +var hasRequiredNormalizeStringArgument; + +function requireNormalizeStringArgument () { + if (hasRequiredNormalizeStringArgument) return normalizeStringArgument; + hasRequiredNormalizeStringArgument = 1; + var toString = requireToString(); + + normalizeStringArgument = function (argument, $default) { + return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument); + }; + return normalizeStringArgument; +} + +var errorToString; +var hasRequiredErrorToString; + +function requireErrorToString () { + if (hasRequiredErrorToString) return errorToString; + hasRequiredErrorToString = 1; + var DESCRIPTORS = requireDescriptors(); + var fails = requireFails(); + var anObject = requireAnObject(); + var normalizeStringArgument = requireNormalizeStringArgument(); + + var nativeErrorToString = Error.prototype.toString; + + var INCORRECT_TO_STRING = fails(function () { + if (DESCRIPTORS) { + // Chrome 32- incorrectly call accessor + // eslint-disable-next-line es/no-object-create, es/no-object-defineproperty -- safe + var object = Object.create(Object.defineProperty({}, 'name', { get: function () { + return this === object; + } })); + if (nativeErrorToString.call(object) !== 'true') return true; + } + // FF10- does not properly handle non-strings + return nativeErrorToString.call({ message: 1, name: 2 }) !== '2: 1' + // IE8 does not properly handle defaults + || nativeErrorToString.call({}) !== 'Error'; + }); + + errorToString = INCORRECT_TO_STRING ? function toString() { + var O = anObject(this); + var name = normalizeStringArgument(O.name, 'Error'); + var message = normalizeStringArgument(O.message); + return !name ? message : !message ? name : name + ': ' + message; + } : nativeErrorToString; + return errorToString; +} + +var hasRequiredEs_error_toString; + +function requireEs_error_toString () { + if (hasRequiredEs_error_toString) return es_error_toString; + hasRequiredEs_error_toString = 1; + var defineBuiltIn = requireDefineBuiltIn(); + var errorToString = requireErrorToString(); + + var ErrorPrototype = Error.prototype; + + // `Error.prototype.toString` method fix + // https://tc39.es/ecma262/#sec-error.prototype.tostring + if (ErrorPrototype.toString !== errorToString) { + defineBuiltIn(ErrorPrototype, 'toString', errorToString); + } + return es_error_toString; +} + +var indexedObject; +var hasRequiredIndexedObject; + +function requireIndexedObject () { + if (hasRequiredIndexedObject) return indexedObject; + hasRequiredIndexedObject = 1; + var uncurryThis = requireFunctionUncurryThis(); + var fails = requireFails(); + var classof = requireClassofRaw(); + + var $Object = Object; + var split = uncurryThis(''.split); + + // fallback for non-array-like ES3 and non-enumerable old V8 strings + indexedObject = fails(function () { + // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 + // eslint-disable-next-line no-prototype-builtins -- safe + return !$Object('z').propertyIsEnumerable(0); + }) ? function (it) { + return classof(it) === 'String' ? split(it, '') : $Object(it); + } : $Object; + return indexedObject; +} + +var toIndexedObject; +var hasRequiredToIndexedObject; + +function requireToIndexedObject () { + if (hasRequiredToIndexedObject) return toIndexedObject; + hasRequiredToIndexedObject = 1; + // toObject with fallback for non-array-like ES3 strings + var IndexedObject = requireIndexedObject(); + var requireObjectCoercible = requireRequireObjectCoercible(); + + toIndexedObject = function (it) { + return IndexedObject(requireObjectCoercible(it)); + }; + return toIndexedObject; +} + +var objectDefineProperties = {}; + +var mathTrunc; +var hasRequiredMathTrunc; + +function requireMathTrunc () { + if (hasRequiredMathTrunc) return mathTrunc; + hasRequiredMathTrunc = 1; + var ceil = Math.ceil; + var floor = Math.floor; + + // `Math.trunc` method + // https://tc39.es/ecma262/#sec-math.trunc + // eslint-disable-next-line es/no-math-trunc -- safe + mathTrunc = Math.trunc || function trunc(x) { + var n = +x; + return (n > 0 ? floor : ceil)(n); + }; + return mathTrunc; +} + +var toIntegerOrInfinity; +var hasRequiredToIntegerOrInfinity; + +function requireToIntegerOrInfinity () { + if (hasRequiredToIntegerOrInfinity) return toIntegerOrInfinity; + hasRequiredToIntegerOrInfinity = 1; + var trunc = requireMathTrunc(); + + // `ToIntegerOrInfinity` abstract operation + // https://tc39.es/ecma262/#sec-tointegerorinfinity + toIntegerOrInfinity = function (argument) { + var number = +argument; + // eslint-disable-next-line no-self-compare -- NaN check + return number !== number || number === 0 ? 0 : trunc(number); + }; + return toIntegerOrInfinity; +} + +var toAbsoluteIndex; +var hasRequiredToAbsoluteIndex; + +function requireToAbsoluteIndex () { + if (hasRequiredToAbsoluteIndex) return toAbsoluteIndex; + hasRequiredToAbsoluteIndex = 1; + var toIntegerOrInfinity = requireToIntegerOrInfinity(); + + var max = Math.max; + var min = Math.min; + + // Helper for a popular repeating case of the spec: + // Let integer be ? ToInteger(index). + // If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). + toAbsoluteIndex = function (index, length) { + var integer = toIntegerOrInfinity(index); + return integer < 0 ? max(integer + length, 0) : min(integer, length); + }; + return toAbsoluteIndex; +} + +var toLength; +var hasRequiredToLength; + +function requireToLength () { + if (hasRequiredToLength) return toLength; + hasRequiredToLength = 1; + var toIntegerOrInfinity = requireToIntegerOrInfinity(); + + var min = Math.min; + + // `ToLength` abstract operation + // https://tc39.es/ecma262/#sec-tolength + toLength = function (argument) { + var len = toIntegerOrInfinity(argument); + return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 + }; + return toLength; +} + +var lengthOfArrayLike; +var hasRequiredLengthOfArrayLike; + +function requireLengthOfArrayLike () { + if (hasRequiredLengthOfArrayLike) return lengthOfArrayLike; + hasRequiredLengthOfArrayLike = 1; + var toLength = requireToLength(); + + // `LengthOfArrayLike` abstract operation + // https://tc39.es/ecma262/#sec-lengthofarraylike + lengthOfArrayLike = function (obj) { + return toLength(obj.length); + }; + return lengthOfArrayLike; +} + +var arrayIncludes; +var hasRequiredArrayIncludes; + +function requireArrayIncludes () { + if (hasRequiredArrayIncludes) return arrayIncludes; + hasRequiredArrayIncludes = 1; + var toIndexedObject = requireToIndexedObject(); + var toAbsoluteIndex = requireToAbsoluteIndex(); + var lengthOfArrayLike = requireLengthOfArrayLike(); + + // `Array.prototype.{ indexOf, includes }` methods implementation + var createMethod = function (IS_INCLUDES) { + return function ($this, el, fromIndex) { + var O = toIndexedObject($this); + var length = lengthOfArrayLike(O); + if (length === 0) return !IS_INCLUDES && -1; + var index = toAbsoluteIndex(fromIndex, length); + var value; + // Array#includes uses SameValueZero equality algorithm + // eslint-disable-next-line no-self-compare -- NaN check + if (IS_INCLUDES && el !== el) while (length > index) { + value = O[index++]; + // eslint-disable-next-line no-self-compare -- NaN check + if (value !== value) return true; + // Array#indexOf ignores holes, Array#includes - not + } else for (;length > index; index++) { + if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; + } return !IS_INCLUDES && -1; + }; + }; + + arrayIncludes = { + // `Array.prototype.includes` method + // https://tc39.es/ecma262/#sec-array.prototype.includes + includes: createMethod(true), + // `Array.prototype.indexOf` method + // https://tc39.es/ecma262/#sec-array.prototype.indexof + indexOf: createMethod(false) + }; + return arrayIncludes; +} + +var objectKeysInternal; +var hasRequiredObjectKeysInternal; + +function requireObjectKeysInternal () { + if (hasRequiredObjectKeysInternal) return objectKeysInternal; + hasRequiredObjectKeysInternal = 1; + var uncurryThis = requireFunctionUncurryThis(); + var hasOwn = requireHasOwnProperty(); + var toIndexedObject = requireToIndexedObject(); + var indexOf = requireArrayIncludes().indexOf; + var hiddenKeys = requireHiddenKeys(); + + var push = uncurryThis([].push); + + objectKeysInternal = function (object, names) { + var O = toIndexedObject(object); + var i = 0; + var result = []; + var key; + for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key); + // Don't enum bug & hidden keys + while (names.length > i) if (hasOwn(O, key = names[i++])) { + ~indexOf(result, key) || push(result, key); + } + return result; + }; + return objectKeysInternal; +} + +var enumBugKeys; +var hasRequiredEnumBugKeys; + +function requireEnumBugKeys () { + if (hasRequiredEnumBugKeys) return enumBugKeys; + hasRequiredEnumBugKeys = 1; + // IE8- don't enum bug keys + enumBugKeys = [ + 'constructor', + 'hasOwnProperty', + 'isPrototypeOf', + 'propertyIsEnumerable', + 'toLocaleString', + 'toString', + 'valueOf' + ]; + return enumBugKeys; +} + +var objectKeys; +var hasRequiredObjectKeys; + +function requireObjectKeys () { + if (hasRequiredObjectKeys) return objectKeys; + hasRequiredObjectKeys = 1; + var internalObjectKeys = requireObjectKeysInternal(); + var enumBugKeys = requireEnumBugKeys(); + + // `Object.keys` method + // https://tc39.es/ecma262/#sec-object.keys + // eslint-disable-next-line es/no-object-keys -- safe + objectKeys = Object.keys || function keys(O) { + return internalObjectKeys(O, enumBugKeys); + }; + return objectKeys; +} + +var hasRequiredObjectDefineProperties; + +function requireObjectDefineProperties () { + if (hasRequiredObjectDefineProperties) return objectDefineProperties; + hasRequiredObjectDefineProperties = 1; + var DESCRIPTORS = requireDescriptors(); + var V8_PROTOTYPE_DEFINE_BUG = requireV8PrototypeDefineBug(); + var definePropertyModule = requireObjectDefineProperty(); + var anObject = requireAnObject(); + var toIndexedObject = requireToIndexedObject(); + var objectKeys = requireObjectKeys(); + + // `Object.defineProperties` method + // https://tc39.es/ecma262/#sec-object.defineproperties + // eslint-disable-next-line es/no-object-defineproperties -- safe + objectDefineProperties.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) { + anObject(O); + var props = toIndexedObject(Properties); + var keys = objectKeys(Properties); + var length = keys.length; + var index = 0; + var key; + while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]); + return O; + }; + return objectDefineProperties; +} + +var html$1; +var hasRequiredHtml; + +function requireHtml () { + if (hasRequiredHtml) return html$1; + hasRequiredHtml = 1; + var getBuiltIn = requireGetBuiltIn(); + + html$1 = getBuiltIn('document', 'documentElement'); + return html$1; +} + +var objectCreate; +var hasRequiredObjectCreate; + +function requireObjectCreate () { + if (hasRequiredObjectCreate) return objectCreate; + hasRequiredObjectCreate = 1; + /* global ActiveXObject -- old IE, WSH */ + var anObject = requireAnObject(); + var definePropertiesModule = requireObjectDefineProperties(); + var enumBugKeys = requireEnumBugKeys(); + var hiddenKeys = requireHiddenKeys(); + var html = requireHtml(); + var documentCreateElement = requireDocumentCreateElement(); + var sharedKey = requireSharedKey(); + + var GT = '>'; + var LT = '<'; + var PROTOTYPE = 'prototype'; + var SCRIPT = 'script'; + var IE_PROTO = sharedKey('IE_PROTO'); + + var EmptyConstructor = function () { /* empty */ }; + + var scriptTag = function (content) { + return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; + }; + + // Create object with fake `null` prototype: use ActiveX Object with cleared prototype + var NullProtoObjectViaActiveX = function (activeXDocument) { + activeXDocument.write(scriptTag('')); + activeXDocument.close(); + var temp = activeXDocument.parentWindow.Object; + // eslint-disable-next-line no-useless-assignment -- avoid memory leak + activeXDocument = null; + return temp; + }; + + // Create object with fake `null` prototype: use iframe Object with cleared prototype + var NullProtoObjectViaIFrame = function () { + // Thrash, waste and sodomy: IE GC bug + var iframe = documentCreateElement('iframe'); + var JS = 'java' + SCRIPT + ':'; + var iframeDocument; + iframe.style.display = 'none'; + html.appendChild(iframe); + // https://github.com/zloirock/core-js/issues/475 + iframe.src = String(JS); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(scriptTag('document.F=Object')); + iframeDocument.close(); + return iframeDocument.F; + }; + + // Check for document.domain and active x support + // No need to use active x approach when document.domain is not set + // see https://github.com/es-shims/es5-shim/issues/150 + // variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 + // avoid IE GC bug + var activeXDocument; + var NullProtoObject = function () { + try { + activeXDocument = new ActiveXObject('htmlfile'); + } catch (error) { /* ignore */ } + NullProtoObject = typeof document != 'undefined' + ? document.domain && activeXDocument + ? NullProtoObjectViaActiveX(activeXDocument) // old IE + : NullProtoObjectViaIFrame() + : NullProtoObjectViaActiveX(activeXDocument); // WSH + var length = enumBugKeys.length; + while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; + return NullProtoObject(); + }; + + hiddenKeys[IE_PROTO] = true; + + // `Object.create` method + // https://tc39.es/ecma262/#sec-object.create + // eslint-disable-next-line es/no-object-create -- safe + objectCreate = Object.create || function create(O, Properties) { + var result; + if (O !== null) { + EmptyConstructor[PROTOTYPE] = anObject(O); + result = new EmptyConstructor(); + EmptyConstructor[PROTOTYPE] = null; + // add "__proto__" for Object.getPrototypeOf polyfill + result[IE_PROTO] = O; + } else result = NullProtoObject(); + return Properties === undefined ? result : definePropertiesModule.f(result, Properties); + }; + return objectCreate; +} + +var addToUnscopables; +var hasRequiredAddToUnscopables; + +function requireAddToUnscopables () { + if (hasRequiredAddToUnscopables) return addToUnscopables; + hasRequiredAddToUnscopables = 1; + var wellKnownSymbol = requireWellKnownSymbol(); + var create = requireObjectCreate(); + var defineProperty = requireObjectDefineProperty().f; + + var UNSCOPABLES = wellKnownSymbol('unscopables'); + var ArrayPrototype = Array.prototype; + + // Array.prototype[@@unscopables] + // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables + if (ArrayPrototype[UNSCOPABLES] === undefined) { + defineProperty(ArrayPrototype, UNSCOPABLES, { + configurable: true, + value: create(null) + }); + } + + // add a key to Array.prototype[@@unscopables] + addToUnscopables = function (key) { + ArrayPrototype[UNSCOPABLES][key] = true; + }; + return addToUnscopables; +} + +var iterators; +var hasRequiredIterators; + +function requireIterators () { + if (hasRequiredIterators) return iterators; + hasRequiredIterators = 1; + iterators = {}; + return iterators; +} + +var objectGetOwnPropertyDescriptor = {}; + +var objectPropertyIsEnumerable = {}; + +var hasRequiredObjectPropertyIsEnumerable; + +function requireObjectPropertyIsEnumerable () { + if (hasRequiredObjectPropertyIsEnumerable) return objectPropertyIsEnumerable; + hasRequiredObjectPropertyIsEnumerable = 1; + var $propertyIsEnumerable = {}.propertyIsEnumerable; + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe + var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + + // Nashorn ~ JDK8 bug + var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1); + + // `Object.prototype.propertyIsEnumerable` method implementation + // https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable + objectPropertyIsEnumerable.f = NASHORN_BUG ? function propertyIsEnumerable(V) { + var descriptor = getOwnPropertyDescriptor(this, V); + return !!descriptor && descriptor.enumerable; + } : $propertyIsEnumerable; + return objectPropertyIsEnumerable; +} + +var hasRequiredObjectGetOwnPropertyDescriptor; + +function requireObjectGetOwnPropertyDescriptor () { + if (hasRequiredObjectGetOwnPropertyDescriptor) return objectGetOwnPropertyDescriptor; + hasRequiredObjectGetOwnPropertyDescriptor = 1; + var DESCRIPTORS = requireDescriptors(); + var call = requireFunctionCall(); + var propertyIsEnumerableModule = requireObjectPropertyIsEnumerable(); + var createPropertyDescriptor = requireCreatePropertyDescriptor(); + var toIndexedObject = requireToIndexedObject(); + var toPropertyKey = requireToPropertyKey(); + var hasOwn = requireHasOwnProperty(); + var IE8_DOM_DEFINE = requireIe8DomDefine(); + + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe + var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + + // `Object.getOwnPropertyDescriptor` method + // https://tc39.es/ecma262/#sec-object.getownpropertydescriptor + objectGetOwnPropertyDescriptor.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { + O = toIndexedObject(O); + P = toPropertyKey(P); + if (IE8_DOM_DEFINE) try { + return $getOwnPropertyDescriptor(O, P); + } catch (error) { /* empty */ } + if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]); + }; + return objectGetOwnPropertyDescriptor; +} + +var objectGetOwnPropertyNames = {}; + +var hasRequiredObjectGetOwnPropertyNames; + +function requireObjectGetOwnPropertyNames () { + if (hasRequiredObjectGetOwnPropertyNames) return objectGetOwnPropertyNames; + hasRequiredObjectGetOwnPropertyNames = 1; + var internalObjectKeys = requireObjectKeysInternal(); + var enumBugKeys = requireEnumBugKeys(); + + var hiddenKeys = enumBugKeys.concat('length', 'prototype'); + + // `Object.getOwnPropertyNames` method + // https://tc39.es/ecma262/#sec-object.getownpropertynames + // eslint-disable-next-line es/no-object-getownpropertynames -- safe + objectGetOwnPropertyNames.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { + return internalObjectKeys(O, hiddenKeys); + }; + return objectGetOwnPropertyNames; +} + +var objectGetOwnPropertySymbols = {}; + +var hasRequiredObjectGetOwnPropertySymbols; + +function requireObjectGetOwnPropertySymbols () { + if (hasRequiredObjectGetOwnPropertySymbols) return objectGetOwnPropertySymbols; + hasRequiredObjectGetOwnPropertySymbols = 1; + // eslint-disable-next-line es/no-object-getownpropertysymbols -- safe + objectGetOwnPropertySymbols.f = Object.getOwnPropertySymbols; + return objectGetOwnPropertySymbols; +} + +var ownKeys$1; +var hasRequiredOwnKeys; + +function requireOwnKeys () { + if (hasRequiredOwnKeys) return ownKeys$1; + hasRequiredOwnKeys = 1; + var getBuiltIn = requireGetBuiltIn(); + var uncurryThis = requireFunctionUncurryThis(); + var getOwnPropertyNamesModule = requireObjectGetOwnPropertyNames(); + var getOwnPropertySymbolsModule = requireObjectGetOwnPropertySymbols(); + var anObject = requireAnObject(); + + var concat = uncurryThis([].concat); + + // all object keys, includes non-enumerable and symbols + ownKeys$1 = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { + var keys = getOwnPropertyNamesModule.f(anObject(it)); + var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; + return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys; + }; + return ownKeys$1; +} + +var copyConstructorProperties; +var hasRequiredCopyConstructorProperties; + +function requireCopyConstructorProperties () { + if (hasRequiredCopyConstructorProperties) return copyConstructorProperties; + hasRequiredCopyConstructorProperties = 1; + var hasOwn = requireHasOwnProperty(); + var ownKeys = requireOwnKeys(); + var getOwnPropertyDescriptorModule = requireObjectGetOwnPropertyDescriptor(); + var definePropertyModule = requireObjectDefineProperty(); + + copyConstructorProperties = function (target, source, exceptions) { + var keys = ownKeys(source); + var defineProperty = definePropertyModule.f; + var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) { + defineProperty(target, key, getOwnPropertyDescriptor(source, key)); + } + } + }; + return copyConstructorProperties; +} + +var isForced_1; +var hasRequiredIsForced; + +function requireIsForced () { + if (hasRequiredIsForced) return isForced_1; + hasRequiredIsForced = 1; + var fails = requireFails(); + var isCallable = requireIsCallable(); + + var replacement = /#|\.prototype\./; + + var isForced = function (feature, detection) { + var value = data[normalize(feature)]; + return value === POLYFILL ? true + : value === NATIVE ? false + : isCallable(detection) ? fails(detection) + : !!detection; + }; + + var normalize = isForced.normalize = function (string) { + return String(string).replace(replacement, '.').toLowerCase(); + }; + + var data = isForced.data = {}; + var NATIVE = isForced.NATIVE = 'N'; + var POLYFILL = isForced.POLYFILL = 'P'; + + isForced_1 = isForced; + return isForced_1; +} + +var _export; +var hasRequired_export; + +function require_export () { + if (hasRequired_export) return _export; + hasRequired_export = 1; + var globalThis = requireGlobalThis(); + var getOwnPropertyDescriptor = requireObjectGetOwnPropertyDescriptor().f; + var createNonEnumerableProperty = requireCreateNonEnumerableProperty(); + var defineBuiltIn = requireDefineBuiltIn(); + var defineGlobalProperty = requireDefineGlobalProperty(); + var copyConstructorProperties = requireCopyConstructorProperties(); + var isForced = requireIsForced(); + + /* + options.target - name of the target object + options.global - target is the global object + options.stat - export as static methods of target + options.proto - export as prototype methods of target + options.real - real prototype method for the `pure` version + options.forced - export even if the native feature is available + options.bind - bind methods to the target, required for the `pure` version + options.wrap - wrap constructors to preventing global pollution, required for the `pure` version + options.unsafe - use the simple assignment of property instead of delete + defineProperty + options.sham - add a flag to not completely full polyfills + options.enumerable - export as enumerable property + options.dontCallGetSet - prevent calling a getter on target + options.name - the .name of the function if it does not match the key + */ + _export = function (options, source) { + var TARGET = options.target; + var GLOBAL = options.global; + var STATIC = options.stat; + var FORCED, target, key, targetProperty, sourceProperty, descriptor; + if (GLOBAL) { + target = globalThis; + } else if (STATIC) { + target = globalThis[TARGET] || defineGlobalProperty(TARGET, {}); + } else { + target = globalThis[TARGET] && globalThis[TARGET].prototype; + } + if (target) for (key in source) { + sourceProperty = source[key]; + if (options.dontCallGetSet) { + descriptor = getOwnPropertyDescriptor(target, key); + targetProperty = descriptor && descriptor.value; + } else targetProperty = target[key]; + FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); + // contained in target + if (!FORCED && targetProperty !== undefined) { + if (typeof sourceProperty == typeof targetProperty) continue; + copyConstructorProperties(sourceProperty, targetProperty); + } + // add a flag to not completely full polyfills + if (options.sham || (targetProperty && targetProperty.sham)) { + createNonEnumerableProperty(sourceProperty, 'sham', true); + } + defineBuiltIn(target, key, sourceProperty, options); + } + }; + return _export; +} + +var correctPrototypeGetter; +var hasRequiredCorrectPrototypeGetter; + +function requireCorrectPrototypeGetter () { + if (hasRequiredCorrectPrototypeGetter) return correctPrototypeGetter; + hasRequiredCorrectPrototypeGetter = 1; + var fails = requireFails(); + + correctPrototypeGetter = !fails(function () { + function F() { /* empty */ } + F.prototype.constructor = null; + // eslint-disable-next-line es/no-object-getprototypeof -- required for testing + return Object.getPrototypeOf(new F()) !== F.prototype; + }); + return correctPrototypeGetter; +} + +var objectGetPrototypeOf; +var hasRequiredObjectGetPrototypeOf; + +function requireObjectGetPrototypeOf () { + if (hasRequiredObjectGetPrototypeOf) return objectGetPrototypeOf; + hasRequiredObjectGetPrototypeOf = 1; + var hasOwn = requireHasOwnProperty(); + var isCallable = requireIsCallable(); + var toObject = requireToObject(); + var sharedKey = requireSharedKey(); + var CORRECT_PROTOTYPE_GETTER = requireCorrectPrototypeGetter(); + + var IE_PROTO = sharedKey('IE_PROTO'); + var $Object = Object; + var ObjectPrototype = $Object.prototype; + + // `Object.getPrototypeOf` method + // https://tc39.es/ecma262/#sec-object.getprototypeof + // eslint-disable-next-line es/no-object-getprototypeof -- safe + objectGetPrototypeOf = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) { + var object = toObject(O); + if (hasOwn(object, IE_PROTO)) return object[IE_PROTO]; + var constructor = object.constructor; + if (isCallable(constructor) && object instanceof constructor) { + return constructor.prototype; + } return object instanceof $Object ? ObjectPrototype : null; + }; + return objectGetPrototypeOf; +} + +var iteratorsCore; +var hasRequiredIteratorsCore; + +function requireIteratorsCore () { + if (hasRequiredIteratorsCore) return iteratorsCore; + hasRequiredIteratorsCore = 1; + var fails = requireFails(); + var isCallable = requireIsCallable(); + var isObject = requireIsObject(); + var create = requireObjectCreate(); + var getPrototypeOf = requireObjectGetPrototypeOf(); + var defineBuiltIn = requireDefineBuiltIn(); + var wellKnownSymbol = requireWellKnownSymbol(); + var IS_PURE = requireIsPure(); + + var ITERATOR = wellKnownSymbol('iterator'); + var BUGGY_SAFARI_ITERATORS = false; + + // `%IteratorPrototype%` object + // https://tc39.es/ecma262/#sec-%iteratorprototype%-object + var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; + + /* eslint-disable es/no-array-prototype-keys -- safe */ + if ([].keys) { + arrayIterator = [].keys(); + // Safari 8 has buggy iterators w/o `next` + if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true; + else { + PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); + if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype; + } + } + + var NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () { + var test = {}; + // FF44- legacy iterators case + return IteratorPrototype[ITERATOR].call(test) !== test; + }); + + if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {}; + else if (IS_PURE) IteratorPrototype = create(IteratorPrototype); + + // `%IteratorPrototype%[@@iterator]()` method + // https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator + if (!isCallable(IteratorPrototype[ITERATOR])) { + defineBuiltIn(IteratorPrototype, ITERATOR, function () { + return this; + }); + } + + iteratorsCore = { + IteratorPrototype: IteratorPrototype, + BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS + }; + return iteratorsCore; +} + +var setToStringTag; +var hasRequiredSetToStringTag; + +function requireSetToStringTag () { + if (hasRequiredSetToStringTag) return setToStringTag; + hasRequiredSetToStringTag = 1; + var defineProperty = requireObjectDefineProperty().f; + var hasOwn = requireHasOwnProperty(); + var wellKnownSymbol = requireWellKnownSymbol(); + + var TO_STRING_TAG = wellKnownSymbol('toStringTag'); + + setToStringTag = function (target, TAG, STATIC) { + if (target && !STATIC) target = target.prototype; + if (target && !hasOwn(target, TO_STRING_TAG)) { + defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG }); + } + }; + return setToStringTag; +} + +var iteratorCreateConstructor; +var hasRequiredIteratorCreateConstructor; + +function requireIteratorCreateConstructor () { + if (hasRequiredIteratorCreateConstructor) return iteratorCreateConstructor; + hasRequiredIteratorCreateConstructor = 1; + var IteratorPrototype = requireIteratorsCore().IteratorPrototype; + var create = requireObjectCreate(); + var createPropertyDescriptor = requireCreatePropertyDescriptor(); + var setToStringTag = requireSetToStringTag(); + var Iterators = requireIterators(); + + var returnThis = function () { return this; }; + + iteratorCreateConstructor = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) { + var TO_STRING_TAG = NAME + ' Iterator'; + IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) }); + setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true); + Iterators[TO_STRING_TAG] = returnThis; + return IteratorConstructor; + }; + return iteratorCreateConstructor; +} + +var functionUncurryThisAccessor; +var hasRequiredFunctionUncurryThisAccessor; + +function requireFunctionUncurryThisAccessor () { + if (hasRequiredFunctionUncurryThisAccessor) return functionUncurryThisAccessor; + hasRequiredFunctionUncurryThisAccessor = 1; + var uncurryThis = requireFunctionUncurryThis(); + var aCallable = requireACallable(); + + functionUncurryThisAccessor = function (object, key, method) { + try { + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe + return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method])); + } catch (error) { /* empty */ } + }; + return functionUncurryThisAccessor; +} + +var isPossiblePrototype; +var hasRequiredIsPossiblePrototype; + +function requireIsPossiblePrototype () { + if (hasRequiredIsPossiblePrototype) return isPossiblePrototype; + hasRequiredIsPossiblePrototype = 1; + var isObject = requireIsObject(); + + isPossiblePrototype = function (argument) { + return isObject(argument) || argument === null; + }; + return isPossiblePrototype; +} + +var aPossiblePrototype; +var hasRequiredAPossiblePrototype; + +function requireAPossiblePrototype () { + if (hasRequiredAPossiblePrototype) return aPossiblePrototype; + hasRequiredAPossiblePrototype = 1; + var isPossiblePrototype = requireIsPossiblePrototype(); + + var $String = String; + var $TypeError = TypeError; + + aPossiblePrototype = function (argument) { + if (isPossiblePrototype(argument)) return argument; + throw new $TypeError("Can't set " + $String(argument) + ' as a prototype'); + }; + return aPossiblePrototype; +} + +var objectSetPrototypeOf; +var hasRequiredObjectSetPrototypeOf; + +function requireObjectSetPrototypeOf () { + if (hasRequiredObjectSetPrototypeOf) return objectSetPrototypeOf; + hasRequiredObjectSetPrototypeOf = 1; + /* eslint-disable no-proto -- safe */ + var uncurryThisAccessor = requireFunctionUncurryThisAccessor(); + var isObject = requireIsObject(); + var requireObjectCoercible = requireRequireObjectCoercible(); + var aPossiblePrototype = requireAPossiblePrototype(); + + // `Object.setPrototypeOf` method + // https://tc39.es/ecma262/#sec-object.setprototypeof + // Works with __proto__ only. Old v8 can't work with null proto objects. + // eslint-disable-next-line es/no-object-setprototypeof -- safe + objectSetPrototypeOf = Object.setPrototypeOf || ('__proto__' in {} ? function () { + var CORRECT_SETTER = false; + var test = {}; + var setter; + try { + setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set'); + setter(test, []); + CORRECT_SETTER = test instanceof Array; + } catch (error) { /* empty */ } + return function setPrototypeOf(O, proto) { + requireObjectCoercible(O); + aPossiblePrototype(proto); + if (!isObject(O)) return O; + if (CORRECT_SETTER) setter(O, proto); + else O.__proto__ = proto; + return O; + }; + }() : undefined); + return objectSetPrototypeOf; +} + +var iteratorDefine; +var hasRequiredIteratorDefine; + +function requireIteratorDefine () { + if (hasRequiredIteratorDefine) return iteratorDefine; + hasRequiredIteratorDefine = 1; + var $ = require_export(); + var call = requireFunctionCall(); + var IS_PURE = requireIsPure(); + var FunctionName = requireFunctionName(); + var isCallable = requireIsCallable(); + var createIteratorConstructor = requireIteratorCreateConstructor(); + var getPrototypeOf = requireObjectGetPrototypeOf(); + var setPrototypeOf = requireObjectSetPrototypeOf(); + var setToStringTag = requireSetToStringTag(); + var createNonEnumerableProperty = requireCreateNonEnumerableProperty(); + var defineBuiltIn = requireDefineBuiltIn(); + var wellKnownSymbol = requireWellKnownSymbol(); + var Iterators = requireIterators(); + var IteratorsCore = requireIteratorsCore(); + + var PROPER_FUNCTION_NAME = FunctionName.PROPER; + var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE; + var IteratorPrototype = IteratorsCore.IteratorPrototype; + var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; + var ITERATOR = wellKnownSymbol('iterator'); + var KEYS = 'keys'; + var VALUES = 'values'; + var ENTRIES = 'entries'; + + var returnThis = function () { return this; }; + + iteratorDefine = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { + createIteratorConstructor(IteratorConstructor, NAME, next); + + var getIterationMethod = function (KIND) { + if (KIND === DEFAULT && defaultIterator) return defaultIterator; + if (!BUGGY_SAFARI_ITERATORS && KIND && KIND in IterablePrototype) return IterablePrototype[KIND]; + + switch (KIND) { + case KEYS: return function keys() { return new IteratorConstructor(this, KIND); }; + case VALUES: return function values() { return new IteratorConstructor(this, KIND); }; + case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); }; + } + + return function () { return new IteratorConstructor(this); }; + }; + + var TO_STRING_TAG = NAME + ' Iterator'; + var INCORRECT_VALUES_NAME = false; + var IterablePrototype = Iterable.prototype; + var nativeIterator = IterablePrototype[ITERATOR] + || IterablePrototype['@@iterator'] + || DEFAULT && IterablePrototype[DEFAULT]; + var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); + var anyNativeIterator = NAME === 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator; + var CurrentIteratorPrototype, methods, KEY; + + // fix native + if (anyNativeIterator) { + CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); + if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { + if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { + if (setPrototypeOf) { + setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); + } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) { + defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis); + } + } + // Set @@toStringTag to native iterators + setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); + if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis; + } + } + + // fix Array.prototype.{ values, @@iterator }.name in V8 / FF + if (PROPER_FUNCTION_NAME && DEFAULT === VALUES && nativeIterator && nativeIterator.name !== VALUES) { + if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) { + createNonEnumerableProperty(IterablePrototype, 'name', VALUES); + } else { + INCORRECT_VALUES_NAME = true; + defaultIterator = function values() { return call(nativeIterator, this); }; + } + } + + // export additional methods + if (DEFAULT) { + methods = { + values: getIterationMethod(VALUES), + keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), + entries: getIterationMethod(ENTRIES) + }; + if (FORCED) for (KEY in methods) { + if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { + defineBuiltIn(IterablePrototype, KEY, methods[KEY]); + } + } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); + } + + // define iterator + if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { + defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT }); + } + Iterators[NAME] = defaultIterator; + + return methods; + }; + return iteratorDefine; +} + +var createIterResultObject; +var hasRequiredCreateIterResultObject; + +function requireCreateIterResultObject () { + if (hasRequiredCreateIterResultObject) return createIterResultObject; + hasRequiredCreateIterResultObject = 1; + // `CreateIterResultObject` abstract operation + // https://tc39.es/ecma262/#sec-createiterresultobject + createIterResultObject = function (value, done) { + return { value: value, done: done }; + }; + return createIterResultObject; +} + +var es_array_iterator; +var hasRequiredEs_array_iterator; + +function requireEs_array_iterator () { + if (hasRequiredEs_array_iterator) return es_array_iterator; + hasRequiredEs_array_iterator = 1; + var toIndexedObject = requireToIndexedObject(); + var addToUnscopables = requireAddToUnscopables(); + var Iterators = requireIterators(); + var InternalStateModule = requireInternalState(); + var defineProperty = requireObjectDefineProperty().f; + var defineIterator = requireIteratorDefine(); + var createIterResultObject = requireCreateIterResultObject(); + var IS_PURE = requireIsPure(); + var DESCRIPTORS = requireDescriptors(); + + var ARRAY_ITERATOR = 'Array Iterator'; + var setInternalState = InternalStateModule.set; + var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR); + + // `Array.prototype.entries` method + // https://tc39.es/ecma262/#sec-array.prototype.entries + // `Array.prototype.keys` method + // https://tc39.es/ecma262/#sec-array.prototype.keys + // `Array.prototype.values` method + // https://tc39.es/ecma262/#sec-array.prototype.values + // `Array.prototype[@@iterator]` method + // https://tc39.es/ecma262/#sec-array.prototype-@@iterator + // `CreateArrayIterator` internal method + // https://tc39.es/ecma262/#sec-createarrayiterator + es_array_iterator = defineIterator(Array, 'Array', function (iterated, kind) { + setInternalState(this, { + type: ARRAY_ITERATOR, + target: toIndexedObject(iterated), // target + index: 0, // next index + kind: kind // kind + }); + // `%ArrayIteratorPrototype%.next` method + // https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next + }, function () { + var state = getInternalState(this); + var target = state.target; + var index = state.index++; + if (!target || index >= target.length) { + state.target = null; + return createIterResultObject(undefined, true); + } + switch (state.kind) { + case 'keys': return createIterResultObject(index, false); + case 'values': return createIterResultObject(target[index], false); + } return createIterResultObject([index, target[index]], false); + }, 'values'); + + // argumentsList[@@iterator] is %ArrayProto_values% + // https://tc39.es/ecma262/#sec-createunmappedargumentsobject + // https://tc39.es/ecma262/#sec-createmappedargumentsobject + var values = Iterators.Arguments = Iterators.Array; + + // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables + addToUnscopables('keys'); + addToUnscopables('values'); + addToUnscopables('entries'); + + // V8 ~ Chrome 45- bug + if (!IS_PURE && DESCRIPTORS && values.name !== 'values') try { + defineProperty(values, 'name', { value: 'values' }); + } catch (error) { /* empty */ } + return es_array_iterator; +} + +var es_object_keys = {}; + +var hasRequiredEs_object_keys; + +function requireEs_object_keys () { + if (hasRequiredEs_object_keys) return es_object_keys; + hasRequiredEs_object_keys = 1; + var $ = require_export(); + var toObject = requireToObject(); + var nativeKeys = requireObjectKeys(); + var fails = requireFails(); + + var FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); }); + + // `Object.keys` method + // https://tc39.es/ecma262/#sec-object.keys + $({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { + keys: function keys(it) { + return nativeKeys(toObject(it)); + } + }); + return es_object_keys; +} + +var es_object_toString = {}; + +var objectToString; +var hasRequiredObjectToString; + +function requireObjectToString () { + if (hasRequiredObjectToString) return objectToString; + hasRequiredObjectToString = 1; + var TO_STRING_TAG_SUPPORT = requireToStringTagSupport(); + var classof = requireClassof(); + + // `Object.prototype.toString` method implementation + // https://tc39.es/ecma262/#sec-object.prototype.tostring + objectToString = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() { + return '[object ' + classof(this) + ']'; + }; + return objectToString; +} + +var hasRequiredEs_object_toString; + +function requireEs_object_toString () { + if (hasRequiredEs_object_toString) return es_object_toString; + hasRequiredEs_object_toString = 1; + var TO_STRING_TAG_SUPPORT = requireToStringTagSupport(); + var defineBuiltIn = requireDefineBuiltIn(); + var toString = requireObjectToString(); + + // `Object.prototype.toString` method + // https://tc39.es/ecma262/#sec-object.prototype.tostring + if (!TO_STRING_TAG_SUPPORT) { + defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true }); + } + return es_object_toString; +} + +var es_map = {}; + +var es_map_constructor = {}; + +var internalMetadata = {exports: {}}; + +var objectGetOwnPropertyNamesExternal = {}; + +var arraySlice; +var hasRequiredArraySlice; + +function requireArraySlice () { + if (hasRequiredArraySlice) return arraySlice; + hasRequiredArraySlice = 1; + var uncurryThis = requireFunctionUncurryThis(); + + arraySlice = uncurryThis([].slice); + return arraySlice; +} + +var hasRequiredObjectGetOwnPropertyNamesExternal; + +function requireObjectGetOwnPropertyNamesExternal () { + if (hasRequiredObjectGetOwnPropertyNamesExternal) return objectGetOwnPropertyNamesExternal; + hasRequiredObjectGetOwnPropertyNamesExternal = 1; + /* eslint-disable es/no-object-getownpropertynames -- safe */ + var classof = requireClassofRaw(); + var toIndexedObject = requireToIndexedObject(); + var $getOwnPropertyNames = requireObjectGetOwnPropertyNames().f; + var arraySlice = requireArraySlice(); + + var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames + ? Object.getOwnPropertyNames(window) : []; + + var getWindowNames = function (it) { + try { + return $getOwnPropertyNames(it); + } catch (error) { + return arraySlice(windowNames); + } + }; + + // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window + objectGetOwnPropertyNamesExternal.f = function getOwnPropertyNames(it) { + return windowNames && classof(it) === 'Window' + ? getWindowNames(it) + : $getOwnPropertyNames(toIndexedObject(it)); + }; + return objectGetOwnPropertyNamesExternal; +} + +var arrayBufferNonExtensible; +var hasRequiredArrayBufferNonExtensible; + +function requireArrayBufferNonExtensible () { + if (hasRequiredArrayBufferNonExtensible) return arrayBufferNonExtensible; + hasRequiredArrayBufferNonExtensible = 1; + // FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it + var fails = requireFails(); + + arrayBufferNonExtensible = fails(function () { + if (typeof ArrayBuffer == 'function') { + var buffer = new ArrayBuffer(8); + // eslint-disable-next-line es/no-object-isextensible, es/no-object-defineproperty -- safe + if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 }); + } + }); + return arrayBufferNonExtensible; +} + +var objectIsExtensible; +var hasRequiredObjectIsExtensible; + +function requireObjectIsExtensible () { + if (hasRequiredObjectIsExtensible) return objectIsExtensible; + hasRequiredObjectIsExtensible = 1; + var fails = requireFails(); + var isObject = requireIsObject(); + var classof = requireClassofRaw(); + var ARRAY_BUFFER_NON_EXTENSIBLE = requireArrayBufferNonExtensible(); + + // eslint-disable-next-line es/no-object-isextensible -- safe + var $isExtensible = Object.isExtensible; + var FAILS_ON_PRIMITIVES = fails(function () { }); + + // `Object.isExtensible` method + // https://tc39.es/ecma262/#sec-object.isextensible + objectIsExtensible = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) { + if (!isObject(it)) return false; + if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) === 'ArrayBuffer') return false; + return $isExtensible ? $isExtensible(it) : true; + } : $isExtensible; + return objectIsExtensible; +} + +var freezing; +var hasRequiredFreezing; + +function requireFreezing () { + if (hasRequiredFreezing) return freezing; + hasRequiredFreezing = 1; + var fails = requireFails(); + + freezing = !fails(function () { + // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing + return Object.isExtensible(Object.preventExtensions({})); + }); + return freezing; +} + +var hasRequiredInternalMetadata; + +function requireInternalMetadata () { + if (hasRequiredInternalMetadata) return internalMetadata.exports; + hasRequiredInternalMetadata = 1; + var $ = require_export(); + var uncurryThis = requireFunctionUncurryThis(); + var hiddenKeys = requireHiddenKeys(); + var isObject = requireIsObject(); + var hasOwn = requireHasOwnProperty(); + var defineProperty = requireObjectDefineProperty().f; + var getOwnPropertyNamesModule = requireObjectGetOwnPropertyNames(); + var getOwnPropertyNamesExternalModule = requireObjectGetOwnPropertyNamesExternal(); + var isExtensible = requireObjectIsExtensible(); + var uid = requireUid(); + var FREEZING = requireFreezing(); + + var REQUIRED = false; + var METADATA = uid('meta'); + var id = 0; + + var setMetadata = function (it) { + defineProperty(it, METADATA, { value: { + objectID: 'O' + id++, // object ID + weakData: {} // weak collections IDs + } }); + }; + + var fastKey = function (it, create) { + // return a primitive with prefix + if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; + if (!hasOwn(it, METADATA)) { + // can't set metadata to uncaught frozen object + if (!isExtensible(it)) return 'F'; + // not necessary to add metadata + if (!create) return 'E'; + // add missing metadata + setMetadata(it); + // return object ID + } return it[METADATA].objectID; + }; + + var getWeakData = function (it, create) { + if (!hasOwn(it, METADATA)) { + // can't set metadata to uncaught frozen object + if (!isExtensible(it)) return true; + // not necessary to add metadata + if (!create) return false; + // add missing metadata + setMetadata(it); + // return the store of weak collections IDs + } return it[METADATA].weakData; + }; + + // add metadata on freeze-family methods calling + var onFreeze = function (it) { + if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it); + return it; + }; + + var enable = function () { + meta.enable = function () { /* empty */ }; + REQUIRED = true; + var getOwnPropertyNames = getOwnPropertyNamesModule.f; + var splice = uncurryThis([].splice); + var test = {}; + test[METADATA] = 1; + + // prevent exposing of metadata key + if (getOwnPropertyNames(test).length) { + getOwnPropertyNamesModule.f = function (it) { + var result = getOwnPropertyNames(it); + for (var i = 0, length = result.length; i < length; i++) { + if (result[i] === METADATA) { + splice(result, i, 1); + break; + } + } return result; + }; + + $({ target: 'Object', stat: true, forced: true }, { + getOwnPropertyNames: getOwnPropertyNamesExternalModule.f + }); + } + }; + + var meta = internalMetadata.exports = { + enable: enable, + fastKey: fastKey, + getWeakData: getWeakData, + onFreeze: onFreeze + }; + + hiddenKeys[METADATA] = true; + return internalMetadata.exports; +} + +var functionUncurryThisClause; +var hasRequiredFunctionUncurryThisClause; + +function requireFunctionUncurryThisClause () { + if (hasRequiredFunctionUncurryThisClause) return functionUncurryThisClause; + hasRequiredFunctionUncurryThisClause = 1; + var classofRaw = requireClassofRaw(); + var uncurryThis = requireFunctionUncurryThis(); + + functionUncurryThisClause = function (fn) { + // Nashorn bug: + // https://github.com/zloirock/core-js/issues/1128 + // https://github.com/zloirock/core-js/issues/1130 + if (classofRaw(fn) === 'Function') return uncurryThis(fn); + }; + return functionUncurryThisClause; +} + +var functionBindContext; +var hasRequiredFunctionBindContext; + +function requireFunctionBindContext () { + if (hasRequiredFunctionBindContext) return functionBindContext; + hasRequiredFunctionBindContext = 1; + var uncurryThis = requireFunctionUncurryThisClause(); + var aCallable = requireACallable(); + var NATIVE_BIND = requireFunctionBindNative(); + + var bind = uncurryThis(uncurryThis.bind); + + // optional / simple context binding + functionBindContext = function (fn, that) { + aCallable(fn); + return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) { + return fn.apply(that, arguments); + }; + }; + return functionBindContext; +} + +var isArrayIteratorMethod; +var hasRequiredIsArrayIteratorMethod; + +function requireIsArrayIteratorMethod () { + if (hasRequiredIsArrayIteratorMethod) return isArrayIteratorMethod; + hasRequiredIsArrayIteratorMethod = 1; + var wellKnownSymbol = requireWellKnownSymbol(); + var Iterators = requireIterators(); + + var ITERATOR = wellKnownSymbol('iterator'); + var ArrayPrototype = Array.prototype; + + // check on default Array iterator + isArrayIteratorMethod = function (it) { + return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); + }; + return isArrayIteratorMethod; +} + +var getIteratorMethod; +var hasRequiredGetIteratorMethod; + +function requireGetIteratorMethod () { + if (hasRequiredGetIteratorMethod) return getIteratorMethod; + hasRequiredGetIteratorMethod = 1; + var classof = requireClassof(); + var getMethod = requireGetMethod(); + var isNullOrUndefined = requireIsNullOrUndefined(); + var Iterators = requireIterators(); + var wellKnownSymbol = requireWellKnownSymbol(); + + var ITERATOR = wellKnownSymbol('iterator'); + + getIteratorMethod = function (it) { + if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR) + || getMethod(it, '@@iterator') + || Iterators[classof(it)]; + }; + return getIteratorMethod; +} + +var getIterator; +var hasRequiredGetIterator; + +function requireGetIterator () { + if (hasRequiredGetIterator) return getIterator; + hasRequiredGetIterator = 1; + var call = requireFunctionCall(); + var aCallable = requireACallable(); + var anObject = requireAnObject(); + var tryToString = requireTryToString(); + var getIteratorMethod = requireGetIteratorMethod(); + + var $TypeError = TypeError; + + getIterator = function (argument, usingIterator) { + var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator; + if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument)); + throw new $TypeError(tryToString(argument) + ' is not iterable'); + }; + return getIterator; +} + +var iteratorClose; +var hasRequiredIteratorClose; + +function requireIteratorClose () { + if (hasRequiredIteratorClose) return iteratorClose; + hasRequiredIteratorClose = 1; + var call = requireFunctionCall(); + var anObject = requireAnObject(); + var getMethod = requireGetMethod(); + + iteratorClose = function (iterator, kind, value) { + var innerResult, innerError; + anObject(iterator); + try { + innerResult = getMethod(iterator, 'return'); + if (!innerResult) { + if (kind === 'throw') throw value; + return value; + } + innerResult = call(innerResult, iterator); + } catch (error) { + innerError = true; + innerResult = error; + } + if (kind === 'throw') throw value; + if (innerError) throw innerResult; + anObject(innerResult); + return value; + }; + return iteratorClose; +} + +var iterate; +var hasRequiredIterate; + +function requireIterate () { + if (hasRequiredIterate) return iterate; + hasRequiredIterate = 1; + var bind = requireFunctionBindContext(); + var call = requireFunctionCall(); + var anObject = requireAnObject(); + var tryToString = requireTryToString(); + var isArrayIteratorMethod = requireIsArrayIteratorMethod(); + var lengthOfArrayLike = requireLengthOfArrayLike(); + var isPrototypeOf = requireObjectIsPrototypeOf(); + var getIterator = requireGetIterator(); + var getIteratorMethod = requireGetIteratorMethod(); + var iteratorClose = requireIteratorClose(); + + var $TypeError = TypeError; + + var Result = function (stopped, result) { + this.stopped = stopped; + this.result = result; + }; + + var ResultPrototype = Result.prototype; + + iterate = function (iterable, unboundFunction, options) { + var that = options && options.that; + var AS_ENTRIES = !!(options && options.AS_ENTRIES); + var IS_RECORD = !!(options && options.IS_RECORD); + var IS_ITERATOR = !!(options && options.IS_ITERATOR); + var INTERRUPTED = !!(options && options.INTERRUPTED); + var fn = bind(unboundFunction, that); + var iterator, iterFn, index, length, result, next, step; + + var stop = function (condition) { + if (iterator) iteratorClose(iterator, 'normal', condition); + return new Result(true, condition); + }; + + var callFn = function (value) { + if (AS_ENTRIES) { + anObject(value); + return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]); + } return INTERRUPTED ? fn(value, stop) : fn(value); + }; + + if (IS_RECORD) { + iterator = iterable.iterator; + } else if (IS_ITERATOR) { + iterator = iterable; + } else { + iterFn = getIteratorMethod(iterable); + if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable'); + // optimisation for array iterators + if (isArrayIteratorMethod(iterFn)) { + for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) { + result = callFn(iterable[index]); + if (result && isPrototypeOf(ResultPrototype, result)) return result; + } return new Result(false); + } + iterator = getIterator(iterable, iterFn); + } + + next = IS_RECORD ? iterable.next : iterator.next; + while (!(step = call(next, iterator)).done) { + try { + result = callFn(step.value); + } catch (error) { + iteratorClose(iterator, 'throw', error); + } + if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result; + } return new Result(false); + }; + return iterate; +} + +var anInstance; +var hasRequiredAnInstance; + +function requireAnInstance () { + if (hasRequiredAnInstance) return anInstance; + hasRequiredAnInstance = 1; + var isPrototypeOf = requireObjectIsPrototypeOf(); + + var $TypeError = TypeError; + + anInstance = function (it, Prototype) { + if (isPrototypeOf(Prototype, it)) return it; + throw new $TypeError('Incorrect invocation'); + }; + return anInstance; +} + +var checkCorrectnessOfIteration; +var hasRequiredCheckCorrectnessOfIteration; + +function requireCheckCorrectnessOfIteration () { + if (hasRequiredCheckCorrectnessOfIteration) return checkCorrectnessOfIteration; + hasRequiredCheckCorrectnessOfIteration = 1; + var wellKnownSymbol = requireWellKnownSymbol(); + + var ITERATOR = wellKnownSymbol('iterator'); + var SAFE_CLOSING = false; + + try { + var called = 0; + var iteratorWithReturn = { + next: function () { + return { done: !!called++ }; + }, + 'return': function () { + SAFE_CLOSING = true; + } + }; + iteratorWithReturn[ITERATOR] = function () { + return this; + }; + // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing + Array.from(iteratorWithReturn, function () { throw 2; }); + } catch (error) { /* empty */ } + + checkCorrectnessOfIteration = function (exec, SKIP_CLOSING) { + try { + if (!SKIP_CLOSING && !SAFE_CLOSING) return false; + } catch (error) { return false; } // workaround of old WebKit + `eval` bug + var ITERATION_SUPPORT = false; + try { + var object = {}; + object[ITERATOR] = function () { + return { + next: function () { + return { done: ITERATION_SUPPORT = true }; + } + }; + }; + exec(object); + } catch (error) { /* empty */ } + return ITERATION_SUPPORT; + }; + return checkCorrectnessOfIteration; +} + +var inheritIfRequired; +var hasRequiredInheritIfRequired; + +function requireInheritIfRequired () { + if (hasRequiredInheritIfRequired) return inheritIfRequired; + hasRequiredInheritIfRequired = 1; + var isCallable = requireIsCallable(); + var isObject = requireIsObject(); + var setPrototypeOf = requireObjectSetPrototypeOf(); + + // makes subclassing work correct for wrapped built-ins + inheritIfRequired = function ($this, dummy, Wrapper) { + var NewTarget, NewTargetPrototype; + if ( + // it can work only with native `setPrototypeOf` + setPrototypeOf && + // we haven't completely correct pre-ES6 way for getting `new.target`, so use this + isCallable(NewTarget = dummy.constructor) && + NewTarget !== Wrapper && + isObject(NewTargetPrototype = NewTarget.prototype) && + NewTargetPrototype !== Wrapper.prototype + ) setPrototypeOf($this, NewTargetPrototype); + return $this; + }; + return inheritIfRequired; +} + +var collection; +var hasRequiredCollection; + +function requireCollection () { + if (hasRequiredCollection) return collection; + hasRequiredCollection = 1; + var $ = require_export(); + var globalThis = requireGlobalThis(); + var uncurryThis = requireFunctionUncurryThis(); + var isForced = requireIsForced(); + var defineBuiltIn = requireDefineBuiltIn(); + var InternalMetadataModule = requireInternalMetadata(); + var iterate = requireIterate(); + var anInstance = requireAnInstance(); + var isCallable = requireIsCallable(); + var isNullOrUndefined = requireIsNullOrUndefined(); + var isObject = requireIsObject(); + var fails = requireFails(); + var checkCorrectnessOfIteration = requireCheckCorrectnessOfIteration(); + var setToStringTag = requireSetToStringTag(); + var inheritIfRequired = requireInheritIfRequired(); + + collection = function (CONSTRUCTOR_NAME, wrapper, common) { + var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1; + var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1; + var ADDER = IS_MAP ? 'set' : 'add'; + var NativeConstructor = globalThis[CONSTRUCTOR_NAME]; + var NativePrototype = NativeConstructor && NativeConstructor.prototype; + var Constructor = NativeConstructor; + var exported = {}; + + var fixMethod = function (KEY) { + var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]); + defineBuiltIn(NativePrototype, KEY, + KEY === 'add' ? function add(value) { + uncurriedNativeMethod(this, value === 0 ? 0 : value); + return this; + } : KEY === 'delete' ? function (key) { + return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key); + } : KEY === 'get' ? function get(key) { + return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key); + } : KEY === 'has' ? function has(key) { + return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key); + } : function set(key, value) { + uncurriedNativeMethod(this, key === 0 ? 0 : key, value); + return this; + } + ); + }; + + var REPLACE = isForced( + CONSTRUCTOR_NAME, + !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () { + new NativeConstructor().entries().next(); + })) + ); + + if (REPLACE) { + // create collection constructor + Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER); + InternalMetadataModule.enable(); + } else if (isForced(CONSTRUCTOR_NAME, true)) { + var instance = new Constructor(); + // early implementations not supports chaining + var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) !== instance; + // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false + var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); }); + // most early implementations doesn't supports iterables, most modern - not close it correctly + // eslint-disable-next-line no-new -- required for testing + var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); }); + // for early implementations -0 and +0 not the same + var BUGGY_ZERO = !IS_WEAK && fails(function () { + // V8 ~ Chromium 42- fails only with 5+ elements + var $instance = new NativeConstructor(); + var index = 5; + while (index--) $instance[ADDER](index, index); + return !$instance.has(-0); + }); + + if (!ACCEPT_ITERABLES) { + Constructor = wrapper(function (dummy, iterable) { + anInstance(dummy, NativePrototype); + var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor); + if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP }); + return that; + }); + Constructor.prototype = NativePrototype; + NativePrototype.constructor = Constructor; + } + + if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) { + fixMethod('delete'); + fixMethod('has'); + IS_MAP && fixMethod('get'); + } + + if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER); + + // weak collections should not contains .clear method + if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear; + } + + exported[CONSTRUCTOR_NAME] = Constructor; + $({ global: true, constructor: true, forced: Constructor !== NativeConstructor }, exported); + + setToStringTag(Constructor, CONSTRUCTOR_NAME); + + if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP); + + return Constructor; + }; + return collection; +} + +var defineBuiltInAccessor; +var hasRequiredDefineBuiltInAccessor; + +function requireDefineBuiltInAccessor () { + if (hasRequiredDefineBuiltInAccessor) return defineBuiltInAccessor; + hasRequiredDefineBuiltInAccessor = 1; + var makeBuiltIn = requireMakeBuiltIn(); + var defineProperty = requireObjectDefineProperty(); + + defineBuiltInAccessor = function (target, name, descriptor) { + if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true }); + if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true }); + return defineProperty.f(target, name, descriptor); + }; + return defineBuiltInAccessor; +} + +var defineBuiltIns; +var hasRequiredDefineBuiltIns; + +function requireDefineBuiltIns () { + if (hasRequiredDefineBuiltIns) return defineBuiltIns; + hasRequiredDefineBuiltIns = 1; + var defineBuiltIn = requireDefineBuiltIn(); + + defineBuiltIns = function (target, src, options) { + for (var key in src) defineBuiltIn(target, key, src[key], options); + return target; + }; + return defineBuiltIns; +} + +var setSpecies; +var hasRequiredSetSpecies; + +function requireSetSpecies () { + if (hasRequiredSetSpecies) return setSpecies; + hasRequiredSetSpecies = 1; + var getBuiltIn = requireGetBuiltIn(); + var defineBuiltInAccessor = requireDefineBuiltInAccessor(); + var wellKnownSymbol = requireWellKnownSymbol(); + var DESCRIPTORS = requireDescriptors(); + + var SPECIES = wellKnownSymbol('species'); + + setSpecies = function (CONSTRUCTOR_NAME) { + var Constructor = getBuiltIn(CONSTRUCTOR_NAME); + + if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) { + defineBuiltInAccessor(Constructor, SPECIES, { + configurable: true, + get: function () { return this; } + }); + } + }; + return setSpecies; +} + +var collectionStrong; +var hasRequiredCollectionStrong; + +function requireCollectionStrong () { + if (hasRequiredCollectionStrong) return collectionStrong; + hasRequiredCollectionStrong = 1; + var create = requireObjectCreate(); + var defineBuiltInAccessor = requireDefineBuiltInAccessor(); + var defineBuiltIns = requireDefineBuiltIns(); + var bind = requireFunctionBindContext(); + var anInstance = requireAnInstance(); + var isNullOrUndefined = requireIsNullOrUndefined(); + var iterate = requireIterate(); + var defineIterator = requireIteratorDefine(); + var createIterResultObject = requireCreateIterResultObject(); + var setSpecies = requireSetSpecies(); + var DESCRIPTORS = requireDescriptors(); + var fastKey = requireInternalMetadata().fastKey; + var InternalStateModule = requireInternalState(); + + var setInternalState = InternalStateModule.set; + var internalStateGetterFor = InternalStateModule.getterFor; + + collectionStrong = { + getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) { + var Constructor = wrapper(function (that, iterable) { + anInstance(that, Prototype); + setInternalState(that, { + type: CONSTRUCTOR_NAME, + index: create(null), + first: null, + last: null, + size: 0 + }); + if (!DESCRIPTORS) that.size = 0; + if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP }); + }); + + var Prototype = Constructor.prototype; + + var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME); + + var define = function (that, key, value) { + var state = getInternalState(that); + var entry = getEntry(that, key); + var previous, index; + // change existing entry + if (entry) { + entry.value = value; + // create new entry + } else { + state.last = entry = { + index: index = fastKey(key, true), + key: key, + value: value, + previous: previous = state.last, + next: null, + removed: false + }; + if (!state.first) state.first = entry; + if (previous) previous.next = entry; + if (DESCRIPTORS) state.size++; + else that.size++; + // add to index + if (index !== 'F') state.index[index] = entry; + } return that; + }; + + var getEntry = function (that, key) { + var state = getInternalState(that); + // fast case + var index = fastKey(key); + var entry; + if (index !== 'F') return state.index[index]; + // frozen object case + for (entry = state.first; entry; entry = entry.next) { + if (entry.key === key) return entry; + } + }; + + defineBuiltIns(Prototype, { + // `{ Map, Set }.prototype.clear()` methods + // https://tc39.es/ecma262/#sec-map.prototype.clear + // https://tc39.es/ecma262/#sec-set.prototype.clear + clear: function clear() { + var that = this; + var state = getInternalState(that); + var entry = state.first; + while (entry) { + entry.removed = true; + if (entry.previous) entry.previous = entry.previous.next = null; + entry = entry.next; + } + state.first = state.last = null; + state.index = create(null); + if (DESCRIPTORS) state.size = 0; + else that.size = 0; + }, + // `{ Map, Set }.prototype.delete(key)` methods + // https://tc39.es/ecma262/#sec-map.prototype.delete + // https://tc39.es/ecma262/#sec-set.prototype.delete + 'delete': function (key) { + var that = this; + var state = getInternalState(that); + var entry = getEntry(that, key); + if (entry) { + var next = entry.next; + var prev = entry.previous; + delete state.index[entry.index]; + entry.removed = true; + if (prev) prev.next = next; + if (next) next.previous = prev; + if (state.first === entry) state.first = next; + if (state.last === entry) state.last = prev; + if (DESCRIPTORS) state.size--; + else that.size--; + } return !!entry; + }, + // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods + // https://tc39.es/ecma262/#sec-map.prototype.foreach + // https://tc39.es/ecma262/#sec-set.prototype.foreach + forEach: function forEach(callbackfn /* , that = undefined */) { + var state = getInternalState(this); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined); + var entry; + while (entry = entry ? entry.next : state.first) { + boundFunction(entry.value, entry.key, this); + // revert to the last existing entry + while (entry && entry.removed) entry = entry.previous; + } + }, + // `{ Map, Set}.prototype.has(key)` methods + // https://tc39.es/ecma262/#sec-map.prototype.has + // https://tc39.es/ecma262/#sec-set.prototype.has + has: function has(key) { + return !!getEntry(this, key); + } + }); + + defineBuiltIns(Prototype, IS_MAP ? { + // `Map.prototype.get(key)` method + // https://tc39.es/ecma262/#sec-map.prototype.get + get: function get(key) { + var entry = getEntry(this, key); + return entry && entry.value; + }, + // `Map.prototype.set(key, value)` method + // https://tc39.es/ecma262/#sec-map.prototype.set + set: function set(key, value) { + return define(this, key === 0 ? 0 : key, value); + } + } : { + // `Set.prototype.add(value)` method + // https://tc39.es/ecma262/#sec-set.prototype.add + add: function add(value) { + return define(this, value = value === 0 ? 0 : value, value); + } + }); + if (DESCRIPTORS) defineBuiltInAccessor(Prototype, 'size', { + configurable: true, + get: function () { + return getInternalState(this).size; + } + }); + return Constructor; + }, + setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) { + var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator'; + var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME); + var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME); + // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods + // https://tc39.es/ecma262/#sec-map.prototype.entries + // https://tc39.es/ecma262/#sec-map.prototype.keys + // https://tc39.es/ecma262/#sec-map.prototype.values + // https://tc39.es/ecma262/#sec-map.prototype-@@iterator + // https://tc39.es/ecma262/#sec-set.prototype.entries + // https://tc39.es/ecma262/#sec-set.prototype.keys + // https://tc39.es/ecma262/#sec-set.prototype.values + // https://tc39.es/ecma262/#sec-set.prototype-@@iterator + defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) { + setInternalState(this, { + type: ITERATOR_NAME, + target: iterated, + state: getInternalCollectionState(iterated), + kind: kind, + last: null + }); + }, function () { + var state = getInternalIteratorState(this); + var kind = state.kind; + var entry = state.last; + // revert to the last existing entry + while (entry && entry.removed) entry = entry.previous; + // get next entry + if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) { + // or finish the iteration + state.target = null; + return createIterResultObject(undefined, true); + } + // return step by kind + if (kind === 'keys') return createIterResultObject(entry.key, false); + if (kind === 'values') return createIterResultObject(entry.value, false); + return createIterResultObject([entry.key, entry.value], false); + }, IS_MAP ? 'entries' : 'values', !IS_MAP, true); + + // `{ Map, Set }.prototype[@@species]` accessors + // https://tc39.es/ecma262/#sec-get-map-@@species + // https://tc39.es/ecma262/#sec-get-set-@@species + setSpecies(CONSTRUCTOR_NAME); + } + }; + return collectionStrong; +} + +var hasRequiredEs_map_constructor; + +function requireEs_map_constructor () { + if (hasRequiredEs_map_constructor) return es_map_constructor; + hasRequiredEs_map_constructor = 1; + var collection = requireCollection(); + var collectionStrong = requireCollectionStrong(); + + // `Map` constructor + // https://tc39.es/ecma262/#sec-map-objects + collection('Map', function (init) { + return function Map() { return init(this, arguments.length ? arguments[0] : undefined); }; + }, collectionStrong); + return es_map_constructor; +} + +var hasRequiredEs_map; + +function requireEs_map () { + if (hasRequiredEs_map) return es_map; + hasRequiredEs_map = 1; + // TODO: Remove this module from `core-js@4` since it's replaced to module below + requireEs_map_constructor(); + return es_map; +} + +var es_set = {}; + +var es_set_constructor = {}; + +var hasRequiredEs_set_constructor; + +function requireEs_set_constructor () { + if (hasRequiredEs_set_constructor) return es_set_constructor; + hasRequiredEs_set_constructor = 1; + var collection = requireCollection(); + var collectionStrong = requireCollectionStrong(); + + // `Set` constructor + // https://tc39.es/ecma262/#sec-set-objects + collection('Set', function (init) { + return function Set() { return init(this, arguments.length ? arguments[0] : undefined); }; + }, collectionStrong); + return es_set_constructor; +} + +var hasRequiredEs_set; + +function requireEs_set () { + if (hasRequiredEs_set) return es_set; + hasRequiredEs_set = 1; + // TODO: Remove this module from `core-js@4` since it's replaced to module below + requireEs_set_constructor(); + return es_set; +} + +var web_domException_constructor = {}; + +var environment; +var hasRequiredEnvironment; + +function requireEnvironment () { + if (hasRequiredEnvironment) return environment; + hasRequiredEnvironment = 1; + /* global Bun, Deno -- detection */ + var globalThis = requireGlobalThis(); + var userAgent = requireEnvironmentUserAgent(); + var classof = requireClassofRaw(); + + var userAgentStartsWith = function (string) { + return userAgent.slice(0, string.length) === string; + }; + + environment = (function () { + if (userAgentStartsWith('Bun/')) return 'BUN'; + if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE'; + if (userAgentStartsWith('Deno/')) return 'DENO'; + if (userAgentStartsWith('Node.js/')) return 'NODE'; + if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN'; + if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO'; + if (classof(globalThis.process) === 'process') return 'NODE'; + if (globalThis.window && globalThis.document) return 'BROWSER'; + return 'REST'; + })(); + return environment; +} + +var environmentIsNode; +var hasRequiredEnvironmentIsNode; + +function requireEnvironmentIsNode () { + if (hasRequiredEnvironmentIsNode) return environmentIsNode; + hasRequiredEnvironmentIsNode = 1; + var ENVIRONMENT = requireEnvironment(); + + environmentIsNode = ENVIRONMENT === 'NODE'; + return environmentIsNode; +} + +var getBuiltInNodeModule; +var hasRequiredGetBuiltInNodeModule; + +function requireGetBuiltInNodeModule () { + if (hasRequiredGetBuiltInNodeModule) return getBuiltInNodeModule; + hasRequiredGetBuiltInNodeModule = 1; + var globalThis = requireGlobalThis(); + var IS_NODE = requireEnvironmentIsNode(); + + getBuiltInNodeModule = function (name) { + if (IS_NODE) { + try { + return globalThis.process.getBuiltinModule(name); + } catch (error) { /* empty */ } + try { + // eslint-disable-next-line no-new-func -- safe + return Function('return require("' + name + '")')(); + } catch (error) { /* empty */ } + } + }; + return getBuiltInNodeModule; +} + +var domExceptionConstants; +var hasRequiredDomExceptionConstants; + +function requireDomExceptionConstants () { + if (hasRequiredDomExceptionConstants) return domExceptionConstants; + hasRequiredDomExceptionConstants = 1; + domExceptionConstants = { + IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 }, + DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 }, + HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 }, + WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 }, + InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 }, + NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 }, + NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 }, + NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 }, + NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 }, + InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 }, + InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 }, + SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 }, + InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 }, + NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 }, + InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 }, + ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 }, + TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 }, + SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 }, + NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 }, + AbortError: { s: 'ABORT_ERR', c: 20, m: 1 }, + URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 }, + QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 }, + TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 }, + InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 }, + DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 } + }; + return domExceptionConstants; +} + +var errorStackClear; +var hasRequiredErrorStackClear; + +function requireErrorStackClear () { + if (hasRequiredErrorStackClear) return errorStackClear; + hasRequiredErrorStackClear = 1; + var uncurryThis = requireFunctionUncurryThis(); + + var $Error = Error; + var replace = uncurryThis(''.replace); + + var TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd'); + // eslint-disable-next-line redos/no-vulnerable, sonarjs/slow-regex -- safe + var V8_OR_CHAKRA_STACK_ENTRY = /\n\s*at [^:]*:[^\n]*/; + var IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST); + + errorStackClear = function (stack, dropEntries) { + if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) { + while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, ''); + } return stack; + }; + return errorStackClear; +} + +var hasRequiredWeb_domException_constructor; + +function requireWeb_domException_constructor () { + if (hasRequiredWeb_domException_constructor) return web_domException_constructor; + hasRequiredWeb_domException_constructor = 1; + var $ = require_export(); + var getBuiltIn = requireGetBuiltIn(); + var getBuiltInNodeModule = requireGetBuiltInNodeModule(); + var fails = requireFails(); + var create = requireObjectCreate(); + var createPropertyDescriptor = requireCreatePropertyDescriptor(); + var defineProperty = requireObjectDefineProperty().f; + var defineBuiltIn = requireDefineBuiltIn(); + var defineBuiltInAccessor = requireDefineBuiltInAccessor(); + var hasOwn = requireHasOwnProperty(); + var anInstance = requireAnInstance(); + var anObject = requireAnObject(); + var errorToString = requireErrorToString(); + var normalizeStringArgument = requireNormalizeStringArgument(); + var DOMExceptionConstants = requireDomExceptionConstants(); + var clearErrorStack = requireErrorStackClear(); + var InternalStateModule = requireInternalState(); + var DESCRIPTORS = requireDescriptors(); + var IS_PURE = requireIsPure(); + + var DOM_EXCEPTION = 'DOMException'; + var DATA_CLONE_ERR = 'DATA_CLONE_ERR'; + var Error = getBuiltIn('Error'); + // NodeJS < 17.0 does not expose `DOMException` to global + var NativeDOMException = getBuiltIn(DOM_EXCEPTION) || (function () { + try { + // NodeJS < 15.0 does not expose `MessageChannel` to global + var MessageChannel = getBuiltIn('MessageChannel') || getBuiltInNodeModule('worker_threads').MessageChannel; + // eslint-disable-next-line es/no-weak-map, unicorn/require-post-message-target-origin -- safe + new MessageChannel().port1.postMessage(new WeakMap()); + } catch (error) { + if (error.name === DATA_CLONE_ERR && error.code === 25) return error.constructor; + } + })(); + var NativeDOMExceptionPrototype = NativeDOMException && NativeDOMException.prototype; + var ErrorPrototype = Error.prototype; + var setInternalState = InternalStateModule.set; + var getInternalState = InternalStateModule.getterFor(DOM_EXCEPTION); + var HAS_STACK = 'stack' in new Error(DOM_EXCEPTION); + + var codeFor = function (name) { + return hasOwn(DOMExceptionConstants, name) && DOMExceptionConstants[name].m ? DOMExceptionConstants[name].c : 0; + }; + + var $DOMException = function DOMException() { + anInstance(this, DOMExceptionPrototype); + var argumentsLength = arguments.length; + var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]); + var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error'); + var code = codeFor(name); + setInternalState(this, { + type: DOM_EXCEPTION, + name: name, + message: message, + code: code + }); + if (!DESCRIPTORS) { + this.name = name; + this.message = message; + this.code = code; + } + if (HAS_STACK) { + var error = new Error(message); + error.name = DOM_EXCEPTION; + defineProperty(this, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1))); + } + }; + + var DOMExceptionPrototype = $DOMException.prototype = create(ErrorPrototype); + + var createGetterDescriptor = function (get) { + return { enumerable: true, configurable: true, get: get }; + }; + + var getterFor = function (key) { + return createGetterDescriptor(function () { + return getInternalState(this)[key]; + }); + }; + + if (DESCRIPTORS) { + // `DOMException.prototype.code` getter + defineBuiltInAccessor(DOMExceptionPrototype, 'code', getterFor('code')); + // `DOMException.prototype.message` getter + defineBuiltInAccessor(DOMExceptionPrototype, 'message', getterFor('message')); + // `DOMException.prototype.name` getter + defineBuiltInAccessor(DOMExceptionPrototype, 'name', getterFor('name')); + } + + defineProperty(DOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, $DOMException)); + + // FF36- DOMException is a function, but can't be constructed + var INCORRECT_CONSTRUCTOR = fails(function () { + return !(new NativeDOMException() instanceof Error); + }); + + // Safari 10.1 / Chrome 32- / IE8- DOMException.prototype.toString bugs + var INCORRECT_TO_STRING = INCORRECT_CONSTRUCTOR || fails(function () { + return ErrorPrototype.toString !== errorToString || String(new NativeDOMException(1, 2)) !== '2: 1'; + }); + + // Deno 1.6.3- DOMException.prototype.code just missed + var INCORRECT_CODE = INCORRECT_CONSTRUCTOR || fails(function () { + return new NativeDOMException(1, 'DataCloneError').code !== 25; + }); + + // Deno 1.6.3- DOMException constants just missed + var MISSED_CONSTANTS = INCORRECT_CONSTRUCTOR + || NativeDOMException[DATA_CLONE_ERR] !== 25 + || NativeDOMExceptionPrototype[DATA_CLONE_ERR] !== 25; + + var FORCED_CONSTRUCTOR = IS_PURE ? INCORRECT_TO_STRING || INCORRECT_CODE || MISSED_CONSTANTS : INCORRECT_CONSTRUCTOR; + + // `DOMException` constructor + // https://webidl.spec.whatwg.org/#idl-DOMException + $({ global: true, constructor: true, forced: FORCED_CONSTRUCTOR }, { + DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException + }); + + var PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION); + var PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype; + + if (INCORRECT_TO_STRING && (IS_PURE || NativeDOMException === PolyfilledDOMException)) { + defineBuiltIn(PolyfilledDOMExceptionPrototype, 'toString', errorToString); + } + + if (INCORRECT_CODE && DESCRIPTORS && NativeDOMException === PolyfilledDOMException) { + defineBuiltInAccessor(PolyfilledDOMExceptionPrototype, 'code', createGetterDescriptor(function () { + return codeFor(anObject(this).name); + })); + } + + // `DOMException` constants + for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) { + var constant = DOMExceptionConstants[key]; + var constantName = constant.s; + var descriptor = createPropertyDescriptor(6, constant.c); + if (!hasOwn(PolyfilledDOMException, constantName)) { + defineProperty(PolyfilledDOMException, constantName, descriptor); + } + if (!hasOwn(PolyfilledDOMExceptionPrototype, constantName)) { + defineProperty(PolyfilledDOMExceptionPrototype, constantName, descriptor); + } + } + return web_domException_constructor; +} + +var web_domException_stack = {}; + +var hasRequiredWeb_domException_stack; + +function requireWeb_domException_stack () { + if (hasRequiredWeb_domException_stack) return web_domException_stack; + hasRequiredWeb_domException_stack = 1; + var $ = require_export(); + var globalThis = requireGlobalThis(); + var getBuiltIn = requireGetBuiltIn(); + var createPropertyDescriptor = requireCreatePropertyDescriptor(); + var defineProperty = requireObjectDefineProperty().f; + var hasOwn = requireHasOwnProperty(); + var anInstance = requireAnInstance(); + var inheritIfRequired = requireInheritIfRequired(); + var normalizeStringArgument = requireNormalizeStringArgument(); + var DOMExceptionConstants = requireDomExceptionConstants(); + var clearErrorStack = requireErrorStackClear(); + var DESCRIPTORS = requireDescriptors(); + var IS_PURE = requireIsPure(); + + var DOM_EXCEPTION = 'DOMException'; + var Error = getBuiltIn('Error'); + var NativeDOMException = getBuiltIn(DOM_EXCEPTION); + + var $DOMException = function DOMException() { + anInstance(this, DOMExceptionPrototype); + var argumentsLength = arguments.length; + var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]); + var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error'); + var that = new NativeDOMException(message, name); + var error = new Error(message); + error.name = DOM_EXCEPTION; + defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1))); + inheritIfRequired(that, this, $DOMException); + return that; + }; + + var DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype; + + var ERROR_HAS_STACK = 'stack' in new Error(DOM_EXCEPTION); + var DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2); + + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe + var descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(globalThis, DOM_EXCEPTION); + + // Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it + // https://github.com/Jarred-Sumner/bun/issues/399 + var BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable); + + var FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK; + + // `DOMException` constructor patch for `.stack` where it's required + // https://webidl.spec.whatwg.org/#es-DOMException-specialness + $({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { // TODO: fix export logic + DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException + }); + + var PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION); + var PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype; + + if (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) { + if (!IS_PURE) { + defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException)); + } + + for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) { + var constant = DOMExceptionConstants[key]; + var constantName = constant.s; + if (!hasOwn(PolyfilledDOMException, constantName)) { + defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c)); + } + } + } + return web_domException_stack; +} + +var web_domException_toStringTag = {}; + +var hasRequiredWeb_domException_toStringTag; + +function requireWeb_domException_toStringTag () { + if (hasRequiredWeb_domException_toStringTag) return web_domException_toStringTag; + hasRequiredWeb_domException_toStringTag = 1; + var getBuiltIn = requireGetBuiltIn(); + var setToStringTag = requireSetToStringTag(); + + var DOM_EXCEPTION = 'DOMException'; + + // `DOMException.prototype[@@toStringTag]` property + setToStringTag(getBuiltIn(DOM_EXCEPTION), DOM_EXCEPTION); + return web_domException_toStringTag; +} + +var web_structuredClone = {}; + +var isConstructor; +var hasRequiredIsConstructor; + +function requireIsConstructor () { + if (hasRequiredIsConstructor) return isConstructor; + hasRequiredIsConstructor = 1; + var uncurryThis = requireFunctionUncurryThis(); + var fails = requireFails(); + var isCallable = requireIsCallable(); + var classof = requireClassof(); + var getBuiltIn = requireGetBuiltIn(); + var inspectSource = requireInspectSource(); + + var noop = function () { /* empty */ }; + var construct = getBuiltIn('Reflect', 'construct'); + var constructorRegExp = /^\s*(?:class|function)\b/; + var exec = uncurryThis(constructorRegExp.exec); + var INCORRECT_TO_STRING = !constructorRegExp.test(noop); + + var isConstructorModern = function isConstructor(argument) { + if (!isCallable(argument)) return false; + try { + construct(noop, [], argument); + return true; + } catch (error) { + return false; + } + }; + + var isConstructorLegacy = function isConstructor(argument) { + if (!isCallable(argument)) return false; + switch (classof(argument)) { + case 'AsyncFunction': + case 'GeneratorFunction': + case 'AsyncGeneratorFunction': return false; + } + try { + // we can't check .prototype since constructors produced by .bind haven't it + // `Function#toString` throws on some built-it function in some legacy engines + // (for example, `DOMQuad` and similar in FF41-) + return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument)); + } catch (error) { + return true; + } + }; + + isConstructorLegacy.sham = true; + + // `IsConstructor` abstract operation + // https://tc39.es/ecma262/#sec-isconstructor + isConstructor = !construct || fails(function () { + var called; + return isConstructorModern(isConstructorModern.call) + || !isConstructorModern(Object) + || !isConstructorModern(function () { called = true; }) + || called; + }) ? isConstructorLegacy : isConstructorModern; + return isConstructor; +} + +var createProperty; +var hasRequiredCreateProperty; + +function requireCreateProperty () { + if (hasRequiredCreateProperty) return createProperty; + hasRequiredCreateProperty = 1; + var DESCRIPTORS = requireDescriptors(); + var definePropertyModule = requireObjectDefineProperty(); + var createPropertyDescriptor = requireCreatePropertyDescriptor(); + + createProperty = function (object, key, value) { + if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value)); + else object[key] = value; + }; + return createProperty; +} + +var validateArgumentsLength; +var hasRequiredValidateArgumentsLength; + +function requireValidateArgumentsLength () { + if (hasRequiredValidateArgumentsLength) return validateArgumentsLength; + hasRequiredValidateArgumentsLength = 1; + var $TypeError = TypeError; + + validateArgumentsLength = function (passed, required) { + if (passed < required) throw new $TypeError('Not enough arguments'); + return passed; + }; + return validateArgumentsLength; +} + +var regexpFlags; +var hasRequiredRegexpFlags; + +function requireRegexpFlags () { + if (hasRequiredRegexpFlags) return regexpFlags; + hasRequiredRegexpFlags = 1; + var anObject = requireAnObject(); + + // `RegExp.prototype.flags` getter implementation + // https://tc39.es/ecma262/#sec-get-regexp.prototype.flags + regexpFlags = function () { + var that = anObject(this); + var result = ''; + if (that.hasIndices) result += 'd'; + if (that.global) result += 'g'; + if (that.ignoreCase) result += 'i'; + if (that.multiline) result += 'm'; + if (that.dotAll) result += 's'; + if (that.unicode) result += 'u'; + if (that.unicodeSets) result += 'v'; + if (that.sticky) result += 'y'; + return result; + }; + return regexpFlags; +} + +var regexpGetFlags; +var hasRequiredRegexpGetFlags; + +function requireRegexpGetFlags () { + if (hasRequiredRegexpGetFlags) return regexpGetFlags; + hasRequiredRegexpGetFlags = 1; + var call = requireFunctionCall(); + var hasOwn = requireHasOwnProperty(); + var isPrototypeOf = requireObjectIsPrototypeOf(); + var regExpFlags = requireRegexpFlags(); + + var RegExpPrototype = RegExp.prototype; + + regexpGetFlags = function (R) { + var flags = R.flags; + return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R) + ? call(regExpFlags, R) : flags; + }; + return regexpGetFlags; +} + +var mapHelpers; +var hasRequiredMapHelpers; + +function requireMapHelpers () { + if (hasRequiredMapHelpers) return mapHelpers; + hasRequiredMapHelpers = 1; + var uncurryThis = requireFunctionUncurryThis(); + + // eslint-disable-next-line es/no-map -- safe + var MapPrototype = Map.prototype; + + mapHelpers = { + // eslint-disable-next-line es/no-map -- safe + Map: Map, + set: uncurryThis(MapPrototype.set), + get: uncurryThis(MapPrototype.get), + has: uncurryThis(MapPrototype.has), + remove: uncurryThis(MapPrototype['delete']), + proto: MapPrototype + }; + return mapHelpers; +} + +var setHelpers; +var hasRequiredSetHelpers; + +function requireSetHelpers () { + if (hasRequiredSetHelpers) return setHelpers; + hasRequiredSetHelpers = 1; + var uncurryThis = requireFunctionUncurryThis(); + + // eslint-disable-next-line es/no-set -- safe + var SetPrototype = Set.prototype; + + setHelpers = { + // eslint-disable-next-line es/no-set -- safe + Set: Set, + add: uncurryThis(SetPrototype.add), + has: uncurryThis(SetPrototype.has), + remove: uncurryThis(SetPrototype['delete']), + proto: SetPrototype + }; + return setHelpers; +} + +var iterateSimple; +var hasRequiredIterateSimple; + +function requireIterateSimple () { + if (hasRequiredIterateSimple) return iterateSimple; + hasRequiredIterateSimple = 1; + var call = requireFunctionCall(); + + iterateSimple = function (record, fn, ITERATOR_INSTEAD_OF_RECORD) { + var iterator = ITERATOR_INSTEAD_OF_RECORD ? record : record.iterator; + var next = record.next; + var step, result; + while (!(step = call(next, iterator)).done) { + result = fn(step.value); + if (result !== undefined) return result; + } + }; + return iterateSimple; +} + +var setIterate; +var hasRequiredSetIterate; + +function requireSetIterate () { + if (hasRequiredSetIterate) return setIterate; + hasRequiredSetIterate = 1; + var uncurryThis = requireFunctionUncurryThis(); + var iterateSimple = requireIterateSimple(); + var SetHelpers = requireSetHelpers(); + + var Set = SetHelpers.Set; + var SetPrototype = SetHelpers.proto; + var forEach = uncurryThis(SetPrototype.forEach); + var keys = uncurryThis(SetPrototype.keys); + var next = keys(new Set()).next; + + setIterate = function (set, fn, interruptible) { + return interruptible ? iterateSimple({ iterator: keys(set), next: next }, fn) : forEach(set, fn); + }; + return setIterate; +} + +var structuredCloneProperTransfer; +var hasRequiredStructuredCloneProperTransfer; + +function requireStructuredCloneProperTransfer () { + if (hasRequiredStructuredCloneProperTransfer) return structuredCloneProperTransfer; + hasRequiredStructuredCloneProperTransfer = 1; + var globalThis = requireGlobalThis(); + var fails = requireFails(); + var V8 = requireEnvironmentV8Version(); + var ENVIRONMENT = requireEnvironment(); + + var structuredClone = globalThis.structuredClone; + + structuredCloneProperTransfer = !!structuredClone && !fails(function () { + // prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation + // https://github.com/zloirock/core-js/issues/679 + if ((ENVIRONMENT === 'DENO' && V8 > 92) || (ENVIRONMENT === 'NODE' && V8 > 94) || (ENVIRONMENT === 'BROWSER' && V8 > 97)) return false; + var buffer = new ArrayBuffer(8); + var clone = structuredClone(buffer, { transfer: [buffer] }); + return buffer.byteLength !== 0 || clone.byteLength !== 8; + }); + return structuredCloneProperTransfer; +} + +var detachTransferable; +var hasRequiredDetachTransferable; + +function requireDetachTransferable () { + if (hasRequiredDetachTransferable) return detachTransferable; + hasRequiredDetachTransferable = 1; + var globalThis = requireGlobalThis(); + var getBuiltInNodeModule = requireGetBuiltInNodeModule(); + var PROPER_STRUCTURED_CLONE_TRANSFER = requireStructuredCloneProperTransfer(); + + var structuredClone = globalThis.structuredClone; + var $ArrayBuffer = globalThis.ArrayBuffer; + var $MessageChannel = globalThis.MessageChannel; + var detach = false; + var WorkerThreads, channel, buffer, $detach; + + if (PROPER_STRUCTURED_CLONE_TRANSFER) { + detach = function (transferable) { + structuredClone(transferable, { transfer: [transferable] }); + }; + } else if ($ArrayBuffer) try { + if (!$MessageChannel) { + WorkerThreads = getBuiltInNodeModule('worker_threads'); + if (WorkerThreads) $MessageChannel = WorkerThreads.MessageChannel; + } + + if ($MessageChannel) { + channel = new $MessageChannel(); + buffer = new $ArrayBuffer(2); + + $detach = function (transferable) { + channel.port1.postMessage(null, [transferable]); + }; + + if (buffer.byteLength === 2) { + $detach(buffer); + if (buffer.byteLength === 0) detach = $detach; + } + } + } catch (error) { /* empty */ } + + detachTransferable = detach; + return detachTransferable; +} + +var errorStackInstallable; +var hasRequiredErrorStackInstallable; + +function requireErrorStackInstallable () { + if (hasRequiredErrorStackInstallable) return errorStackInstallable; + hasRequiredErrorStackInstallable = 1; + var fails = requireFails(); + var createPropertyDescriptor = requireCreatePropertyDescriptor(); + + errorStackInstallable = !fails(function () { + var error = new Error('a'); + if (!('stack' in error)) return true; + // eslint-disable-next-line es/no-object-defineproperty -- safe + Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7)); + return error.stack !== 7; + }); + return errorStackInstallable; +} + +var hasRequiredWeb_structuredClone; + +function requireWeb_structuredClone () { + if (hasRequiredWeb_structuredClone) return web_structuredClone; + hasRequiredWeb_structuredClone = 1; + var IS_PURE = requireIsPure(); + var $ = require_export(); + var globalThis = requireGlobalThis(); + var getBuiltIn = requireGetBuiltIn(); + var uncurryThis = requireFunctionUncurryThis(); + var fails = requireFails(); + var uid = requireUid(); + var isCallable = requireIsCallable(); + var isConstructor = requireIsConstructor(); + var isNullOrUndefined = requireIsNullOrUndefined(); + var isObject = requireIsObject(); + var isSymbol = requireIsSymbol(); + var iterate = requireIterate(); + var anObject = requireAnObject(); + var classof = requireClassof(); + var hasOwn = requireHasOwnProperty(); + var createProperty = requireCreateProperty(); + var createNonEnumerableProperty = requireCreateNonEnumerableProperty(); + var lengthOfArrayLike = requireLengthOfArrayLike(); + var validateArgumentsLength = requireValidateArgumentsLength(); + var getRegExpFlags = requireRegexpGetFlags(); + var MapHelpers = requireMapHelpers(); + var SetHelpers = requireSetHelpers(); + var setIterate = requireSetIterate(); + var detachTransferable = requireDetachTransferable(); + var ERROR_STACK_INSTALLABLE = requireErrorStackInstallable(); + var PROPER_STRUCTURED_CLONE_TRANSFER = requireStructuredCloneProperTransfer(); + + var Object = globalThis.Object; + var Array = globalThis.Array; + var Date = globalThis.Date; + var Error = globalThis.Error; + var TypeError = globalThis.TypeError; + var PerformanceMark = globalThis.PerformanceMark; + var DOMException = getBuiltIn('DOMException'); + var Map = MapHelpers.Map; + var mapHas = MapHelpers.has; + var mapGet = MapHelpers.get; + var mapSet = MapHelpers.set; + var Set = SetHelpers.Set; + var setAdd = SetHelpers.add; + var setHas = SetHelpers.has; + var objectKeys = getBuiltIn('Object', 'keys'); + var push = uncurryThis([].push); + var thisBooleanValue = uncurryThis(true.valueOf); + var thisNumberValue = uncurryThis(1.0.valueOf); + var thisStringValue = uncurryThis(''.valueOf); + var thisTimeValue = uncurryThis(Date.prototype.getTime); + var PERFORMANCE_MARK = uid('structuredClone'); + var DATA_CLONE_ERROR = 'DataCloneError'; + var TRANSFERRING = 'Transferring'; + + var checkBasicSemantic = function (structuredCloneImplementation) { + return !fails(function () { + var set1 = new globalThis.Set([7]); + var set2 = structuredCloneImplementation(set1); + var number = structuredCloneImplementation(Object(7)); + return set2 === set1 || !set2.has(7) || !isObject(number) || +number !== 7; + }) && structuredCloneImplementation; + }; + + var checkErrorsCloning = function (structuredCloneImplementation, $Error) { + return !fails(function () { + var error = new $Error(); + var test = structuredCloneImplementation({ a: error, b: error }); + return !(test && test.a === test.b && test.a instanceof $Error && test.a.stack === error.stack); + }); + }; + + // https://github.com/whatwg/html/pull/5749 + var checkNewErrorsCloningSemantic = function (structuredCloneImplementation) { + return !fails(function () { + var test = structuredCloneImplementation(new globalThis.AggregateError([1], PERFORMANCE_MARK, { cause: 3 })); + return test.name !== 'AggregateError' || test.errors[0] !== 1 || test.message !== PERFORMANCE_MARK || test.cause !== 3; + }); + }; + + // FF94+, Safari 15.4+, Chrome 98+, NodeJS 17.0+, Deno 1.13+ + // FF<103 and Safari implementations can't clone errors + // https://bugzilla.mozilla.org/show_bug.cgi?id=1556604 + // FF103 can clone errors, but `.stack` of clone is an empty string + // https://bugzilla.mozilla.org/show_bug.cgi?id=1778762 + // FF104+ fixed it on usual errors, but not on DOMExceptions + // https://bugzilla.mozilla.org/show_bug.cgi?id=1777321 + // Chrome <102 returns `null` if cloned object contains multiple references to one error + // https://bugs.chromium.org/p/v8/issues/detail?id=12542 + // NodeJS implementation can't clone DOMExceptions + // https://github.com/nodejs/node/issues/41038 + // only FF103+ supports new (html/5749) error cloning semantic + var nativeStructuredClone = globalThis.structuredClone; + + var FORCED_REPLACEMENT = IS_PURE + || !checkErrorsCloning(nativeStructuredClone, Error) + || !checkErrorsCloning(nativeStructuredClone, DOMException) + || !checkNewErrorsCloningSemantic(nativeStructuredClone); + + // Chrome 82+, Safari 14.1+, Deno 1.11+ + // Chrome 78-81 implementation swaps `.name` and `.message` of cloned `DOMException` + // Chrome returns `null` if cloned object contains multiple references to one error + // Safari 14.1 implementation doesn't clone some `RegExp` flags, so requires a workaround + // Safari implementation can't clone errors + // Deno 1.2-1.10 implementations too naive + // NodeJS 16.0+ does not have `PerformanceMark` constructor + // NodeJS <17.2 structured cloning implementation from `performance.mark` is too naive + // and can't clone, for example, `RegExp` or some boxed primitives + // https://github.com/nodejs/node/issues/40840 + // no one of those implementations supports new (html/5749) error cloning semantic + var structuredCloneFromMark = !nativeStructuredClone && checkBasicSemantic(function (value) { + return new PerformanceMark(PERFORMANCE_MARK, { detail: value }).detail; + }); + + var nativeRestrictedStructuredClone = checkBasicSemantic(nativeStructuredClone) || structuredCloneFromMark; + + var throwUncloneable = function (type) { + throw new DOMException('Uncloneable type: ' + type, DATA_CLONE_ERROR); + }; + + var throwUnpolyfillable = function (type, action) { + throw new DOMException((action || 'Cloning') + ' of ' + type + ' cannot be properly polyfilled in this engine', DATA_CLONE_ERROR); + }; + + var tryNativeRestrictedStructuredClone = function (value, type) { + if (!nativeRestrictedStructuredClone) throwUnpolyfillable(type); + return nativeRestrictedStructuredClone(value); + }; + + var createDataTransfer = function () { + var dataTransfer; + try { + dataTransfer = new globalThis.DataTransfer(); + } catch (error) { + try { + dataTransfer = new globalThis.ClipboardEvent('').clipboardData; + } catch (error2) { /* empty */ } + } + return dataTransfer && dataTransfer.items && dataTransfer.files ? dataTransfer : null; + }; + + var cloneBuffer = function (value, map, $type) { + if (mapHas(map, value)) return mapGet(map, value); + + var type = $type || classof(value); + var clone, length, options, source, target, i; + + if (type === 'SharedArrayBuffer') { + if (nativeRestrictedStructuredClone) clone = nativeRestrictedStructuredClone(value); + // SharedArrayBuffer should use shared memory, we can't polyfill it, so return the original + else clone = value; + } else { + var DataView = globalThis.DataView; + + // `ArrayBuffer#slice` is not available in IE10 + // `ArrayBuffer#slice` and `DataView` are not available in old FF + if (!DataView && !isCallable(value.slice)) throwUnpolyfillable('ArrayBuffer'); + // detached buffers throws in `DataView` and `.slice` + try { + if (isCallable(value.slice) && !value.resizable) { + clone = value.slice(0); + } else { + length = value.byteLength; + options = 'maxByteLength' in value ? { maxByteLength: value.maxByteLength } : undefined; + // eslint-disable-next-line es/no-resizable-and-growable-arraybuffers -- safe + clone = new ArrayBuffer(length, options); + source = new DataView(value); + target = new DataView(clone); + for (i = 0; i < length; i++) { + target.setUint8(i, source.getUint8(i)); + } + } + } catch (error) { + throw new DOMException('ArrayBuffer is detached', DATA_CLONE_ERROR); + } + } + + mapSet(map, value, clone); + + return clone; + }; + + var cloneView = function (value, type, offset, length, map) { + var C = globalThis[type]; + // in some old engines like Safari 9, typeof C is 'object' + // on Uint8ClampedArray or some other constructors + if (!isObject(C)) throwUnpolyfillable(type); + return new C(cloneBuffer(value.buffer, map), offset, length); + }; + + var structuredCloneInternal = function (value, map) { + if (isSymbol(value)) throwUncloneable('Symbol'); + if (!isObject(value)) return value; + // effectively preserves circular references + if (map) { + if (mapHas(map, value)) return mapGet(map, value); + } else map = new Map(); + + var type = classof(value); + var C, name, cloned, dataTransfer, i, length, keys, key; + + switch (type) { + case 'Array': + cloned = Array(lengthOfArrayLike(value)); + break; + case 'Object': + cloned = {}; + break; + case 'Map': + cloned = new Map(); + break; + case 'Set': + cloned = new Set(); + break; + case 'RegExp': + // in this block because of a Safari 14.1 bug + // old FF does not clone regexes passed to the constructor, so get the source and flags directly + cloned = new RegExp(value.source, getRegExpFlags(value)); + break; + case 'Error': + name = value.name; + switch (name) { + case 'AggregateError': + cloned = new (getBuiltIn(name))([]); + break; + case 'EvalError': + case 'RangeError': + case 'ReferenceError': + case 'SuppressedError': + case 'SyntaxError': + case 'TypeError': + case 'URIError': + cloned = new (getBuiltIn(name))(); + break; + case 'CompileError': + case 'LinkError': + case 'RuntimeError': + cloned = new (getBuiltIn('WebAssembly', name))(); + break; + default: + cloned = new Error(); + } + break; + case 'DOMException': + cloned = new DOMException(value.message, value.name); + break; + case 'ArrayBuffer': + case 'SharedArrayBuffer': + cloned = cloneBuffer(value, map, type); + break; + case 'DataView': + case 'Int8Array': + case 'Uint8Array': + case 'Uint8ClampedArray': + case 'Int16Array': + case 'Uint16Array': + case 'Int32Array': + case 'Uint32Array': + case 'Float16Array': + case 'Float32Array': + case 'Float64Array': + case 'BigInt64Array': + case 'BigUint64Array': + length = type === 'DataView' ? value.byteLength : value.length; + cloned = cloneView(value, type, value.byteOffset, length, map); + break; + case 'DOMQuad': + try { + cloned = new DOMQuad( + structuredCloneInternal(value.p1, map), + structuredCloneInternal(value.p2, map), + structuredCloneInternal(value.p3, map), + structuredCloneInternal(value.p4, map) + ); + } catch (error) { + cloned = tryNativeRestrictedStructuredClone(value, type); + } + break; + case 'File': + if (nativeRestrictedStructuredClone) try { + cloned = nativeRestrictedStructuredClone(value); + // NodeJS 20.0.0 bug, https://github.com/nodejs/node/issues/47612 + if (classof(cloned) !== type) cloned = undefined; + } catch (error) { /* empty */ } + if (!cloned) try { + cloned = new File([value], value.name, value); + } catch (error) { /* empty */ } + if (!cloned) throwUnpolyfillable(type); + break; + case 'FileList': + dataTransfer = createDataTransfer(); + if (dataTransfer) { + for (i = 0, length = lengthOfArrayLike(value); i < length; i++) { + dataTransfer.items.add(structuredCloneInternal(value[i], map)); + } + cloned = dataTransfer.files; + } else cloned = tryNativeRestrictedStructuredClone(value, type); + break; + case 'ImageData': + // Safari 9 ImageData is a constructor, but typeof ImageData is 'object' + try { + cloned = new ImageData( + structuredCloneInternal(value.data, map), + value.width, + value.height, + { colorSpace: value.colorSpace } + ); + } catch (error) { + cloned = tryNativeRestrictedStructuredClone(value, type); + } break; + default: + if (nativeRestrictedStructuredClone) { + cloned = nativeRestrictedStructuredClone(value); + } else switch (type) { + case 'BigInt': + // can be a 3rd party polyfill + cloned = Object(value.valueOf()); + break; + case 'Boolean': + cloned = Object(thisBooleanValue(value)); + break; + case 'Number': + cloned = Object(thisNumberValue(value)); + break; + case 'String': + cloned = Object(thisStringValue(value)); + break; + case 'Date': + cloned = new Date(thisTimeValue(value)); + break; + case 'Blob': + try { + cloned = value.slice(0, value.size, value.type); + } catch (error) { + throwUnpolyfillable(type); + } break; + case 'DOMPoint': + case 'DOMPointReadOnly': + C = globalThis[type]; + try { + cloned = C.fromPoint + ? C.fromPoint(value) + : new C(value.x, value.y, value.z, value.w); + } catch (error) { + throwUnpolyfillable(type); + } break; + case 'DOMRect': + case 'DOMRectReadOnly': + C = globalThis[type]; + try { + cloned = C.fromRect + ? C.fromRect(value) + : new C(value.x, value.y, value.width, value.height); + } catch (error) { + throwUnpolyfillable(type); + } break; + case 'DOMMatrix': + case 'DOMMatrixReadOnly': + C = globalThis[type]; + try { + cloned = C.fromMatrix + ? C.fromMatrix(value) + : new C(value); + } catch (error) { + throwUnpolyfillable(type); + } break; + case 'AudioData': + case 'VideoFrame': + if (!isCallable(value.clone)) throwUnpolyfillable(type); + try { + cloned = value.clone(); + } catch (error) { + throwUncloneable(type); + } break; + case 'CropTarget': + case 'CryptoKey': + case 'FileSystemDirectoryHandle': + case 'FileSystemFileHandle': + case 'FileSystemHandle': + case 'GPUCompilationInfo': + case 'GPUCompilationMessage': + case 'ImageBitmap': + case 'RTCCertificate': + case 'WebAssembly.Module': + throwUnpolyfillable(type); + // break omitted + default: + throwUncloneable(type); + } + } + + mapSet(map, value, cloned); + + switch (type) { + case 'Array': + case 'Object': + keys = objectKeys(value); + for (i = 0, length = lengthOfArrayLike(keys); i < length; i++) { + key = keys[i]; + createProperty(cloned, key, structuredCloneInternal(value[key], map)); + } break; + case 'Map': + value.forEach(function (v, k) { + mapSet(cloned, structuredCloneInternal(k, map), structuredCloneInternal(v, map)); + }); + break; + case 'Set': + value.forEach(function (v) { + setAdd(cloned, structuredCloneInternal(v, map)); + }); + break; + case 'Error': + createNonEnumerableProperty(cloned, 'message', structuredCloneInternal(value.message, map)); + if (hasOwn(value, 'cause')) { + createNonEnumerableProperty(cloned, 'cause', structuredCloneInternal(value.cause, map)); + } + if (name === 'AggregateError') { + cloned.errors = structuredCloneInternal(value.errors, map); + } else if (name === 'SuppressedError') { + cloned.error = structuredCloneInternal(value.error, map); + cloned.suppressed = structuredCloneInternal(value.suppressed, map); + } // break omitted + case 'DOMException': + if (ERROR_STACK_INSTALLABLE) { + createNonEnumerableProperty(cloned, 'stack', structuredCloneInternal(value.stack, map)); + } + } + + return cloned; + }; + + var tryToTransfer = function (rawTransfer, map) { + if (!isObject(rawTransfer)) throw new TypeError('Transfer option cannot be converted to a sequence'); + + var transfer = []; + + iterate(rawTransfer, function (value) { + push(transfer, anObject(value)); + }); + + var i = 0; + var length = lengthOfArrayLike(transfer); + var buffers = new Set(); + var value, type, C, transferred, canvas, context; + + while (i < length) { + value = transfer[i++]; + + type = classof(value); + + if (type === 'ArrayBuffer' ? setHas(buffers, value) : mapHas(map, value)) { + throw new DOMException('Duplicate transferable', DATA_CLONE_ERROR); + } + + if (type === 'ArrayBuffer') { + setAdd(buffers, value); + continue; + } + + if (PROPER_STRUCTURED_CLONE_TRANSFER) { + transferred = nativeStructuredClone(value, { transfer: [value] }); + } else switch (type) { + case 'ImageBitmap': + C = globalThis.OffscreenCanvas; + if (!isConstructor(C)) throwUnpolyfillable(type, TRANSFERRING); + try { + canvas = new C(value.width, value.height); + context = canvas.getContext('bitmaprenderer'); + context.transferFromImageBitmap(value); + transferred = canvas.transferToImageBitmap(); + } catch (error) { /* empty */ } + break; + case 'AudioData': + case 'VideoFrame': + if (!isCallable(value.clone) || !isCallable(value.close)) throwUnpolyfillable(type, TRANSFERRING); + try { + transferred = value.clone(); + value.close(); + } catch (error) { /* empty */ } + break; + case 'MediaSourceHandle': + case 'MessagePort': + case 'MIDIAccess': + case 'OffscreenCanvas': + case 'ReadableStream': + case 'RTCDataChannel': + case 'TransformStream': + case 'WebTransportReceiveStream': + case 'WebTransportSendStream': + case 'WritableStream': + throwUnpolyfillable(type, TRANSFERRING); + } + + if (transferred === undefined) throw new DOMException('This object cannot be transferred: ' + type, DATA_CLONE_ERROR); + + mapSet(map, value, transferred); + } + + return buffers; + }; + + var detachBuffers = function (buffers) { + setIterate(buffers, function (buffer) { + if (PROPER_STRUCTURED_CLONE_TRANSFER) { + nativeRestrictedStructuredClone(buffer, { transfer: [buffer] }); + } else if (isCallable(buffer.transfer)) { + buffer.transfer(); + } else if (detachTransferable) { + detachTransferable(buffer); + } else { + throwUnpolyfillable('ArrayBuffer', TRANSFERRING); + } + }); + }; + + // `structuredClone` method + // https://html.spec.whatwg.org/multipage/structured-data.html#dom-structuredclone + $({ global: true, enumerable: true, sham: !PROPER_STRUCTURED_CLONE_TRANSFER, forced: FORCED_REPLACEMENT }, { + structuredClone: function structuredClone(value /* , { transfer } */) { + var options = validateArgumentsLength(arguments.length, 1) > 1 && !isNullOrUndefined(arguments[1]) ? anObject(arguments[1]) : undefined; + var transfer = options ? options.transfer : undefined; + var map, buffers; + + if (transfer !== undefined) { + map = new Map(); + buffers = tryToTransfer(transfer, map); + } + + var clone = structuredCloneInternal(value, map); + + // since of an issue with cloning views of transferred buffers, we a forced to detach them later + // https://github.com/zloirock/core-js/issues/1265 + if (buffers) detachBuffers(buffers); + + return clone; + } + }); + return web_structuredClone; +} + +var path; +var hasRequiredPath; + +function requirePath () { + if (hasRequiredPath) return path; + hasRequiredPath = 1; + var globalThis = requireGlobalThis(); + + path = globalThis; + return path; +} + +var structuredClone$2; +var hasRequiredStructuredClone$1; + +function requireStructuredClone$1 () { + if (hasRequiredStructuredClone$1) return structuredClone$2; + hasRequiredStructuredClone$1 = 1; + requireEs_error_toString(); + requireEs_array_iterator(); + requireEs_object_keys(); + requireEs_object_toString(); + requireEs_map(); + requireEs_set(); + requireWeb_domException_constructor(); + requireWeb_domException_stack(); + requireWeb_domException_toStringTag(); + requireWeb_structuredClone(); + var path = requirePath(); + + structuredClone$2 = path.structuredClone; + return structuredClone$2; +} + +var structuredClone$1; +var hasRequiredStructuredClone; + +function requireStructuredClone () { + if (hasRequiredStructuredClone) return structuredClone$1; + hasRequiredStructuredClone = 1; + var parent = requireStructuredClone$1(); + + structuredClone$1 = parent; + return structuredClone$1; +} + +requireStructuredClone(); -var $Object$4 = Object; +var leafletSrc$2 = {exports: {}}; -var isSymbol = useSymbolAsUid - ? function (it) { - return typeof it == 'symbol'; - } - : function (it) { - var $Symbol = getBuiltIn('Symbol'); - return ( - isCallable($Symbol) && - objectIsPrototypeOf($Symbol.prototype, $Object$4(it)) - ); - }; +/* @preserve + * Leaflet 1.9.4, a JS library for interactive maps. https://leafletjs.com + * (c) 2010-2023 Vladimir Agafonkin, (c) 2010-2011 CloudMade + */ +var leafletSrc$1 = leafletSrc$2.exports; + +var hasRequiredLeafletSrc; + +function requireLeafletSrc () { + if (hasRequiredLeafletSrc) return leafletSrc$2.exports; + hasRequiredLeafletSrc = 1; + (function (module, exports) { + (function (global, factory) { + factory(exports) ; + })(leafletSrc$1, (function (exports) { + var version = "1.9.4"; + + /* + * @namespace Util + * + * Various utility functions, used by Leaflet internally. + */ + + // @function extend(dest: Object, src?: Object): Object + // Merges the properties of the `src` object (or multiple objects) into `dest` object and returns the latter. Has an `L.extend` shortcut. + function extend(dest) { + var i, j, len, src; + + for (j = 1, len = arguments.length; j < len; j++) { + src = arguments[j]; + for (i in src) { + dest[i] = src[i]; + } + } + return dest; + } + + // @function create(proto: Object, properties?: Object): Object + // Compatibility polyfill for [Object.create](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/create) + var create$2 = Object.create || (function () { + function F() {} + return function (proto) { + F.prototype = proto; + return new F(); + }; + })(); + + // @function bind(fn: Function, …): Function + // Returns a new function bound to the arguments passed, like [Function.prototype.bind](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function/bind). + // Has a `L.bind()` shortcut. + function bind(fn, obj) { + var slice = Array.prototype.slice; + + if (fn.bind) { + return fn.bind.apply(fn, slice.call(arguments, 1)); + } + + var args = slice.call(arguments, 2); + + return function () { + return fn.apply(obj, args.length ? args.concat(slice.call(arguments)) : arguments); + }; + } + + // @property lastId: Number + // Last unique ID used by [`stamp()`](#util-stamp) + var lastId = 0; + + // @function stamp(obj: Object): Number + // Returns the unique ID of an object, assigning it one if it doesn't have it. + function stamp(obj) { + if (!('_leaflet_id' in obj)) { + obj['_leaflet_id'] = ++lastId; + } + return obj._leaflet_id; + } + + // @function throttle(fn: Function, time: Number, context: Object): Function + // Returns a function which executes function `fn` with the given scope `context` + // (so that the `this` keyword refers to `context` inside `fn`'s code). The function + // `fn` will be called no more than one time per given amount of `time`. The arguments + // received by the bound function will be any arguments passed when binding the + // function, followed by any arguments passed when invoking the bound function. + // Has an `L.throttle` shortcut. + function throttle(fn, time, context) { + var lock, args, wrapperFn, later; + + later = function () { + // reset lock and call if queued + lock = false; + if (args) { + wrapperFn.apply(context, args); + args = false; + } + }; + + wrapperFn = function () { + if (lock) { + // called too soon, queue to call later + args = arguments; + + } else { + // call and lock until later + fn.apply(context, arguments); + setTimeout(later, time); + lock = true; + } + }; + + return wrapperFn; + } + + // @function wrapNum(num: Number, range: Number[], includeMax?: Boolean): Number + // Returns the number `num` modulo `range` in such a way so it lies within + // `range[0]` and `range[1]`. The returned value will be always smaller than + // `range[1]` unless `includeMax` is set to `true`. + function wrapNum(x, range, includeMax) { + var max = range[1], + min = range[0], + d = max - min; + return x === max && includeMax ? x : ((x - min) % d + d) % d + min; + } + + // @function falseFn(): Function + // Returns a function which always returns `false`. + function falseFn() { return false; } + + // @function formatNum(num: Number, precision?: Number|false): Number + // Returns the number `num` rounded with specified `precision`. + // The default `precision` value is 6 decimal places. + // `false` can be passed to skip any processing (can be useful to avoid round-off errors). + function formatNum(num, precision) { + if (precision === false) { return num; } + var pow = Math.pow(10, precision === undefined ? 6 : precision); + return Math.round(num * pow) / pow; + } + + // @function trim(str: String): String + // Compatibility polyfill for [String.prototype.trim](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim) + function trim(str) { + return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, ''); + } + + // @function splitWords(str: String): String[] + // Trims and splits the string on whitespace and returns the array of parts. + function splitWords(str) { + return trim(str).split(/\s+/); + } + + // @function setOptions(obj: Object, options: Object): Object + // Merges the given properties to the `options` of the `obj` object, returning the resulting options. See `Class options`. Has an `L.setOptions` shortcut. + function setOptions(obj, options) { + if (!Object.prototype.hasOwnProperty.call(obj, 'options')) { + obj.options = obj.options ? create$2(obj.options) : {}; + } + for (var i in options) { + obj.options[i] = options[i]; + } + return obj.options; + } + + // @function getParamString(obj: Object, existingUrl?: String, uppercase?: Boolean): String + // Converts an object into a parameter URL string, e.g. `{a: "foo", b: "bar"}` + // translates to `'?a=foo&b=bar'`. If `existingUrl` is set, the parameters will + // be appended at the end. If `uppercase` is `true`, the parameter names will + // be uppercased (e.g. `'?A=foo&B=bar'`) + function getParamString(obj, existingUrl, uppercase) { + var params = []; + for (var i in obj) { + params.push(encodeURIComponent(uppercase ? i.toUpperCase() : i) + '=' + encodeURIComponent(obj[i])); + } + return ((!existingUrl || existingUrl.indexOf('?') === -1) ? '?' : '&') + params.join('&'); + } + + var templateRe = /\{ *([\w_ -]+) *\}/g; + + // @function template(str: String, data: Object): String + // Simple templating facility, accepts a template string of the form `'Hello {a}, {b}'` + // and a data object like `{a: 'foo', b: 'bar'}`, returns evaluated string + // `('Hello foo, bar')`. You can also specify functions instead of strings for + // data values — they will be evaluated passing `data` as an argument. + function template(str, data) { + return str.replace(templateRe, function (str, key) { + var value = data[key]; + + if (value === undefined) { + throw new Error('No value provided for variable ' + str); + + } else if (typeof value === 'function') { + value = value(data); + } + return value; + }); + } + + // @function isArray(obj): Boolean + // Compatibility polyfill for [Array.isArray](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray) + var isArray = Array.isArray || function (obj) { + return (Object.prototype.toString.call(obj) === '[object Array]'); + }; + + // @function indexOf(array: Array, el: Object): Number + // Compatibility polyfill for [Array.prototype.indexOf](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf) + function indexOf(array, el) { + for (var i = 0; i < array.length; i++) { + if (array[i] === el) { return i; } + } + return -1; + } + + // @property emptyImageUrl: String + // Data URI string containing a base64-encoded empty GIF image. + // Used as a hack to free memory from unused images on WebKit-powered + // mobile devices (by setting image `src` to this string). + var emptyImageUrl = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs='; + + // inspired by https://paulirish.com/2011/requestanimationframe-for-smart-animating/ + + function getPrefixed(name) { + return window['webkit' + name] || window['moz' + name] || window['ms' + name]; + } + + var lastTime = 0; + + // fallback for IE 7-8 + function timeoutDefer(fn) { + var time = +new Date(), + timeToCall = Math.max(0, 16 - (time - lastTime)); + + lastTime = time + timeToCall; + return window.setTimeout(fn, timeToCall); + } + + var requestFn = window.requestAnimationFrame || getPrefixed('RequestAnimationFrame') || timeoutDefer; + var cancelFn = window.cancelAnimationFrame || getPrefixed('CancelAnimationFrame') || + getPrefixed('CancelRequestAnimationFrame') || function (id) { window.clearTimeout(id); }; + + // @function requestAnimFrame(fn: Function, context?: Object, immediate?: Boolean): Number + // Schedules `fn` to be executed when the browser repaints. `fn` is bound to + // `context` if given. When `immediate` is set, `fn` is called immediately if + // the browser doesn't have native support for + // [`window.requestAnimationFrame`](https://developer.mozilla.org/docs/Web/API/window/requestAnimationFrame), + // otherwise it's delayed. Returns a request ID that can be used to cancel the request. + function requestAnimFrame(fn, context, immediate) { + if (immediate && requestFn === timeoutDefer) { + fn.call(context); + } else { + return requestFn.call(window, bind(fn, context)); + } + } + + // @function cancelAnimFrame(id: Number): undefined + // Cancels a previous `requestAnimFrame`. See also [window.cancelAnimationFrame](https://developer.mozilla.org/docs/Web/API/window/cancelAnimationFrame). + function cancelAnimFrame(id) { + if (id) { + cancelFn.call(window, id); + } + } + + var Util = { + __proto__: null, + extend: extend, + create: create$2, + bind: bind, + get lastId () { return lastId; }, + stamp: stamp, + throttle: throttle, + wrapNum: wrapNum, + falseFn: falseFn, + formatNum: formatNum, + trim: trim, + splitWords: splitWords, + setOptions: setOptions, + getParamString: getParamString, + template: template, + isArray: isArray, + indexOf: indexOf, + emptyImageUrl: emptyImageUrl, + requestFn: requestFn, + cancelFn: cancelFn, + requestAnimFrame: requestAnimFrame, + cancelAnimFrame: cancelAnimFrame + }; + + // @class Class + // @aka L.Class + + // @section + // @uninheritable + + // Thanks to John Resig and Dean Edwards for inspiration! + + function Class() {} + + Class.extend = function (props) { + + // @function extend(props: Object): Function + // [Extends the current class](#class-inheritance) given the properties to be included. + // Returns a Javascript function that is a class constructor (to be called with `new`). + var NewClass = function () { + + setOptions(this); + + // call the constructor + if (this.initialize) { + this.initialize.apply(this, arguments); + } + + // call all constructor hooks + this.callInitHooks(); + }; + + var parentProto = NewClass.__super__ = this.prototype; + + var proto = create$2(parentProto); + proto.constructor = NewClass; + + NewClass.prototype = proto; + + // inherit parent's statics + for (var i in this) { + if (Object.prototype.hasOwnProperty.call(this, i) && i !== 'prototype' && i !== '__super__') { + NewClass[i] = this[i]; + } + } + + // mix static properties into the class + if (props.statics) { + extend(NewClass, props.statics); + } + + // mix includes into the prototype + if (props.includes) { + checkDeprecatedMixinEvents(props.includes); + extend.apply(null, [proto].concat(props.includes)); + } + + // mix given properties into the prototype + extend(proto, props); + delete proto.statics; + delete proto.includes; + + // merge options + if (proto.options) { + proto.options = parentProto.options ? create$2(parentProto.options) : {}; + extend(proto.options, props.options); + } + + proto._initHooks = []; + + // add method for calling all hooks + proto.callInitHooks = function () { + + if (this._initHooksCalled) { return; } + + if (parentProto.callInitHooks) { + parentProto.callInitHooks.call(this); + } + + this._initHooksCalled = true; + + for (var i = 0, len = proto._initHooks.length; i < len; i++) { + proto._initHooks[i].call(this); + } + }; + + return NewClass; + }; + + + // @function include(properties: Object): this + // [Includes a mixin](#class-includes) into the current class. + Class.include = function (props) { + var parentOptions = this.prototype.options; + extend(this.prototype, props); + if (props.options) { + this.prototype.options = parentOptions; + this.mergeOptions(props.options); + } + return this; + }; + + // @function mergeOptions(options: Object): this + // [Merges `options`](#class-options) into the defaults of the class. + Class.mergeOptions = function (options) { + extend(this.prototype.options, options); + return this; + }; + + // @function addInitHook(fn: Function): this + // Adds a [constructor hook](#class-constructor-hooks) to the class. + Class.addInitHook = function (fn) { // (Function) || (String, args...) + var args = Array.prototype.slice.call(arguments, 1); + + var init = typeof fn === 'function' ? fn : function () { + this[fn].apply(this, args); + }; + + this.prototype._initHooks = this.prototype._initHooks || []; + this.prototype._initHooks.push(init); + return this; + }; + + function checkDeprecatedMixinEvents(includes) { + /* global L: true */ + if (typeof L === 'undefined' || !L || !L.Mixin) { return; } + + includes = isArray(includes) ? includes : [includes]; + + for (var i = 0; i < includes.length; i++) { + if (includes[i] === L.Mixin.Events) { + console.warn('Deprecated include of L.Mixin.Events: ' + + 'this property will be removed in future releases, ' + + 'please inherit from L.Evented instead.', new Error().stack); + } + } + } + + /* + * @class Evented + * @aka L.Evented + * @inherits Class + * + * A set of methods shared between event-powered classes (like `Map` and `Marker`). Generally, events allow you to execute some function when something happens with an object (e.g. the user clicks on the map, causing the map to fire `'click'` event). + * + * @example + * + * ```js + * map.on('click', function(e) { + * alert(e.latlng); + * } ); + * ``` + * + * Leaflet deals with event listeners by reference, so if you want to add a listener and then remove it, define it as a function: + * + * ```js + * function onClick(e) { ... } + * + * map.on('click', onClick); + * map.off('click', onClick); + * ``` + */ + + var Events = { + /* @method on(type: String, fn: Function, context?: Object): this + * Adds a listener function (`fn`) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. `'click dblclick'`). + * + * @alternative + * @method on(eventMap: Object): this + * Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}` + */ + on: function (types, fn, context) { + + // types can be a map of types/handlers + if (typeof types === 'object') { + for (var type in types) { + // we don't process space-separated events here for performance; + // it's a hot path since Layer uses the on(obj) syntax + this._on(type, types[type], fn); + } + + } else { + // types can be a string of space-separated words + types = splitWords(types); + + for (var i = 0, len = types.length; i < len; i++) { + this._on(types[i], fn, context); + } + } + + return this; + }, + + /* @method off(type: String, fn?: Function, context?: Object): this + * Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to `on`, you must pass the same context to `off` in order to remove the listener. + * + * @alternative + * @method off(eventMap: Object): this + * Removes a set of type/listener pairs. + * + * @alternative + * @method off: this + * Removes all listeners to all events on the object. This includes implicitly attached events. + */ + off: function (types, fn, context) { + + if (!arguments.length) { + // clear all listeners if called without arguments + delete this._events; + + } else if (typeof types === 'object') { + for (var type in types) { + this._off(type, types[type], fn); + } + + } else { + types = splitWords(types); + + var removeAll = arguments.length === 1; + for (var i = 0, len = types.length; i < len; i++) { + if (removeAll) { + this._off(types[i]); + } else { + this._off(types[i], fn, context); + } + } + } + + return this; + }, + + // attach listener (without syntactic sugar now) + _on: function (type, fn, context, _once) { + if (typeof fn !== 'function') { + console.warn('wrong listener type: ' + typeof fn); + return; + } + + // check if fn already there + if (this._listens(type, fn, context) !== false) { + return; + } + + if (context === this) { + // Less memory footprint. + context = undefined; + } + + var newListener = {fn: fn, ctx: context}; + if (_once) { + newListener.once = true; + } + + this._events = this._events || {}; + this._events[type] = this._events[type] || []; + this._events[type].push(newListener); + }, + + _off: function (type, fn, context) { + var listeners, + i, + len; + + if (!this._events) { + return; + } + + listeners = this._events[type]; + if (!listeners) { + return; + } + + if (arguments.length === 1) { // remove all + if (this._firingCount) { + // Set all removed listeners to noop + // so they are not called if remove happens in fire + for (i = 0, len = listeners.length; i < len; i++) { + listeners[i].fn = falseFn; + } + } + // clear all listeners for a type if function isn't specified + delete this._events[type]; + return; + } + + if (typeof fn !== 'function') { + console.warn('wrong listener type: ' + typeof fn); + return; + } + + // find fn and remove it + var index = this._listens(type, fn, context); + if (index !== false) { + var listener = listeners[index]; + if (this._firingCount) { + // set the removed listener to noop so that's not called if remove happens in fire + listener.fn = falseFn; + + /* copy array in case events are being fired */ + this._events[type] = listeners = listeners.slice(); + } + listeners.splice(index, 1); + } + }, + + // @method fire(type: String, data?: Object, propagate?: Boolean): this + // Fires an event of the specified type. You can optionally provide a data + // object — the first argument of the listener function will contain its + // properties. The event can optionally be propagated to event parents. + fire: function (type, data, propagate) { + if (!this.listens(type, propagate)) { return this; } + + var event = extend({}, data, { + type: type, + target: this, + sourceTarget: data && data.sourceTarget || this + }); + + if (this._events) { + var listeners = this._events[type]; + if (listeners) { + this._firingCount = (this._firingCount + 1) || 1; + for (var i = 0, len = listeners.length; i < len; i++) { + var l = listeners[i]; + // off overwrites l.fn, so we need to copy fn to a var + var fn = l.fn; + if (l.once) { + this.off(type, fn, l.ctx); + } + fn.call(l.ctx || this, event); + } + + this._firingCount--; + } + } + + if (propagate) { + // propagate the event to parents (set with addEventParent) + this._propagateEvent(event); + } + + return this; + }, + + // @method listens(type: String, propagate?: Boolean): Boolean + // @method listens(type: String, fn: Function, context?: Object, propagate?: Boolean): Boolean + // Returns `true` if a particular event type has any listeners attached to it. + // The verification can optionally be propagated, it will return `true` if parents have the listener attached to it. + listens: function (type, fn, context, propagate) { + if (typeof type !== 'string') { + console.warn('"string" type argument expected'); + } + + // we don't overwrite the input `fn` value, because we need to use it for propagation + var _fn = fn; + if (typeof fn !== 'function') { + propagate = !!fn; + _fn = undefined; + context = undefined; + } + + var listeners = this._events && this._events[type]; + if (listeners && listeners.length) { + if (this._listens(type, _fn, context) !== false) { + return true; + } + } + + if (propagate) { + // also check parents for listeners if event propagates + for (var id in this._eventParents) { + if (this._eventParents[id].listens(type, fn, context, propagate)) { return true; } + } + } + return false; + }, + + // returns the index (number) or false + _listens: function (type, fn, context) { + if (!this._events) { + return false; + } + + var listeners = this._events[type] || []; + if (!fn) { + return !!listeners.length; + } + + if (context === this) { + // Less memory footprint. + context = undefined; + } + + for (var i = 0, len = listeners.length; i < len; i++) { + if (listeners[i].fn === fn && listeners[i].ctx === context) { + return i; + } + } + return false; + + }, + + // @method once(…): this + // Behaves as [`on(…)`](#evented-on), except the listener will only get fired once and then removed. + once: function (types, fn, context) { + + // types can be a map of types/handlers + if (typeof types === 'object') { + for (var type in types) { + // we don't process space-separated events here for performance; + // it's a hot path since Layer uses the on(obj) syntax + this._on(type, types[type], fn, true); + } + + } else { + // types can be a string of space-separated words + types = splitWords(types); + + for (var i = 0, len = types.length; i < len; i++) { + this._on(types[i], fn, context, true); + } + } + + return this; + }, + + // @method addEventParent(obj: Evented): this + // Adds an event parent - an `Evented` that will receive propagated events + addEventParent: function (obj) { + this._eventParents = this._eventParents || {}; + this._eventParents[stamp(obj)] = obj; + return this; + }, + + // @method removeEventParent(obj: Evented): this + // Removes an event parent, so it will stop receiving propagated events + removeEventParent: function (obj) { + if (this._eventParents) { + delete this._eventParents[stamp(obj)]; + } + return this; + }, + + _propagateEvent: function (e) { + for (var id in this._eventParents) { + this._eventParents[id].fire(e.type, extend({ + layer: e.target, + propagatedFrom: e.target + }, e), true); + } + } + }; + + // aliases; we should ditch those eventually + + // @method addEventListener(…): this + // Alias to [`on(…)`](#evented-on) + Events.addEventListener = Events.on; + + // @method removeEventListener(…): this + // Alias to [`off(…)`](#evented-off) + + // @method clearAllEventListeners(…): this + // Alias to [`off()`](#evented-off) + Events.removeEventListener = Events.clearAllEventListeners = Events.off; + + // @method addOneTimeEventListener(…): this + // Alias to [`once(…)`](#evented-once) + Events.addOneTimeEventListener = Events.once; + + // @method fireEvent(…): this + // Alias to [`fire(…)`](#evented-fire) + Events.fireEvent = Events.fire; + + // @method hasEventListeners(…): Boolean + // Alias to [`listens(…)`](#evented-listens) + Events.hasEventListeners = Events.listens; + + var Evented = Class.extend(Events); + + /* + * @class Point + * @aka L.Point + * + * Represents a point with `x` and `y` coordinates in pixels. + * + * @example + * + * ```js + * var point = L.point(200, 300); + * ``` + * + * All Leaflet methods and options that accept `Point` objects also accept them in a simple Array form (unless noted otherwise), so these lines are equivalent: + * + * ```js + * map.panBy([200, 300]); + * map.panBy(L.point(200, 300)); + * ``` + * + * Note that `Point` does not inherit from Leaflet's `Class` object, + * which means new classes can't inherit from it, and new methods + * can't be added to it with the `include` function. + */ + + function Point(x, y, round) { + // @property x: Number; The `x` coordinate of the point + this.x = (round ? Math.round(x) : x); + // @property y: Number; The `y` coordinate of the point + this.y = (round ? Math.round(y) : y); + } + + var trunc = Math.trunc || function (v) { + return v > 0 ? Math.floor(v) : Math.ceil(v); + }; + + Point.prototype = { + + // @method clone(): Point + // Returns a copy of the current point. + clone: function () { + return new Point(this.x, this.y); + }, + + // @method add(otherPoint: Point): Point + // Returns the result of addition of the current and the given points. + add: function (point) { + // non-destructive, returns a new point + return this.clone()._add(toPoint(point)); + }, + + _add: function (point) { + // destructive, used directly for performance in situations where it's safe to modify existing point + this.x += point.x; + this.y += point.y; + return this; + }, + + // @method subtract(otherPoint: Point): Point + // Returns the result of subtraction of the given point from the current. + subtract: function (point) { + return this.clone()._subtract(toPoint(point)); + }, + + _subtract: function (point) { + this.x -= point.x; + this.y -= point.y; + return this; + }, + + // @method divideBy(num: Number): Point + // Returns the result of division of the current point by the given number. + divideBy: function (num) { + return this.clone()._divideBy(num); + }, + + _divideBy: function (num) { + this.x /= num; + this.y /= num; + return this; + }, + + // @method multiplyBy(num: Number): Point + // Returns the result of multiplication of the current point by the given number. + multiplyBy: function (num) { + return this.clone()._multiplyBy(num); + }, + + _multiplyBy: function (num) { + this.x *= num; + this.y *= num; + return this; + }, + + // @method scaleBy(scale: Point): Point + // Multiply each coordinate of the current point by each coordinate of + // `scale`. In linear algebra terms, multiply the point by the + // [scaling matrix](https://en.wikipedia.org/wiki/Scaling_%28geometry%29#Matrix_representation) + // defined by `scale`. + scaleBy: function (point) { + return new Point(this.x * point.x, this.y * point.y); + }, + + // @method unscaleBy(scale: Point): Point + // Inverse of `scaleBy`. Divide each coordinate of the current point by + // each coordinate of `scale`. + unscaleBy: function (point) { + return new Point(this.x / point.x, this.y / point.y); + }, + + // @method round(): Point + // Returns a copy of the current point with rounded coordinates. + round: function () { + return this.clone()._round(); + }, + + _round: function () { + this.x = Math.round(this.x); + this.y = Math.round(this.y); + return this; + }, + + // @method floor(): Point + // Returns a copy of the current point with floored coordinates (rounded down). + floor: function () { + return this.clone()._floor(); + }, + + _floor: function () { + this.x = Math.floor(this.x); + this.y = Math.floor(this.y); + return this; + }, + + // @method ceil(): Point + // Returns a copy of the current point with ceiled coordinates (rounded up). + ceil: function () { + return this.clone()._ceil(); + }, + + _ceil: function () { + this.x = Math.ceil(this.x); + this.y = Math.ceil(this.y); + return this; + }, + + // @method trunc(): Point + // Returns a copy of the current point with truncated coordinates (rounded towards zero). + trunc: function () { + return this.clone()._trunc(); + }, + + _trunc: function () { + this.x = trunc(this.x); + this.y = trunc(this.y); + return this; + }, + + // @method distanceTo(otherPoint: Point): Number + // Returns the cartesian distance between the current and the given points. + distanceTo: function (point) { + point = toPoint(point); + + var x = point.x - this.x, + y = point.y - this.y; + + return Math.sqrt(x * x + y * y); + }, + + // @method equals(otherPoint: Point): Boolean + // Returns `true` if the given point has the same coordinates. + equals: function (point) { + point = toPoint(point); + + return point.x === this.x && + point.y === this.y; + }, + + // @method contains(otherPoint: Point): Boolean + // Returns `true` if both coordinates of the given point are less than the corresponding current point coordinates (in absolute values). + contains: function (point) { + point = toPoint(point); + + return Math.abs(point.x) <= Math.abs(this.x) && + Math.abs(point.y) <= Math.abs(this.y); + }, + + // @method toString(): String + // Returns a string representation of the point for debugging purposes. + toString: function () { + return 'Point(' + + formatNum(this.x) + ', ' + + formatNum(this.y) + ')'; + } + }; + + // @factory L.point(x: Number, y: Number, round?: Boolean) + // Creates a Point object with the given `x` and `y` coordinates. If optional `round` is set to true, rounds the `x` and `y` values. + + // @alternative + // @factory L.point(coords: Number[]) + // Expects an array of the form `[x, y]` instead. + + // @alternative + // @factory L.point(coords: Object) + // Expects a plain object of the form `{x: Number, y: Number}` instead. + function toPoint(x, y, round) { + if (x instanceof Point) { + return x; + } + if (isArray(x)) { + return new Point(x[0], x[1]); + } + if (x === undefined || x === null) { + return x; + } + if (typeof x === 'object' && 'x' in x && 'y' in x) { + return new Point(x.x, x.y); + } + return new Point(x, y, round); + } + + /* + * @class Bounds + * @aka L.Bounds + * + * Represents a rectangular area in pixel coordinates. + * + * @example + * + * ```js + * var p1 = L.point(10, 10), + * p2 = L.point(40, 60), + * bounds = L.bounds(p1, p2); + * ``` + * + * All Leaflet methods that accept `Bounds` objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this: + * + * ```js + * otherBounds.intersects([[10, 10], [40, 60]]); + * ``` + * + * Note that `Bounds` does not inherit from Leaflet's `Class` object, + * which means new classes can't inherit from it, and new methods + * can't be added to it with the `include` function. + */ + + function Bounds(a, b) { + if (!a) { return; } + + var points = b ? [a, b] : a; + + for (var i = 0, len = points.length; i < len; i++) { + this.extend(points[i]); + } + } + + Bounds.prototype = { + // @method extend(point: Point): this + // Extends the bounds to contain the given point. + + // @alternative + // @method extend(otherBounds: Bounds): this + // Extend the bounds to contain the given bounds + extend: function (obj) { + var min2, max2; + if (!obj) { return this; } + + if (obj instanceof Point || typeof obj[0] === 'number' || 'x' in obj) { + min2 = max2 = toPoint(obj); + } else { + obj = toBounds(obj); + min2 = obj.min; + max2 = obj.max; + + if (!min2 || !max2) { return this; } + } + + // @property min: Point + // The top left corner of the rectangle. + // @property max: Point + // The bottom right corner of the rectangle. + if (!this.min && !this.max) { + this.min = min2.clone(); + this.max = max2.clone(); + } else { + this.min.x = Math.min(min2.x, this.min.x); + this.max.x = Math.max(max2.x, this.max.x); + this.min.y = Math.min(min2.y, this.min.y); + this.max.y = Math.max(max2.y, this.max.y); + } + return this; + }, + + // @method getCenter(round?: Boolean): Point + // Returns the center point of the bounds. + getCenter: function (round) { + return toPoint( + (this.min.x + this.max.x) / 2, + (this.min.y + this.max.y) / 2, round); + }, + + // @method getBottomLeft(): Point + // Returns the bottom-left point of the bounds. + getBottomLeft: function () { + return toPoint(this.min.x, this.max.y); + }, + + // @method getTopRight(): Point + // Returns the top-right point of the bounds. + getTopRight: function () { // -> Point + return toPoint(this.max.x, this.min.y); + }, + + // @method getTopLeft(): Point + // Returns the top-left point of the bounds (i.e. [`this.min`](#bounds-min)). + getTopLeft: function () { + return this.min; // left, top + }, + + // @method getBottomRight(): Point + // Returns the bottom-right point of the bounds (i.e. [`this.max`](#bounds-max)). + getBottomRight: function () { + return this.max; // right, bottom + }, + + // @method getSize(): Point + // Returns the size of the given bounds + getSize: function () { + return this.max.subtract(this.min); + }, + + // @method contains(otherBounds: Bounds): Boolean + // Returns `true` if the rectangle contains the given one. + // @alternative + // @method contains(point: Point): Boolean + // Returns `true` if the rectangle contains the given point. + contains: function (obj) { + var min, max; + + if (typeof obj[0] === 'number' || obj instanceof Point) { + obj = toPoint(obj); + } else { + obj = toBounds(obj); + } + + if (obj instanceof Bounds) { + min = obj.min; + max = obj.max; + } else { + min = max = obj; + } + + return (min.x >= this.min.x) && + (max.x <= this.max.x) && + (min.y >= this.min.y) && + (max.y <= this.max.y); + }, + + // @method intersects(otherBounds: Bounds): Boolean + // Returns `true` if the rectangle intersects the given bounds. Two bounds + // intersect if they have at least one point in common. + intersects: function (bounds) { // (Bounds) -> Boolean + bounds = toBounds(bounds); + + var min = this.min, + max = this.max, + min2 = bounds.min, + max2 = bounds.max, + xIntersects = (max2.x >= min.x) && (min2.x <= max.x), + yIntersects = (max2.y >= min.y) && (min2.y <= max.y); + + return xIntersects && yIntersects; + }, + + // @method overlaps(otherBounds: Bounds): Boolean + // Returns `true` if the rectangle overlaps the given bounds. Two bounds + // overlap if their intersection is an area. + overlaps: function (bounds) { // (Bounds) -> Boolean + bounds = toBounds(bounds); + + var min = this.min, + max = this.max, + min2 = bounds.min, + max2 = bounds.max, + xOverlaps = (max2.x > min.x) && (min2.x < max.x), + yOverlaps = (max2.y > min.y) && (min2.y < max.y); + + return xOverlaps && yOverlaps; + }, + + // @method isValid(): Boolean + // Returns `true` if the bounds are properly initialized. + isValid: function () { + return !!(this.min && this.max); + }, + + + // @method pad(bufferRatio: Number): Bounds + // Returns bounds created by extending or retracting the current bounds by a given ratio in each direction. + // For example, a ratio of 0.5 extends the bounds by 50% in each direction. + // Negative values will retract the bounds. + pad: function (bufferRatio) { + var min = this.min, + max = this.max, + heightBuffer = Math.abs(min.x - max.x) * bufferRatio, + widthBuffer = Math.abs(min.y - max.y) * bufferRatio; + + + return toBounds( + toPoint(min.x - heightBuffer, min.y - widthBuffer), + toPoint(max.x + heightBuffer, max.y + widthBuffer)); + }, + + + // @method equals(otherBounds: Bounds): Boolean + // Returns `true` if the rectangle is equivalent to the given bounds. + equals: function (bounds) { + if (!bounds) { return false; } + + bounds = toBounds(bounds); + + return this.min.equals(bounds.getTopLeft()) && + this.max.equals(bounds.getBottomRight()); + }, + }; + + + // @factory L.bounds(corner1: Point, corner2: Point) + // Creates a Bounds object from two corners coordinate pairs. + // @alternative + // @factory L.bounds(points: Point[]) + // Creates a Bounds object from the given array of points. + function toBounds(a, b) { + if (!a || a instanceof Bounds) { + return a; + } + return new Bounds(a, b); + } + + /* + * @class LatLngBounds + * @aka L.LatLngBounds + * + * Represents a rectangular geographical area on a map. + * + * @example + * + * ```js + * var corner1 = L.latLng(40.712, -74.227), + * corner2 = L.latLng(40.774, -74.125), + * bounds = L.latLngBounds(corner1, corner2); + * ``` + * + * All Leaflet methods that accept LatLngBounds objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this: + * + * ```js + * map.fitBounds([ + * [40.712, -74.227], + * [40.774, -74.125] + * ]); + * ``` + * + * Caution: if the area crosses the antimeridian (often confused with the International Date Line), you must specify corners _outside_ the [-180, 180] degrees longitude range. + * + * Note that `LatLngBounds` does not inherit from Leaflet's `Class` object, + * which means new classes can't inherit from it, and new methods + * can't be added to it with the `include` function. + */ + + function LatLngBounds(corner1, corner2) { // (LatLng, LatLng) or (LatLng[]) + if (!corner1) { return; } + + var latlngs = corner2 ? [corner1, corner2] : corner1; + + for (var i = 0, len = latlngs.length; i < len; i++) { + this.extend(latlngs[i]); + } + } + + LatLngBounds.prototype = { + + // @method extend(latlng: LatLng): this + // Extend the bounds to contain the given point + + // @alternative + // @method extend(otherBounds: LatLngBounds): this + // Extend the bounds to contain the given bounds + extend: function (obj) { + var sw = this._southWest, + ne = this._northEast, + sw2, ne2; + + if (obj instanceof LatLng) { + sw2 = obj; + ne2 = obj; + + } else if (obj instanceof LatLngBounds) { + sw2 = obj._southWest; + ne2 = obj._northEast; + + if (!sw2 || !ne2) { return this; } + + } else { + return obj ? this.extend(toLatLng(obj) || toLatLngBounds(obj)) : this; + } + + if (!sw && !ne) { + this._southWest = new LatLng(sw2.lat, sw2.lng); + this._northEast = new LatLng(ne2.lat, ne2.lng); + } else { + sw.lat = Math.min(sw2.lat, sw.lat); + sw.lng = Math.min(sw2.lng, sw.lng); + ne.lat = Math.max(ne2.lat, ne.lat); + ne.lng = Math.max(ne2.lng, ne.lng); + } + + return this; + }, + + // @method pad(bufferRatio: Number): LatLngBounds + // Returns bounds created by extending or retracting the current bounds by a given ratio in each direction. + // For example, a ratio of 0.5 extends the bounds by 50% in each direction. + // Negative values will retract the bounds. + pad: function (bufferRatio) { + var sw = this._southWest, + ne = this._northEast, + heightBuffer = Math.abs(sw.lat - ne.lat) * bufferRatio, + widthBuffer = Math.abs(sw.lng - ne.lng) * bufferRatio; + + return new LatLngBounds( + new LatLng(sw.lat - heightBuffer, sw.lng - widthBuffer), + new LatLng(ne.lat + heightBuffer, ne.lng + widthBuffer)); + }, + + // @method getCenter(): LatLng + // Returns the center point of the bounds. + getCenter: function () { + return new LatLng( + (this._southWest.lat + this._northEast.lat) / 2, + (this._southWest.lng + this._northEast.lng) / 2); + }, + + // @method getSouthWest(): LatLng + // Returns the south-west point of the bounds. + getSouthWest: function () { + return this._southWest; + }, + + // @method getNorthEast(): LatLng + // Returns the north-east point of the bounds. + getNorthEast: function () { + return this._northEast; + }, + + // @method getNorthWest(): LatLng + // Returns the north-west point of the bounds. + getNorthWest: function () { + return new LatLng(this.getNorth(), this.getWest()); + }, + + // @method getSouthEast(): LatLng + // Returns the south-east point of the bounds. + getSouthEast: function () { + return new LatLng(this.getSouth(), this.getEast()); + }, + + // @method getWest(): Number + // Returns the west longitude of the bounds + getWest: function () { + return this._southWest.lng; + }, + + // @method getSouth(): Number + // Returns the south latitude of the bounds + getSouth: function () { + return this._southWest.lat; + }, + + // @method getEast(): Number + // Returns the east longitude of the bounds + getEast: function () { + return this._northEast.lng; + }, + + // @method getNorth(): Number + // Returns the north latitude of the bounds + getNorth: function () { + return this._northEast.lat; + }, + + // @method contains(otherBounds: LatLngBounds): Boolean + // Returns `true` if the rectangle contains the given one. + + // @alternative + // @method contains (latlng: LatLng): Boolean + // Returns `true` if the rectangle contains the given point. + contains: function (obj) { // (LatLngBounds) or (LatLng) -> Boolean + if (typeof obj[0] === 'number' || obj instanceof LatLng || 'lat' in obj) { + obj = toLatLng(obj); + } else { + obj = toLatLngBounds(obj); + } + + var sw = this._southWest, + ne = this._northEast, + sw2, ne2; + + if (obj instanceof LatLngBounds) { + sw2 = obj.getSouthWest(); + ne2 = obj.getNorthEast(); + } else { + sw2 = ne2 = obj; + } + + return (sw2.lat >= sw.lat) && (ne2.lat <= ne.lat) && + (sw2.lng >= sw.lng) && (ne2.lng <= ne.lng); + }, + + // @method intersects(otherBounds: LatLngBounds): Boolean + // Returns `true` if the rectangle intersects the given bounds. Two bounds intersect if they have at least one point in common. + intersects: function (bounds) { + bounds = toLatLngBounds(bounds); + + var sw = this._southWest, + ne = this._northEast, + sw2 = bounds.getSouthWest(), + ne2 = bounds.getNorthEast(), + + latIntersects = (ne2.lat >= sw.lat) && (sw2.lat <= ne.lat), + lngIntersects = (ne2.lng >= sw.lng) && (sw2.lng <= ne.lng); + + return latIntersects && lngIntersects; + }, + + // @method overlaps(otherBounds: LatLngBounds): Boolean + // Returns `true` if the rectangle overlaps the given bounds. Two bounds overlap if their intersection is an area. + overlaps: function (bounds) { + bounds = toLatLngBounds(bounds); + + var sw = this._southWest, + ne = this._northEast, + sw2 = bounds.getSouthWest(), + ne2 = bounds.getNorthEast(), + + latOverlaps = (ne2.lat > sw.lat) && (sw2.lat < ne.lat), + lngOverlaps = (ne2.lng > sw.lng) && (sw2.lng < ne.lng); + + return latOverlaps && lngOverlaps; + }, + + // @method toBBoxString(): String + // Returns a string with bounding box coordinates in a 'southwest_lng,southwest_lat,northeast_lng,northeast_lat' format. Useful for sending requests to web services that return geo data. + toBBoxString: function () { + return [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(','); + }, + + // @method equals(otherBounds: LatLngBounds, maxMargin?: Number): Boolean + // Returns `true` if the rectangle is equivalent (within a small margin of error) to the given bounds. The margin of error can be overridden by setting `maxMargin` to a small number. + equals: function (bounds, maxMargin) { + if (!bounds) { return false; } + + bounds = toLatLngBounds(bounds); + + return this._southWest.equals(bounds.getSouthWest(), maxMargin) && + this._northEast.equals(bounds.getNorthEast(), maxMargin); + }, + + // @method isValid(): Boolean + // Returns `true` if the bounds are properly initialized. + isValid: function () { + return !!(this._southWest && this._northEast); + } + }; + + // TODO International date line? + + // @factory L.latLngBounds(corner1: LatLng, corner2: LatLng) + // Creates a `LatLngBounds` object by defining two diagonally opposite corners of the rectangle. + + // @alternative + // @factory L.latLngBounds(latlngs: LatLng[]) + // Creates a `LatLngBounds` object defined by the geographical points it contains. Very useful for zooming the map to fit a particular set of locations with [`fitBounds`](#map-fitbounds). + function toLatLngBounds(a, b) { + if (a instanceof LatLngBounds) { + return a; + } + return new LatLngBounds(a, b); + } + + /* @class LatLng + * @aka L.LatLng + * + * Represents a geographical point with a certain latitude and longitude. + * + * @example + * + * ``` + * var latlng = L.latLng(50.5, 30.5); + * ``` + * + * All Leaflet methods that accept LatLng objects also accept them in a simple Array form and simple object form (unless noted otherwise), so these lines are equivalent: + * + * ``` + * map.panTo([50, 30]); + * map.panTo({lon: 30, lat: 50}); + * map.panTo({lat: 50, lng: 30}); + * map.panTo(L.latLng(50, 30)); + * ``` + * + * Note that `LatLng` does not inherit from Leaflet's `Class` object, + * which means new classes can't inherit from it, and new methods + * can't be added to it with the `include` function. + */ + + function LatLng(lat, lng, alt) { + if (isNaN(lat) || isNaN(lng)) { + throw new Error('Invalid LatLng object: (' + lat + ', ' + lng + ')'); + } + + // @property lat: Number + // Latitude in degrees + this.lat = +lat; + + // @property lng: Number + // Longitude in degrees + this.lng = +lng; + + // @property alt: Number + // Altitude in meters (optional) + if (alt !== undefined) { + this.alt = +alt; + } + } + + LatLng.prototype = { + // @method equals(otherLatLng: LatLng, maxMargin?: Number): Boolean + // Returns `true` if the given `LatLng` point is at the same position (within a small margin of error). The margin of error can be overridden by setting `maxMargin` to a small number. + equals: function (obj, maxMargin) { + if (!obj) { return false; } + + obj = toLatLng(obj); + + var margin = Math.max( + Math.abs(this.lat - obj.lat), + Math.abs(this.lng - obj.lng)); + + return margin <= (maxMargin === undefined ? 1.0E-9 : maxMargin); + }, + + // @method toString(): String + // Returns a string representation of the point (for debugging purposes). + toString: function (precision) { + return 'LatLng(' + + formatNum(this.lat, precision) + ', ' + + formatNum(this.lng, precision) + ')'; + }, + + // @method distanceTo(otherLatLng: LatLng): Number + // Returns the distance (in meters) to the given `LatLng` calculated using the [Spherical Law of Cosines](https://en.wikipedia.org/wiki/Spherical_law_of_cosines). + distanceTo: function (other) { + return Earth.distance(this, toLatLng(other)); + }, + + // @method wrap(): LatLng + // Returns a new `LatLng` object with the longitude wrapped so it's always between -180 and +180 degrees. + wrap: function () { + return Earth.wrapLatLng(this); + }, + + // @method toBounds(sizeInMeters: Number): LatLngBounds + // Returns a new `LatLngBounds` object in which each boundary is `sizeInMeters/2` meters apart from the `LatLng`. + toBounds: function (sizeInMeters) { + var latAccuracy = 180 * sizeInMeters / 40075017, + lngAccuracy = latAccuracy / Math.cos((Math.PI / 180) * this.lat); + + return toLatLngBounds( + [this.lat - latAccuracy, this.lng - lngAccuracy], + [this.lat + latAccuracy, this.lng + lngAccuracy]); + }, + + clone: function () { + return new LatLng(this.lat, this.lng, this.alt); + } + }; + + + + // @factory L.latLng(latitude: Number, longitude: Number, altitude?: Number): LatLng + // Creates an object representing a geographical point with the given latitude and longitude (and optionally altitude). + + // @alternative + // @factory L.latLng(coords: Array): LatLng + // Expects an array of the form `[Number, Number]` or `[Number, Number, Number]` instead. + + // @alternative + // @factory L.latLng(coords: Object): LatLng + // Expects an plain object of the form `{lat: Number, lng: Number}` or `{lat: Number, lng: Number, alt: Number}` instead. + + function toLatLng(a, b, c) { + if (a instanceof LatLng) { + return a; + } + if (isArray(a) && typeof a[0] !== 'object') { + if (a.length === 3) { + return new LatLng(a[0], a[1], a[2]); + } + if (a.length === 2) { + return new LatLng(a[0], a[1]); + } + return null; + } + if (a === undefined || a === null) { + return a; + } + if (typeof a === 'object' && 'lat' in a) { + return new LatLng(a.lat, 'lng' in a ? a.lng : a.lon, a.alt); + } + if (b === undefined) { + return null; + } + return new LatLng(a, b, c); + } + + /* + * @namespace CRS + * @crs L.CRS.Base + * Object that defines coordinate reference systems for projecting + * geographical points into pixel (screen) coordinates and back (and to + * coordinates in other units for [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services). See + * [spatial reference system](https://en.wikipedia.org/wiki/Spatial_reference_system). + * + * Leaflet defines the most usual CRSs by default. If you want to use a + * CRS not defined by default, take a look at the + * [Proj4Leaflet](https://github.com/kartena/Proj4Leaflet) plugin. + * + * Note that the CRS instances do not inherit from Leaflet's `Class` object, + * and can't be instantiated. Also, new classes can't inherit from them, + * and methods can't be added to them with the `include` function. + */ + + var CRS = { + // @method latLngToPoint(latlng: LatLng, zoom: Number): Point + // Projects geographical coordinates into pixel coordinates for a given zoom. + latLngToPoint: function (latlng, zoom) { + var projectedPoint = this.projection.project(latlng), + scale = this.scale(zoom); + + return this.transformation._transform(projectedPoint, scale); + }, + + // @method pointToLatLng(point: Point, zoom: Number): LatLng + // The inverse of `latLngToPoint`. Projects pixel coordinates on a given + // zoom into geographical coordinates. + pointToLatLng: function (point, zoom) { + var scale = this.scale(zoom), + untransformedPoint = this.transformation.untransform(point, scale); + + return this.projection.unproject(untransformedPoint); + }, + + // @method project(latlng: LatLng): Point + // Projects geographical coordinates into coordinates in units accepted for + // this CRS (e.g. meters for EPSG:3857, for passing it to WMS services). + project: function (latlng) { + return this.projection.project(latlng); + }, + + // @method unproject(point: Point): LatLng + // Given a projected coordinate returns the corresponding LatLng. + // The inverse of `project`. + unproject: function (point) { + return this.projection.unproject(point); + }, + + // @method scale(zoom: Number): Number + // Returns the scale used when transforming projected coordinates into + // pixel coordinates for a particular zoom. For example, it returns + // `256 * 2^zoom` for Mercator-based CRS. + scale: function (zoom) { + return 256 * Math.pow(2, zoom); + }, + + // @method zoom(scale: Number): Number + // Inverse of `scale()`, returns the zoom level corresponding to a scale + // factor of `scale`. + zoom: function (scale) { + return Math.log(scale / 256) / Math.LN2; + }, + + // @method getProjectedBounds(zoom: Number): Bounds + // Returns the projection's bounds scaled and transformed for the provided `zoom`. + getProjectedBounds: function (zoom) { + if (this.infinite) { return null; } + + var b = this.projection.bounds, + s = this.scale(zoom), + min = this.transformation.transform(b.min, s), + max = this.transformation.transform(b.max, s); + + return new Bounds(min, max); + }, + + // @method distance(latlng1: LatLng, latlng2: LatLng): Number + // Returns the distance between two geographical coordinates. + + // @property code: String + // Standard code name of the CRS passed into WMS services (e.g. `'EPSG:3857'`) + // + // @property wrapLng: Number[] + // An array of two numbers defining whether the longitude (horizontal) coordinate + // axis wraps around a given range and how. Defaults to `[-180, 180]` in most + // geographical CRSs. If `undefined`, the longitude axis does not wrap around. + // + // @property wrapLat: Number[] + // Like `wrapLng`, but for the latitude (vertical) axis. + + // wrapLng: [min, max], + // wrapLat: [min, max], + + // @property infinite: Boolean + // If true, the coordinate space will be unbounded (infinite in both axes) + infinite: false, + + // @method wrapLatLng(latlng: LatLng): LatLng + // Returns a `LatLng` where lat and lng has been wrapped according to the + // CRS's `wrapLat` and `wrapLng` properties, if they are outside the CRS's bounds. + wrapLatLng: function (latlng) { + var lng = this.wrapLng ? wrapNum(latlng.lng, this.wrapLng, true) : latlng.lng, + lat = this.wrapLat ? wrapNum(latlng.lat, this.wrapLat, true) : latlng.lat, + alt = latlng.alt; + + return new LatLng(lat, lng, alt); + }, + + // @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds + // Returns a `LatLngBounds` with the same size as the given one, ensuring + // that its center is within the CRS's bounds. + // Only accepts actual `L.LatLngBounds` instances, not arrays. + wrapLatLngBounds: function (bounds) { + var center = bounds.getCenter(), + newCenter = this.wrapLatLng(center), + latShift = center.lat - newCenter.lat, + lngShift = center.lng - newCenter.lng; + + if (latShift === 0 && lngShift === 0) { + return bounds; + } + + var sw = bounds.getSouthWest(), + ne = bounds.getNorthEast(), + newSw = new LatLng(sw.lat - latShift, sw.lng - lngShift), + newNe = new LatLng(ne.lat - latShift, ne.lng - lngShift); + + return new LatLngBounds(newSw, newNe); + } + }; + + /* + * @namespace CRS + * @crs L.CRS.Earth + * + * Serves as the base for CRS that are global such that they cover the earth. + * Can only be used as the base for other CRS and cannot be used directly, + * since it does not have a `code`, `projection` or `transformation`. `distance()` returns + * meters. + */ + + var Earth = extend({}, CRS, { + wrapLng: [-180, 180], + + // Mean Earth Radius, as recommended for use by + // the International Union of Geodesy and Geophysics, + // see https://rosettacode.org/wiki/Haversine_formula + R: 6371000, + + // distance between two geographical points using spherical law of cosines approximation + distance: function (latlng1, latlng2) { + var rad = Math.PI / 180, + lat1 = latlng1.lat * rad, + lat2 = latlng2.lat * rad, + sinDLat = Math.sin((latlng2.lat - latlng1.lat) * rad / 2), + sinDLon = Math.sin((latlng2.lng - latlng1.lng) * rad / 2), + a = sinDLat * sinDLat + Math.cos(lat1) * Math.cos(lat2) * sinDLon * sinDLon, + c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); + return this.R * c; + } + }); + + /* + * @namespace Projection + * @projection L.Projection.SphericalMercator + * + * Spherical Mercator projection — the most common projection for online maps, + * used by almost all free and commercial tile providers. Assumes that Earth is + * a sphere. Used by the `EPSG:3857` CRS. + */ + + var earthRadius = 6378137; + + var SphericalMercator = { + + R: earthRadius, + MAX_LATITUDE: 85.0511287798, + + project: function (latlng) { + var d = Math.PI / 180, + max = this.MAX_LATITUDE, + lat = Math.max(Math.min(max, latlng.lat), -max), + sin = Math.sin(lat * d); + + return new Point( + this.R * latlng.lng * d, + this.R * Math.log((1 + sin) / (1 - sin)) / 2); + }, + + unproject: function (point) { + var d = 180 / Math.PI; + + return new LatLng( + (2 * Math.atan(Math.exp(point.y / this.R)) - (Math.PI / 2)) * d, + point.x * d / this.R); + }, + + bounds: (function () { + var d = earthRadius * Math.PI; + return new Bounds([-d, -d], [d, d]); + })() + }; + + /* + * @class Transformation + * @aka L.Transformation + * + * Represents an affine transformation: a set of coefficients `a`, `b`, `c`, `d` + * for transforming a point of a form `(x, y)` into `(a*x + b, c*y + d)` and doing + * the reverse. Used by Leaflet in its projections code. + * + * @example + * + * ```js + * var transformation = L.transformation(2, 5, -1, 10), + * p = L.point(1, 2), + * p2 = transformation.transform(p), // L.point(7, 8) + * p3 = transformation.untransform(p2); // L.point(1, 2) + * ``` + */ + + + // factory new L.Transformation(a: Number, b: Number, c: Number, d: Number) + // Creates a `Transformation` object with the given coefficients. + function Transformation(a, b, c, d) { + if (isArray(a)) { + // use array properties + this._a = a[0]; + this._b = a[1]; + this._c = a[2]; + this._d = a[3]; + return; + } + this._a = a; + this._b = b; + this._c = c; + this._d = d; + } + + Transformation.prototype = { + // @method transform(point: Point, scale?: Number): Point + // Returns a transformed point, optionally multiplied by the given scale. + // Only accepts actual `L.Point` instances, not arrays. + transform: function (point, scale) { // (Point, Number) -> Point + return this._transform(point.clone(), scale); + }, + + // destructive transform (faster) + _transform: function (point, scale) { + scale = scale || 1; + point.x = scale * (this._a * point.x + this._b); + point.y = scale * (this._c * point.y + this._d); + return point; + }, + + // @method untransform(point: Point, scale?: Number): Point + // Returns the reverse transformation of the given point, optionally divided + // by the given scale. Only accepts actual `L.Point` instances, not arrays. + untransform: function (point, scale) { + scale = scale || 1; + return new Point( + (point.x / scale - this._b) / this._a, + (point.y / scale - this._d) / this._c); + } + }; + + // factory L.transformation(a: Number, b: Number, c: Number, d: Number) + + // @factory L.transformation(a: Number, b: Number, c: Number, d: Number) + // Instantiates a Transformation object with the given coefficients. + + // @alternative + // @factory L.transformation(coefficients: Array): Transformation + // Expects an coefficients array of the form + // `[a: Number, b: Number, c: Number, d: Number]`. + + function toTransformation(a, b, c, d) { + return new Transformation(a, b, c, d); + } + + /* + * @namespace CRS + * @crs L.CRS.EPSG3857 + * + * The most common CRS for online maps, used by almost all free and commercial + * tile providers. Uses Spherical Mercator projection. Set in by default in + * Map's `crs` option. + */ + + var EPSG3857 = extend({}, Earth, { + code: 'EPSG:3857', + projection: SphericalMercator, + + transformation: (function () { + var scale = 0.5 / (Math.PI * SphericalMercator.R); + return toTransformation(scale, 0.5, -scale, 0.5); + }()) + }); + + var EPSG900913 = extend({}, EPSG3857, { + code: 'EPSG:900913' + }); + + // @namespace SVG; @section + // There are several static functions which can be called without instantiating L.SVG: + + // @function create(name: String): SVGElement + // Returns a instance of [SVGElement](https://developer.mozilla.org/docs/Web/API/SVGElement), + // corresponding to the class name passed. For example, using 'line' will return + // an instance of [SVGLineElement](https://developer.mozilla.org/docs/Web/API/SVGLineElement). + function svgCreate(name) { + return document.createElementNS('http://www.w3.org/2000/svg', name); + } + + // @function pointsToPath(rings: Point[], closed: Boolean): String + // Generates a SVG path string for multiple rings, with each ring turning + // into "M..L..L.." instructions + function pointsToPath(rings, closed) { + var str = '', + i, j, len, len2, points, p; + + for (i = 0, len = rings.length; i < len; i++) { + points = rings[i]; + + for (j = 0, len2 = points.length; j < len2; j++) { + p = points[j]; + str += (j ? 'L' : 'M') + p.x + ' ' + p.y; + } + + // closes the ring for polygons; "x" is VML syntax + str += closed ? (Browser.svg ? 'z' : 'x') : ''; + } + + // SVG complains about empty path strings + return str || 'M0 0'; + } + + /* + * @namespace Browser + * @aka L.Browser + * + * A namespace with static properties for browser/feature detection used by Leaflet internally. + * + * @example + * + * ```js + * if (L.Browser.ielt9) { + * alert('Upgrade your browser, dude!'); + * } + * ``` + */ + + var style = document.documentElement.style; + + // @property ie: Boolean; `true` for all Internet Explorer versions (not Edge). + var ie = 'ActiveXObject' in window; + + // @property ielt9: Boolean; `true` for Internet Explorer versions less than 9. + var ielt9 = ie && !document.addEventListener; + + // @property edge: Boolean; `true` for the Edge web browser. + var edge = 'msLaunchUri' in navigator && !('documentMode' in document); + + // @property webkit: Boolean; + // `true` for webkit-based browsers like Chrome and Safari (including mobile versions). + var webkit = userAgentContains('webkit'); + + // @property android: Boolean + // **Deprecated.** `true` for any browser running on an Android platform. + var android = userAgentContains('android'); + + // @property android23: Boolean; **Deprecated.** `true` for browsers running on Android 2 or Android 3. + var android23 = userAgentContains('android 2') || userAgentContains('android 3'); + + /* See https://stackoverflow.com/a/17961266 for details on detecting stock Android */ + var webkitVer = parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1], 10); // also matches AppleWebKit + // @property androidStock: Boolean; **Deprecated.** `true` for the Android stock browser (i.e. not Chrome) + var androidStock = android && userAgentContains('Google') && webkitVer < 537 && !('AudioNode' in window); + + // @property opera: Boolean; `true` for the Opera browser + var opera = !!window.opera; + + // @property chrome: Boolean; `true` for the Chrome browser. + var chrome = !edge && userAgentContains('chrome'); + + // @property gecko: Boolean; `true` for gecko-based browsers like Firefox. + var gecko = userAgentContains('gecko') && !webkit && !opera && !ie; + + // @property safari: Boolean; `true` for the Safari browser. + var safari = !chrome && userAgentContains('safari'); + + var phantom = userAgentContains('phantom'); + + // @property opera12: Boolean + // `true` for the Opera browser supporting CSS transforms (version 12 or later). + var opera12 = 'OTransition' in style; + + // @property win: Boolean; `true` when the browser is running in a Windows platform + var win = navigator.platform.indexOf('Win') === 0; + + // @property ie3d: Boolean; `true` for all Internet Explorer versions supporting CSS transforms. + var ie3d = ie && ('transition' in style); + + // @property webkit3d: Boolean; `true` for webkit-based browsers supporting CSS transforms. + var webkit3d = ('WebKitCSSMatrix' in window) && ('m11' in new window.WebKitCSSMatrix()) && !android23; + + // @property gecko3d: Boolean; `true` for gecko-based browsers supporting CSS transforms. + var gecko3d = 'MozPerspective' in style; + + // @property any3d: Boolean + // `true` for all browsers supporting CSS transforms. + var any3d = !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d) && !opera12 && !phantom; + + // @property mobile: Boolean; `true` for all browsers running in a mobile device. + var mobile = typeof orientation !== 'undefined' || userAgentContains('mobile'); + + // @property mobileWebkit: Boolean; `true` for all webkit-based browsers in a mobile device. + var mobileWebkit = mobile && webkit; + + // @property mobileWebkit3d: Boolean + // `true` for all webkit-based browsers in a mobile device supporting CSS transforms. + var mobileWebkit3d = mobile && webkit3d; + + // @property msPointer: Boolean + // `true` for browsers implementing the Microsoft touch events model (notably IE10). + var msPointer = !window.PointerEvent && window.MSPointerEvent; + + // @property pointer: Boolean + // `true` for all browsers supporting [pointer events](https://msdn.microsoft.com/en-us/library/dn433244%28v=vs.85%29.aspx). + var pointer = !!(window.PointerEvent || msPointer); + + // @property touchNative: Boolean + // `true` for all browsers supporting [touch events](https://developer.mozilla.org/docs/Web/API/Touch_events). + // **This does not necessarily mean** that the browser is running in a computer with + // a touchscreen, it only means that the browser is capable of understanding + // touch events. + var touchNative = 'ontouchstart' in window || !!window.TouchEvent; + + // @property touch: Boolean + // `true` for all browsers supporting either [touch](#browser-touch) or [pointer](#browser-pointer) events. + // Note: pointer events will be preferred (if available), and processed for all `touch*` listeners. + var touch = !window.L_NO_TOUCH && (touchNative || pointer); + + // @property mobileOpera: Boolean; `true` for the Opera browser in a mobile device. + var mobileOpera = mobile && opera; + + // @property mobileGecko: Boolean + // `true` for gecko-based browsers running in a mobile device. + var mobileGecko = mobile && gecko; + + // @property retina: Boolean + // `true` for browsers on a high-resolution "retina" screen or on any screen when browser's display zoom is more than 100%. + var retina = (window.devicePixelRatio || (window.screen.deviceXDPI / window.screen.logicalXDPI)) > 1; + + // @property passiveEvents: Boolean + // `true` for browsers that support passive events. + var passiveEvents = (function () { + var supportsPassiveOption = false; + try { + var opts = Object.defineProperty({}, 'passive', { + get: function () { // eslint-disable-line getter-return + supportsPassiveOption = true; + } + }); + window.addEventListener('testPassiveEventSupport', falseFn, opts); + window.removeEventListener('testPassiveEventSupport', falseFn, opts); + } catch (e) { + // Errors can safely be ignored since this is only a browser support test. + } + return supportsPassiveOption; + }()); + + // @property canvas: Boolean + // `true` when the browser supports [``](https://developer.mozilla.org/docs/Web/API/Canvas_API). + var canvas$1 = (function () { + return !!document.createElement('canvas').getContext; + }()); + + // @property svg: Boolean + // `true` when the browser supports [SVG](https://developer.mozilla.org/docs/Web/SVG). + var svg$1 = !!(document.createElementNS && svgCreate('svg').createSVGRect); + + var inlineSvg = !!svg$1 && (function () { + var div = document.createElement('div'); + div.innerHTML = ''; + return (div.firstChild && div.firstChild.namespaceURI) === 'http://www.w3.org/2000/svg'; + })(); + + // @property vml: Boolean + // `true` if the browser supports [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language). + var vml = !svg$1 && (function () { + try { + var div = document.createElement('div'); + div.innerHTML = ''; + + var shape = div.firstChild; + shape.style.behavior = 'url(#default#VML)'; + + return shape && (typeof shape.adj === 'object'); + + } catch (e) { + return false; + } + }()); + + + // @property mac: Boolean; `true` when the browser is running in a Mac platform + var mac = navigator.platform.indexOf('Mac') === 0; + + // @property mac: Boolean; `true` when the browser is running in a Linux platform + var linux = navigator.platform.indexOf('Linux') === 0; + + function userAgentContains(str) { + return navigator.userAgent.toLowerCase().indexOf(str) >= 0; + } + + + var Browser = { + ie: ie, + ielt9: ielt9, + edge: edge, + webkit: webkit, + android: android, + android23: android23, + androidStock: androidStock, + opera: opera, + chrome: chrome, + gecko: gecko, + safari: safari, + phantom: phantom, + opera12: opera12, + win: win, + ie3d: ie3d, + webkit3d: webkit3d, + gecko3d: gecko3d, + any3d: any3d, + mobile: mobile, + mobileWebkit: mobileWebkit, + mobileWebkit3d: mobileWebkit3d, + msPointer: msPointer, + pointer: pointer, + touch: touch, + touchNative: touchNative, + mobileOpera: mobileOpera, + mobileGecko: mobileGecko, + retina: retina, + passiveEvents: passiveEvents, + canvas: canvas$1, + svg: svg$1, + vml: vml, + inlineSvg: inlineSvg, + mac: mac, + linux: linux + }; + + /* + * Extends L.DomEvent to provide touch support for Internet Explorer and Windows-based devices. + */ + + var POINTER_DOWN = Browser.msPointer ? 'MSPointerDown' : 'pointerdown'; + var POINTER_MOVE = Browser.msPointer ? 'MSPointerMove' : 'pointermove'; + var POINTER_UP = Browser.msPointer ? 'MSPointerUp' : 'pointerup'; + var POINTER_CANCEL = Browser.msPointer ? 'MSPointerCancel' : 'pointercancel'; + var pEvent = { + touchstart : POINTER_DOWN, + touchmove : POINTER_MOVE, + touchend : POINTER_UP, + touchcancel : POINTER_CANCEL + }; + var handle = { + touchstart : _onPointerStart, + touchmove : _handlePointer, + touchend : _handlePointer, + touchcancel : _handlePointer + }; + var _pointers = {}; + var _pointerDocListener = false; + + // Provides a touch events wrapper for (ms)pointer events. + // ref https://www.w3.org/TR/pointerevents/ https://www.w3.org/Bugs/Public/show_bug.cgi?id=22890 + + function addPointerListener(obj, type, handler) { + if (type === 'touchstart') { + _addPointerDocListener(); + } + if (!handle[type]) { + console.warn('wrong event specified:', type); + return falseFn; + } + handler = handle[type].bind(this, handler); + obj.addEventListener(pEvent[type], handler, false); + return handler; + } + + function removePointerListener(obj, type, handler) { + if (!pEvent[type]) { + console.warn('wrong event specified:', type); + return; + } + obj.removeEventListener(pEvent[type], handler, false); + } + + function _globalPointerDown(e) { + _pointers[e.pointerId] = e; + } + + function _globalPointerMove(e) { + if (_pointers[e.pointerId]) { + _pointers[e.pointerId] = e; + } + } + + function _globalPointerUp(e) { + delete _pointers[e.pointerId]; + } + + function _addPointerDocListener() { + // need to keep track of what pointers and how many are active to provide e.touches emulation + if (!_pointerDocListener) { + // we listen document as any drags that end by moving the touch off the screen get fired there + document.addEventListener(POINTER_DOWN, _globalPointerDown, true); + document.addEventListener(POINTER_MOVE, _globalPointerMove, true); + document.addEventListener(POINTER_UP, _globalPointerUp, true); + document.addEventListener(POINTER_CANCEL, _globalPointerUp, true); + + _pointerDocListener = true; + } + } + + function _handlePointer(handler, e) { + if (e.pointerType === (e.MSPOINTER_TYPE_MOUSE || 'mouse')) { return; } + + e.touches = []; + for (var i in _pointers) { + e.touches.push(_pointers[i]); + } + e.changedTouches = [e]; + + handler(e); + } + + function _onPointerStart(handler, e) { + // IE10 specific: MsTouch needs preventDefault. See #2000 + if (e.MSPOINTER_TYPE_TOUCH && e.pointerType === e.MSPOINTER_TYPE_TOUCH) { + preventDefault(e); + } + _handlePointer(handler, e); + } + + /* + * Extends the event handling code with double tap support for mobile browsers. + * + * Note: currently most browsers fire native dblclick, with only a few exceptions + * (see https://github.com/Leaflet/Leaflet/issues/7012#issuecomment-595087386) + */ + + function makeDblclick(event) { + // in modern browsers `type` cannot be just overridden: + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only + var newEvent = {}, + prop, i; + for (i in event) { + prop = event[i]; + newEvent[i] = prop && prop.bind ? prop.bind(event) : prop; + } + event = newEvent; + newEvent.type = 'dblclick'; + newEvent.detail = 2; + newEvent.isTrusted = false; + newEvent._simulated = true; // for debug purposes + return newEvent; + } + + var delay = 200; + function addDoubleTapListener(obj, handler) { + // Most browsers handle double tap natively + obj.addEventListener('dblclick', handler); + + // On some platforms the browser doesn't fire native dblclicks for touch events. + // It seems that in all such cases `detail` property of `click` event is always `1`. + // So here we rely on that fact to avoid excessive 'dblclick' simulation when not needed. + var last = 0, + detail; + function simDblclick(e) { + if (e.detail !== 1) { + detail = e.detail; // keep in sync to avoid false dblclick in some cases + return; + } + + if (e.pointerType === 'mouse' || + (e.sourceCapabilities && !e.sourceCapabilities.firesTouchEvents)) { + + return; + } + + // When clicking on an , the browser generates a click on its + //