Git Product home page Git Product logo

royalapplications / toolbox Goto Github PK

View Code? Open in Web Editor NEW
144.0 18.0 78.0 1.58 MB

This repository contains various automation scripts for Royal TS (for Windows) and Royal TSX (for macOS). Also included are dynamic folder samples. This collection consists of scripts by the Royal Apps team or contributions from our great user-base!

Home Page: https://www.royalapps.com

License: MIT License

PowerShell 73.32% Python 21.36% Lua 5.31%
royalts royaltsx powershell python bash perl applescript automation dynamicfolder dynamiccredential

toolbox's People

Contributors

aderusha avatar armentpau avatar chrisgala avatar christophvw avatar dafyre avatar deworn avatar dkittell avatar dnewsholme avatar eightnoneone avatar janegilring avatar joachimtingvold avatar krikk avatar lemonmojo avatar marksowell avatar mindsolve avatar mxschmitt avatar nil4 avatar patschi avatar pv2b avatar qdaniel avatar ramon-libertypumps avatar ruffy91 avatar ryguy013 avatar sargola avatar st9rm1337 avatar stefankoell avatar unending avatar willellis avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

toolbox's Issues

Bitwarden collections support

Hello,
Dynamic folders worls for Bitwarden, but everything is in the root folder.
So for me it's useless : I have built a tree (collections) for all my clients.
A collection contains all the credentials of the client.
So is it possible to add support of collections in the script ?
Other way :
Add a default collection. So I can attach a collection on each client (but must create many Dynamic folders...)
Thanks

1Password dynamic folder error while signing in

Hi
I am able to use op.exe manually.
I am on version 6.1.61019
When reloading the 1Password dynamic folder it spins for a while and then shows this error:
An error occurred while executing the dynamic folder's script C: \ Users\myuser\AppDataocal \ Temp \ Royal TS V6WynF_cS1670cd-b3a2-40f1-8ced-792756b1ddc1_1698756523.py:33& SyntaxWarning: invalid escape sequence ' \ [' exp_str_error = "[ERROR].*"Error while signing in: EOF flag has been raised.
Can you help with this one?
regards
Wojtek

Connecting to Thycotic

I hope this is the correct place to ask this. :-)

I'm not sure if this is actually just something on my Thycotic setup causing this but any guidance on how to see the results of what is returned by the Powershell script when it connects to my Thycotic server would be helpful.

I get the following error after login and MFA completed.

An error occurred while parsing the output of a dynamic folder's script: Unexpected character encountered while parsing value: R. Path '', line 1, position 1041.

thanks

Mynard

The script not working

We created a new folder with proper permissions (user logged in to RoyalTS is owner of the folder) - not pushing or still missing in RoyalTS. Is the script designed for 10.9.x Secrer Server?

1password Dynamic Folder toolbox issue with 1password service account

Hi,

Using the 1password Dynamic Folder integration with 1 password service account.

The issue is that op needs to have passed the vault name when using a Service Account.

I hardcoded it in the Dynamic folder script, it makes it as we have only 1 vault used with this integration at the moment, but it would be nice that the Script handles it directly.

image
image
image

StartProgram not being taken into consideration.

Hello,

We're trying to dynamically add RDP connections using a dynamic folder, however since we use a PSM connection we need to define the "StartProgram" field. Our RDP connections are created correctly and all fields are correctly filled except the advanced -> Program (property name $StartProgram$) is not being filled and will stay blank.
We are using a Python script following the examples and this is each connection:
connection = { "Type": "RemoteDesktopConnection", "Name": "{} {} FRONT serious {} {}".format(product,cia,seriousHost,version), "ComputerName": psmLink, "Description" : sirius, "StartProgram" : "psm /u {} /a {} /c PSM-RDP".format(User,serious), "Path" : "{}/{}".format(environment,cia), "CredentialsFromParent" : "true" } connections.append(connection)
we're running the above in a loop and doing this at the end of the script:
store = { "Objects": connections } print(json.dumps(store))

We can't seem to figure out why it's not being filled.
Your help is appreciated Thank you.

Royal TS version 6.1.50425

Logon to Thycotic fails if password contains a $ character

Logon to Thycotic fails if password contains a $ character. I believe the issue is on the last line of each script. Consider wrapping the variables with single quotes instead of double quotes.
Get-Entries -url "$CustomProperty.ServerURL$" -username "$EffectiveUsername$" -password "$EffectivePassword$" -requiresMFA $false

Touch ID support?

"Biometric unlock for 1Password CLI must be disabled in the 1Password app"

When will touch id support added?

Unsafe 1password integration

