@campnetwork/origin 1.3.0-alpha.0 → 1.3.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3695,1237 +3695,1237 @@ var batchPurchaseAbi = [
3695
3695
 
3696
3696
  var disputeAbi = [
3697
3697
  {
3698
- type: "constructor",
3699
3698
  inputs: [
3700
3699
  ],
3701
- stateMutability: "nonpayable"
3700
+ stateMutability: "nonpayable",
3701
+ type: "constructor"
3702
3702
  },
3703
3703
  {
3704
- type: "function",
3705
- name: "UPGRADE_INTERFACE_VERSION",
3706
3704
  inputs: [
3707
- ],
3708
- outputs: [
3709
3705
  {
3710
- name: "",
3711
- type: "string",
3712
- internalType: "string"
3706
+ internalType: "address",
3707
+ name: "target",
3708
+ type: "address"
3713
3709
  }
3714
3710
  ],
3715
- stateMutability: "view"
3711
+ name: "AddressEmptyCode",
3712
+ type: "error"
3716
3713
  },
3717
3714
  {
3718
- type: "function",
3719
- name: "cancelDispute",
3720
3715
  inputs: [
3721
- {
3722
- name: "id",
3723
- type: "uint256",
3724
- internalType: "uint256"
3725
- }
3726
3716
  ],
3727
- outputs: [
3717
+ name: "AlreadyVoted",
3718
+ type: "error"
3719
+ },
3720
+ {
3721
+ inputs: [
3728
3722
  ],
3729
- stateMutability: "nonpayable"
3723
+ name: "CoolDownPeriodActive",
3724
+ type: "error"
3725
+ },
3726
+ {
3727
+ inputs: [
3728
+ ],
3729
+ name: "CoolDownPeriodOver",
3730
+ type: "error"
3730
3731
  },
3731
3732
  {
3732
- type: "function",
3733
- name: "disputeAssertion",
3734
3733
  inputs: [
3735
3734
  {
3736
- name: "id",
3737
- type: "uint256",
3738
- internalType: "uint256"
3739
- },
3740
- {
3741
- name: "_counterEvidenceHash",
3742
- type: "bytes32",
3743
- internalType: "bytes32"
3735
+ internalType: "address",
3736
+ name: "implementation",
3737
+ type: "address"
3744
3738
  }
3745
3739
  ],
3746
- outputs: [
3747
- ],
3748
- stateMutability: "nonpayable"
3740
+ name: "ERC1967InvalidImplementation",
3741
+ type: "error"
3749
3742
  },
3750
3743
  {
3751
- type: "function",
3752
- name: "disputeBond",
3753
3744
  inputs: [
3754
3745
  ],
3755
- outputs: [
3756
- {
3757
- name: "",
3758
- type: "uint256",
3759
- internalType: "uint256"
3760
- }
3746
+ name: "ERC1967NonPayable",
3747
+ type: "error"
3748
+ },
3749
+ {
3750
+ inputs: [
3761
3751
  ],
3762
- stateMutability: "view"
3752
+ name: "EvidenceAlreadyUsed",
3753
+ type: "error"
3763
3754
  },
3764
3755
  {
3765
- type: "function",
3766
- name: "disputeCoolDownPeriod",
3767
3756
  inputs: [
3768
3757
  ],
3769
- outputs: [
3770
- {
3771
- name: "",
3772
- type: "uint256",
3773
- internalType: "uint256"
3774
- }
3758
+ name: "FailedCall",
3759
+ type: "error"
3760
+ },
3761
+ {
3762
+ inputs: [
3775
3763
  ],
3776
- stateMutability: "view"
3764
+ name: "InvalidBondFeeBps",
3765
+ type: "error"
3777
3766
  },
3778
3767
  {
3779
- type: "function",
3780
- name: "disputeCounter",
3781
3768
  inputs: [
3782
3769
  ],
3783
- outputs: [
3784
- {
3785
- name: "",
3786
- type: "uint256",
3787
- internalType: "uint256"
3788
- }
3770
+ name: "InvalidChildIpId",
3771
+ type: "error"
3772
+ },
3773
+ {
3774
+ inputs: [
3789
3775
  ],
3790
- stateMutability: "view"
3776
+ name: "InvalidDisputeStatus",
3777
+ type: "error"
3791
3778
  },
3792
3779
  {
3793
- type: "function",
3794
- name: "disputeJudgementPeriod",
3795
3780
  inputs: [
3796
3781
  ],
3797
- outputs: [
3798
- {
3799
- name: "",
3800
- type: "uint256",
3801
- internalType: "uint256"
3802
- }
3782
+ name: "InvalidDisputeTag",
3783
+ type: "error"
3784
+ },
3785
+ {
3786
+ inputs: [
3803
3787
  ],
3804
- stateMutability: "view"
3788
+ name: "InvalidEvidenceHash",
3789
+ type: "error"
3805
3790
  },
3806
3791
  {
3807
- type: "function",
3808
- name: "disputeQuorum",
3809
3792
  inputs: [
3810
3793
  ],
3811
- outputs: [
3812
- {
3813
- name: "",
3814
- type: "uint256",
3815
- internalType: "uint256"
3816
- }
3794
+ name: "InvalidInitialization",
3795
+ type: "error"
3796
+ },
3797
+ {
3798
+ inputs: [
3817
3799
  ],
3818
- stateMutability: "view"
3800
+ name: "InvalidTargetIp",
3801
+ type: "error"
3819
3802
  },
3820
3803
  {
3821
- type: "function",
3822
- name: "disputeToken",
3823
3804
  inputs: [
3824
3805
  ],
3825
- outputs: [
3826
- {
3827
- name: "",
3828
- type: "address",
3829
- internalType: "contract IERC20"
3830
- }
3806
+ name: "NoVotingPower",
3807
+ type: "error"
3808
+ },
3809
+ {
3810
+ inputs: [
3831
3811
  ],
3832
- stateMutability: "view"
3812
+ name: "NotAParentIp",
3813
+ type: "error"
3833
3814
  },
3834
3815
  {
3835
- type: "function",
3836
- name: "disputes",
3837
3816
  inputs: [
3838
- {
3839
- name: "",
3840
- type: "uint256",
3841
- internalType: "uint256"
3842
- }
3843
3817
  ],
3844
- outputs: [
3845
- {
3846
- name: "initiator",
3847
- type: "address",
3848
- internalType: "address"
3849
- },
3850
- {
3851
- name: "targetId",
3852
- type: "uint256",
3853
- internalType: "uint256"
3854
- },
3855
- {
3856
- name: "disputeTag",
3857
- type: "bytes32",
3858
- internalType: "bytes32"
3859
- },
3860
- {
3861
- name: "disputeEvidenceHash",
3862
- type: "bytes32",
3863
- internalType: "bytes32"
3864
- },
3865
- {
3866
- name: "counterEvidenceHash",
3867
- type: "bytes32",
3868
- internalType: "bytes32"
3869
- },
3870
- {
3871
- name: "disputeTimestamp",
3872
- type: "uint256",
3873
- internalType: "uint256"
3874
- },
3875
- {
3876
- name: "assertionTimestamp",
3877
- type: "uint256",
3878
- internalType: "uint256"
3879
- },
3880
- {
3881
- name: "yesVotes",
3882
- type: "uint256",
3883
- internalType: "uint256"
3884
- },
3885
- {
3886
- name: "noVotes",
3887
- type: "uint256",
3888
- internalType: "uint256"
3889
- },
3890
- {
3891
- name: "status",
3892
- type: "uint8",
3893
- internalType: "enum DisputeModule.DisputeStatus"
3894
- },
3895
- {
3896
- name: "bondAmount",
3897
- type: "uint256",
3898
- internalType: "uint256"
3899
- },
3900
- {
3901
- name: "protocolFeeAmount",
3902
- type: "uint256",
3903
- internalType: "uint256"
3904
- }
3818
+ name: "NotInitializing",
3819
+ type: "error"
3820
+ },
3821
+ {
3822
+ inputs: [
3905
3823
  ],
3906
- stateMutability: "view"
3824
+ name: "NotInitiator",
3825
+ type: "error"
3907
3826
  },
3908
3827
  {
3909
- type: "function",
3910
- name: "hasVoted",
3911
3828
  inputs: [
3912
- {
3913
- name: "",
3914
- type: "uint256",
3915
- internalType: "uint256"
3916
- },
3917
- {
3918
- name: "",
3919
- type: "address",
3920
- internalType: "address"
3921
- }
3922
3829
  ],
3923
- outputs: [
3830
+ name: "NotTokenOwner",
3831
+ type: "error"
3832
+ },
3833
+ {
3834
+ inputs: [
3924
3835
  {
3925
- name: "",
3926
- type: "bool",
3927
- internalType: "bool"
3836
+ internalType: "address",
3837
+ name: "owner",
3838
+ type: "address"
3928
3839
  }
3929
3840
  ],
3930
- stateMutability: "view"
3841
+ name: "OwnableInvalidOwner",
3842
+ type: "error"
3931
3843
  },
3932
3844
  {
3933
- type: "function",
3934
- name: "initialize",
3935
3845
  inputs: [
3936
3846
  {
3937
- name: "_ipToken",
3938
- type: "address",
3939
- internalType: "contract IIpNFT"
3940
- },
3941
- {
3942
- name: "_marketplace",
3943
- type: "address",
3944
- internalType: "contract IMarketplace"
3945
- },
3946
- {
3947
- name: "_disputeToken",
3948
- type: "address",
3949
- internalType: "contract IERC20"
3950
- },
3951
- {
3952
- name: "_disputeBond",
3953
- type: "uint256",
3954
- internalType: "uint256"
3955
- },
3956
- {
3957
- name: "_disputeCoolDownPeriod",
3958
- type: "uint256",
3959
- internalType: "uint256"
3960
- },
3961
- {
3962
- name: "_disputeJudgementPeriod",
3963
- type: "uint256",
3964
- internalType: "uint256"
3965
- },
3966
- {
3967
- name: "_bondFeeBPS",
3968
- type: "uint16",
3969
- internalType: "uint16"
3970
- },
3971
- {
3972
- name: "_stakingThreshold",
3973
- type: "uint256",
3974
- internalType: "uint256"
3975
- },
3976
- {
3977
- name: "_stakingVault",
3978
- type: "address",
3979
- internalType: "contract ICampStakingVault"
3847
+ internalType: "address",
3848
+ name: "account",
3849
+ type: "address"
3980
3850
  }
3981
3851
  ],
3982
- outputs: [
3983
- ],
3984
- stateMutability: "nonpayable"
3852
+ name: "OwnableUnauthorizedAccount",
3853
+ type: "error"
3985
3854
  },
3986
3855
  {
3987
- type: "function",
3988
- name: "ipToken",
3989
3856
  inputs: [
3990
3857
  ],
3991
- outputs: [
3992
- {
3993
- name: "",
3994
- type: "address",
3995
- internalType: "contract IIpNFT"
3996
- }
3997
- ],
3998
- stateMutability: "view"
3858
+ name: "ParentNotDisputed",
3859
+ type: "error"
3999
3860
  },
4000
3861
  {
4001
- type: "function",
4002
- name: "isUsedEvidenceHash",
4003
3862
  inputs: [
4004
- {
4005
- name: "",
4006
- type: "bytes32",
4007
- internalType: "bytes32"
4008
- }
4009
- ],
4010
- outputs: [
4011
- {
4012
- name: "",
4013
- type: "bool",
4014
- internalType: "bool"
4015
- }
4016
3863
  ],
4017
- stateMutability: "view"
3864
+ name: "SelfAssertionNotAllowed",
3865
+ type: "error"
4018
3866
  },
4019
3867
  {
4020
- type: "function",
4021
- name: "marketplace",
4022
3868
  inputs: [
4023
3869
  ],
4024
- outputs: [
4025
- {
4026
- name: "",
4027
- type: "address",
4028
- internalType: "contract IMarketplace"
4029
- }
4030
- ],
4031
- stateMutability: "view"
3870
+ name: "StakedAfterDispute",
3871
+ type: "error"
4032
3872
  },
4033
3873
  {
4034
- type: "function",
4035
- name: "owner",
4036
3874
  inputs: [
4037
3875
  ],
4038
- outputs: [
4039
- {
4040
- name: "",
4041
- type: "address",
4042
- internalType: "address"
4043
- }
4044
- ],
4045
- stateMutability: "view"
3876
+ name: "TagNotAllowed",
3877
+ type: "error"
4046
3878
  },
4047
3879
  {
4048
- type: "function",
4049
- name: "protocolDisputeFee",
4050
3880
  inputs: [
4051
3881
  ],
4052
- outputs: [
3882
+ name: "UUPSUnauthorizedCallContext",
3883
+ type: "error"
3884
+ },
3885
+ {
3886
+ inputs: [
4053
3887
  {
4054
- name: "",
4055
- type: "uint256",
4056
- internalType: "uint256"
3888
+ internalType: "bytes32",
3889
+ name: "slot",
3890
+ type: "bytes32"
4057
3891
  }
4058
3892
  ],
4059
- stateMutability: "view"
3893
+ name: "UUPSUnsupportedProxiableUUID",
3894
+ type: "error"
4060
3895
  },
4061
3896
  {
4062
- type: "function",
4063
- name: "proxiableUUID",
4064
3897
  inputs: [
4065
3898
  ],
4066
- outputs: [
4067
- {
4068
- name: "",
4069
- type: "bytes32",
4070
- internalType: "bytes32"
4071
- }
3899
+ name: "VotingPeriodActive",
3900
+ type: "error"
3901
+ },
3902
+ {
3903
+ inputs: [
4072
3904
  ],
4073
- stateMutability: "view"
3905
+ name: "VotingPeriodOver",
3906
+ type: "error"
4074
3907
  },
4075
3908
  {
4076
- type: "function",
4077
- name: "raiseDispute",
3909
+ anonymous: false,
4078
3910
  inputs: [
4079
3911
  {
4080
- name: "_targetIpId",
4081
- type: "uint256",
4082
- internalType: "uint256"
3912
+ indexed: true,
3913
+ internalType: "uint256",
3914
+ name: "tokenId",
3915
+ type: "uint256"
4083
3916
  },
4084
3917
  {
4085
- name: "_disputeEvidenceHash",
4086
- type: "bytes32",
4087
- internalType: "bytes32"
3918
+ indexed: true,
3919
+ internalType: "address",
3920
+ name: "buyer",
3921
+ type: "address"
4088
3922
  },
4089
3923
  {
4090
- name: "_disputeTag",
4091
- type: "bytes32",
4092
- internalType: "bytes32"
4093
- }
4094
- ],
4095
- outputs: [
3924
+ indexed: false,
3925
+ internalType: "uint32",
3926
+ name: "periods",
3927
+ type: "uint32"
3928
+ },
4096
3929
  {
4097
- name: "id",
4098
- type: "uint256",
4099
- internalType: "uint256"
3930
+ indexed: false,
3931
+ internalType: "uint256",
3932
+ name: "newExpiry",
3933
+ type: "uint256"
3934
+ },
3935
+ {
3936
+ indexed: false,
3937
+ internalType: "uint256",
3938
+ name: "amountPaid",
3939
+ type: "uint256"
4100
3940
  }
4101
3941
  ],
4102
- stateMutability: "nonpayable"
4103
- },
4104
- {
4105
- type: "function",
4106
- name: "renounceOwnership",
4107
- inputs: [
4108
- ],
4109
- outputs: [
4110
- ],
4111
- stateMutability: "nonpayable"
3942
+ name: "AccessPurchased",
3943
+ type: "event"
4112
3944
  },
4113
3945
  {
4114
- type: "function",
4115
- name: "resolveDispute",
3946
+ anonymous: false,
4116
3947
  inputs: [
4117
3948
  {
4118
- name: "id",
4119
- type: "uint256",
4120
- internalType: "uint256"
3949
+ indexed: true,
3950
+ internalType: "uint256",
3951
+ name: "agentId",
3952
+ type: "uint256"
3953
+ },
3954
+ {
3955
+ indexed: true,
3956
+ internalType: "uint256",
3957
+ name: "ipNftId",
3958
+ type: "uint256"
3959
+ },
3960
+ {
3961
+ indexed: false,
3962
+ internalType: "address",
3963
+ name: "agentAddress",
3964
+ type: "address"
4121
3965
  }
4122
3966
  ],
4123
- outputs: [
4124
- ],
4125
- stateMutability: "nonpayable"
3967
+ name: "AgentRegistered",
3968
+ type: "event"
4126
3969
  },
4127
3970
  {
4128
- type: "function",
4129
- name: "setDisputeQuorum",
3971
+ anonymous: false,
4130
3972
  inputs: [
4131
3973
  {
4132
- name: "_disputeQuorum",
4133
- type: "uint256",
4134
- internalType: "uint256"
3974
+ indexed: true,
3975
+ internalType: "address",
3976
+ name: "appRegistry",
3977
+ type: "address"
4135
3978
  }
4136
3979
  ],
4137
- outputs: [
4138
- ],
4139
- stateMutability: "nonpayable"
3980
+ name: "AppRegistryUpdated",
3981
+ type: "event"
4140
3982
  },
4141
3983
  {
4142
- type: "function",
4143
- name: "stakingThreshold",
3984
+ anonymous: false,
4144
3985
  inputs: [
4145
- ],
4146
- outputs: [
4147
3986
  {
4148
- name: "",
4149
- type: "uint256",
4150
- internalType: "uint256"
3987
+ indexed: true,
3988
+ internalType: "uint256",
3989
+ name: "id",
3990
+ type: "uint256"
3991
+ },
3992
+ {
3993
+ indexed: true,
3994
+ internalType: "uint256",
3995
+ name: "childIp",
3996
+ type: "uint256"
3997
+ },
3998
+ {
3999
+ indexed: false,
4000
+ internalType: "uint256",
4001
+ name: "parentIp",
4002
+ type: "uint256"
4151
4003
  }
4152
4004
  ],
4153
- stateMutability: "view"
4005
+ name: "ChildIpTagged",
4006
+ type: "event"
4154
4007
  },
4155
4008
  {
4156
- type: "function",
4157
- name: "stakingVault",
4009
+ anonymous: false,
4158
4010
  inputs: [
4159
- ],
4160
- outputs: [
4161
4011
  {
4162
- name: "",
4163
- type: "address",
4164
- internalType: "contract ICampStakingVault"
4012
+ indexed: true,
4013
+ internalType: "uint256",
4014
+ name: "tokenId",
4015
+ type: "uint256"
4016
+ },
4017
+ {
4018
+ indexed: true,
4019
+ internalType: "address",
4020
+ name: "creator",
4021
+ type: "address"
4165
4022
  }
4166
4023
  ],
4167
- stateMutability: "view"
4024
+ name: "DataDeleted",
4025
+ type: "event"
4168
4026
  },
4169
4027
  {
4170
- type: "function",
4171
- name: "tagChildIp",
4028
+ anonymous: false,
4172
4029
  inputs: [
4173
4030
  {
4174
- name: "_childIpId",
4175
- type: "uint256",
4176
- internalType: "uint256"
4031
+ indexed: true,
4032
+ internalType: "uint256",
4033
+ name: "tokenId",
4034
+ type: "uint256"
4177
4035
  },
4178
4036
  {
4179
- name: "_infringerDisputeId",
4180
- type: "uint256",
4181
- internalType: "uint256"
4037
+ indexed: true,
4038
+ internalType: "address",
4039
+ name: "creator",
4040
+ type: "address"
4041
+ },
4042
+ {
4043
+ indexed: false,
4044
+ internalType: "bytes32",
4045
+ name: "contentHash",
4046
+ type: "bytes32"
4047
+ },
4048
+ {
4049
+ indexed: false,
4050
+ internalType: "uint256[]",
4051
+ name: "parents",
4052
+ type: "uint256[]"
4182
4053
  }
4183
4054
  ],
4184
- outputs: [
4185
- ],
4186
- stateMutability: "nonpayable"
4055
+ name: "DataMinted",
4056
+ type: "event"
4187
4057
  },
4188
4058
  {
4189
- type: "function",
4190
- name: "transferOwnership",
4059
+ anonymous: false,
4191
4060
  inputs: [
4192
4061
  {
4193
- name: "newOwner",
4194
- type: "address",
4195
- internalType: "address"
4062
+ indexed: true,
4063
+ internalType: "uint256",
4064
+ name: "id",
4065
+ type: "uint256"
4066
+ },
4067
+ {
4068
+ indexed: false,
4069
+ internalType: "bytes32",
4070
+ name: "counterEvidenceHash",
4071
+ type: "bytes32"
4196
4072
  }
4197
4073
  ],
4198
- outputs: [
4199
- ],
4200
- stateMutability: "nonpayable"
4074
+ name: "DisputeAssertion",
4075
+ type: "event"
4201
4076
  },
4202
4077
  {
4203
- type: "function",
4204
- name: "upgradeToAndCall",
4078
+ anonymous: false,
4205
4079
  inputs: [
4206
4080
  {
4207
- name: "newImplementation",
4208
- type: "address",
4209
- internalType: "address"
4210
- },
4211
- {
4212
- name: "data",
4213
- type: "bytes",
4214
- internalType: "bytes"
4081
+ indexed: true,
4082
+ internalType: "uint256",
4083
+ name: "id",
4084
+ type: "uint256"
4215
4085
  }
4216
4086
  ],
4217
- outputs: [
4218
- ],
4219
- stateMutability: "payable"
4087
+ name: "DisputeCancelled",
4088
+ type: "event"
4220
4089
  },
4221
4090
  {
4222
- type: "function",
4223
- name: "voteOnDispute",
4091
+ anonymous: false,
4224
4092
  inputs: [
4225
4093
  {
4094
+ indexed: true,
4095
+ internalType: "uint256",
4226
4096
  name: "id",
4227
- type: "uint256",
4228
- internalType: "uint256"
4097
+ type: "uint256"
4229
4098
  },
4230
4099
  {
4231
- name: "support",
4232
- type: "bool",
4233
- internalType: "bool"
4100
+ indexed: false,
4101
+ internalType: "bool",
4102
+ name: "judgement",
4103
+ type: "bool"
4234
4104
  }
4235
4105
  ],
4236
- outputs: [
4237
- ],
4238
- stateMutability: "nonpayable"
4106
+ name: "DisputeJudged",
4107
+ type: "event"
4239
4108
  },
4240
4109
  {
4241
- type: "event",
4242
- name: "AccessPurchased",
4110
+ anonymous: false,
4243
4111
  inputs: [
4244
4112
  {
4245
- name: "tokenId",
4246
- type: "uint256",
4247
- indexed: true,
4248
- internalType: "uint256"
4249
- },
4250
- {
4251
- name: "buyer",
4252
- type: "address",
4253
4113
  indexed: true,
4254
- internalType: "address"
4255
- },
4256
- {
4257
- name: "periods",
4258
- type: "uint32",
4259
- indexed: false,
4260
- internalType: "uint32"
4261
- },
4262
- {
4263
- name: "newExpiry",
4264
- type: "uint256",
4265
- indexed: false,
4266
- internalType: "uint256"
4267
- },
4268
- {
4269
- name: "amountPaid",
4270
- type: "uint256",
4271
- indexed: false,
4272
- internalType: "uint256"
4114
+ internalType: "address",
4115
+ name: "disputeModule",
4116
+ type: "address"
4273
4117
  }
4274
4118
  ],
4275
- anonymous: false
4119
+ name: "DisputeModuleUpdated",
4120
+ type: "event"
4276
4121
  },
4277
4122
  {
4278
- type: "event",
4279
- name: "AgentRegistered",
4123
+ anonymous: false,
4280
4124
  inputs: [
4281
4125
  {
4282
- name: "agentId",
4283
- type: "uint256",
4284
4126
  indexed: true,
4285
- internalType: "uint256"
4127
+ internalType: "uint256",
4128
+ name: "id",
4129
+ type: "uint256"
4286
4130
  },
4287
4131
  {
4288
- name: "ipNftId",
4289
- type: "uint256",
4290
4132
  indexed: true,
4291
- internalType: "uint256"
4133
+ internalType: "address",
4134
+ name: "initiator",
4135
+ type: "address"
4136
+ },
4137
+ {
4138
+ indexed: true,
4139
+ internalType: "uint256",
4140
+ name: "targetId",
4141
+ type: "uint256"
4292
4142
  },
4293
4143
  {
4294
- name: "agentAddress",
4295
- type: "address",
4296
4144
  indexed: false,
4297
- internalType: "address"
4145
+ internalType: "bytes32",
4146
+ name: "disputeTag",
4147
+ type: "bytes32"
4298
4148
  }
4299
4149
  ],
4300
- anonymous: false
4150
+ name: "DisputeRaised",
4151
+ type: "event"
4301
4152
  },
4302
4153
  {
4303
- type: "event",
4304
- name: "AppRegistryUpdated",
4154
+ anonymous: false,
4305
4155
  inputs: [
4306
4156
  {
4307
- name: "appRegistry",
4308
- type: "address",
4309
- indexed: true,
4310
- internalType: "address"
4157
+ indexed: false,
4158
+ internalType: "uint64",
4159
+ name: "version",
4160
+ type: "uint64"
4311
4161
  }
4312
4162
  ],
4313
- anonymous: false
4163
+ name: "Initialized",
4164
+ type: "event"
4314
4165
  },
4315
4166
  {
4316
- type: "event",
4317
- name: "ChildIpTagged",
4167
+ anonymous: false,
4318
4168
  inputs: [
4319
4169
  {
4320
- name: "id",
4321
- type: "uint256",
4322
- indexed: true,
4323
- internalType: "uint256"
4324
- },
4325
- {
4326
- name: "childIp",
4327
- type: "uint256",
4328
4170
  indexed: true,
4329
- internalType: "uint256"
4330
- },
4331
- {
4332
- name: "parentIp",
4333
- type: "uint256",
4334
- indexed: false,
4335
- internalType: "uint256"
4171
+ internalType: "address",
4172
+ name: "marketPlace",
4173
+ type: "address"
4336
4174
  }
4337
4175
  ],
4338
- anonymous: false
4176
+ name: "MarketPlaceUpdated",
4177
+ type: "event"
4339
4178
  },
4340
4179
  {
4341
- type: "event",
4342
- name: "DataDeleted",
4180
+ anonymous: false,
4343
4181
  inputs: [
4344
4182
  {
4345
- name: "tokenId",
4346
- type: "uint256",
4347
4183
  indexed: true,
4348
- internalType: "uint256"
4184
+ internalType: "address",
4185
+ name: "previousOwner",
4186
+ type: "address"
4349
4187
  },
4350
4188
  {
4351
- name: "creator",
4352
- type: "address",
4353
4189
  indexed: true,
4354
- internalType: "address"
4190
+ internalType: "address",
4191
+ name: "newOwner",
4192
+ type: "address"
4355
4193
  }
4356
4194
  ],
4357
- anonymous: false
4195
+ name: "OwnershipTransferred",
4196
+ type: "event"
4358
4197
  },
4359
4198
  {
4360
- type: "event",
4361
- name: "DataMinted",
4199
+ anonymous: false,
4362
4200
  inputs: [
4363
4201
  {
4364
- name: "tokenId",
4365
- type: "uint256",
4366
- indexed: true,
4367
- internalType: "uint256"
4368
- },
4369
- {
4370
- name: "creator",
4371
- type: "address",
4372
4202
  indexed: true,
4373
- internalType: "address"
4203
+ internalType: "uint256",
4204
+ name: "childIpId",
4205
+ type: "uint256"
4374
4206
  },
4375
4207
  {
4376
- name: "contentHash",
4377
- type: "bytes32",
4378
4208
  indexed: false,
4379
- internalType: "bytes32"
4209
+ internalType: "uint256[]",
4210
+ name: "parentIds",
4211
+ type: "uint256[]"
4380
4212
  },
4381
4213
  {
4382
- name: "parents",
4383
- type: "uint256[]",
4384
4214
  indexed: false,
4385
- internalType: "uint256[]"
4215
+ internalType: "uint16",
4216
+ name: "totalRoyaltyBps",
4217
+ type: "uint16"
4386
4218
  }
4387
4219
  ],
4388
- anonymous: false
4220
+ name: "ParentIpsSet",
4221
+ type: "event"
4389
4222
  },
4390
4223
  {
4391
- type: "event",
4392
- name: "DisputeAssertion",
4224
+ anonymous: false,
4393
4225
  inputs: [
4394
4226
  {
4395
- name: "id",
4396
- type: "uint256",
4397
- indexed: true,
4398
- internalType: "uint256"
4399
- },
4400
- {
4401
- name: "counterEvidenceHash",
4402
- type: "bytes32",
4403
4227
  indexed: false,
4404
- internalType: "bytes32"
4228
+ internalType: "uint16",
4229
+ name: "newFeeBps",
4230
+ type: "uint16"
4405
4231
  }
4406
4232
  ],
4407
- anonymous: false
4233
+ name: "ProtocolFeeUpdated",
4234
+ type: "event"
4408
4235
  },
4409
4236
  {
4410
- type: "event",
4411
- name: "DisputeCancelled",
4237
+ anonymous: false,
4412
4238
  inputs: [
4413
4239
  {
4414
- name: "id",
4415
- type: "uint256",
4416
4240
  indexed: true,
4417
- internalType: "uint256"
4241
+ internalType: "uint256",
4242
+ name: "tokenId",
4243
+ type: "uint256"
4244
+ },
4245
+ {
4246
+ indexed: false,
4247
+ internalType: "uint256",
4248
+ name: "royaltyAmount",
4249
+ type: "uint256"
4250
+ },
4251
+ {
4252
+ indexed: false,
4253
+ internalType: "address",
4254
+ name: "creator",
4255
+ type: "address"
4256
+ },
4257
+ {
4258
+ indexed: false,
4259
+ internalType: "uint256",
4260
+ name: "protocolAmount",
4261
+ type: "uint256"
4418
4262
  }
4419
4263
  ],
4420
- anonymous: false
4264
+ name: "RoyaltyPaid",
4265
+ type: "event"
4421
4266
  },
4422
4267
  {
4423
- type: "event",
4424
- name: "DisputeJudged",
4268
+ anonymous: false,
4425
4269
  inputs: [
4426
4270
  {
4427
- name: "id",
4428
- type: "uint256",
4429
4271
  indexed: true,
4430
- internalType: "uint256"
4431
- },
4432
- {
4433
- name: "judgement",
4434
- type: "bool",
4435
- indexed: false,
4436
- internalType: "bool"
4272
+ internalType: "address",
4273
+ name: "signer",
4274
+ type: "address"
4437
4275
  }
4438
4276
  ],
4439
- anonymous: false
4277
+ name: "SignerUpdated",
4278
+ type: "event"
4440
4279
  },
4441
4280
  {
4442
- type: "event",
4443
- name: "DisputeModuleUpdated",
4281
+ anonymous: false,
4444
4282
  inputs: [
4445
4283
  {
4446
- name: "disputeModule",
4447
- type: "address",
4448
4284
  indexed: true,
4449
- internalType: "address"
4285
+ internalType: "uint256",
4286
+ name: "tokenId",
4287
+ type: "uint256"
4288
+ },
4289
+ {
4290
+ indexed: false,
4291
+ internalType: "enum IIpNFT.DataStatus",
4292
+ name: "status",
4293
+ type: "uint8"
4450
4294
  }
4451
4295
  ],
4452
- anonymous: false
4296
+ name: "StatusUpdated",
4297
+ type: "event"
4453
4298
  },
4454
4299
  {
4455
- type: "event",
4456
- name: "DisputeRaised",
4300
+ anonymous: false,
4457
4301
  inputs: [
4458
4302
  {
4459
- name: "id",
4460
- type: "uint256",
4461
4303
  indexed: true,
4462
- internalType: "uint256"
4304
+ internalType: "uint256",
4305
+ name: "tokenId",
4306
+ type: "uint256"
4463
4307
  },
4464
4308
  {
4465
- name: "initiator",
4466
- type: "address",
4467
- indexed: true,
4468
- internalType: "address"
4309
+ indexed: false,
4310
+ internalType: "uint128",
4311
+ name: "newPrice",
4312
+ type: "uint128"
4469
4313
  },
4470
4314
  {
4471
- name: "targetId",
4472
- type: "uint256",
4473
- indexed: true,
4474
- internalType: "uint256"
4315
+ indexed: false,
4316
+ internalType: "uint32",
4317
+ name: "newDuration",
4318
+ type: "uint32"
4475
4319
  },
4476
4320
  {
4477
- name: "disputeTag",
4478
- type: "bytes32",
4479
4321
  indexed: false,
4480
- internalType: "bytes32"
4481
- }
4482
- ],
4483
- anonymous: false
4484
- },
4485
- {
4486
- type: "event",
4487
- name: "Initialized",
4488
- inputs: [
4322
+ internalType: "uint16",
4323
+ name: "newRoyaltyBps",
4324
+ type: "uint16"
4325
+ },
4489
4326
  {
4490
- name: "version",
4491
- type: "uint64",
4492
4327
  indexed: false,
4493
- internalType: "uint64"
4328
+ internalType: "address",
4329
+ name: "paymentToken",
4330
+ type: "address"
4494
4331
  }
4495
4332
  ],
4496
- anonymous: false
4333
+ name: "TermsUpdated",
4334
+ type: "event"
4497
4335
  },
4498
4336
  {
4499
- type: "event",
4500
- name: "MarketPlaceUpdated",
4337
+ anonymous: false,
4501
4338
  inputs: [
4502
4339
  {
4503
- name: "marketPlace",
4504
- type: "address",
4505
4340
  indexed: true,
4506
- internalType: "address"
4341
+ internalType: "address",
4342
+ name: "newTreasury",
4343
+ type: "address"
4507
4344
  }
4508
4345
  ],
4509
- anonymous: false
4346
+ name: "TreasuryUpdated",
4347
+ type: "event"
4510
4348
  },
4511
4349
  {
4512
- type: "event",
4513
- name: "OwnershipTransferred",
4350
+ anonymous: false,
4514
4351
  inputs: [
4515
4352
  {
4516
- name: "previousOwner",
4517
- type: "address",
4518
- indexed: true,
4519
- internalType: "address"
4520
- },
4521
- {
4522
- name: "newOwner",
4523
- type: "address",
4524
4353
  indexed: true,
4525
- internalType: "address"
4354
+ internalType: "address",
4355
+ name: "implementation",
4356
+ type: "address"
4526
4357
  }
4527
4358
  ],
4528
- anonymous: false
4359
+ name: "Upgraded",
4360
+ type: "event"
4529
4361
  },
4530
4362
  {
4531
- type: "event",
4532
- name: "ParentIpsSet",
4363
+ anonymous: false,
4533
4364
  inputs: [
4534
4365
  {
4535
- name: "childIpId",
4536
- type: "uint256",
4537
4366
  indexed: true,
4538
- internalType: "uint256"
4367
+ internalType: "uint256",
4368
+ name: "id",
4369
+ type: "uint256"
4370
+ },
4371
+ {
4372
+ indexed: true,
4373
+ internalType: "address",
4374
+ name: "voter",
4375
+ type: "address"
4539
4376
  },
4540
4377
  {
4541
- name: "parentIds",
4542
- type: "uint256[]",
4543
4378
  indexed: false,
4544
- internalType: "uint256[]"
4379
+ internalType: "bool",
4380
+ name: "support",
4381
+ type: "bool"
4545
4382
  },
4546
4383
  {
4547
- name: "totalRoyaltyBps",
4548
- type: "uint16",
4549
4384
  indexed: false,
4550
- internalType: "uint16"
4385
+ internalType: "uint256",
4386
+ name: "weight",
4387
+ type: "uint256"
4551
4388
  }
4552
4389
  ],
4553
- anonymous: false
4390
+ name: "Voted",
4391
+ type: "event"
4554
4392
  },
4555
4393
  {
4556
- type: "event",
4557
- name: "ProtocolFeeUpdated",
4558
4394
  inputs: [
4395
+ ],
4396
+ name: "UPGRADE_INTERFACE_VERSION",
4397
+ outputs: [
4559
4398
  {
4560
- name: "newFeeBps",
4561
- type: "uint16",
4562
- indexed: false,
4563
- internalType: "uint16"
4399
+ internalType: "string",
4400
+ name: "",
4401
+ type: "string"
4564
4402
  }
4565
4403
  ],
4566
- anonymous: false
4404
+ stateMutability: "view",
4405
+ type: "function"
4567
4406
  },
4568
4407
  {
4569
- type: "event",
4570
- name: "RoyaltyPaid",
4571
4408
  inputs: [
4572
4409
  {
4573
- name: "tokenId",
4574
- type: "uint256",
4575
- indexed: true,
4576
- internalType: "uint256"
4577
- },
4578
- {
4579
- name: "royaltyAmount",
4580
- type: "uint256",
4581
- indexed: false,
4582
- internalType: "uint256"
4583
- },
4410
+ internalType: "uint256",
4411
+ name: "id",
4412
+ type: "uint256"
4413
+ }
4414
+ ],
4415
+ name: "cancelDispute",
4416
+ outputs: [
4417
+ ],
4418
+ stateMutability: "nonpayable",
4419
+ type: "function"
4420
+ },
4421
+ {
4422
+ inputs: [
4584
4423
  {
4585
- name: "creator",
4586
- type: "address",
4587
- indexed: false,
4588
- internalType: "address"
4424
+ internalType: "uint256",
4425
+ name: "id",
4426
+ type: "uint256"
4589
4427
  },
4590
4428
  {
4591
- name: "protocolAmount",
4592
- type: "uint256",
4593
- indexed: false,
4594
- internalType: "uint256"
4429
+ internalType: "bytes32",
4430
+ name: "_counterEvidenceHash",
4431
+ type: "bytes32"
4595
4432
  }
4596
4433
  ],
4597
- anonymous: false
4434
+ name: "disputeAssertion",
4435
+ outputs: [
4436
+ ],
4437
+ stateMutability: "nonpayable",
4438
+ type: "function"
4598
4439
  },
4599
4440
  {
4600
- type: "event",
4601
- name: "SignerUpdated",
4602
4441
  inputs: [
4442
+ ],
4443
+ name: "disputeBond",
4444
+ outputs: [
4603
4445
  {
4604
- name: "signer",
4605
- type: "address",
4606
- indexed: true,
4607
- internalType: "address"
4446
+ internalType: "uint256",
4447
+ name: "",
4448
+ type: "uint256"
4608
4449
  }
4609
4450
  ],
4610
- anonymous: false
4451
+ stateMutability: "view",
4452
+ type: "function"
4611
4453
  },
4612
4454
  {
4613
- type: "event",
4614
- name: "StatusUpdated",
4615
4455
  inputs: [
4456
+ ],
4457
+ name: "disputeCoolDownPeriod",
4458
+ outputs: [
4616
4459
  {
4617
- name: "tokenId",
4618
- type: "uint256",
4619
- indexed: true,
4620
- internalType: "uint256"
4621
- },
4622
- {
4623
- name: "status",
4624
- type: "uint8",
4625
- indexed: false,
4626
- internalType: "enum IIpNFT.DataStatus"
4460
+ internalType: "uint256",
4461
+ name: "",
4462
+ type: "uint256"
4627
4463
  }
4628
4464
  ],
4629
- anonymous: false
4465
+ stateMutability: "view",
4466
+ type: "function"
4630
4467
  },
4631
4468
  {
4632
- type: "event",
4633
- name: "TermsUpdated",
4634
4469
  inputs: [
4470
+ ],
4471
+ name: "disputeCounter",
4472
+ outputs: [
4635
4473
  {
4636
- name: "tokenId",
4637
- type: "uint256",
4638
- indexed: true,
4639
- internalType: "uint256"
4640
- },
4641
- {
4642
- name: "newPrice",
4643
- type: "uint128",
4644
- indexed: false,
4645
- internalType: "uint128"
4646
- },
4647
- {
4648
- name: "newDuration",
4649
- type: "uint32",
4650
- indexed: false,
4651
- internalType: "uint32"
4652
- },
4653
- {
4654
- name: "newRoyaltyBps",
4655
- type: "uint16",
4656
- indexed: false,
4657
- internalType: "uint16"
4658
- },
4474
+ internalType: "uint256",
4475
+ name: "",
4476
+ type: "uint256"
4477
+ }
4478
+ ],
4479
+ stateMutability: "view",
4480
+ type: "function"
4481
+ },
4482
+ {
4483
+ inputs: [
4484
+ ],
4485
+ name: "disputeJudgementPeriod",
4486
+ outputs: [
4659
4487
  {
4660
- name: "paymentToken",
4661
- type: "address",
4662
- indexed: false,
4663
- internalType: "address"
4488
+ internalType: "uint256",
4489
+ name: "",
4490
+ type: "uint256"
4664
4491
  }
4665
4492
  ],
4666
- anonymous: false
4493
+ stateMutability: "view",
4494
+ type: "function"
4667
4495
  },
4668
4496
  {
4669
- type: "event",
4670
- name: "TreasuryUpdated",
4671
4497
  inputs: [
4498
+ ],
4499
+ name: "disputeQuorum",
4500
+ outputs: [
4672
4501
  {
4673
- name: "newTreasury",
4674
- type: "address",
4675
- indexed: true,
4676
- internalType: "address"
4502
+ internalType: "uint256",
4503
+ name: "",
4504
+ type: "uint256"
4677
4505
  }
4678
4506
  ],
4679
- anonymous: false
4507
+ stateMutability: "view",
4508
+ type: "function"
4680
4509
  },
4681
4510
  {
4682
- type: "event",
4683
- name: "Upgraded",
4684
4511
  inputs: [
4512
+ ],
4513
+ name: "disputeToken",
4514
+ outputs: [
4685
4515
  {
4686
- name: "implementation",
4687
- type: "address",
4688
- indexed: true,
4689
- internalType: "address"
4516
+ internalType: "contract IERC20",
4517
+ name: "",
4518
+ type: "address"
4690
4519
  }
4691
4520
  ],
4692
- anonymous: false
4521
+ stateMutability: "view",
4522
+ type: "function"
4693
4523
  },
4694
4524
  {
4695
- type: "event",
4696
- name: "Voted",
4697
4525
  inputs: [
4698
4526
  {
4699
- name: "id",
4700
- type: "uint256",
4701
- indexed: true,
4702
- internalType: "uint256"
4527
+ internalType: "uint256",
4528
+ name: "",
4529
+ type: "uint256"
4530
+ }
4531
+ ],
4532
+ name: "disputes",
4533
+ outputs: [
4534
+ {
4535
+ internalType: "address",
4536
+ name: "initiator",
4537
+ type: "address"
4703
4538
  },
4704
4539
  {
4705
- name: "voter",
4706
- type: "address",
4707
- indexed: true,
4708
- internalType: "address"
4540
+ internalType: "uint256",
4541
+ name: "targetId",
4542
+ type: "uint256"
4709
4543
  },
4710
4544
  {
4711
- name: "support",
4712
- type: "bool",
4713
- indexed: false,
4714
- internalType: "bool"
4545
+ internalType: "bytes32",
4546
+ name: "disputeTag",
4547
+ type: "bytes32"
4715
4548
  },
4716
4549
  {
4717
- name: "weight",
4718
- type: "uint256",
4719
- indexed: false,
4720
- internalType: "uint256"
4550
+ internalType: "bytes32",
4551
+ name: "disputeEvidenceHash",
4552
+ type: "bytes32"
4553
+ },
4554
+ {
4555
+ internalType: "bytes32",
4556
+ name: "counterEvidenceHash",
4557
+ type: "bytes32"
4558
+ },
4559
+ {
4560
+ internalType: "uint256",
4561
+ name: "disputeTimestamp",
4562
+ type: "uint256"
4563
+ },
4564
+ {
4565
+ internalType: "uint256",
4566
+ name: "assertionTimestamp",
4567
+ type: "uint256"
4568
+ },
4569
+ {
4570
+ internalType: "uint256",
4571
+ name: "yesVotes",
4572
+ type: "uint256"
4573
+ },
4574
+ {
4575
+ internalType: "uint256",
4576
+ name: "noVotes",
4577
+ type: "uint256"
4578
+ },
4579
+ {
4580
+ internalType: "enum DisputeModule.DisputeStatus",
4581
+ name: "status",
4582
+ type: "uint8"
4583
+ },
4584
+ {
4585
+ internalType: "uint256",
4586
+ name: "bondAmount",
4587
+ type: "uint256"
4588
+ },
4589
+ {
4590
+ internalType: "uint256",
4591
+ name: "protocolFeeAmount",
4592
+ type: "uint256"
4721
4593
  }
4722
4594
  ],
4723
- anonymous: false
4595
+ stateMutability: "view",
4596
+ type: "function"
4724
4597
  },
4725
4598
  {
4726
- type: "error",
4727
- name: "AddressEmptyCode",
4728
4599
  inputs: [
4729
4600
  {
4730
- name: "target",
4731
- type: "address",
4732
- internalType: "address"
4601
+ internalType: "uint256",
4602
+ name: "",
4603
+ type: "uint256"
4604
+ },
4605
+ {
4606
+ internalType: "address",
4607
+ name: "",
4608
+ type: "address"
4733
4609
  }
4734
- ]
4735
- },
4736
- {
4737
- type: "error",
4738
- name: "AlreadyVoted",
4739
- inputs: [
4740
- ]
4741
- },
4742
- {
4743
- type: "error",
4744
- name: "CoolDownPeriodActive",
4745
- inputs: [
4746
- ]
4747
- },
4748
- {
4749
- type: "error",
4750
- name: "CoolDownPeriodOver",
4751
- inputs: [
4752
- ]
4753
- },
4754
- {
4755
- type: "error",
4756
- name: "ERC1967InvalidImplementation",
4757
- inputs: [
4610
+ ],
4611
+ name: "hasVoted",
4612
+ outputs: [
4758
4613
  {
4759
- name: "implementation",
4760
- type: "address",
4761
- internalType: "address"
4614
+ internalType: "bool",
4615
+ name: "",
4616
+ type: "bool"
4762
4617
  }
4763
- ]
4764
- },
4765
- {
4766
- type: "error",
4767
- name: "ERC1967NonPayable",
4768
- inputs: [
4769
- ]
4770
- },
4771
- {
4772
- type: "error",
4773
- name: "EvidenceAlreadyUsed",
4774
- inputs: [
4775
- ]
4776
- },
4777
- {
4778
- type: "error",
4779
- name: "FailedCall",
4780
- inputs: [
4781
- ]
4782
- },
4783
- {
4784
- type: "error",
4785
- name: "InvalidBondFeeBps",
4786
- inputs: [
4787
- ]
4788
- },
4789
- {
4790
- type: "error",
4791
- name: "InvalidChildIpId",
4792
- inputs: [
4793
- ]
4794
- },
4795
- {
4796
- type: "error",
4797
- name: "InvalidDisputeStatus",
4798
- inputs: [
4799
- ]
4618
+ ],
4619
+ stateMutability: "view",
4620
+ type: "function"
4800
4621
  },
4801
4622
  {
4802
- type: "error",
4803
- name: "InvalidDisputeTag",
4804
4623
  inputs: [
4805
- ]
4624
+ {
4625
+ internalType: "contract IIpNFT",
4626
+ name: "_ipToken",
4627
+ type: "address"
4628
+ },
4629
+ {
4630
+ internalType: "contract IMarketplace",
4631
+ name: "_marketplace",
4632
+ type: "address"
4633
+ },
4634
+ {
4635
+ internalType: "contract IERC20",
4636
+ name: "_disputeToken",
4637
+ type: "address"
4638
+ },
4639
+ {
4640
+ internalType: "uint256",
4641
+ name: "_disputeBond",
4642
+ type: "uint256"
4643
+ },
4644
+ {
4645
+ internalType: "uint256",
4646
+ name: "_disputeCoolDownPeriod",
4647
+ type: "uint256"
4648
+ },
4649
+ {
4650
+ internalType: "uint256",
4651
+ name: "_disputeJudgementPeriod",
4652
+ type: "uint256"
4653
+ },
4654
+ {
4655
+ internalType: "uint16",
4656
+ name: "_bondFeeBPS",
4657
+ type: "uint16"
4658
+ },
4659
+ {
4660
+ internalType: "uint256",
4661
+ name: "_stakingThreshold",
4662
+ type: "uint256"
4663
+ },
4664
+ {
4665
+ internalType: "contract ICampStakingVault",
4666
+ name: "_stakingVault",
4667
+ type: "address"
4668
+ }
4669
+ ],
4670
+ name: "initialize",
4671
+ outputs: [
4672
+ ],
4673
+ stateMutability: "nonpayable",
4674
+ type: "function"
4806
4675
  },
4807
4676
  {
4808
- type: "error",
4809
- name: "InvalidEvidenceHash",
4810
4677
  inputs: [
4811
- ]
4678
+ ],
4679
+ name: "ipToken",
4680
+ outputs: [
4681
+ {
4682
+ internalType: "contract IIpNFT",
4683
+ name: "",
4684
+ type: "address"
4685
+ }
4686
+ ],
4687
+ stateMutability: "view",
4688
+ type: "function"
4812
4689
  },
4813
4690
  {
4814
- type: "error",
4815
- name: "InvalidInitialization",
4816
4691
  inputs: [
4817
- ]
4692
+ {
4693
+ internalType: "bytes32",
4694
+ name: "",
4695
+ type: "bytes32"
4696
+ }
4697
+ ],
4698
+ name: "isUsedEvidenceHash",
4699
+ outputs: [
4700
+ {
4701
+ internalType: "bool",
4702
+ name: "",
4703
+ type: "bool"
4704
+ }
4705
+ ],
4706
+ stateMutability: "view",
4707
+ type: "function"
4818
4708
  },
4819
4709
  {
4820
- type: "error",
4821
- name: "InvalidTargetIp",
4822
4710
  inputs: [
4823
- ]
4711
+ ],
4712
+ name: "marketplace",
4713
+ outputs: [
4714
+ {
4715
+ internalType: "contract IMarketplace",
4716
+ name: "",
4717
+ type: "address"
4718
+ }
4719
+ ],
4720
+ stateMutability: "view",
4721
+ type: "function"
4824
4722
  },
4825
4723
  {
4826
- type: "error",
4827
- name: "NoVotingPower",
4828
4724
  inputs: [
4829
- ]
4725
+ ],
4726
+ name: "owner",
4727
+ outputs: [
4728
+ {
4729
+ internalType: "address",
4730
+ name: "",
4731
+ type: "address"
4732
+ }
4733
+ ],
4734
+ stateMutability: "view",
4735
+ type: "function"
4830
4736
  },
4831
4737
  {
4832
- type: "error",
4833
- name: "NotAParentIp",
4834
4738
  inputs: [
4835
- ]
4739
+ ],
4740
+ name: "protocolDisputeFee",
4741
+ outputs: [
4742
+ {
4743
+ internalType: "uint256",
4744
+ name: "",
4745
+ type: "uint256"
4746
+ }
4747
+ ],
4748
+ stateMutability: "view",
4749
+ type: "function"
4836
4750
  },
4837
4751
  {
4838
- type: "error",
4839
- name: "NotInitializing",
4840
4752
  inputs: [
4841
- ]
4753
+ ],
4754
+ name: "proxiableUUID",
4755
+ outputs: [
4756
+ {
4757
+ internalType: "bytes32",
4758
+ name: "",
4759
+ type: "bytes32"
4760
+ }
4761
+ ],
4762
+ stateMutability: "view",
4763
+ type: "function"
4842
4764
  },
4843
4765
  {
4844
- type: "error",
4845
- name: "NotInitiator",
4846
4766
  inputs: [
4847
- ]
4767
+ {
4768
+ internalType: "uint256",
4769
+ name: "_targetIpId",
4770
+ type: "uint256"
4771
+ },
4772
+ {
4773
+ internalType: "bytes32",
4774
+ name: "_disputeEvidenceHash",
4775
+ type: "bytes32"
4776
+ },
4777
+ {
4778
+ internalType: "bytes32",
4779
+ name: "_disputeTag",
4780
+ type: "bytes32"
4781
+ }
4782
+ ],
4783
+ name: "raiseDispute",
4784
+ outputs: [
4785
+ {
4786
+ internalType: "uint256",
4787
+ name: "id",
4788
+ type: "uint256"
4789
+ }
4790
+ ],
4791
+ stateMutability: "nonpayable",
4792
+ type: "function"
4848
4793
  },
