From 7ad2a4e590b0b6137d704816378e71a0759c94ca Mon Sep 17 00:00:00 2001 From: JustSxm Date: Mon, 10 Apr 2023 21:28:51 -0400 Subject: [PATCH 1/7] V3 [WIP] - Liked to Multiple Playlists --- .gitignore | 398 +++++++++++ LICENSE | 674 ------------------ README.md | 61 -- SpotifyMigrator.sln | 37 + SpotifyMigrator/Client/App.razor | 12 + SpotifyMigrator/Client/MainLayout.razor | 5 + SpotifyMigrator/Client/Pages/Done.razor | 12 + SpotifyMigrator/Client/Pages/Home.razor | 17 + SpotifyMigrator/Client/Pages/Index.razor | 24 + .../Client/Pages/LikedToMultiple.razor | 110 +++ SpotifyMigrator/Client/Program.cs | 28 + .../Client/Properties/launchSettings.json | 38 + SpotifyMigrator/Client/SpotifyInfos.cs | 12 + .../Client/SpotifyMigrator.Client.csproj | 22 + SpotifyMigrator/Client/_Imports.razor | 8 + .../Client/wwwroot/appsettings.json | 6 + SpotifyMigrator/Client/wwwroot/css/app.css | 32 + SpotifyMigrator/Client/wwwroot/index.html | 32 + .../Server/Controllers/SpotifyController.cs | 89 +++ SpotifyMigrator/Server/Program.cs | 32 + .../Server/Properties/launchSettings.json | 45 ++ .../Server/SpotifyMigrator.Server.csproj | 19 + .../Server/appsettings.Development.json | 8 + SpotifyMigrator/Server/appsettings.json | 5 + SpotifyMigrator/Shared/PlaylistInfo.cs | 21 + .../Shared/SpotifyMigrator.Shared.csproj | 16 + SpotifyMigrator/Shared/SpotifySingleton.cs | 10 + app.js | 349 --------- config.json | 4 - meta/Save.PNG | Bin 48726 -> 0 bytes meta/UserAndAccess.PNG | Bin 19918 -> 0 bytes meta/redirect.PNG | Bin 22136 -> 0 bytes package.json | 8 - public/GenericPage.ejs | 35 - public/Login.ejs | 44 -- public/Menu.html | 32 - public/css/index.css | 15 - 37 files changed, 1038 insertions(+), 1222 deletions(-) create mode 100644 .gitignore delete mode 100644 LICENSE delete mode 100644 README.md create mode 100644 SpotifyMigrator.sln create mode 100644 SpotifyMigrator/Client/App.razor create mode 100644 SpotifyMigrator/Client/MainLayout.razor create mode 100644 SpotifyMigrator/Client/Pages/Done.razor create mode 100644 SpotifyMigrator/Client/Pages/Home.razor create mode 100644 SpotifyMigrator/Client/Pages/Index.razor create mode 100644 SpotifyMigrator/Client/Pages/LikedToMultiple.razor create mode 100644 SpotifyMigrator/Client/Program.cs create mode 100644 SpotifyMigrator/Client/Properties/launchSettings.json create mode 100644 SpotifyMigrator/Client/SpotifyInfos.cs create mode 100644 SpotifyMigrator/Client/SpotifyMigrator.Client.csproj create mode 100644 SpotifyMigrator/Client/_Imports.razor create mode 100644 SpotifyMigrator/Client/wwwroot/appsettings.json create mode 100644 SpotifyMigrator/Client/wwwroot/css/app.css create mode 100644 SpotifyMigrator/Client/wwwroot/index.html create mode 100644 SpotifyMigrator/Server/Controllers/SpotifyController.cs create mode 100644 SpotifyMigrator/Server/Program.cs create mode 100644 SpotifyMigrator/Server/Properties/launchSettings.json create mode 100644 SpotifyMigrator/Server/SpotifyMigrator.Server.csproj create mode 100644 SpotifyMigrator/Server/appsettings.Development.json create mode 100644 SpotifyMigrator/Server/appsettings.json create mode 100644 SpotifyMigrator/Shared/PlaylistInfo.cs create mode 100644 SpotifyMigrator/Shared/SpotifyMigrator.Shared.csproj create mode 100644 SpotifyMigrator/Shared/SpotifySingleton.cs delete mode 100644 app.js delete mode 100644 config.json delete mode 100644 meta/Save.PNG delete mode 100644 meta/UserAndAccess.PNG delete mode 100644 meta/redirect.PNG delete mode 100644 package.json delete mode 100644 public/GenericPage.ejs delete mode 100644 public/Login.ejs delete mode 100644 public/Menu.html delete mode 100644 public/css/index.css diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8dd4607 --- /dev/null +++ b/.gitignore @@ -0,0 +1,398 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.tlog +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio 6 auto-generated project file (contains which files were open etc.) +*.vbp + +# Visual Studio 6 workspace and project file (working project files containing files to include in project) +*.dsw +*.dsp + +# Visual Studio 6 technical files +*.ncb +*.aps + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# Visual Studio History (VSHistory) files +.vshistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +# VS Code files for those working on multiple tools +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +# Local History for Visual Studio Code +.history/ + +# Windows Installer files from build outputs +*.cab +*.msi +*.msix +*.msm +*.msp + +# JetBrains Rider +*.sln.iml \ No newline at end of file diff --git a/LICENSE b/LICENSE deleted file mode 100644 index f288702..0000000 --- a/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/README.md b/README.md deleted file mode 100644 index 32d1d2d..0000000 --- a/README.md +++ /dev/null @@ -1,61 +0,0 @@ -# Spotify Migrator -Spotify Migrator is an application to transfer your spotify data from an account to another -I never found an online service who did what I wanted, so I made this. -### If you find it useful, make sure to star Thank you!. - -## Features - -- [x] Transfer your liked songs in order -- [x] Transfer your playlists -- [x] Create a copy of your playlists (make the new account owner) -- [x] Follow your playlists -- [ ] Follow artists/users -- [ ] Add you to your collaborative playlists -- [ ] Mark your collaborative playlist as collaborative instead of only public/private -- [ ] Save Podcasts -## V1 -You can still use V1 of Spotify Migrator(its a branch) if you want to, but I wouldnt recommend it, this project is meant to be evolutive and get better everytime I get bored. -## Installation - -This application requires [Node.js](https://nodejs.org/) v10+ to run. - -Install the dependencies -```sh -npm i -``` - -## How to use -To use this app you will need to create an app on the [Spotify Developer Website](https://developer.spotify.com/dashboard/applications) - -Once you created your application, we will need to edit some informations. -#### Setting up the application -1. Click on "Edit Settings" -2. Go to RedirectURI and add the values: -- http://localhost:3000/callback -![Image to Explain Step 2](https://raw.githubusercontent.com/JustSxm/SpotifyMigrator/master/meta/redirect.PNG) -3. Save -![Image to Explain Step 3](https://raw.githubusercontent.com/JustSxm/SpotifyMigrator/master/meta/Save.PNG) -4. Go to Users and Access -![Image to Explain Step 4](https://raw.githubusercontent.com/JustSxm/SpotifyMigrator/master/meta/UserAndAccess.PNG) -5. Add the email of the other account you are not currently logged in (new or old) to give it access to the application. - -#### Setting up the config -Grab the Client ID and the Client Secret from your application and put them in the file config.json (replace CHANGEME) - -#### Start the app -```sh -node app.js -``` -Then visit localhost:3000 on your browser. - -## Development -Want to contribute? Great! -There is multiple user-friendly things to add that I won't bother add that anyone could do. - -- [x] CSS / Prettier pages -- [ ] Wait page while requests are being sent -- [ ] Reduce the time every second. - - -## License -GPL diff --git a/SpotifyMigrator.sln b/SpotifyMigrator.sln new file mode 100644 index 0000000..468fd1a --- /dev/null +++ b/SpotifyMigrator.sln @@ -0,0 +1,37 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.4.33205.214 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpotifyMigrator.Server", "SpotifyMigrator\Server\SpotifyMigrator.Server.csproj", "{9B271A4A-8F60-4AC2-AA1E-C60250D917BB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpotifyMigrator.Client", "SpotifyMigrator\Client\SpotifyMigrator.Client.csproj", "{C7017DAA-8CDD-4BCB-AC50-38E0C1DE2B17}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpotifyMigrator.Shared", "SpotifyMigrator\Shared\SpotifyMigrator.Shared.csproj", "{89698DF9-F45B-4678-B894-7547DB059970}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9B271A4A-8F60-4AC2-AA1E-C60250D917BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9B271A4A-8F60-4AC2-AA1E-C60250D917BB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9B271A4A-8F60-4AC2-AA1E-C60250D917BB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9B271A4A-8F60-4AC2-AA1E-C60250D917BB}.Release|Any CPU.Build.0 = Release|Any CPU + {C7017DAA-8CDD-4BCB-AC50-38E0C1DE2B17}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C7017DAA-8CDD-4BCB-AC50-38E0C1DE2B17}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C7017DAA-8CDD-4BCB-AC50-38E0C1DE2B17}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C7017DAA-8CDD-4BCB-AC50-38E0C1DE2B17}.Release|Any CPU.Build.0 = Release|Any CPU + {89698DF9-F45B-4678-B894-7547DB059970}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {89698DF9-F45B-4678-B894-7547DB059970}.Debug|Any CPU.Build.0 = Debug|Any CPU + {89698DF9-F45B-4678-B894-7547DB059970}.Release|Any CPU.ActiveCfg = Release|Any CPU + {89698DF9-F45B-4678-B894-7547DB059970}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {6809A768-FF6A-4593-8A85-E8439DCD0141} + EndGlobalSection +EndGlobal diff --git a/SpotifyMigrator/Client/App.razor b/SpotifyMigrator/Client/App.razor new file mode 100644 index 0000000..6fd3ed1 --- /dev/null +++ b/SpotifyMigrator/Client/App.razor @@ -0,0 +1,12 @@ + + + + + + + Not found + +

Sorry, there's nothing at this address.

+
+
+
diff --git a/SpotifyMigrator/Client/MainLayout.razor b/SpotifyMigrator/Client/MainLayout.razor new file mode 100644 index 0000000..de2be6c --- /dev/null +++ b/SpotifyMigrator/Client/MainLayout.razor @@ -0,0 +1,5 @@ +@inherits LayoutComponentBase + +
+ @Body +
diff --git a/SpotifyMigrator/Client/Pages/Done.razor b/SpotifyMigrator/Client/Pages/Done.razor new file mode 100644 index 0000000..ce15ddd --- /dev/null +++ b/SpotifyMigrator/Client/Pages/Done.razor @@ -0,0 +1,12 @@ +@page "/done" +@using SpotifyAPI.Web; +@using Microsoft.Extensions.Configuration +@inject IConfiguration Configuration +@inject HttpClient HttpClient +@inject NavigationManager NavManager + +
+

Spotify Migrator

+

It's ugly: but it works.

+

It's done! Hooray!'

+
diff --git a/SpotifyMigrator/Client/Pages/Home.razor b/SpotifyMigrator/Client/Pages/Home.razor new file mode 100644 index 0000000..b38c352 --- /dev/null +++ b/SpotifyMigrator/Client/Pages/Home.razor @@ -0,0 +1,17 @@ +@page "/home" +@using SpotifyAPI.Web; +@using Microsoft.Extensions.Configuration +@inject NavigationManager NavManager + +
+

Spotify Migrator

+

What do you want to do?

+ +
+ +@code { + private async Task GoToLikedToMultiple() + { + NavManager.NavigateTo("/likedtomultiple"); + } +} \ No newline at end of file diff --git a/SpotifyMigrator/Client/Pages/Index.razor b/SpotifyMigrator/Client/Pages/Index.razor new file mode 100644 index 0000000..80391cc --- /dev/null +++ b/SpotifyMigrator/Client/Pages/Index.razor @@ -0,0 +1,24 @@ +@page "/" +@using SpotifyAPI.Web; +@using Microsoft.Extensions.Configuration +@inject IConfiguration Configuration +@inject HttpClient HttpClient +@inject NavigationManager NavManager + +
+

Spotify Migrator

+

It's ugly: but it works.

+ +
+ +@code { + private async Task LoginToSpotify() + { + var loginRequest = new LoginRequest(new Uri("http://localhost:5009/api/Spotify"), Configuration["ClientId"] ?? throw new Exception("Client ID not set in appsettings"), LoginRequest.ResponseType.Code) + { + Scope = new[] { Scopes.PlaylistModifyPrivate, Scopes.PlaylistModifyPublic, Scopes.PlaylistReadPrivate, Scopes.UserLibraryRead, Scopes.UserModifyPlaybackState, Scopes.UserReadPrivate } + }; + var uri = loginRequest.ToUri().AbsoluteUri; + NavManager.NavigateTo(uri); + } +} \ No newline at end of file diff --git a/SpotifyMigrator/Client/Pages/LikedToMultiple.razor b/SpotifyMigrator/Client/Pages/LikedToMultiple.razor new file mode 100644 index 0000000..3f4f25d --- /dev/null +++ b/SpotifyMigrator/Client/Pages/LikedToMultiple.razor @@ -0,0 +1,110 @@ +@page "/likedtomultiple" +@using SpotifyAPI.Web; +@using Microsoft.Extensions.Configuration +@using SpotifyMigrator.Shared; +@inject IConfiguration Configuration +@inject HttpClient HttpClient +@inject SpotifyInfos SpotifyInfos; +@inject NavigationManager NavManager; + +
+

Spotify Migrator