The current version of the 1password dynamic folder script requires the 1password windows hello and biometric unlock functions to be disabled. This is considered unsafe.
Even more important, the script requires one to save the secret key and master password in the Royal TS script configuration fields. This is considered very insecure and (correctly so) actively advised against by 1Password itself.

With the new version of the 1Password CLI tool these credentials are also not required. If the 1Password desktop app and CLI are installed one can just run op item list --vault Private and let 1Password handle all the (secure desktop) prompts for logging in and authorizing the request. Hence the need to store master password credentials inside Royal TS is no longer there.

We should not ask for or store credentials and use the CLI securely and as intended.

Dynamic Folder for Netbox

Hello everyone,

has anyone ever tried a connector for Netbox? This would probably make data maintenance in RoyalTS easier for many people/companies.

One idea would be a dynamic folder that automatically loads the devices according to tenants (in Netbox this is the wording for customers) by sites or groups in RoyalTS.

Best regards
Yannick

Unable to get RedirectDrives working with Python Dynamic Folder script

On Royal TS 5 I'm running your Python script for a Dynamic Folder loading in EC2 instances from AWS. I am unable to figure out why Redirection of local disks for Windows instances is not working following https://docs.royalapps.com/r2021/scripting/objects/connections/royalrdsconnection.html#redirectdrives along with https://github.com/royalapplications/toolbox/tree/master/Dynamic%20Folder/Amazon%20Web%20Services/EC2. All of my Windows and Linux instances get created properly but Drive Redirections is always set to "No Drive" no matter what I am have tried.

I probably also have some wonky entries related to setting credentials for each folder/connection entry to parent but that is working (after a bit of trouble I had there too).

import subprocess
import json

def get_instances(region = "", profile = ""):
    cmd = "aws ec2 describe-instances --output json"

    if region != "":
        cmd += " --region " + region

    if profile != "":
        cmd += " --profile " + profile

    aws = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
    (response_json, err) = aws.communicate()
    exit_code = aws.wait()

    response = json.loads(response_json)

    windows_connections = []
    linux_connections = []

    for reservation in response.get("Reservations", None):
        for instance in reservation.get("Instances", None):
            instance_id = instance.get("InstanceId", "")
            platform = instance.get("Platform", "")

            is_windows = platform.lower() == "windows"

            private_ip_address = instance.get("PrivateIpAddress", "")
            tags = instance.get("Tags")
            name = instance_id

            if tags is not None:
                for tag in tags:
                    if tag.get("Key", "").lower() == "name":
                        tagValue = tag.get("Value", "")

                        if tagValue.lower() != "":
                            name = tagValue
                        
                        break

            computer_name = private_ip_address

            connection = {
                "ID": instance_id,
                "Name": name,
                "ComputerName": computer_name,
				"CredentialFromParent": True,
                "CredentialMode": 1
            }

            if not is_windows:
                connection["Type"] = "TerminalConnection"
                connection["TerminalConnectionType"] = "SSH"
                linux_connections.append(connection)
            else:
                connection["Type"] = "RemoteDesktopConnection"
                connection["RedirectDrives"] = True
                windows_connections.append(connection)

    folders = [
        {
            "Type": "Folder",
            "Name": "Windows Instances",
            "Objects": windows_connections,
			"CredentialFromParent": True,
			"CredentialMode": 1
        },
        {
            "Type": "Folder",
            "Name": "Linux Instances",
            "Objects": linux_connections,
			"CredentialFromParent": True,
			"CredentialMode": 1
        }
    ]

    store = {
        "Objects": folders
    }

    store_json = json.dumps(store)

    return store_json

print(get_instances("$CustomProperty.Region$", "$CustomProperty.Profile$"))

Let me know if any other detail is required.

Json syntax

Hi Hi,

I'd like to work on a dymanic script for Google Cloud and was wondering if you can let me know where I can find an example of the json syntax needed for a dymanic folder?

Duplicate ID error when a bitwarden credential is in multiple collections

When using the Bitwarden PowerShell dynamic folder script, if a credential is added to multiple collections the entire dynamic folder fails to load with the error "Duplicate ID found". Inspecting the JSON returned from the script confirms that a credential object with the same ID exists in both folders.

1Password | Error while signing in: EOF flag has been raised. | Win 22H2 22621.819 | Python 3.11.0 | Royal TS 7.0.11108

Hi,

i try to use the Dynamic Folder LOG:

11/12/2022 7:13:39 PM - Information - Edit - The Dynamic Folder 1Password (Python) was modified. 11/12/2022 7:13:43 PM - Error - Store - An error occurred while executing the dynamic folder's script - Details: Error while signing in: EOF flag has been raised. 11/12/2022 7:13:43 PM - Debug - Application - [VerifyFormPosition] Warning WindowState: Normal 11/12/2022 7:13:43 PM - Debug - Application - [VerifyFormPosition] Warning Bounds: [X: 2557; Y: 447; Width: 646; Height: 138]

Unable to set UseMultiMon via RoyalJSON

Would like to be able to set Use Multiple Monitors via Dynamic Folder script. Tried to define "UseMultiMon" object property, but it does not reflect in the object created.

{
    "Objects":  [
                    {
                        "ComputerName":  "Server01",
                        "ConsoleSession":  "true",
                        "Name":  "Server01",
                        "Type":  "RemoteDesktopConnection",
                        "Path":  "Servers",
                        "WindowMode": "FullScreen",
                        "UseMultiMon":  "true"
                    }
                ]
}

Feature Request: rJson - Windows Support

Hi,

we've created an easy script to parse some API's, and render several json files using jq and j2cli.
This way's it's easier to maintain our RoyalTS configs than using the Powershell libs.
The problem now is: we are half on Mac, half on Windows...Windows saddly doesnt support rjson so far

Would it be possible to support rJSON on Windows ?

Ty!
Nico

Bitwarden Powershell "At least one token coundn't be resolved"

I'm trying to identify what I'm doing wrong here. I loaded the Bitwarden Dynamic Folder in RoyalTS, Windows, v7.2.50304 using PowerShell 5.1 by going to File > Open > Import > Dynamic Folder > Sample > Bitwarden > Bitwarden (Powershell)

  • Under Custom Properties I added the local path to bw.exe, as well as my API ID, Secret, and Password.
  • I checked off "Do not load the PowerShell profile" under the script interpreter.
  • Saved
  • Right click the Dynamic Folder
  • Reload

The Dynamic Folder icon begins to spin, but the log immediately states that "At least one token couldn't be retrieved"

 At least one token couldn't be resolved    
 Severity: Warning 
 Category: Application
 Details:  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (

I installed PowerShell 7.4 and changed the Script Interpreter to
%ProgramFiles%\PowerShell\7\pwsh.exe

Same Result.

I turned on Debugging, reloaded the Dynamic Folder, but that didn't provide any additional details.

In all cases, the Dynamic folder icon continues to spin until I select "Cancel Reload"

Are there any recommended steps I could take to further diagnose this issue?

The Vault is large, with about 500 entries in it.

Secret Server - Secrets not working

When using the dynamic folder (powershell) to connect to Thycotic Secret Server, it works in populating it. It even works with Duo (though we are restricted to using our tokens.) However, when actually trying to use the credentials on, say, an RDP connection, I get the following error:

Error: Resolving dynamic credential data failed: Unexpected character encountered while parsing value: G. Path '', line 0, position 0.

I get prompted for the OTP pin as usual, but this is all I get afterwards. It sounds like an error in the script code somewhere, but I have no clue where.

Error

Dynamic Folder / Active Directory (Python) - Folder inheritance

There's a design issue with this script -
basically if you want to inherit credentials from the main folder of the document, you can not get that easily.
The reason is that this setting would need to be set on the implicitly created dynamic folders. You can put that setting on the top level but not on intermediate folders.

Adding it per host is easy, using the dynamic folder model docs

The following example presents a workaround referencing a credential by name.

def create_connection(object_type, terminal_connection_type, name, host, path):
	connection = {
		"Type": object_type,
		"Name": name,
		"ComputerName": host,
		"Properties": {
			"CredentialMode": 4,
			"CredentialName": "mycred/name"
		}
	}

The real goal would be reached with

  • CredentialMode: 1
  • CredentialFromParent: True
  • CredentialAutologon: True (optional)

It's not possible at the moment due to the fact that intermediate would need to also have that setting.
The best logic would be to adhere to the mode that is set in the dynamic folder settings itself and to propagate it down.
I don't know how to access that and my brain is already shutting off again trying to think about it

rjson - Redirect Drives

hi Stefan,
Not sure if this is the correct place to create this issue... :)

Could you check out this Royal Rjson issue i'm encountering. When i create an rjson files with some objects like this:

		{
    		"Type": "RemoteDesktopConnection",
			"Name": "PowerBox [192.168.1.101]",
			"ComputerName": "192.168.1.101",
			"Username": "nicovs",
			"Password": "olalalapassword",
			"Description": "Prosol PowerBox [192.168.1.101]",
			"Port": "3389",
			"RedirectClipboard": "True",
                         "RedirectDrives": "True",
	                 "NetworkLevelAuthentication": "True"
		},