4849
4794
  {
4850
- type: "error",
4851
- name: "NotTokenOwner",
4852
4795
  inputs: [
4853
- ]
4796
+ ],
4797
+ name: "renounceOwnership",
4798
+ outputs: [
4799
+ ],
4800
+ stateMutability: "nonpayable",
4801
+ type: "function"
4854
4802
  },
4855
4803
  {
4856
- type: "error",
4857
- name: "OwnableInvalidOwner",
4858
4804
  inputs: [
4859
4805
  {
4860
- name: "owner",
4861
- type: "address",
4862
- internalType: "address"
4806
+ internalType: "uint256",
4807
+ name: "id",
4808
+ type: "uint256"
4863
4809
  }
4864
- ]
4810
+ ],
4811
+ name: "resolveDispute",
4812
+ outputs: [
4813
+ ],
4814
+ stateMutability: "nonpayable",
4815
+ type: "function"
4865
4816
  },
4866
4817
  {
4867
- type: "error",
4868
- name: "OwnableUnauthorizedAccount",
4869
4818
  inputs: [
4870
4819
  {
4871
- name: "account",
4872
- type: "address",
4873
- internalType: "address"
4820
+ internalType: "uint256",
4821
+ name: "_disputeQuorum",
4822
+ type: "uint256"
4874
4823
  }
4875
- ]
4876
- },
4877
- {
4878
- type: "error",
4879
- name: "ParentNotDisputed",
4880
- inputs: [
4881
- ]
4882
- },
4883
- {
4884
- type: "error",
4885
- name: "SelfAssertionNotAllowed",
4886
- inputs: [
4887
- ]
4824
+ ],
4825
+ name: "setDisputeQuorum",
4826
+ outputs: [
4827
+ ],
4828
+ stateMutability: "nonpayable",
4829
+ type: "function"
4888
4830
  },
4889
4831
  {
4890
- type: "error",
4891
- name: "StakedAfterDispute",
4892
4832
  inputs: [
4893
- ]
4833
+ ],
4834
+ name: "stakingThreshold",
4835
+ outputs: [
4836
+ {
4837
+ internalType: "uint256",
4838
+ name: "",
4839
+ type: "uint256"
4840
+ }
4841
+ ],
4842
+ stateMutability: "view",
4843
+ type: "function"
4894
4844
  },
4895
4845
  {
4896
- type: "error",
4897
- name: "TagNotAllowed",
4898
4846
  inputs: [
4899
- ]
4847
+ ],
4848
+ name: "stakingVault",
4849
+ outputs: [
4850
+ {
4851
+ internalType: "contract ICampStakingVault",
4852
+ name: "",
4853
+ type: "address"
4854
+ }
4855
+ ],
4856
+ stateMutability: "view",
4857
+ type: "function"
4900
4858
  },
4901
4859
  {
4902
- type: "error",
4903
- name: "UUPSUnauthorizedCallContext",
4904
4860
  inputs: [
4905
- ]
4861
+ {
4862
+ internalType: "uint256",
4863
+ name: "_childIpId",
4864
+ type: "uint256"
4865
+ },
4866
+ {
4867
+ internalType: "uint256",
4868
+ name: "_infringerDisputeId",
4869
+ type: "uint256"
4870
+ }
4871
+ ],
4872
+ name: "tagChildIp",
4873
+ outputs: [
4874
+ ],
4875
+ stateMutability: "nonpayable",
4876
+ type: "function"
4906
4877
  },
4907
4878
  {
4908
- type: "error",
4909
- name: "UUPSUnsupportedProxiableUUID",
4910
4879
  inputs: [
4911
4880
  {
4912
- name: "slot",
4913
- type: "bytes32",
4914
- internalType: "bytes32"
4881
+ internalType: "address",
4882
+ name: "newOwner",
4883
+ type: "address"
4915
4884
  }
4916
- ]
4885
+ ],
4886
+ name: "transferOwnership",
4887
+ outputs: [
4888
+ ],
4889
+ stateMutability: "nonpayable",
4890
+ type: "function"
4917
4891
  },
4918
4892
  {
4919
- type: "error",
4920
- name: "VotingPeriodActive",
4921
4893
  inputs: [
4922
- ]
4894
+ {
4895
+ internalType: "address",
4896
+ name: "newImplementation",
4897
+ type: "address"
4898
+ },
4899
+ {
4900
+ internalType: "bytes",
4901
+ name: "data",
4902
+ type: "bytes"
4903
+ }
4904
+ ],
4905
+ name: "upgradeToAndCall",
4906
+ outputs: [
4907
+ ],
4908
+ stateMutability: "payable",
4909
+ type: "function"
4923
4910
  },
4924
4911
  {
4925
- type: "error",
4926
- name: "VotingPeriodOver",
4927
4912
  inputs: [
4928
- ]
4913
+ {
4914
+ internalType: "uint256",
4915
+ name: "id",
4916
+ type: "uint256"
4917
+ },
4918
+ {
4919
+ internalType: "bool",
4920
+ name: "support",
4921
+ type: "bool"
4922
+ }
4923
+ ],
4924
+ name: "voteOnDispute",
4925
+ outputs: [
4926
+ ],
4927
+ stateMutability: "nonpayable",
4928
+ type: "function"
4929
4929
  }
4930
4930
  ];
4931
4931
 