+ + @if (!PlaylistsCreated) + { +

Creating your playlists

+ + + + +
Add Manually
+ + + + + + + + + } else + { +

@toShow

+ if (toShow != "Wait while we fetch your songs") + { +
+ @foreach (var playlist in SpotifyInfos.Playlists) + { + + + } +
+ + } + } +
+ +@code { + private bool PlaylistsCreated = false; + private string CurrentValue { get; set; } + private string ManualName { get; set; } + private int Done { get; set; } = 0; + private string ManualCurrentValue { get; set; } + private string toShow { get; set; } = ""; + private SavedTrack CurrentTrack { get; set; } + private async Task CreatePlaylist() + { + var response = await HttpClient.PostAsJsonAsync("api/Spotify/CreatePlaylist", new { Name = CurrentValue }); + SpotifyInfos.Playlists.Add(await response.Content.ReadFromJsonAsync();); + CurrentValue = ""; + } + + private async Task AddPlaylist() + { + SpotifyInfos.Playlists.Add(new PlaylistInfo(ManualName, ManualCurrentValue)); + ManualName = ""; + ManualCurrentValue = ""; + } + + private async Task Next() + { + PlaylistsCreated = true; + toShow = "Wait while we fetch your songs"; + SpotifyInfos.TracksInfos = await HttpClient.GetFromJsonAsync>("api/Spotify/Songs"); + + var track = SpotifyInfos.TracksInfos.Dequeue(); + CurrentTrack = track; + toShow = "Choose for the song: " + track.Track.Name + " (" + Done + " / " + SpotifyInfos.TracksInfos.Count() + " left)"; + + await HttpClient.PostAsJsonAsync("api/Spotify/Playback", new { Uri = track.Track.Uri }); + } + + private async Task AddSongToPlaylist(PlaylistInfo playlist) + { + await HttpClient.PostAsJsonAsync("api/Spotify/AddToPlaylist", new { PlaylistId = playlist.PlaylistId, TrackId = CurrentTrack.Track.Uri }); + playlist.Hide = true; + StateHasChanged(); + } + + private async Task NextSong() + { + await HttpClient.PostAsJsonAsync("api/Spotify/AddToPlaylist", new { PlaylistId = Configuration["GlobalPlaylist"], TrackId = CurrentTrack.Track.Uri }); + foreach(var playlist in SpotifyInfos.Playlists) + { + playlist.Hide = false; + } + Done += 1; + if (SpotifyInfos.TracksInfos.Count() > 0) + { + var track = SpotifyInfos.TracksInfos.Dequeue(); + CurrentTrack = track; + toShow = "Choose for the song: " + track.Track.Name + " (" + Done + " / " + SpotifyInfos.TracksInfos.Count() + " left)"; + await HttpClient.PostAsJsonAsync("api/Spotify/Playback", new { Uri = track.Track.Uri }); + + } else + { + NavManager.NavigateTo("/done"); + } + } +} \ No newline at end of file diff --git a/SpotifyMigrator/Client/Program.cs b/SpotifyMigrator/Client/Program.cs new file mode 100644 index 0000000..8f60cdd --- /dev/null +++ b/SpotifyMigrator/Client/Program.cs @@ -0,0 +1,28 @@ +using Blazorise; +using Blazorise.Bootstrap; +using Blazorise.Icons.FontAwesome; +using Microsoft.AspNetCore.Components.Web; +using Microsoft.AspNetCore.Components.WebAssembly.Hosting; +using SpotifyMigrator.Client; +using System.IO; +using System.Reflection; + +var builder = WebAssemblyHostBuilder.CreateDefault(args); +builder.RootComponents.Add("#app"); +builder.RootComponents.Add("head::after"); + +builder.Services.AddHttpClient("SpotifyMigrator.ServerAPI", client => client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress)); + +// Supply HttpClient instances that include access tokens when making requests to the server project +builder.Services.AddScoped(sp => sp.GetRequiredService().CreateClient("SpotifyMigrator.ServerAPI")); +builder.Services.AddSingleton(); + +builder.Services + .AddBlazorise(options => + { + options.Immediate = true; + }) + .AddBootstrapProviders() + .AddFontAwesomeIcons(); + +await builder.Build().RunAsync(); diff --git a/SpotifyMigrator/Client/Properties/launchSettings.json b/SpotifyMigrator/Client/Properties/launchSettings.json new file mode 100644 index 0000000..802fd2d --- /dev/null +++ b/SpotifyMigrator/Client/Properties/launchSettings.json @@ -0,0 +1,38 @@ +{ + "iisSettings": { + "iisExpress": { + "applicationUrl": "http://localhost:23096", + "sslPort": 44304 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "applicationUrl": "http://localhost:5009", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "applicationUrl": "https://localhost:7182;http://localhost:5009", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/SpotifyMigrator/Client/SpotifyInfos.cs b/SpotifyMigrator/Client/SpotifyInfos.cs new file mode 100644 index 0000000..0b24235 --- /dev/null +++ b/SpotifyMigrator/Client/SpotifyInfos.cs @@ -0,0 +1,12 @@ +using SpotifyAPI.Web; +using SpotifyMigrator.Shared; + +namespace SpotifyMigrator.Client +{ + public class SpotifyInfos + { + public List Playlists { get; set; } = new List(); + public Queue TracksInfos = new Queue(); + + } +} diff --git a/SpotifyMigrator/Client/SpotifyMigrator.Client.csproj b/SpotifyMigrator/Client/SpotifyMigrator.Client.csproj new file mode 100644 index 0000000..220b29d --- /dev/null +++ b/SpotifyMigrator/Client/SpotifyMigrator.Client.csproj @@ -0,0 +1,22 @@ + + + + net7.0 + enable + enable + + + + + + + + + + + + + + + + diff --git a/SpotifyMigrator/Client/_Imports.razor b/SpotifyMigrator/Client/_Imports.razor new file mode 100644 index 0000000..83d9c54 --- /dev/null +++ b/SpotifyMigrator/Client/_Imports.razor @@ -0,0 +1,8 @@ +@using System.Net.Http +@using System.Net.Http.Json +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.WebAssembly.Http +@using Microsoft.JSInterop +@using SpotifyMigrator.Client +@using Blazorise \ No newline at end of file diff --git a/SpotifyMigrator/Client/wwwroot/appsettings.json b/SpotifyMigrator/Client/wwwroot/appsettings.json new file mode 100644 index 0000000..f1fd28c --- /dev/null +++ b/SpotifyMigrator/Client/wwwroot/appsettings.json @@ -0,0 +1,6 @@ +{ + + "ClientId": "", + "GlobalPlaylist": "" + +} \ No newline at end of file diff --git a/SpotifyMigrator/Client/wwwroot/css/app.css b/SpotifyMigrator/Client/wwwroot/css/app.css new file mode 100644 index 0000000..ffcb043 --- /dev/null +++ b/SpotifyMigrator/Client/wwwroot/css/app.css @@ -0,0 +1,32 @@ +h1:focus { + outline: none; +} + +#blazor-error-ui { + background: lightyellow; + bottom: 0; + box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); + display: none; + left: 0; + padding: 0.6rem 1.25rem 0.7rem 1.25rem; + position: fixed; + width: 100%; + z-index: 1000; +} + + #blazor-error-ui .dismiss { + cursor: pointer; + position: absolute; + right: 0.75rem; + top: 0.5rem; + } + +.blazor-error-boundary { + background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121; + padding: 1rem 1rem 1rem 3.7rem; + color: white; +} + + .blazor-error-boundary::after { + content: "An error has occurred." + } diff --git a/SpotifyMigrator/Client/wwwroot/index.html b/SpotifyMigrator/Client/wwwroot/index.html new file mode 100644 index 0000000..db2f593 --- /dev/null +++ b/SpotifyMigrator/Client/wwwroot/index.html @@ -0,0 +1,32 @@ + + + + + + SpotifyMigrator + + + + + + + + + + + +
Loading...
+ +
+ An unhandled error has occurred. + Reload + 🗙 +
+ + + + + + + diff --git a/SpotifyMigrator/Server/Controllers/SpotifyController.cs b/SpotifyMigrator/Server/Controllers/SpotifyController.cs new file mode 100644 index 0000000..3b79ab9 --- /dev/null +++ b/SpotifyMigrator/Server/Controllers/SpotifyController.cs @@ -0,0 +1,89 @@ +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using SpotifyAPI.Web; +using SpotifyMigrator.Client; +using SpotifyMigrator.Shared; +using System.Text.Json.Nodes; + +namespace SpotifyMigrator.Server.Controllers +{ + [Route("api/[controller]")] + [ApiController] + public class SpotifyController : ControllerBase + { + + public IConfiguration Configuration { get; set; } + public SpotifyController(IConfiguration configuration) + { + Configuration = configuration; + } + + [HttpGet] + public async Task GetAuthentificationResponse(string code) + { + var response = await new OAuthClient().RequestToken( + new AuthorizationCodeTokenRequest(Configuration["ClientId"], Configuration["ClientSecret"], code, new Uri("http://localhost:5009/api/Spotify")) + ); + var config = SpotifyClientConfig + .CreateDefault() + .WithAuthenticator(new AuthorizationCodeAuthenticator(Configuration["ClientId"], Configuration["ClientSecret"], response)); + + SpotifySingleton.Client = new SpotifyClient(config); + SpotifySingleton.Me = await SpotifySingleton.Client.UserProfile.Current(); + + Response.Redirect("/home"); + } + + [HttpPost("CreatePlaylist")] + public async Task CreatePlaylist([FromBody] JsonObject name) + { + string playlistName = (string)name["name"]; + var playlist = await SpotifySingleton.Client.Playlists.Create(SpotifySingleton.Me.Id, new PlaylistCreateRequest(playlistName)); + return Ok(new PlaylistInfo(playlistName, playlist.Id)); + } + + [HttpGet("Songs")] + public async Task Songs() + { + Queue tracks = new Queue(); + var request = new LibraryTracksRequest(); + request.Limit = 50; + request.Offset = 0; + while (true) + { + var test = await SpotifySingleton.Client.Library.GetTracks(request); + foreach (var item in test.Items) + { + tracks.Enqueue(item); + } + if (test.Next == null) + { + break; + } + request.Offset += 50; + } + + return Ok(tracks); + } + + [HttpPost("Playback")] + public async Task Playback([FromBody] JsonObject playback) + { + string uri = (string)playback["uri"]; + var plReq = new PlayerResumePlaybackRequest(); + plReq.Uris = new List { uri }; + plReq.PositionMs = 30000; + await SpotifySingleton.Client.Player.ResumePlayback(plReq); + return Ok(); + } + + [HttpPost("AddToPlaylist")] + public async Task AddToPlaylist([FromBody] JsonObject obj) + { + string playlistId = (string)obj["playlistId"]; + string trackId = (string)obj["trackId"]; + await SpotifySingleton.Client.Playlists.AddItems(playlistId, new PlaylistAddItemsRequest(new List { trackId })); + return Ok(); + } + } +} diff --git a/SpotifyMigrator/Server/Program.cs b/SpotifyMigrator/Server/Program.cs new file mode 100644 index 0000000..58584a5 --- /dev/null +++ b/SpotifyMigrator/Server/Program.cs @@ -0,0 +1,32 @@ +using Microsoft.AspNetCore.ResponseCompression; +using SpotifyAPI.Web; +using SpotifyMigrator.Server; + +var builder = WebApplication.CreateBuilder(args); +builder.Services.AddControllersWithViews(); +builder.Services.AddRazorPages(); + +var app = builder.Build(); + +// Configure the HTTP request pipeline. +if (app.Environment.IsDevelopment()) +{ + app.UseWebAssemblyDebugging(); +} +else +{ + // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. + app.UseHsts(); +} + +app.UseHttpsRedirection(); +app.UseBlazorFrameworkFiles(); +app.UseStaticFiles(); + +app.UseRouting(); + +app.MapRazorPages(); +app.MapControllers(); +app.MapFallbackToFile("index.html"); + +app.Run(); diff --git a/SpotifyMigrator/Server/Properties/launchSettings.json b/SpotifyMigrator/Server/Properties/launchSettings.json new file mode 100644 index 0000000..944b075 --- /dev/null +++ b/SpotifyMigrator/Server/Properties/launchSettings.json @@ -0,0 +1,45 @@ +{ + "profiles": { + "http": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "dotnetRunMessages": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "applicationUrl": "http://localhost:5009" + }, + "https": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "dotnetRunMessages": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "applicationUrl": "https://localhost:7182;http://localhost:5009", + "hotReloadEnabled": true + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}" + } + }, + "iisExpress": { + "applicationUrl": "http://localhost:23096", + "sslPort": 44304 + }, + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:49668/", + "sslPort": 44372 + } + } +} \ No newline at end of file diff --git a/SpotifyMigrator/Server/SpotifyMigrator.Server.csproj b/SpotifyMigrator/Server/SpotifyMigrator.Server.csproj new file mode 100644 index 0000000..d939548 --- /dev/null +++ b/SpotifyMigrator/Server/SpotifyMigrator.Server.csproj @@ -0,0 +1,19 @@ + + + + net7.0 + enable + enable + + + + + + + + + + + + + diff --git a/SpotifyMigrator/Server/appsettings.Development.json b/SpotifyMigrator/Server/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/SpotifyMigrator/Server/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/SpotifyMigrator/Server/appsettings.json b/SpotifyMigrator/Server/appsettings.json new file mode 100644 index 0000000..9b3ef46 --- /dev/null +++ b/SpotifyMigrator/Server/appsettings.json @@ -0,0 +1,5 @@ +{ + "AllowedHosts": "*", + "ClientId": "", + "ClientSecret": "" +} diff --git a/SpotifyMigrator/Shared/PlaylistInfo.cs b/SpotifyMigrator/Shared/PlaylistInfo.cs new file mode 100644 index 0000000..15a4fca --- /dev/null +++ b/SpotifyMigrator/Shared/PlaylistInfo.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SpotifyMigrator.Shared +{ + public class PlaylistInfo + { + public string Title { get; set; } + public string PlaylistId { get; set; } + public bool Hide { get; set; } = false; + + public PlaylistInfo(string title, string playlistId) + { + Title = title; + PlaylistId = playlistId; + } + } +} diff --git a/SpotifyMigrator/Shared/SpotifyMigrator.Shared.csproj b/SpotifyMigrator/Shared/SpotifyMigrator.Shared.csproj new file mode 100644 index 0000000..933c212 --- /dev/null +++ b/SpotifyMigrator/Shared/SpotifyMigrator.Shared.csproj @@ -0,0 +1,16 @@ + + + + net7.0 + enable + enable + + + + + + + + + + diff --git a/SpotifyMigrator/Shared/SpotifySingleton.cs b/SpotifyMigrator/Shared/SpotifySingleton.cs new file mode 100644 index 0000000..223f878 --- /dev/null +++ b/SpotifyMigrator/Shared/SpotifySingleton.cs @@ -0,0 +1,10 @@ +using SpotifyAPI.Web; + +namespace SpotifyMigrator.Shared +{ + public class SpotifySingleton + { + public static SpotifyClient Client { get; set; } + public static PrivateUser Me { get; set; } + } +} diff --git a/app.js b/app.js deleted file mode 100644 index 9c894a7..0000000 --- a/app.js +++ /dev/null @@ -1,349 +0,0 @@ -const express = require("express"); -const ejs = require("ejs"); -const path = require("path"); -const SpotifyWebApi = require("spotify-web-api-node"); -const config = require("./config.json"); -var najax = ($ = require("najax")); -app = express(); -app.set("views", "./public"); -app.set("view engine", "ejs"); -app.use(express.static(__dirname + "/public")); - -let spotifyApi = new SpotifyWebApi(); -let oldAccount = true; -let oldUser; -let newUser; -let likedsongs = []; -let playlists = []; -let playlistsId = []; -let OwnedPlaylists = new Map(); - -app.listen(3000, () => { - console.log(`App listening at http://localhost:3000`); -}); - -app.get("/", (req, res) => { - res.sendFile(path.join(__dirname, "public/Menu.html")); -}); - -/** Migrate Liked Songs */ -app.get("/loginLikedSongs", (req, res) => { - let type; - let color; - let where = "/login"; - if (oldAccount) { - type = "old"; - color = "text-green-300"; - } else { - type = "new"; - color = "text-red-300"; - } - res.render(path.join(__dirname, "public/Login.ejs"), { - type, - color, - where, - }); -}); - -app.get("/Done", (req, res) => { - let title = "Done"; - let message = "Done transfering."; - res.render(path.join(__dirname, "public/GenericPage.ejs"), { - title, - message, - }); -}); - -app.get("/login", (req, res) => { - spotifyApi.resetCredentials(); - let state = "likedsongs"; - let scope = "user-library-read user-library-modify playlist-read-private"; - let redirect = "http://localhost:3000/callback"; - spotifyApi.setClientSecret(config.client_secret); - let url = new URL("https://accounts.spotify.com/authorize"); - url.searchParams.append("response_type", "code"); - url.searchParams.append("client_id", config.client_id); - url.searchParams.append("scope", scope); - url.searchParams.append("redirect_uri", redirect); - url.searchParams.append("state", state); - res.redirect(url.href); -}); - -app.get("/callback", (req, res) => { - let code = req.query.code; - let state = req.query.state; - let redirect = "http://localhost:3000/callback"; - let authOptions = { - type: "POST", - data: { - code: code, - redirect_uri: redirect, - grant_type: "authorization_code", - }, - headers: { - Authorization: - "Basic " + - new Buffer.from(config.client_id + ":" + config.client_secret).toString( - "base64" - ), - }, - json: true, - }; - if (state === "likedsongs") { - najax( - "https://accounts.spotify.com/api/token", - authOptions, - function (data, status) { - data = JSON.parse(data); - if (status === "success") { - spotifyApi.setAccessToken(data.access_token); - spotifyApi.setRefreshToken(data.refresh_token); - spotifyApi.getMe().then(async (data) => { - if (oldAccount) { - oldUser = data; - await fetchSongs(spotifyApi, 0, 50); - likedsongs = likedsongs.reverse(); - oldAccount = false; - res.redirect("/loginLikedSongs"); - } else { - newUser = data; - /** Wait page needed here */ - await addLikedSongs(spotifyApi, res); - newUser = null; - oldUser = null; - likedsongs = []; - oldAccount = true; - spotifyApi = new SpotifyWebApi(); - } - }); - } - } - ); - } else if (state == "transferplaylist") { - najax( - "https://accounts.spotify.com/api/token", - authOptions, - function (data, status) { - data = JSON.parse(data); - if (status === "success") { - spotifyApi.setAccessToken(data.access_token); - spotifyApi.setRefreshToken(data.refresh_token); - spotifyApi.getMe().then(async (data) => { - if (oldAccount) { - oldUser = data; - await fetchPlaylists(spotifyApi, 0, 50); - await getSongs(); - playlists = playlists.reverse(); - playlistsId = playlistsId.reverse(); - oldAccount = false; - res.redirect("/loginTransferPlaylist"); - } else { - newUser = data; - /** Wait page needed here */ - await addPlaylists(spotifyApi, res); - newUser = null; - oldUser = null; - playlists = []; - playlistsId = []; - OwnedPlaylists = new Map(); - oldAccount = true; - spotifyApi = new SpotifyWebApi(); - } - }); - } - } - ); - } -}); - -async function addLikedSongs(api, res) { - let i = 500; - likedsongs.forEach((song) => { - setTimeout(function () { - let number = i; - api.addToMySavedTracks([song]).then( - function (data) { - console.log(`Added track #${number}!`); - }, - function (err) { - console.log(Promise.resolve(err)); - } - ); - }, i); - i += 1000; - }); - let title = "Wait"; - let message = `Please wait while we transfer your liked songs (check your console). Liked songs will all be transfered in ${Math.floor( - i / 1000 - )} seconds`; - res.render(path.join(__dirname, "public/GenericPage.ejs"), { - title, - message, - i, - }); - console.log( - `Liked songs will all be transfered in ${Math.floor(i / 1000)} seconds` - ); - await new Promise((resolve) => setTimeout(resolve, i)); -} - -/* Gets all songs from the user's liked songs */ -async function fetchSongs(api, offset, limit) { - let data = await api.getMySavedTracks({ - limit: limit, - offset: offset, - }); - let response = data.body; - //for each liked song.. - response.items.forEach((song) => { - likedsongs.push(song.track.id); - }); - - if (response["next"] != null) { - let url_parts = new URL(response["next"]); - let offset = url_parts.searchParams.get("offset"); - let limit = url_parts.searchParams.get("limit"); - await fetchSongs(api, offset, limit); - } -} - -/** Migrate Playlists */ -app.get("/loginTransferPlaylist", (req, res) => { - let type; - let color; - let where = "/login2"; - if (oldAccount) { - type = "old"; - color = "text-green-300"; - } else { - type = "new"; - color = "text-red-300"; - } - res.render(path.join(__dirname, "public/Login.ejs"), { - type, - color, - where, - }); -}); - -app.get("/login2", (req, res) => { - spotifyApi.resetCredentials(); - let state = "transferplaylist"; - let scope = - "playlist-read-private playlist-modify-private playlist-modify-public playlist-read-collaborative"; - let redirect = "http://localhost:3000/callback"; - spotifyApi.setClientSecret(config.client_secret); - let url = new URL("https://accounts.spotify.com/authorize"); - url.searchParams.append("response_type", "code"); - url.searchParams.append("client_id", config.client_id); - url.searchParams.append("scope", scope); - url.searchParams.append("redirect_uri", redirect); - url.searchParams.append("state", state); - res.redirect(url.href); -}); - -async function fetchPlaylists(api, offset, limit) { - let data = await api.getUserPlaylists(oldUser.id, { - limit: limit, - offset: offset, - }); - let response = data.body; - - //for each playlist.. - await response.items.forEach((playlist) => { - playlists.push(playlist); - playlistsId.push(playlist.id); - }); - - if (response["next"] != null) { - let url_parts = new URL(response["next"]); - let offset = url_parts.searchParams.get("offset"); - let limit = url_parts.searchParams.get("limit"); - await fetchPlaylists(api, offset, limit); - } -} -async function getSongs() { - for (let i = 0; i < playlists.length; i++) { - if (playlists[i].owner.id === oldUser.id) { - let tempobject = {}; - tempobject.name = playlists[i].name; - tempobject.description = playlists[i].description; - tempobject.public = playlists[i].public; - tempobject.tracks = await getSongsFromSpecific(playlists[i].id, 0, 50); - await OwnedPlaylists.set(playlists[i].id, tempobject); - } - } -} - -let temp = []; -async function getSongsFromSpecific(id, offset, limit) { - if (offset === 0) { - temp = []; - } - let data = await spotifyApi.getPlaylistTracks(id, { - offset: offset, - limit: limit, - }); - let response = data.body; - let allsongs = response.items; - await allsongs.forEach((s) => { - temp.push(s.track.id); - }); - if (response["next"] != null) { - let url_parts = new URL(response["next"]); - let offset = url_parts.searchParams.get("offset"); - let limit = url_parts.searchParams.get("limit"); - await getSongsFromSpecific(id, offset, limit); - } - temp.reverse(); - return temp; -} - -async function addPlaylists(spotifyApi, res) { - let i = 500; - for (let j = 0; j < playlistsId.length; j++) { - setTimeout(async function () { - if (OwnedPlaylists.get(playlistsId[j]) !== undefined) { - let playlist = OwnedPlaylists.get(playlistsId[j]); - let data = await spotifyApi.createPlaylist(playlist.name, { - description: playlist.description, - public: playlist.public, - }); - let id = data.body.id; - let temptracks = playlist.tracks; - let tracks = []; - await temptracks.forEach((t) => { - if (t !== null) { - tracks.push(`spotify:track:${t}`); - } - }); - tracks.reverse(); - if (tracks.length > 0) { - if (tracks.length > 100) { - while (tracks.length) { - await spotifyApi.addTracksToPlaylist(id, tracks.splice(0, 100)); - } - } else { - await spotifyApi.addTracksToPlaylist(id, tracks); - } - } - } else { - await spotifyApi.followPlaylist(playlistsId[j]); - } - }, i); - i += 500; - } - let title = "Wait"; - let message = `Please wait while we transfer your playlists (check your console). Playlists will all be transfered in ${Math.floor( - i / 1000 - )} seconds`; - res.render(path.join(__dirname, "public/GenericPage.ejs"), { - title, - message, - i, - }); - console.log( - `Playlists will all be transfered in ${Math.floor(i / 1000)} seconds` - ); - await new Promise((resolve) => setTimeout(resolve, i)); -} diff --git a/config.json b/config.json deleted file mode 100644 index 5bbe132..0000000 --- a/config.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "client_id": "CHANGEME", - "client_secret": "CHANGEME" -} \ No newline at end of file diff --git a/meta/Save.PNG b/meta/Save.PNG deleted file mode 100644 index d9efd1b20941f07596197d0e23f07989c1a31e70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48726 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%0A@T(Oj=7J6+o;ioUE?Q;NzvSXSk-MpO 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 q{Lj@DJJQ;0B5po36cC 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 diff --git a/meta/UserAndAccess.PNG b/meta/UserAndAccess.PNG deleted file mode 100644 index 5348342075d811530c383d4bdf328ae84cb3f151..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19918 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 EFRphV2LJ#7 diff --git a/package.json b/package.json deleted file mode 100644 index f38917f..0000000 --- a/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "dependencies": { - "ejs": "^3.1.6", - "express": "^4.17.1", - "najax": "^1.0.7", - "spotify-web-api-node": "^5.0.2" - } -} diff --git a/public/GenericPage.ejs b/public/GenericPage.ejs deleted file mode 100644 index 72010b4..0000000 --- a/public/GenericPage.ejs +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - <%=title%> - - - - -
-
-