I cannot get the Drive Redirection to work on Mac or Windows
Properties_2023-03-03_17h56
powerbox_2023-03-03_20h04

Not all secrets showing with SecretServer

Connected and authenticated to on prem SecretServer just fine. Not all secrets that I know and have verified I have access too, including secrets that I have created are showing. "Personal Folder" does not show in the list as well. When refreshing the dynamic folder, I do get an information error in the bottom left saying "Some tokens couldn't be resolved".

Secret Server Credential Objects

The Secret Server automation creates the folder and credential objects sucessfully but does not assign username and passwords inside those credential objects.

Bitwarden Powershell Issues

I was excited to see this script pop up the other day.

I suggest adding this to the header of the script:

#Requires -Version 7.2

# To use PWSH v7
# Open File > Options > Advanced > Dynamic Folder
# Set the path to "%ProgramFiles%\PowerShell\7\pwsh.exe"

$PSStyle.OutputRendering = 'PlainText' was introduced in v7.2.

Also, I am unable to get past the check for the bw executable.

If I run the following in my terminal it works fine, but setting that path in the Custom Property field it will error out.

$path = "$env:ONEDRIVECONSUMER\AppSync\RoyalTS\bw.exe"

if (!(Test-Path -Path "$($path)" -PathType Leaf)) {
  Write-Error -Message "Bitwarden CLI utility not found at specified path. Please check CLI utility path in Custom Properties." -ErrorAction Stop
}

Further testing, I exported env: to a log file and it shows the correct values.

1Password integration asks for MFA every time a credential is used

When using the 1Password integration, with an account with MFA enabled, every time we want to use a credential, I get an MFA prompt. That's not really ideal.

This was initially surprising, because 1Password is only supposed to require MFA when signing in on a new device, but investigating the code, it seems that the integration logs off manually every time. Getting a list of items is basically the sequence:

  • Try to log off (ignore failures)
  • Log on
  • Get a list of items and convert it into Royal TS format
  • Log off

The process is similar for a dynamic credential.

The result of this is that every login or reload of the dynamic folder is a new sign-in to the 1Password servers, which means a new MFA prompt. That's obviously less than ideal.