@@ -5694,16 +5694,16 @@ var constants = {
5694
5694
  const ENVIRONMENTS = {
5695
5695
  DEVELOPMENT: {
5696
5696
  NAME: "DEVELOPMENT",
5697
- AUTH_HUB_BASE_API: "https://wv2h4to5qa.execute-api.us-east-2.amazonaws.com/dev",
5698
- AUTH_ENDPOINT: "auth-testnet",
5697
+ AUTH_HUB_BASE_API: "https://origin-backend-iota.vercel.app",
5699
5698
  ORIGIN_DASHBOARD: "https://origin.campnetwork.xyz",
5700
- DATANFT_CONTRACT_ADDRESS: "0xB53F5723Dd4E46da32e1769Bd36A5aD880e707A5",
5701
- MARKETPLACE_CONTRACT_ADDRESS: "0x97b0A18B2888e904940fFd19E480a28aeec3F055",
5699
+ DATANFT_CONTRACT_ADDRESS: "0x4d9aF5800701A4A686Df6b096A27B81486de36eB",
5700
+ MARKETPLACE_CONTRACT_ADDRESS: "0x68B202caA162C418d3A2DF92F29fA1CAF90C58c1",
5702
5701
  BATCH_PURCHASE_CONTRACT_ADDRESS: "0xaF0cF04DBfeeAcEdC77Dc68A91381AFB967B8518",
5703
- // TODO: Add actual contract addresses when deployed
5704
- DISPUTE_CONTRACT_ADDRESS: "",
5702
+ DISPUTE_CONTRACT_ADDRESS: "0x45719337b1450b0D105cA671972be4263E6A9380",
5703
+ APP_REGISTRY_CONTRACT_ADDRESS: "0x2096eb980Dd590DDF690Cb698572b80552B6F9Bb",
5704
+ // TODO: Add actual contract addresse when deployed
5705
5705
  FRACTIONALIZER_CONTRACT_ADDRESS: "",
5706
- APP_REGISTRY_CONTRACT_ADDRESS: "",
5706
+ USDC_CONTRACT_ADDRESS: "0x8a2B28364102Bea189D99A475C494330Ef2bDD0B",
5707
5707
  CHAIN: testnet,
5708
5708
  IPNFT_ABI: ipnftMainnetAbi,
5709
5709
  MARKETPLACE_ABI: marketplaceMainnetAbi,
@@ -5716,7 +5716,6 @@ const ENVIRONMENTS = {
5716
5716
  PRODUCTION: {
5717
5717
  NAME: "PRODUCTION",
5718
5718
  AUTH_HUB_BASE_API: "https://wv2h4to5qa.execute-api.us-east-2.amazonaws.com/dev",
5719
- AUTH_ENDPOINT: "auth-mainnet",
5720
5719
  ORIGIN_DASHBOARD: "https://origin.campnetwork.xyz",
5721
5720
  DATANFT_CONTRACT_ADDRESS: "0x39EeE1C3989f0dD543Dee60f8582F7F81F522C38",
5722
5721
  MARKETPLACE_CONTRACT_ADDRESS: "0xc69BAa987757d054455fC0f2d9797684E9FB8b9C",
@@ -5725,6 +5724,7 @@ const ENVIRONMENTS = {
5725
5724
  DISPUTE_CONTRACT_ADDRESS: "",
5726
5725
  FRACTIONALIZER_CONTRACT_ADDRESS: "",
5727
5726
  APP_REGISTRY_CONTRACT_ADDRESS: "",
5727
+ USDC_CONTRACT_ADDRESS: "",
5728
5728
  CHAIN: mainnet,
5729
5729
  IPNFT_ABI: ipnftMainnetAbi,
5730
5730
  MARKETPLACE_ABI: marketplaceMainnetAbi,
@@ -5775,36 +5775,104 @@ const SECONDS_IN_HOUR = 3600;
5775
5775
  const SECONDS_IN_DAY = 86400;
5776
5776
  const SECONDS_IN_WEEK = 604800;
5777
5777
  /**
5778
- * Uploads a file to a specified URL with progress tracking.
5778
+ * Uploads chunks to respective presigned URLs with progress tracking.
5779
5779
  * Falls back to a simple fetch request if XMLHttpRequest is not available.
5780
- * @param {File} file - The file to upload.
5781
- * @param {string} url - The URL to upload the file to.
5780
+ * @param {Blob[]} chunks - The file to upload.
5781
+ * @param {string[]} urls - The URL to upload the file to.
5782
5782
  * @param {UploadProgressCallback} onProgress - A callback function to track upload progress.
5783
5783
  * @returns {Promise<string>} - A promise that resolves with the response from the server.
5784
5784
  */
5785
- const uploadWithProgress = (file, url, onProgress) => {
5785
+ const uploadWithProgress = (chunks, urls, onProgress) => {
5786
+ const MAX_RETRIES = 3;
5787
+ const CONCURRENCY_LIMIT = 4; // Parallel uploads for performance
5788
+ const parts = [];
5789
+ let failedParts = [];
5790
+ let isAborted = false;
5791
+ let completedChunks = 0;
5792
+ const totalChunks = chunks.length;
5786
5793
  return new Promise((resolve, reject) => {
5787
- axios
5788
- .put(url, file, Object.assign({ headers: {
5789
- "Content-Type": file.type,
5790
- } }, (typeof window !== "undefined" && typeof onProgress === "function"
5791
- ? {
5792
- onUploadProgress: (progressEvent) => {
5793
- if (progressEvent.total) {
5794
- const percent = (progressEvent.loaded / progressEvent.total) * 100;
5795
- onProgress(percent);
5794
+ function updateProgress() {
5795
+ const progress = (completedChunks / totalChunks) * 100;
5796
+ onProgress(progress);
5797
+ }
5798
+ function uploadPart(blob_1, url_1, partNumber_1) {
5799
+ return __awaiter(this, arguments, void 0, function* (blob, url, partNumber, retryCount = 0) {
5800
+ var _a;
5801
+ try {
5802
+ const response = yield axios.put(url, blob, {
5803
+ headers: { "Content-Type": blob.type || "application/octet-stream" },
5804
+ timeout: 300000, // 5 minutes per part
5805
+ });
5806
+ const etag = (_a = response.headers.etag) === null || _a === void 0 ? void 0 : _a.replace(/"/g, "");
5807
+ if (!etag) {
5808
+ throw new Error(`Missing ETag for part ${partNumber}`);
5796
5809
  }
5797
- },
5798
- }
5799
- : {})))
5800
- .then((res) => {
5801
- resolve(res.data);
5802
- })
5803
- .catch((error) => {
5804
- var _a;
5805
- const message = ((_a = error === null || error === void 0 ? void 0 : error.response) === null || _a === void 0 ? void 0 : _a.data) || (error === null || error === void 0 ? void 0 : error.message) || "Upload failed";
5806
- reject(message);
5807
- });
5810
+ return { ETag: etag, PartNumber: partNumber };
5811
+ }
5812
+ catch (error) {
5813
+ if (retryCount < MAX_RETRIES) {
5814
+ const delay = 1000 * Math.pow(2, retryCount); // Exponential backoff
5815
+ yield new Promise((resolve) => setTimeout(resolve, delay));
5816
+ return uploadPart(blob, url, partNumber, retryCount + 1);
5817
+ }
5818
+ throw new Error(`Part ${partNumber} failed after ${MAX_RETRIES} retries: ${error.message}`);
5819
+ }
5820
+ });
5821
+ }
5822
+ function uploadAllParts() {
5823
+ return __awaiter(this, void 0, void 0, function* () {
5824
+ const uploadPromises = [];
5825
+ for (let i = 0; i < totalChunks; i++) {
5826
+ if (isAborted)
5827
+ break;
5828
+ const uploadPromise = (() => __awaiter(this, void 0, void 0, function* () {
5829
+ try {
5830
+ if (failedParts.includes(i))
5831
+ return;
5832
+ const result = yield uploadPart(chunks[i], urls[i], i + 1);
5833
+ parts.push(result);
5834
+ completedChunks++;
5835
+ updateProgress();
5836
+ }
5837
+ catch (error) {
5838
+ console.error(`Part ${i + 1} failed:`, error);
5839
+ failedParts.push(i);
5840
+ if (failedParts.length > totalChunks * 0.1) {
5841
+ // Fail fast if >10% fail
5842
+ throw error;
5843
+ }
5844
+ }
5845
+ }))();
5846
+ uploadPromises.push(uploadPromise);
5847
+ // Limit concurrency
5848
+ if (uploadPromises.length >= CONCURRENCY_LIMIT) {
5849
+ yield Promise.race(uploadPromises);
5850
+ // Remove settled promises to continue
5851
+ uploadPromises.splice(0, uploadPromises.length, ...(yield Promise.allSettled(uploadPromises))
5852
+ .map((_, idx) => uploadPromises[idx])
5853
+ .filter(Boolean));
5854
+ }
5855
+ }
5856
+ yield Promise.allSettled(uploadPromises);
5857
+ if (isAborted) {
5858
+ reject(new Error("Upload aborted by user"));
5859
+ return;
5860
+ }
5861
+ if (failedParts.length > 0) {
5862
+ reject(new Error(`Failed to upload ${failedParts.length}/${totalChunks} parts: ${failedParts.join(", ")}`));
5863
+ return;
5864
+ }
5865
+ parts.sort((a, b) => a.PartNumber - b.PartNumber);
5866
+ resolve(parts);
5867
+ });
5868
+ }
5869
+ // Expose abort method
5870
+ uploadWithProgress.abort = () => {
5871
+ isAborted = true;
5872
+ axios.isCancel("Upload aborted");
5873
+ };
5874
+ updateProgress(); // Initial 0%
5875
+ uploadAllParts().catch(reject);
5808
5876
  });
5809
5877
  };
5810
5878
  const toSeconds = (duration, licenseDurationUnit) => {
@@ -5866,6 +5934,19 @@ const validateRoyaltyBps = (royaltyBps) => {
5866
5934
  return false;
5867
5935
  }
5868
5936
  };
5937
+ const splitFileIntoChunks = (file, chunkSize) => {
5938
+ const chunks = [];
5939
+ let start = 0;
5940
+ while (start < file.size) {
5941
+ chunks.push(file.slice(start, start + chunkSize));
5942
+ start += chunkSize;
5943
+ }
5944
+ return chunks;
5945
+ };
5946
+ const getBaseApiUrl = (environment) => {
5947
+ const authEndpoint = environment.NAME === "PRODUCTION" ? "/auth-mainnet" : "";
5948
+ return environment.AUTH_HUB_BASE_API + authEndpoint;
5949
+ };
5869
5950
 
5870
5951
  /**
5871
5952
  * Mints a Data NFT with a signature.
@@ -5878,13 +5959,13 @@ const validateRoyaltyBps = (royaltyBps) => {
5878
5959
  * @param licenseTerms The terms of the license for the NFT.
5879
5960
  * @param deadline The deadline for the minting operation.
5880
5961
  * @param signature The signature for the minting operation.
5881
- * @param appId Optional app ID for the minting operation. Defaults to the SDK's appId (clientId).
5962
+ * @param appId Optional app ID for the minting operation.
5882
5963
  * @returns A promise that resolves when the minting is complete.
5883
5964
  */
5884
5965
  function mintWithSignature(to, tokenId, parents, isIp, hash, uri, licenseTerms, deadline, signature, appId) {
5885
5966
  return __awaiter(this, void 0, void 0, function* () {
5886
5967
  var _a;
5887
- // use provided appId, or fall back to SDK's appId, or use empty string
5968
+ // use provided appId, else use instance appId, else default to empty string
5888
5969
  const effectiveAppId = (_a = appId !== null && appId !== void 0 ? appId : this.appId) !== null && _a !== void 0 ? _a : "";
5889
5970
  return yield this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS, this.environment.IPNFT_ABI, "mintWithSignature", [
5890
5971
  to,
@@ -5910,8 +5991,10 @@ function mintWithSignature(to, tokenId, parents, isIp, hash, uri, licenseTerms,
5910
5991
  * @param parents The IDs of the parent NFTs, if applicable.
5911
5992
  * @return A promise that resolves with the registration data.
5912
5993
  */
5913
- function registerIpNFT(source, deadline, licenseTerms, metadata, fileKey, parents) {
5994
+ function registerIpNFT(source, deadline, licenseTerms, metadata, isIp, fileKey, parents, appId) {
5914
5995
  return __awaiter(this, void 0, void 0, function* () {
5996
+ var _a;
5997
+ const effectiveAppId = (_a = appId !== null && appId !== void 0 ? appId : this.appId) !== null && _a !== void 0 ? _a : "";
5915
5998
  const body = {
5916
5999
  source,
5917
6000
  deadline: Number(deadline),
@@ -5922,13 +6005,15 @@ function registerIpNFT(source, deadline, licenseTerms, metadata, fileKey, parent
5922
6005
  paymentToken: licenseTerms.paymentToken,
5923
6006
  licenseType: licenseTerms.licenseType,
5924
6007
  },
6008
+ appId: effectiveAppId,
6009
+ isIp,
5925
6010
  metadata,
5926
6011
  parentId: parents ? parents.map((p) => p.toString()) : [],
5927
6012
  };
5928
6013
  if (fileKey !== undefined) {
5929
6014
  body.fileKey = fileKey;
5930
6015
  }
5931
- const res = yield fetch(`${this.environment.AUTH_HUB_BASE_API}/${this.environment.AUTH_ENDPOINT}/origin/register`, {
6016
+ const res = yield fetch(`${this.environment.AUTH_HUB_BASE_API}/origin/register`, {
5932
6017
  method: "POST",
5933
6018
  headers: {
5934
6019
  Authorization: `Bearer ${this.getJwt()}`,
@@ -6541,7 +6626,7 @@ const X402_INTENT_TYPES = {
6541
6626
  };
6542
6627
 
6543
6628
  const fetchTokenData = (origin, tokenId, headers) => __awaiter(void 0, void 0, void 0, function* () {
6544
- const response = yield fetch(`${origin.environment.AUTH_HUB_BASE_API}/${origin.environment.AUTH_ENDPOINT}/origin/data/${tokenId}`, {
6629
+ const response = yield fetch(`${origin.environment.AUTH_HUB_BASE_API}/origin/data/${tokenId}`, {
6545
6630
  method: "GET",
6546
6631
  headers: Object.assign({ "Content-Type": "application/json" }, headers),
6547
6632
  });
@@ -6704,11 +6789,12 @@ function getCurrentAccount() {
6704
6789
 
6705
6790
  /**
6706
6791
  * Raises a dispute against an IP NFT.
6707
- * Requires the caller to have the dispute bond amount in dispute tokens.
6792
+ * Automatically handles token approval for ERC20 bonds or native token value.
6793
+ * Includes the protocol dispute fee in the transaction.
6708
6794
  *
6709
6795
  * @param targetIpId The token ID of the IP NFT to dispute.
6710
6796
  * @param evidenceHash The hash of evidence supporting the dispute.
6711
- * @param disputeTag A tag identifying the type of dispute.
6797
+ * @param disputeTag A tag identifying the type of dispute (bytes32).
6712
6798
  * @returns A promise that resolves with the transaction result including the dispute ID.
6713
6799
  *
6714
6800
  * @example
@@ -6716,13 +6802,276 @@ function getCurrentAccount() {
6716
6802
  * const result = await origin.raiseDispute(
6717
6803
  * 1n,
6718
6804
  * "0x1234...", // evidence hash
6719
- * "0x5678..." // dispute tag (e.g., "infringement", "fraud")
6805
+ * "0x0100000000000000000000000000000000000000000000000000000000000000" // dispute tag (bytes32)
6720
6806
  * );
6721
6807
  * ```
6722
6808
  */
6723
6809
  function raiseDispute(targetIpId, evidenceHash, disputeTag) {
6724
6810
  return __awaiter(this, void 0, void 0, function* () {
6725
- return this.callContractMethod(this.environment.DISPUTE_CONTRACT_ADDRESS, this.environment.DISPUTE_ABI, "raiseDispute", [targetIpId, evidenceHash, disputeTag], { waitForReceipt: true });
6811
+ const publicClient = getPublicClient();
6812
+ const disputeContractAddress = this.environment
6813
+ .DISPUTE_CONTRACT_ADDRESS;
6814
+ const disputeAbi = this.environment.DISPUTE_ABI;
6815
+ // Get dispute bond amount, protocol fee, and token address from the contract
6816
+ const [disputeBond, protocolFee, disputeToken] = yield Promise.all([
6817
+ publicClient.readContract({
6818
+ address: disputeContractAddress,
6819
+ abi: disputeAbi,
6820
+ functionName: "disputeBond",
6821
+ }),
6822
+ publicClient.readContract({
6823
+ address: disputeContractAddress,
6824
+ abi: disputeAbi,
6825
+ functionName: "protocolDisputeFee",
6826
+ }),
6827
+ publicClient.readContract({
6828
+ address: disputeContractAddress,
6829
+ abi: disputeAbi,
6830
+ functionName: "disputeToken",
6831
+ }),
6832
+ ]);
6833
+ const isNativeToken = disputeToken === zeroAddress;
6834
+ const totalAmount = disputeBond + protocolFee;
6835
+ if (!isNativeToken) {
6836
+ // ERC20 token: approve the dispute contract to spend the total amount
6837
+ yield this.approveERC20IfNeeded(disputeToken, disputeContractAddress, totalAmount);
6838
+ }
6839
+ // Call the raiseDispute contract method
6840
+ // Pass the total (bond + protocol fee) as msg.value if using native token
6841
+ return this.callContractMethod(disputeContractAddress, disputeAbi, "raiseDispute", [targetIpId, evidenceHash, disputeTag], {
6842
+ waitForReceipt: true,
6843
+ value: isNativeToken ? totalAmount : undefined,
6844
+ });
6845
+ });
6846
+ }
6847
+
6848
+ // base-x encoding / decoding
6849
+ // Copyright (c) 2018 base-x contributors
6850
+ // Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)
6851
+ // Distributed under the MIT software license, see the accompanying
6852
+ // file LICENSE or http://www.opensource.org/licenses/mit-license.php.
6853
+ function base (ALPHABET) {
6854
+ if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }
6855
+ const BASE_MAP = new Uint8Array(256);
6856
+ for (let j = 0; j < BASE_MAP.length; j++) {
6857
+ BASE_MAP[j] = 255;
6858
+ }
6859
+ for (let i = 0; i < ALPHABET.length; i++) {
6860
+ const x = ALPHABET.charAt(i);
6861
+ const xc = x.charCodeAt(0);
6862
+ if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }
6863
+ BASE_MAP[xc] = i;
6864
+ }
6865
+ const BASE = ALPHABET.length;
6866
+ const LEADER = ALPHABET.charAt(0);
6867
+ const FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up
6868
+ const iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up
6869
+ function encode (source) {
6870
+ // eslint-disable-next-line no-empty
6871
+ if (source instanceof Uint8Array) ; else if (ArrayBuffer.isView(source)) {
6872
+ source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);
6873
+ } else if (Array.isArray(source)) {
6874
+ source = Uint8Array.from(source);
6875
+ }
6876
+ if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }
6877
+ if (source.length === 0) { return '' }
6878
+ // Skip & count leading zeroes.
6879
+ let zeroes = 0;
6880
+ let length = 0;
6881
+ let pbegin = 0;
6882
+ const pend = source.length;
6883
+ while (pbegin !== pend && source[pbegin] === 0) {
6884
+ pbegin++;
6885
+ zeroes++;
6886
+ }
6887
+ // Allocate enough space in big-endian base58 representation.
6888
+ const size = ((pend - pbegin) * iFACTOR + 1) >>> 0;
6889
+ const b58 = new Uint8Array(size);
6890
+ // Process the bytes.
6891
+ while (pbegin !== pend) {
6892
+ let carry = source[pbegin];
6893
+ // Apply "b58 = b58 * 256 + ch".
6894
+ let i = 0;
6895
+ for (let it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {
6896
+ carry += (256 * b58[it1]) >>> 0;
6897
+ b58[it1] = (carry % BASE) >>> 0;
6898
+ carry = (carry / BASE) >>> 0;
6899
+ }
6900
+ if (carry !== 0) { throw new Error('Non-zero carry') }
6901
+ length = i;
6902
+ pbegin++;
6903
+ }
6904
+ // Skip leading zeroes in base58 result.
6905
+ let it2 = size - length;
6906
+ while (it2 !== size && b58[it2] === 0) {
6907
+ it2++;
6908
+ }
6909
+ // Translate the result into a string.
6910
+ let str = LEADER.repeat(zeroes);
6911
+ for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]); }
6912
+ return str
6913
+ }
6914
+ function decodeUnsafe (source) {
6915
+ if (typeof source !== 'string') { throw new TypeError('Expected String') }
6916
+ if (source.length === 0) { return new Uint8Array() }
6917
+ let psz = 0;
6918
+ // Skip and count leading '1's.
6919
+ let zeroes = 0;
6920
+ let length = 0;
6921
+ while (source[psz] === LEADER) {
6922
+ zeroes++;
6923
+ psz++;
6924
+ }
6925
+ // Allocate enough space in big-endian base256 representation.
6926
+ const size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.
6927
+ const b256 = new Uint8Array(size);
6928
+ // Process the characters.
6929
+ while (psz < source.length) {
6930
+ // Find code of next character
6931
+ const charCode = source.charCodeAt(psz);
6932
+ // Base map can not be indexed using char code
6933
+ if (charCode > 255) { return }
6934
+ // Decode character
6935
+ let carry = BASE_MAP[charCode];
6936
+ // Invalid character
6937
+ if (carry === 255) { return }
6938
+ let i = 0;
6939
+ for (let it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {
6940
+ carry += (BASE * b256[it3]) >>> 0;
6941
+ b256[it3] = (carry % 256) >>> 0;
6942
+ carry = (carry / 256) >>> 0;
6943
+ }
6944
+ if (carry !== 0) { throw new Error('Non-zero carry') }
6945
+ length = i;
6946
+ psz++;
6947
+ }
6948
+ // Skip leading zeroes in b256.
6949
+ let it4 = size - length;
6950
+ while (it4 !== size && b256[it4] === 0) {
6951
+ it4++;
6952
+ }
6953
+ const vch = new Uint8Array(zeroes + (size - it4));
6954
+ let j = zeroes;
6955
+ while (it4 !== size) {
6956
+ vch[j++] = b256[it4++];
6957
+ }
6958
+ return vch
6959
+ }
6960
+ function decode (string) {
6961
+ const buffer = decodeUnsafe(string);
6962
+ if (buffer) { return buffer }
6963
+ throw new Error('Non-base' + BASE + ' character')
6964
+ }
6965
+ return {
6966
+ encode,
6967
+ decodeUnsafe,
6968
+ decode
6969
+ }
6970
+ }
6971
+
6972
+ var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
6973
+ var bs58 = base(ALPHABET);
6974
+
6975
+ // RFC 4648 base32 alphabet (lowercase)
6976
+ const BASE32_ALPHABET = "abcdefghijklmnopqrstuvwxyz234567";
6977
+ function base32Decode(str) {
6978
+ const lookup = {};
6979
+ for (let i = 0; i < BASE32_ALPHABET.length; i++) {
6980
+ lookup[BASE32_ALPHABET[i]] = i;
6981
+ }
6982
+ let bits = 0;
6983
+ let value = 0;
6984
+ const result = [];
6985
+ for (const char of str.toLowerCase()) {
6986
+ if (!(char in lookup)) {
6987
+ throw new Error(`Invalid base32 character: ${char}`);
6988
+ }
6989
+ value = (value << 5) | lookup[char];
6990
+ bits += 5;
6991
+ if (bits >= 8) {
6992
+ bits -= 8;
6993
+ result.push((value >> bits) & 0xff);
6994
+ }
6995
+ }
6996
+ return new Uint8Array(result);
6997
+ }
6998
+ /**
6999
+ * Encode a CID to bytes32 by extracting the 32-byte SHA-256 digest.
7000
+ * Supports both CIDv0 (starts with "Qm") and CIDv1 (starts with "bafy").
7001
+ */
7002
+ function encodeCidToBytes32(cid) {
7003
+ let digest;
7004
+ if (cid.startsWith("Qm")) {
7005
+ // CIDv0: base58-encoded multihash (0x1220 + 32-byte digest)
7006
+ const decoded = bs58.decode(cid);
7007
+ if (decoded[0] !== 0x12 || decoded[1] !== 0x20 || decoded.length !== 34) {
7008
+ throw new Error("Invalid CIDv0: expected SHA-256 multihash");
7009
+ }
7010
+ digest = decoded.slice(2);
7011
+ }
7012
+ else if (cid.startsWith("b")) {
7013
+ // CIDv1: multibase 'b' prefix + base32-encoded (version + codec + multihash)
7014
+ const decoded = base32Decode(cid.slice(1));
7015
+ // CIDv1 structure: version (1 byte) + codec (varint) + multihash
7016
+ // For raw codec with sha2-256: 0x01 + 0x55 + 0x12 + 0x20 + 32-byte digest
7017
+ // For dag-pb with sha2-256: 0x01 + 0x70 + 0x12 + 0x20 + 32-byte digest
7018
+ if (decoded[0] !== 0x01 || decoded.length !== 36) {
7019
+ throw new Error("Invalid CIDv1: expected version 1 with 36 bytes");
7020
+ }
7021
+ const codec = decoded[1];
7022
+ if (codec !== 0x55 && codec !== 0x70) {
7023
+ throw new Error(`Invalid CIDv1: unsupported codec 0x${codec.toString(16)}`);
7024
+ }
7025
+ if (decoded[2] !== 0x12 || decoded[3] !== 0x20) {
7026
+ throw new Error("Invalid CIDv1: expected SHA-256 hash");
7027
+ }
7028
+ digest = decoded.slice(4);
7029
+ }
7030
+ else {
7031
+ throw new Error("Unsupported CID format: must start with 'Qm' or 'b'");
7032
+ }
7033
+ return `0x${Buffer.from(digest).toString("hex")}`;
7034
+ }
7035
+
7036
+ /**
7037
+ * Raises a dispute with automatic evidence upload to IPFS.
7038
+ * Uploads evidence JSON to IPFS, encodes the CID to bytes32 for on-chain storage,
7039
+ * and calls raiseDispute.
7040
+ *
7041
+ * The CID is encoded by stripping the 0x1220 multihash prefix from CIDv0,
7042
+ * leaving only the 32-byte SHA-256 digest. This encoding is reversible,
7043
+ * allowing the original CID to be reconstructed from the on-chain data.
7044
+ *
7045
+ * @param targetIpId The token ID of the IP NFT to dispute.
7046
+ * @param evidence The evidence JSON object to upload to IPFS.
7047
+ * @param disputeTag A tag identifying the type of dispute.
7048
+ * @returns A promise that resolves with the transaction result, IPFS CID, and evidence hash.
7049
+ *
7050
+ * @example
7051
+ * ```typescript
7052
+ * const result = await origin.raiseDisputeSmart(
7053
+ * 1n,
7054
+ * { reason: "copyright", details: "Unauthorized use of copyrighted material" },
7055
+ * "0x696e6672696e67656d656e74..." // dispute tag
7056
+ * );
7057
+ *
7058
+ * // The CID can be recovered from evidenceHash using decodeCidFromBytes32
7059
+ * console.log("Evidence CID:", result.evidenceCid);
7060
+ *
7061
+ * // Fetch evidence via IPFS gateway
7062
+ * // https://ipfs.io/ipfs/{result.evidenceCid}
7063
+ * ```
7064
+ */
7065
+ function raiseDisputeSmart(targetIpId, evidence, disputeTag) {
7066
+ return __awaiter(this, void 0, void 0, function* () {
7067
+ const cid = yield this.uploadJSONToIPFS(evidence);
7068
+ const evidenceHash = encodeCidToBytes32(cid);
7069
+ const transactionResult = yield this.raiseDispute(targetIpId, evidenceHash, disputeTag);
7070
+ return {
7071
+ transactionResult,
7072
+ evidenceCid: cid,
7073
+ evidenceHash,
7074
+ };
6726
7075
  });
6727
7076
  }
6728
7077
 
@@ -6745,6 +7094,48 @@ function disputeAssertion(disputeId, counterEvidenceHash) {
6745
7094
  });
6746
7095
  }
6747
7096
 
7097
+ /**
7098
+ * Asserts a dispute with automatic counter-evidence upload to IPFS.
7099
+ * Uploads counter-evidence JSON to IPFS, encodes the CID to bytes32 for on-chain storage,
7100
+ * and calls disputeAssertion.
7101
+ *
7102
+ * The CID is encoded by stripping the 0x1220 multihash prefix from CIDv0,
7103
+ * leaving only the 32-byte SHA-256 digest. This encoding is reversible,
7104
+ * allowing the original CID to be reconstructed from the on-chain data.
7105
+ *
7106
+ * Must be called by the owner of the disputed IP within the cooldown period.
7107
+ *
7108
+ * @param disputeId The ID of the dispute to assert.
7109
+ * @param counterEvidence The counter-evidence JSON object to upload to IPFS.
7110
+ * @returns A promise that resolves with the transaction result, IPFS CID, and counter-evidence hash.
7111
+ *
7112
+ * @example
7113
+ * ```typescript
7114
+ * const result = await origin.disputeAssertionSmart(
7115
+ * 1n,
7116
+ * { description: "This is my original work", proofUrl: "https://..." }
7117
+ * );
7118
+ *
7119
+ * // The CID can be recovered from counterEvidenceHash using decodeCidFromBytes32
7120
+ * console.log("Counter-evidence CID:", result.counterEvidenceCid);
7121
+ *
7122
+ * // Fetch counter-evidence via IPFS gateway
7123
+ * // https://ipfs.io/ipfs/{result.counterEvidenceCid}
7124
+ * ```
7125
+ */
7126
+ function disputeAssertionSmart(disputeId, counterEvidence) {
7127
+ return __awaiter(this, void 0, void 0, function* () {
7128
+ const cid = yield this.uploadJSONToIPFS(counterEvidence);
7129
+ const counterEvidenceHash = encodeCidToBytes32(cid);
7130
+ const transactionResult = yield this.disputeAssertion(disputeId, counterEvidenceHash);
7131
+ return {
7132
+ transactionResult,
7133
+ counterEvidenceCid: cid,
7134
+ counterEvidenceHash,
7135
+ };
7136
+ });
7137
+ }
7138
+
6748
7139
  /**
6749
7140
  * Votes on a dispute as a CAMP token staker.
6750
7141
  * Only users who staked before the dispute was raised can vote.
@@ -6844,7 +7235,23 @@ function tagChildIp(childIpId, infringerDisputeId) {
6844
7235
  */
6845
7236
  function getDispute(disputeId) {
6846
7237
  return __awaiter(this, void 0, void 0, function* () {
6847
- return this.callContractMethod(this.environment.DISPUTE_CONTRACT_ADDRESS, this.environment.DISPUTE_ABI, "disputes", [disputeId]);
7238
+ const result = yield this.callContractMethod(this.environment.DISPUTE_CONTRACT_ADDRESS, this.environment.DISPUTE_ABI, "disputes", [disputeId]);
7239
+ // Contract returns a tuple, map it to the Dispute interface
7240
+ const [initiator, targetId, disputeTag, disputeEvidenceHash, counterEvidenceHash, disputeTimestamp, assertionTimestamp, yesVotes, noVotes, status, bondAmount, protocolFeeAmount,] = result;
7241
+ return {
7242
+ initiator,
7243
+ targetId,
7244
+ disputeTag,
7245
+ disputeEvidenceHash,
7246
+ counterEvidenceHash,
7247
+ disputeTimestamp,
7248
+ assertionTimestamp,
7249
+ yesVotes,
7250
+ noVotes,
7251
+ status: status,
7252
+ bondAmount,
7253
+ protocolFeeAmount,
7254
+ };
6848
7255
  });
6849
7256
  }
6850
7257
 
@@ -7126,6 +7533,71 @@ function getDisputeProgress(disputeId) {
7126
7533
  });
7127
7534
  }
7128
7535
 
7536
+ /**
7537
+ * Gets the requirements for raising a dispute, including balance check.
7538
+ *
7539
+ * @param userAddress The address to check balance for.
7540
+ * @returns A promise that resolves with the dispute requirements.
7541
+ *
7542
+ * @example
7543
+ * ```typescript
7544
+ * const requirements = await origin.getDisputeRequirements(walletAddress);
7545
+ * if (!requirements.hasSufficientBalance) {
7546
+ * console.log(`Need ${requirements.totalRequired} but only have ${requirements.userBalance}`);
7547
+ * }
7548
+ * ```
7549
+ */
7550
+ function getDisputeRequirements(userAddress) {
7551
+ return __awaiter(this, void 0, void 0, function* () {
7552
+ const publicClient = getPublicClient();
7553
+ const disputeContractAddress = this.environment
7554
+ .DISPUTE_CONTRACT_ADDRESS;
7555
+ const disputeAbi = this.environment.DISPUTE_ABI;
7556
+ // Get dispute parameters from the contract
7557
+ const [bondAmount, protocolFee, tokenAddress] = yield Promise.all([
7558
+ publicClient.readContract({
7559
+ address: disputeContractAddress,
7560
+ abi: disputeAbi,
7561
+ functionName: "disputeBond",
7562
+ }),
7563
+ publicClient.readContract({
7564
+ address: disputeContractAddress,
7565
+ abi: disputeAbi,
7566
+ functionName: "protocolDisputeFee",
7567
+ }),
7568
+ publicClient.readContract({
7569
+ address: disputeContractAddress,
7570
+ abi: disputeAbi,
7571
+ functionName: "disputeToken",
7572
+ }),
7573
+ ]);
7574
+ const isNativeToken = tokenAddress === zeroAddress;
7575
+ const totalRequired = bondAmount + protocolFee;
7576
+ // Get user's balance
7577
+ let userBalance;
7578
+ if (isNativeToken) {
7579
+ userBalance = yield publicClient.getBalance({ address: userAddress });
7580
+ }
7581
+ else {
7582
+ userBalance = (yield publicClient.readContract({
7583
+ address: tokenAddress,
7584
+ abi: erc20Abi,
7585
+ functionName: "balanceOf",
7586
+ args: [userAddress],
7587
+ }));
7588
+ }
7589
+ return {
7590
+ bondAmount,
7591
+ protocolFee,
7592
+ totalRequired,
7593
+ tokenAddress,
7594
+ isNativeToken,
7595
+ userBalance,
7596
+ hasSufficientBalance: userBalance >= totalRequired,
7597
+ };
7598
+ });
7599
+ }
7600
+
7129
7601
  /**
7130
7602
  * Fractionalizes an IP NFT into fungible ERC20 tokens.
7131
7603
  * The NFT is transferred to the fractionalizer contract and a new ERC20 token is created.
@@ -7497,10 +7969,11 @@ function getAppInfo(appId) {
7497
7969
  /**
7498
7970
  * Approves a spender to spend a specified amount of tokens on behalf of the owner.
7499
7971
  * If the current allowance is less than the specified amount, it will perform the approval.
7972
+ * Waits for the approval transaction to be confirmed before returning.
7500
7973
  * @param {ApproveParams} params - The parameters for the approval.
7501
7974
  */
7502
7975
  function approveIfNeeded(_a) {
7503
- return __awaiter(this, arguments, void 0, function* ({ walletClient, publicClient, tokenAddress, owner, spender, amount, }) {
7976
+ return __awaiter(this, arguments, void 0, function* ({ walletClient, publicClient, tokenAddress, owner, spender, amount, chain, }) {
7504
7977
  const allowance = yield publicClient.readContract({
7505
7978
  address: tokenAddress,
7506
7979
  abi: erc20Abi,
@@ -7508,14 +7981,21 @@ function approveIfNeeded(_a) {
7508
7981
  args: [owner, spender],
7509
7982
  });
7510
7983
  if (allowance < amount) {
7511
- yield walletClient.writeContract({
7984
+ const txHash = yield walletClient.writeContract({
7512
7985
  address: tokenAddress,
7513
7986
  account: owner,
7514
7987
  abi: erc20Abi,
7515
7988
  functionName: "approve",
7516
7989
  args: [spender, amount],
7517
- chain: testnet,
7990
+ chain,
7991
+ });
7992
+ // Wait for the approval transaction to be confirmed with extra confirmations
7993
+ yield publicClient.waitForTransactionReceipt({
7994
+ hash: txHash,
7995
+ confirmations: 2,
7518
7996
  });
7997
+ // Small delay to ensure RPC nodes have synced the new state
7998
+ yield new Promise((resolve) => setTimeout(resolve, 1000));
7519
7999
  }
7520
8000
  });
7521
8001
  }
@@ -7684,6 +8164,7 @@ function bulkBuyAccessSmart(tokenIds, options) {
7684
8164
  owner: buyer,
7685
8165
  spender: this.environment.BATCH_PURCHASE_CONTRACT_ADDRESS,
7686
8166
  amount: erc20.amount,
8167
+ chain: this.environment.CHAIN,
7687
8168
  });
7688
8169
  }
7689
8170
  // Execute the purchase
@@ -7715,6 +8196,8 @@ class Origin {
7715
8196
  typeof environment === "string"
7716
8197
  ? ENVIRONMENTS[environment]
7717
8198
  : environment || ENVIRONMENTS["DEVELOPMENT"];
8199
+ this.environment.AUTH_HUB_BASE_API +=
8200
+ environment === "PRODUCTION" ? "/auth-mainnet" : "";
7718
8201
  this.baseParentId = baseParentId;
7719
8202
  this.appId = appId;
7720
8203
  // DataNFT methods
@@ -7748,7 +8231,9 @@ class Origin {
7748
8231
  this.checkActiveStatus = checkActiveStatus.bind(this);
7749
8232
  // Dispute module methods
7750
8233
  this.raiseDispute = raiseDispute.bind(this);
8234
+ this.raiseDisputeSmart = raiseDisputeSmart.bind(this);
7751
8235
  this.disputeAssertion = disputeAssertion.bind(this);
8236
+ this.disputeAssertionSmart = disputeAssertionSmart.bind(this);
7752
8237
  this.voteOnDispute = voteOnDispute.bind(this);
7753
8238
  this.resolveDispute = resolveDispute.bind(this);
7754
8239
  this.cancelDispute = cancelDispute.bind(this);
@@ -7756,6 +8241,7 @@ class Origin {
7756
8241
  this.getDispute = getDispute.bind(this);
7757
8242
  this.canVoteOnDispute = canVoteOnDispute.bind(this);
7758
8243
  this.getDisputeProgress = getDisputeProgress.bind(this);
8244
+ this.getDisputeRequirements = getDisputeRequirements.bind(this);
7759
8245
  // Fractionalizer module methods
7760
8246
  this.fractionalize = fractionalize.bind(this);
7761
8247
  this.redeem = redeem.bind(this);
@@ -7773,6 +8259,46 @@ class Origin {
7773
8259
  setViemClient(client) {
7774
8260
  this.viemClient = client;
7775
8261
  }
8262
+ /**
8263
+ * Approves an ERC20 token for spending by a spender address if the current allowance is insufficient.
8264
+ * Waits for the approval transaction to be confirmed before returning.
8265
+ * @param tokenAddress The address of the ERC20 token.
8266
+ * @param spender The address that will be approved to spend the tokens.
8267
+ * @param amount The amount of tokens to approve.
8268
+ */
8269
+ approveERC20IfNeeded(tokenAddress, spender, amount) {
8270
+ return __awaiter(this, void 0, void 0, function* () {
8271
+ const account = yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_resolveWalletAddress).call(this);
8272
+ yield approveIfNeeded({
8273
+ walletClient: this.viemClient,
8274
+ publicClient: getPublicClient(),
8275
+ tokenAddress,
8276
+ owner: account,
8277
+ spender,
8278
+ amount,
8279
+ chain: this.environment.CHAIN,
8280
+ });
8281
+ });
8282
+ }
8283
+ /**
8284
+ * Uploads a JSON object to IPFS and returns the resulting CID.
8285
+ * @param data The JSON object to upload.
8286
+ * @returns The CID of the uploaded JSON.
8287
+ * @throws {APIError} If the upload fails.
8288
+ */
8289
+ uploadJSONToIPFS(data) {
8290
+ return __awaiter(this, void 0, void 0, function* () {
8291
+ const jsonString = JSON.stringify(data);
8292
+ const file = new File([jsonString], "evidence.json", {
8293
+ type: "application/json",
8294
+ });
8295
+ const cid = yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_uploadToIPFS).call(this, file);
8296
+ if (!cid) {
8297
+ throw new APIError("Failed to upload evidence to IPFS");
8298
+ }
8299
+ return cid;
8300
+ });
8301
+ }
7776
8302
  /**
7777
8303
  * Mints a file-based IpNFT.
7778
8304
  * @param file The file to mint.
@@ -7826,10 +8352,12 @@ class Origin {
7826
8352
  }
7827
8353
  let registration;
7828
8354
  try {
7829
- registration = yield this.registerIpNFT("file", deadline, license, metadata, info.key, parents);
8355
+ registration = yield this.registerIpNFT("file", deadline, license, metadata, true, // isIp
8356
+ info.key, // fileKey
8357
+ parents, this.appId);
7830
8358
  }
7831
8359
  catch (error) {
7832
- yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_setOriginStatus).call(this, info.key, "failed");
8360
+ yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_setOriginStatus).call(this, info.key, info.uploadId, []);
7833
8361
  throw new Error(`Failed to register IpNFT: ${error instanceof Error ? error.message : String(error)}`);
7834
8362
  }
7835
8363
  const { tokenId, signerAddress, creatorContentHash, signature, uri } = registration;
@@ -7841,14 +8369,14 @@ class Origin {
7841
8369
  throw new Error("Failed to register IpNFT: Missing required fields in registration response.");
7842
8370
  }
7843
8371
  try {
7844
- const mintResult = yield this.mintWithSignature(account, tokenId, parents || [], true, creatorContentHash, uri, license, deadline, signature);
8372
+ const mintResult = yield this.mintWithSignature(account, tokenId, parents || [], true, creatorContentHash, uri, license, deadline, signature, this.appId);
7845
8373
  if (["0x1", "success"].indexOf(mintResult.receipt.status) === -1) {
7846
- yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_setOriginStatus).call(this, info.key, "failed");
8374
+ yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_setOriginStatus).call(this, info.key, info.uploadId, []);
7847
8375
  throw new Error(`Minting failed with status: ${mintResult.receipt.status}`);
7848
8376
  }
7849
8377
  }
7850
8378
  catch (error) {
7851
- yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_setOriginStatus).call(this, info.key, "failed");
8379
+ yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_setOriginStatus).call(this, info.key, info.uploadId, []);
7852
8380
  throw new Error(`Minting transaction failed: ${error instanceof Error ? error.message : String(error)}`);
7853
8381
  }
7854
8382
  return tokenId.toString();
@@ -7875,7 +8403,9 @@ class Origin {
7875
8403
  let parents = this.baseParentId ? [this.baseParentId] : [];
7876
8404
  let registration;
7877
8405
  try {
7878
- registration = yield this.registerIpNFT(source, deadline, license, metadata, undefined, parents);
8406
+ registration = yield this.registerIpNFT(source, deadline, license, metadata, true, // isIp
8407
+ undefined, // fileKey
8408
+ parents, this.appId);
7879
8409
  }
7880
8410
  catch (error) {
7881
8411
  throw new Error(`Failed to register Social IpNFT: ${error instanceof Error ? error.message : String(error)}`);
@@ -7889,7 +8419,7 @@ class Origin {
7889
8419
  throw new Error("Failed to register Social IpNFT: Missing required fields in registration response.");
7890
8420
  }
7891
8421
  try {
7892
- const mintResult = yield this.mintWithSignature(account, tokenId, parents, true, creatorContentHash, uri, license, deadline, signature);
8422
+ const mintResult = yield this.mintWithSignature(account, tokenId, parents, true, creatorContentHash, uri, license, deadline, signature, this.appId);
7893
8423
  if (["0x1", "success"].indexOf(mintResult.receipt.status) === -1) {
7894
8424
  throw new Error(`Minting Social IpNFT failed with status: ${mintResult.receipt.status}`);
7895
8425
  }
@@ -8106,6 +8636,7 @@ class Origin {
8106
8636
  owner: account,
8107
8637
  spender: this.environment.MARKETPLACE_CONTRACT_ADDRESS,
8108
8638
  amount: totalCost,
8639
+ chain: this.environment.CHAIN,
8109
8640
  });
8110
8641
  return this.buyAccess(account, tokenId, totalCost, duration, paymentToken, protocolFeeBps, appFeeBps);
8111
8642
  });
@@ -8118,7 +8649,7 @@ class Origin {
8118
8649
  */
8119
8650
  getData(tokenId) {
8120
8651
  return __awaiter(this, void 0, void 0, function* () {
8121
- const response = yield fetch(`${this.environment.AUTH_HUB_BASE_API}/${this.environment.AUTH_ENDPOINT}/origin/data/${tokenId}`, {
8652
+ const response = yield fetch(`${this.environment.AUTH_HUB_BASE_API}/origin/data/${tokenId}`, {
8122
8653
  method: "GET",
8123
8654
  headers: {
8124
8655
  Authorization: `Bearer ${this.jwt}`,
@@ -8280,14 +8811,15 @@ class Origin {
8280
8811
  });
8281
8812
  }
8282
8813
  }
8283
- _Origin_instances = new WeakSet(), _Origin_generateURL = function _Origin_generateURL(file) {
8814
+ _Origin_instances = new WeakSet(), _Origin_generateURL = function _Origin_generateURL(file, partCount) {
8284
8815
  return __awaiter(this, void 0, void 0, function* () {
8285
8816
  try {
8286
- const uploadRes = yield fetch(`${this.environment.AUTH_HUB_BASE_API}/${this.environment.AUTH_ENDPOINT}/origin/upload-url`, {
8817
+ const uploadRes = yield fetch(`${this.environment.AUTH_HUB_BASE_API}/origin/upload-url`, {
8287
8818
  method: "POST",
8288
8819
  body: JSON.stringify({
8289
8820
  name: file.name,
8290
8821
  type: file.type,
8822
+ partCount,
8291
8823
  }),
8292
8824
  headers: {
8293
8825
  Authorization: `Bearer ${this.jwt}`,
@@ -8308,14 +8840,15 @@ _Origin_instances = new WeakSet(), _Origin_generateURL = function _Origin_genera
8308
8840
  throw error;
8309
8841
  }
8310
8842
  });
8311
- }, _Origin_setOriginStatus = function _Origin_setOriginStatus(key, status) {
8843
+ }, _Origin_setOriginStatus = function _Origin_setOriginStatus(key, uploadId, parts) {
8312
8844
  return __awaiter(this, void 0, void 0, function* () {
8313
8845
  try {
8314
- const res = yield fetch(`${this.environment.AUTH_HUB_BASE_API}/${this.environment.AUTH_ENDPOINT}/origin/update-status`, {
8846
+ const res = yield fetch(`${this.environment.AUTH_HUB_BASE_API}/origin/update-status`, {
8315
8847
  method: "PATCH",
8316
8848
  body: JSON.stringify({
8317
- status,
8318
8849
  fileKey: key,
8850
+ uploadId,
8851
+ parts,
8319
8852
  }),
8320
8853
  headers: {
8321
8854
  Authorization: `Bearer ${this.jwt}`,
@@ -8339,7 +8872,7 @@ _Origin_instances = new WeakSet(), _Origin_generateURL = function _Origin_genera
8339
8872
  if (!image)
8340
8873
  return null;
8341
8874
  try {
8342
- const presignedResponse = yield fetch(`${this.environment.AUTH_HUB_BASE_API}/${this.environment.AUTH_ENDPOINT}/origin/upload-url-ipfs`, {
8875
+ const presignedResponse = yield fetch(`${this.environment.AUTH_HUB_BASE_API}/origin/upload-url-ipfs`, {
8343
8876
  method: "POST",
8344
8877
  headers: {
8345
8878
  "Content-Type": "application/json",
@@ -8388,8 +8921,11 @@ _Origin_instances = new WeakSet(), _Origin_generateURL = function _Origin_genera
8388
8921
  }, _Origin_uploadFile = function _Origin_uploadFile(file, options) {
8389
8922
  return __awaiter(this, void 0, void 0, function* () {
8390
8923
  let uploadInfo;
8924
+ let chunks;
8925
+ const CHUNK_SIZE = 10 * 1024 * 1024;
8391
8926
  try {
8392
- uploadInfo = yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_generateURL).call(this, file);
8927
+ chunks = splitFileIntoChunks(file, CHUNK_SIZE);
8928
+ uploadInfo = yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_generateURL).call(this, file, chunks.length);
8393
8929
  }
8394
8930
  catch (error) {
8395
8931
  console.error("Failed to generate upload URL:", error);
@@ -8398,12 +8934,13 @@ _Origin_instances = new WeakSet(), _Origin_generateURL = function _Origin_genera
8398
8934
  if (!uploadInfo) {
8399
8935
  throw new Error("Failed to generate upload URL: No upload info returned");
8400
8936
  }
8937
+ let uploadResult;
8401
8938
  try {
8402
- yield uploadWithProgress(file, uploadInfo.url, (options === null || options === void 0 ? void 0 : options.progressCallback) || (() => { }));
8939
+ uploadResult = yield uploadWithProgress(chunks, uploadInfo.urls, (options === null || options === void 0 ? void 0 : options.progressCallback) || (() => { }));
8403
8940
  }
8404
8941
  catch (error) {
8405
8942
  try {
8406
- yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_setOriginStatus).call(this, uploadInfo.key, "failed");
8943
+ yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_setOriginStatus).call(this, uploadInfo.key, uploadInfo.uploadId, uploadResult || []);
8407
8944
  }
8408
8945
  catch (statusError) {
8409
8946
  console.error("Failed to update status to failed:", statusError);
@@ -8412,7 +8949,7 @@ _Origin_instances = new WeakSet(), _Origin_generateURL = function _Origin_genera
8412
8949
  throw new Error(`Failed to upload file: ${errorMessage}`);
8413
8950
  }
8414
8951
  try {
8415
- yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_setOriginStatus).call(this, uploadInfo.key, "success");
8952
+ yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_setOriginStatus).call(this, uploadInfo.key, uploadInfo.uploadId, uploadResult);
8416
8953
  }
8417
8954
  catch (statusError) {
8418
8955
  console.error("Failed to update status to success:", statusError);
@@ -8676,7 +9213,7 @@ class Auth {
8676
9213
  * @param {StorageAdapter} [options.storage] Custom storage adapter. Defaults to localStorage in browser, memory storage in Node.js.
8677
9214
  * @throws {APIError} - Throws an error if the clientId is not provided.
8678
9215
  */
8679
- constructor({ clientId, redirectUri, environment = "DEVELOPMENT", baseParentId, storage, }) {
9216
+ constructor({ clientId, appId, redirectUri, environment = "DEVELOPMENT", baseParentId, storage, }) {
8680
9217
  _Auth_instances.add(this);
8681
9218
  _Auth_triggers.set(this, void 0);
8682
9219
  _Auth_isNodeEnvironment.set(this, void 0);
@@ -8685,6 +9222,9 @@ class Auth {
8685
9222
  if (!clientId) {
8686
9223
  throw new ValidationError("clientId is required");
8687
9224
  }
9225
+ if (!appId) {
9226
+ throw new ValidationError("appId is required");
9227
+ }
8688
9228
  if (["PRODUCTION", "DEVELOPMENT"].indexOf(environment) === -1) {
8689
9229
  throw new ValidationError(`Invalid environment "${environment}". Must be "DEVELOPMENT" or "PRODUCTION"`);
8690
9230
  }
@@ -8693,9 +9233,12 @@ class Auth {
8693
9233
  (__classPrivateFieldGet(this, _Auth_isNodeEnvironment, "f") ? new MemoryStorage() : new BrowserStorage()), "f");
8694
9234
  this.viem = null;
8695
9235
  this.environment = ENVIRONMENTS[environment];
9236
+ this.environment.AUTH_HUB_BASE_API +=
9237
+ environment === "PRODUCTION" ? "/auth-mainnet" : "";
8696
9238
  this.baseParentId = baseParentId;
8697
9239
  this.redirectUri = createRedirectUriObject(redirectUri);
8698
9240
  this.clientId = clientId;
9241
+ this.appId = appId;
8699
9242
  this.isAuthenticated = false;
8700
9243
  this.jwt = null;
8701
9244
  this.origin = null;
@@ -8924,7 +9467,7 @@ class Auth {
8924
9467
  this.isAuthenticated = true;
8925
9468
  this.userId = res.userId;
8926
9469
  this.jwt = res.token;
8927
- this.origin = new Origin(this.environment, this.jwt, this.viem, this.baseParentId, this.clientId);
9470
+ this.origin = new Origin(this.environment, this.jwt, this.viem, this.baseParentId, this.appId);
8928
9471
  yield __classPrivateFieldGet(this, _Auth_storage, "f").setItem("camp-sdk:jwt", this.jwt);
8929
9472
  yield __classPrivateFieldGet(this, _Auth_storage, "f").setItem("camp-sdk:wallet-address", this.walletAddress);
8930
9473
  yield __classPrivateFieldGet(this, _Auth_storage, "f").setItem("camp-sdk:user-id", this.userId);
@@ -8988,7 +9531,7 @@ class Auth {
8988
9531
  this.isAuthenticated = true;
8989
9532
  this.userId = res.userId;
8990
9533
  this.jwt = res.token;
8991
- this.origin = new Origin(this.environment, this.jwt, this.viem, this.baseParentId, this.clientId);
9534
+ this.origin = new Origin(this.environment, this.jwt, this.viem, this.baseParentId, this.appId);
8992
9535
  yield __classPrivateFieldGet(this, _Auth_storage, "f").setItem("camp-sdk:jwt", this.jwt);
8993
9536
  yield __classPrivateFieldGet(this, _Auth_storage, "f").setItem("camp-sdk:wallet-address", this.walletAddress);
8994
9537
  yield __classPrivateFieldGet(this, _Auth_storage, "f").setItem("camp-sdk:user-id", this.userId);
@@ -9030,7 +9573,7 @@ class Auth {
9030
9573
  if (!this.isAuthenticated) {
9031
9574
  throw new AuthenticationError("User must be authenticated to get linked social accounts");
9032
9575
  }
9033
- const connections = yield fetch(`${this.environment.AUTH_HUB_BASE_API}/${this.environment.AUTH_ENDPOINT}/client-user/connections-sdk`, {
9576
+ const connections = yield fetch(`${this.environment.AUTH_HUB_BASE_API}/client-user/connections-sdk`, {
9034
9577
  method: "GET",
9035
9578
  headers: {
9036
9579
  Authorization: `Bearer ${this.jwt}`,
@@ -9384,7 +9927,7 @@ _Auth_triggers = new WeakMap(), _Auth_isNodeEnvironment = new WeakMap(), _Auth_s
9384
9927
  this.walletAddress = walletAddress;
9385
9928
  this.userId = userId;
9386
9929
  this.jwt = jwt;
9387
- this.origin = new Origin(this.environment, this.jwt, this.viem, this.baseParentId, this.clientId);
9930
+ this.origin = new Origin(this.environment, this.jwt, this.viem, this.baseParentId, this.appId);
9388
9931
  this.isAuthenticated = true;
9389
9932
  if (provider) {
9390
9933
  this.setProvider({
@@ -9418,7 +9961,7 @@ _Auth_triggers = new WeakMap(), _Auth_isNodeEnvironment = new WeakMap(), _Auth_s
9418
9961
  }, _Auth_fetchNonce = function _Auth_fetchNonce() {
9419
9962
  return __awaiter(this, void 0, void 0, function* () {
9420
9963
  try {
9421
- const res = yield fetch(`${this.environment.AUTH_HUB_BASE_API}/${this.environment.AUTH_ENDPOINT}/client-user/nonce`, {
9964
+ const res = yield fetch(`${this.environment.AUTH_HUB_BASE_API}/client-user/nonce`, {
9422
9965
  method: "POST",
9423
9966
  headers: {
9424
9967
  "Content-Type": "application/json",
@@ -9441,7 +9984,7 @@ _Auth_triggers = new WeakMap(), _Auth_isNodeEnvironment = new WeakMap(), _Auth_s
9441
9984
  }, _Auth_verifySignature = function _Auth_verifySignature(message, signature) {
9442
9985
  return __awaiter(this, void 0, void 0, function* () {
9443
9986
  try {
9444
- const res = yield fetch(`${this.environment.AUTH_HUB_BASE_API}/${this.environment.AUTH_ENDPOINT}/client-user/verify`, {
9987
+ const res = yield fetch(`${this.environment.AUTH_HUB_BASE_API}/client-user/verify`, {
9445
9988
  method: "POST",
9446
9989
  headers: {
9447
9990
  "Content-Type": "application/json",
@@ -9536,6 +10079,7 @@ const UserProvider = ({ children }) => {
9536
10079
  var _a, _b, _c;
9537
10080
  const { authenticated } = useAuthState();
9538
10081
  const { auth, environment } = useContext(CampContext);
10082
+ const apiUrl = getBaseApiUrl(environment);
9539
10083
  if (!auth && typeof window !== "undefined") {
9540
10084
  throw new Error("Auth instance is not available");
9541
10085
  }
@@ -9544,7 +10088,7 @@ const UserProvider = ({ children }) => {
9544
10088
  queryFn: () => __awaiter(void 0, void 0, void 0, function* () {
9545
10089
  if (!authenticated || !(auth === null || auth === void 0 ? void 0 : auth.jwt))
9546
10090
  return null;
9547
- const response = yield fetch(`${environment.AUTH_HUB_BASE_API}/${environment.AUTH_ENDPOINT}/client-user/user`, {
10091
+ const response = yield fetch(`${apiUrl}/client-user/user`, {
9548
10092
  method: "GET",
9549
10093
  headers: {
9550
10094
  Authorization: `Bearer ${auth.jwt}`,
@@ -9714,6 +10258,10 @@ const BinIcon = ({ w, h }) => (React.createElement("svg", { clipRule: "evenodd",
9714
10258
  const CampIcon = ({ customStyles }) => (React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 571.95 611.12", height: "1rem", width: "1rem", fill: "currentColor", style: customStyles },
9715
10259
  React.createElement("path", { d: "m563.25 431.49-66.17-51.46c-11.11-8.64-27.28-5.06-33.82 7.4-16.24 30.9-41.69 56.36-70.85 73.73l-69.35-69.35c-3.73-3.73-8.79-5.83-14.07-5.83s-10.34 2.1-14.07 5.83l-73.78 73.78c-57.37-30.39-96.55-90.71-96.55-160.03 0-99.79 81.19-180.98 180.98-180.98 60.35 0 118.17 26.28 156.39 89.44 6.85 11.32 21.92 14.33 32.59 6.51l64.21-47.06c9.53-6.98 12.06-20.15 5.78-30.16C508.83 54.41 411.43 0 305.56 0 137.07 0 0 137.07 0 305.56s137.07 305.56 305.56 305.56c57.6 0 113.72-16.13 162.31-46.63A306.573 306.573 0 0 0 568.8 460.8c5.78-9.78 3.42-22.34-5.55-29.31Zm-301.42 49.69 47.15-47.15 44.69 44.69c-15.92 5.1-32.2 7.83-48.1 7.83-15.08 0-29.72-1.87-43.74-5.36Zm42.36-222.47c-.07 1.49-.08 21.29 49.54 55.11 37.02 25.24 19.68 75.52 12.1 92.05a147.07 147.07 0 0 0-20.12-38.91c-12.73-17.59-26.87-28.9-36.74-35.59-10.38 6.36-27.41 18.74-41.07 40.02-8.27 12.89-12.82 25.16-15.42 34.48l-.03-.05c-15.1-40.6-9.75-60.88-1.95-71.9 6.12-8.65 17.24-20.6 17.24-20.6 9.71-9.66 19.96-19.06 29.82-38.17 6.06-11.75 6.59-15.84 6.63-16.45Z", fill: "#000", strokeWidth: "0" }),
9716
10260
  React.createElement("path", { d: "M267.74 313.33s-11.11 11.95-17.24 20.6c-7.8 11.02-13.14 31.3 1.95 71.9-86.02-75.3 2.56-152.15.79-146.3-6.58 21.75 14.49 53.8 14.49 53.8Zm20.98-23.66c3.01-4.27 5.97-9.06 8.8-14.55 6.62-12.83 6.64-16.54 6.64-16.54s-2.09 20.02 49.53 55.21c37.02 25.24 19.68 75.52 12.1 92.05 0 0 43.69-27.86 37.49-74.92-7.45-56.61-38.08-51.5-60.84-93.43-21.23-39.11 15.03-70.44 15.03-70.44s-48.54-2.61-70.76 48.42c-23.42 53.77 2 74.21 2 74.21Z", fill: "#ff6d01", strokeWidth: "0" })));
10261
+ const USDCIcon = ({ customStyles }) => (React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", "data-name": "86977684-12db-4850-8f30-233a7c267d11", viewBox: "0 0 2000 2000", height: "1rem", width: "1rem", style: customStyles },
10262
+ React.createElement("path", { d: "M1000 2000c554.17 0 1000-445.83 1000-1000S1554.17 0 1000 0 0 445.83 0 1000s445.83 1000 1000 1000z", fill: "#2775ca" }),
10263
+ React.createElement("path", { d: "M1275 1158.33c0-145.83-87.5-195.83-262.5-216.66-125-16.67-150-50-150-108.34s41.67-95.83 125-95.83c75 0 116.67 25 137.5 87.5 4.17 12.5 16.67 20.83 29.17 20.83h66.66c16.67 0 29.17-12.5 29.17-29.16v-4.17c-16.67-91.67-91.67-162.5-187.5-170.83v-100c0-16.67-12.5-29.17-33.33-33.34h-62.5c-16.67 0-29.17 12.5-33.34 33.34v95.83c-125 16.67-204.16 100-204.16 204.17 0 137.5 83.33 191.66 258.33 212.5 116.67 20.83 154.17 45.83 154.17 112.5s-58.34 112.5-137.5 112.5c-108.34 0-145.84-45.84-158.34-108.34-4.16-16.66-16.66-25-29.16-25h-70.84c-16.66 0-29.16 12.5-29.16 29.17v4.17c16.66 104.16 83.33 179.16 220.83 200v100c0 16.66 12.5 29.16 33.33 33.33h62.5c16.67 0 29.17-12.5 33.34-33.33v-100c125-20.84 208.33-108.34 208.33-220.84z", fill: "#fff" }),
10264
+ React.createElement("path", { d: "M787.5 1595.83c-325-116.66-491.67-479.16-370.83-800 62.5-175 200-308.33 370.83-370.83 16.67-8.33 25-20.83 25-41.67V325c0-16.67-8.33-29.17-25-33.33-4.17 0-12.5 0-16.67 4.16-395.83 125-612.5 545.84-487.5 941.67 75 233.33 254.17 412.5 487.5 487.5 16.67 8.33 33.34 0 37.5-16.67 4.17-4.16 4.17-8.33 4.17-16.66v-58.34c0-12.5-12.5-29.16-25-37.5zM1229.17 295.83c-16.67-8.33-33.34 0-37.5 16.67-4.17 4.17-4.17 8.33-4.17 16.67v58.33c0 16.67 12.5 33.33 25 41.67 325 116.66 491.67 479.16 370.83 800-62.5 175-200 308.33-370.83 370.83-16.67 8.33-25 20.83-25 41.67V1700c0 16.67 8.33 29.17 25 33.33 4.17 0 12.5 0 16.67-4.16 395.83-125 612.5-545.84 487.5-941.67-75-237.5-258.34-416.67-487.5-491.67z", fill: "#fff" })));
9717
10265
  const DiscordIcon = () => (React.createElement("svg", { viewBox: "0 0 42 32", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
9718
10266
  React.createElement("path", { d: "M41.1302 23.4469V24.2363C41.0328 24.2948 41.0717 24.3923 41.062 24.4702C41.0328 24.8991 40.9938 25.3279 40.9645 25.7568C40.9548 25.9322 40.8866 26.0589 40.7306 26.1661C37.7092 28.3396 34.4247 30.0062 30.8672 31.1173C30.6528 31.1856 30.5358 31.1563 30.3994 30.9711C29.6879 29.977 29.0446 28.9439 28.4696 27.862C28.3624 27.6573 28.4111 27.5989 28.6061 27.5209C29.532 27.17 30.4286 26.7509 31.2961 26.2733C31.8419 25.981 31.8224 25.9907 31.3546 25.5911C31.1109 25.3767 30.9062 25.3474 30.5943 25.4936C27.7971 26.7509 24.8634 27.4624 21.7933 27.5989C18.0507 27.7645 14.4542 27.092 11.0235 25.6008C10.5069 25.3767 10.1463 25.3669 9.75645 25.7763C9.59076 25.9517 9.54202 25.9907 9.77594 26.1271C10.7213 26.6534 11.6862 27.131 12.6999 27.5014C12.963 27.5989 12.963 27.6963 12.8461 27.9205C12.2905 28.9634 11.6667 29.9575 10.9942 30.9224C10.8383 31.1466 10.6921 31.1953 10.429 31.1173C6.91049 29.9965 3.65518 28.3591 0.663021 26.2051C0.497331 26.0784 0.419365 25.9615 0.409619 25.747C0.409619 25.4156 0.360879 25.094 0.341386 24.7626C0.156204 21.9752 0.292661 19.2072 0.789729 16.4489C1.66691 11.5952 3.61619 7.18007 6.33545 3.08656C6.43291 2.94037 6.54012 2.8429 6.69607 2.76493C9.25938 1.61485 11.9202 0.805904 14.6784 0.308836C14.8538 0.279597 14.961 0.308829 15.0488 0.484265C15.3217 1.04956 15.6141 1.6051 15.887 2.17039C15.9844 2.37507 16.0624 2.4628 16.3158 2.42381C19.2397 2.01446 22.1734 2.02421 25.0973 2.42381C25.2923 2.45305 25.3702 2.39457 25.4385 2.22889C25.7114 1.65385 26.0038 1.08854 26.2767 0.513503C26.3644 0.32832 26.4813 0.26985 26.686 0.308836C29.4248 0.805904 32.066 1.61486 34.6099 2.74545C34.7853 2.82342 34.912 2.94037 35.0192 3.10606C38.4305 8.18395 40.5454 13.7297 40.9938 19.8699C41.0133 20.1623 40.9548 20.4742 41.101 20.7666V21.4976C41.0035 21.634 41.0328 21.7997 41.0425 21.9459C41.0718 22.4527 40.9645 22.9693 41.101 23.4761L41.1302 23.4469ZM23.8108 17.063C23.8108 18.0961 24.035 18.9148 24.5223 19.6458C25.8868 21.7218 28.5963 21.9069 30.1655 20.0259C31.53 18.3885 31.4618 15.8349 29.9998 14.2755C28.7815 12.9792 26.8225 12.8038 25.419 13.8856C24.3371 14.7238 23.8595 15.8739 23.8206 17.063H23.8108ZM17.5731 17.3748C17.5731 16.6244 17.4756 16.0103 17.2027 15.4353C16.5595 14.1 15.5361 13.2424 14.0059 13.1936C12.4952 13.1449 11.4328 13.9246 10.7408 15.2111C9.88315 16.829 10.1366 18.7881 11.3549 20.1623C12.5829 21.5463 14.6102 21.7315 16.0526 20.5619C17.0955 19.714 17.5438 18.5737 17.5828 17.3748H17.5731Z", fill: "#5865F2" })));
9719
10267
  const TwitterIcon = () => (React.createElement("svg", { viewBox: "0 0 33 27", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
@@ -9933,7 +10481,7 @@ const CampContext = createContext({
9933
10481
  * @param {string} props.environment The environment to use ("DEVELOPMENT" or "PRODUCTION")
9934
10482
  * @returns {JSX.Element} The CampProvider component
9935
10483
  */
9936
- const CampProvider = ({ clientId, redirectUri, children, environment = "DEVELOPMENT", baseParentId, }) => {
10484
+ const CampProvider = ({ clientId, appId, redirectUri, children, environment = "DEVELOPMENT", baseParentId, }) => {
9937
10485
  const isServer = typeof window === "undefined";
9938
10486
  const normalizedBaseParentId = typeof baseParentId === "string" ? BigInt(baseParentId) : baseParentId;
9939
10487
  const [auth, setAuth] = useState(!isServer
@@ -9946,6 +10494,7 @@ const CampProvider = ({ clientId, redirectUri, children, environment = "DEVELOPM
9946
10494
  : "",
9947
10495
  environment: environment,
9948
10496
  baseParentId: normalizedBaseParentId,
10497
+ appId: appId,
9949
10498
  })
9950
10499
  : null);
9951
10500
  const wagmiContext = typeof window !== "undefined" ? useContext(WagmiContext) : undefined;
@@ -9990,8 +10539,8 @@ const useWalletConnectProvider = (projectId, chain) => {
9990
10539
  return walletConnectProvider;
9991
10540
  };
9992
10541
 
9993
- var css_248z = ".buttons-module_button__4Ogad{background-color:#ff6f00;border:none;border-radius:0;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05),0 1px 1px rgba(46,54,80,.075);color:#fff;font-family:Geist Mono,monospace;font-size:1rem;font-size:.875rem;font-weight:600;height:2.5rem;margin-bottom:.75rem;margin-top:1rem;padding:1rem;padding-block:0;position:relative;text-transform:uppercase;width:100%}.buttons-module_button__4Ogad:hover{background-color:#cc4e02;cursor:pointer}.buttons-module_button__4Ogad:disabled{background-color:#ccc;cursor:not-allowed}.buttons-module_connect-button__CJhUa{background-color:#ff6f00;border:none;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05),0 1px 1px rgba(46,54,80,.075);color:#fff;font-family:Geist Mono,monospace;font-size:1rem;font-weight:600;height:2.75rem;line-height:1.333rem;padding-inline:2.5rem;padding-left:5rem;position:relative;text-transform:uppercase;transition:background-color .15s;width:13rem}.buttons-module_connect-button__CJhUa .buttons-module_button-icon__JM4-2{background:hsla(0,0%,100%,.75);box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05);display:grid;height:100%;left:0;margin-right:.5rem;place-items:center;position:absolute;top:50%;transform:translateY(-50%);transition:background-color .15s;width:3rem}.buttons-module_connect-button__CJhUa .buttons-module_button-icon__JM4-2 svg{height:1.25rem;width:1.25rem}.buttons-module_connect-button__CJhUa:hover{background-color:#cc4e02;border-color:#cc4e02;cursor:pointer}.buttons-module_connect-button__CJhUa:hover .buttons-module_button-icon__JM4-2{background:hsla(0,0%,100%,.675)}.buttons-module_connect-button__CJhUa:focus{outline:none}.buttons-module_connect-button__CJhUa:disabled{background-color:#ccc;cursor:not-allowed}.buttons-module_provider-button__6JY7s{align-items:center;border:1px solid #ddd;display:flex;gap:.5rem;justify-content:flex-start;padding:.5rem;position:relative;transition:border-color .15s;width:100%}.buttons-module_provider-button__6JY7s:focus{outline:1px solid #ff6f00;outline-offset:2px}.buttons-module_provider-button__6JY7s:hover{border-color:#ff6f00}.buttons-module_provider-button__6JY7s:hover:not(:disabled){cursor:pointer}.buttons-module_provider-button__6JY7s img{height:2rem;width:2rem}.buttons-module_provider-button__6JY7s .buttons-module_provider-icon__MOhr8{border-radius:.2rem}.buttons-module_provider-button__6JY7s span{line-height:1rem;margin-left:.5rem}.buttons-module_provider-button__6JY7s span.buttons-module_provider-name__tHWO2{color:#333;font-size:.875rem}.buttons-module_provider-button__6JY7s span.buttons-module_provider-label__CEGRr{color:#777;font-family:Geist Mono,monospace;font-size:.7rem;text-transform:uppercase}.buttons-module_link-button-default__EcKUT{background-color:#ff6f00;border:none;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05),0 1px 1px rgba(46,54,80,.075);box-sizing:border-box;cursor:pointer;height:2.6rem;position:relative;width:7rem}.buttons-module_link-button-default__EcKUT:disabled{background-color:#b8b8b8;cursor:not-allowed}.buttons-module_link-button-default__EcKUT:after{background-color:transparent;border-radius:.75rem;bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;transition:background-color .15s}.buttons-module_link-button-default__EcKUT:disabled:after{background-color:rgba(0,0,0,.35);border-radius:.35rem;color:#fff;content:\"Not connected\";display:grid;font-size:.75rem;height:2rem;left:0;opacity:0;padding:.25rem;place-items:center;position:absolute;right:0;top:-2.7rem;transform:translateY(-.5rem);transition:all .25s;-webkit-user-select:none;-moz-user-select:none;user-select:none;visibility:hidden}.buttons-module_link-button-default__EcKUT:disabled:hover:after{opacity:1;transform:translateY(0);visibility:visible}.buttons-module_link-button-default__EcKUT:not(:disabled):hover:after{background-color:rgba(0,0,0,.1)}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_twitter__9sRaz{background-color:#1da1f2}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_spotify__-fiKQ{background-color:#1db954}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_discord__I-YjZ{background-color:#7289da}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_tiktok__a80-0{background-color:#000}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_telegram__ExOTS{background-color:#08c}.buttons-module_link-button-default__EcKUT .buttons-module_button-container__-oPqd{align-items:center;display:flex;flex-direction:row;gap:.5rem;justify-content:center;padding:.5rem}.buttons-module_button-container__-oPqd .buttons-module_social-icon__DPdPe{align-items:center;color:#fff;display:flex;height:1.5rem;justify-content:center;width:1.5rem}.buttons-module_button-container__-oPqd .buttons-module_social-icon__DPdPe svg{fill:#fff!important;height:1.5rem;width:1.5rem}.buttons-module_button-container__-oPqd .buttons-module_social-icon__DPdPe svg path{fill:#fff!important}.buttons-module_button-container__-oPqd .buttons-module_link-icon__8V8FP{align-items:center;color:hsla(0,0%,100%,.8);display:flex;height:1.25rem;justify-content:center;width:1.25rem}.buttons-module_button-container__-oPqd .buttons-module_camp-logo__slNl0{align-items:center;background-color:#fff;border-radius:50%;box-sizing:border-box;display:flex;height:1.5rem;justify-content:center;padding:.15rem;width:1.5rem}.buttons-module_link-button-default__EcKUT:disabled .buttons-module_button-container__-oPqd .buttons-module_camp-logo__slNl0 svg path{fill:#b8b8b8!important}.buttons-module_link-button-icon__llX8m{background-color:#ff6f00;border:none;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05),0 1px 1px rgba(46,54,80,.075);box-sizing:border-box;cursor:pointer;height:3rem;min-height:3rem;min-width:3rem;padding:0;position:relative;width:3rem}.buttons-module_link-button-icon__llX8m:disabled{background-color:#b8b8b8;cursor:not-allowed}.buttons-module_link-button-icon__llX8m:disabled:after{background-color:rgba(0,0,0,.35);border-radius:.35rem;box-sizing:border-box;color:#fff;content:\"Not connected\";display:grid;font-size:.75rem;height:-moz-fit-content;height:fit-content;left:-1rem;opacity:0;padding:.25rem;place-items:center;position:absolute;right:-1rem;top:-2.7rem;transform:translateY(-.5rem);transition:all .25s}.buttons-module_link-button-icon__llX8m:disabled:hover:after{opacity:1;transform:translateY(0)}.buttons-module_link-button-icon__llX8m:after{background-color:transparent;border-radius:.75rem;bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;transition:background-color .15s}.buttons-module_link-button-icon__llX8m:not(:disabled):hover:after{background-color:rgba(0,0,0,.1)}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_twitter__9sRaz{background-color:#1da1f2}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_spotify__-fiKQ{background-color:#1db954}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_discord__I-YjZ{background-color:#7289da}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_tiktok__a80-0{background-color:#000}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_telegram__ExOTS{background-color:#08c}.buttons-module_link-button-icon__llX8m .buttons-module_icon-container__Q5bI1{align-items:center;display:flex;flex:1;height:100%;justify-content:center;position:relative;width:100%}.buttons-module_link-button-icon__llX8m .buttons-module_icon-container__Q5bI1>svg{fill:#fff!important;height:1.5rem;width:1.5rem}.buttons-module_link-button-icon__llX8m .buttons-module_icon-container__Q5bI1>svg path{fill:#fff!important}.buttons-module_link-button-icon__llX8m .buttons-module_camp-logo__slNl0{align-items:center;background-color:#fff;border-radius:50%;bottom:-.5rem;box-sizing:border-box;display:flex;height:1.5rem;justify-content:center;position:absolute;right:-.5rem;width:1.5rem}.buttons-module_link-button-icon__llX8m .buttons-module_camp-logo__slNl0 svg{height:1.1rem;width:1.1rem}.buttons-module_link-button-icon__llX8m:disabled .buttons-module_camp-logo__slNl0 svg path,.buttons-module_not-linked__ua4va svg path{fill:#b8b8b8!important}.buttons-module_file-upload-container__le7Cg{align-items:center;border:2px dashed #ccc;box-sizing:border-box;color:#777;cursor:pointer;display:flex;flex-direction:column;justify-content:center;max-width:100%;min-height:12rem;min-width:0;overflow-y:auto;padding:1rem;position:relative;text-align:center;transition:background-color .2s,border-color .2s;width:100%}.buttons-module_file-upload-container__le7Cg:hover{border-color:#e2e2e2}.buttons-module_file-upload-container__le7Cg.buttons-module_dragging__cfggZ{background-color:#f9f9f9;border-color:#ff6f00}.buttons-module_file-upload-container__le7Cg.buttons-module_dragging__cfggZ .buttons-module_file-preview__yuM5i{opacity:.2;transition:opacity .2s}.buttons-module_file-upload-container__le7Cg.buttons-module_file-selected__YY6ms{background-color:#f9f9f9;border:none;padding:0 .5rem 0 0}.buttons-module_file-input__gbD5T{display:none}.buttons-module_selected-file-container__E1AXM{align-items:center;display:flex;flex-direction:column;gap:.25rem;height:100%;justify-content:space-between;max-width:100%;position:relative;width:100%}.buttons-module_remove-file-button__Q1FMa{border:1px solid #ff6f00;color:#fff;color:#ff6f00;cursor:pointer;font-size:.875rem;margin-bottom:.75rem;margin-top:1rem;padding:.5rem;text-align:center;transition:background-color .2s}.buttons-module_remove-file-button__Q1FMa:hover{background-color:#cc4e02;border-color:#cc4e02;color:#fff;cursor:pointer}.buttons-module_remove-file-button__Q1FMa:disabled{background-color:#b8b8b8;border-color:#b8b8b8;color:#fff;cursor:not-allowed}.buttons-module_upload-file-button__vTwWd{background-color:#ff6f00;border:none;border-radius:.5rem;color:#fff;cursor:pointer;font-size:.875rem;padding:.5rem;text-align:center;transition:background-color .2s;width:100%}.buttons-module_upload-file-button__vTwWd:hover{background-color:#cc4e02;cursor:pointer}.buttons-module_upload-file-button__vTwWd:disabled{background-color:#b8b8b8;cursor:not-allowed}.buttons-module_file-preview__yuM5i{max-height:8rem;max-width:100%}audio.buttons-module_file-preview__yuM5i{min-height:4rem}.buttons-module_file-preview-text__80Ju0{color:#333;font-size:.875rem;margin-bottom:.5rem}.buttons-module_file-name__3iskR{color:#333;font-size:.875rem;max-width:100%;min-height:-moz-fit-content;min-height:fit-content;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.buttons-module_upload-buttons__3SAw6{align-items:center;display:flex;gap:.25rem;justify-content:space-between;width:100%}.buttons-module_upload-buttons__3SAw6 .buttons-module_upload-file-button__vTwWd{flex-grow:1}.buttons-module_upload-buttons__3SAw6 .buttons-module_remove-file-button__Q1FMa{flex-grow:0}.buttons-module_accepted-types__Ys-D2{color:#777;font-size:.875rem;font-style:italic;margin-top:.5rem}.buttons-module_loading-bar-container__nrgPX{background-color:#e0e0e0;margin-top:8px;min-height:8px;overflow:hidden;width:100%}.buttons-module_loading-bar__IUAg1{background-color:#ff6f00;min-height:100%;transition:width .3s ease}.buttons-module_date-picker__V6gRM{display:flex;flex-direction:column;font-family:sans-serif;gap:6px;width:100%}.buttons-module_date-picker__V6gRM input{border:1px solid #ccc;border-radius:4px;font-size:14px;padding:6px 10px}.buttons-module_percentage-slider__M84tC{display:flex;flex-direction:row;font-family:sans-serif;gap:8px;justify-content:space-between;width:100%}.buttons-module_percentage-slider__M84tC input[type=range]{width:100%}.buttons-module_percentage-slider__M84tC label{min-width:50px}.buttons-module_fancy-input-container__s-zVw{align-items:center;border:1px solid #ccc;display:flex;font-family:sans-serif;gap:0;min-height:2.5rem;overflow:hidden;position:relative;width:100%}.buttons-module_fancy-input-container__s-zVw textarea.buttons-module_fancy-input__RpSOF{background:transparent;border:none;box-sizing:border-box;color:#222;font-family:inherit;font-size:1rem;line-height:1.4;max-height:12rem;outline:none;overflow-y:auto;padding:10px;resize:none;width:100%}.buttons-module_fancy-input__RpSOF{background:transparent;border:none;flex:1;font-family:sans-serif;outline:none;padding:6px 10px}.buttons-module_fancy-input-label__d-sG7{align-self:flex-start;color:#777;font-family:Geist Mono,monospace;font-size:.8rem;font-weight:500;margin-top:.25rem;padding:0 .25rem;pointer-events:none;text-transform:uppercase}.buttons-module_input-divider__RVasJ{background-color:#ccc;height:24px;margin:0;min-width:1px}.buttons-module_input-icon-container__MUYKL{align-items:center;background-color:#f8f9fa;display:flex;justify-content:center;min-width:40px;padding:6px 10px}.buttons-module_input-icon-container__MUYKL svg{height:16px;width:16px}.buttons-module_duration-input-container__Rh9Na{align-items:stretch;border:1px solid #ccc;box-sizing:border-box;display:flex;font-family:sans-serif;gap:0;min-height:2.5rem;overflow:hidden;width:100%}.buttons-module_duration-input__-gt3p{background:transparent;flex:1;min-width:0}.buttons-module_duration-input__-gt3p,.buttons-module_duration-unit-select__VKFf6{border:none;box-sizing:border-box;font-family:sans-serif;outline:none;padding:6px 10px}.buttons-module_duration-unit-select__VKFf6{background-color:#f8f9fa;border-left:1px solid #ccc;cursor:pointer;flex:0 0 auto;width:auto}.buttons-module_price-input-container__teIRS:focus-within{border-color:#ff6f00;box-shadow:0 0 0 1px #ff6f00}.buttons-module_duration-input-container__Rh9Na:focus-within{border-color:#ff6f00;box-shadow:0 0 0 1px #ff6f00}.buttons-module_duration-input-container__Rh9Na:hover,.buttons-module_price-input-container__teIRS:hover{border-color:#999}.buttons-module_duration-unit-select__VKFf6:focus,.buttons-module_duration-unit-select__VKFf6:hover{background-color:#e9ecef}.buttons-module_preview-option-container__0bzt-{align-items:center;display:flex;margin-top:.5rem;width:100%}.buttons-module_checkbox-label__ODwgG{align-items:center;color:#333;cursor:pointer;display:flex;font-size:.875rem;gap:.5rem;-webkit-user-select:none;-moz-user-select:none;user-select:none}.buttons-module_checkbox-input__FvUIp{accent-color:#ff6f00;cursor:pointer;height:1.125rem;width:1.125rem}.buttons-module_checkbox-label__ODwgG span{line-height:1.2}.buttons-module_preview-image-section__BjtiC{margin-top:.5rem}.buttons-module_preview-image-controls__l6gv5,.buttons-module_preview-image-section__BjtiC{display:flex;flex-direction:column;gap:.5rem;width:100%}.buttons-module_select-preview-button__0HQfm{background-color:#f8f9fa;border:1px solid #ccc;color:#333;cursor:pointer;font-family:Geist Mono,monospace;font-size:.875rem;padding:.75rem;text-transform:uppercase;transition:all .2s;width:100%}.buttons-module_select-preview-button__0HQfm:hover:not(:disabled){background-color:#e9ecef;border-color:#999}.buttons-module_select-preview-button__0HQfm:disabled{background-color:#e9ecef;color:#999;cursor:not-allowed;opacity:.6}.buttons-module_preview-image-preview__c-6n5{align-items:center;background-color:#f8f9fa;border:1px solid #ccc;display:flex;gap:.75rem;padding:.75rem}.buttons-module_preview-thumbnail__fJWXt{flex-shrink:0;height:3rem;-o-object-fit:cover;object-fit:cover;width:3rem}.buttons-module_preview-filename__FW-Gz{color:#333;flex:1;font-size:.875rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.buttons-module_remove-preview-button__Skqgb{align-items:center;background-color:transparent;border:1px solid #ff6f00;color:#ff6f00;cursor:pointer;display:flex;flex-shrink:0;justify-content:center;padding:.5rem;transition:all .2s}.buttons-module_remove-preview-button__Skqgb:hover:not(:disabled){background-color:#cc4e02;border-color:#cc4e02;color:#fff}.buttons-module_remove-preview-button__Skqgb:disabled{border-color:#ccc;color:#ccc;cursor:not-allowed;opacity:.6}.buttons-module_percentage-icon__MxmJh{color:#555;font-size:.875rem;font-weight:600}\n/*# sourceMappingURL=data:application/json;base64,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QVBuQiw0QkFBNkIsQ0FDN0Isd0JBQXlCLENBQ3pCLGFBQWMsQ0FDZCxjQUFlLENBR2YsWUFBYSxDQURiLGFBQWMsQ0FHZCxzQkFBdUIsQ0FUdkIsYUFBZSxDQUtmLGtCQUtGLENBRUEsa0VBQ0Usd0JBQXlCLENBQ3pCLG9CQUFxQixDQUNyQixVQUNGLENBRUEsc0RBQ0UsaUJBQWtCLENBQ2xCLFVBQVcsQ0FDWCxrQkFBbUIsQ0FDbkIsVUFDRixDQUVBLHVDQUdFLFVBQVcsQ0FGWCxpQkFBbUIsQ0FDbkIsZUFFRiIsImZpbGUiOiJidXR0b25zLm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuYnV0dG9uIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2ZjAwO1xuICBjb2xvcjogd2hpdGU7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgcGFkZGluZzogMXJlbTtcbiAgcGFkZGluZy1ibG9jazogMDtcbiAgZm9udC1zaXplOiAxcmVtO1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcbiAgbWFyZ2luLXRvcDogMXJlbTtcbiAgaGVpZ2h0OiAyLjVyZW07XG4gIGJveC1zaGFkb3c6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMTUpIDAgMnB4IDAgaW5zZXQsXG4gICAgcmdiYSgwLCAwLCAwLCAwLjA1KSAwIC0ycHggNHB4IGluc2V0LCByZ2JhKDQ2LCA1NCwgODAsIDAuMDc1KSAwIDFweCAxcHg7XG5cbiAgZm9udC1mYW1pbHk6IFwiR2Vpc3QgTW9ub1wiLCBtb25vc3BhY2U7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi5idXR0b246aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2M0ZTAyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5idXR0b246ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjO1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4uY29ubmVjdC1idXR0b24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZmMDA7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyOiBub25lO1xuICAvKiBib3JkZXItcmFkaXVzOiAwLjc1cmVtOyAqL1xuICBwYWRkaW5nLWlubGluZTogMi41cmVtO1xuICBwYWRkaW5nLWxlZnQ6IDVyZW07XG4gIGhlaWdodDogMi43NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMzMzcmVtO1xuICBmb250LXNpemU6IDFyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIHdpZHRoOiAxM3JlbTtcbiAgZm9udC1mYW1pbHk6IFwiR2Vpc3QgTW9ub1wiLCBtb25vc3BhY2U7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGJveC1zaGFkb3c6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMTUpIDAgMnB4IDAgaW5zZXQsXG4gICAgcmdiYSgwLCAwLCAwLCAwLjA1KSAwIC0ycHggNHB4IGluc2V0LCByZ2JhKDQ2LCA1NCwgODAsIDAuMDc1KSAwIDFweCAxcHg7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXM7XG59XG5cbi5jb25uZWN0LWJ1dHRvbiAuYnV0dG9uLWljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIHdpZHRoOiAzcmVtO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1hcmdpbi1yaWdodDogMC41cmVtO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzUpO1xuICBib3gtc2hhZG93OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjE1KSAwIDJweCAwIGluc2V0LFxuICAgIHJnYmEoMCwgMCwgMCwgMC4wNSkgMCAtMnB4IDRweCBpbnNldDtcbiAgZGlzcGxheTogZ3JpZDtcbiAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cztcbiAgLyogYm9yZGVyLXJhZGl1czogMC43NXJlbSAwIDAgMC43NXJlbTsgKi9cbn1cblxuLmNvbm5lY3QtYnV0dG9uIC5idXR0b24taWNvbiBzdmcge1xuICB3aWR0aDogMS4yNXJlbTtcbiAgaGVpZ2h0OiAxLjI1cmVtO1xufVxuXG4uY29ubmVjdC1idXR0b246aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2M0ZTAyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJvcmRlci1jb2xvcjogI2NjNGUwMjtcbn1cblxuLmNvbm5lY3QtYnV0dG9uOmhvdmVyIC5idXR0b24taWNvbiB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42NzUpO1xufVxuXG4uY29ubmVjdC1idXR0b246Zm9jdXMge1xuICBvdXRsaW5lOiBub25lO1xufVxuXG4uY29ubmVjdC1idXR0b246ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjO1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4ucHJvdmlkZXItYnV0dG9uIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBwYWRkaW5nOiAwLjVyZW07XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gIC8qIGJvcmRlci1yYWRpdXM6IDAuNXJlbTsgKi9cbiAgLyogYmFja2dyb3VuZC1jb2xvcjogI2ZlZmVmZTsgKi9cbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBnYXA6IDAuNXJlbTtcbiAgd2lkdGg6IDEwMCU7XG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cztcbn1cblxuLnByb3ZpZGVyLWJ1dHRvbjpmb2N1cyB7XG4gIG91dGxpbmU6IDFweCBzb2xpZCAjZmY2ZjAwO1xuICBvdXRsaW5lLW9mZnNldDogMnB4O1xufVxuXG4ucHJvdmlkZXItYnV0dG9uOmhvdmVyIHtcbiAgYm9yZGVyLWNvbG9yOiAjZmY2ZjAwO1xuICAvKiBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOyAqL1xufVxuXG4ucHJvdmlkZXItYnV0dG9uOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgLyogYmFja2dyb3VuZC1jb2xvcjogI2RkZDsgKi9cbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ucHJvdmlkZXItYnV0dG9uIGltZyB7XG4gIHdpZHRoOiAycmVtO1xuICBoZWlnaHQ6IDJyZW07XG59XG5cbi5wcm92aWRlci1idXR0b24gLnByb3ZpZGVyLWljb24ge1xuICBib3JkZXItcmFkaXVzOiAwLjJyZW07XG59XG5cbi5wcm92aWRlci1idXR0b24gc3BhbiB7XG4gIG1hcmdpbi1sZWZ0OiAwLjVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxcmVtO1xufVxuXG4ucHJvdmlkZXItYnV0dG9uIHNwYW4ucHJvdmlkZXItbmFtZSB7XG4gIGNvbG9yOiAjMzMzO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuXG4ucHJvdmlkZXItYnV0dG9uIHNwYW4ucHJvdmlkZXItbGFiZWwge1xuICBjb2xvcjogIzc3NztcbiAgZm9udC1zaXplOiAwLjdyZW07XG4gIGZvbnQtZmFtaWx5OiBcIkdlaXN0IE1vbm9cIiwgbW9ub3NwYWNlO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4vKiBcImRlZmF1bHRcIiB2YXJpYW50ICovXG4ubGluay1idXR0b24tZGVmYXVsdCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm9yZGVyOiBub25lO1xuICB3aWR0aDogN3JlbTtcbiAgaGVpZ2h0OiAyLjZyZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZmMDA7XG4gIC8qIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07ICovXG4gIGJveC1zaGFkb3c6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMTUpIDAgMnB4IDAgaW5zZXQsXG4gICAgcmdiYSgwLCAwLCAwLCAwLjA1KSAwIC0ycHggNHB4IGluc2V0LCByZ2JhKDQ2LCA1NCwgODAsIDAuMDc1KSAwIDFweCAxcHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmxpbmstYnV0dG9uLWRlZmF1bHQ6ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjhiOGI4O1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4ubGluay1idXR0b24tZGVmYXVsdDo6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cztcbn1cblxuLmxpbmstYnV0dG9uLWRlZmF1bHQ6ZGlzYWJsZWQ6OmFmdGVyIHtcbiAgY29udGVudDogXCJOb3QgY29ubmVjdGVkXCI7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IC0yLjdyZW07XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBoZWlnaHQ6IDJyZW07XG4gIGJvcmRlci1yYWRpdXM6IDAuMzVyZW07XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zNSk7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgZGlzcGxheTogZ3JpZDtcbiAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xuICBwYWRkaW5nOiAwLjI1cmVtO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4yNXM7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC41cmVtKTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi5saW5rLWJ1dHRvbi1kZWZhdWx0OmRpc2FibGVkOmhvdmVyOjphZnRlciB7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbn1cblxuLmxpbmstYnV0dG9uLWRlZmF1bHQ6bm90KDpkaXNhYmxlZCk6aG92ZXI6OmFmdGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4ubGluay1idXR0b24tZGVmYXVsdDpub3QoOmRpc2FibGVkKS50d2l0dGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYTFmMjtcbn1cblxuLmxpbmstYnV0dG9uLWRlZmF1bHQ6bm90KDpkaXNhYmxlZCkuc3BvdGlmeSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTQ7XG59XG5cbi5saW5rLWJ1dHRvbi1kZWZhdWx0Om5vdCg6ZGlzYWJsZWQpLmRpc2NvcmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzI4OWRhO1xufVxuXG4ubGluay1idXR0b24tZGVmYXVsdDpub3QoOmRpc2FibGVkKS50aWt0b2sge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO1xufVxuXG4ubGluay1idXR0b24tZGVmYXVsdDpub3QoOmRpc2FibGVkKS50ZWxlZ3JhbSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDg4Y2M7XG59XG5cbi5saW5rLWJ1dHRvbi1kZWZhdWx0IC5idXR0b24tY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgZ2FwOiAwLjVyZW07XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiAwLjVyZW07XG59XG5cbi5idXR0b24tY29udGFpbmVyIC5zb2NpYWwtaWNvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxLjVyZW07XG4gIGhlaWdodDogMS41cmVtO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgY29sb3I6IHdoaXRlO1xufVxuXG4uYnV0dG9uLWNvbnRhaW5lciAuc29jaWFsLWljb24gc3ZnIHtcbiAgd2lkdGg6IDEuNXJlbTtcbiAgaGVpZ2h0OiAxLjVyZW07XG4gIGZpbGw6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbi5idXR0b24tY29udGFpbmVyIC5zb2NpYWwtaWNvbiBzdmcgcGF0aCB7XG4gIGZpbGw6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbi5idXR0b24tY29udGFpbmVyIC5saW5rLWljb24ge1xuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMS4yNXJlbTtcbiAgaGVpZ2h0OiAxLjI1cmVtO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcbn1cblxuLmJ1dHRvbi1jb250YWluZXIgLmNhbXAtbG9nbyB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxLjVyZW07XG4gIGhlaWdodDogMS41cmVtO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgcGFkZGluZzogMC4xNXJlbTtcbn1cblxuLmxpbmstYnV0dG9uLWRlZmF1bHQ6ZGlzYWJsZWQgLmJ1dHRvbi1jb250YWluZXIgLmNhbXAtbG9nbyBzdmcgcGF0aCB7XG4gIGZpbGw6ICNiOGI4YjggIWltcG9ydGFudDtcbn1cblxuLyogXCJpY29uXCIgdmFyaWFudCAqL1xuLmxpbmstYnV0dG9uLWljb24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG1pbi13aWR0aDogM3JlbTtcbiAgbWluLWhlaWdodDogM3JlbTtcbiAgd2lkdGg6IDNyZW07XG4gIGhlaWdodDogM3JlbTtcbiAgYm9yZGVyOiBub25lO1xuICBwYWRkaW5nOiAwcmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2ZjAwO1xuICAvKiBib3JkZXItcmFkaXVzOiAwLjc1cmVtOyAqL1xuICBib3gtc2hhZG93OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjE1KSAwIDJweCAwIGluc2V0LFxuICAgIHJnYmEoMCwgMCwgMCwgMC4wNSkgMCAtMnB4IDRweCBpbnNldCwgcmdiYSg0NiwgNTQsIDgwLCAwLjA3NSkgMCAxcHggMXB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5saW5rLWJ1dHRvbi1pY29uOmRpc2FibGVkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2I4YjhiODtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLmxpbmstYnV0dG9uLWljb246ZGlzYWJsZWQ6OmFmdGVyIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgY29udGVudDogXCJOb3QgY29ubmVjdGVkXCI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAtMi43cmVtO1xuICBsZWZ0OiAtMXJlbTtcbiAgcmlnaHQ6IC0xcmVtO1xuICBoZWlnaHQ6IGZpdC1jb250ZW50O1xuICBib3JkZXItcmFkaXVzOiAwLjM1cmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzUpO1xuICBjb2xvcjogd2hpdGU7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgcGFkZGluZzogMC4yNXJlbTtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMjVzO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTAuNXJlbSk7XG59XG5cbi5saW5rLWJ1dHRvbi1pY29uOmRpc2FibGVkOmhvdmVyOjphZnRlciB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbn1cblxuLmxpbmstYnV0dG9uLWljb246OmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXM7XG59XG5cbi5saW5rLWJ1dHRvbi1pY29uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyOjphZnRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cblxuLmxpbmstYnV0dG9uLWljb246bm90KDpkaXNhYmxlZCkudHdpdHRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGExZjI7XG59XG5cbi5saW5rLWJ1dHRvbi1pY29uOm5vdCg6ZGlzYWJsZWQpLnNwb3RpZnkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTU0O1xufVxuXG4ubGluay1idXR0b24taWNvbjpub3QoOmRpc2FibGVkKS5kaXNjb3JkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzcyODlkYTtcbn1cblxuLmxpbmstYnV0dG9uLWljb246bm90KDpkaXNhYmxlZCkudGlrdG9rIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDtcbn1cblxuLmxpbmstYnV0dG9uLWljb246bm90KDpkaXNhYmxlZCkudGVsZWdyYW0ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA4OGNjO1xufVxuXG4ubGluay1idXR0b24taWNvbiAuaWNvbi1jb250YWluZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZsZXg6IDE7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4ubGluay1idXR0b24taWNvbiAuaWNvbi1jb250YWluZXIgPiBzdmcge1xuICB3aWR0aDogMS41cmVtO1xuICBoZWlnaHQ6IDEuNXJlbTtcbiAgZmlsbDogd2hpdGUgIWltcG9ydGFudDtcbn1cblxuLmxpbmstYnV0dG9uLWljb24gLmljb24tY29udGFpbmVyID4gc3ZnIHBhdGgge1xuICBmaWxsOiB3aGl0ZSAhaW1wb3J0YW50O1xufVxuXG4ubGluay1idXR0b24taWNvbiAuY2FtcC1sb2dvIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMS41cmVtO1xuICBoZWlnaHQ6IDEuNXJlbTtcbiAgcmlnaHQ6IC0wLjVyZW07XG4gIGJvdHRvbTogLTAuNXJlbTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG59XG5cbi5saW5rLWJ1dHRvbi1pY29uIC5jYW1wLWxvZ28gc3ZnIHtcbiAgd2lkdGg6IDEuMXJlbTtcbiAgaGVpZ2h0OiAxLjFyZW07XG59XG5cbi5saW5rLWJ1dHRvbi1pY29uOmRpc2FibGVkIC5jYW1wLWxvZ28gc3ZnIHBhdGgge1xuICBmaWxsOiAjYjhiOGI4ICFpbXBvcnRhbnQ7XG59XG5cbi5ub3QtbGlua2VkIHN2ZyBwYXRoIHtcbiAgZmlsbDogI2I4YjhiOCAhaW1wb3J0YW50O1xufVxuXG4uZmlsZS11cGxvYWQtY29udGFpbmVyIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm9yZGVyOiAycHggZGFzaGVkICNjY2M7XG4gIC8qIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07ICovXG4gIHBhZGRpbmc6IDFyZW07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY29sb3I6ICM3Nzc7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzLCBib3JkZXItY29sb3IgMC4ycztcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogMDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtaW4taGVpZ2h0OiAxMnJlbTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgLyogaGVpZ2h0OiAzMDBweDsgKi9cbn1cblxuLmZpbGUtdXBsb2FkLWNvbnRhaW5lcjpob3ZlciB7XG4gIGJvcmRlci1jb2xvcjogI2UyZTJlMjtcbn1cblxuLmZpbGUtdXBsb2FkLWNvbnRhaW5lci5kcmFnZ2luZyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7XG4gIGJvcmRlci1jb2xvcjogI2ZmNmYwMDtcbn1cblxuLmZpbGUtdXBsb2FkLWNvbnRhaW5lci5kcmFnZ2luZyAuZmlsZS1wcmV2aWV3IHtcbiAgb3BhY2l0eTogMC4yO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnM7XG59XG5cbi5maWxlLXVwbG9hZC1jb250YWluZXIuZmlsZS1zZWxlY3RlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7XG4gIGJvcmRlcjogbm9uZTtcbiAgcGFkZGluZzogMDtcbiAgcGFkZGluZy1yaWdodDogMC41cmVtO1xuICAvKiBoZWlnaHQ6IGF1dG87ICovXG4gIC8qIG1pbi1oZWlnaHQ6IGF1dG87ICovXG59XG5cbi5maWxlLWlucHV0IHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLnNlbGVjdGVkLWZpbGUtY29udGFpbmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZ2FwOiAwLjI1cmVtO1xufVxuXG4ucmVtb3ZlLWZpbGUtYnV0dG9uIHtcbiAgY29sb3I6IHdoaXRlO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZmY2ZjAwO1xuICAvKiBib3JkZXItcmFkaXVzOiAwLjVyZW07ICovXG4gIHBhZGRpbmc6IDAuNXJlbTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnM7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcbiAgbWFyZ2luLXRvcDogMXJlbTtcbiAgY29sb3I6ICNmZjZmMDA7XG59XG5cbi5yZW1vdmUtZmlsZS1idXR0b246aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2M0ZTAyO1xuICBib3JkZXItY29sb3I6ICNjYzRlMDI7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ucmVtb3ZlLWZpbGUtYnV0dG9uOmRpc2FibGVkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2I4YjhiODtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgYm9yZGVyLWNvbG9yOiAjYjhiOGI4O1xuICBjb2xvcjogd2hpdGU7XG59XG5cbi51cGxvYWQtZmlsZS1idXR0b24ge1xuICBjb2xvcjogd2hpdGU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZmMDA7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICBwYWRkaW5nOiAwLjVyZW07XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzO1xuICB3aWR0aDogMTAwJTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLnVwbG9hZC1maWxlLWJ1dHRvbjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjYzRlMDI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi51cGxvYWQtZmlsZS1idXR0b246ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjhiOGI4O1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4uZmlsZS1wcmV2aWV3IHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtYXgtaGVpZ2h0OiA4cmVtO1xufVxuYXVkaW8uZmlsZS1wcmV2aWV3IHtcbiAgbWluLWhlaWdodDogNHJlbTtcbn1cblxuLmZpbGUtcHJldmlldy10ZXh0IHtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgY29sb3I6ICMzMzM7XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbn1cblxuLmZpbGUtbmFtZSB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGNvbG9yOiAjMzMzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgbWluLWhlaWdodDogZml0LWNvbnRlbnQ7XG4gIG1heC13aWR0aDogMTAwJTtcbn1cblxuLnVwbG9hZC1idXR0b25zIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiAwLjI1cmVtO1xuICB3aWR0aDogMTAwJTtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4udXBsb2FkLWJ1dHRvbnMgLnVwbG9hZC1maWxlLWJ1dHRvbiB7XG4gIGZsZXgtZ3JvdzogMTtcbn1cblxuLnVwbG9hZC1idXR0b25zIC5yZW1vdmUtZmlsZS1idXR0b24ge1xuICBmbGV4LWdyb3c6IDA7XG59XG5cbi5hY2NlcHRlZC10eXBlcyB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGNvbG9yOiAjNzc3O1xuICBtYXJnaW4tdG9wOiAwLjVyZW07XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLmxvYWRpbmctYmFyLWNvbnRhaW5lciB7XG4gIHdpZHRoOiAxMDAlO1xuICBtaW4taGVpZ2h0OiA4cHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIG1hcmdpbi10b3A6IDhweDtcbn1cblxuLmxvYWRpbmctYmFyIHtcbiAgbWluLWhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMDtcbiAgdHJhbnNpdGlvbjogd2lkdGggMC4zcyBlYXNlO1xufVxuXG4uZGF0ZS1waWNrZXIge1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiA2cHg7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xufVxuXG4uZGF0ZS1waWNrZXIgaW5wdXQge1xuICBwYWRkaW5nOiA2cHggMTBweDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG59XG5cbi5wZXJjZW50YWdlLXNsaWRlciB7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBnYXA6IDhweDtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuLnBlcmNlbnRhZ2Utc2xpZGVyIGlucHV0W3R5cGU9XCJyYW5nZVwiXSB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ucGVyY2VudGFnZS1zbGlkZXIgbGFiZWwge1xuICBtaW4td2lkdGg6IDUwcHg7XG59XG5cbi5mYW5jeS1pbnB1dC1jb250YWluZXIge1xuICBtaW4taGVpZ2h0OiAyLjVyZW07XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGdhcDogMDtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5mYW5jeS1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEuZmFuY3ktaW5wdXQge1xuICByZXNpemU6IG5vbmU7XG4gIG1heC1oZWlnaHQ6IDEycmVtO1xuICB3aWR0aDogMTAwJTtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gIHBhZGRpbmc6IDEwcHg7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgY29sb3I6ICMyMjI7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gIG92ZXJmbG93LXk6IGF1dG87XG59XG5cbi5mYW5jeS1pbnB1dCB7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xuICBwYWRkaW5nOiA2cHggMTBweDtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBmbGV4OiAxO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbn1cblxuLmZhbmN5LWlucHV0LWxhYmVsIHtcbiAgZm9udC1zaXplOiAwLjhyZW07XG4gIGNvbG9yOiAjNzc3O1xuICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuICBwYWRkaW5nOiAwIDAuMjVyZW07XG4gIC8qIHotaW5kZXg6IDI7ICovXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBmb250LWZhbWlseTogXCJHZWlzdCBNb25vXCIsIG1vbm9zcGFjZTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbWFyZ2luLXRvcDogMC4yNXJlbTtcbn1cblxuLmlucHV0LWRpdmlkZXIge1xuICBtaW4td2lkdGg6IDFweDtcbiAgaGVpZ2h0OiAyNHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjO1xuICBtYXJnaW46IDA7XG59XG5cbi5pbnB1dC1pY29uLWNvbnRhaW5lciB7XG4gIHBhZGRpbmc6IDZweCAxMHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTtcbiAgbWluLXdpZHRoOiA0MHB4O1xufVxuXG4uaW5wdXQtaWNvbi1jb250YWluZXIgc3ZnIHtcbiAgd2lkdGg6IDE2cHg7XG4gIGhlaWdodDogMTZweDtcbn1cblxuLmR1cmF0aW9uLWlucHV0LWNvbnRhaW5lciB7XG4gIG1pbi1oZWlnaHQ6IDIuNXJlbTtcbiAgd2lkdGg6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICBnYXA6IDA7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xuICAvKiBib3JkZXItcmFkaXVzOiA0cHg7ICovXG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbi5kdXJhdGlvbi1pbnB1dCB7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xuICBwYWRkaW5nOiA2cHggMTBweDtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBmbGV4OiAxO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgbWluLXdpZHRoOiAwO1xufVxuXG4uZHVyYXRpb24tdW5pdC1zZWxlY3Qge1xuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjtcbiAgcGFkZGluZzogNnB4IDEwcHg7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTtcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGZsZXg6IDAgMCBhdXRvO1xuICB3aWR0aDogYXV0bztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLnByaWNlLWlucHV0LWNvbnRhaW5lcjpmb2N1cy13aXRoaW4ge1xuICBib3JkZXItY29sb3I6ICNmZjZmMDA7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDFweCAjZmY2ZjAwO1xufVxuXG4uZHVyYXRpb24taW5wdXQtY29udGFpbmVyOmZvY3VzLXdpdGhpbiB7XG4gIGJvcmRlci1jb2xvcjogI2ZmNmYwMDtcbiAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZjZmMDA7XG59XG5cbi5wcmljZS1pbnB1dC1jb250YWluZXI6aG92ZXIsXG4uZHVyYXRpb24taW5wdXQtY29udGFpbmVyOmhvdmVyIHtcbiAgYm9yZGVyLWNvbG9yOiAjOTk5O1xufVxuXG4uZHVyYXRpb24tdW5pdC1zZWxlY3Q6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xufVxuXG4uZHVyYXRpb24tdW5pdC1zZWxlY3Q6Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xufVxuXG4ucHJldmlldy1vcHRpb24tY29udGFpbmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcbn1cblxuLmNoZWNrYm94LWxhYmVsIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjVyZW07XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgY29sb3I6ICMzMzM7XG4gIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG4uY2hlY2tib3gtaW5wdXQge1xuICB3aWR0aDogMS4xMjVyZW07XG4gIGhlaWdodDogMS4xMjVyZW07XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYWNjZW50LWNvbG9yOiAjZmY2ZjAwO1xufVxuXG4uY2hlY2tib3gtbGFiZWwgc3BhbiB7XG4gIGxpbmUtaGVpZ2h0OiAxLjI7XG59XG5cbi5wcmV2aWV3LWltYWdlLXNlY3Rpb24ge1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAwLjVyZW07XG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcbn1cblxuLnByZXZpZXctaW1hZ2UtY29udHJvbHMge1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAwLjVyZW07XG59XG5cbi5zZWxlY3QtcHJldmlldy1idXR0b24ge1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMC43NXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcbiAgY29sb3I6ICMzMzM7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGZvbnQtZmFtaWx5OiBcIkdlaXN0IE1vbm9cIiwgbW9ub3NwYWNlO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCAwLjJzO1xufVxuXG4uc2VsZWN0LXByZXZpZXctYnV0dG9uOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjtcbiAgYm9yZGVyLWNvbG9yOiAjOTk5O1xufVxuXG4uc2VsZWN0LXByZXZpZXctYnV0dG9uOmRpc2FibGVkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjtcbiAgY29sb3I6ICM5OTk7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gIG9wYWNpdHk6IDAuNjtcbn1cblxuLnByZXZpZXctaW1hZ2UtcHJldmlldyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMC43NXJlbTtcbiAgcGFkZGluZzogMC43NXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcbn1cblxuLnByZXZpZXctdGh1bWJuYWlsIHtcbiAgd2lkdGg6IDNyZW07XG4gIGhlaWdodDogM3JlbTtcbiAgb2JqZWN0LWZpdDogY292ZXI7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4ucHJldmlldy1maWxlbmFtZSB7XG4gIGZsZXg6IDE7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGNvbG9yOiAjMzMzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLnJlbW92ZS1wcmV2aWV3LWJ1dHRvbiB7XG4gIHBhZGRpbmc6IDAuNXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNmZjZmMDA7XG4gIGNvbG9yOiAjZmY2ZjAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuICBmbGV4LXNocmluazogMDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5yZW1vdmUtcHJldmlldy1idXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2M0ZTAyO1xuICBib3JkZXItY29sb3I6ICNjYzRlMDI7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cblxuLnJlbW92ZS1wcmV2aWV3LWJ1dHRvbjpkaXNhYmxlZCB7XG4gIGJvcmRlci1jb2xvcjogI2NjYztcbiAgY29sb3I6ICNjY2M7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gIG9wYWNpdHk6IDAuNjtcbn1cblxuLnBlcmNlbnRhZ2UtaWNvbiB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiAjNTU1O1xufVxuIl19 */";
9994
- var buttonStyles = {"button":"buttons-module_button__4Ogad","connect-button":"buttons-module_connect-button__CJhUa","button-icon":"buttons-module_button-icon__JM4-2","provider-button":"buttons-module_provider-button__6JY7s","provider-icon":"buttons-module_provider-icon__MOhr8","provider-name":"buttons-module_provider-name__tHWO2","provider-label":"buttons-module_provider-label__CEGRr","link-button-default":"buttons-module_link-button-default__EcKUT","twitter":"buttons-module_twitter__9sRaz","spotify":"buttons-module_spotify__-fiKQ","discord":"buttons-module_discord__I-YjZ","tiktok":"buttons-module_tiktok__a80-0","telegram":"buttons-module_telegram__ExOTS","button-container":"buttons-module_button-container__-oPqd","social-icon":"buttons-module_social-icon__DPdPe","link-icon":"buttons-module_link-icon__8V8FP","camp-logo":"buttons-module_camp-logo__slNl0","link-button-icon":"buttons-module_link-button-icon__llX8m","icon-container":"buttons-module_icon-container__Q5bI1","not-linked":"buttons-module_not-linked__ua4va","file-upload-container":"buttons-module_file-upload-container__le7Cg","dragging":"buttons-module_dragging__cfggZ","file-preview":"buttons-module_file-preview__yuM5i","file-selected":"buttons-module_file-selected__YY6ms","file-input":"buttons-module_file-input__gbD5T","selected-file-container":"buttons-module_selected-file-container__E1AXM","remove-file-button":"buttons-module_remove-file-button__Q1FMa","upload-file-button":"buttons-module_upload-file-button__vTwWd","file-preview-text":"buttons-module_file-preview-text__80Ju0","file-name":"buttons-module_file-name__3iskR","upload-buttons":"buttons-module_upload-buttons__3SAw6","accepted-types":"buttons-module_accepted-types__Ys-D2","loading-bar-container":"buttons-module_loading-bar-container__nrgPX","loading-bar":"buttons-module_loading-bar__IUAg1","date-picker":"buttons-module_date-picker__V6gRM","percentage-slider":"buttons-module_percentage-slider__M84tC","fancy-input-container":"buttons-module_fancy-input-container__s-zVw","fancy-input":"buttons-module_fancy-input__RpSOF","fancy-input-label":"buttons-module_fancy-input-label__d-sG7","input-divider":"buttons-module_input-divider__RVasJ","input-icon-container":"buttons-module_input-icon-container__MUYKL","duration-input-container":"buttons-module_duration-input-container__Rh9Na","duration-input":"buttons-module_duration-input__-gt3p","duration-unit-select":"buttons-module_duration-unit-select__VKFf6","price-input-container":"buttons-module_price-input-container__teIRS","preview-option-container":"buttons-module_preview-option-container__0bzt-","checkbox-label":"buttons-module_checkbox-label__ODwgG","checkbox-input":"buttons-module_checkbox-input__FvUIp","preview-image-section":"buttons-module_preview-image-section__BjtiC","preview-image-controls":"buttons-module_preview-image-controls__l6gv5","select-preview-button":"buttons-module_select-preview-button__0HQfm","preview-image-preview":"buttons-module_preview-image-preview__c-6n5","preview-thumbnail":"buttons-module_preview-thumbnail__fJWXt","preview-filename":"buttons-module_preview-filename__FW-Gz","remove-preview-button":"buttons-module_remove-preview-button__Skqgb","percentage-icon":"buttons-module_percentage-icon__MxmJh"};
10542
+ var css_248z = ".buttons-module_button__4Ogad{background-color:#ff6f00;border:none;border-radius:0;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05),0 1px 1px rgba(46,54,80,.075);color:#fff;font-family:Geist Mono,monospace;font-size:1rem;font-size:.875rem;font-weight:600;height:2.5rem;margin-bottom:.75rem;margin-top:1rem;padding:1rem;padding-block:0;position:relative;text-transform:uppercase;width:100%}.buttons-module_button__4Ogad:hover{background-color:#cc4e02;cursor:pointer}.buttons-module_button__4Ogad:disabled{background-color:#ccc;cursor:not-allowed}.buttons-module_connect-button__CJhUa{background-color:#ff6f00;border:none;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05),0 1px 1px rgba(46,54,80,.075);color:#fff;font-family:Geist Mono,monospace;font-size:1rem;font-weight:600;height:2.75rem;line-height:1.333rem;padding-inline:2.5rem;padding-left:5rem;position:relative;text-transform:uppercase;transition:background-color .15s;width:13rem}.buttons-module_connect-button__CJhUa .buttons-module_button-icon__JM4-2{background:hsla(0,0%,100%,.75);box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05);display:grid;height:100%;left:0;margin-right:.5rem;place-items:center;position:absolute;top:50%;transform:translateY(-50%);transition:background-color .15s;width:3rem}.buttons-module_connect-button__CJhUa .buttons-module_button-icon__JM4-2 svg{height:1.25rem;width:1.25rem}.buttons-module_connect-button__CJhUa:hover{background-color:#cc4e02;border-color:#cc4e02;cursor:pointer}.buttons-module_connect-button__CJhUa:hover .buttons-module_button-icon__JM4-2{background:hsla(0,0%,100%,.675)}.buttons-module_connect-button__CJhUa:focus{outline:none}.buttons-module_connect-button__CJhUa:disabled{background-color:#ccc;cursor:not-allowed}.buttons-module_provider-button__6JY7s{align-items:center;border:1px solid #ddd;display:flex;gap:.5rem;justify-content:flex-start;padding:.5rem;position:relative;transition:border-color .15s;width:100%}.buttons-module_provider-button__6JY7s:focus{outline:1px solid #ff6f00;outline-offset:2px}.buttons-module_provider-button__6JY7s:hover{border-color:#ff6f00}.buttons-module_provider-button__6JY7s:hover:not(:disabled){cursor:pointer}.buttons-module_provider-button__6JY7s img{height:2rem;width:2rem}.buttons-module_provider-button__6JY7s .buttons-module_provider-icon__MOhr8{border-radius:.2rem}.buttons-module_provider-button__6JY7s span{line-height:1rem;margin-left:.5rem}.buttons-module_provider-button__6JY7s span.buttons-module_provider-name__tHWO2{color:#333;font-size:.875rem}.buttons-module_provider-button__6JY7s span.buttons-module_provider-label__CEGRr{color:#777;font-family:Geist Mono,monospace;font-size:.7rem;text-transform:uppercase}.buttons-module_link-button-default__EcKUT{background-color:#ff6f00;border:none;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05),0 1px 1px rgba(46,54,80,.075);box-sizing:border-box;cursor:pointer;height:2.6rem;position:relative;width:7rem}.buttons-module_link-button-default__EcKUT:disabled{background-color:#b8b8b8;cursor:not-allowed}.buttons-module_link-button-default__EcKUT:after{background-color:transparent;border-radius:.75rem;bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;transition:background-color .15s}.buttons-module_link-button-default__EcKUT:disabled:after{background-color:rgba(0,0,0,.35);border-radius:.35rem;color:#fff;content:\"Not connected\";display:grid;font-size:.75rem;height:2rem;left:0;opacity:0;padding:.25rem;place-items:center;position:absolute;right:0;top:-2.7rem;transform:translateY(-.5rem);transition:all .25s;-webkit-user-select:none;-moz-user-select:none;user-select:none;visibility:hidden}.buttons-module_link-button-default__EcKUT:disabled:hover:after{opacity:1;transform:translateY(0);visibility:visible}.buttons-module_link-button-default__EcKUT:not(:disabled):hover:after{background-color:rgba(0,0,0,.1)}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_twitter__9sRaz{background-color:#1da1f2}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_spotify__-fiKQ{background-color:#1db954}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_discord__I-YjZ{background-color:#7289da}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_tiktok__a80-0{background-color:#000}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_telegram__ExOTS{background-color:#08c}.buttons-module_link-button-default__EcKUT .buttons-module_button-container__-oPqd{align-items:center;display:flex;flex-direction:row;gap:.5rem;justify-content:center;padding:.5rem}.buttons-module_button-container__-oPqd .buttons-module_social-icon__DPdPe{align-items:center;color:#fff;display:flex;height:1.5rem;justify-content:center;width:1.5rem}.buttons-module_button-container__-oPqd .buttons-module_social-icon__DPdPe svg{fill:#fff!important;height:1.5rem;width:1.5rem}.buttons-module_button-container__-oPqd .buttons-module_social-icon__DPdPe svg path{fill:#fff!important}.buttons-module_button-container__-oPqd .buttons-module_link-icon__8V8FP{align-items:center;color:hsla(0,0%,100%,.8);display:flex;height:1.25rem;justify-content:center;width:1.25rem}.buttons-module_button-container__-oPqd .buttons-module_camp-logo__slNl0{align-items:center;background-color:#fff;border-radius:50%;box-sizing:border-box;display:flex;height:1.5rem;justify-content:center;padding:.15rem;width:1.5rem}.buttons-module_link-button-default__EcKUT:disabled .buttons-module_button-container__-oPqd .buttons-module_camp-logo__slNl0 svg path{fill:#b8b8b8!important}.buttons-module_link-button-icon__llX8m{background-color:#ff6f00;border:none;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05),0 1px 1px rgba(46,54,80,.075);box-sizing:border-box;cursor:pointer;height:3rem;min-height:3rem;min-width:3rem;padding:0;position:relative;width:3rem}.buttons-module_link-button-icon__llX8m:disabled{background-color:#b8b8b8;cursor:not-allowed}.buttons-module_link-button-icon__llX8m:disabled:after{background-color:rgba(0,0,0,.35);border-radius:.35rem;box-sizing:border-box;color:#fff;content:\"Not connected\";display:grid;font-size:.75rem;height:-moz-fit-content;height:fit-content;left:-1rem;opacity:0;padding:.25rem;place-items:center;position:absolute;right:-1rem;top:-2.7rem;transform:translateY(-.5rem);transition:all .25s}.buttons-module_link-button-icon__llX8m:disabled:hover:after{opacity:1;transform:translateY(0)}.buttons-module_link-button-icon__llX8m:after{background-color:transparent;border-radius:.75rem;bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;transition:background-color .15s}.buttons-module_link-button-icon__llX8m:not(:disabled):hover:after{background-color:rgba(0,0,0,.1)}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_twitter__9sRaz{background-color:#1da1f2}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_spotify__-fiKQ{background-color:#1db954}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_discord__I-YjZ{background-color:#7289da}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_tiktok__a80-0{background-color:#000}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_telegram__ExOTS{background-color:#08c}.buttons-module_link-button-icon__llX8m .buttons-module_icon-container__Q5bI1{align-items:center;display:flex;flex:1;height:100%;justify-content:center;position:relative;width:100%}.buttons-module_link-button-icon__llX8m .buttons-module_icon-container__Q5bI1>svg{fill:#fff!important;height:1.5rem;width:1.5rem}.buttons-module_link-button-icon__llX8m .buttons-module_icon-container__Q5bI1>svg path{fill:#fff!important}.buttons-module_link-button-icon__llX8m .buttons-module_camp-logo__slNl0{align-items:center;background-color:#fff;border-radius:50%;bottom:-.5rem;box-sizing:border-box;display:flex;height:1.5rem;justify-content:center;position:absolute;right:-.5rem;width:1.5rem}.buttons-module_link-button-icon__llX8m .buttons-module_camp-logo__slNl0 svg{height:1.1rem;width:1.1rem}.buttons-module_link-button-icon__llX8m:disabled .buttons-module_camp-logo__slNl0 svg path,.buttons-module_not-linked__ua4va svg path{fill:#b8b8b8!important}.buttons-module_file-upload-container__le7Cg{align-items:center;border:2px dashed #ccc;box-sizing:border-box;color:#777;cursor:pointer;display:flex;flex-direction:column;justify-content:center;max-width:100%;min-height:12rem;min-width:0;overflow-y:auto;padding:1rem;position:relative;text-align:center;transition:background-color .2s,border-color .2s;width:100%}.buttons-module_file-upload-container__le7Cg:hover{border-color:#e2e2e2}.buttons-module_file-upload-container__le7Cg.buttons-module_dragging__cfggZ{background-color:#f9f9f9;border-color:#ff6f00}.buttons-module_file-upload-container__le7Cg.buttons-module_dragging__cfggZ .buttons-module_file-preview__yuM5i{opacity:.2;transition:opacity .2s}.buttons-module_file-upload-container__le7Cg.buttons-module_file-selected__YY6ms{background-color:#f9f9f9;border:none;padding:0 .5rem 0 0}.buttons-module_file-input__gbD5T{display:none}.buttons-module_selected-file-container__E1AXM{align-items:center;display:flex;flex-direction:column;gap:.25rem;height:100%;justify-content:space-between;max-width:100%;position:relative;width:100%}.buttons-module_remove-file-button__Q1FMa{border:1px solid #ff6f00;color:#fff;color:#ff6f00;cursor:pointer;font-size:.875rem;margin-bottom:.75rem;margin-top:1rem;padding:.5rem;text-align:center;transition:background-color .2s}.buttons-module_remove-file-button__Q1FMa:hover{background-color:#cc4e02;border-color:#cc4e02;color:#fff;cursor:pointer}.buttons-module_remove-file-button__Q1FMa:disabled{background-color:#b8b8b8;border-color:#b8b8b8;color:#fff;cursor:not-allowed}.buttons-module_upload-file-button__vTwWd{background-color:#ff6f00;border:none;border-radius:.5rem;color:#fff;cursor:pointer;font-size:.875rem;padding:.5rem;text-align:center;transition:background-color .2s;width:100%}.buttons-module_upload-file-button__vTwWd:hover{background-color:#cc4e02;cursor:pointer}.buttons-module_upload-file-button__vTwWd:disabled{background-color:#b8b8b8;cursor:not-allowed}.buttons-module_file-preview__yuM5i{max-height:8rem;max-width:100%}audio.buttons-module_file-preview__yuM5i{min-height:4rem}.buttons-module_file-preview-text__80Ju0{color:#333;font-size:.875rem;margin-bottom:.5rem}.buttons-module_file-name__3iskR{color:#333;font-size:.875rem;max-width:100%;min-height:-moz-fit-content;min-height:fit-content;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.buttons-module_upload-buttons__3SAw6{align-items:center;display:flex;gap:.25rem;justify-content:space-between;width:100%}.buttons-module_upload-buttons__3SAw6 .buttons-module_upload-file-button__vTwWd{flex-grow:1}.buttons-module_upload-buttons__3SAw6 .buttons-module_remove-file-button__Q1FMa{flex-grow:0}.buttons-module_accepted-types__Ys-D2{color:#777;font-size:.875rem;font-style:italic;margin-top:.5rem}.buttons-module_loading-bar-container__nrgPX{background-color:#e0e0e0;margin-top:8px;min-height:8px;overflow:hidden;width:100%}.buttons-module_loading-bar__IUAg1{background-color:#ff6f00;min-height:100%;transition:width .3s ease}.buttons-module_date-picker__V6gRM{display:flex;flex-direction:column;font-family:sans-serif;gap:6px;width:100%}.buttons-module_date-picker__V6gRM input{border:1px solid #ccc;border-radius:4px;font-size:14px;padding:6px 10px}.buttons-module_percentage-slider__M84tC{display:flex;flex-direction:row;font-family:sans-serif;gap:8px;justify-content:space-between;width:100%}.buttons-module_percentage-slider__M84tC input[type=range]{width:100%}.buttons-module_percentage-slider__M84tC label{min-width:50px}.buttons-module_fancy-input-container__s-zVw{align-items:center;border:1px solid #ccc;display:flex;font-family:sans-serif;gap:0;min-height:2.5rem;overflow:hidden;position:relative;width:100%}.buttons-module_fancy-input-container__s-zVw textarea.buttons-module_fancy-input__RpSOF{background:transparent;border:none;box-sizing:border-box;color:#222;font-family:inherit;font-size:1rem;line-height:1.4;max-height:12rem;outline:none;overflow-y:auto;padding:10px;resize:none;width:100%}.buttons-module_fancy-input__RpSOF{background:transparent;border:none;flex:1;font-family:sans-serif;outline:none;padding:6px 10px}.buttons-module_fancy-input-label__d-sG7{align-self:flex-start;color:#777;font-family:Geist Mono,monospace;font-size:.8rem;font-weight:500;margin-top:.25rem;padding:0 .25rem;pointer-events:none;text-transform:uppercase}.buttons-module_input-divider__RVasJ{background-color:#ccc;height:24px;margin:0;min-width:1px}.buttons-module_input-icon-container__MUYKL{align-items:center;background-color:#f8f9fa;display:flex;justify-content:center;min-width:40px;padding:6px 10px}.buttons-module_input-icon-container__MUYKL svg{height:16px;width:16px}.buttons-module_duration-input-container__Rh9Na{align-items:stretch;border:1px solid #ccc;box-sizing:border-box;display:flex;font-family:sans-serif;gap:0;min-height:2.5rem;overflow:hidden;width:100%}.buttons-module_duration-input__-gt3p{background:transparent;flex:1;min-width:0}.buttons-module_duration-input__-gt3p,.buttons-module_duration-unit-select__VKFf6{border:none;box-sizing:border-box;font-family:sans-serif;outline:none;padding:6px 10px}.buttons-module_duration-unit-select__VKFf6{background-color:#f8f9fa;border-left:1px solid #ccc;cursor:pointer;flex:0 0 auto;width:auto}.buttons-module_price-input-container__teIRS:focus-within{border-color:#ff6f00;box-shadow:0 0 0 1px #ff6f00}.buttons-module_duration-input-container__Rh9Na:focus-within{border-color:#ff6f00;box-shadow:0 0 0 1px #ff6f00}.buttons-module_duration-input-container__Rh9Na:hover,.buttons-module_price-input-container__teIRS:hover{border-color:#999}.buttons-module_duration-unit-select__VKFf6:focus,.buttons-module_duration-unit-select__VKFf6:hover{background-color:#e9ecef}.buttons-module_license-type-select__XHtlm{background-color:#f8f9fa;border:none;box-sizing:border-box;cursor:pointer;font-family:sans-serif;min-height:2.5rem;outline:none;padding:6px 10px;width:100%}.buttons-module_license-type-select__XHtlm:focus,.buttons-module_license-type-select__XHtlm:hover{background-color:#e9ecef}.buttons-module_preview-option-container__0bzt-{align-items:center;display:flex;margin-top:.5rem;width:100%}.buttons-module_checkbox-label__ODwgG{align-items:center;color:#333;cursor:pointer;display:flex;font-size:.875rem;gap:.5rem;-webkit-user-select:none;-moz-user-select:none;user-select:none}.buttons-module_checkbox-input__FvUIp{accent-color:#ff6f00;cursor:pointer;height:1.125rem;width:1.125rem}.buttons-module_checkbox-label__ODwgG span{line-height:1.2}.buttons-module_preview-image-section__BjtiC{margin-top:.5rem}.buttons-module_preview-image-controls__l6gv5,.buttons-module_preview-image-section__BjtiC{display:flex;flex-direction:column;gap:.5rem;width:100%}.buttons-module_select-preview-button__0HQfm{background-color:#f8f9fa;border:1px solid #ccc;color:#333;cursor:pointer;font-family:Geist Mono,monospace;font-size:.875rem;padding:.75rem;text-transform:uppercase;transition:all .2s;width:100%}.buttons-module_select-preview-button__0HQfm:hover:not(:disabled){background-color:#e9ecef;border-color:#999}.buttons-module_select-preview-button__0HQfm:disabled{background-color:#e9ecef;color:#999;cursor:not-allowed;opacity:.6}.buttons-module_preview-image-preview__c-6n5{align-items:center;background-color:#f8f9fa;border:1px solid #ccc;display:flex;gap:.75rem;padding:.75rem}.buttons-module_preview-thumbnail__fJWXt{flex-shrink:0;height:3rem;-o-object-fit:cover;object-fit:cover;width:3rem}.buttons-module_preview-filename__FW-Gz{color:#333;flex:1;font-size:.875rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.buttons-module_remove-preview-button__Skqgb{align-items:center;background-color:transparent;border:1px solid #ff6f00;color:#ff6f00;cursor:pointer;display:flex;flex-shrink:0;justify-content:center;padding:.5rem;transition:all .2s}.buttons-module_remove-preview-button__Skqgb:hover:not(:disabled){background-color:#cc4e02;border-color:#cc4e02;color:#fff}.buttons-module_remove-preview-button__Skqgb:disabled{border-color:#ccc;color:#ccc;cursor:not-allowed;opacity:.6}.buttons-module_percentage-icon__MxmJh{color:#555;font-size:.875rem;font-weight:600}\n/*# sourceMappingURL=data:application/json;base64,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Q1osbUJBQWlCLENBQWpCLGdCQUFpQixDQUZqQixVQUlGLENBRUEsd0NBR0UsVUFBVyxDQUZYLE1BQU8sQ0FDUCxpQkFBbUIsQ0FFbkIsZUFBZ0IsQ0FDaEIsc0JBQXVCLENBQ3ZCLGtCQUNGLENBRUEsNkNBU0Usa0JBQW1CLENBUG5CLDRCQUE2QixDQUM3Qix3QkFBeUIsQ0FDekIsYUFBYyxDQUNkLGNBQWUsQ0FHZixZQUFhLENBRGIsYUFBYyxDQUdkLHNCQUF1QixDQVR2QixhQUFlLENBS2Ysa0JBS0YsQ0FFQSxrRUFDRSx3QkFBeUIsQ0FDekIsb0JBQXFCLENBQ3JCLFVBQ0YsQ0FFQSxzREFDRSxpQkFBa0IsQ0FDbEIsVUFBVyxDQUNYLGtCQUFtQixDQUNuQixVQUNGLENBRUEsdUNBR0UsVUFBVyxDQUZYLGlCQUFtQixDQUNuQixlQUVGIiwiZmlsZSI6ImJ1dHRvbnMubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5idXR0b24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZmMDA7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICBwYWRkaW5nOiAxcmVtO1xuICBwYWRkaW5nLWJsb2NrOiAwO1xuICBmb250LXNpemU6IDFyZW07XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xuICBtYXJnaW4tdG9wOiAxcmVtO1xuICBoZWlnaHQ6IDIuNXJlbTtcbiAgYm94LXNoYWRvdzogaHNsYSgwLCAwJSwgMTAwJSwgMC4xNSkgMCAycHggMCBpbnNldCxcbiAgICByZ2JhKDAsIDAsIDAsIDAuMDUpIDAgLTJweCA0cHggaW5zZXQsIHJnYmEoNDYsIDU0LCA4MCwgMC4wNzUpIDAgMXB4IDFweDtcblxuICBmb250LWZhbWlseTogXCJHZWlzdCBNb25vXCIsIG1vbm9zcGFjZTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbn1cblxuLmJ1dHRvbjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjYzRlMDI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmJ1dHRvbjpkaXNhYmxlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjY2M7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi5jb25uZWN0LWJ1dHRvbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMDtcbiAgY29sb3I6IHdoaXRlO1xuICBib3JkZXI6IG5vbmU7XG4gIC8qIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07ICovXG4gIHBhZGRpbmctaW5saW5lOiAyLjVyZW07XG4gIHBhZGRpbmctbGVmdDogNXJlbTtcbiAgaGVpZ2h0OiAyLjc1cmVtO1xuICBsaW5lLWhlaWdodDogMS4zMzNyZW07XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgd2lkdGg6IDEzcmVtO1xuICBmb250LWZhbWlseTogXCJHZWlzdCBNb25vXCIsIG1vbm9zcGFjZTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgYm94LXNoYWRvdzogaHNsYSgwLCAwJSwgMTAwJSwgMC4xNSkgMCAycHggMCBpbnNldCxcbiAgICByZ2JhKDAsIDAsIDAsIDAuMDUpIDAgLTJweCA0cHggaW5zZXQsIHJnYmEoNDYsIDU0LCA4MCwgMC4wNzUpIDAgMXB4IDFweDtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cztcbn1cblxuLmNvbm5lY3QtYnV0dG9uIC5idXR0b24taWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgd2lkdGg6IDNyZW07XG4gIGhlaWdodDogMTAwJTtcbiAgbWFyZ2luLXJpZ2h0OiAwLjVyZW07XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NSk7XG4gIGJveC1zaGFkb3c6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMTUpIDAgMnB4IDAgaW5zZXQsXG4gICAgcmdiYSgwLCAwLCAwLCAwLjA1KSAwIC0ycHggNHB4IGluc2V0O1xuICBkaXNwbGF5OiBncmlkO1xuICBwbGFjZS1pdGVtczogY2VudGVyO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzO1xuICAvKiBib3JkZXItcmFkaXVzOiAwLjc1cmVtIDAgMCAwLjc1cmVtOyAqL1xufVxuXG4uY29ubmVjdC1idXR0b24gLmJ1dHRvbi1pY29uIHN2ZyB7XG4gIHdpZHRoOiAxLjI1cmVtO1xuICBoZWlnaHQ6IDEuMjVyZW07XG59XG5cbi5jb25uZWN0LWJ1dHRvbjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjYzRlMDI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYm9yZGVyLWNvbG9yOiAjY2M0ZTAyO1xufVxuXG4uY29ubmVjdC1idXR0b246aG92ZXIgLmJ1dHRvbi1pY29uIHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjY3NSk7XG59XG5cbi5jb25uZWN0LWJ1dHRvbjpmb2N1cyB7XG4gIG91dGxpbmU6IG5vbmU7XG59XG5cbi5jb25uZWN0LWJ1dHRvbjpkaXNhYmxlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjY2M7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi5wcm92aWRlci1idXR0b24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmc6IDAuNXJlbTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbiAgLyogYm9yZGVyLXJhZGl1czogMC41cmVtOyAqL1xuICAvKiBiYWNrZ3JvdW5kLWNvbG9yOiAjZmVmZWZlOyAqL1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gIGdhcDogMC41cmVtO1xuICB3aWR0aDogMTAwJTtcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzO1xufVxuXG4ucHJvdmlkZXItYnV0dG9uOmZvY3VzIHtcbiAgb3V0bGluZTogMXB4IHNvbGlkICNmZjZmMDA7XG4gIG91dGxpbmUtb2Zmc2V0OiAycHg7XG59XG5cbi5wcm92aWRlci1idXR0b246aG92ZXIge1xuICBib3JkZXItY29sb3I6ICNmZjZmMDA7XG4gIC8qIGJhY2tncm91bmQtY29sb3I6ICNlZWU7ICovXG59XG5cbi5wcm92aWRlci1idXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAvKiBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkOyAqL1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5wcm92aWRlci1idXR0b24gaW1nIHtcbiAgd2lkdGg6IDJyZW07XG4gIGhlaWdodDogMnJlbTtcbn1cblxuLnByb3ZpZGVyLWJ1dHRvbiAucHJvdmlkZXItaWNvbiB7XG4gIGJvcmRlci1yYWRpdXM6IDAuMnJlbTtcbn1cblxuLnByb3ZpZGVyLWJ1dHRvbiBzcGFuIHtcbiAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDFyZW07XG59XG5cbi5wcm92aWRlci1idXR0b24gc3Bhbi5wcm92aWRlci1uYW1lIHtcbiAgY29sb3I6ICMzMzM7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi5wcm92aWRlci1idXR0b24gc3Bhbi5wcm92aWRlci1sYWJlbCB7XG4gIGNvbG9yOiAjNzc3O1xuICBmb250LXNpemU6IDAuN3JlbTtcbiAgZm9udC1mYW1pbHk6IFwiR2Vpc3QgTW9ub1wiLCBtb25vc3BhY2U7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbi8qIFwiZGVmYXVsdFwiIHZhcmlhbnQgKi9cbi5saW5rLWJ1dHRvbi1kZWZhdWx0IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBib3JkZXI6IG5vbmU7XG4gIHdpZHRoOiA3cmVtO1xuICBoZWlnaHQ6IDIuNnJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMDtcbiAgLyogYm9yZGVyLXJhZGl1czogMC43NXJlbTsgKi9cbiAgYm94LXNoYWRvdzogaHNsYSgwLCAwJSwgMTAwJSwgMC4xNSkgMCAycHggMCBpbnNldCxcbiAgICByZ2JhKDAsIDAsIDAsIDAuMDUpIDAgLTJweCA0cHggaW5zZXQsIHJnYmEoNDYsIDU0LCA4MCwgMC4wNzUpIDAgMXB4IDFweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ubGluay1idXR0b24tZGVmYXVsdDpkaXNhYmxlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiOGI4Yjg7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi5saW5rLWJ1dHRvbi1kZWZhdWx0OjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBib3JkZXItcmFkaXVzOiAwLjc1cmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzO1xufVxuXG4ubGluay1idXR0b24tZGVmYXVsdDpkaXNhYmxlZDo6YWZ0ZXIge1xuICBjb250ZW50OiBcIk5vdCBjb25uZWN0ZWRcIjtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogLTIuN3JlbTtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGhlaWdodDogMnJlbTtcbiAgYm9yZGVyLXJhZGl1czogMC4zNXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM1KTtcbiAgY29sb3I6IHdoaXRlO1xuICBkaXNwbGF5OiBncmlkO1xuICBwbGFjZS1pdGVtczogY2VudGVyO1xuICBmb250LXNpemU6IDAuNzVyZW07XG4gIHBhZGRpbmc6IDAuMjVyZW07XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IGFsbCAwLjI1cztcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wLjVyZW0pO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cblxuLmxpbmstYnV0dG9uLWRlZmF1bHQ6ZGlzYWJsZWQ6aG92ZXI6OmFmdGVyIHtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xufVxuXG4ubGluay1idXR0b24tZGVmYXVsdDpub3QoOmRpc2FibGVkKTpob3Zlcjo6YWZ0ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMSk7XG59XG5cbi5saW5rLWJ1dHRvbi1kZWZhdWx0Om5vdCg6ZGlzYWJsZWQpLnR3aXR0ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRhMWYyO1xufVxuXG4ubGluay1idXR0b24tZGVmYXVsdDpub3QoOmRpc2FibGVkKS5zcG90aWZ5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1NDtcbn1cblxuLmxpbmstYnV0dG9uLWRlZmF1bHQ6bm90KDpkaXNhYmxlZCkuZGlzY29yZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3Mjg5ZGE7XG59XG5cbi5saW5rLWJ1dHRvbi1kZWZhdWx0Om5vdCg6ZGlzYWJsZWQpLnRpa3RvayB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7XG59XG5cbi5saW5rLWJ1dHRvbi1kZWZhdWx0Om5vdCg6ZGlzYWJsZWQpLnRlbGVncmFtIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwODhjYztcbn1cblxuLmxpbmstYnV0dG9uLWRlZmF1bHQgLmJ1dHRvbi1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBnYXA6IDAuNXJlbTtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDAuNXJlbTtcbn1cblxuLmJ1dHRvbi1jb250YWluZXIgLnNvY2lhbC1pY29uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6IDEuNXJlbTtcbiAgaGVpZ2h0OiAxLjVyZW07XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBjb2xvcjogd2hpdGU7XG59XG5cbi5idXR0b24tY29udGFpbmVyIC5zb2NpYWwtaWNvbiBzdmcge1xuICB3aWR0aDogMS41cmVtO1xuICBoZWlnaHQ6IDEuNXJlbTtcbiAgZmlsbDogd2hpdGUgIWltcG9ydGFudDtcbn1cblxuLmJ1dHRvbi1jb250YWluZXIgLnNvY2lhbC1pY29uIHN2ZyBwYXRoIHtcbiAgZmlsbDogd2hpdGUgIWltcG9ydGFudDtcbn1cblxuLmJ1dHRvbi1jb250YWluZXIgLmxpbmstaWNvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxLjI1cmVtO1xuICBoZWlnaHQ6IDEuMjVyZW07XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO1xufVxuXG4uYnV0dG9uLWNvbnRhaW5lciAuY2FtcC1sb2dvIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6IDEuNXJlbTtcbiAgaGVpZ2h0OiAxLjVyZW07XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBwYWRkaW5nOiAwLjE1cmVtO1xufVxuXG4ubGluay1idXR0b24tZGVmYXVsdDpkaXNhYmxlZCAuYnV0dG9uLWNvbnRhaW5lciAuY2FtcC1sb2dvIHN2ZyBwYXRoIHtcbiAgZmlsbDogI2I4YjhiOCAhaW1wb3J0YW50O1xufVxuXG4vKiBcImljb25cIiB2YXJpYW50ICovXG4ubGluay1idXR0b24taWNvbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgbWluLXdpZHRoOiAzcmVtO1xuICBtaW4taGVpZ2h0OiAzcmVtO1xuICB3aWR0aDogM3JlbTtcbiAgaGVpZ2h0OiAzcmVtO1xuICBib3JkZXI6IG5vbmU7XG4gIHBhZGRpbmc6IDByZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZmMDA7XG4gIC8qIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07ICovXG4gIGJveC1zaGFkb3c6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMTUpIDAgMnB4IDAgaW5zZXQsXG4gICAgcmdiYSgwLCAwLCAwLCAwLjA1KSAwIC0ycHggNHB4IGluc2V0LCByZ2JhKDQ2LCA1NCwgODAsIDAuMDc1KSAwIDFweCAxcHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmxpbmstYnV0dG9uLWljb246ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjhiOGI4O1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4ubGluay1idXR0b24taWNvbjpkaXNhYmxlZDo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBjb250ZW50OiBcIk5vdCBjb25uZWN0ZWRcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IC0yLjdyZW07XG4gIGxlZnQ6IC0xcmVtO1xuICByaWdodDogLTFyZW07XG4gIGhlaWdodDogZml0LWNvbnRlbnQ7XG4gIGJvcmRlci1yYWRpdXM6IDAuMzVyZW07XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zNSk7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgZGlzcGxheTogZ3JpZDtcbiAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xuICBwYWRkaW5nOiAwLjI1cmVtO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4yNXM7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC41cmVtKTtcbn1cblxuLmxpbmstYnV0dG9uLWljb246ZGlzYWJsZWQ6aG92ZXI6OmFmdGVyIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xufVxuXG4ubGluay1idXR0b24taWNvbjo6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cztcbn1cblxuLmxpbmstYnV0dG9uLWljb246bm90KDpkaXNhYmxlZCk6aG92ZXI6OmFmdGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4ubGluay1idXR0b24taWNvbjpub3QoOmRpc2FibGVkKS50d2l0dGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYTFmMjtcbn1cblxuLmxpbmstYnV0dG9uLWljb246bm90KDpkaXNhYmxlZCkuc3BvdGlmeSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTQ7XG59XG5cbi5saW5rLWJ1dHRvbi1pY29uOm5vdCg6ZGlzYWJsZWQpLmRpc2NvcmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzI4OWRhO1xufVxuXG4ubGluay1idXR0b24taWNvbjpub3QoOmRpc2FibGVkKS50aWt0b2sge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO1xufVxuXG4ubGluay1idXR0b24taWNvbjpub3QoOmRpc2FibGVkKS50ZWxlZ3JhbSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDg4Y2M7XG59XG5cbi5saW5rLWJ1dHRvbi1pY29uIC5pY29uLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgZmxleDogMTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5saW5rLWJ1dHRvbi1pY29uIC5pY29uLWNvbnRhaW5lciA+IHN2ZyB7XG4gIHdpZHRoOiAxLjVyZW07XG4gIGhlaWdodDogMS41cmVtO1xuICBmaWxsOiB3aGl0ZSAhaW1wb3J0YW50O1xufVxuXG4ubGluay1idXR0b24taWNvbiAuaWNvbi1jb250YWluZXIgPiBzdmcgcGF0aCB7XG4gIGZpbGw6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbi5saW5rLWJ1dHRvbi1pY29uIC5jYW1wLWxvZ28ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxLjVyZW07XG4gIGhlaWdodDogMS41cmVtO1xuICByaWdodDogLTAuNXJlbTtcbiAgYm90dG9tOiAtMC41cmVtO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbn1cblxuLmxpbmstYnV0dG9uLWljb24gLmNhbXAtbG9nbyBzdmcge1xuICB3aWR0aDogMS4xcmVtO1xuICBoZWlnaHQ6IDEuMXJlbTtcbn1cblxuLmxpbmstYnV0dG9uLWljb246ZGlzYWJsZWQgLmNhbXAtbG9nbyBzdmcgcGF0aCB7XG4gIGZpbGw6ICNiOGI4YjggIWltcG9ydGFudDtcbn1cblxuLm5vdC1saW5rZWQgc3ZnIHBhdGgge1xuICBmaWxsOiAjYjhiOGI4ICFpbXBvcnRhbnQ7XG59XG5cbi5maWxlLXVwbG9hZC1jb250YWluZXIge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBib3JkZXI6IDJweCBkYXNoZWQgI2NjYztcbiAgLyogYm9yZGVyLXJhZGl1czogMC43NXJlbTsgKi9cbiAgcGFkZGluZzogMXJlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjb2xvcjogIzc3NztcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnMsIGJvcmRlci1jb2xvciAwLjJzO1xuICB3aWR0aDogMTAwJTtcbiAgbWluLXdpZHRoOiAwO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDEycmVtO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICAvKiBoZWlnaHQ6IDMwMHB4OyAqL1xufVxuXG4uZmlsZS11cGxvYWQtY29udGFpbmVyOmhvdmVyIHtcbiAgYm9yZGVyLWNvbG9yOiAjZTJlMmUyO1xufVxuXG4uZmlsZS11cGxvYWQtY29udGFpbmVyLmRyYWdnaW5nIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZjlmOTtcbiAgYm9yZGVyLWNvbG9yOiAjZmY2ZjAwO1xufVxuXG4uZmlsZS11cGxvYWQtY29udGFpbmVyLmRyYWdnaW5nIC5maWxlLXByZXZpZXcge1xuICBvcGFjaXR5OiAwLjI7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycztcbn1cblxuLmZpbGUtdXBsb2FkLWNvbnRhaW5lci5maWxlLXNlbGVjdGVkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZjlmOTtcbiAgYm9yZGVyOiBub25lO1xuICBwYWRkaW5nOiAwO1xuICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XG4gIC8qIGhlaWdodDogYXV0bzsgKi9cbiAgLyogbWluLWhlaWdodDogYXV0bzsgKi9cbn1cblxuLmZpbGUtaW5wdXQge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4uc2VsZWN0ZWQtZmlsZS1jb250YWluZXIge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBnYXA6IDAuMjVyZW07XG59XG5cbi5yZW1vdmUtZmlsZS1idXR0b24ge1xuICBjb2xvcjogd2hpdGU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNmZjZmMDA7XG4gIC8qIGJvcmRlci1yYWRpdXM6IDAuNXJlbTsgKi9cbiAgcGFkZGluZzogMC41cmVtO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xuICBtYXJnaW4tdG9wOiAxcmVtO1xuICBjb2xvcjogI2ZmNmYwMDtcbn1cblxuLnJlbW92ZS1maWxlLWJ1dHRvbjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjYzRlMDI7XG4gIGJvcmRlci1jb2xvcjogI2NjNGUwMjtcbiAgY29sb3I6IHdoaXRlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5yZW1vdmUtZmlsZS1idXR0b246ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjhiOGI4O1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICBib3JkZXItY29sb3I6ICNiOGI4Yjg7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cblxuLnVwbG9hZC1maWxlLWJ1dHRvbiB7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMDtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG4gIHBhZGRpbmc6IDAuNXJlbTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnM7XG4gIHdpZHRoOiAxMDAlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4udXBsb2FkLWZpbGUtYnV0dG9uOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NjNGUwMjtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLnVwbG9hZC1maWxlLWJ1dHRvbjpkaXNhYmxlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiOGI4Yjg7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi5maWxlLXByZXZpZXcge1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1heC1oZWlnaHQ6IDhyZW07XG59XG5hdWRpby5maWxlLXByZXZpZXcge1xuICBtaW4taGVpZ2h0OiA0cmVtO1xufVxuXG4uZmlsZS1wcmV2aWV3LXRleHQge1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBjb2xvcjogIzMzMztcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xufVxuXG4uZmlsZS1uYW1lIHtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgY29sb3I6ICMzMzM7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBtaW4taGVpZ2h0OiBmaXQtY29udGVudDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xufVxuXG4udXBsb2FkLWJ1dHRvbnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDAuMjVyZW07XG4gIHdpZHRoOiAxMDAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi51cGxvYWQtYnV0dG9ucyAudXBsb2FkLWZpbGUtYnV0dG9uIHtcbiAgZmxleC1ncm93OiAxO1xufVxuXG4udXBsb2FkLWJ1dHRvbnMgLnJlbW92ZS1maWxlLWJ1dHRvbiB7XG4gIGZsZXgtZ3JvdzogMDtcbn1cblxuLmFjY2VwdGVkLXR5cGVzIHtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgY29sb3I6ICM3Nzc7XG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4ubG9hZGluZy1iYXItY29udGFpbmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDhweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UwZTBlMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgbWFyZ2luLXRvcDogOHB4O1xufVxuXG4ubG9hZGluZy1iYXIge1xuICBtaW4taGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2ZjAwO1xuICB0cmFuc2l0aW9uOiB3aWR0aCAwLjNzIGVhc2U7XG59XG5cbi5kYXRlLXBpY2tlciB7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDZweDtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG59XG5cbi5kYXRlLXBpY2tlciBpbnB1dCB7XG4gIHBhZGRpbmc6IDZweCAxMHB4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cblxuLnBlcmNlbnRhZ2Utc2xpZGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGdhcDogOHB4O1xuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4ucGVyY2VudGFnZS1zbGlkZXIgaW5wdXRbdHlwZT1cInJhbmdlXCJdIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5wZXJjZW50YWdlLXNsaWRlciBsYWJlbCB7XG4gIG1pbi13aWR0aDogNTBweDtcbn1cblxuLmZhbmN5LWlucHV0LWNvbnRhaW5lciB7XG4gIG1pbi1oZWlnaHQ6IDIuNXJlbTtcbiAgd2lkdGg6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZ2FwOiAwO1xuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjtcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmZhbmN5LWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5mYW5jeS1pbnB1dCB7XG4gIHJlc2l6ZTogbm9uZTtcbiAgbWF4LWhlaWdodDogMTJyZW07XG4gIHdpZHRoOiAxMDAlO1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgcGFkZGluZzogMTBweDtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBjb2xvcjogIzIyMjtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbn1cblxuLmZhbmN5LWlucHV0IHtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gIHBhZGRpbmc6IDZweCAxMHB4O1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGZsZXg6IDE7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufVxuXG4uZmFuY3ktaW5wdXQtbGFiZWwge1xuICBmb250LXNpemU6IDAuOHJlbTtcbiAgY29sb3I6ICM3Nzc7XG4gIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG4gIHBhZGRpbmc6IDAgMC4yNXJlbTtcbiAgLyogei1pbmRleDogMjsgKi9cbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGZvbnQtZmFtaWx5OiBcIkdlaXN0IE1vbm9cIiwgbW9ub3NwYWNlO1xuICBmb250LXdlaWdodDogNTAwO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBtYXJnaW4tdG9wOiAwLjI1cmVtO1xufVxuXG4uaW5wdXQtZGl2aWRlciB7XG4gIG1pbi13aWR0aDogMXB4O1xuICBoZWlnaHQ6IDI0cHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjY2M7XG4gIG1hcmdpbjogMDtcbn1cblxuLmlucHV0LWljb24tY29udGFpbmVyIHtcbiAgcGFkZGluZzogNnB4IDEwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xuICBtaW4td2lkdGg6IDQwcHg7XG59XG5cbi5pbnB1dC1pY29uLWNvbnRhaW5lciBzdmcge1xuICB3aWR0aDogMTZweDtcbiAgaGVpZ2h0OiAxNnB4O1xufVxuXG4uZHVyYXRpb24taW5wdXQtY29udGFpbmVyIHtcbiAgbWluLWhlaWdodDogMi41cmVtO1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gIGdhcDogMDtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG4gIC8qIGJvcmRlci1yYWRpdXM6IDRweDsgKi9cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLmR1cmF0aW9uLWlucHV0IHtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gIHBhZGRpbmc6IDZweCAxMHB4O1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGZsZXg6IDE7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBtaW4td2lkdGg6IDA7XG59XG5cbi5kdXJhdGlvbi11bml0LXNlbGVjdCB7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xuICBwYWRkaW5nOiA2cHggMTBweDtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNjY2M7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZmxleDogMCAwIGF1dG87XG4gIHdpZHRoOiBhdXRvO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4ucHJpY2UtaW5wdXQtY29udGFpbmVyOmZvY3VzLXdpdGhpbiB7XG4gIGJvcmRlci1jb2xvcjogI2ZmNmYwMDtcbiAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZjZmMDA7XG59XG5cbi5kdXJhdGlvbi1pbnB1dC1jb250YWluZXI6Zm9jdXMtd2l0aGluIHtcbiAgYm9yZGVyLWNvbG9yOiAjZmY2ZjAwO1xuICBib3gtc2hhZG93OiAwIDAgMCAxcHggI2ZmNmYwMDtcbn1cblxuLnByaWNlLWlucHV0LWNvbnRhaW5lcjpob3Zlcixcbi5kdXJhdGlvbi1pbnB1dC1jb250YWluZXI6aG92ZXIge1xuICBib3JkZXItY29sb3I6ICM5OTk7XG59XG5cbi5kdXJhdGlvbi11bml0LXNlbGVjdDpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7XG59XG5cbi5kdXJhdGlvbi11bml0LXNlbGVjdDpmb2N1cyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7XG59XG5cbi5saWNlbnNlLXR5cGUtc2VsZWN0IHtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gIHBhZGRpbmc6IDZweCAxMHB4O1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgd2lkdGg6IDEwMCU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG1pbi1oZWlnaHQ6IDIuNXJlbTtcbn1cblxuLmxpY2Vuc2UtdHlwZS1zZWxlY3Q6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xufVxuXG4ubGljZW5zZS10eXBlLXNlbGVjdDpmb2N1cyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7XG59XG5cbi5wcmV2aWV3LW9wdGlvbi1jb250YWluZXIge1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWFyZ2luLXRvcDogMC41cmVtO1xufVxuXG4uY2hlY2tib3gtbGFiZWwge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDAuNXJlbTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBjb2xvcjogIzMzMztcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi5jaGVja2JveC1pbnB1dCB7XG4gIHdpZHRoOiAxLjEyNXJlbTtcbiAgaGVpZ2h0OiAxLjEyNXJlbTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBhY2NlbnQtY29sb3I6ICNmZjZmMDA7XG59XG5cbi5jaGVja2JveC1sYWJlbCBzcGFuIHtcbiAgbGluZS1oZWlnaHQ6IDEuMjtcbn1cblxuLnByZXZpZXctaW1hZ2Utc2VjdGlvbiB7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDAuNXJlbTtcbiAgbWFyZ2luLXRvcDogMC41cmVtO1xufVxuXG4ucHJldmlldy1pbWFnZS1jb250cm9scyB7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDAuNXJlbTtcbn1cblxuLnNlbGVjdC1wcmV2aWV3LWJ1dHRvbiB7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAwLjc1cmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xuICBjb2xvcjogIzMzMztcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgZm9udC1mYW1pbHk6IFwiR2Vpc3QgTW9ub1wiLCBtb25vc3BhY2U7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG59XG5cbi5zZWxlY3QtcHJldmlldy1idXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xuICBib3JkZXItY29sb3I6ICM5OTk7XG59XG5cbi5zZWxlY3QtcHJldmlldy1idXR0b246ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xuICBjb2xvcjogIzk5OTtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgb3BhY2l0eTogMC42O1xufVxuXG4ucHJldmlldy1pbWFnZS1wcmV2aWV3IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjc1cmVtO1xuICBwYWRkaW5nOiAwLjc1cmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xufVxuXG4ucHJldmlldy10aHVtYm5haWwge1xuICB3aWR0aDogM3JlbTtcbiAgaGVpZ2h0OiAzcmVtO1xuICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5wcmV2aWV3LWZpbGVuYW1lIHtcbiAgZmxleDogMTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgY29sb3I6ICMzMzM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4ucmVtb3ZlLXByZXZpZXctYnV0dG9uIHtcbiAgcGFkZGluZzogMC41cmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2ZmNmYwMDtcbiAgY29sb3I6ICNmZjZmMDA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLnJlbW92ZS1wcmV2aWV3LWJ1dHRvbjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjYzRlMDI7XG4gIGJvcmRlci1jb2xvcjogI2NjNGUwMjtcbiAgY29sb3I6IHdoaXRlO1xufVxuXG4ucmVtb3ZlLXByZXZpZXctYnV0dG9uOmRpc2FibGVkIHtcbiAgYm9yZGVyLWNvbG9yOiAjY2NjO1xuICBjb2xvcjogI2NjYztcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgb3BhY2l0eTogMC42O1xufVxuXG4ucGVyY2VudGFnZS1pY29uIHtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6ICM1NTU7XG59XG4iXX0= */";
10543
+ var buttonStyles = {"button":"buttons-module_button__4Ogad","connect-button":"buttons-module_connect-button__CJhUa","button-icon":"buttons-module_button-icon__JM4-2","provider-button":"buttons-module_provider-button__6JY7s","provider-icon":"buttons-module_provider-icon__MOhr8","provider-name":"buttons-module_provider-name__tHWO2","provider-label":"buttons-module_provider-label__CEGRr","link-button-default":"buttons-module_link-button-default__EcKUT","twitter":"buttons-module_twitter__9sRaz","spotify":"buttons-module_spotify__-fiKQ","discord":"buttons-module_discord__I-YjZ","tiktok":"buttons-module_tiktok__a80-0","telegram":"buttons-module_telegram__ExOTS","button-container":"buttons-module_button-container__-oPqd","social-icon":"buttons-module_social-icon__DPdPe","link-icon":"buttons-module_link-icon__8V8FP","camp-logo":"buttons-module_camp-logo__slNl0","link-button-icon":"buttons-module_link-button-icon__llX8m","icon-container":"buttons-module_icon-container__Q5bI1","not-linked":"buttons-module_not-linked__ua4va","file-upload-container":"buttons-module_file-upload-container__le7Cg","dragging":"buttons-module_dragging__cfggZ","file-preview":"buttons-module_file-preview__yuM5i","file-selected":"buttons-module_file-selected__YY6ms","file-input":"buttons-module_file-input__gbD5T","selected-file-container":"buttons-module_selected-file-container__E1AXM","remove-file-button":"buttons-module_remove-file-button__Q1FMa","upload-file-button":"buttons-module_upload-file-button__vTwWd","file-preview-text":"buttons-module_file-preview-text__80Ju0","file-name":"buttons-module_file-name__3iskR","upload-buttons":"buttons-module_upload-buttons__3SAw6","accepted-types":"buttons-module_accepted-types__Ys-D2","loading-bar-container":"buttons-module_loading-bar-container__nrgPX","loading-bar":"buttons-module_loading-bar__IUAg1","date-picker":"buttons-module_date-picker__V6gRM","percentage-slider":"buttons-module_percentage-slider__M84tC","fancy-input-container":"buttons-module_fancy-input-container__s-zVw","fancy-input":"buttons-module_fancy-input__RpSOF","fancy-input-label":"buttons-module_fancy-input-label__d-sG7","input-divider":"buttons-module_input-divider__RVasJ","input-icon-container":"buttons-module_input-icon-container__MUYKL","duration-input-container":"buttons-module_duration-input-container__Rh9Na","duration-input":"buttons-module_duration-input__-gt3p","duration-unit-select":"buttons-module_duration-unit-select__VKFf6","price-input-container":"buttons-module_price-input-container__teIRS","license-type-select":"buttons-module_license-type-select__XHtlm","preview-option-container":"buttons-module_preview-option-container__0bzt-","checkbox-label":"buttons-module_checkbox-label__ODwgG","checkbox-input":"buttons-module_checkbox-input__FvUIp","preview-image-section":"buttons-module_preview-image-section__BjtiC","preview-image-controls":"buttons-module_preview-image-controls__l6gv5","select-preview-button":"buttons-module_select-preview-button__0HQfm","preview-image-preview":"buttons-module_preview-image-preview__c-6n5","preview-thumbnail":"buttons-module_preview-thumbnail__fJWXt","preview-filename":"buttons-module_preview-filename__FW-Gz","remove-preview-button":"buttons-module_remove-preview-button__Skqgb","percentage-icon":"buttons-module_percentage-icon__MxmJh"};
9995
10544
  styleInject(css_248z);
9996
10545
 
9997
10546
  /**
@@ -10169,6 +10718,7 @@ const FancyInput = ({ value, onChange, step, placeholder, type = "text", icon, l
10169
10718
  */
10170
10719
  const FileUpload = ({ onFileUpload, accept, maxFileSize, }) => {
10171
10720
  const auth = useAuth();
10721
+ useContext(CampContext);
10172
10722
  const { isAllowListed } = useUser();
10173
10723
  const effectiveMaxFileSize = isAllowListed ? undefined : maxFileSize;
10174
10724
  const [isDragging, setIsDragging] = useState(false);
@@ -10185,18 +10735,21 @@ const FileUpload = ({ onFileUpload, accept, maxFileSize, }) => {
10185
10735
  const [isValidInput, setIsValidInput] = useState(false);
10186
10736
  const [previewImage, setPreviewImage] = useState(null);
10187
10737
  const [useBaseAssetAsPreview, setUseBaseAssetAsPreview] = useState(false);
10738
+ const [licenseType, setLicenseType] = useState(LicenseType.DURATION_BASED);
10188
10739
  const isAllImagesAccepted = accept
10189
10740
  ? accept.split(",").every((type) => type.trim().startsWith("image/"))
10190
10741
  : false;
10191
10742
  const validateInputs = () => {
10192
- const isDurationValid = validateDuration(licenseDuration, durationUnit);
10193
- let isPriceValid = validatePrice(price);
10743
+ const isDurationValid = licenseType === LicenseType.DURATION_BASED
10744
+ ? validateDuration(licenseDuration, durationUnit)
10745
+ : true; // Duration not needed for SINGLE_PAYMENT/X402
10746
+ const isPriceValid = validatePrice(price);
10194
10747
  const isRoyaltyValid = validateRoyaltyBps(royaltyBps);
10195
10748
  setIsValidInput(isDurationValid && isPriceValid && isRoyaltyValid);
10196
10749
  };
10197
10750
  useEffect(() => {
10198
10751
  validateInputs();
10199
- }, [price, licenseDuration, durationUnit, royaltyBps]);
10752
+ }, [price, licenseDuration, durationUnit, royaltyBps, licenseType]);
10200
10753
  useEffect(() => {
10201
10754
  // use base asset as preview is checked, clear custom preview image
10202
10755
  if (useBaseAssetAsPreview) {
@@ -10211,10 +10764,12 @@ const FileUpload = ({ onFileUpload, accept, maxFileSize, }) => {
10211
10764
  if (selectedFile) {
10212
10765
  setIsUploading(true);
10213
10766
  try {
10214
- const durationInSeconds = toSeconds(licenseDuration, durationUnit);
10767
+ const durationInSeconds = licenseType === LicenseType.DURATION_BASED
10768
+ ? toSeconds(licenseDuration, durationUnit)
10769
+ : 0; // Duration must be 0 for SINGLE_PAYMENT/X402
10215
10770
  const priceInWei = parseEther(price || "0");
10216
10771
  const computedRoyaltyBps = Math.floor(parseFloat(royaltyBps) * 100); // percentage to basis points
10217
- const license = createLicenseTerms(priceInWei, durationInSeconds, computedRoyaltyBps, zeroAddress);
10772
+ const license = createLicenseTerms(priceInWei, durationInSeconds, computedRoyaltyBps, zeroAddress, licenseType);
10218
10773
  const metadata = {
10219
10774
  name: selectedFile.name,
10220
10775
  description: `File uploaded by ${auth === null || auth === void 0 ? void 0 : auth.walletAddress} via the Origin SDK`,
@@ -10359,22 +10914,31 @@ const FileUpload = ({ onFileUpload, accept, maxFileSize, }) => {
10359
10914
  selectedFile ? (React.createElement("div", { className: buttonStyles["selected-file-container"] },
10360
10915
  renderFilePreview(),
10361
10916
  React.createElement("span", { className: buttonStyles["file-name"] }, selectedFile.name),
10362
- React.createElement(FancyInput, { type: "number", step: 0.0001, placeholder: "$CAMP", value: price, label: "Price in $CAMP", onChange: (e) => {
10917
+ React.createElement("span", { className: buttonStyles["fancy-input-label"] }, "License Type"),
10918
+ React.createElement("div", { className: buttonStyles["duration-input-container"] },
10919
+ React.createElement("select", { className: buttonStyles["license-type-select"], value: licenseType, onChange: (e) => setLicenseType(Number(e.target.value)) },
10920
+ React.createElement("option", { value: LicenseType.DURATION_BASED }, "Subscription (Time-limited)"),
10921
+ React.createElement("option", { value: LicenseType.SINGLE_PAYMENT }, "One-Time Purchase (Perpetual)"),
10922
+ React.createElement("option", { value: LicenseType.X402 }, "X402 (Pay-per-view)"))),
10923
+ React.createElement(FancyInput, { type: "number", step: 0.0001, placeholder: licenseType === LicenseType.X402 ? "Price per view" : "Price", value: price, label: licenseType === LicenseType.X402
10924
+ ? "Price in $USDC"
10925
+ : "Price in $CAMP", onChange: (e) => {
10363
10926
  const value = e.target.value;
10364
10927
  setPrice(value);
10365
- }, icon: React.createElement(CampIcon, null) }),
10366
- React.createElement("span", { className: buttonStyles["fancy-input-label"] }, "License Duration"),
10367
- React.createElement("div", { className: buttonStyles["duration-input-container"] },
10368
- React.createElement("input", { type: "number", placeholder: "Duration", className: buttonStyles["duration-input"], value: licenseDuration > 0 ? licenseDuration.toString() : "", onChange: (e) => {
10369
- const value = e.target.value;
10370
- setLicenseDuration(value ? Number(value) : 0);
10371
- } }),
10372
- React.createElement("select", { className: buttonStyles["duration-unit-select"], value: durationUnit, onChange: (e) => {
10373
- setDurationUnit(e.target.value);
10374
- } },
10375
- React.createElement("option", { value: "hours" }, "Hours"),
10376
- React.createElement("option", { value: "days" }, "Days"),
10377
- React.createElement("option", { value: "weeks" }, "Weeks"))),
10928
+ }, icon: licenseType === LicenseType.X402 ? React.createElement(USDCIcon, null) : React.createElement(CampIcon, null) }),
10929
+ licenseType === LicenseType.DURATION_BASED && (React.createElement(React.Fragment, null,
10930
+ React.createElement("span", { className: buttonStyles["fancy-input-label"] }, "License Duration"),
10931
+ React.createElement("div", { className: buttonStyles["duration-input-container"] },
10932
+ React.createElement("input", { type: "number", placeholder: "Duration", className: buttonStyles["duration-input"], value: licenseDuration > 0 ? licenseDuration.toString() : "", onChange: (e) => {
10933
+ const value = e.target.value;
10934
+ setLicenseDuration(value ? Number(value) : 0);
10935
+ } }),
10936
+ React.createElement("select", { className: buttonStyles["duration-unit-select"], value: durationUnit, onChange: (e) => {
10937
+ setDurationUnit(e.target.value);
10938
+ } },
10939
+ React.createElement("option", { value: "hours" }, "Hours"),
10940
+ React.createElement("option", { value: "days" }, "Days"),
10941
+ React.createElement("option", { value: "weeks" }, "Weeks"))))),
10378
10942
  React.createElement(FancyInput, { type: "number", step: 0.1, placeholder: "Royalty %", label: "Royalty %", value: royaltyBps.toString(), onChange: (e) => {
10379
10943
  const value = e.target.value;
10380
10944
  setRoyaltyBps(value);