- <%=message%> -

-
-
- <% if(typeof i != 'undefined') { %> - - <% } %> - - <% if(typeof i != 'undefined') { %> - - <% } %> - diff --git a/public/Login.ejs b/public/Login.ejs deleted file mode 100644 index c481c11..0000000 --- a/public/Login.ejs +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - Login - - -
- - diff --git a/public/Menu.html b/public/Menu.html deleted file mode 100644 index 78a8512..0000000 --- a/public/Menu.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - Menu - - - - - \ No newline at end of file diff --git a/public/css/index.css b/public/css/index.css deleted file mode 100644 index a9e8215..0000000 --- a/public/css/index.css +++ /dev/null @@ -1,15 +0,0 @@ -@import url("https://fonts.googleapis.com/css2?family=Inter&display=swap"); -body { - font-family: "Inter", sans-serif; - background-color: #222; -} - -.link { - color: #fff; - background-color: #027ad6; -} - -.linkRed { - color: #fff; - background-color: #d60237; -} From f94c5885096f65952b3814771df5302c833f56e2 Mon Sep 17 00:00:00 2001 From: JustSxm Date: Mon, 10 Apr 2023 21:30:24 -0400 Subject: [PATCH 2/7] Prevent me from pushing my client secret --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 8dd4607..e9967bf 100644 --- a/.gitignore +++ b/.gitignore @@ -395,4 +395,6 @@ FodyWeavers.xsd *.msp # JetBrains Rider -*.sln.iml \ No newline at end of file +*.sln.iml +/SpotifyMigrator/Client/wwwroot/appsettings.json +/SpotifyMigrator/Server/appsettings.json From 9100c3837148b33731d15c6c0ac13b316e95f8cd Mon Sep 17 00:00:00 2001 From: JustSxm Date: Mon, 17 Apr 2023 11:41:08 -0400 Subject: [PATCH 3/7] Start adding v2 --- SpotifyMigrator.sln | 6 ++--- SpotifyMigrator/Client/Pages/Home.razor | 5 ++++ .../Client/Pages/LikedToMultiple.razor | 2 +- .../Client/Pages/MigrateLikedSongs.razor | 25 +++++++++++++++++++ .../Server/Controllers/SpotifyController.cs | 2 +- 5 files changed, 35 insertions(+), 5 deletions(-) create mode 100644 SpotifyMigrator/Client/Pages/MigrateLikedSongs.razor diff --git a/SpotifyMigrator.sln b/SpotifyMigrator.sln index 468fd1a..ad3bcc1 100644 --- a/SpotifyMigrator.sln +++ b/SpotifyMigrator.sln @@ -3,11 +3,11 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.4.33205.214 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpotifyMigrator.Server", "SpotifyMigrator\Server\SpotifyMigrator.Server.csproj", "{9B271A4A-8F60-4AC2-AA1E-C60250D917BB}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SpotifyMigrator.Server", "SpotifyMigrator\Server\SpotifyMigrator.Server.csproj", "{9B271A4A-8F60-4AC2-AA1E-C60250D917BB}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpotifyMigrator.Client", "SpotifyMigrator\Client\SpotifyMigrator.Client.csproj", "{C7017DAA-8CDD-4BCB-AC50-38E0C1DE2B17}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SpotifyMigrator.Client", "SpotifyMigrator\Client\SpotifyMigrator.Client.csproj", "{C7017DAA-8CDD-4BCB-AC50-38E0C1DE2B17}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpotifyMigrator.Shared", "SpotifyMigrator\Shared\SpotifyMigrator.Shared.csproj", "{89698DF9-F45B-4678-B894-7547DB059970}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SpotifyMigrator.Shared", "SpotifyMigrator\Shared\SpotifyMigrator.Shared.csproj", "{89698DF9-F45B-4678-B894-7547DB059970}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/SpotifyMigrator/Client/Pages/Home.razor b/SpotifyMigrator/Client/Pages/Home.razor index b38c352..7e226db 100644 --- a/SpotifyMigrator/Client/Pages/Home.razor +++ b/SpotifyMigrator/Client/Pages/Home.razor @@ -7,6 +7,7 @@

Spotify Migrator

What do you want to do?

+ @code { @@ -14,4 +15,8 @@ { NavManager.NavigateTo("/likedtomultiple"); } + private async Task GoToMigrateLikedSongs() + { + NavManager.NavigateTo("/migratelikedsongs"); + } } \ No newline at end of file diff --git a/SpotifyMigrator/Client/Pages/LikedToMultiple.razor b/SpotifyMigrator/Client/Pages/LikedToMultiple.razor index 3f4f25d..cbe929b 100644 --- a/SpotifyMigrator/Client/Pages/LikedToMultiple.razor +++ b/SpotifyMigrator/Client/Pages/LikedToMultiple.razor @@ -56,7 +56,7 @@ private async Task CreatePlaylist() { var response = await HttpClient.PostAsJsonAsync("api/Spotify/CreatePlaylist", new { Name = CurrentValue }); - SpotifyInfos.Playlists.Add(await response.Content.ReadFromJsonAsync();); + SpotifyInfos.Playlists.Add(await response.Content.ReadFromJsonAsync()); CurrentValue = ""; } diff --git a/SpotifyMigrator/Client/Pages/MigrateLikedSongs.razor b/SpotifyMigrator/Client/Pages/MigrateLikedSongs.razor new file mode 100644 index 0000000..eb7d917 --- /dev/null +++ b/SpotifyMigrator/Client/Pages/MigrateLikedSongs.razor @@ -0,0 +1,25 @@ +@page "/migratelikedsongs" +@using SpotifyAPI.Web; +@using Microsoft.Extensions.Configuration +@inject NavigationManager NavManager + +
+

Spotify Migrator

+

Make sure to logout first

+ +

Login with your old account

+ + +
+ +@code { + private async Task Logout() + { + + } + + private async Task LoginOldAccount() + { + + } +} diff --git a/SpotifyMigrator/Server/Controllers/SpotifyController.cs b/SpotifyMigrator/Server/Controllers/SpotifyController.cs index 3b79ab9..31e4938 100644 --- a/SpotifyMigrator/Server/Controllers/SpotifyController.cs +++ b/SpotifyMigrator/Server/Controllers/SpotifyController.cs @@ -48,7 +48,7 @@ public async Task Songs() Queue tracks = new Queue(); var request = new LibraryTracksRequest(); request.Limit = 50; - request.Offset = 0; + request.Offset = int.Parse(Configuration["Offset"]); while (true) { var test = await SpotifySingleton.Client.Library.GetTracks(request); From 02322cb9c4e4374967b6c4724f27189ce9394d33 Mon Sep 17 00:00:00 2001 From: JustSxm Date: Sat, 10 Jun 2023 23:57:09 -0400 Subject: [PATCH 4/7] Account Migration --- SpotifyMigrator/Client/Pages/Done.razor | 2 +- SpotifyMigrator/Client/Pages/Home.razor | 8 +- .../Client/Pages/HomeMigrate.razor | 75 +++++++++++ .../Client/Pages/HomeMigrate.razor.css | 66 ++++++++++ SpotifyMigrator/Client/Pages/Index.razor | 14 ++- .../Client/Pages/LikedToMultiple.razor | 2 +- .../Client/Pages/LoginNewAccount.razor | 33 +++++ .../Client/SpotifyMigrator.Client.csproj | 1 + SpotifyMigrator/Client/wwwroot/index.html | 2 +- .../Server/Controllers/SpotifyController.cs | 39 ++++-- SpotifyMigrator/Server/Program.cs | 15 ++- SpotifyMigrator/Server/SignalRHub.cs | 12 ++ SpotifyMigrator/Server/SignalRWorker.cs | 119 ++++++++++++++++++ .../Server/SpotifyMigrator.Server.csproj | 1 + SpotifyMigrator/Shared/MigrateStartDTO.cs | 14 +++ .../Shared/SpotifyMigrator.Shared.csproj | 1 + SpotifyMigrator/Shared/SpotifySingleton.cs | 5 +- 17 files changed, 389 insertions(+), 20 deletions(-) create mode 100644 SpotifyMigrator/Client/Pages/HomeMigrate.razor create mode 100644 SpotifyMigrator/Client/Pages/HomeMigrate.razor.css create mode 100644 SpotifyMigrator/Client/Pages/LoginNewAccount.razor create mode 100644 SpotifyMigrator/Server/SignalRHub.cs create mode 100644 SpotifyMigrator/Server/SignalRWorker.cs create mode 100644 SpotifyMigrator/Shared/MigrateStartDTO.cs diff --git a/SpotifyMigrator/Client/Pages/Done.razor b/SpotifyMigrator/Client/Pages/Done.razor index ce15ddd..689af3c 100644 --- a/SpotifyMigrator/Client/Pages/Done.razor +++ b/SpotifyMigrator/Client/Pages/Done.razor @@ -8,5 +8,5 @@

Spotify Migrator

It's ugly: but it works.

-

It's done! Hooray!'

+

It's done! Hooray! Restart the application to assure a fresh start.

diff --git a/SpotifyMigrator/Client/Pages/Home.razor b/SpotifyMigrator/Client/Pages/Home.razor index b38c352..fcd5eb7 100644 --- a/SpotifyMigrator/Client/Pages/Home.razor +++ b/SpotifyMigrator/Client/Pages/Home.razor @@ -6,7 +6,8 @@

Spotify Migrator

What do you want to do?

- + +
@code { @@ -14,4 +15,9 @@ { NavManager.NavigateTo("/likedtomultiple"); } + + private async Task GoToMigrateAccount() + { + NavManager.NavigateTo("/loginnewaccount"); + } } \ No newline at end of file diff --git a/SpotifyMigrator/Client/Pages/HomeMigrate.razor b/SpotifyMigrator/Client/Pages/HomeMigrate.razor new file mode 100644 index 0000000..ce4b46b --- /dev/null +++ b/SpotifyMigrator/Client/Pages/HomeMigrate.razor @@ -0,0 +1,75 @@ +@page "/homemigrate" +@using SpotifyAPI.Web; +@using Microsoft.AspNetCore.SignalR.Client +@using Microsoft.Extensions.Configuration +@using Blazorise.LoadingIndicator +@using SpotifyMigrator.Shared; +@implements IAsyncDisposable +@inject NavigationManager NavManager +@inject HttpClient HttpClient +@inject IJSRuntime JSRuntime; + +
+

Spotify Migrator

+ @if (!startedTransfer) + { +

What do you want to do?

+ Migrate liked songs in order + Migrate your playlists in order + + } else { +

@Title

+
+
+ } +
+ +@code { + private HubConnection? hubConnection; + bool startedTransfer = false; + bool migrateLikedSongs; + bool migratePlaylists; + int Percent = 15; + string Title = ""; + + private async Task StartTransfer() + { + startedTransfer = true; + Title = "Starting transfer"; + + var body = new MigrateStartDTO() + { + LikedSongs = migrateLikedSongs, + Playlists = migratePlaylists + }; + await HttpClient.PostAsJsonAsync("api/Spotify/MigrateAccount", body); + + } + + protected override async Task OnInitializedAsync() + { + hubConnection = new HubConnectionBuilder() + .WithUrl(NavManager.ToAbsoluteUri("/hub")) + .Build(); + + hubConnection.On("MigrateUpdate", (message) => + { + if(message == "Done") + { + NavManager.NavigateTo("/done"); + } + Title = message; + StateHasChanged(); + }); + + await hubConnection.StartAsync(); + } + + public async ValueTask DisposeAsync() + { + if (hubConnection is not null) + { + await hubConnection.DisposeAsync(); + } + } +} \ No newline at end of file diff --git a/SpotifyMigrator/Client/Pages/HomeMigrate.razor.css b/SpotifyMigrator/Client/Pages/HomeMigrate.razor.css new file mode 100644 index 0000000..6bb4bb0 --- /dev/null +++ b/SpotifyMigrator/Client/Pages/HomeMigrate.razor.css @@ -0,0 +1,66 @@ +.lds-ellipsis { + display: inline-block; + position: relative; + width: 80px; + height: 80px; +} + + .lds-ellipsis div { + position: absolute; + top: 33px; + width: 13px; + height: 13px; + border-radius: 50%; + background: #0094ff; + animation-timing-function: cubic-bezier(0, 1, 1, 0); + } + + .lds-ellipsis div:nth-child(1) { + left: 8px; + animation: lds-ellipsis1 0.6s infinite; + } + + .lds-ellipsis div:nth-child(2) { + left: 8px; + animation: lds-ellipsis2 0.6s infinite; + } + + .lds-ellipsis div:nth-child(3) { + left: 32px; + animation: lds-ellipsis2 0.6s infinite; + } + + .lds-ellipsis div:nth-child(4) { + left: 56px; + animation: lds-ellipsis3 0.6s infinite; + } + +@keyframes lds-ellipsis1 { + 0% { + transform: scale(0); + } + + 100% { + transform: scale(1); + } +} + +@keyframes lds-ellipsis3 { + 0% { + transform: scale(1); + } + + 100% { + transform: scale(0); + } +} + +@keyframes lds-ellipsis2 { + 0% { + transform: translate(0, 0); + } + + 100% { + transform: translate(24px, 0); + } +} diff --git a/SpotifyMigrator/Client/Pages/Index.razor b/SpotifyMigrator/Client/Pages/Index.razor index 80391cc..493a7a7 100644 --- a/SpotifyMigrator/Client/Pages/Index.razor +++ b/SpotifyMigrator/Client/Pages/Index.razor @@ -4,11 +4,16 @@ @inject IConfiguration Configuration @inject HttpClient HttpClient @inject NavigationManager NavManager +@inject IJSRuntime JSRuntime +

Spotify Migrator

It's ugly: but it works.

- +

Make sure to logout first

+ + + * If you're using this to migrate songs to a new account, login with your old account.
@code { @@ -16,9 +21,14 @@ { var loginRequest = new LoginRequest(new Uri("http://localhost:5009/api/Spotify"), Configuration["ClientId"] ?? throw new Exception("Client ID not set in appsettings"), LoginRequest.ResponseType.Code) { - Scope = new[] { Scopes.PlaylistModifyPrivate, Scopes.PlaylistModifyPublic, Scopes.PlaylistReadPrivate, Scopes.UserLibraryRead, Scopes.UserModifyPlaybackState, Scopes.UserReadPrivate } + Scope = new[] { Scopes.PlaylistModifyPrivate, Scopes.PlaylistModifyPublic, Scopes.PlaylistReadPrivate, Scopes.UserLibraryRead, Scopes.UserModifyPlaybackState, Scopes.UserReadPrivate, Scopes.UserLibraryModify } }; var uri = loginRequest.ToUri().AbsoluteUri; NavManager.NavigateTo(uri); } + + private async Task Logout() + { + await JSRuntime.InvokeAsync("open", "https://www.spotify.com/ca-en/logout/", "_blank"); + } } \ No newline at end of file diff --git a/SpotifyMigrator/Client/Pages/LikedToMultiple.razor b/SpotifyMigrator/Client/Pages/LikedToMultiple.razor index 3f4f25d..cbe929b 100644 --- a/SpotifyMigrator/Client/Pages/LikedToMultiple.razor +++ b/SpotifyMigrator/Client/Pages/LikedToMultiple.razor @@ -56,7 +56,7 @@ private async Task CreatePlaylist() { var response = await HttpClient.PostAsJsonAsync("api/Spotify/CreatePlaylist", new { Name = CurrentValue }); - SpotifyInfos.Playlists.Add(await response.Content.ReadFromJsonAsync();); + SpotifyInfos.Playlists.Add(await response.Content.ReadFromJsonAsync()); CurrentValue = ""; } diff --git a/SpotifyMigrator/Client/Pages/LoginNewAccount.razor b/SpotifyMigrator/Client/Pages/LoginNewAccount.razor new file mode 100644 index 0000000..346f8c1 --- /dev/null +++ b/SpotifyMigrator/Client/Pages/LoginNewAccount.razor @@ -0,0 +1,33 @@ +@page "/loginnewaccount" +@using SpotifyAPI.Web; +@using Microsoft.Extensions.Configuration +@inject IConfiguration Configuration +@inject HttpClient HttpClient +@inject NavigationManager NavManager +@inject IJSRuntime JSRuntime + +
+

Spotify Migrator

+

It's ugly: but it works.

+

Make sure to logout first

+ + + +
+ +@code { + private async Task LoginToSpotify() + { + var loginRequest = new LoginRequest(new Uri("http://localhost:5009/api/Spotify"), Configuration["ClientId"] ?? throw new Exception("Client ID not set in appsettings"), LoginRequest.ResponseType.Code) + { + Scope = new[] { Scopes.PlaylistModifyPrivate, Scopes.PlaylistModifyPublic, Scopes.PlaylistReadPrivate, Scopes.UserLibraryRead, Scopes.UserModifyPlaybackState, Scopes.UserReadPrivate, Scopes.UserLibraryModify } + }; + var uri = loginRequest.ToUri().AbsoluteUri; + NavManager.NavigateTo(uri); + } + + private async Task Logout() + { + await JSRuntime.InvokeAsync("open", "https://www.spotify.com/ca-en/logout/", "_blank"); + } +} \ No newline at end of file diff --git a/SpotifyMigrator/Client/SpotifyMigrator.Client.csproj b/SpotifyMigrator/Client/SpotifyMigrator.Client.csproj index 220b29d..f166721 100644 --- a/SpotifyMigrator/Client/SpotifyMigrator.Client.csproj +++ b/SpotifyMigrator/Client/SpotifyMigrator.Client.csproj @@ -11,6 +11,7 @@ + diff --git a/SpotifyMigrator/Client/wwwroot/index.html b/SpotifyMigrator/Client/wwwroot/index.html index db2f593..b7a9fa4 100644 --- a/SpotifyMigrator/Client/wwwroot/index.html +++ b/SpotifyMigrator/Client/wwwroot/index.html @@ -8,9 +8,9 @@ - + diff --git a/SpotifyMigrator/Server/Controllers/SpotifyController.cs b/SpotifyMigrator/Server/Controllers/SpotifyController.cs index 3b79ab9..9551377 100644 --- a/SpotifyMigrator/Server/Controllers/SpotifyController.cs +++ b/SpotifyMigrator/Server/Controllers/SpotifyController.cs @@ -1,7 +1,5 @@ -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc; using SpotifyAPI.Web; -using SpotifyMigrator.Client; using SpotifyMigrator.Shared; using System.Text.Json.Nodes; @@ -13,9 +11,11 @@ public class SpotifyController : ControllerBase { public IConfiguration Configuration { get; set; } - public SpotifyController(IConfiguration configuration) + public SpotifySingleton Spotify { get; set; } + public SpotifyController(IConfiguration configuration, SpotifySingleton spotifySingleton) { Configuration = configuration; + Spotify = spotifySingleton; } [HttpGet] @@ -28,17 +28,27 @@ public async Task GetAuthentificationResponse(string code) .CreateDefault() .WithAuthenticator(new AuthorizationCodeAuthenticator(Configuration["ClientId"], Configuration["ClientSecret"], response)); - SpotifySingleton.Client = new SpotifyClient(config); - SpotifySingleton.Me = await SpotifySingleton.Client.UserProfile.Current(); + var spotifyClient = new SpotifyClient(config); + Spotify.Client.Add(spotifyClient); + Spotify.Me.Add(await spotifyClient.UserProfile.Current()); - Response.Redirect("/home"); + if (Spotify.Client.Count == 1) + { + Response.Redirect("/home"); + } else + { + Response.Redirect("/homemigrate"); + } } + /* + * Single Account Endpoints + */ [HttpPost("CreatePlaylist")] public async Task CreatePlaylist([FromBody] JsonObject name) { string playlistName = (string)name["name"]; - var playlist = await SpotifySingleton.Client.Playlists.Create(SpotifySingleton.Me.Id, new PlaylistCreateRequest(playlistName)); + var playlist = await Spotify.Client.First().Playlists.Create(Spotify.Me.First().Id, new PlaylistCreateRequest(playlistName)); return Ok(new PlaylistInfo(playlistName, playlist.Id)); } @@ -51,7 +61,7 @@ public async Task Songs() request.Offset = 0; while (true) { - var test = await SpotifySingleton.Client.Library.GetTracks(request); + var test = await Spotify.Client.First().Library.GetTracks(request); foreach (var item in test.Items) { tracks.Enqueue(item); @@ -73,7 +83,7 @@ public async Task Playback([FromBody] JsonObject playback) var plReq = new PlayerResumePlaybackRequest(); plReq.Uris = new List { uri }; plReq.PositionMs = 30000; - await SpotifySingleton.Client.Player.ResumePlayback(plReq); + await Spotify.Client.First().Player.ResumePlayback(plReq); return Ok(); } @@ -82,7 +92,14 @@ public async Task AddToPlaylist([FromBody] JsonObject obj) { string playlistId = (string)obj["playlistId"]; string trackId = (string)obj["trackId"]; - await SpotifySingleton.Client.Playlists.AddItems(playlistId, new PlaylistAddItemsRequest(new List { trackId })); + await Spotify.Client.First().Playlists.AddItems(playlistId, new PlaylistAddItemsRequest(new List { trackId })); + return Ok(); + } + + [HttpPost("MigrateAccount")] + public async Task MigrateAccount([FromBody] MigrateStartDTO body) + { + Spotify.Migration = body; return Ok(); } } diff --git a/SpotifyMigrator/Server/Program.cs b/SpotifyMigrator/Server/Program.cs index 58584a5..614bab9 100644 --- a/SpotifyMigrator/Server/Program.cs +++ b/SpotifyMigrator/Server/Program.cs @@ -1,10 +1,18 @@ using Microsoft.AspNetCore.ResponseCompression; -using SpotifyAPI.Web; using SpotifyMigrator.Server; +using SpotifyMigrator.Shared; var builder = WebApplication.CreateBuilder(args); +builder.Services.AddSingleton(); builder.Services.AddControllersWithViews(); builder.Services.AddRazorPages(); +builder.Services.AddSignalR(); +builder.Services.AddResponseCompression(opts => +{ + opts.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat( + new[] { "application/octet-stream" }); +}); +builder.Services.AddHostedService(); var app = builder.Build(); @@ -17,8 +25,12 @@ { // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); + app.UseResponseCompression(); } + + + app.UseHttpsRedirection(); app.UseBlazorFrameworkFiles(); app.UseStaticFiles(); @@ -27,6 +39,7 @@ app.MapRazorPages(); app.MapControllers(); +app.MapHub("/hub"); app.MapFallbackToFile("index.html"); app.Run(); diff --git a/SpotifyMigrator/Server/SignalRHub.cs b/SpotifyMigrator/Server/SignalRHub.cs new file mode 100644 index 0000000..0e16632 --- /dev/null +++ b/SpotifyMigrator/Server/SignalRHub.cs @@ -0,0 +1,12 @@ +using Microsoft.AspNetCore.SignalR; + +namespace SpotifyMigrator.Server +{ + public class SignalRHub: Hub + { + public async Task SendMessage(string channel, string message) + { + await Clients.All.SendAsync(channel, message); + } + } +} diff --git a/SpotifyMigrator/Server/SignalRWorker.cs b/SpotifyMigrator/Server/SignalRWorker.cs new file mode 100644 index 0000000..76286e3 --- /dev/null +++ b/SpotifyMigrator/Server/SignalRWorker.cs @@ -0,0 +1,119 @@ +using Microsoft.AspNetCore.SignalR; +using SpotifyAPI.Web; +using SpotifyMigrator.Shared; +using System.Diagnostics; + +namespace SpotifyMigrator.Server +{ + public class SignalRWorker : BackgroundService + { + private readonly IHubContext _hub; + private readonly SpotifySingleton Spotify; + + + public SignalRWorker(IHubContext reportHub, SpotifySingleton spotifySingleton) + { + _hub = reportHub; + Spotify = spotifySingleton; + } + + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + while (!stoppingToken.IsCancellationRequested) + { + if(Spotify.Migration != null) + { + await Migrate(); + } + await Task.Delay(TimeSpan.FromSeconds(1), stoppingToken); + } + } + + private async Task Migrate() + { + await _hub.Clients.All.SendAsync("MigrateUpdate", "Retrieving accounts"); + var oldClient = Spotify.Client.First(); + var newClient = Spotify.Client.Last(); + var oldUser = Spotify.Me.First(); + var newUser = Spotify.Me.Last(); + var payload = Spotify.Migration; + + if (payload.LikedSongs) + { + await _hub.Clients.All.SendAsync("MigrateUpdate", "Fetching songs"); + var pageOne = await oldClient.Library.GetTracks(); + List tracks = (List)await oldClient.PaginateAll(pageOne); + tracks.Reverse(); // Oldest first + + for (var i = 0; i < tracks.Count; i++) + { + var track = tracks[i]; + await _hub.Clients.All.SendAsync("MigrateUpdate", $"Migrating songs [{track.Track.Name}] ({i + 1} / {tracks.Count})"); + LibrarySaveTracksRequest request = new(new List() { track.Track.Id }); + await newClient.Library.SaveTracks(request); + await Task.Delay(TimeSpan.FromSeconds(1)); + } + } + + if(payload.Playlists) { + await _hub.Clients.All.SendAsync("MigrateUpdate", "Fetching playlists"); + var pageOne = await oldClient.Playlists.CurrentUsers(); + List playlists = (List)await oldClient.PaginateAll(pageOne); + playlists.Reverse(); + + for(var i = 0; i < playlists.Count;i++) + { + var playlist = playlists[i]; + if (playlist.Owner.Id == oldUser.Id) { + await _hub.Clients.All.SendAsync("MigrateUpdate", $"Migrating playlists [{playlist.Name}] ({i + 1} / {playlists.Count})"); + PlaylistCreateRequest request = new(playlist.Name); + request.Description = playlist.Description; + request.Public = playlist.Public; + FullPlaylist newPlaylist = await newClient.Playlists.Create(newUser.Id, request); + + var pageOneTracks = await oldClient.Playlists.GetItems(playlist.Id); + List> tracks = (List>)await oldClient.PaginateAll(pageOneTracks); + tracks.Reverse(); + + while (tracks.Count != 0) { + int count = Math.Min(tracks.Count, 100); + var tracksToAdd = tracks.Take(count); + var ids = new List(); + foreach (var item in tracksToAdd) + { + switch (item.Track.Type) + { + case ItemType.Track: + ids.Add(((FullTrack)item.Track).Uri); + break; + + case ItemType.Episode: + ids.Add(((FullEpisode)item.Track).Uri); + break; + } + } + + + tracks.RemoveRange(0, count); + PlaylistAddItemsRequest addItemsRequest = new(ids); + await newClient.Playlists.AddItems(newPlaylist.Id, addItemsRequest); + await Task.Delay(TimeSpan.FromSeconds(1)); + } + } + else + { + try + { + await newClient.Follow.FollowPlaylist(playlist.Id); + } + catch (APIException) { } + } + + } + } + await _hub.Clients.All.SendAsync("MigrateUpdate", "Done"); + Spotify.Migration = null; + } + } +} diff --git a/SpotifyMigrator/Server/SpotifyMigrator.Server.csproj b/SpotifyMigrator/Server/SpotifyMigrator.Server.csproj index d939548..00a5358 100644 --- a/SpotifyMigrator/Server/SpotifyMigrator.Server.csproj +++ b/SpotifyMigrator/Server/SpotifyMigrator.Server.csproj @@ -8,6 +8,7 @@ + diff --git a/SpotifyMigrator/Shared/MigrateStartDTO.cs b/SpotifyMigrator/Shared/MigrateStartDTO.cs new file mode 100644 index 0000000..66e7fd9 --- /dev/null +++ b/SpotifyMigrator/Shared/MigrateStartDTO.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SpotifyMigrator.Shared +{ + public class MigrateStartDTO + { + public bool LikedSongs { get; set; } + public bool Playlists { get; set; } + } +} diff --git a/SpotifyMigrator/Shared/SpotifyMigrator.Shared.csproj b/SpotifyMigrator/Shared/SpotifyMigrator.Shared.csproj index 933c212..78a5967 100644 --- a/SpotifyMigrator/Shared/SpotifyMigrator.Shared.csproj +++ b/SpotifyMigrator/Shared/SpotifyMigrator.Shared.csproj @@ -7,6 +7,7 @@ + diff --git a/SpotifyMigrator/Shared/SpotifySingleton.cs b/SpotifyMigrator/Shared/SpotifySingleton.cs index 223f878..ee99185 100644 --- a/SpotifyMigrator/Shared/SpotifySingleton.cs +++ b/SpotifyMigrator/Shared/SpotifySingleton.cs @@ -4,7 +4,8 @@ namespace SpotifyMigrator.Shared { public class SpotifySingleton { - public static SpotifyClient Client { get; set; } - public static PrivateUser Me { get; set; } + public List Client = new(); + public List Me = new(); + public MigrateStartDTO? Migration = null; } } From df0b124c1a2b7f7d05261f0c3211925b4fc7d48b Mon Sep 17 00:00:00 2001 From: JustSxm Date: Sun, 11 Jun 2023 12:59:00 -0400 Subject: [PATCH 5/7] Change to the Logout Button so it doesnt throw an error --- SpotifyMigrator/Client/Pages/HomeMigrate.razor | 1 - SpotifyMigrator/Client/Pages/Index.razor | 7 +------ SpotifyMigrator/Client/Pages/LoginNewAccount.razor | 8 +------- 3 files changed, 2 insertions(+), 14 deletions(-) diff --git a/SpotifyMigrator/Client/Pages/HomeMigrate.razor b/SpotifyMigrator/Client/Pages/HomeMigrate.razor index ce4b46b..3d89a77 100644 --- a/SpotifyMigrator/Client/Pages/HomeMigrate.razor +++ b/SpotifyMigrator/Client/Pages/HomeMigrate.razor @@ -2,7 +2,6 @@ @using SpotifyAPI.Web; @using Microsoft.AspNetCore.SignalR.Client @using Microsoft.Extensions.Configuration -@using Blazorise.LoadingIndicator @using SpotifyMigrator.Shared; @implements IAsyncDisposable @inject NavigationManager NavManager diff --git a/SpotifyMigrator/Client/Pages/Index.razor b/SpotifyMigrator/Client/Pages/Index.razor index 493a7a7..3c0dba7 100644 --- a/SpotifyMigrator/Client/Pages/Index.razor +++ b/SpotifyMigrator/Client/Pages/Index.razor @@ -11,7 +11,7 @@

Spotify Migrator

It's ugly: but it works.

Make sure to logout first

- + * If you're using this to migrate songs to a new account, login with your old account. @@ -26,9 +26,4 @@ var uri = loginRequest.ToUri().AbsoluteUri; NavManager.NavigateTo(uri); } - - private async Task Logout() - { - await JSRuntime.InvokeAsync("open", "https://www.spotify.com/ca-en/logout/", "_blank"); - } } \ No newline at end of file diff --git a/SpotifyMigrator/Client/Pages/LoginNewAccount.razor b/SpotifyMigrator/Client/Pages/LoginNewAccount.razor index 346f8c1..b1de141 100644 --- a/SpotifyMigrator/Client/Pages/LoginNewAccount.razor +++ b/SpotifyMigrator/Client/Pages/LoginNewAccount.razor @@ -10,8 +10,7 @@

Spotify Migrator

It's ugly: but it works.

Make sure to logout first

- - + @@ -25,9 +24,4 @@ var uri = loginRequest.ToUri().AbsoluteUri; NavManager.NavigateTo(uri); } - - private async Task Logout() - { - await JSRuntime.InvokeAsync("open", "https://www.spotify.com/ca-en/logout/", "_blank"); - } } \ No newline at end of file From 5d1c66d798c98a2b421dc0eb0af5feabcf406051 Mon Sep 17 00:00:00 2001 From: JustSxm Date: Sun, 11 Jun 2023 13:00:33 -0400 Subject: [PATCH 6/7] Remove what was started --- .../Client/Pages/MigrateLikedSongs.razor | 25 ------------------- 1 file changed, 25 deletions(-) delete mode 100644 SpotifyMigrator/Client/Pages/MigrateLikedSongs.razor diff --git a/SpotifyMigrator/Client/Pages/MigrateLikedSongs.razor b/SpotifyMigrator/Client/Pages/MigrateLikedSongs.razor deleted file mode 100644 index eb7d917..0000000 --- a/SpotifyMigrator/Client/Pages/MigrateLikedSongs.razor +++ /dev/null @@ -1,25 +0,0 @@ -@page "/migratelikedsongs" -@using SpotifyAPI.Web; -@using Microsoft.Extensions.Configuration -@inject NavigationManager NavManager - -
-

Spotify Migrator

-

Make sure to logout first

- -

Login with your old account

- - -
- -@code { - private async Task Logout() - { - - } - - private async Task LoginOldAccount() - { - - } -} From 7951ca7aa08688cc08911f46d8fe6edec406d17a Mon Sep 17 00:00:00 2001 From: JustSxm Date: Sun, 11 Jun 2023 13:53:24 -0400 Subject: [PATCH 7/7] ReadMe --- README.md | 112 +++++++++++++++++++++++++++++++++++++++++++++++++ meta/Step1.PNG | Bin 0 -> 18069 bytes meta/Step2.PNG | Bin 0 -> 65135 bytes meta/Step3.PNG | Bin 0 -> 61414 bytes meta/Step4.PNG | Bin 0 -> 62663 bytes 5 files changed, 112 insertions(+) create mode 100644 README.md create mode 100644 meta/Step1.PNG create mode 100644 meta/Step2.PNG create mode 100644 meta/Step3.PNG create mode 100644 meta/Step4.PNG diff --git a/README.md b/README.md new file mode 100644 index 0000000..5da33a4 --- /dev/null +++ b/README.md @@ -0,0 +1,112 @@ +![.NET](https://img.shields.io/badge/.NET-512BD4?style=for-the-badge&logo=dotnet&logoColor=white) +![C#](https://img.shields.io/badge/C%23-239120?style=for-the-badge&logo=c-sharp&logoColor=white) +![Status](https://img.shields.io/badge/status-working-brightgreen?style=for-the-badge) + +# Spotify Migrator + +Spotify Migrator is an application to help you transfer your data from an account to another account or to split your liked songs into multiples. + +I never found an online service who did what I wanted, so I made this. + +### If you find it useful, make sure to star Thank you!. + +
+Table of Contents + +- [Features](#features) +- [Requirement](#requirement) +- [Configuration](#configuration) + - [Spotify App](#spotifyappconfiguration) + - [App](#appconfiguration) +- [Running](#running) +- [License](#license) + +
+ + + +## Features + +- Transfer your liked songs in order from one account to another +- Transfer your playlists followed from one account to another +- Create a copy of your private playlists from one account to another + + + +## Requirement + +- A Browser + + + +## Configuration + + + +## Spotify App Configuration + +To use this app you will need to create an app on the [Spotify Developer Website](https://developer.spotify.com/dashboard/applications) + +1. Click on Create app + +- ![Step 1](https://raw.githubusercontent.com/JustSxm/SpotifyMigrator/master/meta/Step1.PNG) + +2. Add `http://localhost:5009/api/Spotify` as Redirect URI + +- ![Step 2](https://raw.githubusercontent.com/JustSxm/SpotifyMigrator/master/meta/Step2.PNG) + +3. Click on Settings + +- ![Step 3](https://raw.githubusercontent.com/JustSxm/SpotifyMigrator/master/meta/Step3.PNG) + +4. Go to User Management and add the email of the other account you are not currently logged in (new or old) to give it access to the application. + +- ![Step 4](https://raw.githubusercontent.com/JustSxm/SpotifyMigrator/master/meta/Step4.PNG) + + + +## App Configuration + +First we need to add the settings client side. + +1. Open `wwwroot/appsettings.json` +2. Put the Client Id of the application you just created (found in Basic Information) +3. If you are using the application for migrating your liked songs into multiple playlists, put the id of a playlist where all the songs migrated will be put (That was pretty much made for me, If you dont need it just create a temporary playlist and delete it after using the application) +4. Save and exit +5. Open `appsettings.json` +6. Put the Client Id & Client Secret of the application you just created (found in Basic Information) + + + +## Running + +Download the release + +### Windows : + +Unzip and run +`SpotifyMigrator.Server.exe +` + +Then visit localhost:3000 on your browser. + +### Linux & Mac : + +- You will need dotnet installed to run the application. + +execute `dotnet SpotifyMigrator.Server.dll` in the command line + +Then visit localhost:3000 on your browser. + + + +## License + +GPL + +## Todo + +- [ ] Follow artists/users +- [ ] Add you to your collaborative playlists +- [ ] Mark your collaborative playlist as collaborative instead of only public/private +- [ ] Save Podcasts diff --git a/meta/Step1.PNG b/meta/Step1.PNG new file mode 100644 index 0000000000000000000000000000000000000000..aae40209fe7f84680e3a5f3d33e8e367edd7c7f6 GIT binary patch literal 18069 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 C8iND? literal 0 HcmV?d00001 diff --git a/meta/Step2.PNG b/meta/Step2.PNG new file mode 100644 index 0000000000000000000000000000000000000000..9183d70b54082195009fab8c50122aea6af608fd GIT binary patch literal 65135 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℞=~YhT0R9&bwgbhi3ZaDRXLi9RIJYg$WRUUg$|G*!(cvlp z7(Z;r#;YSQoLI(`wo|^@-o?3#8tP@PJJf9?pDb$Q|{3&fEzlV97_7kjgz1%43g%q@8`rMnydgVmzhC&?tELI z^}Yv78ukV{*=?}rS+qdKMS#&quXO8b`q?t`&#ss*N`S|c(Z*sB6bxW*7m>I>sd{CD zy<|5?^`_>OzAd^~hwpO?7+tKR^;^W`Yk;tgkC9z`ZZvYh%;U>pv=Y&#bkNrhS*kCs z+yK-B{yAQ4Dg*8xaKOXt5_G98PM|#!zmqEZ6NIK&L>m$=06q29DgfD^WzoYrEZdM3 z_x?T__9CdkWDe5=>Y}kTugzt2cJzc@huBHYvVyLaJoIt65dS5ugcb7F<`wBvtd(pb{Qg z%Hvp^hzapBofIoC)_!5uEk>2K{GzoDkKy-hfOjpfXsB1%-juBD{NdL0rkq2*w;*09 z^d0GvVPDCa5WA%62g=_=167@xWO+(47|Jl~#ox2?Xb?c1Rw*)TsC@@D&XmciHzu5+ z-y#K=XTh$tWs}y`YXZHxeogceXRTqqgWH;o?J0pl6`#4qdDWf7(Guoz@V#s{d-XI& zbcbh6W@4gJ|1}A{niSLVO{`6l&brQ4&7Je-&RHMOrhc@wWHk|BmK?i&yeRy27YGkH zs&8qrdHTcv2eZ_G_j@L1lBhdz!`f-!eYT-QdBkkMso-+Q0-ZUG4PBkeXm~dH zU$Lym3V*O1H$s2%{1FBHoc+)ZEWTqrR;u;d+bw|GHd@CP znMv0d8F%_P8|wIS^x9fp33ZuMRmglF>ILFVNwaxYwTBjJX)FkO>7D*VR(@I^1RGm) z8ZXE?7)`}NX5ZdIFIa+H85%n?>1gM#?`ItnIDUG)G1%+JtkYZwIG!0RiKD>zQ)3q6 zmGw=ii{OtMPVdvg4h^Z)jURmBhq0|T2{A54`%Lo8L(MUW*hJ8-QYpR6B;VFeAG45* z6z6IB^!Uyd&3@>xiz5FmA46Tj$zLu z<)e!WvsN!&uUtRO7Ik}l9TDY<*FmeHf|nzeC~O-DjI`!L9HSS7=j40srkY&M{xr31 zxmy``qC{e<397x9PN~2l`^JRxX)1jmX0A^zxncGxvFXuxQN^DfFHxF^Cf_D{PA-d= zL51XK>>OBLr9s0Wnw$Cfi4$(%46}ESNc)sC~ynoM^xUOQui71DsWx7 zKAT9_g_si23fd9RbpXUnlv7-PR;LKVcuc!);gWyw{rRlK6Av;41V-H7KY7x^X?QBL zfops8iI^;lxUPP<=B(*!^EZ(!MmHUMaHF2QCO4m&iN1VZ4g@UDo?^x1Z1D$}2f`Y` zOAC^jVaM;E!t^UtLGaOGr7Kk>hdU0rJfCxnMA=}u&1<443aC#-qp@Ab6Ut~eFC+?S zULE9hEFBnabYvU&_aJSfs)R{pSNcrtPeVdB!r;RH9#TFDGX?~?EdAmx=WJkI5A9v+R zanYuuQ{}xFNS>IZ~+_Yeq2u)NF1)`;jdPhw`kyL$(>F7dR;1C zK`QkrWYCnX!Y)gID6SDbrGA^@2_h3<^maPCrR(h|P~EAn*qdD=m9hp)C36g_5Wmt= zm(qrW3hAf%ege>0ky+JSb3J0bpcRqWTz9|RSPDzG#@D9%b?QdBGP}Vs<`f;Z%!QeA zvrU7#xd^$NxWCZHf@H7S062Yu7%3YOl#+--#E1>(7=MhpjN&<%(o5?^caj@;eQk)b zlW{if=v~O3D@;ngXy}|`J+F-4yG_4J`MT}qXxU!kGQ84WRJh(I35*hK)p444|^12u`IQPu~gRIUxH`{%h9v3y$#bD8G^i z?z>8QBU`dmJvX8-8GPoUZ#$Suodo)MisXteV3G$m zKkYB0B)vhBmD`u>kaLoM!}p(1W%%6tJyk0qRsk*!yu+>-Ps|aG7R|4@o7`t__j4*} zQ!2LlGB0??H)W$>3Ea7IEj~8>rCr~yNJ1Dsu6u7g5>Z}KwOn3 zh7Xiif?w!N)*1adXaJeJZh-YP7^Gez`W$VP?TH{e&&)RCULMZNaIN0i z2;^1?6277%0o(HjO5=Y!0F=oIu7+KaLwZF?xD?7bf;cG`%VpWP&&WF3Q=-5I+$Va8 zVl*%x%~V{X_1k(}Z{FG9fc()h-eaGPo!L^icKd|MhH!5;&GInDpm3A3!b13@1fHW3 zgj#UZ9FXZy!Hxdt>#7%2A#&}tpGb^-?L~cp4@*e4PRUawT6FPQ2J4@Rj&-d_-G`B@ zRP2vU7098OvP;}lt`#Byb3Hdcuu(OwS|!&^1LQR4S?Pht?clumJ>BtzWav|QvzVQl zi>SkUPlfhVE=j$vf=|s``bp$G9&uM#BNgiw`4$-wO$+Je9vYuYwzGYQ#JF!T;zmlL zVhGU8M}Rr$h2ii)e0b7&z4AiePAK@n=#Pt`!a5{bqdP`Nw9W?W-F8dtPao??-f!tS zm8Axkz{d5Um_EIIM~7HYOUF>nAf$X%u?mKGhTxQ^^PPR@<2Ud!wBmkGRWPdv#(9(# z$6L@o&io`X;&0x(!xH?AvP7a24w564!!IZR1vs{SpHjTG+rS!|A&k-L^&U1e*-)r%Srs5TBiB&N97DR=B(M(O@nm)2-@+=GohCACnjdZ9hMVE>G9(G`Jt zqEyYR+PA*WJN3DnlL!Z$-CWUXut4`2hH!GoSx&e@c~OE5xWqR`*Y5k0edhbCMDrde zoR2vg%IY2_rZQgb61o{3ZL=I9iS!zNAkRIVDVpR-TDWBB>G9x3EFD!QWvQ>SQ`NBH$b(rAnO*dvq-~p}QTKZX9}{G)GIo^Szj4~D zTQA2L?eAxj3Gw5D^gec>9SvfXcpPP~)^UGX(80ydtHaa6Z>{j)fYfZ9Px8O+Gfv&e zTn;NxZiY@|Ti59pjdCAR);(xlVQDuIeaPpnE^x@ePYQGTxhPWp8>}=#Z=q$&Ep)eU z+%HRg#q#&nvPa=yT*kEUWS5n>dKmP3hdaAQ0fu)KYk!L3?*KMpC$rd4RD3 z3nqS2@yJiv<{EQzajr1-p;RUbtByMafo4j^MZfNG@7X7mf(H%Cd%;$UQy@Bf#928d z$`>BHomOx2!(6e;sj20*~*e3Yn|pnhn&j#9SJT?6A|p<8b5TUf@4dFsV8@8 zA0$(8+d$CIDz;rAg~zu-uRWF^Z%{E+peAKP$y!uy0fqAD@^`FOm&+SuE`2kOIa5hK zPd5b>wMCoJd2UX(6a6{HU#8IbmFpxK_uDgEcO=~Pwoyi8@-16lujL5L`fBk&Dj(q z;pwp!_-6srui={&2APZbwq0$PFF(j5fAYudG&`H`9~29fw(kBgHy3o*P4XsH^cAf) zpN6euAC`R#w9ISvK7Pwfp#VS(bYtK`#%#DeNsL^0@v2ibHNs|}589{3ZoHgs=dW$u z5CovKF0AG?r4 zI(+0?1NmKPiP{y4JOidr!c{apa*cP_q85x6wX6HwEQ;+Gr3@fekUCisL`>JnXWw^` zOFvhURytGNKYuAygGY?}+qXY`S})#Sk^gY2e4NYcDf3HaYa#px;a+s)S{YX!T~_Hs(&TY$2-Dj0~*7q2xQ3DG|@; z4y0Z&j642k@v>HCyPo*2z;7^MLNpb5ZBqfCfz(?AkN@G`c6ThCN(H+V(Z%fP$ zFuIB6jsW%7m|eGzq0KhuB3Hu8x*z62#qE&{WinX(wr|ao<{bPHG^7Je=^)#bAwb>2 zGa+0eMNY$W&Uho<(kI=X40E#SZ9!Ej0f8c3h6ZCAd@dCOCiUKP(GCh0d(n}*MljaL z^cUsL6CGlGr$XFt{YK{Rp4u_wzJSKhpj89bx<%oePt5nT^`uf9J0K+uG8xM?8Zb%A zSPDmx??K^ivX~cmQe=#*{>Lr!Ua z;Z+saEO{i{h^vCWvufVel=zScim`WTTI8F{UfKLM;6DlU zeAJ{2*k_w>hV0m7ehW_Vm6&B9iSb?TxXoG4=rnCh*z5 z%j=%d4GeNK`Y6vVy<6_B719RI$aceZ#r}3p=yT_*}Q?FH@8x#bm!l8}k%2D}0j-8}f2Aw#!4=ZfMe<5>RlTTH%Pj zJo~}ug$GulxurzIFq;{%F|Y=EJ*DnkO1;)MlDi8qvx?hZ#BuVpCfE?NxhNPXZa<&g zN)uKlJ}+_mLUit>>QUdch`7y}W`_#-j-Wz*j0hVz-&so&_9^|D6js9)gs$;3N$YaI*b{o;VRxaaHXq&5g2s?|!zl zdDovCPwaNSM`t2>Z?*~ye|Ncw&tc-=HS>*)op{MTX@i}cFoxK=$hD>zzmn}3P2m~( zvE=_Vy|a&+#XdqY!W5Ximr@xQX`#OOWZ}p8*|pXO=O!u_&aA7E`C|8q5h7rFws(ZH zisU~kf1NT!Z7|T-EFT zTPT_s!*&gF`~^z){da~p&>iY%$ash@F=ot`n z{Rq-sK=Nn>z7KMHN7ABT9N{A^t$o`MEZ|efx9|c9Ky_6@XmI$!N_{7KWV+w&AK>&S zc$Cox=k+(pA%ac09Q}-=4+Dmp~k0K(L z$}KH@-c*sQ&YTU1~??;j!=4j}*?d%10qg6>; z*QkQ(UUW;5jGwGcc;OUO-F>|&W&;%1Zq-K*6hC>(7M^|i8(f$8yzK@fw&(Qefln{O zOjA1DgH(Dl=pTf~VH1<#&fnx&AruG zv`$TV!`e;`fy-QeRZ;Den*X?O4M9GMO50qb^hxa#it*D1<6;XLe;BtzqsOvkKW3=` zSo`tB8`qI(il=5~{k_=(2@%mI>w&523byrqeOj@*U-kRNLF0bOW4@e=qy9T_M%Fj) z8|y6JKwvJ*r!4Lpc?Wk*kKk6I?f~jW{_N6L_56&jHu%WtbBwv$0A@~0IG|txw6_3B04_~rjmY3iSAAN}#aF$z7%!Kvv) zhXnxlG;{5?GXFXrWc}rTm74g!6~zC)t3~|Ritm5_>(>PTuN5}_gJ$VZGN8}SL8Gmr z^8W2Ti<}u5G>e_Q*YVbQ2m2AaQtAJCMXCe7BcfL`PAj@UYDlMB4xV2a6v9OB*8JIO zWHMsl9%0tP5B7PxT9Q{kzTc!}W;Jl4aBDS~rq3($>9H&t+%#iC*J< zXbSgk;>uqDDv6@RqW3p8Fw}#dTU`fD z2-pKQmE*UbjjV_I&pIcyI5K7Qia~`1HkLY&tv^s=!x-B_q-zX4CHcj<=3NK1aV z-2KqF?JNOL0#!Jr#BKu$(6vl8*L}<)y)z7;*+Ir|eP@G;eD!Uu7O?Z4K@|^|(Mx)dyTc)VOGE5#`6IYP_^gzhHFZqzmig3Fp+th*Znx@5fri@Sg?-`m?kJ z(D{|A(_h$VqrDwU_odGk3z{^hZWhQT=nBH}=D!id^_`%^`6!d0!_}}Dxc6XJvgJ+< zfycVh|5zDoh8~CmqHIqBk!>qpBX+4x!_GmaHZd()&s@QOXUj!kBU>SwRp!V9RozyI z>cVry21`s{e{tT;{qdO6&&XOpc*Bs686dqdbAb*_m)ChgE=x}(7x$~sMN8I*Y^~2s z5>nbuFLYnb;8Y2%M$-}dPqe!q|5)LnleHS)(&WB8o#SXWnQJy^7mb?@tP#7R-)hJPa4l|PUCYv8}tXbS~trOZOassK9STCS^*TV4H|_2?i#zi1h%=SV-T;3 zZFP+x|>ZXFU={r#_;Niawq>CkVoca(gdyw=dH>ntwv#O%vvPv~kN7Khi4V+cI zA+692g=~Jfy7b#_{~>K#>3*Mi$S!3r9#={lKljxJQhHze+y%8n=DN9ohfpWl!rofF zcKX27=xoun2{EXC`)OI5-hm+w`EN?h_y0)IDOKdzn0iQ{hJg37?p5?WholB=N|^g8 zH^rp9EEyF{bYNQ)0M~~GCK5>f{08R5y%wa*H*wY}hg`5EHATU#;&>&kK!m%8!0p0anOQT;osA3r1 z_MZ522|Q9`;6K413DlNLw<5{0ye_7H3yVMKB}1B0=<^9o?~iv@|Ji!#sC@sLapAfQ z#&DMs5OfRG>R`KIaUw}1x@hX6vZ?WhoSt`PDW}T{8`i*MtRH)0xu~6YEx+(1d@&yM@gEOJ(;xo>-t77=H=rI;l5Ii_xw6-#fqWfckP4IS5y;! zMB53N;{|1W?oBTtnhX}B?E+PkCW^l=8MY=5x!#z=s=ILV&wZyJo&n=4(@Je6ZEBY0w0S3?4Q(SzMDa68*Lbt71ebwszYbj*Y28{ z0IFT(syxPNAm^Z4hQ}xoV`W)&)#J+@NR>FuMS5_dHEQ|B$i2x$M4x^dz$)zx4bok` zIFh5UHIYV71Fh2KN|Q?akhPVb{S24EIlYq?oLsIlpGUGU4^NaI(1}Fd^YVJft0Mu2 z(Zb67ePVbvXw-0)&XnQAw{Sim;Z94;!rSSUM-he7yF=;M{D_)TvTmCtvVd@O&eqDk zG?Fua8<3}F;+PNYAdX&HJR_?Iy{~{GttXbIS7JJs?^z-;O?M(UE8@hBV{ec-3gS_n z`xNe}nRl3Cw0FvCY&P%4&OLsE5|yXWwDZa}0`DO^nIb9d4X@`!{4CKo5%bjHz6{hh z5B#BH%z51{&26S#$3lm#f%u>&lX=LdQkB-qe&m~c530kSLiKIYN9DSueRAK8v%bo` zv~J4z%W}Y6?a-=jxC~UM#mT*rYVP*A%+DaTtG;x?)Ih-W>-E-^Bvayy*z#Xhs_cSW zq0dqy7HGH^b2F<>e%E#Z$IB@P>Y9ifn(MvEa8QMQnd3{-ZVkw{lNtYb5OVQW&g&O# z5E%K!Zj?F9)gTYV3d{YwkXds5WkzojXalZW?L`@z@d)6FPsxeDpt&Khr%*h`%Jb~Y zxGXZKE8E!3%O^JI;0IavkBcEU@(N^^oWJ)z1xm}e>NM4LbPpu$a6FJ5E~@13`Flh? zqO*DQzMD`F8M-aml^{*fiqBAHw`uaxhw1BnEXLx912#Zb3MLQ~*x}AGE8XTxc7y#h zxh_6vUVJ=uXhZXr8*B?83Q8FWKP?24?zD^BGRLIXo?wHq*{gyQb=-KNeXwQg%w`B| zMruHGV^p+m6G^|P(9YFCoV0fPOuqAVEM|ehZ5q$@P;6sm>Dr`&V^it64qNod@SGIF zRWW<4?E(PDUbW9$9N9F`84j9_8T`U76tqSoLAK;tdNNPMhv=+Uxx}nJLDfs^XT*e~ zd1iNRC_c2dF(){5n2_#kj=o-M-wE;fj`~QSqFW-%<~U9#Rp|eupPo^MTO&}jzm)Wh zy@FD=S|Y*Y#9$XuL`ye45rD6XS$bliNAas?%LAe`h#_lR{hjTgQTA68bDODX12GOB zLwOEMY~BluRUBs6Ey(VN4+jBfjm-NnRYERgCgD|`$P$~ z(}LG|{60|w?%8w}Z*ib=H*$P%->6mPxXC8)=-ZE)7l(?|8&x+v#2q4>`w~AA4cV(V zX!4YK&77MD^4P8~+1rOK`9i9uuAh1zU#=eGXPl+5OkLc`g{7pIM{u{2(l$dRx>?ig zi@U@ZI+|_@q2INz;IEl$-2`^@r^r{2p&bR_H@)KMJrGlKsT#4f2~1AOa<{zlq8F1u z+~8iGea##p6jUt%nGLtJo;+EN{8EZmi;VvC*{cVqmY@UjMsK7fVkS6FR_b6N>rYB` z>?@MR*xRIx*yucpj2xqLYz+$JDcvKj1_y)JVyd+>q?bFtWP+|Qi%}e3uHQgUl=Ext z&d)lmp)Q}omnuo^7i_Dz{t_|yXW4YnVgM&eP%}t!%EG zd|Ix=F9rMN`)rdtj|sa&1=wpyzq9QwhkEC&|mJ7F99+ph0cm)4iE?#4u?O^z=7ww6~# zK|knUaKU!O< zihED3inK53Hgh;*y&`tsFm1fA}(6yLV&2a_i>qP z65viVr({JZWu_Fe-PH`Fx|ca6OlcA!H?d9N-YfQf7+@2ybzd`5SUi@SdXDM^GfVyJ z{@p>X+SaF}7ljCo{y?+nJ%vE>3QnZbl9_to&Mw`##r1O)Jtq2)iqYjMitmnv^5D4F9VK+9zT}uvp3^CC28J$KNn_aO*1rBO-*)&~)Aa<`=@wv!{)j z!c!%+PB7C=977t(vj7Q)(;y||3$Ww1asWieAMplaE{cI8UUsN&QftxTf_?K<=ojbL z5;e*9o*$8G9rMjD1*UnywgwNrUYE0rxR%21kSh{7$?*8WSHJawNnlIH4Iuj!2HI$0WLXA^Wy(5dOt-RLdH(&cX!YX`m7PK?f}F06Ne_!pJe5;`m%nWI=% z_MCCFz`fN_vd)2L9LOM&e<1d*1SmIH6AycaB6Ol%mUF2qVI+xOq{5<0x7gIzpE_hK znJ8K1a?9chJ3$rj&N#`eOlzKZK7l1QdUg;>OK;t@p-DigU-3xmSXn6Wjr z;|94`OK*Wir28!gH}+-qW_(9!xXv{D>ZT!GyZzl6;X4zFhOMsjcKHzNY8_kg5)_Zo zVl*?l3SFXI!sF3MWzG*e>e8|4zuv60UJE|L?#|{_;4yXcTR84&9C&v8Y3mv92yqmz z!?{Vjv|h^zdz?M_Tki}=qiOa?Xl3%5#)NUInO|$`qS2cPrB7;hFG5E z%|3-hjtPOzuszqhvfCZSgP6j5&kYg^yeV2^N!tOh^-%kFv|PN0zudyrq7(;+#pXVc zXR&DRI4L?DV*C0e-hsr=#%Ymj7cB`01z8YlK2;Z1Diy$+caWE{*}-w&CxC2D|kZFH-U}a{dAL3Fd6wF}?;D zaOT?mlRrs1HCGulXFUccOQI8TpRGE6V%Y@+DP>h*^j}@#H!COa4ysRM5> zTM`wBEQSsP5^5giyO3V6LBfg6MpFo>NVB;mnoLe6cFxR4MQ^&lF7-9UnA4szGJB&0 z=-fla8&UyPY#+#&tRKig-az>~S9k1`F~fE$r|?vd$H51D=YERkF-$F^`&HLfgm8;H zz0b}^((`Asj$m+?OKdCuZBCvK{Qh@w6}5D>Co!Usm%B?3Z}J@wHA|`SZWl zqW@>FHlV)#AM+9U|M0v1dDy>u*df_e>9^;1dh=~`{)MaF@+T__xOr`x&u0%^&?u*d zv&=Fj{ezW;?ubmNQ$RFC$wMxUIhc1P{$vi{RzWsYi~f_ni5iC-($x8A8~zHmtV z+w=_`Ti%Dy=P%{4GU|vsL_l#)W%@fWD+ z-aUNcCH?aS)R1poSxs`ojp#h73j3#;UhV=Y({u9wffVMqe{DdWRKGZ}sn{N1n0)x7 z;^;F*_zVJIn>1O_P78tOQGF@7D zUab1N9l}2G2YtDOiH0IMeAmpxSLp5KUNr45cP_t~>U3c!Sx_!CK`$&~C^ZL*#WE@h zWaa<*@8`tvqc^k0h@|}5Hv1e36iv&!oCAj3G z8_|2)`8X_4e5e%bbLCOzfD5k~o&D`s$n!?Wx-kFG4k$hTTa@Cq84xsnU+%wM^*1{D z546SqeuYOf@V~Xj0BfPy=)@z}A@X(LgEF7WHuOUFo!C>({xg;TxS_cD%1eid;k!6D)>S%UdP1fLw5&KX< z3$ILxV+^o)gaL*)1LF0T0{eEmSHLwsxCp7F@a;+0-!3SXQOEB%E)b$%1g|x8x*zF> z-?rf)`bsm}tpV_Zqo<158F6TG?E90!htwdP_Q{fIxGVFb4&HS$BFBtTk^Zz*Td|ukIxMN|w6u7T}(1w!KVm_ymrl3Oaz`a42IYJn&Y+7|v%qz+~+PHhAXRCzlEk`KP)<^WHz@2X@MTBYK*AOWT|)A_h3QT$dhs@lRxvy6 zAp>46Vq2?yZ_lx$2DQo>RsDg)$H;{>tQ3a<7iT-8*>`KC!a^dOMSz*iEVSYwncGJe zamsUDaL{I@6yxST7WV2rl(@odZ3IO+7~JyO-`R1NL9h)GNEO6S1FMbrL7lVNx(5&G z8(_$CV-rn9t=xkFKq=Y}uWwYnWG6#!=9iaiRBaTtHxDPTHxfLkDlLXG;wHO?4QFcX zhICK-^Z{0)=M4M}Ejol7Rb8~()z>q(sKG*|f~cz$(ZGGwA{Gv$rJX#f~2MPP_45{Hdw|-b%l=-e_eDWn+Y|6wgyiKm8b|y`Acg8f?!&OY_@Z=doocpDUsnN`F}CMwFxty(qr`AMm6+mpCM|TOn~5y3woKEon0u)#*Z*2G+LMh6 zQyA%2HG=YmC^x4??yUB1Uy{Fc^iB$MnH;KnFQ7JvH*gNnKKQJmNl$e`a4J%qSaLtN z#&{t-pgz{sn|3f2&Y>om(39`br#wPHt-=LJ6h?+{7CofMy3K@%RbXnk)L4sYE?%vz zHQbxg=iM38Qg1djGuP^Bk^o=*Wcb_6l20;9CNt_&Cr^~|ZL{*7SO}|DrI?{`(vm4H{Pg(~XM;mSOPZ?< zlYRMu77t@c%UU&c^)rI0)u5aF70#sZtf6(Ia;R~r(NmHaT!@CFdCx%doUl0bmS!00 zOL$jj;l!4EM#V!|d2-ltMsX^mH>v9T*539+PL8hZQrNwXrr3t%R>GF58ORdiHx+Xj z*Q4F&32SG(JcQ{gnL9I`xRzNL zdueV0MXiWh>qZ7mA9~F%7i|zMth2ynoCsLD^gO0nq^eFO)&zekE<2bKfhCYMNz0>L zZq4onOD_P?6zM$~M(@Non3__T@K2pPrGlh2`M+@T&S5Z@BQz?yde>1I{LjC%$zCj3VXSEVoCK$DRK zxo&t9ZX^*`A%>rIBMkLA&zHoS(P5poSDjsl$;o*uV%WwNm=kW}>yX-P)_l&l&lCL`VwK}^Fp(_}wNS3$E$ovrg#eZIo?nL=f zq0LQ8-fO+u?{>B?K~6H2F(|M*KyPbDNifLLbT#Uf(7_7m`r(ddaq|58Pl<9{y*3^> zf{Ce2;R)D3T5KjpSVObXQkkf^F*k|TLz$bw?>NlTdvM)juEjpz=})26njHe$(1T{1 ztqJfK&C}gNEA|c-rD6M)Bn=cpZ-XBhy7ul%sHpO?ta$|!x_xDxyh`Ip=0XE!eTMr2tPAX4jLMT-RkTpRb7C>z2C1# zx_{k{pSe-eVeOsaR$H;c2%}j@81GR*hncXzO40m&ZooX4D zDhKjVi}rl#=8W%w`o-#sB?QXsVBxtdtF_?_*f#*u&`vc|rW`tty zfpz|zn}<;LNb39HX;1jv>z!{^x*@a5&H2fs* zce*`t8v9qw@g-uah~qLWgD5Y_PhhuxU&U?3k|1uFMQh2}w65mC2FSO9!1- z&oTMf%k$Nma+mL0J0x?{D8tP)O~vSkSwcG}Ni!0~vR1}{+X=JrMgq0Z;LiJpL+X6P zGs`DW*aCp>Gu}paN7LKMT;Odu%lr7Wkk@@v?mv2;I1|cr2s1ue&Q#Z-sNk@+_bX}_ zCMA+~tfA|&53bU}ajK-$&|Iig2KCE;+>)5mF0ZBO4w=96gCSpjUS9)6E+~F0t8i~B zbHB4%nz7p&9tc)}? z%-?^#wjATIK5X!^eJzD?J^IH39246_zJW(~J1ev{718rV4gd{XWVa z#s$RtN-`kh4n9ZUs_>n{)Z%Hhef7&6rr%DBA*8hY9v4*K z!5ZpknPg5*iM!`*mhybg^Y7XlY(boqhZ|>xoR(}tzwCkdk|kLPUINMoC1F;>NInaa z`t)+`=uhqRC-E|H{2d`@C%i;U^i-Dt;mErhcri={~0gG^5io#oY-H~BEbHY9l z*gmE}M{e-Hlgy-|Xq~2p^h7H=Zko*#qX!1gAXyx+=|ivy(*c;O zpUw?!gUX_H#mcqsBfT4$8&;S)%)8gpZtH!!tZW}# zKp1`QcX8iBVq3$$-Dk>C$G79kE={R2HDAfB@IEbN%}B`6d42{_RpIAeL#JH3pVCQ= zbh`?Zol44BP7l5Nwhl{~7dtHE^)ya?uhlIvS&-p%JF$r(0EO)~oEcq)m@t?wj8=7S zR=gi}x!`nwGMo(e5`P4w1f_4&N|bile1s$sLKZB98%FK8<&&;Vm%L1YmQeyIpY3c{ zU*Wtb|I=yXBE~g1<$hVQGTATny|*Mf&zp^6JGnwh2o7b(ww(C6f0S5|`BG(Bn6=vPG5E~yWl7N7i|bMI!zCudLV5kv zg3D%X;1MnX@g6SLQJ)dA^{i4X*!Jk9iwAe74o0?bc->2h;X!)sEGejyWSH2hZ@o{o ztH{FW8R-X2PJVL#@h-;ld2DJ?zYC9PcE#$g@{RT<#JT3&8JQkdweZ$DhGnYq(p-RZ z9m&6{bIVwE3L}sQH6?ur-<0Q{#2=~-7W{PfDsH{?zA<1;Xy+Sg?#j$s!oy)%*Am4S zF-&$oC(FLf9fm1ud9|)RU$zO`r*a^goO9QjE=3=f7c(Vh&Ib<1yL(BVhqt@rd8R_^ zn$DVaI^o%e35Fr4@b-r7L&l&|S7Uwd6SBfrX*oGfH+xHOxWCN&DZZj{M~THYcy^b= z?2a5GMXtK@+k^DsS5n>LjS{Lz0PBI`ovFbLj% zA!!2^SuV;_rIoMbms>KMHa)g?$P~Qfs;fAuL_~>ao9+4M>UriOqm0!`bN$Cu^Xxa1 zS10Fd$ijecCy<(nD`!#n#XjN1Y`3Svyci#p2KPo7}9HgvK8o|u$0zPhYr zHnVQJqg>Lf=e?|uY_$-)**B4~qTG0T?tifN-ce2Ed%wSDJR{E;1ymGJN=8u_rA?$s zcN9UXD$+t5=@20Fnh+h2O3xre7Z^c6x=2j|i3$O!F+d0qLZpNiIwTN6lDok<_ddV1 zp0)0C*Yo@H@Gom8J9~f2r@UY9@5h{MgDjUnSAQXN6GQv>f!yPd!df=Vpl z`5+CW_We7a=N21Tn`5sRkZ28K-CBM0f4qMnNS|woH7M7LbBxc}7WGsFS#~5?SCc~D zo_@T_rQm#CX^U|->7BMkK_Nw$42rVP^+B1ZTenD@hm7b{DH&rZ`;VnmnBB#~VW?Wh z-SW8wPB_vDz87U~P&jO8XsST5=l|$HR26dH9cwt=miH$xNQRyJNfSX}ZOyKtckDiX z?G|`r&b)zdQZupFxPfzOD9BA!^WFI~sZ8GO{e#wUhWD^b^6M9Snk$VS7A3b~3~5-A z6Rz~3kZ^Ny$Ajn4Z?O-5TK9uwMZ#_1Bv_vpa(drzq8Y|+|^B(6Vk84!|m4j3!L>E<^zRy1V>s__be?4f_Mm_XCyRw@M48&J89FK$J;4s|jzB)ykaxHWJJBR+yfRRR2g9-*xt7_}JI6 zK&&5Fd_KLBQQy@=tF58kc9xZOVX`Z=F~~yH3_aCkwW}mrsHi#UM=t}}lnF?rgKOM* zweCuj5Xx$Yi&RfFJUwY^3N>Hkec8b{)HlX@mjCX2mtjE)U#3a^Id!RkeI0CgZUrfu z+O!!rc_skg=G2JNls=a_)&&f3oCm*6KMl5=IM7q&m?bUeOjN&Yavw-Gv<&8?WS3ED zFXoHqUxbr}2PKa0?2I&AGZPPWb^L=5Z?V}~N;CK@+msrgyBG)aXRNG5Lq04iKFUe_A##{}J_=SO{Tim@p z7~2vs6SK_6Wk=N;JaU_siUzKYPjqb+HB{k$7@f>@Dmz4M&=neGy4PGfmY71 zYCsBR@6Gyjr$ImLva!SqMdycq^Y?B%DOa5z%n<(N`*mIu{JmoCBs5YCVEsN=4BA{f z;?#J$9wvNSZ|HKv_YwY#Wup^>l~os+uOJ$bB4~=WS%n=obpv1ipN{I#zo5eZM#uXx z@&u5=yg|T*$z&k6ev-|*mjA6oML+tRH!%8+`0H{v>`qcAsd+)RD zvx2Hj_ob<&@Fk#9IzTO_*>?syr0gHJu%Vae=^2PAE-LcDN}U}@y_2`RB^2GgyNYJY z6Fim-F?pP7K^ps;6*nI+%$|ycX&X=GwS7DZGuX7=^36f|xDq>u0h{CB)&SF5X2U+} zYvs+p0*hYgz<}{oWy3em)5z-|l}~N}`#rKCGxAqf`=VsqAF2Cl2X*j~#*nJmsH>~n z5vhux{!SxE4UkQM;C3qxP{-^D!oz?cxy6~EWz2h_B6CFy6W?#=kFN&(=J+F6YNjl5 z{I`h9UUVt+%u%9lyPG+_E!f}jTI@A}=0=gnVm= zK{WwhH@$d6G0w`?Uf#}1NFVNt#8E*q(de-D{&?;8uj05aokCD@h2$D7A)BwK4EvQ; zJSOQN2%>Uhi+5f(v>xr1D0N#duZjAKD+L<;ilVWO*y&xS_5EGH`t2Z~MqSey5g>{F z-JBnx{eyzZw0$5_J)=yEz@Mm-)NZ>cW8f-T-dbB;yoqC3vfivI3(M7cQim8f&D-Gq zv`D&CfG7yHQJ>`ag2qG`oRYCKti2YNKe6Qd5tw)`yuG8U5^f6G%%vCJ(?;YXZZR*5 zMcVHjSfazDFL@b`JA`2OY~BmI7|J@^HAi2Ypo)v?8JraJPG8{%?0tHFGx?7>ftht! zD+KH5T{PcC8S!0-ywVB}fJEOJ(ZF?g-LPhDAFYL*!Xx#?x<=ZX8eC71n=YxY>ADB+ zPc@BV*_cw^#*NL`)O@9m5OR!%H>W*8GHU+k!HhaQowt2kqu=CrJ z3cLs6Dl>7iYcOQYKe=#H>5OB-Sh~9}x~K%JA7XgNq-pa&;E`KY-l%Yl|Fam!s^+pz zl7yGrKDxk%8yu>)-uF-mo<1BePtWvW$|fd=O7u)UxboF`H|XMXot-Wm5|qTr zSMq*gJHR$^w07KXyt|3rb@S%?{!aHlvC6qGS&{;}vkOXUqyMJ49!@Jaq|0rY z23M*ISoUxv?q6^yf(%+NyGwaQBY*QDPsdfgl9|bH~L$x>YD+#<8CPnWo7GkD1 z1|-MbqI*F=EeEO#&B2Iqc1oN4Q?R>%cH6Bw_@~55l+(_QhEjLWEMxcSrzxi!$e;0s z5Sb-|5h-Uwi(W?#=FFE8#{13%{fW$DxRh?#q=SkxYt^GKE+Z3)Py@N=2as4)xXsDd z*F`^!zWtrwKL4InhrU87fH>(PC^;Mn(9n^H1YovH}9q_R}P6IYRrKJn_F z-j}TF{3JFohi}ieNUK>frbn@kv>$$#R#Y`SsSl&zynyu6@MHin04euzx_l=1>u1fb z@j{d0TI}EwTc>ghy!rJg_&p=IO;QXs@3!D1PCX8j`^Bw;~EyEa;URi zpOlxW=;gLKVSJws^iKRxPecP}g_JsWXWDhC;<~IMr!d*Oy`H_`kcid2KliuPz|mKg zvoZoz?zmHl3e&soV$@@~lrwG%ucxToeR_&hZt~PlL{po$AoP;gNWeUy8D&Drd;&`u ztYe$TZApo!^uxx_!x_s_C&&@{xYrEH*ueeRZGYc`(epS@q2<{ccF!q{9CllGBf{eM zmR!`L)`*E}3Qz^)HeHzB2OV>(y86^Fd7_q{fF>vcjpg(yQzw_}V(p@~k)YOn7uQ## z?`|_Rs)>aOC5k1Um)hyLcr~J3qq{|4hf}%g=+mc*-e&>HNNLF;5I>vFpG|s7R(=Ha z7etGtsV@JyHs(>;DDbwZq}G?H6joApFn{jfaSfX+%xrFu#r~6md(#g7wdr0#E*HlF)Re4N26vj3V)xp2nDCn)*^)x$C(>AA? ze!q>O>%OVF*yg6zKli})0*|a0dIRmC*pD?ENykbtn;JUQ8 z_(*kEM(@V$ICUKgJ^7v9>6tRvr3PGh@9|I@eES}6wa0bdtzpUDp_z!#mvUFNt$x&i z50N+EF~{pNTLqgE!TiR73c4SMyb%Bk^5K#9+?zIImErICBab^5;+Squ{MbG1<3pro zzE+$1IgZ)4-T$!#AdF#Ri}ZD6)tJ9!X4G4Q-y7g7q5~H?e*in4Wg9o()Wy6f7g9zF ztJ<0k&c}_&K2_sfzfUdN9QGovn@i^>ciW8@2M2&7HB7jQGhm3AzY3z>tp75qwH{j- ziG-ba_Yn*#dpmX&O1&Mo!8@9G(7_2C!T8jvT$q)GW9gKCRbFX zt51+@yu%Zw6x8SWCp~x<$*&&pL2epppK#uby0*s;$MR-6)uk6}0?)~cfw`nTeGl-a zLgi8Bq{3i;?W#@;O$09Zwa;AGm`fa~HbLA{2Q8r%t&8ojwkkQCh3OHZpsjzEZy0HU z*ppt|iv`+FDN_r2qf$J9hD>O8lPuz02)CohqBtR+=Yv+;fb(>`_p10 zbV^+-A?-cFB6&XWP4hk+nx9P@r3qV5aPveR_w9_2K8Sa!#$^K?1Oj@2PO|tWm!QLd zAZxnJndEr((m>Y&7wY_0rE{A~CJF~2G4)p`#=n%HvupgSMx~BgHMtz`8R34!Eg&L( zt_VRJ_I2HaRFOHqGLK#GGHcM!7Pk&{RVgWP9OB#w%rdOKpi@{Q@*gw9KIWw#7ma_3 zhMoTs;LV@#2p`RDZALs5uNDSMiF1pc;JuG~3Y>wi33IZjWE+un8)#PDNtsh9o#|WS z_B>h$sB`XJCvJhmRg|+>COc`{Sa?JohPhxSM`E`hh(Le!Irnxlu57;2v5@YS!X2+* zCyjZJPp=}&liI4CgZBv=*?U`0Bn9jFl87ob2<3a?@hx)K!hUZ+op&+I?D2?T+QXgazaqeMr+k5Qj0rTR`)b z0Hk3JI@g`!G*%MXTkyVzjbE3O3)*#kxM&PS=CMp*N@ncf=CP$U8YsXQJw0S!F(6#a z`B>0!Z^m^HY28a-eUL<@ZbX-O(?*^%VEvsv{l^%WDUHJxPUqu~O8ql3JTkH)YVV~6 z5F^&F=G0WyLCD`}NmTF9O7BIysDYg`5aSRP2^`T*IoB(h8U}RP0AH7u{j7cGeUQVf@9A`qlQ|+4e_T7;8$I<1fLFt+Ag}Y(k z7@F|kdh6DwjFR;ul`xPUptv9R<1tGWcr*1dQ}|j4D0zRXG#oyA)aF9JkvaTb6tCVE z#7tm=N<0I9S#)S_w|TO>3F>s;^RTe%N_k2Wd`{K5n@UD`RXQ$BzGb9kYiD_OeW13~ zc<%ZqBk%oCF)t^eGmkPe4+_J<%+<9Iee={tl5-*fH8>sqk~h6`P(@ubLPk0 z=*TLj3%6->_W85-nG1$HzO7pwxTVZZrt-XdRV;GWC0}ClP*}74_^bGxMx*&5o0W4w zJFH-#GJ0g`Yq3;heoX$}-jZ$6{10GPzmM1ivLW((s4vd3;9H$mwfc@N;Pawc$IIbo3Gc?tI#`QQMY zH}8H%)jVvVLjuXYs4~zhR!n3Yug+6ICwkXdgalEuG@nhG)k<^6A??P7j~M@J`(8|q ziD74M(N498vtZBnRiVzQr&bZhOsk=2<{1~s#O?;qZ=q2hpzF2MFdUV#sT(c1d1ge& zd`HxX@>-_Jy%n#Fsd!(SAj!M+XeKj~uF}!Llp|LQ75XP2d^ZNjlKI4k&6w(ub4O9j zZ_{VvYrWhzX$^42$^7`mkk2F1T%?1HxMi!R>@(P4+WAVPbfORhMfk8*dQmVIQWcjs zFzP96f^iSxQ84P~ol(iQ&uElzWnO*e(mba?=aiU)rti@`iwn;~0)m&(3EAj(Clz&l zu42|C$X3TwLvMlOBI5}ydLL?JzqB5_bsw0l%%?}m)fTEJZqMUI zJ35{bpdXjDlI}-E{-~3hYQ+Bp%t)G;=rS~M2INoHiBuVYXDi9cU@x%H3o%|iEtgaR zk@DgV@$Fo7AC!*C+@yB z=RRi`>%OpzA&z}m`C;>L8C|{fo8zzfz&aZCbH%l{l`+LTAM^F0;TFAO?qGY?#02BB zfNkHPv6cX+(>zASBG;JluSNZSt1{`D*|l_JPd@GhQ5vS43la-rDY)J{{vZ-fq@T34 zY)suZE*R1QsljZUr;-(PP4x!BcIA(yH+B%QaI*;b~%cd)-R zk(IMNuC7T1vQn;{g!ox`?ctUG5Rms8l{@Zm_YiK#?bc@gEeP=FI~%__l28C?^HtUh zjN6}A{i}W8INkBc(|@mtw1b|=hbv%Um+G~zORM46CNAmWZVPfNea~@Fule_^PVgLc z-p|#&UZ8!A9Q{&~>)kqeFNrbtS*AMS7gY;mTx;u|53k?DqPdys(??i`af?f?1_vfg zY++lbkmG0D@)}O8AwAN)e-^yaH5Qb?^5)4k6iJ%3LQ&*X@20>v8w*B#!~dM1LQ|%O z#B8c7cJwvH+jWH>q`Q~wtT#3W#D%F3>@OX|-ExmK=i{`-js`xw)nKUBG&6(QAiZ7~ zTf`lfo!0dME$Ff z1tI8nn{z-_S5pOtuBZE9em+MtysI$rwlJ)#V{E0_bLMF=I2Ie&aj-TWX=w*uEz?P2 z_8=#39t_{G(s5VEpD}yZEvXzn#odB}Ew?@nEW`#}o8!NioTo3OBAOK&EXW|~WOT_^ z@I{VnHT1Rh4DPf3$Sa2yb!3cQg^rHFHR(28+9bV?u#6=;TQutp#ko&y>!TOo*ObdL z>G>(>N}_i_{D^niOcFlsyf?qnkQ2zQ38*Y=lBd=fPUi3~ifb~Uu8%X&{+Fa%O==42lh-&(AP&x-k;d%QNT#gS~;c_QhU)y5uhN{y5q zcZmJQFMS>Olc0R#xwut|&9kPG)i^BbFC6bH7dX4&_Z&`kbbUqotPipzlDZmqxZFL~ z1#<2msxflNqe1_=_}1cI zWaelN#_gi=(d7w2s?m_DO4n=#=`*=($aV|-u1sN-KlI=PANv2%e*ZxRbis@lB1T&f zAIHsp)2cVO|N279B*$N~s*L#0*im2GYg+6VP?=#%D`AYDjD|x)%%J)4dT%SpcdH%; z(AnyL65D)?6dV7hM4z~OpiKX0dd6ifr9jKJXe&hwy!{#Hb7%hBm%IxF$Qb!*<0*zy zLw`ia#MnoljM2X?RR>tLP+V?e4G5@Z?z^1;Rahx}`&W<}pdklfHK40jCoPB8zi($} zr;+S*$MqXf{2}!}jalV?*&_YliNM2I^ZzSj`0r0Ve9ix3R`cJ_@xS{VBl>$5-S69J z0o;T1;Wdx*0e%DP#uzl(*4Ic&{q`h->#{$Kpp$|3*tm-u|A zY^MA<7a|v_3EJvi{LA$^!svh{bCyiNjKrg-f4wAd+9E#;<3*{D&jI0w#oJij*(E*z zp&k6}p!psN0rCJwJ^WZ$?VG=rjfkh>%^y;@^faG60wcTi+IjR|7^Hh%Y~w>4XTdQy zd7v}wFH(99RZ744T-R_nv{U~!I{vuh@aN+>*3;vpLQ~G-2$>JB3o&0ZV zgAbNb|I>x%F^$!Kv#)hRjGMPqR1*km&^Hi&Ry!1pty&LRRLgZ+XeWo6R&ykwSK7QT z{jm54ts!J@w6xbnZ%oW0Je(9BqMiS~jv?9wfJ&tv+To-ySF7Y#F7XwOcbn#iLuDLc z#Ec#&TfX1r!M)L&r>xHrrZO=H1`q>pgA1I7%-v!1y|nfAOrW3km`J?=Us1lTFvz zdn^_sX34lE6cHKj-pELIZY~osuig(`PQJZ0 zHV!Mzp-^fT(?hpb)3VVqfjG7RCH$P)Qhnqr7ubnDs6bM4%0j>~B?_C!D+m4y?*6U@ zfd4`QhZ^D8CM~ztAGrIXHDhQ79CSry%u_K-zG$sHA*{+c+DLJ)+Sra1OUG84(dyfp{UB+ieaW;ikMnr_d^s2Y2ZEDv|q`F1p zZ7!_W1nQ=dNffzF4~5Q9tYIJWp)9~tg16w*&}v&QCvLUVxdcTo=!feHP8a}67Ok4l zIl4?L)mkdhTIh1770Y>Foa%H zMHxin-Xhf`^w$EzppPEBXd49`Pf=dnm2c9gm}iDvD|e+I(yk1O6CA6dBCG#y)oTH0 zP=7hC4~p!_Av|!-dX)#_sPBmgcldLRGlA9{65(tQq{qT0Q1{qm+?Slb?~epJY#Q1h z8I?iiC`A~12Zw-VRPz*54My!=@k4bmNpmiVZhE@*(*FLcxKP?A{wG}Mo4V_}a3t96 zI!7E^wvX->+*G`^@;)nZ2&E}brR%u9(mPKWC@%?%sUBn&Wydm;!dj=3nnMUtVLCaE zN-o`^;!;x3EF}6m&;ATmpopLsK2J&^x#}THu0bLg@H)fuN$p6}u3F4X_|Ax%w0S0{ zIqbAYV9oVc(q>OVCB>fI8yiNE!3{y$GW6TN`Wn0N*t!kQR`>n;)$j?KyGt3$D0*J# zMn>nGfeL<~qCmC0_~p#L+xvkMof$t`NZ5NP(T4}`tqLBuk(XPaxD%U1gY{iD*$Av0 z*3Ku2ic_V8Dw$7TzOno%-&NRvj=qZsJ05XQD5IHRra^V{t6wV${HN|%q@$KC6_6F# zlt9VC0~+%tNy<{g-DYc%3iD-aXNZEG5xO@sw14nUd7#x&!_DXsn=J2`q%x9!RP*8AIRqjSJF_9MLjM0#G5MvoPsQ(#E14lX|nkSRi;6 zKTs%72$2YN1~=B6bw*=nvW5np4{>J7x`t|2*~VR=_1&kN*V|KpqVVG0$i*x#H@NSQ znDI5s1FlB%>`?&@KampbJj7o>kFU6tI5JWzbYI!I&23()H-WeKN54}-ud71uIOSEUT~(EnrP-C` z|4L9p5uSl#T8dH)H(XLU^oZN@{w96-hqbuw-_d(-@rGk`2?{7Sg~S>0*arFkgt8%v zUA76od%^hSO!PwASc7BBgUG-cFtYJ`awpqxLQ1CAvP4;Eq^e^%R*tk`WcLvCQSp8h z&%Pl88&Z?hwnD*#s6;}YhE_t*m5dRna@SScnN0>`p|w`qVFqfOKGQf2VLn4=4c?{P zKX~!{n%U1h|GEkTUp>HumXFcUPD~F?W@47BhLLg-SKTu>GvF<3Lu_xXuG`nA%EY3J z2NEDTKqt|JIcBe|dsfaQrkIHfyXg?VlUuSHUmH>Duxg8DZ=5X&tt`DB*GPsEESLVw zY;Py+amB!_XiRJEaWH4nDa>#f^9xi35O#M5HU=scn&7fuZI#ge%v!41Fk><+@+({d z?~=XgpBtAq;j_fKBA$eX#yAmjv03lbGpoUkm$hC+f<=O4REZW_@MC_{>y-fwvBEQM zZfFGvH0HTqORYwT_ZHX{k_J;zV7Wk-Rh{v!8N<(z7D>!1m-9(AF9wWEE`Xj2QIJ=U z1Sta6F3Sba*$YU)4Rc-yGE7h7j9A(6x^-5H%Nb(Ftb&l+{!GbFd{(}XHszGN26DZU zym`-6U0+L9&F*OSffnYx1t9b=BNJ9aW(Bd=#6>MSZOW@XY(=UX** z9cUIlWfIHWr)iUtQ4M=Uc%G?h1xip;J16>7$~Sd#%H z+u<#0ULjk`mOf!UfVprAq}uu5L5-pMc|y*rhc6Ux;OX=+mzIuaBP|p%s`|RNx%GAM zM?Z~2bY6x}&WWPe^L-O=h9|muLIdjXu|IZN4Rr2jY4N)n5<(S8JBF@C8$C|j$XLA? zdJQ_Kctn4N#M{r2jEkf(O}qBTJ}wvx{$csnp68)s**Dzv!6f5X)^z$Q9x6GDnfQP= zLhQ~Tx27?IAt{brJ$U0z_;ttE2TNDYaLV2Mrp@7;-J+<=a|I45Gbo#ZnFzW_ zttZ~uqQ+jz%_^YeAzoqCvc@4Rb7Zn!T1|DEFg-LwYVLQBdZ`6N*5vp%GiJp!_a>g( z#}gg|aRFJDwRGx8&#MkUrB?m(#k~kps1M>x>*+1EAt3OJe?2n0CqU=ex02}J9~lJ# zzQ@jF_;&v8bdS>skp4+PMt!upf8#^tv)K?>89<5MVXQ8;C`icUpPI=M?+Mjp4b?0l z{4dInKr-O^Qr5K*0DjkqoPZ{??FKrwYaNR&pzU28s!>?v8SutkPfouHw-_0%UOF^# zajUFrW_pW8inEFilTrk8Oy4l5FOkw%$}66EJ&>)c^blg`Uttg;Dr(dUmf>vQ`$=ZYj2L#i zX6|H-AR6dfSQ>e|cP#aoR!!2*a8>&WH_HiYRAsq9DvH;kUk;>WKy7UeO63tpP#Pi+TeQ9>@|C_dil3gs69-qLu!5K}Z0NxiKM z1Tr(r#%U(dvvNhtN_KsAKC+TU5mi zWTc-b02EDvxUN*Oc2MewlZ2KL(<~H#1|}4oN$i_31}Bb8oCaK}u(dcaL?qmJ%}ims z4_)UI^;)fSB>YNaqwuQUr0p$q<7Yxc^1esBj7s@SS7B@wCFD6CJ*CFiauJ|(W zG|a9ByW93)X>|!V7he6VDXk@fFgdajudrG7J1BKR{84E8N514LuL;<&Ns&xO) z3v3yG)T(Prr^h3C%skfZ>+A@L851d3f3BDs&($riy}WX<0p6!|n|@2`_K73_Y=-hZ z0qx=SQ-!6WJ&$hh+)&TJI@dI?QNo|-l{l4-(RQFs8F{L0UVM7r4BZ3T349Es1pdN? z&=j`Go?FDOkOtbkH0CInM}fYm8iC#^ zPMDPjYGL>~fH&=5ru?jB$~|)TxX$>rkrb z=}NrK=Y`nQ+#-(O({WSEuIMr|abI;Zq2yU)(T=xc)u?_oN$}}cCA>?Eg>uf{zH)CL zP^%7l2tA#Gg1ahvBb>XT(sxwKv-l7VjmGnK{7i8ei9B)|$Bjks%5hk1Xdx7U5+gQz0$gOa{?{rtlY z^GJqv5VP=E7&*(D6#LdNQ#LP2b#e_gK|an%L|MvGfPy z!F-0)Pl8}yEp-!$SQ~hQ9d>4<&byhcH!41~1MIeO>KJ5PaazDl01hdIy$trC?vZm_nBn{sZWcA(6llXo=Gns}g%s z!pvaiUAscob=wctttT+I)eu?XGoq%C{M?+OqnrIQJL>*H z&JOnrkZR{0FGgMhse#Dbs#|05S*h4!*8E*<2ln7*NHUM!(7Ws5vs939oh)WivXON> zW2dT_hMprj7B>f9+kCc^=+BtBIg6Stx?HU*VFhSla!MAI;irax7^rS(<5m)Q>!Hbs zfYG53!c7a`AJM#Y04u6%X>~E^DV<*y3EL>Y%DUajgzKbHiIwW^+cT(_$A_P)fe|Wg zH+UiP@{^TkV9w)^SwkK7hH_P%<{zAfjuXkmvgr+8~t40MJ)K2sAmuB{t-gM+sk{ zKX?cJ0Jh(BQgIQ~V{7m#UaSmKJb&-<5!y~If^@41k72sH?rXd<;b`{ENklae|cZvD$==L z?<*0b^$Rda-ePl$(Nk_A{;9Vgt>o|k_GG$0$A^b%>Ms&j79AcX zQOq9V+cwEtqO5>%Xm_q@(qxbJq!Ai!Q7&>m@La+SaoB_|m$!ZMy|c_8!{ulb%uFA& z7|gYS`~#s65`!fh^Aw$>8vbsp^-1P{9g+$qZOuBpic-~9P)?~m z>2(j!3;J2Cfu{LfKnsJAlMquq(d9qx6wOFaSTGxS%0<%B4Q6y5YQ0ORKPa}7oL5~i zw$|#G@ZEPdd9@>?k~RMFodz7KadoWa$cO#|%rSO#4K;>JPwE$qaYJ%yzVb+0Q%|yA z8K&|77Ua5}|0;FPTJ+LZuA4y7u4u)FlaDQ$fOte}i%9pENaQy{iq>di_XQBgO-^hv zv-RvDHP_s3(gf`7T969n5^X(wwZKCOWfOy|7{mgr$k&4ul z;_3QZoMrub}M|AJU#$Ke4p3Tp2XjaiS z#uWIPrWQ?pZVUvrAiYtLw+PXMD9S7<2ax^MwQ66_Or<$o(@#83P~|FFLc;4}rpfdZ zeM;(3&(Ei&8gfPtwjL*85`PYEF6)v!bt_|1Cs!nez$i0pWBY$9+#$@GhxP$BGQFid z@MeHxn9bbsZ#|*-yqAe@0MSM#Ym|ooZ+Ib2G|LwvVRp${VI3RH)gWl#;}XxfUT$noO2O7!U^AjbI%vrkvc~q0dl3TGC(XM!pck+^=?5<$1$#HJ^eoLMcEL1RMZ^yC_PfymzYE3?-I*S#-+uVY4d8g# zskc#93v9)l$IV=J4;|eg6NKKL598_Fua){@-m;*R9-H^$FJ_T&;)6fTDPHBU>P!f7o?d zx3Ua6ZUhIYssjOmhID+L+2Ve{8J8Nwn(-~`WnwsCgHl%X?iH?XZcz`Y z!xriRMc|bO%N;<$w>2I2e5x2pxzaFhO?%Lhu=c#gV_a6*3 z07MVSfZR2eUDZJ8^K(O+f%d7-M7<9ICFr=6Gd>TM5hn5>)#+--9Sc+ZzTbuN>cbz- z=ltUU3$Yu>2&gNQ~$*TRc6qcx)0 zVu1T{?5t5AZctV@1ATY{g5ke6ueUXw5A`-_f*UN1c8^J|4el;@D4k8Z?_{{Yl9U}= zua!HL^-!s6l&a`VaFv+Km(-kWz2?{{r>)lmpGz2tCH5S7I%vEWB@%;B#Ovz)I1_}vmKy!P(%Qm$-#Ohgu0P24gk_$Q?wNTSY{jYLhc>Ii-nXX*lCm1qZ6xR^hj)ZHw=jY-6fGUtCV% zcwK88hzq}{GlFy10q8(Ku2QE_EQ=}H>U1ZLCv%70{;9j}IzPy9**O;J3yR*2N+!qE zYEXD{i@5uH2v-Af(FsaefOa>oDLtUMDWC?|Tyupz|1uyn=22eF7cE2FzsSXsAw}+Z zR9_sfo*u&a^f1{5QHB|%j-TyvElm7mmlr@|;)#3on)OZNEnByZq7}sPsu|S_#wvh1T>#8$J)}8%taOajIh7iCC(RCb5>SC$}Z;fF5Z>yp2xEc&nrjp!+2ax z$+&R`y^XTmM%=0vNTuNJh&H7qZhY@`-6+44;8Cr)zN4BrgdYe%2b>2jtFjFr>aQ%t zVLonX?9#mx5sh7T%Xt<*-dEOZ#i+>1|ss z?c*E1gE{?`^pkd}Hm|2suI7Rw=>iL{~3@_pQiyuGa;!a zAsQMcUc8P4k~8E$sn`P(>hz6UkjcwKK>6uQsq(bA``pG+5__VrsXAW5N(Ob*#JK1l zHDgQbnPl|(6Gc;ln7@@+dg0pEvJw`mUxtCmsBv)2n( z64?&{yaKEg{O17gkwZ4`oeh^JM&f?CH>>6Rk&%rk)p{U}UucbR0}(b{O;Xnf%&W%J=txVwlss_{a4~W+r8R z(BlNY**V@8%q^4yZ-wiG$l;QRqX~@ih3Km^p|!P?*9w%i=-xxp?`Z2c(vRMD*|=~u zS$Pd;!dy%>bi&rcN>1Jq6@~@FmAf{Z@?ZwWldsBu@R>(a#q@P2R-1245oWJzHwTsg zi0_xQC)sUjwGYQ#3oBe|rRrLF&&`%9`PqXk@WCp%E_wiW-l}{CH-E@Dmrn}ah4?!T zhO{VD6j2XQl1L`;f^#hk5Jnm}6{fDd?_^6B@YGcR9tQJI)HIhy+GY7Cx3%C1F!#Uc zG@v*8a;k@+I=v6gXWm@)AiK(-avJA*Tyo=I8xH^T7a{I+{wIlG#@gaFK0sDPmmnxd z7n#eS_LNlnY#QYQ5PWl`66*2+{kHv)1qGktd@@xxxP}PlgsPU*kF=^shPy=PDWnI^ zsRcT%U|bV=x6(<-w{v#ab7)*mT1<60J zWWVsZa=@76(iz6;fH#=aK6Fn%Jpj2;-4hoLw3H=GV}0JI^wQay!dm=J+Oqrh)`Crzcm! z;O(O34*z4eZsf%nQB4z`=+*S4wK0hmfVJFTqbiC8rqk>TA(4VYET!56x{U`*=L3}* z0lw5da4IC(Ad1O@&{K&%0))Z9!|GUs`UG93SfD1>ZgYVeV!jXNeGd%kCtX(wi3~|j zJ7y%G(r6A#2B^R$5gq(MSKr>RhGT|arN@eS-og|%Ywx*_!7ym3%(yZzH5-8UO1tdl zkyf4SX`Pk5Zv}T_PY7P`@lKi5y^K(7eSpy}eqbKn>G66lyQT6y>{Vff@U>>rs7(6& zfkM3z5jW(SpPzD*Bmd-P-$=uzDy=1WE@je(*Nvesd#`}6r=!G72Jd=yuZ1khGYbaU z0tBpKB0W`sien^fNY?JrRW z*JZ7d1}A4gII&_>xG{5YedE{!pLnNf%bhzIl7fX4?<_7grT2nVOQ-yAg&8=D#TA@S z={C!l?iniwj15BRh9}#o&w2`-t3=FIQ;evhT6~Ko$gv98ch~jtcXxX7NvvMs>1i&t zXm8{(+TI+$_NlN_@tFpZeS6*t_=Y)?V{X6p+IEm31?S>dWmKW^;%4EU2P~sbSd9DE zZi~Q)-9wV`9maC69j^3-Ahr2x*Rd||TMd`O?`IgQIv-y?+@`Kw1hC*70A2QjOy4#S zn{0dZF6?X0(!1I-pUexWAJcVFmYsu;tYW(tCA;c|G71GNsUuQ;laVtzjynM-fB1{7 zQ$jlWrDZA2gn7a(R&mPXt|MAqPhJde)=*PecPHpl?KZ@iYWvoo#b#7NK#}k$slgi- z*5=Z}85wEjs-?=t^Bmu_rSuC8K3E!_ZhYLZT}7=J$pWmeM*KGcqu{-jCAkvb;y|u= z4aJe)Ye7gl+grEl(4#Q|X&M<#=R2k;eWmu`8@a~by?o{GHcEXkTFR?8sKh3}&{kE5 zNEu<6@F2Gpz!e{W0^3G@h&amHSw%H9IBobU(ahiPsV?F**u#Ou*>6YYc~}68v0_r1 zp#!U9KuVK4XC8iJ3$-9b4i=|EfMS zqUGxE&iwW$^TJmN8}*C-eA)SN0qIfs;bkJ(-U16f493289*pAILG$E7vtBLcpvUY` zjfViOZoGx?1(UTK9}ZoON}AHD?$*sM=J+t$pqn5V>AUD~u*yiom$oIL5?I4z#x^~F zJcZ>jbP`Q}m7vOJ-*$Qx4fxEhq)ZTNVHdCmxc2V4m!te-C-FKE<~RSx@hl0|(vo4) zY@~V8WtLE^`=3jZ`6=!+GEEY|AkLy?wx{6E%t>L#LYU@>&OKMg9I(dr^&v6Q&`JBm z62mfrOg7iQ(sn1Q?%tiG@}vFTYfi4NGziD(!W`bRSIVBZRR+$=RAieBv9O27$A6Fk z>e_US`M?^%MI^Ghpl^0j~0X6ym4O!8)e8CME29T`A6S3XGg#$N&H{3WmkH3$K?x4zeVS zS_7?kfJ3!?eL2Zg%+uqvshuq`1EL~7&yIZt4CfH zdkz?Atp?)hg=LKMNeU+J+s6VsvjNA@Qk=PopA)_cDDXLK5_th6n?{m?+qP)lzSm#e zp>i$29an|f}g>_J`N)`o=H&&{IXOV(IV|#U{3!X5~l?U#Y$d7*quLs z&k#{zfIR_V?JW=3Ec{nPkjcxnq;c9n<7{2n}0m5=j_+!DQF>XR_>7 z#(P9x1*Wj)E2v_2arFs5!J}8S96A1)#yX+FaD*0_bbu=c^Fk}}W}(5Q4Yk!Oyk_C0%^XDuODii>Qg;;dQeIFIv}L0# z1m?`jP%)fh5n8F37r-mbBi;=TD%wKA8xo?D0=lod{(=3x-`<~|bKd7U=Y5~g`+h#3 zr>bBoHi0p%o}@6%xDmObdS%EfnVha|W@hlv6~pjkFBdP2m3Yo<80F2)k&ZuW?+BBl zJH>G*2aZ}kufOp$eKmsL92Eb03K)D_IbMrlu&<61w~HPm>Qy!BCpGRmy6t4bt{W6v z!%=SEG|R#iR2ULSjY)4r2AZ&49(F%vxty;W3ki(097F4Mk3;pz8?exB4W+aIekx?T zY%qs2(dcb=t%T!h!amQ`9N@v_xuq-WsDH(3MF)p~Tb-*679C>&%CPRX56wyQWv(Z* z1Fd~UB*}9`Fg2Y_RN#UQ4I#?Er;^ECOvP|TE3ikFsabTr*Jv9Y8?M7I`XS@mI2drZGR7&;=d~AnDCCjm%4m+WQ5A+51>)L?ttRx8Hy&EcfBwE_HS~+d8 z9rsDwH*RaGZ51fNDT~_KXAl1Jq`qOT;|ES9@OF{@VJYcMBhVxil9LCM-ZbC=>kH3- z0rm{wIm+&Ec3yo67$;Dw;#FPUu_Er8w}gpRiPn1ZH`kOJ-diyt{@sM|G%Dlykz+v5 znlWUS3oyyz2)Ocv(vI=O{+u0>cgy#Mvhn;0?`pr3=ob#%1?Jfg&_{zVy)v{etFJW_ z#w|Fr)SXWrrAALHds9(|yG=&L^_|ildDtQuuxxSM43cqQLYEF>fcfbFq&wg=#=I`5EByX>0`j~$%nR3Ob<(Jj;sK*d?Ph{Gd$?R-8RfC}` z*-EqU1zEWvXz42MEBxMk1Zjxae=|H_FVh!&0C_ZXu5En3s>Vn>;x8DRA-o6)ik&MS-PJbiXvU8ht;qsPB zNMwC*)^ckEM~58Pt*44;s^QCm9-^;amr#ShPH=|KqPYc zREI{C+L$cY{d~rb2?-Ci`d$P*JCbjT;5(g15{VFJ$LgModu}sct_0XwK{Pm)zCotZ zCbvp#S9r~7(iXZR{UgRJVzG#zh>xKXfNI+mcGfDTs+}p|%G}P}oZvL^y+(%o7IaW} zBrG=6jW-lN;0W1VwU>g(zL4lxR>2{mDA*Ds*)V|;?uLXMgSJ`@&WPf@Q{>oK z-DTB9-f&MHyw^^W#*l|g4{g08uw28Aze?TJGnkGgCj;xNmK-m2C@!zk)46WWg(qp( zDAjy_oT{7e$fgHIED#^D(+ae)tMCjWmfC16Qpy>zGAy%vhmv<;EtCQ5HaKq6L|T`2 zU|*lxGB12Qp%$`1aE9ex-*)^V)_eh6xN|pX*^1DwqW-bLRd(=u{Y5cDzff!%0H4eA zyYx$7h!h*S-d(;0eOYUe^fKZcmqKF0Pt9`k+I#D88}w_~T_B<+&7a)h{l1fOo95(U zRJ0MXDGIEvwnMHTPzDCyZc6zy3Fx5J|EvFy17p<@r<-@-S3vpe0=HAXuoD$OUdj9i DN2FnI literal 0 HcmV?d00001 diff --git a/meta/Step4.PNG b/meta/Step4.PNG new file mode 100644 index 0000000000000000000000000000000000000000..6a51a98e97c2c9930bfff8b94850a7a1ddf7286f GIT binary patch literal 62663 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

~T4?Qc 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�iy; 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 KMwPbXv;P7WtXyFL literal 0 HcmV?d00001