I tried, as a workaround, to set "Dynamic Credentials" to No, with the idea that it would just get all the passwords and store them in the Royal TS file, but for the amount of objects I have in 1Password it takes a very long time to load them all (after 15 minutes it still wasn't done so I gave up waiting), and I really prefer not storing my passwords in a Royal TS file if it can be avoided, I'd rather just keep them in the password manager.

Probably the best fix for this, in terms of functionality, would be to remove any logon/logoff logic from the Royal TS integration and expect the end user to directly interact with the op CLI for logging in and out. Alternatively, it should only try to log in if it can detect that it's not logged in, and not always be signing out. (I can imagine that would break some scenarios with multiple 1Password accounts in different files.)

I'm willing to put in some work into changing this, but I'd love to hear any feedback, maybe some insight into why the feature works as it does right now, any kind of edge cases I'm not thinking of, etc.

Secret Server Integration not working through RTS

Similar to issue #13 I am getting the error on the dynamic folder. "An error occurred while parsing the output of a dynamic folder's script: Unexpected character encountered while parsing value: C. Path ", line 0, position 0."
image

I am running RTS v5.3.60720 and SS v10.7.

Running the code outside of RTS works fine for both the Folder and Credential script. The only thing I have done is removed the -skipcertificatecheck as I'm running PS 5.1

I have tried using the built-in and manually downloading/importing the rdfe file. I'm sure there is something simple I'm missing here, but any info would be helpful.

Dynamic Folder / 1Password (Python) - Multiuser Document

It seems that the 1Password script does not work with multiple users and synced documents (for example OneDrive).
If using a dynamic folder per user and saving a login for a connection (for example RDP) or folder, it displays as unknown for other users even if they have access to the same 1Password vault.

We also did a test with the same dynamic folder document and 1Password credentials for multiple users but the behavior did not change.

I guess the internal ID for each login is created during initial load which leads to different IDs on different devices.

Maybe this is helpful:
We were using the Bitwarden Python script until end of last year and did not have this issue.

Thanks,
Stefan

AWS EC2 Dynamic Folder script does not specify aws command output format

If a user has pre-configured the output format for the 'aws' command within their config file to anything other than JSON, the script fails with the error (taken from Royal TSX on OS X):

An error occurred while executing the dynamic folder's script: Traceback (most recent call last):
File "/Users//Library/Caches/com.lemonmojo.RoyalTSX.App/DynF_b258321f-a40a-45ca-9f0b-dc030bcbb786_1563215081", line 80, in
print(get_instances("us-east-2"))
File "/Users//Library/Caches/com.lemonmojo.RoyalTSX.App/DynF_b258321f-a40a-45ca-9f0b-dc030bcbb786_1563215081", line 15, in get_instances
response = json.loads(response_json)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/init.py", line 338, in loads
return _default_decoder.decode(s)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 384, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

This can be avoided by explicitly specifying the output format in the dynamic folder script as part of the 'cmd' variable as follows:

cmd = "aws ec2 describe-instances --output json"

1Password dynamic script doesn't support OTP

Looks like 1Password 8 isn't supported in TSX, so I tried using the dynamic script, but it doesn't support authenticating using a OTP. Would love to have this support added so that I can use it. Thanks!

Screen Shot 2022-03-11 at 9 28 19 AM

1password dynamic folder - MFA

Any chance to save passwords or have them accessible without having to enter a MFA every time its used or attempted to reconnect?

Dynamic folder, PrivateKeyContent not work

Hello

royal tsx version 5.1.2

i'm set credentials

{"Objects":[{"Type":"Credential","Name":"id125","Username":"root","PrivateKeyMode":1,"PrivateKeyContent":"45;45;45;45;45;66;69;71;73;78;32;79;80;69;78;83;83;72;32;80;82;73;86;65;84;69;32;75;69;89;45;45;45;45;45;10;98;51;66;108;98;110;78;122;97;67;49;114;90;88;107;116;100;106;69;65;65;65;65;65;66;71;53;118;98;109;85;65;65;65;65;69;98;109;57;117;90;81;65;65;65;65;65;65;65;65;65;66;65;65;65;67;70;119;65;65;65;65;100;122;99;50;103;116;99;110;10;78;104;65;65;65;65;65;119;69;65;65;81;65;65;65;103;69;65;116;118;121;80;73;68;80;120;115;107;108;120;117;50;83;113;49;54;76;88;50;113;48;54;85;73;122;77;114;67;81;89;54;113;122;106;50;98;118;66;106;49;81;97;116;100;69;83;120;122;80;117;10;97;103;88;65;68;71;52;55;119;84;108;70;101;117;65;43;80;78;104;105;72;75;106;122;88;119;107;43;119;115;49;108;47;67;79;68;43;110;82;75;80;54;109;50;106;69;120;114;87;68;106;120;68;89;54;116;65;102;114;65;65;83;100;56;88;119;43;85;106;119;10;115;75;105;80;78;57;89;48;88;75;116;109;107;118;76;47;56;74;54;52;76;67;69;89;98;108;74;121;50;98;78;106;90;70;120;103;85;119;49;118;49;74;72;105;73;113;54;76;88;70;69;65;101;106;81;110;67;79;69;87;101;83;101;84;104;88;75;76;72;49;10;47;48;84;120;87;48;70;101;106;72;117;99;115;110;68;85;43;114;84;79;74;89;69;107;72;89;51;77;50;113;90;104;72;49;108;114;122;72;80;53;115;89;110;120;107;51;106;55;85;117;53;111;68;71;51;115;54;43;72;116;52;48;76;52;80;101;99;101;50;76;10;112;105;107;99;51;74;82;53;43;68;68;99;47;121;102;87;73;101;74;105;103;118;107;57;119;82;90;85;112;72;54;121;82;51;74;76;90;56;43;80;69;103;112;81;100;43;108;65;56;66;47;113;88;66;65;90;43;84;70;106;43;97;55;109;69;100;76;87;100;48;10;107;102;47;87;48;114;104;102;85;103;104;49;90;110;43;56;84;50;108;65;74;72;49;110;108;97;66;109;74;72;69;106;53;119;104;72;102;118;82;110;68;119;47;116;47;101;87;121;97;98;100;90;53;116;48;57;116;85;119;75;119;111;82;79;100;108;89;102;100;43;10;83;78;119;107;77;90;121;90;43;51;98;98;86;52;67;52;85;122;121;75;48;104;78;115;117;71;51;82;70;84;75;49;82;67;52;71;77;112;47;80;116;48;105;75;106;120;112;51;75;75;99;72;70;77;114;52;90;89;57;98;87;67;66;47;86;47;116;87;118;83;10;114;43;116;117;98;105;122;122;101;75;90;43;43;53;71;71;102;55;43;56;57;86;67;51;118;49;121;87;109;99;89;106;77;70;67;54;101;84;107;79;106;68;114;109;75;110;115;48;78;51;86;52;68;87;51;122;97;77;106;105;109;69;106;86;116;69;87;111;120;67;10;110;56;117;102;103;89;103;113;51;66;85;73;72;104;75;101;53;53;56;119;103;118;122;98;97;55;75;68;114;97;56;74;48;87;49;102;102;57;99;112;121;68;109;56;89;120;118;83;74;78;50;70;89;116;54;85;76;88;49;47;78;97;67;109;90;66;72;109;114;89;10;82;83;83;105;76;80;73;78;82;103;97;109;67;53;98;74;103;105;70;50;48;47;98;87;105;69;110;68;48;108;122;84;108;119;49;90;88;70;49;86;87;119;77;80;112;87;118;100;97;115;117;119;110;105;65;70;108;101;77;68;55;103;106;82;108;78;84;90;104;85;10;85;65;65;65;100;73;67;55;115;121;109;65;117;55;77;112;103;65;65;65;65;72;99;51;78;111;76;88;74;122;89;81;65;65;65;103;69;65;116;118;121;80;73;68;80;120;115;107;108;120;117;50;83;113;49;54;76;88;50;113;48;54;85;73;122;77;114;67;81;89;10;54;113;122;106;50;98;118;66;106;49;81;97;116;100;69;83;120;122;80;117;97;103;88;65;68;71;52;55;119;84;108;70;101;117;65;43;80;78;104;105;72;75;106;122;88;119;107;43;119;115;49;108;47;67;79;68;43;110;82;75;80;54;109;50;106;69;120;114;87;68;10;106;120;68;89;54;116;65;102;114;65;65;83;100;56;88;119;43;85;106;119;115;75;105;80;78;57;89;48;88;75;116;109;107;118;76;47;56;74;54;52;76;67;69;89;98;108;74;121;50;98;78;106;90;70;120;103;85;119;49;118;49;74;72;105;73;113;54;76;88;70;10;69;65;101;106;81;110;67;79;69;87;101;83;101;84;104;88;75;76;72;49;47;48;84;120;87;48;70;101;106;72;117;99;115;110;68;85;43;114;84;79;74;89;69;107;72;89;51;77;50;113;90;104;72;49;108;114;122;72;80;53;115;89;110;120;107;51;106;55;85;117;10;53;111;68;71;51;115;54;43;72;116;52;48;76;52;80;101;99;101;50;76;112;105;107;99;51;74;82;53;43;68;68;99;47;121;102;87;73;101;74;105;103;118;107;57;119;82;90;85;112;72;54;121;82;51;74;76;90;56;43;80;69;103;112;81;100;43;108;65;56;66;10;47;113;88;66;65;90;43;84;70;106;43;97;55;109;69;100;76;87;100;48;107;102;47;87;48;114;104;102;85;103;104;49;90;110;43;56;84;50;108;65;74;72;49;110;108;97;66;109;74;72;69;106;53;119;104;72;102;118;82;110;68;119;47;116;47;101;87;121;97;98;10;100;90;53;116;48;57;116;85;119;75;119;111;82;79;100;108;89;102;100;43;83;78;119;107;77;90;121;90;43;51;98;98;86;52;67;52;85;122;121;75;48;104;78;115;117;71;51;82;70;84;75;49;82;67;52;71;77;112;47;80;116;48;105;75;106;120;112;51;75;75;10;99;72;70;77;114;52;90;89;57;98;87;67;66;47;86;47;116;87;118;83;114;43;116;117;98;105;122;122;101;75;90;43;43;53;71;71;102;55;43;56;57;86;67;51;118;49;121;87;109;99;89;106;77;70;67;54;101;84;107;79;106;68;114;109;75;110;115;48;78;51;10;86;52;68;87;51;122;97;77;106;105;109;69;106;86;116;69;87;111;120;67;110;56;117;102;103;89;103;113;51;66;85;73;72;104;75;101;53;53;56;119;103;118;122;98;97;55;75;68;114;97;56;74;48;87;49;102;102;57;99;112;121;68;109;56;89;120;118;83;74;78;10;50;70;89;116;54;85;76;88;49;47;78;97;67;109;90;66;72;109;114;89;82;83;83;105;76;80;73;78;82;103;97;109;67;53;98;74;103;105;70;50;48;47;98;87;105;69;110;68;48;108;122;84;108;119;49;90;88;70;49;86;87;119;77;80;112;87;118;100;97;115;10;117;119;110;105;65;70;108;101;77;68;55;103;106;82;108;78;84;90;104;85;85;65;65;65;65;68;65;81;65;66;65;65;65;67;65;66;77;66;103;111;65;117;120;81;68;109;110;102;104;47;121;84;114;105;103;66;99;72;102;82;73;87;118;98;57;51;100;70;115;84;10;111;65;114;105;100;73;86;70;107;65;121;111;98;90;72;104;77;47;99;120;74;55;82;105;48;114;81;77;70;99;112;103;100;106;90;116;112;121;115;103;53;84;53;79;119;73;85;78;80;110;87;69;51;116;86;112;116;76;105;79;69;82;98;98;98;82;55;90;115;122;10;102;99;82;78;51;54;120;71;121;97;82;70;71;47;86;89;102;82;57;115;77;111;118;122;74;76;99;110;87;108;48;83;47;107;66;111;121;43;112;82;101;97;56;106;119;121;103;88;101;78;66;89;119;43;120;56;98;99;119;102;90;117;83;66;83;112;112;74;69;52;10;113;100;49;104;119;87;47;80;87;83;104;99;69;76;108;54;87;110;109;115;71;73;71;73;57;97;65;84;121;114;47;66;57;109;48;102;48;72;87;87;120;48;67;71;108;79;116;48;56;111;117;71;66;121;116;83;78;72;73;98;83;77;115;118;101;114;77;118;98;103;10;69;48;102;98;73;50;89;106;89;68;111;55;77;83;83;87;76;114;89;81;101;82;51;48;69;103;77;85;87;67;47;115;88;70;74;105;113;67;98;65;97;111;105;101;111;67;89;66;118;116;83;113;54;50;103;90;53;57;116;81;49;80;68;80;101;108;52;50;103;109;10;111;84;104;103;56;97;56;83;53;105;50;121;83;111;121;72;118;86;84;89;120;79;66;89;74;66;89;57;77;109;80;106;68;65;105;81;121;56;76;80;70;122;56;103;71;100;112;80;82;110;107;116;89;115;57;51;112;109;51;115;51;79;105;113;109;115;86;116;115;72;10;101;104;78;70;113;90;74;54;114;67;47;49;116;114;53;77;74;71;48;73;75;48;72;99;111;99;77;65;43;111;56;65;78;48;78;109;48;65;107;118;87;56;106;106;43;102;54;100;80;56;75;101;117;77;82;114;50;48;109;102;122;116;106;86;116;57;112;81;105;77;10;122;98;109;98;80;54;105;101;81;119;74;122;103;52;117;55;85;112;54;99;69;111;84;81;81;108;51;70;51;102;43;54;122;115;105;97;106;78;52;55;80;121;79;102;49;68;49;56;66;88;102;71;80;54;49;111;117;52;52;116;88;76;47;51;49;114;72;86;84;89;10;115;70;76;87;87;84;110;49;78;117;72;99;67;72;51;117;76;100;86;86;87;65;99;107;74;78;43;48;82;113;116;86;117;43;49;56;73;120;102;86;87;116;122;55;109;122;119;57;65;72;117;56;97;82;120;49;97;74;107;118;79;70;70;119;73;66;71;118;97;74;10;78;105;90;116;65;108;51;80;56;47;82;85;85;43;50;89;116;69;51;51;122;111;48;66;117;79;112;75;71;106;79;99;43;57;72;117;85;117;55;115;104;115;56;90;106;43;106;52;103;76;78;109;85;107;111;82;52;55;70;110;69;112;47;65;43;66;121;68;98;88;10;118;50;66;101;80;105;102;121;51;74;88;53;57;82;114;75;100;49;65;65;65;66;65;81;68;70;106;98;68;72;107;70;85;118;56;102;70;111;115;118;110;120;56;102;113;85;103;105;106;113;75;103;90;79;79;80;118;103;90;99;87;54;112;56;77;103;109;56;69;102;10;104;120;54;112;80;69;97;113;82;76;47;89;106;65;52;70;77;77;102;106;112;74;110;104;55;47;97;76;67;48;66;68;66;55;77;78;122;100;106;105;109;88;73;103;51;71;54;65;99;87;55;78;82;115;112;117;81;65;110;116;113;53;65;120;112;77;121;56;56;75;10;98;84;85;55;75;112;77;84;53;68;100;72;114;99;85;85;56;110;98;55;75;117;106;117;97;69;87;100;56;100;67;85;122;111;78;86;113;81;108;118;101;106;49;66;56;109;85;67;80;65;75;106;68;77;102;100;80;119;115;98;55;90;121;68;102;76;120;81;104;114;10;116;119;71;111;50;81;78;83;52;101;83;71;67;87;99;116;77;56;118;66;90;82;106;72;70;48;100;54;74;104;71;67;89;115;74;68;120;65;116;121;47;86;101;51;76;121;89;71;43;106;104;49;47;67;76;85;113;51;86;82;117;97;78;56;118;100;116;105;55;112;10;114;56;90;101;117;89;82;81;57;67;109;52;56;43;73;49;75;97;88;76;65;67;66;43;52;81;89;69;108;78;98;76;72;84;113;70;90;75;49;107;50;69;117;102;112;55;77;106;85;72;90;101;115;53;103;115;115;69;120;113;115;98;114;88;85;97;104;90;57;76;10;104;71;90;57;51;109;118;110;83;52;56;71;97;106;101;86;65;65;65;66;65;81;68;90;57;84;116;86;69;68;121;98;51;52;113;97;107;76;88;55;104;102;101;105;86;103;102;79;101;105;43;84;105;47;115;43;110;105;88;104;106;113;69;111;53;49;73;89;51;111;10;98;77;119;111;56;69;57;87;67;65;47;82;84;73;47;56;89;110;89;83;76;47;106;117;104;43;78;43;111;101;89;114;53;83;110;70;82;77;100;106;76;89;110;75;102;75;51;113;68;86;68;109;48;52;65;72;111;74;66;51;79;106;117;51;87;84;111;51;73;65;10;108;66;72;85;109;53;83;85;85;73;49;97;50;99;47;122;71;83;109;50;100;66;50;78;102;120;76;54;67;66;104;122;89;85;51;116;66;83;114;88;56;69;116;118;56;87;83;106;73;79;67;114;118;83;49;113;118;87;43;99;50;71;112;70;100;77;79;118;48;107;10;122;99;55;99;71;86;88;118;57;116;73;74;111;75;105;43;57;67;106;77;121;112;43;66;99;54;97;82;110;75;65;52;87;57;71;71;78;102;89;67;51;122;69;120;90;57;69;54;49;77;49;69;50;121;107;69;85;105;88;78;82;69;72;120;98;54;89;100;56;49;10;99;97;106;43;103;71;77;98;55;57;74;118;110;101;57;68;85;101;47;78;107;104;69;108;103;79;81;109;97;72;80;108;47;77;52;49;114;48;102;113;43;97;100;100;121;100;70;119;68;106;66;112;71;76;121;43;75;50;89;106;80;66;85;90;119;89;43;89;113;50;10;82;43;119;112;110;68;69;114;102;73;86;50;102;106;65;65;65;66;65;81;68;87;55;76;50;105;102;115;54;56;48;85;68;67;105;66;48;86;81;65;43;85;48;102;51;114;89;53;107;53;83;55;70;90;70;90;71;79;99;109;73;48;56;90;75;80;102;114;52;82;10;70;71;70;72;105;71;70;57;117;99;113;56;69;122;89;119;105;97;116;110;71;90;104;52;113;101;104;48;80;48;122;79;117;118;81;119;119;57;121;108;56;114;113;70;79;72;117;108;86;114;104;101;72;69;74;107;71;49;114;89;89;81;70;57;116;106;122;70;100;55;10;107;76;114;77;85;121;71;85;74;99;66;110;81;55;49;100;69;112;47;115;56;118;107;114;56;110;108;118;73;47;111;79;47;72;47;67;56;57;100;107;53;84;114;84;73;47;75;106;90;57;51;76;90;120;107;54;122;52;68;115;113;43;79;56;78;57;122;97;112;89;10;65;107;78;77;71;43;55;106;119;116;102;119;117;84;116;82;71;108;84;74;120;98;43;120;79;50;118;99;107;118;104;108;115;115;84;108;105;89;52;90;115;79;115;116;118;121;98;79;69;74;76;49;106;90;113;49;111;50;65;55;104;120;120;100;80;79;112;104;84;54;10;109;112;70;65;76;82;103;111;100;113;108;119;80;71;53;74;75;54;108;69;68;87;109;75;106;48;104;76;47;71;111;102;81;71;68;57;88;106;71;72;76;81;67;107;79;50;52;81;97;51;68;112;77;98;116;90;54;80;109;105;118;72;99;105;85;84;72;69;115;71;10;112;85;103;82;67;110;102;67;75;70;97;51;65;65;65;65;68;72;100;51;100;121;49;107;89;88;82;104;81;72;66;111;99;65;69;67;65;119;81;70;66;103;61;61;10;45;45;45;45;45;69;78;68;32;79;80;69;78;83;83;72;32;80;82;73;86;65;84;69;32;75;69;89;45;45;45;45;45;10;10","ID":"125"}]}

and have this

03792bbf61fa09d9830c0fad2fed8d96

I've been fighting for a week, what's wrong?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.