From f8b58d2532ee1c8cfcda382b8fe222fa9cf5f1f3 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Tue, 17 May 2022 17:49:10 +0200 Subject: [PATCH 01/85] Switch Argounaut to Aeson (CurrencySymbol, ByteArray) --- spago.dhall | 2 -- src/Plutus/Types/CurrencySymbol.purs | 26 +++++++++++++------------- src/Types/ByteArray.purs | 10 +++++++++- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/spago.dhall b/spago.dhall index 6aa711069..494131249 100644 --- a/spago.dhall +++ b/spago.dhall @@ -10,7 +10,6 @@ You can edit this file as you like. , "affjax" , "argonaut" , "argonaut-codecs" - , "argonaut-core" , "arraybuffer-types" , "arrays" , "bifunctors" @@ -43,7 +42,6 @@ You can edit this file as you like. , "node-fs-aff" , "node-path" , "nonempty" - , "numbers" , "ordered-collections" , "partial" , "prelude" diff --git a/src/Plutus/Types/CurrencySymbol.purs b/src/Plutus/Types/CurrencySymbol.purs index 01db24814..a81d01e76 100644 --- a/src/Plutus/Types/CurrencySymbol.purs +++ b/src/Plutus/Types/CurrencySymbol.purs @@ -10,15 +10,15 @@ module Plutus.Types.CurrencySymbol import Prelude -import Data.Argonaut - ( class DecodeJson - , class EncodeJson - , JsonDecodeError(TypeMismatch) - , caseJsonObject - , decodeJson - , encodeJson +import Aeson + ( class DecodeAeson + , class EncodeAeson + , caseAesonObject + , decodeAeson + , encodeAeson , getField ) +import Data.Argonaut (JsonDecodeError(..)) import Data.Either (Either(Left)) import Data.Maybe (Maybe) import FromData (class FromData) @@ -39,14 +39,14 @@ derive newtype instance Ord CurrencySymbol derive newtype instance FromData CurrencySymbol derive newtype instance ToData CurrencySymbol -instance DecodeJson CurrencySymbol where - decodeJson = caseJsonObject +instance DecodeAeson CurrencySymbol where + decodeAeson = caseAesonObject (Left $ TypeMismatch "Expected object") - (flip getField "unCurrencySymbol" >=> decodeJson >>> map CurrencySymbol) + (flip getField "unCurrencySymbol" >=> decodeAeson >>> map CurrencySymbol) -instance EncodeJson CurrencySymbol where - encodeJson (CurrencySymbol mph) = encodeJson - { "unCurrencySymbol": encodeJson mph } +instance EncodeAeson CurrencySymbol where + encodeAeson' (CurrencySymbol mph) = pure $ encodeAeson + { "unCurrencySymbol": encodeAeson mph } instance Show CurrencySymbol where show (CurrencySymbol cs) = "(CurrencySymbol" <> show cs <> ")" diff --git a/src/Types/ByteArray.purs b/src/Types/ByteArray.purs index ddbe3d90f..f5b487cc9 100644 --- a/src/Types/ByteArray.purs +++ b/src/Types/ByteArray.purs @@ -13,7 +13,12 @@ module Types.ByteArray import Prelude -import Aeson (class DecodeAeson, decodeAesonViaJson) +import Aeson + ( class DecodeAeson + , class EncodeAeson + , decodeAesonViaJson + , encodeAesonViaJson + ) import Data.Argonaut (class DecodeJson, class EncodeJson, fromString) import Data.Argonaut as Json import Data.ArrayBuffer.Types (Uint8Array) @@ -63,6 +68,9 @@ instance EncodeJson ByteArray where instance DecodeAeson ByteArray where decodeAeson = decodeAesonViaJson +instance EncodeAeson ByteArray where + encodeAeson' = encodeAesonViaJson + foreign import ord_ :: (Int -> Int -> Int) -> ByteArray -> ByteArray -> Int foreign import concat_ :: ByteArray -> ByteArray -> ByteArray From 3108268a7860d2c48e4642e920fe2a51f27dbc0c Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Tue, 17 May 2022 17:57:32 +0200 Subject: [PATCH 02/85] Migrate TokenName --- src/Types/TokenName.purs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/Types/TokenName.purs b/src/Types/TokenName.purs index dfedf9adc..320f93a4d 100644 --- a/src/Types/TokenName.purs +++ b/src/Types/TokenName.purs @@ -10,6 +10,12 @@ module Types.TokenName import Prelude +import Aeson + ( class DecodeAeson + , class EncodeAeson + , decodeAesonViaJson + , encodeAesonViaJson + ) import Data.Argonaut ( getField , class DecodeJson @@ -54,6 +60,12 @@ instance EncodeJson TokenName where encodeJson (TokenName ba) = encodeJson { "unTokenName": byteArrayToHex ba } +instance DecodeAeson TokenName where + decodeAeson = decodeAesonViaJson + +instance EncodeAeson TokenName where + encodeAeson' = encodeAesonViaJson + instance Show TokenName where show (TokenName tn) = "(TokenName" <> show tn <> ")" From 9cc8b10a9b5f49897ca3533f32f54f009f6b67a0 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Tue, 17 May 2022 20:26:11 +0200 Subject: [PATCH 03/85] Added Aeson encoder for PlutusData and added tests for it --- src/Types/PlutusData.purs | 18 ++++++- test/Data.purs | 103 ++++++++++++++++++++++++++++++-------- 2 files changed, 99 insertions(+), 22 deletions(-) diff --git a/src/Types/PlutusData.purs b/src/Types/PlutusData.purs index ee7218d2c..6130c60b5 100644 --- a/src/Types/PlutusData.purs +++ b/src/Types/PlutusData.purs @@ -4,7 +4,7 @@ module Types.PlutusData import Prelude -import Aeson (class DecodeAeson, decodeAeson, (.:)) +import Aeson (class DecodeAeson, class EncodeAeson, decodeAeson, encodeAeson, encodeAeson', (.:)) import Control.Alt ((<|>)) import Data.Argonaut (encodeJson) import Data.Argonaut.Decode (JsonDecodeError(UnexpectedValue)) @@ -71,3 +71,19 @@ instance DecodeAeson PlutusData where case hexToByteArray bytesHex of Nothing -> Left $ UnexpectedValue $ encodeJson bytesHex Just res -> pure $ Bytes res + + +instance EncodeAeson PlutusData where + encodeAeson' (Constr constr fields) = encodeAeson' + { "constr": encodeAeson constr, + "fields": encodeAeson fields + } + encodeAeson' (Map elems) = encodeAeson' { + "map": encodeAeson $ map (\(k /\ v) -> { + "key": encodeAeson k, + "value": encodeAeson v + }) elems + } + encodeAeson' (List elems) = encodeAeson' elems + encodeAeson' (Integer bi) = encodeAeson' bi + encodeAeson' (Bytes ba) = encodeAeson' ba diff --git a/test/Data.purs b/test/Data.purs index 8f5e9188a..46935c752 100644 --- a/test/Data.purs +++ b/test/Data.purs @@ -3,12 +3,15 @@ module Test.Data (suite, tests, uniqueIndicesTests) where import Prelude +import Aeson (decodeAeson, encodeAeson) import Contract.PlutusData (PlutusData(Constr, Integer)) +import Contract.Prelude (Either(..)) import Control.Lazy (fix) +import Data.Argonaut (JsonDecodeError(..)) import Data.BigInt (BigInt) import Data.BigInt as BigInt import Data.Generic.Rep as G -import Data.Maybe (Maybe(Just, Nothing), fromJust) +import Data.Maybe (maybe, Maybe(Just, Nothing), fromJust) import Data.Show.Generic (genericShow) import Data.Traversable (for_, traverse_) import Data.Tuple (Tuple, uncurry) @@ -18,6 +21,8 @@ import Deserialization.PlutusData as PDD import FromData (class FromData, fromData, genericFromData) import Mote (group, skip, test) import Partial.Unsafe (unsafePartial) +import Plutus.Types.AssocMap (Map(..)) +import Plutus.Types.DataSchema (class HasPlutusSchema, type (:+), type (:=), type (@@), I, PNil) import Serialization (toBytes) import Serialization.PlutusData as PDS import Test.QuickCheck.Arbitrary (class Arbitrary, arbitrary, genericArbitrary) @@ -26,23 +31,69 @@ import Test.Spec.Assertions (shouldEqual) import TestM (TestPlanM) import ToData (class ToData, genericToData, toData) import Type.RowList (Cons, Nil) -import Types.ByteArray (hexToByteArrayUnsafe) import TypeLevel.Nat (Z, S) -import Untagged.Union (asOneOf) - -import Plutus.Types.DataSchema - ( class HasPlutusSchema - , type (:+) - , type (:=) - , type (@@) - , I - , PNil - ) import TypeLevel.RowList (class AllUniqueLabels) import TypeLevel.RowList.Unordered.Indexed (NilI, ConsI, class UniqueIndices) +import Types.ByteArray (hexToByteArrayUnsafe) +import Untagged.Union (asOneOf) + +plutusDataAesonRoundTrip ∷ ∀ (a ∷ Type). ToData a ⇒ FromData a ⇒ a → Either JsonDecodeError a +plutusDataAesonRoundTrip x = do + pd <- encodeAeson (toData x) # decodeAeson + maybe (Left $ TypeMismatch "") (pure) $ fromData pd suite :: TestPlanM Unit suite = do + group "PlutusData Aeson representation tests" $ do + group "Primitives" do + test "Unit" do + let + input = unit + plutusDataAesonRoundTrip input `shouldEqual` Right input + group "Boolean" do + let + inputs = [ true, false ] + for_ inputs \input -> do + test (show input) do + plutusDataAesonRoundTrip input `shouldEqual` Right input + group "Maybe" do + let + inputs = [ Just true, Just false, Nothing ] + for_ inputs \input -> do + test (show input) do + plutusDataAesonRoundTrip input `shouldEqual` Right input + group "BigInt" do + let + inputs = + [ BigInt.fromInt 0 + , BigInt.fromInt 10000 + , BigInt.fromInt (-10000) + ] + for_ inputs \input -> do + test (show input) do + plutusDataAesonRoundTrip input `shouldEqual` Right input + test "Array" do + let + input = [ Just true, Just false, Nothing ] + plutusDataAesonRoundTrip input `shouldEqual` Right input + test "Map" do + let + input = Map [ + BigInt.fromInt 13 /\ [ + Map [ + BigInt.fromInt 17 /\ false + ] + ] + ] + plutusDataAesonRoundTrip input `shouldEqual` Right input + group "Generic" do + -- TODO: Quickcheckify + test "CType: from . to == id" do + let + input = C4 (Map [ + BigInt.fromInt 13 /\ [Map [BigInt.fromInt 17 /\ false]] + ]) + plutusDataAesonRoundTrip input `shouldEqual` Right input group "PlutusData representation tests: ToData/FromData" $ do group "Primitives" do test "Unit" do @@ -71,6 +122,20 @@ suite = do for_ inputs \input -> do test (show input) do fromData (toData input) `shouldEqual` Just input + test "Array" do + let + input = [ Just true, Just false, Nothing ] + fromData (toData input) `shouldEqual` Just input + test "Map" do + let + input = Map [ + BigInt.fromInt 13 /\ [ + Map [ + BigInt.fromInt 17 /\ false + ] + ] + ] + fromData (toData input) `shouldEqual` Just input group "Generic" do -- TODO: Quickcheckify test "EType: from . to == id" do @@ -182,19 +247,15 @@ data CType | C1 (Maybe MyBigInt) | C2 MyBigInt Boolean | C3 MyBigInt Boolean Boolean + | C4 (Map BigInt (Array (Map BigInt Boolean))) instance HasPlutusSchema CType ( "C0" := PNil @@ Z - :+ "C1" - := PNil - @@ (S Z) - :+ "C2" - := PNil - @@ (S (S Z)) - :+ "C3" - := PNil - @@ (S (S (S Z))) + :+ "C1" := PNil @@ (S Z) + :+ "C2" := PNil @@ (S (S Z)) + :+ "C3" := PNil @@ (S (S (S Z))) + :+ "C4" := PNil @@ (S (S (S (S Z)))) :+ PNil ) From 2acb64254b468581b0fa3daac9d055308903cb9c Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Tue, 17 May 2022 21:26:29 +0200 Subject: [PATCH 04/85] make format --- src/Types/PlutusData.purs | 29 ++++++++++++------- test/Data.purs | 60 +++++++++++++++++++++++++-------------- 2 files changed, 58 insertions(+), 31 deletions(-) diff --git a/src/Types/PlutusData.purs b/src/Types/PlutusData.purs index 6130c60b5..02d566aea 100644 --- a/src/Types/PlutusData.purs +++ b/src/Types/PlutusData.purs @@ -4,7 +4,14 @@ module Types.PlutusData import Prelude -import Aeson (class DecodeAeson, class EncodeAeson, decodeAeson, encodeAeson, encodeAeson', (.:)) +import Aeson + ( class DecodeAeson + , class EncodeAeson + , decodeAeson + , encodeAeson + , encodeAeson' + , (.:) + ) import Control.Alt ((<|>)) import Data.Argonaut (encodeJson) import Data.Argonaut.Decode (JsonDecodeError(UnexpectedValue)) @@ -72,18 +79,20 @@ instance DecodeAeson PlutusData where Nothing -> Left $ UnexpectedValue $ encodeJson bytesHex Just res -> pure $ Bytes res - instance EncodeAeson PlutusData where encodeAeson' (Constr constr fields) = encodeAeson' - { "constr": encodeAeson constr, - "fields": encodeAeson fields + { "constr": encodeAeson constr + , "fields": encodeAeson fields + } + encodeAeson' (Map elems) = encodeAeson' + { "map": encodeAeson $ map + ( \(k /\ v) -> + { "key": encodeAeson k + , "value": encodeAeson v + } + ) + elems } - encodeAeson' (Map elems) = encodeAeson' { - "map": encodeAeson $ map (\(k /\ v) -> { - "key": encodeAeson k, - "value": encodeAeson v - }) elems - } encodeAeson' (List elems) = encodeAeson' elems encodeAeson' (Integer bi) = encodeAeson' bi encodeAeson' (Bytes ba) = encodeAeson' ba diff --git a/test/Data.purs b/test/Data.purs index 46935c752..cfa95f208 100644 --- a/test/Data.purs +++ b/test/Data.purs @@ -22,7 +22,14 @@ import FromData (class FromData, fromData, genericFromData) import Mote (group, skip, test) import Partial.Unsafe (unsafePartial) import Plutus.Types.AssocMap (Map(..)) -import Plutus.Types.DataSchema (class HasPlutusSchema, type (:+), type (:=), type (@@), I, PNil) +import Plutus.Types.DataSchema + ( class HasPlutusSchema + , type (:+) + , type (:=) + , type (@@) + , I + , PNil + ) import Serialization (toBytes) import Serialization.PlutusData as PDS import Test.QuickCheck.Arbitrary (class Arbitrary, arbitrary, genericArbitrary) @@ -37,7 +44,8 @@ import TypeLevel.RowList.Unordered.Indexed (NilI, ConsI, class UniqueIndices) import Types.ByteArray (hexToByteArrayUnsafe) import Untagged.Union (asOneOf) -plutusDataAesonRoundTrip ∷ ∀ (a ∷ Type). ToData a ⇒ FromData a ⇒ a → Either JsonDecodeError a +plutusDataAesonRoundTrip + ∷ ∀ (a ∷ Type). ToData a ⇒ FromData a ⇒ a → Either JsonDecodeError a plutusDataAesonRoundTrip x = do pd <- encodeAeson (toData x) # decodeAeson maybe (Left $ TypeMismatch "") (pure) $ fromData pd @@ -78,21 +86,23 @@ suite = do plutusDataAesonRoundTrip input `shouldEqual` Right input test "Map" do let - input = Map [ - BigInt.fromInt 13 /\ [ - Map [ - BigInt.fromInt 17 /\ false - ] - ] + input = Map + [ BigInt.fromInt 13 /\ + [ Map + [ BigInt.fromInt 17 /\ false + ] + ] ] plutusDataAesonRoundTrip input `shouldEqual` Right input group "Generic" do -- TODO: Quickcheckify test "CType: from . to == id" do let - input = C4 (Map [ - BigInt.fromInt 13 /\ [Map [BigInt.fromInt 17 /\ false]] - ]) + input = C4 + ( Map + [ BigInt.fromInt 13 /\ [ Map [ BigInt.fromInt 17 /\ false ] ] + ] + ) plutusDataAesonRoundTrip input `shouldEqual` Right input group "PlutusData representation tests: ToData/FromData" $ do group "Primitives" do @@ -128,12 +138,12 @@ suite = do fromData (toData input) `shouldEqual` Just input test "Map" do let - input = Map [ - BigInt.fromInt 13 /\ [ - Map [ - BigInt.fromInt 17 /\ false - ] - ] + input = Map + [ BigInt.fromInt 13 /\ + [ Map + [ BigInt.fromInt 17 /\ false + ] + ] ] fromData (toData input) `shouldEqual` Just input group "Generic" do @@ -252,10 +262,18 @@ data CType instance HasPlutusSchema CType ( "C0" := PNil @@ Z - :+ "C1" := PNil @@ (S Z) - :+ "C2" := PNil @@ (S (S Z)) - :+ "C3" := PNil @@ (S (S (S Z))) - :+ "C4" := PNil @@ (S (S (S (S Z)))) + :+ "C1" + := PNil + @@ (S Z) + :+ "C2" + := PNil + @@ (S (S Z)) + :+ "C3" + := PNil + @@ (S (S (S Z))) + :+ "C4" + := PNil + @@ (S (S (S (S Z)))) :+ PNil ) From d9444f25d7160bab8a2fe348e4796f85a64f0fb8 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Wed, 18 May 2022 16:17:54 +0200 Subject: [PATCH 05/85] Make Plutus.Types.AssocMap PlutusData-compatible with PlutusTx.AssocMap --- src/Plutus/Types/AssocMap.purs | 47 +++++++++++++----------- test/Data.purs | 65 +++++++++++++++++++++++++++------- 2 files changed, 78 insertions(+), 34 deletions(-) diff --git a/src/Plutus/Types/AssocMap.purs b/src/Plutus/Types/AssocMap.purs index e2cc2b3c0..4ef39fcfd 100644 --- a/src/Plutus/Types/AssocMap.purs +++ b/src/Plutus/Types/AssocMap.purs @@ -20,21 +20,9 @@ module Plutus.Types.AssocMap import Prelude -import Data.Array ((:)) -import Data.Array - ( any - , deleteAt - , filter - , findIndex - , mapMaybe - , null - , singleton - ) as Array +import Data.Array (any, deleteAt, filter, findIndex, mapMaybe, null, singleton) as Array +import Data.Array (reverse, (:)) import Data.Bifunctor (bimap) -import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe(Just, Nothing), isJust) -import Data.Newtype (class Newtype, unwrap) -import Data.Foldable (lookup) as Foldable import Data.Foldable ( class Foldable , foldlDefault @@ -42,6 +30,10 @@ import Data.Foldable , foldr , foldrDefault ) +import Data.Foldable (lookup) as Foldable +import Data.Generic.Rep (class Generic) +import Data.Maybe (Maybe(Just, Nothing), isJust) +import Data.Newtype (class Newtype, unwrap) import Data.Show.Generic (genericShow) import Data.These (These(Both, That, This), these) import Data.Traversable (class Traversable, for, sequence, traverse) @@ -50,6 +42,7 @@ import Data.Tuple.Nested (type (/\), (/\)) import FromData (class FromData, fromData) import ToData (class ToData, toData) import Types.PlutusData (PlutusData(Map)) as PD +import Data.Map (fromFoldable) -- Taken from local Hoogle server for the Haskell server which uses -- `plutus` rev: 1efbb276ef1a10ca6961d0fd32e6141e9798bd11 @@ -65,8 +58,14 @@ newtype Map (k :: Type) (v :: Type) = Map (Array (Tuple k v)) derive instance Generic (Map k v) _ derive instance Newtype (Map k v) _ -derive newtype instance (Eq k, Eq v) => Eq (Map k v) -derive newtype instance (Ord k, Ord v) => Ord (Map k v) + +-- We implement Ord/Eq instances to match that of Data.Map +-- and effectively ignore the element ordering. +instance (Ord k, Ord v) => Ord (Map k v) where + compare (Map ls) (Map rs) = compare (fromFoldable ls) (fromFoldable rs) + +instance (Ord k, Eq v) => Eq (Map k v) where + eq (Map ls) (Map rs) = eq (fromFoldable ls) (fromFoldable rs) instance (Show k, Show v) => Show (Map k v) where show = genericShow @@ -74,12 +73,18 @@ instance (Show k, Show v) => Show (Map k v) where instance (ToData k, ToData v) => ToData (Map k v) where toData (Map xs) = PD.Map (bimap toData toData <$> xs) +-- The plutus-tx AssocMap FromData instance reverses the element order. +-- This makes the purescript-brige compatiblity tests fail as the +-- Haskell Eq instance is simply derived and sensitive to element +-- ordering. +-- We reverse the order as well to keep the round trip encodings equal. +-- See https://github.com/input-output-hk/plutus/blob/650a0659cbaacec2166e0153d2393c779cedc4c0/plutus-tx/src/PlutusTx/AssocMap.hs#L86 instance (FromData k, FromData v) => FromData (Map k v) where fromData (PD.Map mp) = do - Map <$> - ( for mp \(k /\ v) -> - Tuple <$> fromData k <*> fromData v - ) + Map <$> do + xs <- for mp \(k /\ v) -> + Tuple <$> fromData k <*> fromData v + pure $ reverse xs -- NOTE: Explanation is above fromData _ = Nothing instance Functor (Map k) where @@ -222,4 +227,4 @@ mapMaybeWithKey -> Map k a -> Map k b mapMaybeWithKey f (Map xs) = - Map $ Array.mapMaybe (\(k /\ v) -> (k /\ _) <$> f k v) xs \ No newline at end of file + Map $ Array.mapMaybe (\(k /\ v) -> (k /\ _) <$> f k v) xs diff --git a/test/Data.purs b/test/Data.purs index cfa95f208..4553eebfb 100644 --- a/test/Data.purs +++ b/test/Data.purs @@ -43,6 +43,7 @@ import TypeLevel.RowList (class AllUniqueLabels) import TypeLevel.RowList.Unordered.Indexed (NilI, ConsI, class UniqueIndices) import Types.ByteArray (hexToByteArrayUnsafe) import Untagged.Union (asOneOf) +import Plutus.Types.AssocMap as AssocMap plutusDataAesonRoundTrip ∷ ∀ (a ∷ Type). ToData a ⇒ FromData a ⇒ a → Either JsonDecodeError a @@ -84,16 +85,29 @@ suite = do let input = [ Just true, Just false, Nothing ] plutusDataAesonRoundTrip input `shouldEqual` Right input - test "Map" do + group "Map" do let - input = Map - [ BigInt.fromInt 13 /\ - [ Map - [ BigInt.fromInt 17 /\ false + inputs = + [ Map + [ BigInt.fromInt 1 /\ + [ Map + [ BigInt.fromInt 11 /\ false + , BigInt.fromInt 12 /\ true + ] + ] + , BigInt.fromInt 2 /\ + [ Map + [ BigInt.fromInt 21 /\ false + , BigInt.fromInt 22 /\ false + , BigInt.fromInt 23 /\ true + ] ] + , BigInt.fromInt 3 /\ [] ] ] - plutusDataAesonRoundTrip input `shouldEqual` Right input + for_ inputs \input -> do + test (show input) do + plutusDataAesonRoundTrip input `shouldEqual` Right input group "Generic" do -- TODO: Quickcheckify test "CType: from . to == id" do @@ -136,14 +150,39 @@ suite = do let input = [ Just true, Just false, Nothing ] fromData (toData input) `shouldEqual` Just input - test "Map" do + test "AssocMap" do let - input = Map - [ BigInt.fromInt 13 /\ - [ Map - [ BigInt.fromInt 17 /\ false - ] + input = AssocMap.Map + [ BigInt.fromInt 1 /\ + [ ( AssocMap.Map + [ BigInt.fromInt 17 /\ false, BigInt.fromInt 13 /\ true ] + ) ] + , BigInt.fromInt 3 /\ [] + ] + fromData (toData input) `shouldEqual` Just input + test "AssocMap #2" do + let + input = AssocMap.Map + [ BigInt.fromInt 1 /\ [ true, false, false ] + , BigInt.fromInt 3 /\ [ false, true, true ] + , BigInt.fromInt 7 /\ [ true, false, true ] + ] + fromData (toData input) `shouldEqual` Just input + test "AssocMap #3" do + let + input = + [ AssocMap.Map + [ BigInt.fromInt 17 /\ false + , BigInt.fromInt 13 /\ true + ] + ] + fromData (toData input) `shouldEqual` Just input + test "AssocMap #4" do + let + input = AssocMap.Map + [ BigInt.fromInt 1 /\ (AssocMap.Map [ true /\ false ]) + , BigInt.fromInt 3 /\ (AssocMap.Map [ false /\ false ]) ] fromData (toData input) `shouldEqual` Just input group "Generic" do @@ -257,7 +296,7 @@ data CType | C1 (Maybe MyBigInt) | C2 MyBigInt Boolean | C3 MyBigInt Boolean Boolean - | C4 (Map BigInt (Array (Map BigInt Boolean))) + | C4 (AssocMap.Map BigInt (Array (AssocMap.Map BigInt Boolean))) instance HasPlutusSchema CType From 5265417048d67be3f26ca556fa5094f39efc58b2 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Wed, 18 May 2022 17:54:37 +0200 Subject: [PATCH 06/85] Matching plutus-core Data with Types.PlutusData PlutusData rep (confusing) --- src/Deserialization/PlutusData.purs | 6 +++++- src/Types/PlutusData.purs | 12 +++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/Deserialization/PlutusData.purs b/src/Deserialization/PlutusData.purs index 772b39446..7742d043a 100644 --- a/src/Deserialization/PlutusData.purs +++ b/src/Deserialization/PlutusData.purs @@ -5,6 +5,7 @@ module Deserialization.PlutusData import Prelude import Control.Alt ((<|>)) +import Data.Array (reverse) import Data.Maybe (Maybe) import Data.Traversable (traverse) import Data.Tuple (Tuple(Tuple)) @@ -45,6 +46,9 @@ convertPlutusConstr pd = do alt <- bigNumToBigInt $ _ConstrPlutusData_alternative constr pure $ T.Constr alt data' +-- Similar to PLutusTx.AssocMap plutus-core seems to revere the order +-- of elements which breaks the purescript-bridge roundtrip tests. +-- See https://github.com/input-output-hk/plutus/blob/5112dff90536f10992ba953e4a74ef375e3f7bfa/plutus-core/plutus-core/src/PlutusCore/Data.hs#L245 convertPlutusMap :: PlutusData -> Maybe T.PlutusData convertPlutusMap pd = do entries <- _PlutusData_map maybeFfiHelper pd >>= @@ -53,7 +57,7 @@ convertPlutusMap pd = do k' <- convertPlutusData k v' <- convertPlutusData v pure (k' /\ v') - pure $ T.Map entries + pure $ T.Map (reverse entries) -- NOTE: Reversing entires convertPlutusList :: PlutusData -> Maybe T.PlutusData convertPlutusList pd = T.List <$> do diff --git a/src/Types/PlutusData.purs b/src/Types/PlutusData.purs index 02d566aea..10d1ba317 100644 --- a/src/Types/PlutusData.purs +++ b/src/Types/PlutusData.purs @@ -18,6 +18,7 @@ import Data.Argonaut.Decode (JsonDecodeError(UnexpectedValue)) import Data.BigInt (BigInt) import Data.Either (Either(Left)) import Data.Generic.Rep (class Generic) +import Data.Map (fromFoldable) import Data.Maybe (Maybe(Just, Nothing)) import Data.Show.Generic (genericShow) import Data.Traversable (for) @@ -33,10 +34,19 @@ data PlutusData | Integer BigInt | Bytes ByteArray -derive instance Eq PlutusData derive instance Ord PlutusData derive instance Generic PlutusData _ +-- Explicity specifying the Eq instance to capture +-- the Data.Map equality on `Map` values. +instance Eq PlutusData where + eq (Constr li lfs) (Constr ri rfs) = eq li ri && eq lfs rfs + eq (Map ls) (Map rs) = eq (fromFoldable ls) (fromFoldable rs) + eq (List ls) (List rs) = eq ls rs + eq (Integer l) (Integer r) = eq l r + eq (Bytes l) (Bytes r) = eq l r + eq _ _ = false + instance Show PlutusData where show x = genericShow x From 7bb3b701bece56b622e44bab6d3c366a1cdef051 Mon Sep 17 00:00:00 2001 From: MangoIV Date: Wed, 18 May 2022 18:05:40 +0200 Subject: [PATCH 07/85] adjust api to work for an arbitrary hashing method from PlutusTx --- server/src/Api.hs | 18 +++++++------- server/src/Api/Handlers.hs | 20 +++++++++------ server/src/Types.hs | 51 ++++++++++++++++++++++++++++++++++---- server/test/Main.hs | 14 ++++++----- 4 files changed, 76 insertions(+), 27 deletions(-) diff --git a/server/src/Api.hs b/server/src/Api.hs index 6e826f724..1ff9264f7 100644 --- a/server/src/Api.hs +++ b/server/src/Api.hs @@ -5,7 +5,7 @@ module Api ( finalizeTx, hashData, hashScript, - blake2bHash, + plutusHash, apiDocs, ) where @@ -42,8 +42,7 @@ import Types ( AppM (AppM), AppliedScript, ApplyArgsRequest, - Blake2bHash, - BytesToHash, + ByteStringHash, Cbor, CborDecodeError (InvalidCbor, InvalidHex, OtherDecodeError), CtlServerError (CborDecode), @@ -53,6 +52,7 @@ import Types ( FinalizedTransaction, HashDataRequest, HashScriptRequest, + HashBytesRequest, HashedData, HashedScript, WitnessCount, @@ -74,9 +74,9 @@ type Api = :> Post '[JSON] HashedScript -- Making this a POST request so we can just use the @From/ToJSON@ -- instances instead of decoding in the handler - :<|> "blake2b" - :> ReqBody '[JSON] BytesToHash - :> Post '[JSON] Blake2bHash + :<|> "plutus-hash" + :> ReqBody '[JSON] HashBytesRequest + :> Post '[JSON] ByteStringHash :<|> "finalize" :> ReqBody '[JSON] FinalizeRequest :> Post '[JSON] FinalizedTransaction @@ -124,7 +124,7 @@ server = Handlers.estimateTxFees :<|> Handlers.applyArgs :<|> Handlers.hashScript - :<|> Handlers.blake2bHash + :<|> Handlers.plutusHash :<|> Handlers.finalizeTx :<|> Handlers.hashData @@ -134,13 +134,13 @@ apiDocs = Docs.docs api estimateTxFees :: WitnessCount -> Cbor -> ClientM Fee applyArgs :: ApplyArgsRequest -> ClientM AppliedScript hashScript :: HashScriptRequest -> ClientM HashedScript -blake2bHash :: BytesToHash -> ClientM Blake2bHash +plutusHash :: HashBytesRequest -> ClientM ByteStringHash finalizeTx :: FinalizeRequest -> ClientM FinalizedTransaction hashData :: HashDataRequest -> ClientM HashedData estimateTxFees :<|> applyArgs :<|> hashScript - :<|> blake2bHash + :<|> plutusHash :<|> finalizeTx :<|> hashData = client api diff --git a/server/src/Api/Handlers.hs b/server/src/Api/Handlers.hs index d11f44d94..7dfd3a511 100644 --- a/server/src/Api/Handlers.hs +++ b/server/src/Api/Handlers.hs @@ -5,7 +5,7 @@ module Api.Handlers ( applyArgs, hashData, hashScript, - blake2bHash, + plutusHash, finalizeTx, ) where @@ -40,7 +40,7 @@ import Types ( AppM, AppliedScript (AppliedScript), ApplyArgsRequest (ApplyArgsRequest, args, script), - Blake2bHash (Blake2bHash), + ByteStringHash (ByteStringHash), BytesToHash (BytesToHash), Cbor (Cbor), CborDecodeError (InvalidCbor, InvalidHex, OtherDecodeError), @@ -52,7 +52,10 @@ import Types ( HashDataRequest (HashDataRequest), HashScriptRequest (HashScriptRequest), HashedData (HashedData), - HashedScript (HashedScript), + HashedBytes (HashedBytes), + HashBytesRequest (HashBytesRequest), + HashedScript (HashedScript), + HashMethod (Blake2b_256, Sha2_256, Sha3_256), WitnessCount (WitnessCount), hashLedgerScript, ) @@ -86,10 +89,13 @@ throwDecodeErrorWithMessage :: forall (a :: Type). String -> Maybe a -> AppM a throwDecodeErrorWithMessage msg = maybe (throwM . CborDecode $ OtherDecodeError msg) pure -blake2bHash :: BytesToHash -> AppM Blake2bHash -blake2bHash (BytesToHash hs) = - pure . Blake2bHash . PlutusTx.fromBuiltin . PlutusTx.blake2b_256 $ - PlutusTx.toBuiltin hs +plutusHash :: HashBytesRequest -> AppM ByteStringHash +plutusHash (HashBytesRequest meth (BytesToHash hs)) = + let hf = case meth of + Sha3_256 -> PlutusTx.sha3_256 + Sha2_256 -> PlutusTx.sha2_256 + Blake2b_256 -> PlutusTx.blake2b_256 + in pure . ByteStringHash meth . HashedBytes . PlutusTx.fromBuiltin . hf $ PlutusTx.toBuiltin hs finalizeTx :: FinalizeRequest -> AppM FinalizedTransaction finalizeTx FinalizeRequest {tx, datums, redeemers} = do diff --git a/server/src/Types.hs b/server/src/Types.hs index 733c6efeb..8ee576373 100644 --- a/server/src/Types.hs +++ b/server/src/Types.hs @@ -10,11 +10,14 @@ module Types ( ApplyArgsRequest (..), AppliedScript (..), BytesToHash (..), - Blake2bHash (..), + ByteStringHash (..), FinalizeRequest (..), FinalizedTransaction (..), HashDataRequest (..), + HashBytesRequest (..), + HashedBytes (..), HashedData (..), + HashMethod (..), HashScriptRequest (..), HashedScript (..), CborDecodeError (..), @@ -123,16 +126,37 @@ newtype AppliedScript = AppliedScript Ledger.Script deriving stock (Show, Generic) deriving newtype (Eq, FromJSON, ToJSON) +data HashBytesRequest = HashBytesRequest + { methodToUse :: HashMethod + , bytesToHash :: BytesToHash + } + deriving stock (Show, Eq, Generic) + deriving anyclass (FromJSON, ToJSON) + newtype BytesToHash = BytesToHash ByteString deriving stock (Show, Generic) deriving newtype (Eq) deriving (FromJSON, ToJSON) via JsonHexString -newtype Blake2bHash = Blake2bHash ByteString +newtype HashedBytes = HashedBytes ByteString deriving stock (Show, Generic) deriving newtype (Eq) deriving (FromJSON, ToJSON) via JsonHexString +data HashMethod = Blake2b_256 + | Sha2_256 + | Sha3_256 + deriving stock (Show, Eq, Generic) + deriving anyclass (FromJSON, ToJSON) + + +data ByteStringHash = ByteStringHash + { methodUsed :: HashMethod + , hash :: HashedBytes + } + deriving stock (Show, Eq, Generic) + deriving anyclass (FromJSON, ToJSON) + data FinalizeRequest = FinalizeRequest { tx :: Cbor , datums :: [Cbor] @@ -324,18 +348,35 @@ instance Docs.ToSample FinalizedTransaction where ] instance Docs.ToSample BytesToHash where - toSamples _ = [("Bytes to hash as hexadecimal string", BytesToHash "foo")] + toSamples _ = [("Bytes to hash as hexadecimal string", BytesToHash "68656C6C6F20776F726C64")] -instance Docs.ToSample Blake2bHash where +instance Docs.ToSample ByteStringHash where toSamples _ = [ ( "Hash bytes are returned as hexidecimal string" - , Blake2bHash + , ByteStringHash Blake2b_256 $ HashedBytes "\184\254\159\DELbU\166\250\b\246h\171c*\ \\141\b\SUB\216y\131\199|\210t\228\140\228P\240\179I\253" ) ] +instance Docs.ToSample HashMethod where + toSamples _ = + [ + ( "Method to use for hashing as defined in PlutusTx" + , Sha2_256 + ) + ] + +instance Docs.ToSample HashBytesRequest where + toSamples _ = + [ + ( "Request consisting of a HashMethod and the bytestring to be hashed" + , HashBytesRequest Blake2b_256 $ BytesToHash "foo" + ) + ] + + -- For decoding test fixtures, samples, etc... unsafeDecode :: forall (a :: Type). FromJSON a => String -> LC8.ByteString -> a unsafeDecode name = fromMaybe (error errorMsg) . Aeson.decode diff --git a/server/test/Main.hs b/server/test/Main.hs index 65a3d53cc..44a632d0d 100644 --- a/server/test/Main.hs +++ b/server/test/Main.hs @@ -1,6 +1,6 @@ module Main (main) where -import Api (app, applyArgs, blake2bHash, estimateTxFees, hashData, hashScript) +import Api (app, applyArgs, plutusHash, estimateTxFees, hashData, hashScript) import Cardano.Api qualified as C import Data.ByteString.Lazy.Char8 qualified as LC8 import Data.Kind (Type) @@ -36,7 +36,10 @@ import Test.Hspec.Core.Spec (SpecM) import Types ( AppliedScript (AppliedScript), ApplyArgsRequest (ApplyArgsRequest, args, script), - Blake2bHash (Blake2bHash), + ByteStringHash (ByteStringHash), + HashBytesRequest (HashBytesRequest), + HashedBytes (HashedBytes), + HashMethod (Blake2b_256), BytesToHash (BytesToHash), Cbor (Cbor), Env, @@ -151,13 +154,12 @@ blake2bHashSpec = around withTestApp $ do it "gets the blake2b_256 hash" $ \port -> do result <- runClientM' (clientEnv port) $ - blake2bHash (BytesToHash "foo") + plutusHash (HashBytesRequest Blake2b_256 $ BytesToHash "foo") result `shouldBe` Right blake2bRes where -- obtained from `fromBuiltin . blake2b_256 $ toBuiltin @ByteString "foo"` - blake2bRes :: Blake2bHash - blake2bRes = - Blake2bHash + blake2bRes :: ByteStringHash + blake2bRes = ByteStringHash Blake2b_256 $ HashedBytes "\184\254\159\DELbU\166\250\b\246h\171c*\141\b\SUB\216y\131\199|\210t\228\140\228P\240\179I\253" setupClientEnv :: SpecM Port (Port -> ClientEnv) From f03223f0b10b7a9a45e844172104b7fd660c51a9 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Wed, 18 May 2022 18:28:45 +0200 Subject: [PATCH 08/85] plutus-core Map encoding issues #2 --- src/Serialization/PlutusData.purs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Serialization/PlutusData.purs b/src/Serialization/PlutusData.purs index 77b0e5f40..e9f6b02ce 100644 --- a/src/Serialization/PlutusData.purs +++ b/src/Serialization/PlutusData.purs @@ -5,12 +5,12 @@ module Serialization.PlutusData import Prelude +import Data.Array (reverse) import Data.BigInt as BigInt import Data.Maybe (Maybe) import Data.Traversable (for, traverse) import Data.Tuple (Tuple, fst, snd) import Data.Tuple.Nested (type (/\), (/\)) - import FfiHelpers ( ContainerHelper , MaybeFfiHelper @@ -32,7 +32,7 @@ import Types.PlutusData as T convertPlutusData :: T.PlutusData -> Maybe PlutusData convertPlutusData = case _ of T.Constr alt list -> convertConstr alt list - T.Map mp -> convertPlutusMap mp + T.Map mp -> convertPlutusMap (reverse mp) T.List lst -> convertPlutusList lst T.Integer n -> convertPlutusInteger n T.Bytes b -> pure $ _mkPlutusData_bytes b From 81373e5822578d0dcba1863330de18d209013a7c Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Wed, 18 May 2022 18:35:23 +0200 Subject: [PATCH 09/85] plutus-core Map encoding issues #3 --- src/Deserialization/PlutusData.purs | 3 +-- src/Serialization/PlutusData.purs | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/Deserialization/PlutusData.purs b/src/Deserialization/PlutusData.purs index 7742d043a..d19316437 100644 --- a/src/Deserialization/PlutusData.purs +++ b/src/Deserialization/PlutusData.purs @@ -5,7 +5,6 @@ module Deserialization.PlutusData import Prelude import Control.Alt ((<|>)) -import Data.Array (reverse) import Data.Maybe (Maybe) import Data.Traversable (traverse) import Data.Tuple (Tuple(Tuple)) @@ -57,7 +56,7 @@ convertPlutusMap pd = do k' <- convertPlutusData k v' <- convertPlutusData v pure (k' /\ v') - pure $ T.Map (reverse entries) -- NOTE: Reversing entires + pure $ T.Map entries convertPlutusList :: PlutusData -> Maybe T.PlutusData convertPlutusList pd = T.List <$> do diff --git a/src/Serialization/PlutusData.purs b/src/Serialization/PlutusData.purs index e9f6b02ce..42fcce732 100644 --- a/src/Serialization/PlutusData.purs +++ b/src/Serialization/PlutusData.purs @@ -5,7 +5,6 @@ module Serialization.PlutusData import Prelude -import Data.Array (reverse) import Data.BigInt as BigInt import Data.Maybe (Maybe) import Data.Traversable (for, traverse) @@ -32,7 +31,7 @@ import Types.PlutusData as T convertPlutusData :: T.PlutusData -> Maybe PlutusData convertPlutusData = case _ of T.Constr alt list -> convertConstr alt list - T.Map mp -> convertPlutusMap (reverse mp) + T.Map mp -> convertPlutusMap mp T.List lst -> convertPlutusList lst T.Integer n -> convertPlutusInteger n T.Bytes b -> pure $ _mkPlutusData_bytes b From 51bc89e8c96db460aaa1918b72a1f25a5d082cdc Mon Sep 17 00:00:00 2001 From: MangoIV Date: Wed, 18 May 2022 19:17:17 +0200 Subject: [PATCH 10/85] add documentation for the new endpoint --- server/README.md | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/server/README.md b/server/README.md index e24fcac66..37616b489 100644 --- a/server/README.md +++ b/server/README.md @@ -51,7 +51,7 @@ The server executable can be built with `nix build .#cardano-trasaction-lib-serv "4d01000033222220051200120011" ``` -## POST /blake2b +## POST /plutusHash ### Request: @@ -61,9 +61,13 @@ The server executable can be built with `nix build .#cardano-trasaction-lib-serv - `application/json` - Bytes to hash as hexadecimal string (`application/json;charset=utf-8`, `application/json`): +- Hashing method from PlutusTx to hash with; one of `Sha2_256`, `Sha3_256`, `Blake2b_256` ```javascript -"666f6f" +{ + "bytesToHash" : "68656C6C6F20776F726C64" + "methodToUse" : "Sha3_256", +} ``` ### Response: @@ -77,9 +81,13 @@ The server executable can be built with `nix build .#cardano-trasaction-lib-serv - `application/json` - Hash bytes are returned as hexidecimal string (`application/json;charset=utf-8`, `application/json`): +- Hashing Method used; one of `Sha2_256`, `Sha3_256`, `Blake2b_256` ```javascript -"b8fe9f7f6255a6fa08f668ab632a8d081ad87983c77cd274e48ce450f0b349fd" +{ + "hash":"644bcc7e564373040999aac89e7622f3ca71fba1d972fd94a31c3bfbf24e3938", + "methodUsed":"Sha3_256" +} ``` ## GET /eval-ex-units From 404f9e274a66c9fa6982bbb4d728cbb0e7f2eea7 Mon Sep 17 00:00:00 2001 From: MangoIV Date: Wed, 18 May 2022 20:25:38 +0200 Subject: [PATCH 11/85] added frontend part of plutusHash --- src/QueryM.purs | 63 +------------------ src/QueryM/Crypto.purs | 139 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 141 insertions(+), 61 deletions(-) create mode 100644 src/QueryM/Crypto.purs diff --git a/src/QueryM.purs b/src/QueryM.purs index 7b9114cea..c955ec3b1 100644 --- a/src/QueryM.purs +++ b/src/QueryM.purs @@ -7,7 +7,6 @@ module QueryM , DispatchError(JsError, JsonError) , FeeEstimate(..) , FinalizedTransaction(..) - , HashedData(..) , module ServerConfig , ListenerSet , PendingRequests @@ -24,18 +23,16 @@ module QueryM , allowError , applyArgs , calculateMinFee - , datumHash , traceQueryConfig , evalTxExecutionUnits , finalizeTx , getWalletAddress , getChainTip , getWalletCollateral - , hashData - , hashScript , listeners , mkDatumCacheWebSocketAff , mkOgmiosRequest + , mkServerEndpointUrl , mkOgmiosWebSocketAff , ownPaymentPubKeyHash , ownPubKeyHash @@ -49,6 +46,7 @@ module QueryM , getDatumByHash , getDatumsByHashes , startFetchBlocks + , scriptToJson , cancelFetchBlocks ) where @@ -143,7 +141,6 @@ import Serialization.Address , baseAddressPaymentCred , stakeCredentialToKeyHash ) -import Serialization.Hash (ScriptHash) import Serialization.PlutusData (convertPlutusData) as Serialization import Serialization.WitnessSet (convertRedeemers) as Serialization import Types.ByteArray (ByteArray, byteArrayToHex, hexToByteArray) @@ -509,43 +506,6 @@ finalizeTx tx datums redeemers = do -- decode pure $ hush <<< Json.decodeJson =<< hush jsonBody -newtype HashedData = HashedData ByteArray - -derive instance Newtype HashedData _ -derive instance Generic HashedData _ - -instance Show HashedData where - show = genericShow - -instance Json.DecodeJson HashedData where - decodeJson = - map HashedData <<< - Json.caseJsonString (Left err) (note err <<< hexToByteArray) - where - err :: Json.JsonDecodeError - err = Json.TypeMismatch "Expected hex bytes (raw) of hashed data" - -hashData :: Datum -> QueryM (Maybe HashedData) -hashData datum = do - body <- - liftEffect $ byteArrayToHex <<< Serialization.toBytes <<< asOneOf - <$> maybe' (\_ -> throw $ "Failed to convert plutus data: " <> show datum) - pure - (Serialization.convertPlutusData $ unwrap datum) - url <- mkServerEndpointUrl "hash-data" - -- get response json - jsonBody <- - liftAff - ( Affjax.post Affjax.ResponseFormat.json url - (Just $ Affjax.RequestBody.Json $ encodeString body) - ) <#> map \x -> x.body - -- decode - pure $ hush <<< Json.decodeJson =<< hush jsonBody - --- | Hashes an Plutus-style Datum -datumHash :: Datum -> QueryM (Maybe DatumHash) -datumHash = map (map (Transaction.DataHash <<< unwrap)) <<< hashData - -- | Apply `PlutusData` arguments to any type isomorphic to `PlutusScript`, -- | returning an updated script with the provided arguments applied applyArgs @@ -586,25 +546,6 @@ applyArgs script args = case traverse plutusDataToJson args of ) <<< Serialization.convertPlutusData -hashScript - :: forall (a :: Type) (b :: Type) - . Newtype a PlutusScript - => Newtype b ScriptHash - => a - -> QueryM (Either ClientError b) -hashScript script = do - url <- mkServerEndpointUrl "hash-script" - let - reqBody :: Maybe Affjax.RequestBody.RequestBody - reqBody = Just - $ Affjax.RequestBody.Json - $ scriptToJson - $ unwrap script - liftAff (Affjax.post Affjax.ResponseFormat.json url reqBody) - <#> either - (Left <<< ClientHttpError) - (bimap ClientDecodeJsonError wrap <<< Json.decodeJson <<< _.body) - -- It's easier to just write the encoder here than provide an `EncodeJson` -- instance (there are some brutal cyclical dependency issues trying to -- write an instance in the `Types.*` modules) diff --git a/src/QueryM/Crypto.purs b/src/QueryM/Crypto.purs new file mode 100644 index 000000000..80612055e --- /dev/null +++ b/src/QueryM/Crypto.purs @@ -0,0 +1,139 @@ +module QueryM.Crypto + ( hashData + , hashScript + , datumHash + , plutusHash + , HashedData(..) + , HashMethod(..) + ) where + +import Data.Argonaut.Encode.Combinators +import Prelude + +import Affjax as Affjax +import Affjax.RequestBody as Affjax.RequestBody +import Affjax.ResponseFormat as Affjax.ResponseFormat +import Control.Monad.Reader.Trans (ReaderT, runReaderT, withReaderT, ask, asks) +import Data.Argonaut as Json +import Data.Argonaut (Json, encodeJson, class EncodeJson) +import Data.Argonaut.Encode.Encoders (encodeString) +import Data.Bifunctor (bimap) +import Data.Either (Either(..), hush, note, either) +import Data.Generic.Rep (class Generic) +import Data.Maybe (Maybe(..), maybe') +import Data.Newtype (class Newtype, unwrap, wrap) +import Data.Show.Generic (genericShow) +import Effect.Aff.Class (liftAff) +import Effect.Class (liftEffect) +import Effect.Exception (throw) +import QueryM (ClientError(..), QueryM, mkServerEndpointUrl, scriptToJson) +import QueryM.ServerConfig + ( Host + , ServerConfig + , defaultDatumCacheWsConfig + , defaultOgmiosWsConfig + , defaultServerConfig + , mkHttpUrl + , mkOgmiosDatumCacheWsUrl + , mkServerUrl + , mkWsUrl + ) +import Serialization (toBytes) as Serialization +import Serialization.Hash (ScriptHash) +import Serialization.PlutusData (convertPlutusData) as Serialization +import Types.ByteArray (ByteArray, byteArrayToHex, hexToByteArray) +import Types.Datum (Datum, DatumHash) +import Types.Scripts (PlutusScript) +import Types.Transaction as Transaction +import Untagged.Union (asOneOf) + +data HashMethod + = Blake2b_256 + | Sha2_256 + | Sha3_256 + +derive instance Generic HashMethod _ + +instance Show HashMethod where + show = genericShow + +plutusHash + :: forall (r :: Row Type). HashMethod -> ByteArray -> QueryM (Maybe ByteArray) +plutusHash meth bytes = do + url <- asks $ (_ <> "/" <> "blake2b") <<< mkHttpUrl <<< _.serverConfig + let + methJson :: Json + methJson = case meth of + Blake2b_256 -> encodeString "Blake2b_256" + Sha2_256 -> encodeString "Sha2_256" + Sha3_256 -> encodeString "Sha3_256" + + bytesJson :: Json + bytesJson = encodeString $ byteArrayToHex bytes + + requestJson :: Json + requestJson = "bytesToHash" := bytesJson + ~> "methodToUse" := methJson + + reqBody :: Maybe Affjax.RequestBody.RequestBody + reqBody = Just + $ Affjax.RequestBody.Json requestJson + liftAff (Affjax.post Affjax.ResponseFormat.json url reqBody) + <#> either (const Nothing) (hush <<< Json.decodeJson <<< _.body) + +hashData :: Datum -> QueryM (Maybe HashedData) +hashData datum = do + body <- + liftEffect $ byteArrayToHex <<< Serialization.toBytes <<< asOneOf + <$> maybe' (\_ -> throw $ "Failed to convert plutus data: " <> show datum) + pure + (Serialization.convertPlutusData $ unwrap datum) + url <- mkServerEndpointUrl "hash-data" + -- get response json + jsonBody <- + liftAff + ( Affjax.post Affjax.ResponseFormat.json url + (Just $ Affjax.RequestBody.Json $ encodeString body) + ) <#> map \x -> x.body + -- decode + pure $ hush <<< Json.decodeJson =<< hush jsonBody + +-- | Hashes an Plutus-style Datum +datumHash :: Datum -> QueryM (Maybe DatumHash) +datumHash = map (map (Transaction.DataHash <<< unwrap)) <<< hashData + +newtype HashedData = HashedData ByteArray + +derive instance Newtype HashedData _ +derive instance Generic HashedData _ + +instance Show HashedData where + show = genericShow + +instance Json.DecodeJson HashedData where + decodeJson = + map HashedData <<< + Json.caseJsonString (Left err) (note err <<< hexToByteArray) + where + err :: Json.JsonDecodeError + err = Json.TypeMismatch "Expected hex bytes (raw) of hashed data" + +hashScript + :: forall (a :: Type) (b :: Type) + . Newtype a PlutusScript + => Newtype b ScriptHash + => a + -> QueryM (Either ClientError b) +hashScript script = do + url <- mkServerEndpointUrl "hash-script" + let + reqBody :: Maybe Affjax.RequestBody.RequestBody + reqBody = Just + $ Affjax.RequestBody.Json + $ scriptToJson + $ unwrap script + liftAff (Affjax.post Affjax.ResponseFormat.json url reqBody) + <#> either + (Left <<< ClientHttpError) + (bimap ClientDecodeJsonError wrap <<< Json.decodeJson <<< _.body) + From 7e8f8747e50c217823f37f1850db70dd9252dddd Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Wed, 18 May 2022 21:57:45 +0200 Subject: [PATCH 12/85] Revert "plutus-core Map encoding issues #3" This reverts commit 81373e5822578d0dcba1863330de18d209013a7c. --- src/Deserialization/PlutusData.purs | 3 ++- src/Serialization/PlutusData.purs | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Deserialization/PlutusData.purs b/src/Deserialization/PlutusData.purs index d19316437..7742d043a 100644 --- a/src/Deserialization/PlutusData.purs +++ b/src/Deserialization/PlutusData.purs @@ -5,6 +5,7 @@ module Deserialization.PlutusData import Prelude import Control.Alt ((<|>)) +import Data.Array (reverse) import Data.Maybe (Maybe) import Data.Traversable (traverse) import Data.Tuple (Tuple(Tuple)) @@ -56,7 +57,7 @@ convertPlutusMap pd = do k' <- convertPlutusData k v' <- convertPlutusData v pure (k' /\ v') - pure $ T.Map entries + pure $ T.Map (reverse entries) -- NOTE: Reversing entires convertPlutusList :: PlutusData -> Maybe T.PlutusData convertPlutusList pd = T.List <$> do diff --git a/src/Serialization/PlutusData.purs b/src/Serialization/PlutusData.purs index 42fcce732..e9f6b02ce 100644 --- a/src/Serialization/PlutusData.purs +++ b/src/Serialization/PlutusData.purs @@ -5,6 +5,7 @@ module Serialization.PlutusData import Prelude +import Data.Array (reverse) import Data.BigInt as BigInt import Data.Maybe (Maybe) import Data.Traversable (for, traverse) @@ -31,7 +32,7 @@ import Types.PlutusData as T convertPlutusData :: T.PlutusData -> Maybe PlutusData convertPlutusData = case _ of T.Constr alt list -> convertConstr alt list - T.Map mp -> convertPlutusMap mp + T.Map mp -> convertPlutusMap (reverse mp) T.List lst -> convertPlutusList lst T.Integer n -> convertPlutusInteger n T.Bytes b -> pure $ _mkPlutusData_bytes b From 88f7b1b7c8b111147e2a69d0f321056a8f370f9a Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Wed, 18 May 2022 21:57:45 +0200 Subject: [PATCH 13/85] Revert "plutus-core Map encoding issues #2" This reverts commit f03223f0b10b7a9a45e844172104b7fd660c51a9. --- src/Serialization/PlutusData.purs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Serialization/PlutusData.purs b/src/Serialization/PlutusData.purs index e9f6b02ce..77b0e5f40 100644 --- a/src/Serialization/PlutusData.purs +++ b/src/Serialization/PlutusData.purs @@ -5,12 +5,12 @@ module Serialization.PlutusData import Prelude -import Data.Array (reverse) import Data.BigInt as BigInt import Data.Maybe (Maybe) import Data.Traversable (for, traverse) import Data.Tuple (Tuple, fst, snd) import Data.Tuple.Nested (type (/\), (/\)) + import FfiHelpers ( ContainerHelper , MaybeFfiHelper @@ -32,7 +32,7 @@ import Types.PlutusData as T convertPlutusData :: T.PlutusData -> Maybe PlutusData convertPlutusData = case _ of T.Constr alt list -> convertConstr alt list - T.Map mp -> convertPlutusMap (reverse mp) + T.Map mp -> convertPlutusMap mp T.List lst -> convertPlutusList lst T.Integer n -> convertPlutusInteger n T.Bytes b -> pure $ _mkPlutusData_bytes b From e744b5e78d0d87d413bcca959e1b9a29771ee022 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Wed, 18 May 2022 21:57:45 +0200 Subject: [PATCH 14/85] Revert "Matching plutus-core Data with Types.PlutusData PlutusData rep (confusing)" This reverts commit 5265417048d67be3f26ca556fa5094f39efc58b2. --- src/Deserialization/PlutusData.purs | 6 +----- src/Types/PlutusData.purs | 12 +----------- 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/src/Deserialization/PlutusData.purs b/src/Deserialization/PlutusData.purs index 7742d043a..772b39446 100644 --- a/src/Deserialization/PlutusData.purs +++ b/src/Deserialization/PlutusData.purs @@ -5,7 +5,6 @@ module Deserialization.PlutusData import Prelude import Control.Alt ((<|>)) -import Data.Array (reverse) import Data.Maybe (Maybe) import Data.Traversable (traverse) import Data.Tuple (Tuple(Tuple)) @@ -46,9 +45,6 @@ convertPlutusConstr pd = do alt <- bigNumToBigInt $ _ConstrPlutusData_alternative constr pure $ T.Constr alt data' --- Similar to PLutusTx.AssocMap plutus-core seems to revere the order --- of elements which breaks the purescript-bridge roundtrip tests. --- See https://github.com/input-output-hk/plutus/blob/5112dff90536f10992ba953e4a74ef375e3f7bfa/plutus-core/plutus-core/src/PlutusCore/Data.hs#L245 convertPlutusMap :: PlutusData -> Maybe T.PlutusData convertPlutusMap pd = do entries <- _PlutusData_map maybeFfiHelper pd >>= @@ -57,7 +53,7 @@ convertPlutusMap pd = do k' <- convertPlutusData k v' <- convertPlutusData v pure (k' /\ v') - pure $ T.Map (reverse entries) -- NOTE: Reversing entires + pure $ T.Map entries convertPlutusList :: PlutusData -> Maybe T.PlutusData convertPlutusList pd = T.List <$> do diff --git a/src/Types/PlutusData.purs b/src/Types/PlutusData.purs index 10d1ba317..02d566aea 100644 --- a/src/Types/PlutusData.purs +++ b/src/Types/PlutusData.purs @@ -18,7 +18,6 @@ import Data.Argonaut.Decode (JsonDecodeError(UnexpectedValue)) import Data.BigInt (BigInt) import Data.Either (Either(Left)) import Data.Generic.Rep (class Generic) -import Data.Map (fromFoldable) import Data.Maybe (Maybe(Just, Nothing)) import Data.Show.Generic (genericShow) import Data.Traversable (for) @@ -34,19 +33,10 @@ data PlutusData | Integer BigInt | Bytes ByteArray +derive instance Eq PlutusData derive instance Ord PlutusData derive instance Generic PlutusData _ --- Explicity specifying the Eq instance to capture --- the Data.Map equality on `Map` values. -instance Eq PlutusData where - eq (Constr li lfs) (Constr ri rfs) = eq li ri && eq lfs rfs - eq (Map ls) (Map rs) = eq (fromFoldable ls) (fromFoldable rs) - eq (List ls) (List rs) = eq ls rs - eq (Integer l) (Integer r) = eq l r - eq (Bytes l) (Bytes r) = eq l r - eq _ _ = false - instance Show PlutusData where show x = genericShow x From d5953f08b64bb2717c47242f40057da819fe5aa6 Mon Sep 17 00:00:00 2001 From: MangoIV Date: Thu, 19 May 2022 00:13:26 +0200 Subject: [PATCH 15/85] fixes and new integrations tests for QueryM.Crypto --- server/README.md | 2 +- src/Contract/Crypto.purs | 44 +++++++++++++++++++++++++ src/Contract/PlutusData.purs | 6 ---- src/QueryM/Crypto.purs | 64 +++++++++++++++++------------------- src/Scripts.purs | 4 ++- src/Types/ScriptLookups.purs | 2 +- src/Types/TypedTxOut.purs | 3 +- test/Crypto.purs | 58 ++++++++++++++++++++++++++++++++ test/Integration.purs | 2 ++ 9 files changed, 141 insertions(+), 44 deletions(-) create mode 100644 src/Contract/Crypto.purs create mode 100644 test/Crypto.purs diff --git a/server/README.md b/server/README.md index 37616b489..b76e93bda 100644 --- a/server/README.md +++ b/server/README.md @@ -51,7 +51,7 @@ The server executable can be built with `nix build .#cardano-trasaction-lib-serv "4d01000033222220051200120011" ``` -## POST /plutusHash +## POST /plutus-hash ### Request: diff --git a/src/Contract/Crypto.purs b/src/Contract/Crypto.purs new file mode 100644 index 000000000..ceb6cb53e --- /dev/null +++ b/src/Contract/Crypto.purs @@ -0,0 +1,44 @@ +module Contract.Crypto + ( hashData + , hashScript + , datumHash + , plutusHash + , HashedData(..) + , HashMethod(..) + ) where + +import Contract.Monad (Contract, wrapContract) +import Data.Either (Either) +import Data.Maybe (Maybe) +import Prelude ((<<<)) +import QueryM (ClientError) +import QueryM.Crypto as Crypt +import Serialization.Hash (ScriptHash) +import Types.ByteArray (ByteArray) +import Types.Datum (Datum, DatumHash) +import Types.Scripts (PlutusScript) +import Data.Newtype (class Newtype) + +type HashMethod = Crypt.HashMethod +type HashedData = Crypt.HashedData + +plutusHash + :: forall (r :: Row Type) + . HashMethod + -> ByteArray + -> Contract r (Maybe ByteArray) +plutusHash meth = wrapContract <<< Crypt.plutusHash meth + +hashData :: forall (r :: Row Type). Datum -> Contract r (Maybe HashedData) +hashData = wrapContract <<< Crypt.hashData + +hashScript + :: forall (a :: Type) (b :: Type) (r :: Row Type) + . Newtype a PlutusScript + => Newtype b ScriptHash + => a + -> Contract r (Either ClientError b) +hashScript = wrapContract <<< Crypt.hashScript + +datumHash :: forall (r :: Row Type). Datum -> Contract r (Maybe DatumHash) +datumHash = wrapContract <<< Crypt.datumHash diff --git a/src/Contract/PlutusData.purs b/src/Contract/PlutusData.purs index 82c49e869..e525ecbe7 100644 --- a/src/Contract/PlutusData.purs +++ b/src/Contract/PlutusData.purs @@ -4,7 +4,6 @@ -- | `ToData`. module Contract.PlutusData ( cancelFetchBlocks - , datumHash , getDatumByHash , getDatumsByHashes , startFetchBlocks @@ -31,7 +30,6 @@ import QueryM ) as ExportQueryM import QueryM ( cancelFetchBlocks - , datumHash , getDatumByHash , getDatumsByHashes , startFetchBlocks @@ -73,7 +71,3 @@ startFetchBlocks = wrapContract <<< QueryM.startFetchBlocks -- | Cancels a running block fetcher job. Throws on no fetchers running cancelFetchBlocks :: forall (r :: Row Type). Contract r Unit cancelFetchBlocks = wrapContract QueryM.cancelFetchBlocks - --- | Hashes a Plutus-style Datum -datumHash :: forall (r :: Row Type). Datum.Datum -> Contract r (Maybe DatumHash) -datumHash = wrapContract <<< QueryM.datumHash diff --git a/src/QueryM/Crypto.purs b/src/QueryM/Crypto.purs index 80612055e..fbb7df234 100644 --- a/src/QueryM/Crypto.purs +++ b/src/QueryM/Crypto.purs @@ -7,16 +7,22 @@ module QueryM.Crypto , HashMethod(..) ) where -import Data.Argonaut.Encode.Combinators import Prelude import Affjax as Affjax import Affjax.RequestBody as Affjax.RequestBody import Affjax.ResponseFormat as Affjax.ResponseFormat -import Control.Monad.Reader.Trans (ReaderT, runReaderT, withReaderT, ask, asks) -import Data.Argonaut as Json -import Data.Argonaut (Json, encodeJson, class EncodeJson) -import Data.Argonaut.Encode.Encoders (encodeString) +import Control.Monad.Reader.Trans (asks) +import Data.Argonaut + ( class DecodeJson + , Json + , JsonDecodeError(..) + , decodeJson + , caseJsonString + , (:=) + , (~>) + , encodeJson + ) import Data.Bifunctor (bimap) import Data.Either (Either(..), hush, note, either) import Data.Generic.Rep (class Generic) @@ -27,17 +33,7 @@ import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) import Effect.Exception (throw) import QueryM (ClientError(..), QueryM, mkServerEndpointUrl, scriptToJson) -import QueryM.ServerConfig - ( Host - , ServerConfig - , defaultDatumCacheWsConfig - , defaultOgmiosWsConfig - , defaultServerConfig - , mkHttpUrl - , mkOgmiosDatumCacheWsUrl - , mkServerUrl - , mkWsUrl - ) +import QueryM.ServerConfig (mkHttpUrl) import Serialization (toBytes) as Serialization import Serialization.Hash (ScriptHash) import Serialization.PlutusData (convertPlutusData) as Serialization @@ -58,28 +54,28 @@ instance Show HashMethod where show = genericShow plutusHash - :: forall (r :: Row Type). HashMethod -> ByteArray -> QueryM (Maybe ByteArray) + :: HashMethod -> ByteArray -> QueryM (Maybe ByteArray) plutusHash meth bytes = do - url <- asks $ (_ <> "/" <> "blake2b") <<< mkHttpUrl <<< _.serverConfig + url <- asks $ (_ <> "/" <> "plutus-hash") <<< mkHttpUrl <<< _.serverConfig let methJson :: Json methJson = case meth of - Blake2b_256 -> encodeString "Blake2b_256" - Sha2_256 -> encodeString "Sha2_256" - Sha3_256 -> encodeString "Sha3_256" + Blake2b_256 -> encodeJson "Blake2b_256" + Sha2_256 -> encodeJson "Sha2_256" + Sha3_256 -> encodeJson "Sha3_256" bytesJson :: Json - bytesJson = encodeString $ byteArrayToHex bytes + bytesJson = encodeJson $ byteArrayToHex bytes requestJson :: Json requestJson = "bytesToHash" := bytesJson ~> "methodToUse" := methJson - reqBody :: Maybe Affjax.RequestBody.RequestBody - reqBody = Just - $ Affjax.RequestBody.Json requestJson - liftAff (Affjax.post Affjax.ResponseFormat.json url reqBody) - <#> either (const Nothing) (hush <<< Json.decodeJson <<< _.body) + reqBody :: Affjax.RequestBody.RequestBody + reqBody = Affjax.RequestBody.Json requestJson + response <- liftAff + (Affjax.post Affjax.ResponseFormat.json url (pure reqBody)) + pure $ hush response >>= _.body >>> decodeJson >>> hush hashData :: Datum -> QueryM (Maybe HashedData) hashData datum = do @@ -93,10 +89,10 @@ hashData datum = do jsonBody <- liftAff ( Affjax.post Affjax.ResponseFormat.json url - (Just $ Affjax.RequestBody.Json $ encodeString body) + (Just $ Affjax.RequestBody.Json $ encodeJson body) ) <#> map \x -> x.body -- decode - pure $ hush <<< Json.decodeJson =<< hush jsonBody + pure $ hush <<< decodeJson =<< hush jsonBody -- | Hashes an Plutus-style Datum datumHash :: Datum -> QueryM (Maybe DatumHash) @@ -110,13 +106,13 @@ derive instance Generic HashedData _ instance Show HashedData where show = genericShow -instance Json.DecodeJson HashedData where +instance DecodeJson HashedData where decodeJson = map HashedData <<< - Json.caseJsonString (Left err) (note err <<< hexToByteArray) + caseJsonString (Left err) (note err <<< hexToByteArray) where - err :: Json.JsonDecodeError - err = Json.TypeMismatch "Expected hex bytes (raw) of hashed data" + err :: JsonDecodeError + err = TypeMismatch "Expected hex bytes (raw) of hashed data" hashScript :: forall (a :: Type) (b :: Type) @@ -135,5 +131,5 @@ hashScript script = do liftAff (Affjax.post Affjax.ResponseFormat.json url reqBody) <#> either (Left <<< ClientHttpError) - (bimap ClientDecodeJsonError wrap <<< Json.decodeJson <<< _.body) + (bimap ClientDecodeJsonError wrap <<< decodeJson <<< _.body) diff --git a/src/Scripts.purs b/src/Scripts.purs index 7d02a74a6..a515314e6 100644 --- a/src/Scripts.purs +++ b/src/Scripts.purs @@ -11,11 +11,13 @@ module Scripts ) where import Prelude + import Data.Either (hush) import Data.Maybe (Maybe(Nothing), maybe) import Data.Newtype (class Newtype, unwrap) import Plutus.Types.CurrencySymbol (CurrencySymbol, mpsSymbol) -import QueryM (QueryM, hashScript) +import QueryM (QueryM) +import QueryM.Crypto (hashScript) import Serialization.Address ( Address , NetworkId diff --git a/src/Types/ScriptLookups.purs b/src/Types/ScriptLookups.purs index a3cd074b7..971b61cf3 100644 --- a/src/Types/ScriptLookups.purs +++ b/src/Types/ScriptLookups.purs @@ -62,9 +62,9 @@ import Plutus.FromPlutusType (fromPlutusType) import QueryM ( DefaultQueryConfig , QueryM - , datumHash , getDatumByHash ) +import QueryM.Crypto (datumHash) import Scripts ( mintingPolicyHash , validatorHash diff --git a/src/Types/TypedTxOut.purs b/src/Types/TypedTxOut.purs index c74bb314f..aa0e7ed57 100644 --- a/src/Types/TypedTxOut.purs +++ b/src/Types/TypedTxOut.purs @@ -32,7 +32,8 @@ import Data.Newtype (unwrap, wrap) import Data.Show.Generic (genericShow) import FromData (class FromData, fromData) import Helpers (liftM) -import QueryM (QueryM, getDatumByHash, datumHash) +import QueryM (QueryM, getDatumByHash) +import QueryM.Crypto (datumHash) import Scripts (typedValidatorEnterpriseAddress) import Serialization.Address (Address, NetworkId) import ToData (class ToData, toData) diff --git a/test/Crypto.purs b/test/Crypto.purs new file mode 100644 index 000000000..cc7a356ca --- /dev/null +++ b/test/Crypto.purs @@ -0,0 +1,58 @@ +module Test.Crypto (suite) where + +import Prelude + +import Contract.Prim.ByteArray (byteArrayToHex) +import Control.Monad.Error.Class (class MonadThrow, throwError) +import Data.Maybe (Maybe(..)) +import Data.Traversable (traverse_) +import Data.Tuple (Tuple(Tuple)) +import Effect.Aff.Class (liftAff) +import Effect.Exception (error) +import Mote (group, test) +import QueryM (QueryM, runQueryM, traceQueryConfig) +import QueryM.Crypto (plutusHash, HashMethod(..)) +import Test.Spec.Assertions (shouldEqual) +import TestM (TestPlanM) +import Types.ByteArray (ByteArray, hexToByteArray) + +suite :: TestPlanM Unit +suite = do + group "Contract.Crypto" + $ test "plutusHash" + $ do + qcf <- liftAff $ traceQueryConfig + liftAff $ runQueryM qcf $ do + mkReqs sourceHashPairs + where + mkReqs + :: Array (Tuple (Maybe ByteArray) (Array (Tuple HashMethod String))) + -> QueryM Unit + mkReqs = traverse_ + ( \(Tuple origBS hashtups) -> + traverse_ + ( \(Tuple meth goal) -> do + qbs <- throwMaybe (error "bytestring is not hex format") origBS + res <- throwMaybe (error "hashing method was not successfull") =<< + plutusHash meth qbs + shouldEqual goal $ byteArrayToHex res + ) + hashtups + ) + +throwMaybe :: forall a m e. MonadThrow e m => e -> Maybe a -> m a +throwMaybe _ (Just a) = pure a +throwMaybe e Nothing = throwError e + +sourceHashPairs + :: Array (Tuple (Maybe ByteArray) (Array (Tuple HashMethod String))) +sourceHashPairs = + [ Tuple (hexToByteArray "68656C6C6F20776F726C64") + [ Tuple Sha3_256 + "644bcc7e564373040999aac89e7622f3ca71fba1d972fd94a31c3bfbf24e3938" + , Tuple Sha2_256 + "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9" + , Tuple Blake2b_256 + "256c83b297114d201b30179f3f0ef0cace9783622da5974326b436178aeef610" + ] + ] diff --git a/test/Integration.purs b/test/Integration.purs index 5b5bf6ece..a0d980ca5 100644 --- a/test/Integration.purs +++ b/test/Integration.purs @@ -7,6 +7,7 @@ import Effect.Aff (launchAff_) import Test.AffInterface as AffInterface import Test.FinalizeTx as FinalizeTx import Test.Utils as Utils +import Test.Crypto as Crypto import TestM (TestPlanM) main :: Effect Unit @@ -17,4 +18,5 @@ main = launchAff_ $ do testPlan :: TestPlanM Unit testPlan = do FinalizeTx.suite + Crypto.suite AffInterface.suite From 1963a828c06c7d11da6e171937ac7720c546b20c Mon Sep 17 00:00:00 2001 From: MangoIV Date: Thu, 19 May 2022 13:45:17 +0200 Subject: [PATCH 16/85] add fixes required asked for by @ngua --- server/README.md | 8 ++++---- server/src/Types.hs | 16 ++++++++++++++-- src/Contract/Crypto.purs | 17 +++++++++-------- src/QueryM/Crypto.purs | 19 ++++++++++++------- test/Crypto.purs | 13 ++++--------- 5 files changed, 43 insertions(+), 30 deletions(-) diff --git a/server/README.md b/server/README.md index b76e93bda..7e89c7420 100644 --- a/server/README.md +++ b/server/README.md @@ -61,12 +61,12 @@ The server executable can be built with `nix build .#cardano-trasaction-lib-serv - `application/json` - Bytes to hash as hexadecimal string (`application/json;charset=utf-8`, `application/json`): -- Hashing method from PlutusTx to hash with; one of `Sha2_256`, `Sha3_256`, `Blake2b_256` +- Hashing method from PlutusTx to hash with; one of `sha2_256`, `sha3_256`, `blake2b_256` ```javascript { "bytesToHash" : "68656C6C6F20776F726C64" - "methodToUse" : "Sha3_256", + "methodToUse" : "sha3_256", } ``` @@ -81,12 +81,12 @@ The server executable can be built with `nix build .#cardano-trasaction-lib-serv - `application/json` - Hash bytes are returned as hexidecimal string (`application/json;charset=utf-8`, `application/json`): -- Hashing Method used; one of `Sha2_256`, `Sha3_256`, `Blake2b_256` +- Hashing Method used; one of `sha2_256`, `sha3_256`, `blake2b_256` ```javascript { "hash":"644bcc7e564373040999aac89e7622f3ca71fba1d972fd94a31c3bfbf24e3938", - "methodUsed":"Sha3_256" + "methodUsed":"sha3_256" } ``` diff --git a/server/src/Types.hs b/server/src/Types.hs index f4e1b7a3f..345d17ae2 100644 --- a/server/src/Types.hs +++ b/server/src/Types.hs @@ -39,8 +39,9 @@ import Control.Exception (Exception) import Control.Monad.Catch (MonadThrow) import Control.Monad.IO.Class (MonadIO) import Control.Monad.Reader (MonadReader, ReaderT, asks) -import Data.Aeson (FromJSON, ToJSON (toJSON)) +import Data.Aeson (FromJSON (parseJSON), ToJSON (toJSON)) import Data.Aeson qualified as Aeson +import Data.Char (toLower) import Data.Aeson.Encoding qualified as Aeson.Encoding import Data.Aeson.Types (withText) import Data.Bifunctor (second) @@ -177,7 +178,18 @@ data HashMethod = Blake2b_256 | Sha2_256 | Sha3_256 deriving stock (Show, Eq, Generic) - deriving anyclass (FromJSON, ToJSON) + +instance FromJSON HashMethod where + parseJSON = + Aeson.genericParseJSON + Aeson.defaultOptions + { Aeson.constructorTagModifier = fmap toLower } + +instance ToJSON HashMethod where + toJSON = + Aeson.genericToJSON + Aeson.defaultOptions + { Aeson.constructorTagModifier = fmap toLower } data ByteStringHash = ByteStringHash diff --git a/src/Contract/Crypto.purs b/src/Contract/Crypto.purs index ceb6cb53e..5f732f039 100644 --- a/src/Contract/Crypto.purs +++ b/src/Contract/Crypto.purs @@ -7,30 +7,31 @@ module Contract.Crypto , HashMethod(..) ) where +import Prelude + import Contract.Monad (Contract, wrapContract) import Data.Either (Either) import Data.Maybe (Maybe) -import Prelude ((<<<)) import QueryM (ClientError) -import QueryM.Crypto as Crypt +import QueryM.Crypto as Crypto import Serialization.Hash (ScriptHash) import Types.ByteArray (ByteArray) import Types.Datum (Datum, DatumHash) import Types.Scripts (PlutusScript) import Data.Newtype (class Newtype) -type HashMethod = Crypt.HashMethod -type HashedData = Crypt.HashedData +type HashMethod = Crypto.HashMethod +type HashedData = Crypto.HashedData plutusHash :: forall (r :: Row Type) . HashMethod -> ByteArray -> Contract r (Maybe ByteArray) -plutusHash meth = wrapContract <<< Crypt.plutusHash meth +plutusHash meth = wrapContract <<< Crypto.plutusHash meth hashData :: forall (r :: Row Type). Datum -> Contract r (Maybe HashedData) -hashData = wrapContract <<< Crypt.hashData +hashData = wrapContract <<< Crypto.hashData hashScript :: forall (a :: Type) (b :: Type) (r :: Row Type) @@ -38,7 +39,7 @@ hashScript => Newtype b ScriptHash => a -> Contract r (Either ClientError b) -hashScript = wrapContract <<< Crypt.hashScript +hashScript = wrapContract <<< Crypto.hashScript datumHash :: forall (r :: Row Type). Datum -> Contract r (Maybe DatumHash) -datumHash = wrapContract <<< Crypt.datumHash +datumHash = wrapContract <<< Crypto.datumHash diff --git a/src/QueryM/Crypto.purs b/src/QueryM/Crypto.purs index fbb7df234..bbaaa2ce6 100644 --- a/src/QueryM/Crypto.purs +++ b/src/QueryM/Crypto.purs @@ -16,7 +16,7 @@ import Control.Monad.Reader.Trans (asks) import Data.Argonaut ( class DecodeJson , Json - , JsonDecodeError(..) + , JsonDecodeError(TypeMismatch) , decodeJson , caseJsonString , (:=) @@ -24,15 +24,20 @@ import Data.Argonaut , encodeJson ) import Data.Bifunctor (bimap) -import Data.Either (Either(..), hush, note, either) +import Data.Either (Either(Left), hush, note, either) import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe(..), maybe') +import Data.Maybe (Maybe(Just), maybe') import Data.Newtype (class Newtype, unwrap, wrap) import Data.Show.Generic (genericShow) import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) import Effect.Exception (throw) -import QueryM (ClientError(..), QueryM, mkServerEndpointUrl, scriptToJson) +import QueryM + ( ClientError(ClientHttpError, ClientDecodeJsonError) + , QueryM + , mkServerEndpointUrl + , scriptToJson + ) import QueryM.ServerConfig (mkHttpUrl) import Serialization (toBytes) as Serialization import Serialization.Hash (ScriptHash) @@ -60,9 +65,9 @@ plutusHash meth bytes = do let methJson :: Json methJson = case meth of - Blake2b_256 -> encodeJson "Blake2b_256" - Sha2_256 -> encodeJson "Sha2_256" - Sha3_256 -> encodeJson "Sha3_256" + Blake2b_256 -> encodeJson "blake2b_256" + Sha2_256 -> encodeJson "sha2_256" + Sha3_256 -> encodeJson "sha3_256" bytesJson :: Json bytesJson = encodeJson $ byteArrayToHex bytes diff --git a/test/Crypto.purs b/test/Crypto.purs index cc7a356ca..fa50ea638 100644 --- a/test/Crypto.purs +++ b/test/Crypto.purs @@ -3,16 +3,15 @@ module Test.Crypto (suite) where import Prelude import Contract.Prim.ByteArray (byteArrayToHex) -import Control.Monad.Error.Class (class MonadThrow, throwError) -import Data.Maybe (Maybe(..)) +import Data.Maybe (Maybe) import Data.Traversable (traverse_) import Data.Tuple (Tuple(Tuple)) import Effect.Aff.Class (liftAff) -import Effect.Exception (error) import Mote (group, test) import QueryM (QueryM, runQueryM, traceQueryConfig) import QueryM.Crypto (plutusHash, HashMethod(..)) import Test.Spec.Assertions (shouldEqual) +import Test.Utils (errMaybe) import TestM (TestPlanM) import Types.ByteArray (ByteArray, hexToByteArray) @@ -32,18 +31,14 @@ suite = do ( \(Tuple origBS hashtups) -> traverse_ ( \(Tuple meth goal) -> do - qbs <- throwMaybe (error "bytestring is not hex format") origBS - res <- throwMaybe (error "hashing method was not successfull") =<< + qbs <- errMaybe "bytestring is not hex format" origBS + res <- errMaybe "hashing method was not successfull" =<< plutusHash meth qbs shouldEqual goal $ byteArrayToHex res ) hashtups ) -throwMaybe :: forall a m e. MonadThrow e m => e -> Maybe a -> m a -throwMaybe _ (Just a) = pure a -throwMaybe e Nothing = throwError e - sourceHashPairs :: Array (Tuple (Maybe ByteArray) (Array (Tuple HashMethod String))) sourceHashPairs = From 5473777edc481603f5f5ccfc0fc2e50b95ac6fe6 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Thu, 19 May 2022 16:25:24 +0200 Subject: [PATCH 17/85] Revert "Make Plutus.Types.AssocMap PlutusData-compatible with PlutusTx.AssocMap" This reverts commit d9444f25d7160bab8a2fe348e4796f85a64f0fb8. --- src/Plutus/Types/AssocMap.purs | 47 +++++++++++------------- test/Data.purs | 65 +++++++--------------------------- 2 files changed, 34 insertions(+), 78 deletions(-) diff --git a/src/Plutus/Types/AssocMap.purs b/src/Plutus/Types/AssocMap.purs index 4ef39fcfd..e2cc2b3c0 100644 --- a/src/Plutus/Types/AssocMap.purs +++ b/src/Plutus/Types/AssocMap.purs @@ -20,9 +20,21 @@ module Plutus.Types.AssocMap import Prelude -import Data.Array (any, deleteAt, filter, findIndex, mapMaybe, null, singleton) as Array -import Data.Array (reverse, (:)) +import Data.Array ((:)) +import Data.Array + ( any + , deleteAt + , filter + , findIndex + , mapMaybe + , null + , singleton + ) as Array import Data.Bifunctor (bimap) +import Data.Generic.Rep (class Generic) +import Data.Maybe (Maybe(Just, Nothing), isJust) +import Data.Newtype (class Newtype, unwrap) +import Data.Foldable (lookup) as Foldable import Data.Foldable ( class Foldable , foldlDefault @@ -30,10 +42,6 @@ import Data.Foldable , foldr , foldrDefault ) -import Data.Foldable (lookup) as Foldable -import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe(Just, Nothing), isJust) -import Data.Newtype (class Newtype, unwrap) import Data.Show.Generic (genericShow) import Data.These (These(Both, That, This), these) import Data.Traversable (class Traversable, for, sequence, traverse) @@ -42,7 +50,6 @@ import Data.Tuple.Nested (type (/\), (/\)) import FromData (class FromData, fromData) import ToData (class ToData, toData) import Types.PlutusData (PlutusData(Map)) as PD -import Data.Map (fromFoldable) -- Taken from local Hoogle server for the Haskell server which uses -- `plutus` rev: 1efbb276ef1a10ca6961d0fd32e6141e9798bd11 @@ -58,14 +65,8 @@ newtype Map (k :: Type) (v :: Type) = Map (Array (Tuple k v)) derive instance Generic (Map k v) _ derive instance Newtype (Map k v) _ - --- We implement Ord/Eq instances to match that of Data.Map --- and effectively ignore the element ordering. -instance (Ord k, Ord v) => Ord (Map k v) where - compare (Map ls) (Map rs) = compare (fromFoldable ls) (fromFoldable rs) - -instance (Ord k, Eq v) => Eq (Map k v) where - eq (Map ls) (Map rs) = eq (fromFoldable ls) (fromFoldable rs) +derive newtype instance (Eq k, Eq v) => Eq (Map k v) +derive newtype instance (Ord k, Ord v) => Ord (Map k v) instance (Show k, Show v) => Show (Map k v) where show = genericShow @@ -73,18 +74,12 @@ instance (Show k, Show v) => Show (Map k v) where instance (ToData k, ToData v) => ToData (Map k v) where toData (Map xs) = PD.Map (bimap toData toData <$> xs) --- The plutus-tx AssocMap FromData instance reverses the element order. --- This makes the purescript-brige compatiblity tests fail as the --- Haskell Eq instance is simply derived and sensitive to element --- ordering. --- We reverse the order as well to keep the round trip encodings equal. --- See https://github.com/input-output-hk/plutus/blob/650a0659cbaacec2166e0153d2393c779cedc4c0/plutus-tx/src/PlutusTx/AssocMap.hs#L86 instance (FromData k, FromData v) => FromData (Map k v) where fromData (PD.Map mp) = do - Map <$> do - xs <- for mp \(k /\ v) -> - Tuple <$> fromData k <*> fromData v - pure $ reverse xs -- NOTE: Explanation is above + Map <$> + ( for mp \(k /\ v) -> + Tuple <$> fromData k <*> fromData v + ) fromData _ = Nothing instance Functor (Map k) where @@ -227,4 +222,4 @@ mapMaybeWithKey -> Map k a -> Map k b mapMaybeWithKey f (Map xs) = - Map $ Array.mapMaybe (\(k /\ v) -> (k /\ _) <$> f k v) xs + Map $ Array.mapMaybe (\(k /\ v) -> (k /\ _) <$> f k v) xs \ No newline at end of file diff --git a/test/Data.purs b/test/Data.purs index 4553eebfb..cfa95f208 100644 --- a/test/Data.purs +++ b/test/Data.purs @@ -43,7 +43,6 @@ import TypeLevel.RowList (class AllUniqueLabels) import TypeLevel.RowList.Unordered.Indexed (NilI, ConsI, class UniqueIndices) import Types.ByteArray (hexToByteArrayUnsafe) import Untagged.Union (asOneOf) -import Plutus.Types.AssocMap as AssocMap plutusDataAesonRoundTrip ∷ ∀ (a ∷ Type). ToData a ⇒ FromData a ⇒ a → Either JsonDecodeError a @@ -85,29 +84,16 @@ suite = do let input = [ Just true, Just false, Nothing ] plutusDataAesonRoundTrip input `shouldEqual` Right input - group "Map" do + test "Map" do let - inputs = - [ Map - [ BigInt.fromInt 1 /\ - [ Map - [ BigInt.fromInt 11 /\ false - , BigInt.fromInt 12 /\ true - ] - ] - , BigInt.fromInt 2 /\ - [ Map - [ BigInt.fromInt 21 /\ false - , BigInt.fromInt 22 /\ false - , BigInt.fromInt 23 /\ true - ] + input = Map + [ BigInt.fromInt 13 /\ + [ Map + [ BigInt.fromInt 17 /\ false ] - , BigInt.fromInt 3 /\ [] ] ] - for_ inputs \input -> do - test (show input) do - plutusDataAesonRoundTrip input `shouldEqual` Right input + plutusDataAesonRoundTrip input `shouldEqual` Right input group "Generic" do -- TODO: Quickcheckify test "CType: from . to == id" do @@ -150,41 +136,16 @@ suite = do let input = [ Just true, Just false, Nothing ] fromData (toData input) `shouldEqual` Just input - test "AssocMap" do + test "Map" do let - input = AssocMap.Map - [ BigInt.fromInt 1 /\ - [ ( AssocMap.Map - [ BigInt.fromInt 17 /\ false, BigInt.fromInt 13 /\ true ] - ) - ] - , BigInt.fromInt 3 /\ [] - ] - fromData (toData input) `shouldEqual` Just input - test "AssocMap #2" do - let - input = AssocMap.Map - [ BigInt.fromInt 1 /\ [ true, false, false ] - , BigInt.fromInt 3 /\ [ false, true, true ] - , BigInt.fromInt 7 /\ [ true, false, true ] - ] - fromData (toData input) `shouldEqual` Just input - test "AssocMap #3" do - let - input = - [ AssocMap.Map - [ BigInt.fromInt 17 /\ false - , BigInt.fromInt 13 /\ true + input = Map + [ BigInt.fromInt 13 /\ + [ Map + [ BigInt.fromInt 17 /\ false + ] ] ] fromData (toData input) `shouldEqual` Just input - test "AssocMap #4" do - let - input = AssocMap.Map - [ BigInt.fromInt 1 /\ (AssocMap.Map [ true /\ false ]) - , BigInt.fromInt 3 /\ (AssocMap.Map [ false /\ false ]) - ] - fromData (toData input) `shouldEqual` Just input group "Generic" do -- TODO: Quickcheckify test "EType: from . to == id" do @@ -296,7 +257,7 @@ data CType | C1 (Maybe MyBigInt) | C2 MyBigInt Boolean | C3 MyBigInt Boolean Boolean - | C4 (AssocMap.Map BigInt (Array (AssocMap.Map BigInt Boolean))) + | C4 (Map BigInt (Array (Map BigInt Boolean))) instance HasPlutusSchema CType From ccf57678c5a20b6244b3134a846cb7e404799099 Mon Sep 17 00:00:00 2001 From: MangoIV Date: Thu, 19 May 2022 16:45:06 +0200 Subject: [PATCH 18/85] fix integration tests and return Either String instead of Maybe because there are a lot of things to go wrong --- src/Contract/Crypto.purs | 2 +- src/QueryM/Crypto.purs | 17 ++++++++++++++--- test/Crypto.purs | 4 ++-- test/Utils.purs | 22 ++++++++++++++++++++++ 4 files changed, 39 insertions(+), 6 deletions(-) diff --git a/src/Contract/Crypto.purs b/src/Contract/Crypto.purs index 5f732f039..49d4496d3 100644 --- a/src/Contract/Crypto.purs +++ b/src/Contract/Crypto.purs @@ -27,7 +27,7 @@ plutusHash :: forall (r :: Row Type) . HashMethod -> ByteArray - -> Contract r (Maybe ByteArray) + -> Contract r (Either String ByteArray) plutusHash meth = wrapContract <<< Crypto.plutusHash meth hashData :: forall (r :: Row Type). Datum -> Contract r (Maybe HashedData) diff --git a/src/QueryM/Crypto.purs b/src/QueryM/Crypto.purs index bbaaa2ce6..d3103346b 100644 --- a/src/QueryM/Crypto.purs +++ b/src/QueryM/Crypto.purs @@ -22,11 +22,13 @@ import Data.Argonaut , (:=) , (~>) , encodeJson + , jsonEmptyObject ) -import Data.Bifunctor (bimap) +import Data.Bifunctor (bimap, lmap) import Data.Either (Either(Left), hush, note, either) import Data.Generic.Rep (class Generic) import Data.Maybe (Maybe(Just), maybe') +import Data.Argonaut.Decode.Error (printJsonDecodeError) import Data.Newtype (class Newtype, unwrap, wrap) import Data.Show.Generic (genericShow) import Effect.Aff.Class (liftAff) @@ -45,6 +47,7 @@ import Serialization.PlutusData (convertPlutusData) as Serialization import Types.ByteArray (ByteArray, byteArrayToHex, hexToByteArray) import Types.Datum (Datum, DatumHash) import Types.Scripts (PlutusScript) +import Test.Utils (guardNote) import Types.Transaction as Transaction import Untagged.Union (asOneOf) @@ -59,7 +62,7 @@ instance Show HashMethod where show = genericShow plutusHash - :: HashMethod -> ByteArray -> QueryM (Maybe ByteArray) + :: HashMethod -> ByteArray -> QueryM (Either String ByteArray) plutusHash meth bytes = do url <- asks $ (_ <> "/" <> "plutus-hash") <<< mkHttpUrl <<< _.serverConfig let @@ -75,12 +78,20 @@ plutusHash meth bytes = do requestJson :: Json requestJson = "bytesToHash" := bytesJson ~> "methodToUse" := methJson + ~> jsonEmptyObject reqBody :: Affjax.RequestBody.RequestBody reqBody = Affjax.RequestBody.Json requestJson response <- liftAff (Affjax.post Affjax.ResponseFormat.json url (pure reqBody)) - pure $ hush response >>= _.body >>> decodeJson >>> hush + pure $ do + responseJson :: ({ methodUsed :: String, hash :: ByteArray }) <- + lmap Affjax.printError response >>= _.body >>> decodeJson >>> lmap + printJsonDecodeError + goal <- lmap printJsonDecodeError $ decodeJson methJson + guardNote "responseJson wasn't hashed with the method requested" $ + responseJson.methodUsed == goal + pure responseJson.hash hashData :: Datum -> QueryM (Maybe HashedData) hashData datum = do diff --git a/test/Crypto.purs b/test/Crypto.purs index fa50ea638..d6906f328 100644 --- a/test/Crypto.purs +++ b/test/Crypto.purs @@ -11,7 +11,7 @@ import Mote (group, test) import QueryM (QueryM, runQueryM, traceQueryConfig) import QueryM.Crypto (plutusHash, HashMethod(..)) import Test.Spec.Assertions (shouldEqual) -import Test.Utils (errMaybe) +import Test.Utils (errMaybe, errEither) import TestM (TestPlanM) import Types.ByteArray (ByteArray, hexToByteArray) @@ -32,7 +32,7 @@ suite = do traverse_ ( \(Tuple meth goal) -> do qbs <- errMaybe "bytestring is not hex format" origBS - res <- errMaybe "hashing method was not successfull" =<< + res <- errEither =<< plutusHash meth qbs shouldEqual goal $ byteArrayToHex res ) diff --git a/test/Utils.purs b/test/Utils.purs index 7656f757a..47143c7fd 100644 --- a/test/Utils.purs +++ b/test/Utils.purs @@ -3,7 +3,9 @@ module Test.Utils , unsafeCall , assertTrue , assertTrue_ + , errEither , errMaybe + , guardNote ) where import Prelude @@ -11,6 +13,8 @@ import Prelude import Data.Const (Const) import Data.Foldable (sequence_) import Data.Maybe (Maybe(Just, Nothing)) +import Data.Either (Either(Left, Right)) +import Control.Monad.Error.Class (class MonadThrow, throwError) import Effect.Aff (Aff, error) import Effect.Aff.Class (liftAff) import Effect.Class (class MonadEffect, liftEffect) @@ -58,6 +62,24 @@ assertTrue_ -> m Unit assertTrue_ = assertTrue "Boolean test failed" +errEither + :: forall (m :: Type -> Type) (a :: Type) (e :: Type) + . MonadEffect m + => Either String a + -> m a +errEither = case _ of + Left msg -> liftEffect $ throw msg + Right res -> pure res + +guardNote + :: forall (m :: Type -> Type) (e :: Type) + . MonadThrow e m + => e + -> Boolean + -> m Unit +guardNote msg false = throwError msg +guardNote _ true = pure unit + errMaybe :: forall (m :: Type -> Type) (a :: Type) . MonadEffect m From 2b7f56255ef5ea1d9f3e7275a797b3160154339e Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Thu, 19 May 2022 18:01:54 +0200 Subject: [PATCH 19/85] Switch Plutus.Types.Credential to use HasPlutusSchema --- src/Plutus/Types/Credential.purs | 82 +++++++++++++++++++++----------- 1 file changed, 54 insertions(+), 28 deletions(-) diff --git a/src/Plutus/Types/Credential.purs b/src/Plutus/Types/Credential.purs index dc265434b..26f8ca311 100644 --- a/src/Plutus/Types/Credential.purs +++ b/src/Plutus/Types/Credential.purs @@ -4,15 +4,31 @@ module Plutus.Types.Credential ) where import Prelude -import Data.Maybe (Maybe(Nothing)) + +import Serialization.Address + ( CertificateIndex(..) + , Slot(..) + , TransactionIndex(..) + ) +import Data.BigInt (BigInt) import Data.Generic.Rep (class Generic) +import Data.Maybe (Maybe(Nothing)) import Data.Show.Generic (genericShow) -import Types.Scripts (ValidatorHash) +import FromData (class FromData, fromData, genericFromData) +import Plutus.Types.DataSchema + ( class HasPlutusSchema + , type (:+) + , type (:=) + , type (@@) + , I + , PNil + ) +import Serialization.Address (Pointer) +import ToData (class ToData, genericToData, toData) +import TypeLevel.Nat (S, Z) import Types.PlutusData (PlutusData(Constr)) import Types.PubKeyHash (PubKeyHash) -import Serialization.Address (Pointer) -import ToData (class ToData, toData) -import FromData (class FromData, fromData) +import Types.Scripts (ValidatorHash) -------------------------------------------------------------------------------- -- Credential @@ -36,17 +52,21 @@ derive instance Generic Credential _ instance Show Credential where show = genericShow +instance + HasPlutusSchema + Credential + ( "PubKeyCredential" := PNil @@ Z + :+ "ScriptCredential" + := PNil + @@ (S Z) + :+ PNil + ) + instance ToData Credential where - toData (PubKeyCredential pubKeyHash) = - Constr zero [ toData pubKeyHash ] - toData (ScriptCredential validatorHash) = - Constr one [ toData validatorHash ] + toData = genericToData instance FromData Credential where - fromData (Constr n [ pd ]) - | n == zero = PubKeyCredential <$> fromData pd - | n == one = ScriptCredential <$> fromData pd - fromData _ = Nothing + fromData = genericFromData -------------------------------------------------------------------------------- -- StakingCredential @@ -57,7 +77,11 @@ instance FromData Credential where -- | Staking credential used to assign rewards. data StakingCredential = StakingHash Credential - | StakingPtr Pointer + | StakingPtr + { slot :: Slot + , txIx :: TransactionIndex + , certIx :: CertificateIndex + } derive instance Eq StakingCredential derive instance Ord StakingCredential @@ -66,20 +90,22 @@ derive instance Generic StakingCredential _ instance Show StakingCredential where show = genericShow +instance + HasPlutusSchema + StakingCredential + ( "StakingHash" := PNil @@ Z + :+ "StakingPtr" + := + ( "slot" := I Slot :+ "txIx" := I TransactionIndex :+ "certIx" + := I CertificateIndex + :+ PNil + ) + @@ (S Z) + :+ PNil + ) + instance ToData StakingCredential where - toData (StakingHash credential) = - Constr zero [ toData credential ] - toData (StakingPtr ptr) = - Constr one [ toData ptr.slot, toData ptr.txIx, toData ptr.certIx ] + toData = genericToData instance FromData StakingCredential where - fromData (Constr n [ pd ]) | n == zero = - StakingHash <$> fromData pd - fromData (Constr n [ slotD, txIxD, certIxD ]) | n == one = - StakingPtr <$> - ( { slot: _, txIx: _, certIx: _ } - <$> fromData slotD - <*> fromData txIxD - <*> fromData certIxD - ) - fromData _ = Nothing + fromData = genericFromData From bf14bca9c71936365a6a0b833d2f0a65e28cc3eb Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Thu, 19 May 2022 18:17:50 +0200 Subject: [PATCH 20/85] Cosmetics on Plutus.Types.Credential --- src/Plutus/Types/Credential.purs | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/Plutus/Types/Credential.purs b/src/Plutus/Types/Credential.purs index 26f8ca311..bb98b89e0 100644 --- a/src/Plutus/Types/Credential.purs +++ b/src/Plutus/Types/Credential.purs @@ -6,15 +6,13 @@ module Plutus.Types.Credential import Prelude import Serialization.Address - ( CertificateIndex(..) - , Slot(..) - , TransactionIndex(..) + ( CertificateIndex + , Slot + , TransactionIndex ) -import Data.BigInt (BigInt) import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe(Nothing)) import Data.Show.Generic (genericShow) -import FromData (class FromData, fromData, genericFromData) +import FromData (class FromData, genericFromData) import Plutus.Types.DataSchema ( class HasPlutusSchema , type (:+) @@ -23,10 +21,8 @@ import Plutus.Types.DataSchema , I , PNil ) -import Serialization.Address (Pointer) -import ToData (class ToData, genericToData, toData) +import ToData (class ToData, genericToData) import TypeLevel.Nat (S, Z) -import Types.PlutusData (PlutusData(Constr)) import Types.PubKeyHash (PubKeyHash) import Types.Scripts (ValidatorHash) From 4cd11c3ef8bd67f3c9213872068f78e6f1b62f73 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Thu, 19 May 2022 18:18:53 +0200 Subject: [PATCH 21/85] Migrate Plutus.Types.Address to HasPlutusSchema --- src/Plutus/Types/Address.purs | 38 ++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/src/Plutus/Types/Address.purs b/src/Plutus/Types/Address.purs index 730817735..a07e917c6 100644 --- a/src/Plutus/Types/Address.purs +++ b/src/Plutus/Types/Address.purs @@ -13,15 +13,23 @@ import Data.Maybe (Maybe(Just, Nothing)) import Data.Generic.Rep (class Generic) import Data.Show.Generic (genericShow) import Data.Newtype (class Newtype, wrap, unwrap) -import FromData (class FromData, fromData) -import ToData (class ToData, toData) +import FromData (class FromData, genericFromData) +import ToData (class ToData, genericToData) import Types.Scripts (ValidatorHash) -import Types.PlutusData (PlutusData(Constr)) import Types.PubKeyHash (PubKeyHash) import Plutus.Types.Credential ( Credential(PubKeyCredential, ScriptCredential) , StakingCredential ) +import Plutus.Types.DataSchema + ( class HasPlutusSchema + , type (:+) + , type (:=) + , type (@@) + , I + , PNil + ) +import TypeLevel.Nat (Z) -------------------------------------------------------------------------------- -- Address @@ -43,18 +51,24 @@ derive instance Generic Address _ instance Show Address where show = genericShow +instance + HasPlutusSchema + Address + ( "Address" + := + ( "addressCredential" := I Credential :+ "addressStakingCredential" + := I (Maybe StakingCredential) + :+ PNil + ) + @@ Z + :+ PNil + ) + instance ToData Address where - toData (Address a) = Constr zero $ - [ toData a.addressCredential, toData a.addressStakingCredential ] + toData = genericToData instance FromData Address where - fromData (Constr n [ credD, stakingCredD ]) | n == zero = - Address <$> - ( { addressCredential: _, addressStakingCredential: _ } - <$> fromData credD - <*> fromData stakingCredD - ) - fromData _ = Nothing + fromData = genericFromData -------------------------------------------------------------------------------- -- Useful functions From b6dba8ada86ff1c2305066ddcded9a60c3c6a43e Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Thu, 19 May 2022 20:40:03 +0200 Subject: [PATCH 22/85] Added a bunch of Aeson instances for plutus-ledger-api types --- packages.dhall | 33 ++++++++++ spago.dhall | 1 + src/Plutus/Types/Address.purs | 31 +++++++-- src/Plutus/Types/AssocMap.purs | 23 +++---- src/Plutus/Types/Credential.purs | 51 +++++++++++++-- src/Plutus/Types/Value.purs | 40 ++++++++---- src/Serialization/Address.purs | 15 ++++- src/Serialization/Hash.purs | 12 ++++ src/Types/Datum.purs | 3 +- src/Types/Interval.purs | 106 ++++++++++++++++++++++++++++--- src/Types/PubKeyHash.purs | 18 +++++- src/Types/Scripts.purs | 46 +++++++++++++- 12 files changed, 328 insertions(+), 51 deletions(-) diff --git a/packages.dhall b/packages.dhall index 02a042de8..2eeafb945 100644 --- a/packages.dhall +++ b/packages.dhall @@ -151,7 +151,40 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-aeson.git" , version = "d4600c3a6bc21fcd94c11e72b65328e4509b6fc7" + }, + aeson-helpers = + { dependencies = + [ "aff" + , "argonaut-codecs" + , "argonaut-core" + , "arrays" + , "bifunctors" + , "contravariant" + , "control" + , "effect" + , "either" + , "enums" + , "foldable-traversable" + , "foreign-object" + , "maybe" + , "newtype" + , "ordered-collections" + , "prelude" + , "profunctor" + , "psci-support" + , "quickcheck" + , "record" + , "spec" + , "spec-quickcheck" + , "transformers" + , "tuples" + , "typelevel-prelude" + ] + , repo = + "https://github.com/mlabs-haskell/purescript-bridge-aeson-helpers.git" + , version = "44d0dae060cf78babd4534320192b58c16a6f45b" } + , sequences = { dependencies = [ "arrays" diff --git a/spago.dhall b/spago.dhall index 494131249..a4a15205e 100644 --- a/spago.dhall +++ b/spago.dhall @@ -5,6 +5,7 @@ You can edit this file as you like. { name = "cardano-transaction-lib" , dependencies = [ "aeson" + , "aeson-helpers" , "aff" , "aff-promise" , "affjax" diff --git a/src/Plutus/Types/Address.purs b/src/Plutus/Types/Address.purs index a07e917c6..d2b2718e4 100644 --- a/src/Plutus/Types/Address.purs +++ b/src/Plutus/Types/Address.purs @@ -9,14 +9,20 @@ module Plutus.Types.Address import Prelude -import Data.Maybe (Maybe(Just, Nothing)) +import Aeson + ( class DecodeAeson + , class EncodeAeson + , caseAesonObject + , encodeAeson' + , (.:) + ) +import Contract.Prelude (Either(Left)) +import Data.Argonaut (JsonDecodeError(..)) import Data.Generic.Rep (class Generic) -import Data.Show.Generic (genericShow) +import Data.Maybe (Maybe(Just, Nothing)) import Data.Newtype (class Newtype, wrap, unwrap) +import Data.Show.Generic (genericShow) import FromData (class FromData, genericFromData) -import ToData (class ToData, genericToData) -import Types.Scripts (ValidatorHash) -import Types.PubKeyHash (PubKeyHash) import Plutus.Types.Credential ( Credential(PubKeyCredential, ScriptCredential) , StakingCredential @@ -29,7 +35,10 @@ import Plutus.Types.DataSchema , I , PNil ) +import ToData (class ToData, genericToData) import TypeLevel.Nat (Z) +import Types.PubKeyHash (PubKeyHash) +import Types.Scripts (ValidatorHash) -------------------------------------------------------------------------------- -- Address @@ -70,6 +79,18 @@ instance ToData Address where instance FromData Address where fromData = genericFromData +instance DecodeAeson Address where + decodeAeson = caseAesonObject + (Left $ TypeMismatch "Expected object") + ( \obj -> do + addressCredential <- obj .: "addressCredential" + addressStakingCredential <- obj .: "addressStakingCredential" + pure $ Address { addressCredential, addressStakingCredential } + ) + +instance EncodeAeson Address where + encodeAeson' (Address addr) = encodeAeson' addr + -------------------------------------------------------------------------------- -- Useful functions -------------------------------------------------------------------------------- diff --git a/src/Plutus/Types/AssocMap.purs b/src/Plutus/Types/AssocMap.purs index e2cc2b3c0..442a9882b 100644 --- a/src/Plutus/Types/AssocMap.purs +++ b/src/Plutus/Types/AssocMap.purs @@ -20,21 +20,10 @@ module Plutus.Types.AssocMap import Prelude +import Aeson (class DecodeAeson, class EncodeAeson) import Data.Array ((:)) -import Data.Array - ( any - , deleteAt - , filter - , findIndex - , mapMaybe - , null - , singleton - ) as Array +import Data.Array (any, deleteAt, filter, findIndex, mapMaybe, null, singleton) as Array import Data.Bifunctor (bimap) -import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe(Just, Nothing), isJust) -import Data.Newtype (class Newtype, unwrap) -import Data.Foldable (lookup) as Foldable import Data.Foldable ( class Foldable , foldlDefault @@ -42,6 +31,10 @@ import Data.Foldable , foldr , foldrDefault ) +import Data.Foldable (lookup) as Foldable +import Data.Generic.Rep (class Generic) +import Data.Maybe (Maybe(Just, Nothing), isJust) +import Data.Newtype (class Newtype, unwrap) import Data.Show.Generic (genericShow) import Data.These (These(Both, That, This), these) import Data.Traversable (class Traversable, for, sequence, traverse) @@ -67,6 +60,8 @@ derive instance Generic (Map k v) _ derive instance Newtype (Map k v) _ derive newtype instance (Eq k, Eq v) => Eq (Map k v) derive newtype instance (Ord k, Ord v) => Ord (Map k v) +derive newtype instance (EncodeAeson k, EncodeAeson v) => EncodeAeson (Map k v) +derive newtype instance (DecodeAeson k, DecodeAeson v) => DecodeAeson (Map k v) instance (Show k, Show v) => Show (Map k v) where show = genericShow @@ -222,4 +217,4 @@ mapMaybeWithKey -> Map k a -> Map k b mapMaybeWithKey f (Map xs) = - Map $ Array.mapMaybe (\(k /\ v) -> (k /\ _) <$> f k v) xs \ No newline at end of file + Map $ Array.mapMaybe (\(k /\ v) -> (k /\ _) <$> f k v) xs diff --git a/src/Plutus/Types/Credential.purs b/src/Plutus/Types/Credential.purs index bb98b89e0..e80c9a7d0 100644 --- a/src/Plutus/Types/Credential.purs +++ b/src/Plutus/Types/Credential.purs @@ -5,13 +5,13 @@ module Plutus.Types.Credential import Prelude -import Serialization.Address - ( CertificateIndex - , Slot - , TransactionIndex - ) +import Aeson (class DecodeAeson, class EncodeAeson) +import Aeson.Decode ((), ()) +import Aeson.Encode ((>/\<)) +import Control.Lazy (defer) import Data.Generic.Rep (class Generic) import Data.Show.Generic (genericShow) +import Data.Tuple.Nested ((/\)) import FromData (class FromData, genericFromData) import Plutus.Types.DataSchema ( class HasPlutusSchema @@ -23,6 +23,10 @@ import Plutus.Types.DataSchema ) import ToData (class ToData, genericToData) import TypeLevel.Nat (S, Z) +import Aeson.Decode as D +import Aeson.Encode as E +import Data.Map as Map +import Serialization.Address (CertificateIndex, Slot, TransactionIndex) import Types.PubKeyHash (PubKeyHash) import Types.Scripts (ValidatorHash) @@ -58,6 +62,22 @@ instance :+ PNil ) +-- NOTE: mlabs-haskell/purescript-bridge generated and applied here +instance EncodeAeson Credential where + encodeAeson' x = pure $ + ( defer \_ -> case _ of + PubKeyCredential a -> E.encodeTagged "PubKeyCredential" a E.value + ScriptCredential a -> E.encodeTagged "ScriptCredential" a E.value + ) x + +instance DecodeAeson Credential where + decodeAeson = defer \_ -> D.decode + $ D.sumType "Credential" + $ Map.fromFoldable + [ "PubKeyCredential" /\ D.content (PubKeyCredential <$> D.value) + , "ScriptCredential" /\ D.content (ScriptCredential <$> D.value) + ] + instance ToData Credential where toData = genericToData @@ -105,3 +125,24 @@ instance ToData StakingCredential where instance FromData StakingCredential where fromData = genericFromData + +-- NOTE: mlabs-haskell/purescript-bridge generated and applied here +instance EncodeAeson StakingCredential where + encodeAeson' x = pure $ + ( defer \_ -> case _ of + StakingHash a -> E.encodeTagged "StakingHash" a E.value + StakingPtr ptr -> E.encodeTagged "StakingPtr" + (ptr.slot /\ ptr.txIx /\ ptr.certIx) + (E.tuple (E.value >/\< E.value >/\< E.value)) + ) x + +instance DecodeAeson StakingCredential where + decodeAeson = defer \_ -> D.decode + $ D.sumType "StakingCredential" + $ Map.fromFoldable + [ "StakingHash" /\ D.content (StakingHash <$> D.value) + , "StakingPtr" /\ D.content + (D.tuple $ toStakingPtr D.value D.value D.value) + ] + where + toStakingPtr slot txIx certIx = StakingPtr { slot, txIx, certIx } diff --git a/src/Plutus/Types/Value.purs b/src/Plutus/Types/Value.purs index 508ce0f90..a95b1633c 100644 --- a/src/Plutus/Types/Value.purs +++ b/src/Plutus/Types/Value.purs @@ -21,7 +21,17 @@ module Plutus.Types.Value import Prelude hiding (eq) +import Aeson + ( class DecodeAeson + , class EncodeAeson + , caseAesonObject + , decodeAeson + , encodeAeson + , getField + ) +import Contract.Prelude (Either(..)) import Control.Apply (lift3) +import Data.Argonaut (JsonDecodeError(..)) import Data.Array (concatMap, filter) import Data.BigInt (BigInt) import Data.Foldable (all) @@ -30,16 +40,28 @@ import Data.Maybe (Maybe(Nothing), fromMaybe) import Data.These (These(Both, That, This), these) import Data.Tuple (fst) import Data.Tuple.Nested (type (/\), (/\)) -import FromData (class FromData, fromData) -import ToData (class ToData, toData) -import Types.ByteArray (ByteArray) -import Types.TokenName (TokenName, adaToken, mkTokenName) +import FromData (class FromData) import Plutus.Types.AssocMap (Map(Map)) as Plutus import Plutus.Types.AssocMap (singleton, lookup, keys, union, mapThese) as Plutus.Map import Plutus.Types.CurrencySymbol (CurrencySymbol, mkCurrencySymbol, adaSymbol) +import ToData (class ToData) +import Types.ByteArray (ByteArray) +import Types.TokenName (TokenName, adaToken, mkTokenName) newtype Value = Value (Plutus.Map CurrencySymbol (Plutus.Map TokenName BigInt)) +derive newtype instance ToData Value +derive newtype instance FromData Value + +instance DecodeAeson Value where + decodeAeson = caseAesonObject + (Left $ TypeMismatch "Expected object") + (flip getField "getValue" >=> decodeAeson >>> map Value) + +instance EncodeAeson Value where + encodeAeson' (Value mph) = pure $ encodeAeson + { "getValue": encodeAeson mph } + -- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#eq instance Eq Value where eq = checkBinRel (==) @@ -59,16 +81,6 @@ instance JoinSemilattice Value where instance MeetSemilattice Value where meet = unionWith min --------------------------------------------------------------------------------- --- ToData / FromData --------------------------------------------------------------------------------- - -instance ToData Value where - toData (Value mp) = toData mp - -instance FromData Value where - fromData = map Value <<< fromData - -------------------------------------------------------------------------------- -- Public -------------------------------------------------------------------------------- diff --git a/src/Serialization/Address.purs b/src/Serialization/Address.purs index 875ccb26c..8e4da9470 100644 --- a/src/Serialization/Address.purs +++ b/src/Serialization/Address.purs @@ -83,7 +83,13 @@ module Serialization.Address import Prelude -import Aeson (class DecodeAeson, caseAesonObject, getField, jsonToAeson) +import Aeson + ( class DecodeAeson + , class EncodeAeson + , caseAesonObject + , getField + , jsonToAeson + ) import Control.Alt ((<|>)) import Data.Argonaut ( class DecodeJson @@ -91,9 +97,9 @@ import Data.Argonaut , JsonDecodeError(TypeMismatch) , fromNumber ) +import Data.Either (Either(Left)) import Data.Function (on) import Data.Generic.Rep (class Generic) -import Data.Either (Either(Left)) import Data.Maybe (Maybe(Just, Nothing), fromJust) import Data.Newtype (class Newtype) import Data.Show.Generic (genericShow) @@ -116,6 +122,7 @@ derive instance Generic Slot _ derive newtype instance Eq Slot derive newtype instance Ord Slot derive newtype instance DecodeAeson Slot +derive newtype instance EncodeAeson Slot derive newtype instance FromData Slot derive newtype instance ToData Slot @@ -159,6 +166,8 @@ derive instance Eq TransactionIndex derive instance Ord TransactionIndex derive instance Newtype TransactionIndex _ derive instance Generic TransactionIndex _ +derive newtype instance DecodeAeson TransactionIndex +derive newtype instance EncodeAeson TransactionIndex derive newtype instance ToData TransactionIndex derive newtype instance FromData TransactionIndex @@ -171,6 +180,8 @@ derive instance Eq CertificateIndex derive instance Ord CertificateIndex derive instance Newtype CertificateIndex _ derive instance Generic CertificateIndex _ +derive newtype instance DecodeAeson CertificateIndex +derive newtype instance EncodeAeson CertificateIndex derive newtype instance ToData CertificateIndex derive newtype instance FromData CertificateIndex diff --git a/src/Serialization/Hash.purs b/src/Serialization/Hash.purs index d6b70dc5d..9d52ffc99 100644 --- a/src/Serialization/Hash.purs +++ b/src/Serialization/Hash.purs @@ -16,6 +16,12 @@ module Serialization.Hash import Prelude +import Aeson + ( class DecodeAeson + , class EncodeAeson + , decodeAesonViaJson + , encodeAeson' + ) import Data.Argonaut ( class DecodeJson , class EncodeJson @@ -75,6 +81,12 @@ instance DecodeJson Ed25519KeyHash where <=< note (TypeMismatch "Invalid ByteArray") <<< hexToByteArray ) +instance DecodeAeson Ed25519KeyHash where + decodeAeson = decodeAesonViaJson + +instance EncodeAeson Ed25519KeyHash where + encodeAeson' = encodeAeson' <<< byteArrayToHex <<< ed25519KeyHashToBytes + foreign import _ed25519KeyHashFromBytesImpl :: MaybeFfiHelper -> ByteArray diff --git a/src/Types/Datum.purs b/src/Types/Datum.purs index 620231b7d..64993f21e 100644 --- a/src/Types/Datum.purs +++ b/src/Types/Datum.purs @@ -6,7 +6,7 @@ module Types.Datum import Prelude -import Aeson (class DecodeAeson) +import Aeson (class DecodeAeson, class EncodeAeson) import Data.Generic.Rep (class Generic) import Data.Newtype (class Newtype) import Data.Show.Generic (genericShow) @@ -29,6 +29,7 @@ derive newtype instance FromData Datum derive newtype instance Ord Datum derive newtype instance ToData Datum derive newtype instance DecodeAeson Datum +derive newtype instance EncodeAeson Datum instance Show Datum where show = genericShow diff --git a/src/Types/Interval.purs b/src/Types/Interval.purs index 74e0d16ab..59470cd2b 100644 --- a/src/Types/Interval.purs +++ b/src/Types/Interval.purs @@ -41,6 +41,20 @@ module Types.Interval , upperBound ) where +import Prelude + +import Aeson + ( class DecodeAeson + , class EncodeAeson + , decodeAeson + , encodeAeson + , encodeAeson' + ) +import Aeson.Decode ((), ()) +import Aeson.Decode as D +import Aeson.Encode ((>$<), (>/\<)) +import Aeson.Encode as E +import Control.Lazy (defer) import Data.BigInt (BigInt, quot) import Data.BigInt (fromString, fromInt) as BigInt import Data.Enum (class Enum, succ) @@ -51,14 +65,15 @@ import Data.Lattice , class JoinSemilattice , class MeetSemilattice ) +import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing), fromJust) import Data.Newtype (class Newtype, unwrap) import Data.Show.Generic (genericShow) +import Data.Tuple.Nested ((/\)) import Data.UInt (fromString) as UInt +import FromData (class FromData, genericFromData) import Helpers (uIntToBigInt, bigIntToUInt) import Partial.Unsafe (unsafePartial) -import Prelude -import Serialization.Address (Slot(Slot)) import Plutus.Types.DataSchema ( class HasPlutusSchema , type (:+) @@ -67,9 +82,9 @@ import Plutus.Types.DataSchema , I , PNil ) -import TypeLevel.Nat (S, Z) +import Serialization.Address (Slot(Slot)) import ToData (class ToData, genericToData) -import FromData (class FromData, genericFromData) +import TypeLevel.Nat (S, Z) -------------------------------------------------------------------------------- -- Interval Type and related @@ -176,6 +191,11 @@ instance Show a => Show (UpperBound a) where newtype Interval :: Type -> Type newtype Interval a = Interval { from :: LowerBound a, to :: UpperBound a } +derive instance Generic (Interval a) _ +derive newtype instance Eq a => Eq (Interval a) +derive instance Functor Interval +derive instance Newtype (Interval a) _ + instance HasPlutusSchema (Interval a) ( "Interval" @@ -189,10 +209,6 @@ instance :+ PNil ) -derive instance Generic (Interval a) _ -derive newtype instance Eq a => Eq (Interval a) -derive instance Functor Interval - instance Show a => Show (Interval a) where show = genericShow @@ -214,6 +230,15 @@ instance ToData a => ToData (Interval a) where instance FromData a => FromData (Interval a) where fromData i = genericFromData i +instance EncodeAeson a => EncodeAeson (Interval a) where + encodeAeson' (Interval i) = encodeAeson' $ HaskInterval + { ivFrom: i.from, ivTo: i.to } + +instance DecodeAeson a => DecodeAeson (Interval a) where + decodeAeson a = do + (HaskInterval i) <- decodeAeson a + pure $ Interval { from: i.ivFrom, to: i.ivTo } + -------------------------------------------------------------------------------- -- POSIXTIME Type and related -------------------------------------------------------------------------------- @@ -538,3 +563,68 @@ posixTimeToEnclosingSlot (SlotConfig { slotLength, slotZeroTime }) (POSIXTime t) -- TO DO: https://github.com/Plutonomicon/cardano-transaction-lib/issues/169 -- -- | Get the current slot number -- currentSlot :: SlotConfig -> Effect Slot + +-- NOTE: mlabs-haskell/purescript-bridge generated and applied here + +newtype HaskInterval a = HaskInterval + { ivFrom :: LowerBound a, ivTo :: UpperBound a } + +derive instance Generic (HaskInterval a) _ +derive newtype instance Eq a => Eq (HaskInterval a) +derive instance Functor HaskInterval +derive instance Newtype (HaskInterval a) _ + +instance (EncodeAeson a) => EncodeAeson (HaskInterval a) where + encodeAeson' x = pure $ + ( defer \_ -> E.encode $ unwrap >$< + ( E.record + { ivFrom: E.value :: _ (LowerBound a) + , ivTo: E.value :: _ (UpperBound a) + } + ) + ) x + +instance (DecodeAeson a) => DecodeAeson (HaskInterval a) where + decodeAeson = defer \_ -> D.decode $ + ( HaskInterval <$> D.record "Interval" + { ivFrom: D.value :: _ (LowerBound a) + , ivTo: D.value :: _ (UpperBound a) + } + ) + +instance (EncodeAeson a) => EncodeAeson (LowerBound a) where + encodeAeson' x = pure $ + ( defer \_ -> E.encode $ (case _ of LowerBound a b -> (a /\ b)) >$< + (E.tuple (E.value >/\< E.value)) + ) x + +instance (DecodeAeson a) => DecodeAeson (LowerBound a) where + decodeAeson = defer \_ -> D.decode $ + (D.tuple $ LowerBound D.value D.value) + +instance (EncodeAeson a) => EncodeAeson (UpperBound a) where + encodeAeson' x = pure $ + ( defer \_ -> E.encode $ (case _ of UpperBound a b -> (a /\ b)) >$< + (E.tuple (E.value >/\< E.value)) + ) x + +instance (DecodeAeson a) => DecodeAeson (UpperBound a) where + decodeAeson = defer \_ -> D.decode $ + (D.tuple $ UpperBound D.value D.value) + +instance (EncodeAeson a) => EncodeAeson (Extended a) where + encodeAeson' x = pure $ + ( defer \_ -> case _ of + NegInf -> encodeAeson { tag: "NegInf" } + Finite a -> E.encodeTagged "Finite" a E.value + PosInf -> encodeAeson { tag: "PosInf" } + ) x + +instance (DecodeAeson a) => DecodeAeson (Extended a) where + decodeAeson = defer \_ -> D.decode + $ D.sumType "Extended" + $ Map.fromFoldable + [ "NegInf" /\ pure NegInf + , "Finite" /\ D.content (Finite <$> D.value) + , "PosInf" /\ pure PosInf + ] diff --git a/src/Types/PubKeyHash.purs b/src/Types/PubKeyHash.purs index d7e6efb42..506e44107 100644 --- a/src/Types/PubKeyHash.purs +++ b/src/Types/PubKeyHash.purs @@ -13,13 +13,18 @@ import Data.Argonaut ) import Data.Either (Either(Left)) import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype) import Data.Show.Generic (genericShow) import FromData (class FromData) import Metadata.FromMetadata (class FromMetadata) import Metadata.ToMetadata (class ToMetadata) import Serialization.Hash (Ed25519KeyHash) import ToData (class ToData) +import Aeson (class DecodeAeson, class EncodeAeson) +import Data.Newtype (class Newtype, unwrap, wrap) +import Record (get) +import Type.Proxy (Proxy(Proxy)) +import Aeson.Decode as D +import Aeson.Encode as E newtype PubKeyHash = PubKeyHash Ed25519KeyHash @@ -41,3 +46,14 @@ instance DecodeJson PubKeyHash where decodeJson = caseJsonObject (Left $ TypeMismatch "Expected object") (flip getField "getPubKeyHash" >=> decodeJson >>> map PubKeyHash) + +-- NOTE: mlabs-haskell/purescript-bridge generated and applied here +instance EncodeAeson PubKeyHash where + encodeAeson' x = pure $ E.encode + (E.record { getPubKeyHash: E.value :: _ (Ed25519KeyHash) }) + { getPubKeyHash: unwrap x } + +instance DecodeAeson PubKeyHash where + decodeAeson x = wrap <<< get (Proxy :: Proxy "getPubKeyHash") <$> D.decode + (D.record "getPubKeyHash " { getPubKeyHash: D.value :: _ (Ed25519KeyHash) }) + x diff --git a/src/Types/Scripts.purs b/src/Types/Scripts.purs index 7f102911b..266cc1a49 100644 --- a/src/Types/Scripts.purs +++ b/src/Types/Scripts.purs @@ -10,6 +10,12 @@ module Types.Scripts import Prelude +import Aeson + ( class DecodeAeson + , class EncodeAeson + , decodeAesonViaJson + , encodeAesonViaJson + ) import Data.Argonaut ( class DecodeJson , class EncodeJson @@ -43,6 +49,8 @@ derive newtype instance Eq PlutusScript derive newtype instance Ord PlutusScript derive newtype instance DecodeJson PlutusScript derive newtype instance EncodeJson PlutusScript +derive newtype instance DecodeAeson PlutusScript +derive newtype instance EncodeAeson PlutusScript instance Show PlutusScript where show = genericShow @@ -72,7 +80,13 @@ instance DecodeJson MintingPolicy where instance EncodeJson MintingPolicy where encodeJson (MintingPolicy script) = encodeJson - { "getValidator": encodeJson script } + { "getMintingPolicy": encodeJson script } + +instance DecodeAeson MintingPolicy where + decodeAeson = decodeAesonViaJson + +instance EncodeAeson MintingPolicy where + encodeAeson' = encodeAesonViaJson instance Show MintingPolicy where show = genericShow @@ -91,6 +105,12 @@ instance EncodeJson Validator where encodeJson (Validator script) = encodeJson { "getValidator": encodeJson script } +instance DecodeAeson Validator where + decodeAeson = decodeAesonViaJson + +instance EncodeAeson Validator where + encodeAeson' = encodeAesonViaJson + instance Show Validator where show = genericShow @@ -110,6 +130,12 @@ instance EncodeJson StakeValidator where encodeJson (StakeValidator script) = encodeJson { "getStakeValidator": encodeJson script } +instance DecodeAeson StakeValidator where + decodeAeson = decodeAesonViaJson + +instance EncodeAeson StakeValidator where + encodeAeson' = encodeAesonViaJson + instance Show StakeValidator where show = genericShow @@ -134,6 +160,12 @@ instance EncodeJson MintingPolicyHash where encodeJson (MintingPolicyHash hash) = encodeJson { "getMintingPolicyHash": encodeJson hash } +instance DecodeAeson MintingPolicyHash where + decodeAeson = decodeAesonViaJson + +instance EncodeAeson MintingPolicyHash where + encodeAeson' = encodeAesonViaJson + instance Show MintingPolicyHash where show = genericShow @@ -155,6 +187,12 @@ instance EncodeJson ValidatorHash where encodeJson (ValidatorHash hash) = encodeJson { "getValidatorHash": encodeJson hash } +instance DecodeAeson ValidatorHash where + decodeAeson = decodeAesonViaJson + +instance EncodeAeson ValidatorHash where + encodeAeson' = encodeAesonViaJson + instance Show ValidatorHash where show = genericShow @@ -172,5 +210,11 @@ instance EncodeJson StakeValidatorHash where encodeJson (StakeValidatorHash hash) = encodeJson { "getStakeValidatorHash": encodeJson hash } +instance DecodeAeson StakeValidatorHash where + decodeAeson = decodeAesonViaJson + +instance EncodeAeson StakeValidatorHash where + encodeAeson' = encodeAesonViaJson + instance Show StakeValidatorHash where show = genericShow From f7ceea10084b4dd0b4b396f01e33f4aa67e41a06 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Thu, 19 May 2022 20:55:52 +0200 Subject: [PATCH 23/85] spago2nix generate --- spago-packages.nix | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/spago-packages.nix b/spago-packages.nix index 0502a0bfe..194ce7c21 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -17,6 +17,18 @@ let installPhase = "ln -s $src $out"; }; + "aeson-helpers" = pkgs.stdenv.mkDerivation { + name = "aeson-helpers"; + version = "44d0dae060cf78babd4534320192b58c16a6f45b"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-bridge-aeson-helpers.git"; + rev = "44d0dae060cf78babd4534320192b58c16a6f45b"; + sha256 = "1fgvaqvd9145zz5xw3fsa5vm75kp6bxcwa2nzq1dx2367h3a0zl0"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "aff" = pkgs.stdenv.mkDerivation { name = "aff"; version = "v6.0.0"; @@ -1097,6 +1109,18 @@ let installPhase = "ln -s $src $out"; }; + "spec-quickcheck" = pkgs.stdenv.mkDerivation { + name = "spec-quickcheck"; + version = "v4.0.0"; + src = pkgs.fetchgit { + url = "https://github.com/purescript-spec/purescript-spec-quickcheck.git"; + rev = "c2991f475b8fa11de8b68bcb5895b36be04d1e82"; + sha256 = "01xcbfyqzax9c5najbfy12q0nvfklfm37llj2vkmi3wgkskg4prz"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "st" = pkgs.stdenv.mkDerivation { name = "st"; version = "v5.0.1"; From 15a6ec6dde1dd83a83f103264fa2878107cb7e5c Mon Sep 17 00:00:00 2001 From: Rory Tyler Hayford Date: Fri, 20 May 2022 15:31:16 +0700 Subject: [PATCH 24/85] Formatting --- server/src/Api.hs | 4 +-- server/src/Api/Handlers.hs | 18 +++++------ server/src/Types.hs | 62 ++++++++++++++++++++------------------ server/test/Main.hs | 14 +++++---- 4 files changed, 51 insertions(+), 47 deletions(-) diff --git a/server/src/Api.hs b/server/src/Api.hs index eb578909f..178fed6d5 100644 --- a/server/src/Api.hs +++ b/server/src/Api.hs @@ -59,9 +59,9 @@ import Types ( Fee, FinalizeRequest, FinalizedTransaction, + HashBytesRequest, HashDataRequest, HashScriptRequest, - HashBytesRequest, HashedData, HashedScript, WitnessCount, @@ -159,7 +159,7 @@ apiDocs = Docs.docs api estimateTxFees :: WitnessCount -> Cbor -> ClientM Fee applyArgs :: ApplyArgsRequest -> ClientM AppliedScript hashScript :: HashScriptRequest -> ClientM HashedScript -plutusHash :: HashBytesRequest -> ClientM ByteStringHash +plutusHash :: HashBytesRequest -> ClientM ByteStringHash evalTxExecutionUnits :: Cbor -> ClientM ExecutionUnitsMap finalizeTx :: FinalizeRequest -> ClientM FinalizedTransaction hashData :: HashDataRequest -> ClientM HashedData diff --git a/server/src/Api/Handlers.hs b/server/src/Api/Handlers.hs index 1b787d302..641f8d9fd 100644 --- a/server/src/Api/Handlers.hs +++ b/server/src/Api/Handlers.hs @@ -64,13 +64,13 @@ import Types ( Fee (Fee), FinalizeRequest (FinalizeRequest, datums, redeemers, tx), FinalizedTransaction (FinalizedTransaction), + HashBytesRequest (HashBytesRequest), HashDataRequest (HashDataRequest), + HashMethod (Blake2b_256, Sha2_256, Sha3_256), HashScriptRequest (HashScriptRequest), - HashedData (HashedData), HashedBytes (HashedBytes), - HashBytesRequest (HashBytesRequest), - HashedScript (HashedScript), - HashMethod (Blake2b_256, Sha2_256, Sha3_256), + HashedData (HashedData), + HashedScript (HashedScript), RdmrPtrExUnits ( RdmrPtrExUnits, exUnitsMem, @@ -177,11 +177,11 @@ evalTxExecutionUnits cbor = } plutusHash :: HashBytesRequest -> AppM ByteStringHash -plutusHash (HashBytesRequest meth (BytesToHash hs)) = - let hf = case meth of - Sha3_256 -> PlutusTx.sha3_256 - Sha2_256 -> PlutusTx.sha2_256 - Blake2b_256 -> PlutusTx.blake2b_256 +plutusHash (HashBytesRequest meth (BytesToHash hs)) = + let hf = case meth of + Sha3_256 -> PlutusTx.sha3_256 + Sha2_256 -> PlutusTx.sha2_256 + Blake2b_256 -> PlutusTx.blake2b_256 in pure . ByteStringHash meth . HashedBytes . PlutusTx.fromBuiltin . hf $ PlutusTx.toBuiltin hs finalizeTx :: FinalizeRequest -> AppM FinalizedTransaction diff --git a/server/src/Types.hs b/server/src/Types.hs index 345d17ae2..cb45f207d 100644 --- a/server/src/Types.hs +++ b/server/src/Types.hs @@ -41,7 +41,6 @@ import Control.Monad.IO.Class (MonadIO) import Control.Monad.Reader (MonadReader, ReaderT, asks) import Data.Aeson (FromJSON (parseJSON), ToJSON (toJSON)) import Data.Aeson qualified as Aeson -import Data.Char (toLower) import Data.Aeson.Encoding qualified as Aeson.Encoding import Data.Aeson.Types (withText) import Data.Bifunctor (second) @@ -49,6 +48,7 @@ import Data.ByteString (ByteString) import Data.ByteString.Base16 qualified as Base16 import Data.ByteString.Lazy.Char8 qualified as LC8 import Data.ByteString.Short qualified as SBS +import Data.Char (toLower) import Data.Functor ((<&>)) import Data.Kind (Type) import Data.Maybe (fromMaybe) @@ -157,8 +157,8 @@ newtype AppliedScript = AppliedScript Ledger.Script deriving stock (Show, Generic) deriving newtype (Eq, FromJSON, ToJSON) -data HashBytesRequest = HashBytesRequest - { methodToUse :: HashMethod +data HashBytesRequest = HashBytesRequest + { methodToUse :: HashMethod , bytesToHash :: BytesToHash } deriving stock (Show, Eq, Generic) @@ -174,25 +174,27 @@ newtype HashedBytes = HashedBytes ByteString deriving newtype (Eq) deriving (FromJSON, ToJSON) via JsonHexString -data HashMethod = Blake2b_256 - | Sha2_256 - | Sha3_256 +data HashMethod + = Blake2b_256 + | Sha2_256 + | Sha3_256 deriving stock (Show, Eq, Generic) -instance FromJSON HashMethod where - parseJSON = - Aeson.genericParseJSON - Aeson.defaultOptions - { Aeson.constructorTagModifier = fmap toLower } - -instance ToJSON HashMethod where - toJSON = - Aeson.genericToJSON - Aeson.defaultOptions - { Aeson.constructorTagModifier = fmap toLower } - - -data ByteStringHash = ByteStringHash +instance FromJSON HashMethod where + parseJSON = + Aeson.genericParseJSON + Aeson.defaultOptions + { Aeson.constructorTagModifier = fmap toLower + } + +instance ToJSON HashMethod where + toJSON = + Aeson.genericToJSON + Aeson.defaultOptions + { Aeson.constructorTagModifier = fmap toLower + } + +data ByteStringHash = ByteStringHash { methodUsed :: HashMethod , hash :: HashedBytes } @@ -416,28 +418,28 @@ instance Docs.ToSample ByteStringHash where toSamples _ = [ ( "Hash bytes are returned as hexidecimal string" - , ByteStringHash Blake2b_256 $ HashedBytes - "\184\254\159\DELbU\166\250\b\246h\171c*\ - \\141\b\SUB\216y\131\199|\210t\228\140\228P\240\179I\253" + , ByteStringHash Blake2b_256 $ + HashedBytes + "\184\254\159\DELbU\166\250\b\246h\171c*\ + \\141\b\SUB\216y\131\199|\210t\228\140\228P\240\179I\253" ) ] -instance Docs.ToSample HashMethod where - toSamples _ = +instance Docs.ToSample HashMethod where + toSamples _ = [ - ( "Method to use for hashing as defined in PlutusTx" + ( "Method to use for hashing as defined in PlutusTx" , Sha2_256 ) ] -instance Docs.ToSample HashBytesRequest where - toSamples _ = +instance Docs.ToSample HashBytesRequest where + toSamples _ = [ - ( "Request consisting of a HashMethod and the bytestring to be hashed" + ( "Request consisting of a HashMethod and the bytestring to be hashed" , HashBytesRequest Blake2b_256 $ BytesToHash "foo" ) ] - -- For decoding test fixtures, samples, etc... unsafeDecode :: forall (a :: Type). FromJSON a => String -> LC8.ByteString -> a diff --git a/server/test/Main.hs b/server/test/Main.hs index da31f39cb..121695a83 100644 --- a/server/test/Main.hs +++ b/server/test/Main.hs @@ -1,6 +1,6 @@ module Main (main) where -import Api (app, applyArgs, plutusHash, estimateTxFees, hashData, hashScript) +import Api (app, applyArgs, estimateTxFees, hashData, hashScript, plutusHash) import Cardano.Api qualified as C import Data.ByteString.Lazy.Char8 qualified as LC8 import Data.Kind (Type) @@ -37,15 +37,15 @@ import Types ( AppliedScript (AppliedScript), ApplyArgsRequest (ApplyArgsRequest, args, script), ByteStringHash (ByteStringHash), - HashBytesRequest (HashBytesRequest), - HashedBytes (HashedBytes), - HashMethod (Blake2b_256), BytesToHash (BytesToHash), Cbor (Cbor), Env, Fee (Fee), + HashBytesRequest (HashBytesRequest), HashDataRequest (HashDataRequest), + HashMethod (Blake2b_256), HashScriptRequest (HashScriptRequest), + HashedBytes (HashedBytes), HashedData (HashedData), HashedScript (HashedScript), ServerOptions (ServerOptions, networkId, nodeSocket, port), @@ -157,8 +157,10 @@ blake2bHashSpec = around withTestApp $ do where -- obtained from `fromBuiltin . blake2b_256 $ toBuiltin @ByteString "foo"` blake2bRes :: ByteStringHash - blake2bRes = ByteStringHash Blake2b_256 $ HashedBytes - "\184\254\159\DELbU\166\250\b\246h\171c*\141\b\SUB\216y\131\199|\210t\228\140\228P\240\179I\253" + blake2bRes = + ByteStringHash Blake2b_256 $ + HashedBytes + "\184\254\159\DELbU\166\250\b\246h\171c*\141\b\SUB\216y\131\199|\210t\228\140\228P\240\179I\253" setupClientEnv :: SpecM Port (Port -> ClientEnv) setupClientEnv = do From 433ee687ddba39778f965f37c6665de6432d1904 Mon Sep 17 00:00:00 2001 From: Rory Tyler Hayford Date: Fri, 20 May 2022 15:49:13 +0700 Subject: [PATCH 25/85] Use `unless` --- src/QueryM/Crypto.purs | 6 +++--- test/Utils.purs | 11 ----------- 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/src/QueryM/Crypto.purs b/src/QueryM/Crypto.purs index 8646b84d3..d590ff70b 100644 --- a/src/QueryM/Crypto.purs +++ b/src/QueryM/Crypto.purs @@ -12,6 +12,7 @@ import Prelude import Affjax as Affjax import Affjax.RequestBody as Affjax.RequestBody import Affjax.ResponseFormat as Affjax.ResponseFormat +import Control.Monad.Error.Class (throwError) import Control.Monad.Reader.Trans (asks) import Data.Argonaut ( class DecodeJson @@ -47,7 +48,6 @@ import Serialization.PlutusData (convertPlutusData) as Serialization import Types.ByteArray (ByteArray, byteArrayToHex, hexToByteArray) import Types.Datum (Datum, DataHash) import Types.Scripts (PlutusScript) -import Test.Utils (guardNote) import Types.Transaction as Transaction import Untagged.Union (asOneOf) @@ -89,8 +89,8 @@ plutusHash meth bytes = do lmap Affjax.printError response >>= _.body >>> decodeJson >>> lmap printJsonDecodeError goal <- lmap printJsonDecodeError $ decodeJson methJson - guardNote "responseJson wasn't hashed with the method requested" $ - responseJson.methodUsed == goal + unless (responseJson.methodUsed == goal) $ + throwError "responseJson wasn't hashed with the method requested" pure responseJson.hash hashData :: Datum -> QueryM (Maybe HashedData) diff --git a/test/Utils.purs b/test/Utils.purs index 47143c7fd..c1bf4543e 100644 --- a/test/Utils.purs +++ b/test/Utils.purs @@ -5,7 +5,6 @@ module Test.Utils , assertTrue_ , errEither , errMaybe - , guardNote ) where import Prelude @@ -14,7 +13,6 @@ import Data.Const (Const) import Data.Foldable (sequence_) import Data.Maybe (Maybe(Just, Nothing)) import Data.Either (Either(Left, Right)) -import Control.Monad.Error.Class (class MonadThrow, throwError) import Effect.Aff (Aff, error) import Effect.Aff.Class (liftAff) import Effect.Class (class MonadEffect, liftEffect) @@ -71,15 +69,6 @@ errEither = case _ of Left msg -> liftEffect $ throw msg Right res -> pure res -guardNote - :: forall (m :: Type -> Type) (e :: Type) - . MonadThrow e m - => e - -> Boolean - -> m Unit -guardNote msg false = throwError msg -guardNote _ true = pure unit - errMaybe :: forall (m :: Type -> Type) (a :: Type) . MonadEffect m From 0095aa3134abd8222b678641193f9eead64f49bf Mon Sep 17 00:00:00 2001 From: Rory Tyler Hayford Date: Fri, 20 May 2022 15:51:57 +0700 Subject: [PATCH 26/85] Imports --- src/Deserialization/FromBytes.purs | 2 +- src/Plutus/ToPlutusType.purs | 55 ++++++++++++++++++------------ 2 files changed, 34 insertions(+), 23 deletions(-) diff --git a/src/Deserialization/FromBytes.purs b/src/Deserialization/FromBytes.purs index 575128238..091a1f88e 100644 --- a/src/Deserialization/FromBytes.purs +++ b/src/Deserialization/FromBytes.purs @@ -28,7 +28,7 @@ import Serialization.Types , TransactionWitnessSet , VRFKeyHash ) -import Type.Prelude (Proxy(..)) +import Type.Prelude (Proxy(Proxy)) import Type.Row (type (+)) import Types.ByteArray (ByteArray) diff --git a/src/Plutus/ToPlutusType.purs b/src/Plutus/ToPlutusType.purs index f1b60c064..f06054b44 100644 --- a/src/Plutus/ToPlutusType.purs +++ b/src/Plutus/ToPlutusType.purs @@ -5,6 +5,18 @@ module Plutus.ToPlutusType import Prelude +import Cardano.Types.Transaction + ( TransactionOutput(TransactionOutput) + , UtxoM(UtxoM) + ) as Cardano +import Cardano.Types.TransactionUnspentOutput + ( TransactionUnspentOutput(TransactionUnspentOutput) + ) as Cardano +import Cardano.Types.Value (Coin(Coin), Value(Value)) as Cardano +import Cardano.Types.Value + ( NonAdaAsset(NonAdaAsset) + , getCurrencySymbol + ) import Data.Array (head, uncons, snoc, concatMap, take, drop, foldr) import Data.Identity (Identity(Identity)) import Data.Foldable (fold) @@ -16,13 +28,21 @@ import Data.Tuple (fst) as Tuple import Data.Tuple.Nested (type (/\), (/\)) import Data.UInt (UInt, fromInt, (.&.), and, shl, zshr) import Partial.Unsafe (unsafePartial) - -import Serialization.Address (Address) as Serialization -import Serialization.Address (addressBytes) as Serialization.Address -import Serialization.Hash (ed25519KeyHashFromBytes, scriptHashFromBytes) - import Plutus.Types.Address (Address) as Plutus -import Plutus.Types.AddressHeaderType (AddressHeaderType(..), addrHeaderType) +import Plutus.Types.AddressHeaderType + ( AddressHeaderType + ( PaymentKeyHashStakeKeyHash + , ScriptHashStakeKeyHash + , PaymentKeyHashScriptHash + , ScriptHashScriptHash + , PaymentKeyHashPointer + , ScriptHashPointer + , PaymentKeyHash + , ScriptHash + ) + + , addrHeaderType + ) import Plutus.Types.Credential ( Credential(PubKeyCredential, ScriptCredential) , StakingCredential(StakingHash, StakingPtr) @@ -36,21 +56,11 @@ import Plutus.Types.TransactionUnspentOutput ) as Plutus import Plutus.Types.Value (Coin, Value) as Plutus import Plutus.Types.Value (lovelaceValueOf, singleton') as Plutus.Value - +import Serialization.Address (Address) as Serialization +import Serialization.Address (addressBytes) as Serialization.Address +import Serialization.Hash (ed25519KeyHashFromBytes, scriptHashFromBytes) import Types.ByteArray (ByteArray, byteArrayFromIntArray, byteArrayToIntArray) import Types.TokenName (getTokenName) -import Cardano.Types.Transaction - ( TransactionOutput(TransactionOutput) - , UtxoM(UtxoM) - ) as Cardano -import Cardano.Types.TransactionUnspentOutput - ( TransactionUnspentOutput(TransactionUnspentOutput) - ) as Cardano -import Cardano.Types.Value (Coin(Coin), Value(Value)) as Types -import Cardano.Types.Value - ( NonAdaAsset(NonAdaAsset) - , getCurrencySymbol - ) class ToPlutusType :: (Type -> Type) -> Type -> Type -> Constraint class ToPlutusType f t pt | t -> pt, t pt -> f where @@ -64,8 +74,9 @@ class ToPlutusType f t pt | t -> pt, t pt -> f where -- have the `Ord` constraint on the keys. Therefore, one should be careful when -- performing conversions between `Value`s, since the ordering of components -- can't be guaranteed. -instance ToPlutusType Identity Types.Value Plutus.Value where - toPlutusType (Types.Value (Types.Coin adaAmount) (NonAdaAsset nonAdaAssets)) = +instance ToPlutusType Identity Cardano.Value Plutus.Value where + toPlutusType + (Cardano.Value (Cardano.Coin adaAmount) (NonAdaAsset nonAdaAssets)) = Identity (adaValue <> fold nonAdaValues) where adaValue :: Plutus.Value @@ -84,7 +95,7 @@ instance ToPlutusType Identity Types.Value Plutus.Value where -- Cardano.Types.Value.Coin -> Plutus.Types.Value.UtxoM -------------------------------------------------------------------------------- -instance ToPlutusType Identity Types.Coin Plutus.Coin where +instance ToPlutusType Identity Cardano.Coin Plutus.Coin where toPlutusType = pure <<< wrap <<< unwrap -------------------------------------------------------------------------------- From 391f8cb572fde4ccbdf252afac2d4b2470285cb7 Mon Sep 17 00:00:00 2001 From: Rory Tyler Hayford Date: Fri, 20 May 2022 16:43:02 +0700 Subject: [PATCH 27/85] Simplify field names --- server/ctl-server.cabal | 2 ++ server/src/Types.hs | 8 +++----- src/QueryM/Crypto.purs | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/server/ctl-server.cabal b/server/ctl-server.cabal index 09c128c8f..34df3ccaf 100644 --- a/server/ctl-server.cabal +++ b/server/ctl-server.cabal @@ -15,6 +15,8 @@ common common-language DeriveLift DeriveTraversable DerivingStrategies + DerivingVia + DuplicateRecordFields ExplicitForAll FlexibleContexts FlexibleInstances diff --git a/server/src/Types.hs b/server/src/Types.hs index 5f583fc7b..774c190a4 100644 --- a/server/src/Types.hs +++ b/server/src/Types.hs @@ -1,5 +1,3 @@ -{-# LANGUAGE DerivingVia #-} - module Types ( AppM (AppM), ServerOptions (..), @@ -171,8 +169,8 @@ newtype AppliedScript = AppliedScript Ledger.Script deriving newtype (Eq, FromJSON, ToJSON) data HashBytesRequest = HashBytesRequest - { methodToUse :: HashMethod - , bytesToHash :: BytesToHash + { method :: HashMethod + , bytes :: BytesToHash } deriving stock (Show, Eq, Generic) deriving anyclass (FromJSON, ToJSON) @@ -208,7 +206,7 @@ instance ToJSON HashMethod where } data ByteStringHash = ByteStringHash - { methodUsed :: HashMethod + { method :: HashMethod , hash :: HashedBytes } deriving stock (Show, Eq, Generic) diff --git a/src/QueryM/Crypto.purs b/src/QueryM/Crypto.purs index d590ff70b..24d38ac16 100644 --- a/src/QueryM/Crypto.purs +++ b/src/QueryM/Crypto.purs @@ -76,8 +76,8 @@ plutusHash meth bytes = do bytesJson = encodeJson $ byteArrayToHex bytes requestJson :: Json - requestJson = "bytesToHash" := bytesJson - ~> "methodToUse" := methJson + requestJson = "bytes" := bytesJson + ~> "method" := methJson ~> jsonEmptyObject reqBody :: Affjax.RequestBody.RequestBody @@ -85,11 +85,11 @@ plutusHash meth bytes = do response <- liftAff (Affjax.post Affjax.ResponseFormat.json url (pure reqBody)) pure $ do - responseJson :: ({ methodUsed :: String, hash :: ByteArray }) <- + responseJson :: ({ method :: String, hash :: ByteArray }) <- lmap Affjax.printError response >>= _.body >>> decodeJson >>> lmap printJsonDecodeError goal <- lmap printJsonDecodeError $ decodeJson methJson - unless (responseJson.methodUsed == goal) $ + unless (responseJson.method == goal) $ throwError "responseJson wasn't hashed with the method requested" pure responseJson.hash From a4ae6a6030d6a14b7eb02bfb55461fdb767a45a7 Mon Sep 17 00:00:00 2001 From: Rory Tyler Hayford Date: Fri, 20 May 2022 16:43:11 +0700 Subject: [PATCH 28/85] Update readme --- server/README.md | 86 ++++++++++++++++++++++-------------------------- 1 file changed, 39 insertions(+), 47 deletions(-) diff --git a/server/README.md b/server/README.md index 7e89c7420..23879bfba 100644 --- a/server/README.md +++ b/server/README.md @@ -51,52 +51,13 @@ The server executable can be built with `nix build .#cardano-trasaction-lib-serv "4d01000033222220051200120011" ``` -## POST /plutus-hash - -### Request: - -- Supported content types are: - - - `application/json;charset=utf-8` - - `application/json` - -- Bytes to hash as hexadecimal string (`application/json;charset=utf-8`, `application/json`): -- Hashing method from PlutusTx to hash with; one of `sha2_256`, `sha3_256`, `blake2b_256` - -```javascript -{ - "bytesToHash" : "68656C6C6F20776F726C64" - "methodToUse" : "sha3_256", -} -``` - -### Response: - -- Status code 200 -- Headers: [] - -- Supported content types are: - - - `application/json;charset=utf-8` - - `application/json` - -- Hash bytes are returned as hexidecimal string (`application/json;charset=utf-8`, `application/json`): -- Hashing Method used; one of `sha2_256`, `sha3_256`, `blake2b_256` - -```javascript -{ - "hash":"644bcc7e564373040999aac89e7622f3ca71fba1d972fd94a31c3bfbf24e3938", - "methodUsed":"sha3_256" -} -``` - ## GET /eval-ex-units ### GET Parameters: - tx - - **Values**: *84a300818258205d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65ad9599960001818258390030fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea9711c12f03c1ef2e935acc35ec2e6f96c650fd3bfba3e96550504d5336100021a0002b569a0f5f6* - - **Description**: A CBOR-encoded `Tx AlonzoEra`; should be sent as a hexadecimal string + - **Values**: *84a300818258205d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65ad9599960001818258390030fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea9711c12f03c1ef2e935acc35ec2e6f96c650fd3bfba3e96550504d5336100021a0002b569a0f5f6* + - **Description**: A CBOR-encoded `Tx AlonzoEra`; should be sent as a hexadecimal string ### Response: @@ -109,10 +70,10 @@ The server executable can be built with `nix build .#cardano-trasaction-lib-serv - `application/json;charset=utf-8` - `application/json` -- The `(RdmrPtr -> ExUnits)` map as well as the scripts execution fee will be returned as a JSON object with a `rdmrPtrExUnitsList` field (containing execution units with corresponding redeemer pointers) and a `txScriptsFee` field (containing the fee that a transaction must pay for script execution) (`application/json;charset=utf-8`, `application/json`): +- The `(RdmrPtr -> ExUnits)` map will be returned as a list of `RdmrPtrExUnits` objects with the following structure (`application/json;charset=utf-8`, `application/json`): ```javascript -{"rdmrPtrExUnitsList":[{"exUnitsSteps":0,"rdmrPtrTag":0,"exUnitsMem":0,"rdmrPtrIdx":0}],"txScriptsFee":"0"} +[{"exUnitsSteps":0,"rdmrPtrTag":0,"exUnitsMem":0,"rdmrPtrIdx":0}] ``` ## GET /fees @@ -120,12 +81,12 @@ The server executable can be built with `nix build .#cardano-trasaction-lib-serv ### GET Parameters: - wit-count - - **Values**: *1* - - **Description**: A natural number representing the intended number of key witnessesfor the transaction + - **Values**: *1* + - **Description**: A natural number representing the intended number of key witnessesfor the transaction - tx - - **Values**: *84a300818258205d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65ad9599960001818258390030fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea9711c12f03c1ef2e935acc35ec2e6f96c650fd3bfba3e96550504d5336100021a0002b569a0f5f6* - - **Description**: A CBOR-encoded `Tx AlonzoEra`; should be sent as a hexadecimal string + - **Values**: *84a300818258205d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65ad9599960001818258390030fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea9711c12f03c1ef2e935acc35ec2e6f96c650fd3bfba3e96550504d5336100021a0002b569a0f5f6* + - **Description**: A CBOR-encoded `Tx AlonzoEra`; should be sent as a hexadecimal string ### Response: @@ -236,3 +197,34 @@ The server executable can be built with `nix build .#cardano-trasaction-lib-serv ```javascript {"getScriptHash":"67f33146617a5e61936081db3b2117cbf59bd2123748f58ac9678656"} ``` + +## POST /plutus-hash + +### Request: + +- Supported content types are: + + - `application/json;charset=utf-8` + - `application/json` + +- Request consisting of a HashMethod and the bytestring to be hashed (`application/json;charset=utf-8`, `application/json`): + +```javascript +{"bytes":"666f6f","method":"blake2b_256"} +``` + +### Response: + +- Status code 200 +- Headers: [] + +- Supported content types are: + + - `application/json;charset=utf-8` + - `application/json` + +- Hash bytes are returned as hexidecimal string (`application/json;charset=utf-8`, `application/json`): + +```javascript +{"hash":"b8fe9f7f6255a6fa08f668ab632a8d081ad87983c77cd274e48ce450f0b349fd","method":"blake2b_256"} +``` From b1a8af6a3a2d60fe266fcf3460727977d5dc0ede Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Fri, 20 May 2022 16:09:00 +0200 Subject: [PATCH 29/85] Fix ogmios-datum-cache package path --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index a735a3fb2..4f93377cd 100644 --- a/flake.nix +++ b/flake.nix @@ -145,7 +145,7 @@ easy-ps = import inputs.easy-purescript-nix { pkgs = prev; }; ogmios-datum-cache = - inputs.ogmios-datum-cache.defaultPackage.${system}; + inputs.ogmios-datum-cache.packages.${system}.ogmios-datum-cache; ogmios = ogmios.packages.${system}."ogmios:exe:ogmios"; cardano-cli = cardano-node-exe.packages.${system}.cardano-cli; purescriptProject = import ./nix { inherit system; pkgs = prev; }; From c106ebb328461ace81e302b535d5bdb174b942fe Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Fri, 20 May 2022 16:25:54 +0200 Subject: [PATCH 30/85] Update ogmios-datum-cache input --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index dc30ad182..4d48680e6 100644 --- a/flake.lock +++ b/flake.lock @@ -1528,11 +1528,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1652673546, - "narHash": "sha256-fd3UST7vjed7KLOrLsFD8/nP7YXhCAQ3ODFs5SjZ6SQ=", + "lastModified": 1652899192, + "narHash": "sha256-2vsTyeO6GLwTla3sSbHhObw3q2nOGaEviMBSfcTwW8k=", "owner": "mlabs-haskell", "repo": "ogmios-datum-cache", - "rev": "dbff887d14122249352c1a853be05023f64a2664", + "rev": "1fd8b3d65589de8a1d0a5a818da16da5929d7461", "type": "github" }, "original": { From 37d53f81584cb3ccaa0ce8d6f09b0b0d13360d35 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Mon, 23 May 2022 11:33:27 +0200 Subject: [PATCH 31/85] Fix broken merge --- src/QueryM.purs | 2 +- src/Serialization/Hash.purs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/QueryM.purs b/src/QueryM.purs index 87530e67d..f7a9082f1 100644 --- a/src/QueryM.purs +++ b/src/QueryM.purs @@ -156,7 +156,7 @@ import Serialization.WitnessSet (convertRedeemers) as Serialization import Types.ByteArray (ByteArray, byteArrayToHex, hexToByteArray) import Types.CborBytes (CborBytes) import Types.Chain as Chain -import Types.Datum (DataHash(DataHash), Datum) +import Types.Datum (DataHash, Datum) import Types.Interval (SlotConfig, defaultSlotConfig) import Types.MultiMap (MultiMap) import Types.MultiMap as MultiMap diff --git a/src/Serialization/Hash.purs b/src/Serialization/Hash.purs index 1723a7fe9..ef3c3ab18 100644 --- a/src/Serialization/Hash.purs +++ b/src/Serialization/Hash.purs @@ -78,7 +78,7 @@ instance DecodeAeson Ed25519KeyHash where ) instance EncodeAeson Ed25519KeyHash where - encodeAeson' = encodeAeson' <<< byteArrayToHex <<< ed25519KeyHashToBytes + encodeAeson' = encodeAeson' <<< rawBytesToHex <<< ed25519KeyHashToBytes foreign import _ed25519KeyHashFromBytesImpl :: MaybeFfiHelper From f3f3d528fce1f9503130c8fbd430509967986cfa Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Mon, 23 May 2022 07:22:23 -0400 Subject: [PATCH 32/85] testing a fix for rational stuff --- src/Types/Rational.purs | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/src/Types/Rational.purs b/src/Types/Rational.purs index 4afed972d..b3c181620 100644 --- a/src/Types/Rational.purs +++ b/src/Types/Rational.purs @@ -46,29 +46,23 @@ derive newtype instance CommutativeRing Rational -- Representation of Rational in Aeson, used internally type RationalRep = - { unRational :: - { numerator :: StringifiedBigInt + { numerator :: StringifiedBigInt , denominator :: StringifiedBigInt } - } instance EncodeAeson Rational where encodeAeson' r = encodeAeson' - ( { "unRational": - { "numerator": StringifiedBigInt (numerator r) - , "denominator": StringifiedBigInt (denominator r) - } - } :: RationalRep + ( { "numerator": StringifiedBigInt (numerator r) + , "denominator": StringifiedBigInt (denominator r) + } :: RationalRep ) instance DecodeAeson Rational where decodeAeson r = do - { unRational: - { numerator: (StringifiedBigInt n :: StringifiedBigInt) - , denominator: (StringifiedBigInt d :: StringifiedBigInt) - } - } :: RationalRep <- decodeAeson r - maybe (Left $ UnexpectedValue $ toStringifiedNumbersJson r) pure $ n % d + { numerator: (StringifiedBigInt n :: StringifiedBigInt) + , denominator: (StringifiedBigInt d :: StringifiedBigInt) + } :: RationalRep <- decodeAeson r + maybe (Left $ UnexpectedValue $ toStringifiedNumbersJson r) pure $ n % d newtype StringifiedBigInt = StringifiedBigInt BigInt From 42719581b4e45ed5fe67947912ddd15fe9d54b0c Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Mon, 23 May 2022 08:43:46 -0400 Subject: [PATCH 33/85] rational fix attempt #2 --- src/Types/Rational.purs | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/src/Types/Rational.purs b/src/Types/Rational.purs index b3c181620..f71211cff 100644 --- a/src/Types/Rational.purs +++ b/src/Types/Rational.purs @@ -41,26 +41,23 @@ derive newtype instance Show Rational derive newtype instance Eq Rational derive newtype instance Ord Rational derive newtype instance Semiring Rational -derive newtype instance Ring Rational -derive newtype instance CommutativeRing Rational --- Representation of Rational in Aeson, used internally type RationalRep = - { numerator :: StringifiedBigInt - , denominator :: StringifiedBigInt + { numerator :: BigInt + , denominator :: BigInt } instance EncodeAeson Rational where encodeAeson' r = encodeAeson' - ( { "numerator": StringifiedBigInt (numerator r) - , "denominator": StringifiedBigInt (denominator r) + ( { "numerator": (numerator r) + , "denominator": (denominator r) } :: RationalRep ) instance DecodeAeson Rational where decodeAeson r = do - { numerator: (StringifiedBigInt n :: StringifiedBigInt) - , denominator: (StringifiedBigInt d :: StringifiedBigInt) + { numerator: (n :: BigInt) + , denominator: (d :: BigInt) } :: RationalRep <- decodeAeson r maybe (Left $ UnexpectedValue $ toStringifiedNumbersJson r) pure $ n % d @@ -79,7 +76,7 @@ instance DecodeAeson StringifiedBigInt where >>> note (TypeMismatch "expected stringified integer number") >>> map StringifiedBigInt - +{- instance EuclideanRing Rational where degree _ = one mod _ _ = zero @@ -87,7 +84,7 @@ instance EuclideanRing Rational where | numerator b == zero = zero | otherwise = Rational $ (numerator a * denominator b) Ratio.% (denominator a * numerator b) - +-} -- | Gives the reciprocal of a `Rational`. -- | Returns `Nothing` if applied to `zero` since the reciprocal of zero -- | is mathematically undefined. From cad0bd61add3cd5a0492e180b0da9b0a606dd499 Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Mon, 23 May 2022 09:02:14 -0400 Subject: [PATCH 34/85] broke Types.Rational to test some things --- src/Types/Rational.purs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Types/Rational.purs b/src/Types/Rational.purs index f71211cff..dd3900a67 100644 --- a/src/Types/Rational.purs +++ b/src/Types/Rational.purs @@ -1,5 +1,5 @@ module Types.Rational - ( Rational + ( Rational(Rational) , class RationalComponent , reduce , (%) From e5e5802174adc5cce43add3b6a2ed9ae6197cc4d Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Mon, 23 May 2022 09:59:51 -0400 Subject: [PATCH 35/85] unbroke Types.Rational. json still not working --- src/Types/Rational.purs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Types/Rational.purs b/src/Types/Rational.purs index dd3900a67..f71211cff 100644 --- a/src/Types/Rational.purs +++ b/src/Types/Rational.purs @@ -1,5 +1,5 @@ module Types.Rational - ( Rational(Rational) + ( Rational , class RationalComponent , reduce , (%) From 8babe19768643bf5fa8163bbdf3ffc53c014fd2f Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Mon, 23 May 2022 11:15:33 -0400 Subject: [PATCH 36/85] maybe this will work --- src/Types/Rational.purs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Types/Rational.purs b/src/Types/Rational.purs index f71211cff..375c4eb15 100644 --- a/src/Types/Rational.purs +++ b/src/Types/Rational.purs @@ -43,21 +43,21 @@ derive newtype instance Ord Rational derive newtype instance Semiring Rational type RationalRep = - { numerator :: BigInt - , denominator :: BigInt + { numerator :: StringifiedBigInt + , denominator :: StringifiedBigInt } instance EncodeAeson Rational where encodeAeson' r = encodeAeson' - ( { "numerator": (numerator r) - , "denominator": (denominator r) + ( { "numerator": StringifiedBigInt (numerator r) + , "denominator": StringifiedBigInt (denominator r) } :: RationalRep ) instance DecodeAeson Rational where decodeAeson r = do - { numerator: (n :: BigInt) - , denominator: (d :: BigInt) + { numerator: (StringifiedBigInt n :: StringifiedBigInt) + , denominator: (StringifiedBigInt d :: StringifiedBigInt) } :: RationalRep <- decodeAeson r maybe (Left $ UnexpectedValue $ toStringifiedNumbersJson r) pure $ n % d @@ -67,7 +67,7 @@ derive instance Eq StringifiedBigInt derive instance Newtype StringifiedBigInt _ instance EncodeAeson StringifiedBigInt where - encodeAeson' (StringifiedBigInt bi) = encodeAeson' $ BigInt.toString bi + encodeAeson' (StringifiedBigInt bi) = encodeAeson' bi instance DecodeAeson StringifiedBigInt where decodeAeson = From 6ab5951e9feb73dd22cef477ea46740d789325d8 Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Mon, 23 May 2022 13:10:20 -0400 Subject: [PATCH 37/85] I think this fixes the Rational Aeson instance --- src/Types/Rational.purs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Types/Rational.purs b/src/Types/Rational.purs index 375c4eb15..2a035e327 100644 --- a/src/Types/Rational.purs +++ b/src/Types/Rational.purs @@ -42,23 +42,23 @@ derive newtype instance Eq Rational derive newtype instance Ord Rational derive newtype instance Semiring Rational -type RationalRep = - { numerator :: StringifiedBigInt - , denominator :: StringifiedBigInt +type RationalRep a = + { numerator :: a -- StringifiedBigInt + , denominator :: a -- StringifiedBigInt } instance EncodeAeson Rational where encodeAeson' r = encodeAeson' ( { "numerator": StringifiedBigInt (numerator r) , "denominator": StringifiedBigInt (denominator r) - } :: RationalRep + } :: RationalRep StringifiedBigInt ) instance DecodeAeson Rational where decodeAeson r = do - { numerator: (StringifiedBigInt n :: StringifiedBigInt) - , denominator: (StringifiedBigInt d :: StringifiedBigInt) - } :: RationalRep <- decodeAeson r + { numerator: (n :: BigInt) + , denominator: (d :: BigInt) + } :: RationalRep BigInt <- decodeAeson r maybe (Left $ UnexpectedValue $ toStringifiedNumbersJson r) pure $ n % d newtype StringifiedBigInt = StringifiedBigInt BigInt From 28d637275f6ab185749fbd578e1a2cb25b9ef932 Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Mon, 23 May 2022 13:38:26 -0400 Subject: [PATCH 38/85] maybe *this* will fix it... --- src/Types/Rational.purs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/Types/Rational.purs b/src/Types/Rational.purs index 2a035e327..390f965c5 100644 --- a/src/Types/Rational.purs +++ b/src/Types/Rational.purs @@ -18,6 +18,8 @@ import Aeson , decodeAeson , encodeAeson' , toStringifiedNumbersJson + , getField + , toObject ) import Data.BigInt (BigInt) import Data.BigInt (fromInt, toString, fromString) as BigInt @@ -56,10 +58,15 @@ instance EncodeAeson Rational where instance DecodeAeson Rational where decodeAeson r = do - { numerator: (n :: BigInt) - , denominator: (d :: BigInt) - } :: RationalRep BigInt <- decodeAeson r - maybe (Left $ UnexpectedValue $ toStringifiedNumbersJson r) pure $ n % d + case toObject r of + Nothing -> Left $ UnexpectedValue $ toStringifiedNumbersJson r + Just r' -> do + {- { numerator: (n :: BigInt) + , denominator: (d :: BigInt) + } :: RationalRep BigInt <- decodeAeson r -} + n :: BigInt <- getField r' "numerator" + d :: BigInt <- getField r' "denominator" + maybe (Left $ UnexpectedValue $ toStringifiedNumbersJson r) pure $ n % d newtype StringifiedBigInt = StringifiedBigInt BigInt From 2083853a26c1e3619cac62152303d19017c9396e Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Tue, 24 May 2022 09:38:43 +0200 Subject: [PATCH 39/85] Fixed Aeson for Rationals and tested with purs-bridge --- src/Types/Rational.purs | 59 +++++++++++------------------------------ 1 file changed, 15 insertions(+), 44 deletions(-) diff --git a/src/Types/Rational.purs b/src/Types/Rational.purs index 390f965c5..cb64d0fec 100644 --- a/src/Types/Rational.purs +++ b/src/Types/Rational.purs @@ -11,21 +11,11 @@ module Types.Rational import Prelude -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(TypeMismatch, UnexpectedValue) - , decodeAeson - , encodeAeson' - , toStringifiedNumbersJson - , getField - , toObject - ) +import Aeson (class DecodeAeson, class EncodeAeson, JsonDecodeError(UnexpectedValue), caseAesonObject, encodeAeson', toStringifiedNumbersJson, (.:)) import Data.BigInt (BigInt) -import Data.BigInt (fromInt, toString, fromString) as BigInt -import Data.Either (Either(Left), note) +import Data.BigInt (fromInt) as BigInt +import Data.Either (Either(Left)) import Data.Maybe (Maybe(Just, Nothing), maybe) -import Data.Newtype (class Newtype) import Data.Ratio ((%), numerator, denominator) as Ratio import Data.Ratio (Ratio) import FromData (class FromData) @@ -45,44 +35,25 @@ derive newtype instance Ord Rational derive newtype instance Semiring Rational type RationalRep a = - { numerator :: a -- StringifiedBigInt - , denominator :: a -- StringifiedBigInt + { numerator :: a + , denominator :: a } instance EncodeAeson Rational where encodeAeson' r = encodeAeson' - ( { "numerator": StringifiedBigInt (numerator r) - , "denominator": StringifiedBigInt (denominator r) - } :: RationalRep StringifiedBigInt + ( { "numerator": numerator r + , "denominator": denominator r + } ) instance DecodeAeson Rational where - decodeAeson r = do - case toObject r of - Nothing -> Left $ UnexpectedValue $ toStringifiedNumbersJson r - Just r' -> do - {- { numerator: (n :: BigInt) - , denominator: (d :: BigInt) - } :: RationalRep BigInt <- decodeAeson r -} - n :: BigInt <- getField r' "numerator" - d :: BigInt <- getField r' "denominator" - maybe (Left $ UnexpectedValue $ toStringifiedNumbersJson r) pure $ n % d - -newtype StringifiedBigInt = StringifiedBigInt BigInt - -derive instance Eq StringifiedBigInt -derive instance Newtype StringifiedBigInt _ - -instance EncodeAeson StringifiedBigInt where - encodeAeson' (StringifiedBigInt bi) = encodeAeson' bi - -instance DecodeAeson StringifiedBigInt where - decodeAeson = - decodeAeson >=> - BigInt.fromString - >>> note (TypeMismatch "expected stringified integer number") - >>> - map StringifiedBigInt + decodeAeson aes = caseAesonObject + (Left <<< UnexpectedValue <<< toStringifiedNumbersJson $ aes) + (\obj -> do + (n :: BigInt) <- obj .: "numerator" + d <- obj .: "denominator" + maybe (Left <<< UnexpectedValue <<< toStringifiedNumbersJson $ aes) pure $ n % d + ) aes {- instance EuclideanRing Rational where degree _ = one From 89908908527f3feac34cfaa9a716381eb5611a46 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Tue, 24 May 2022 10:00:16 +0200 Subject: [PATCH 40/85] make format --- src/Types/Rational.purs | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/src/Types/Rational.purs b/src/Types/Rational.purs index cb64d0fec..516857e91 100644 --- a/src/Types/Rational.purs +++ b/src/Types/Rational.purs @@ -11,7 +11,15 @@ module Types.Rational import Prelude -import Aeson (class DecodeAeson, class EncodeAeson, JsonDecodeError(UnexpectedValue), caseAesonObject, encodeAeson', toStringifiedNumbersJson, (.:)) +import Aeson + ( class DecodeAeson + , class EncodeAeson + , JsonDecodeError(UnexpectedValue) + , caseAesonObject + , encodeAeson' + , toStringifiedNumbersJson + , (.:) + ) import Data.BigInt (BigInt) import Data.BigInt (fromInt) as BigInt import Data.Either (Either(Left)) @@ -34,26 +42,29 @@ derive newtype instance Eq Rational derive newtype instance Ord Rational derive newtype instance Semiring Rational -type RationalRep a = - { numerator :: a - , denominator :: a - } +type RationalRep a = + { numerator :: a + , denominator :: a + } instance EncodeAeson Rational where encodeAeson' r = encodeAeson' - ( { "numerator": numerator r - , "denominator": denominator r - } + ( { "numerator": numerator r + , "denominator": denominator r + } ) instance DecodeAeson Rational where decodeAeson aes = caseAesonObject (Left <<< UnexpectedValue <<< toStringifiedNumbersJson $ aes) - (\obj -> do + ( \obj -> do (n :: BigInt) <- obj .: "numerator" d <- obj .: "denominator" - maybe (Left <<< UnexpectedValue <<< toStringifiedNumbersJson $ aes) pure $ n % d - ) aes + maybe (Left <<< UnexpectedValue <<< toStringifiedNumbersJson $ aes) pure + $ n % d + ) + aes + {- instance EuclideanRing Rational where degree _ = one From ba6d0f8dad634a521716b9a8759e783f1d0485a5 Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Tue, 24 May 2022 06:21:22 -0400 Subject: [PATCH 41/85] fixed exports in QueryM resulting from merge --- src/QueryM.purs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/QueryM.purs b/src/QueryM.purs index 021d30def..3b84cb163 100644 --- a/src/QueryM.purs +++ b/src/QueryM.purs @@ -37,11 +37,13 @@ module QueryM , mkDatumCacheWebSocketAff , mkOgmiosRequest , mkOgmiosWebSocketAff + , mkServerEndpointUrl , ownPaymentPubKeyHash , ownPubKeyHash , ownStakePubKeyHash , runQueryM , signTransaction + , scriptToAeson , signTransactionBytes , submitTxWallet , submitTxOgmios From 533232b20cc65a96afca6e3ff9483268e6544eb6 Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Tue, 24 May 2022 06:57:11 -0400 Subject: [PATCH 42/85] attempt #1 at fixing TokenName Aeson --- src/Types/TokenName.purs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Types/TokenName.purs b/src/Types/TokenName.purs index d4e236487..71d4cf51e 100644 --- a/src/Types/TokenName.purs +++ b/src/Types/TokenName.purs @@ -34,6 +34,7 @@ import Serialization.Types (AssetName) as CSL import ToData (class ToData) import Types.ByteArray (ByteArray, byteLength, hexToByteArray) import Types.CborBytes (CborBytes, cborBytesToHex) +import Types.RawBytes (rawBytesToHex) newtype TokenName = TokenName CborBytes @@ -48,7 +49,7 @@ instance DecodeAeson TokenName where decodeAeson = caseAesonObject (Left $ TypeMismatch "Expected object") ( note (TypeMismatch "Invalid TokenName") <<< mkTokenName - <=< note (TypeMismatch "Invalid ByteArray") <<< hexToByteArray + <=< note (TypeMismatch "Invalid ByteArray") <<< (hexToByteArray <<< rawBytesToHex) <=< flip getField "unTokenName" ) From ae94a3a1f949ca5eec6ef3f5c7e964416edde1c3 Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Tue, 24 May 2022 07:41:22 -0400 Subject: [PATCH 43/85] attempt #2 at fixing TokenName aeson --- src/Types/TokenName.purs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/Types/TokenName.purs b/src/Types/TokenName.purs index 71d4cf51e..2155d08cf 100644 --- a/src/Types/TokenName.purs +++ b/src/Types/TokenName.purs @@ -23,7 +23,7 @@ import Data.Bitraversable (ltraverse) import Data.Either (Either(Left), note) import Data.Map (Map) import Data.Map (fromFoldable) as Map -import Data.Maybe (Maybe(Nothing)) +import Data.Maybe (Maybe(Nothing,Just)) import Data.Newtype (wrap) import Data.Traversable (class Traversable, traverse) import Data.Tuple.Nested (type (/\)) @@ -32,9 +32,9 @@ import Metadata.FromMetadata (class FromMetadata) import Metadata.ToMetadata (class ToMetadata) import Serialization.Types (AssetName) as CSL import ToData (class ToData) -import Types.ByteArray (ByteArray, byteLength, hexToByteArray) +import Types.ByteArray (ByteArray, byteLength, hexToByteArray, byteArrayFromAscii) import Types.CborBytes (CborBytes, cborBytesToHex) -import Types.RawBytes (rawBytesToHex) +import Types.RawBytes (hexToRawBytesUnsafe) newtype TokenName = TokenName CborBytes @@ -48,10 +48,15 @@ derive newtype instance ToData TokenName instance DecodeAeson TokenName where decodeAeson = caseAesonObject (Left $ TypeMismatch "Expected object") - ( note (TypeMismatch "Invalid TokenName") <<< mkTokenName - <=< note (TypeMismatch "Invalid ByteArray") <<< (hexToByteArray <<< rawBytesToHex) - <=< flip getField "unTokenName" - ) + (\aes -> do + tkstr <- getField aes "unTokenName" + case (mkTokenName <=< byteArrayFromAscii) tkstr of + Nothing -> Left $ TypeMismatch "Invalid TokenName" + Just tknm -> pure tknm) + -- note (TypeMismatch "Invalid TokenName") <<< mkTokenName + -- <=< note (TypeMismatch "Invalid ByteArray") <<< (hexToByteArray <<< ) + -- <=< flip getField "unTokenName" + -- ) instance EncodeAeson TokenName where encodeAeson' (TokenName ba) = encodeAeson' From af85973ec20bd22b18e94bf6c81e77b8d146141b Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Tue, 24 May 2022 14:34:17 +0200 Subject: [PATCH 44/85] Restored Rings for Rational --- src/Types/Rational.purs | 5 +++-- src/Types/TokenName.purs | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Types/Rational.purs b/src/Types/Rational.purs index 516857e91..801b2f176 100644 --- a/src/Types/Rational.purs +++ b/src/Types/Rational.purs @@ -41,6 +41,8 @@ derive newtype instance Show Rational derive newtype instance Eq Rational derive newtype instance Ord Rational derive newtype instance Semiring Rational +derive newtype instance Ring Rational +derive newtype instance CommutativeRing Rational type RationalRep a = { numerator :: a @@ -65,7 +67,6 @@ instance DecodeAeson Rational where ) aes -{- instance EuclideanRing Rational where degree _ = one mod _ _ = zero @@ -73,7 +74,7 @@ instance EuclideanRing Rational where | numerator b == zero = zero | otherwise = Rational $ (numerator a * denominator b) Ratio.% (denominator a * numerator b) --} + -- | Gives the reciprocal of a `Rational`. -- | Returns `Nothing` if applied to `zero` since the reciprocal of zero -- | is mathematically undefined. diff --git a/src/Types/TokenName.purs b/src/Types/TokenName.purs index 71d4cf51e..2e46eeb16 100644 --- a/src/Types/TokenName.purs +++ b/src/Types/TokenName.purs @@ -49,7 +49,8 @@ instance DecodeAeson TokenName where decodeAeson = caseAesonObject (Left $ TypeMismatch "Expected object") ( note (TypeMismatch "Invalid TokenName") <<< mkTokenName - <=< note (TypeMismatch "Invalid ByteArray") <<< (hexToByteArray <<< rawBytesToHex) + <=< note (TypeMismatch "Invalid ByteArray") <<< + (hexToByteArray <<< rawBytesToHex) <=< flip getField "unTokenName" ) From 9f851d34965568b4e69dfd6086db84b177d5cfac Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Tue, 24 May 2022 09:58:45 -0400 Subject: [PATCH 45/85] attempt #3 at fixing TokenName aeson --- src/Types/TokenName.purs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Types/TokenName.purs b/src/Types/TokenName.purs index 2155d08cf..bcb8635eb 100644 --- a/src/Types/TokenName.purs +++ b/src/Types/TokenName.purs @@ -20,6 +20,7 @@ import Aeson ) import Data.BigInt (BigInt) import Data.Bitraversable (ltraverse) +import Data.Char (toCharCode) import Data.Either (Either(Left), note) import Data.Map (Map) import Data.Map (fromFoldable) as Map @@ -32,9 +33,9 @@ import Metadata.FromMetadata (class FromMetadata) import Metadata.ToMetadata (class ToMetadata) import Serialization.Types (AssetName) as CSL import ToData (class ToData) -import Types.ByteArray (ByteArray, byteLength, hexToByteArray, byteArrayFromAscii) +import Types.ByteArray (ByteArray, byteLength, hexToByteArray, byteArrayFromAscii, byteArrayFromInt16ArrayUnsafe) import Types.CborBytes (CborBytes, cborBytesToHex) -import Types.RawBytes (hexToRawBytesUnsafe) +import Data.String.CodeUnits (toCharArray) newtype TokenName = TokenName CborBytes @@ -50,7 +51,7 @@ instance DecodeAeson TokenName where (Left $ TypeMismatch "Expected object") (\aes -> do tkstr <- getField aes "unTokenName" - case (mkTokenName <=< byteArrayFromAscii) tkstr of + case (mkTokenName <<< (byteArrayFromInt16ArrayUnsafe <<< map toCharCode <<< toCharArray)) tkstr of Nothing -> Left $ TypeMismatch "Invalid TokenName" Just tknm -> pure tknm) -- note (TypeMismatch "Invalid TokenName") <<< mkTokenName From 4d45d4bca8710c2ccdcbc60105896d6208ced895 Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Tue, 24 May 2022 09:59:30 -0400 Subject: [PATCH 46/85] attempt #3.1 at fixing TokenName aeson --- src/Types/ByteArray.js | 2 ++ src/Types/ByteArray.purs | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Types/ByteArray.js b/src/Types/ByteArray.js index fd30cd09d..8f4790d14 100644 --- a/src/Types/ByteArray.js +++ b/src/Types/ByteArray.js @@ -53,6 +53,8 @@ exports.hexToByteArrayUnsafe = hex => { exports.byteArrayFromIntArrayUnsafe = ints => new Uint8Array(ints); +exports.byteArrayFromInt16ArrayUnsafe = ints => new Uint8Array(ints.buffer, ints.byteOffset, ints.byteLength); + exports.byteArrayFromIntArray_ = nothing => just => ints => { if (ints.every(i => i < 256 && i >= 0)) { return just(new Uint8Array(ints)); diff --git a/src/Types/ByteArray.purs b/src/Types/ByteArray.purs index 68076c28a..94e298d80 100644 --- a/src/Types/ByteArray.purs +++ b/src/Types/ByteArray.purs @@ -3,6 +3,7 @@ module Types.ByteArray ( ByteArray(..) , byteArrayFromIntArray , byteArrayFromIntArrayUnsafe + , byteArrayFromInt16ArrayUnsafe , byteArrayFromAscii , byteArrayToHex , byteArrayToIntArray @@ -24,7 +25,7 @@ import Aeson , caseAesonString , toStringifiedNumbersJson ) -import Data.ArrayBuffer.Types (Uint8Array) +import Data.ArrayBuffer.Types (Uint8Array,Uint16Array) import Data.Char (toCharCode) import Data.Either (Either(Left), note) import Data.Maybe (Maybe(Just, Nothing)) @@ -121,3 +122,5 @@ byteArrayFromAscii str = do let charCode = toCharCode cp if charCode <= 255 && charCode >= 0 then pure charCode else Nothing + +foreign import byteArrayFromInt16ArrayUnsafe :: Array Int -> ByteArray From 912e0ed21514ec562ed0210d60a699b04b25d7fc Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Tue, 24 May 2022 11:11:47 -0400 Subject: [PATCH 47/85] attempt #4 at fixing TokenName Aeson --- src/Types/ByteArray.js | 3 +++ src/Types/ByteArray.purs | 3 +++ src/Types/TokenName.purs | 4 ++-- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Types/ByteArray.js b/src/Types/ByteArray.js index 8f4790d14..039f4e930 100644 --- a/src/Types/ByteArray.js +++ b/src/Types/ByteArray.js @@ -33,6 +33,9 @@ exports.concat_ = xs => ys => { exports.byteArrayToHex = arr => Buffer.from(arr).toString('hex'); +exports.byteArrayToUTF16le = arr => + Buffer.from(arr).toString('utf16le'); + exports.hexToByteArray_ = nothing => just => hex => { for (var bytes = [], c = 0; c < hex.length; c += 2) { const chunk = hex.substr(c, 2); diff --git a/src/Types/ByteArray.purs b/src/Types/ByteArray.purs index 94e298d80..eb5645d77 100644 --- a/src/Types/ByteArray.purs +++ b/src/Types/ByteArray.purs @@ -10,6 +10,7 @@ module Types.ByteArray , byteLength , hexToByteArray , hexToByteArrayUnsafe + , byteArrayToUTF16le ) where import Prelude @@ -124,3 +125,5 @@ byteArrayFromAscii str = do else Nothing foreign import byteArrayFromInt16ArrayUnsafe :: Array Int -> ByteArray + +foreign import byteArrayToUTF16le :: ByteArray -> String diff --git a/src/Types/TokenName.purs b/src/Types/TokenName.purs index bcb8635eb..fd18d86f8 100644 --- a/src/Types/TokenName.purs +++ b/src/Types/TokenName.purs @@ -33,7 +33,7 @@ import Metadata.FromMetadata (class FromMetadata) import Metadata.ToMetadata (class ToMetadata) import Serialization.Types (AssetName) as CSL import ToData (class ToData) -import Types.ByteArray (ByteArray, byteLength, hexToByteArray, byteArrayFromAscii, byteArrayFromInt16ArrayUnsafe) +import Types.ByteArray (ByteArray, byteLength, byteArrayToUTF16le, hexToByteArray, byteArrayFromAscii, byteArrayFromInt16ArrayUnsafe) import Types.CborBytes (CborBytes, cborBytesToHex) import Data.String.CodeUnits (toCharArray) @@ -61,7 +61,7 @@ instance DecodeAeson TokenName where instance EncodeAeson TokenName where encodeAeson' (TokenName ba) = encodeAeson' - { "unTokenName": cborBytesToHex ba } + { "unTokenName": byteArrayToUTF16le ba } instance Show TokenName where show (TokenName tn) = "(TokenName" <> show tn <> ")" From 474a11c44a884c6a99e464baec606c82a4bb0dd9 Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Tue, 24 May 2022 11:16:11 -0400 Subject: [PATCH 48/85] attempt #4.1 at fixing TokenName Aeson --- src/Types/TokenName.purs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Types/TokenName.purs b/src/Types/TokenName.purs index fd18d86f8..fe28d9950 100644 --- a/src/Types/TokenName.purs +++ b/src/Types/TokenName.purs @@ -34,7 +34,7 @@ import Metadata.ToMetadata (class ToMetadata) import Serialization.Types (AssetName) as CSL import ToData (class ToData) import Types.ByteArray (ByteArray, byteLength, byteArrayToUTF16le, hexToByteArray, byteArrayFromAscii, byteArrayFromInt16ArrayUnsafe) -import Types.CborBytes (CborBytes, cborBytesToHex) +import Types.CborBytes (CborBytes, cborBytesToHex, cborBytesToByteArray) import Data.String.CodeUnits (toCharArray) newtype TokenName = TokenName CborBytes @@ -61,7 +61,7 @@ instance DecodeAeson TokenName where instance EncodeAeson TokenName where encodeAeson' (TokenName ba) = encodeAeson' - { "unTokenName": byteArrayToUTF16le ba } + { "unTokenName": byteArrayToUTF16le <<< cborBytesToByteArray $ ba } instance Show TokenName where show (TokenName tn) = "(TokenName" <> show tn <> ")" From cf0a3e3cd61c7a44cf51ce5d2b74a661cc03a173 Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Tue, 24 May 2022 11:27:40 -0400 Subject: [PATCH 49/85] attempt #4.2 at fixing TokenName aeson --- src/Types/ByteArray.js | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/Types/ByteArray.js b/src/Types/ByteArray.js index 039f4e930..cc4986a8f 100644 --- a/src/Types/ByteArray.js +++ b/src/Types/ByteArray.js @@ -33,8 +33,27 @@ exports.concat_ = xs => ys => { exports.byteArrayToHex = arr => Buffer.from(arr).toString('hex'); -exports.byteArrayToUTF16le = arr => - Buffer.from(arr).toString('utf16le'); +/* adapted from https://github.com/WebReflection/uint8-to-utf16/blob/master/esm/index.js + * (someone who knows javascript should like import that or something) + */ +const {ceil} = Math; +const {fromCharCode} = String; + +exports.byteArrayToUTF16le = uint8array => { + let extra = 0; + const output = []; + const {length} = uint8array; + const len = ceil(length / 2); + for (let j = 0, i = 0; i < len; i++) + output.push( + fromCharCode( + (uint8array[j++] << 8) + + (j < length ? uint8array[j++] : extra++) + ) + ); + output.push(fromCharCode(extra)); + return output.join(''); +}; exports.hexToByteArray_ = nothing => just => hex => { for (var bytes = [], c = 0; c < hex.length; c += 2) { From 9cbd298e42475f8abc4d591a680028594c8d2f34 Mon Sep 17 00:00:00 2001 From: MangoIV Date: Tue, 24 May 2022 21:36:56 +0200 Subject: [PATCH 50/85] fixed issue with hashing function --- src/QueryM.purs | 62 ++-------------------------------------- src/QueryM/Crypto.purs | 31 ++++++++------------ src/Types/ByteArray.purs | 2 +- src/Types/TokenName.purs | 31 ++++++++++++++------ 4 files changed, 37 insertions(+), 89 deletions(-) diff --git a/src/QueryM.purs b/src/QueryM.purs index 3b84cb163..9152656b2 100644 --- a/src/QueryM.purs +++ b/src/QueryM.purs @@ -7,7 +7,6 @@ module QueryM , DispatchError(JsError, JsonError) , FeeEstimate(..) , FinalizedTransaction(..) - , HashedData(..) , module ServerConfig , ListenerSet , PendingRequests @@ -24,16 +23,14 @@ module QueryM , allowError , applyArgs , calculateMinFee - , datumHash , traceQueryConfig , evalTxExecutionUnits , finalizeTx , getWalletAddress , getChainTip , getWalletCollateral - , hashData - , hashScript , listeners + , postAeson , mkDatumCacheWebSocketAff , mkOgmiosRequest , mkOgmiosWebSocketAff @@ -158,13 +155,12 @@ import Serialization.Address , baseAddressPaymentCred , stakeCredentialToKeyHash ) -import Serialization.Hash (ScriptHash) import Serialization.PlutusData (convertPlutusData) as Serialization import Serialization.WitnessSet (convertRedeemers) as Serialization import Types.ByteArray (ByteArray, byteArrayToHex, hexToByteArray) import Types.CborBytes (CborBytes) import Types.Chain as Chain -import Types.Datum (DataHash(DataHash), Datum) +import Types.Datum (DataHash, Datum) import Types.Interval (SlotConfig, defaultSlotConfig) import Types.MultiMap (MultiMap) import Types.MultiMap as MultiMap @@ -514,40 +510,6 @@ finalizeTx tx datums redeemers = do -- decode pure $ hush <<< (decodeAeson <=< parseJsonStringToAeson) =<< hush jsonBody -newtype HashedData = HashedData ByteArray - -derive instance Newtype HashedData _ -derive instance Generic HashedData _ - -instance Show HashedData where - show = genericShow - -instance DecodeAeson HashedData where - decodeAeson = - map HashedData <<< - caseAesonString (Left err) (note err <<< hexToByteArray) - where - err :: JsonDecodeError - err = TypeMismatch "Expected hex bytes (raw) of hashed data" - -hashData :: Datum -> QueryM (Maybe HashedData) -hashData datum = do - body <- - liftEffect $ byteArrayToHex <<< Serialization.toBytes <<< asOneOf - <$> maybe' - (const $ throw $ "Failed to convert plutus data: " <> show datum) - pure - (Serialization.convertPlutusData $ unwrap datum) - url <- mkServerEndpointUrl "hash-data" - -- get response json - jsonBody <- liftAff (postAeson url (encodeAeson body)) <#> map _.body - -- decode - pure $ hush <<< (decodeAeson <=< parseJsonStringToAeson) =<< hush jsonBody - --- | Hashes an Plutus-style Datum -datumHash :: Datum -> QueryM (Maybe DataHash) -datumHash = map (map (DataHash <<< unwrap)) <<< hashData - -- | Apply `PlutusData` arguments to any type isomorphic to `PlutusScript`, -- | returning an updated script with the provided arguments applied applyArgs @@ -586,26 +548,6 @@ applyArgs script args = case traverse plutusDataToAeson args of ) <<< Serialization.convertPlutusData -hashScript - :: forall (a :: Type) (b :: Type) - . Newtype a PlutusScript - => Newtype b ScriptHash - => a - -> QueryM (Either ClientError b) -hashScript script = do - url <- mkServerEndpointUrl "hash-script" - let - reqBody :: Aeson - reqBody = scriptToAeson $ unwrap script - - liftAff (postAeson url reqBody) - <#> either - (Left <<< ClientHttpError) - ( bimap ClientDecodeJsonError wrap - <<< (decodeAeson <=< parseJsonStringToAeson) - <<< _.body - ) - -- We can't use Affjax's typical `post`, since there will be a mismatch between -- the media type header and the request body postAeson :: Url -> Aeson -> Aff (Either Affjax.Error (Affjax.Response String)) diff --git a/src/QueryM/Crypto.purs b/src/QueryM/Crypto.purs index c71221104..46a46ce6a 100644 --- a/src/QueryM/Crypto.purs +++ b/src/QueryM/Crypto.purs @@ -17,7 +17,6 @@ import Aeson , decodeAeson , encodeAeson , parseJsonStringToAeson - , stringifyAeson , toStringifiedNumbersJson ) import Affjax as Affjax @@ -28,7 +27,7 @@ import Control.Monad.Reader.Trans (asks) import Data.Bifunctor (bimap, lmap) import Data.Either (Either(Left), hush, note, either) import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe(Just), maybe') +import Data.Maybe (Maybe, maybe') import Data.Newtype (class Newtype, unwrap, wrap) import Data.Show.Generic (genericShow) import Effect.Aff.Class (liftAff) @@ -38,6 +37,7 @@ import QueryM ( ClientError(ClientHttpError, ClientDecodeJsonError) , QueryM , mkServerEndpointUrl + , postAeson , scriptToAeson ) import QueryM.ServerConfig (mkHttpUrl) @@ -45,9 +45,8 @@ import Serialization (toBytes) as Serialization import Serialization.Hash (ScriptHash) import Serialization.PlutusData (convertPlutusData) as Serialization import Types.ByteArray (ByteArray, byteArrayToHex, hexToByteArray) -import Types.Datum (Datum, DataHash) +import Types.Datum (Datum, DataHash(DataHash)) import Types.Scripts (PlutusScript) -import Types.Transaction as Transaction import Untagged.Union (asOneOf) data HashMethod @@ -79,6 +78,7 @@ plutusHash meth bytes = do reqBody :: Affjax.RequestBody.RequestBody reqBody = Affjax.RequestBody.Json $ toStringifiedNumbersJson $ encodeAeson + -- FIXME: if this breaks something it might be because the numbers are put in quotes? requestJson response <- liftAff (Affjax.post Affjax.ResponseFormat.string url (pure reqBody)) @@ -96,22 +96,19 @@ hashData :: Datum -> QueryM (Maybe HashedData) hashData datum = do body <- liftEffect $ byteArrayToHex <<< Serialization.toBytes <<< asOneOf - <$> maybe' (\_ -> throw $ "Failed to convert plutus data: " <> show datum) + <$> maybe' + (const $ throw $ "Failed to convert plutus data: " <> show datum) pure (Serialization.convertPlutusData $ unwrap datum) url <- mkServerEndpointUrl "hash-data" -- get response json - jsonBody <- - liftAff - ( Affjax.post Affjax.ResponseFormat.string url - (Just $ Affjax.RequestBody.String $ stringifyAeson $ encodeAeson body) - ) <#> map \x -> x.body + jsonBody <- liftAff (postAeson url (encodeAeson body)) <#> map _.body -- decode pure $ hush <<< (decodeAeson <=< parseJsonStringToAeson) =<< hush jsonBody -- | Hashes an Plutus-style Datum datumHash :: Datum -> QueryM (Maybe DataHash) -datumHash = map (map (Transaction.DataHash <<< unwrap)) <<< hashData +datumHash = map (map (DataHash <<< unwrap)) <<< hashData newtype HashedData = HashedData ByteArray @@ -138,17 +135,13 @@ hashScript hashScript script = do url <- mkServerEndpointUrl "hash-script" let - reqBody :: Maybe Affjax.RequestBody.RequestBody - reqBody = Just - $ Affjax.RequestBody.String - $ stringifyAeson - $ scriptToAeson - $ unwrap script - liftAff (Affjax.post Affjax.ResponseFormat.string url reqBody) + reqBody :: Aeson + reqBody = scriptToAeson $ unwrap script + + liftAff (postAeson url reqBody) <#> either (Left <<< ClientHttpError) ( bimap ClientDecodeJsonError wrap <<< (decodeAeson <=< parseJsonStringToAeson) <<< _.body ) - diff --git a/src/Types/ByteArray.purs b/src/Types/ByteArray.purs index eb5645d77..ff5ab5050 100644 --- a/src/Types/ByteArray.purs +++ b/src/Types/ByteArray.purs @@ -26,7 +26,7 @@ import Aeson , caseAesonString , toStringifiedNumbersJson ) -import Data.ArrayBuffer.Types (Uint8Array,Uint16Array) +import Data.ArrayBuffer.Types (Uint8Array, Uint16Array) import Data.Char (toCharCode) import Data.Either (Either(Left), note) import Data.Maybe (Maybe(Just, Nothing)) diff --git a/src/Types/TokenName.purs b/src/Types/TokenName.purs index fe28d9950..83e24cad9 100644 --- a/src/Types/TokenName.purs +++ b/src/Types/TokenName.purs @@ -24,7 +24,7 @@ import Data.Char (toCharCode) import Data.Either (Either(Left), note) import Data.Map (Map) import Data.Map (fromFoldable) as Map -import Data.Maybe (Maybe(Nothing,Just)) +import Data.Maybe (Maybe(Nothing, Just)) import Data.Newtype (wrap) import Data.Traversable (class Traversable, traverse) import Data.Tuple.Nested (type (/\)) @@ -33,7 +33,14 @@ import Metadata.FromMetadata (class FromMetadata) import Metadata.ToMetadata (class ToMetadata) import Serialization.Types (AssetName) as CSL import ToData (class ToData) -import Types.ByteArray (ByteArray, byteLength, byteArrayToUTF16le, hexToByteArray, byteArrayFromAscii, byteArrayFromInt16ArrayUnsafe) +import Types.ByteArray + ( ByteArray + , byteLength + , byteArrayToUTF16le + , hexToByteArray + , byteArrayFromAscii + , byteArrayFromInt16ArrayUnsafe + ) import Types.CborBytes (CborBytes, cborBytesToHex, cborBytesToByteArray) import Data.String.CodeUnits (toCharArray) @@ -49,15 +56,21 @@ derive newtype instance ToData TokenName instance DecodeAeson TokenName where decodeAeson = caseAesonObject (Left $ TypeMismatch "Expected object") - (\aes -> do + ( \aes -> do tkstr <- getField aes "unTokenName" - case (mkTokenName <<< (byteArrayFromInt16ArrayUnsafe <<< map toCharCode <<< toCharArray)) tkstr of + case + ( mkTokenName <<< + (byteArrayFromInt16ArrayUnsafe <<< map toCharCode <<< toCharArray) + ) tkstr + of Nothing -> Left $ TypeMismatch "Invalid TokenName" - Just tknm -> pure tknm) - -- note (TypeMismatch "Invalid TokenName") <<< mkTokenName - -- <=< note (TypeMismatch "Invalid ByteArray") <<< (hexToByteArray <<< ) - -- <=< flip getField "unTokenName" - -- ) + Just tknm -> pure tknm + ) + +-- note (TypeMismatch "Invalid TokenName") <<< mkTokenName +-- <=< note (TypeMismatch "Invalid ByteArray") <<< (hexToByteArray <<< ) +-- <=< flip getField "unTokenName" +-- ) instance EncodeAeson TokenName where encodeAeson' (TokenName ba) = encodeAeson' From 609a1bf794fc3b1b521cb894c108cd5050fa104c Mon Sep 17 00:00:00 2001 From: MangoIV Date: Wed, 25 May 2022 18:53:57 +0200 Subject: [PATCH 51/85] tried to fix the fromjson and tojson, doesn't work --- src/Types/TokenName.purs | 86 ++++++++++++++++++++++++++++++++-------- 1 file changed, 70 insertions(+), 16 deletions(-) diff --git a/src/Types/TokenName.purs b/src/Types/TokenName.purs index 83e24cad9..9ff31f530 100644 --- a/src/Types/TokenName.purs +++ b/src/Types/TokenName.purs @@ -18,15 +18,20 @@ import Aeson , encodeAeson' , getField ) +import Control.Monad.Error.Class (throwError) +import Data.Array (drop) import Data.BigInt (BigInt) import Data.Bitraversable (ltraverse) -import Data.Char (toCharCode) +import Data.Char (toCharCode, fromCharCode) import Data.Either (Either(Left), note) import Data.Map (Map) import Data.Map (fromFoldable) as Map import Data.Maybe (Maybe(Nothing, Just)) import Data.Newtype (wrap) +import Data.String.CodePoints (length) +import Data.String.CodeUnits (fromCharArray, toCharArray) import Data.Traversable (class Traversable, traverse) +import Data.Bifunctor (lmap) import Data.Tuple.Nested (type (/\)) import FromData (class FromData) import Metadata.FromMetadata (class FromMetadata) @@ -35,14 +40,20 @@ import Serialization.Types (AssetName) as CSL import ToData (class ToData) import Types.ByteArray ( ByteArray - , byteLength - , byteArrayToUTF16le - , hexToByteArray , byteArrayFromAscii , byteArrayFromInt16ArrayUnsafe + , byteArrayFromIntArray + , byteArrayFromIntArrayUnsafe + , byteArrayToUTF16le + , byteLength + , hexToByteArray + ) +import Types.CborBytes + ( CborBytes + , cborBytesFromByteArray + , cborBytesToByteArray + , cborBytesToHex ) -import Types.CborBytes (CborBytes, cborBytesToHex, cborBytesToByteArray) -import Data.String.CodeUnits (toCharArray) newtype TokenName = TokenName CborBytes @@ -54,17 +65,39 @@ derive newtype instance Ord TokenName derive newtype instance ToData TokenName instance DecodeAeson TokenName where + {- + toJSON = JSON.object . Haskell.pure . (,) "unTokenName" . JSON.toJSON . + fromTokenName + (\bs -> Text.cons '\NUL' (asBase16 bs)) + + (\t -> case Text.take 1 t of "\NUL" -> Text.concat ["\NUL\NUL", t]; _ -> t) + -} decodeAeson = caseAesonObject (Left $ TypeMismatch "Expected object") ( \aes -> do - tkstr <- getField aes "unTokenName" - case - ( mkTokenName <<< - (byteArrayFromInt16ArrayUnsafe <<< map toCharCode <<< toCharArray) - ) tkstr - of - Nothing -> Left $ TypeMismatch "Invalid TokenName" - Just tknm -> pure tknm + tkstr :: String <- getField aes "unTokenName" + let + t = map toCharCode $ toCharArray tkstr + + cleanedTkstr :: Either String ByteArray + cleanedTkstr = + note "could not convert from hex to bytestring" <<< hexToByteArray + <<< fromCharArray + =<< note "could not convetr from charcode" + ( traverse fromCharCode + case t of + [ 0, 48, 120 ] -> drop 3 t + [ 0, 0, 0 ] -> drop 2 t + _ -> t + ) + -- FIXME: what if the tokenname is actually \0\0\0? haskell will break this assuming it + -- comes from purescript side + -- also we will break assuming it comes from haskell + -- this issue has to be fixed on the haskell side + -- ~= \NUL\NUL\NUL + -- see https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#line-170 + lmap TypeMismatch + (note "failed to make tokenname" <<< mkTokenName =<< cleanedTkstr) ) -- note (TypeMismatch "Invalid TokenName") <<< mkTokenName @@ -73,8 +106,29 @@ instance DecodeAeson TokenName where -- ) instance EncodeAeson TokenName where - encodeAeson' (TokenName ba) = encodeAeson' - { "unTokenName": byteArrayToUTF16le <<< cborBytesToByteArray $ ba } + {- +instance FromJSON TokenName where + parseJSON = + JSON.withObject "TokenName" $ \object -> do + raw <- object .: "unTokenName" + fromJSONText raw + where + fromJSONText t = case Text.take 3 t of + -- in case we get something prefixed with \0 *and* it also starts with "0x" (it's hexencoded) THEN + -- => encodes in utf8 and then converts from base16 to whatever + -- then + "\NUL0x" -> either Haskell.fail (Haskell.pure . tokenName) . JSON.tryDecode . Text.drop 3 $ t + "\NUL\NUL\NUL" -> Haskell.pure . fromText . Text.drop 2 $ t + _ -> Haskell.pure . fromText $ t + -} + encodeAeson' (TokenName ba) = + let + finalBs :: ByteArray + finalBs = byteArrayFromIntArrayUnsafe [ 0, 48, 120 ] <> + (cborBytesToByteArray ba) + -- FIXME: what if the tokenname starts with \0 => put another two \0 in front of that + in + encodeAeson' { "unTokenName": finalBs } instance Show TokenName where show (TokenName tn) = "(TokenName" <> show tn <> ")" From 5ed09962ca73b561bdae097f942c314fa26d6e51 Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Wed, 25 May 2022 14:55:46 -0400 Subject: [PATCH 52/85] broke tokenname instance on purpose, revert --- src/Types/TokenName.purs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Types/TokenName.purs b/src/Types/TokenName.purs index 9ff31f530..db21f79eb 100644 --- a/src/Types/TokenName.purs +++ b/src/Types/TokenName.purs @@ -47,6 +47,7 @@ import Types.ByteArray , byteArrayToUTF16le , byteLength , hexToByteArray + , hexToByteArrayUnsafe ) import Types.CborBytes ( CborBytes @@ -81,7 +82,7 @@ instance DecodeAeson TokenName where cleanedTkstr :: Either String ByteArray cleanedTkstr = - note "could not convert from hex to bytestring" <<< hexToByteArray + note "could not convert from hex to bytestring" <<< pure <<< hexToByteArrayUnsafe <<< fromCharArray =<< note "could not convetr from charcode" ( traverse fromCharCode @@ -128,7 +129,7 @@ instance FromJSON TokenName where (cborBytesToByteArray ba) -- FIXME: what if the tokenname starts with \0 => put another two \0 in front of that in - encodeAeson' { "unTokenName": finalBs } + encodeAeson' "fuck!" -- { "unTokenName": finalBs } instance Show TokenName where show (TokenName tn) = "(TokenName" <> show tn <> ")" From 552fcce53d6ac141c5d13c8a4ca3d89af020c895 Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Wed, 25 May 2022 14:59:34 -0400 Subject: [PATCH 53/85] unbroke instances --- src/Types/TokenName.purs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Types/TokenName.purs b/src/Types/TokenName.purs index db21f79eb..23acf55d9 100644 --- a/src/Types/TokenName.purs +++ b/src/Types/TokenName.purs @@ -82,7 +82,7 @@ instance DecodeAeson TokenName where cleanedTkstr :: Either String ByteArray cleanedTkstr = - note "could not convert from hex to bytestring" <<< pure <<< hexToByteArrayUnsafe + note "could not convert from hex to bytestring" <<< hexToByteArrayUnsafe <<< fromCharArray =<< note "could not convetr from charcode" ( traverse fromCharCode @@ -129,7 +129,7 @@ instance FromJSON TokenName where (cborBytesToByteArray ba) -- FIXME: what if the tokenname starts with \0 => put another two \0 in front of that in - encodeAeson' "fuck!" -- { "unTokenName": finalBs } + encodeAeson' { "unTokenName": finalBs } instance Show TokenName where show (TokenName tn) = "(TokenName" <> show tn <> ")" From 405cc39d8002176f346da4f4d9fc2f83c5cd22cf Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Wed, 25 May 2022 15:45:14 -0400 Subject: [PATCH 54/85] TokenName aeson fix attempt #5 --- spago.dhall | 1 + src/Types/TokenName.purs | 36 +++++++++++++++++++++++++++++------- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/spago.dhall b/spago.dhall index b9428cf3c..329eb8739 100644 --- a/spago.dhall +++ b/spago.dhall @@ -54,6 +54,7 @@ You can edit this file as you like. , "spec" , "strings" , "tailrec" + , "text-encoding" , "these" , "transformers" , "tuples" diff --git a/src/Types/TokenName.purs b/src/Types/TokenName.purs index 23acf55d9..d8f02e337 100644 --- a/src/Types/TokenName.purs +++ b/src/Types/TokenName.purs @@ -19,18 +19,19 @@ import Aeson , getField ) import Control.Monad.Error.Class (throwError) -import Data.Array (drop) +--import Data.Array (drop) import Data.BigInt (BigInt) import Data.Bitraversable (ltraverse) import Data.Char (toCharCode, fromCharCode) -import Data.Either (Either(Left), note) +import Data.Either (Either(Left,Right), note, either) import Data.Map (Map) import Data.Map (fromFoldable) as Map import Data.Maybe (Maybe(Nothing, Just)) -import Data.Newtype (wrap) -import Data.String.CodePoints (length) +import Data.Newtype (wrap,unwrap) +import Data.String.CodePoints (length,take,drop) import Data.String.CodeUnits (fromCharArray, toCharArray) import Data.Traversable (class Traversable, traverse) +import Data.TextDecoding (decodeUtf8) import Data.Bifunctor (lmap) import Data.Tuple.Nested (type (/\)) import FromData (class FromData) @@ -65,6 +66,13 @@ derive newtype instance ToMetadata TokenName derive newtype instance Ord TokenName derive newtype instance ToData TokenName +fromTokenName :: forall r. (ByteArray -> r) -> (String -> r) -> TokenName -> r +fromTokenName arrayHandler stringHandler (TokenName cba) + = either + (\_ -> arrayHandler $ cborBytesToByteArray cba) + stringHandler + (decodeUtf8 <<< unwrap <<< cborBytesToByteArray $ cba) + instance DecodeAeson TokenName where {- toJSON = JSON.object . Haskell.pure . (,) "unTokenName" . JSON.toJSON . @@ -77,12 +85,26 @@ instance DecodeAeson TokenName where (Left $ TypeMismatch "Expected object") ( \aes -> do tkstr :: String <- getField aes "unTokenName" - let + case take 3 tkstr of + """\NUL0x""" -> case tkFromStr (drop 3 tkstr) of + Nothing -> Left $ TypeMismatch ("Invalid TokenName E1: " <> tkstr) + Just tk -> Right tk + + """\NUL\NUL\NUL""" -> note (TypeMismatch $ "Invalid TokenName E2: " <> tkstr) + $ tkFromStr (drop 2 tkstr) + + _ -> note (TypeMismatch $ "Invalid TokenName E3: " <> tkstr) + $ tkFromStr tkstr) + where + tkFromStr :: String -> Maybe TokenName + tkFromStr str = (TokenName <<< wrap) <$> (byteArrayFromIntArray <<< map toCharCode <<< toCharArray $ str) + + {- let t = map toCharCode $ toCharArray tkstr cleanedTkstr :: Either String ByteArray cleanedTkstr = - note "could not convert from hex to bytestring" <<< hexToByteArrayUnsafe + note "could not convert from hex to bytestring" <<< pure <<< hexToByteArrayUnsafe <<< fromCharArray =<< note "could not convetr from charcode" ( traverse fromCharCode @@ -99,7 +121,7 @@ instance DecodeAeson TokenName where -- see https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#line-170 lmap TypeMismatch (note "failed to make tokenname" <<< mkTokenName =<< cleanedTkstr) - ) + ) -} -- note (TypeMismatch "Invalid TokenName") <<< mkTokenName -- <=< note (TypeMismatch "Invalid ByteArray") <<< (hexToByteArray <<< ) From 697b2c7d8724bf5ae041cbaa9f3e570ff1c4a628 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Wed, 25 May 2022 21:46:03 +0200 Subject: [PATCH 55/85] Restore Address lost in a merge and add a test (FAIL due to infinite loop bug) --- src/Plutus/Types/Address.purs | 74 +++++++++++++++++++++++++---------- test/Plutus/Address.purs | 24 +++++++++--- 2 files changed, 71 insertions(+), 27 deletions(-) diff --git a/src/Plutus/Types/Address.purs b/src/Plutus/Types/Address.purs index 3b87027e5..f70b56124 100644 --- a/src/Plutus/Types/Address.purs +++ b/src/Plutus/Types/Address.purs @@ -10,24 +10,37 @@ module Plutus.Types.Address import Prelude -import Data.Maybe (Maybe(Just, Nothing)) +import Aeson + ( class DecodeAeson + , class EncodeAeson + , JsonDecodeError(TypeMismatch) + , caseAesonObject + , encodeAeson' + , (.:) + ) +import Contract.Prelude (Either(Left)) import Data.Generic.Rep (class Generic) -import Data.Show.Generic (genericShow) +import Data.Maybe (Maybe(Just, Nothing)) import Data.Newtype (class Newtype, wrap, unwrap) -import FromData (class FromData, fromData) -import Serialization.Address (NetworkId) -import ToData (class ToData, toData) -import Types.Scripts (ValidatorHash) -import Types.PlutusData (PlutusData(Constr)) -import Types.PubKeyHash - ( PaymentPubKeyHash(PaymentPubKeyHash) - , PubKeyHash - , StakePubKeyHash - ) +import Data.Show.Generic (genericShow) +import FromData (class FromData, genericFromData) import Plutus.Types.Credential ( Credential(PubKeyCredential, ScriptCredential) , StakingCredential(StakingHash) ) +import Plutus.Types.DataSchema + ( class HasPlutusSchema + , type (:+) + , type (:=) + , type (@@) + , I + , PNil + ) +import Serialization.Address (NetworkId) +import ToData (class ToData, genericToData) +import TypeLevel.Nat (Z) +import Types.PubKeyHash (PaymentPubKeyHash(..), StakePubKeyHash, PubKeyHash) +import Types.Scripts (ValidatorHash) -------------------------------------------------------------------------------- -- Address @@ -61,18 +74,37 @@ derive instance Generic Address _ instance Show Address where show = genericShow +instance + HasPlutusSchema + Address + ( "Address" + := + ( "addressCredential" := I Credential :+ "addressStakingCredential" + := I (Maybe StakingCredential) + :+ PNil + ) + @@ Z + :+ PNil + ) + instance ToData Address where - toData (Address a) = Constr zero $ - [ toData a.addressCredential, toData a.addressStakingCredential ] + toData = genericToData instance FromData Address where - fromData (Constr n [ credD, stakingCredD ]) | n == zero = - Address <$> - ( { addressCredential: _, addressStakingCredential: _ } - <$> fromData credD - <*> fromData stakingCredD - ) - fromData _ = Nothing + fromData = genericFromData + +instance DecodeAeson Address where + decodeAeson aes = caseAesonObject + (Left $ TypeMismatch "Expected object") + ( \obj -> do + addressCredential <- obj .: "addressCredential" + addressStakingCredential <- obj .: "addressStakingCredential" + pure $ Address { addressCredential, addressStakingCredential } + ) + aes + +instance EncodeAeson Address where + encodeAeson' (Address addr) = encodeAeson' addr -------------------------------------------------------------------------------- -- Useful functions diff --git a/test/Plutus/Address.purs b/test/Plutus/Address.purs index 53d5b334b..c3c88d1a8 100644 --- a/test/Plutus/Address.purs +++ b/test/Plutus/Address.purs @@ -1,13 +1,15 @@ -module Test.Plutus.Address (suite) where +module Test.Plutus.Address (suite, addresses) where import Prelude -import Data.Maybe (Maybe(Just, Nothing), fromJust) -import Data.Tuple (Tuple(Tuple)) +import Aeson (JsonDecodeError, decodeAeson, encodeAeson) +import Contract.Prelude (Either(Right)) import Data.Array ((..), length, zip) +import Data.Maybe (Maybe(Just, Nothing), fromJust) import Data.Newtype (class Newtype, wrap, unwrap) -import Data.UInt (UInt, fromInt) import Data.Traversable (for_) +import Data.Tuple (Tuple(Tuple)) +import Data.UInt (UInt, fromInt) import Mote (group, test) import Partial.Unsafe (unsafePartial) import Plutus.FromPlutusType (fromPlutusType) @@ -17,11 +19,11 @@ import Plutus.Types.Credential ( Credential(PubKeyCredential, ScriptCredential) , StakingCredential(StakingHash, StakingPtr) ) -import Serialization.Hash (ed25519KeyHashFromBech32, scriptHashFromBech32) import Serialization.Address ( NetworkId(MainnetId, TestnetId) , addressFromBech32 ) +import Serialization.Hash (ed25519KeyHashFromBech32, scriptHashFromBech32) import Test.Spec.Assertions (shouldEqual) import Test.Utils (errMaybe) import TestM (TestPlanM) @@ -40,6 +42,16 @@ suite = do let testData = zip (zip addressesBech32Testnet addresses) indices for_ testData $ \(Tuple (Tuple addrBech32 addr) addrType) -> toFromPlutusTypeTest TestnetId addrType addrBech32 addr + group "Address Aeson tests" $ do + group "Roundtrip tests" $ do + for_ addresses toFromAesonTest + +toFromAesonTest :: Plutus.Address -> TestPlanM Unit +toFromAesonTest addr = test (show addr) $ do + let + (addrOrErr :: Either JsonDecodeError Plutus.Address) = + decodeAeson <<< encodeAeson $ addr + addrOrErr `shouldEqual` Right addr toFromPlutusTypeTest :: NetworkId -> Int -> Bech32String -> Plutus.Address -> TestPlanM Unit @@ -116,7 +128,7 @@ addressesBech32Testnet = addresses :: Array Plutus.Address addresses = wrap <$> [ { addressCredential: pubKeyCredential - , addressStakingCredential: Just stakingHash + , addressStakingCredential: Nothing -- Just stakingHash } , { addressCredential: scriptCredential , addressStakingCredential: Just stakingHash From e96a60430985908d9d8790f9c06a31e26b32bf41 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Wed, 25 May 2022 21:48:44 +0200 Subject: [PATCH 56/85] spago2nix generate and make format --- spago-packages.nix | 12 ++++++ src/Types/TokenName.purs | 86 ++++++++++++++++++++-------------------- 2 files changed, 56 insertions(+), 42 deletions(-) diff --git a/spago-packages.nix b/spago-packages.nix index d87de63c3..742ac3c7b 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -1157,6 +1157,18 @@ let installPhase = "ln -s $src $out"; }; + "text-encoding" = pkgs.stdenv.mkDerivation { + name = "text-encoding"; + version = "v1.0.0"; + src = pkgs.fetchgit { + url = "https://github.com/AlexaDeWit/purescript-text-encoding.git"; + rev = "609ea0916f6817971d4a6c11b991b59715aaa096"; + sha256 = "1r6ihj6m6ahp1cjf4i25pq9a00r2mvgrd8794xiapzsaigljz42c"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "these" = pkgs.stdenv.mkDerivation { name = "these"; version = "v5.0.0"; diff --git a/src/Types/TokenName.purs b/src/Types/TokenName.purs index d8f02e337..af7e95ebf 100644 --- a/src/Types/TokenName.purs +++ b/src/Types/TokenName.purs @@ -23,12 +23,12 @@ import Control.Monad.Error.Class (throwError) import Data.BigInt (BigInt) import Data.Bitraversable (ltraverse) import Data.Char (toCharCode, fromCharCode) -import Data.Either (Either(Left,Right), note, either) +import Data.Either (Either(Left, Right), note, either) import Data.Map (Map) import Data.Map (fromFoldable) as Map import Data.Maybe (Maybe(Nothing, Just)) -import Data.Newtype (wrap,unwrap) -import Data.String.CodePoints (length,take,drop) +import Data.Newtype (wrap, unwrap) +import Data.String.CodePoints (length, take, drop) import Data.String.CodeUnits (fromCharArray, toCharArray) import Data.Traversable (class Traversable, traverse) import Data.TextDecoding (decodeUtf8) @@ -67,11 +67,10 @@ derive newtype instance Ord TokenName derive newtype instance ToData TokenName fromTokenName :: forall r. (ByteArray -> r) -> (String -> r) -> TokenName -> r -fromTokenName arrayHandler stringHandler (TokenName cba) - = either - (\_ -> arrayHandler $ cborBytesToByteArray cba) - stringHandler - (decodeUtf8 <<< unwrap <<< cborBytesToByteArray $ cba) +fromTokenName arrayHandler stringHandler (TokenName cba) = either + (\_ -> arrayHandler $ cborBytesToByteArray cba) + stringHandler + (decodeUtf8 <<< unwrap <<< cborBytesToByteArray $ cba) instance DecodeAeson TokenName where {- @@ -88,40 +87,43 @@ instance DecodeAeson TokenName where case take 3 tkstr of """\NUL0x""" -> case tkFromStr (drop 3 tkstr) of Nothing -> Left $ TypeMismatch ("Invalid TokenName E1: " <> tkstr) - Just tk -> Right tk - - """\NUL\NUL\NUL""" -> note (TypeMismatch $ "Invalid TokenName E2: " <> tkstr) - $ tkFromStr (drop 2 tkstr) - - _ -> note (TypeMismatch $ "Invalid TokenName E3: " <> tkstr) - $ tkFromStr tkstr) - where - tkFromStr :: String -> Maybe TokenName - tkFromStr str = (TokenName <<< wrap) <$> (byteArrayFromIntArray <<< map toCharCode <<< toCharArray $ str) - - {- let - t = map toCharCode $ toCharArray tkstr - - cleanedTkstr :: Either String ByteArray - cleanedTkstr = - note "could not convert from hex to bytestring" <<< pure <<< hexToByteArrayUnsafe - <<< fromCharArray - =<< note "could not convetr from charcode" - ( traverse fromCharCode - case t of - [ 0, 48, 120 ] -> drop 3 t - [ 0, 0, 0 ] -> drop 2 t - _ -> t - ) - -- FIXME: what if the tokenname is actually \0\0\0? haskell will break this assuming it - -- comes from purescript side - -- also we will break assuming it comes from haskell - -- this issue has to be fixed on the haskell side - -- ~= \NUL\NUL\NUL - -- see https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#line-170 - lmap TypeMismatch - (note "failed to make tokenname" <<< mkTokenName =<< cleanedTkstr) - ) -} + Just tk -> Right tk + + """\NUL\NUL\NUL""" -> + note (TypeMismatch $ "Invalid TokenName E2: " <> tkstr) + $ tkFromStr (drop 2 tkstr) + + _ -> note (TypeMismatch $ "Invalid TokenName E3: " <> tkstr) + $ tkFromStr tkstr + ) + where + tkFromStr :: String -> Maybe TokenName + tkFromStr str = (TokenName <<< wrap) <$> + (byteArrayFromIntArray <<< map toCharCode <<< toCharArray $ str) + +{- let + t = map toCharCode $ toCharArray tkstr + + cleanedTkstr :: Either String ByteArray + cleanedTkstr = + note "could not convert from hex to bytestring" <<< pure <<< hexToByteArrayUnsafe + <<< fromCharArray + =<< note "could not convetr from charcode" + ( traverse fromCharCode + case t of + [ 0, 48, 120 ] -> drop 3 t + [ 0, 0, 0 ] -> drop 2 t + _ -> t + ) + -- FIXME: what if the tokenname is actually \0\0\0? haskell will break this assuming it + -- comes from purescript side + -- also we will break assuming it comes from haskell + -- this issue has to be fixed on the haskell side + -- ~= \NUL\NUL\NUL + -- see https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#line-170 + lmap TypeMismatch + (note "failed to make tokenname" <<< mkTokenName =<< cleanedTkstr) +) -} -- note (TypeMismatch "Invalid TokenName") <<< mkTokenName -- <=< note (TypeMismatch "Invalid ByteArray") <<< (hexToByteArray <<< ) From a52034d64937531c8aa6cac4de95b112db68f436 Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Wed, 25 May 2022 16:07:00 -0400 Subject: [PATCH 57/85] TokenName aeson fix attemp #5.1 --- src/Types/TokenName.purs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/Types/TokenName.purs b/src/Types/TokenName.purs index af7e95ebf..5f4cd609b 100644 --- a/src/Types/TokenName.purs +++ b/src/Types/TokenName.purs @@ -42,6 +42,7 @@ import ToData (class ToData) import Types.ByteArray ( ByteArray , byteArrayFromAscii + , byteArrayToHex , byteArrayFromInt16ArrayUnsafe , byteArrayFromIntArray , byteArrayFromIntArrayUnsafe @@ -66,6 +67,9 @@ derive newtype instance ToMetadata TokenName derive newtype instance Ord TokenName derive newtype instance ToData TokenName +asBase16 :: ByteArray -> String +asBase16 ba = "0x" <> byteArrayToHex ba + fromTokenName :: forall r. (ByteArray -> r) -> (String -> r) -> TokenName -> r fromTokenName arrayHandler stringHandler (TokenName cba) = either (\_ -> arrayHandler $ cborBytesToByteArray cba) @@ -146,7 +150,15 @@ instance FromJSON TokenName where "\NUL\NUL\NUL" -> Haskell.pure . fromText . Text.drop 2 $ t _ -> Haskell.pure . fromText $ t -} - encodeAeson' (TokenName ba) = + encodeAeson' tk = encodeAeson' + $ fromTokenName + (\ba -> """\NUL""" <> asBase16 ba) + (\t -> case take 1 t of + """\NUL""" -> """\NUL\NUL""" <> t + _ -> t) + tk + + {- let finalBs :: ByteArray finalBs = byteArrayFromIntArrayUnsafe [ 0, 48, 120 ] <> @@ -154,7 +166,7 @@ instance FromJSON TokenName where -- FIXME: what if the tokenname starts with \0 => put another two \0 in front of that in encodeAeson' { "unTokenName": finalBs } - + -} instance Show TokenName where show (TokenName tn) = "(TokenName" <> show tn <> ")" From 4f743a2b3d030c411cf46f05cc9282d40c4d2523 Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Wed, 25 May 2022 16:10:42 -0400 Subject: [PATCH 58/85] TokenName aeson fix attemp #5.2 --- src/Types/TokenName.purs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Types/TokenName.purs b/src/Types/TokenName.purs index 5f4cd609b..18efc6194 100644 --- a/src/Types/TokenName.purs +++ b/src/Types/TokenName.purs @@ -150,13 +150,13 @@ instance FromJSON TokenName where "\NUL\NUL\NUL" -> Haskell.pure . fromText . Text.drop 2 $ t _ -> Haskell.pure . fromText $ t -} - encodeAeson' tk = encodeAeson' - $ fromTokenName - (\ba -> """\NUL""" <> asBase16 ba) - (\t -> case take 1 t of - """\NUL""" -> """\NUL\NUL""" <> t - _ -> t) - tk + encodeAeson' tk = let tkstr = fromTokenName + (\ba -> """\NUL""" <> asBase16 ba) + (\t -> case take 1 t of + """\NUL""" -> """\NUL\NUL""" <> t + _ -> t) + tk + in encodeAeson' {"unTokenName": tkstr} {- let From add06f937398d27b47f43ac9d5ac42d484aedca9 Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Wed, 25 May 2022 17:14:07 -0400 Subject: [PATCH 59/85] upgraded to new purescript-aeson version --- packages.dhall | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages.dhall b/packages.dhall index f65678179..3b5f2b223 100644 --- a/packages.dhall +++ b/packages.dhall @@ -150,7 +150,7 @@ let additions = , "untagged-union" ] , repo = "https://github.com/mlabs-haskell/purescript-aeson.git" - , version = "5054e03ee14376768071c24d63889bfab8db2667" + , version = "862c202443b143da0494379a8e3e0d00310ed8bc" }, aeson-helpers = { dependencies = From 3393fa600211e1666d786cb2968e0419ac6e496f Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Wed, 25 May 2022 18:09:22 -0400 Subject: [PATCH 60/85] adding package lock stuff b/c ps-bridge tests break when I remove the local overrides --- package-lock.json | 4754 ++++++++++++++++++++++++++++++++++++++++++++- package.json | 8 +- 2 files changed, 4730 insertions(+), 32 deletions(-) diff --git a/package-lock.json b/package-lock.json index 69f187182..f65c144f9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,8 +1,4706 @@ { "name": "cardano-transaction-lib", "version": "0.1.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "@ngua/cardano-serialization-lib-browser": "9.1.2", + "@ngua/cardano-serialization-lib-nodejs": "^9.1.2", + "big-integer": "^1.6.51", + "bufferutil": "4.0.5", + "node-polyfill-webpack-plugin": "1.1.4", + "reconnecting-websocket": "4.4.0", + "uniqid": "5.4.0", + "ws": "8.4.0", + "xhr2": "0.2.1" + }, + "devDependencies": { + "buffer": "6.0.3", + "html-webpack-plugin": "5.5.0", + "webpack": "5.67.0", + "webpack-cli": "4.9.2", + "webpack-dev-server": "4.7.4" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", + "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@ngua/cardano-serialization-lib-browser": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@ngua/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-9.1.2.tgz", + "integrity": "sha512-0KkS3vCwrK8Yxs+yuoFJ05Ou5r0AZJNTWks9otP5h9ODsTUpkgJDb3lVmflJmSB0KnA9JvF3AmcN/swXj/yw+A==" + }, + "node_modules/@ngua/cardano-serialization-lib-nodejs": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@ngua/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-9.1.2.tgz", + "integrity": "sha512-6xpp5Xjcqm9eHIrKBUmmIeZV6n0OeK6t8vCyQzF8KcHEQiknAcIcoIq/wf7sEcLV3ohwn945QCKkM3rKsKF5FA==" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", + "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.8", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", + "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "17.0.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.14.tgz", + "integrity": "sha512-SbjLmERksKOGzWzPNuW7fJM7fk3YXVTFiZWB/Hs99gwhk+/dnrQRPBQjPW9aO+fi1tAffi9PrwFvsmOKmDTyng==", + "dev": true + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", + "dev": true + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.2.tgz", + "integrity": "sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", + "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", + "dev": true + }, + "node_modules/@webpack-cli/info": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", + "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", + "dev": true, + "dependencies": { + "envinfo": "^7.7.3" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", + "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", + "dev": true + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", + "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/assert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz", + "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", + "dependencies": { + "es6-object-assign": "^1.1.0", + "is-nan": "^1.2.1", + "object-is": "^1.0.1", + "util": "^0.12.0" + } + }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + }, + "node_modules/body-parser": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", + "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", + "dev": true, + "dependencies": { + "bytes": "3.1.1", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.6", + "raw-body": "2.4.2", + "type-is": "~1.6.18" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", + "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dependencies": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserslist": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", + "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001286", + "electron-to-chromium": "^1.4.17", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "node_modules/bufferutil": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.5.tgz", + "integrity": "sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/bufferutil/node_modules/node-gyp-build": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", + "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001305", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001305.tgz", + "integrity": "sha512-p7d9YQMji8haf0f+5rbcv9WlQ+N5jMPfRAnUmZRlNxsNeBO3Yr7RYG6M2uTY1h9tCVdlkJg6YNNc4kiAiBLdWA==", + "dev": true + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/clean-css": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.4.tgz", + "integrity": "sha512-nKseG8wCzEuji/4yrgM/5cthL9oTDc5UOQyFMvW/Q53oP6gLH690o1NbuTh6Y18nujr7BxlsFuS7gXLnLzKJGg==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/css-select": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", + "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^5.1.0", + "domhandler": "^4.3.0", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "node_modules/css-what": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "dependencies": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "dev": true, + "dependencies": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/del/node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/del/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "node_modules/dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "dev": true, + "dependencies": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "dependencies": { + "buffer-indexof": "^1.0.0" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "node_modules/domain-browser": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz", + "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true + }, + "node_modules/domhandler": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", + "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.63", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.63.tgz", + "integrity": "sha512-e0PX/LRJPFRU4kzJKLvTobxyFdnANCvcoDCe8XcyTqP58nTWIwdsHvXLIl1RkB39X5yaosLaroMASWB0oIsgCA==", + "dev": true + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", + "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/es-abstract": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es6-object-assign": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", + "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=" + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/execa/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/execa/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/express": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", + "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", + "dev": true, + "dependencies": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.9.6", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/filter-obj": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-2.0.2.tgz", + "integrity": "sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.0.tgz", + "integrity": "sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/graceful-fs": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "dev": true + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/html-entities": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", + "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", + "dev": true + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "dev": true, + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz", + "integrity": "sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.2.tgz", + "integrity": "sha512-XtmDN5w+vdFTBZaYhdJAbMqn0DP/EhkUaAeo963mojwpKMMbw6nivtFKw07D7DDOH745L5k0VL0P8KRYNEVF/g==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "node_modules/ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": { + "has-bigints": "^1.0.1" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==" + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz", + "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.5", + "foreach": "^2.0.5", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dependencies": { + "call-bind": "^1.0.2" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-worker": { + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.6.tgz", + "integrity": "sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", + "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", + "dev": true, + "dependencies": { + "fs-monkey": "1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dev": true, + "dependencies": { + "mime-db": "1.51.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "dependencies": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-polyfill-webpack-plugin": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-1.1.4.tgz", + "integrity": "sha512-Z0XTKj1wRWO8o/Vjobsw5iOJCN+Sua3EZEUc2Ziy9CyVvmHKu6o+t4gUH9GOE0czyPR94LI6ZCV/PpcM8b5yow==", + "dependencies": { + "assert": "^2.0.0", + "browserify-zlib": "^0.2.0", + "buffer": "^6.0.3", + "console-browserify": "^1.2.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.12.0", + "domain-browser": "^4.19.0", + "events": "^3.3.0", + "filter-obj": "^2.0.2", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "^1.0.1", + "process": "^0.11.10", + "punycode": "^2.1.1", + "querystring-es3": "^0.2.1", + "readable-stream": "^3.6.0", + "stream-browserify": "^3.0.0", + "stream-http": "^3.2.0", + "string_decoder": "^1.3.0", + "timers-browserify": "^2.0.12", + "tty-browserify": "^0.0.1", + "url": "^0.11.0", + "util": "^0.12.4", + "vm-browserify": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-polyfill-webpack-plugin/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==" + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "dependencies": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "dependencies": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/portfinder/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.9.6", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", + "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", + "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", + "dev": true, + "dependencies": { + "bytes": "3.1.1", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", + "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/reconnecting-websocket": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/reconnecting-websocket/-/reconnecting-websocket-4.4.0.tgz", + "integrity": "sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", + "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.0.tgz", + "integrity": "sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ==", + "dev": true, + "dependencies": { + "node-forge": "^1.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "node_modules/signal-exit": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/spdy-transport/node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/spdy-transport/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/spdy/node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/spdy/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "dependencies": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, + "node_modules/stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", + "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "dev": true, + "dependencies": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, + "node_modules/tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, + "node_modules/uniqid": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-5.4.0.tgz", + "integrity": "sha512-38JRbJ4Fj94VmnC7G/J/5n5SC7Ab46OM5iNtSstB/ko3l1b5g7ALt4qzHFgGciFkyiRNtDXtLNb+VsxtMSE77A==" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + }, + "node_modules/util": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", + "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "safe-buffer": "^5.1.2", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "node_modules/watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/webpack": { + "version": "5.67.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz", + "integrity": "sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.50", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.8.3", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-cli": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", + "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.1", + "@webpack-cli/info": "^1.4.1", + "@webpack-cli/serve": "^1.6.1", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz", + "integrity": "sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.1", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", + "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz", + "integrity": "sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.2.2", + "ansi-html-community": "^0.0.8", + "bonjour": "^3.5.0", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "del": "^6.0.0", + "express": "^4.17.1", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.0", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "portfinder": "^1.0.28", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "strip-ansi": "^7.0.0", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", + "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + } + }, + "node_modules/webpack-dev-server/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/webpack-dev-server/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.2.tgz", + "integrity": "sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz", + "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.5", + "foreach": "^2.0.5", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.7" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/ws": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.0.tgz", + "integrity": "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/xhr2": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.2.1.tgz", + "integrity": "sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + } + }, "dependencies": { "@discoveryjs/json-ext": { "version": "0.5.6", @@ -537,9 +5235,9 @@ } }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { "lodash": "^4.17.14" @@ -1621,9 +6319,9 @@ } }, "follow-redirects": { - "version": "1.14.7", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", - "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.0.tgz", + "integrity": "sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==", "dev": true }, "foreach": { @@ -2422,9 +7120,9 @@ } }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, "mkdirp": { @@ -2481,9 +7179,9 @@ } }, "node-forge": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", - "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true }, "node-polyfill-webpack-plugin": { @@ -3423,6 +8121,21 @@ "xtend": "^4.0.2" } }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, "string.prototype.trimend": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", @@ -3441,21 +8154,6 @@ "define-properties": "^1.1.3" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", diff --git a/package.json b/package.json index 2d7050cda..5a1267157 100644 --- a/package.json +++ b/package.json @@ -17,20 +17,20 @@ "license": "MIT", "dependencies": { "@ngua/cardano-serialization-lib-browser": "9.1.2", - "@ngua/cardano-serialization-lib-nodejs": "9.1.2", - "big-integer": "1.6.51", + "@ngua/cardano-serialization-lib-nodejs": "^9.1.2", + "big-integer": "^1.6.51", "bufferutil": "4.0.5", "node-polyfill-webpack-plugin": "1.1.4", - "uniqid": "5.4.0", "reconnecting-websocket": "4.4.0", + "uniqid": "5.4.0", "ws": "8.4.0", "xhr2": "0.2.1" }, "devDependencies": { "buffer": "6.0.3", + "html-webpack-plugin": "5.5.0", "webpack": "5.67.0", "webpack-cli": "4.9.2", - "html-webpack-plugin": "5.5.0", "webpack-dev-server": "4.7.4" } } From 1f505712f0cf1af61a384af5d2c26836b12188ec Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Wed, 25 May 2022 18:16:51 -0400 Subject: [PATCH 61/85] spago2nix generate --- spago-packages.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spago-packages.nix b/spago-packages.nix index 742ac3c7b..9f9b1e013 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -7,11 +7,11 @@ let "aeson" = pkgs.stdenv.mkDerivation { name = "aeson"; - version = "5054e03ee14376768071c24d63889bfab8db2667"; + version = "862c202443b143da0494379a8e3e0d00310ed8bc"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-aeson.git"; - rev = "5054e03ee14376768071c24d63889bfab8db2667"; - sha256 = "0rwghhh3a2mxgpnirfbdx4hlh4ah0fxsijlvm4a42dllprfwcfgh"; + rev = "862c202443b143da0494379a8e3e0d00310ed8bc"; + sha256 = "1khn834wsqgf80p8xjyw6z06dhj8vknj7lhpm5dj44nqlaj8qhqb"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From 1ab58d814370c4b6a607e2b83af53bdde95cbbf7 Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Wed, 25 May 2022 20:26:14 -0400 Subject: [PATCH 62/85] wrote EncodeAeson/DecodeAeson instances for Datum (attempting to unblock Guilherme) --- src/Types/Datum.purs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/Types/Datum.purs b/src/Types/Datum.purs index bddbe7b37..b6cb9a4fa 100644 --- a/src/Types/Datum.purs +++ b/src/Types/Datum.purs @@ -6,15 +6,19 @@ module Types.Datum import Prelude -import Aeson (class DecodeAeson, class EncodeAeson) +import Aeson (Aeson, aesonNull, class DecodeAeson, class EncodeAeson, decodeAeson, encodeAeson) +import Aeson.Decode ((), (), (), decode, null) +import Aeson.Encode ((>$<), (>/\<), encode, null) +import Control.Lazy (defer) import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype) +import Data.Newtype (class Newtype, unwrap, wrap) import Data.Show.Generic (genericShow) import FromData (class FromData) import ToData (class ToData, toData) import Types.PlutusData (PlutusData) import Types.Transaction (DataHash(DataHash)) as X - +import Aeson.Decode as D +import Aeson.Encode as E -- | Define data types mirroring Plutus `Datum`, like `Datum` itself and -- | `Redeemer` where the latter is not to be confused with the CSL-stype -- | `Types.Transaction.Redeemer`. @@ -28,8 +32,11 @@ derive newtype instance Eq Datum derive newtype instance FromData Datum derive newtype instance Ord Datum derive newtype instance ToData Datum -derive newtype instance DecodeAeson Datum -derive newtype instance EncodeAeson Datum +instance EncodeAeson Datum where + encodeAeson' x = pure $ (defer \_ -> E.encode $ unwrap >$< E.value ) x + +instance DecodeAeson Datum where + decodeAeson = defer \_ -> D.decode $ (Datum <$> D.value) instance Show Datum where show = genericShow From d0e2752d969037f8d3a2a519d50affe27676d98f Mon Sep 17 00:00:00 2001 From: MangoIV Date: Thu, 26 May 2022 14:35:26 +0200 Subject: [PATCH 63/85] removed Crypto in front-and-backend --- server/src/Api.hs | 9 ----- server/src/Api/Handlers.hs | 15 ------- server/src/Types.hs | 80 -------------------------------------- server/test/Main.hs | 26 +------------ src/Contract/Crypto.purs | 20 ---------- src/QueryM/Crypto.purs | 72 ---------------------------------- src/Types/Datum.purs | 12 +++++- src/Types/TokenName.purs | 34 +++++++++------- test/Crypto.purs | 53 ------------------------- test/Integration.purs | 2 - test/Plutus/Address.purs | 4 +- 11 files changed, 32 insertions(+), 295 deletions(-) delete mode 100644 src/Contract/Crypto.purs delete mode 100644 src/QueryM/Crypto.purs delete mode 100644 test/Crypto.purs diff --git a/server/src/Api.hs b/server/src/Api.hs index 2bbaffb28..8cb133117 100644 --- a/server/src/Api.hs +++ b/server/src/Api.hs @@ -4,7 +4,6 @@ module Api ( applyArgs, finalizeTx, evalTxExecutionUnits, - plutusHash, apiDocs, ) where @@ -42,7 +41,6 @@ import Types ( AppM (AppM), AppliedScript, ApplyArgsRequest, - ByteStringHash, CardanoError ( AcquireFailure, EraMismatchError, @@ -57,7 +55,6 @@ import Types ( Fee, FinalizeRequest, FinalizedTransaction, - HashBytesRequest, WitnessCount, ) import Utils (lbshow) @@ -74,9 +71,6 @@ type Api = :> Post '[JSON] AppliedScript -- Making this a POST request so we can just use the @From/ToJSON@ -- instances instead of decoding in the handler - :<|> "plutus-hash" - :> ReqBody '[JSON] HashBytesRequest - :> Post '[JSON] ByteStringHash :<|> "eval-ex-units" :> QueryParam' '[Required] "tx" Cbor :> Get '[JSON] ExecutionUnitsMap @@ -135,7 +129,6 @@ server :: ServerT Api AppM server = Handlers.estimateTxFees :<|> Handlers.applyArgs - :<|> Handlers.plutusHash :<|> Handlers.evalTxExecutionUnits :<|> Handlers.finalizeTx @@ -144,12 +137,10 @@ apiDocs = Docs.docs api estimateTxFees :: WitnessCount -> Cbor -> ClientM Fee applyArgs :: ApplyArgsRequest -> ClientM AppliedScript -plutusHash :: HashBytesRequest -> ClientM ByteStringHash evalTxExecutionUnits :: Cbor -> ClientM ExecutionUnitsMap finalizeTx :: FinalizeRequest -> ClientM FinalizedTransaction estimateTxFees :<|> applyArgs - :<|> plutusHash :<|> evalTxExecutionUnits :<|> finalizeTx = client api diff --git a/server/src/Api/Handlers.hs b/server/src/Api/Handlers.hs index ddcf9b1e6..854f25062 100644 --- a/server/src/Api/Handlers.hs +++ b/server/src/Api/Handlers.hs @@ -3,7 +3,6 @@ module Api.Handlers ( estimateTxFees, applyArgs, - plutusHash, evalTxExecutionUnits, finalizeTx, ) where @@ -40,13 +39,10 @@ import Data.Text.Encoding qualified as Text.Encoding import Data.Traversable (for) import Math.NumberTheory.Logarithms qualified as Math (integerLog2) import Plutus.V1.Ledger.Scripts qualified as Ledger.Scripts -import PlutusTx.Builtins qualified as PlutusTx import Types ( AppM, AppliedScript (AppliedScript), ApplyArgsRequest (ApplyArgsRequest, args, script), - ByteStringHash (ByteStringHash), - BytesToHash (BytesToHash), CardanoError ( AcquireFailure, EraMismatchError, @@ -61,9 +57,6 @@ import Types ( Fee (Fee), FinalizeRequest (FinalizeRequest, datums, redeemers, tx), FinalizedTransaction (FinalizedTransaction), - HashBytesRequest (HashBytesRequest), - HashMethod (Blake2b_256, Sha2_256, Sha3_256), - HashedBytes (HashedBytes), RdmrPtrExUnits ( RdmrPtrExUnits, exUnitsMem, @@ -164,14 +157,6 @@ evalTxExecutionUnits cbor = , exUnitsSteps = C.executionSteps exUnits } -plutusHash :: HashBytesRequest -> AppM ByteStringHash -plutusHash (HashBytesRequest meth (BytesToHash hs)) = - let hf = case meth of - Sha3_256 -> PlutusTx.sha3_256 - Sha2_256 -> PlutusTx.sha2_256 - Blake2b_256 -> PlutusTx.blake2b_256 - in pure . ByteStringHash meth . HashedBytes . PlutusTx.fromBuiltin . hf $ PlutusTx.toBuiltin hs - finalizeTx :: FinalizeRequest -> AppM FinalizedTransaction finalizeTx FinalizeRequest {tx, datums, redeemers} = do pparams <- asks protocolParams diff --git a/server/src/Types.hs b/server/src/Types.hs index 52e6b46de..f47305204 100644 --- a/server/src/Types.hs +++ b/server/src/Types.hs @@ -9,13 +9,8 @@ module Types ( WitnessCount (..), ApplyArgsRequest (..), AppliedScript (..), - BytesToHash (..), - ByteStringHash (..), FinalizeRequest (..), FinalizedTransaction (..), - HashBytesRequest (..), - HashedBytes (..), - HashMethod (..), CardanoError (..), CborDecodeError (..), CtlServerError (..), @@ -38,7 +33,6 @@ import Data.Aeson.Types (withText) import Data.ByteString (ByteString) import Data.ByteString.Base16 qualified as Base16 import Data.ByteString.Lazy.Char8 qualified as LC8 -import Data.Char (toLower) import Data.Functor ((<&>)) import Data.Kind (Type) import Data.Maybe (fromMaybe) @@ -161,50 +155,6 @@ newtype AppliedScript = AppliedScript Ledger.Script deriving stock (Show, Generic) deriving newtype (Eq, FromJSON, ToJSON) -data HashBytesRequest = HashBytesRequest - { method :: HashMethod - , bytes :: BytesToHash - } - deriving stock (Show, Eq, Generic) - deriving anyclass (FromJSON, ToJSON) - -newtype BytesToHash = BytesToHash ByteString - deriving stock (Show, Generic) - deriving newtype (Eq) - deriving (FromJSON, ToJSON) via JsonHexString - -newtype HashedBytes = HashedBytes ByteString - deriving stock (Show, Generic) - deriving newtype (Eq) - deriving (FromJSON, ToJSON) via JsonHexString - -data HashMethod - = Blake2b_256 - | Sha2_256 - | Sha3_256 - deriving stock (Show, Eq, Generic) - -instance FromJSON HashMethod where - parseJSON = - Aeson.genericParseJSON - Aeson.defaultOptions - { Aeson.constructorTagModifier = fmap toLower - } - -instance ToJSON HashMethod where - toJSON = - Aeson.genericToJSON - Aeson.defaultOptions - { Aeson.constructorTagModifier = fmap toLower - } - -data ByteStringHash = ByteStringHash - { method :: HashMethod - , hash :: HashedBytes - } - deriving stock (Show, Eq, Generic) - deriving anyclass (FromJSON, ToJSON) - data FinalizeRequest = FinalizeRequest { tx :: Cbor , datums :: [Cbor] @@ -335,36 +285,6 @@ instance Docs.ToSample FinalizedTransaction where , "3e96550504d5336100021a0002b569a0f5f6" ] -instance Docs.ToSample BytesToHash where - toSamples _ = [("Bytes to hash as hexadecimal string", BytesToHash "68656C6C6F20776F726C64")] - -instance Docs.ToSample ByteStringHash where - toSamples _ = - [ - ( "Hash bytes are returned as hexidecimal string" - , ByteStringHash Blake2b_256 $ - HashedBytes - "\184\254\159\DELbU\166\250\b\246h\171c*\ - \\141\b\SUB\216y\131\199|\210t\228\140\228P\240\179I\253" - ) - ] - -instance Docs.ToSample HashMethod where - toSamples _ = - [ - ( "Method to use for hashing as defined in PlutusTx" - , Sha2_256 - ) - ] - -instance Docs.ToSample HashBytesRequest where - toSamples _ = - [ - ( "Request consisting of a HashMethod and the bytestring to be hashed" - , HashBytesRequest Blake2b_256 $ BytesToHash "foo" - ) - ] - -- For decoding test fixtures, samples, etc... unsafeDecode :: forall (a :: Type). FromJSON a => String -> LC8.ByteString -> a unsafeDecode name = fromMaybe (error errorMsg) . Aeson.decode diff --git a/server/test/Main.hs b/server/test/Main.hs index 943bb5fa9..9ec46bbab 100644 --- a/server/test/Main.hs +++ b/server/test/Main.hs @@ -1,6 +1,6 @@ module Main (main) where -import Api (app, applyArgs, estimateTxFees, plutusHash) +import Api (app, applyArgs, estimateTxFees) import Cardano.Api qualified as C import Cardano.Api.Shelley ( ExecutionUnitPrices ( @@ -76,14 +76,9 @@ import Test.Hspec.Core.Spec (SpecM) import Types ( AppliedScript (AppliedScript), ApplyArgsRequest (ApplyArgsRequest, args, script), - ByteStringHash (ByteStringHash), - BytesToHash (BytesToHash), Cbor (Cbor), Env (Env), Fee (Fee), - HashBytesRequest (HashBytesRequest), - HashMethod (Blake2b_256), - HashedBytes (HashedBytes), ServerOptions ( ServerOptions, networkId, @@ -103,7 +98,6 @@ serverSpec :: Spec serverSpec = do describe "Api.Handlers.applyArgs" applyArgsSpec describe "Api.Handlers.estimateTxFees" feeEstimateSpec - describe "Api.Handlers.plutusHash" plutusHashSpec describe "Ogmios.Parser " testParser applyArgsSpec :: Spec @@ -164,24 +158,6 @@ feeEstimateSpec = around withTestApp $ do | scode == code && sbody == body -> True _ -> False -plutusHashSpec :: Spec -plutusHashSpec = around withTestApp $ do - clientEnv <- setupClientEnv - - context "POST blake2b" $ do - it "gets the blake2b_256 hash" $ \port -> do - result <- - runClientM' (clientEnv port) $ - plutusHash (HashBytesRequest Blake2b_256 $ BytesToHash "foo") - result `shouldBe` Right blake2bRes - where - -- obtained from `fromBuiltin . blake2b_256 $ toBuiltin @ByteString "foo"` - blake2bRes :: ByteStringHash - blake2bRes = - ByteStringHash Blake2b_256 $ - HashedBytes - "\184\254\159\DELbU\166\250\b\246h\171c*\141\b\SUB\216y\131\199|\210t\228\140\228P\240\179I\253" - setupClientEnv :: SpecM Port (Port -> ClientEnv) setupClientEnv = do baseUrl <- runIO $ parseBaseUrl "http://localhost" diff --git a/src/Contract/Crypto.purs b/src/Contract/Crypto.purs deleted file mode 100644 index 09b4108ef..000000000 --- a/src/Contract/Crypto.purs +++ /dev/null @@ -1,20 +0,0 @@ -module Contract.Crypto - ( plutusHash - , HashMethod(..) - ) where - -import Prelude - -import Contract.Monad (Contract, wrapContract) -import Data.Either (Either) -import QueryM.Crypto as Crypto -import Types.ByteArray (ByteArray) - -type HashMethod = Crypto.HashMethod - -plutusHash - :: forall (r :: Row Type) - . HashMethod - -> ByteArray - -> Contract r (Either String ByteArray) -plutusHash meth = wrapContract <<< Crypto.plutusHash meth diff --git a/src/QueryM/Crypto.purs b/src/QueryM/Crypto.purs deleted file mode 100644 index d2b0f8756..000000000 --- a/src/QueryM/Crypto.purs +++ /dev/null @@ -1,72 +0,0 @@ -module QueryM.Crypto - ( plutusHash - , HashMethod(..) - ) where - -import Prelude - -import Aeson - ( Aeson - , decodeAeson - , encodeAeson - , parseJsonStringToAeson - , toStringifiedNumbersJson - ) -import Affjax as Affjax -import Affjax.RequestBody as Affjax.RequestBody -import Affjax.ResponseFormat as Affjax.ResponseFormat -import Control.Monad.Error.Class (throwError) -import Control.Monad.Reader.Trans (asks) -import Data.Bifunctor (lmap) -import Data.Either (Either) -import Data.Generic.Rep (class Generic) -import Data.Show.Generic (genericShow) -import Effect.Aff.Class (liftAff) -import QueryM - ( QueryM - ) -import QueryM.ServerConfig (mkHttpUrl) -import Types.ByteArray (ByteArray, byteArrayToHex) - -data HashMethod - = Blake2b_256 - | Sha2_256 - | Sha3_256 - -derive instance Generic HashMethod _ - -instance Show HashMethod where - show = genericShow - -plutusHash - :: HashMethod -> ByteArray -> QueryM (Either String ByteArray) -plutusHash meth bytes = do - url <- asks $ (_ <> "/" <> "plutus-hash") <<< mkHttpUrl <<< _.serverConfig - let - methJson :: String - methJson = case meth of - Blake2b_256 -> "blake2b_256" - Sha2_256 -> "sha2_256" - Sha3_256 -> "sha3_256" - - requestJson :: Aeson - requestJson = encodeAeson - { bytes: byteArrayToHex bytes - , method: methJson - } - - reqBody :: Affjax.RequestBody.RequestBody - reqBody = Affjax.RequestBody.Json $ toStringifiedNumbersJson $ encodeAeson - -- FIXME: if this breaks something it might be because the numbers are put in quotes? - requestJson - response <- liftAff - (Affjax.post Affjax.ResponseFormat.string url (pure reqBody)) - pure $ do - responseJson :: ({ method :: String, hash :: ByteArray }) <- - lmap Affjax.printError response >>= _.body - >>> (parseJsonStringToAeson >=> decodeAeson) - >>> lmap - show - unless (responseJson.method == methJson) $ - throwError "responseJson wasn't hashed with the method requested" - pure responseJson.hash diff --git a/src/Types/Datum.purs b/src/Types/Datum.purs index b6cb9a4fa..2a4880b18 100644 --- a/src/Types/Datum.purs +++ b/src/Types/Datum.purs @@ -6,7 +6,14 @@ module Types.Datum import Prelude -import Aeson (Aeson, aesonNull, class DecodeAeson, class EncodeAeson, decodeAeson, encodeAeson) +import Aeson + ( Aeson + , aesonNull + , class DecodeAeson + , class EncodeAeson + , decodeAeson + , encodeAeson + ) import Aeson.Decode ((), (), (), decode, null) import Aeson.Encode ((>$<), (>/\<), encode, null) import Control.Lazy (defer) @@ -19,6 +26,7 @@ import Types.PlutusData (PlutusData) import Types.Transaction (DataHash(DataHash)) as X import Aeson.Decode as D import Aeson.Encode as E + -- | Define data types mirroring Plutus `Datum`, like `Datum` itself and -- | `Redeemer` where the latter is not to be confused with the CSL-stype -- | `Types.Transaction.Redeemer`. @@ -33,7 +41,7 @@ derive newtype instance FromData Datum derive newtype instance Ord Datum derive newtype instance ToData Datum instance EncodeAeson Datum where - encodeAeson' x = pure $ (defer \_ -> E.encode $ unwrap >$< E.value ) x + encodeAeson' x = pure $ (defer \_ -> E.encode $ unwrap >$< E.value) x instance DecodeAeson Datum where decodeAeson = defer \_ -> D.decode $ (Datum <$> D.value) diff --git a/src/Types/TokenName.purs b/src/Types/TokenName.purs index 18efc6194..cd5bc4322 100644 --- a/src/Types/TokenName.purs +++ b/src/Types/TokenName.purs @@ -150,23 +150,27 @@ instance FromJSON TokenName where "\NUL\NUL\NUL" -> Haskell.pure . fromText . Text.drop 2 $ t _ -> Haskell.pure . fromText $ t -} - encodeAeson' tk = let tkstr = fromTokenName - (\ba -> """\NUL""" <> asBase16 ba) - (\t -> case take 1 t of - """\NUL""" -> """\NUL\NUL""" <> t - _ -> t) - tk - in encodeAeson' {"unTokenName": tkstr} - - {- + encodeAeson' tk = let - finalBs :: ByteArray - finalBs = byteArrayFromIntArrayUnsafe [ 0, 48, 120 ] <> - (cborBytesToByteArray ba) - -- FIXME: what if the tokenname starts with \0 => put another two \0 in front of that + tkstr = fromTokenName + (\ba -> """\NUL""" <> asBase16 ba) + ( \t -> case take 1 t of + """\NUL""" -> """\NUL\NUL""" <> t + _ -> t + ) + tk in - encodeAeson' { "unTokenName": finalBs } - -} + encodeAeson' { "unTokenName": tkstr } + +{- +let + finalBs :: ByteArray + finalBs = byteArrayFromIntArrayUnsafe [ 0, 48, 120 ] <> + (cborBytesToByteArray ba) +-- FIXME: what if the tokenname starts with \0 => put another two \0 in front of that +in + encodeAeson' { "unTokenName": finalBs } +-} instance Show TokenName where show (TokenName tn) = "(TokenName" <> show tn <> ")" diff --git a/test/Crypto.purs b/test/Crypto.purs deleted file mode 100644 index d6906f328..000000000 --- a/test/Crypto.purs +++ /dev/null @@ -1,53 +0,0 @@ -module Test.Crypto (suite) where - -import Prelude - -import Contract.Prim.ByteArray (byteArrayToHex) -import Data.Maybe (Maybe) -import Data.Traversable (traverse_) -import Data.Tuple (Tuple(Tuple)) -import Effect.Aff.Class (liftAff) -import Mote (group, test) -import QueryM (QueryM, runQueryM, traceQueryConfig) -import QueryM.Crypto (plutusHash, HashMethod(..)) -import Test.Spec.Assertions (shouldEqual) -import Test.Utils (errMaybe, errEither) -import TestM (TestPlanM) -import Types.ByteArray (ByteArray, hexToByteArray) - -suite :: TestPlanM Unit -suite = do - group "Contract.Crypto" - $ test "plutusHash" - $ do - qcf <- liftAff $ traceQueryConfig - liftAff $ runQueryM qcf $ do - mkReqs sourceHashPairs - where - mkReqs - :: Array (Tuple (Maybe ByteArray) (Array (Tuple HashMethod String))) - -> QueryM Unit - mkReqs = traverse_ - ( \(Tuple origBS hashtups) -> - traverse_ - ( \(Tuple meth goal) -> do - qbs <- errMaybe "bytestring is not hex format" origBS - res <- errEither =<< - plutusHash meth qbs - shouldEqual goal $ byteArrayToHex res - ) - hashtups - ) - -sourceHashPairs - :: Array (Tuple (Maybe ByteArray) (Array (Tuple HashMethod String))) -sourceHashPairs = - [ Tuple (hexToByteArray "68656C6C6F20776F726C64") - [ Tuple Sha3_256 - "644bcc7e564373040999aac89e7622f3ca71fba1d972fd94a31c3bfbf24e3938" - , Tuple Sha2_256 - "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9" - , Tuple Blake2b_256 - "256c83b297114d201b30179f3f0ef0cace9783622da5974326b436178aeef610" - ] - ] diff --git a/test/Integration.purs b/test/Integration.purs index 46644da44..a2eb761e9 100644 --- a/test/Integration.purs +++ b/test/Integration.purs @@ -7,7 +7,6 @@ import Effect.Aff (launchAff_) import Test.AffInterface as AffInterface import Test.FinalizeTx as FinalizeTx import Test.Utils as Utils -import Test.Crypto as Crypto import TestM (TestPlanM) -- Run with `spago test --main Test.Integration` @@ -19,5 +18,4 @@ main = launchAff_ do testPlan :: TestPlanM Unit testPlan = do FinalizeTx.suite - Crypto.suite AffInterface.suite diff --git a/test/Plutus/Address.purs b/test/Plutus/Address.purs index 7ebe6c2f3..ec04c9636 100644 --- a/test/Plutus/Address.purs +++ b/test/Plutus/Address.purs @@ -8,7 +8,7 @@ import Data.Array ((..), length, zip) import Data.Maybe (Maybe(Just, Nothing), fromJust) import Data.Newtype (class Newtype, wrap, unwrap) import Data.Traversable (for_) -import Data.Tuple (Tuple (Tuple)) +import Data.Tuple (Tuple(Tuple)) import Data.UInt (UInt, fromInt) import Data.Tuple.Nested ((/\)) import Mote (group, test) @@ -129,7 +129,7 @@ addressesBech32Testnet = addresses :: Array Plutus.Address addresses = wrap <$> [ { addressCredential: pubKeyCredential - , addressStakingCredential: Nothing -- Just stakingHash + , addressStakingCredential: Just stakingHash } , { addressCredential: scriptCredential , addressStakingCredential: Just stakingHash From 89c25a49819c9aea0da2a052ec86873592d71510 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Thu, 26 May 2022 15:55:27 +0200 Subject: [PATCH 64/85] Fixed ScriptHash Aeson instance, added Credential tests --- src/Contract/Scripts.purs | 8 +------ src/Contract/Value.purs | 4 ---- src/Hashing.purs | 4 +--- src/Serialization/Hash.purs | 4 +++- src/Types/Scripts.purs | 21 ++++++++++++++----- test/Plutus/Address.purs | 13 ++---------- test/Unit.purs | 2 ++ test/Utils.purs | 42 +++++++++++++++++++++++++++++++++---- 8 files changed, 63 insertions(+), 35 deletions(-) diff --git a/src/Contract/Scripts.purs b/src/Contract/Scripts.purs index 4d6e7a752..cce626fc1 100644 --- a/src/Contract/Scripts.purs +++ b/src/Contract/Scripts.purs @@ -71,13 +71,7 @@ import Data.Maybe (Maybe) import Data.Newtype (class Newtype) import Types.PlutusData (PlutusData) import Types.Scripts - ( MintingPolicy - , MintingPolicyHash - , PlutusScript - , StakeValidator - , StakeValidatorHash - , Validator - , ValidatorHash + ( PlutusScript ) -- | Apply `PlutusData` arguments to any type isomorphic to `PlutusScript`, diff --git a/src/Contract/Value.purs b/src/Contract/Value.purs index 6b13a1403..b74f5a6e4 100644 --- a/src/Contract/Value.purs +++ b/src/Contract/Value.purs @@ -6,11 +6,7 @@ module Contract.Value , module Value ) where -import Prelude -import Contract.Monad (Contract) -import Data.Maybe (Maybe) import Scripts (scriptCurrencySymbol) as Scripts -import Types.Scripts (MintingPolicy) import Types.TokenName ( TokenName , adaToken diff --git a/src/Hashing.purs b/src/Hashing.purs index afa4c3c26..9b450cca9 100644 --- a/src/Hashing.purs +++ b/src/Hashing.purs @@ -11,10 +11,8 @@ module Hashing import Prelude -import Data.Generic.Rep (class Generic) import Data.Maybe (Maybe) -import Data.Newtype (class Newtype, wrap, unwrap) -import Data.Show.Generic (genericShow) +import Data.Newtype (unwrap, wrap) import Serialization.Hash (ScriptHash, scriptHashFromBytes) import Serialization.PlutusData (convertPlutusData) import Serialization.Types (PlutusData) as Serialization diff --git a/src/Serialization/Hash.purs b/src/Serialization/Hash.purs index ef3c3ab18..d7fee266a 100644 --- a/src/Serialization/Hash.purs +++ b/src/Serialization/Hash.purs @@ -153,7 +153,9 @@ instance DecodeAeson ScriptHash where <=< flip getField "getScriptHash" instance EncodeAeson ScriptHash where - encodeAeson' sh = encodeAeson' (scriptHashToBytes sh) + encodeAeson' sh = encodeAeson' + { getScriptHash: scriptHashToBytes sh + } foreign import _scriptHashFromBytesImpl :: MaybeFfiHelper diff --git a/src/Types/Scripts.purs b/src/Types/Scripts.purs index e94bc0ff6..64d2df91a 100644 --- a/src/Types/Scripts.purs +++ b/src/Types/Scripts.purs @@ -20,6 +20,10 @@ import Aeson , encodeAeson' , getField ) +import Aeson.Decode as D +import Aeson.Encode as E +import Contract.Prelude (unwrap, wrap) +import Record (get) import Data.Either (Either(Left)) import Data.Generic.Rep (class Generic) import Data.Newtype (class Newtype) @@ -29,6 +33,7 @@ import Metadata.FromMetadata (class FromMetadata) import Metadata.ToMetadata (class ToMetadata) import Serialization.Hash (ScriptHash) import ToData (class ToData) +import Type.Prelude (Proxy(..)) import Types.ByteArray (ByteArray) -------------------------------------------------------------------------------- @@ -148,12 +153,18 @@ derive newtype instance ToData ValidatorHash derive newtype instance FromMetadata ValidatorHash derive newtype instance ToMetadata ValidatorHash -instance DecodeAeson ValidatorHash where - decodeAeson = decodeAesonHelper "getValidatorHash" ValidatorHash - +-- NOTE: mlabs-haskell/purescript-bridge generated and applied here instance EncodeAeson ValidatorHash where - encodeAeson' (ValidatorHash hash) = - encodeAeson' { "getValidatorHash": hash } + encodeAeson' x = pure $ E.encode + (E.record { getValidatorHash: E.value :: _ (ScriptHash) }) + { getValidatorHash: unwrap x } + +instance DecodeAeson ValidatorHash where + decodeAeson x = wrap <<< get (Proxy :: Proxy "getValidatorHash") <$> D.decode + ( D.record "getValidatorHash " + { getValidatorHash: D.value :: _ (ScriptHash) } + ) + x instance Show ValidatorHash where show = genericShow diff --git a/test/Plutus/Address.purs b/test/Plutus/Address.purs index ec04c9636..23b36b144 100644 --- a/test/Plutus/Address.purs +++ b/test/Plutus/Address.purs @@ -2,8 +2,6 @@ module Test.Plutus.Address (suite, addresses) where import Prelude -import Aeson (JsonDecodeError, decodeAeson, encodeAeson) -import Contract.Prelude (Either(Right)) import Data.Array ((..), length, zip) import Data.Maybe (Maybe(Just, Nothing), fromJust) import Data.Newtype (class Newtype, wrap, unwrap) @@ -26,7 +24,7 @@ import Serialization.Address ) import Serialization.Hash (ed25519KeyHashFromBech32, scriptHashFromBech32) import Test.Spec.Assertions (shouldEqual) -import Test.Utils (errMaybe) +import Test.Utils (errMaybe, toFromAesonTest) import TestM (TestPlanM) import Types.Aliases (Bech32String) @@ -43,17 +41,10 @@ suite = do let testData = zip (zip addressesBech32Testnet addresses) indices for_ testData $ \(Tuple (Tuple addrBech32 addr) addrType) -> toFromPlutusTypeTest TestnetId addrType addrBech32 addr - group "Address Aeson tests" $ do + group "Aeson tests" $ do group "Roundtrip tests" $ do for_ addresses toFromAesonTest -toFromAesonTest :: Plutus.Address -> TestPlanM Unit -toFromAesonTest addr = test (show addr) $ do - let - (addrOrErr :: Either JsonDecodeError Plutus.Address) = - decodeAeson <<< encodeAeson $ addr - addrOrErr `shouldEqual` Right addr - toFromPlutusTypeTest :: NetworkId -> Int -> Bech32String -> Plutus.Address -> TestPlanM Unit toFromPlutusTypeTest networkId addrType addrBech32 addrPlutus = diff --git a/test/Unit.purs b/test/Unit.purs index 3c11abe12..b2c6f6ffe 100644 --- a/test/Unit.purs +++ b/test/Unit.purs @@ -12,6 +12,7 @@ import Test.Metadata.Seabug as Seabug import Test.Metadata.Cip25 as Cip25 import Test.Parser as Parser import Test.Plutus.Address as Plutus.Address +import Test.Plutus.Credential as Plutus.Credential import Test.Plutus.Value as Plutus.Value import Test.Serialization as Serialization import Test.Serialization.Address as Serialization.Address @@ -35,6 +36,7 @@ testPlan = do Hashing.suite Parser.suite Plutus.Address.suite + Plutus.Credential.suite Plutus.Value.suite Seabug.suite Serialization.suite diff --git a/test/Utils.purs b/test/Utils.purs index c1bf4543e..6b71de1de 100644 --- a/test/Utils.purs +++ b/test/Utils.purs @@ -1,24 +1,34 @@ module Test.Utils - ( interpret - , unsafeCall + ( aesonRoundTrip , assertTrue , assertTrue_ , errEither , errMaybe + , interpret + , toFromAesonTest + , unsafeCall ) where import Prelude +import Aeson + ( class DecodeAeson + , class EncodeAeson + , JsonDecodeError + , decodeAeson + , encodeAeson + ) import Data.Const (Const) +import Data.Either (Either(Left, Right)) import Data.Foldable (sequence_) import Data.Maybe (Maybe(Just, Nothing)) -import Data.Either (Either(Left, Right)) import Effect.Aff (Aff, error) import Effect.Aff.Class (liftAff) import Effect.Class (class MonadEffect, liftEffect) import Effect.Exception (throwException, throw) -import Mote (Plan, foldPlan, planT) +import Mote (Plan, foldPlan, planT, test) import Test.Spec (Spec, describe, it) +import Test.Spec.Assertions (shouldEqual) import Test.Spec.Reporter (consoleReporter) import Test.Spec.Runner (runSpec) import TestM (TestPlanM) @@ -78,3 +88,27 @@ errMaybe errMaybe msg = case _ of Nothing -> liftEffect $ throw msg Just res -> pure res + +toFromAesonTest + :: forall (a :: Type) + . Eq a + => Show a + => DecodeAeson a + => EncodeAeson a + => a + -> TestPlanM Unit +toFromAesonTest x = test (show x) $ do + let + (xOrErr :: Either JsonDecodeError a) = + aesonRoundTrip x + xOrErr `shouldEqual` Right x + +aesonRoundTrip + :: forall (a :: Type) + . Eq a + => Show a + => DecodeAeson a + => EncodeAeson a + => a + -> Either JsonDecodeError a +aesonRoundTrip = decodeAeson <<< encodeAeson From ea9e88e4c94e03e029ad4c8b381071dc2bdbcd66 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Thu, 26 May 2022 16:19:52 +0200 Subject: [PATCH 65/85] Forgot to include the module file -.- --- test/Plutus/Credential.purs | 48 +++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 test/Plutus/Credential.purs diff --git a/test/Plutus/Credential.purs b/test/Plutus/Credential.purs new file mode 100644 index 000000000..7863f451b --- /dev/null +++ b/test/Plutus/Credential.purs @@ -0,0 +1,48 @@ +module Test.Plutus.Credential + ( suite + , creds + ) where + +import Prelude + +import Data.Maybe (fromJust) +import Data.Newtype (wrap) +import Data.Traversable (for_) +import Mote (group) +import Partial.Unsafe (unsafePartial) +import Plutus.Types.Credential (Credential(ScriptCredential, PubKeyCredential)) +import Serialization.Hash (ed25519KeyHashFromBech32, scriptHashFromBech32) +import Test.Utils (toFromAesonTest) +import TestM (TestPlanM) +import Types.Aliases (Bech32String) + +suite :: TestPlanM Unit +suite = do + group "Plutus.Types.Credential" $ do + group "Aeson tests" $ do + group "Roundtrip tests" $ do + for_ creds toFromAesonTest + +creds ∷ Array Credential +creds = + [ pubKeyCredential + , scriptCredential + ] + +paymentKeyBech32 :: Bech32String +paymentKeyBech32 = + "addr_vkh1jjfnzhxe966a33psfenm0ct2udkkr569qf55v4uprgkgu8zsvmg" + +pubKeyCredential :: Credential +pubKeyCredential = + PubKeyCredential <<< wrap <<< unsafePartial fromJust $ + ed25519KeyHashFromBech32 paymentKeyBech32 + +scriptBech32 :: Bech32String +scriptBech32 = + "script1cda3khwqv60360rp5m7akt50m6ttapacs8rqhn5w342z7r35m37" + +scriptCredential :: Credential +scriptCredential = + ScriptCredential <<< wrap <<< unsafePartial fromJust $ + scriptHashFromBech32 scriptBech32 From 08d41da32842077311eb05240390b1747f5db7ac Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Thu, 26 May 2022 18:41:31 +0200 Subject: [PATCH 66/85] Fixed ScriptHash and ValidatorHash Aeson instances (I think) --- src/Serialization/Hash.purs | 20 ++++++++++---------- src/Types/Scripts.purs | 20 ++------------------ 2 files changed, 12 insertions(+), 28 deletions(-) diff --git a/src/Serialization/Hash.purs b/src/Serialization/Hash.purs index d7fee266a..3e06582f7 100644 --- a/src/Serialization/Hash.purs +++ b/src/Serialization/Hash.purs @@ -25,9 +25,10 @@ import Aeson , encodeAeson' , getField ) +import Contract.Prelude (Either(..)) import Data.Either (Either(Left), note) import Data.Function (on) -import Data.Maybe (Maybe(Nothing)) +import Data.Maybe (Maybe(Nothing, Just), maybe) import Data.Newtype (unwrap, wrap) import FfiHelpers (MaybeFfiHelper, maybeFfiHelper) import FromData (class FromData) @@ -35,8 +36,8 @@ import Metadata.FromMetadata (class FromMetadata) import Metadata.ToMetadata (class ToMetadata, toMetadata) import ToData (class ToData, toData) import Types.Aliases (Bech32String) -import Types.RawBytes (RawBytes, rawBytesToHex, hexToRawBytes) import Types.PlutusData (PlutusData(Bytes)) +import Types.RawBytes (RawBytes, rawBytesToHex, hexToRawBytes) import Types.TransactionMetadata (TransactionMetadatum(Bytes)) as Metadata -- | PubKeyHash and StakeKeyHash refers to blake2b-224 hash digests of Ed25519 @@ -146,16 +147,15 @@ instance FromMetadata ScriptHash where -- Corresponds to Plutus' `Plutus.V1.Ledger.Api.Script` Aeson instances instance DecodeAeson ScriptHash where - decodeAeson = - caseAesonObject (Left (TypeMismatch "Expected object")) $ - note (TypeMismatch "Expected hex-encoded script hash") - <<< (scriptHashFromBytes <=< hexToRawBytes) - <=< flip getField "getScriptHash" + decodeAeson aes = do + let + mayHash = caseAesonString Nothing + (Just <=< scriptHashFromBytes <=< hexToRawBytes) + aes + maybe (Left $ TypeMismatch "Expected hex-encoded script hash") Right mayHash instance EncodeAeson ScriptHash where - encodeAeson' sh = encodeAeson' - { getScriptHash: scriptHashToBytes sh - } + encodeAeson' sh = encodeAeson' $ scriptHashToBytes sh foreign import _scriptHashFromBytesImpl :: MaybeFfiHelper diff --git a/src/Types/Scripts.purs b/src/Types/Scripts.purs index 64d2df91a..59275d791 100644 --- a/src/Types/Scripts.purs +++ b/src/Types/Scripts.purs @@ -20,10 +20,6 @@ import Aeson , encodeAeson' , getField ) -import Aeson.Decode as D -import Aeson.Encode as E -import Contract.Prelude (unwrap, wrap) -import Record (get) import Data.Either (Either(Left)) import Data.Generic.Rep (class Generic) import Data.Newtype (class Newtype) @@ -33,7 +29,6 @@ import Metadata.FromMetadata (class FromMetadata) import Metadata.ToMetadata (class ToMetadata) import Serialization.Hash (ScriptHash) import ToData (class ToData) -import Type.Prelude (Proxy(..)) import Types.ByteArray (ByteArray) -------------------------------------------------------------------------------- @@ -152,19 +147,8 @@ derive newtype instance FromData ValidatorHash derive newtype instance ToData ValidatorHash derive newtype instance FromMetadata ValidatorHash derive newtype instance ToMetadata ValidatorHash - --- NOTE: mlabs-haskell/purescript-bridge generated and applied here -instance EncodeAeson ValidatorHash where - encodeAeson' x = pure $ E.encode - (E.record { getValidatorHash: E.value :: _ (ScriptHash) }) - { getValidatorHash: unwrap x } - -instance DecodeAeson ValidatorHash where - decodeAeson x = wrap <<< get (Proxy :: Proxy "getValidatorHash") <$> D.decode - ( D.record "getValidatorHash " - { getValidatorHash: D.value :: _ (ScriptHash) } - ) - x +derive newtype instance EncodeAeson ValidatorHash +derive newtype instance DecodeAeson ValidatorHash instance Show ValidatorHash where show = genericShow From 73d025905d8d93771e385d73e2d3d99c2acee00c Mon Sep 17 00:00:00 2001 From: MangoIV Date: Sun, 29 May 2022 23:16:22 +0200 Subject: [PATCH 67/85] fix reindexing issue --- src/ReindexRedeemers.purs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/ReindexRedeemers.purs b/src/ReindexRedeemers.purs index 4e117319b..755993ec2 100644 --- a/src/ReindexRedeemers.purs +++ b/src/ReindexRedeemers.purs @@ -13,7 +13,7 @@ import Data.Array (elemIndex) import Data.BigInt (fromInt) import Data.Either (Either(Right), note) import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe(Just)) +import Data.Maybe (Maybe) import Data.Show.Generic (genericShow) import Data.Traversable (traverse) import Data.Tuple.Nested (type (/\), (/\)) @@ -25,7 +25,9 @@ import Types.Transaction (TransactionInput) -- | The only error should be impossible but we keep this here in case the user -- | decides to call this function at some point where inputs have been -- | accidentally deleted and/or not after balancing -data ReindexErrors = CannotGetTxOutRefIndexForRedeemer T.Redeemer +data ReindexErrors + = CannotGetTxOutRefIndexForRedeemer T.Redeemer + | NoTxOutRefForRedeemer T.Redeemer derive instance Generic ReindexErrors _ @@ -47,8 +49,9 @@ reindexSpentScriptRedeemers inputs redeemersTxIns = runExceptT do -> T.Redeemer /\ Maybe TransactionInput -> Either ReindexErrors T.Redeemer reindex ipts = case _ of - red@(T.Redeemer red'@{ tag: Spend }) /\ Just txOutRef -> do + red@(T.Redeemer red'@{ tag: Spend }) /\ mtxOutRef -> do + txOutRef <- note (NoTxOutRefForRedeemer red) mtxOutRef index <- note (CannotGetTxOutRefIndexForRedeemer red) (fromInt <$> elemIndex txOutRef ipts) Right $ T.Redeemer red' { index = index } - mintRed /\ _ -> Right $ mintRed \ No newline at end of file + mintRed /\ _ -> Right $ mintRed From 5e18ad6d147586db9baa7147df5bdb2510053a86 Mon Sep 17 00:00:00 2001 From: MangoIV Date: Sun, 29 May 2022 23:17:17 +0200 Subject: [PATCH 68/85] Revert "fix reindexing issue" This reverts commit 73d025905d8d93771e385d73e2d3d99c2acee00c. --- src/ReindexRedeemers.purs | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/ReindexRedeemers.purs b/src/ReindexRedeemers.purs index 755993ec2..4e117319b 100644 --- a/src/ReindexRedeemers.purs +++ b/src/ReindexRedeemers.purs @@ -13,7 +13,7 @@ import Data.Array (elemIndex) import Data.BigInt (fromInt) import Data.Either (Either(Right), note) import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe) +import Data.Maybe (Maybe(Just)) import Data.Show.Generic (genericShow) import Data.Traversable (traverse) import Data.Tuple.Nested (type (/\), (/\)) @@ -25,9 +25,7 @@ import Types.Transaction (TransactionInput) -- | The only error should be impossible but we keep this here in case the user -- | decides to call this function at some point where inputs have been -- | accidentally deleted and/or not after balancing -data ReindexErrors - = CannotGetTxOutRefIndexForRedeemer T.Redeemer - | NoTxOutRefForRedeemer T.Redeemer +data ReindexErrors = CannotGetTxOutRefIndexForRedeemer T.Redeemer derive instance Generic ReindexErrors _ @@ -49,9 +47,8 @@ reindexSpentScriptRedeemers inputs redeemersTxIns = runExceptT do -> T.Redeemer /\ Maybe TransactionInput -> Either ReindexErrors T.Redeemer reindex ipts = case _ of - red@(T.Redeemer red'@{ tag: Spend }) /\ mtxOutRef -> do - txOutRef <- note (NoTxOutRefForRedeemer red) mtxOutRef + red@(T.Redeemer red'@{ tag: Spend }) /\ Just txOutRef -> do index <- note (CannotGetTxOutRefIndexForRedeemer red) (fromInt <$> elemIndex txOutRef ipts) Right $ T.Redeemer red' { index = index } - mintRed /\ _ -> Right $ mintRed + mintRed /\ _ -> Right $ mintRed \ No newline at end of file From 0bfde32b2a40cfcf003a5397eb54dd9e3a3f1d1f Mon Sep 17 00:00:00 2001 From: MangoIV Date: Mon, 30 May 2022 23:15:19 +0200 Subject: [PATCH 69/85] tried to implemented MultipleRedeemers test --- src/ReindexRedeemers.purs | 3 ++- test/Integration.purs | 4 +++- test/MultipleRedeemers.purs | 47 +++++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 test/MultipleRedeemers.purs diff --git a/src/ReindexRedeemers.purs b/src/ReindexRedeemers.purs index 865d29db2..8e061d2d1 100644 --- a/src/ReindexRedeemers.purs +++ b/src/ReindexRedeemers.purs @@ -14,7 +14,7 @@ import Data.Array (elemIndex) import Data.BigInt (fromInt) import Data.Either (Either(Right), note) import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe(Just)) +import Data.Maybe (Maybe(Just, Nothing)) import Data.Show.Generic (genericShow) import Data.Traversable (traverse) import Data.Tuple (fst) @@ -65,4 +65,5 @@ reindexSpentScriptRedeemers' inputs redeemersTxIns = runExceptT do index <- note (CannotGetTxOutRefIndexForRedeemer red) (fromInt <$> elemIndex txOutRef ipts) Right $ T.Redeemer red' { index = index } /\ Just txOutRef + red@(T.Redeemer { tag: Spend }) /\ Nothing -> Right $ red /\ Nothing mintRed /\ txOutRef -> Right $ mintRed /\ txOutRef diff --git a/test/Integration.purs b/test/Integration.purs index a2eb761e9..633440749 100644 --- a/test/Integration.purs +++ b/test/Integration.purs @@ -5,6 +5,7 @@ import Prelude import Effect (Effect) import Effect.Aff (launchAff_) import Test.AffInterface as AffInterface +import Test.MultipleRedeemers as MultipleRedeemers import Test.FinalizeTx as FinalizeTx import Test.Utils as Utils import TestM (TestPlanM) @@ -17,5 +18,6 @@ main = launchAff_ do -- Requires external services listed in README.md testPlan :: TestPlanM Unit testPlan = do - FinalizeTx.suite AffInterface.suite + FinalizeTx.suite + MultipleRedeemers.suite diff --git a/test/MultipleRedeemers.purs b/test/MultipleRedeemers.purs new file mode 100644 index 000000000..9fc625bc0 --- /dev/null +++ b/test/MultipleRedeemers.purs @@ -0,0 +1,47 @@ +module Test.MultipleRedeemers (suite) where + +import Prelude + +import Contract.Aeson (decodeAeson, fromString) +import Contract.Monad (ContractConfig(ContractConfig), liftedE, liftedM, liftContractM, runContract, traceContractConfig) +import Contract.PlutusData (PlutusData, unitDatum) +import Contract.ScriptLookups as Lookups +import Contract.Scripts (Validator(Validator), validatorHash) +import Contract.Transaction (BalancedSignedTransaction(BalancedSignedTransaction), balanceAndSignTx, submit) +import Contract.TxConstraints as Constraints +import Contract.Value (lovelaceValueOf) +import Contract.Wallet (mkNamiWalletAff) +import Data.BigInt (fromInt) +import Data.Either (hush) +import Contract.Prelude (mconcat) +import Data.Maybe (Maybe) +import Effect.Aff (Aff) +import Mote (test) +import TestM (TestPlanM) + +suite :: TestPlanM Unit +suite = do + test "contract with three redeemers" threeRedeemerContract + +threeRedeemerContract :: Aff Unit +threeRedeemerContract = do + ContractConfig defaults <- traceContractConfig + -- how do we get a wallet? + wallet <- mkNamiWalletAff + runContract (ContractConfig $ defaults { wallet = pure wallet}) $ do + validator <- liftContractM "Invalid script JSON" $ alwaysSucceedsScript + vhash <- liftContractM "could not hash validator" $ validatorHash validator + let + constraints :: Constraints.TxConstraints Unit Unit + constraints = mconcat $ Constraints.mustPayToScript vhash unitDatum <<< lovelaceValueOf <<< fromInt <$> [2_000_000, 3_000_000, 4_000_000] + lookups :: Lookups.ScriptLookups PlutusData + lookups = Lookups.validator validator + ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + BalancedSignedTransaction bsTx <- + liftedM "Failed to balance/sign tx" $ balanceAndSignTx ubTx + submit bsTx.signedTxCbor *> pure unit + pure unit + +alwaysSucceedsScript :: Maybe Validator +alwaysSucceedsScript = map Validator $ hush $ decodeAeson $ fromString + "4d01000033222220051200120011" From d75bc321b7edf7c81304f6f16b27249b41c95498 Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Thu, 2 Jun 2022 05:21:49 -0400 Subject: [PATCH 70/85] Updated Credential Aeson instances --- src/Plutus/Types/Credential.purs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Plutus/Types/Credential.purs b/src/Plutus/Types/Credential.purs index e80c9a7d0..1b0fc0ce2 100644 --- a/src/Plutus/Types/Credential.purs +++ b/src/Plutus/Types/Credential.purs @@ -5,7 +5,7 @@ module Plutus.Types.Credential import Prelude -import Aeson (class DecodeAeson, class EncodeAeson) +import Aeson (class DecodeAeson, class EncodeAeson, encodeAeson') import Aeson.Decode ((), ()) import Aeson.Encode ((>/\<)) import Control.Lazy (defer) @@ -64,7 +64,7 @@ instance -- NOTE: mlabs-haskell/purescript-bridge generated and applied here instance EncodeAeson Credential where - encodeAeson' x = pure $ + encodeAeson' x = encodeAeson' $ ( defer \_ -> case _ of PubKeyCredential a -> E.encodeTagged "PubKeyCredential" a E.value ScriptCredential a -> E.encodeTagged "ScriptCredential" a E.value @@ -128,7 +128,7 @@ instance FromData StakingCredential where -- NOTE: mlabs-haskell/purescript-bridge generated and applied here instance EncodeAeson StakingCredential where - encodeAeson' x = pure $ + encodeAeson' x = encodeAeson' $ ( defer \_ -> case _ of StakingHash a -> E.encodeTagged "StakingHash" a E.value StakingPtr ptr -> E.encodeTagged "StakingPtr" From 5da9f36cd97e97dfeee0876afc35e73c65f550b8 Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Thu, 2 Jun 2022 05:23:06 -0400 Subject: [PATCH 71/85] Updated Datum EncodeAeson instance --- src/Types/Datum.purs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Types/Datum.purs b/src/Types/Datum.purs index 2a4880b18..fa05f992c 100644 --- a/src/Types/Datum.purs +++ b/src/Types/Datum.purs @@ -13,6 +13,7 @@ import Aeson , class EncodeAeson , decodeAeson , encodeAeson + , encodeAeson' ) import Aeson.Decode ((), (), (), decode, null) import Aeson.Encode ((>$<), (>/\<), encode, null) @@ -40,8 +41,9 @@ derive newtype instance Eq Datum derive newtype instance FromData Datum derive newtype instance Ord Datum derive newtype instance ToData Datum + instance EncodeAeson Datum where - encodeAeson' x = pure $ (defer \_ -> E.encode $ unwrap >$< E.value) x + encodeAeson' x = encodeAeson' $ (defer \_ -> E.encode $ unwrap >$< E.value) x instance DecodeAeson Datum where decodeAeson = defer \_ -> D.decode $ (Datum <$> D.value) From b7b7ecebf931e09db5a0bc69ac6566ab32187795 Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Thu, 2 Jun 2022 05:23:49 -0400 Subject: [PATCH 72/85] Updated Interval EncodeAeson instance --- src/Types/Interval.purs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Types/Interval.purs b/src/Types/Interval.purs index cc04cfc38..dd04ec159 100644 --- a/src/Types/Interval.purs +++ b/src/Types/Interval.purs @@ -871,7 +871,7 @@ derive instance Functor HaskInterval derive instance Newtype (HaskInterval a) _ instance (EncodeAeson a) => EncodeAeson (HaskInterval a) where - encodeAeson' x = pure $ + encodeAeson' x = encodeAeson' $ ( defer \_ -> E.encode $ unwrap >$< ( E.record { ivFrom: E.value :: _ (LowerBound a) @@ -889,7 +889,7 @@ instance (DecodeAeson a) => DecodeAeson (HaskInterval a) where ) instance (EncodeAeson a) => EncodeAeson (LowerBound a) where - encodeAeson' x = pure $ + encodeAeson' x = encodeAeson' $ ( defer \_ -> E.encode $ (case _ of LowerBound a b -> (a /\ b)) >$< (E.tuple (E.value >/\< E.value)) ) x @@ -899,7 +899,7 @@ instance (DecodeAeson a) => DecodeAeson (LowerBound a) where (D.tuple $ LowerBound D.value D.value) instance (EncodeAeson a) => EncodeAeson (UpperBound a) where - encodeAeson' x = pure $ + encodeAeson' x = encodeAeson' $ ( defer \_ -> E.encode $ (case _ of UpperBound a b -> (a /\ b)) >$< (E.tuple (E.value >/\< E.value)) ) x @@ -909,7 +909,7 @@ instance (DecodeAeson a) => DecodeAeson (UpperBound a) where (D.tuple $ UpperBound D.value D.value) instance (EncodeAeson a) => EncodeAeson (Extended a) where - encodeAeson' x = pure $ + encodeAeson' x = encodeAeson' $ ( defer \_ -> case _ of NegInf -> encodeAeson { tag: "NegInf" } Finite a -> E.encodeTagged "Finite" a E.value From 9c4cc8b98badcb6da5a7cc5bc3b178c75e55c16b Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Thu, 2 Jun 2022 05:24:09 -0400 Subject: [PATCH 73/85] Updated Value EncodeAeson instance --- src/Plutus/Types/Value.purs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Plutus/Types/Value.purs b/src/Plutus/Types/Value.purs index 0a9962a79..5e03897f2 100644 --- a/src/Plutus/Types/Value.purs +++ b/src/Plutus/Types/Value.purs @@ -32,6 +32,7 @@ import Aeson , caseAesonObject , decodeAeson , encodeAeson + , encodeAeson' , getField , JsonDecodeError(TypeMismatch) ) @@ -73,7 +74,7 @@ instance DecodeAeson Value where (flip getField "getValue" >=> decodeAeson >>> map Value) instance EncodeAeson Value where - encodeAeson' (Value mph) = pure $ encodeAeson + encodeAeson' (Value mph) = encodeAeson' $ encodeAeson { "getValue": encodeAeson mph } -- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#eq From a45759c52e5a486a96877baef860a74400becf19 Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Thu, 2 Jun 2022 05:24:27 -0400 Subject: [PATCH 74/85] Updated PubKeyHash EncodeAeson instance --- src/Types/PubKeyHash.purs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Types/PubKeyHash.purs b/src/Types/PubKeyHash.purs index 4e1ebbef7..262e478b8 100644 --- a/src/Types/PubKeyHash.purs +++ b/src/Types/PubKeyHash.purs @@ -19,6 +19,7 @@ import Aeson , JsonDecodeError(TypeMismatch) , caseAesonObject , decodeAeson + , encodeAeson' , getField ) import Aeson.Decode as D @@ -64,7 +65,7 @@ instance Show PubKeyHash where -- NOTE: mlabs-haskell/purescript-bridge generated and applied here instance EncodeAeson PubKeyHash where - encodeAeson' x = pure $ E.encode + encodeAeson' x = encodeAeson' $ E.encode (E.record { getPubKeyHash: E.value :: _ (Ed25519KeyHash) }) { getPubKeyHash: unwrap x } From d99e71f38c82cad57c8a5abaa2cd7d79984a0a1a Mon Sep 17 00:00:00 2001 From: Sean Hunter Date: Thu, 2 Jun 2022 05:24:53 -0400 Subject: [PATCH 75/85] Updated TokenName EncodeAeson instance --- src/Types/TokenName.purs | 57 +++------------------------------------- 1 file changed, 4 insertions(+), 53 deletions(-) diff --git a/src/Types/TokenName.purs b/src/Types/TokenName.purs index cd5bc4322..7a5254594 100644 --- a/src/Types/TokenName.purs +++ b/src/Types/TokenName.purs @@ -105,51 +105,11 @@ instance DecodeAeson TokenName where tkFromStr str = (TokenName <<< wrap) <$> (byteArrayFromIntArray <<< map toCharCode <<< toCharArray $ str) -{- let - t = map toCharCode $ toCharArray tkstr - - cleanedTkstr :: Either String ByteArray - cleanedTkstr = - note "could not convert from hex to bytestring" <<< pure <<< hexToByteArrayUnsafe - <<< fromCharArray - =<< note "could not convetr from charcode" - ( traverse fromCharCode - case t of - [ 0, 48, 120 ] -> drop 3 t - [ 0, 0, 0 ] -> drop 2 t - _ -> t - ) - -- FIXME: what if the tokenname is actually \0\0\0? haskell will break this assuming it - -- comes from purescript side - -- also we will break assuming it comes from haskell - -- this issue has to be fixed on the haskell side - -- ~= \NUL\NUL\NUL - -- see https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#line-170 - lmap TypeMismatch - (note "failed to make tokenname" <<< mkTokenName =<< cleanedTkstr) -) -} - --- note (TypeMismatch "Invalid TokenName") <<< mkTokenName --- <=< note (TypeMismatch "Invalid ByteArray") <<< (hexToByteArray <<< ) --- <=< flip getField "unTokenName" --- ) - +-- FIXME: what if the tokenname is actually \0\0\0? haskell will break this assuming it +-- comes from purescript side +-- also we will break assuming it comes from haskell +-- this issue has to be fixed on the haskell side instance EncodeAeson TokenName where - {- -instance FromJSON TokenName where - parseJSON = - JSON.withObject "TokenName" $ \object -> do - raw <- object .: "unTokenName" - fromJSONText raw - where - fromJSONText t = case Text.take 3 t of - -- in case we get something prefixed with \0 *and* it also starts with "0x" (it's hexencoded) THEN - -- => encodes in utf8 and then converts from base16 to whatever - -- then - "\NUL0x" -> either Haskell.fail (Haskell.pure . tokenName) . JSON.tryDecode . Text.drop 3 $ t - "\NUL\NUL\NUL" -> Haskell.pure . fromText . Text.drop 2 $ t - _ -> Haskell.pure . fromText $ t - -} encodeAeson' tk = let tkstr = fromTokenName @@ -162,15 +122,6 @@ instance FromJSON TokenName where in encodeAeson' { "unTokenName": tkstr } -{- -let - finalBs :: ByteArray - finalBs = byteArrayFromIntArrayUnsafe [ 0, 48, 120 ] <> - (cborBytesToByteArray ba) --- FIXME: what if the tokenname starts with \0 => put another two \0 in front of that -in - encodeAeson' { "unTokenName": finalBs } --} instance Show TokenName where show (TokenName tn) = "(TokenName" <> show tn <> ")" From 86a0afec43c71906e63f23116bbdfcd8ffa933f9 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Fri, 3 Jun 2022 15:27:00 +0200 Subject: [PATCH 76/85] Cleanup after merge --- src/Plutus/Types/Value.purs | 7 ++----- src/Serialization/Hash.purs | 2 -- src/Types/Datum.purs | 15 +++------------ src/Types/TokenName.purs | 24 +++++------------------- 4 files changed, 10 insertions(+), 38 deletions(-) diff --git a/src/Plutus/Types/Value.purs b/src/Plutus/Types/Value.purs index a3ec6b225..a361cb7f2 100644 --- a/src/Plutus/Types/Value.purs +++ b/src/Plutus/Types/Value.purs @@ -48,9 +48,9 @@ import Data.Newtype (class Newtype) import Data.These (These(Both, That, This), these) import Data.Tuple (fst) import Data.Tuple.Nested (type (/\), (/\)) -import FromData (class FromData, fromData) +import FromData (class FromData) import Helpers (showWithParens) -import ToData (class ToData, toData) +import ToData (class ToData) import Types.ByteArray (ByteArray) import Types.TokenName (TokenName, adaToken, mkTokenName) import Plutus.Types.AssocMap (Map(Map)) as Plutus @@ -62,9 +62,6 @@ import Plutus.Types.AssocMap , mapThese ) as Plutus.Map import Plutus.Types.CurrencySymbol (CurrencySymbol, mkCurrencySymbol, adaSymbol) -import ToData (class ToData) -import Types.ByteArray (ByteArray) -import Types.TokenName (TokenName, adaToken, mkTokenName) newtype Value = Value (Plutus.Map CurrencySymbol (Plutus.Map TokenName BigInt)) diff --git a/src/Serialization/Hash.purs b/src/Serialization/Hash.purs index 1d72eefc7..9e17525a2 100644 --- a/src/Serialization/Hash.purs +++ b/src/Serialization/Hash.purs @@ -19,10 +19,8 @@ import Aeson ( class DecodeAeson , class EncodeAeson , JsonDecodeError(TypeMismatch) - , caseAesonObject , caseAesonString , encodeAeson' - , getField ) import Contract.Prelude (Either(..)) import Data.Either (Either(Left), note) diff --git a/src/Types/Datum.purs b/src/Types/Datum.purs index fa05f992c..917f32052 100644 --- a/src/Types/Datum.purs +++ b/src/Types/Datum.purs @@ -6,20 +6,11 @@ module Types.Datum import Prelude -import Aeson - ( Aeson - , aesonNull - , class DecodeAeson - , class EncodeAeson - , decodeAeson - , encodeAeson - , encodeAeson' - ) -import Aeson.Decode ((), (), (), decode, null) -import Aeson.Encode ((>$<), (>/\<), encode, null) +import Aeson (class DecodeAeson, class EncodeAeson, encodeAeson') +import Aeson.Encode ((>$<)) import Control.Lazy (defer) import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype, unwrap, wrap) +import Data.Newtype (class Newtype, unwrap) import Data.Show.Generic (genericShow) import FromData (class FromData) import ToData (class ToData, toData) diff --git a/src/Types/TokenName.purs b/src/Types/TokenName.purs index 58f6af8ee..ab855365b 100644 --- a/src/Types/TokenName.purs +++ b/src/Types/TokenName.purs @@ -18,21 +18,18 @@ import Aeson , encodeAeson' , getField ) -import Control.Monad.Error.Class (throwError) ---import Data.Array (drop) import Data.BigInt (BigInt) import Data.Bitraversable (ltraverse) -import Data.Char (toCharCode, fromCharCode) +import Data.Char (toCharCode) import Data.Either (Either(Left, Right), note, either) import Data.Map (Map) import Data.Map (fromFoldable) as Map import Data.Maybe (Maybe(Nothing, Just)) import Data.Newtype (wrap, unwrap) -import Data.String.CodePoints (length, take, drop) -import Data.String.CodeUnits (fromCharArray, toCharArray) +import Data.String.CodePoints (drop, take) +import Data.String.CodeUnits (toCharArray) import Data.Traversable (class Traversable, traverse) import Data.TextDecoding (decodeUtf8) -import Data.Bifunctor (lmap) import Data.Tuple.Nested (type (/\)) import FromData (class FromData) import Metadata.FromMetadata (class FromMetadata) @@ -41,22 +38,11 @@ import Serialization.Types (AssetName) as CSL import ToData (class ToData) import Types.ByteArray ( ByteArray - , byteArrayFromAscii - , byteArrayToHex - , byteArrayFromInt16ArrayUnsafe , byteArrayFromIntArray - , byteArrayFromIntArrayUnsafe - , byteArrayToUTF16le + , byteArrayToHex , byteLength - , hexToByteArray - , hexToByteArrayUnsafe - ) -import Types.CborBytes - ( CborBytes - , cborBytesFromByteArray - , cborBytesToByteArray - , cborBytesToHex ) +import Types.CborBytes (CborBytes, cborBytesToByteArray) newtype TokenName = TokenName CborBytes From 39b53ddb69be2b6ef9f6d6a731c9beb1d4cd81f8 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Fri, 3 Jun 2022 17:03:13 +0200 Subject: [PATCH 77/85] ScriptLookups cleanup --- src/Types/ScriptLookups.purs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Types/ScriptLookups.purs b/src/Types/ScriptLookups.purs index b6d357d1b..735f595f5 100644 --- a/src/Types/ScriptLookups.purs +++ b/src/Types/ScriptLookups.purs @@ -58,7 +58,7 @@ import Control.Monad.Reader.Trans (ReaderT) import Control.Monad.State.Trans (StateT, get, gets, put, runStateT) import Control.Monad.Trans.Class (lift) import Data.Array ((:), singleton, union) as Array -import Data.Array (elemIndex, filter, insert, mapWithIndex, toUnfoldable, zip) +import Data.Array (filter, insert, mapWithIndex, toUnfoldable, zip) import Data.Bifunctor (lmap) import Data.BigInt (BigInt, fromInt) import Data.Either (Either(Left, Right), either, note) From 152b128f2333a2c74470caeec3e86cc894073211 Mon Sep 17 00:00:00 2001 From: Drazen Popovic Date: Mon, 6 Jun 2022 18:06:20 +0200 Subject: [PATCH 78/85] Added Test.OgmiosDatumCache testing hashing and Aeson roundtrip for Plutus Data --- .../plutus-data-samples.json | 1 + spago.dhall | 1 + src/Types/PlutusData.purs | 1 + test/OgmiosDatumCache.purs | 60 +++++++++++++++++++ test/Unit.purs | 2 + test/Utils.purs | 30 +++++++--- 6 files changed, 86 insertions(+), 9 deletions(-) create mode 100644 fixtures/test/ogmios-datum-cache/plutus-data-samples.json create mode 100644 test/OgmiosDatumCache.purs diff --git a/fixtures/test/ogmios-datum-cache/plutus-data-samples.json b/fixtures/test/ogmios-datum-cache/plutus-data-samples.json new file mode 100644 index 000000000..6914f7475 --- /dev/null +++ b/fixtures/test/ogmios-datum-cache/plutus-data-samples.json @@ -0,0 +1 @@ +[{"hash": "16131b6d6600f1363844bca1a4e796f1d27135b26c5a96ba9acc1ceb8b66a6b3", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["915b7c07c9d6fabe13b0aeb6483073f90381ef39c3df82b04f703685"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["972d826647cb508265d5032184196da63eec05b0f8c1efe033bed932"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["915b7c07c9d6fabe13b0aeb6483073f90381ef39c3df82b04f703685"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["972d826647cb508265d5032184196da63eec05b0f8c1efe033bed932"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 1, "fields": [{"constr": 0, "fields": ["", ""]}, 11000000]}, 2000000, 2000000]}}, {"hash": "16173be26543e3960dd6e8fdb72d8c8d1bde47237a126d09c13219086ea8533b", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2597de00c38b97595ad2d41c60f5fb546587c68c186c4f790742209b"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["77b6e55c2200b274da57ea43adcda1351c835c90a0b8eb403a45dff2"]}]}]}]}, "2597de00c38b97595ad2d41c60f5fb546587c68c186c4f790742209b", 1648997330374, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534454"]}]}]}, {"constr": 1, "fields": [7]}]}}, {"hash": "16209a33c69b89206c97f59740c21fb9ac87a962877140323380bad9a5ca33a1", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2213624a4dbf68b8b1708e3a1618dba9a31beb92175bf60a868d4883"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a853e597a962b944aba40f7cc964c2b7c901980677044dc1a5285e51"]}]}]}]}, "2213624a4dbf68b8b1708e3a1618dba9a31beb92175bf60a868d4883", 1648576742639, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 292577086]}]}}, {"hash": "16218bc88c5e4a2675eb109a11684d43ead754f214cc5b2e329b6fec90b7527f", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4d454c4474"]}, {"constr": 0, "fields": ["845c337c265b63558b775bbc346585e54914719698429131b3bb838d", "4d454c44745f414441745f6e6674"]}, 995, 1282274036066522, 1000000000000000, "be279375ca1aaacf56eeb9e9822a85ce522916256dd3dfa124d18f40", {"constr": 0, "fields": ["998cd340b35147d1022629e2b4993bb169f4610e0b7aabb0457edfad"]}, 9000000, 1559729]}}, {"hash": "16290affd957f33ce77c9e8ced0c4cd99f5654bc7986f624af66cb91f9bd6cb7", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["06b835f31eb4f1ca4f7573abb55e60c122bc3c3dfb48822240c503ac", "b140a278dd91d76058c48b978fa06b2efc006dcf3ad2ea38c5bb5c2fe95a6bf6"]}]}, 1648736621000, 25000, 0]}]}}, {"hash": "16334eacfc6987b158b937af6e5f57437ecb0e9b8aaead67cb8c7b2531b56c94", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["728b2ba9ea837e0f398a696d581093c04a7df5ec687bd781a38a427d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["9290890bf353ff9cd27a946e68a2278da005bfd5e65dd4bfd1fe7517"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["728b2ba9ea837e0f398a696d581093c04a7df5ec687bd781a38a427d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["9290890bf353ff9cd27a946e68a2278da005bfd5e65dd4bfd1fe7517"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 2, "fields": [155]}, 2000000, 2000000]}}, {"hash": "16348da308aed7d577aee94837180915c9d653b27bf96787a8f7e42e2e759c06", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["998350a62fc1af241359c24a9e8bf954baa360a351e41dbf09856182deec618c"]}, 0]}, 1651863216000]}, 1651875630000]}}, {"hash": "16378a32333187f813614d64075c272c0322f8f148d627958cd33eb3306adaf8", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}]}, 1649020314000, 42856667, 36600515]}]}}, {"hash": "16403e64178d32adbd9af880dad7ddde3e79a177a50b751b26458ccf1a7deb83", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["40ed33fd89fdc8fc7b63ec3864aad79ffb1b243540aff9423ea3c037"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["78d9f2cde96e1b3992d2b31ac0104aed80f60edc4973cb4cdddddc2f"]}]}]}]}, "40ed33fd89fdc8fc7b63ec3864aad79ffb1b243540aff9423ea3c037", 1648845482801, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 9649986]}]}}, {"hash": "16426c92a7592ac794f220a337710d93ea8dde32c75a8a98be6d5a3946b2b600", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1648975651000, 2001272, 54156]}]}}, {"hash": "16451a0cc65aee72b2165a47de8dbecf47aca298d12e0e10d7f3753618522c26", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["973654f66c00bc6615404582a87149a21393ef5c64fad3b26eaff1d8"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e2e02a1f4639d4e5ff5576fc9f2af238e36a3d04b5a39488ece5e97c"]}]}]}]}, "973654f66c00bc6615404582a87149a21393ef5c64fad3b26eaff1d8", 1648513811343, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 11361]}]}}, {"hash": "16467f50a72ef4f82c5867201c2f80346c1cfc57d83170d42cbe05ae6a0b40f6", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7b8b5f74a57b80c7b67963bfc19ed6624e789438fc7979dd907cf217"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f955e9e32347052d961b229e3206fc86f49e502d3662246e72941e98"]}]}]}]}, "7b8b5f74a57b80c7b67963bfc19ed6624e789438fc7979dd907cf217", 1648983715875, {"constr": 0, "fields": [{"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 21694]}]}}, {"hash": "16497f9eb980b9a9cf0bdce15b4cf9f9097054360aa625a632348d1a91c6e072", "plutusData": {"constr": 0, "fields": [990546919135, 191499, 767535, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["79096214d9ed640e0d9c0216c22dc41858fc090db23e263dd67b08f65c8c771d"]}, 0]}, 1651908202000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "16503cc149a3c0f970c88e1f29be2632d77f2af3291d9056bc26ba97f2b48e4e", "plutusData": {"constr": 0, "fields": [1651388267599, "46629efc9c5ddf1a78360f4da4dc387287a8238a5727ce7d02f6b658", {"constr": 0, "fields": [{"constr": 0, "fields": ["13810278220060f19e76d12c8dccd3ecabb4e703ec5e60795c0cb87500d67f48"]}, 0]}, {"constr": 0, "fields": [9174699297465502091443372782870349183215353692835292309713274132089809636076]}]}}, {"hash": "16558e06b62db1dc62d6586e32b7d953c060f5679e9df14f3b385eb44cd48cee", "plutusData": {"constr": 0, "fields": ["4ea82ef9b4b95f5662ca2eab76e7a679a257ad53b93b11577f50cf74", "700d7ad953c2234e5c292b828f5e03b11cdafccd5c2447054bf89b8b", "6141414441", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 10000000, "", "", 2000000, "", 86400000]}}, {"hash": "16574b0f9130f157ccb452cebc00faccfe411b932a2be4fe6e6069cb893d596e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, 995, 7670125982969789, 100000000000000000, "184ff44840c8c0ad71d39e356511660f84e321915bbf76d90bd1969f", {"constr": 0, "fields": ["6d620e702133d0d4f2273246a36f895b0015c4d385c7cab1aa7c02fd"]}, 15000000, 26075191]}}, {"hash": "16591ce9264f0f1e4cc1eb1de655a83968e2719aa795edecdd9ea4b2830f95d7", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f3e2f21f0d675e2f50ee5ed62ae53a4cdb4bde148a028bdfea1bf411"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2520e995002d367ee88e3b0808819d330a0c3e1f0400ddbd3e8a8b54"]}]}]}]}, "f3e2f21f0d675e2f50ee5ed62ae53a4cdb4bde148a028bdfea1bf411", 1649176847864, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 39092664]}]}}, {"hash": "16612b5e0ae990fc3eec4fbbc4c0184208f53d1270b8a4d13288e975e7d25b15", "plutusData": {"constr": 0, "fields": [1962727667230, 261551, 1722225, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["45161467a5bb588ae12a6731e8243e9266743222784ff0f4444b0b33d5be84fb"]}, 0]}, 1652824536000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "16618aac83ed5266615fb91af90eb8fe953c1b976b201c62230b462fa19789d6", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["eee6cf2cf900435f5e214f604f7cc0146c7176f9164720ccddb18b18"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a27b31186a86afac13c342b609e145d3741ea1f54a5bb401387103bb"]}]}]}]}, "eee6cf2cf900435f5e214f604f7cc0146c7176f9164720ccddb18b18", 1648544611712, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 154250]}]}}, {"hash": "16654ea12874782265e078e1a8e5746678b4372cb702ca9f5a42b24b7b5f727d", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["1dd45f4d1bd499c526f5666a34a1f6b0460eb2daa51fdbe19c2bb3a0"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7c2a903d113c56e518b223050cd10032a8de88e28393f5059c1ca5cb"]}]}]}]}, "1dd45f4d1bd499c526f5666a34a1f6b0460eb2daa51fdbe19c2bb3a0", 1649789383478, {"constr": 0, "fields": [{"constr": 0, "fields": ["126b8676446c84a5cd6e3259223b16a2314c5676b88ae1c1f8579a8f", "744d454c44"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 2, "fields": [1, 27]}]}}, {"hash": "16672ad3174c1cce0ebc287c89f09c905877d2a6f9f778910c0024d33d9ca841", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f0f30df4b52626221f8218dc8009c7a6e2640de21246d2955fde08dd"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["3302bb68c9704d2d48a080ae83143e87fa4fcda6c9fd5ad44368b001"]}]}]}]}, "f0f30df4b52626221f8218dc8009c7a6e2640de21246d2955fde08dd", 1649074845204, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77585250"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 1718]}]}}, {"hash": "16708e837ab52d1d1577b670aea1bdd392136945fdae8f2a8537c0de90e86fee", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "01775459ea42d155094e18c52697cb27fc802b8d4c51dcfde67432ef05586344"]}]}, 1648553377000, 11628796, 548245]}]}}, {"hash": "16709f65e4a4cb0a200b178fca40060401bf7c7e346d6ca1200723613dc238a1", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}, 1648735611000, 79598972, 3080312]}]}}, {"hash": "16724e987db8af9cbd542ebcdbf4f72fe9298fb65fc2e75621cfbc82a1667b60", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, 995, 6946155176342562, 100000000000000000, "cbbedb96ac67b86b8353eb09cd0b66a8d47258757a8b4b49663a5b48", {"constr": 0, "fields": ["398e44638897913db3f26d3a23d7c8f968348a296d11f8519fb2537c"]}, 50000000, 28792907]}}, {"hash": "16768da9f88697c96cd43ae156e2f61c10e5886dba7d3f3acc0514fabfd324c6", "plutusData": {"constr": 0, "fields": ["ac839c2c9054c2f3874dc7f9b8e575e337738eacae70abd7fe43bad9", [], "", "", 2000000, {"constr": 0, "fields": []}]}}, {"hash": "16770ead021a5747b71f1fbebe7cfbd6629f66de5b39e8ae0a1769bbc9d677ab", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, 995, 46478606478420564, 100000000000000000, "3be06a2304a743c7096aac7255a36ab37a9c6bd8a32376114da3ac84", {"constr": 0, "fields": ["4d07cf84b33a3d611e28a80ad19b0be5180047641414bfb3df0a97f4"]}, 13000000, 4303055]}}, {"hash": "16782ace6638061e81b92bae56b0385364c12c4a14ef9b93e6817734699c384d", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0a631adf018693aaf9a7bee991809e9d4158630432d756eb6a3560d5"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["46d5dc3e32deedf8ae830045ed22dfa903b065a1e3b708e358bb47f7"]}]}]}]}, "0a631adf018693aaf9a7bee991809e9d4158630432d756eb6a3560d5", 1648999289913, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "775348494241"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 88715]}]}}, {"hash": "16836c1dc96af1b0682acfbcb125d26d521d056f1d347af8013421a90e835a4d", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["01c3a78e52649c307429442c8de886e55ce3a976f4a2890465b77279"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["08fe0c2a85b725d2212da98351776052b5bceb469c576e7c39301601"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["01c3a78e52649c307429442c8de886e55ce3a976f4a2890465b77279"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["08fe0c2a85b725d2212da98351776052b5bceb469c576e7c39301601"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, 8911120]}, 2000000, 2000000]}}, {"hash": "16860b4798bbda899d1f5f195830e85b0226e85ae6229c52c0bbe700f2356e0f", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, 995, 1239600449503915, 10000000000000000, "a8247444be879bf37e8af713d983487fc1fbd8e7520e7e6186482332", {"constr": 0, "fields": ["84d635af50982bfcb4cc99bf9674226cf32c1bfcb8251ccc316ff2e4"]}, 8000000, 16134231]}}, {"hash": "16877c2fc8813d6fde18272da0965b65c052bc11332a482afb6b9b00868d2dc4", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d0196c8438ac59f05d557af4d73eda025437578f3a40bc609ca76fd2"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["acab7e493ece4c1e6ae627ef9f5f7c9b1063e599e4aa91f87f0d58ae"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["d0196c8438ac59f05d557af4d73eda025437578f3a40bc609ca76fd2"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["acab7e493ece4c1e6ae627ef9f5f7c9b1063e599e4aa91f87f0d58ae"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6", "4d494e"]}, 138304]}, 2000000, 2000000]}}, {"hash": "16894c3a4e14a13c0eea667b0848afb6212437ab2a45eece77420109c69e99a0", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["d311d3488cc4fef19d05634adce8534977a3bc6fc18136ad65df1d4f", "6c712004"]}]}, 1648610884000, 2891782, 2446263]}]}}, {"hash": "16904af875fa578e1721d1332e299d116a40421a74257c192942172d45b9f472", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1648557290000, 9062737, 43856]}]}}, {"hash": "16987ee2a30becba40069ae419ef6c8a111a4efb3a58d35b7d7d6144a2e57c7c", "plutusData": {"constr": 0, "fields": [{"constr": 4, "fields": [{"constr": 0, "fields": [9569378, 5]}, 300]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["a21b61280ce61188c32886b72679202a77bba42e219d7ba28a0e109bd88cfe31"]}, 0]}]}}, {"hash": "17004a23c4cc519dd9d7a7c1b68ec860e32611b700d98825e336971fa660e761", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["283886499c76db08e0b751787b2ba5e9819d78f9e927975d93de3707"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["71a2b0a09ded453a596b818234dc2fe651c621731b7bdba401551cd9"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["283886499c76db08e0b751787b2ba5e9819d78f9e927975d93de3707"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["71a2b0a09ded453a596b818234dc2fe651c621731b7bdba401551cd9"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["126b8676446c84a5cd6e3259223b16a2314c5676b88ae1c1f8579a8f", "744d454c44"]}, 51301]}, 2000000, 2000000]}}, {"hash": "17044be0bfc18c50a77ace56f99abab6132b81beef21ebbb40e9c80c741fcc19", "plutusData": {"constr": 0, "fields": ["89fae48a4adb427edabfd479d3637a508c00b2108fc2b5b935329908", 100000000, 250, 1, "5c52d40a64ee039c8e4d12cf8f38b1931014f899caa0a83d1f7c0745", "7465737461646172657874", {"constr": 1, "fields": []}, {"constr": 1, "fields": []}]}}, {"hash": "17062a0dc2a6e1aaa5fa939a59a8b7763a794190df600cf889d12fa6f5361bd6", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["5d0721f9a6f50f35f280a0cfe97043e2f5c329e6e363f685276c92ea"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f6c8a26c327dfb4c80a356c0f14a0d6e4ba6a5a345c7cf89a5aab750"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["5d0721f9a6f50f35f280a0cfe97043e2f5c329e6e363f685276c92ea"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f6c8a26c327dfb4c80a356c0f14a0d6e4ba6a5a345c7cf89a5aab750"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["126b8676446c84a5cd6e3259223b16a2314c5676b88ae1c1f8579a8f", "744d494e"]}, 12169451060]}, 2000000, 2000000]}}, {"hash": "17115bfbd63fd9c90c3041e31fd28d0c1a5cce37ca337a0f016d25f8469fe0d1", "plutusData": {"constr": 0, "fields": ["da13ed22b9294f1d86bbd530e99b1456884c7364bf16c90edc1ae41e", 500000000, "82325cbfc20b85bd1ca12e5d12b44b83f68662d8395167b45f1ff7fa", "746f6e6573206f6620736b7920", "da13ed22b9294f1d86bbd530e99b1456884c7364bf16c90edc1ae41e", 45]}}, {"hash": "17131ad960f05b05e629602df33370c55815d92b9d30e877aa9d4510ffd85d82", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["529073b21857dfbc4600b9b43028cc26d2a0d1a210c9c6a0da37a151"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0e190175296bb296bb42de7a58f2856d44f8415d4375e14a40d74b03"]}]}]}]}, "529073b21857dfbc4600b9b43028cc26d2a0d1a210c9c6a0da37a151", 1649587894349, {"constr": 0, "fields": [{"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "56414e494c"]}, {"constr": 0, "fields": ["698a6ea0ca99f315034072af31eaac6ec11fe8558d3f48e9775aab9d", "7444524950"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 218884351]}]}}, {"hash": "17147a5f1b2f4fb6a9bb167161a74fe1f240771c375f05fba2b7d37d399f2b4e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["8ce1640a7c48ce70edaaa3508dcd0e11ffc4148876dc8a5edfc16af78349d7e2"]}, 0]}, 1653326276000]}, 1653327662000]}}, {"hash": "17148e0b68761e3e0fb0e06661ddabde4f957ad6106bca6a41b72e094f2c1112", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4745524f74"]}, {"constr": 0, "fields": ["5aa1a1c51e07f11a170d6992ab4bd58edd3b0eacbd7ed58878445ec7", "4745524f745f414441745f6e6674"]}, 995, 265585097913922, 1000000000000000, "224ce51e55b53afe4715916231fbaa8ae601c14a5cfe489427de00a7", {"constr": 0, "fields": ["f0a2ae4961b697c571ebd8be09c9b887abae8126e399805eb53a88f5"]}, 4000000, 7530543]}}, {"hash": "17150c38c808d5cf0805c4792fc5c16bef859400b82c530943c4842a1d5118be", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, 995, 9898961987916673, 1000000000000000000, "a3b1591dd8493c952c668d26454ec1019b5c08a2b251c79afe733dc2", {"constr": 0, "fields": ["031bb7dc3376eb5c5f3d84457fd9897958d9991fbfac9e4cbb9127ec"]}, 680943702, 202041386]}}, {"hash": "17151e8639b6857c954a6e1b2e0e18efcc6dc51222af6fa0f6149b7c302856f1", "plutusData": {"constr": 0, "fields": [{"constr": 4, "fields": [{"constr": 0, "fields": [1977511, 1]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["f5918fd8a7be061587448545855ab5cdcdf59b5c390b3af7f99357d3f614da34"]}, 0]}]}}, {"hash": "17187a4b5a4ed3a7aafe10397431185c0a42103e03c72cd5028cd537f9f9264b", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["289635b1c46c9300b4510dab96dc9d61cfd18d6b1125045be07e70f7"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["8bf0688f12a5cde3c5c2be970f8ab9e504c216c5611975d635b8e483"]}]}]}]}, "289635b1c46c9300b4510dab96dc9d61cfd18d6b1125045be07e70f7", 1649113749682, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 2, "fields": [237498, 1674]}]}}, {"hash": "17224d5bc9eef8c13f30677fdac1a0961b35fbd7153948fce35bfb813334e972", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2cbcbd58a8d11516f10a494e810bf6e5b265fb9edc87eb644c5c456e"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7f8f3f35ff41fe8f24be9232779e1636a08a089d192490e02a306ff1"]}]}]}]}, "2cbcbd58a8d11516f10a494e810bf6e5b265fb9edc87eb644c5c456e", 1648980447877, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}]}, {"constr": 2, "fields": [1140000, 29360]}]}}, {"hash": "17243bbf1a548a505c676f22ac0260b152ed14fa951ba70f46665fad9c443c5a", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["c3b39f2855f1c15c1d773f5cc51fc4c9987af269435fcbc6fe452cc5", "634e455441745f414441745f6c70"]}, 2000000, "a9610432d97e3505b31ca9172f1ce1ec714545c28be45e88de3c8aaa", {"constr": 0, "fields": ["0aceaeb78afa467d522c60b38ed21302857b6387e860e735ffc6c693"]}]}}, {"hash": "17258b584b83eedc8eec18ffe44d3aae7e289faf40f7fe8f555df32f5b6ceace", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["126b8676446c84a5cd6e3259223b16a2314c5676b88ae1c1f8579a8f", "744d494e"]}, 560754526805, 0, {"constr": 1, "fields": []}]}}, {"hash": "17276c073179a4bf3d5423786d42a22fd9e4d645aff2d18080e022b00db37a6f", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["66b9ac9d0b4624dceea1bfd9370e8f9cfbd5abd6fb82a9ad764e3384"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["16dd36ddd515276a3f96ecd5e1fafae3e5ba9b0defffb5cce09f26d5"]}]}]}]}, "66b9ac9d0b4624dceea1bfd9370e8f9cfbd5abd6fb82a9ad764e3384", 1648470458183, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 1, "fields": [1091844]}]}}, {"hash": "17293df946d2608402abfefdf1e424c8b60f42631c328ce4873635250a9727b4", "plutusData": {"constr": 0, "fields": ["276e926eb98cc0149b7cf13a7c15cfc53f99b7f1d992ac783dc40e9a", {"constr": 0, "fields": ["4cdc83545b14549fdfa6ec3618c30a454642b4945d9f494ec735922d"]}, 4421435410]}}, {"hash": "17315c800d806aa4a04bc1b2b11fbd540da3c9ac7ba9fa0b20e10f223c073795", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["40c6affc3258988a0d4c8b9ec58c1dfb5709242b1a3930acb97c51b4"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e57bd5cb4204e2313d812bd8dd912243b0c03af73560882beb059b89"]}]}]}]}, "40c6affc3258988a0d4c8b9ec58c1dfb5709242b1a3930acb97c51b4", 1648521721910, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "775348494241"]}, {"constr": 0, "fields": ["d311d3488cc4fef19d05634adce8534977a3bc6fc18136ad65df1d4f", "6c712021"]}]}]}, {"constr": 2, "fields": [6944, 1]}]}}, {"hash": "17332abe22a95025284fb4d14cbc16301a6f860ab6137f5bcff4518b67b685ce", "plutusData": {"constr": 0, "fields": ["efa678be600a4a3ad95e850038704cb13ec58e05ba032a06ad60aa3c", "b38644f2dba082cb49f2e1d849c4ec18dc8d54166eb081498b1076d8", "6153554e444145", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 10000000000, "627272486f736b79", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 3000000, "", 86400000]}}, {"hash": "17367c25d7a02b9b76b52711bbce27cc1919532b5254e078af3a66e379b3c5a7", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["52a2441ae321e609f3ab873fbc6d1798f0e1125d0d2f0906541bdea0"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["9a13bcfcf1dc4ea348463864373df9ba274ffd8fd548679338506baf"]}]}]}]}, "52a2441ae321e609f3ab873fbc6d1798f0e1125d0d2f0906541bdea0", 1648596547283, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 2, "fields": [212211, 33057]}]}}, {"hash": "17388e94559cccf4406be19ee4654cb4cbb89ae872a080fadd7a0aa76f779fd0", "plutusData": {"constr": 0, "fields": ["defc9845d18944e7d622f4d5a60a40f17dde8e63074d63b2a78175fc", "8c1e8d7e2b697743c68ff7c6b5bddfd17afd3c294500c619347b06d0", "614d494e", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 700000000, "6153554e444145", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 1000000, "", 1728000000]}}, {"hash": "17414e5db1b55ae998e68394625fbd98ace0cd0a2acb6b4c22a16dc709c24898", "plutusData": {"constr": 0, "fields": [3433413599720, 320041, 3262676, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["6f6970aaa762a9b0dc0191c29956c3792710f6699f7cc76969147feadb8a12a9"]}, 0]}, 1653001175000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "17431d9a8dc829a0ce732c51161eb8e31c959cbad5004c0e65d840b44de70368", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e5443548d15b77b6443cde6504cc34d9f58a597cf387192947f3dc39"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b3a3cd6fa823c57ac5de08e5cc6d5ee7ff877d683d0b99e82ad5f7bf"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["e5443548d15b77b6443cde6504cc34d9f58a597cf387192947f3dc39"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b3a3cd6fa823c57ac5de08e5cc6d5ee7ff877d683d0b99e82ad5f7bf"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 3, "fields": [112499999, 13474432265]}, 2000000, 2000000]}}, {"hash": "17456ad4c5fb7190970d099c80955023828f13b990154ed1d53ab562300b777e", "plutusData": {"constr": 0, "fields": ["76918a86df3f8f4cb863cfc2c7ef9053126fa8972715458804b6c26a"]}}, {"hash": "17480c37b52cc6f2e181e8b6cb8641807e944d7176ed17b262457c17c114afbd", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}, 1648994013000, 105416867, 3390570]}]}}, {"hash": "17483d7f20dcb6bbba11c14c0336091f0e045646e31f2f9040a012efbd594f9f", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "534245525259"]}]}, 1649275632000, 6602836, 47461466]}]}}, {"hash": "17501ce41f5569a83528ec13258c6e5879afc41ae3300fad111e4d62a5535c00", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["126b8676446c84a5cd6e3259223b16a2314c5676b88ae1c1f8579a8f", "744d454c44"]}, {"constr": 0, "fields": ["126b8676446c84a5cd6e3259223b16a2314c5676b88ae1c1f8579a8f", "7453554e444145"]}, 2061580, 0, {"constr": 1, "fields": []}]}}, {"hash": "17526f952ef9b82e63d02e8aebbc717c576a3999f73fc221339b25650b9eed30", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["c3b39f2855f1c15c1d773f5cc51fc4c9987af269435fcbc6fe452cc5", "634e455441745f414441745f6c70"]}, 2000000, "fd5f82c5dbcf7535568445026b8931c53591fd03e3badcec6c1ff91e", {"constr": 0, "fields": ["4f1015328daf9cc68ef457be26ff41b9546a1b9afc4a4ddd9af80d39"]}, 1379280]}}, {"hash": "17563d619b9e4f9729b1d33382f23d93142bf275a3c115639ec0944791d7a989", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "524245525259"]}, 220021, 0, {"constr": 1, "fields": []}]}}, {"hash": "17569db92c30f73fd0137f6644b6ce0a3447c4beed1fbcdfe868591ac7505a3f", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["67bf65821e976fc17078fba603c3553aabf17e01e700c6b1bda24a62", "746575746f6e"]}]}, 1648454272000, 1742155, 1006]}]}}, {"hash": "17571dc5e8a6423a58331786f6613842d1575a9ca5a1f172b80541a9d157fcab", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["51f44b9276fb7ee290819bad8e095e113cc70f676e4cb85d7803f974", {"constr": 0, "fields": ["3fd05a9f046d08d86945b3df8d031f7b1bed036a7b59c992dddd8f08"]}]}, 1651070212999, {"constr": 0, "fields": ["fa949b847b3c15c20636c7bd519317f57f5ef1b5c8b3c4d696dd0d4e", ""]}]}]}}, {"hash": "017582bdf6b97e7db01997b113c08c2429be390e2de60bfe013da2d9da691275", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, 995, 4441563646263478, 1000000000000000000, "aa289f0905b2fe0c783510b1d7c14ed8384381d087940f05c5117794", {"constr": 0, "fields": ["004ac2b6f0037fb3a949df0e3661fd5bdade78020676f864f375f303"]}, 1000000000, 450291870]}}, {"hash": "17586f221bb9b1dc660ccd9e237f46cd0b29a27e12ca1d10073558d0bc3824ba", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534454"]}]}, 1648524672000, 37306183, 913]}]}}, {"hash": "17588ab5a046dc4f82d36178a0f2b5233daf40590b93e07a0ae99634b0220381", "plutusData": {"constr": 0, "fields": [{"constr": 4, "fields": [{"constr": 0, "fields": [7559541, 4]}, -100]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["d5e00896aa251ed2b100d8cf1cada5443d36b74595f93cffb3e46cab1c229e9a"]}, 0]}]}}, {"hash": "17604d36362518f3dded5d7619f6438e9001a1458cc18d4addcf32d1394a5200", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0320b2ce67f7176d866c83febe3504ed68fae7bbe1095b1e7af3a7ee"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["3843584575cb6e35ebdd48bb07cb4e3ae37eccb1abf09d8f33407e2f"]}]}]}]}, "0320b2ce67f7176d866c83febe3504ed68fae7bbe1095b1e7af3a7ee", 1648665093164, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 19145248]}]}}, {"hash": "17654c6fe081aff74fef46361c995535beba742efc6fef0c4b2978d506f19377", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["8c0d0a7615fdc02fe15b1f11a75648fe64bcb76c60adedd2748a8e8e"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["cf8d7e13d0801a2ec21f30d6ef8d5993dd45fd24c74b89fc43fa7f95"]}]}]}]}, "8c0d0a7615fdc02fe15b1f11a75648fe64bcb76c60adedd2748a8e8e", 1649036087203, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77585250"]}]}]}, {"constr": 1, "fields": [341028]}]}}, {"hash": "17656cdcd1d17e961847612c63c69a0586a2e677f33967fe118537f6fa8b0c18", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1648709100000, 14861953, 79102]}]}}, {"hash": "17698a20be91a576be0b3866a7f9328fd63a0cbe814bc50ace77dded02dd5bba", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e7ca490c6457ebd592dab576c1393864f3682bc4c71f0fc55978e05d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7972bb8c2c4cd55dad2a2bca162656686e50c0e5549ba735bc50bb96"]}]}]}]}, "e7ca490c6457ebd592dab576c1393864f3682bc4c71f0fc55978e05d", 1648542142068, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 1, "fields": [47800]}]}}, {"hash": "17713a0c282eb26c7ca3e71e4758c03196484aa2989d08de4f4e3f12cfcec3b8", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["845c337c265b63558b775bbc346585e54914719698429131b3bb838d", "4d454c44745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4d454c4474"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["63e4edb737843f9b966ab1318259b3b4e165eb356eac93b3fa0bfa7d", "4d454c44745f414441745f6c70"]}, 2000000, "c51a7702b1b69bbd44eece46380720943c150137c50f9722c935a874", {"constr": 0, "fields": ["b8a178ebf72060ad4c7176b286a3e2afff93e171e804c5aeb065046b"]}, 1379280]}}, {"hash": "17775fa91f6a3d62f3c4b3e35a91ef8169f8f96f664b71738264f0d11a73ef10", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1649393575000, 53824083, 176661]}]}}, {"hash": "17790f8419054fcb74af306e1841231d70ad9935a6980bea6fa77fad596da826", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}]}, 1648477870000, 29847148, 36099968]}]}}, {"hash": "017815b569762925acedadb770b3a4f4a0b84d92765081bc1ca7182494e63147", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["5aa4f0dd4aa08aea916102634072ad1ac627018455e72fc16f62f5aa"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c7f22fdfebe46cf38f5d3545fb5a2e390704874bd77d8e5f227ae117"]}]}]}]}, "5aa4f0dd4aa08aea916102634072ad1ac627018455e72fc16f62f5aa", 1648693929051, {"constr": 0, "fields": [{"constr": 0, "fields": ["126b8676446c84a5cd6e3259223b16a2314c5676b88ae1c1f8579a8f", "74494e4459"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "775348494241"]}]}]}, {"constr": 2, "fields": [2, 7232]}]}}, {"hash": "17816f29d623d58c6bed8220f7da75d9db2f4b36a2103bc5ca735921e9aea979", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d1ebc30358833b6c8f9ec6f54af59faed294a959b2243f70f6f421f3"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["cde282bd84f399643473c79057db0c53d24108cbfda5bfedbd344709"]}]}]}]}, "d1ebc30358833b6c8f9ec6f54af59faed294a959b2243f70f6f421f3", 1649117198640, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 2, "fields": [237500, 21724]}]}}, {"hash": "17830b053bd5ede5f27635aecfae39dd52861d30a65dd9ee8b21475c33c46c5d", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7483ca8b9b96bfdf3b6e0e7d21978fe9ccad47fa9a4529a451c4f2fa"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["fc37fa8034f57f01b9b52ce5cce2f9fdb67d1cc679a7771297031a34"]}]}]}]}, "7483ca8b9b96bfdf3b6e0e7d21978fe9ccad47fa9a4529a451c4f2fa", 1649135010694, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 133102]}]}}, {"hash": "17835c6a36643044954242bd7049411e1588123e5a6c18f5d36c8aa796c02b3e", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "56414e494c"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1648929272000, 18956, 233]}]}}, {"hash": "17836b751cd189d91329cceab32f77ec890ed9b2bf9fc03277917705c29c4cbc", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["eb8d59687feab437b76824209008f860cd8484a4d8143092f3cee4fa"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["38273a0aa0a9498d5fbd576397e1dc24695d99a991511f0e1bc140b7"]}]}]}]}, "eb8d59687feab437b76824209008f860cd8484a4d8143092f3cee4fa", 1648466938593, {"constr": 0, "fields": [{"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}, {"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "43484f43"]}]}]}, {"constr": 1, "fields": [44]}]}}, {"hash": "17900d2bff61b943f3dd5fbdf12ec92badb4e9e79cdc4631793d4abbd320930d", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "775348494241"]}]}, 1649056610000, 277438, 1020780]}]}}, {"hash": "17909c8695c92ff119d2fbdac9c70f1ea421b91c4e8ef6550afd3a8efd63a762", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["bcf2dbccd3f53340e6cbc10dc61719a94b6900fcb2b606350162e2d9"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["12111991b90136d43590e599ddf7c073aa295c59d096701145d26392"]}]}]}]}, "bcf2dbccd3f53340e6cbc10dc61719a94b6900fcb2b606350162e2d9", 1648917489335, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 339766]}]}}, {"hash": "17926cb0771c049d2d1aa6cf1d48ce6d485527fe755684678bc22354c3580b1c", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["53bbcb1337f55aa7f5e4ef6eb25ceeb781960bd693394c62378a0f02"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["fb32e79f5371cbdbe7760f4a7b9b02567a41dee4f7c7b8431329e057"]}]}]}]}, "53bbcb1337f55aa7f5e4ef6eb25ceeb781960bd693394c62378a0f02", 1653476498699, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "775348494241"]}]}]}, {"constr": 1, "fields": [131295]}]}}, {"hash": "17970a05905ecf5e6c206bb881bb4450f51e83d26c3213c5e7beeadb02eb5014", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c04e267cb2a4446d2c50dc6c504cf82d6f3ac8f84e6f6e6da7c35e39"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b7f71ae991c029c07e0c0c7bf2e9e6e3a9c946e518f3e3b3ad25320e"]}]}]}]}, "c04e267cb2a4446d2c50dc6c504cf82d6f3ac8f84e6f6e6da7c35e39", 1648488014145, {"constr": 0, "fields": [{"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "4d494e54"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 46]}]}}, {"hash": "17979e8149d29f4c61d23f2a2513a9f14f3f1ba51508a73213f15cc1736ca66d", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["7b8064fd755d09d5f38eb3bd4a61fd21e292dc1c56b80effc04e3460", "56594649745f414441745f6c70"]}, 2000000, "f2565023e38c8444f525ec9f4826e088ad91aee78b34314788d20b0d", {"constr": 0, "fields": ["da24b39ba0e905c3733c1852cbb781de64142d7b87ef4248874a87b6"]}, 1379280]}}, {"hash": "17991df92387882dffb9ef09a00f37555466f2e71720bbb61319ba835d89aebb", "plutusData": {"constr": 0, "fields": ["0726c69ca768ad148f8195e9cc3daab43c23f43068152dd94381dd67", "360b7aed30e9977fd21115a5674dadcc4cf5eac0ab9ed8641b4f7e1c", "", "", 100000000, "", "", 500000, "", 864000000]}}, {"hash": "18013e52b9781a66b3a9205d5dc28aafc67f33691e9178a83ccf9d79c0e9ef64", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b7ead82b2c77103cc0615bd48bd0e97328104ed65d96a7cdd5dec3ab"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["55028923cce316b09aba7e7ae6e0f1f8a70ea9b2ca886819274972c7"]}]}]}]}, "b7ead82b2c77103cc0615bd48bd0e97328104ed65d96a7cdd5dec3ab", 1648450665511, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534454"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77585250"]}]}]}, {"constr": 1, "fields": [76]}]}}, {"hash": "18080a690904300621a9d0bde3d80cdab8ddf3c877b03343583e163e57df8bab", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["8c038b1f96b5220bc6926ac9df18431df00a338322321d0a2cb654ed"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7c33c13be9532f538d5fa28e1b9670fbb54532a74670f2e8f5c28726"]}]}]}]}, "8c038b1f96b5220bc6926ac9df18431df00a338322321d0a2cb654ed", 1648957245506, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 2, "fields": [20351433, 144176]}]}}, {"hash": "18083f8b6621ed3f1e756e6cc77f9c44efd249d2926f8a893f28190f5979b073", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["bc2fc3742624bf8d42e89f6d6a22d100bbb2bf3f085470317d064b26"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0fe8b2e9808005475772d838fb4e94db1f1175072071c83c14b9d5a5"]}]}]}]}, "bc2fc3742624bf8d42e89f6d6a22d100bbb2bf3f085470317d064b26", 1648924859304, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}]}]}, {"constr": 2, "fields": [71249954, 16535]}]}}, {"hash": "18130a71fd6e19ca66345994fe59b2dc94606481f9bdf20e51dbad1c99604e40", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["34cab49cced18479a4dc25e0965a3d33c984108f1dd75fed86e283b5"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["4ee91abca6ecc87eef3ab81cea0c8806e49d9446020e9e191188ad93"]}]}]}]}, "34cab49cced18479a4dc25e0965a3d33c984108f1dd75fed86e283b5", 1650034559631, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 2, "fields": [7091797, 24201]}]}}, {"hash": "18152ea42e2a76dff6ea91a5daacf521c4c6ae1356b88d80f35c3668b0e9d883", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "56414e494c"]}]}, 1649398424000, 4377135, 216787]}]}}, {"hash": "18165ae403b0be3f97f28a733c8ade72d90e2f9ae896398dea2d35c9bc148a20", "plutusData": {"constr": 0, "fields": ["1501", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e08ffded661048301fc2aa6e6f6d994335e4ce2e29a1adf94c4a1775"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["aa4c46393ac8cd89b08ec4dbeb3b5f8d3ab6d9eb2b86d843ada193ac"]}]}]}]}, {"constr": 1, "fields": []}]}, {"constr": 1, "fields": []}]}, 2500000, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 100000000, {"constr": 0, "fields": [9716]}]}]}}, {"hash": "18236b2a4e0ea06c558acd963be97b29d834244cef9393814268d05f7473c154", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}]}, 1649932936000, 47232789, 37596851]}]}}, {"hash": "18270cd8836d8dcb7b887e4e864f95f5bb5ca99ab3458a3a27c047a2981fea03", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "534245525259"]}, {"constr": 0, "fields": ["d311d3488cc4fef19d05634adce8534977a3bc6fc18136ad65df1d4f", "6c71209a"]}]}, 1648494419000, 5, 0]}]}}, {"hash": "18338fd4e3ef6198587eab1c8c8e46e45a5ff4bb808b405ab22df2e6790f1ff7", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a5ac337288ad8478d96a9961e1162aa9a88c6e399fd7ecaa52c362c7"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["4d6940d958177f6fb421c67da4aad4cb97cbdc70407f15177fbb9b67"]}]}]}]}, "a5ac337288ad8478d96a9961e1162aa9a88c6e399fd7ecaa52c362c7", 1649210069140, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7741564158"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 1418]}]}}, {"hash": "18342a2aed566e1bf77ec440df8dece7c3c8e96bcd4d748b2f0bf3d503e25080", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6", "4d494e74"]}, 160435458755, 0, {"constr": 1, "fields": []}]}}, {"hash": "18366cb7f4093ce2c1ebc51e25118d509d56ab592a78972e0f58bce83e103b83", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, 995, 665713431603953, 10000000000000000, "9505ce433b607d859580c2e24b03b7ead5188920a4e9efca03a8bb75", {"constr": 0, "fields": ["e60f0d6c9107592cfdde14bbaf5f61493c2bd7ff220f098aa77b5a1c"]}, 12000000, 30042957]}}, {"hash": "18383da11d597fed7469e44b2191630bb9cb81752c240e038dc75425fd24eb05", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["fbc186ac557c421fc1199c121caa1cc9870572cacbb7fc8460f7628d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2edc774093f2340980c7a481083e5515843bb325ee1f053a4c9dac40"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["fbc186ac557c421fc1199c121caa1cc9870572cacbb7fc8460f7628d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2edc774093f2340980c7a481083e5515843bb325ee1f053a4c9dac40"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 2, "fields": [1]}, 2000000, 2000000]}}, {"hash": "18428fc4d33e713498aaf26db922e3e7b8261ee7d4abc1e80a4a1f2559030912", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, 995, 800611122482013, 10000000000000000, "993139d404bfbe517830a036dab64e356c8dd9306ca0bebca6b494a5", {"constr": 0, "fields": ["f562647060913d38243500047d258978b7548d8a603233309b03a90c"]}, 15000000, 24980917]}}, {"hash": "18433d81fa420ea0c22aaa5ac726e2b81be0747234d487bb1bc6d632fb06dda6", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, 995, 7717812092885412, 10000000000000000, "f2996b1275403cad83c56503471fdcfa6a5b14a8e6a524049e1c509c", {"constr": 0, "fields": ["1d22a22c992beee09f8bd9b41087c2494252b431bec81c16d670bf80"]}, 1000000, 2591408]}}, {"hash": "018435f1003d9ca52b28e0e29d30f207933b28ae2bbe6a9259207b9c8d7fa7f2", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "775348494241"]}]}, 1648535973000, 28888301, 709455]}]}}, {"hash": "18436fc68f164d1b7ea0561b26fd17a80c508077aac884f7e4e258f2626e2805", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e4336636f3b49315f672bf6159c7de3c01817ba0b6bc21468b8f9c08"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d8af07eecf2b5abdf50fcf455bc08867f8407a31a5ab256055e37615"]}]}]}]}, "e4336636f3b49315f672bf6159c7de3c01817ba0b6bc21468b8f9c08", 1648481115145, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 1, "fields": [46056]}]}}, {"hash": "18441fc21583b91c689d7d0fbc20efc04c92b799237a1c2a1d89263a6e51077c", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["3198957792e501b21eb26b75c99eb3f360de0dcc4ec01b70ef81379f", "484f534b59745f414441745f6c70"]}, 2000000, "79f8f211c9db9cc209c1c0a5ca72615f31c6ca37ad7ddc51a6133ccf", {"constr": 0, "fields": ["5aaff7fdeed76b7a715343414e9f7705c176ce6febd30a2a43a354ed"]}]}}, {"hash": "18475fc92667f3a4e63b48f653746f6baf6442da11c8a6f5e34b8a79929608b5", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["4dfc661baa263b444522263002731e401c188407b8fdc81a1491efaf"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["811e0320c7a4f30126d5a494e82f5ef458a9cb5eed564420ded5eb83"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["4dfc661baa263b444522263002731e401c188407b8fdc81a1491efaf"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["811e0320c7a4f30126d5a494e82f5ef458a9cb5eed564420ded5eb83"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 2, "fields": [1]}, 2000000, 2000000]}}, {"hash": "18487a5b2ad8af68149912a60d087157ce849f88e03fa1142ccc5347d440c0fd", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, 995, 2979301208029923, 1000000000000000000, "13d7260be3be54f11aadb1b0edda843876ba53692796eec8a29e50af", {"constr": 0, "fields": ["6f2649b50d1afd0d2fa9855e259a749df6288e5753c7fc32e3a5ceb0"]}, 195000000, 671298355]}}, {"hash": "18496c1cf9d61bc83be27add6d7e76d5cf9825077014b991c959109e3f52f1d5", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e3cae0ed40d07118cb6ab9c91aa903bd3c169529fd0758bbe8af3147"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["acf0cac4add5284bd1ea3e8f9988bf7faf024b71fa431c757ebb2670"]}]}]}]}, "e3cae0ed40d07118cb6ab9c91aa903bd3c169529fd0758bbe8af3147", 1648615625543, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}]}]}, {"constr": 1, "fields": [160608]}]}}, {"hash": "18519d445a41bad04e53dfcf8ae53adbba7062b75d9f771783baafb210d80c11", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["122a7c50b37ef5df61607a7975610f144526be41ebb6054a92a19806"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d1bddb2a9c551af24572d372e5180d2f1c1f66bbbd79ebbaa30d7eb4"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["122a7c50b37ef5df61607a7975610f144526be41ebb6054a92a19806"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d1bddb2a9c551af24572d372e5180d2f1c1f66bbbd79ebbaa30d7eb4"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}, 0]}, 2000000, 2000000]}}, {"hash": "18528e9bef0a9f38923da4a2f76a3e1669a70bd8b0be78c95d023c6c89039e20", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}, 1648541740000, 43753640, 1161643]}]}}, {"hash": "18534b6cb2bf5c57eead782e459974366a2b9c200fd2ca14ddbef4e76ee24618", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, 995, 6400071066389121, 100000000000000000, "dc6e9dee52918828a952625f11fe0a04f15028c3b659251f6a8688e2", {"constr": 0, "fields": ["c97ba9851585ed40f59d95e1fc8afe5b9bd545f478d7c806ccde4a7e"]}, 16000000, 31249653]}}, {"hash": "18588bcf1445ec973d5540f2cb8aee6474ee4e0e08cd834779ab14376baf73eb", "plutusData": {"constr": 0, "fields": [{"constr": 4, "fields": [{"constr": 0, "fields": [876138121, 500]}, 500]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["017ed229ef372728d6d8008b71a11fb48cdac850803a657f82c6ad67387f014e"]}, 0]}]}}, {"hash": "18615f62fb0986557ee540a0551dc71f7e46539c5101393b3e4fd28e0be0ae0e", "plutusData": {"constr": 0, "fields": ["07603401f688f82b6f7462b1cab759ba4d6edcea56538d968de2d166", "f590a7fa375ddcf36e8655893471d703f39f7f1ce1a66e88f163006d", "627272486f736b79", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 7000000, "614d454c44", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 30000000, "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 604800000]}}, {"hash": "18621d1d842aa3b8b4834203119ee2e512fbe908d8e2e93dab28c3e590255639", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "01775459ea42d155094e18c52697cb27fc802b8d4c51dcfde67432ef05586344"]}, {"constr": 0, "fields": ["cd9d85fe5c8a1684c42ae0082e7e912fb7a7cca0900c5a3915eb1c34", "42454e59"]}]}, 1653480997000, 8, 5604]}]}}, {"hash": "18642b73e514eccc4a99b49a2bd425692fc1f68087a8b8edc5c6bcbcb102402a", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["237f1427356bbfceab402fb19c9f643dca58960d97763c732e79b73d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["596349ea29412ca8a97bad8a68194f1fa971bbc057f56ed3fb1e6f55"]}]}]}]}, "237f1427356bbfceab402fb19c9f643dca58960d97763c732e79b73d", 1649215903051, {"constr": 0, "fields": [{"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "524245525259"]}, {"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "56414e494c"]}]}]}, {"constr": 1, "fields": [67]}]}}, {"hash": "18643e3d454bc12eafef14f2f2ff082fbeabb4866cc8d7ab460c434cf54be6fd", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["3fb0efd17304d74896130d9ea419a9883a2ef3c8bf9f9e39478dc210", "74574d54"]}]}, 1651146305000, 15705689, 194135]}]}}, {"hash": "18686caa7d8e78d663db7727defab3594525eeeda2a66693d3f1bbcde8e361e4", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["5bb75874484d1bbfd7d109d202dcee9a954cc6d4bd1dad60ac19e1c2"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7e977a1e3e2828d3317a64d335298860fa8b08035e02a78ca3a1fed6"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["5bb75874484d1bbfd7d109d202dcee9a954cc6d4bd1dad60ac19e1c2"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7e977a1e3e2828d3317a64d335298860fa8b08035e02a78ca3a1fed6"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, 1210627]}, 2000000, 2000000]}}, {"hash": "18690ed06796510fe0db9ac96bcc9f5c73d4f9b42b8b803e4d70c0535cb0c94b", "plutusData": {"constr": 0, "fields": ["cef6b1e8415b259429abd1e0d4ac05fe2b78c242c34bc204537826ae", 13000000, "3f5265ef14f89e948fd5b5f55419712ad1f0dd4d75ab26be13444171", "4672656547686f73743031363235", "32a2b171a1a0b7b4d2d1e3ae12eb59e14721745e26a87f75d358e750", 30]}}, {"hash": "18691c15cea31e09f62209f0fec110328caf1b76a7d00c2c51c24b83873ede8c", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b3bd6a61c5e8e62c0500feef4b877886b607b100897983dff6c53517"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d763d169691981e2b77b59713320ed4fbd503caaf277b8dfec75e89b"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["b3bd6a61c5e8e62c0500feef4b877886b607b100897983dff6c53517"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d763d169691981e2b77b59713320ed4fbd503caaf277b8dfec75e89b"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 2, "fields": [1]}, 2000000, 2000000]}}, {"hash": "18698f14b004dfdb48cf16c0d336853e0c7df659e748cf7e4821037ae081786e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, 995, 9820693773090906, 10000000000000000, "dcad7be6a9011290fe6b54c96d74f1dee9c3f64c83a286acca9da765", {"constr": 0, "fields": ["c0c5d6eb93e87b66c65afc23f48877ade35c743f520d4d839b1ab445"]}, 1000000, 2036516]}}, {"hash": "18712a68852b4045387d7a5b72faafeb64c656d6082377ead1c8ab80c16a0a51", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["98d71b085e9e463873fb3edb80ca9249380e7890d86424b113871d6f"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["8c031d5430907d7dce9ed201be0eee0ad203e8c5cbbf54a611b7d05a"]}]}]}]}, "98d71b085e9e463873fb3edb80ca9249380e7890d86424b113871d6f", 1648517688828, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534454"]}]}]}, {"constr": 1, "fields": [13182]}]}}, {"hash": "18749a09584882a38d9da82d33941a43bc99e8349fd2f0bf6df30e5fc77718b2", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1648798021000, 114722, 9674]}]}}, {"hash": "18761d0343c56b39c42e57152bf8b3654f31d6a969a5eb114a33d768b93fc8e1", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4141444174"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["294870e187e8f269be1a306b8fab8a3e466aecea690230df373a78a5", "41414441745f414441745f6e6674"]}, 995, 4768305633208804, 1000000000000000000, "fb9e228ce21e1b3e5d8434a0f1468c060e02fc30a2b4a6375f8d2ea5", {"constr": 0, "fields": ["a5a6632e31a6d93085e35b48d9f3240cc8745274ca2d3cf5cde227bd"]}, 1000000000, 419436201]}}, {"hash": "18767d1b27dd4db0d1724e0817d93586701f68912f08458d27ce31829fa82523", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["3198957792e501b21eb26b75c99eb3f360de0dcc4ec01b70ef81379f", "484f534b59745f414441745f6c70"]}, 2000000, "b81e2ceee854c5f94063c5aea89299e23a639a66ade7de007bd6651d", {"constr": 0, "fields": ["39c5f1d5853df60db548167c17f81e6d82481ecfa2337f3721ba75e8"]}]}}, {"hash": "18786db9fa776ba815f7901918b876ba6ba31b3a312c3fbbb4683b8c315131a1", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["179722c947d0d329d38f3b76e61c4d00e96b5ccb27e5eeeba7b7caf1"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e5429958e677e5bad0df3917de2faef57e4439ca700659c763942121"]}]}]}]}, "179722c947d0d329d38f3b76e61c4d00e96b5ccb27e5eeeba7b7caf1", 1648826108028, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 44323333]}]}}, {"hash": "018792c015996c9ccfd2aaad5bc253293ccc479765bcc09795135fc7ba8f0780", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["845c337c265b63558b775bbc346585e54914719698429131b3bb838d", "4d454c44745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4d454c4474"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["63e4edb737843f9b966ab1318259b3b4e165eb356eac93b3fa0bfa7d", "4d454c44745f414441745f6c70"]}, 2000000, "ccc0d43f3d5536fda0181203038fe490809b1e4d7bbde210950b9e8e", {"constr": 0, "fields": ["b418f62f6c75ea6eac22e6f2bebd7ce3d17da9b9ece2ca9122b9d99c"]}, 1379280]}}, {"hash": "18797ba92862a8e2c0d7a212048c477c0bc1b31e6810691d86ca29ca1f1f8533", "plutusData": {"constr": 0, "fields": ["7a4256647c3566b7fb77fb7f36b305b7c3c15528af21dd03295d727f", 100000000, "7508856c19d999078ac9ae6163610c3d1387d51889331edaac5e67fb", "506f6c6963654261646765313834393834", "7a4256647c3566b7fb77fb7f36b305b7c3c15528af21dd03295d727f", 0]}}, {"hash": "18804a77450fceecd48f8c12bd46337caff5b10f2e0ce77e6cc72e5a42c6cb11", "plutusData": {"constr": 0, "fields": ["2a", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f7e140f1070026abc7c5b297028a1e7185b083792e9253503a44915b"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["20c70eefe6d70e430062294f25f409888d3ee1a6a61964d4f2ef0b72"]}]}]}]}, {"constr": 1, "fields": []}]}, {"constr": 1, "fields": []}]}, 2500000, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 50000000, {"constr": 0, "fields": [4508]}]}]}}, {"hash": "18835b24a16fce39e81c239c96c3a4f1356da5c8d3366ca83ac93786b2965d1d", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["5ab2d1cd53d7b78a653b40e40accea61da65921e3c23fa00495bbee0"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["12a8630453d517ad4ff4b04be8a7e450d734c1ed0331a186924529ab"]}]}]}]}, "5ab2d1cd53d7b78a653b40e40accea61da65921e3c23fa00495bbee0", 1648813148134, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}]}, {"constr": 2, "fields": [1800000, 98333]}]}}, {"hash": "18897b6ffb5f18d52f870cc8d8079d0f874a95e81d5b84f54acc17d4a1ce736a", "plutusData": {"constr": 0, "fields": [{"constr": 4, "fields": [{"constr": 0, "fields": [29543809, 14]}, 28]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["f75b9df105af9d36791c5f6ae5a2998592b17a7f452b6cdfb4ee3afce7fa10f3"]}, 0]}]}}, {"hash": "18913ed6dd7b9cc94e92bf769507d8411dde36dc2f8adc076c6abd3361392983", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}, 1648451886000, 50668366, 1353387]}]}}, {"hash": "18916a6a5eb8cabfd5b7b72edfb79c1dd6fbcd42c5d69b4b38630c0b6957a48c", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["5bd6c8052f352f3760d442ef9914ff271b90b1305f59c4ffbc1755be"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["211e3f46a6cf2aaa54a2ea97e631cc0622a3fa5513c79eb3166f31cc"]}]}]}]}, "5bd6c8052f352f3760d442ef9914ff271b90b1305f59c4ffbc1755be", 1648462251277, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 4074]}]}}, {"hash": "18960aaf584eb43fb904871332ffa1665972e16d8dab3ec49813c964d72dcec6", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1648578121000, 55894915, 512626]}]}}, {"hash": "18974d4c585c7775472a5d70047f350fb054398ab32bd3025537c2b8cd4e3a5f", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["3198957792e501b21eb26b75c99eb3f360de0dcc4ec01b70ef81379f", "484f534b59745f414441745f6c70"]}, 2000000, "87d5298819ff4e395f86ea6866df889ddd4088a8b2999e385d0e5d90", {"constr": 0, "fields": ["3527ec7c868b8d6b5b95cd033c3fa2c847dfc99b18a64b4852a528d6"]}]}}, {"hash": "18987dcf69d8e5492c5bb5d56918c9c96a4ec27a8bb7e7c49deb799b1e004314", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["126b8676446c84a5cd6e3259223b16a2314c5676b88ae1c1f8579a8f", "74494e4459"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1648681790000, 0, 1025]}]}}, {"hash": "19004efbfd053f210003618f1f3bf730385beedf87b36cb8d3fdb1b6e44f64bf", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ae321cf5384eebf94d1fcdc7a3099dbe31d1c7d54a5d53cbfd92b734"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b3a7de3573dfb0e3a6c31689b96d9d9a99bdc6352fc152da61a9f617"]}]}]}]}, "ae321cf5384eebf94d1fcdc7a3099dbe31d1c7d54a5d53cbfd92b734", 1648502318924, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f54"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 497887]}]}}, {"hash": "19029aacf4c330bc6865d35b92004d164318d60f3a0ce4f948adcfe4d371dbc2", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4d454c4474"]}, {"constr": 0, "fields": ["845c337c265b63558b775bbc346585e54914719698429131b3bb838d", "4d454c44745f414441745f6e6674"]}, 995, 3444270828319408, 100000000000000000, "1c51d45c6ba692d6a8eea7c175873522382cd8e32218cd633d2dcdb7", {"constr": 0, "fields": ["12f79fcaea7f789d78d60363761b76f209418a856de0119daf33f5fa"]}, 10000000, 58067443]}}, {"hash": "19034d3f0b8af6b45ee811a6e438a38b1baf1dd60066b03f58651124a57d9850", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, 995, 7974478479075566, 10000000000000000, "b8c00d4c2739086a876b1dbee348e6356f210a0ca5ab4d5b964ae4b8", {"constr": 0, "fields": ["b449a99013fcf36af53f3a03fdcf32299a9fb5391dc2263db0aa5295"]}, 8000000, 2508001]}}, {"hash": "19071c2d20b42d8593f67eb8d9ae1fe5cdb1d7cbd4819d35467968f98abe5f9c", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["81822e231b60bf7c3ca642abb5631eef26fdd1303c5dbbc0c8891b46"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d67e050ff831a578c2d9531e8a5b460a978e17e20e619b6d3f480c88"]}]}]}]}, "81822e231b60bf7c3ca642abb5631eef26fdd1303c5dbbc0c8891b46", 1649220511790, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 2, "fields": [20690991, 54408]}]}}, {"hash": "19076b0aeecfe4eb35a09379778b0b9e36694ecd802b2c757fc89a950adaa78a", "plutusData": {"constr": 0, "fields": ["32abb6a1318dc421c290d831da3179b5e4c323b2e8895ee2c87b6cac", "81c184bea721ac2e0c97b90498e2e96ae9c0ece4306cb8a7ccfa787d", "", "", 100000000, "6141414441", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 100000000, "", 432000000]}}, {"hash": "19081ade7d5d954730b72fe351b1e311ca45afa3545ef38084cfeb0530cab44a", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}, 1649265759000, 4262, 61505]}]}}, {"hash": "19110ff135fb97ebe7a19cb3f3c47a5fdc9508f12ce80c3fe00f9352d5b77af5", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, 995, 9651764342521812, 10000000000000000, "05e088770527832949b310ac1df897cebe571d251680a3ce96a0e853", {"constr": 0, "fields": ["ca88e829cfde1e5eb6a17f4589519f6193523ef9620d83d21bcecde7"]}, 1000000, 2072160]}}, {"hash": "19148d3f331df49ad6e2ff380ccff4dd634a3a8b80d71275f6a284984dc91431", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["13a206a4a6afa522fabd91ab3bc524d591b5e1a3daced10085539725"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c327b7456f9e194658214ef3d8053ca44817d02172ce4bf2eb476dfb"]}]}]}]}, "13a206a4a6afa522fabd91ab3bc524d591b5e1a3daced10085539725", 1648645311833, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 270767352]}]}}, {"hash": "019175cbb6a89d5437eb746ceabf1c181fba84ba4e4d0a5cbc2588887ec577e0", "plutusData": {"constr": 0, "fields": ["0727070bcb95c52b320f5a1f6bb3f2423a85f6c4261440d9d0b1513b", "d321e193ec09621bef7db2b083f9c9b75673138d694398392073d86e", "614d454c44", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 400000000, "6141414441", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 50000000, "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 432000000]}}, {"hash": "19238e003debe2c9c5a746de79a3253565ea8db23b719cca58b1d1f25b5fd779", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, 995, 19352731072407304, 1000000000000000000, "4171ecce51b414c072dad88666337e08a5440cb5cad9bc70ba8a8c66", {"constr": 0, "fields": ["1465129313169e8a7ea2c17e73232852d04d3036a4c8705027fa16d5"]}, 200000000, 103344587]}}, {"hash": "19239ab62242930ffe1e478d9dafdcae683ad3a5b41dcbcfb315840f3ab97801", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2a6ba69ac4ce435eba04508bcbfb3fee516d26efc6ae23da9477d0d1"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["770f3255f4478c5179190b13a20532d4b30066ed38c74fc008ecf944"]}]}]}]}, "2a6ba69ac4ce435eba04508bcbfb3fee516d26efc6ae23da9477d0d1", 1648696169543, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "534245525259"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 708966174]}]}}, {"hash": "19250f7fb24b3808622f2d639fd16a4a91a22958988a465e95e44c0f59019595", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["cf000f65e14a2544acd232452a991547b5263ebb8e11ba1f7d218e07"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["95cf327284b6234953c085d8d6bc0796a8f0b84138ae37ec634269e4"]}]}]}]}, "cf000f65e14a2544acd232452a991547b5263ebb8e11ba1f7d218e07", 1648584692649, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 217964]}]}}, {"hash": "19257cd8cdb40a48c49ab249c384b4ba2267f583851dff239f820e8da0edbffd", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["514bea316c280a382aa855b20fac6242d891477ddd813c0bdd37b925", "47454e53745f414441745f6c70"]}, 2000000, "c8325c1c931960ae75c0839af7a3df07247488dda39ddffffe56c8ff", {"constr": 0, "fields": ["432d6563a26e47ea526303899fe32779d9d115dd8c1ff8b4204894ea"]}, 1379280]}}, {"hash": "19280cfc60b447c9a4f02740c07915765f9c8d01d2ba65ea870e86aa666ba88a", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a306a1435e3e65633c00a001d2be58c3d2c609158a075fe88d76ef42c98cae0e"]}, 0]}, 1654191237000]}, 1654192743000]}}, {"hash": "019291f0b246960056dffa3d8cbf4b05dbea31c189f4bbdbae4fb15e37c1710f", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1648480486000, 50227310, 420705]}]}}, {"hash": "19293fa6fb70500d50fdbaa24561d89bdf5b8eecb79e5ed9b1cc385454dc20c4", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["8fca922437ab2dd12b3ecd120e70a10aa8527adc6b92b692420480ce"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["47f5d53bad5eaf038b4558588057866d4ab87015f32d7b040a50ec1a"]}]}]}]}, "976e15d48eed7846e3fcc9e644de5e2d590ee728abc5c08f2e091842", "744d494c4b", "", "", 1, {"constr": 1, "fields": []}]}]}}, {"hash": "19299e25585f29100e68751c0f67b822957dcdc5d3169707ec0d29441a2f57a2", "plutusData": {"constr": 0, "fields": ["9e90da619d5db25600845b89b757f5985047a71fd087b7e7dd6c0e51", 200000000, 200, 48, "36adafac6dfff228c4a848a09ffbc5df03c509b5ab000e8a6712847d", "6261", {"constr": 1, "fields": []}, {"constr": 1, "fields": []}]}}, {"hash": "19321d273d515a889c769c5d409174ceb8d40524af30d63c00ca38512a95053a", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7b906af886db75dd8532612ff00e785d36fa9b2b0f0e13429f3d5908"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a27d999f11a0c954b5c5ed01a7ce71979ed3ac71d8baa954d8dd0811"]}]}]}]}, "7b906af886db75dd8532612ff00e785d36fa9b2b0f0e13429f3d5908", 1649524675036, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "774c554e41"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 10090]}]}}, {"hash": "19329d4465467e7f2f6798a0663d92efd11021a1a0a61969ab182b3a2ea5679b", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0f2919eff28d7bf47f158525dd44e76d445fa40b8098a7ab640d3736"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["dfad4cc10bc7a96b6fdcdfc5dab7c4bc9f540cd68293134e00c65773"]}]}]}]}, "0f2919eff28d7bf47f158525dd44e76d445fa40b8098a7ab640d3736", 1648521044617, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 177093]}]}}, {"hash": "19339e7bd60af8238fb7cbb0d630c2907e5cd829cb86b8fce6a19490e4ef1873", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "775348494241"]}]}, 1648906892000, 32420171, 794386]}]}}, {"hash": "19347a15f70b4c88409869b8ab0dfbab7b3eafe26a613d18f55e041e11f8d32d", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["84fc52727e06f52eb376f0430eef6ab6fc61193750222604e3f0b0bb"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c541b1aef9c226079f56fc3f1c061914dd9583158633ce42a98868aa"]}]}]}]}, "84fc52727e06f52eb376f0430eef6ab6fc61193750222604e3f0b0bb", 1648492311357, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77585250"]}]}]}, {"constr": 2, "fields": [347, 113708]}]}}, {"hash": "19348d30df7e631cfb6801a433fbfd1aeac45d79db0afa0cace4b677a184ff9a", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "775348494241"]}]}, 1649011494000, 33816801, 795311]}]}}, {"hash": "19372bf39f8b25ca558875d913b294688f06dcb6f5a94bca9bd1a88ab616fdeb", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e352b761b375ea25f4729f65a18d06c40cd828953f847e9d75c6f2d6"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a87c88d93654cd49b18f5dcfd6e446e6c0aa14b6ae67f17598a3f625"]}]}]}]}, "e352b761b375ea25f4729f65a18d06c40cd828953f847e9d75c6f2d6", 1649172050760, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 1, "fields": [4983612]}]}}, {"hash": "19374b8b5ce5396cb3903a7782b4f49a8862085a66285ce0f7497d1822be5cb2", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1652533672000, 76208286, 1076204]}]}}, {"hash": "19399bad2b0ba82a2e43f6537cf9d10ad50c3889d04fe5d814b05448a63168de", "plutusData": {"constr": 0, "fields": ["875054156bf8c3e2de1096ed78e7a5e8ae90065cb004c0440d2bcbc5", "dda12ca38c4fac9b08e59febe570bf9afc444d7eec1df3e114e3d496", "614c51", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 1000000, "", "", 10000000, "", 172800000]}}, {"hash": "19432c8b7a20230c17df3db0dfeb27ed0e341832fa42dbed54217ed0f6bf0ea6", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "775348494241"]}]}, 1648657243000, 30397018, 773747]}]}}, {"hash": "19435de5c57328746ebe9629142b9126650acdc7163347140aa1fffaef0d3b46", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["db29651e8595fd7b7e546bd4fa00e3e2aaecc70126a9379dea3d8cb5"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ef10c3720fcfef7f83cb0d0652072ebd66e9f4cdf1061649de708537"]}]}]}]}, "db29651e8595fd7b7e546bd4fa00e3e2aaecc70126a9379dea3d8cb5", 1649010854973, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 1, "fields": [9594]}]}}, {"hash": "19462ee5e3f81be85d572ddea52dfecc0ca01c30f2bd678241524e3e3e4b28c7", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1648582513000, 1975943, 50567]}]}}, {"hash": "19493a0950a02d20c3dd966018d89ff5922ddd66520e609fd59d97934a3de4bd", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, 995, 2308830321277549, 100000000000000000, "6931da97ebc47fa6afc51af67ed1d1efd4bc31934d9cf1227d502f92", {"constr": 0, "fields": ["2c8f4b8b87814432982a5f915c36737119d7ea57026339e03df451a6"]}, 200000000, 86623949]}}, {"hash": "19495b3947e49bb28d271e8adb302e5f0d94f986bb725665c841e07d06dac39c", "plutusData": {"constr": 1, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b2ff7b709174bfc6c65b7be977b8d7320c03f0eaa8e2f5305d1b9aad"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [750000, 1651625673999]}]}]}]}}, {"hash": "19500ed41418eb3be15818bfff0f45425829de1467f9d0bf98a6a1d19a6ec22f", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["de65aa9235809371fe03d29118a27fc00f951d084e70b14f28e607d8"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7fe775e4697e48ebeb45d257ccef1782715eab8f4eebea2367919dce"]}]}]}]}, "de65aa9235809371fe03d29118a27fc00f951d084e70b14f28e607d8", 1648462876816, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "774c554e41"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 1]}]}}, {"hash": "19504cf0c22da8e0baf52965d920fb581e4ff8673a004b476517a32fb18b153c", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b6cbeff40833a7e49b2dffa2ff619c4d9008ad2ad386b0893492c55c"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7aed7b5d8759b2c21b6db7c57d99411521a27c5e47c1a4686372e9e0"]}]}]}]}, "b6cbeff40833a7e49b2dffa2ff619c4d9008ad2ad386b0893492c55c", 1649198441529, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 231898]}]}}, {"hash": "19525ae4f3e95ca62d207d35bde1218a16dd2e7bb826c007efa7db1a16715101", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, 995, 14145465031101986, 100000000000000000, "4fff40965e24b434c0d6929cffd8f644eadc331f5d802054f64ce256", {"constr": 0, "fields": ["9b3360eafd333ad60c46c5a2f1a284d743aba4e016868fc61211bb2b"]}, 8000000, 14138807]}}, {"hash": "19540c98be5ea211b48e7687297fcd42bfd04d7554883b425420d71c6058544a", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534454"]}]}, 1648619308000, 110, 5]}]}}, {"hash": "19554c9fe10866b3001454bbe64d861e0961da52c84ff98e432295083a121af3", "plutusData": {"constr": 1, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["3a1314fa60a312d41eaf203378a6a92b5fca5c6649580e0c3e4fa707"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [800000, 1651782377999]}]}]}]}}, {"hash": "19628e59b7ec6cf8f181148f8f80689f5e2527a3abedf7782da55c51d314a051", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["27e7ee36b90a09d668e2d9263c3e2bf5ecec9aaf39b3b1ff7052bade"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["196542a280126c20ee002aebd741737040d0bd73c000b3f4b5f74627"]}]}]}]}, "27e7ee36b90a09d668e2d9263c3e2bf5ecec9aaf39b3b1ff7052bade", 1648598847030, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 85232]}]}}, {"hash": "19633c627c092f6388b14c7ebc3bf8d8a4f9797002a63da4f184b3594b172cfa", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["7b8064fd755d09d5f38eb3bd4a61fd21e292dc1c56b80effc04e3460", "56594649745f414441745f6c70"]}, 2000000, "c16bcf9decf47f3f4e730c082b8719d0e4a2d58a4a008b670dd9d45a", {"constr": 0, "fields": ["44975d7fea9f273051911993e5ff07258c58454d9ea15c721a4404a3"]}, 1379280]}}, {"hash": "19656a06013bdc9af2e99ce2e52f935edc20f0102fe64f50aaed1deff7c330e5", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["17b1f8d9d58a268de507df2a6b3cd7c4cf77e3866d09c647ef08122cffa194d9"]}, 0]}, 1651595798000]}, 1651608425000]}}, {"hash": "19680cba0bbbca027019580fc4f7ceab3423481c2e967f0b67cc0f14df64671f", "plutusData": {"constr": 0, "fields": [4587370538520, 427888, 4338977, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b1625f5f4a4099c2e4c6451206a6e10da22ec083cb9da3c4e05bbe613fb9ce03"]}, 0]}, 1653932955000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "19698a2f2d08222a0e316458a646ad341042adc932ab3aa6785688a1a13b1a79", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["3198957792e501b21eb26b75c99eb3f360de0dcc4ec01b70ef81379f", "484f534b59745f414441745f6c70"]}, 2000000, "cce877fa0de2217012ca1603ad705cb77e9d89a66117a007e3cd711a", {"constr": 0, "fields": ["d62006e66a319a0a2509e27591d2653d81b62302e1d2e7d504c3a7a7"]}, 1379280]}}, {"hash": "19797a1277bc847643f8020881fadf39cc89a6d222ff0824038354e5d04070e1", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6", "4d494e74"]}, 146770887667, 0, {"constr": 1, "fields": []}]}}, {"hash": "19798ca7fb6c1cc4c5f6c42b2f94b86fa092a34cb96bafe5ad569cb3d9d5c28b", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c787b5cd3398b74645a10ba65bf62193c8cfede82c917c3d26dbfa90"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["bdfa0d88738f16d3fca91c128dbb323b3c46aa0fdb301a46218b4a43"]}]}]}]}, "c787b5cd3398b74645a10ba65bf62193c8cfede82c917c3d26dbfa90", 1649074955720, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "15e9d957e80847f995633b28e8d313e8cc877e231913a187711e93e063c23dee"]}]}]}, {"constr": 1, "fields": [1117763]}]}}, {"hash": "19818a07418e5aa355b0590436bcc2a7b22a1494f7a64f8006103e1f321b11f8", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}]}, 1649351317000, 45264464, 37571890]}]}}, {"hash": "19841ff08f8c11a81d4b7cfea9c8c5862a84dd3a19177f8f32d8494a8561bee3", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["63b76c1f29fac6c303c8e7f17b3cd9f2f90d22a41a022f76acfb6799"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["90f9f908c6dc2b25211700f2d6afaf669eab9c012ec863a2cf814724"]}]}]}]}, "63b76c1f29fac6c303c8e7f17b3cd9f2f90d22a41a022f76acfb6799", 1649023954983, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 877743]}]}}, {"hash": "19878d96cf3f8eef5979986f07f7c3e09d602a30e42b60507af509b8d93bd9b7", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1649066131000, 941, 120876]}]}}, {"hash": "19885e8cfd4d43cb580d9fc86ee2bebab3a20e034785c38bcd261c701732123b", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["3fb0efd17304d74896130d9ea419a9883a2ef3c8bf9f9e39478dc210", "74574d54"]}]}, 1649639210000, 13932406, 34103]}]}}, {"hash": "19924cd31625239fd6e26ea2c9a564c7508400377a2d1aa173eddb72898a6087", "plutusData": {"constr": 0, "fields": [{"constr": 2, "fields": [100, 102357217]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["847f8caee5eecb80e19a68287b2de8fe3ee33cb50ecca95b095dbc54"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["afcc90aff5f917d0735ecae34147e8e89bc3380904361140917d94aa"]}]}]}]}, {"constr": 0, "fields": [4942993780642191, 4294967296]}, 1651693893000, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}]}}, {"hash": "19955eb140820cb69682eebf81e4efc289ad15e5456a5d74e183c8b70d19ce5a", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0d6f8418182a7309c18a6feedb0756c6de3a25a368d13bfe9e07fec7"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c7782591ab2705c1e6e00225266b07c68f08e3276d6075af5799b7a3"]}]}]}]}, "0d6f8418182a7309c18a6feedb0756c6de3a25a368d13bfe9e07fec7", 1649627872688, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["34d1adbf3a7e95b253fd0999fb85e2d41d4121b36b834b83ac069ebb", "41474958"]}]}]}, {"constr": 1, "fields": [9100582]}]}}, {"hash": "19979d86e68f87a115a4a3b5ee6ac7b1a3a3325688ecb4f2d6257bd48220cc7d", "plutusData": {"constr": 0, "fields": [{"constr": 5, "fields": [{"constr": 0, "fields": [1205124361, 1199]}, 1199]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["fc55ed5d4a765e9ed86713d22835047758e163bc8803b46418b7317b51d2a673"]}, 0]}]}}, {"hash": "19990dc4c4257863b2795c9f94e34e8f81ad46b4509a658deb9e14939b009983", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, 995, 16112344287283742, 100000000000000000, "a5df41ae61fbe4730861fa0b3165ff26aa398d3c4829aff2ffa687df", {"constr": 0, "fields": ["5f6e77c410c1c7558dcf0c9a94e39905599dd89047be0019a467e082"]}, 6000000, 12412843]}}, {"hash": "19991e92b4e9a03ae4d5939c86963c0cc3daca35d69090e137571bf7a48ff25e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["c3b39f2855f1c15c1d773f5cc51fc4c9987af269435fcbc6fe452cc5", "634e455441745f414441745f6c70"]}, 2000000, "81bea2f00d2bd313f2a9cc1ff4d49da1d97123203d92be24b95a7010", {"constr": 0, "fields": ["403b91e1ffef04e5fbf20a149903ab0d55534b63b606e1d8575dd7e4"]}]}}, {"hash": "20081feab44a9c4a3497da4ef492153af34a843be8dcab379b6c34b9b687de10", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, 995, 13731351194479943, 100000000000000000, "7089e7ee336fbfadb656f186aa1bfec6a627eef6bb21ff68cf163cb8", {"constr": 0, "fields": ["3a104e732ae0bdd4f49b5c21cee788d568ae9161f71d4570c24d521e"]}, 100000000, 14565209]}}, {"hash": "20095c092f6d32371aad08a0236e47e2e8cafb75c77923cff6da66686c257f64", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["99cc4d1b104adf74bc00d9e265f24fdcd150a83d98f492b6d5018298"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e7d494031eea332896dfff81570918689508031d3cadb0662694a9a7"]}]}]}]}, "99cc4d1b104adf74bc00d9e265f24fdcd150a83d98f492b6d5018298", 1648504501581, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f54"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 395]}]}}, {"hash": "020123f4b58feb947f02654cfdc4349edbb5d613ead0ad8ff22b172c09445b6f", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}, 1649760202000, 111464905, 3900099]}]}}, {"hash": "20160e1938d63617f765335cfdd3f3832f623b57cf89015fd0e7135b68113d85", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1649242713000, 49191106, 160810]}]}}, {"hash": "20182cbcae456f79bc3d9a0ac1510801a41336ea85a2f77b399d7ec0031d588a", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "4d494e54"]}]}, 1648916288000, 21727149, 107371714]}]}}, {"hash": "020188ebe2f27e23c3182db819b5a63ac21165f107eeb170ae76055b324b7efe", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["bb0afa134233f8652201d9e2d1ff87e3f3f6fbbf05d13b16fe9713de"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a102311fa55d758abad07283806f25e9123a5170c401ac3fb696fdf1"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["bb0afa134233f8652201d9e2d1ff87e3f3f6fbbf05d13b16fe9713de"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a102311fa55d758abad07283806f25e9123a5170c401ac3fb696fdf1"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 3, "fields": [55139369, 14012487424]}, 2000000, 2000000]}}, {"hash": "20198ccc6d89f175e45ac4ff656c20335d9bb809ccb05e893bccf7d774c31482", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["7b8064fd755d09d5f38eb3bd4a61fd21e292dc1c56b80effc04e3460", "56594649745f414441745f6c70"]}, 2000000, "7d857b4f7b885e512947972a24d08da72ac5d4ba4c785c88692e52bf", {"constr": 0, "fields": ["338eda56c43f4bf700abc3c6ade08f51982ef7b6144831ac31c5be6e"]}, 1379280]}}, {"hash": "20218a2cece7cc42e0a9f7f1202696c96ad209b71f5bdbdac51ef1f036bed280", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}, {"constr": 0, "fields": ["d311d3488cc4fef19d05634adce8534977a3bc6fc18136ad65df1d4f", "6c712001"]}]}, 1648415508000, 0, 0]}]}}, {"hash": "20229d2a10f0e9236a77ee7f9c3dcd7ce4c154f98554af3f21d4b577be8791e1", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1648908710000, 64939303, 766272]}]}}, {"hash": "20258f33f5f5f7fa0ebc2dbe09cf9ea4996cf9bf46e166dd237adb3e3cb43131", "plutusData": {"constr": 0, "fields": [1651355706599, "46629efc9c5ddf1a78360f4da4dc387287a8238a5727ce7d02f6b658", {"constr": 0, "fields": [{"constr": 0, "fields": ["334d8dc447a60d536d43b3afccb50a1a99cae737cc0317944bb9f2a67a87c2e0"]}, 0]}, {"constr": 0, "fields": [3782901868437754773600108101299258604069057764535243864136335586751972726330]}]}}, {"hash": "20268d124a9042c56407845f4aab4f61b28291daa09518feda4f2a0f11f25970", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, 995, 10242909576311264, 100000000000000000, "edff9f6ffe1d757f75377edcb88a6a7d47b173aa1f673516e19104cb", {"constr": 0, "fields": ["162b3859d03c71aebb56aca67dce2ab7e4e84604a4160a53975084bb"]}, 10000000, 19525702]}}, {"hash": "20283d09494cefec377ce07c0fb8870ae8e98eddac79b42fdcaab2f582a002e4", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["cf07540d800c4f1d657cb964dbaaaa6b0c8d8b1b963af7a7580270ca"]}, 150000000, 10, 1, {"constr": 0, "fields": ["723df65c1030de6f6ebd937d9fa3970b39767d05e3361e9b3dc52a5d"]}, {"constr": 0, "fields": [1653423713000]}, {"constr": 1, "fields": []}]}}, {"hash": "20295e20b42b32becff31e68e56ac10d87ac5a4ae0e5066ff2356750293397bb", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c1eb7ec21c2f19ae6ff2565f5cd46b6ac0620d140e095e155cbf8114"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["acd3695ef6fbf143b4999ae461ae7148a1c349e4e1dfc264b2773abc"]}]}]}]}, "c1eb7ec21c2f19ae6ff2565f5cd46b6ac0620d140e095e155cbf8114", 1648548837032, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 1141]}]}}, {"hash": "20389d08a1be1fd39658d286911bdaaacf0075038f01fe90f56d2a67e67dce53", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["126b8676446c84a5cd6e3259223b16a2314c5676b88ae1c1f8579a8f", "744d494e"]}, 613414021363, 0, {"constr": 1, "fields": []}]}}, {"hash": "20416f4e4c83a4e75c01ef98127673b781ee6475b3a58bcc6e2d28cd04e04625", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["987bf2bf5f076c0edd6245816c7b230372ba50216c6715a03dc13285"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["30140139dbed55bd2a0c8fe1342c29a16d7f3077f4a45c6e7884883d"]}]}]}]}, "987bf2bf5f076c0edd6245816c7b230372ba50216c6715a03dc13285", 1648541057690, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 2549]}]}}, {"hash": "20425af7539659579ce4c44f56639dc943d34415799f7244189af3b9e8131cb9", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, 995, 5812673686322668, 100000000000000000, "d7f61a23c827ee40c8bc459f2c53469df538f3f20fd9dba83ca7c636", {"constr": 0, "fields": ["34c27b44777e84d82b49b66234bd0964fc2205104baf84486f753a9b"]}, 16610000, 34407574]}}, {"hash": "20439f459540081274a0107282fbabf3fa092acc07871e029ba67197ed68ba3f", "plutusData": {"constr": 0, "fields": [{"constr": 5, "fields": [{"constr": 0, "fields": [21562564, 25]}, -50]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["5fe6c224084394e357108ba164f64acb1150b5391d77b95c1768add0bbc85d59"]}, 0]}]}}, {"hash": "20478dc46661ee72e94adccbad14375fcd2bb522237ca4d8e818ef7625a7ff46", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["fd7cbc18c0990f003351e9916d33237e0ea048df2aa751db8442af87"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7918025b100e01104b437bebe3873c4317341f35b476c92e627017da"]}]}]}]}, "fd7cbc18c0990f003351e9916d33237e0ea048df2aa751db8442af87", 1648657722444, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 239694]}]}}, {"hash": "20489d6337d230d5b5e833ad6cb290f22da8d0fe278fe01de42c38cb6b266c5c", "plutusData": {"constr": 0, "fields": ["930403d9befbbef35963c33554322f08f0cd7f292398f964cfea95e9", 10000000, "2415e279867299332b83da6ec1178f137c816ef9b01d9126d3be1aa6", "416c654d6f6220313536", "da13ed22b9294f1d86bbd530e99b1456884c7364bf16c90edc1ae41e", 45]}}, {"hash": "20509a57de7dffc82b72ad0ad92ca92a6b6ef96ef368a1407ee8f97733530138", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["3fb0efd17304d74896130d9ea419a9883a2ef3c8bf9f9e39478dc210", "74574d54"]}]}, 1648811202000, 6029766, 13478]}]}}, {"hash": "0020533e4f95ddd0022ea38f26cb5e64410cdc3ff90bc7d289f00027ccc65b88", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, 995, 9660193049297897, 10000000000000000, "739a9396a004a8abde834ac744880f492252268501d546a4377d4a74", {"constr": 0, "fields": ["f121024921d805f9137096adde760cb436d01122dbda322cf071f6a0"]}, 1000000, 2070352]}}, {"hash": "20542dddf62037f67358634e535c56d361f2daae97e27a7732f4a5e0506f76c2", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4141444174"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["294870e187e8f269be1a306b8fab8a3e466aecea690230df373a78a5", "41414441745f414441745f6e6674"]}, 995, 162261226895057, 100000000000000000, "797334f083945052a188f6721fc856c45b57c9da861eff6286b85bbb", {"constr": 0, "fields": ["b69786fd245f216731c9b76ed7e7e6e862c29e53695f9bf71e07a373"]}, 4000000000, 1232580351]}}, {"hash": "20543a9fea5d97ee4a333ed84078cc847eedadba67f016c5d0a50c21b937666b", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["457d851c5c541a0ae8eccf6a26dbf1e652f3871e7aa5299b6e202655"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["5b73e1c8c9127c905df0074c044a77003a647b76abd4c22cf8a28443"]}]}]}]}, "457d851c5c541a0ae8eccf6a26dbf1e652f3871e7aa5299b6e202655", 1648603048813, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 282808163]}]}}, {"hash": "20564d2ce273a91a974a9cf8e3197b9280084c8dccfd9a3f146e38b59c3c9763", "plutusData": {"constr": 0, "fields": ["bc2d2fbbfb6f69b1ff48986bc1e167a40b88fe6a8e09a810fe113a16", 200000000, 400, 2, "094ea7b043c169a1caae752fdfb6a4a4803d0da9daa947e1594ce2ed", "6b696c6c6d656966796f7563616e", {"constr": 0, "fields": ["fd587f5783da992ca922b629a304c7e6616bba45a0ae80a01d76f75a"]}, {"constr": 0, "fields": [1651917563000]}]}}, {"hash": "20587e336f430169f2025741e18410a31cabbe1f1d6090e9de79039c658a3de8", "plutusData": {"constr": 0, "fields": ["c0c993b98e2404a971f87e33c7947a9ac0fa13d3cd35ec7682a7ea9541c71539ce711a0be33ff58a9b6a000fe10d6461f13168c0bf8c9458de2277911d41150d", {"constr": 0, "fields": [{"constr": 0, "fields": [5517686659815005, 4294967296]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 1, "fields": [1651860473001]}, {"constr": 1, "fields": []}]}, {"constr": 0, "fields": [{"constr": 1, "fields": [1651862273001]}, {"constr": 1, "fields": []}]}]}, "555344"]}, {"constr": 0, "fields": ["85915ed66d676887fd4f3f4b628b07acf8f8858588b7f4169f5fd6c3", "446a65644f7261636c654e4654"]}]}}, {"hash": "20594c1abcc0b8d3bcd5140c921280f851be9449b9debc4d2f8c8be47c4569fa", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["34d1adbf3a7e95b253fd0999fb85e2d41d4121b36b834b83ac069ebb", "41474958"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1650536358000, 0, 3507]}]}}, {"hash": "20595b00908e75193e33b5c1d529e09d82446f9e8ee6722379c9fe34d520e2d2", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["1dd45f4d1bd499c526f5666a34a1f6b0460eb2daa51fdbe19c2bb3a0"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7c2a903d113c56e518b223050cd10032a8de88e28393f5059c1ca5cb"]}]}]}]}, "1dd45f4d1bd499c526f5666a34a1f6b0460eb2daa51fdbe19c2bb3a0", 1649129086427, {"constr": 0, "fields": [{"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "534245525259"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}]}]}, {"constr": 1, "fields": [1]}]}}, {"hash": "20665bb7ecfa1dbd3d8196a23673cded49e23bb8d746e4c9dd076d44b01e1008", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, 995, 16123807624271425, 100000000000000000, "45e4f8c8ec26420d166787e75363aedd300dcd2701b56ea75f287569", {"constr": 0, "fields": ["f2e6e47462d28c4095fb926f6b5f020b4e14bf17e747aab03a2c8798"]}, 5000000, 12404018]}}, {"hash": "20671f1ba48a680dc7a22ef1353c94b7a410cfe176b58c6de7a1f4c71c3270f0", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["5aa1a1c51e07f11a170d6992ab4bd58edd3b0eacbd7ed58878445ec7", "4745524f745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4745524f74"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["c28ab019a2df9e678c0f629cd3f0c6f253f7a0d25bc4171a53fa83c4", "4745524f745f414441745f6c70"]}, 2000000, "153e1a9e04ea7d5f7c54484a3827c64977519de2da887ae3866a4517", {"constr": 0, "fields": ["931b91ae61c207fd18e5f08808ae93e02049dcbb90c23eeb0d7e6759"]}, 1379280]}}, {"hash": "20685dd6ee99788cd96f661f567428ca8150eefa3c3d66d28de7ab71960c09e8", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["78bb8a5566ee4a298a2348aeab8a66dfb5f6f63d7cb2ff49de7446e259fa0273"]}, 0]}, 1651665250000]}, 1651674338000]}}, {"hash": "20698a248f9454f25f3678da3a714702788cb0678a06fe082c28b80c439ba4bc", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["274d443e6d504b98487d14546e22ca77cc2a5d05ec8294627ae35c4f"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c182ef8fbdd4d98b3bb2650e6bdc8e09ea024be9fc800f2b4e1b589f"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["274d443e6d504b98487d14546e22ca77cc2a5d05ec8294627ae35c4f"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c182ef8fbdd4d98b3bb2650e6bdc8e09ea024be9fc800f2b4e1b589f"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 2, "fields": [1]}, 2000000, 2000000]}}, {"hash": "20700e8a9d95cbe27e22a2194da61d6ad3a655a0b302bdf8e4cb79a4b76bfab8", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2928ff810ade867fa1b58cb88ff0f44ac42de8692fe33c4181e59eb0"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["64703229b79c2b08b8b0f7382676d75dd714cf8b277d312180340354"]}]}]}]}, "2928ff810ade867fa1b58cb88ff0f44ac42de8692fe33c4181e59eb0", 1648501490893, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f54"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 1, "fields": [35069]}]}}, {"hash": "20704d66b28ac1e3713cf96967896a7df08f7ba80995788bf7034dc458d8343f", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["c53da0135b2db164655baaa89dd329517c8383388aa6466afb80d1ff", "54414441"]}]}, 1648464980000, 0, 0]}]}}, {"hash": "20715cd18e894b4f271fbace16f1c2af96f6a963c0b9358b6558b349c7b5dbfa", "plutusData": {"constr": 0, "fields": ["a1c13681124b9bce383c9d32685f9c29b77659bdbf67b79634300202", {"constr": 0, "fields": [{"constr": 0, "fields": ["a1c13681124b9bce383c9d32685f9c29b77659bdbf67b79634300202"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["bf0a097cd4eaaeb3faad21cb8eab7a6a4b56c9216b5b94cae360d70f"]}]}]}]}, {"map": [{"value": {"map": [{"value": 10, "key": "7447454e"}]}, "key": "2357c781baab37de2a79c54f8aa727798cc8fa59127c89d42b9a1be6"}]}]}}, {"hash": "20724e7e85fd730d25156a2566d03cbfb39a5df7fcc04f9ecc0acf3fc48f9e9b", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}, 1649417055000, 62460820, 1810038]}]}}, {"hash": "020752ebcdf025b9e6f8a35729c8606f257f3a8bc3e09a81895b7c30f422019a", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2f4a05d1610706e3d2a46527bf244de628c825a374e8acd0f3302bfd"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["4989ed639a05d5e5e1836bf467d0f8bfdf4eaee968803d40b480311f"]}]}]}]}, "2f4a05d1610706e3d2a46527bf244de628c825a374e8acd0f3302bfd", 1648553048996, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "01775459ea42d155094e18c52697cb27fc802b8d4c51dcfde67432ef05586344"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 51211]}]}}, {"hash": "20767bfc7d752596fc006b3a9095bbc2bab40f620b0a44680ece5e6a71f78857", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}]}, 1648466107000, 41599656, 8256]}]}}, {"hash": "20786bacd09d25d836c57846aca6cb63e862bd8cfaefa9167fa09b2e558d24dd", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ae321cf5384eebf94d1fcdc7a3099dbe31d1c7d54a5d53cbfd92b734"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b3a7de3573dfb0e3a6c31689b96d9d9a99bdc6352fc152da61a9f617"]}]}]}]}, "ae321cf5384eebf94d1fcdc7a3099dbe31d1c7d54a5d53cbfd92b734", 1649455698977, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "775348494241"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 105517336]}]}}, {"hash": "20816b38ab1dc837cbe965bbb45f4656c456999f64aeae4fbecf6d90952a959d", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ae2ba9debb5ae1fd65d93d266a32de308b2f55b6d08d53fe795e7a1b"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["84a4d02cab5f7f1f2e63f5028a5cc3651ad2b51c0a97f3521a2dd714"]}]}]}]}, "ae2ba9debb5ae1fd65d93d266a32de308b2f55b6d08d53fe795e7a1b", 1648923534267, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 1, "fields": [168049]}]}}, {"hash": "20855de3d39062059fe7c33265ad8881b32b9a09532a6f6d247554ea314f5a89", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["4d942ba76f3019baba02243ccfd0ff6731f191191c802b008c5ddefa"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["25fbaa46145984a88ef21deb593f6e8f1411987390f3abe560897708"]}]}]}]}, "4d942ba76f3019baba02243ccfd0ff6731f191191c802b008c5ddefa", 1649504138609, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}]}]}, {"constr": 1, "fields": [17843587]}]}}, {"hash": "20884b78a98a056606960098a2cfa66273ea0ab7ce57a0d8f4e912f1b12e1cbc", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["2ddbe660547e000cf407a6e5d3d6342d43e313589febc0af6bea00c4", {"map": [{"value": {"map": [{"value": 1, "key": "123456"}]}, "key": "d6cfdbedd242056674c0e51ead01785497e3a48afbbb146dc72ee1e2"}]}, [{"constr": 0, "fields": ["2ddbe660547e000cf407a6e5d3d6342d43e313589febc0af6bea00c4", {"map": [{"value": {"map": [{"value": 8000000, "key": ""}]}, "key": ""}]}]}, {"constr": 0, "fields": ["2c074e3a86b0bab958562128f26bef287adb30daf1b40553d00e6c2c", {"map": [{"value": {"map": [{"value": 1000000, "key": ""}]}, "key": ""}]}]}, {"constr": 0, "fields": ["cf67ee42bb64a940ea8902ff7f583de2f75e04f3f23b9d220879c87e", {"map": [{"value": {"map": [{"value": 1000000, "key": ""}]}, "key": ""}]}]}], 1648509296000, "2c074e3a86b0bab958562128f26bef287adb30daf1b40553d00e6c2c"]}]}}, {"hash": "20892c6eabfbbdccc3c024618eb22651ee003f424605081374d4974f208cf131", "plutusData": {"constr": 0, "fields": ["e16482822f2290ea4d5a9abe30d141005ab18650f380ba4e7a3ad1fd16d7016d2032df90f1693a7f4f369ce45cac31ef14539808b53f07273af286115f678f0c", {"constr": 0, "fields": [{"constr": 0, "fields": [31959645680541, 16777216]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 1, "fields": [1652578028001]}, {"constr": 1, "fields": []}]}, {"constr": 0, "fields": [{"constr": 1, "fields": [1652579828001]}, {"constr": 1, "fields": []}]}]}, "555344"]}, {"constr": 0, "fields": ["85915ed66d676887fd4f3f4b628b07acf8f8858588b7f4169f5fd6c3", "446a65644f7261636c654e4654"]}]}}, {"hash": "20948b841a0befd2999d4c2668b7e99e1825de221c7a9ca3dbc38c49ada9d7d3", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, 995, 13093978890934752, 100000000000000000, "6a20b85d55802efde0bb17fcbbc0ff1f8cf0a7a816cf5fa17de73055", {"constr": 0, "fields": ["0e2ac4b8584d04bebe7898a8711985f51ac9d22fbaec92bca557a70f"]}, 8000000, 15274196]}}, {"hash": "20979d89fda870436c8ee1b268b3ca25f0d374b2d870dac99a47fefa7f538f6e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["3a4786bac327cf02b08a4d85db88d146a60fac9d3cb1cb8005392140"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b10a34a6fab33bdcdc230450d6d108dea77089bdc3d08c57930fbd42"]}]}]}]}, "3a4786bac327cf02b08a4d85db88d146a60fac9d3cb1cb8005392140", 1648565132055, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["698a6ea0ca99f315034072af31eaac6ec11fe8558d3f48e9775aab9d", "7444524950"]}]}]}, {"constr": 1, "fields": [842706]}]}}, {"hash": "20984cac3ae16b5d868544b1da3eb9f2cdb6992aa0aba2e614d448f664854368", "plutusData": {"constr": 0, "fields": ["00", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["df79e9daef0bd7e69afee57f5c6b8049e786b8dd7213a2d440ae36c8"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["8f71131c638d75e21a46f66260255ce394b6da4974c3a1787d1bf38e"]}]}]}]}, {"constr": 1, "fields": []}]}, {"constr": 1, "fields": []}]}, 2500000, {"constr": 1, "fields": [92758153]}]}}, {"hash": "21006e3d5b63c0b79191f97f7a1a808819da28611e1dfbab04fa8a2ef3c00cc6", "plutusData": {"constr": 0, "fields": ["2a", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7a2570c64a9127b6e5bbc1191e5d0c0ed664bff9a1f326b2eb2ca204"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["8b01d52e7c8914950ed13b497ccc6f512637fc2c278ed06d2aba6745"]}]}]}]}, {"constr": 1, "fields": []}]}, {"constr": 1, "fields": []}]}, 2500000, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 560000000, {"constr": 0, "fields": [26203]}]}]}}, {"hash": "21008bd0c8f2e1141933539801f3541253a964b0b352a307cd74ba835f3f3fbb", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2cc4ff62762bcd0e772e4485cdb8fb70816eb9236e8de7eab7611470"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f7fa7820006c39426f794947a88aee5c8b4fd207fcc2c87d546a17e7"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["2cc4ff62762bcd0e772e4485cdb8fb70816eb9236e8de7eab7611470"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f7fa7820006c39426f794947a88aee5c8b4fd207fcc2c87d546a17e7"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, 8003887254]}, 2000000, 2000000]}}, {"hash": "21072a0cb60b631f92cb126f5e6a0169269d07fbe53a75802d98fb2f88fc782e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["514bea316c280a382aa855b20fac6242d891477ddd813c0bdd37b925", "47454e53745f414441745f6c70"]}, 2000000, "7ccae09b7db6c1175ea8cacc7722b6876f0ff85c87195c2ad826e1d1", {"constr": 0, "fields": ["77c008b25bb170da00f8bff2e5d52d3e63045ea900ec5d0447a550ab"]}, 1379280]}}, {"hash": "21079ce5bb89dd68b1df0c4faa373b5c56761b3768b0655ada8ec55fbc5405f4", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "775348494241"]}]}, 1649538503000, 37126840, 806602]}]}}, {"hash": "21108c2baf433daa35f0b8e64df8d94b039ec4761950abe27ab8a56271088fb1", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["678f37925f05ff0d2680e3c701176e50417dfecd2a8f6c7e6bdeb5a7"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["89decccc1d63b716fe1633bf80b4bc3be07132e7b36b03eead7f8e4c"]}]}]}]}, "678f37925f05ff0d2680e3c701176e50417dfecd2a8f6c7e6bdeb5a7", 1648924478919, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 2, "fields": [415513, 10193]}]}}, {"hash": "21175a95fef04363d9b622e3c44f8ff3a1fd1698c65de8c2b88b0e2a0e69365c", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["514bea316c280a382aa855b20fac6242d891477ddd813c0bdd37b925", "47454e53745f414441745f6c70"]}, 2000000, "6f5e63512a2d3d0158db83e357b46f48d28ac23a2708dc45d6e6ac32", {"constr": 0, "fields": ["2e05f032833b5a5bbe480798be297c3575292bed4c1fa8bc4f32a935"]}]}}, {"hash": "21181f1a9ec6bdf0886b80121542636c15d6abdc7e0ddebb50cd993a30c0e8a4", "plutusData": {"constr": 0, "fields": ["ea2b6b11bcbb2202d97327244430a6b6574062afdf9e5182c30dfa7e", "62ab0ea0c2154184210e5e2537151f8d2c5cb1009f761644483f07e8", "", "", 500000000, "6141414441", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 1000000000, "", 604800000]}}, {"hash": "21207c97466909b0254a4a500a17594d104bb7defdab08b503ad226cd8b962c6", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a49a9028b1085c1707f84024c98a30e0c2f8e82f23e2f6c8d40e8172fd89f301"]}, 0]}, 1652811305000]}, 1652812937000]}}, {"hash": "21209a33e52f4d813afeba145922b6f93f58eb63fe114361883c126e7ee5bf4e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["c3b39f2855f1c15c1d773f5cc51fc4c9987af269435fcbc6fe452cc5", "634e455441745f414441745f6c70"]}, 2000000, "92fad5efa0999bdb80063590f279402fb4cc4f0fe25d4b5d5056e2a4", {"constr": 0, "fields": ["d5d857f876719a0f5978c112c0d6b4172cd539c697a4ab93cabc2696"]}, 1379280]}}, {"hash": "21257ac95eb7e958b2ac15a65a885f10747a9fed315bc3e5bc4d913dcfada903", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["514bea316c280a382aa855b20fac6242d891477ddd813c0bdd37b925", "47454e53745f414441745f6c70"]}, 2000000, "7ccae09b7db6c1175ea8cacc7722b6876f0ff85c87195c2ad826e1d1", {"constr": 0, "fields": ["77c008b25bb170da00f8bff2e5d52d3e63045ea900ec5d0447a550ab"]}]}}, {"hash": "21258ddb0989af076fece72c5e985d95ddb111214706cd690140090f22875f1f", "plutusData": {"constr": 0, "fields": [2626944217556, 295873, 2399652, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d05b4bc13929b779eb8e26be457ecd9c4aa8614a4e4226abefa89c323ad5394d"]}, 0]}, 1652874586000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "21321a23683bfd5b8c7b94db8d4456becf0f312a93f1cc31b6fc106bff0551b1", "plutusData": {"constr": 0, "fields": ["adfca23264fa7129806e7431e86a31206aa77b8e09fe08a22da176e2468181ea32f540c8bc435cf9cc92bee65b4f01d453b9492edd568ebcf67e1f6ba0c1ee0c", {"constr": 0, "fields": [{"constr": 0, "fields": [2712496713401541, 2147483648]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 1, "fields": [1651330322001]}, {"constr": 1, "fields": []}]}, {"constr": 0, "fields": [{"constr": 1, "fields": [1651332122001]}, {"constr": 1, "fields": []}]}]}, "555344"]}, {"constr": 0, "fields": ["86209b15129c2ce923214c30ebb8901ef4866d6f00697df1259a4eea", "446a65644f7261636c654e4654"]}]}}, {"hash": "021326c9b25f230e1643e27bcdad069a272368c92d798d6dfc625a5b72a6f53c", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["33706f332d97aa93bf32107759b964fab0170bbde97a8aaced1e7b0e"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7c54630bf2737154fa5916750ed0cb153c42a7ef5e3236518005c3fd"]}]}]}]}, "33706f332d97aa93bf32107759b964fab0170bbde97a8aaced1e7b0e", 1648631996711, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["769c4c6e9bc3ba5406b9b89fb7beb6819e638ff2e2de63f008d5bcff", "744e45574d"]}]}]}, {"constr": 1, "fields": [436073]}]}}, {"hash": "21342bbc15942f070125b65cf7a416bdf85fd52449a087cfc50ecff075302149", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e89577f55a6fc98ed1bf252fd814fac9bd40f9691cffa42f461eb1d1"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["8200c9691172ba2d3a986d5270c90c3a56eb8a6032d98490af4742cd"]}]}]}]}, "e89577f55a6fc98ed1bf252fd814fac9bd40f9691cffa42f461eb1d1", 1648487510492, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "775348494241"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 727]}]}}, {"hash": "21343e7d2e71d9da2bd0b2e2abab6b49ffa110d9d7e4ad263cd3823f3a0ce2fe", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b04317aaf3106df2e8b52efac347aba6b32fab940796b8f39285beed"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["18a353f311de5ae7b2b959a4059a8a187d2175fe11eba48627db70f8"]}]}]}]}, "b04317aaf3106df2e8b52efac347aba6b32fab940796b8f39285beed", 1648655252781, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 2, "fields": [4102553, 21180]}]}}, {"hash": "21391b7cf6ad6584816bd0b66f2acac1fcddfb77f3712a161f3794fdb5ba617c", "plutusData": {"constr": 0, "fields": ["97aa31b86a6259748d24e36406f8c69d91804d06fc8be70c601015fd", "844abbbf1ad73fb02d534dea15fd7ba2fe957c330f26890898193acf", "", "", 100000000, "", "", 50000000, "", 604800000]}}, {"hash": "21429da8a5ccbe941df99a0c3da6ba7aa6a50c12d6210006c448008a163fbfde", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1648465244000, 5559426, 18437]}]}}, {"hash": "21454f8ddf78115c17722bd81375bfbf7cdf536e2e729e39a8028768eb0bc777", "plutusData": {"constr": 0, "fields": ["9b02", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["efc0fb98d9564f9bf02b40259f107a27f5e914847c66090c92fa37df"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["487696a59bf0ceddc0050fa9adcd7721a27eb087034e8e9b7ae18b94"]}]}]}]}, {"constr": 1, "fields": []}]}, {"constr": 1, "fields": []}]}, 2500000, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 10000000, {"constr": 0, "fields": [6]}]}]}}, {"hash": "21469b18082a640fa4b21412fb33f613aea4685dfa0c73d17a1bdbce32d7d30e", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}]}, 1648652120000, 53265520, 10871]}]}}, {"hash": "21474e2664af8ee556d0249dee6c79113835b1d848d9f73b9178b5da02772356", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["675f6286bea4014b1b777ba69f85aad406171ad0835f9fe3150d576c"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d97f775ef0bbb2783360a8e86b3f5c827723f05f3092ffd6490986e3"]}]}]}]}, "675f6286bea4014b1b777ba69f85aad406171ad0835f9fe3150d576c", 1648506666188, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 1, "fields": [103812]}]}}, {"hash": "21499a72b64de8adc555aa5f05f468c13841098de1f1f683b154d7ba592f1d7f", "plutusData": {"constr": 0, "fields": ["064a94504fb77ac35f5dc470df9b60d0c81108603ed68c4218f0aca4", 12345]}}, {"hash": "21524fd6297afaeb887b5505cbcdcfa9c70dd821008a54145efde807da3764e7", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, 995, 8100637131311651, 100000000000000000, "9a04d416546b26745d136772bb165289231454a1748bde1821ede85b", {"constr": 0, "fields": ["23aec9ddce57a7634bbd4b355a789e181d50e397d9ce8d0fefb03067"]}, 13000000, 24689416]}}, {"hash": "21526ee6334e92db7b56d578cb1ef324fa4719a2a2a28ea9305f0a3443738474", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["4a073d40e30357b4c371bd69b930df3a3c855c90d295063f5c08abd5"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["17a8da92477a4f0db016a3c3a1f197c89b46491df3d6ec65b8f041e9"]}]}]}]}, "4a073d40e30357b4c371bd69b930df3a3c855c90d295063f5c08abd5", 1648624695798, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "548bb6c7de933525202363b031e247c003a403a36b17ef4488a17b8ace050056"]}]}]}, {"constr": 1, "fields": [6718]}]}}, {"hash": "21545cb2f932c5cbc93bd60ee7f3efbe7d1cccadfa851ff623c09f3a56fa3656", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["64ae4ec3d15e20bf2cf9eca37111295bbb85029164498458ecb4a3a3"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["636cb3f61df87fac901f55a9c2e20b2596afb7b0e31b59442e72e45a"]}]}]}]}, "64ae4ec3d15e20bf2cf9eca37111295bbb85029164498458ecb4a3a3", 1648727401522, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "524245525259"]}]}]}, {"constr": 1, "fields": [138642050]}]}}, {"hash": "21552a7bfab72136d2e4a1373b74a34ffe03f2149b12ca8ff973350d70738d8f", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a170339b29239117435680aae16270037a6e191afd8fdde6d0378077"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e2c8157ab9ee79d2258fdc3f5a7f52a5a44c5a249d1b7c3bd732f6ad"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["a170339b29239117435680aae16270037a6e191afd8fdde6d0378077"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e2c8157ab9ee79d2258fdc3f5a7f52a5a44c5a249d1b7c3bd732f6ad"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6", "4d494e"]}, 0]}, 2000000, 2000000]}}, {"hash": "21573b30b7b3af33160311616b5b7d61ad71f2737ff46086d11c104809194e4b", "plutusData": {"constr": 0, "fields": ["2ee498cff3e0677cd289f64c6390b09af871e3f8661b22f89d2b8129"]}}, {"hash": "21630b90130fca7c160051b6a3f3f8fd88ceb5f222eaec1c509c75c5dc648735", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7b08ce922a38c1742d541d4253e98d3e9469b05faa8548d670530499"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["9e13d7c18dbff5ff5d6fca2ca3280ee7aacff7b8483a750d2852e7d3"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["7b08ce922a38c1742d541d4253e98d3e9469b05faa8548d670530499"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["9e13d7c18dbff5ff5d6fca2ca3280ee7aacff7b8483a750d2852e7d3"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 3, "fields": [89999999, 50173425877]}, 2000000, 2000000]}}, {"hash": "21636d273e3ecd50e23f09e15ade05ce794d06b254d1a0e23c4053070b8a094e", "plutusData": {"constr": 0, "fields": [1651271275599, "46629efc9c5ddf1a78360f4da4dc387287a8238a5727ce7d02f6b658", {"constr": 0, "fields": [{"constr": 0, "fields": ["2da5bd8e6da5ef989f4b628cbebcf406476d6ac75100271bee8e30ccf40c5e4e"]}, 0]}, {"constr": 0, "fields": [41255773664907222322652662991890666906990876509533652290727508687525441573671]}]}}, {"hash": "21646a04f69c1660dda9901fa51413de785f09b4e9af042bef5ddea4e6a9be6c", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["6c32e5274ef55f3b2ab6b43c47214ac4f2a0879e0448e8ec9f0697f5"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d23212d58de0a0de66c2129e80a8fa405376b480a3336c944a264ed9"]}]}]}]}, "6c32e5274ef55f3b2ab6b43c47214ac4f2a0879e0448e8ec9f0697f5", 1649259366167, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 874]}]}}, {"hash": "21706faa1dbbd8901bd1be36b9212df55f379fa8bae561b150adac6f2e499355", "plutusData": {"constr": 0, "fields": [{"constr": 4, "fields": [{"constr": 0, "fields": [167449807, 100]}, -100]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["114493469cc88acfd76212ea8b01116596b37f75675dfd71c18d84f67e4c36b9"]}, 0]}]}}, {"hash": "21714d3f95e041a582be584bce9ae6347be8ceea7090054276491ea6e145d112", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b3f008dc81b097cefd0e7160e46824dc83b61818a31080a36f78802f"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["611dbe88318b056191783076bb7959e4cca7725fc927191aac08fbcf"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["b3f008dc81b097cefd0e7160e46824dc83b61818a31080a36f78802f"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["611dbe88318b056191783076bb7959e4cca7725fc927191aac08fbcf"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, 4311970]}, 2000000, 2000000]}}, {"hash": "21715b034626737b205a9d90e2a7cc6b76dae3a5a81b2c376e7a712a5f8f5927", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["6664736873646668"]}, "1106f95213ccf7f52ab7a56a22e60aafed1c5c7bc8bfd06682190307"]}}, {"hash": "021786b2c7a0765f264373c1322bdfe64baac354e369376c44554269cdd0595c", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["514bea316c280a382aa855b20fac6242d891477ddd813c0bdd37b925", "47454e53745f414441745f6c70"]}, 2000000, "767fcac616db286a93ba713c3c60313eda2230d4a20f51c66b952412", {"constr": 0, "fields": ["28ae0092f9cbc073188a6ab1eaeb0298a81d7de4a57afe64baafc73d"]}]}}, {"hash": "21794c4ee0de714ead1998a8e286a413897b44a171bcdfdd5369eca0d00e958a", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, 995, 3724854184530058, 100000000000000000, "08ba910f089ae6c7f52364f60115026811a7e10ad8042ad41791a7e3", {"constr": 0, "fields": ["48ab1bd06e7b8e1f3ff93c9d1af01dd669298eaef9fd5927b487327b"]}, 10000000, 53693377]}}, {"hash": "21844d04e801290938d7ca04129963e6310e4f68868be35fc91373e55d8c2a65", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2d55146d497043a099b4a800b24b848db50ccca9175fa4dd6de42f27"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["eb50f13d2cacf30e772da5d69cfa253e0fc3bc3efd3cd573177480aa"]}]}]}]}, "2d55146d497043a099b4a800b24b848db50ccca9175fa4dd6de42f27", 1648811195909, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7741564158"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 824116]}]}}, {"hash": "21864fbc753629651f123a4d2000ba30836b5182b358da7dae4df0d8073746d2", "plutusData": {"constr": 0, "fields": [1804122377113, 200526, 1665775, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7b9be09caac7b01d227c71ef584ab0ed8e548039bea9f92c9efe88383f5b564b"]}, 0]}, 1652776031000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "21870a9b7284a28201b589f2b1ef245fab6878826870a9d933903b183c5ba9f8", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d773c20d95f932dc4fb7c82b70b46851c5d5a11bc88c46405544d32a"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["175c9cf502f90b4be47f6c0f535454470cd843d70fa5326c26bf55da"]}]}]}]}, "d773c20d95f932dc4fb7c82b70b46851c5d5a11bc88c46405544d32a", 1648950840755, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534454"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 508453]}]}}, {"hash": "21881b25c82f530aa8edf4fc8938a4e7be856382fd644a35a3a6d10202bd8782", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["5aa1a1c51e07f11a170d6992ab4bd58edd3b0eacbd7ed58878445ec7", "4745524f745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4745524f74"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["c28ab019a2df9e678c0f629cd3f0c6f253f7a0d25bc4171a53fa83c4", "4745524f745f414441745f6c70"]}, 2000000, "6931da97ebc47fa6afc51af67ed1d1efd4bc31934d9cf1227d502f92", {"constr": 0, "fields": ["2c8f4b8b87814432982a5f915c36737119d7ea57026339e03df451a6"]}, 1379280]}}, {"hash": "21899a0a72ccaa0d3157a585e0c29bc2ae12431cd85b30bcf8a2833e133c540f", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["77fc94b8d9229b72b4c3d321f9ee0224474e7d983009aafd04846368"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["6afc277bd5997b7255060943a4ff8269370c7eeef88b2452f0d439d7"]}]}]}]}, "77fc94b8d9229b72b4c3d321f9ee0224474e7d983009aafd04846368", 1648482342959, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["698a6ea0ca99f315034072af31eaac6ec11fe8558d3f48e9775aab9d", "7444524950"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 16706772]}]}}, {"hash": "21956ee93fd1c50554a07d50c0ef79dd6afa60119b563885d62004fbcf8e6cfe", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e349ac8df23064dfcd60e25824e6c2bb68fe640b800c3d438dadc7df"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["92f943a2e3d5c27cc2dd8489ad633561caef42563d8854fb7c5332f4"]}]}]}]}, "e349ac8df23064dfcd60e25824e6c2bb68fe640b800c3d438dadc7df", 1648871081850, {"constr": 0, "fields": [{"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 1, "fields": [37582]}]}}, {"hash": "21962af4c1f8ca2563719be74d57794ea3451dc2b509fd530d3d536d5732d049", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}, 1648568239000, 46826751, 1241795]}]}}, {"hash": "21966dab614033b6cf784ba558138de6f0805323d74e3018007ab029648a64f9", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["364bd8c344a2c52949cfb5d49f5862d6a506330babddf1d08a407c31"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b4675b42975b419f15e86dcb73e91a584a3c0c72be9f8c85c64f4314"]}]}]}]}, "364bd8c344a2c52949cfb5d49f5862d6a506330babddf1d08a407c31", 1648481169455, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 2, "fields": [2371162, 10851]}]}}, {"hash": "22009d684e94c349f21db6ae7d084818b4ef182ffa8709a1a31b729e5a79e925", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}]}, 1649068803000, 40436, 429]}]}}, {"hash": "22033ba9c7e491ffc9dbea49df4842d5fdecb5d76ec8fa8fad6808d5e37fd27b", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["6faa66391a7261a4b73abec6c1da76e197ffad230e64d8755240c0c2"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["3682178e2ee6bbef0d7f613daf0d43557e95589a05fc742ebe9d8fac"]}]}]}]}, "6faa66391a7261a4b73abec6c1da76e197ffad230e64d8755240c0c2", 1648556055328, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 48662]}]}}, {"hash": "22045ede6479420c10305606e82e665609d98597542b37b788735b01f4476e26", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b9878343ed78bf8b45be07f24cbac1f5526618f0bbba6e4459d6d922"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["953d02d31740fa8c66f018ca7264441e7e60da6ee4d1c64eb0f1eb9b"]}]}]}]}, "b9878343ed78bf8b45be07f24cbac1f5526618f0bbba6e4459d6d922", 1648473590079, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 5052]}]}}, {"hash": "22067fb5cda317644f33dddb6b20e456b1ee1722c308ccea8a8ce34353225b08", "plutusData": {"constr": 0, "fields": ["a103975e48271f09365bc4141b5271474e818aaf00f96b9ef64bc775", [], "", "", 2000000, {"constr": 1, "fields": []}]}}, {"hash": "22069a5ce99bbd3561ee3701a4d60aae30b7aec98f174ff80f75d8eadea20421", "plutusData": {"constr": 0, "fields": [{"constr": 2, "fields": [50, 43460708]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["df06af0a90e0e2b7b44ce058ec7ac06609f78febb255b4615c5a36c9"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["4b3dd28562815a383203adc3e4f5e4b038758a95f99adf7bbe02b0f1"]}]}]}]}, {"constr": 0, "fields": [2235564905267541, 1073741824]}, 1653871523000, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}]}}, {"hash": "22082b1adc12c597b1694f1fa9518f5288ba1688acf1e2d0e567be752f4a4d6e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["daac69614054edf84891262140daddd1f92ea2ffd4f4bcf4febb0ee8"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["90818a54eff8c6a5a69620c999876a7cb9aa5f59f1aad2a9c62d7b8e"]}]}]}]}, "daac69614054edf84891262140daddd1f92ea2ffd4f4bcf4febb0ee8", 1651058610252, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["d311d3488cc4fef19d05634adce8534977a3bc6fc18136ad65df1d4f", "6c712020"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 4]}]}}, {"hash": "22100fdd82b98f73bcd0b1ef63acf8b61834c11251c19c6b471081d0df9cec35", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["07da207f57a8c04497a8581a538a8ba25f72f7c89f3b5c359e21264b"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2cd4f4faefa0682d56c0787b36dda5a68172705977515e3055f26e4f"]}]}]}]}, "07da207f57a8c04497a8581a538a8ba25f72f7c89f3b5c359e21264b", 1648793336848, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 1, "fields": [4644081]}]}}, {"hash": "22102b58fcbef30519ea84582a5b46460f8bd26b027b809694edfc42336721cb", "plutusData": {"constr": 0, "fields": ["2a", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e95828d1272dc4ee81480ba3e510693d5adcf2a94dd912a628acb34a"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["677b792fca8dcff4f243d2d57693c22a2b4b2f99c3f03da7ffd04d09"]}]}]}]}, {"constr": 1, "fields": []}]}, {"constr": 1, "fields": []}]}, 2500000, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 50000000, {"constr": 0, "fields": [4508]}]}]}}, {"hash": "22217e9ac0d80dc876e956c0ec9d9e40b3e5aa06b1be2c416807a2a4c1677e99", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["01c3a78e52649c307429442c8de886e55ce3a976f4a2890465b77279"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["08fe0c2a85b725d2212da98351776052b5bceb469c576e7c39301601"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["01c3a78e52649c307429442c8de886e55ce3a976f4a2890465b77279"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["08fe0c2a85b725d2212da98351776052b5bceb469c576e7c39301601"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["126b8676446c84a5cd6e3259223b16a2314c5676b88ae1c1f8579a8f", "744d494e"]}, 46195021476]}, 2000000, 2000000]}}, {"hash": "22237f40fb90dc052e233446cb668f8786a09f937de9e8994dcd5e54afbea22c", "plutusData": {"constr": 0, "fields": [{"constr": 1, "fields": [10]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["4afdebc92ec423b65231a7595cccb76240512bfbf63686a9b0690658"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["99fa744e71e41e08d867c0a46ce908e62b4fdba0730dc19c420e9e5d"]}]}]}]}, {"constr": 0, "fields": [7931610888273315, 4294967296]}, 1652976678000, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}]}}, {"hash": "022243decc8aee062fd3f23702601fcdeaf0e72f0361fb2234b6bd16d093bd07", "plutusData": {"constr": 0, "fields": [{"constr": 2, "fields": [1, 989242]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["797334f083945052a188f6721fc856c45b57c9da861eff6286b85bbb"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b69786fd245f216731c9b76ed7e7e6e862c29e53695f9bf71e07a373"]}]}]}]}, {"constr": 0, "fields": [5505662474041789, 4294967296]}, 1651860194000, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}]}}, {"hash": "22245f168e89f673172080bd23ef9aad07e6038d7e4cb4da42001cb22810c15a", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "4d494e54"]}]}, 1648589074000, 16782788, 92850122]}]}}, {"hash": "22280baa967e9d129130745738fe7e1eb8ec04cca298464dd79dbbbd46455cc2", "plutusData": {"constr": 0, "fields": ["9b46ef4cd7d0bf9e75ffe81bab9c8a1720cd7af513e1e85d5891776c", "70756e6b30363335333030", 10000000, "b1a02604568411a9c11766d1de25b0c181ff64b620ded38f0dde8113", 400, "821996b0f69d73f8b558171990b74cfe40e5d86ba0e9055458a2fb29", 100, "7ddd2f444548ba26de1bedc830bd1e19d17752c2cb92268c897769c6"]}}, {"hash": "22340c1e7f2704a7eca820b7e8b227de9a2da4d2bad9195874a3e26fee999864", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["3198957792e501b21eb26b75c99eb3f360de0dcc4ec01b70ef81379f", "484f534b59745f414441745f6c70"]}, 2000000, "d9e8ff82890c1272cd4a203a2e98905b70cdb14a0245fddf7b52c170", {"constr": 0, "fields": ["bf362d6a667cf87e33128e0c2c83fb68f64b80227b47678d84792270"]}]}}, {"hash": "22421f469f50e55cb94d0104e3ba367f8152591356ff994db52636b0d08915fc", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["60c1a35f99502a284c2215535753d5c256a8029cb55ddaf355b3481d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2f82054af4d946867aa27b20453eb4f93ee3a084e26e76ad10312cd0"]}]}]}]}, "60c1a35f99502a284c2215535753d5c256a8029cb55ddaf355b3481d", 1649092918310, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 38667]}]}}, {"hash": "22427c616e45258a5462927019de72b19dd6c4d54ece6cd5a106b35f43e0e8ea", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["6ba2386147b45df9fc1edc4205c09d8b48a9e7fbbb0fe1f8f0bccb5a"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ba3527a11597090a6156c966a055e591bcd4c24518d51008d0f87e72"]}]}]}]}, "6ba2386147b45df9fc1edc4205c09d8b48a9e7fbbb0fe1f8f0bccb5a", 1648551549128, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 222509873]}]}}, {"hash": "22435e33747be4486bf50242b00022a34f651cf781ba984c7a0176341f95ad3a", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e9aa1908ad388a187856cc0f906ee09f627f72b9daf13f43d0f41db0"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0635dc58ff732f156b83d3b6b8ea7df5ada413f04811ae1fb11ff113"]}]}]}]}, "e9aa1908ad388a187856cc0f906ee09f627f72b9daf13f43d0f41db0", 1649681753038, {"constr": 0, "fields": [{"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "01775459ea42d155094e18c52697cb27fc802b8d4c51dcfde67432ef05586344"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 76904]}]}}, {"hash": "22439e0b71738137c490b20e97c5560e416378b40a9115a7640afb9f52aa45ce", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4d454c4474"]}, {"constr": 0, "fields": ["845c337c265b63558b775bbc346585e54914719698429131b3bb838d", "4d454c44745f414441745f6e6674"]}, 995, 26556690101617847, 100000000000000000, "3f905b4d11e8fd931baea217cb1a351866b0b930b705de423829b8f9", {"constr": 0, "fields": ["1fc81da0a0d4bab1f4abaccefdb95aeb25d5266bfc425ed5c5959e3f"]}, 50000000, 7531059]}}, {"hash": "22474f7c0c6aac491805b6744360fd6af7c83826d8b1c94debc5f745163da19a", "plutusData": {"constr": 0, "fields": ["ad57366865126e55649ecb23ae1d48887544976efea46a48eb5d85a6eeb4d306", 1, "ad57366865126e55649ecb23ae1d48887544976efea46a48eb5d85a6eeb4d306", 0]}}, {"hash": "22501bc9fad54e5d901a9239f19d86574e7b22e09e8dd12d93d73684a733a54b", "plutusData": {"constr": 0, "fields": ["8c", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c8dea2a5d3bcc244066a235ef265388e3dee795f0476c982c28e0163"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["48a8ee2499e2b7b99aa9b3ae62e9ee9ceb6064bbb03c66993c62d6eb"]}]}]}]}, {"constr": 1, "fields": []}]}, {"constr": 1, "fields": []}]}, 2500000, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 20000000, {"constr": 0, "fields": [4730]}]}]}}, {"hash": "22516aa45732656d867123df27175097b6f6e6dc7caeb5402b7b0f9fa9509582", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, 995, 5229523799562812, 1000000000000000, "055a0bcd0422b8f210a097cbb447cc682408f54461dc339fbe304310", {"constr": 0, "fields": ["21bbad764779b88fcde989836c2c261cefebfdc590e378da0d505b9c"]}, 1000000, 382444]}}, {"hash": "22558b4a5a8675637c902c73aa0ceebc48caf179f582c34fe7f27f7eee3a9ae8", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0d9faedceaa43d9e56cb0d2d01c0d11e2074692e55f441d90118a89b96e0341b"]}, 0]}, 1651673626000]}, 1651695717000]}}, {"hash": "22573e263f7978124af7dd57a1a5a22227ad2026feafd98d5703c36a0f882a9b", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["c3b39f2855f1c15c1d773f5cc51fc4c9987af269435fcbc6fe452cc5", "634e455441745f414441745f6c70"]}, 2000000, "87070eaa4860e9ca0831e8a944bcd90ca933ecc385172a2f960f987c", {"constr": 0, "fields": ["db220579e0e2319767ab92be5cbf41e815a25757740f0b9a460fc7e0"]}]}}, {"hash": "22620f09e03be33f500943ae6a34180b9d53bdc7144c6f58821076811222f090", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7c9f1ca080b3735bae2a43a09bb712f775c7fb95dd7d1a711a6fa88d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["55803769e9994e4d22bec688dae3dea3436d0ae5f6283cca28d372eb"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["7c9f1ca080b3735bae2a43a09bb712f775c7fb95dd7d1a711a6fa88d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["55803769e9994e4d22bec688dae3dea3436d0ae5f6283cca28d372eb"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 2, "fields": [1]}, 2000000, 2000000]}}, {"hash": "22651ce1c90f10b4b9566ef86e005550359c469d67b989387acfcb6391d29414", "plutusData": {"constr": 0, "fields": ["5301", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7787ccb23fbfbc83a9af7060719986e6ce1fe834db4c3c7f16f6859b"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["428964da0bdb9eee814d46ad8727eebd21ef2d26c668225299a0a224"]}]}]}]}, {"constr": 1, "fields": []}]}, {"constr": 1, "fields": []}]}, 2500000, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 1000000, {"constr": 0, "fields": [345824769]}]}]}}, {"hash": "22669b98cb33c62b3cf54e71e649e54a9afaa636250c57ebe3f0003561c7721a", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f9b9788b5dceb85a9d78968bdf6975f3e49cba714bc43a7a20dbc22c"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d8d4efc4db59b8909dda3f06454016bc55fbc76e99485665058a44ec"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["f9b9788b5dceb85a9d78968bdf6975f3e49cba714bc43a7a20dbc22c"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d8d4efc4db59b8909dda3f06454016bc55fbc76e99485665058a44ec"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, 449133269]}, 2000000, 2000000]}}, {"hash": "22697eb66b9d90df7e0ad58341286f30fd775a1f28b0411bf5523c6216388e2e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["514bea316c280a382aa855b20fac6242d891477ddd813c0bdd37b925", "47454e53745f414441745f6c70"]}, 2000000, "8b13e888ad687b000e5b31f3eee3679849aa49923447f79c3a89c9bb", {"constr": 0, "fields": ["0d03fae0c199cfea69a53a993fcb83dd3601a64447ca5e3a4e0be902"]}, 1379280]}}, {"hash": "22715ecd4951a3e6f28fd37eb0151d213dd4c3bf9e21076f23a93708c2ab5537", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d", "446a6564555344"]}]}, 1652228846000, 13612500, 2]}]}}, {"hash": "22734b18fe51df9620eee1483eb96863b7d6c8f5f81f1b656db065b441963dcd", "plutusData": {"constr": 0, "fields": [{"constr": 2, "fields": [500, 446379509]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["746d041c2c67ead842f2a4f734998fbf825be77996aa96d0580ff778"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e527978a9e5477d364c14dd8affa8933374738ee89d4aa8938d6b960"]}]}]}]}, {"constr": 0, "fields": [3731833605004779, 2147483648]}, 1652803335000, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}]}}, {"hash": "22737a233bac21e612c3724d6862d08e4b99a4d38368ea267167afe80fda61bd", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["845c337c265b63558b775bbc346585e54914719698429131b3bb838d", "4d454c44745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4d454c4474"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["63e4edb737843f9b966ab1318259b3b4e165eb356eac93b3fa0bfa7d", "4d454c44745f414441745f6c70"]}, 2000000, "99120d664335d0498994e5504ba63e4874cca156c5d18485646cbf30", {"constr": 0, "fields": ["734a44d17437a41775319585f8146b979aefc424a086e0b5fe1b9eb8"]}, 1379280]}}, {"hash": "22741d5c2a7ae131a95b2b2b9707649e1dd7f4d466e4d3307b970aea527eb35e", "plutusData": {"constr": 0, "fields": ["89e67c4d571ce334dfd7188f22fd52789419f9aa12a45337caefb71927d82002899ec24de8972dcd946ab5f9a6f34f4d3e83062aef3ea563aeaa27778226100b", {"constr": 0, "fields": [{"constr": 0, "fields": [2004184459169389, 1073741824]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 1, "fields": [1652597915001]}, {"constr": 1, "fields": []}]}, {"constr": 0, "fields": [{"constr": 1, "fields": [1652599715001]}, {"constr": 1, "fields": []}]}]}, "555344"]}, {"constr": 0, "fields": ["85915ed66d676887fd4f3f4b628b07acf8f8858588b7f4169f5fd6c3", "446a65644f7261636c654e4654"]}]}}, {"hash": "22743f913f7c9847ed059134be99f30be4cc1b157b0377474dcfd6951f9ca2ca", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4d454c4474"]}, {"constr": 0, "fields": ["845c337c265b63558b775bbc346585e54914719698429131b3bb838d", "4d454c44745f414441745f6e6674"]}, 995, 485649069982031, 100000000000000, "0e597741d9b1722fb93351fe7f356c7a997d45296688f9fd63bbecf4", {"constr": 0, "fields": ["5233dafc96a022eecbe1c59514205eb72d3d9a83f7ede73baf5c8a86"]}, 1000000, 411820]}}, {"hash": "22759c60b0c25a937791101daa79aab0d5a5ae95b4cbc7e002bbd981466742ab", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534454"]}]}, 1648452030000, 33784592, 898]}]}}, {"hash": "22779ec39ac819303ddee987bd87c5104d28c833f2b0038da2d7b9a4e784a76b", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}]}, 1648637333000, 34129216, 36425204]}]}}, {"hash": "22792f41db42c4338b7879d7c580980ba25cef25c9738810541b6a9523618184", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}]}, 1648842123000, 39754875, 36517722]}]}}, {"hash": "22831fea076b9b50103492a651cafcbc84d9f1a5157ecacfa0ac88c1189b2adc", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}, 1648643517000, 50744089, 1293988]}]}}, {"hash": "22839de20210dab72a1c0b2854cb8d387c29f9f65d55848ff811b41d4874abdc", "plutusData": {"constr": 0, "fields": [829074970272, 171781, 629285, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["575352bde6adcef54edd845298f5edb5cd491e82987f7108fdc0d0640d17f4eb"]}, 0]}, 1651687400000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "22843eec09750c8fadd68aff3411f48fa305addf54a1dbdbf8bfe2e0b245fa5f", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, 995, 7543677515631632, 100000000000000000, "e8b9baf487ddc2fee7ca26c4112b426e11c1845c9312d2a070dd6955", {"constr": 0, "fields": ["5fed9925cece3ca9f69ea5c5d5ab7c5f6ee4bb7aaac72cac0314c6cf"]}, 15000000, 26512268]}}, {"hash": "22854a7c9a682374e7ff5b6f1b711496a63dd6dde10ef794f65fbe2ae5f4674a", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["51e7f1593ec4971aefa5337404ced10e0ccc20756d6abc88fb23b40a"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["1c20dc063434f23d283378b5f73f27a9ecff18c32ef104a760f95763"]}]}]}]}, "51e7f1593ec4971aefa5337404ced10e0ccc20756d6abc88fb23b40a", 1649263871769, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 2945004]}]}}, {"hash": "22889c29143b07217ae4d9158ab88faab289d467ab8681f89718aec614e616a6", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a43c77fdc0f37ae0112b63102d536118838bdd34e2805a1c590ba8e5"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f5898ad7f8be243a847a636d31914f50fcf18b6e1d68b53992e251bf"]}]}]}]}, "a43c77fdc0f37ae0112b63102d536118838bdd34e2805a1c590ba8e5", 1649264894914, {"constr": 0, "fields": [{"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 112156]}]}}, {"hash": "22947f32a541e613eab2463dd0bf5f4fe9f87b5af031a3df5981c8b555807ada", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["36c1058c7f9380d602ae42e8cef40e67724aa7554b070c80bd52b8fc"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["73eff2b5c8f69c614763c797c5af6142f584653aa5c192174d033c51"]}]}]}]}, "36c1058c7f9380d602ae42e8cef40e67724aa7554b070c80bd52b8fc", 1648513003458, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "775348494241"]}]}]}, {"constr": 1, "fields": [7752]}]}}, {"hash": "022949e5f344701cc49c079a2fe3a6cd9b6dba55dc56676484c7dcbd0ed4b946", "plutusData": {"constr": 0, "fields": [1897978494863, 225726, 1720568, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["1694ad29ac071af02764c673fb378183a3e9a6569974f6b221df6335410a76e7"]}, 0]}, 1652795480000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "22981a632be9f37b91a0306439f17db20153243b0353142f7ef1748457ddfac6", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, 995, 14139015935802082, 100000000000000000, "b801f4e4c74f0876a1d1c4897b8b59ae4c8ffa202536583b6cc6c676", {"constr": 0, "fields": ["b05881431ab6c7fbbc5889ab3a6b8eac37536569dd2f613af56f6885"]}, 8000000, 14145256]}}, {"hash": "22992ed3aad44dbf636317837f16819ef3ac3d95b6871e62861ab3169f96dc77", "plutusData": {"constr": 0, "fields": ["c91803f811e5470fb11d48e8c890467768d2d11aa037c0fb22bd50aa", "6dae8d01169562276967a8a26adcce71e863b1fd1231ec905849d41a", "", "", 300000000, "614d454c44", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 200000000, "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 86400000]}}, {"hash": "23004ea9512bc99cc44afebfe1fdea39ff60449fe1e9a3e06274f5b92203e8e5", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["6c308904c287b6a8b5d16baca9d75d2cedbff8b42a1fcf492c5a758b", "464c4f4b49"]}]}, 1648657837000, 2256092, 350]}]}}, {"hash": "23055b714584623c36ecb029b8e38db8bc5121c4ab9e5ece28c48a066605781e", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77585250"]}]}, 1648449669000, 22103682, 1533]}]}}, {"hash": "23056f75e7fd4ba00d65668a247f7fdc81e3d2def2c753ae361b6f5fdfd24b9f", "plutusData": {"constr": 0, "fields": [{"constr": 2, "fields": [1000, 868900907]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["ce1db5f4011b21029b45b21da91c4b3c3db1ba935ecf7312f7b3d6a3"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b398c1e5974b9de6d6a118e46d4ccc3e16cff7abbf6cecd518ade8e8"]}]}]}]}, {"constr": 0, "fields": [7673009907994641, 4294967296]}, 1652290368000, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}]}}, {"hash": "23086c37f2be7011ebd4b164dc410b0e8d49267a73d40b0cadc0a592b5a318f2", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["3fb0efd17304d74896130d9ea419a9883a2ef3c8bf9f9e39478dc210", "74574d54"]}]}, 1649013491000, 6483775, 13978]}]}}, {"hash": "23111e55dbd28d8ceb8d96251b0d2edb7ac89e39ef4ba670ab34cbdf2a94372c", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d22e101cda132f97adebdf5f3cdca81630c30326296edcd67e112929"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c4e851cc17a3c8a68d53647efe7dbd9d6569112afb9330b6afe6ebb1"]}]}]}]}, "d22e101cda132f97adebdf5f3cdca81630c30326296edcd67e112929", 1648630524310, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "15e9d957e80847f995633b28e8d313e8cc877e231913a187711e93e063c23dee"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 101813]}]}}, {"hash": "23133f496b55918eca14432fe240ddd609b578197a2bf007fe2e9d45654d65e0", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, 995, 7399500903664048, 10000000000000000, "b369fc70f8e0859c6cc032ba5486e6823116ee311a495bd97819f3d0", {"constr": 0, "fields": ["1c1579f16816f0da852c36b7edcf50eac48561cbc28a45282c8472c2"]}, 10000000, 2702885]}}, {"hash": "23140f1ede7e72a10f48f838123d1bd7b78d272e2f330bc82bd4ff9985511ac2", "plutusData": {"constr": 0, "fields": ["8cda5d53fc9e2c9b3b779f8a5cef71ba09c3a631cf939dc533988a4057b2feec7451d025be6ceecdc8bb3ee5c061c941fab7648feaeb99d350b1ed23be187600", {"constr": 0, "fields": [{"constr": 0, "fields": [84069983088005, 67108864]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 1, "fields": [1651770598001]}, {"constr": 1, "fields": []}]}, {"constr": 0, "fields": [{"constr": 1, "fields": [1651772398001]}, {"constr": 1, "fields": []}]}]}, "555344"]}, {"constr": 0, "fields": ["85915ed66d676887fd4f3f4b628b07acf8f8858588b7f4169f5fd6c3", "446a65644f7261636c654e4654"]}]}}, {"hash": "23155fa68ef7afe4105244caf8c85db3400b02b89082c1863aaf3f390689b423", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [25, 45176721]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["63262f94ee700a08cd8b251da0abca6da1dcad628b47674d07427070"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f56caa60eb366cfc6ff578b61de253c06f556c57c3f1736010c7e2e2"]}]}]}]}, {"constr": 0, "fields": [1902279783860395, 1073741824]}, 1653951157000, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}]}}, {"hash": "23166cfdd49c4de4fa9cd26c1667e33db9d8ce714b3530d71f3d0a1d43600707", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77585250"]}]}, 1649261620000, 4928, 1153]}]}}, {"hash": "23185b68e0d27eb7575b71f56ad147d4513747969cec6bae9b20bb74a60a8484", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f3e2f21f0d675e2f50ee5ed62ae53a4cdb4bde148a028bdfea1bf411"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2520e995002d367ee88e3b0808819d330a0c3e1f0400ddbd3e8a8b54"]}]}]}]}, "f3e2f21f0d675e2f50ee5ed62ae53a4cdb4bde148a028bdfea1bf411", 1649177122092, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["3fb0efd17304d74896130d9ea419a9883a2ef3c8bf9f9e39478dc210", "74574d54"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 20]}]}}, {"hash": "23229d6b7867657903b9a7ae19c1ca8f31f90e4c97f0dacc68e5f64fcc83ec38", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "534245525259"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1648504344000, 767251, 26]}]}}, {"hash": "23234f2eec5cfc9e882dc64050dbff7b5f4b28517c00ac64242f1b36e9a23a46", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["59dc80f44c41b0546e0943f8691ab42399626f4b9b231e5ee8150a9d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2162aa043b10c4a1631bc8a8345ae4ca5fa9debb370fd13ae75f0849"]}]}]}]}, "59dc80f44c41b0546e0943f8691ab42399626f4b9b231e5ee8150a9d", 1649903017563, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 1, "fields": [24403153]}]}}, {"hash": "23256af67c576bd1e30cced4949768431a4f533256270e1ba18f1ea788863cde", "plutusData": {"constr": 0, "fields": [3872078951649, 416827, 3544625, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d6413922c124f0bc3f257d18c13e50f3b71d1366c40a004eb35ad1413ee73c6e"]}, 0]}, 1653309105000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "23277d52a54ec2814f95224b4fa9b3335ff2c351cde8c21c5a2110761a488d51", "plutusData": {"constr": 0, "fields": ["5cc7e58f6501262244aac6058e799bffb88c455fae38bcaaef869561", 500000000, 25, 1, "b1a52f53c30e110b76ede468fabd249ba4de4bbc8aefcebc7b723b53", "6c656568616e", {"constr": 1, "fields": []}, {"constr": 1, "fields": []}]}}, {"hash": "23315eead6c5c8d2f93a9e03c1fe53ae07da8ab14139eeef776db57d74e8e944", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["9b50ea74a2288dfa0f6e1c78904ad59a261ab5be3037fff9667d89ea"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f00c80af2f021da2d3a5917f9c2bf702725a00894e8e2ba959ec7751"]}]}]}]}, "9b50ea74a2288dfa0f6e1c78904ad59a261ab5be3037fff9667d89ea", 1648468442963, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["d311d3488cc4fef19d05634adce8534977a3bc6fc18136ad65df1d4f", "6c712021"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 120931528]}]}}, {"hash": "23329fe640d7eb7320bdf7954fdb5d7eb5695df23197a9ae962bfaa14b65bfc5", "plutusData": {"constr": 0, "fields": ["313363b200c9469f97695a7caeb3b448c13d4cf66e34735b0df6f4fbc204c869482177ccbc8dbe495a9f4e9251852f13b31645fe9922d7f943bb38b25e2dde0f", {"constr": 0, "fields": [{"constr": 0, "fields": [1040245905832203, 536870912]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 1, "fields": [1653381578001]}, {"constr": 1, "fields": []}]}, {"constr": 0, "fields": [{"constr": 1, "fields": [1653383378001]}, {"constr": 1, "fields": []}]}]}, "555344"]}, {"constr": 0, "fields": ["85915ed66d676887fd4f3f4b628b07acf8f8858588b7f4169f5fd6c3", "446a65644f7261636c654e4654"]}]}}, {"hash": "23383c8982575c338fd690d04eec817b6578284c44615d1c870f1874ebdf6a2b", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, 995, 1892317591748829, 100000000000000000, "e427d0992a486058778ba1663b142d6dbb85a2670d3d5053acf46f24", {"constr": 0, "fields": ["5d14a0811ab660fcb3fea31a093f2627f9420c6310596cbba60289f3"]}, 100000000, 105690504]}}, {"hash": "23421cee07519991cfedee05519643e55aeb7377e302751863ec65d703c0e144", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, 995, 1021516717376459, 1000000000000000, "eeb93b0716f3f35a032946e655f812c502e06827ba69d3b86609dd66", {"constr": 0, "fields": ["b6a83d2a730584a40b69e6f014a549d6bbd31e49afdf320dd5398d60"]}, 1000000, 1957873]}}, {"hash": "23423d672cccff121739e05ec69ba04d1eeba4708ee1229f881a6350c49627f3", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["c3b39f2855f1c15c1d773f5cc51fc4c9987af269435fcbc6fe452cc5", "634e455441745f414441745f6c70"]}, 2000000, "d292c3ec7e51c86045b9f6aed7a97501d82685e334e4c7d2fc1ec69e", {"constr": 0, "fields": ["5ec91ae990a4b6585f13cd89fa410c37a328ee292f51678faa6ad8e7"]}, 1379280]}}, {"hash": "023471e3e041e42048d53ce9fe0772dc340dfceae412b2344c053cd9784b44b5", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, 995, 17445560039549085, 100000000000000000, "efce360b8b6cb08b0d315fd199b23c44cf15bacdc0881f1ceaa7cec1", {"constr": 0, "fields": ["ad6bdcd0fcf6cc18f58bafebc89deae44f3e288bfb59c291f328a946"]}, 10000000, 11464235]}}, {"hash": "23484bffc600957874fa3ea093923b2b50aeb1476fd1e6e5954ac1173a8c51d7", "plutusData": {"constr": 0, "fields": ["271fb8eb588f2e7001672c21a23f0a4961e0290fc24a228da568f3d4", "669afb963ccdc822940fccf3d002839212cab4a43aedbc7f934d29c8", "", "", 150000000, "627272486f736b79", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 100000000, "", 172800000]}}, {"hash": "23515b39513526522047d8fa0cc41d9b077bbb162344e941f2f033097407111d", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["273726dd096972db9ba311cf21d511279b185827a87085650a4ecc77"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d16d259f09771b5a6d0f524cf8b1f56a768193b8ae43e2cf7f591528"]}]}]}]}, "273726dd096972db9ba311cf21d511279b185827a87085650a4ecc77", 1649086130993, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}]}, {"constr": 2, "fields": [1425000, 52668]}]}}, {"hash": "23595fd522be49cc7e26933f311df0425dca3b2c0f4a117fd3fbf73ec3cb9aba", "plutusData": {"constr": 0, "fields": ["e922e8166852073d6c1c9be0736530404c9c26d9ba1773e11d32d11c", 100000000, "3f5265ef14f89e948fd5b5f55419712ad1f0dd4d75ab26be13444171", "4672656547686f73743031353933", "6fedcb7aa63429a56bf18f3e3e5f37722a289221544400e24f6ed208", 2500000]}}, {"hash": "23596ca7ba8d724780f43dbda6c429ecf9dae4cae608215dcaeeb7ba7e473b73", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1649117918000, 47363606, 151953]}]}}, {"hash": "23607dc0bed661bd926fb38b59f6ada1d129685a71ada3afe5469c7bd676986c", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["75312cc8d0adaad050bf867280e72143f8acc9ba33afce9efb9a1ad2"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f484daa1bb398fe336e55d63207c63829c0bfae812a34602281fa664"]}]}]}]}, "75312cc8d0adaad050bf867280e72143f8acc9ba33afce9efb9a1ad2", 1648980213441, {"constr": 0, "fields": [{"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 22455]}]}}, {"hash": "23617bdd672792607bef5e8648a222226dabe32465194477ce0e5eb287c64500", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["126b8676446c84a5cd6e3259223b16a2314c5676b88ae1c1f8579a8f", "7453554e444145"]}, {"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "4d494e54"]}]}, 1648585754000, 0, 0]}]}}, {"hash": "23651b65864fecedd416c6f17f5b460b43f5ee12c4311d52e188696ebdbf60a5", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["c3b39f2855f1c15c1d773f5cc51fc4c9987af269435fcbc6fe452cc5", "634e455441745f414441745f6c70"]}, 2000000, "9ca58319842bd21ae8600055ec276ab58b96b8b6ca62913e206d138e", {"constr": 0, "fields": ["3eb5f65e33915ef806dbe3cdc003b07fe8092cc741899d8ee28fa4ea"]}]}}, {"hash": "23659bce5006a19f99e35cbfa823fdbc4bfbdb8e8dbfcd8b2622a0e1957bf967", "plutusData": {"constr": 0, "fields": ["8714b671a27af730e8dcd6d7917ebea8379b7759ad1c78c7aa771eb2", "bc1ceb94dfe90fb3352c94465aac159b9e23a48d740dba93d18ef63a", "6141414441", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 50000000, "", "", 20000000, "", 17280000000]}}, {"hash": "23667c4ce8f275e7bad83007bc6a4113fd99aabfc7ac094dc16fbf331114b63e", "plutusData": {"constr": 0, "fields": ["886ee787fd356226e051d63ab226234a96f7168de0b1f59ef05eea4d37a1f25de3dc43a127e9c2194eb803143e8e8dff2469bed64553f0ef9595c71d29aba008", {"constr": 0, "fields": [{"constr": 0, "fields": [6787779211378901, 4294967296]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 1, "fields": [1652157361001]}, {"constr": 1, "fields": []}]}, {"constr": 0, "fields": [{"constr": 1, "fields": [1652159161001]}, {"constr": 1, "fields": []}]}]}, "555344"]}, {"constr": 0, "fields": ["85915ed66d676887fd4f3f4b628b07acf8f8858588b7f4169f5fd6c3", "446a65644f7261636c654e4654"]}]}}, {"hash": "23689b00fd10f07a4eb27b89a40a24528d2f5700fcb806b3badbd49641b3e213", "plutusData": {"constr": 0, "fields": [{"constr": 2, "fields": [100, 93564166]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["bce68b21296d15f579d2861fa26ec304912df9793aa84b9eb3421b5c"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["118e854a8d993eb8a2c757023bc5cea5701b2ea237fa466692ffe4cb"]}]}]}]}, {"constr": 0, "fields": [403814149680331, 268435456]}, 1652101226000, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}]}}, {"hash": "23703b9af2bb3823a25a7c69bc4242a2b5fa48dbb72111aa6f2fa31142a72701", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f54"]}]}, 1648494089000, 24908514, 31488]}]}}, {"hash": "23749e975d9d5eea028d1231de3c0616352bcef7511f5535d4bf2d7e7e0a57ff", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1649164583000, 47886106, 154253]}]}}, {"hash": "23782b8f474e6632524cba64add8a84337c2486ed291434e604c3a3db0288874", "plutusData": {"constr": 0, "fields": [{"constr": 5, "fields": [{"constr": 0, "fields": [496893167, 600]}, -600]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["6b47b0e36545b71e1636cb2ade96603efa0fdc6d65ba223794df3d7830b019a5"]}, 0]}]}}, {"hash": "23793a61497a1586e95a44348960e3617ac31c8dd63e44e2779cb44606d0a8c4", "plutusData": {"constr": 0, "fields": [1270472929121, 193989, 1077189, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["816b9a9c9d19da80a84167c62adc0e339462ac4abbd6552b91b920991574ed65"]}, 0]}, 1652768609000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "023855ac04e963c952bd092a8e5b8c9b35c94fd0d5d6b07fec23cc70aa842cc0", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["126b8676446c84a5cd6e3259223b16a2314c5676b88ae1c1f8579a8f", "744d494e"]}]}, 1648464057000, 4529819, 18090]}]}}, {"hash": "23857cc621d356637b10c172b57ae6ed0b6827563c09b4ea6e31aeddae14de50", "plutusData": {"constr": 0, "fields": ["36894ba8004f401d19942ea8ad6ce89b107d4de8576130ec0151299a", 90000000, 150, 48, "694e3404f7fb128b34a03ce8f4d5e4ec971a96e7a1ba29e3a43567cf", "6d65676565", {"constr": 1, "fields": []}, {"constr": 1, "fields": []}]}}, {"hash": "23878abb9acf472b6eb93df60379a3eedc0c30d83a47a3d8c67cd92c210b93e4", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ae321cf5384eebf94d1fcdc7a3099dbe31d1c7d54a5d53cbfd92b734"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b3a7de3573dfb0e3a6c31689b96d9d9a99bdc6352fc152da61a9f617"]}]}]}]}, "ae321cf5384eebf94d1fcdc7a3099dbe31d1c7d54a5d53cbfd92b734", 1651356931731, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}]}]}, {"constr": 1, "fields": [38780001]}]}}, {"hash": "23896fd11514bcaa7262f0249f662264586ba47bec1bb40b1bf829676b682eab", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}]}, 1649125363000, 43816070, 37567007]}]}}, {"hash": "23911cba8eb9dab76ab94ee1a8c5ce7bdef30772aff1975c38fe8109cd438c58", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ae5d8ce169c5b23edefaaa624bc5a6b99f18256e5d57534fcd64fe01134910a0"]}, 0]}, 1653082334000]}, 1653083741000]}}, {"hash": "23921bbbd0f0eada5dda11fa66db285f76a8d6132e03c66b198fa28aab383263", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "534245525259"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77585250"]}]}, 1648383420000, 1776308, 0]}]}}, {"hash": "23936d2bbc24fc4b37102782146be7bbb1774979254ecc41b6b73e2a560c15e2", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1648598427000, 56807915, 518736]}]}}, {"hash": "23964c75fe13ad0983cc46efc55cb679293aecb29a53dae1b7177820e3fa6b97", "plutusData": {"constr": 0, "fields": ["d46d0ddcbf0001725f3e5e81ba1a1af9b813a674959cf338d5bc9876", "df20130c3a13f4533ff7c1b5d9719063cfe83b3d218507b3b444dd7d", "", "", 55000000, "", "", 12000000, "", 86400000]}}, {"hash": "23983a3a4d2e2163401e7b0fa06a0e1ca810ec7fa4b4d02b2a8f945c3a107b40", "plutusData": {"constr": 0, "fields": ["77b9841b3256c9601f8d4c477673b6fa3242ff848dd7318d27dd7014", 150000000, 500, 24, "624c166d0af8c62ec3e7b8f7731e522213bbf264c18a106b4c1e8086", "746573746164616e667431", {"constr": 1, "fields": []}, {"constr": 1, "fields": []}]}}, {"hash": "23995cc27174f0adee36703d8260302eb7097e649a814d5557ca631b84e1efb1", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6", "4d494e"]}, 9031747737, 0, {"constr": 1, "fields": []}]}}, {"hash": "24123ad83a559281454a412ed92be0672349319f67d2c55c0526469ab35dd79b", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "b3b9df82d3439dcb6bbda8b99a588ecd9b512c2b11f852623b0e298d3f5e2778"]}, {"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "534245525259"]}]}, 1649250247000, 0, 0]}]}}, {"hash": "24128afb0b99fa99928c25a288b6f3a78f52020bdcc392d0a982dc1e6a71b275", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7fedd64654aa4da503c5c726146a8986ae0e147a796a0f070ceebb2f"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["167f8e3105405cd24129bb961d68821bec74d27e088f7ed4141023d2"]}]}]}]}, "7fedd64654aa4da503c5c726146a8986ae0e147a796a0f070ceebb2f", 1648476099946, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 81796]}]}}, {"hash": "24141eb7cb7661ba1e4c3ada102e3d4f2b709453edf9e1fd43d45ca90fc84efb", "plutusData": {"constr": 0, "fields": ["d03612dc8ac04ad03126d1d9de7ac1fb7740f3d46e2454806ae9ed26"]}}, {"hash": "24167f82d2868dae2a6223e9cca45af44eb309f07952d90317465d6309c28725", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["1cba98ff2b738626c561d020058de6e5ea6c84af55e3df9672afc3ea"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d30b9d5ae404a9aa0ced5dc7ac2e8de8f7911007eaa61cd5e53cb97f"]}]}]}]}, "1cba98ff2b738626c561d020058de6e5ea6c84af55e3df9672afc3ea", 1648571461834, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}]}, {"constr": 2, "fields": [2705450, 340]}]}}, {"hash": "24176aa2be51fbff3c685ea3dbb48f91f1691b5806e3c8e09b966a245cf17542", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["856cd6508f010185d3f6cbeabb652b0989844e2abe0c57382c02838c"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["be0c76c674920953e71ca5c183d32e32595151f00ddfa6d197e8da0e"]}]}]}]}, "856cd6508f010185d3f6cbeabb652b0989844e2abe0c57382c02838c", 1648631085516, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 1, "fields": [3201998]}]}}, {"hash": "24181e6b167f7bd243b4f495de1a232b002b4cab45d5cd3a5a4274d0dfe4b1b0", "plutusData": {"constr": 0, "fields": [10, 20000000]}}, {"hash": "24215ede3c05731216facec07ef0cfdb166c1e9bf06e25a9fa83a1e800bf2f43", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c5e148175dffa32cdfe919a9a4189ca9bf1cc050388e8743582a4e30"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ff0d54fc253a0ba8b041859c7d5dd8f26380da94fe1461aacbff542c"]}]}]}]}, "c5e148175dffa32cdfe919a9a4189ca9bf1cc050388e8743582a4e30", 1648518753817, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["3fb0efd17304d74896130d9ea419a9883a2ef3c8bf9f9e39478dc210", "74574d54"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 246]}]}}, {"hash": "24223af82da05d889c65b1947bddfd9f629c32b00347a53e0f11842d44884ab1", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["5b69c34c79bb436344919c102e99cf11ebb8503c24e20d3de1e3e7c94df7b184"]}, 0]}, 1651680019000]}, 1651705281000]}}, {"hash": "024231bfc469f27a9d8246fe1f6df9975edf4f5cdebeb5cd989b9a361c8e5ac2", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1648546807000, 8921237, 34573]}]}}, {"hash": "24246b03259b4742c93a5c09630dd73e5c2b8479ab38018e563e5249edab7375", "plutusData": {"constr": 0, "fields": ["99", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b7f9694b86322f98a8e9333041073ea8b2705aebc4aee2570fa4d8cf"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["456def187e50707b128a183a954d42505613ac0ca352c18923f06960"]}]}]}]}, {"constr": 1, "fields": []}]}, {"constr": 1, "fields": []}]}, 2500000, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 1000000000, {"constr": 0, "fields": [181091454]}]}]}}, {"hash": "24251d378d58e7a26b3e0bbdc0e9501d2fe9bd6f9bbd238ce84827c9fae53de5", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d", "446a6564555344"]}, 55690560, 0, {"constr": 1, "fields": []}]}}, {"hash": "24283b10df117d0dac3a4b617619a19c62199c3905dadbabd2d9b73db62ef73e", "plutusData": {"constr": 0, "fields": ["471df6280bace31d952e3db26b3c4c1b96d37578b0d8071f38218ce0"]}}, {"hash": "24301ea398480ede0a0961d6dd4465642a35bcd944b71c0329fd502c2eb94fd9", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1648543850000, 186117, 370707]}]}}, {"hash": "24308cb30ccb48ec403a5204cb05809e0dfb2e54dbb7c3d41bf118a89e3467f6", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}]}, 1649504234000, 70435704, 11883]}]}}, {"hash": "24316ba82ee992a7f5984149bc5901df7c9f4e617113cd68b42ddf513fae3bbc", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [250, 490007687]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["c26c7ab05aad4fc7c613886e5d59553b1289b6b349991bf7ae3a2771"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c269cc21b6f295ee607f978468670c2face814555400677adddee721"]}]}]}]}, {"constr": 0, "fields": [8253203873943121, 4294967296]}, 1652897725000, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}]}}, {"hash": "24329db92c9fafcaf8e7d0d2c36e87bcc7f8e04030adcd4c5ee7ce67868bb181", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "b2ab12019a6d74df56c8056f6a5fe6f4b6cd5135d99ffe46b9a6b4864018ff6f"]}]}, 1648618390000, 50000, 1697]}]}}, {"hash": "24373a0be2569d03495577a489259494035b6188ce5ed137931e618b72e11761", "plutusData": {"constr": 0, "fields": [{"constr": 5, "fields": [{"constr": 0, "fields": [44678951, 50]}, 1700]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["75cbeead7de5be2165de04e8a19b5b0060abac51d4ae8758663b87fd2523220f"]}, 0]}]}}, {"hash": "024374dc43d11c5b4b5a70696ea3b59f90608398ff5de7bc6ba4a45a0ded3095", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f54"]}]}, 1648473098000, 51951, 579]}]}}, {"hash": "24395e92ecf58c4d6ed07ba649258e3fb46606532ec6c974d36b880a6fac2a8c", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["020173e5516112834f61a1e0dad90bda7d00eab087fbde84b839f513"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e2788dca0251a5af97d6b6deb31519a4d116e673bf60954778731bd3"]}]}]}]}, "020173e5516112834f61a1e0dad90bda7d00eab087fbde84b839f513", 1648999182639, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 1, "fields": [20841046]}]}}, {"hash": "24413fb1a940f7f15992475828ef7e30e9e6becaea86ceb1bf201b8ff34a3680", "plutusData": {"constr": 0, "fields": ["937dd1f65da586ec66430b55ec5816ec5d6317a1a8c3d85d1eea972d"]}}, {"hash": "0024483f1ba6bce4b0337ad39173562ede0ba1e09906e7d7956018f9f0d1f58f", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["3fb0efd17304d74896130d9ea419a9883a2ef3c8bf9f9e39478dc210", "74574d54"]}]}, 1649406629000, 9599844, 19846]}]}}, {"hash": "24486d7b51ccac526ce43f46a2da6dd6f300fb046f1a497ced6ec8821622b6d1", "plutusData": {"constr": 0, "fields": ["dcedbecf3d38e64aee4fb9b70313cc429cf01b5c38516a0811988101", 25000000, 150, 24, "b6f40c1a3b8eba9120c542e6b8c7829bec56e14202b8fbbf104fdca0", "636c696666", {"constr": 0, "fields": ["0f4862437e4473db96c86541e5fd76bee14b91753e2c288b75b967c1"]}, {"constr": 0, "fields": [1653560236000]}]}}, {"hash": "24491e7496fabcc3d8efc981bee044490ba63517898b3c5af74510971078cf05", "plutusData": {"constr": 0, "fields": [1032196761462, 195563, 804664, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["78fe6a608301ba8dbc3053ba16e09de4f5e8ed4e352d5375c6e17da32507c8a3"]}, 0]}, 1652084657000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "24506ddfb4ca559028852b369a19612c860a93f86afd881c12e58934932fe1e6", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, 995, 9135572030534498, 1000000000000000000, "da7c8f4003431cc9a76a9caed0896b92d52eca0cba899135dca4e7a4", {"constr": 0, "fields": ["fb559bec0187173e05df1a5ff2b21a1a264a4ae3fcc2a85d7f367dd8"]}, 100000000, 218924441]}}, {"hash": "24540aed101315eec80bf94035ce764cf987be03accf5250f0a8db6ca2ac8f76", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["845c337c265b63558b775bbc346585e54914719698429131b3bb838d", "4d454c44745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4d454c4474"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["63e4edb737843f9b966ab1318259b3b4e165eb356eac93b3fa0bfa7d", "4d454c44745f414441745f6c70"]}, 2000000, "26561e8e3afd1ea9aef45f7abde3df286ee51c3db11bb390548e9eb4", {"constr": 0, "fields": ["85908e1a2958e24c80e386364fdcccbd4a6680970633b1ac26256bcd"]}, 1379280]}}, {"hash": "24556a5218cda15c3991f17641d5ecb518eb333825593332f039e7ae6fcd6907", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["7b8064fd755d09d5f38eb3bd4a61fd21e292dc1c56b80effc04e3460", "56594649745f414441745f6c70"]}, 2000000, "ac06631090ea002ea69421056a554c7c42f22d34bce407ead99fb1bb", {"constr": 0, "fields": ["6c3d17b9258fd30c1f445a806ff29859884de2d32eee69c3c2971ffa"]}, 1379280]}}, {"hash": "24609bac63520ef6407cd264cdfcef23bfaadc46fca45aa748f468acf4a1fb69", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b27b4c8cdb0c9e1b78012548c5edd3154d3ec23018b921190406c956257283c8"]}, 0]}, 1651667279000]}, 1651682391000]}}, {"hash": "24636f109bfde056a18ab153abf07c483c4eb9e711d75d54d837152d545941cb", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["7b8064fd755d09d5f38eb3bd4a61fd21e292dc1c56b80effc04e3460", "56594649745f414441745f6c70"]}, 2000000, "5a8fc9bd7b4ba475c938638dabd7b5c60e6454571b200c50d0d7c6d7", {"constr": 0, "fields": ["7c34616fa95ae36ca7877b1ed74f0d9b9741282e2f9ec2227b01d914"]}, 1379280]}}, {"hash": "24640e8ae39cfc1a61b1f0a797e77af2088c283ee1f4c9158f0ea9b57b486224", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["698a6ea0ca99f315034072af31eaac6ec11fe8558d3f48e9775aab9d", "7444524950"]}]}, 1648465365000, 22272768, 98939884]}]}}, {"hash": "24670ced19d62899223be516882b5da153331676da33e898d7a6b448a619c974", "plutusData": {"constr": 0, "fields": [{"constr": 5, "fields": [{"constr": 0, "fields": [24726507, 25]}, 50]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["b31b2219b7b029ef5d15898a9f1449dffa4458228d1a713ba7ef916a6d758289"]}, 0]}]}}, {"hash": "24675f4746e37239ea632d4040a9481cbd5b79d80f4f8eddf55750d6b3ecfd8a", "plutusData": {"constr": 0, "fields": [2019014818670, 289686, 1729254, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["90db1e5a7e18dcaeedba4ba26533cc0c95a302a8c7b3358cc7f501fecd9663b3"]}, 0]}, 1652834160000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "24678ce250efe8a35c3486d6680f27ba76ecf8aab841e01be6a02c7e979ec2c0", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["3a4786bac327cf02b08a4d85db88d146a60fac9d3cb1cb8005392140"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b10a34a6fab33bdcdc230450d6d108dea77089bdc3d08c57930fbd42"]}]}]}]}, "3a4786bac327cf02b08a4d85db88d146a60fac9d3cb1cb8005392140", 1648564480569, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "775348494241"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 614321]}]}}, {"hash": "24728d8904655cf51723d71a93fb366dc05f90553ec9339502c336007ec7e430", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["6abcdc767af7d53c14c41e6985e6ce312cb02c93e563a9e6d2af9d74"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["6a85bc6079a6852408d52b0b615ef9deb064a442c573875cf93947fc"]}]}]}]}, "6abcdc767af7d53c14c41e6985e6ce312cb02c93e563a9e6d2af9d74", 1649123845119, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 2, "fields": [237500, 599]}]}}, {"hash": "024739c45e21d9f97db282444507be090895b5586851941ada4b1a92d164bb88", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["03e39bf1f338d0ef7ed7673f49712f4368d6de9576d17caaae0fc38a1638bee7"]}, 0]}, 1651646363000]}, 1651648073000]}}, {"hash": "24759f29907984ef58249306d51495125562b7c6f5dabd9193885da1d1cce6ae", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["a766096168c31739f1b52ee287d5b27ad0f68ba76462301565406419", "40c0ee4b37b6d668db1dff7a9822d1b92c3b5bd195d1f071699ae8fd", {"constr": 0, "fields": [{"constr": 1, "fields": ["18e714bdaa07ab8b314295c65e7f8eafbef541bdc6375d038f162e11"]}, {"constr": 1, "fields": []}]}, {"map": [{"value": {"map": [{"value": 1, "key": "148aa0f058f950da489c1da51e64f108e34fb6ca6a0873609c4dec2c1c3b2410"}]}, "key": "aa35880213f8b370be5c7b55225c18ab6fd2204e2f87d48a4701e02b"}]}, {"constr": 0, "fields": [{"constr": 1, "fields": ["58e9e4d6c35b6b13bc538a3c088955f95d22e2bd01f2410472e97526"]}, {"constr": 1, "fields": []}]}, {"map": [{"value": {"map": [{"value": 1, "key": "0ce0ae8eff146b30a3fabae62a7389c68c4faeb9b6e79c785f485ae533891686"}]}, "key": "aa35880213f8b370be5c7b55225c18ab6fd2204e2f87d48a4701e02b"}]}, "413294d08ba6c8efdb7d68060d5430e72a91162b694e8088c18ca2c0", 2, 20000, 1]}, [{"constr": 0, "fields": ["40c0ee4b37b6d668db1dff7a9822d1b92c3b5bd195d1f071699ae8fd", []]}], 10000000, 0, 0, 0, {"map": [{"value": 0, "key": "40c0ee4b37b6d668db1dff7a9822d1b92c3b5bd195d1f071699ae8fd"}]}, 0, []]}}, {"hash": "24777f8cdcc1000a977ba5765c9a16609c2b86e8f55094d86532519e38b92e08", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["75e282d6599405477452600c2aab8ffb5bc6642f7e65a73b84513dfe"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["22cadc44f877e2cc5de60bdbb9960b41fda2746d7d72bca9890cc98d"]}]}]}]}, "75e282d6599405477452600c2aab8ffb5bc6642f7e65a73b84513dfe", 1648487411141, {"constr": 0, "fields": [{"constr": 0, "fields": ["3fb0efd17304d74896130d9ea419a9883a2ef3c8bf9f9e39478dc210", "74574d54"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 1259]}]}}, {"hash": "024809a738e7ec439a2fb46807558e3a69adca10c38bcd97206a1bb93146d3fa", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f54"]}]}, 1648506788000, 25005014, 31544]}]}}, {"hash": "024817bd72c3f7d904e473c6b7271be73de9da199b4a305869b67a111866f64b", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["99b6737e0862653db617c7aa770133b95c6872b4b6aa54b41e51e20b"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["804d5d0f073740ef6829d52226d6d77285ffe72e45ec8ecbc039f913"]}]}]}]}, "99b6737e0862653db617c7aa770133b95c6872b4b6aa54b41e51e20b", 1648491442492, {"constr": 0, "fields": [{"constr": 0, "fields": ["126b8676446c84a5cd6e3259223b16a2314c5676b88ae1c1f8579a8f", "744c51"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7748454c4c4f204920574f554c44204c494b452041204e49434520485547"]}]}]}, {"constr": 1, "fields": [5]}]}}, {"hash": "24838c0c74062c8649c19808761cb9615476bc45b20603847fbbe93eaeabdf96", "plutusData": {"constr": 0, "fields": ["8796657ce3dd3f62195cda362bff12d4a35ef29cb69c76d822f3f5aa", "e0a63b69f9ce868f27d4fa541ed694ddc68d804ee5a7bb8272152190", "", "", 1000000000, "614d494e", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 250000000, "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 604800000]}}, {"hash": "24883e2e40a1e7b4299b122b85871244ad346b89a76cd188615ba671ef8d3498", "plutusData": {"constr": 0, "fields": ["6acb1588e8f25ff69ee211c2fcd990db8e59f35fad02a48f274cc88d", 200000000, 500, 5, "d9b3c33134f29be37fddef5e34d789e3b4a49355cbd2bc6e20c462d2", "61616661687761696675", {"constr": 1, "fields": []}, {"constr": 1, "fields": []}]}}, {"hash": "24890ca39e3d5dc6d9d3e61732efcbffbef0b7163f6c8445f27aeec26a72a9e2", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["6e4c4080f53a2fd8fb4e81319b78bd5f568ba4d6213abba7e1ae469e"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f3c4981e9fab8e1f557c64038b51040324ad52afcf6dd976a740a7ef"]}]}]}]}, "6e4c4080f53a2fd8fb4e81319b78bd5f568ba4d6213abba7e1ae469e", 1649625393503, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 2, "fields": [68072169, 225439]}]}}, {"hash": "24900be0c21a580533a6968e26948a8829e28243acbca2c95738c7846eb6e2b5", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, 995, 2031173227999398, 10000000000000000, "f750048e189e1de2f622038aeb3e39f647b8cbb89957bd4125d88e70", {"constr": 0, "fields": ["83b2965d56634f60a50b6d188625d58cf3b3b6b06091aa3b553ac407"]}, 4000000, 9846526]}}, {"hash": "24924c1ef4d83a8aa0791d55ea02646c46510de90af56b13194253c8d672a373", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["7b8064fd755d09d5f38eb3bd4a61fd21e292dc1c56b80effc04e3460", "56594649745f414441745f6c70"]}, 2000000, "6fb57932df3006dd1a68d309b5525e10b65c28c5cd14e7e65f43fb49", {"constr": 0, "fields": ["c0a5a475b8a0a8ba4c64dae503f2dac0e37107af2ee67355accaf8be"]}]}}, {"hash": "24945be649ba920d0012ff69c1749dfe0ba187d4c26355812cb522e00f9a5904", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["fc3ef8db4a16c1959fbabfcbc3fb7669bf315967ffef260ececc47a3", "53484942"]}]}, 1648631676000, 1626500, 194]}]}}, {"hash": "24959ac82f0f3bfc0682b820da48f3d8586996df9af059f73632d24ec8b50e6e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "43484f43"]}]}, "6b01", 7358747947, {"constr": 0, "fields": [1, 2000]}]}}, {"hash": "25001d7a3f2061c53921a6b16194d52c65df16217e994cd5f05852b0a5e8a9d7", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["9f6ba3d42c5440dcc8563581fcfde1b20c127c3b90fd6a91a3ad1b83554ecbdc"]}, 0]}, 1653775898000]}, 1653777389000]}}, {"hash": "25068b668c53aecd9f90c5093b7665ecf3da74c0b4cf87226dbd8ffe7cf3df50", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "775348494241"]}]}, 1648668079000, 271593, 1020608]}]}}, {"hash": "025144c190d10aeb56217e6348eb45d7f39403306e72dabc77b4804bb53aaa31", "plutusData": {"constr": 0, "fields": [4593160059556, 430859, 4338814, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["957e805559e510dc78bc24920fc924080955e9ad54d0afe2f1a5586504487278"]}, 0]}, 1654001687000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "25149ff1013b0d24e9844101624fe22a65eb1e730d93e21bdd2b4f556b4a2898", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, 995, 10842751211501253, 100000000000000000, "baa5f3f156ffac4ec3422fc42ad9c96e4e7505bf1a140e3824c16e83", {"constr": 0, "fields": ["35f9c603c21d51f43b5f8c587252100cd4e2e29d3655c29e33693375"]}, 100000000, 18445503]}}, {"hash": "25151a5fe94c51547b467a5ea6cf1a30342199e419d5f6a05c2a0cb20337be3a", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4745524f74"]}, {"constr": 0, "fields": ["5aa1a1c51e07f11a170d6992ab4bd58edd3b0eacbd7ed58878445ec7", "4745524f745f414441745f6e6674"]}, 995, 10006766575558393, 100000000000000000, "cdf21857d35bd6cfa1666d36452534bfc1b00ba5bf035b45e90800c7", {"constr": 0, "fields": ["49436074b387dcdcfae6929f78e80d88379c4f97aceda3988b9fd6eb"]}, 8000000, 19986476]}}, {"hash": "25186fab3900febe0e34971bb8c6fb1aae49c3f1700085c32fdf89aed743f8fd", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, 995, 10264506056571798, 10000000000000000, "6e1cfda49dae507b64653dea674dc9fe6b187d1b49df34f397a58f96", {"constr": 0, "fields": ["3e8df9bd720c8cfbf7f991c9af31140e9570d58e9db38c7e71f4a4ba"]}, 6000000, 1948462]}}, {"hash": "025230be76bcc22d5b5a812ce4c0e8747b6d80d07e9ca8a4873726f89f46d78f", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["514bea316c280a382aa855b20fac6242d891477ddd813c0bdd37b925", "47454e53745f414441745f6c70"]}, 2000000, "2d9eca67df8b9f684b46e347fc8bb77e700b0045e86378eec3a063e2", {"constr": 0, "fields": ["d7100e401f905576ea9205cd153feda63402633df0f6ab4a40006a4f"]}]}}, {"hash": "25255e52d087de0e4f2ee4a388cd1064ac065ab78d803162a3d55936d815715d", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["6594316f244cd599a912f86d54697ef53d0983c146506532fedd2e83"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["60a520146fa9951ae1bf132e9a45beb1a87e76cd20a09f15542f71d3"]}]}]}]}, "6594316f244cd599a912f86d54697ef53d0983c146506532fedd2e83", 1648639116628, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77585250"]}]}]}, {"constr": 1, "fields": [3736694]}]}}, {"hash": "025264a94b841f8d9c3db9dc5112d86c9add46bba52729b93f4c28b101813529", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["22defd290f4999bbd00ff7cafc3e3561f6ded12fa23b730253bb9729"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0ea510dca6c54543f3bccec0cecea640d3bebe8ff95487ea78f21fde"]}]}]}]}, "22defd290f4999bbd00ff7cafc3e3561f6ded12fa23b730253bb9729", 1649074784646, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 1, "fields": [1415]}]}}, {"hash": "25288a7bca17f0f36bef8c5de8072815e03b89da3ab2c16cd0b397568baa753b", "plutusData": {"constr": 1, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["253aaa40bc3dee48fa41d50fb451ccf044916dc054f3041868a6ecfe"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [950000, 1649995967999]}]}]}]}}, {"hash": "025351d71ae3096d3435e313f343bcf15574ebd7a6a1bd0e2d012b1b0c529687", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["1c6a98db74d2ca7f40a9bd9cf24c1a475ffb57e99258890fe0bdbbb4"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0939604c20b4d034f9f9a077e6e22c30f89ee66cf765f011089aebda"]}]}]}]}, "1c6a98db74d2ca7f40a9bd9cf24c1a475ffb57e99258890fe0bdbbb4", 1649120099545, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 2, "fields": [4750, 512957]}]}}, {"hash": "25355d916be6accb2fe9c09907d0777c351b156ca0f93850ce92d415a35910a8", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["47df49ea9013bf30ed9f77c898dc03bed3c587daef01c22ae62e31c5"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["464c57d59a4ae17db191b9557c1e15660e4b9127f2fcb469e9d6d6cf"]}]}]}]}, "47df49ea9013bf30ed9f77c898dc03bed3c587daef01c22ae62e31c5", 1649588194148, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 17368]}]}}, {"hash": "25371cf96dd59fc4e4b7b2e1216bfe501c028b16f60fb874351dc1fb7cdfec03", "plutusData": {"constr": 0, "fields": ["f2022028e3787ef7943941aeb82cd2d301cfe3736ecd9488dddc38ae", "00", {"constr": 0, "fields": ["b940743438a9217ea9d673362f708e5080dcd7b597988ae962782e10", "a121efa4cd9e6800567961ead9bbb8a1dee6412b0603441179f463ce915a9bd7"]}]}}, {"hash": "25375f31467aac63033365c0adcd18ea9ced778bf56fef58a38d5e3a56eb24a4", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1649118007000, 47363606, 151953]}]}}, {"hash": "25408fad00f2106f159a6984a60315616fd6d565efb0e24d16b3eca183fef465", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4141444174"]}, {"constr": 0, "fields": ["294870e187e8f269be1a306b8fab8a3e466aecea690230df373a78a5", "41414441745f414441745f6e6674"]}, 995, 88829795554347, 1000000000000000000, "708588060073c3949510ed4c5e26750b1a092f2fc41c81b3845e9ed8", {"constr": 0, "fields": ["ba867a2341700fe4d721d7e4f0f239e7b11338d1ba1e7bdcaac5206e"]}, 700000000, 22514967951]}}, {"hash": "25419fc42edc9c4241db6efb133f70ebee7fe90ad6a8d42e71f6e0446970bc88", "plutusData": {"constr": 0, "fields": ["0917ea8a02d919d2df8be6443295d06c055e02e307576533b774c1eb", 100000000, "7508856c19d999078ac9ae6163610c3d1387d51889331edaac5e67fb", "4372696d6554617065313232373639", "0917ea8a02d919d2df8be6443295d06c055e02e307576533b774c1eb", 0]}}, {"hash": "25428dc3304f60e4178c9788a35e1e9f83e5f6f4a908609727153fdba8c19dd0", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["65b0a8050d5b8f95f1f377a92597656b4186417354ff91d956055574"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["567b27f96e69724b7f967eda6e4d467d371b44af3f10447f4c64565c"]}]}]}]}, "65b0a8050d5b8f95f1f377a92597656b4186417354ff91d956055574", 1648464425567, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 6101]}]}}, {"hash": "25456cf70fdb72a0071ad9deac2b8905238e49829dfbd8ea543ae9e86e96d815", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, 995, 10984206907308671, 10000000000000000, "0c63a7f454dfa192f746d2ebe7611f4c72d1db7ad5c327c2c6588299", {"constr": 0, "fields": ["3e2adf425137a1b873dba68111b2df64c85c33d311767db60f852774"]}, 1000000, 1820796]}}, {"hash": "25499af3b8018a7493acb97d96a7f9ccd9ddc381b63193c3f2ba60e0658bba3c", "plutusData": {"constr": 0, "fields": [{"constr": 4, "fields": [{"constr": 0, "fields": [1897498, 1]}, 5]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["5a11f35b2ed9d465c1f545e570ff8c5dfc2d0c2aa3b9711d33461cd6469bf90c"]}, 0]}]}}, {"hash": "25500c50c20bd14196cd9e82776d26983904eb08606952432e85d435db849f4e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["7b8064fd755d09d5f38eb3bd4a61fd21e292dc1c56b80effc04e3460", "56594649745f414441745f6c70"]}, 2000000, "f6f3c9797b0ee4a8eae7c4753d5519ce246ee9b1190e1e3ac8008ef9", {"constr": 0, "fields": ["da72e703dd9e19fa16833171329a76868dbf5d8b09324666b3b63042"]}, 1379280]}}, {"hash": "025518e7d77e3915a04049c003c3ecd98ea08ea1b74d70660871d889cfe6278e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["3c3ae1aa7db9f5eaf14cbdff51aaa8aade5492fc934f4f5d1215471a8e80dc23"]}, 0]}, 1651676967000]}, 1651701944000]}}, {"hash": "25572f420ac1e2230542cc067afa0148d18fc3249b1f42952323ca462dea1232", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2e3db652b3eff4c746d3eb03b717b56242ca4da3e757b770297cb7c3"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["1fadea167ed2ea9eb30242f03364bd3a0b668b6a12529c88036ff388"]}]}]}]}, "2e3db652b3eff4c746d3eb03b717b56242ca4da3e757b770297cb7c3", 1648668598170, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 2, "fields": [67973774, 1180559]}]}}, {"hash": "25593d1d893f89e05fa26047b9aa9997e632077e4eddcf037fe74f28794e7698", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["514bea316c280a382aa855b20fac6242d891477ddd813c0bdd37b925", "47454e53745f414441745f6c70"]}, 2000000, "653d6549e0d3663ce7ab59025ff73a23e6a32daafe9eea51721ecf6e", {"constr": 0, "fields": ["03d33245f24c66cf1f3f3589e71054c2c527e9dd2c155f5d2c24ca04"]}, 1379280]}}, {"hash": "25627f07294fba22c160e1c4b482167e5a107b412b4a1a3969a715cae70b1649", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4745524f74"]}, {"constr": 0, "fields": ["5aa1a1c51e07f11a170d6992ab4bd58edd3b0eacbd7ed58878445ec7", "4745524f745f414441745f6e6674"]}, 995, 7575545230929133, 10000000000000000, "a1b4a3b70e445e4ca421fea84f6a7d41f874b1fc97e0e3908eeaf22f", {"constr": 0, "fields": ["21119b46929e271789172b1d00570f57569abac02c030f8b625489a3"]}, 1000000, 2640074]}}, {"hash": "25698f530992a2778c29c1403e1056e242c25841cdb25ea0bf7e033780dec286", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1649087947000, 21941606, 150818]}]}}, {"hash": "25745ddf0b3e7b30c8e3a69d30ec56dfbb72081e1dad8307a855051b22f57275", "plutusData": {"constr": 0, "fields": ["2a", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["9f8535c3a1fb06c6f717b7f4796be331e72c5a97a0c6f8d99e01b424"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["cba52c9babbabcd4bffe064b30ddc6bd62a37838bdb4467c1784d92e"]}]}]}]}, {"constr": 1, "fields": []}]}, {"constr": 1, "fields": []}]}, 2500000, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 100000000, {"constr": 0, "fields": [8266]}]}]}}, {"hash": "25754e8da4cd23ec670c29c8710891b8a45e2a5023738e7b63f47d359474af6a", "plutusData": {"constr": 0, "fields": [{"constr": 4, "fields": [{"constr": 0, "fields": [89765027, 50]}, 100]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["871e538f783287a7eda9d47d951d634d7dc605e35b979953d2ba49be6944c81f"]}, 0]}]}}, {"hash": "025796ca3010cad484f92aab4f71dfaddf4fa544a90e4a760fb1e140b1030b72", "plutusData": {"constr": 0, "fields": [{"constr": 2, "fields": [1500, 1382596779]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["6913ce86bb3951af4dcf2b0ab1355524480dbf7004999383bbf070d2"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["6e2d6e67a6346ba60a7994350d1f5eaf77bb351f5753edb70a16b341"]}]}]}]}, {"constr": 0, "fields": [104824842236801, 67108864]}, 1652151411000, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}]}}, {"hash": "25814cc1b50cf1cb03d78e19563db6a154a691901da1779fcb618f4c86ce1715", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4d454c4474"]}, {"constr": 0, "fields": ["845c337c265b63558b775bbc346585e54914719698429131b3bb838d", "4d454c44745f414441745f6e6674"]}, 995, 11129660545353368, 10000000000000, "c6169cdd1ce46e2d6027c05eec83a4c3364bd319214ad03b3b5db7e4", {"constr": 0, "fields": ["5160101aab070b142697ea29c702160e6faefae759100b88a2a4fa6a"]}, 10000, 1797]}}, {"hash": "25867b34b9fad5c425bd023eb398549ba67f6b622f5476fabbe3829eae231e29", "plutusData": {"constr": 0, "fields": ["8120c8a68f9445ccdc8273e82ef8ec4711085eb067ba300ce62e9847", "0ad042da42b588a1f656f94d4271873b4a3a833a71d7dc601e519e2f", "6153554e444145", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 100000000, "", "", 1000000, "", 259200000]}}, {"hash": "25879a211cd2fe00a7939a56ff024074dc3f14aef9f706e3b5d4f239852fd2b9", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, 995, 5261525188086503, 1000000000000000000, "2891c0e985eed4d2fd55b48d9697154559d13a0cd873a469bb6eca32", {"constr": 0, "fields": ["7354dcc72a8c1fce06469bceb733b516d36ecdf883915d42a7df6684"]}, 200000000, 380117918]}}, {"hash": "25883ebec3f5ac2ec41e4b21c1cf977a93313f5a6e89531858fd0975991ddf74", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}]}, 1650723774000, 47930010, 37603293]}]}}, {"hash": "25904babf001771174f48d31986c4e13f9c58d2155adcdf442427c234cf04ecd", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, 995, 2326426588833708, 1000000000000000000, "d5c5ef36ec0b741b2b632561cae865bea7a2f1e1eee1e2390689c7d4", {"constr": 0, "fields": ["3e434ea8f21ee37e1a855b23935f0a29cd7330feb994edc008a4b51b"]}, 100000000, 859687561]}}, {"hash": "025906de18baa639141d51a56e8e70f5dbc8e526f9bdb7d6abc0bde97eccd6ab", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["8467e88d546fa68c1c51b725857f78cd7273059e7e493173ea610fda"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["10406ce14c22fb4021cfc75de112e974546ea605d45b45d08017f359"]}]}]}]}, "8467e88d546fa68c1c51b725857f78cd7273059e7e493173ea610fda", 1648801050116, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 1, "fields": [6097137]}]}}, {"hash": "025929e7c4f6ad9dc418243b1ccefd239986e80e58e842e1d1c2b6bc7a026979", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["004c30dfa43b9b8b1fb9e720bd66fbf1e1eddc3d8e8895eb5e4c3ab3"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["573e63f30882bc2a33830fdc6f08abd4982810a4244dddf11f467924"]}]}]}]}, "004c30dfa43b9b8b1fb9e720bd66fbf1e1eddc3d8e8895eb5e4c3ab3", 1648511046327, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 1, "fields": [659061]}]}}, {"hash": "25952cecc868a7169200600284fc6c79ae0eed454b3ef1d13a744ccbb1bc7a76", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["47a5bf5a83af738cbc099c4f7a6220a982fbdf863036758d1644f5e064cb7718"]}, 0]}, 1653386157000]}, 1653387627000]}}, {"hash": "025976ebc78939863aad2ef031799fd0e4b0bf30156f240b0bfaf8ca40abad6e", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["34250edd1e9836f5378702fbf9416b709bc140e04f668cc355208518", "4154414441636f696e"]}]}, 1649955661000, 5714850, 0]}]}}, {"hash": "025987a3f34d1a50e934b4dadf4b047b6e115a81d33f740cea66dac068487a34", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["3198957792e501b21eb26b75c99eb3f360de0dcc4ec01b70ef81379f", "484f534b59745f414441745f6c70"]}, 2000000, "316bfb15bfda493d9d52ef61572234c9d64604654e5c3c24ecaaaa1c", {"constr": 0, "fields": ["d2186923bef0a8d28b5cdfd3c0102d3cef91f0487cdaf468e185b22c"]}, 1379280]}}, {"hash": "26033c43061603b9984f397fe0c94f35928ce3d2e9c8424893ca72fae25a49a9", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0e14cc58911a407bf45f74f48dca8090be0339a389d670e711d449b6"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0ed99f1d033fb07096846bad150bd6035f715a11185bb646c168e42f"]}]}]}]}]}}, {"hash": "26056a6f0daa88e5a37ade102160ce69a6ec38b02ed4dc066e33159c362aa832", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, 995, 7754573036504303, 100000000000000000, "6da5b4a8c2a573c033c2430d94ca2a23ba4058d8f2bd5182bb6cb3b9", {"constr": 0, "fields": ["6effc1850d44e39cc42943e3ab7fef0a1a0b69a61337cc19e9f950f4"]}, 13000000, 25791233]}}, {"hash": "26085ad9adaf299137063fed07a4f94a3c95455263ecfdc512f7faad9b87c617", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f54"]}]}, 1648473532000, 23823605, 27101]}]}}, {"hash": "26123e122e6a458cfe96a82eddbe847d83b1bbb05112c4d423b9edacfeaa0098", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1648902932000, 64876803, 764642]}]}}, {"hash": "26141a76e31dbd94cc4f7ff11e14fd7921e2dcbbb6d1d2048376e2c0c0554dfd", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2193894b83788e8e0f13f3eabae74e9819fa6b9e1c63b6c857536e50"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ccf53b47a2f2ad207665d1efe79ca5177762dc2cb6fadbd0ffe92650"]}]}]}]}, "2193894b83788e8e0f13f3eabae74e9819fa6b9e1c63b6c857536e50", 1648614310370, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 1, "fields": [18606656]}]}}, {"hash": "26146eb82c9931f60d0f8b76620b493de9c84a58d23d67951d4807378f989eae", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["5aa1a1c51e07f11a170d6992ab4bd58edd3b0eacbd7ed58878445ec7", "4745524f745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4745524f74"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["c28ab019a2df9e678c0f629cd3f0c6f253f7a0d25bc4171a53fa83c4", "4745524f745f414441745f6c70"]}, 2000000, "089b4504a32d91dd97723f9b322a598995c8d82d15988c15b37c73e1", {"constr": 0, "fields": ["6e633823699baa670f73a402fdbfe33ef51366919007e97960dfc9b9"]}, 1379280]}}, {"hash": "26160c158ddc8107223d365545e8a419ea98607ddac01589a2b8819246d281da", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "775348494241"]}]}, 1650190785000, 37680783, 807915]}]}}, {"hash": "26198d2c12942ead649f5b12f1adddd4ea78e45618a97468db17db2ef8143bd0", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1648670062000, 13932099, 72385]}]}}, {"hash": "26224b3155fec7646a580f7d9f538f650cb7d543bb97141cb8f568fb7dfac397", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a6759239804f2f8bf752f58efbcb13d5c1709376213ca6efa295639c"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["38e2d045ded08dba428615f270bfe9d3b4370b0c903df231bf5c92c7"]}]}]}]}, "a6759239804f2f8bf752f58efbcb13d5c1709376213ca6efa295639c", 1648761690520, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 1, "fields": [8]}]}}, {"hash": "026225ceef9d75fc5f7efc5f1b97c163d98303e18b71ea188666f62196f89415", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["15035ea29be2a18ea54f1f40a972bc38b0edb19c6e1c468589b3dd8a"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2d283f3a551723422b174aadda87f56363d3155f7da58d5e41c58615"]}]}]}]}, "15035ea29be2a18ea54f1f40a972bc38b0edb19c6e1c468589b3dd8a", 1650458659724, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}]}]}, {"constr": 1, "fields": [247293]}]}}, {"hash": "26229ff892f9a5ce94fc214e8f113ed61fad830ce9056e78d961a1f3c0897f8a", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f54"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534454"]}]}, 1648557901000, 380, 0]}]}}, {"hash": "26250d1ebc4ce6b164fe51204b75449c753dbf278a686a304eab7d9838f69b77", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["699dfebe849591922adbd8b1da2acf75c01f54c36a51c4728720e2d4"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["755d1780bc106916ca2805d261e8cf0ef800a3106e2d04df714c1235"]}]}]}]}, "699dfebe849591922adbd8b1da2acf75c01f54c36a51c4728720e2d4", 1649421820102, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 2, "fields": [61750, 10887]}]}}, {"hash": "26273fe1a439208ed412b373b1e70377aa348d0b97607eb1777c9e1a57862ab0", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}, 1648691557000, 52266187, 1338447]}]}}, {"hash": "26288d889be5808318c543f8c2fcbe7d002457cdeffc6cc393e8561e9fe6dc43", "plutusData": {"constr": 0, "fields": ["c91db752ad3b45a363845bf9ba6fb59dedee711e514729a56f933830eb8292ca", "ca159c31b267052726e37c37d840cb25d59079dce5f57ad055c10057f00a19e5"]}}, {"hash": "26293b29f8ebc1da24d6db796d6d2aec365aa21481ba6c81063c58e08ec24e10", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["27e7ee36b90a09d668e2d9263c3e2bf5ecec9aaf39b3b1ff7052bade"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["196542a280126c20ee002aebd741737040d0bd73c000b3f4b5f74627"]}]}]}]}, "27e7ee36b90a09d668e2d9263c3e2bf5ecec9aaf39b3b1ff7052bade", 1648685772608, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 577635]}]}}, {"hash": "026299a985bfc4cd3ef28236d58e618fc27a24c528c789f448762c781acd7c0f", "plutusData": {"constr": 0, "fields": ["e582854e7ba4b795ba389915b7b258ec27b418b2a5ef3d93c00eec7ba815c173", "e9f5612677cc6bdb106e760a0ab3d4cedb7b616d5c8fda5e413bb9c8c0d67a6b"]}}, {"hash": "26328e418d2b0467fabea9790fbe23acc5cc5febd296c1c70b5a5336ba57d670", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["4c511512b696dcb033383a4c2962bcbd7483a18cb1ea27df85b203c3"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a6254b1b53d73965b43618c01b2f1db53ae03dbf2eb17481b6853ad3"]}]}]}]}, "4c511512b696dcb033383a4c2962bcbd7483a18cb1ea27df85b203c3", 1649069835257, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "43484f43"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 609947]}]}}, {"hash": "26341ce1bc2505bb7c02b8c3e03a7d78ffe0944e5936fac15bc9e5fb8b76fabb", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, 995, 9457901461907829, 10000000000000000, "68b4c78d5f875ef2262aef51da333ea1ba42325512a8735547b9d3bb", {"constr": 0, "fields": ["e0499df139babee7b3a75df3a5c00897f997ea56225f9ac6fcca13a7"]}, 1000000, 2114634]}}, {"hash": "26346f5d11dbf904f6fe0f28276b600e738e3a8eb32d15d81031621fcb7c763e", "plutusData": {"constr": 0, "fields": ["9b02", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["123b543e149af4f7f18a9fb248366412063926f18fa36c9f038fcaf6"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["1d57bb106f6aee61fbf22b3f2cbadd7b5b6c5e5d057e0693487219dd"]}]}]}]}, {"constr": 1, "fields": []}]}, {"constr": 1, "fields": []}]}, 2500000, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 500000000, {"constr": 0, "fields": [1]}]}]}}, {"hash": "26358d83a6dd13b508ded409dffc06dcfc4405b94a814ba70266678b07cc552e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4745524f74"]}, {"constr": 0, "fields": ["5aa1a1c51e07f11a170d6992ab4bd58edd3b0eacbd7ed58878445ec7", "4745524f745f414441745f6e6674"]}, 995, 9822335558878124, 100000000000000000, "dfe7c9d88b13b0fc2b469b04eb453afea55a41a4acc5f5b82ab97555", {"constr": 0, "fields": ["13abd189dc32dbd4f59c9ed56d33a9bd5ae3b0a930c1424098276e89"]}, 8000000, 20361756]}}, {"hash": "26370c0feb247e69a75596210959053c6ba42e796ec70930e732f5b1e0fd3d80", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["bc2fc3742624bf8d42e89f6d6a22d100bbb2bf3f085470317d064b26"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0fe8b2e9808005475772d838fb4e94db1f1175072071c83c14b9d5a5"]}]}]}]}, "bc2fc3742624bf8d42e89f6d6a22d100bbb2bf3f085470317d064b26", 1650818690716, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 2, "fields": [367518067, 1238938]}]}}, {"hash": "26538bacc8dadbd9d89d495dd24b8a3628aad52a602190ede754e83835e3567e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c2e3879988907e9a5ed93135678240a585023a127ee4daeca21f89e6"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["8e953d1d12676fd60b0912025a94fb06b42c511384e60c80772554e4"]}]}]}]}, "c2e3879988907e9a5ed93135678240a585023a127ee4daeca21f89e6", 1649208389731, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 1, "fields": [45695]}]}}, {"hash": "26558de0077cdf3e6aef186e25b4b99ecf5fc6f14b8002dd9ab1964b0421f734", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["3fb0efd17304d74896130d9ea419a9883a2ef3c8bf9f9e39478dc210", "74574d54"]}]}, 1652826915000, 16364663, 220135]}]}}, {"hash": "26584b7dfc2d2f2005a10dcdf9f394250eb6cd3790c72c6e5187c0f389ef1344", "plutusData": {"constr": 0, "fields": ["5b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ebcc3b31dea33abd57fc84f6d81697adf063aa7a6114e07f76ea4594"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["82c8628abf53f5ef3a0e64acea76e075b6ae63b1c23cbab2bac482b2"]}]}]}]}, {"constr": 1, "fields": []}]}, {"constr": 1, "fields": []}]}, 2500000, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 16096709, {"constr": 0, "fields": [710761214]}]}]}}, {"hash": "26622d1f05202b5defe2dbe382e202439ee134c5ccde5c5669ab5ec6d0ea2eb2", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f54"]}]}, 1648569100000, 25565834, 32487]}]}}, {"hash": "26629db71b084648178cbb7ee32980facad78fb4ee2015a6ff9a9a1b02eb2aa4", "plutusData": {"constr": 0, "fields": [{"constr": 5, "fields": [{"constr": 0, "fields": [51114163, 50]}, 100]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["e21a28c7542288ba33679848c17ef63e33a2585b5be39044fc202e5e32ba0eda"]}, 0]}]}}, {"hash": "26642dc6edae07f58b844513ef7c04a97f6e86600f70d12b5336607fec7bbe12", "plutusData": {"constr": 0, "fields": ["899c6a52c273d49624d8c30f8756807dd19c2c3ed8e3d20b9bffd3b84d420a76d6bad9506d9af44a9cfd28d3a98aede45f293838a53d89590b2c47f81ba4ad08", {"constr": 0, "fields": [{"constr": 0, "fields": [5408256999307435, 4294967296]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 1, "fields": [1651832527001]}, {"constr": 1, "fields": []}]}, {"constr": 0, "fields": [{"constr": 1, "fields": [1651834327001]}, {"constr": 1, "fields": []}]}]}, "555344"]}, {"constr": 0, "fields": ["85915ed66d676887fd4f3f4b628b07acf8f8858588b7f4169f5fd6c3", "446a65644f7261636c654e4654"]}]}}, {"hash": "26687e34495f4968504244d4fb69f9eaa81d40c1df453efe828685321c1cfd05", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b126f36ee51269a90aada00338ebe903a38bb90453164b61d3155ce6"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["cea599e72c9a5ea3af7b8bd235c60c6ba16659b5b3161951ea4d1654"]}]}]}]}, "b126f36ee51269a90aada00338ebe903a38bb90453164b61d3155ce6", 1648991223383, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}]}]}, {"constr": 1, "fields": [2637]}]}}, {"hash": "26712fc5795d337ae20e7f8e0443272b9df4616c3d7a52213d176991b606638b", "plutusData": {"constr": 0, "fields": ["346bb6ea6e64085041cc17d8fa9cd71c4efdce5d78ed5267574f292d", 100000000, 75, 720, "c4d5ca6e7c5bc503c0e52fa0001fad149bc221e6d78bc6e40f3c0bd0", "6d656d65617274", {"constr": 1, "fields": []}, {"constr": 1, "fields": []}]}}, {"hash": "26761f60ff13b1737e270b03073259a0cad101449c8ac2e2637a946347c81786", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["080a2e68434150f5307a52de3c8a0f8465d4ebbff9d3973c2bc22bec"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c5493501899890c86b4fa804c6526e5e6616ab990249f55ac2d97657"]}]}]}]}, "080a2e68434150f5307a52de3c8a0f8465d4ebbff9d3973c2bc22bec", 1648761027821, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 92059]}]}}, {"hash": "26810f7cd72369258221c51f29a342ffb7889dabc8c3cc6ef5fd88d614397e90", "plutusData": {"constr": 0, "fields": [1649415293000, 1653303293000, {"constr": 0, "fields": [{"constr": 0, "fields": ["9ef6114df6b672279b91e9bf32e6785004fc32493889f967c9a91221"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2a26385e3168ea2a9e75c52ad71cc8f8eb16335ecb7a02ff0ca5735c"]}]}]}]}, 100000000, {"constr": 0, "fields": ["126b8676446c84a5cd6e3259223b16a2314c5676b88ae1c1f8579a8f", "744d494e"]}]}}, {"hash": "26817da8891035eb6f988bd6050bddfb7c682dee88900de7e42ccbd026fe5c7f", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["3fb0efd17304d74896130d9ea419a9883a2ef3c8bf9f9e39478dc210", "74574d54"]}]}, 1649343510000, 8351929, 19846]}]}}, {"hash": "26871e1ad36e51ab6f643e8c7a9d12a053dfe5a8054efeecfbd93b8d8d70f3c7", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f24d7b7cca84d6612bb9cca0e0bd1f627f6009881f3a1e2f1881c22f"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e1f087f2905973a6c2fb8f8d16a735eaeffcffadeb080f3642003251"]}]}]}]}, "f24d7b7cca84d6612bb9cca0e0bd1f627f6009881f3a1e2f1881c22f", 1649409658992, {"constr": 0, "fields": [{"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "534245525259"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f54"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 7521]}]}}, {"hash": "26884fba3ef2606157ac43db471b60fc11e4e0a9b04222b163fd609c17ba89b7", "plutusData": {"constr": 0, "fields": ["cca989786d179b6cd158460813b1c30ad6868f084b916d5805a89c28f02d73c71793cc13a641d102a01a8430da88949ffcae6c5bd3c122d55136a73c8aeef60b", {"constr": 0, "fields": [{"constr": 0, "fields": [3979769547813195, 2147483648]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 1, "fields": [1653277294001]}, {"constr": 1, "fields": []}]}, {"constr": 0, "fields": [{"constr": 1, "fields": [1653279094001]}, {"constr": 1, "fields": []}]}]}, "555344"]}, {"constr": 0, "fields": ["85915ed66d676887fd4f3f4b628b07acf8f8858588b7f4169f5fd6c3", "446a65644f7261636c654e4654"]}]}}, {"hash": "26901b628804454d5c837bf3ece34b1abeb045b5693e167046e54914a721cfde", "plutusData": {"constr": 0, "fields": ["5e5f35f9de38662049bc9879b529124f603a219875c8d571664d4dc2", "f4a8dbfbb0db3b52e1934455deda05fdd840afbf4c39d7f0cd1d7226", "614d454c44", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 400000000000, "614c51", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 90000000, "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 604800000]}}, {"hash": "26963eb1ef65282083383e20395ba73be5c9971b115c534d81742b1d8d6cce13", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}, 1648802982000, 80542022, 3080312]}]}}, {"hash": "26967bd3803f0785f87f10a2180252efb82bedea4610a3c21354f5e166cabe1b", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["99ebae8d4b4ff1e81e8be9660ab08ab9ec4c835f331d3c6c6b178b36"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["eeb6dbfc97b6d1159a499e0d2807a63f1171ae34a94ac673dfbe34fd"]}]}]}]}, "99ebae8d4b4ff1e81e8be9660ab08ab9ec4c835f331d3c6c6b178b36", 1648535244062, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7741564158"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 115]}]}}, {"hash": "26978e85cfb3351076b16a01e77b3cfec0d75cbb87ad230064040ec1ca1586e1", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["91a10e04871077bbb7dbadc644959e11e8b01b15dc6dc7dae49f2a12"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["110d908514a4e82b04a1e29a2d970fab3b5fcbf05b412da2b4a7c856"]}]}]}]}, "91a10e04871077bbb7dbadc644959e11e8b01b15dc6dc7dae49f2a12", 1648474976384, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 261920]}]}}, {"hash": "26981c35cdfd28b79ae924439ecada8693565a4caad4e55d8c24804e8018d3f8", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ad3b8ae1fa7fc787c6d66eff6b2650ddaad0c474eb19d357ee39f613"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["4e74dea0a7a75f21864a2dcfd4c9f2c8e30f62d211611034f9555451"]}]}]}]}, "ad3b8ae1fa7fc787c6d66eff6b2650ddaad0c474eb19d357ee39f613", 1649520696206, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}]}]}, {"constr": 2, "fields": [1096011, 197]}]}}, {"hash": "27009db17d0be8b189d4e055588f900e700dc4b1ee2b1feed984e843c678e1f5", "plutusData": {"constr": 0, "fields": [{"constr": 4, "fields": [{"constr": 0, "fields": [18824433, 10]}, -20]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["7bf80992d272b5bce465e1651a96784a109925e9abc22b32003cfcd2f97c363c"]}, 0]}]}}, {"hash": "27016a41468e32f768bf5ad07ad8097223879585ed6c6f93d93294766f3cee6d", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, 995, 9224916092469453, 100000000000000000, "f015e7dcd5290c33e7134ec6b5b26c04f2e5a1d5a21eca592d68ed88", {"constr": 0, "fields": ["3ced61f9cb9082b5bd2e409809717dd5971fdc5aef06c2dded01368c"]}, 8000000, 21680414]}}, {"hash": "27042b1ff68acbe126a6f16b1c213200955f48c6ba319a1aca1969af538c6ab3", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["126b8676446c84a5cd6e3259223b16a2314c5676b88ae1c1f8579a8f", "744d494e"]}, 667537639396, 0, {"constr": 1, "fields": []}]}}, {"hash": "27058bc4877ae0ff93a2bea5f404cfadea4d8f953c53e15e9b711027d48f5d65", "plutusData": {"constr": 0, "fields": ["196cea0611012538dc305f6765722bd1c0d53af08310e2888bb3b2e0", 120000000, 250, 312, "73d4ca6330074509371e3c8da257c8854b311c6c55b1b36919e88a8f", "7269766572", {"constr": 0, "fields": ["1ed31a3ad02d78660283c3348ab49bd1a9242189b81755b22c5bbb47"]}, {"constr": 0, "fields": [1653003273000]}]}}, {"hash": "27066cf7b6a691dde744a5572f19a359ed682b37acfbd54579808f81b3fe84be", "plutusData": {"constr": 0, "fields": [9, 20000000]}}, {"hash": "27068d76829e32f1066df32caf67a913352f4ca9834c36c453d42c7a23b323ea", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1649604500000, 3827, 91868]}]}}, {"hash": "27095eba4606169ed6accc7a09886fba1f268b565c4879f48ea86dba911ecf01", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["bc1f9188604225e0a506525e7b60fdc88654944f2e1dcfbb9e5b1ddb"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["88053128b488b6076e6e7a251650b6f6d4e91cadff2e3ddcd7542ce2"]}]}]}]}, "bc1f9188604225e0a506525e7b60fdc88654944f2e1dcfbb9e5b1ddb", 1648870603486, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}]}]}, {"constr": 1, "fields": [7693234]}]}}, {"hash": "27103ab2fd9f5ec61c4961060663bddededa939efc0eee1f11338484524c96ba", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["514bea316c280a382aa855b20fac6242d891477ddd813c0bdd37b925", "47454e53745f414441745f6c70"]}, 2000000, "1ec095ebd0c60317398801bfc18cc257dd2fadb444dba6d8e418ef9d", {"constr": 0, "fields": ["9a8140b863ae81a6d14cc4b5dc2793d4b38a80d87bc3e707c24042a7"]}, 1379280]}}, {"hash": "27122ab9fec50a824abf6bf93953a7a3e56797aace5fad3f79b48668d856d3d0", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["104ede80cfad04d5054fd79f7423ee42320e2bd8fb8c74df14e90780"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["27859293b962a9bcfee1b32e55c0a1080648d13c5d17c8d2c74a5646"]}]}]}]}, "104ede80cfad04d5054fd79f7423ee42320e2bd8fb8c74df14e90780", 1648509541946, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534454"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 3353]}]}}, {"hash": "27139b080d9948c7885f5dd85b3d8d1945baa2cb619bb1ec0308c87075de51d9", "plutusData": {"constr": 0, "fields": [3430039312441, 317994, 3263641, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["28bebf8cd841536ad7e3468a20769b2eedc77dfdd2457a68d179fc52ed7f824a"]}, 0]}, 1652984029000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "27147fa8188963fc65da311655d98dcc83722a181e6536f80dc1b7260cd7e749", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7200389ef11d3db57157eaf180c46f6f489ddb8dce0ba99f4d42966a"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["afbe3185e6abde913dea21cd0a0ec4590dcbd76907bdc53bfa2df915"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["7200389ef11d3db57157eaf180c46f6f489ddb8dce0ba99f4d42966a"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["afbe3185e6abde913dea21cd0a0ec4590dcbd76907bdc53bfa2df915"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 2, "fields": [1]}, 2000000, 2000000]}}, {"hash": "27156a248e68b5baf70057288a46f32769f57407f9cd947a9b555bcb2757da86", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c6cca719837205891027732f40fb687bd2e01886f99d4d1b2ff49e01"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["424d6271d7e4619e90927f91a07cf9343ea4b653eed1c7e6f614b884"]}]}]}]}, "c6cca719837205891027732f40fb687bd2e01886f99d4d1b2ff49e01", 1648477838085, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}]}, {"constr": 2, "fields": [2521146, 743]}]}}, {"hash": "27236cdf709a893f464a901259a01ccc233e9b2483ca0ce24ce81e3a11142615", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["3198957792e501b21eb26b75c99eb3f360de0dcc4ec01b70ef81379f", "484f534b59745f414441745f6c70"]}, 2000000, "4b674b3b9e92635e437bc3f82913144d3bc9ff8d9013be7e7babced8", {"constr": 0, "fields": ["4adef776445bddb547f9295f4366ef3c78beaeaa827523db1860273a"]}, 1379280]}}, {"hash": "27246b89bfd23254e28e344f1f9d98c6cdc0cd0a58df4b451ab2bdbde1460d92", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["16ab101fd548503cfec70f6d5c35985ffc659cdf0c22b9ce0d5706e7"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["397b4f8b8874205e55e9fd35fe621fbb6819ade990b1084b65a752af"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["16ab101fd548503cfec70f6d5c35985ffc659cdf0c22b9ce0d5706e7"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["397b4f8b8874205e55e9fd35fe621fbb6819ade990b1084b65a752af"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}, 0]}, 2000000, 2000000]}}, {"hash": "27293ca6cc52c0801d74dd1a962620251ed8f3cee9b9e9701984f43f0707a226", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c952791d46d7c1c467a126739bd15ff541ef825989a5adf836ace4f2"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["1231caf3872f476817a5d8d9fb0c4d0bc1314c304828fd69cafc840e"]}]}]}]}, "c952791d46d7c1c467a126739bd15ff541ef825989a5adf836ace4f2", 1648477328126, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 5714]}]}}, {"hash": "27307e946352e3ce4c2de4a07400254a465e87fbee8b9261bb6ab0940245cdec", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4d454c4474"]}, {"constr": 0, "fields": ["845c337c265b63558b775bbc346585e54914719698429131b3bb838d", "4d454c44745f414441745f6e6674"]}, 995, 3730093423919896, 10000000000000000, "45c077590a070eb77e12597ed0e7c0a3023236a298ae3235d702c95f", {"constr": 0, "fields": ["781efb1c65e2f04e4cf791f85a2fc5ea3e5c19d831afe472a91a6fa9"]}, 13000000, 5361796]}}, {"hash": "27318f93c516e2ef52308db7eb2cdf720d3142220dfb0c94cb403e78a651909c", "plutusData": {"constr": 0, "fields": ["1cd4ee4212123e64b477c50d2e88c3ac78c8125d2a52768050126f162a9ea79a", "1d21f074d6f87ee979a73f96f32569aa1c0469035996673fe66c817d5047648e"]}}, {"hash": "27337cdcac59362e2ae1011fc79cb74ad6277758b9289986aad1cfb137339aad", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1648996498000, 2031537, 54239]}]}}, {"hash": "27361fc0ccf50ded5046af2fa4f7e26bab3decd0530aa7c0c3d40d37b1e30499", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7dfef0bf12f78e3c0d47823181c0607f85d175517eea4caa6030b2e3"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["14d3c40ed3a4427911dc1b2fba9cc996f73a04911882e49f57a0faa5"]}]}]}]}, "7dfef0bf12f78e3c0d47823181c0607f85d175517eea4caa6030b2e3", 1648423352859, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77585250"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 8859]}]}}, {"hash": "27421fbe36fe050ad7b3de02e128a0df44f9f36adccf4c6d28c9bc3d058d6e2d", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["1bea53788b682aa18db72c37c619ce574c8efd01cc29a44d061d012b"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["4a0a2ef216fb3d2ab9864e9b92d811ece382b18bf2702781299939e7"]}]}]}]}, "1bea53788b682aa18db72c37c619ce574c8efd01cc29a44d061d012b", 1648512735620, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 13143350]}]}}, {"hash": "27430eb3760d43db58beff1f33bc9a23aa95d98df4c5b693abc12261492b9970", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["228fcb0847ed421aa52337793e0de12fc3db788ab67ee34fb3d276f3"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7a81846e99f5d89ae255a736489c2c163295c559fc7206b302aa2675"]}]}]}]}, "228fcb0847ed421aa52337793e0de12fc3db788ab67ee34fb3d276f3", 1649289290468, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 11992325]}]}}, {"hash": "27477c02a711fbcfea1f2c193922fb6e928b265da0d55e6cf3961609fee0d8c7", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a850b02b388d78d90280c6df82434bf4156d71cf7b9310121f52e915"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2d7ebaeda2c2b69f35ad10629da2235865f1c7e7c4e54e90a245beb5"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["a850b02b388d78d90280c6df82434bf4156d71cf7b9310121f52e915"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2d7ebaeda2c2b69f35ad10629da2235865f1c7e7c4e54e90a245beb5"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, 0]}, 2000000, 2000000]}}, {"hash": "27492bd3c9481060bce3b5239b57ac4bbca2a144b8d436e99c0b039c39cef151", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["0861dfb4a438c91430a940944472b38fca47bb8d4c0ad1f47a6cb3b9"]}, 20000000, 200, 1, {"constr": 0, "fields": ["a32ec33016951cda2d121520c2804306313c36e93b0e561945d187da"]}, {"constr": 0, "fields": [1653833578000]}, {"constr": 1, "fields": []}]}}, {"hash": "27524e548e5d760500ae32a4b937e6d860604a55775f2eed083ce88e36466c9c", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f701a856888201d5d44969d816369700ecc99f07772d5213e5dd8bf1"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ff8683acc42d41891996d0ff7f6f746686b74451162b5d0e09cef94a"]}]}]}]}, "f701a856888201d5d44969d816369700ecc99f07772d5213e5dd8bf1", 1648841110108, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 1, "fields": [102311]}]}}, {"hash": "27548fa2f04e66cf2412b86d667304f4008c6642c977fc707c92eac852ae6860", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}, 1648461961000, 37437722, 1032199]}]}}, {"hash": "27562ee758cf7d6012cc0c3738d9b0bb1361733bea79825f9fa83ccf466d6281", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["57921322e06c0d9f963331f1c00aa9d318b18820141200bc7d1f8bc8"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["56cb26d53cdb7ade7938975d4d6a4d455c001aa854172bafcc24a1cb"]}]}]}]}, "57921322e06c0d9f963331f1c00aa9d318b18820141200bc7d1f8bc8", 1649338467673, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 2468631]}]}}, {"hash": "27601be8b114a30083004832fbe24feb1bddff459f290ff7df0aac1d88961fb2", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["799d73f0f9dd0ca8a4787194308058ceddc2383d7ba99523a4bf13ea"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c26ac88a4f3cfd0ad8e14df9703b78e35af4a66d421de4cae0fbe04c"]}]}]}]}, "799d73f0f9dd0ca8a4787194308058ceddc2383d7ba99523a4bf13ea", 1648476847296, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534454"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 6804]}]}}, {"hash": "27641ba0e22d676e25cad6a99528b62205ceab4646991edad6d0146cff4aab79", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1648485437000, 3756, 54044]}]}}, {"hash": "27649d5bde00e0b9e10e68d946dc8add9d6f6f7a3eb1a6e318606699638779d7", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}, 1648609026000, 49099491, 1269726]}]}}, {"hash": "27665f1180d8bcee7af7e5784c946bf57c5b4a91a2893b8a2196b798e206b7c8", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22be35160908d953c25b30d1ad59876cbf073a8b31ef7a4f77468355", "414141"]}]}, "3b", 3733293473, {"constr": 0, "fields": [1, 2000]}]}}, {"hash": "27711e6ecd0123dbd370813bcd26a837388aec1af331abf9ce1c900124487202", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, 995, 9502681894397647, 10000000000000000, "193c0c9e6725023294526225149e500d00ceaf9607179d12cc94a5a2", {"constr": 0, "fields": ["af3f5de69aff060308d5dfefd7a329649ab2699970a203974da116bb"]}, 1000000, 2104669]}}, {"hash": "27722b481c04147f40ae7f26da837b92c4e8cbb71ab7da5b65c8e641cfb07297", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1649756819000, 74615878, 1009163]}]}}, {"hash": "27724a31761984f0ee020d8b622b573791c0f07bb3a2dcdddfe5752dd49f85bc", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1649109372000, 68597213, 917542]}]}}, {"hash": "27761c9c2ce91d9e89870887adca16702cd473d5172ad16c59cf64bd28054c0e", "plutusData": {"constr": 0, "fields": [{"constr": 2, "fields": [100, 99620141]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["6e407c2675e385d60691e4e84ff5a3f932f3ca22de48ed01eb48fd31"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c9c73749cc60a926054fe79d0f77adfb4e7d62c4884f23306d7b7b21"]}]}]}]}, {"constr": 0, "fields": [5367031922524211, 4294967296]}, 1651786055000, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}]}}, {"hash": "27769e21b96ac2dcfa5c5853a52eccfe851df08d6417aeaf1de38ba102875f25", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0d0f589591531b2a576a631a6f666b46c211fb6fc5de5d5d3f668668"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c98bc6f26269c25e73f724155920d2974cca3e438d9842fb87d622ec"]}]}]}]}, "0d0f589591531b2a576a631a6f666b46c211fb6fc5de5d5d3f668668", 1649429023793, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "01775459ea42d155094e18c52697cb27fc802b8d4c51dcfde67432ef05586344"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 9493960]}]}}, {"hash": "27771e1844db8e5257b5e3c7aee4819e2d022a024f71be64f0306f629b28e761", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, 995, 9585073663208117, 100000000000000000, "86fdf2092babbe000e9a094a0a63176f1918fedde52f5fb4238b0f1d", {"constr": 0, "fields": ["692407870ecf52c8345e6d081d41eac8e4ea4ef211d4fa8b343a54f8"]}, 100000000, 20865776]}}, {"hash": "027778b9c4ad3527edcd8a2d0953b593b0194cb0a1a80ef3efa0bad4dbf52845", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["4b164543c20a1c17517477e261af90b26b5b2af551ebaf0b5f4c8254e60d22d5"]}, 0]}, 1654022528000]}, 1654024105000]}}, {"hash": "27782a5f1b82bccf3542f67fe059c7bf62254678d2f87d7518631fcd76d22cde", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}, 1651063785000, 64285011, 1983394]}]}}, {"hash": "27792e485fc6486f555b3d76ec7b0f0a35d60e6f9876283757d68522d8c5a575", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, 995, 10452877721661503, 100000000000000000, "c1bfa685526ee1822bc51456eefb0d5c2645866ab4b923aa8ab3604f", {"constr": 0, "fields": ["7d02123b7011c8e78943ee0e957c30f298410d9e23e494b235f65867"]}, 46000000, 19133487]}}, {"hash": "27861dc779eb007c1fa922a46ceef53869bda8a33b56e758575caa8c5fa2431a", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4d454c4474"]}, {"constr": 0, "fields": ["845c337c265b63558b775bbc346585e54914719698429131b3bb838d", "4d454c44745f414441745f6e6674"]}, 995, 13656538067599864, 10000000000000000, "1f641257ffbb30789337af937fff0c089bbdc1e647a79e58cbe3f2ad", {"constr": 0, "fields": ["2f56683706270df6c4113b91b5d3cdb346183869821a9b3bc698d98d"]}, 10000000, 1464500]}}, {"hash": "27888bfdee96e4e096fbc6524dfaf4fc2e0d03ac95fd2a024e487a7d2003c356", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1648788158000, 114722, 8924]}]}}, {"hash": "27898c65faaaeedd1ccd1ea30a227df08fd8f976a7894281a33c614d2072f769", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["860de1321b8f8d89e6e3ea882915f9472ae346bebde9b5be7c88471c"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e8ebc5294872066778d2f9bfc5a93c1c4daa1066e2d867e120b68ba0"]}]}]}]}, "860de1321b8f8d89e6e3ea882915f9472ae346bebde9b5be7c88471c", 1648900087789, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}]}, {"constr": 1, "fields": [13091510]}]}}, {"hash": "27904d057f835addd969867048a8c0b9d432b4952217fb6313ff0eb0edb1ed58", "plutusData": {"constr": 0, "fields": ["6f0dacf18d69af49b7681a3d74109393ca9830aa305d4c41f7e550254c371db3", "7090c9d3ba254a798177a82bd119657d1c3207580af0fcf2639742ad7ec1343d"]}}, {"hash": "27913cb88150e92501e52d10006bfa6c3d1070458ecd65fddef66b33fe8393c3", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}, 1648947689000, 58736931, 1647801]}]}}, {"hash": "27923d71d24012020f56b246f0c5f0cea1c3210f3f7727d8e76f3d7022d4aa85", "plutusData": {"constr": 0, "fields": ["5f63dc713e98049d28a58d84bf75d8162bd9185c8392cb23e7e3a8253d035e8d", "6066ee877baea8eecb3a91d12ec91207b1825d3452d7452d0c0b0abda285133b"]}}, {"hash": "27931c28c206161a80a6aae37340c18eb5d59ab30353612555a553445cdee8d3", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["84b3da303c867c9b9dbc9c588334ed42a1421ea27965fbc0932ba800"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7285e0ec7b0aba374ed0cc0f063e4a41195e590096d4590971b38f79"]}]}]}]}, "84b3da303c867c9b9dbc9c588334ed42a1421ea27965fbc0932ba800", 1649011300623, {"constr": 0, "fields": [{"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 2334993]}]}}, {"hash": "27934b5289a973a6a44a1504c38de95db66d30a6a2aa682e674b73c47d0c2b85", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["40b62cba7b1cbdd8ef76490b3e4fc0b05c6ba6ace9cb09140ad27753"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["1793807e84cae52a7fa0cfa71640ac81d47a2bbdb675dc74e66527a8"]}]}]}]}, "40b62cba7b1cbdd8ef76490b3e4fc0b05c6ba6ace9cb09140ad27753", 1649205587356, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["6c308904c287b6a8b5d16baca9d75d2cedbff8b42a1fcf492c5a758b", "464c4f4b49"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 11]}]}}, {"hash": "27970e212e09f8a1d03ab204083ed683415f1be9734cbc74f9e2e1a67f092117", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ce8231b9c6a080bbefe8987aabb92127f55afb605328f89d54ab68be"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["828b9fa5e3ecd919206d9b221e684e09a4185ca2c29d9f90fad9b3a0"]}]}]}]}, "ce8231b9c6a080bbefe8987aabb92127f55afb605328f89d54ab68be", 1649554389099, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 3806]}]}}, {"hash": "27982cad76cbae46418985dcd05239e4d779f07c6c9c84dacb6d3d1d4d8264e2", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["514bea316c280a382aa855b20fac6242d891477ddd813c0bdd37b925", "47454e53745f414441745f6c70"]}, 2000000, "eaeab92c3a84b3038141a4758435400a12c9b1741779c6333d080282", {"constr": 0, "fields": ["416140a291c665f48097ce6313437094ce68b91312a6c12ef6a9b10a"]}, 1379280]}}, {"hash": "28016caacaef946e0470c4937780bb2e0bdab29cf3c37abaa54b7f760890baa2", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}]}, 1648710556000, 36914341, 36487862]}]}}, {"hash": "28037e34fa6c208cc3a389feeef4e4418fddd18ed2a276305451fb87ea03b3ad", "plutusData": {"constr": 0, "fields": ["3785815efe45bfcde3aea4dde602f8319207c66dcdb067201716e23b", "37a7d379079e98718cd1a803ebd71a62cac0f2c02a034484ccfac2c3", "627272486f736b79", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 1000000, "", "", 1000000, "", 86400000]}}, {"hash": "28068e61de3b20d5095faedf19c83590817425a1f30e06014bb69f8ba9b7b3cf", "plutusData": {"constr": 0, "fields": [1964720912254, 262211, 1723715, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a011382f59bbc501062fe66b1ace4db0e97c2b16a846221b362010599e1682e6"]}, 0]}, 1652814673000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "28087a4ca4854898a12410954da0b6df08680a062ed47838c3f7e6b230868203", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}]}, 1648604799000, 50247329, 10686]}]}}, {"hash": "28101ddbd1310dde316806b831fbab50ca00d442c30fcdaad4796f9585ea3942", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}, 1648532308000, 57144629, 1353391]}]}}, {"hash": "28114c49d0b1863a5752319d3ef125cb7e7039c893031fa71bfb632447c9cc98", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["c3b39f2855f1c15c1d773f5cc51fc4c9987af269435fcbc6fe452cc5", "634e455441745f414441745f6c70"]}, 2000000, "0d995f7b7b3d7b2ac45968b3cf7edeaa8c00668c63422cbd89342a37", {"constr": 0, "fields": ["fb166df527a2269ca7753b952a3475e1c03ea064aa4dd00063500257"]}, 1379280]}}, {"hash": "28138b7bb26a0c98198131047f075359afee6f4da8a207aca411a7d993c60e10", "plutusData": {"constr": 0, "fields": [3611624863980, 400504, 3287476, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e3b9c57daa461b4a22052a57cec305eaa6e6fdb060ddf489cc065b9e9069a28b"]}, 0]}, 1653213129000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "28152f60fbeb47d7d4b4481c3c9a4b8c8d22ca14d03dcb3999ecc3ce8f7e6661", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, 995, 7778129478865714, 100000000000000000, "6676d0f9e9f1739c65233e1e71c393bf468489eca54f057944e38377", {"constr": 0, "fields": ["6341275f5c1fd936c845503322a321db018c08d14d03801333f93420"]}, 10000000, 25713123]}}, {"hash": "28187cdb290cab9316f3d2ee8080d49c9519c3b2db783f844706803fda9fc30f", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, 995, 23956730790250496, 1000000000000000000, "656fe025e5e04405feb1b1ffdcf55af65a3fb6eb99c1ba028f1f57bd", {"constr": 0, "fields": ["8447fec2f053802631157608a666c60a78b21011b16cbf80f75651bd"]}, 50000000, 83483845]}}, {"hash": "28206c9af8fe70cf48a38dcb06b0dc44e1a4983fa91d792fcfe233356f9c1a51", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, 995, 13128305091832823, 100000000000000000, "d074be37c956d1581045d6d59254e6dd47a4daf92526e2319f5d0afd", {"constr": 0, "fields": ["96ef1be068267c52b726d5409f73b7209049f1d65a398f3ddf6bba18"]}, 100000000, 15234259]}}, {"hash": "28211dbdab17be676eea7b05a08f82bdb645486540a985ed3e833de8343146f5", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["7b8064fd755d09d5f38eb3bd4a61fd21e292dc1c56b80effc04e3460", "56594649745f414441745f6c70"]}, 2000000, "3b36907c9849487ec96cc16e14f09d6c524751d0b6cfe2ca865847d4", {"constr": 0, "fields": ["f9a7395f8e9aab0a07415f547a52bb6cf7e32ced66f362b94067c0bd"]}, 1379280]}}, {"hash": "28214d4fb2856a2421169c0206e0246f51c8732df66ec9c8cb1779dff7b3e92a", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "775348494241"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77585250"]}]}, 1648566407000, 11166, 2]}]}}, {"hash": "28216d7e80c6a475b33bf248e5efb857272f93587caf72a7e8a6573d3eb57668", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4141444174"]}, {"constr": 0, "fields": ["294870e187e8f269be1a306b8fab8a3e466aecea690230df373a78a5", "41414441745f414441745f6e6674"]}, 995, 1061445712412111, 10000000000000000, "a303b215d75bdf6aba2e48ad685027b806f4c43a651fccc7517197ce", {"constr": 0, "fields": ["d6ed0e587bc84ca574622613d398ce8d66adc146a5b6a3cedbc2acd0"]}, 7000000, 18842226]}}, {"hash": "28218cc27ce1b5d5398f3834fcee5ff53807a742b7f773ad4cc98f052b0a4580", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["40f11fe387d8bacabaa05ba8ab35322ca69fc35069a980fc09bda33f"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["93e89ea837f5f6cf05c709d402bb65a91b2292e66ea866a6ed298235"]}]}]}]}, "40f11fe387d8bacabaa05ba8ab35322ca69fc35069a980fc09bda33f", 1648452260222, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 95836]}]}}, {"hash": "28246b319527f64c21c44e8f2d97b77a3952bf7f1406912eaee80d1f5e49ceb4", "plutusData": {"constr": 0, "fields": ["9f6224a7a34cbcf568be8b60f08e1544c3311611846e38288f7901b8"]}}, {"hash": "28295a11e36deae797258ee04bbce3398c23dece9eec6d860cffb3054b9b1342", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1649450222000, 54492083, 192282]}]}}, {"hash": "28301cea3ed9286e7f074856e7bd99f87ab7ff61a6985ab6c83f0bffad3f63a6", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["698a6ea0ca99f315034072af31eaac6ec11fe8558d3f48e9775aab9d", "7444524950"]}]}, 1648594027000, 23154343, 127503848]}]}}, {"hash": "28310eb0e8fe3dbf14c62be7d265b263e1433c712c504e7eb4d56020bfe1fc75", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["514bea316c280a382aa855b20fac6242d891477ddd813c0bdd37b925", "47454e53745f414441745f6c70"]}, 2000000, "3895fc74f0f5c2e0acf987814da6bec855ca2e30f5a50a773b58c11a", {"constr": 0, "fields": ["ca1ed646c5889dc50379479c49d5ecc0e344296603d4301699ad5d8f"]}]}}, {"hash": "28313e0fdf1fc08f871543046868088269ce4ee851f8481300e117b08f1e6a0e", "plutusData": {"constr": 0, "fields": ["2f0069d118f8ad1e5f8a115432f1e9c549fa1b1a570d8e19c8d4705f"]}}, {"hash": "28320ad3c6a2e147383b369b1a9c647b145e81319621be3692a1414b8e25db59", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1648519091000, 3759, 57850]}]}}, {"hash": "28331ca35836082e4b85721005cb1db2208258abd9b1044d9d0578c3a4805821", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["96f1ac2fc6fb105fb3d660c0c7535489b32fd1c6427698acfa4d1f8a"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["03469068d730f15517bd6d8225809fa952813e6e4591054f26c5739c"]}]}]}]}, "96f1ac2fc6fb105fb3d660c0c7535489b32fd1c6427698acfa4d1f8a", 1648921508046, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 1, "fields": [8493266]}]}}, {"hash": "28333e3b349d6cc229032384e4f3f3c8687237360f5dc93927f54ebfa2c22df0", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b0ec9438578dc5784d4ecf2cba2d4cd6b12c01b8fa3a0634a7ab1708"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c832c072a955e04f0fa713221a48d4aade98f9cf1ee1dd03671066be"]}]}]}]}, "b0ec9438578dc5784d4ecf2cba2d4cd6b12c01b8fa3a0634a7ab1708", 1650419825387, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 2066928]}]}}, {"hash": "28340edbdac98a69f2819386501964de708f124225c935ba060429699e256c2a", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d787d01b5b11bfe789aa2d90a649c4ed20ec6a3f42965020b7a7abe7"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["56d9608c1f2bdec0cda52c241dd8977138b18193c73d184c4d7a6cb4"]}]}]}]}, "d787d01b5b11bfe789aa2d90a649c4ed20ec6a3f42965020b7a7abe7", 1649777283731, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "01775459ea42d155094e18c52697cb27fc802b8d4c51dcfde67432ef05586344"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 480638]}]}}, {"hash": "28372fc3eb38435e157d36fe42287b0dc14add585d10325372f26de016a22759", "plutusData": {"constr": 0, "fields": ["2957190302c8ff1d4460d56505c055d45b54b7e37b87d1793ede5cca", "d2daa1540041c71999add47ab32ea46861a67b70ed5b1db2b790e323", "", "", 300000000, "614d454c44", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 500000000, "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 172800000]}}, {"hash": "28395ad5082c231f0e645fbe9a3da6d6ba9c0d419c0a2b87e9a9e8979be5f38b", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a7c5fc97303ddd5786b8b1c398028e891168e14207628ac1ba4c2e4a"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["caf065f69cb6557b8fa92fafc1b2aa9024bebacdfc9a547bf079d35f"]}]}]}]}, "a7c5fc97303ddd5786b8b1c398028e891168e14207628ac1ba4c2e4a", 1648499479411, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 105902]}]}}, {"hash": "28408ee6b68f82fa31058c9dd7388fc4a2f1b3ec4a87ed1481d64122dc118c24", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "01775459ea42d155094e18c52697cb27fc802b8d4c51dcfde67432ef05586344"]}]}, 1648992044000, 13146424, 643675]}]}}, {"hash": "28437e41946915ab82f4b7a287aaaae58a135b1d03e8eed0b9214c57d9713396", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1648924691000, 65001803, 856032]}]}}, {"hash": "28453fcfd2f2c694716162e811f8f8b08ad56b976f1bd249932601458a40ed19", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1648482425000, 253375, 11466]}]}}, {"hash": "28455fb7956a15f920cb7701d74eae9083a508a48fadb66a74c3add883e978b9", "plutusData": {"constr": 0, "fields": ["81b119b77733194463407c4103b659aefc9fa2e76f91729c1495b4ec", {"constr": 0, "fields": ["ca6e4926b5847e14c24e564f358176407b8c7cf37fdbde4cfe4c3962"]}, 5700000]}}, {"hash": "28493c5860a754de6e0b409d9016b766f509902598e23b22ae5f2131f7e35591", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1648585078000, 56114915, 513585]}]}}, {"hash": "28504a11ee1e8889754f1fca04776fec885b5aadfcac40771c6d0fa90c5c4ff6", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["46b0bc9a0abaa20e1160fc6e1dc1b32948c0fae565531caa82abfbd3"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["30cc31f09fbcada0605ef6617a1ee94e83200f58b978d9926c795287"]}]}]}]}, "46b0bc9a0abaa20e1160fc6e1dc1b32948c0fae565531caa82abfbd3", 1648567953634, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534454"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 169]}]}}, {"hash": "28519b8f9692c8d7ed648bd1df4201ea6d3623bf4a84cc0162f0bcc808ddf312", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["3198957792e501b21eb26b75c99eb3f360de0dcc4ec01b70ef81379f", "484f534b59745f414441745f6c70"]}, 2000000, "7a607869468c3e03b8c67847e97dce041d41ed927a3b8ed214eaf839", {"constr": 0, "fields": ["14186c7f9dbc9ee8077a29fa297702e2e36affa3df3928fee113e8c2"]}, 1379280]}}, {"hash": "28540ddd4b860015916bb0ba67186500b836ad9359bc9b9a89b39586ac931fcf", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4d454c4474"]}, {"constr": 0, "fields": ["845c337c265b63558b775bbc346585e54914719698429131b3bb838d", "4d454c44745f414441745f6e6674"]}, 995, 8096197627665934, 1000000000000000000, "68f61a0ebebd2a8fc30d4a464b5645b2da130062c1ac309712c33f29", {"constr": 0, "fields": ["8d4725252f1fd91b50b3cbd65899e1577e1cc2578ab06886d93505ba"]}, 11000000, 247029543]}}, {"hash": "28598b862e1cec7fca9f993c5b621d8bed0ec62780a85024c7578d2488351f1b", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["da46f8d7ab15bf009213acca2b64db3616cdb35c31f2361ed03431d2"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["87b55861f3b3faca183f9ab5df1a7205e52fd60e02facedadbcd0b17"]}]}]}]}, "da46f8d7ab15bf009213acca2b64db3616cdb35c31f2361ed03431d2", 1648706953048, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77585250"]}]}]}, {"constr": 1, "fields": [18743]}]}}, {"hash": "28615c33151b560697429b7194fe503d66c50edc84cfc8b7604c4bc3622658b4", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["de1bce0a6b44b61d31a299f330c0edf240d7fa2e96c6974cbf460c89"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["1e7f2c4c94b809d709150375993ad9cf933d2b7fd06b3428f88d174c"]}]}]}]}, "de1bce0a6b44b61d31a299f330c0edf240d7fa2e96c6974cbf460c89", 1648473603900, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 125581]}]}}, {"hash": "28661ff9e88bef9892612dd11a750196763705cb26cc9deeae5a924838cfed0c", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["c3b39f2855f1c15c1d773f5cc51fc4c9987af269435fcbc6fe452cc5", "634e455441745f414441745f6c70"]}, 2000000, "e28eb72b9bea274ff12c63a165a41bcf2a8e96cbf4853fa71af110ca", {"constr": 0, "fields": ["426b7db207c73e6bda6fcb599457bbfbdbc5a4a524948f573440aab6"]}]}}, {"hash": "28678f329da5f20a56966fc0c9bd3db0de46f8f603874a04dddf2052c5246366", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["385ec230b12d791af7da9778ec73b8a7b9c33f1e39937bcc52a8119b"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["33b2904f491daa2db85c4b2dfc1dc52da45ff28d4669d71e982370e9"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["385ec230b12d791af7da9778ec73b8a7b9c33f1e39937bcc52a8119b"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["33b2904f491daa2db85c4b2dfc1dc52da45ff28d4669d71e982370e9"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, 207637]}, 2000000, 2000000]}}, {"hash": "28687e09fe2a2038b87c5a8205169842a6177d0ebf9423d93ee149154a625676", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["845c337c265b63558b775bbc346585e54914719698429131b3bb838d", "4d454c44745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4d454c4474"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["63e4edb737843f9b966ab1318259b3b4e165eb356eac93b3fa0bfa7d", "4d454c44745f414441745f6c70"]}, 2000000, "b9182d0176dded0efd7ececb0ed56a0ef2d57e5a155d755bbe6fa7f0", {"constr": 0, "fields": ["48d7a6e92519d6f924972ca047536e1c2f11a3efa8da8079d822ea01"]}]}}, {"hash": "28720dadef1071817786a0e32032107e49d0bff6f17db3d702268b421ef6a1c2", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["cf034317492f715ef8c15fb3879337425304f30163db10f42ad209db"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ad38320bf7ed5178d71d4d5cf71fce75ad223be66208a3306ff9c581"]}]}]}]}, "cf034317492f715ef8c15fb3879337425304f30163db10f42ad209db", 1651327718287, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["3fb0efd17304d74896130d9ea419a9883a2ef3c8bf9f9e39478dc210", "74574d54"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 771410]}]}}, {"hash": "28805eba31b56fff14a80f1ed54bd2b31a2c42030046070082554fc7ad3ab5b6", "plutusData": {"constr": 0, "fields": ["6981db9ec10b015f20c8e5f4af34c5d36316b5ed17b30280b9d50b1e", 50000000, 500, 8, "059e7ca1755d5350372417d7feb4204b12294a100e7a47d68ad928b7", "424a534f47303030333436", {"constr": 1, "fields": []}, {"constr": 1, "fields": []}]}}, {"hash": "28814d93e9761f0671f33d4d18e84ce3113b5252d4b160d685066f7273fbc2b8", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["845c337c265b63558b775bbc346585e54914719698429131b3bb838d", "4d454c44745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4d454c4474"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["63e4edb737843f9b966ab1318259b3b4e165eb356eac93b3fa0bfa7d", "4d454c44745f414441745f6c70"]}, 2000000, "6dbff76ebb4da40747c8040fcdb4cc1cdb111e4fda63908fe1049655", {"constr": 0, "fields": ["e2ad6fa4bc461b10640197c0390dc9a046ba7fc3150babfaa6b169df"]}, 1379280]}}, {"hash": "28845e5e55e648ae1004d752abd6534d5c84ccdd8545ebcb3cd818f0970176c8", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ffd9fa4885679bb6a90074435baee7d6645b53ebc5f42b8a274de0ff"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["43494efc6c06c31ac9590f2869fc776085f96f6a639985051a48c469"]}]}]}]}, "ffd9fa4885679bb6a90074435baee7d6645b53ebc5f42b8a274de0ff", 1648419198704, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 6093]}]}}, {"hash": "28855bb969443115f677ead424d8d153c28e4748de69dca03ce4c2a9c494e4c7", "plutusData": {"constr": 0, "fields": ["3362ba78427d72c57cee3a6940d912ce68daff3823b394f6e14a1d56", 1652105651000, "ee8e37676f6ebb8e031dff493f88ff711d24aa68666a09d61f1d3fb3", "43727970746f44696e6f3030323030", 0, "ee8e37676f6ebb8e031dff493f88ff711d24aa68666a09d61f1d3fb3", "43727970746f44696e6f3030343631", 0, 15000000, 2000]}}, {"hash": "28867e99d2bea8cef2d0cb70f7e3aab5746d7baa79143b60831f5cb0e1da8ef3", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["577a3ab64ecb1748c4c8ffed965a2b100ef2800db415d3e36e2c363b"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["39ca99ca50ee5fa0ad6ebb1eb84ecb42167545de5866a67d3a4008b0"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["577a3ab64ecb1748c4c8ffed965a2b100ef2800db415d3e36e2c363b"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["39ca99ca50ee5fa0ad6ebb1eb84ecb42167545de5866a67d3a4008b0"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, 0]}, 2000000, 2000000]}}, {"hash": "28890ddc4ed9f2efbc0237b438ac1bd290bfe0defc2d0f315dcc8d1868fe8454", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["717434afdf56291a0c4263066e375e5270f9f08a9fc92a82a2ee01ab"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d046c04705ddfd36291ac0d923bea8f768ee8c6e85bd1fc56a7cf2e6"]}]}]}]}, "717434afdf56291a0c4263066e375e5270f9f08a9fc92a82a2ee01ab", 1648489550448, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "524245525259"]}]}]}, {"constr": 1, "fields": [4275]}]}}, {"hash": "28893aa074d6709056134647f6d8072abf372a52eaa6fd6b707d3b0d28fec0bb", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1649055899000, 67622459, 894816]}]}}, {"hash": "28976c28d497af3ad2f47bbf1cdd8ba138037635949df62b64e00031c928b8a5", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["beb997871c97fb4ba04d3221625ab35476a64e636e215f8e3fcbb81d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c4cdc2a88606d68d7df826fdd737d1d3ebebf904bca61019740640e7"]}]}]}]}, "beb997871c97fb4ba04d3221625ab35476a64e636e215f8e3fcbb81d", 1649195216898, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 1, "fields": [122152]}]}}, {"hash": "28981c28916502dece6c7793822a96b68b60f5aa678a5c0ec5bf2b13d50735b4", "plutusData": {"constr": 0, "fields": ["8a84550a9a07dd059047472558936f4a1fd72fa0c95deef85200ba01", "c009d8269a713956bf72c57112c55309f57e7477f3a8aeb48cde240d", "", "", 100000000, "614d454c44", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 10000000, "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 86400000]}}, {"hash": "29028fd39c81a7635537c9461c7cb4f89311c78d6a473e243769012e647d36c9", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "775348494241"]}, {"constr": 0, "fields": ["698a6ea0ca99f315034072af31eaac6ec11fe8558d3f48e9775aab9d", "7444524950"]}]}, 1648669780000, 2848, 5043000]}]}}, {"hash": "29040bfee64761e6ad88068efb2d2651d64ad657c00ac463d5ff067ae43ec01e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["8c48ccfd5cde4e5196d5989a02db6214405b102a8e870d5f7f086990"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0966f3fcb4fd157eb42928a12470d5387b7682f3de6d10aa3c06c2a9"]}]}]}]}, "8c48ccfd5cde4e5196d5989a02db6214405b102a8e870d5f7f086990", 1648689177355, {"constr": 0, "fields": [{"constr": 0, "fields": ["126b8676446c84a5cd6e3259223b16a2314c5676b88ae1c1f8579a8f", "744d494e"]}, {"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "524245525259"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 207054787]}]}}, {"hash": "29042eefda631527183e19040a44035c669266470f23c263ad1906f6e37040e8", "plutusData": {"constr": 0, "fields": [955431298957, 187825, 737044, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["6b33040fd463333cadbb3cf39b749d0288d85ae65434d55828727bffcaaf4e29"]}, 0]}, 1651842177000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "29051de3b92319c7ece3776f063fec242e1284ee5f49f441b2253e529ea46b7c", "plutusData": {"constr": 0, "fields": [{"constr": 3, "fields": [460]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["aa627145a6226b6d346c381025eca39db62dbe53207605ae064ad78c"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["aca8e97f0917fa955bb070ee02ac947dd36fca7dcd3b524221e53701"]}]}]}]}, {"constr": 0, "fields": [525622588603877, 268435456]}, 1653482800000, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}]}}, {"hash": "29072d62bc5deec970f95e208350aa6802e417e6ba57194e484a06d7f0a8d288", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e3c8d8aef02f18460eba6a60cfcaf765e12fed2baa740954aac307a0f229231b"]}, 0]}, 1653781046000]}, 1653782488000]}}, {"hash": "29094d13144e8f51900756a3cb07a912a3db246ed3c9f285cad228ad63227bef", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "43484f43"]}, {"constr": 0, "fields": ["d311d3488cc4fef19d05634adce8534977a3bc6fc18136ad65df1d4f", "6c712020"]}]}, 1649413810000, 2500, 4236]}]}}, {"hash": "29110c3179148cf807f7303c22218a382ac882a6ad1ab4b962c4077442c74a42", "plutusData": {"constr": 0, "fields": ["84bb1f33f92fbe20e2a1c64a39e015375da499048067102b5c0d88dc", [], {"constr": 0, "fields": ["", ""]}, 2000000, {"constr": 0, "fields": []}]}}, {"hash": "29118c3c880386d69347b0dd79fccf3d3e1b9137cd0439e5f200d64055f33679", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, 995, 9480244639608974, 100000000000000000, "96fa18a3e199eef83600b70f5b4db88aabbbfc428e57dcbb6eec6c87", {"constr": 0, "fields": ["de372e316927c227c3dce191832dac4a5a1bc050ff46246a0a1286a2"]}, 15000000, 21096502]}}, {"hash": "29124c8d0afba842e3e77c486f4fe2db6c610a0927ccbd842bbb3bb106568cac", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f2fc5d70828a01de4426348ae5d83139a22e9a9bdf1be2e01d377902"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["51c94cbca2a0c6e4a1ada7c14365763f2ddc65b28b6d680be2773daf"]}]}]}]}, "f2fc5d70828a01de4426348ae5d83139a22e9a9bdf1be2e01d377902", 1648808103435, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 532865]}]}}, {"hash": "29130db9aa7fb0d5c151caecad5985a06c5369aca917f1da5a35601dd5607b0f", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["970e5e2f9fb43df5fc3d9092c26386cc528fe3089d53e03a6a41d983"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["1bc25f3229eb427fcdafb50170a63a0c6d5666a19947c59b5becd4e1"]}]}]}]}, "970e5e2f9fb43df5fc3d9092c26386cc528fe3089d53e03a6a41d983", 1653251910943, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 343769]}]}}, {"hash": "29132dea4aeb5068c61bb004b8c5de943a73c174a47684756f0e52c67662b6c8", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e1c93dd0087b32621dc6ccb384e4f9a4e848b9a11c91e8b1a2ea7723"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["adc3bed1dd5aadafb7d22560d02b85ad49361ddf38dbc34f34a04453"]}]}]}]}, "e1c93dd0087b32621dc6ccb384e4f9a4e848b9a11c91e8b1a2ea7723", 1648537906702, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "524245525259"]}]}]}, {"constr": 1, "fields": [601570653]}]}}, {"hash": "29160f990d62a645035d2b76f3849f04c904cc6dfd386b5bbc49d5193994c602", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["24526380bef5a18a28c78585abc7441d033a7c9e85ec07d24c6f6e86"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["03a961aff499cb6b2d9750bb62efd6cbb3e2252f10cab06c096e3c4f"]}]}]}]}, "24526380bef5a18a28c78585abc7441d033a7c9e85ec07d24c6f6e86", 1649156710151, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 1, "fields": [2265796]}]}}, {"hash": "29170a73b8159b8a616f5bf16ed7670dfc6631878fb0168032b4a47dcfd6a683", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["bd78eeb07cca04869895edd6da9c621d9540962382becee01d468967"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["352485021b95290a7419d2c44d0d899db7c156f7d91f8cc89d0cf0bd"]}]}]}]}, "bd78eeb07cca04869895edd6da9c621d9540962382becee01d468967", 1648471338122, {"constr": 0, "fields": [{"constr": 0, "fields": ["126b8676446c84a5cd6e3259223b16a2314c5676b88ae1c1f8579a8f", "74494e4459"]}, {"constr": 0, "fields": ["126b8676446c84a5cd6e3259223b16a2314c5676b88ae1c1f8579a8f", "744c51"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 1329]}]}}, {"hash": "29187deb240aec922736748510162064718684dc4348c0e4b9f759206d8a0ec3", "plutusData": {"constr": 1, "fields": [{"constr": 0, "fields": ["82503cf86571f862702a48605cf704caa36bdd3933afe28c7e313b7d", 1649263948, [50000000, 172800, 500, "a6f38647cb0020b07de3588196142c4e4d46a1b18342b90f19654c41", "1e6dee0e10216ff08cf4a91a1869715b12c0d6eefb42e5db81b13bf7", "434c41594e46543234"]]}]}}, {"hash": "29189ac89ca9a4f3926d0ecc150ca5671005789d54e4be239b60c98d267752ca", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e15ab9bb463e8fdd8cb5f8e231122f619a1193447ad01080758a7226"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ae648147b65ff4e14f27536894dfe82ecb88ab0b275d063135655f9f"]}]}]}]}, "e15ab9bb463e8fdd8cb5f8e231122f619a1193447ad01080758a7226", 1649029053090, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}]}]}, {"constr": 1, "fields": [15396132]}]}}, {"hash": "29193b634ed2c2032d68cbb5057e40ae8a40860f2a5fd6647af9ea720359cf60", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4141444174"]}, {"constr": 0, "fields": ["294870e187e8f269be1a306b8fab8a3e466aecea690230df373a78a5", "41414441745f414441745f6e6674"]}, 995, 5552305760147998, 100000000000000000, "77bd161839c3036b6d7edbb6b45f2c8c7eb1d8740c4f42adf6cb3b73", {"constr": 0, "fields": ["0b280067882a08f0b67e1ebc492cb5f3d58987c193460644130fbb1c"]}, 15000000, 36021071]}}, {"hash": "029206f6f3d0bb264083a72253fd6dbd92ed7d88c30917b127077ef251cdb159", "plutusData": {"constr": 0, "fields": [{"constr": 4, "fields": [{"constr": 0, "fields": [64766017, 50]}, 200]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["acd14e89264df83fa3ccb6b97f8f9da5d392ce828e740752c26fb23bbdd41164"]}, 0]}]}}, {"hash": "29222d46c72a83c0f1ebb207696e9db0b066cada1dcc7934d1f001334260119e", "plutusData": {"constr": 0, "fields": [{"constr": 1, "fields": [10]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["72c1f5c218b34c41eb42100c3a4c376013dcf9cf6387ea1ffe7d68ba"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["9997c6b54551e75888fb0b94e41e15d4315cfc52da7b713975bbab9b"]}]}]}]}, {"constr": 0, "fields": [2790570655577935, 2147483648]}, 1651900146000, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}]}}, {"hash": "29250ccb6c4a161ed8b8767528ba06adc00a15f909d89a06e02ef0f040c965a4", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["1f25af3c23c72a0d368156ba6f00d749c9e6e9bd42fdca51205aa858"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["13d317fff7cc5b1e3121f1b529d964af54971912aa4a976f4034f48b"]}]}]}]}, "1f25af3c23c72a0d368156ba6f00d749c9e6e9bd42fdca51205aa858", 1648786339339, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 390587]}]}}, {"hash": "29268fe80bd4c0a14c4016ba1a740196949c959275128825cfd16256505f5e23", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["4c511512b696dcb033383a4c2962bcbd7483a18cb1ea27df85b203c3"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a6254b1b53d73965b43618c01b2f1db53ae03dbf2eb17481b6853ad3"]}]}]}]}, "4c511512b696dcb033383a4c2962bcbd7483a18cb1ea27df85b203c3", 1649072062849, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["8cf92c2106040ab8ab5752df1db14ff1fec9c19ddd5272e8cce92e43", "43584c"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 1]}]}}, {"hash": "29283b5c1405de045967d8a9d02813a82ebb24712a711f49259f3e26d6036e22", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["afd786d10049b1f88f1073210c4731e4caa8a2e6f419a65677179698"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["db65e66edf0f967f7ac0e8424044672330f921dc650eb44ff4e92491"]}]}]}]}, "afd786d10049b1f88f1073210c4731e4caa8a2e6f419a65677179698", 1648996163622, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["698a6ea0ca99f315034072af31eaac6ec11fe8558d3f48e9775aab9d", "7444524950"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 94356652]}]}}, {"hash": "29304efb53cf1e18470e8c6c4f5ba4de5c70d1dd2022fb0e64b49e42ebe3d48e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["a18ff490f1dd4f99d23a4c07afc3cbec5e2fd624ae4e8a2733f8e2bf"]}, 200000000, 100, 480, {"constr": 1, "fields": []}, {"constr": 1, "fields": []}, {"constr": 1, "fields": []}]}}, {"hash": "29321db68291c7604f796633db7c73f6271f5b46d93a44b12f7c81319c933421", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f682c1ca2e0bbdcb072a66f19eed2553e8fa0f82e622156303ea8d1f"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0e6181ad7c6415eea8d766d207a9a271ce66ad761300b42e36c87d4f"]}]}]}]}, "f682c1ca2e0bbdcb072a66f19eed2553e8fa0f82e622156303ea8d1f", 1648947515961, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["769c4c6e9bc3ba5406b9b89fb7beb6819e638ff2e2de63f008d5bcff", "744e45574d"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 22431656]}]}}, {"hash": "29332c820e146024108f159aa3da67343bcc38f38f0c1942e5a798bc1faff66d", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["cdfae9856502a85d2e837fe81a2a86e9bd5df92233e179631a6e63ea"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["4125ffbc0896eca9f46726b4d327a2c15a6465e69035c4ca0a93e64f"]}]}]}]}, "cdfae9856502a85d2e837fe81a2a86e9bd5df92233e179631a6e63ea", 1648661766635, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 262559222]}]}}, {"hash": "029353ede7203d54d7738d657494238c6bea8ec005d741d41b4cb6a377218def", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["818421b93338d765574e3c863500bf2f9cda7e03db342aa9ec06bb28"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7e7c59e6768b07960e4713a2b7fc29b1bb8ef0e691163e607b5df961"]}]}]}]}, "818421b93338d765574e3c863500bf2f9cda7e03db342aa9ec06bb28", 1648637746491, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 1, "fields": [18348]}]}}, {"hash": "29356a1647d8400a931f1eb410c4c1737bfcbe8b89eda71f0b5627298d0adc91", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["61e8ad98ea4a58b886ad793001995886f33db0a6938f884e15859fd0"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a36c4fd91077f8cfbffa8bc998c179ea5bf95377b96aebe9e37f409f"]}]}]}]}, "61e8ad98ea4a58b886ad793001995886f33db0a6938f884e15859fd0", 1649109315040, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 102697]}]}}, {"hash": "29375ba3265e7fc59867be7145d2f2da7fb4a581cd414c7505c41b16e000509c", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["eda5d53446dc59ed24569aae7d3b67b774b0a3069a1c1bceb13b080a"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["76b209eeef5bfd535a32163009e211526b8a5857f1c606b498abbc98"]}]}]}]}, "eda5d53446dc59ed24569aae7d3b67b774b0a3069a1c1bceb13b080a", 1648633201123, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 1, "fields": [1507]}]}}, {"hash": "29416f02684d47301bf7c1df297ad9a77ae07d341090443cdd99537de79c4f86", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["60a45ed1f9e951ba5da63cd4579d2258dada198b31e8deb3cc7f64ea"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["3d64a8d21e8d0e0b0cf5df69e05f452949817540b6f74552a4f53a2b"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["60a45ed1f9e951ba5da63cd4579d2258dada198b31e8deb3cc7f64ea"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["3d64a8d21e8d0e0b0cf5df69e05f452949817540b6f74552a4f53a2b"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 3, "fields": [202499989, 441959]}, 2000000, 2000000]}}, {"hash": "29480ae816fd7d9835d583a78ac095dad191bc5c82a27c66d10a191404e79329", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}, 1649237835000, 108687114, 3648497]}]}}, {"hash": "29493ca2906ec6ae393705b1a9e00a3b9e9991901cb7cfcf71577330ffd689ae", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["85068616145b922a637acb39db2e1fe8d911895a968f70b0cdc7ceb4"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["5a3e4191983135ef8ea22cb7ad93eb4ce04753e43692dda7148c43d5"]}]}]}]}, "85068616145b922a637acb39db2e1fe8d911895a968f70b0cdc7ceb4", 1651363459757, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 19581722]}]}}, {"hash": "29506bb2fd6b8315e54f1f64f7184766a1704c471305e871ba084aaee0aca261", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f4b08665fed7ebcac20bf656b01cfaeac6cf12c57391c4462bf758c0"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d0caaf2cd39104a352f48a705c1b99259e9a34136e77b3939ced7667"]}]}]}]}, "f4b08665fed7ebcac20bf656b01cfaeac6cf12c57391c4462bf758c0", 1648785042971, {"constr": 0, "fields": [{"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 1, "fields": [62753]}]}}, {"hash": "29518fd48515fbd7f36ad7bf7b33668e840c39aaf3d24777f779aa1e2a387ee7", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ec0d83dffb7f95f51bb558536e6e8674f51bbc6b333597e7311fe100"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["6f224cd11a8aac2e3d5aa6dac50a72fb237e05c56c5a19f0c6e6efc9"]}]}]}]}, "ec0d83dffb7f95f51bb558536e6e8674f51bbc6b333597e7311fe100", 1648755293271, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 46664]}]}}, {"hash": "29522ec02bf837467d3091d270b629ea7dadf9e8a37e9905db422ce97faff204", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["698a6ea0ca99f315034072af31eaac6ec11fe8558d3f48e9775aab9d", "7444524950"]}]}, 1648479147000, 22340768, 98939884]}]}}, {"hash": "29561d1d0f288bfa1778afbb23194ff64f6c1faee2121c9529b35e9a289fd760", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1648986177000, 911, 112650]}]}}, {"hash": "29564ccbe9f8f2915efd36bc148b4f30403ce98625f1cb8a917ba08de7e87cd8", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, 995, 19067747324890388, 100000000000000000, "cd552d434ca951d1d582af1213e39dd0d0656a62f618a61da5fd1c10", {"constr": 0, "fields": ["34d31a892dcb0f47818c94518a4dfabab9c023ab103060038c4cd1b3"]}, 50000000, 10488916]}}, {"hash": "29593a812a156ee003f1ee3b2683db55788eecc1962773094ec2f79573432e29", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "4d494e54"]}, {"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "534245525259"]}, 293, 0, {"constr": 1, "fields": []}]}}, {"hash": "29650d9b612ff48348c8e835e839e3a02414918a1216c829d189aac1ee3dc691", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d329f473cb8f8a0d053ad4501fe3507991c1d5abb50c02ed5cf61535"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["fbdf800a129d96cde544045a8c778a049dbacfddbbdc6a1508a58c5d"]}]}]}]}, "d329f473cb8f8a0d053ad4501fe3507991c1d5abb50c02ed5cf61535", 1648532875068, {"constr": 0, "fields": [{"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "b3b9df82d3439dcb6bbda8b99a588ecd9b512c2b11f852623b0e298d3f5e2778"]}, {"constr": 0, "fields": ["d311d3488cc4fef19d05634adce8534977a3bc6fc18136ad65df1d4f", "6c71200f"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 1273899]}]}}, {"hash": "29790b02d25e9b4e18be1958a9d7cab8041dfb1400f0e708d63880f6af36eea6", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [200, 376731302]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["4afdebc92ec423b65231a7595cccb76240512bfbf63686a9b0690658"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["99fa744e71e41e08d867c0a46ce908e62b4fdba0730dc19c420e9e5d"]}]}]}]}, {"constr": 0, "fields": [7931610888273315, 4294967296]}, 1652976302000, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}]}}, {"hash": "29839c7639e3848042a48484048b9e2c407622eb44d2d2be176b76f660487f17", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "15e9d957e80847f995633b28e8d313e8cc877e231913a187711e93e063c23dee"]}]}, 1648616150000, 408501, 653]}]}}, {"hash": "29877f5eeeac01a20dcf658f2352dd20c14ab6130b597517abbf0a71cfe76b3d", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["03284a6de576087e933c350b7e643428cae755ac0be50ae86beacb02", "4b696b6f436f696e"]}]}, 1649609527000, 20000, 0]}]}}, {"hash": "29887d6e2d8d8d6607b720d27c59fc31778f7bd77003e51e092e3a3f78dad7ad", "plutusData": {"constr": 0, "fields": [3608447113619, 398664, 3287946, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["42f6b3af999ccd0c40475e30cb249cd60d1ac5b098b4dfa3446077d4c5a1b182"]}, 0]}, 1653160963000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "29898d0fa7312d297f1ebe5ef48dbacafaf276c9b84076a8f16b100bee469b29", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f5ca767a95b11ff6072b4e7755d0578e2288bffc9f850826170e46f4"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["83dccb8d148fd90e69538f12004ee72f04b04ba27c98ebc87e90339f"]}]}]}]}, "f5ca767a95b11ff6072b4e7755d0578e2288bffc9f850826170e46f4", 1648473443776, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 238931]}]}}, {"hash": "29909cf3ecc96e1ff40fbb20c26395ec6edc0b807cbe51db90981ff2276ce335", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["01d2fb57ee600f639102981debcbfc52bc4e0cf4ce42bac8073fbb83"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["83e918983a4cb7682f318de0d3184c766028330fc2916cb9e129ac2b"]}]}]}]}, "01d2fb57ee600f639102981debcbfc52bc4e0cf4ce42bac8073fbb83", 1648530859559, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 1, "fields": [21895]}]}}, {"hash": "29923bb81fc749433baa4dd505e29cae845dfade4e085a6111be4f40a3d8547e", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1649602817000, 2080439, 65152]}]}}, {"hash": "029927d6ea138f56e2d5f4d253f2715a9ef53246e3ccbf9a5aa67bed2c21d296", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1648557875000, 54229509, 489889]}]}}, {"hash": "29929d230ceac10a44319d5d222ac4e3f3d61553349957791449a21879c98745", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "775348494241"]}, {"constr": 0, "fields": ["769c4c6e9bc3ba5406b9b89fb7beb6819e638ff2e2de63f008d5bcff", "744e45574d"]}]}, 1648539633000, 0, 0]}]}}, {"hash": "30041b519cf5550fdeea0547dd62b352d6269fa93f6382cc483280ca430f4602", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["bb38fb61f9850c48620a1a641e5281a91d4ff88dbfff959fc04c2724"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["13cd21b3fdb0d542b5a2b8f9554db6b9870ec8acb57d34c87c770673"]}]}]}]}, "bb38fb61f9850c48620a1a641e5281a91d4ff88dbfff959fc04c2724", 1648497209235, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f54"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 115]}]}}, {"hash": "30084a7ff075c6ddc2e7c4b7463805ec61c54597204c5c682228f9bd7edaf616", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["476a4fbb4fe7b3b3b2836783a935e41bdc83103d814232887593e8ce"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["3850450d895607c9edb018a60a038de41e91043c95d872923d77f997"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["476a4fbb4fe7b3b3b2836783a935e41bdc83103d814232887593e8ce"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["3850450d895607c9edb018a60a038de41e91043c95d872923d77f997"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 2, "fields": [1]}, 2000000, 2000000]}}, {"hash": "30094fb0af148d27907d3a8635f6c0ccba332fb153225fb92962b6981ffd7326", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["457d851c5c541a0ae8eccf6a26dbf1e652f3871e7aa5299b6e202655"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["5b73e1c8c9127c905df0074c044a77003a647b76abd4c22cf8a28443"]}]}]}]}, "457d851c5c541a0ae8eccf6a26dbf1e652f3871e7aa5299b6e202655", 1648603945765, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 2584601944]}]}}, {"hash": "30116c0ae0d1e4575a502a2f0f67f2ff6ba71c212dce6e6dbf58af4b7db5e8c7", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["4166af1c980a64befc750f0487437afcfebace446877e57111de7319"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["5a230379531c104b623a11497be7a51287c4e6d1f2c29b56d4053e2d"]}]}]}]}, "4166af1c980a64befc750f0487437afcfebace446877e57111de7319", 1648461481591, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 151900]}]}}, {"hash": "30127d3144b00c634c268965c8f6f7d3fe4f8505a525f8164290fe03397f2db7", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1649169212000, 229855, 23233]}]}}, {"hash": "30136cdf0d815a474592a4f667214f7afd41b25ad1ddbf892863e8b44bb1e134", "plutusData": {"constr": 0, "fields": ["fc04e3591220e41f7c0c32ea9ddaf2aa99da6f4dd0af04db928e1f1e"]}}, {"hash": "30154cc4f18b4260ad3d928073721a71f5c7a063dc2fd35635e0b0ae23457b96", "plutusData": {"constr": 0, "fields": [1822512554780, 212464, 1662351, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["07f261ac5136753a5e66e282266592dfde67191c0246ffce1274c3b80bbe45a4"]}, 0]}, 1652782614000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "30156f49c69d3bb93bf1db0f78963e10eedd74b09c981fd904ca14b2048adde4", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["dd6c4303f3d6fe71b44bd4f48f934f6453426495b28a1b6814639cb801265588"]}, 0]}, 1652008413000]}, 1652051934000]}}, {"hash": "30183a347d16a5e1e633972c3cbc8f7dabb3897c035dcef4fe585b05fa19ba7d", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "4d494e54"]}]}, "04", 4715130701314, {"constr": 0, "fields": [1, 2000]}]}}, {"hash": "30185de25747ead597e670636e37d3e65fa6dfe65be4814cd168eb7f678a7ce1", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}, 1648537444000, 60058629, 1353391]}]}}, {"hash": "30203a1dd6ce84b133226299641de23edefdaa44dbbca689ec258c550406965f", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "774c554e41"]}]}, 1649286409000, 79058146, 245]}]}}, {"hash": "30215dacdc6ac09f269442fb990c0a9c4e0228d3fda2e24689ffb6604c5879e8", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, 995, 20767691204368773, 1000000000000000000, "7fc1ab84317d55befed737cc45c0d9d54e7ddc2d958beeaa38ed609e", {"constr": 0, "fields": ["cb4b71db19b1b85b879c8a1f8339c49ecd8ab34ee260d517e2ea2f79"]}, 17517957, 96303435]}}, {"hash": "30225f5f3f4be5125143d621db0222aa67ef20f3377ab191e0e5b38a425d522b", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["3198957792e501b21eb26b75c99eb3f360de0dcc4ec01b70ef81379f", "484f534b59745f414441745f6c70"]}, 2000000, "29e5fb9aa7942e3d5f0ea2c35533b5677180195bc5c1a4edc9c95f0f", {"constr": 0, "fields": ["b72e2417ef3ab7e287b5dab4a529aadc4ece57c792e0d7ed0056e4f7"]}]}}, {"hash": "30235e3467c9f81c1b38ed5d14c25b31cd0da833d15c164c565b2faa33043ded", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d6008455b3d1e304ef00dc6d13b388d41ba9a0b6bccdb229db90197a594b45b7"]}, 0]}, 1651741993000]}, 1651766304000]}}, {"hash": "30244c219a2a23ee2faacc6533bc0b8ce2f578b1018bf54280d2b1eec41da535", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["de1bce0a6b44b61d31a299f330c0edf240d7fa2e96c6974cbf460c89"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["1e7f2c4c94b809d709150375993ad9cf933d2b7fd06b3428f88d174c"]}]}]}]}, "de1bce0a6b44b61d31a299f330c0edf240d7fa2e96c6974cbf460c89", 1648492575643, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 1, "fields": [21654]}]}}, {"hash": "030252d38488c0938b8dedd94923ae674c244d19b45655da89495cd75c7e0891", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["02f16872e15c1e79f68fd7f722c382893aac7bc5d3c1a15b94b1c246802df666"]}, 0]}, 1651824949000]}, 1651837556000]}}, {"hash": "30271f6a4a2a0f6fbfdbbb7136c905e4a9e26f7dd72174c49e5d46b99a800281", "plutusData": {"constr": 0, "fields": ["4f538c3b12411af57eebcbf5a5485a720c7cfe25e8b62ed18fde543c"]}}, {"hash": "030290ff30690f8cff1bda20c03a9a24383f996d08c99a97cf9856dae1a8293d", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["4476df728f316e2b49bf2e1da9404136827ab33d3ca28f46dc17e756"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["34195904de7210e02324512a53b1ab1f1a58eae4b4147cf15c73f08a"]}]}]}]}, "4476df728f316e2b49bf2e1da9404136827ab33d3ca28f46dc17e756", 1649251005559, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 219]}]}}, {"hash": "30297da576aafd62be578f78fc94a8397f95012e303dae8ae4f47f5538b80360", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4d454c4474"]}, {"constr": 0, "fields": ["845c337c265b63558b775bbc346585e54914719698429131b3bb838d", "4d454c44745f414441745f6e6674"]}, 995, 288473327034999, 100000000000000, "4ce46aa115e4337a4d93ebc06630e5200f8327af186b9336ab5678da", {"constr": 0, "fields": ["0ec299b6bd036a1bdfe01aeb38fd26428b1958b662f14d4074487bf5"]}, 4000000, 693305]}}, {"hash": "30375e02d7c8510b4d95166fc26648cac027829c98c259bdeb37f72275f30a5a", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, 995, 10612262267417018, 100000000000000000, "7ccae09b7db6c1175ea8cacc7722b6876f0ff85c87195c2ad826e1d1", {"constr": 0, "fields": ["77c008b25bb170da00f8bff2e5d52d3e63045ea900ec5d0447a550ab"]}, 9000000, 18846123]}}, {"hash": "30377c736e1b5183efece04dedef5840d1a37f24dc83722fd48b361fd6757f7a", "plutusData": {"constr": 0, "fields": ["59cbc2272e413c593868f7e3d5e4d192adb7445985969861c836f5f1"]}}, {"hash": "30429c95ed0f8f5b28f3e116a4c6ef033677013aed93bfa22017a9d8488aab98", "plutusData": {"constr": 0, "fields": ["f1aadc995960b2cbd44efe7390290193019ad36e2de4fbbc60f2c815", {"constr": 0, "fields": ["c8a6289c68d12ec70fc4907064b843f3265671db6a12e180811679d2"]}, 950000]}}, {"hash": "30513e5cb93b0502ecb0218309560482d5474f90dd964fa9c7846ba424763cfc", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ecdecfeeb866b1960a97826867de0d5c8636e35f1de32dd5ca330c07"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["4d93527c5a94d613b6a01c93de7cb48c79185618287039b6805bf5a4"]}]}]}]}, "ecdecfeeb866b1960a97826867de0d5c8636e35f1de32dd5ca330c07", 1648855472272, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["d311d3488cc4fef19d05634adce8534977a3bc6fc18136ad65df1d4f", "6c712004"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 989886291]}]}}, {"hash": "30515c2f170d9f0f11afb0d225688a037f1c2cfec9f66e8f14b02f663389e51b", "plutusData": {"constr": 0, "fields": [3040171864113, 303538, 2852935, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f89dcb74a8f8f759f7c2cfc833819d7ef6c90a0d3a80b91d1070ac0fcd018181"]}, 0]}, 1652914050000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "30536f583178dca7b354cb8d03baff261ae704200af7c53d31a59a8c97146de7", "plutusData": {"constr": 0, "fields": ["97b9c0483ce7af66996b465b095c2279dcdccb86393f2e0300447f2a", 500000000, 75, 72, "a1c27a774a84484df939a85a2f020138fa3b75879f0e13aa24393cfb", "626f626d61726c657979656c6c6f77", {"constr": 0, "fields": ["78694fc4ab8a05b4a52e9c736e149f83ba251ceb96b5c84c2988304d"]}, {"constr": 0, "fields": [1652079522000]}]}}, {"hash": "30551df6e5df69d51b31317869cdf6d5aac88d2fb04a25c3002fb4471fa3364b", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1648454217000, 4057025, 16522]}]}}, {"hash": "030570ea7444a0ecce27fe8f334c3c4f418f5994c7a7fedfac3d6765170f8c31", "plutusData": {"constr": 0, "fields": [2620677346850, 294782, 2394877, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e32d1eba91f15992a237a51982adfa9cad423ee91532863ccc61e6a8f2821362"]}, 0]}, 1652866633000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "30600e13f3e359bc529f92927fd5bf030cc021b09a8b1974292e8a96f1b7311d", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2970109c4c605d08451c04b274353a3a21eb8109fb688bf5f2e1becc"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d38a4f40f187962046e758f21104444a27bd48794a363c9db6d0b4e8"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["2970109c4c605d08451c04b274353a3a21eb8109fb688bf5f2e1becc"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d38a4f40f187962046e758f21104444a27bd48794a363c9db6d0b4e8"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, 40166040]}, 2000000, 2000000]}}, {"hash": "30604d8468ba3f8c26574e650627ef220e5509e78b9f9521d4ae1b3c5e382dc5", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["5aa1a1c51e07f11a170d6992ab4bd58edd3b0eacbd7ed58878445ec7", "4745524f745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4745524f74"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["c28ab019a2df9e678c0f629cd3f0c6f253f7a0d25bc4171a53fa83c4", "4745524f745f414441745f6c70"]}, 2000000, "5131f565d1a31e2966a8d8df90c090d27ba944ac91aa5887defe1a12", {"constr": 0, "fields": ["da6a7264516b46008f3b6e57d6999a7b66d4123c901ac4942994fb3f"]}, 1379280]}}, {"hash": "30638b7514285e5b49c17dd7e9e9e0745c3bc4be1869ce2f3a8c06d7235f4f78", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1648776116000, 16593277, 85649]}]}}, {"hash": "30650f3831cf808baf6671ac7e9fa348f9664ebfa0df075706bf0e25f9706ef3", "plutusData": {"constr": 0, "fields": ["e75daa322d6d3001e3a80bd1de1e5d90a9b2b2dcb1e04d3aff604fd7", "41616461426f6e64"]}}, {"hash": "30681b143dcba90ed72caa15f5b74e06dbf606dab5820695f7be39129dbeaa5c", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["5e64f910eb13c67a7aae6a74c995ee414180558b48c23cb90625f818"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["6c59c8d05f362d8060b92f90f860b223909502f8036f0df389ac0ee0"]}]}]}]}, "5e64f910eb13c67a7aae6a74c995ee414180558b48c23cb90625f818", 1648540458558, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77585250"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 24]}]}}, {"hash": "30712edd1e409dc671520954d8704cfa38dedb4da360694b656bccc2174dcafb", "plutusData": {"constr": 0, "fields": [{"constr": 4, "fields": [{"constr": 0, "fields": [9567583, 5]}, 20]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["d05db4f2f0b8e59e48215375e61e7d86370d28b3eb6b41dff01db05f6c369c7d"]}, 0]}]}}, {"hash": "30742c65c9869c59fdb01980c4ed918a14518adb7786cfbd274574ab034ad588", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["004c30dfa43b9b8b1fb9e720bd66fbf1e1eddc3d8e8895eb5e4c3ab3"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["573e63f30882bc2a33830fdc6f08abd4982810a4244dddf11f467924"]}]}]}]}, "004c30dfa43b9b8b1fb9e720bd66fbf1e1eddc3d8e8895eb5e4c3ab3", 1648510501624, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["698a6ea0ca99f315034072af31eaac6ec11fe8558d3f48e9775aab9d", "7444524950"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 1394187]}]}}, {"hash": "30781f4cf6f3f700015ea10091c63d48fda79685bfb42df68f4fe86cc9752ba6", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "775348494241"]}]}, 1648620138000, 271543, 1020608]}]}}, {"hash": "30809b4db3016b2799472630647b5e85086270e3eeb6957194961e91b05a663b", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["3198957792e501b21eb26b75c99eb3f360de0dcc4ec01b70ef81379f", "484f534b59745f414441745f6c70"]}, 2000000, "f5fb70c0e0ac4dbdcb5b69e11e86a1ae2c5be4d96627e2d8ad2c4372", {"constr": 0, "fields": ["ad752aef0de2c7f390937a3dc67c5861b4071f32c943926013b8d6ef"]}]}}, {"hash": "30824af0f81e5084105f5e76aaba51c3b75e6f1965c7b2cecbbfaf688f9756ef", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["bc2fc3742624bf8d42e89f6d6a22d100bbb2bf3f085470317d064b26"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0fe8b2e9808005475772d838fb4e94db1f1175072071c83c14b9d5a5"]}]}]}]}, "bc2fc3742624bf8d42e89f6d6a22d100bbb2bf3f085470317d064b26", 1651177521111, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "775348494241"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 243960]}]}}, {"hash": "30846fae97db07b861f05b9e44fe6168a44d4894f2718c683ced4b036a09a291", "plutusData": {"constr": 0, "fields": [4060823610500, 434030, 3730132, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["adcc2ae0ff25d642cb2ac82c4d532b076690863b5215888d105d7bfdf589ba27"]}, 0]}, 1654063397000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "30849e06234598c56526467778f5ed04c15a5a650819ffac272eff45ac6e7d3e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["845c337c265b63558b775bbc346585e54914719698429131b3bb838d", "4d454c44745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4d454c4474"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["63e4edb737843f9b966ab1318259b3b4e165eb356eac93b3fa0bfa7d", "4d454c44745f414441745f6c70"]}, 2000000, "e1e16be69b9fc7930c3ddfe17bf0279143a09540fb890e0cc3567be4", {"constr": 0, "fields": ["2bdede406ba27a6974342d95922a838774d7305b032e13734c23e648"]}, 1379280]}}, {"hash": "30907d1253fed4e01a238d29896cf7d74a8613f2d03d6828caa41f471387c301", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["9f44be7e7304895433da7584e9a7f9c2849d2983f3aa7e559040f543"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["01e166194662d6efac785111805ef62e5f2d8bca8c8f36244d3fbc8f"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["9f44be7e7304895433da7584e9a7f9c2849d2983f3aa7e559040f543"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["01e166194662d6efac785111805ef62e5f2d8bca8c8f36244d3fbc8f"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, 9103313]}, 2000000, 2000000]}}, {"hash": "30911b200c773637a35d733755587a509fc8167d0fccf96ebef93a32f97617f2", "plutusData": {"constr": 0, "fields": [{"constr": 5, "fields": [{"constr": 0, "fields": [88004671, 100]}, 100]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["eee843fc178f70857e8349686092d8955c506492f245ea113fd7393f5b221897"]}, 0]}]}}, {"hash": "30915b85b4757b051f273e24ba4316e02107e2f2b733160e423b8914e364736d", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["92356347e0ab0b1eed8527114a338529687a679431e6fe3e6c4ffe91"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a05d53fee024cf13b62d83418e07a358df91ef0500eb05524eecfe27"]}]}]}]}, "92356347e0ab0b1eed8527114a338529687a679431e6fe3e6c4ffe91", 1648606760301, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 1, "fields": [65158]}]}}, {"hash": "30957b7216a87b9f8b0333ba7d353256b23a7861dcdb4b364b7fe610c6a66889", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["858ded85b9518aa42de4eb88d897cabba8980484e3d9e12662582594"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["64971decdd8523cb3b8bdedaf5f1bf7a672f3ba38f59b87297531494"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["858ded85b9518aa42de4eb88d897cabba8980484e3d9e12662582594"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["64971decdd8523cb3b8bdedaf5f1bf7a672f3ba38f59b87297531494"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6", "4d494e"]}, 1720985]}, 2000000, 2000000]}}, {"hash": "30969c4861289744c840c48336f6499fb37c354b6861b54b576a99d6cc0fe792", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f868b82a83eafb392aabc8c758282cd2a4ba0e5c9d6f12712a212813"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["79cd2b1c69742cde2c41c11f0e9da2ac8b9efc574335a677e17e454a"]}]}]}]}, "f868b82a83eafb392aabc8c758282cd2a4ba0e5c9d6f12712a212813", 1648601675063, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 8978615]}]}}, {"hash": "30998cf7482dd2e7a22698bb76e54581eebddd897fd693423df8bf192ae71cc6", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["99d88b057553a9f3f15d6a673c7e447750cf73aebed925cc0f2683f9"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0aefb10fa273d9c581306470e21c0627ef545969ac188c8fd5508224"]}]}]}]}, "99d88b057553a9f3f15d6a673c7e447750cf73aebed925cc0f2683f9", 1648465910088, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}]}]}, {"constr": 1, "fields": [524820]}]}}, {"hash": "31002efbe18c77231295d86d8c1e584fe9160d3978a748ea528dbf967ce80b11", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["3198957792e501b21eb26b75c99eb3f360de0dcc4ec01b70ef81379f", "484f534b59745f414441745f6c70"]}, 2000000, "dbda97319b5fe6ad9b843f826b0354819c9f574ea211edb20ce816cb", {"constr": 0, "fields": ["791fecf6524f5ae51b2025ab62a275a263b5bced12cf08af4dcc2c42"]}]}}, {"hash": "31017d5c3a1ff41d2c64b733fd5187e32d7ca6158d6f6a6f93f5bbc7cd57945e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0272667784356bfe94a2ee320e096bea753b851326a9083726142411"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["64d375d8e68b025ccd23883057a17e4e006bd694962d5c295d08da69"]}]}]}]}, "0272667784356bfe94a2ee320e096bea753b851326a9083726142411", 1648707554677, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 1, "fields": [27143816]}]}}, {"hash": "31045ca4ddfc91db8149980484e57a9d2beff46af0e70d41a477b65fe981c938", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}, 1652688847000, 64520061, 2064450]}]}}, {"hash": "31072ca97e210c0b066f8591ae6ba23f09fbd37367460e6afb655b2bd7af3ac4", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c92f9484274b0ed5fc9ce087e6931b2e793f00ddda746865cdd79d60"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b6bf071f4d041fc1bd5fdcdda65cbe88cb0625ab1c74c50fa023aaf1"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["c92f9484274b0ed5fc9ce087e6931b2e793f00ddda746865cdd79d60"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b6bf071f4d041fc1bd5fdcdda65cbe88cb0625ab1c74c50fa023aaf1"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "534245525259"]}, 0]}, 2000000, 2000000]}}, {"hash": "031073fedce7606e8128060aabf4f60b63503f2315f215884d432a503e320207", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7748454c4c4f204920574f554c44204c494b452041204e49434520485547"]}, {"constr": 0, "fields": ["698a6ea0ca99f315034072af31eaac6ec11fe8558d3f48e9775aab9d", "7444524950"]}]}, 1648567004000, 203793793, 515521]}]}}, {"hash": "31077a222dbc0b1058a14c3bd35f34f0b96fe7e5b18b33cb1be453469a7475a7", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1648523722000, 8407737, 30750]}]}}, {"hash": "31078abad5eea9c2cedea9897945afe113fa304401d7a0d10fd2b9753e61d6a2", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, 995, 8857287661142849, 100000000000000000, "af6e8af84dbf2f35fe6185eb6e1353d83f63e99cb71e5d306c8f8f3b", {"constr": 0, "fields": ["0a62cf5c7a34b8802dd6f7937825839412fd0bbf49429f741a84f1cf"]}, 100000000, 22580276]}}, {"hash": "31103d2425002f639079a3a36b74591c32767283e85281f4c6d115747c0d8193", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b841c4c7b5757171acdd5e7fa6b4e22836c62ce36e9037a280939458"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f4f36ce6df121623dcac35bce8c98d5f31201b20d2b99d1ef3de3b6f"]}]}]}]}, "b841c4c7b5757171acdd5e7fa6b4e22836c62ce36e9037a280939458", 1649155618347, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "4d494e54"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 290433]}]}}, {"hash": "31131ccf9327babf294f8989c89d1babd9f6f16ee74dccfd6abe5cf9532e6369", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1648562230000, 54530009, 494329]}]}}, {"hash": "31205c79364fe50a26e4f1aedfcfccb6aaa84a1b07d3efacbac675ae800b5019", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c704c509bfc5031b39c7df8dbe4ced3372daeeb7312313cf2be6717c"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["634b08be0469cb293e6daba871bcfa58e59302767a9b4f482bd8af7c"]}]}]}]}, "c704c509bfc5031b39c7df8dbe4ced3372daeeb7312313cf2be6717c", 1648750993137, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 1, "fields": [3409]}]}}, {"hash": "31206d33af6bbf6b14d7662561d10befe032a5eb9c1d50e7cdfec819c78a18f0", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1648505379000, 8063926, 28302]}]}}, {"hash": "31222d132b782f60cd63b571e16f3c9e004267a2da055739f323a6ff249ed52b", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["244ac223ac0ce06044926ed9296a8a230ea480d5fc2f732a735e9d84"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f4a80e9c09a6093b16ecb6ce9864f3baba99f63cafe272433ec72a50"]}]}]}]}, "244ac223ac0ce06044926ed9296a8a230ea480d5fc2f732a735e9d84", 1649533955666, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 2, "fields": [9, 1184]}]}}, {"hash": "31240e8cf77831d1ed0c526d57c60d00792cfee4350ce01d9aeadc70d4842d7e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["07b21c4789a6af0419450789766cd3185f5ad44a35274b6439928114"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e977d62f4d32420d7c2606daf158ed58eba7220f41fa4bccc65daba8"]}]}]}]}, "07b21c4789a6af0419450789766cd3185f5ad44a35274b6439928114", 1648882894206, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 1, "fields": [27555999]}]}}, {"hash": "31299e1969209f55c4434687144bb181bb6714e23f70aec9e621846636d92a41", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["bc3eedd3f12a803c5d81040c2a98b478a647bf0e30df2a5c5db8d6cd"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b0611c4b4ea80aff52720921115194ec8026602afb13fd6ed896b8dc"]}]}]}]}, "bc3eedd3f12a803c5d81040c2a98b478a647bf0e30df2a5c5db8d6cd", 1649258138340, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7741564158"]}]}]}, {"constr": 2, "fields": [23820083, 979]}]}}, {"hash": "31301c0846481c9c6e33c428cc0d8eb3e95368cef3ac160ce1edd5be7189b187", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["126b8676446c84a5cd6e3259223b16a2314c5676b88ae1c1f8579a8f", "744d494e"]}, 603764866267, 0, {"constr": 1, "fields": []}]}}, {"hash": "31314d3118d4e6fa2acefd1bde2dc966445414773aa990c98a8e75fc8596f178", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1648892358000, 18937485, 133150]}]}}, {"hash": "31362b9e4580ab3b38f3fd780668143d7a59ff126bceb122b3f8feaec5c43b96", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}, 1649099760000, 60317936, 1726000]}]}}, {"hash": "31391f34f441672093e72fe2a7f9a35cca3bed4a6b2894655c8b82a75a52b91f", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["fd5189ecdec1bbe81d0ac0b675ea6744e527019062c428ecc4bf4454"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["83297fa11bb88f4f776d2bac5e3e1fc98357c18e6ebd8b07279c0bd8"]}]}]}]}, "fd5189ecdec1bbe81d0ac0b675ea6744e527019062c428ecc4bf4454", 1648921933623, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 1, "fields": [162462]}]}}, {"hash": "31400ad9cc0656407e6a4e4fa4126e2763539e97801f3504ee85f57de9a393de", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["6ec6ef9c65578d0577eed85108b76fbb52ae217f68747b28c313850a"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f3d67b41fcc0bb24aad6ff13587065cbee9c18c9586347a04e14d076"]}]}]}]}, "6ec6ef9c65578d0577eed85108b76fbb52ae217f68747b28c313850a", 1649246083907, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 73771703]}]}}, {"hash": "31403eb938fb2d05a5f7233dc2d0edcdb1174dce6aff1e21e99868b218433088", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, 995, 27439641363887374, 100000000000000000, "30257a05aea2cbdce13e0905325d6f8e81d7dc3a6849e895694c607c", {"constr": 0, "fields": ["3707ea9cf654e3e2b4529f5547ec36098e673be12c585ff022c5ea5c"]}, 50000000, 7288725]}}, {"hash": "31415a93448b3470a7d4a235ac2b8c18f4d38c3df002e8209350bf3023e42f4f", "plutusData": {"constr": 0, "fields": [{"constr": 4, "fields": [{"constr": 0, "fields": [845459569, 450]}, 900]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["704a5ce5f16e5efc7029df602b623fa206a998842024518f7fe8644e27cd1b91"]}, 0]}]}}, {"hash": "31431c86d075515b8d36ed6ce7b1fa70cf9b0926623a79dac2d5fd5671243cf8", "plutusData": {"constr": 0, "fields": ["d0aa08f876ca6e195ca58f03978af73b8a124b43c80ed9932d9f9ed8", {"constr": 0, "fields": ["0a005259d98fc7121efbd0daa99c603a561dee89c5ef9a4d03d21c14"]}, 2895150]}}, {"hash": "31442e1600562610dc7a8519c4a791cea5e9239478fb1fdcf7b8140191365961", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, 995, 7595353011120737, 100000000000000000, "e40facde2ec88fd61c8818ff30cd327d9fe7f332e1d5ba9665e48425", {"constr": 0, "fields": ["8b497e485d05bebbc37ef01e062f3eaa8a845e7deb154a6d716ca803"]}, 15000000, 26331890]}}, {"hash": "31444de79712bff21430327889428577bdd427c489b38f519f3892c0c027990d", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}, 1648631960000, 49955491, 1293941]}]}}, {"hash": "31483dffad6be58af5865232a954fa839db421db95d3a3969c21222f7e0ceb4c", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1648536614000, 52991317, 451943]}]}}, {"hash": "31506f85e2f303a6f5f47c7702ea41b3ba47fde84be0d78250c2fb560639e8cf", "plutusData": {"constr": 0, "fields": ["68a624710102e1b66f800b598c83172de2700905638b8bd4d9939a42"]}}, {"hash": "31577a9ad780734175b930871f944a73b4d294afd86f468c9ebc9497ab487b56", "plutusData": {"constr": 0, "fields": ["eb6ecf361779ffe707c2bf0ce9c9c39c7d00e30b5bcd901c477a51ad", 100000000, 200, 24, "d0ad5c51faf4900382521d4beb5af288cd7e9cdbe4b2fb8f7b5d6342", "6d7977696665696e746865667574757265", {"constr": 1, "fields": []}, {"constr": 1, "fields": []}]}}, {"hash": "31589d0315a8b0e120c0817a1c2a378f590ace3b0870bc6a3b49cc4b9b36a3cf", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["5235045474c7e6826b28cfc17982ec0732ad2b08d52cd639668fc8e0"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e403b01ccf2e1273938a27f8b8ed5deafc12e2819e1e67d14ab72597"]}]}]}]}, "5235045474c7e6826b28cfc17982ec0732ad2b08d52cd639668fc8e0", 1648487379132, {"constr": 0, "fields": [{"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "3395f36673a46e5c1e4d7ff53d96e72b34754fa912e67c0dee427d108f7618b5"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 8020458]}]}}, {"hash": "031598ef7a2b2bcba23338b1509a84a89f8429dc221600ecfc1102e82188d403", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["867046af34b5d4b9b99dfc3acdafa8743c2dfd634dc1dc162160c53a"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f1bdf1a4a14648f1b97c1c62aa21e2fa335db7d769842844b38d5cb0"]}]}]}]}, "867046af34b5d4b9b99dfc3acdafa8743c2dfd634dc1dc162160c53a", 1648642920765, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["769c4c6e9bc3ba5406b9b89fb7beb6819e638ff2e2de63f008d5bcff", "744e45574d"]}]}]}, {"constr": 1, "fields": [2887054]}]}}, {"hash": "31676bba0e5720fa919070154e0675b7e35ad3f393d93cff7546c32b7e971e81", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4141444174"]}, 1245272, 0, {"constr": 1, "fields": []}]}}, {"hash": "31701e6fbc8ce2c7f72c481f5f6ea5cc4168ac22cd159ce7f3447f500c34251a", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7b41145208de13fb177c0681013f869cd81b48b7dc43b07bc9ff5448e5168fbc"]}, 0]}, 1651673498000]}, 1651695567000]}}, {"hash": "31715d0a08aa57d9e0506d9c4d2f1006557153b24c709ae57745063c916d6488", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, 995, 7231385572886817, 100000000000000000, "99fc1304a38d760ca8c0c1d4a73190115ec21195946f5fe41e6789ca", {"constr": 0, "fields": ["fa0e3cb82fd5d8830508a91c8317b1ba426ada9b1c38e1f5748c8d67"]}, 12000000, 27657217]}}, {"hash": "31724b3d109e63776615c8cc79d7a04467afa16bf5e035434b7f10aa55b778ca", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, 995, 1524370259780131, 10000000000000000, "b16405d361d7fd70b425865a28bf081edb44f122db0b0929954012bd", {"constr": 0, "fields": ["67a645ee2c651954cb58ed37e540f8be2cf7a41e2fbdf7773e5575fd"]}, 8000000, 13120172]}}, {"hash": "31734a8255f0eb7a91a9d083f991fb37f09e11a5a3d8e7e07f91ded7177dc7f2", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["bdc2dfe9f78d58aaccb0f4a0ca9c45c4d6813ff8b3c7a47e53fff3ad"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a80e28742c278e490c01b74954335a46df4f2fa87c6fe9d41da452e3"]}]}]}]}, "bdc2dfe9f78d58aaccb0f4a0ca9c45c4d6813ff8b3c7a47e53fff3ad", 1649001811845, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "01775459ea42d155094e18c52697cb27fc802b8d4c51dcfde67432ef05586344"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 4065776]}]}}, {"hash": "31769c1333049539df74cee8b8c1ec12a3f366e98f0d2d770903e84e343dff26", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, 995, 9478470838299657, 10000000000000000, "98bfc34ee57af386d5a4a299b78e51811967dd723320e543c9b725a6", {"constr": 0, "fields": ["dd6bca16802aa2e7b76b66d11510d5ff0b6ca5060848aa6b3ae6c54b"]}, 1000000, 2110045]}}, {"hash": "31898f180fd522096c285e27eb558f966858a4a3d007da85911f401ca8854499", "plutusData": {"constr": 0, "fields": ["f71319150af560112a6242f1fb3dcf6f99ee86dccd88e2142e16c317b213a90f2741b3fb9c5337047d1416645b1855a41e0e337ee30ec925098c122c27a77e0b", {"constr": 0, "fields": [{"constr": 0, "fields": [1963862503886603, 1073741824]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 1, "fields": [1652715507001]}, {"constr": 1, "fields": []}]}, {"constr": 0, "fields": [{"constr": 1, "fields": [1652717307001]}, {"constr": 1, "fields": []}]}]}, "555344"]}, {"constr": 0, "fields": ["85915ed66d676887fd4f3f4b628b07acf8f8858588b7f4169f5fd6c3", "446a65644f7261636c654e4654"]}]}}, {"hash": "31929fd7f90a9e2bab93d04c6c90bba6c169971f023880ffa1f412fbef1e1b9e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["7b8064fd755d09d5f38eb3bd4a61fd21e292dc1c56b80effc04e3460", "56594649745f414441745f6c70"]}, 2000000, "2bb0bcb101b303a2b80416beb1e002e59765204b16115496360f51ed", {"constr": 0, "fields": ["ce51f1d9b3ab9874ebeccc2c3dfd39d60b84e6ff3ee237ec4c15e7fe"]}, 1379280]}}, {"hash": "031961f20d9e780fb099558b9372b62c47274289ed9b28fcf9122983edbcce0b", "plutusData": {"constr": 0, "fields": [{"constr": 4, "fields": [{"constr": 0, "fields": [36493739, 20]}, 100]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["9b61f0485874a3c348896f5437af39a6435fe0d68577f956fd8f97fa6d99997e"]}, 0]}]}}, {"hash": "032027a5a681fc08c0104f017f88dd5441e0154bda8b699a8ea242af1c89a096", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, 995, 8533306026754048, 100000000000000000, "8229d600da60ae52c09a42e353b5ccacc5ed3fbae049cc1582412f15", {"constr": 0, "fields": ["bf7da92a734541107e9064f9abe0275283ee04cd70bc6c79f5c89776"]}, 12000000, 23437575]}}, {"hash": "32124dd0ef61adad8e0057709119efef2e7eac470515807fe5af4c6205c2d040", "plutusData": {"constr": 0, "fields": [{"constr": 2, "fields": [100, 102405991]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["77e3fe2e97b136a0116584e2e57d5ae5d36e9822619ee1fc9bffa5df"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["079835fd80df711d19cc865e886dac92bb3302d45fbd5972eb3dc839"]}]}]}]}, {"constr": 0, "fields": [1235606241657077, 1073741824]}, 1651736707000, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}]}}, {"hash": "32158fac9dca7b8d8f88617d2ecd25b386ad867bdf9650e01aa8a3e965101ae1", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, 995, 9486257495922095, 10000000000000000, "4e592893bd1577f60645307d6dd18c934fbdc82ce383c9b3a60c434e", {"constr": 0, "fields": ["c2c913a6c7aa2d5d1b5b7b939fb57edd068bffc727b09da938719de6"]}, 1000000, 2108313]}}, {"hash": "32174b487b198b45163b42030c4be72e7d6420b9d661006fbdfb56613856eb4e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4141444174"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["294870e187e8f269be1a306b8fab8a3e466aecea690230df373a78a5", "41414441745f414441745f6e6674"]}, 995, 14076033369292203, 1000000000000000000, "b1aa53d4955946076b56b67f798dcecf7e5bb9a973fee12621aa735b", {"constr": 0, "fields": ["8a0a0b8a7c985d320050237c9ab32d7e92e96a900e11fc88328dbae9"]}, 500000000, 142085483]}}, {"hash": "032203f3840b2df8ab0f7ff0a0bdfbe37fe042e8c09cb521ee78da72de9d3bf0", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1648566424000, 54993509, 507434]}]}}, {"hash": "32210bfab32797594b7da0e053f7cc21043c9353cd62d7e1c267608e5fb47c05", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["14bad91b8af75c4bb85b16d8f661c512d87f68a5f99714a7ff48d4dc"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["120056e0823ba306c59fb28323c422f738d83577262f31ef783ade75"]}]}]}]}, "14bad91b8af75c4bb85b16d8f661c512d87f68a5f99714a7ff48d4dc", 1648794931263, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 550916]}]}}, {"hash": "32219e726fe2615b524f382c9c3215cd24b2c11b4ffdf2600a68c8a771e6ba5a", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["7b8064fd755d09d5f38eb3bd4a61fd21e292dc1c56b80effc04e3460", "56594649745f414441745f6c70"]}, 2000000, "7a51dce72fc702c0c5b412d8786e2143c69304028f4278ec6898c115", {"constr": 0, "fields": ["79f9d8730ba321adc54196539ac1851c1b568b7359dbf737066a7126"]}]}}, {"hash": "32235aa531c1058dc8b99434a051d4a1b4778f2978ce9d93a6f3de9840ffcd30", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["77b4f07b53d0ac5d68fa86af1911279bb9f049bf8b6d05ad122ab186"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b92d87366ccdde5c7d391c018e4b4b303b212734bd3bcbfadffab81f"]}]}]}]}, "77b4f07b53d0ac5d68fa86af1911279bb9f049bf8b6d05ad122ab186", 1648592513232, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 170849]}]}}, {"hash": "32271e62bc575511ba83d1f8f27b36ea4d4cfc51e853f4aab2a9f9b153f4fc7c", "plutusData": {"constr": 0, "fields": ["0861dfb4a438c91430a940944472b38fca47bb8d4c0ad1f47a6cb3b9", 20000000, 75, 1, "1641380123d89ed507a4a9a4646cea9a6f4e1ce2f1318b4f1da17261", "63686172636f616c343731", {"constr": 1, "fields": []}, {"constr": 1, "fields": []}]}}, {"hash": "32279f587c3af95de1186490c094c13a8b99e283ef85478db354228b3a8bb6ab", "plutusData": {"constr": 0, "fields": ["f9a9d614518db654d94d29f70483c1c48114ef815eb6ca62e381741c9883b872273422a46e3343b53cbf10d5b204cfc441618e41c19627d96ea97d3df7f92808", {"constr": 0, "fields": [{"constr": 0, "fields": [2751772998462327, 2147483648]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 1, "fields": [1651545833001]}, {"constr": 1, "fields": []}]}, {"constr": 0, "fields": [{"constr": 1, "fields": [1651547633001]}, {"constr": 1, "fields": []}]}]}, "555344"]}, {"constr": 0, "fields": ["86209b15129c2ce923214c30ebb8901ef4866d6f00697df1259a4eea", "446a65644f7261636c654e4654"]}]}}, {"hash": "32301c4cebc0e47cd08273c04fe8412a4fe482d88bfb747ea0a139804746f377", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, 995, 1524370259780131, 10000000000000000, "77c52a6ab9791792959b5a006ecefdf3c45577bb90f739a2a5397be5", {"constr": 0, "fields": ["dd550212e0796b8d6ace25c7d84c004dbf69caccb550eb0c3557c5b4"]}, 8000000, 13120172]}}, {"hash": "32305e0eba1456332d5434b6fbfd6b6c3e13a7ca97e4059c4d03cd70d1dcba7d", "plutusData": {"constr": 0, "fields": [{"constr": 5, "fields": [{"constr": 0, "fields": [6868264, 7]}, 42]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["972887ec73a038d41340e44f80aaf077c0356df0e6875bec140cc771f320ef61"]}, 0]}]}}, {"hash": "32310fdac0e750ff8bda662d11136ee9fd0c55d83285cdb37692f9cb3b6bb64c", "plutusData": {"constr": 0, "fields": ["326c567aaf644178859912b7524a42602b852ff5be72e54c0f3a679d", "df20130c3a13f4533ff7c1b5d9719063cfe83b3d218507b3b444dd7d", "614d454c44", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 100000000, "614c51", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 122000000, "", 432000000]}}, {"hash": "32312a89c5d69f7310037f1b10be39067b553abeb21263b8e46fbcd48249ada0", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, 995, 7799764447113697, 1000000000000000, "beb363678b5e0479b701ea972d4489e110712047a5199e5e418d6ded", {"constr": 0, "fields": ["b5957b4a5553a3a6a0884f29ef736e78595d819298043423ff5148b5"]}, 1000000, 256418]}}, {"hash": "32345dd6304abd606d292efad79774c5a9a07ffef5c78462e31526349444f5f7", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["cd886de6de6312f4831d84e358888ab6415cc80b691f11a6baf32001"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["adcbbee04ac19bd87b4f12b4f8d32df72fc1ef9adf152dd288a8041d"]}]}]}]}, "cd886de6de6312f4831d84e358888ab6415cc80b691f11a6baf32001", 1650968008699, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 4, "fields": []}]}}, {"hash": "32389a78179576f6800853401a610932f192a9ae04509dcf82a646653cd7ba22", "plutusData": {"constr": 0, "fields": [{"constr": 4, "fields": [{"constr": 0, "fields": [98818059, 50]}, 100]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["80b93b6aa23f0facafe45979e20db9d3080d75a9974c50f406ff034ec79218d4"]}, 0]}]}}, {"hash": "32390de14b953562c726958993a46f78d3c1070201604313b5735b2cb8a7471c", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["3cd9a0ba098f602d5f72406fa3d51aec4ddc732851aaa44b9e6a9be5"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ce3510cccb9956c31f0e4e3a4c1ebf7a8963bd96fc3ee1ceec5e760a"]}]}]}]}, "3cd9a0ba098f602d5f72406fa3d51aec4ddc732851aaa44b9e6a9be5", 1648502903992, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 1, "fields": [326767]}]}}, {"hash": "32401b9d0c5d4fbafd7148d07cb7763d633609c7e546bec569b1f865be4255da", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["8dce5923ddd09b453704ec4f64fea5261cf5220c798aeaa421158cc2"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ca23b2e12bf32c3a22cc8d708b4c1a72d1c73d91869933f2939d0e99"]}]}]}]}, "8dce5923ddd09b453704ec4f64fea5261cf5220c798aeaa421158cc2", 1648706892387, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}]}]}, {"constr": 1, "fields": [31594437]}]}}, {"hash": "32410cfafdab4c6aa7528dbbc6c850279d14ced84b8b672296e57e8767e03c18", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}, 1648524217000, 56384129, 1353391]}]}}, {"hash": "32421b6e81b8c4325e9cd5bb5958e251def690aa889d523202c69c34c8e214a6", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1650374426000, 75583995, 1038234]}]}}, {"hash": "32424ee1c5fd12a6e65b233f69c2a4bc7b9e3f599795acf456d56071820caa2f", "plutusData": {"constr": 0, "fields": [{"constr": 5, "fields": [{"constr": 0, "fields": [25893061, 25]}, 100]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["da6fc5a1a5f7374f29346f344a6f79264f4ee1a4541bb8eb9e9c459bd01af6bb"]}, 0]}]}}, {"hash": "32438bdb9a32187c69377e2d01d744932676bb1601d406e9cb3b472295c7311d", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, 995, 6657981529500878, 1000000000000000000, "a33432c53e4f1d93863d49fd9e6275d2e1d5342fb9cc5f8fd9673338", {"constr": 0, "fields": ["6d5e55589ca0a38df475191c27420cff931a7adcf131c45063501edd"]}, 200000000, 300391341]}}, {"hash": "32478a473ba36af413e0bf4a9cd4d1e373e8b90cdcba072bc4caac517dbd4987", "plutusData": {"constr": 0, "fields": ["2045a3391d5731f77f1bc96c37027ded471ce4b9e7e4bc1e25506173"]}}, {"hash": "32490c2be7e517cb401e9b00bb9c0c5bf4267f2d80e7f9105f2cf90912993cec", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f54"]}]}, 1648896794000, 28143296, 40944]}]}}, {"hash": "032548a0f5e8e030acfa5c453ce509eb2799483c19161b2ce6b69ea09563f444", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4745524f74"]}, {"constr": 0, "fields": ["5aa1a1c51e07f11a170d6992ab4bd58edd3b0eacbd7ed58878445ec7", "4745524f745f414441745f6e6674"]}, 995, 13454039386969385, 100000000000000000, "10d90b54ad082a67c99cea0b27e0be32acc1c875250c016fd7af734a", {"constr": 0, "fields": ["8ffb9d87c139b8fe61d50ca2a571bd221458eab03e2c7c8e82e3b74a"]}, 9380000, 14865424]}}, {"hash": "32641f46f67e90ce96b97bbd827ebd5776f1bb7ee41c5482ef0d0d4fbc3e518c", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["514bea316c280a382aa855b20fac6242d891477ddd813c0bdd37b925", "47454e53745f414441745f6c70"]}, 2000000, "1720a4faae71ade6d274ffaccad3273d025bed80d40eff131ff4b0e1", {"constr": 0, "fields": ["1c66195a6c29a72694f517d0a6a1b7e963eb2b34763eb6dfa3e4f2da"]}, 1379280]}}, {"hash": "32654b0b34c53d7a7ba6e067739eae9d24bd75938b694f5a6ae7fb987d683718", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["75e282d6599405477452600c2aab8ffb5bc6642f7e65a73b84513dfe"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["22cadc44f877e2cc5de60bdbb9960b41fda2746d7d72bca9890cc98d"]}]}]}]}, "75e282d6599405477452600c2aab8ffb5bc6642f7e65a73b84513dfe", 1648499488311, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 2, "fields": [1063335, 16939]}]}}, {"hash": "32682c3bbda199c3615d1378e3a8a514d17d29629874053c7c33bf21da645b5b", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, 995, 48012417931773876, 100000000000000000, "d0a8846dfc20d24833e454e408d583806ea53993ded34aa28ffcd585", {"constr": 0, "fields": ["2eccd3287c85e8bed34fe3b1f301c1eb96a6409b1a1250d633b16cd5"]}, 10000000, 4165589]}}, {"hash": "32691e32175e97074dbe1e7551d53381f54df0fb401345ecfee56e81d5ed3be4", "plutusData": {"constr": 0, "fields": ["a12227f1a278caa5afc5a4e70d16385bf508c200f6e920771347e0f05b2fba8574fe0918b80fd75f42e2057e20eb4506acc11f793844427f492c8b72167ece0c", {"constr": 0, "fields": [{"constr": 0, "fields": [5410300807457329, 4294967296]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 1, "fields": [1651652641001]}, {"constr": 1, "fields": []}]}, {"constr": 0, "fields": [{"constr": 1, "fields": [1651654441001]}, {"constr": 1, "fields": []}]}]}, "555344"]}, {"constr": 0, "fields": ["85915ed66d676887fd4f3f4b628b07acf8f8858588b7f4169f5fd6c3", "446a65644f7261636c654e4654"]}]}}, {"hash": "32695ac28a699559f1026d8af2ec0db057b29f83d34cac778169a559752791e8", "plutusData": {"constr": 0, "fields": [{"constr": 2, "fields": [1500, 1346567075]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["710b291afa441afb05286472c4d92ff46ac90667c5cfb023efe67f9c"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["81a9aae236358bbe722510724af03209e8a83b80f686a1ca5d46cb7f"]}]}]}]}, {"constr": 0, "fields": [3649080115548003, 2147483648]}, 1652794785000, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}]}}, {"hash": "32709e23e051a19891fc7f44903d5a52402200caf3099303515548cd80df7b33", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["61ec4dba520204c6e0b014ee4832bfa92fdb63cd21a0033544022494"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["3dbf39a59d6241297d8b18f5779b1ef6ea767aba43e5613dd7aa9f06"]}]}]}]}, "61ec4dba520204c6e0b014ee4832bfa92fdb63cd21a0033544022494", 1648507500777, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "01775459ea42d155094e18c52697cb27fc802b8d4c51dcfde67432ef05586344"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 1377126793]}]}}, {"hash": "32716fa5b696dd6a991b041d6848363180c110fd3c05025a708328861460bac9", "plutusData": {"constr": 0, "fields": [812647180318, 163570, 623044, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["fc55ed5d4a765e9ed86713d22835047758e163bc8803b46418b7317b51d2a673"]}, 0]}, 1651670982000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "32731b2e5b830142d37d0dbc86756315427c008a144dfb922cf5ab6d1082e9b0", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["861e5e1e488f9d8338f329da43ef08a4445dc0ac41eecad62d1653cb"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["952fe2f32a185e26afd5ddaf148f574226a44acc1ded72dfe6ef2ecb"]}]}]}]}, "861e5e1e488f9d8338f329da43ef08a4445dc0ac41eecad62d1653cb", 1650732907287, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["698a6ea0ca99f315034072af31eaac6ec11fe8558d3f48e9775aab9d", "7444524950"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 90000000000]}]}}, {"hash": "32737f70b37b3061cde438789a60927f8954113662fbc76d6886579e6eda718e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["79f22a1eafaa83a35c76d398a521add14eac35dbfd891ab3b1864f12"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2387311f0ca20bebb9c77d6aaa9cbe16ab8913fd5a79de29741e6cdf"]}]}]}]}, "79f22a1eafaa83a35c76d398a521add14eac35dbfd891ab3b1864f12", 1649075843234, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 1, "fields": [244386]}]}}, {"hash": "32751fd01366f83cf8a2256874c30aeef913a1c154c6ae2c4e78783194367776", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "775348494241"]}]}, 1649020947000, 34258306, 796840]}]}}, {"hash": "32766f7b0543492a6b1cc9936ad13d86b14a4dbd31d6d192664cd903587a209c", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1649619312000, 55012478, 201316]}]}}, {"hash": "32799f12965314ce3d8850b484783dffbeeb7549812fa76d628deda803a7ee68", "plutusData": {"constr": 0, "fields": ["29441cdf86526f13e5faa86884afded6279c895ec4f18704106fab14"]}}, {"hash": "32867ec2df7f843ef006100aa3dce4533339227925a28f2f92dbbbaa28d9e73d", "plutusData": {"constr": 0, "fields": [{"constr": 2, "fields": [100, 98956089]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["24888784ae07d407ad8027aa87ab533ab11ec725f126c7c56a5c2a9a"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["9b2657444abfb699a430440ac1d6a883dad9b90de8024854d95f59e1"]}]}]}]}, {"constr": 0, "fields": [2761326537225151, 2147483648]}, 1651942739000, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}]}}, {"hash": "32883fa1bb6de7f8899bacefc7b7fa3f21cdeada981565d02b6152309135ff61", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a37fb9e0296a2c78c633658bd84c52bd928d72abc4f9910fc2382a34"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["5c4dae1e08360460e095c9df716c6942da44ae7097bef56b3d6b8a15"]}]}]}]}]}}, {"hash": "32913ba63d924c102cb02246f097d509effa7aa8b9daeaed124cd1a0d165e691", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["79d1cb4e509fe6fba5edc8d4a9fff52f1f7c300dbfc20ee9fab906cc"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["6ea8458e17b96dddb8d35af8e99ff88c82d548a564fae620033eff03"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["79d1cb4e509fe6fba5edc8d4a9fff52f1f7c300dbfc20ee9fab906cc"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["6ea8458e17b96dddb8d35af8e99ff88c82d548a564fae620033eff03"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, 1352]}, 2000000, 2000000]}}, {"hash": "032933c0e3d259ab105851c926f42b2076134ce7b0ba101b506c6eab7097ac89", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["d311d3488cc4fef19d05634adce8534977a3bc6fc18136ad65df1d4f", "6c712020"]}]}, 1652862688000, 3066310, 0]}]}}, {"hash": "32971c50a8d73b06518e394c83a9935af989cbfb830d4aaf943bdf31f1b80e36", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["3faccb54029b151031bb34939b666b5e8b4d8a1beb5933ad755fa104"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["3982da68de2ec20a0e9a54fdc0c3f3097de7700d77a879936ec9b4e9"]}]}]}]}, "3faccb54029b151031bb34939b666b5e8b4d8a1beb5933ad755fa104", 1648588765345, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["126b8676446c84a5cd6e3259223b16a2314c5676b88ae1c1f8579a8f", "744d494e"]}]}]}, {"constr": 2, "fields": [1804995, 513]}]}}, {"hash": "32976d15aa0099164363b49445c9f5c95d1eefe696921ad7a558de5007531911", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4d454c4474"]}, {"constr": 0, "fields": ["845c337c265b63558b775bbc346585e54914719698429131b3bb838d", "4d454c44745f414441745f6e6674"]}, 995, 17754736075848232, 10000000000000000, "d6db3118dc170e0dc2cb7316dbbeaa15990d15189b3854e21a3f5d3a", {"constr": 0, "fields": ["cd764e7e447c9cca4f8fc3ef5b11dced477ecc082ca3935c5db8a0c7"]}, 1000000, 1126460]}}, {"hash": "32989ec7f9ec23182208c04175f220eceb2074c66b16bd3d366ec6cceeed5faa", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c952791d46d7c1c467a126739bd15ff541ef825989a5adf836ace4f2"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["1231caf3872f476817a5d8d9fb0c4d0bc1314c304828fd69cafc840e"]}]}]}]}, "c952791d46d7c1c467a126739bd15ff541ef825989a5adf836ace4f2", 1648480475168, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}]}, {"constr": 2, "fields": [1516007, 431]}]}}, {"hash": "33004b7dbe4dbafa9278ce4f48297f11e867204bf7097534e4f530886a59bf96", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["bf8cde85b1240cd7fd585f83e61bbce17e1a1b72c0b7d9aa88bb68e8", {"map": [{"value": {"map": [{"value": 1000000, "key": "0a"}]}, "key": "57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522"}]}, [{"constr": 0, "fields": ["bf8cde85b1240cd7fd585f83e61bbce17e1a1b72c0b7d9aa88bb68e8", {"map": [{"value": {"map": [{"value": 1000000, "key": "0a"}]}, "key": "57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522"}]}]}, {"constr": 0, "fields": ["6900ecb87083dbbe74a65b1036186bc9c12df2878842d936902f0b51", {"map": [{"value": {"map": [{"value": 15000, "key": "0a"}]}, "key": "57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522"}]}]}], 1653836337195, "f4a4a183be0b0da6e7a7548d1b26f2191b1ab7b2d20ac1c7d97b681c"]}]}}, {"hash": "33070bf1213da0abf66294f4a3c04d4ab26f65ccb124c47f958aa31bc8f63c08", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1648671671000, 59265453, 604650]}]}}, {"hash": "33093b296d5e46a9ed2b252b2b2418c364356db3034a6ab9b544805edb30d25e", "plutusData": {"constr": 0, "fields": ["574e6512db70789b8ce420f63bbc5e19dcf850889ea75435f1db970ee12f4377", 0, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 1, "fields": [1654193246000]}, {"constr": 1, "fields": []}]}, {"constr": 0, "fields": [{"constr": 1, "fields": [1654194146000]}, {"constr": 1, "fields": []}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["", {"constr": 1, "fields": []}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["f433ae2392c0491a9b49acd9ca94033dafba13f8bcd3df5aa840b738"]}, {"constr": 1, "fields": []}]}, 2000000]}]}]}}, {"hash": "33095f4b10cee9b8de98a16519f54b033fefcb4cc7e9fa3e8b6adedf02e55b98", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4141444174"]}, {"constr": 0, "fields": ["294870e187e8f269be1a306b8fab8a3e466aecea690230df373a78a5", "41414441745f414441745f6e6674"]}, 995, 7478199645869855, 100000000000000000, "0d39050368f4fdf0ace0944f6e64f2ef1702c08ab0995056133fe1ae", {"constr": 0, "fields": ["ef484e189867f996e00244f00e21378d8f4a747f1647fe2543282036"]}, 10000000, 26744405]}}, {"hash": "33100f957d2ddd754b56ea77d3dcd1a2f2b736359869a98e361794c33a95dba4", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["9252a9c8cc00fcbd3df0ebebc5c01cb861d80f106b5f24a299ca2eb5"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2ece1428b567e2cf4fa233131f5b94be6ff775e0ed2df99cdf23d689"]}]}]}]}, "9252a9c8cc00fcbd3df0ebebc5c01cb861d80f106b5f24a299ca2eb5", 1649841091794, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534454"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 195060]}]}}, {"hash": "33119a61e48c59d7cb042a865f8e0eeb17bebc41df1c8959775e888a18bcda32", "plutusData": {"constr": 0, "fields": ["f96d81f431732cfe14e9f310e67fd8d6343d06294ce23de1511c7f0e"]}}, {"hash": "33131fc6e9aefaff5dbae529cbb6fe5c1de0c2f37fcc78e750c05407b605e820", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["7b8064fd755d09d5f38eb3bd4a61fd21e292dc1c56b80effc04e3460", "56594649745f414441745f6c70"]}, 2000000, "142fddd0b42505f3ed423a3ce5c8562f52bcb5103e91ba6060251326", {"constr": 0, "fields": ["a4aa608a516fff4b77c1a6942295db07aad68ab9e4cca2a75688a547"]}, 1379280]}}, {"hash": "33134ed43207f3438914d7add6b8b24a7387b586e6c52f8ba0c9642e5038af69", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "f32324c10a93fe1962cf7470543932cc064482c3495fe3de7502f9edd84ca114"]}]}, 1648671871000, 1637500, 995678]}]}}, {"hash": "33198e4b86ff26b35bed842486727fe85a606dc38e3c12691da6cf17f81224b6", "plutusData": {"constr": 0, "fields": ["e922e8166852073d6c1c9be0736530404c9c26d9ba1773e11d32d11c", 64000000, "12b9e177c14fb0f9836c46fa423dba1a5ab63b39489b413304888d64", "4d7574616e7443726f633031333534", "5e173b9fe7f966cab3de465af557e14e4751234ef542d2a03ad4cc47", 2688000]}}, {"hash": "33223e0fba33a14e955d26c2fd4520a388f96f197f5b08c2df1c750481c704ed", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f54"]}]}, 1648480525000, 24216105, 27101]}]}}, {"hash": "33249c0aa26955b0c93b966f14a65e296876d5c774895a1e364303a0df8eb859", "plutusData": {"constr": 0, "fields": [{"constr": 5, "fields": [{"constr": 0, "fields": [493583069, 540]}, 1080]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["21cf7dc98d98a6dfff13d11131e1b350d777143b6b55e5336d2d16ea76191a1c"]}, 0]}]}}, {"hash": "033258c3520e228fb97d61e185a4b7ee2f6909d0552b64f235f81621c80d17d3", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["9b1e50bf6a5f89404c1f035442f70ecda913bc409e6042cac87fcf92"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e212c8241de774616510abc71f2e4d68237df78435a49138ea2c3212"]}]}]}]}, "9b1e50bf6a5f89404c1f035442f70ecda913bc409e6042cac87fcf92", 1648550493129, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 2, "fields": [189999637, 1817795]}]}}, {"hash": "33285ae50c4a29a2873c5c784f091a2577db71e9535b21897b38fa71b45dbd3f", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f701a856888201d5d44969d816369700ecc99f07772d5213e5dd8bf1"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ff8683acc42d41891996d0ff7f6f746686b74451162b5d0e09cef94a"]}]}]}]}, "f701a856888201d5d44969d816369700ecc99f07772d5213e5dd8bf1", 1648689617090, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "775348494241"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 2, "fields": [10800, 10715]}]}}, {"hash": "33291a3775d470888f681acbf1f57d5553f906db3cc30b7aac4e5cc12061934b", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["24b901aa5f69fdd99eb73faf84d0b2f80df194355a3426b75bade11f"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f88942c0847928e7c5d1da9861155695f3a9b13d6ec82f3c1570a507"]}]}]}]}, "24b901aa5f69fdd99eb73faf84d0b2f80df194355a3426b75bade11f", 1649202383651, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 1, "fields": [8459]}]}}, {"hash": "33316a6ac5ddef7de385a1cd16b3c60f8cbee40163185c5c1759f1943a7f0dd4", "plutusData": {"constr": 0, "fields": ["9b50fac9c12600b4b692bae5f3cd39da210666db0734f7be2085b4f9", "8e648d962775c44faef9c1c92bbe71f4c86fc4d86b24c87119b68cf1", "", "", 100000000, "614d494e", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 30000000, "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 86400000]}}, {"hash": "33322b294131b0fa60e41294bbc765708b63c32d9e67630311d921db0642e443", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["304f030b1263f8b3ac34e798a2e3b84a209bc9b46683e1feba7b69a7"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["5eed7bcfaad93fab82ebc17ac1f619b18c02301d6fa10ac6005a8996"]}]}]}]}, "304f030b1263f8b3ac34e798a2e3b84a209bc9b46683e1feba7b69a7", 1649158101437, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 611920]}]}}, {"hash": "33329eb80d780fa50e7538d40836f4cf333108c74c101c0451e7069bc9216a6e", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "56414e494c"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1648557154000, 0, 166]}]}}, {"hash": "33333f16b875418edda98345e555aaff740d693fa08ba7e93b7a3f74a142bce2", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["9ca407f81b871e246011fc6252f7f1da2a05ba680a8598a5d718d052"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f281fd69fa0dfdb77951c9b836ed6f9c57c852f1d6742dddd5b4ee31"]}]}]}]}, "9ca407f81b871e246011fc6252f7f1da2a05ba680a8598a5d718d052", 1648891998645, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 2659708]}]}}, {"hash": "33379af62bec572aa63fb037c4288515084ed50ac9aab59b499247f0eabe1eff", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["353b8bc29a15603f0b73eac44653d1bd944d92e0e0dcd5eb185164a2"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["da22c532206a75a628778eebaf63826f9d93fbe9b4ac69a7f8e4cd78"]}]}]}]}, "", "", "976e15d48eed7846e3fcc9e644de5e2d590ee728abc5c08f2e091842", "744d494c4b", 600000000, {"constr": 1, "fields": []}]}]}}, {"hash": "33405b4ef5591fba9cbe248d1fc3e25aaa8dd0eafd7e3a859b00c149c8dbfedd", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["514bea316c280a382aa855b20fac6242d891477ddd813c0bdd37b925", "47454e53745f414441745f6c70"]}, 2000000, "b9b70d8ff5da60a2570d06bf2e3a92d34948bf506dd915937f59f912", {"constr": 0, "fields": ["1eeb3deb59b4baade3125d12b28cfc1e9b788ec597d22fac727001a6"]}, 1379280]}}, {"hash": "33428ca194e329f1d661cf86004addf0a0546b4d1d6de6760e499a11295d0b74", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["13b3f252a2cff99dab7c992681c4a6a0c508bac4ac491589ba193415"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["19eb6eae991c7590b514e29202266141ba3df620525ede4040c97504"]}]}]}]}, "13b3f252a2cff99dab7c992681c4a6a0c508bac4ac491589ba193415", 1648559368547, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 1, "fields": [7869918]}]}}, {"hash": "33441a09561c61aa58d6e6b93d6d9c689648ca708c76689095e24e742f3f7320", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b47c7c0ca235a188003fde3e6a583141a89125f346572bb87e81a870"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2966ddf1dacf046d52483389174713c212a3b549370f996066569251"]}]}]}]}, "b47c7c0ca235a188003fde3e6a583141a89125f346572bb87e81a870", 1649070004958, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["698a6ea0ca99f315034072af31eaac6ec11fe8558d3f48e9775aab9d", "7444524950"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 16251612]}]}}, {"hash": "33497ca30f2e9d30350b544bc8634cfe3b25ec1de7de77099fff03a9c3ed38bc", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["24128e27eacf27d27ff043fc96c824a3ea5b46fe6be43b83b6d505cb"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f0ddd69a00e4f5c6e6eb144c993bd974d4a4a9af810d900f4ab3267b"]}]}]}]}, "24128e27eacf27d27ff043fc96c824a3ea5b46fe6be43b83b6d505cb", 1649197009436, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "cb6de817be83e93a5771e6c98ee305e1012bae70d9eb9dff70e2d71e4b611779"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 3429251]}]}}, {"hash": "33524b8633cd4a3b5e40af935910dd4582b6cc25620904648cfe8ece096517a1", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, 995, 1397756391328459, 10000000000000000, "326c668a1d66b2842f30f13aafdbf74d36aae41e3add97745fb472b3", {"constr": 0, "fields": ["d4f01211535b3e49f99f4bdcc2a3142612f9f9566ac96713f1f337dc"]}, 10000000, 14308645]}}, {"hash": "033529d9a547aa520cb9906f52f12c18553fe69f3eda171fbff1b5adeb148508", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7c6db92981a95682d0c1f57a49392f69540867c57828f992103a1e73"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["40b698dc77205914ffd58551068edb77d712f0d282d36ec7873f5b95"]}]}]}]}, "7c6db92981a95682d0c1f57a49392f69540867c57828f992103a1e73", 1649217620314, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 220]}]}}, {"hash": "00033571a8ee9a1ff664b7c398355059ed6e7a2943fbdc135a9eddd993cb5817", "plutusData": {"constr": 0, "fields": [{"constr": 3, "fields": [300]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["4206357a2122f35d63a1d3715cb2ddbf7544da73dcbdc848a6140262"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["69a29db0127d0daf402d32531b50171d0dcd14af22a71e2404495379"]}]}]}]}, {"constr": 0, "fields": [3655913598910453, 2147483648]}, 1654094032000, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}]}}, {"hash": "33590e5515f2f53f4bb407fdce61e3ff68518bcbac32c141ad63202473026de8", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, 995, 689642592143873, 1000000000000000000, "2664eff00a98bb2be95ce23a1f4fb9dd172af781bcbda46d36225b61", {"constr": 0, "fields": ["c39175b745ada56a0ede03db2b894fe55747544d07a5024d82baefe8"]}, 200000000, 2900052901]}}, {"hash": "33601c0b74a666ee7cdcacb39c69fd126bc0a19264bf5e8233f7a25aad605694", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}, 1649025471000, 60132936, 1700451]}]}}, {"hash": "33620f64eb4013a1fec5d9e86f720253869e171d6b0d285cad96fd887f6659eb", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["3198957792e501b21eb26b75c99eb3f360de0dcc4ec01b70ef81379f", "484f534b59745f414441745f6c70"]}, 2000000, "9d9cc886750e6a9d42f3e92cf0bb212003f911be7db500915bcaea70", {"constr": 0, "fields": ["273681dd65f1c211d76f27db36c1fe3e3043ce8d45a23f2b4b0839a9"]}, 1379280]}}, {"hash": "033640efbf8a3fc374594822ddda6a47b350a2a82efb44fa1b030ed6de6801de", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, 995, 12657478012694945, 100000000000000000, "6340e4b3155541408ce246460188e7f509ee273768677a0b44728bc3", {"constr": 0, "fields": ["1162ab12714c34f77fc1d4ac861334a27da62d7f286abe73b1d1aa7c"]}, 8000000, 15800936]}}, {"hash": "33673bd3deb342f8be2d991fc51854a2bbb8fb3c2d6cdbd5a70804d27b123cbd", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["20bd5cf1d543b8a4e17ede239bd8ed8b1da4403a811e390f9dffe423"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a8229a8cae64956bb405cde60d7ea659c9e35be97aae90b1d4c82711"]}]}]}]}]}}, {"hash": "33781e21306b541b8387e1664614c064827383451c1b4c8c5b0998c97ec869e1", "plutusData": {"constr": 0, "fields": ["5d72e3ca362a6df9d3ed1ec35bfdf1e0693516a6ea1276459d7af23e", "49597c6744ae5be8168eceffb91f2aca514e712e66a2397a01a0f529", "614c51", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 10000000, "", "", 75000000, "", 259200000]}}, {"hash": "033800fc1a4e450f1d8234971f5317cefa8b86ff9b07b047e616c84773320a91", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "01775459ea42d155094e18c52697cb27fc802b8d4c51dcfde67432ef05586344"]}]}, 1649242522000, 13699144, 654242]}]}}, {"hash": "33815a4fb1dc635aaae9e7d44d86a03129ed6702e75299c87ca03b387500e26c", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a0f11f98f2f91ee27ad50aec32a79c7771b767322d93ca664518fd33"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["fbe0aa31d081c2013e1bf1877c00a575c1d25d59d8c7b0a6fd647fc4"]}]}]}]}, "a0f11f98f2f91ee27ad50aec32a79c7771b767322d93ca664518fd33", 1648591733212, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 171435]}]}}, {"hash": "33823da41f1c86cdc77eac3143be776602969ddfdeda1cab29a2eb0c2704f950", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f54"]}]}, 1649520619000, 32042765, 44428]}]}}, {"hash": "33849d44a88dd301b95a2827b181cf596909cd55e31bae4ecbec8ffdf4fed19a", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1650374126000, 75583995, 1038234]}]}}, {"hash": "33851ceca465c802249e75b89a2fb9ddb76c62418da4e6dc2cd3c45bd4fe70a6", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f0d942a841c4d271be8eb4e015d89f7f09f4fc42f9edcd768dfec1b3"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["757d51ce57363f49aa14326a5b12e5d8e0f7cfbd8f37f4b007c046ef"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["f0d942a841c4d271be8eb4e015d89f7f09f4fc42f9edcd768dfec1b3"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["757d51ce57363f49aa14326a5b12e5d8e0f7cfbd8f37f4b007c046ef"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, 0]}, 2000000, 2000000]}}, {"hash": "33878e092517d2be830312f51311f47b68750466160d1db5de967d61c96c3d15", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0e1ed953b538af908910da35d4edad71ffc3ccc531a6a8de1a5c8227"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["cae3ad0bad53b2d4b8f6cca3be446fc3f95c72cea8e3cfb4bf2c6a7c"]}]}]}]}, "0e1ed953b538af908910da35d4edad71ffc3ccc531a6a8de1a5c8227", 1648491060672, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 97714]}]}}, {"hash": "33883c137c57f06e189c334c108bb61673d8b590b8adfb5c51f8f9ff475c660b", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", "614d494e"]}, 2773446, 0, {"constr": 1, "fields": []}]}}, {"hash": "33892cb713c8dcac2bbd8c9daa131df52434ef30249aa3fd80f33469694d2a6f", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "4d494e54"]}, {"constr": 0, "fields": ["a1505d7ddc5c528f98d06687dfd342b6e10b9e24e2180f889304fd79", "66726b"]}]}, 1648467111000, 0, 0]}]}}, {"hash": "33898f8682f04cb920bb40f56c00e4cc596ece9359953ab03ae5817dc437b007", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["55cea4bbf08814cc8e05c42304933ac7fa03c88afa9ca8e3b299c0c7"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a062cc61942a0c402bd7a379cd4ff50c015e9167ced6e06a9de8e8f1"]}]}]}]}, "55cea4bbf08814cc8e05c42304933ac7fa03c88afa9ca8e3b299c0c7", 1649630057406, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 1, "fields": [5120844]}]}}, {"hash": "033910ee32771ae57a1c5d1005c66bab3a8ec8c9b56bc895323f942ac487d783", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["ec5a5e8f6011e4df54ff57f74c4e23e9b71721d17dc19519e49bfd67", "444f474532"]}, 45453716, 0, {"constr": 1, "fields": []}]}}, {"hash": "33920bbd65d1480d1301a30cba2e3804dc1929caca95569aa01dac455e64fca9", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b56f960d8ad95e72d237b404137dbcae5a5576f63051cad8875f079a"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["17bfbd1e738b61724f4588255f802e53ef088f62f0dc83f7dbaa4d8e"]}]}]}]}, "b56f960d8ad95e72d237b404137dbcae5a5576f63051cad8875f079a", 1649106741115, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "775348494241"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 57438]}]}}, {"hash": "33961a8e80fb478b85db6f3da7a96258f7fb8c958b9b84fcf7f4ef3ff92dee5b", "plutusData": {"constr": 0, "fields": ["4aa5c175d599e0a5d5827c7c567fad47bbbe6daaac55be487feffe67", 100000000, 100, 2, "73761ce33528ec1d9632002c2cf07c819d70f211cf1a4a80d6080e7c", "6a6f6b6572", {"constr": 0, "fields": ["60c0f42655e41f947b353fe26021de207c4a084a2635c5d6eaa2aab7"]}, {"constr": 0, "fields": [1651472974000]}]}}, {"hash": "34008f7fad3d3ee7197319c0b8c23ea158f3c784f2be2e43c5c709e17c196b96", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1649201207000, 2071873, 58918]}]}}, {"hash": "34045b4d7a1667a3d61fb69c723fab1e4d0ba8cb4cea28f7a4253031e99fa581", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["698a6ea0ca99f315034072af31eaac6ec11fe8558d3f48e9775aab9d", "7444524950"]}]}, 1650998489000, 25640069, 262503902]}]}}, {"hash": "34047b9acdcfc5e0207d7df82677fb4709946a2da7940919dc463a71b3855e05", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["126b8676446c84a5cd6e3259223b16a2314c5676b88ae1c1f8579a8f", "744d454c44"]}, 1541420244, 0, {"constr": 1, "fields": []}]}}, {"hash": "34055f0f41e393ef6cf09933858f68ba933dca6985a4e2e0ac1ae89d502980da", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["8218f5902c263298bb226cebe581bf2ee71243080c532c1fa40e81edd9b98d04"]}, 0]}, 1652742223000]}, 1652743617000]}}, {"hash": "34066e95b358db79d3c1817da153e91e8308d19bdcb488fb183856dcef6239ce", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["514bea316c280a382aa855b20fac6242d891477ddd813c0bdd37b925", "47454e53745f414441745f6c70"]}, 2000000, "c3d1f9ea8ac335b6f8fa60e752046c8f4cbb649c7fcd7ac877300701", {"constr": 0, "fields": ["57ac1f23bb47d77f002a3c959ea7c32b1e3e0ff1833bc23ce7e02864"]}, 1379280]}}, {"hash": "34077fb3228d59e111ab20ce1d10be9b85e33d74533513494cb959de0a278764", "plutusData": {"constr": 0, "fields": ["33f8e9f737bc3bb7ed289e1de1b22572aded64b9e3f25a68cde99163", "c22414897065fd2caba0022112c9f3c695cff5283fd7a39905ae8f40", "", "", 100000000, "6141414441", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 400000000, "", 2592000000]}}, {"hash": "34130d64799af4a47fd100e9a11d051efa5e6988646ced122e8e7711313b7a6f", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["40b62cba7b1cbdd8ef76490b3e4fc0b05c6ba6ace9cb09140ad27753"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["1793807e84cae52a7fa0cfa71640ac81d47a2bbdb675dc74e66527a8"]}]}]}]}, "40b62cba7b1cbdd8ef76490b3e4fc0b05c6ba6ace9cb09140ad27753", 1649636856175, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 1, "fields": [6062792]}]}}, {"hash": "34168ab1fd19182cf20572e4d4ac78c9bbe0a9df2b6a55edb2b20f42ca793e95", "plutusData": {"constr": 0, "fields": ["5301", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["5aba10c07e5040e504eb633f8d878b3fd3a0e2a2a188c526a45893fe"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["5709fe3024cfcd2ebd957e5f41e5a288cbd22ac15ac32254e6e7ecde"]}]}]}]}, {"constr": 1, "fields": []}]}, {"constr": 1, "fields": []}]}, 2500000, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 10000000, {"constr": 0, "fields": [3454660098]}]}]}}, {"hash": "34174f9474a35c93f041068d926b714bfb6ed31c947c48fc250381757740c15a", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534454"]}]}, 1648893383000, 13015, 8]}]}}, {"hash": "34180e081f63081d71b3f19be97bef6b3296f2d5dd71371291a16cbbc820e37e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, 995, 21121530009839465, 100000000000000000, "5a12f15d6e7d4486b12970f7ec8fb20ea52d1dd35249220c96c9b287", {"constr": 0, "fields": ["93fe1417d89ffcadea4ac5c22beeb35791e869e50ab6404fe9daaa64"]}, 7000000, 9469011]}}, {"hash": "34186ceb2694c0fd55e83e9a59a240c3c452f8fafd2c52fc8f10a8151d785848", "plutusData": {"constr": 0, "fields": [1831473934963, 217045, 1663382, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c96eaae8d8b0fdef2c2409342ad12246d12885306aa25f7b7e28759eeb0c7847"]}, 0]}, 1652784176000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "34211a60231df8c3b2c88c61d6c212d315c9c54911fbf5e8152b6692a25ca7ed", "plutusData": {"constr": 0, "fields": ["871750acdf79b252f0b15aaa745aaa21b0455bc35869dafc384bf88f"]}}, {"hash": "34222a590e04c148a37db31c0cec5b67c8f758bc05e37d26703b3c97b961be4e", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}]}, 1649062263000, 43267070, 37565518]}]}}, {"hash": "034229a8bfaefdfc8da41fe299c013b491876fb445d44c8057e222e5c85b0eb7", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["987edbde00b90a90f077f470f649861b0e0ed1c2c57ea3e058695915"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d87172aacef8545f60ab38482b9159cdc473c9b1aca1a9e7524b1fc7"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["987edbde00b90a90f077f470f649861b0e0ed1c2c57ea3e058695915"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d87172aacef8545f60ab38482b9159cdc473c9b1aca1a9e7524b1fc7"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6", "4d494e"]}, 337666]}, 2000000, 2000000]}}, {"hash": "34237fe254f2439e8a9d6f6b13eeaf5854ccc6f3c701d075790a5d7facfd8af8", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1648501673000, 51663871, 435726]}]}}, {"hash": "34258c5562e199195c28166e3e5a6bfdef2d7b1b3f59a948557982cca307fda2", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["cf034317492f715ef8c15fb3879337425304f30163db10f42ad209db"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ad38320bf7ed5178d71d4d5cf71fce75ad223be66208a3306ff9c581"]}]}]}]}, "cf034317492f715ef8c15fb3879337425304f30163db10f42ad209db", 1651159483417, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["3fb0efd17304d74896130d9ea419a9883a2ef3c8bf9f9e39478dc210", "74574d54"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 922065]}]}}, {"hash": "34303ab597cfdb209616c3bd26f5d33ad289bdb9e52c232bcd2c56764cb85762", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["6c4a26c46b177938e5e666d8b195341112d6c8675235ababce61f0161d4247a8"]}, 0]}, 1653546503000]}, 1653548046000]}}, {"hash": "034313d7ff9e41e3b54f556ce7a9a83c388b1107fbf3acd1789e105736a6a096", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, 995, 14001213625197031, 100000000000000000, "a091aa3fcc913397f88e118e394e450d4a0cf1e28a5a3c17e8646eea", {"constr": 0, "fields": ["1a051d1e1bb2dd2e821ffbbc6888ae01dd1dbe6578e70252795d133d"]}, 50000000, 14284476]}}, {"hash": "34359b010863dcb0f37a351c85001846ca4433f9011644b9eaf9756c56e2218d", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["294870e187e8f269be1a306b8fab8a3e466aecea690230df373a78a5", "41414441745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4141444174"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["75507a5b1af53b7f664a07e07d66a7313f72c557606497668142cab1", "41414441745f414441745f6c70"]}, 2000000, "f3370fae297b777af91df1b45616a6d88036ceb16e68b6cb63e070d5", {"constr": 0, "fields": ["62785bdad2285b131db9461f4541181bc9379265009dd235e5a830bd"]}, 1379280]}}, {"hash": "34372d10107ef2a04f0d6ec28b38b9e839d15a965f7af802a3c7c8b39211e576", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["c3b39f2855f1c15c1d773f5cc51fc4c9987af269435fcbc6fe452cc5", "634e455441745f414441745f6c70"]}, 2000000, "bf06c05006427d3dd8a2b14f1d829671b1838eb6180b344bb2652382", {"constr": 0, "fields": ["85de0a4a75d765db2b931b97509d9a0f96e6d95dbe5413acd5b7bffc"]}, 1379280]}}, {"hash": "34385e1a2d0946cfeed5ae80de6496cacce66087b4e6450f57bf21c4e095699e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4d454c4474"]}, {"constr": 0, "fields": ["845c337c265b63558b775bbc346585e54914719698429131b3bb838d", "4d454c44745f414441745f6e6674"]}, 995, 19800382444386913, 100000000000000000, "723e7582fda85efa124b1c256e1382bae187b7a86022c5803c21088f", {"constr": 0, "fields": ["6aa5ca486b382d9a9b23dba5c394fec70c38f7db53d4e14d96cbdc8b"]}, 100000000, 10100815]}}, {"hash": "34391b448820794863b9bf294a5967105e524467d73b5e6126ff7d8e9227c2b6", "plutusData": {"constr": 1, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["3a1314fa60a312d41eaf203378a6a92b5fca5c6649580e0c3e4fa707"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [1200000, 1649138737999]}]}]}]}}, {"hash": "34406d35fc3463ebd0031cba0077ba4a0afeeeee361e6a2a243b4f0c3eeb6e5f", "plutusData": {"constr": 0, "fields": ["9fa035b859dec8f752d9a48d5bbbecd9bbef57382cf7ad2faa6eac1b", "eaf9c8a3fdc6f5275c976c49e8d59eb3f512a5ea9eddaac413835462", {"constr": 0, "fields": ["b940743438a9217ea9d673362f708e5080dcd7b597988ae962782e10", "773350904170af469ee512ba7215db873bf2f2629220b8461f854e02b9871290"]}]}}, {"hash": "34439d5f8b6ed21c2e6912b55967b986dd8af75741bee620485c60aff86b10cc", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["557b6e1d7570d11d7e4f470dcb6fd05122b044bdf9cbf40359c6b208"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["8bacb29be24895a46cfe400c8e98d004e059e2a878e9994f4b826b28"]}]}]}]}, "557b6e1d7570d11d7e4f470dcb6fd05122b044bdf9cbf40359c6b208", 1649035734079, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 1, "fields": [6984]}]}}, {"hash": "34443aff6e5888807707d8956b33a33a3f6c67217724a3b7e449a155d905bb31", "plutusData": {"constr": 0, "fields": [921719523963, 188824, 701873, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["33499ea13ad6d054fd9603de69347e1f0d692260d1176d3d2893770512a1f8fe"]}, 0]}, 1651802928000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "34489b81cade34cca276f9fdaaae5ed45aecc05c09159d638f43f5a9a550b583", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0867e0f145a8c6239cb3a31a5b31938387470663d9f9fcb5d9e7c61b"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ac47455936243dac7cd973b55423d065ed324400f3601c5207b2bcf9"]}]}]}]}, "0867e0f145a8c6239cb3a31a5b31938387470663d9f9fcb5d9e7c61b", 1648571217841, {"constr": 0, "fields": [{"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "56414e494c"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 1, "fields": [552]}]}}, {"hash": "34528be9fe36bdadf2ed34c81361b1e8fb067890315dbc781661eba28ef3fd6e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f7a028ff5c9f212b5371fad1dec36863e7751bf3fdc1a14a4c419d78"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["647b5e1fb4746b4796865e2f22e31e66c5c93da2e8b94fea53cf89ff"]}]}]}]}, "f7a028ff5c9f212b5371fad1dec36863e7751bf3fdc1a14a4c419d78", 1649213155463, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 219]}]}}, {"hash": "34532f4de80d6e69b8b21bbe93e76b8fc9f2325cabaad1271f6a2c71f7f56cd1", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["43536c6f636b63736e667434", "221dd4233ea90cdd7ca5ddfae94f5adf20bb7d16c1ffde1230f9371b"]}, 2000000]}}, {"hash": "34534a051e520b83d9e588c00542feed15a88f543f2d948fe6f4419b4aca16bb", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["dc140fa523521bfc98cf7fb890d6a8e577dd7491de0a3063e60552dc"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0be36753759b7f8cae20926fbaa088f37ce9b7877e68a9855611776d"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["dc140fa523521bfc98cf7fb890d6a8e577dd7491de0a3063e60552dc"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0be36753759b7f8cae20926fbaa088f37ce9b7877e68a9855611776d"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["126b8676446c84a5cd6e3259223b16a2314c5676b88ae1c1f8579a8f", "744d494e"]}, 112969971835]}, 2000000, 2000000]}}, {"hash": "34553c9a605a3333363422560af2080d0c91c32cd86c526377207b676da6d664", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7f8ce4824161101950a7bfbabd79962fbd54c80322a4f5e127a08c1d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["09075022989dbc0a1eb97e3ad1a5c756b555cf42eb0bc0a5e3b0a380"]}]}]}]}, "7f8ce4824161101950a7bfbabd79962fbd54c80322a4f5e127a08c1d", 1648681045151, {"constr": 0, "fields": [{"constr": 0, "fields": ["3fb0efd17304d74896130d9ea419a9883a2ef3c8bf9f9e39478dc210", "74574d54"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 3881]}]}}, {"hash": "34583e35450ac67ad6a21488724e9d89c9093e67fbbb80199f56bafc5574261f", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ae321cf5384eebf94d1fcdc7a3099dbe31d1c7d54a5d53cbfd92b734"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b3a7de3573dfb0e3a6c31689b96d9d9a99bdc6352fc152da61a9f617"]}]}]}]}, "ae321cf5384eebf94d1fcdc7a3099dbe31d1c7d54a5d53cbfd92b734", 1651008931662, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "534245525259"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 381322829]}]}}, {"hash": "34594aa86436afc5d18242fa1f392899459ced7f69e937355b5034d98e730919", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b7b94d52c3be10229d6553a8ce3faaa98e264e07c1d5450c56a29ea6"]}, {"constr": 1, "fields": []}]}, 45, {"constr": 0, "fields": ["e4214b7cce62ac6fbba385d164df48e157eae5863521b4b67ca71d86", "4fe46a0338484a196b58970c76cfc3f5d578e7b74eff12d949d4e03884c73f1c"]}, 130, 402089217296113]}}, {"hash": "34618f42e1977044ea487d06ce151649976727b6defaac80eedb151442a06c12", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e6310fe89f8fd2aaf17fea368acf1b362abdeea522f7d4aa1e6448e3e8113d65"]}, 0]}, 1652822768000]}, 1652824203000]}}, {"hash": "34626f4b63dfa13168d8bcb65adf117844615394a0d6614b1d0ee4c8b4a69482", "plutusData": {"constr": 0, "fields": [{"constr": 2, "fields": [500, 446824640]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["30f495c69007e0d136b682fe5750a4480353f492ed6d2164d9e2c89a"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d338d564e8528fb41318f752544259d1b5c03cb21cadb33a96f4e25a"]}]}]}]}, {"constr": 0, "fields": [7892984096296977, 4294967296]}, 1653267850000, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}]}}, {"hash": "34631c624299843a8f40426ff61abf388127071536651e8bb77e6e15f5ef787a", "plutusData": {"constr": 0, "fields": ["2a", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["151467a5cf5fc246b23eb275ad90e432c529f34803243e882be7f8fe"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["4f0874beb64e5588dd40717df995a58dbfc9482a15ffcca402eae41a"]}]}]}]}, {"constr": 1, "fields": []}]}, {"constr": 1, "fields": []}]}, 2500000, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 10000000, {"constr": 0, "fields": [972]}]}]}}, {"hash": "34685cb57a2cf6c5e34d9120de2e2d21c5ff6ba4f78ab1bf7eac5ac7effa4aa5", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}, 1648505663000, 42381677, 1119435]}]}}, {"hash": "34707edfc315eb2f8f77dabf72e3e36e8ae5880e12ba7b133d814b51b1357648", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1649091473000, 68513713, 917312]}]}}, {"hash": "34733fb5c53357fd2a77cc81ebedab423699b69224c73b869ec861017add0167", "plutusData": {"constr": 0, "fields": [{"constr": 5, "fields": [{"constr": 0, "fields": [49586363, 50]}, 300]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["2f5ce98c0d761c3da0c9bfa71d8c9fd73c0f0430b9330b6ddffb23fdd19b9901"]}, 0]}]}}, {"hash": "34761f649dc82fd2f35a95b594f65048feb4dfe2e2e11b48908fd3073af2c901", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["7b8064fd755d09d5f38eb3bd4a61fd21e292dc1c56b80effc04e3460", "56594649745f414441745f6c70"]}, 2000000, "0e9f0eb202161c9c533960c2e036594ca3ef020e71572be03a4151ae", {"constr": 0, "fields": ["1c0a0ed82860cee6ab1ffd196950d535cc5cd0d5f5dde78dd15053dc"]}]}}, {"hash": "34768e93d1acb7adc2b06a5cc73e56df4a966f0f0edb4d174eb437179b0f5113", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}]}, 1648729703000, 37623841, 36487862]}]}}, {"hash": "34769e82eb247789b19850f54f7dab8ea5f99ded7c88ff028836826d0a52c00a", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["3198957792e501b21eb26b75c99eb3f360de0dcc4ec01b70ef81379f", "484f534b59745f414441745f6c70"]}, 2000000, "18ab3555c814dc474b07533fda1043835c9b121ed74f8debcf253b25", {"constr": 0, "fields": ["1ce4f9a27a5e99b1eab755ccd382c7cd87e31f1569fbea07c37ba1cc"]}, 1379280]}}, {"hash": "34799e63740171feb29db2d71e99f7136d68f4711cf8b643a2ef1a188c55e0f8", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1648585834000, 208816, 18575]}]}}, {"hash": "34813afa2182aa28d123acdef6cff1cdbcb8ab6d7d9e63c86b6724ff1cd70fa2", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a03cfc5ae851d0c66137e50cbdfe1c4d0b75c6abcac592428a9c70ad"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c7f396e5933d2f5a529b66c88300161a0b707764f5b143733f765e16"]}]}]}]}, "a03cfc5ae851d0c66137e50cbdfe1c4d0b75c6abcac592428a9c70ad", 1648794735909, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "774c554e41"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 48891106]}]}}, {"hash": "34827b91e0429f10cfbaadc338823ecd44fbe5df13c2aeb05fa150d876c18638", "plutusData": {"constr": 0, "fields": ["9f1b10277fc91c7712263f054e16a0c3a42bb9f8734f55ac212ca32a", "bd96fe20f8f49764a9bf949244b85abf65f8e99cd523619b535e4b96", "", "", 100000000, "", "", 20000000, "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 3110400000]}}, {"hash": "34852ce66c686c3b131fcaf7356b1ef51bbf850e8f1b9646335df17147e35d74", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, 995, 3354441036147857, 1000000000000000000, "2891c0e985eed4d2fd55b48d9697154559d13a0cd873a469bb6eca32", {"constr": 0, "fields": ["7354dcc72a8c1fce06469bceb733b516d36ecdf883915d42a7df6684"]}, 300000000, 596224521]}}, {"hash": "34873c1171a65f454454812f389072632a6dd474320f3270c31a18b5988789ee", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "775348494241"]}]}, 1648479439000, 27560286, 706577]}]}}, {"hash": "34885acd680c12d4852e8caf210818c8ef9f3389dd29e71c9327d19bd42fc880", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}, 1648732136000, 53197438, 1354038]}]}}, {"hash": "034965f3f25702118c9e4bc5ff2ffd0024617f62fe39369fcc4dad9fe669e312", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, 995, 7568321126892743, 10000000000000000, "ba6e4834d5af5cdb5e39ee3646678b2ab486db5ac50bc48632646d9b", {"constr": 0, "fields": ["9235ac3fcf2a2f47b79f04cc380a636e7ea5752ba5fc186c8a2d9f5d"]}, 20000000, 2642594]}}, {"hash": "34977ff285d1c159cf841625dd181a07b433a5f43beb14a1221310c5b36a58d4", "plutusData": {"constr": 0, "fields": [4061929085121, 434100, 3731212, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c5b4bc66a503d8cf66d2e0de7c0a521157bd0a3aaaa124361494854ed9bb5b51"]}, 0]}, 1654079026000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "35024e8d63c110dbbc08aaf02a37c78261888af92bf141a257f06a907846c4b6", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7fedd64654aa4da503c5c726146a8986ae0e147a796a0f070ceebb2f"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["167f8e3105405cd24129bb961d68821bec74d27e088f7ed4141023d2"]}]}]}]}, "7fedd64654aa4da503c5c726146a8986ae0e147a796a0f070ceebb2f", 1648499469471, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 2, "fields": [1169671, 18633]}]}}, {"hash": "35025c89ae3490835cfa5a83911d5147632ec94133262f5d40d7b81086a420aa", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}]}, 1648811508000, 57290584, 11214]}]}}, {"hash": "35051fb5bedfe1d533faa93d2f417a2844eb4c6bb3b984a82f6ad67adf499b38", "plutusData": {"constr": 0, "fields": ["23b1665f599976b2f70fc5141c7105ad91da7e58177d7b431af84abd931f955eed9fc0f5b769e6e4e6302e58b65284dab7dcbcb7dac12014403b412644039e0d", {"constr": 0, "fields": [{"constr": 0, "fields": [4213643967428627, 2147483648]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 1, "fields": [1653060943001]}, {"constr": 1, "fields": []}]}, {"constr": 0, "fields": [{"constr": 1, "fields": [1653062743001]}, {"constr": 1, "fields": []}]}]}, "555344"]}, {"constr": 0, "fields": ["85915ed66d676887fd4f3f4b628b07acf8f8858588b7f4169f5fd6c3", "446a65644f7261636c654e4654"]}]}}, {"hash": "35056d900adc628e17a6ac10eba98e2a789e5168db3d2d7c276b824a0a378c4e", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1652444322000, 59318574, 221676]}]}}, {"hash": "35058b35c5163605fa0fd85f83480a8ab01f0e0fe25f876ba161af94e906e8a6", "plutusData": {"constr": 0, "fields": ["92cb7f6409701a86c8811addc2c757abb8fea83d54dc23165e6abba7", "b365761b8071dc779e29c3959e64682a44fa3b5f5d09b2fb190e600f", "", "", 100000000, "6141414441", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 20000000, "", 86400000]}}, {"hash": "35068f3724e3875c897b9755b2da109cad0285b3ead78d8997abae6e4a715c64", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["bc3eedd3f12a803c5d81040c2a98b478a647bf0e30df2a5c5db8d6cd"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b0611c4b4ea80aff52720921115194ec8026602afb13fd6ed896b8dc"]}]}]}]}, "bc3eedd3f12a803c5d81040c2a98b478a647bf0e30df2a5c5db8d6cd", 1649258247263, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 2, "fields": [13843599, 356351]}]}}, {"hash": "35124b087bbbd6c92e8b3cf4e9ca604cd21891bdc20b1452dc6f03b27f18a020", "plutusData": {"constr": 0, "fields": ["22e62252d7019ca689e76ed7085ab61f2880d91d443d77dd939dedc2", "e7b1e66554606585a2dfded5fd773cdae57e8a6a1822143b506bccec", "614c51", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 1000000, "", "", 10000000, "", 432000000]}}, {"hash": "35130d57b9a56ab38661a31765e07d96cfac45d4ccb513108ef5a11c1da7468e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b601445a198cd50e52b95e8ab8f4226543e84da2f7aa43d6a3db7ecb"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["03bf17cc1ae0f7af3e7fe97e771660ecee1831aa7310db8965c004fb"]}]}]}]}, "b601445a198cd50e52b95e8ab8f4226543e84da2f7aa43d6a3db7ecb", 1648547876525, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 9500]}]}}, {"hash": "35138d2c262114458b51668a382d9b616c9a255c319c2ab6e6a6b11954a83b1f", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, 995, 1109856972731924, 1000000000000000, "5241d01fb0ccb6a7e44a26966038a245ec3fdd56217209f4dcc3f636", {"constr": 0, "fields": ["63310fdeb9d824c260d685d0270bbdff247393e66a68d654ae64e8e8"]}, 1000000, 1802034]}}, {"hash": "35160bb0fd41ad4f36b99104adacbc0db36555e4b03f10baf8f78e896c7c9790", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4d454c4474"]}, {"constr": 0, "fields": ["845c337c265b63558b775bbc346585e54914719698429131b3bb838d", "4d454c44745f414441745f6e6674"]}, 995, 9890256233296903, 100000000000000000, "aa3d71a97dba5d28abdc702d1c5ed304b6b4ba5af0197e3fd2df5ab7", {"constr": 0, "fields": ["ee522187e6f0c429bdde61741657225d336a692c8005bf7226d7cf7e"]}, 92000000, 20221923]}}, {"hash": "35231b91c8caebb931e23b26a4b3767e92afac3ac4e03982e8dd9a825057235f", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, 995, 1108155598565537, 10000000000000000, "f08a7a9e7728f4b5575dabf32b35c5b1e3623ad19841f37ea1d8c227", {"constr": 0, "fields": ["d1d39844df71a00189f14134fc106e3bd0ab3c80e820e9353fec67eb"]}, 8000000, 18048007]}}, {"hash": "35233a6d11838c31910d2c9f4e57588414b47170f01fab89f75d1db0ceff3033", "plutusData": {"constr": 0, "fields": ["624c1d397d08c71a7be70e2b2fa1effb56b9b2dd3f4f8da265b56126", "e8e79bd9dcfb2bcdab0aa4be1859fdd3b3b12d49860f6a281a09c187", "6141414441", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 20000000, "6141414441", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 1000000, "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 86400000]}}, {"hash": "35257cff975cdf9d58cebe7698419a30a6ed3f9660edab1dddf33ce1b664e4a0", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["1ec899ae8e554223a4eba911f5a39d3b5292799d7a31a746865d6a69"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c41401cdf24ad644ff8dd55b00cbb7f2e057c7ed0b79d82ef2e38377"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1ec899ae8e554223a4eba911f5a39d3b5292799d7a31a746865d6a69"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c41401cdf24ad644ff8dd55b00cbb7f2e057c7ed0b79d82ef2e38377"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6", "4d494e"]}, 119005]}, 2000000, 2000000]}}, {"hash": "35279df770fa0c5665f2f28a95d4da2a348c41ff7f4145f02f12a6ca92b16fdf", "plutusData": {"constr": 0, "fields": ["276e926eb98cc0149b7cf13a7c15cfc53f99b7f1d992ac783dc40e9a", {"constr": 0, "fields": ["4cdc83545b14549fdfa6ec3618c30a454642b4945d9f494ec735922d"]}, 2061584302]}}, {"hash": "35328fd5f0a1e56dc14aff6759814814e217b089f11fb3d2ccc84064beb7b099", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["126b8676446c84a5cd6e3259223b16a2314c5676b88ae1c1f8579a8f", "7441444158"]}, {"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "524245525259"]}, 1160663, 0, {"constr": 1, "fields": []}]}}, {"hash": "35358ff9c5130ef5897edec0cf58e849bf0771036426e42e03e784ac0ff379ed", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["cfbe5859d059796c9979caa816a9e9c9796241d59c7f0f66bfc3171ea9c82aa9"]}, 0]}, 1651805298000]}, 1651820241000]}}, {"hash": "35431d1499c0ec12396bb4e3f92d5b4d93058537c06fd05e3eab5bd7c024cdba", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["1f25af3c23c72a0d368156ba6f00d749c9e6e9bd42fdca51205aa858"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["13d317fff7cc5b1e3121f1b529d964af54971912aa4a976f4034f48b"]}]}]}]}, "1f25af3c23c72a0d368156ba6f00d749c9e6e9bd42fdca51205aa858", 1648786933011, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 950]}]}}, {"hash": "35438f938e2e0d9563170e7761a6836c1a6bae9f5aa558909fb05c9ee42c56f5", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["de8bb1eb38f92aaef52c74c5c33b13598971ac3846d88b77817e5624"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["268dd51aff2004d6632daf8b02260b3215ac06d029fa4562586979d2"]}]}]}]}, "de8bb1eb38f92aaef52c74c5c33b13598971ac3846d88b77817e5624", 1648885184753, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}]}, {"constr": 2, "fields": [2250000, 30886]}]}}, {"hash": "35461fd0fc43b3d9e975d01d03e085d280e88e2199c4d4ce95b9674abef7f9f3", "plutusData": {"constr": 0, "fields": ["f2e76f7ceb2038f9f5c22db4e745f4b4e451109b087965d94a89a721", "48c1aeb9d23704d6130f5432c8bac160b8c04b30b922f53c032cf4f7", "", "", 250000000, "", "", 5000000, "", 777600000]}}, {"hash": "35483ef7cf5d46ed37876dcc004e817883d4446342eb0f2b671ec5e1434ee745", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, 995, 24191049198098773, 1000000000000000000, "201dad53572dea6e4ca5bdd378d18f2bbfbbcd3be4c4a7ca73413429", {"constr": 0, "fields": ["0b0411ca4a2ac58423cb90b686c3ef5781d80ef190b2b8ae918a13dc"]}, 20000000, 82675207]}}, {"hash": "35498cd2b51c408a325e919122b5243998ee531b73968f86f9b785f45f724933", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["aae0cac5b74388007ee708c06d89ed0ccf87f83b627d16b7000a9b08"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["bed0a6050da69e35371b7ab0a24faa8e1e31053bea1e7e6dbbe64273"]}]}]}]}, "aae0cac5b74388007ee708c06d89ed0ccf87f83b627d16b7000a9b08", 1649283353892, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 2, "fields": [18496498, 51005]}]}}, {"hash": "35571b8bd3c9978c659ed7960a18b2f08f3ac49128fe46a6fac0242a34e65dad", "plutusData": {"constr": 0, "fields": ["7a46bbd6ee648cb361fddabb8218c780b518e134399bedd91a139cc6", "1ce0eaa92a03f854e22a5acc42fde7a4fd1d48c27fbec77162d45c12", {"constr": 0, "fields": ["b940743438a9217ea9d673362f708e5080dcd7b597988ae962782e10", "ab6854726b0139254b7e5c4831c87ac043a938fa3543b5eb0ce0906e122083e9"]}]}}, {"hash": "35606c3a2c6811df8099d7e1625731bc30d290a159bc0bc05b01cd5d3e00e907", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}]}, 1648581796000, 48069144, 10652]}]}}, {"hash": "35627e319f62506c928b6b89aa34a22014bdaf2e2bf49112910b2013138e37ff", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, 995, 11985831787960088, 100000000000000000, "38545c9f9326c7f74a85deb36b2d002616bd6c52b60e117053e06163", {"constr": 0, "fields": ["5ffb3e551b1d06b34e0619e26a164fc87ad264010db9d36419ad53b1"]}, 8000000, 16686368]}}, {"hash": "035628d172e15c7d1ac7d73be56c5255c22580ed68befe5d5d4a2bd6c33fd137", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["9ec4f0e9ae11bb2b77c62c0c6d1f276e797f37e3a47abd6065017455"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["706242bd36a012c02016ffc8f0adbbb3d57b5a011d12511fcfa2c424"]}]}]}]}, "9ec4f0e9ae11bb2b77c62c0c6d1f276e797f37e3a47abd6065017455", 1648519661173, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 1, "fields": [5979]}]}}, {"hash": "35629fb4fee75f074f4e9c5f382068d0612a17a32f059375947131a2c577301f", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "01775459ea42d155094e18c52697cb27fc802b8d4c51dcfde67432ef05586344"]}, {"constr": 0, "fields": ["d311d3488cc4fef19d05634adce8534977a3bc6fc18136ad65df1d4f", "6c712001"]}]}, 1648396235000, 0, 0]}]}}, {"hash": "35633d671cc945eccd490b9dd02496c40c2428008bec9cf4da1ec688015b7c7a", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["c3b39f2855f1c15c1d773f5cc51fc4c9987af269435fcbc6fe452cc5", "634e455441745f414441745f6c70"]}, 2000000, "506857d13a554632d65934705ffc7267e22cff7f3b094062787c3ad4", {"constr": 0, "fields": ["8547c3d6981db9b22448c9e9031ff6cfe36877143d09553537bdca9f"]}]}}, {"hash": "035636d9531c9914446b5affce0e350a12fac93da9f809f72f2059507fac1395", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["afe80b1985260f50ffc01b3ed373bd12c0fe87ddc1be13292c8d21a0"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b58cc2a264d2a2fc0248a7ab03f39eba2155b90c474c56895b0a4aaa"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["afe80b1985260f50ffc01b3ed373bd12c0fe87ddc1be13292c8d21a0"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b58cc2a264d2a2fc0248a7ab03f39eba2155b90c474c56895b0a4aaa"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, 838520452]}, 2000000, 2000000]}}, {"hash": "35638e714644d1ac4e957587dd8bcb89d094295207b591ff0715c492063ffa89", "plutusData": {"constr": 0, "fields": ["f88391da64394955a73185530130887fc26c31c23e976ed286fb08f4", "3ec666c1236bac03b7cb7158a2f23dede1b111fc938f8555e6055afd", "", "", 100000000, "", "", 10000000, "", 259200000]}}, {"hash": "35642d425e08f7dda349d8daa75da3506bb8f2a9aa0437e64d14b1992079d942", "plutusData": {"constr": 0, "fields": ["507f8b22e5e136158028591e7db994905f654bbfbcf0d33fe134e07d"]}}, {"hash": "35686e739fe855df5bcce9c650b4088fef82880d114c2286e7a6c129b7baf45b", "plutusData": {"constr": 0, "fields": ["1501", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["3421b9c2812375105f04a9e1f4a6e4d59544fd818b33eee3d6a23bbb"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["10ec10831f31080b43be348ad1a9d2a60452c409cedbf476d151fc2a"]}]}]}]}, {"constr": 1, "fields": []}]}, {"constr": 1, "fields": []}]}, 2500000, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 3000000, {"constr": 0, "fields": [317]}]}]}}, {"hash": "35700edce0d94b8bf0da5c3d64efbd6e567b35908b8a2b2b9f951a85f52b93f0", "plutusData": {"constr": 0, "fields": [{"constr": 2, "fields": [20, 16633679]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["e8f8441b7603d2c1555449ead45e98707d53a5d9bbe8df5498c205e8"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["baba7815b82f376e194ffa72e843431d3dd17bfa561097260d00400b"]}]}]}]}, {"constr": 0, "fields": [2762569817971313, 2147483648]}, 1651519957000, {"constr": 0, "fields": ["c6d5c896ab47fded87db90286592102ceeddd0b69d2ed4c326635863"]}]}}, {"hash": "35728d03445e80b47655cbcc401943249750a8969a6212d219a35819a6a3e141", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4d454c4474"]}, {"constr": 0, "fields": ["845c337c265b63558b775bbc346585e54914719698429131b3bb838d", "4d454c44745f414441745f6e6674"]}, 995, 22647004537327358, 10000000000000000, "9aa5a11e532b43bd9397c499d633eb2d4ab0ca3c4e258b3d4ad05488", {"constr": 0, "fields": ["7731508750d6410d7dad16ef786f43d89a67aca78319c5652249ae08"]}, 1000000, 883119]}}, {"hash": "35735da57cb9660bf4e91ef525994b318c16fce801440c49fb8a163401d4e8d6", "plutusData": {"constr": 0, "fields": ["b3e2741bdf6300c4d9c08e69a6f324397e0c933253bec3f9a4b82eb4", "93e60902a1dcac98b654495202f543a4bb5338448a3569811aee3589", "6141414441", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 20000000, "", "", 5000000, "", 1728000]}}, {"hash": "35804aa580cc5f21ee18dd8dcb7d96673e8a7b3ce12b7f206d35ee8a4bb34a60", "plutusData": {"constr": 0, "fields": ["35bae707d92b11108d02dfe69453636668f19c81c786b8032828ace4", "9db93d418aaecf07e1488ccdc50ceb4530b52f075aa9bb9199ac086d", "6141414441", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 10000000000, "", "", 15000000, "", 172800000]}}, {"hash": "35814ded6285e7d52d29198d1e83dd67391da92633c4e03bf97b9564f6fd534e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, 995, 10542750272503738, 100000000000000000, "3daf150360d8d381dc8d0c24938bf9f349d4113f74fd89d8008678fc", {"constr": 0, "fields": ["71a5e1e2256b609c28d33acc34e5b7f3bad83d30001e5c0f3669577e"]}, 9000000, 18970382]}}, {"hash": "35825e609b26d3b594ce08494ca5ee5ab8a79c48950540dd4ff58cc8bcbe2a24", "plutusData": {"constr": 0, "fields": [{"constr": 4, "fields": [{"constr": 0, "fields": [1254400, 1]}, -1500]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["07e53a33cf46826e0036f7778a873bee86d76f429ae94e35dc2a0f628efbf1fe"]}, 0]}]}}, {"hash": "35866d0896ce08f1c1afa780d2615b26ac5f3a56b4f835f053cbf47973e5b954", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["79ae8b019414e1ba4b53a796250e59f488ffbdb5744f643a36784c27"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a894dadb39e2822a64094e2c37905061261fbc921f6eeb21ec9d77b2"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["79ae8b019414e1ba4b53a796250e59f488ffbdb5744f643a36784c27"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a894dadb39e2822a64094e2c37905061261fbc921f6eeb21ec9d77b2"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6", "4d494e"]}, 332595]}, 2000000, 2000000]}}, {"hash": "35874f8274e7fa98e63d25fbe25482b5a370f9f9282a7e7c41640fc025cdddec", "plutusData": {"constr": 0, "fields": ["26", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["98a19a20ed09de6b4b640a2072c02f0261bfd9810efe5830169fb4a1"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["1edb5ec1f32751fbb7a8a6b71b1f0937368ea79018febac07bc9a36d"]}]}]}]}, {"constr": 1, "fields": []}]}, {"constr": 1, "fields": []}]}, 2500000, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 20000000, {"constr": 0, "fields": [208]}]}]}}, {"hash": "35890ee980c2cdfccc7d6b21de01e40e7d803b0f27cf6f731c57ce22c1ffceb5", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, 995, 1174894570835686, 10000000000000000, "acb3964387b5efa3a2ffc0af69c103e7cf27c936b1c3c92af56b22ca", {"constr": 0, "fields": ["e4e90c820a75682e905aa31c5b1c557dacb644969bcb382d29909a68"]}, 10000000, 17022804]}}, {"hash": "35953c2f7f66fa4554930b9932eb7dbd3075bed74f5ba96721f89a654e70cf3a", "plutusData": {"constr": 0, "fields": [2032044608828, 290686, 1741877, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["10a2c7cc68501dd6770f8236a6119fb7907b06a2c31380b1964fde0763f997f7"]}, 0]}, 1652846156000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "35970a40fe42ab970192a7f2b8e652f57d15f78f62aa7560f274b3df684c8c56", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["9fdac6ba94f66c230c993bc87e3d6039b7cf8409f3c76ca9e682a54a"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b36c71930501cf3c3bc0002afe00e56a8964648ea0104d067db1b407"]}]}]}]}, "9fdac6ba94f66c230c993bc87e3d6039b7cf8409f3c76ca9e682a54a", 1648900894336, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}]}, {"constr": 1, "fields": [12500878]}]}}, {"hash": "35993d8b32a021b248f03dc46700f65a86c4da7784187742aba9c0effd8e7d02", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [11, 21025017]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["c48d0c1f62935965bc7acf6d111f065e431fd890895c06b02bf85042"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["fdb31f7dbcb5f7e4fcd7293e8bb14146bdc4f08085235d07b55c3f26"]}]}]}]}, {"constr": 0, "fields": [8048285010774853, 4294967296]}, 1653917060000, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}]}}, {"hash": "35996ae8466e104e862cd707bef997c2b92cf4823c06c928836b1b34c8c9b417", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4745524f74"]}, {"constr": 0, "fields": ["5aa1a1c51e07f11a170d6992ab4bd58edd3b0eacbd7ed58878445ec7", "4745524f745f414441745f6e6674"]}, 995, 9801078295031863, 100000000000000000, "5b13ffe2365a42a2972d222dadb98e2e592b3d715d57d31691083585", {"constr": 0, "fields": ["16f67cdeb407ef88a45c64424b12f4cb16ab5db913f446b169a85ee0"]}, 11400000, 20405918]}}, {"hash": "36044b25ffe269dd0b533256920ab2eb79f3f8bdb5e41cc858ca1e0591249fbf", "plutusData": {"constr": 0, "fields": ["7041b10b40438ee0c692bfef05304d0924eb069513c20504cd5e3f57"]}}, {"hash": "36054fe7e4c06704473ce3d89ae871c10f18f543a8c08c5336c31b414fdce276", "plutusData": {"constr": 0, "fields": ["2b0cdf0044239d44ab35258010358941391e7f006af910e9e8307aa3", {"constr": 0, "fields": ["f798b118ddff5e9be5d5b3d8a762e4a113a59471a3e8794572ee9aa1"]}, 25080000]}}, {"hash": "36087e08b9a3069fa970a30c57b42ad62394db25dd1c0f5947826ee7f156495d", "plutusData": {"constr": 0, "fields": [4583299804150, 426571, 4337248, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e7ab7496ba257095177daac28e8076e6d4de7bd53f509dab19331d952ab98967"]}, 0]}, 1653920323000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "36093e5b200ac5e13b0035035a440cd04a740a5b7c055e46a9214d693b34b358", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7f8ce4824161101950a7bfbabd79962fbd54c80322a4f5e127a08c1d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["09075022989dbc0a1eb97e3ad1a5c756b555cf42eb0bc0a5e3b0a380"]}]}]}]}, "7f8ce4824161101950a7bfbabd79962fbd54c80322a4f5e127a08c1d", 1648681451127, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 1, "fields": [66641]}]}}, {"hash": "36098d1bcb2ee279b49a1f0f037bcd28d6f3c0a62f90a6f5a752174de538cb84", "plutusData": {"constr": 0, "fields": ["8d", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["54ef731a452d658388a02e66860f4488c2be79738423b9d2d00ac02e"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["782804e5daadbc18e63c842df04e4155b78c470c3b6f6405f5f3d66f"]}]}]}]}, {"constr": 1, "fields": []}]}, {"constr": 1, "fields": []}]}, 2500000, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 200000000, {"constr": 0, "fields": [3331]}]}]}}, {"hash": "36101d25f9a1233c477fb6ca8160e04cedb580fe5d7a614c7bd91b5a4e8e3f76", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a6e5e647de9e4085e0024303ed6383c7e4fb26dcd60692325f1bcfc8"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a3a7a310c0d9a9db36f88569039d9eacc83e8ef19c7eaf28c42d04a0"]}]}]}]}, "a6e5e647de9e4085e0024303ed6383c7e4fb26dcd60692325f1bcfc8", 1648503386583, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["d311d3488cc4fef19d05634adce8534977a3bc6fc18136ad65df1d4f", "6c712021"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 1]}]}}, {"hash": "36113ad9404e2b5669360cb4495efc56469aa69fd9010f16841740d65e9401c8", "plutusData": {"constr": 0, "fields": [1651435868599, "46629efc9c5ddf1a78360f4da4dc387287a8238a5727ce7d02f6b658", {"constr": 0, "fields": [{"constr": 0, "fields": ["33c06def881ad62ff56d6fee031955c39ab85fe8af029af74ce7cf4d97500074"]}, 0]}, {"constr": 0, "fields": [7957205601371441286111608134884959274397282966482388263281964129927563126476]}]}}, {"hash": "036149b4e659830a6e083ac3595544ec1728fc9f6b8836c087ec52a1624ac805", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}, 1649105485000, 60547936, 1726050]}]}}, {"hash": "36167feb5516bdc35fed0f92f2e93006b3ac514d32f93c40ffe5666f933148dc", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["769c4c6e9bc3ba5406b9b89fb7beb6819e638ff2e2de63f008d5bcff", "744e45574d"]}]}, 1649593353000, 13221511, 1330880]}]}}, {"hash": "36171e969e9dad45fe31283f5549bb2532d558712f21ea6528aba51f38cff644", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4745524f74"]}, {"constr": 0, "fields": ["5aa1a1c51e07f11a170d6992ab4bd58edd3b0eacbd7ed58878445ec7", "4745524f745f414441745f6e6674"]}, 995, 7793254314930083, 10000000000000000, "3244fc366987ae2cbc608e0b7c9c39b183670ce6eeef7b8387d1cfbc", {"constr": 0, "fields": ["80aaf73aa10ed9d051576d3d3aa0ed415fbb94fb0613f5d4aca8d64f"]}, 1000000, 2566322]}}, {"hash": "36205d854cb50bea1c6405a7a695fec4683c7e96e8f6880a3c55175f53eebbc8", "plutusData": [[100000000000000000000, 300000, 0], 0, [1, 50], [52000000, 2600000000, 0]]}, {"hash": "36207a27992e7e6abfb82b0c561478b2ce012c2ddc8ce223bf4fe8c05e96c94b", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0867e0f145a8c6239cb3a31a5b31938387470663d9f9fcb5d9e7c61b"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ac47455936243dac7cd973b55423d065ed324400f3601c5207b2bcf9"]}]}]}]}, "0867e0f145a8c6239cb3a31a5b31938387470663d9f9fcb5d9e7c61b", 1648559802973, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["d311d3488cc4fef19d05634adce8534977a3bc6fc18136ad65df1d4f", "6c712001"]}]}]}, {"constr": 2, "fields": [39496, 0]}]}}, {"hash": "36220f1a6e1b4e0fbfeab4b57e76b860d5ca89f86a6c96fc39df68233597ba65", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4745524f74"]}, {"constr": 0, "fields": ["5aa1a1c51e07f11a170d6992ab4bd58edd3b0eacbd7ed58878445ec7", "4745524f745f414441745f6e6674"]}, 995, 7294252479170532, 100000000000000000, "60becb9e5335be8979e5c1327ea447194ad96952fd614e89acfff246", {"constr": 0, "fields": ["65cce69e031f188baa50c42c506b6118ad64c8bc28c714a52dd61c55"]}, 11000000, 27418848]}}, {"hash": "36248ef54a6ba89952ad0bd87e11a393baf04a09ce9aa389c43ea62a1640a614", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "775348494241"]}]}, 1649072847000, 34366806, 797390]}]}}, {"hash": "36282a52188fdd56e10caf0d4780e8a6b459b5c7f97f932dd29db9dbb583216e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["72d4947273faad339e52f50612cb4cf74d320d522bbe8d4c74e1940b"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["acf2be903b4679864b69b64c2b65d8185988ce0e3e7c0873d59b4850"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["72d4947273faad339e52f50612cb4cf74d320d522bbe8d4c74e1940b"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["acf2be903b4679864b69b64c2b65d8185988ce0e3e7c0873d59b4850"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["126b8676446c84a5cd6e3259223b16a2314c5676b88ae1c1f8579a8f", "744d494e"]}, 17906338766]}, 2000000, 2000000]}}, {"hash": "36365c75166d0827932e571134ff5842881d22e88f6f1e4e655f7935f7652fda", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["5aa1a1c51e07f11a170d6992ab4bd58edd3b0eacbd7ed58878445ec7", "4745524f745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4745524f74"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["c28ab019a2df9e678c0f629cd3f0c6f253f7a0d25bc4171a53fa83c4", "4745524f745f414441745f6c70"]}, 2000000, "320153db07fa7d0afdd99a64dec2451c9f697ae2a1f49f2a78f011e6", {"constr": 0, "fields": ["16aabc7f17934669e32de3fcc33782abbbcb70a92d0f6d8a7b69e355"]}, 1379280]}}, {"hash": "36377c4adc03a5f068f1fd4111fa514e8a60bf2675645d9d9086b675d6c21e5d", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, 995, 5522920312599499, 100000000000000000, "b18f2234b014fde079f9b4500e81b8c508c9c29afc0bd427b0e82f5b", {"constr": 0, "fields": ["37510117cd401d3d9e646b3f1dd4066b341ac22e0787f2b28d843ec2"]}, 19800000, 36212726]}}, {"hash": "36378a2ecbd4ca306c7f941b3937e34f4c4fcaee578f2b0ead3ad1d37f1d5564", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["497b7aa4be7525ef3d65309e91bd545bc92b5ae0e9019d6b2338acaf"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["eacc5529e5736486bdf5484c03d35df099e555dd2568d5556cc22ecf"]}]}]}]}, "497b7aa4be7525ef3d65309e91bd545bc92b5ae0e9019d6b2338acaf", 1648486202085, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 1, "fields": [287020]}]}}, {"hash": "36403f1a18d257f1db72dd5cabaa014b64cf584df5e42f68d28237b8cb71225b", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["3dd0b3016311f6065c5bfa6a91ff3303d7da5f335d929c9debf585d4"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2408cf64203edf32c443bb7cfdd86e696141ca42307e5e579b74a26d"]}]}]}]}, "3dd0b3016311f6065c5bfa6a91ff3303d7da5f335d929c9debf585d4", 1648958409836, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 1, "fields": [5877459]}]}}, {"hash": "36425aad9e156a4f1ea02a34456da98edb37e1bd8022dd0f425d850300e99a41", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["49124b8ad159881a84657d9306c047c968c2ee83ac9fc2152c8cda29"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["740ebfa9d238254d5cfbb16e27d62619e95d19189d54787943cc8110"]}]}]}]}, "49124b8ad159881a84657d9306c047c968c2ee83ac9fc2152c8cda29", 1648473570772, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}]}]}, {"constr": 1, "fields": [1332039]}]}}, {"hash": "36427fad0b48c6ee1ce3acedafe425e3dab1544aeaf08bc2c5c2cc6046d545e0", "plutusData": {"constr": 0, "fields": [{"constr": 5, "fields": [{"constr": 0, "fields": [988927903, 999]}, 999]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["33b700c575cb016a44d3830ec9277e943f30ae6907159c8d30e4f0c399617a1b"]}, 0]}]}}, {"hash": "36432cc9521e18d5bac882a14f5011f9bb66a7eb8d73266bdf25e499d0ab4d12", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["944df95ceb6fc33788684ef9a0bfd28645582fa5784da86ca5734636"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a580ac8a190f6f674a11f40f5d8cd5b3eef186968c2423c8de2bfde2"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["944df95ceb6fc33788684ef9a0bfd28645582fa5784da86ca5734636"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a580ac8a190f6f674a11f40f5d8cd5b3eef186968c2423c8de2bfde2"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, 23444114]}, 2000000, 2000000]}}, {"hash": "36447c60d3f6ee8bcbf5eecd731d0ec0fba776bbf82c1ee813f1ac3c668199f1", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["514bea316c280a382aa855b20fac6242d891477ddd813c0bdd37b925", "47454e53745f414441745f6c70"]}, 2000000, "27cd7420f08aa706a071de22eba1a15fed94f54b856e38b2db5e125f", {"constr": 0, "fields": ["42ebe6927dc1c507ed787d60be59afc2a225a6e929fb31df9dcc4d00"]}, 1379280]}}, {"hash": "36527f6462a8553c92d86641d9ce25cb4bf640412b71a17fb09f330ce918cc17", "plutusData": {"constr": 0, "fields": ["a49367e928bc5ceff96e4a8cd90d770ce05dfa42cdd2fb914d4199d7fe51b493", "a4c3491785c941757a65c73bd8b174fd17d5060c583e8ca1eded71cf5c52e55a"]}}, {"hash": "36566ed1eb5df5296844833283e74ce38d976d7371c114e6319401d278f893d7", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4745524f74"]}, {"constr": 0, "fields": ["5aa1a1c51e07f11a170d6992ab4bd58edd3b0eacbd7ed58878445ec7", "4745524f745f414441745f6e6674"]}, 995, 271190264920346, 1000000000000000, "8676ef30f0e7f0e164b73b8b8902366b72eb41375bcde645aab80ac0", {"constr": 0, "fields": ["a50e3553010c5ef19862208d807b27448881513428074b825181a206"]}, 4000000, 7374896]}}, {"hash": "36578fdf61adf21e5d66252e69868b3678fb4882abde7006418022f5a79be633", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1649326420000, 2073409, 60280]}]}}, {"hash": "36585b9273c3d41ed3552fa6ef6d31be883d76917378db5328b1455f75015e72", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1649113275000, 47351106, 151953]}]}}, {"hash": "36643c8dbde0ad0f092aec2d4d672730e863d6f8d034c7da3b8c31d868e20b4e", "plutusData": 1000}, {"hash": "36647d610d59435ef8d00959e9aa9b2938b86dd54ec38c4184674bfde99e5d70", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [500, 618369203]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["7fb216eaf6f0b13c0f759b8e1a37f33ca867a77eacc763cc0dac09c9"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["3c9558c106df7b999413a40493d6a3e811f2ee3bc7ca70c4c503d0eb"]}]}]}]}, {"constr": 0, "fields": [1301899756289785, 1073741824]}, 1651667464000, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}]}}, {"hash": "36678b1b1bb0b687eb85a0b2223e22f39690ad893552b34b1ede529313a81da5", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4d454c4474"]}, {"constr": 0, "fields": ["845c337c265b63558b775bbc346585e54914719698429131b3bb838d", "4d454c44745f414441745f6e6674"]}, 995, 35994030030179197, 100000000000000000, "10a5257f979d90f6abf1e48587e81639693999cb021636e20b014561", {"constr": 0, "fields": ["cdb07d8051901595377514db57477bc807c44b5caa1e1c34f333cd32"]}, 13000000, 5556477]}}, {"hash": "36748b612212b65e7421e0ff14a3372d500a7bc29825768bd3b7b7701b8334b4", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, 995, 10358023529596991, 100000000000000000, "d44f1df5e0d4e49f2b983537041ed4d95d0ce4c879dc3d22e1c50f32", {"constr": 0, "fields": ["f3e68867c5c7cceed5fbd8055989709292b088226374ea7eaa60cd2b"]}, 10000000, 19308703]}}, {"hash": "36761d03f0b43e8d1413d8a352109964e09e687e888818335e0324b09d49fa59", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["257a9f56a3c592d9dc60f2fccc79a4edb1e0657b00267ab1cdecc6f3"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e9dc2d6aa84ef520b1f570353160471f86e3af261ff1482bb5f7bcd2"]}]}]}]}, "257a9f56a3c592d9dc60f2fccc79a4edb1e0657b00267ab1cdecc6f3", 1648719985994, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 102670034]}]}}, {"hash": "36765db7aa781da0d1f8f0c22479d99560110d92a26a89263283a470d8f4f4dd", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}, 1648871419000, 86964326, 3085152]}]}}, {"hash": "36781b7fe7263fbb914b0e6bec0531257ed2355f27835f4fd939c829a01f4951", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, 995, 27146044088433124, 100000000000000000, "62456c890112fdb4bc5ec846638ea09fafa4288ba9a8153305295758", {"constr": 0, "fields": ["90d530fe3f5a3970d01b964729c7a9aee7ecfef575b8477520bcde54"]}, 4900000, 7367556]}}, {"hash": "36835e030cfa40ce6c6ada74d677f4ab03115b453d59682b6e4871ba51b5464e", "plutusData": {"constr": 0, "fields": ["17f9fae7028390a21114c23709527ed2e4c314ad7da784d84f2beb45"]}}, {"hash": "36893a67b2a80e04a060d904e5cf6c23f82e7a2b80f0a54c52756f5ace249c7c", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, 995, 45340442110116974, 100000000000000000, "5feb0e73a504acd4541029e11b3abb6e656f353efa51f3b51aa3912a", {"constr": 0, "fields": ["7b8983956ea862c006619918f17a592c3a18b7eb8df83359f61aba57"]}, 14000000, 4411073]}}, {"hash": "36902cf7ae780bf9619bbc951cc1862520d8a51c91ae45ffcd2e4deb67f7b299", "plutusData": {"constr": 0, "fields": ["ebd085b2bbe9541a7403cfcc2c715a1fc5cde3b37663aa6ad2602d14", 100000000, 250, 5, "5f54709200d9b939df6cff38cc87e8540d5360e6bf6b937299239abe", "6b7563696e6731", {"constr": 1, "fields": []}, {"constr": 1, "fields": []}]}}, {"hash": "36911e0a39dd664159262110d4f6ac6b2270e351fa1ee45b0bfb4ceaad69b268", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["3198957792e501b21eb26b75c99eb3f360de0dcc4ec01b70ef81379f", "484f534b59745f414441745f6c70"]}, 2000000, "c33cbc21c5ebb858fa41205e95a1fc670eb5102e02df83349c34e6af", {"constr": 0, "fields": ["d197ab0f7c888e9e3e25d01349bfc6a9b747048870e532a0f636e956"]}, 1379280]}}, {"hash": "36922e1262a8bf99a3c103c735acd9b01af192ac8b61856a7fcc8676ca77cb1c", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["585fa96770882848b619f02acc999c3b77bf9b3b8505f6c1d1341cc2"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["cf6817f4653122a501e2bd3d30e30ed6cea35d7fef3d60c145637417"]}]}]}]}, "585fa96770882848b619f02acc999c3b77bf9b3b8505f6c1d1341cc2", 1648486183163, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}]}]}, {"constr": 1, "fields": [173780]}]}}, {"hash": "36941d0be76a3b8c18c0465a130160c81f0c5dd04cc4167b029817cb73b3c2bd", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}, 1648453684000, 35735137, 1020231]}]}}, {"hash": "36995b8adab4a73bfc2a8d4872b275e21e1f7912a23683df64567d71b7d8d1a8", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["40e1d87d8bd9feae789120fb42fe6316bd251d16eec504f27db4587d6a522061"]}, 0]}, 1652858744000]}, 1652860170000]}}, {"hash": "37010a1010cde6a2cbeea2f74eac2fa7c4e8137adf410fdad6f6c903669426ac", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["20064ce1a4b2fdccbfee16c2accd7341089dad1148efbf1d054cd579"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["66f3df03f48049981068f9b7edaf0c9e6f8344409dceebe50e04e168"]}]}]}]}, "20064ce1a4b2fdccbfee16c2accd7341089dad1148efbf1d054cd579", 1648709099544, {"constr": 0, "fields": [{"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "4d494e54"]}, {"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "534245525259"]}]}]}, {"constr": 1, "fields": [5779]}]}}, {"hash": "37020f4aae005de60db8bf440cf4816833da2d1fd80630a3e527475beea32f63", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b4811c5825e1d647a102644e92ce864ecf6c51f967a4160f45c467dd"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["31c618dfe0431520629c4b9633942597ba4a9fe8a304972eb0dbdd4e"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["b4811c5825e1d647a102644e92ce864ecf6c51f967a4160f45c467dd"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["31c618dfe0431520629c4b9633942597ba4a9fe8a304972eb0dbdd4e"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, 43978976]}, 2000000, 2000000]}}, {"hash": "37038ee18544a4681a455ec5bff40bd711d0447c0a3627c50e069d969b53078e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["514bea316c280a382aa855b20fac6242d891477ddd813c0bdd37b925", "47454e53745f414441745f6c70"]}, 2000000, "10059c9c4ba6fc4cdc152cfe6104dc461462df69b7e4200ad993859b", {"constr": 0, "fields": ["453930d286e674fcbc976872574638a0d3d4f5afd66918595e5d00c6"]}, 1379280]}}, {"hash": "37061ccd601783aeaab7e52eb51cc94aa7371d4d23319f64fa6d2f30aef0d802", "plutusData": {"constr": 0, "fields": ["5f01", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7f22b988be8619f4d771466ad12005c2002ca0595b294bbf2cac01f4"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a819e693386b646a01ea9e40ef52910b5564770fe24e75c737f10a84"]}]}]}]}, {"constr": 1, "fields": []}]}, {"constr": 1, "fields": []}]}, 2500000, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 10000000, {"constr": 0, "fields": [1315239]}]}]}}, {"hash": "37062f4a99af12d567fa07005700729356c7928974b5bd086b3bbb9a559416d4", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1648923950000, 219926, 371942]}]}}, {"hash": "37077c628307ee164a56f4ef232ad8acc10d390f6b46207479893118104bc001", "plutusData": {"constr": 0, "fields": ["c590a142318792e6e1a0ef9be57ad27c13edcdfd589dcacef0303f776bcaab5cdd57fd0e9a424af8363bd3972b177d02698a0325d97587c49b8137a3dd626b0c", {"constr": 0, "fields": [{"constr": 0, "fields": [4691389728017477, 2147483648]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 1, "fields": [1653794669001]}, {"constr": 1, "fields": []}]}, {"constr": 0, "fields": [{"constr": 1, "fields": [1653796469001]}, {"constr": 1, "fields": []}]}]}, "555344"]}, {"constr": 0, "fields": ["85915ed66d676887fd4f3f4b628b07acf8f8858588b7f4169f5fd6c3", "446a65644f7261636c654e4654"]}]}}, {"hash": "37078ecfa41eb1c00be3a3b4654a4dfad946683c39d339cf7408673306bdfbde", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, 995, 3014009114363562, 1000000000000000, "4ff2db825461e93e75fa7e53b59c132b40c8ca59bea0b9b1c89e506e", {"constr": 0, "fields": ["c0543d7207147a7387cc87d98d3d8d22f6100e1c16be7b7be554f582"]}, 1000000, 663568]}}, {"hash": "37082bfa788f6407935d47e33d2b49ca7ea5c20e52769b7d8af78c9c09f830ee", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, 995, 7765847580719093, 100000000000000000, "2ea77a253290d0dcca03f4be19391da44707859989dbb808a7458682", {"constr": 0, "fields": ["bc95cf24b29be5d447744f0b2704fa568078702cd5098305f4f6d7f9"]}, 8000000, 25753789]}}, {"hash": "37096bffe4e543430b4bf7d19d2768a60dae88187438f80525e339be8cd733af", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}, {"constr": 0, "fields": ["ab49c4983ea2cfd43dcc32279c5ef045bb39d331309f7f0e98da939a", "7453554e444145"]}]}, 1648646917000, 1407, 0]}]}}, {"hash": "37115de69b5c64384b5d18a85936b13fad7e547c27ec4a87cd35fb158595e6ad", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["845c337c265b63558b775bbc346585e54914719698429131b3bb838d", "4d454c44745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4d454c4474"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["63e4edb737843f9b966ab1318259b3b4e165eb356eac93b3fa0bfa7d", "4d454c44745f414441745f6c70"]}, 2000000, "d6c25388591e66e4d20754587cc8a0f4e4c576b0956b7ef2562d81ab", {"constr": 0, "fields": ["ed77165af4f96cb8777ee4ad41d89888efd2c01a5a4366c9a7c12b44"]}, 1379280]}}, {"hash": "37312e230777d934eb09b8de1caae8f7f92473b1ee0f8acaba83268d1bce0c60", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["bbab095fc51ed242d8a08f6b52f01e8488b1e8a757c3a9512b98c102"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["aad0a1e66659e5808591b3d3968f4a1bed2e1f175c3dc6d9bf2e3c18"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["bbab095fc51ed242d8a08f6b52f01e8488b1e8a757c3a9512b98c102"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["aad0a1e66659e5808591b3d3968f4a1bed2e1f175c3dc6d9bf2e3c18"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 2, "fields": [1]}, 2000000, 2000000]}}, {"hash": "37324f3fcca2416f2f36bf3d589a4a98d121c5f7bf6c98f1c792ecf3e5eb6b3b", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e587cd55276ce23921ccade90b668e9a60878ebfd803cc40ac97be2e"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["5d6f35bcd3cf7ccebfab8f6101a07ec7e304e455d1a1270ee09689e3"]}]}]}]}, "e587cd55276ce23921ccade90b668e9a60878ebfd803cc40ac97be2e", 1648528656469, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}]}, {"constr": 1, "fields": [646984]}]}}, {"hash": "37458b0d63f9de508737a1fca5cddf0bd8e713c571e484ed475e354d0e5fe6f0", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["01a088676a382bb88394933a67e8cf4a72920c3026f889701455c1c4"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["4aeee9cfeba34ae9e200ed49a6fb86b3a1a5d63db706546133e0fe53"]}]}]}]}, "01a088676a382bb88394933a67e8cf4a72920c3026f889701455c1c4", 1648484643943, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 417683940]}]}}, {"hash": "37516b7119c0e4b1cb4503b5e4bc9aeeb2750f3d8f5a454070e81f3ffbff54e9", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["91c7d9cbf84f8b3e62a26f9a8c0679b27bc3ccd5710a62ffc60093b2"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["9a0a3af9ba075e02507c917789f2166eed98a3711a1074a9ddfe8fd0"]}]}]}]}, "91c7d9cbf84f8b3e62a26f9a8c0679b27bc3ccd5710a62ffc60093b2", 1649349512344, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["3fb0efd17304d74896130d9ea419a9883a2ef3c8bf9f9e39478dc210", "74574d54"]}]}]}, {"constr": 1, "fields": [4362881]}]}}, {"hash": "37546fef69115682e0db33a692aaf4263337f51a12b44b18e71f2d7029c0c7e5", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["c3a845bfd9ce8f3a3dd38865bf95ddf0f11a1a953b9e4d641ffce0ce"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["719a4ec015fee1be7b6d31841f6b5998afae82b11390bf5aef41c614"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["c3a845bfd9ce8f3a3dd38865bf95ddf0f11a1a953b9e4d641ffce0ce"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["719a4ec015fee1be7b6d31841f6b5998afae82b11390bf5aef41c614"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["0900215e257fd604d786e7ae963e61c310c5dfc1bf194e7953865bb4", "74483450"]}, 148108]}, 2000000, 2000000]}}, {"hash": "37553be259d0c1601ee159e2a04e9bcbae38e236ee02d707371ac23bdd2ba4cc", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["54c51a8141b5a31ed99a6e0189e2c80f5e307ee4c0908c0c3cc6dedd"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["8160deec28a96acfd04023352b159533352ac1b7511cf07aecc47d3b"]}]}]}]}, "54c51a8141b5a31ed99a6e0189e2c80f5e307ee4c0908c0c3cc6dedd", 1648467696802, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 7199]}]}}, {"hash": "37575c0e5fc9c08eb103acab9bfba1bb964aabdc3f3259f0461ed55237bbcb4e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, 995, 37244363996618213, 10000000000000000, "f3de7f06b30d85eff8091fd0e4bee104bfb40bd0cf4bb50dac2d780d", {"constr": 0, "fields": ["da9ce2f37f7c3c6bee77b3dcd092b102ce57b4e95c8533bb871a3136"]}, 1000000, 536994]}}, {"hash": "37597c5d0fa253cbd047469e015ef0cf47cb4aaff0fe6926c69d54b7b2fe3697", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4d454c4474"]}, {"constr": 0, "fields": ["845c337c265b63558b775bbc346585e54914719698429131b3bb838d", "4d454c44745f414441745f6e6674"]}, 995, 14157305502335885, 100000000000000000, "393f6e8bc3e679158ca229014ce05f451fc6ef2a5fcc987b9fecff03", {"constr": 0, "fields": ["f21936970cdce9909b303c955186fc6d3b7e3d6c50058876e2348d3d"]}, 13000000, 14126982]}}, {"hash": "37615b664d20b3164c502857ce4443fd7d29a0f5b3ae5f5c6bc7b7dc0439d858", "plutusData": {"constr": 0, "fields": ["22e8b0ac4d55bae862016d6d51819a75f9cd704f923d476f2fde01bdee847029d7617e22af3dc5919566e6543fae9fb33a4433235e2b1313c5e46800b4a93207", {"constr": 0, "fields": [{"constr": 0, "fields": [1930322380224719, 1073741824]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 1, "fields": [1652866305001]}, {"constr": 1, "fields": []}]}, {"constr": 0, "fields": [{"constr": 1, "fields": [1652868105001]}, {"constr": 1, "fields": []}]}]}, "555344"]}, {"constr": 0, "fields": ["85915ed66d676887fd4f3f4b628b07acf8f8858588b7f4169f5fd6c3", "446a65644f7261636c654e4654"]}]}}, {"hash": "37617c70aefd56f96a0cb0ddd575492991df9a19e24a7eb5ea6be034b03e22bc", "plutusData": {"constr": 0, "fields": [871178742911, 189303, 650596, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["86c973aa61e5f75021c3c332b5b78606a545e1f58b40ec578b5e7f32b3c5f1fa"]}, 0]}, 1651748684000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "37639bb93e0bcd7ccabe638f739aa7a630d903a18cd85f01aabcc6bdf8083b60", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ed4d955c0ff7dbe14b653195c3040942e9d33aa40f381202c55c27a4"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["5e9a698e6a59cc477c5727ffbd239c1cf3879e4c68384024e4823fa6"]}]}]}]}, "ed4d955c0ff7dbe14b653195c3040942e9d33aa40f381202c55c27a4", 1648931037097, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534454"]}]}]}, {"constr": 1, "fields": [341500]}]}}, {"hash": "37641fb39fbc46eac87fee6dc10c1a7c3fdce65344bb795f4e07191bb2245d79", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["7b8064fd755d09d5f38eb3bd4a61fd21e292dc1c56b80effc04e3460", "56594649745f414441745f6c70"]}, 2000000, "6283b5db048bf12d1458095afc306f2a16d76a30217324c3a05a1d17", {"constr": 0, "fields": ["01fb0b4c88ea6ef43dcb41494a8dfdf0f3f4fdc4691a6625a28eda6c"]}, 1379280]}}, {"hash": "37643e6bfcdaa99f5cf914b9bb79dfc7c70720d6bf915a34c70e09755d1527a0", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["294870e187e8f269be1a306b8fab8a3e466aecea690230df373a78a5", "41414441745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4141444174"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["75507a5b1af53b7f664a07e07d66a7313f72c557606497668142cab1", "41414441745f414441745f6c70"]}, 2000000, "8c31f430fb61564a894fb884800d149c5672210f492856f320136c58", {"constr": 0, "fields": ["3f8e88467ca3540b5025059a1d5af19c706e4e187a7e87b01dff24cd"]}, 1379280]}}, {"hash": "37676f684c7c4793dcb3cfa748b11db2a72485294d21e5eda5e93e5d7bb95024", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7741564158"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77585250"]}]}, 1649029018000, 0, 0]}]}}, {"hash": "37737d361a4c9edda488f6b0d5fc65f9d79a3528cd29510c1fcb1a74a0cfa740", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e32607c0bc765ae4674077f57e2b257ea78d9a4807cf2da51e493bf723a63e73"]}, 0]}, 1653147421000]}, 1653149967000]}}, {"hash": "37757d32d1b4108969fbdbbc151f31c5c9f37d6cb70649205f35c1e6250caa61", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["126b8676446c84a5cd6e3259223b16a2314c5676b88ae1c1f8579a8f", "7441444158"]}]}, 1648593495000, 2902630, 3178]}]}}, {"hash": "37769ced7f3b59fbb57dee116499a5b4ac81aca8da0f963bfc349281b3501632", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}, 1649059476000, 60182936, 1709533]}]}}, {"hash": "37785d471014adaf8ee7280c25356515096cc7be3a4c1bbb82494608d0fe5239", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["4ae8499f752d32ba7b4dd9f461e7c26375453a35b02430c004065cb7"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["9f45c1ea0d6dee1396b32b8b2eb237240175d7980cfb66c5ee2d7696"]}]}]}]}, "4ae8499f752d32ba7b4dd9f461e7c26375453a35b02430c004065cb7", 1648529522879, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534454"]}]}]}, {"constr": 2, "fields": [104480369, 1902]}]}}, {"hash": "37786ba629e23cfbba1a0fed28733977cb7ee5b3a2f967514a1f00b7ce70832c", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b8031a5c2020eb924641bfd01acd5518747fe92adb3ccce90074f09b"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["8d79d27bee31ec2655d58f43bece4c1dde8bb2460579f43b821c5c59"]}]}]}]}, "b8031a5c2020eb924641bfd01acd5518747fe92adb3ccce90074f09b", 1648578805360, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7748454c4c4f204920574f554c44204c494b452041204e49434520485547"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 32]}]}}, {"hash": "37802aa9625de9ca96cc88af411bde5fed7444611081e6c842c1b259e0383745", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, 995, 9089175124181992, 100000000000000000, "126902fd08d854f76a10b5c10da5d0281d4dfa0e54ee7a2190a6cfb4", {"constr": 0, "fields": ["4069349141647c8a661462897d1f0650656c1e0021bfe7a2df698d66"]}, 10000000, 22004197]}}, {"hash": "37848ccaab56a8193c67115186c9e8b7f1b6377109d84ec03fa4fb4b0e77a395", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}, 1651432677000, 64334011, 2020164]}]}}, {"hash": "37881fba4d99d37024996f3b9dc4a45cf4fe6c1fff1531d6818e8f9dd4120c8c", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "775348494241"]}]}, 1649078293000, 278563, 1020802]}]}}, {"hash": "37893b58053f699e122a4ae11714c6ba1fd03d5ddde0c061be56884233e38ce5", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1648478142000, 3752, 53887]}]}}, {"hash": "37897f6ae78e76bd7b42b4d9e05d96b34ab8cd2bee35db25fc57d8cec4051e94", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["c3b39f2855f1c15c1d773f5cc51fc4c9987af269435fcbc6fe452cc5", "634e455441745f414441745f6c70"]}, 2000000, "c7fae9845a1d2fa4d730cc3133981879ae35bef42ad9fd71619a8c7f", {"constr": 0, "fields": ["f1c954bdc45f149a6e2b075a65cf0f90d7c7f6d7ccfb4d078cca91be"]}]}}, {"hash": "37911d9b33e903dc8db4bdfc5bac0492f0a01cb2d841404919251463d9eea380", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4d454c4474"]}, {"constr": 0, "fields": ["845c337c265b63558b775bbc346585e54914719698429131b3bb838d", "4d454c44745f414441745f6e6674"]}, 995, 368502044532256, 10000000000000000, "dd53cbeb4b7147ec667125779f559738373f9e1b22d9b3c4a360b3ce", {"constr": 0, "fields": ["3c97232ec561fdcfc3cd5551eb1922be07e5667dc00621590f4f9056"]}, 50000000, 54273783]}}, {"hash": "37913e241af9758af4e6f3574dfe5b87ca1c7b72786689cddd345594c892aa15", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7be00616e2bfd09f16a4f198e48b5a981b054df36bd5f83ef6838054"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["88f0a72f13a4724579bfe6bbd0b86d8ced012164be4f6d95f26bb30d"]}]}]}]}, "7be00616e2bfd09f16a4f198e48b5a981b054df36bd5f83ef6838054", 1649209185091, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 1, "fields": [45695]}]}}, {"hash": "037916c8ce2b4e3782d1fa41b06c44f58aff394b457e059c88b31ed0d42857ba", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["cfa6386857e172feb77f4374d80f7fc435e434bc455d61136b2d97d9"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["99469c8ff7433afade0f67b571cf8c0a2c29f86a1df9bcfae4887f5d"]}]}]}]}, "cfa6386857e172feb77f4374d80f7fc435e434bc455d61136b2d97d9", 1648838882011, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 1138446]}]}}, {"hash": "37937cea07b3e4d772c107d5c8a8a6c28cb16cf9acfb6b2bcd229d23ea12ff0a", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["4c5b4798c2c06909f1694adf9d6bf3e204e7207f810bd57b0f391ea5"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["26f28d783e19e54e8a09fc35b08fc0252b2711e55911653bc29c89c4"]}]}]}]}, "4c5b4798c2c06909f1694adf9d6bf3e204e7207f810bd57b0f391ea5", 1649363492860, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f54"]}]}]}, {"constr": 2, "fields": [1183498, 4112]}]}}, {"hash": "37945aea86489a404f26beb5654b59cc42c861b2f335b601410f7639a0d45c47", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a649aa5478751faa10235e7667d320786fcf0466538aef2f0a57870f2eebaa84"]}, 0]}, 1653583233000]}, 1653584686000]}}, {"hash": "37966cac5e6373d28ce628973b068c340ccae2fdf3f10b6609bf228c85dcdfc7", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["8051ca8027b3bf9789a0865b8e7b662305194c5baeca7258092f55a2"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["35cc9b15f62366f4ef1cb9390a3e88bb48cee09d3d3b67461f02555d"]}]}]}]}, "8051ca8027b3bf9789a0865b8e7b662305194c5baeca7258092f55a2", 1649245653842, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}]}]}, {"constr": 1, "fields": [256784]}]}}, {"hash": "38040f0454e04a62e1237543af362c3af1ae30c4ab514a59fb3876731708bf0e", "plutusData": {"constr": 0, "fields": ["0d1efa8f3549c259171343a162a58165670f8cf2a4b1ce84e223ba47"]}}, {"hash": "38101ff776fa10321dba9a94bbdcfbe2543930a62c34697c375a98143af566e7", "plutusData": {"constr": 0, "fields": [882061196991, 189153, 661529, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0a25c025cefc91581ef198fd9b583d760f45c02364eee0d2418d21a2d49bc52d"]}, 0]}, 1651764295000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "38114e75733486a3911550f1f89abf72fbf4dfa3871ba7e9967ef4ecef28608c", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f45c680805e43a828ac38e7bbf8210f1a07ac2a0f425754f5161db71"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["4f6c421a24badbefa310a3263cb98fcc470b1ba48ceecc239dca348d"]}]}]}]}, "f45c680805e43a828ac38e7bbf8210f1a07ac2a0f425754f5161db71", 1649007098043, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 38636]}]}}, {"hash": "38124a352d7cc2e43cdfbc753469c3da718bcb69a6c231fe378d8acc9f0f57d3", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["9464ef426a973efa3646de0956d8b368ab9f88decc4b749fd2e2d598"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["26902cd91fcb615286a054bde03e2852e6c3aa6e12fa6e3e33bf50f7"]}]}]}]}, "9464ef426a973efa3646de0956d8b368ab9f88decc4b749fd2e2d598", 1648921847541, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 2, "fields": [14025000, 344950]}]}}, {"hash": "38146b31255411ce27af25bfe64b45114c5a436e7885c2ef178b8570522bf4c0", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["c3b39f2855f1c15c1d773f5cc51fc4c9987af269435fcbc6fe452cc5", "634e455441745f414441745f6c70"]}, 2000000, "dd98a1ee6a52d95b4f931b9a3bf08bb9d8e4038822d12662b3242116", {"constr": 0, "fields": ["dd9b85eafc05a70fd46b0ca85b1bbbd801713469bfdbbcbcbac2e6e2"]}]}}, {"hash": "38152a520257655ac615852e3e3eb34d9eebe18e203a944d4d64b20a9115246e", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}, 1648918684000, 58208878, 1638082]}]}}, {"hash": "38175a64e00b1b027929fa2ee3668e988e095fc8911adce7d2be76429ef3b0be", "plutusData": {"constr": 0, "fields": [{"constr": 2, "fields": [400, 353155126]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["75581d4a68e97e841b1dca751e42e7137ccdd4e388007abe49105ae7"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f1479a74f02965df1baed2b9306bfedf7499028dfb12c605f3f9301d"]}]}]}]}, {"constr": 0, "fields": [4150930024161593, 2147483648]}, 1653486879000, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}]}}, {"hash": "038181f911194b5817942a6a96e6ecb173a3cbf3ab8a102b44097983cae2b2a7", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f54"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534454"]}]}, 1648475463000, 298, 0]}]}}, {"hash": "38216e86b24760109203605581741746463331fa1eeb41477527b22ed2f3e86d", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["66af5b9014b18026e8bf2544a83ec79e7512f0ae2f80bde8822babdb"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e70b7a0dfcb72e8ed85f3bf2f4fbc61f7fa1e70947cb16d008840eb5"]}]}]}]}, "66af5b9014b18026e8bf2544a83ec79e7512f0ae2f80bde8822babdb", 1648459160321, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f54"]}]}]}, {"constr": 1, "fields": [3206428]}]}}, {"hash": "38297e2836969c4186ea90a8741890c5a1b5d2e28770fdd1b450a82afd1b0fcc", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["8292792be6d958c11ebef2c948c36d79eeff148689ad510db9cd4b5b"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0b50a71a148ef3d6ea0df8f186f857b8cdbf959dc6c29c99c931c06a"]}]}]}]}, "8292792be6d958c11ebef2c948c36d79eeff148689ad510db9cd4b5b", 1649462184483, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 2, "fields": [13928255, 237500]}]}}, {"hash": "38302c74405daac54cccf7032f83b33530e26afd41d0449c51b6a7a93bd015d9", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [50, 112198879]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["52a0eb4231eeb979cba005927396b6d1d33b34cd5949051776701ad6"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["cd3ac2b5e57dd40808ca74ae4f4bcec8d81a3e381615a5ec4c77bc91"]}]}]}]}, {"constr": 0, "fields": [4724416781432185, 2147483648]}, 1653711674000, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}]}}, {"hash": "38321de82f7156270f0514cff9a6c7ba2560fc46b482be39b2b87efccee74fd7", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b47c7c0ca235a188003fde3e6a583141a89125f346572bb87e81a870"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2966ddf1dacf046d52483389174713c212a3b549370f996066569251"]}]}]}]}, "b47c7c0ca235a188003fde3e6a583141a89125f346572bb87e81a870", 1648941774495, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 2, "fields": [5547264, 95000]}]}}, {"hash": "38427c267d644384f0ff0b30efc79808667361257a4dfdb35fd4df0e58021dd0", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534454"]}]}, 1649514809000, 48453332, 19748]}]}}, {"hash": "38463eec041357832c5002e7216614c02cbb349acb1c524529109cea3971912e", "plutusData": {"constr": 0, "fields": ["97ace36fcac93cfad559a0d391a0b6aa3a660ecc9510c421f1476c06", "f7a3057b39d60c56a1c39c7d145d0b9d108122dffce7cd12e943f166", "6141414441", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 100000000, "6153554e444145", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 30000000, "", 604800000]}}, {"hash": "38476d58f42114bb7aff00368bfd2b333825e9492f4de6e7e55729f7287887a9", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "534245525259"]}]}, 1653889354000, 0, 0]}]}}, {"hash": "38491b01fcf3c1fd4370acab0d6d19738b015cf4ef11ec8079285f5e96340365", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ca9bce5dbc872c086807f564659d3708bf0f76b9658260cc32d1e66b"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["9da269b46749a9391be3c6c7f60194cc815410e8c94f048bb05ad146"]}]}]}]}, "ca9bce5dbc872c086807f564659d3708bf0f76b9658260cc32d1e66b", 1648563193574, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 1, "fields": [9528803]}]}}, {"hash": "38502d87e99067becbf76977929f88ee3cdd4310c81c4bc4b47a460ba01d5109", "plutusData": {"constr": 0, "fields": [2625316331563, 295682, 2398227, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["53dd35167d3de82eae1a7d0194f89ea8f3b63bd181fe217fde7a4ef1e8368971"]}, 0]}, 1652868854000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "38510d8cbb04dada9cdbadcb4efc20f5cc425bc71643618459aae1265e6d0463", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["5aa1a1c51e07f11a170d6992ab4bd58edd3b0eacbd7ed58878445ec7", "4745524f745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4745524f74"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["c28ab019a2df9e678c0f629cd3f0c6f253f7a0d25bc4171a53fa83c4", "4745524f745f414441745f6c70"]}, 2000000, "5dd486b914255ffaedabdaae46476a36173b91f0f0f703412158c66b", {"constr": 0, "fields": ["302ef181b80b9e444bb09e6d06baf43a91315e8192c7a9a440767346"]}, 1379280]}}, {"hash": "38513ebfe557c5b019ecd023919baaa04f5a9edde3349cabad45c86990eada06", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d2e55331f2fd00e7ec3c450f20d4c0db1f6135e71a610ba888d4750d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f32779bb71f11018f0f2508416b86ac1039e69d279bb07aa67adcc59"]}]}]}]}, "d2e55331f2fd00e7ec3c450f20d4c0db1f6135e71a610ba888d4750d", 1650233371755, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}]}]}, {"constr": 2, "fields": [6053, 706550]}]}}, {"hash": "38534b0fa10df82351ba7f35ee46a45fe2d490efb0c233266753da35917166d0", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["1f25af3c23c72a0d368156ba6f00d749c9e6e9bd42fdca51205aa858"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["13d317fff7cc5b1e3121f1b529d964af54971912aa4a976f4034f48b"]}]}]}]}, "1f25af3c23c72a0d368156ba6f00d749c9e6e9bd42fdca51205aa858", 1648786777198, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}]}, {"constr": 1, "fields": [93703]}]}}, {"hash": "38572d0b839c88be599457979f55f223beb78e5c19ed0cf85692d735d4c17a20", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1648907471000, 64939303, 764642]}]}}, {"hash": "38610d7c60d94e0d5ae4997a718e1966b637323af49d602e07ba0b0086dd5d53", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1648716298000, 900, 109540]}]}}, {"hash": "38618dab39275e41027b73700eff9d1ea22cb814c25ed3d1be5d4ccfb8c617b9", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}]}, 1648593175000, 0, 0]}]}}, {"hash": "38646e336edfb849f93c11ba5c79656efecda2ca674d20dc7a1aba5a9603af4f", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "534245525259"]}]}, 1649498359000, 6676836, 52658333]}]}}, {"hash": "38652f7179b304c6c38686389c3260dfe8f49921a304c39c566a6645ad45f4dc", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["5aa1a1c51e07f11a170d6992ab4bd58edd3b0eacbd7ed58878445ec7", "4745524f745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4745524f74"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["c28ab019a2df9e678c0f629cd3f0c6f253f7a0d25bc4171a53fa83c4", "4745524f745f414441745f6c70"]}, 2000000, "e28eb72b9bea274ff12c63a165a41bcf2a8e96cbf4853fa71af110ca", {"constr": 0, "fields": ["426b7db207c73e6bda6fcb599457bbfbdbc5a4a524948f573440aab6"]}, 1379280]}}, {"hash": "38730c24a80a381c767288d80cb32347f874059d75cc349f1be214a1ae6452a2", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e3718e576496c43228101fcfaa69b86869ae640247bd1aef5e517f24"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["78f0e1764a742fa8ea0740cd52713102afaa461e13ea09e5d02bdc71"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["e3718e576496c43228101fcfaa69b86869ae640247bd1aef5e517f24"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["78f0e1764a742fa8ea0740cd52713102afaa461e13ea09e5d02bdc71"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["8191fb911a6ed11a73ffc01e17b4ad0410b0d177100a45deb1470e5f", "504e54"]}, 0]}, 2000000, 2000000]}}, {"hash": "38766d188b738862af54c74879a1ce202abcc665e4898aa1aa5155889551a04b", "plutusData": {"constr": 0, "fields": ["031b14a4ad5f92e46a91849a64f5f5ce09d6b74b1369d26fa01ab793765ab379c78cb85213f4af3e2f818ebef67ce5ab284a20614514693050e066ad2a913409", {"constr": 0, "fields": [{"constr": 0, "fields": [319432921996787, 268435456]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 1, "fields": [1651120043999]}, {"constr": 1, "fields": []}]}, {"constr": 0, "fields": [{"constr": 1, "fields": [1651121843999]}, {"constr": 1, "fields": []}]}]}, "555344"]}, {"constr": 0, "fields": ["b948190111819f577a5216b39823508a132936a5202f1ad81be5afe0", "446a65644f7261636c654e4654"]}]}}, {"hash": "38795a740ed1626e167e09f5a29db82b54e56e47723a6d13838d03bb8e2de5c3", "plutusData": {"constr": 0, "fields": [3883271086963, 411059, 3567693, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7dddee92048a716dfccb19a1889a7be5712980696e0cf2fcf02120f0f5ecf1e9"]}, 0]}, 1653543665000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "38817b92a421908bd60233ee01d3ae83cfde770765a872aa0a6dcd234935e702", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2ba7c97a3d6d94a9b8957a31abe296bf2a7413587770c9277b5a33f3"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["141bce5f2bd6ac576a0ef8a0a442761750c7c96c74ab3c854dc97e4a"]}]}]}]}]}}, {"hash": "38830ec37f9b5cb10951f802849823ccbe29df0a6a661184879997b32f9a0bb3", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 1, "fields": ["85e67b71b70cbdfe49d42d05a5d97ab1481094d2bc5e7a434bdcc29c"]}, {"constr": 1, "fields": []}]}, {"map": [{"value": {"map": [{"value": 100000, "key": ""}]}, "key": ""}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": [18154002285169255551429323879841320817394189226668220684025414833811781551256]}, 1651284376999]}]}}, {"hash": "38860d4f1eaa9d094e8dc78da0b30df7d04c4d995ee4bea835df6f82b1e11db1", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["5faca46af05974df199c75066c14286ba287e1ea46943677c9c3bb1a"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7dbe62edc6c0c69f0b16f4376b55adca1f2f49e2f382bf80974b6515"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["5faca46af05974df199c75066c14286ba287e1ea46943677c9c3bb1a"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["7dbe62edc6c0c69f0b16f4376b55adca1f2f49e2f382bf80974b6515"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6", "4d494e"]}, 3180120]}, 2000000, 2000000]}}, {"hash": "38949bc705bad51d96432b898ef16b85b572889a6c4df72e6d792516cde05961", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["698a6ea0ca99f315034072af31eaac6ec11fe8558d3f48e9775aab9d", "7444524950"]}]}, 1648486134000, 22345768, 98939884]}]}}, {"hash": "39013de22930e0cf9e9e41907b73ed254c72248e3c0dc312664e7b792495b5d1", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 1, "fields": ["44faea4b2fd2a3ae0e15d06703b877eebf2aeec813e16795aa0675ac"]}, {"constr": 1, "fields": []}]}, "41e68974ada29806c8777bf638300504fc3ac44be0a9db8593069ae2", 1653636583834, {"constr": 0, "fields": [{"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "01775459ea42d155094e18c52697cb27fc802b8d4c51dcfde67432ef05586344"]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "cb6de817be83e93a5771e6c98ee305e1012bae70d9eb9dff70e2d71e4b611779"]}]}]}, {"constr": 3, "fields": []}]}}, {"hash": "39039c23f80a7bff9e501af9a4de62287985274c0a05126e9c8828897bfdbe15", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["9b9880158d4b03ba7ce5354da0a6419d315d6b0721fa56255e9a07e0"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["bd99a90fa0dbf36008e71b67801e6f49ea43b1fd3c11cd4259b0c066"]}]}]}]}, "9b9880158d4b03ba7ce5354da0a6419d315d6b0721fa56255e9a07e0", 1648459818617, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "524245525259"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 222434089]}]}}, {"hash": "39114e50dd2839a201e8081cae261f4b400ce6756f54c6ac9a10168ce7314ce6", "plutusData": {"constr": 0, "fields": [4542119355310, 413988, 4319774, {"constr": 0, "fields": ["d073fba04de32cdea8e37de2ba6348850415e7adbafd1407ff77e124"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["5ec6e1c2853a516531b840a6aac099f4988fb8e6f07d60ef935bdbd505dfc198"]}, 0]}, 1653587998000]}]}, 1930992, 1896510, {"constr": 1, "fields": []}, "446a6564555344", "5368656e555344", "555344", {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1119f6826f689548f12679b9a6dfeb792c05e28fef66d9dd784438067f5e59e8"]}, 1]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["1f05fac4a1fc77924a700824ac4f429b61b062762b402ee05ba49e6382687a10"]}, 0]}]}}, {"hash": "39137a55ca14f40790661e1902319a7814f887922942f788455930d79a65a298", "plutusData": {"constr": 0, "fields": ["6e6cd036a90a203415ddad54b9cd555cd54a6ae6330f2cb4b35d0828c51aa69b", "6f0dacf18d69af49b7681a3d74109393ca9830aa305d4c41f7e550254c371db3"]}}, {"hash": "39183f296fa0208314738839b06788427255f120cb01f31c1429107b19a6bf18", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, 995, 682321626627465, 1000000000000000, "1a70abcd62dca791a5d209a616443384168dd10d6e5075bb88e95cf9", {"constr": 0, "fields": ["ff12dce6f215826f5a0a10664dc65b564dfa71fb8217bf567cae8677"]}, 10000000, 2931169]}}, {"hash": "39205b023a59f6c7315ad077f01c40e56a49df6ad0e6067db471cfa2417c53be", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["4a073d40e30357b4c371bd69b930df3a3c855c90d295063f5c08abd5"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["17a8da92477a4f0db016a3c3a1f197c89b46491df3d6ec65b8f041e9"]}]}]}]}, "4a073d40e30357b4c371bd69b930df3a3c855c90d295063f5c08abd5", 1648474085766, {"constr": 0, "fields": [{"constr": 0, "fields": ["126b8676446c84a5cd6e3259223b16a2314c5676b88ae1c1f8579a8f", "744d454c44"]}, {"constr": 0, "fields": ["698a6ea0ca99f315034072af31eaac6ec11fe8558d3f48e9775aab9d", "7444524950"]}]}]}, {"constr": 1, "fields": [64768]}]}}, {"hash": "039209c93c3154ee36db332cb8f63b580ac89932a5f202d228771cfdce9b8bc2", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["bc2fc3742624bf8d42e89f6d6a22d100bbb2bf3f085470317d064b26"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0fe8b2e9808005475772d838fb4e94db1f1175072071c83c14b9d5a5"]}]}]}]}, "bc2fc3742624bf8d42e89f6d6a22d100bbb2bf3f085470317d064b26", 1650975572502, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 1, "fields": [2649451]}]}}, {"hash": "39222c8b09ab9fdb2efed6b91d95c6d876704fc9460d470ec4bc453b68058a93", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d773c20d95f932dc4fb7c82b70b46851c5d5a11bc88c46405544d32a"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["175c9cf502f90b4be47f6c0f535454470cd843d70fa5326c26bf55da"]}]}]}]}, "d773c20d95f932dc4fb7c82b70b46851c5d5a11bc88c46405544d32a", 1649119677941, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f54"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 954]}]}}, {"hash": "39239b094261e2a1c1122cd76e14a18ce32d121d960ec77200a006d833bde714", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1648691321000, 14254998, 77709]}]}}, {"hash": "39260ef27172938387c11af73beddd256b2e01ce7d90978ce91ee67b14dbae67", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}]}, 1648722247000, 37358841, 36487862]}]}}, {"hash": "39310bce18c2a0ceb59c8a914806534eca5f1e06bc0a1f8c38ad2a719dae320b", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}]}, 1648835413000, 39589875, 36517722]}]}}, {"hash": "39313de189c64d6a306f29ee43ba9db1df1f5d3f8f2cc48a2c1d3ee36c8a0675", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1649244938000, 49341106, 160810]}]}}, {"hash": "39349d9efad03408fd938f998eafcd780d5cca44671d5a77cdf61bf19d8c67d4", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["3198957792e501b21eb26b75c99eb3f360de0dcc4ec01b70ef81379f", "484f534b59745f414441745f6c70"]}, 2000000, "881d0b7a385ef4d20350489195f26e6144c6cd6466fc40b48e38569f", {"constr": 0, "fields": ["f80515ea38a044f796c3fabe5bc4d2f4276f6c06f36b032857d8cd32"]}, 1379280]}}, {"hash": "39352d0c38a0e22da3fb22e353b9e3a4c7c029b7583a3c570fc9281e1aa79464", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["7b8064fd755d09d5f38eb3bd4a61fd21e292dc1c56b80effc04e3460", "56594649745f414441745f6c70"]}, 2000000, "ecb85b2154afecb6bc3d8f9ea1dbe1e0d9aa3af0c803f62b2258be5d", {"constr": 0, "fields": ["27c27efe74eeedcde5d563c6f7555c286e61bc6da38634093d522a8d"]}, 1379280]}}, {"hash": "39359b0ae4c3a0fac0b7624c9610d0ff677e290ec893ee6820c84185aa0438e7", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["acf626842df1d4a3141078234db57bda6b1ab157da34c8bba8a3f332"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["2547433ae87ea2b33b6e1aa8cbb180b001418854e0b0125db65fee6a"]}]}]}]}, "acf626842df1d4a3141078234db57bda6b1ab157da34c8bba8a3f332", 1648472680821, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 222280]}]}}, {"hash": "39383e252de4b6c49737c6543873fc8d6b29b0cf24ce7238d2f266da52269c45", "plutusData": {"constr": 0, "fields": ["37ec2a7a1768742b0aa73db838a9d19822d4df5ca4f31420d240a5ff1683f331f05599ada44bf0ef0cc0e0282819094912110494153ae65aaa1d24896813fa0d", {"constr": 0, "fields": [{"constr": 0, "fields": [4197583362001563, 2147483648]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 1, "fields": [1653416443001]}, {"constr": 1, "fields": []}]}, {"constr": 0, "fields": [{"constr": 1, "fields": [1653418243001]}, {"constr": 1, "fields": []}]}]}, "555344"]}, {"constr": 0, "fields": ["85915ed66d676887fd4f3f4b628b07acf8f8858588b7f4169f5fd6c3", "446a65644f7261636c654e4654"]}]}}, {"hash": "39435c53258cff70d2d17f09cf4ae406b54fb63536abcf01031265038b04476b", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["60a6ead7417e6963768aea0a8a10a93ceb31c7e136635c1af5141333"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ff671802b18456e45200910ac2ee01224b59f30cbc9dcb76371d8e51"]}]}]}]}, "60a6ead7417e6963768aea0a8a10a93ceb31c7e136635c1af5141333", 1648660814417, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 1, "fields": [20176562]}]}}, {"hash": "39475fb50ae3d8434650d5798af23a090e3666e520e2c96558f046872f8b7515", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4d454c4474"]}, {"constr": 0, "fields": ["845c337c265b63558b775bbc346585e54914719698429131b3bb838d", "4d454c44745f414441745f6e6674"]}, 995, 22652365473264545, 1000000000000000, "6028004d40dae6ed25466f5850a4bfadc2049059fd6cf0c36d4590f5", {"constr": 0, "fields": ["e480b95819604d33f32b946263f3088de3facb60c9586bed754b8fc0"]}, 1000000, 88291]}}, {"hash": "39489c55efaf7c2b0840df5c22848ba41ce32b89d3f8342fcc5c3e286837f8cb", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "484f534b5974"]}, {"constr": 0, "fields": ["93a4e3ab42b052cbe48bee3a6507d3ec06b9555994c1e6815f296108", "484f534b59745f414441745f6e6674"]}, 995, 11065204038489648, 100000000000000000, "bdfccd1c4152b5ad2defddfe476c8a80863ce375294125cb454ce8fe", {"constr": 0, "fields": ["9940b54d1fdc47c5e9675632387592edbb63e59938e119fea1fef649"]}, 8000000, 18074678]}}, {"hash": "39496fd980182f4a70e708dcf5c5a752d4159c7ddf63361d0d575ea3829cbe36", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["92a6f28aab44a1f3a80cf573e7e28f76ba7b82d984c315bdbaa399da"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["8d0a6148f469b12ea4bca6ef1deffbbdbc234d63f58a2b1cdd5eb50c"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["92a6f28aab44a1f3a80cf573e7e28f76ba7b82d984c315bdbaa399da"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["8d0a6148f469b12ea4bca6ef1deffbbdbc234d63f58a2b1cdd5eb50c"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 0, "fields": [{"constr": 0, "fields": ["29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6", "4d494e"]}, 1081902]}, 2000000, 2000000]}}, {"hash": "39508c46458ef779b4d6b57021c9a2516c370aeee4ffd21a85b31a510d25a95b", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["cf44eb0b01517f8a0ecfc527bbfc6fee924e7b4ac649d222fbcb28e6"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b41ac827179a90b83a7e5fcd7295b69e2754155f904158be5fc1583d"]}]}]}]}, "cf44eb0b01517f8a0ecfc527bbfc6fee924e7b4ac649d222fbcb28e6", 1649339684483, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 168434139]}]}}, {"hash": "39534ef74f47c536658d8f1e431205e34df3369df705bc2e0e2a49ac51edd5d3", "plutusData": {"constr": 0, "fields": ["2a", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["afe80b1985260f50ffc01b3ed373bd12c0fe87ddc1be13292c8d21a0"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b58cc2a264d2a2fc0248a7ab03f39eba2155b90c474c56895b0a4aaa"]}]}]}]}, {"constr": 1, "fields": []}]}, {"constr": 1, "fields": []}]}, 2500000, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 1000000, {"constr": 0, "fields": [1159379423]}]}]}}, {"hash": "39559a8b92ad1f7c842a931f29d9fe4b354518826c27d422f805b46d9441c8ce", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["d311d3488cc4fef19d05634adce8534977a3bc6fc18136ad65df1d4f", "6c712020"]}]}, 1649955735000, 2203398, 0]}]}}, {"hash": "39601ad29cdb0c4d0d68a5e00efe4c9934a9c642dc713a6495227d8996f4476d", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["accb766cbbcd7e2d08f3a42c16450c26307495f7ac5d510af974afc7"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["18d838939e2d3e99d72a14c656c3a6de1ff88e9bccaa5abd9e97b664"]}]}]}]}, "accb766cbbcd7e2d08f3a42c16450c26307495f7ac5d510af974afc7", 1648479748857, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 2, "fields": [23362253, 217646]}]}}, {"hash": "39622ab6cfe44be8e10c89da92c7a301eddcef53b2b215e8bf0ac92581f9bde2", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "634e45544174"]}, {"constr": 0, "fields": ["b5c43e67f38c095c105797a5126d4195d1911a3abd6a2b54adea2420", "634e455441745f414441745f6e6674"]}, 995, 375969018883573, 1000000000000000000, "9bfe475e8b00f4556dbf83149a765bf5b3abf177cea5158ecfc6b7a0", {"constr": 0, "fields": ["399f00928032b33f6f5e1011a72026a9f52a73b7bdf7f1fdea7385d4"]}, 100000000, 5319587252]}}, {"hash": "39647df432d0eaf8fe8fea6b19c0c011df310a06c7cca4ad2b9615026a86607f", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["f45c680805e43a828ac38e7bbf8210f1a07ac2a0f425754f5161db71"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["4f6c421a24badbefa310a3263cb98fcc470b1ba48ceecc239dca348d"]}]}]}]}, "f45c680805e43a828ac38e7bbf8210f1a07ac2a0f425754f5161db71", 1649008036682, {"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f54"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 9]}]}}, {"hash": "39673e905b0b03c8d4212e8c67fe47619a208bd8efd165944a6df7feabd2349d", "plutusData": {"constr": 0, "fields": ["04", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["9e8db24305319e35f026c09d8b1f22c9f105a7d69b4916b5863a2d64"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["9c266ace8b7984ece8f892197a8367ca2d45944187bbdc5e4474d3c4"]}]}]}]}, {"constr": 1, "fields": []}]}, {"constr": 1, "fields": []}]}, 2500000, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 4961129938, {"constr": 0, "fields": [521367389]}]}]}}, {"hash": "39715aa253624fe30939d748923664b3751a45e13dff9a8042df3906a718333a", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["792f2b655e0135b2df8fa55e67b3aca2394cbdc45b5663ceab45699dac8dbec8"]}, 0]}, 1652970434000]}, 1652971930000]}}, {"hash": "39760fa7bd1a824d8ac41b96cac0b198209dd1b1337c1fb74374899ae7facdd1", "plutusData": {"constr": 0, "fields": ["4623dd357388664bb5fe2dd06797add69cfa818416ee18cb49a019c9"]}}, {"hash": "39781e63f3a66b47cc28c3e37695130192b2a62e5ae772a198074aaa3ed8d97e", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}, 1648661158000, 75352472, 1501503]}]}}, {"hash": "39819fb9656bedad5397a9ba4d9ceac011318579df72a479f34782c9d2f730eb", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["1c0be6d80ea25e73437bbdf7d59c0b128b6327af196f2aed5fb9c267"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["8535bbff748252cedd511deb799643e7e9b89dae4adf16f00f24b9c2"]}]}]}]}, "1c0be6d80ea25e73437bbdf7d59c0b128b6327af196f2aed5fb9c267", 1648983990669, {"constr": 0, "fields": [{"constr": 0, "fields": ["57fca08abbaddee36da742a839f7d83a7e1d2419f1507fcbf3916522", "524245525259"]}, {"constr": 0, "fields": ["698a6ea0ca99f315034072af31eaac6ec11fe8558d3f48e9775aab9d", "7444524950"]}]}]}, {"constr": 1, "fields": [1178992]}]}}, {"hash": "39861f045da7002387abb9134875a35b655be61aa42391422f0a820da96fb8c0", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["b55c0f78c5ed571cc579b56bfe0f09008f8c8457316b840621aa386f"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["32415e18874c7de2fbaa1491c640f99b843c05135b3d8a0fc3fa1787"]}]}]}]}, "b55c0f78c5ed571cc579b56bfe0f09008f8c8457316b840621aa386f", 1648447199995, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 16130]}]}}, {"hash": "39903d9205e6f9289d1ed8772e3944a8b0df53789ba65aed7e76c4f367b3753e", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["9777be54253f230505610e8e77078063f07f2a978528a7dafaa7afef"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0e77f666e32cdf42ab6192198db022b19c5be30d3505c14c0b4dd743"]}]}]}]}, "9777be54253f230505610e8e77078063f07f2a978528a7dafaa7afef", 1648876620106, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 125800]}]}}, {"hash": "39948c7692c9ae3e8eed1f88c522f9774a5d6197f9db7ed233b667716b748081", "plutusData": {"constr": 0, "fields": ["9dcaece8074fe005a9aa2b116a4ee97b39e70c44d91e012d06c39a9f"]}}, {"hash": "39990ca4e765b0c3fc8a88b8c1fba34eb233d98f57419978a7ad29ea9f0548b1", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}, 1648647732000, 891, 108309]}]}}, {"hash": "040029c94237207ec093c02104e92a498beea084b5cf3545a96aae8641d8d333", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["acba29af0679cf61389bbeadab0d3f5cc3a92d4ee0994713be161bfbaeba94b9"]}, 0]}, 1653137084000]}, 1653146240000]}}, {"hash": "40062e2fd52ca41703a744a5899b03c618248d8a2ab200fb1298b6856c4671d1", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}]}, 1649108368000, 65571219, 11699]}]}}, {"hash": "40104de887b884151fef59fd1e4765f68207799c15d2521a072c819801b0c311", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4d454c4474"]}, {"constr": 0, "fields": ["845c337c265b63558b775bbc346585e54914719698429131b3bb838d", "4d454c44745f414441745f6e6674"]}, 995, 21264199395078183, 1000000000000000000, "f62ccc5df2270b4450e55e39bb60cc0b19ef6498ac280ce854a3daa4", {"constr": 0, "fields": ["4c06673ad29cbd475cfaaf68ee4c3bf081913eeeab9393ee012bed4c"]}, 1000000, 94054799]}}, {"hash": "40106b657af51b9c221a85dd109d3e406fe079c6b2f223a878a69d4f6876ff4c", "plutusData": {"constr": 0, "fields": [{"constr": 4, "fields": [{"constr": 0, "fields": [93159193, 50]}, 100]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["56104fb7637481e83a5fe891a6ba6ef4fed1dc5ec6e2295dea833b29180bf216"]}, 0]}]}}, {"hash": "40108db84edd2995245e55edefd3efb44e414392c327a901f6d82d36a87eca21", "plutusData": {"constr": 0, "fields": ["f80d5a4ebd847752eaeae3f26e71b86e58a53b0fb1fd80ae81464f9b", 120000000, 250, 336, "33a0714ca7f8d0bd53b26fc34e02c9d122fa4a891c8796981bd2c55e", "74636f6c6f757269736564776f6d616e616e64746865776f6f6473", {"constr": 1, "fields": []}, {"constr": 1, "fields": []}]}}, {"hash": "40133d27e30425d7e5f6b0b1c786366ec7c58395b6ae1a92e20ecbc7952a71f8", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["0180aa660a797bb1deb436bb0e0e48f3198502f5c223c06a17151971a3fe9486"]}, 0]}, 1653870772000]}, 1653872298000]}}, {"hash": "40186b098bdf01b2795e41d896348c946ca8232ae9e8c45acbf69439281a8985", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["47451dc19fd80f453163ebae0d471ac894bd1c5955003a0a4d2959bf"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["527b22b32d1138b9b25bc6daf3f5ea7fe44a4198a17886fa67191118"]}]}]}]}, "47451dc19fd80f453163ebae0d471ac894bd1c5955003a0a4d2959bf", 1650219776639, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}]}]}, {"constr": 2, "fields": [25499978, 4474]}]}}, {"hash": "40221b1d906d6629478dce25f53e8da0eff639377e12d1fd131be4ada04e43f9", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, 995, 4831730632176871, 100000000000000000, "06d92a7d2b42b36c6d314f82cb979ad6c9cbfb9cb158d19cbdf823c5", {"constr": 0, "fields": ["92d7b290078b1217ea5d4d2df081b31c679998e2c139e9059409e769"]}, 10000000, 41393036]}}, {"hash": "40245c9ac104d4eaddaac4d824c1c1ecff1fe62535d165d0dc2b74edcb92b1ec", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77455448"]}]}, 1648548476000, 3759, 59428]}]}}, {"hash": "040252af8a85a15f429a3e66c513b83bcb4c18e4c09af2c1451108817453532d", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ea94ba3835651c902a86829d4413b75a3c2d75a6e2bc41a3f186adaf850e4996"]}, 0]}, 1654022718000]}, 1654024202000]}}, {"hash": "40258b180cb928eeebfe31cc503e62d1f3f431c42cf24e7f4f65ed5e3f2e5406", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["dfe50f52db9ba91f27861034c2d19883f499fb0c81c8c76f7bbb17c2"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["873aa58069c87ff468194a597178ad331a04be2d475216265755dea7"]}]}]}]}, "dfe50f52db9ba91f27861034c2d19883f499fb0c81c8c76f7bbb17c2", 1652364343395, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["f4cf384ddd1b1377b08302b17990e9618b62924f5705458c17ee4f7d", "446a6564555344"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 522]}]}}, {"hash": "40272ad1e4fd384205371ae7d9dcfb8352b22901ca5ddad1a6abc1f2a4e60570", "plutusData": {"constr": 0, "fields": ["081b23f2b3afa39a8750b282848ed9c2bcaf6a63067c517ef048420b", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "775348494241"]}]}, 1649113496000, 34810287, 799567]}]}}, {"hash": "040290e61c96dca7226fc01eba5e0bb5fb52e968de1cc020fe46bad3376788f0", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["91c7d9cbf84f8b3e62a26f9a8c0679b27bc3ccd5710a62ffc60093b2"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["9a0a3af9ba075e02507c917789f2166eed98a3711a1074a9ddfe8fd0"]}]}]}]}, "91c7d9cbf84f8b3e62a26f9a8c0679b27bc3ccd5710a62ffc60093b2", 1649348982387, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["22c3b86a5b88a78b5de52f4aed2831d1483b3b7681f1ee2569538130", "016dee4ce565a31af501894406ec61d78a87f0c53de1e7cc6d52d156b3f5b155"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 407505]}]}}, {"hash": "40301a4c67e51ea8a8f3ac951c758dfe13d1e5015beb6cc15a394715faeb00a4", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e5eadeb4ce34be98e12dd8f5dcb45319a83373c241c13263e8955b76"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["6c8a64bc245e7246ca9576dd99c75499c956d14cf9a9507f60ac041d"]}]}]}]}, "e5eadeb4ce34be98e12dd8f5dcb45319a83373c241c13263e8955b76", 1648568080591, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77425443"]}]}]}, {"constr": 1, "fields": [51447]}]}}, {"hash": "40330e3ac6a55f629a11d737adb754cd10d7ea9de8d13705f2ceae6d9e777e7b", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "5659464974"]}, {"constr": 0, "fields": ["6304d06da03652264996015f08e6d2770ed9a0e57a105ea2c918f05c", "56594649745f414441745f6e6674"]}, 995, 4984103575453858, 100000000000000000, "33961260aa730bb867a75edce09ab09c794c7ec211823bb512b4929c", {"constr": 0, "fields": ["fcefdd941582154cf1f2e172da139058f891937f4c703e0eb160f53b"]}, 15100000, 40127577]}}, {"hash": "40332f3a132fe3b0cac7a26a4b2aaa05febbdf42ea87e221059f5705736bb596", "plutusData": {"constr": 0, "fields": [{"constr": 4, "fields": [{"constr": 0, "fields": [1701832, 1]}, -13]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["2b704c52e66152af134a079efdb28cb0904ae1f1ea01a6e4a51bda1236690cbb"]}, 0]}]}}, {"hash": "40358f41494ffd6b5bae19e548ce85e9261fc95e7d2e1195a5e128150600a816", "plutusData": {"constr": 0, "fields": ["d910276b0ff7add381305a6cdad07339a7329e7bbb69e120e4ae874c", "b5d994d071f0c749cdc2230853f2ca309269c3133ea001ad8afffbd8", "", "", 20000000, "6141414441", "777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8", 20000000, "", 86400000]}}, {"hash": "40374b3f1ffa9715799f8822d6747e58e60152ca7268f98a940b0fd26c4e4fc5", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, 995, 10257557524767258, 100000000000000000, "b82d5e5080d1c833f5bb2e140cd89d33d0720d8a078dd93ba53df338", {"constr": 0, "fields": ["c1d16ab262637f0eebf1374a87f71cb58167c7e6fed9f56900d1a94e"]}, 10000000, 19497819]}}, {"hash": "40381c1c965580c4f0c089894251bef5c418de9824bb9947e12b9b2155a81edf", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["956bd0172d39de36e2823834908de41f981036fa9d4a1f466025d6adccaebd7f"]}, 0]}, 1652773342000]}, 1652775168000]}}, {"hash": "40393fbe0385c4064a613c0fac63f1e3c170b8a997caedc8be8dd1932237a79a", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["1daea90a93ad019a97099360761134400353a2755c2089511548d842"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["51e4c5af15ce54386ae866037b30d74985ac26f5a70ab7db7177ca98"]}]}]}]}, "1daea90a93ad019a97099360761134400353a2755c2089511548d842", 1648990931524, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 23142]}]}}, {"hash": "40424acfe838157bc179181cc1d9edcbce434391ba725f92541601d39d9f1adb", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["66f46ae3ac17d7d49035d80a0ec8b15fdd1027cdcb0ea0d38de1428f"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["d802a96831462bff93e513d7b00397a8f825a368e584f1da30f0f189"]}]}]}]}, "66f46ae3ac17d7d49035d80a0ec8b15fdd1027cdcb0ea0d38de1428f", 1649793586286, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77424e42"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 1081652]}]}}, {"hash": "40434feb24fe47340361b85648a5c4a3188b3bf64f02ff3a0583d763bfdbdb3b", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["1c59eb82e0a47ee834354da671c1b671b8e286c7d2ecce017aad1065"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["a69352507f677c86b11abc16f62674c48a611f229f65a93b53ad9c49"]}]}]}]}, "1c59eb82e0a47ee834354da671c1b671b8e286c7d2ecce017aad1065", 1648744276562, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "77444f4745"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 1710627]}]}}, {"hash": "40449b8d520e101d4feed4be26c94d01d1f60bfda403ae29c48bc6de4115591c", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e19d46dce7ace19be91670ef261302a9f2cf64f1feabcf7b5fb8bead"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["ca4d93c2a57abd5656afe8ba2ff338b6a3bb4aeecdbb3c4e7297b990"]}]}]}]}, "e19d46dce7ace19be91670ef261302a9f2cf64f1feabcf7b5fb8bead", 1652918373172, {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["648823ffdad1610b4162f4dbc87bd47f6f9cf45d772ddef661eff198", "7755534443"]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 3384]}]}}, {"hash": "40470e55030b817400f5394e208558980418f7a4025c857e39b954f49fa64e4a", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["3f67501d478fbfd9267f653104c2cacd98d61647bb0d6ec36eec3b8d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["45f4722e94c68dd9984aaaa59aa8662f3a60301f6d37f380becee18d"]}]}]}]}, {"constr": 0, "fields": [{"constr": 0, "fields": ["3f67501d478fbfd9267f653104c2cacd98d61647bb0d6ec36eec3b8d"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["45f4722e94c68dd9984aaaa59aa8662f3a60301f6d37f380becee18d"]}]}]}]}, {"constr": 1, "fields": []}, {"constr": 4, "fields": [{"constr": 0, "fields": ["126b8676446c84a5cd6e3259223b16a2314c5676b88ae1c1f8579a8f", "744d494e"]}, 2979473562]}, 2000000, 2000000]}}, {"hash": "40498b50709f574bcb59f0e3f8b06c899f60de723c3fc62ce7018f2e2cfc244d", "plutusData": {"constr": 0, "fields": ["04", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["e62aee5e1d5e4a82713266a99d073aaf2556ec28af307de55804ceb7"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["4fec8a55ac64b9dffbc2d327e82b2e9c5ee822867589a3e468310d1e"]}]}]}]}, {"constr": 1, "fields": []}]}, {"constr": 1, "fields": []}]}, 2500000, {"constr": 0, "fields": [{"constr": 1, "fields": []}, 8700000000, {"constr": 0, "fields": [914198385]}]}]}}, {"hash": "40555f2cef86530452dd8a4ea90221ee4e166498e499f1f07749f6425747c724", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "4141444174"]}, {"constr": 0, "fields": ["294870e187e8f269be1a306b8fab8a3e466aecea690230df373a78a5", "41414441745f414441745f6e6674"]}, 995, 3544064325490497, 1000000000000000000, "0c2627d58cc5631c99de84cc74757a665cb0b1566ea1b4825d72310a", {"constr": 0, "fields": ["77ee21f687f01bf498b3c2f675ac95c565301942e6f8955e988aa323"]}, 200000000, 564323843]}}, {"hash": "40586f6cfdbaf45117e9a4dbba50645c2c9cee3a9ca118e1d0ecd2a7c1f69e69", "plutusData": {"constr": 0, "fields": ["c904245d97d364a1eba301e761c0158fa73b7a788a8f3f8280e6c5af", 100000000, 150, 1, "903ab89893df883208d5f7dbc4e679261c1f87473836e02ff37c7330", "6275726e61726f6172", {"constr": 1, "fields": []}, {"constr": 1, "fields": []}]}}, {"hash": "40588a10f62898e70b2e26eeca01b94cc365c26f8b4b2a98febe7e04f726eedc", "plutusData": {"constr": 0, "fields": [{"constr": 0, "fields": ["b8aa6f60b48ad4cb0f623edc96eb4dffb652b3a2384287b22c8814ac", "47454e5374"]}, {"constr": 0, "fields": ["", ""]}, {"constr": 0, "fields": ["79d370f5c37dcc223c6b7bbb5da1c9839fa0413dff44ba35a6cfa9b9", "47454e53745f414441745f6e6674"]}, 995, 29528317752691866, 1000000000000000000, "dd0607c0885b1388071b36909276da24c4c2f10888a2b265f8b73ad7", {"constr": 0, "fields": ["dec23b5213eb6a8e3ac768409dca813ecebdbc00cf7f3bf0e213ca76"]}, 100000000, 67731593]}}, {"hash": "40653ac5fd0dfda1534eb118d542d577f0f8b9068a6ad2c0be986f8d794499f8", "plutusData": {"constr": 0, "fields": ["2a", {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["aa396f2327fb5bb37756630ad3c002a3e175f67bfc04a983ab7fac80"]}, {"constr": 0, "fields": [{"constr": 0, "fields": [{"constr": 0, "fields": ["dcd0f2a31f31addb13fe83aa97f5d428326a4e434572841a12259826"]}]}]}]}, {"constr": 1, "fields": []}]}, {"constr": 1, "fields": []}]}, 2500000, {"constr": 0, "fields": [{"constr": 0, "fields": []}, 20000000, {"constr": 0, "fields": [1907]}]}]}}] \ No newline at end of file diff --git a/spago.dhall b/spago.dhall index 329eb8739..338581387 100644 --- a/spago.dhall +++ b/spago.dhall @@ -40,6 +40,7 @@ You can edit this file as you like. , "node-buffer" , "node-fs" , "node-fs-aff" + , "node-path" , "nonempty" , "ordered-collections" , "partial" diff --git a/src/Types/PlutusData.purs b/src/Types/PlutusData.purs index 48ee834e5..6847c5bd9 100644 --- a/src/Types/PlutusData.purs +++ b/src/Types/PlutusData.purs @@ -40,6 +40,7 @@ derive instance Generic PlutusData _ instance Show PlutusData where show x = genericShow x +-- Ogmios Datum Cache Json format instance DecodeAeson PlutusData where decodeAeson aeson = decodeConstr <|> decodeMap diff --git a/test/OgmiosDatumCache.purs b/test/OgmiosDatumCache.purs new file mode 100644 index 000000000..ed5e12d6c --- /dev/null +++ b/test/OgmiosDatumCache.purs @@ -0,0 +1,60 @@ +module Test.OgmiosDatumCache + ( plutusDataToFromAesonTest + , suite + ) where + +import Prelude + +import Aeson (caseAesonArray, decodeAeson, encodeAeson) +import Contract.Address (ByteArray) +import Contract.PlutusData (Datum(..)) +import Contract.Prelude (log) +import Control.Monad.Error.Class (class MonadThrow) +import Data.Either (Either(Right, Left)) +import Data.Newtype (unwrap) +import Data.Traversable (for_) +import Effect.Class (class MonadEffect) +import Effect.Exception (Error) +import Hashing (datumHash) +import Mote (group, test) +import Test.Spec.Assertions (shouldEqual) +import Test.Utils (errEither, errMaybe, readAeson) +import TestM (TestPlanM) +import Types.PlutusData (PlutusData) + +suite :: TestPlanM Unit +suite = group "Ogmios Datum Cache tests" $ do + test "Plutus data samples should satisfy the Aeson roundtrip test" + plutusDataToFromAesonTest + test "Plutus data samples should have a compatible hash" plutusDataHashingTest + +readPlutusDataSamples + :: forall (m :: Type -> Type) + . MonadEffect m + => m (Array { hash :: ByteArray, plutusData :: PlutusData }) +readPlutusDataSamples = do + aes <- readAeson "./fixtures/test/ogmios-datum-cache/plutus-data-samples.json" + errEither <<< decodeAeson $ aes + +plutusDataToFromAesonTest + ∷ ∀ (m ∷ Type -> Type). MonadEffect m => MonadThrow Error m ⇒ m Unit +plutusDataToFromAesonTest = do + pdsAes <- readAeson + "./fixtures/test/ogmios-datum-cache/plutus-data-samples.json" + aess <- errEither <<< caseAesonArray (Left "Expected a Json array") Right $ + pdsAes + for_ aess \aes -> do + (sample :: { hash :: ByteArray, plutusData :: PlutusData }) <- errEither $ + decodeAeson aes + let aes' = encodeAeson sample + aes `shouldEqual` aes' + +plutusDataHashingTest + ∷ ∀ (m ∷ Type -> Type). MonadEffect m => MonadThrow Error m ⇒ m Unit +plutusDataHashingTest = do + plutusDataSamples <- readPlutusDataSamples + let elems = plutusDataSamples + for_ elems \{ hash, plutusData } -> do + hash' <- errMaybe "Couldn't hash the datum" <<< datumHash $ Datum plutusData + log $ show plutusData + hash `shouldEqual` unwrap hash' diff --git a/test/Unit.purs b/test/Unit.purs index db94f1cd2..b521b6ab7 100644 --- a/test/Unit.purs +++ b/test/Unit.purs @@ -20,6 +20,7 @@ import Test.Serialization.Address as Serialization.Address import Test.Serialization.Hash as Serialization.Hash import Test.Transaction as Transaction import Test.UsedTxOuts as UsedTxOuts +import Test.OgmiosDatumCache as OgmiosDatumCache import Test.Utils as Utils import TestM (TestPlanM) @@ -46,3 +47,4 @@ testPlan = do Serialization.Hash.suite Transaction.suite UsedTxOuts.suite + OgmiosDatumCache.suite diff --git a/test/Utils.purs b/test/Utils.purs index 6b71de1de..1cc557835 100644 --- a/test/Utils.purs +++ b/test/Utils.purs @@ -7,17 +7,11 @@ module Test.Utils , interpret , toFromAesonTest , unsafeCall + , readAeson ) where import Prelude -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError - , decodeAeson - , encodeAeson - ) import Data.Const (Const) import Data.Either (Either(Left, Right)) import Data.Foldable (sequence_) @@ -27,12 +21,24 @@ import Effect.Aff.Class (liftAff) import Effect.Class (class MonadEffect, liftEffect) import Effect.Exception (throwException, throw) import Mote (Plan, foldPlan, planT, test) +import Node.Path (FilePath) import Test.Spec (Spec, describe, it) import Test.Spec.Assertions (shouldEqual) import Test.Spec.Reporter (consoleReporter) import Test.Spec.Runner (runSpec) import TestM (TestPlanM) import Type.Proxy (Proxy) +import Aeson + ( class DecodeAeson + , class EncodeAeson + , Aeson + , JsonDecodeError + , decodeAeson + , encodeAeson + , parseJsonStringToAeson + ) +import Node.Encoding (Encoding(UTF8)) +import Node.FS.Sync (readTextFile) foreign import unsafeCall :: forall a b. Proxy b -> String -> a -> b @@ -73,10 +79,11 @@ assertTrue_ = assertTrue "Boolean test failed" errEither :: forall (m :: Type -> Type) (a :: Type) (e :: Type) . MonadEffect m - => Either String a + => Show e + => Either e a -> m a errEither = case _ of - Left msg -> liftEffect $ throw msg + Left msg -> liftEffect <<< throw <<< show $ msg Right res -> pure res errMaybe @@ -112,3 +119,8 @@ aesonRoundTrip => a -> Either JsonDecodeError a aesonRoundTrip = decodeAeson <<< encodeAeson + +readAeson :: forall (m :: Type -> Type). MonadEffect m => FilePath -> m Aeson +readAeson fp = do + str <- liftEffect <<< readTextFile UTF8 $ fp + errEither <<< parseJsonStringToAeson $ str From 97f6ade654368b8c9d5f134bf99f0abc282549a5 Mon Sep 17 00:00:00 2001 From: Rory Tyler Hayford Date: Fri, 10 Jun 2022 14:25:32 +0700 Subject: [PATCH 79/85] Restore `server/*` and select modules --- server/README.md | 57 +++++++++++----------------------- server/ctl-server.cabal | 4 +-- server/src/Api.hs | 22 +++++-------- server/src/Api/Handlers.hs | 21 +++++++------ server/src/Ogmios/Query.hs | 4 +-- server/src/Types.hs | 46 ++++++++++++++++++++++------ server/test/Main.hs | 20 +++++++----- src/BalanceTx.purs | 59 +++++++++++++++++------------------ test/Integration.purs | 3 +- test/MultipleRedeemers.purs | 61 ------------------------------------- test/OgmiosDatumCache.purs | 22 ++++++------- test/Utils.purs | 59 ++++++++++++++++------------------- 12 files changed, 154 insertions(+), 224 deletions(-) delete mode 100644 test/MultipleRedeemers.purs diff --git a/server/README.md b/server/README.md index ed565e29b..d61ed412c 100644 --- a/server/README.md +++ b/server/README.md @@ -14,7 +14,7 @@ We plan on supporting at least the following features: Run `nix develop .#hsDevShell` (or equivalently `nix develop .#package.x86_64-{linux|darwin}`; NB: not currently tested on macOS) in the repository root (i.e. up one level from `server`). This will place you in a development shell with `cabal`, `hoogle`, `haskell-language-server`, etc... -The server executable can be built with `nix build .#cardano-trasaction-lib-server:exe:cardano-trasaction-lib-server` and run with `./result/bin/cardano-trasaction-lib-server`. `cabal` can also be used once in the development shell. The server will run on port 8081. You can optionally pass the `--port`/`-p` flag to explicitly choose a port to run on +The server executable can be built with `nix build .#ctl-server:exe:ctl-server` and run with `./result/bin/ctl-server`. `cabal` can also be used once in the development shell. The server will run on port 8081. You can optionally pass the `--port`/`-p` flag to explicitly choose a port to run on --- @@ -51,44 +51,21 @@ The server executable can be built with `nix build .#cardano-trasaction-lib-serv "4d01000033222220051200120011" ``` -## GET /eval-ex-units +## POST /eval-ex-units -### GET Parameters: - -- tx - - **Values**: *84a300818258205d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65ad9599960001818258390030fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea9711c12f03c1ef2e935acc35ec2e6f96c650fd3bfba3e96550504d5336100021a0002b569a0f5f6* - - **Description**: A CBOR-encoded `Tx AlonzoEra`; should be sent as a hexadecimal string - - -### Response: - -- Status code 200 -- Headers: [] +### Request: - Supported content types are: - `application/json;charset=utf-8` - `application/json` -- The `(RdmrPtr -> ExUnits)` map will be returned as a list of `RdmrPtrExUnits` objects with the following structure (`application/json;charset=utf-8`, `application/json`): +- The input should contain the CBOR of the tx (`application/json;charset=utf-8`, `application/json`): ```javascript -[{"exUnitsSteps":0,"rdmrPtrTag":0,"exUnitsMem":0,"rdmrPtrIdx":0}] +{"tx":"00"} ``` -## GET /fees - -### GET Parameters: - -- wit-count - - **Values**: *1* - - **Description**: A natural number representing the intended number of key witnessesfor the transaction - -- tx - - **Values**: *84a300818258205d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65ad9599960001818258390030fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea9711c12f03c1ef2e935acc35ec2e6f96c650fd3bfba3e96550504d5336100021a0002b569a0f5f6* - - **Description**: A CBOR-encoded `Tx AlonzoEra`; should be sent as a hexadecimal string - - ### Response: - Status code 200 @@ -99,13 +76,13 @@ The server executable can be built with `nix build .#cardano-trasaction-lib-serv - `application/json;charset=utf-8` - `application/json` -- The `Fee` will be returned encoded as a JSON string (`application/json;charset=utf-8`, `application/json`): +- The `(RdmrPtr -> ExUnits)` map will be returned as a list of `RdmrPtrExUnits` objects with the following structure (`application/json;charset=utf-8`, `application/json`): ```javascript -"160265" +[{"exUnitsSteps":0,"rdmrPtrTag":0,"exUnitsMem":0,"rdmrPtrIdx":0}] ``` -## POST /finalize +## POST /fees ### Request: @@ -114,10 +91,10 @@ The server executable can be built with `nix build .#cardano-trasaction-lib-serv - `application/json;charset=utf-8` - `application/json` -- The input should contain CBOR of tx, redeemers, individual Plutusdatums, and Plutus script hashes (`application/json;charset=utf-8`, `application/json`): +- The input should contain the intended number of witnesses and theCBOR of the tx (`application/json;charset=utf-8`, `application/json`): ```javascript -{"tx":"00","redeemers":"00","datums":["00"]} +{"tx":"00","count":1} ``` ### Response: @@ -130,13 +107,13 @@ The server executable can be built with `nix build .#cardano-trasaction-lib-serv - `application/json;charset=utf-8` - `application/json` -- The output is CBOR-encoded Tx (`application/json;charset=utf-8`, `application/json`): +- The `Fee` will be returned encoded as a JSON string (`application/json;charset=utf-8`, `application/json`): ```javascript -"84a300818258205d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65ad9599960001818258390030fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea9711c12f03c1ef2e935acc35ec2e6f96c650fd3bfba3e96550504d5336100021a0002b569a0f5f6" +"160265" ``` -## POST /plutus-hash +## POST /finalize ### Request: @@ -145,10 +122,10 @@ The server executable can be built with `nix build .#cardano-trasaction-lib-serv - `application/json;charset=utf-8` - `application/json` -- Request consisting of a HashMethod and the bytestring to be hashed (`application/json;charset=utf-8`, `application/json`): +- The input should contain CBOR of tx, redeemers, individual Plutusdatums, and Plutus script hashes (`application/json;charset=utf-8`, `application/json`): ```javascript -{"bytes":"666f6f","method":"blake2b_256"} +{"tx":"00","redeemers":"00","datums":["00"]} ``` ### Response: @@ -161,8 +138,8 @@ The server executable can be built with `nix build .#cardano-trasaction-lib-serv - `application/json;charset=utf-8` - `application/json` -- Hash bytes are returned as hexidecimal string (`application/json;charset=utf-8`, `application/json`): +- The output is CBOR-encoded Tx (`application/json;charset=utf-8`, `application/json`): ```javascript -{"hash":"b8fe9f7f6255a6fa08f668ab632a8d081ad87983c77cd274e48ce450f0b349fd","method":"blake2b_256"} +"84a300818258205d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65ad9599960001818258390030fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea9711c12f03c1ef2e935acc35ec2e6f96c650fd3bfba3e96550504d5336100021a0002b569a0f5f6" ``` diff --git a/server/ctl-server.cabal b/server/ctl-server.cabal index 34df3ccaf..9781e0e2b 100644 --- a/server/ctl-server.cabal +++ b/server/ctl-server.cabal @@ -1,6 +1,6 @@ cabal-version: 2.4 name: ctl-server -version: 0.1.0.0 +version: 1.0.0 author: mlabs build-type: Simple @@ -15,7 +15,6 @@ common common-language DeriveLift DeriveTraversable DerivingStrategies - DerivingVia DuplicateRecordFields ExplicitForAll FlexibleContexts @@ -25,6 +24,7 @@ common common-language LambdaCase MonoLocalBinds MultiParamTypeClasses + NamedFieldPuns NumericUnderscores OverloadedStrings QuasiQuotes diff --git a/server/src/Api.hs b/server/src/Api.hs index 8cb133117..19b7cd14c 100644 --- a/server/src/Api.hs +++ b/server/src/Api.hs @@ -19,14 +19,11 @@ import Data.Proxy (Proxy (Proxy)) import Network.Wai.Middleware.Cors qualified as Cors import Servant ( Application, - Get, Handler, HasServer (ServerT), JSON, Post, - QueryParam', ReqBody, - Required, Server, ServerError (errBody), err400, @@ -47,33 +44,30 @@ import Types ( ScriptExecutionError, TxValidityIntervalError ), - Cbor, CborDecodeError (InvalidCbor, InvalidHex, OtherDecodeError), CtlServerError (CardanoError, CborDecode), Env, + EvalExUnitsRequest, ExecutionUnitsMap, Fee, + FeesRequest, FinalizeRequest, FinalizedTransaction, - WitnessCount, ) import Utils (lbshow) type Api = "fees" - :> QueryParam' '[Required] "count" WitnessCount - :> QueryParam' '[Required] "tx" Cbor - :> Get '[JSON] Fee + :> ReqBody '[JSON] FeesRequest + :> Post '[JSON] Fee -- Since @Script@ and @Data@ have @From/ToJSON@ instances, we can just -- accept them in the body of a POST request :<|> "apply-args" :> ReqBody '[JSON] ApplyArgsRequest :> Post '[JSON] AppliedScript - -- Making this a POST request so we can just use the @From/ToJSON@ - -- instances instead of decoding in the handler :<|> "eval-ex-units" - :> QueryParam' '[Required] "tx" Cbor - :> Get '[JSON] ExecutionUnitsMap + :> ReqBody '[JSON] EvalExUnitsRequest + :> Post '[JSON] ExecutionUnitsMap :<|> "finalize" :> ReqBody '[JSON] FinalizeRequest :> Post '[JSON] FinalizedTransaction @@ -135,9 +129,9 @@ server = apiDocs :: Docs.API apiDocs = Docs.docs api -estimateTxFees :: WitnessCount -> Cbor -> ClientM Fee +estimateTxFees :: FeesRequest -> ClientM Fee applyArgs :: ApplyArgsRequest -> ClientM AppliedScript -evalTxExecutionUnits :: Cbor -> ClientM ExecutionUnitsMap +evalTxExecutionUnits :: EvalExUnitsRequest -> ClientM ExecutionUnitsMap finalizeTx :: FinalizeRequest -> ClientM FinalizedTransaction estimateTxFees :<|> applyArgs diff --git a/server/src/Api/Handlers.hs b/server/src/Api/Handlers.hs index 854f25062..efdfb1d7b 100644 --- a/server/src/Api/Handlers.hs +++ b/server/src/Api/Handlers.hs @@ -1,5 +1,3 @@ -{-# LANGUAGE NamedFieldPuns #-} - module Api.Handlers ( estimateTxFees, applyArgs, @@ -53,8 +51,10 @@ import Types ( CborDecodeError (InvalidCbor, InvalidHex, OtherDecodeError), CtlServerError (CardanoError, CborDecode), Env (protocolParams), + EvalExUnitsRequest (EvalExUnitsRequest, tx), ExecutionUnitsMap (ExecutionUnitsMap), Fee (Fee), + FeesRequest (FeesRequest, count, tx), FinalizeRequest (FinalizeRequest, datums, redeemers, tx), FinalizedTransaction (FinalizedTransaction), RdmrPtrExUnits ( @@ -72,14 +72,15 @@ import Types ( -- Handlers -------------------------------------------------------------------------------- -estimateTxFees :: WitnessCount -> Cbor -> AppM Fee -estimateTxFees (WitnessCount numWits) cbor = do - decodeCborTx cbor & either (throwM . CborDecode) pure >>= \case +estimateTxFees :: FeesRequest -> AppM Fee +estimateTxFees FeesRequest {count, tx} = do + decodeCborTx tx & either (throwM . CborDecode) pure >>= \case C.Tx txBody' keyWits -> do pparams <- asks protocolParams -- calculate and set script integrity hash before estimating fees - let txBody = setScriptIntegrityHash pparams txBody' - fee = estimateFee pparams numWits (C.Tx txBody keyWits) + let WitnessCount witCount = count + txBody = setScriptIntegrityHash pparams txBody' + fee = estimateFee pparams witCount (C.Tx txBody keyWits) Fee <$> finalizeTxFee fee where -- `txfee` value must also be taken into account when calculating fees, @@ -115,9 +116,9 @@ applyArgs ApplyArgsRequest {script, args} = {- | Computes the execution units needed for each script in the transaction. https://input-output-hk.github.io/cardano-node/cardano-api/src/Cardano.Api.Fees.html#evaluateTransactionExecutionUnits -} -evalTxExecutionUnits :: Cbor -> AppM ExecutionUnitsMap -evalTxExecutionUnits cbor = - case decodeCborTx cbor of +evalTxExecutionUnits :: EvalExUnitsRequest -> AppM ExecutionUnitsMap +evalTxExecutionUnits EvalExUnitsRequest {tx} = + case decodeCborTx tx of Left err -> throwM (CborDecode err) Right (C.Tx txBody@(C.TxBody txBodyContent) _) -> do diff --git a/server/src/Ogmios/Query.hs b/server/src/Ogmios/Query.hs index 3ca7afd1d..ca6fa8679 100644 --- a/server/src/Ogmios/Query.hs +++ b/server/src/Ogmios/Query.hs @@ -87,6 +87,6 @@ tryQueryUntilZero query remainAttempts putStrLn $ "Error : " <> show e putStrLn "Waiting for ogmios conection attempt" putStrLn $ "Attempts remain : " <> show (remainAttempts -1) - Time.Extra.sleep 0.5 + Time.Extra.sleep 3 hFlush stdout - tryQueryUntilZero query (remainAttempts - 1) + tryQueryUntilZero query $ remainAttempts - 1 diff --git a/server/src/Types.hs b/server/src/Types.hs index f47305204..157f207ea 100644 --- a/server/src/Types.hs +++ b/server/src/Types.hs @@ -1,3 +1,6 @@ +{-# LANGUAGE DerivingVia #-} +{-# LANGUAGE DuplicateRecordFields #-} + module Types ( AppM (AppM), ServerOptions (..), @@ -7,8 +10,10 @@ module Types ( RdmrPtrExUnits (..), Fee (..), WitnessCount (..), + FeesRequest (..), ApplyArgsRequest (..), AppliedScript (..), + EvalExUnitsRequest (..), FinalizeRequest (..), FinalizedTransaction (..), CardanoError (..), @@ -26,7 +31,7 @@ import Control.Exception (Exception) import Control.Monad.Catch (MonadThrow) import Control.Monad.IO.Class (MonadIO) import Control.Monad.Reader (MonadReader, ReaderT, asks) -import Data.Aeson (FromJSON (parseJSON), ToJSON (toJSON)) +import Data.Aeson (FromJSON, ToJSON (toJSON)) import Data.Aeson qualified as Aeson import Data.Aeson.Encoding qualified as Aeson.Encoding import Data.Aeson.Types (withText) @@ -122,13 +127,20 @@ data RdmrPtrExUnits = RdmrPtrExUnits deriving stock (Show, Generic) deriving anyclass (FromJSON, ToJSON) +data FeesRequest = FeesRequest + { count :: WitnessCount + , tx :: Cbor + } + deriving stock (Show, Eq, Generic) + deriving anyclass (FromJSON, ToJSON) + newtype Fee = Fee Integer deriving stock (Show, Generic) deriving newtype (Eq) newtype WitnessCount = WitnessCount Word deriving stock (Show, Generic) - deriving newtype (Eq, FromHttpApiData, ToHttpApiData) + deriving newtype (Eq, FromJSON, ToJSON) instance ToJSON Fee where -- to avoid issues with integer parsing in PS, we should probably return @@ -155,6 +167,12 @@ newtype AppliedScript = AppliedScript Ledger.Script deriving stock (Show, Generic) deriving newtype (Eq, FromJSON, ToJSON) +newtype EvalExUnitsRequest = EvalExUnitsRequest + { tx :: Cbor + } + deriving stock (Show, Generic, Eq) + deriving anyclass (FromJSON, ToJSON) + data FinalizeRequest = FinalizeRequest { tx :: Cbor , datums :: [Cbor] @@ -211,14 +229,22 @@ instance Docs.ToParam (QueryParam' '[Required] "tx" Cbor) where , "3e96550504d5336100021a0002b569a0f5f6" ] -instance Docs.ToParam (QueryParam' '[Required] "count" WitnessCount) where - toParam _ = - Docs.DocQueryParam - "wit-count" - ["1"] - "A natural number representing the intended number of key witnesses\ - \for the transaction" - Docs.Normal +instance Docs.ToSample FeesRequest where + toSamples _ = + [ + ( "The input should contain the intended number of witnesses and the\ + \CBOR of the tx" + , FeesRequest (WitnessCount 1) (Cbor "00") + ) + ] + +instance Docs.ToSample EvalExUnitsRequest where + toSamples _ = + [ + ( "The input should contain the CBOR of the tx" + , EvalExUnitsRequest (Cbor "00") + ) + ] instance Docs.ToSample ExecutionUnitsMap where toSamples _ = diff --git a/server/test/Main.hs b/server/test/Main.hs index 9ec46bbab..9fa02eeaa 100644 --- a/server/test/Main.hs +++ b/server/test/Main.hs @@ -40,8 +40,9 @@ import Cardano.Api.Shelley ( ), ) import Data.Bifunctor (second) -import Data.ByteString.Lazy qualified as ByteString +import Data.ByteString.Lazy qualified as LBS import Data.ByteString.Lazy.Char8 qualified as LC8 +import Data.Functor ((<&>)) import Data.Kind (Type) import Data.Map.Strict qualified as Map.Strict import Network.HTTP.Client (defaultManagerSettings, newManager) @@ -79,6 +80,7 @@ import Types ( Cbor (Cbor), Env (Env), Fee (Fee), + FeesRequest (FeesRequest), ServerOptions ( ServerOptions, networkId, @@ -130,21 +132,23 @@ feeEstimateSpec = around withTestApp $ do context "GET fees" $ do it "estimates the correct fee" $ \port -> do result <- - runClientM' (clientEnv port) $ - estimateTxFees (WitnessCount 1) cborTxFixture + runClientM' (clientEnv port) . estimateTxFees $ + FeesRequest (WitnessCount 1) cborTxFixture result `shouldBe` Right (Fee 168625) it "catches invalid hex strings" $ \port -> do result <- runClientM' (clientEnv port) - . estimateTxFees (WitnessCount 1) + . estimateTxFees + . FeesRequest (WitnessCount 1) $ Cbor "deadbeefq" result `shouldSatisfy` expectError 400 "invalid bytestring size" it "catches invalid CBOR-encoded transactions" $ \port -> do result <- runClientM' (clientEnv port) - . estimateTxFees (WitnessCount 1) + . estimateTxFees + . FeesRequest (WitnessCount 1) $ Cbor "deadbeef" result `shouldSatisfy` expectError @@ -284,7 +288,7 @@ fixedProtocolParameters :: ProtocolParameters fixedProtocolParameters = ProtocolParameters { protocolParamProtocolVersion = (6, 0) - , protocolParamDecentralization = 0 / 1 + , protocolParamDecentralization = 0 , protocolParamExtraPraosEntropy = Nothing , protocolParamMaxBlockHeaderSize = 1100 , protocolParamMaxBlockBodySize = 98304 @@ -327,8 +331,8 @@ fixedProtocolParameters = loadParametersFile :: IO (Either String ProtocolParameters) loadParametersFile = - decodeProtocolParameters - <$> ByteString.readFile "test/ogmios.json" + LBS.readFile "test/ogmios.json" + <&> decodeProtocolParameters testParser :: Spec testParser = diff --git a/src/BalanceTx.purs b/src/BalanceTx.purs index 7f79b7ac0..4ab81c7ea 100644 --- a/src/BalanceTx.purs +++ b/src/BalanceTx.purs @@ -97,23 +97,14 @@ import QueryM , evalTxExecutionUnits ) import QueryM.Utxos (utxosAt) -import ReindexRedeemers - ( ReindexErrors - , reindexSpentScriptRedeemers' - ) -import Serialization.Address - ( Address - , addressPaymentCred - , withStakeCredential - ) +import Serialization.Address (Address, addressPaymentCred, withStakeCredential) +import TxOutput (utxoIndexToUtxo) +import ReindexRedeemers (ReindexErrors, reindexSpentScriptRedeemers') import Types.Natural (toBigInt) as Natural import Types.ScriptLookups (UnattachedUnbalancedTx(UnattachedUnbalancedTx)) import Types.Transaction (DataHash, TransactionInput) -import Types.UnbalancedTransaction - ( UnbalancedTx(UnbalancedTx) - , _transaction - ) -import TxOutput (utxoIndexToUtxo) +import Types.UnbalancedTransaction (UnbalancedTx(UnbalancedTx), _transaction) +import Wallet (Wallet(Gero, Nami)) -- This module replicates functionality from -- https://github.com/mlabs-haskell/bot-plutus-interface/blob/master/src/BotPlutusInterface/PreBalance.hs @@ -139,14 +130,14 @@ derive instance genericBalanceTxError :: Generic BalanceTxError _ instance showBalanceTxError :: Show BalanceTxError where show = genericShow -data GetWalletAddressError = CouldNotGetNamiWalletAddress +data GetWalletAddressError = CouldNotGetWalletAddress derive instance genericGetWalletAddressError :: Generic GetWalletAddressError _ instance showGetWalletAddressError :: Show GetWalletAddressError where show = genericShow -data GetWalletCollateralError = CouldNotGetNamiCollateral +data GetWalletCollateralError = CouldNotGetCollateral derive instance genericGetWalletCollateralError :: Generic GetWalletCollateralError _ @@ -182,7 +173,9 @@ derive instance genericReturnAdaChangeError :: Generic ReturnAdaChangeError _ instance showReturnAdaChangeError :: Show ReturnAdaChangeError where show = genericShow -data AddTxCollateralsError = CollateralUtxosUnavailable +data AddTxCollateralsError + = CollateralUtxosUnavailable + | AddTxCollateralsError derive instance genericAddTxCollateralsError :: Generic AddTxCollateralsError _ @@ -401,12 +394,12 @@ balanceTx unattachedTx@(UnattachedUnbalancedTx { unbalancedTx: t }) = do runExceptT do -- Get own wallet address, collateral and utxo set: ownAddr <- ExceptT $ getWalletAddress <#> - note (GetWalletAddressError' CouldNotGetNamiWalletAddress) - collateral <- ExceptT $ getWalletCollateral <#> - note (GetWalletCollateralError' CouldNotGetNamiCollateral) + note (GetWalletAddressError' CouldNotGetWalletAddress) utxos <- ExceptT $ utxosAt ownAddr <#> (note (UtxosAtError' CouldNotGetUtxos) >>> map unwrap) - + collateral <- ExceptT $ getWalletCollateral <#> + note (GetWalletCollateralError' CouldNotGetCollateral) + wallet <- asks _.wallet let -- Combines utxos at the user address and those from any scripts -- involved with the contract in the unbalanced transaction. @@ -415,10 +408,13 @@ balanceTx unattachedTx@(UnattachedUnbalancedTx { unbalancedTx: t }) = do -- After adding collateral, we need to balance the inputs and -- non-Ada outputs before looping, i.e. we need to add input fees - -- for the Ada only collateral. No MinUtxos required. In fact perhaps - -- this step can be skipped and we can go straight to prebalancer. - unbalancedCollTx :: Transaction - unbalancedCollTx = addTxCollateral unbalancedTx' collateral + -- for the Ada only collateral. No MinUtxos required. Perhaps + -- for some wallets this step can be skipped and we can go straight + -- to prebalancer. + unbalancedCollTx = case wallet of + Just (Nami _) -> addTxCollateral unbalancedTx' collateral + Just (Gero _) -> addTxCollateral unbalancedTx' collateral + _ -> unbalancedTx' -- Logging Unbalanced Tx with collateral added: logTx "Unbalanced Collaterised Tx " allUtxos unbalancedCollTx @@ -530,6 +526,13 @@ balanceTx unattachedTx@(UnattachedUnbalancedTx { unbalancedTx: t }) = do feeBuffer :: BigInt feeBuffer = fromInt 500000 +-- CIP-30 wallets provide a 5 Ada collateral that we should add the tx before +-- balancing. +addTxCollateral :: Transaction -> TransactionUnspentOutput -> Transaction +addTxCollateral transaction (TransactionUnspentOutput { input }) = + transaction # _body <<< _collateral ?~ + Array.singleton input + -- Logging for Transaction type without returning Transaction logTx :: forall (m :: Type -> Type) @@ -546,12 +549,6 @@ logTx msg utxos (Transaction { body: body'@(TxBody body) }) = , "Fees: " <> show body.fee ] --- Nami provides a 5 Ada collateral that we should add the tx before balancing. -addTxCollateral :: Transaction -> TransactionUnspentOutput -> Transaction -addTxCollateral transaction (TransactionUnspentOutput { input }) = - transaction # _body <<< _collateral ?~ - Array.singleton input - -- Transaction should be prebalanced at this point with all excess with Ada -- where the Ada value of inputs is greater or equal to value of outputs. -- Also add fees to txBody. This should be called with a Tx with min diff --git a/test/Integration.purs b/test/Integration.purs index 5a2feaaac..a2eb761e9 100644 --- a/test/Integration.purs +++ b/test/Integration.purs @@ -17,6 +17,5 @@ main = launchAff_ do -- Requires external services listed in README.md testPlan :: TestPlanM Unit testPlan = do - AffInterface.suite FinalizeTx.suite --- FIXME: MultipleRedeemers.suite + AffInterface.suite diff --git a/test/MultipleRedeemers.purs b/test/MultipleRedeemers.purs deleted file mode 100644 index d1f435c6c..000000000 --- a/test/MultipleRedeemers.purs +++ /dev/null @@ -1,61 +0,0 @@ -module Test.MultipleRedeemers (suite) where - -import Prelude - -import Contract.Aeson (decodeAeson, fromString) -import Contract.Monad - ( ContractConfig(ContractConfig) - , liftedE - , liftedM - , liftContractM - , runContract - , traceContractConfig - ) -import Contract.PlutusData (PlutusData, unitDatum) -import Contract.ScriptLookups as Lookups -import Contract.Scripts (Validator(Validator), validatorHash) -import Contract.Transaction - ( BalancedSignedTransaction(BalancedSignedTransaction) - , balanceAndSignTx - , submit - ) -import Contract.TxConstraints as Constraints -import Contract.Value (lovelaceValueOf) -import Contract.Wallet (mkNamiWalletAff) -import Data.BigInt (fromInt) -import Data.Either (hush) -import Contract.Prelude (mconcat) -import Data.Maybe (Maybe) -import Effect.Aff (Aff) -import Mote (test) -import TestM (TestPlanM) - -suite :: TestPlanM Unit -suite = do - test "contract with three redeemers" threeRedeemerContract - -threeRedeemerContract :: Aff Unit -threeRedeemerContract = do - ContractConfig defaults <- traceContractConfig - -- how do we get a wallet? - wallet <- mkNamiWalletAff - runContract (ContractConfig $ defaults { wallet = pure wallet }) $ do - validator <- liftContractM "Invalid script JSON" $ alwaysSucceedsScript - vhash <- liftContractM "could not hash validator" $ validatorHash validator - let - constraints :: Constraints.TxConstraints Unit Unit - constraints = mconcat $ - Constraints.mustPayToScript vhash unitDatum <<< lovelaceValueOf <<< - fromInt <$> [ 2_000_000, 3_000_000, 4_000_000 ] - - lookups :: Lookups.ScriptLookups PlutusData - lookups = Lookups.validator validator - ubTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints - BalancedSignedTransaction bsTx <- - liftedM "Failed to balance/sign tx" $ balanceAndSignTx ubTx - submit bsTx.signedTxCbor *> pure unit - pure unit - -alwaysSucceedsScript :: Maybe Validator -alwaysSucceedsScript = map Validator $ hush $ decodeAeson $ fromString - "4d01000033222220051200120011" diff --git a/test/OgmiosDatumCache.purs b/test/OgmiosDatumCache.purs index ed5e12d6c..10ec7b6d1 100644 --- a/test/OgmiosDatumCache.purs +++ b/test/OgmiosDatumCache.purs @@ -1,14 +1,11 @@ module Test.OgmiosDatumCache - ( plutusDataToFromAesonTest - , suite + ( suite ) where import Prelude import Aeson (caseAesonArray, decodeAeson, encodeAeson) import Contract.Address (ByteArray) -import Contract.PlutusData (Datum(..)) -import Contract.Prelude (log) import Control.Monad.Error.Class (class MonadThrow) import Data.Either (Either(Right, Left)) import Data.Newtype (unwrap) @@ -16,15 +13,18 @@ import Data.Traversable (for_) import Effect.Class (class MonadEffect) import Effect.Exception (Error) import Hashing (datumHash) -import Mote (group, test) +import Mote (group, skip, test) import Test.Spec.Assertions (shouldEqual) import Test.Utils (errEither, errMaybe, readAeson) import TestM (TestPlanM) +import Types.Datum (Datum(Datum)) import Types.PlutusData (PlutusData) suite :: TestPlanM Unit suite = group "Ogmios Datum Cache tests" $ do - test "Plutus data samples should satisfy the Aeson roundtrip test" + skip $ test + "Plutus data samples should satisfy the Aeson roundtrip test (FIXME: \ + \https://github.com/mlabs-haskell/purescript-aeson/issues/7)" plutusDataToFromAesonTest test "Plutus data samples should have a compatible hash" plutusDataHashingTest @@ -33,11 +33,11 @@ readPlutusDataSamples . MonadEffect m => m (Array { hash :: ByteArray, plutusData :: PlutusData }) readPlutusDataSamples = do - aes <- readAeson "./fixtures/test/ogmios-datum-cache/plutus-data-samples.json" - errEither <<< decodeAeson $ aes + errEither <<< decodeAeson =<< readAeson + "./fixtures/test/ogmios-datum-cache/plutus-data-samples.json" plutusDataToFromAesonTest - ∷ ∀ (m ∷ Type -> Type). MonadEffect m => MonadThrow Error m ⇒ m Unit + ∷ forall (m ∷ Type -> Type). MonadEffect m => MonadThrow Error m => m Unit plutusDataToFromAesonTest = do pdsAes <- readAeson "./fixtures/test/ogmios-datum-cache/plutus-data-samples.json" @@ -50,11 +50,11 @@ plutusDataToFromAesonTest = do aes `shouldEqual` aes' plutusDataHashingTest - ∷ ∀ (m ∷ Type -> Type). MonadEffect m => MonadThrow Error m ⇒ m Unit + ∷ forall (m ∷ Type -> Type). MonadEffect m => MonadThrow Error m => m Unit plutusDataHashingTest = do plutusDataSamples <- readPlutusDataSamples let elems = plutusDataSamples for_ elems \{ hash, plutusData } -> do hash' <- errMaybe "Couldn't hash the datum" <<< datumHash $ Datum plutusData - log $ show plutusData hash `shouldEqual` unwrap hash' + diff --git a/test/Utils.purs b/test/Utils.purs index 1cc557835..e4ccca8c6 100644 --- a/test/Utils.purs +++ b/test/Utils.purs @@ -2,8 +2,8 @@ module Test.Utils ( aesonRoundTrip , assertTrue , assertTrue_ - , errEither , errMaybe + , errEither , interpret , toFromAesonTest , unsafeCall @@ -12,35 +12,36 @@ module Test.Utils import Prelude +import Aeson + ( class DecodeAeson + , class EncodeAeson + , Aeson + , JsonDecodeError + , decodeAeson + , encodeAeson + , parseJsonStringToAeson + ) import Data.Const (Const) -import Data.Either (Either(Left, Right)) +import Data.Either (Either(Right), either) import Data.Foldable (sequence_) -import Data.Maybe (Maybe(Just, Nothing)) +import Data.Maybe (Maybe, maybe) import Effect.Aff (Aff, error) import Effect.Aff.Class (liftAff) import Effect.Class (class MonadEffect, liftEffect) import Effect.Exception (throwException, throw) import Mote (Plan, foldPlan, planT, test) +import Node.Encoding (Encoding(UTF8)) +import Node.FS.Sync (readTextFile) import Node.Path (FilePath) -import Test.Spec (Spec, describe, it) +import Test.Spec (Spec, describe, it, pending) import Test.Spec.Assertions (shouldEqual) import Test.Spec.Reporter (consoleReporter) import Test.Spec.Runner (runSpec) import TestM (TestPlanM) import Type.Proxy (Proxy) -import Aeson - ( class DecodeAeson - , class EncodeAeson - , Aeson - , JsonDecodeError - , decodeAeson - , encodeAeson - , parseJsonStringToAeson - ) -import Node.Encoding (Encoding(UTF8)) -import Node.FS.Sync (readTextFile) -foreign import unsafeCall :: forall a b. Proxy b -> String -> a -> b +foreign import unsafeCall + :: forall (a :: Type) (b :: Type). Proxy b -> String -> a -> b -- | We use `mote` here so that we can use effects to build up a test tree, which -- | is then interpreted here in a pure context, mainly due to some painful types @@ -54,7 +55,7 @@ interpret spif = do go = foldPlan (\x -> it x.label $ liftAff x.value) - (const $ pure unit) + pending (\x -> describe x.label $ go x.value) sequence_ @@ -82,9 +83,7 @@ errEither => Show e => Either e a -> m a -errEither = case _ of - Left msg -> liftEffect <<< throw <<< show $ msg - Right res -> pure res +errEither = either (liftEffect <<< throw <<< show) pure errMaybe :: forall (m :: Type -> Type) (a :: Type) @@ -92,23 +91,18 @@ errMaybe => String -> Maybe a -> m a -errMaybe msg = case _ of - Nothing -> liftEffect $ throw msg - Just res -> pure res +errMaybe msg = maybe (liftEffect $ throw msg) pure toFromAesonTest :: forall (a :: Type) . Eq a - => Show a => DecodeAeson a => EncodeAeson a - => a + => Show a + => String + -> a -> TestPlanM Unit -toFromAesonTest x = test (show x) $ do - let - (xOrErr :: Either JsonDecodeError a) = - aesonRoundTrip x - xOrErr `shouldEqual` Right x +toFromAesonTest desc x = test desc $ aesonRoundTrip x `shouldEqual` Right x aesonRoundTrip :: forall (a :: Type) @@ -121,6 +115,5 @@ aesonRoundTrip aesonRoundTrip = decodeAeson <<< encodeAeson readAeson :: forall (m :: Type -> Type). MonadEffect m => FilePath -> m Aeson -readAeson fp = do - str <- liftEffect <<< readTextFile UTF8 $ fp - errEither <<< parseJsonStringToAeson $ str +readAeson = errEither <<< parseJsonStringToAeson + <=< liftEffect <<< readTextFile UTF8 From c7e6e7ebd41fcb25593d567b8ea60ccb470e134d Mon Sep 17 00:00:00 2001 From: Rory Tyler Hayford Date: Fri, 10 Jun 2022 14:29:22 +0700 Subject: [PATCH 80/85] `dhall format` --- packages.dhall | 59 +++++++++++++++++++++++++------------------------- 1 file changed, 29 insertions(+), 30 deletions(-) diff --git a/packages.dhall b/packages.dhall index abd6219b9..329c5cd03 100644 --- a/packages.dhall +++ b/packages.dhall @@ -151,40 +151,39 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-aeson.git" , version = "69bd18c4a9cffdebc45c55d2448740721a91854c" - }, - aeson-helpers = + } + , aeson-helpers = { dependencies = - [ "aff" - , "argonaut-codecs" - , "argonaut-core" - , "arrays" - , "bifunctors" - , "contravariant" - , "control" - , "effect" - , "either" - , "enums" - , "foldable-traversable" - , "foreign-object" - , "maybe" - , "newtype" - , "ordered-collections" - , "prelude" - , "profunctor" - , "psci-support" - , "quickcheck" - , "record" - , "spec" - , "spec-quickcheck" - , "transformers" - , "tuples" - , "typelevel-prelude" - ] + [ "aff" + , "argonaut-codecs" + , "argonaut-core" + , "arrays" + , "bifunctors" + , "contravariant" + , "control" + , "effect" + , "either" + , "enums" + , "foldable-traversable" + , "foreign-object" + , "maybe" + , "newtype" + , "ordered-collections" + , "prelude" + , "profunctor" + , "psci-support" + , "quickcheck" + , "record" + , "spec" + , "spec-quickcheck" + , "transformers" + , "tuples" + , "typelevel-prelude" + ] , repo = - "https://github.com/mlabs-haskell/purescript-bridge-aeson-helpers.git" + "https://github.com/mlabs-haskell/purescript-bridge-aeson-helpers.git" , version = "44d0dae060cf78babd4534320192b58c16a6f45b" } - , sequences = { dependencies = [ "arrays" From d381099fd85f811a4c27a4493c5ee916c4e59ff1 Mon Sep 17 00:00:00 2001 From: Rory Tyler Hayford Date: Fri, 10 Jun 2022 14:29:57 +0700 Subject: [PATCH 81/85] Revert ODC input --- flake.lock | 6 +++--- flake.nix | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/flake.lock b/flake.lock index 4d48680e6..dc30ad182 100644 --- a/flake.lock +++ b/flake.lock @@ -1528,11 +1528,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1652899192, - "narHash": "sha256-2vsTyeO6GLwTla3sSbHhObw3q2nOGaEviMBSfcTwW8k=", + "lastModified": 1652673546, + "narHash": "sha256-fd3UST7vjed7KLOrLsFD8/nP7YXhCAQ3ODFs5SjZ6SQ=", "owner": "mlabs-haskell", "repo": "ogmios-datum-cache", - "rev": "1fd8b3d65589de8a1d0a5a818da16da5929d7461", + "rev": "dbff887d14122249352c1a853be05023f64a2664", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 8232423ef..7642b168b 100644 --- a/flake.nix +++ b/flake.nix @@ -147,7 +147,7 @@ easy-ps = import inputs.easy-purescript-nix { pkgs = prev; }; ogmios-datum-cache = - inputs.ogmios-datum-cache.packages.${system}.ogmios-datum-cache; + inputs.ogmios-datum-cache.defaultPackage.${system}; ogmios = ogmios.packages.${system}."ogmios:exe:ogmios"; cardano-cli = cardano-node-exe.packages.${system}.cardano-cli; purescriptProject = import ./nix { inherit system; pkgs = prev; }; From 545c7cf9bd9a19ce40aa2d9abb4ddfafedfe9e00 Mon Sep 17 00:00:00 2001 From: Rory Tyler Hayford Date: Fri, 10 Jun 2022 14:44:02 +0700 Subject: [PATCH 82/85] Update gitattributes --- .gitattributes | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitattributes b/.gitattributes index f520835a3..27142fa60 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,3 +1,4 @@ spago-packages.nix linguist-generated=true flake.lock linguist-generated=true server/config/pparams.json linguist-generated=true +fixtures/**/*.json linguist-generated=true From 9de755a6a2e5c4a1f7d14a49aaded76918f10186 Mon Sep 17 00:00:00 2001 From: Rory Tyler Hayford Date: Fri, 10 Jun 2022 16:45:06 +0700 Subject: [PATCH 83/85] Apply suggestions from #419 --- src/Plutus/Types/Address.purs | 21 ++++---- src/Plutus/Types/Credential.purs | 52 +++++++++++--------- src/Plutus/Types/Value.purs | 2 +- src/ReindexRedeemers.purs | 3 +- src/Serialization/Hash.purs | 12 ++--- src/Types/Datum.purs | 11 +++-- src/Types/Interval.purs | 82 +++++++++++++++++--------------- src/Types/PubKeyHash.purs | 24 +++++----- src/Types/Scripts.purs | 8 ++-- src/Types/TokenName.purs | 73 ++++++++++++++-------------- test/Data.purs | 12 ++--- test/Deserialization.purs | 4 +- test/Fixtures.purs | 6 +-- test/OgmiosDatumCache.purs | 4 +- test/Plutus/Address.purs | 5 +- test/Plutus/Credential.purs | 5 +- 16 files changed, 166 insertions(+), 158 deletions(-) diff --git a/src/Plutus/Types/Address.purs b/src/Plutus/Types/Address.purs index f70b56124..139684905 100644 --- a/src/Plutus/Types/Address.purs +++ b/src/Plutus/Types/Address.purs @@ -18,7 +18,7 @@ import Aeson , encodeAeson' , (.:) ) -import Contract.Prelude (Either(Left)) +import Data.Either (Either(Left)) import Data.Generic.Rep (class Generic) import Data.Maybe (Maybe(Just, Nothing)) import Data.Newtype (class Newtype, wrap, unwrap) @@ -39,7 +39,11 @@ import Plutus.Types.DataSchema import Serialization.Address (NetworkId) import ToData (class ToData, genericToData) import TypeLevel.Nat (Z) -import Types.PubKeyHash (PaymentPubKeyHash(..), StakePubKeyHash, PubKeyHash) +import Types.PubKeyHash + ( PaymentPubKeyHash(PaymentPubKeyHash) + , StakePubKeyHash + , PubKeyHash + ) import Types.Scripts (ValidatorHash) -------------------------------------------------------------------------------- @@ -94,14 +98,11 @@ instance FromData Address where fromData = genericFromData instance DecodeAeson Address where - decodeAeson aes = caseAesonObject - (Left $ TypeMismatch "Expected object") - ( \obj -> do - addressCredential <- obj .: "addressCredential" - addressStakingCredential <- obj .: "addressStakingCredential" - pure $ Address { addressCredential, addressStakingCredential } - ) - aes + decodeAeson = caseAesonObject (Left $ TypeMismatch "Expected object") $ + \obj -> do + addressCredential <- obj .: "addressCredential" + addressStakingCredential <- obj .: "addressStakingCredential" + pure $ Address { addressCredential, addressStakingCredential } instance EncodeAeson Address where encodeAeson' (Address addr) = encodeAeson' addr diff --git a/src/Plutus/Types/Credential.purs b/src/Plutus/Types/Credential.purs index 1b0fc0ce2..b198ca175 100644 --- a/src/Plutus/Types/Credential.purs +++ b/src/Plutus/Types/Credential.purs @@ -23,8 +23,8 @@ import Plutus.Types.DataSchema ) import ToData (class ToData, genericToData) import TypeLevel.Nat (S, Z) -import Aeson.Decode as D -import Aeson.Encode as E +import Aeson.Decode as Decode +import Aeson.Encode as Encode import Data.Map as Map import Serialization.Address (CertificateIndex, Slot, TransactionIndex) import Types.PubKeyHash (PubKeyHash) @@ -64,18 +64,22 @@ instance -- NOTE: mlabs-haskell/purescript-bridge generated and applied here instance EncodeAeson Credential where - encodeAeson' x = encodeAeson' $ - ( defer \_ -> case _ of - PubKeyCredential a -> E.encodeTagged "PubKeyCredential" a E.value - ScriptCredential a -> E.encodeTagged "ScriptCredential" a E.value - ) x + encodeAeson' = encodeAeson' <<< + ( defer $ const $ case _ of + PubKeyCredential a -> Encode.encodeTagged "PubKeyCredential" a + Encode.value + ScriptCredential a -> Encode.encodeTagged "ScriptCredential" a + Encode.value + ) instance DecodeAeson Credential where - decodeAeson = defer \_ -> D.decode - $ D.sumType "Credential" + decodeAeson = defer $ const $ Decode.decode + $ Decode.sumType "Credential" $ Map.fromFoldable - [ "PubKeyCredential" /\ D.content (PubKeyCredential <$> D.value) - , "ScriptCredential" /\ D.content (ScriptCredential <$> D.value) + [ "PubKeyCredential" /\ Decode.content + (PubKeyCredential <$> Decode.value) + , "ScriptCredential" /\ Decode.content + (ScriptCredential <$> Decode.value) ] instance ToData Credential where @@ -128,21 +132,25 @@ instance FromData StakingCredential where -- NOTE: mlabs-haskell/purescript-bridge generated and applied here instance EncodeAeson StakingCredential where - encodeAeson' x = encodeAeson' $ - ( defer \_ -> case _ of - StakingHash a -> E.encodeTagged "StakingHash" a E.value - StakingPtr ptr -> E.encodeTagged "StakingPtr" + encodeAeson' = encodeAeson' <<< defer + ( const $ case _ of + StakingHash a -> Encode.encodeTagged "StakingHash" a Encode.value + StakingPtr ptr -> Encode.encodeTagged "StakingPtr" (ptr.slot /\ ptr.txIx /\ ptr.certIx) - (E.tuple (E.value >/\< E.value >/\< E.value)) - ) x + (Encode.tuple (Encode.value >/\< Encode.value >/\< Encode.value)) + ) instance DecodeAeson StakingCredential where - decodeAeson = defer \_ -> D.decode - $ D.sumType "StakingCredential" + decodeAeson = defer $ const $ Decode.decode + $ Decode.sumType "StakingCredential" $ Map.fromFoldable - [ "StakingHash" /\ D.content (StakingHash <$> D.value) - , "StakingPtr" /\ D.content - (D.tuple $ toStakingPtr D.value D.value D.value) + [ "StakingHash" /\ Decode.content (StakingHash <$> Decode.value) + , "StakingPtr" /\ Decode.content + ( Decode.tuple $ toStakingPtr Decode.value Decode.value + Decode.value + ) ] where + toStakingPtr + :: Slot -> TransactionIndex -> CertificateIndex -> StakingCredential toStakingPtr slot txIx certIx = StakingPtr { slot, txIx, certIx } diff --git a/src/Plutus/Types/Value.purs b/src/Plutus/Types/Value.purs index a361cb7f2..fa92f7185 100644 --- a/src/Plutus/Types/Value.purs +++ b/src/Plutus/Types/Value.purs @@ -36,10 +36,10 @@ import Aeson , getField , JsonDecodeError(TypeMismatch) ) -import Contract.Prelude (Either(..)) import Control.Apply (lift3) import Data.Array (concatMap, filter) import Data.BigInt (BigInt) +import Data.Either (Either(Left)) import Data.Foldable (all) import Data.Generic.Rep (class Generic) import Data.Lattice (class JoinSemilattice, class MeetSemilattice) diff --git a/src/ReindexRedeemers.purs b/src/ReindexRedeemers.purs index 8e061d2d1..865d29db2 100644 --- a/src/ReindexRedeemers.purs +++ b/src/ReindexRedeemers.purs @@ -14,7 +14,7 @@ import Data.Array (elemIndex) import Data.BigInt (fromInt) import Data.Either (Either(Right), note) import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe(Just, Nothing)) +import Data.Maybe (Maybe(Just)) import Data.Show.Generic (genericShow) import Data.Traversable (traverse) import Data.Tuple (fst) @@ -65,5 +65,4 @@ reindexSpentScriptRedeemers' inputs redeemersTxIns = runExceptT do index <- note (CannotGetTxOutRefIndexForRedeemer red) (fromInt <$> elemIndex txOutRef ipts) Right $ T.Redeemer red' { index = index } /\ Just txOutRef - red@(T.Redeemer { tag: Spend }) /\ Nothing -> Right $ red /\ Nothing mintRed /\ txOutRef -> Right $ mintRed /\ txOutRef diff --git a/src/Serialization/Hash.purs b/src/Serialization/Hash.purs index 9e17525a2..d0479b1dc 100644 --- a/src/Serialization/Hash.purs +++ b/src/Serialization/Hash.purs @@ -22,8 +22,7 @@ import Aeson , caseAesonString , encodeAeson' ) -import Contract.Prelude (Either(..)) -import Data.Either (Either(Left), note) +import Data.Either (Either(Left, Right), note) import Data.Function (on) import Data.Maybe (Maybe(Nothing, Just), maybe) import Data.Newtype (unwrap, wrap) @@ -144,12 +143,9 @@ instance FromMetadata ScriptHash where -- Corresponds to Plutus' `Plutus.V1.Ledger.Api.Script` Aeson instances instance DecodeAeson ScriptHash where - decodeAeson aes = do - let - mayHash = caseAesonString Nothing - (Just <=< scriptHashFromBytes <=< hexToRawBytes) - aes - maybe (Left $ TypeMismatch "Expected hex-encoded script hash") Right mayHash + decodeAeson = do + maybe (Left $ TypeMismatch "Expected hex-encoded script hash") Right <<< + caseAesonString Nothing (Just <=< scriptHashFromBytes <=< hexToRawBytes) instance EncodeAeson ScriptHash where encodeAeson' sh = encodeAeson' $ scriptHashToBytes sh diff --git a/src/Types/Datum.purs b/src/Types/Datum.purs index 917f32052..f7b1c0818 100644 --- a/src/Types/Datum.purs +++ b/src/Types/Datum.purs @@ -16,8 +16,8 @@ import FromData (class FromData) import ToData (class ToData, toData) import Types.PlutusData (PlutusData) import Types.Transaction (DataHash(DataHash)) as X -import Aeson.Decode as D -import Aeson.Encode as E +import Aeson.Decode as Decode +import Aeson.Encode as Encode -- | Define data types mirroring Plutus `Datum`, like `Datum` itself and -- | `Redeemer` where the latter is not to be confused with the CSL-stype @@ -34,13 +34,14 @@ derive newtype instance Ord Datum derive newtype instance ToData Datum instance EncodeAeson Datum where - encodeAeson' x = encodeAeson' $ (defer \_ -> E.encode $ unwrap >$< E.value) x + encodeAeson' = encodeAeson' <<< + defer (const $ Encode.encode $ unwrap >$< Encode.value) instance DecodeAeson Datum where - decodeAeson = defer \_ -> D.decode $ (Datum <$> D.value) + decodeAeson = defer $ const $ Decode.decode $ Datum <$> Decode.value instance Show Datum where show = genericShow unitDatum :: Datum -unitDatum = Datum (toData unit) +unitDatum = Datum $ toData unit diff --git a/src/Types/Interval.purs b/src/Types/Interval.purs index 2963bdd97..dce854e71 100644 --- a/src/Types/Interval.purs +++ b/src/Types/Interval.purs @@ -65,9 +65,9 @@ import Aeson , isNull ) import Aeson.Decode ((), ()) -import Aeson.Decode as D +import Aeson.Decode as Decode import Aeson.Encode ((>$<), (>/\<)) -import Aeson.Encode as E +import Aeson.Encode as Encode import Control.Lazy (defer) import Control.Monad.Error.Class (throwError) import Control.Monad.Except.Trans (ExceptT(ExceptT), runExceptT) @@ -132,6 +132,7 @@ import TypeLevel.Nat (S, Z) type Closure = Boolean -- | A set extended with a positive and negative infinity. +data Extended :: Type -> Type data Extended a = NegInf | Finite a | PosInf instance @@ -273,7 +274,7 @@ instance EncodeAeson a => EncodeAeson (Interval a) where instance DecodeAeson a => DecodeAeson (Interval a) where decodeAeson a = do - (HaskInterval i) <- decodeAeson a + HaskInterval i <- decodeAeson a pure $ Interval { from: i.ivFrom, to: i.ivTo } -------------------------------------------------------------------------------- @@ -1026,57 +1027,62 @@ derive instance Functor HaskInterval derive instance Newtype (HaskInterval a) _ instance (EncodeAeson a) => EncodeAeson (HaskInterval a) where - encodeAeson' x = encodeAeson' $ - ( defer \_ -> E.encode $ unwrap >$< - ( E.record - { ivFrom: E.value :: _ (LowerBound a) - , ivTo: E.value :: _ (UpperBound a) - } - ) - ) x + encodeAeson' = encodeAeson' <<< + defer + ( const $ Encode.encode $ unwrap >$< + ( Encode.record + { ivFrom: Encode.value :: _ (LowerBound a) + , ivTo: Encode.value :: _ (UpperBound a) + } + ) + ) instance (DecodeAeson a) => DecodeAeson (HaskInterval a) where - decodeAeson = defer \_ -> D.decode $ - ( HaskInterval <$> D.record "Interval" - { ivFrom: D.value :: _ (LowerBound a) - , ivTo: D.value :: _ (UpperBound a) - } - ) + decodeAeson = defer $ const $ Decode.decode $ + HaskInterval <$> Decode.record "Interval" + { ivFrom: Decode.value :: _ (LowerBound a) + , ivTo: Decode.value :: _ (UpperBound a) + } instance (EncodeAeson a) => EncodeAeson (LowerBound a) where - encodeAeson' x = encodeAeson' $ - ( defer \_ -> E.encode $ (case _ of LowerBound a b -> (a /\ b)) >$< - (E.tuple (E.value >/\< E.value)) - ) x + encodeAeson' = encodeAeson' <<< + defer + ( const $ Encode.encode $ (case _ of LowerBound a b -> (a /\ b)) >$< + (Encode.tuple (Encode.value >/\< Encode.value)) + ) instance (DecodeAeson a) => DecodeAeson (LowerBound a) where - decodeAeson = defer \_ -> D.decode $ - (D.tuple $ LowerBound D.value D.value) + decodeAeson = defer $ const $ Decode.decode + $ Decode.tuple + $ LowerBound Decode.value Decode.value instance (EncodeAeson a) => EncodeAeson (UpperBound a) where - encodeAeson' x = encodeAeson' $ - ( defer \_ -> E.encode $ (case _ of UpperBound a b -> (a /\ b)) >$< - (E.tuple (E.value >/\< E.value)) - ) x + encodeAeson' = encodeAeson' <<< + defer + ( const $ Encode.encode $ (case _ of UpperBound a b -> (a /\ b)) >$< + (Encode.tuple (Encode.value >/\< Encode.value)) + ) instance (DecodeAeson a) => DecodeAeson (UpperBound a) where - decodeAeson = defer \_ -> D.decode $ - (D.tuple $ UpperBound D.value D.value) + decodeAeson = defer $ const $ Decode.decode + $ Decode.tuple + $ UpperBound Decode.value Decode.value instance (EncodeAeson a) => EncodeAeson (Extended a) where - encodeAeson' x = encodeAeson' $ - ( defer \_ -> case _ of - NegInf -> encodeAeson { tag: "NegInf" } - Finite a -> E.encodeTagged "Finite" a E.value - PosInf -> encodeAeson { tag: "PosInf" } - ) x + encodeAeson' = encodeAeson' <<< + defer + ( const $ case _ of + NegInf -> encodeAeson { tag: "NegInf" } + Finite a -> Encode.encodeTagged "Finite" a Encode.value + PosInf -> encodeAeson { tag: "PosInf" } + ) instance (DecodeAeson a) => DecodeAeson (Extended a) where - decodeAeson = defer \_ -> D.decode - $ D.sumType "Extended" + decodeAeson = defer $ const $ Decode.decode + $ Decode.sumType "Extended" $ Map.fromFoldable [ "NegInf" /\ pure NegInf - , "Finite" /\ D.content (Finite <$> D.value) + , "Finite" /\ Decode.content (Finite <$> Decode.value) , "PosInf" /\ pure PosInf ] diff --git a/src/Types/PubKeyHash.purs b/src/Types/PubKeyHash.purs index 262e478b8..dc562e1b0 100644 --- a/src/Types/PubKeyHash.purs +++ b/src/Types/PubKeyHash.purs @@ -22,8 +22,8 @@ import Aeson , encodeAeson' , getField ) -import Aeson.Decode as D -import Aeson.Encode as E +import Aeson.Decode as Decode +import Aeson.Encode as Encode import Data.Either (Either(Left)) import Data.Generic.Rep (class Generic) import Data.Newtype (class Newtype, unwrap, wrap) @@ -65,14 +65,16 @@ instance Show PubKeyHash where -- NOTE: mlabs-haskell/purescript-bridge generated and applied here instance EncodeAeson PubKeyHash where - encodeAeson' x = encodeAeson' $ E.encode - (E.record { getPubKeyHash: E.value :: _ (Ed25519KeyHash) }) + encodeAeson' x = encodeAeson' $ Encode.encode + (Encode.record { getPubKeyHash: Encode.value :: _ (Ed25519KeyHash) }) { getPubKeyHash: unwrap x } instance DecodeAeson PubKeyHash where - decodeAeson x = wrap <<< get (Proxy :: Proxy "getPubKeyHash") <$> D.decode - (D.record "getPubKeyHash " { getPubKeyHash: D.value :: _ (Ed25519KeyHash) }) - x + decodeAeson = map (wrap <<< get (Proxy :: Proxy "getPubKeyHash")) <<< + Decode.decode + ( Decode.record "getPubKeyHash " + { getPubKeyHash: Decode.value :: _ (Ed25519KeyHash) } + ) ed25519EnterpriseAddress :: forall (n :: Type) @@ -126,11 +128,9 @@ instance Show PaymentPubKeyHash where -- This is needed for `ApplyArgs`. Plutus has an `unPaymentPubKeyHash` field so -- don't newtype derive. instance DecodeAeson PaymentPubKeyHash where - decodeAeson = caseAesonObject - (Left $ TypeMismatch "Expected object") - ( flip getField "unPaymentPubKeyHash" >=> - decodeAeson >>> map PaymentPubKeyHash - ) + decodeAeson = caseAesonObject (Left $ TypeMismatch "Expected object") + $ flip getField "unPaymentPubKeyHash" >=> decodeAeson >>> map + PaymentPubKeyHash newtype StakePubKeyHash = StakePubKeyHash PubKeyHash diff --git a/src/Types/Scripts.purs b/src/Types/Scripts.purs index 59275d791..e696bc68d 100644 --- a/src/Types/Scripts.purs +++ b/src/Types/Scripts.purs @@ -48,12 +48,12 @@ instance Show PlutusScript where show = genericShow decodeAesonHelper - ∷ ∀ (a ∷ Type) (b :: Type) + :: ∀ (a :: Type) (b :: Type) . DecodeAeson a => String - → (a -> b) - → Aeson - → Either JsonDecodeError b + -> (a -> b) + -> Aeson + -> Either JsonDecodeError b decodeAesonHelper constrName constr = caseAesonObject (Left $ TypeMismatch "Expected object") (flip getField constrName >=> decodeAeson >>> map constr) diff --git a/src/Types/TokenName.purs b/src/Types/TokenName.purs index ab855365b..2f261cf46 100644 --- a/src/Types/TokenName.purs +++ b/src/Types/TokenName.purs @@ -62,51 +62,47 @@ fromTokenName arrayHandler stringHandler (TokenName cba) = either stringHandler (decodeUtf8 <<< unwrap <<< cborBytesToByteArray $ cba) +-- | Corresponds to following Haskell instance: +-- | +-- | ``` +-- | toJSON = JSON.object . Haskell.pure . (,) "unTokenName" . JSON.toJSON . +-- | fromTokenName +-- | (\bs -> Text.cons '\NUL' (asBase16 bs)) + +-- | (\t -> case Text.take 1 t of "\NUL" -> Text.concat ["\NUL\NUL", t]; _ -> t) +-- | ``` instance DecodeAeson TokenName where - {- - toJSON = JSON.object . Haskell.pure . (,) "unTokenName" . JSON.toJSON . - fromTokenName - (\bs -> Text.cons '\NUL' (asBase16 bs)) - - (\t -> case Text.take 1 t of "\NUL" -> Text.concat ["\NUL\NUL", t]; _ -> t) - -} - decodeAeson = caseAesonObject - (Left $ TypeMismatch "Expected object") - ( \aes -> do - tkstr :: String <- getField aes "unTokenName" - case take 3 tkstr of - """\NUL0x""" -> case tkFromStr (drop 3 tkstr) of - Nothing -> Left $ TypeMismatch ("Invalid TokenName E1: " <> tkstr) - Just tk -> Right tk - - """\NUL\NUL\NUL""" -> - note (TypeMismatch $ "Invalid TokenName E2: " <> tkstr) - $ tkFromStr (drop 2 tkstr) - - _ -> note (TypeMismatch $ "Invalid TokenName E3: " <> tkstr) - $ tkFromStr tkstr - ) + decodeAeson = caseAesonObject (Left $ TypeMismatch "Expected object") $ + \aes -> do + tkstr <- getField aes "unTokenName" + case take 3 tkstr of + """\NUL0x""" -> case tkFromStr (drop 3 tkstr) of + Nothing -> Left $ TypeMismatch ("Invalid TokenName E1: " <> tkstr) + Just tk -> Right tk + + """\NUL\NUL\NUL""" -> + note (TypeMismatch $ "Invalid TokenName E2: " <> tkstr) + $ tkFromStr (drop 2 tkstr) + + _ -> note (TypeMismatch $ "Invalid TokenName E3: " <> tkstr) + $ tkFromStr tkstr where tkFromStr :: String -> Maybe TokenName - tkFromStr str = (TokenName <<< wrap) <$> - (byteArrayFromIntArray <<< map toCharCode <<< toCharArray $ str) + tkFromStr = map (TokenName <<< wrap) <<< byteArrayFromIntArray + <<< map toCharCode + <<< toCharArray -- FIXME: what if the tokenname is actually \0\0\0? haskell will break this assuming it -- comes from purescript side -- also we will break assuming it comes from haskell -- this issue has to be fixed on the haskell side instance EncodeAeson TokenName where - encodeAeson' tk = - let - tkstr = fromTokenName - (\ba -> """\NUL""" <> asBase16 ba) - ( \t -> case take 1 t of - """\NUL""" -> """\NUL\NUL""" <> t - _ -> t - ) - tk - in - encodeAeson' { "unTokenName": tkstr } + encodeAeson' = encodeAeson' <<< { "unTokenName": _ } <<< fromTokenName + (("""\NUL""" <> _) <<< asBase16) + ( \t -> case take 1 t of + """\NUL""" -> """\NUL\NUL""" <> t + _ -> t + ) instance Show TokenName where show (TokenName tn) = "(TokenName " <> show tn <> ")" @@ -121,8 +117,9 @@ adaToken = TokenName mempty -- | Create a `TokenName` from a `ByteArray` since TokenName data constructor is -- | not exported mkTokenName :: ByteArray -> Maybe TokenName -mkTokenName byteArr = - if byteLength byteArr <= 32 then pure $ TokenName (wrap byteArr) else Nothing +mkTokenName byteArr + | byteLength byteArr <= 32 = pure $ TokenName $ wrap byteArr + | otherwise = Nothing foreign import assetNameName :: CSL.AssetName -> ByteArray diff --git a/test/Data.purs b/test/Data.purs index 6ea8fd791..5a8bfb513 100644 --- a/test/Data.purs +++ b/test/Data.purs @@ -4,11 +4,10 @@ module Test.Data (suite, tests, uniqueIndicesTests) where import Prelude import Aeson (decodeAeson, encodeAeson, JsonDecodeError(TypeMismatch)) -import Contract.PlutusData (PlutusData(Constr, Integer)) -import Contract.Prelude (Either(Left, Right)) import Control.Lazy (fix) import Data.BigInt (BigInt) import Data.BigInt as BigInt +import Data.Either (Either(Left, Right)) import Data.Generic.Rep as G import Data.Maybe (maybe, Maybe(Just, Nothing), fromJust) import Data.Show.Generic (genericShow) @@ -21,7 +20,7 @@ import FromData (class FromData, fromData, genericFromData) import Helpers (showWithParens) import Mote (group, test) import Partial.Unsafe (unsafePartial) -import Plutus.Types.AssocMap (Map(..)) +import Plutus.Types.AssocMap (Map(Map)) import Plutus.Types.DataSchema ( class HasPlutusSchema , type (:+) @@ -37,6 +36,7 @@ import Test.QuickCheck.Gen (Gen) import Test.Spec.Assertions (shouldEqual) import TestM (TestPlanM) import ToData (class ToData, genericToData, toData) +import Types.PlutusData (PlutusData(Constr, Integer)) import Type.RowList (Cons, Nil) import TypeLevel.Nat (Z, S) import TypeLevel.RowList (class AllUniqueLabels) @@ -45,7 +45,7 @@ import Types.ByteArray (hexToByteArrayUnsafe) import Untagged.Union (asOneOf) plutusDataAesonRoundTrip - ∷ ∀ (a ∷ Type). ToData a ⇒ FromData a ⇒ a → Either JsonDecodeError a + :: forall (a :: Type). ToData a => FromData a => a -> Either JsonDecodeError a plutusDataAesonRoundTrip x = do pd <- encodeAeson (toData x) # decodeAeson maybe (Left $ TypeMismatch "") (pure) $ fromData pd @@ -534,7 +534,7 @@ testBinaryFixture value binaryFixture = do (hexToByteArrayUnsafe binaryFixture) -- | Poor man's type level tests -tests ∷ Array String +tests :: Array String tests = [ testNil , testSingleton @@ -557,7 +557,7 @@ tests = => String testUniques = "[A, B, C] is all unique and should compile" -uniqueIndicesTests ∷ Array String +uniqueIndicesTests :: Array String uniqueIndicesTests = [ testNil , testSingletonZ diff --git a/test/Deserialization.purs b/test/Deserialization.purs index 7e001108c..957ed0222 100644 --- a/test/Deserialization.purs +++ b/test/Deserialization.purs @@ -194,10 +194,10 @@ suite = do group "WitnessSet - deserialization is inverse to serialization" do let witnessSetRoundTrip - ∷ ∀ (m ∷ Type -> Type) + :: ∀ (m :: Type -> Type) . MonadEffect m => MonadThrow Error m - ⇒ ByteArray + => ByteArray -> m Unit witnessSetRoundTrip fixture = do ws0 <- errMaybe "Failed deserialization" $ diff --git a/test/Fixtures.purs b/test/Fixtures.purs index 83d517510..1b7b5cce5 100644 --- a/test/Fixtures.purs +++ b/test/Fixtures.purs @@ -1088,7 +1088,7 @@ plutusDataFixture7 = PD.List , plutusDataFixture6 ] -plutusDataFixture8 ∷ PD.PlutusData +plutusDataFixture8 :: PD.PlutusData plutusDataFixture8 = PD.Constr (BigInt.fromInt 0) [ PD.Bytes ( hexToByteArrayUnsafe @@ -1107,14 +1107,14 @@ plutusDataFixture8 = PD.Constr (BigInt.fromInt 0) , PD.Integer (BigInt.fromInt 45) ] -plutusDataFixture8Bytes ∷ ByteArray +plutusDataFixture8Bytes :: ByteArray plutusDataFixture8Bytes = hexToByteArrayUnsafe "d8799f581cda13ed22b9294f1d86bbd530e99b1456884c7364bf16c90edc1ae41e1a1dcd6500\ \581c82325cbfc20b85bd1ca12e5d12b44b83f68662d8395167b45f1ff7fa4d746f6e6573206f\ \6620736b7920581cda13ed22b9294f1d86bbd530e99b1456884c7364bf16c90edc1ae41e\ \182dff" -plutusDataFixture8Bytes' ∷ ByteArray +plutusDataFixture8Bytes' :: ByteArray plutusDataFixture8Bytes' = hexToByteArrayUnsafe "d866820086581cda13ed22b9294f1d86bbd530e99b1456884c7364bf16c90edc1ae41e1a1dcd\ \6500581c82325cbfc20b85bd1ca12e5d12b44b83f68662d8395167b45f1ff7fa4d746f6e6573\ diff --git a/test/OgmiosDatumCache.purs b/test/OgmiosDatumCache.purs index 10ec7b6d1..47bcd637a 100644 --- a/test/OgmiosDatumCache.purs +++ b/test/OgmiosDatumCache.purs @@ -37,7 +37,7 @@ readPlutusDataSamples = do "./fixtures/test/ogmios-datum-cache/plutus-data-samples.json" plutusDataToFromAesonTest - ∷ forall (m ∷ Type -> Type). MonadEffect m => MonadThrow Error m => m Unit + :: forall (m :: Type -> Type). MonadEffect m => MonadThrow Error m => m Unit plutusDataToFromAesonTest = do pdsAes <- readAeson "./fixtures/test/ogmios-datum-cache/plutus-data-samples.json" @@ -50,7 +50,7 @@ plutusDataToFromAesonTest = do aes `shouldEqual` aes' plutusDataHashingTest - ∷ forall (m ∷ Type -> Type). MonadEffect m => MonadThrow Error m => m Unit + :: forall (m :: Type -> Type). MonadEffect m => MonadThrow Error m => m Unit plutusDataHashingTest = do plutusDataSamples <- readPlutusDataSamples let elems = plutusDataSamples diff --git a/test/Plutus/Address.purs b/test/Plutus/Address.purs index 23b36b144..4cc9e0593 100644 --- a/test/Plutus/Address.purs +++ b/test/Plutus/Address.purs @@ -42,8 +42,9 @@ suite = do for_ testData $ \(Tuple (Tuple addrBech32 addr) addrType) -> toFromPlutusTypeTest TestnetId addrType addrBech32 addr group "Aeson tests" $ do - group "Roundtrip tests" $ do - for_ addresses toFromAesonTest + group "Roundtrip tests" + $ for_ addresses + $ toFromAesonTest "Address" toFromPlutusTypeTest :: NetworkId -> Int -> Bech32String -> Plutus.Address -> TestPlanM Unit diff --git a/test/Plutus/Credential.purs b/test/Plutus/Credential.purs index 7863f451b..366ab6279 100644 --- a/test/Plutus/Credential.purs +++ b/test/Plutus/Credential.purs @@ -20,10 +20,9 @@ suite :: TestPlanM Unit suite = do group "Plutus.Types.Credential" $ do group "Aeson tests" $ do - group "Roundtrip tests" $ do - for_ creds toFromAesonTest + group "Roundtrip tests" $ for_ creds $ toFromAesonTest "Credential" -creds ∷ Array Credential +creds :: Array Credential creds = [ pubKeyCredential , scriptCredential From 6ffe323581c2839f8ce6ebb4d8c4e356fcf13707 Mon Sep 17 00:00:00 2001 From: Rory Tyler Hayford Date: Fri, 10 Jun 2022 18:10:44 +0700 Subject: [PATCH 84/85] Update changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f525fe81f..851875814 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ## [Unreleased] -## [1.0.0] - 2022-06-07 +## [1.0.0] - 2022-06-10 CTL's initial release! From f8273f22b93f0d1c7a9afcfb991834593b84e483 Mon Sep 17 00:00:00 2001 From: Rory Tyler Hayford Date: Fri, 10 Jun 2022 18:27:44 +0700 Subject: [PATCH 85/85] Small style things --- src/Types/TokenName.purs | 2 +- test/Data.purs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Types/TokenName.purs b/src/Types/TokenName.purs index 2f261cf46..24f610a8a 100644 --- a/src/Types/TokenName.purs +++ b/src/Types/TokenName.purs @@ -58,7 +58,7 @@ asBase16 ba = "0x" <> byteArrayToHex ba fromTokenName :: forall r. (ByteArray -> r) -> (String -> r) -> TokenName -> r fromTokenName arrayHandler stringHandler (TokenName cba) = either - (\_ -> arrayHandler $ cborBytesToByteArray cba) + (const $ arrayHandler $ cborBytesToByteArray cba) stringHandler (decodeUtf8 <<< unwrap <<< cborBytesToByteArray $ cba) diff --git a/test/Data.purs b/test/Data.purs index 5a8bfb513..7cc5a1fef 100644 --- a/test/Data.purs +++ b/test/Data.purs @@ -47,8 +47,8 @@ import Untagged.Union (asOneOf) plutusDataAesonRoundTrip :: forall (a :: Type). ToData a => FromData a => a -> Either JsonDecodeError a plutusDataAesonRoundTrip x = do - pd <- encodeAeson (toData x) # decodeAeson - maybe (Left $ TypeMismatch "") (pure) $ fromData pd + maybe (Left $ TypeMismatch "") pure <<< fromData =<< + (encodeAeson (toData x) # decodeAeson) suite :: TestPlanM Unit suite = do