(impl-trait 'SP2PABAF9FTAJYNFZH93XENAJ8FVY99RRM50D2JG9.nft-trait.nft-trait)

(define-non-fungible-token stacks-parrots-3d uint)

;; Constants
(define-constant err-mint u100)
(define-constant err-mint-not-active u200)
(define-constant err-no-more-nfts u300)
(define-constant err-invalid-user u500)
(define-constant CONTRACT-OWNER tx-sender)

(define-data-var commission-address principal 'SPNWZ5V2TPWGQGVDR6T7B6RQ4XMGZ4PXTEE0VQ0S)
(define-data-var artist-address principal 'SP1VJ3EFBG4YBCB143S9Z8AMTCRJBN5MYS1EG982A)

;; Internal variables
(define-data-var mint-limit uint u402)
(define-data-var commission uint u1500)
(define-data-var last-id uint u146)
(define-data-var mint-price uint u55000000)
(define-data-var the-mint principal tx-sender)
(define-data-var ipfs-full (string-ascii 84) "ipfs://QmNbgs77285mhBmKtFSq6oZ7jzTGKQYktnwqEJHsHewNk7/stacks_parrots_metadata.json")
(define-data-var ipfs-root (string-ascii 80) "ipfs://QmNbgs77285mhBmKtFSq6oZ7jzTGKQYktnwqEJHsHewNk7/")
(define-data-var ipfs-change-enabled bool true)
(define-data-var mint-status bool true)

;;STX Minter
(define-private (mint-many (orders (list 10 bool)))
  (let (
      (last-nft-id (var-get last-id))
      (enabled (asserts! (<= last-nft-id (var-get mint-limit)) (err err-no-more-nfts)))
      (id-reached (fold mint-many-iter orders last-nft-id))
      (price (* (var-get mint-price) (- id-reached last-nft-id)))
      (payout (- price (/ (* price (var-get commission)) u10000)))
      (commission1 (/ (* price (/ (var-get commission) u2)) u10000))
      (commission2 (/ (* price (/ (var-get commission) u2)) u10000))
    )
      (begin
        (var-set last-id id-reached)
            (begin
                (print "mint in stx")
                (try! (stx-transfer? commission1 tx-sender CONTRACT-OWNER))
                (try! (stx-transfer? commission2 tx-sender (var-get commission-address)))
                (try! (stx-transfer? payout tx-sender (var-get artist-address)))
            )
    )
    (ok id-reached)
  )
)

(define-private (mint-many-iter (ignore bool) (next-id uint))
  (if (<= next-id (var-get mint-limit))
    (begin
      (unwrap! (nft-mint? stacks-parrots-3d next-id tx-sender) next-id)
      (+ next-id u1)
    )
    next-id
  )
)

(define-public (mint (orders (list 10 bool)))
  (begin
    (asserts! (is-eq (var-get mint-status) true) (err err-mint-not-active))
    (asserts! (or (is-eq contract-caller (var-get the-mint)) (is-eq tx-sender CONTRACT-OWNER)) (err err-invalid-user))
    (mint-many orders)
  )
)

;; Allows contract owner to change commission address if need be
(define-public (set-commission-address (value principal))
  (if (is-eq tx-sender CONTRACT-OWNER)
    (ok (var-set commission-address value))
    (err err-invalid-user)
  )
)

;; Allows contract owner to change artist address if need be
(define-public (set-artist-address (value principal))
  (if (is-eq tx-sender CONTRACT-OWNER)
    (ok (var-set artist-address value))
    (err err-invalid-user)
  )
)

(define-public (set-commission (amount uint))
  (begin
    (asserts! (is-eq tx-sender CONTRACT-OWNER) (err err-invalid-user))
    (ok (var-set commission amount))
  )
)

(define-public (set-price (price uint))
  (begin
    (asserts! (is-eq tx-sender CONTRACT-OWNER) (err err-invalid-user))
    (ok (var-set mint-price price))
  )
)

(define-public (set-ipfs-full (new-ipfs-full (string-ascii 84)))
  (begin
    (asserts! (and (var-get ipfs-change-enabled) (is-eq tx-sender CONTRACT-OWNER)) (err err-invalid-user))
    (ok (var-set ipfs-full new-ipfs-full))
  )
)

(define-public (set-ipfs-root (new-ipfs-root (string-ascii 80)))
  (begin
    (asserts! (and (var-get ipfs-change-enabled) (is-eq tx-sender CONTRACT-OWNER)) (err err-invalid-user))
    (ok (var-set ipfs-root new-ipfs-root))
  )
)

(define-public (freeze-ipfs-root)
  (begin
    (asserts! (and (var-get ipfs-change-enabled) (is-eq tx-sender CONTRACT-OWNER)) (err err-invalid-user))
    (ok (var-set ipfs-change-enabled false))
  )
)

(define-public (set-mint-status (status bool))
  (begin
    (asserts! (is-eq tx-sender CONTRACT-OWNER) (err err-invalid-user))
    (ok (var-set mint-status status))
  )
)

(define-public (set-mint-addr (mint-addr principal) (sender principal))
  (begin
    (asserts! (is-eq sender CONTRACT-OWNER) (err err-invalid-user))
    (asserts! (is-eq tx-sender (var-get the-mint)) (err err-invalid-user))
    (ok (var-set the-mint mint-addr))
  )
)

(define-public (transfer (token-id uint) (sender principal) (recipient principal))
  (begin
    (asserts! (is-eq tx-sender sender) (err err-invalid-user))
    (nft-transfer? stacks-parrots-3d token-id sender recipient)
  )
)

;; read-only functions
(define-read-only (get-mint-price)
  (ok (var-get mint-price)))

(define-read-only (get-owner (token-id uint))
  (ok (nft-get-owner? stacks-parrots-3d token-id)))

(define-read-only (get-last-token-id)
  (ok (- (var-get last-id) u1)))

  (define-read-only (get-full-uri)
    (ok (var-get ipfs-full))
  )

(define-read-only (get-token-uri (token-id uint))
  (if (< token-id u5001)
    (ok (some (concat (concat (var-get ipfs-root) (unwrap-panic (contract-call? .conversion lookup token-id))) ".json")))
    (ok (some (concat (concat (var-get ipfs-root) (unwrap-panic (contract-call? .conversion-v2 lookup (- token-id u5001)))) ".json")))
    )
)

(define-public (admin-airdrop)
  (begin
    (asserts! (is-eq tx-sender CONTRACT-OWNER) (err err-invalid-user))
    (try! (nft-mint? stacks-parrots-3d u1 'SP3K22XKPT9WJFCE957J94J6XXVZHP7747YNPDTFD))
    (try! (nft-mint? stacks-parrots-3d u2 'SP36NC0KX6RZGPQXR73AMW8R0CXXHS06DRM487A5G))
    (try! (nft-mint? stacks-parrots-3d u3 'SPVCMKZTGYMKYJEHFN4FABNFBBYMM02HNF66A6N6))
    (try! (nft-mint? stacks-parrots-3d u4 'SP3YQ6YDBG7YC2FM4RKA4A5GMZSKZWYSWYZSH9K0P))
    (try! (nft-mint? stacks-parrots-3d u5 'SP3QD9EVZB3E7E7Z3FWH7KBDH5RZWA4PYHSQ0FGTQ))
    (try! (nft-mint? stacks-parrots-3d u6 'SP2RS0YJZ2QH5VYXQ91X06B9QYR90BNGJETWP0V69))
    (try! (nft-mint? stacks-parrots-3d u7 'SP3QC4R6M7M0DAZBXSZCW4FWGDCNDD05FV8Y0AY8C))
    (try! (nft-mint? stacks-parrots-3d u8 'SP1ST9NA85RZQX2D3P5VEXDKE9WXDZRGKHB88A5CF))
    (try! (nft-mint? stacks-parrots-3d u9 'SP36NC0KX6RZGPQXR73AMW8R0CXXHS06DRM487A5G))
    (try! (nft-mint? stacks-parrots-3d u10 'SP27A09VG1SH1J8Z76NXHBGKB0ZWSBZ99DRGAC8NB))
    (try! (nft-mint? stacks-parrots-3d u11 'SP5JMWT45ZF0RHJZSR4XPAEW8MS7J3DFQS5FAJ0X))
    (try! (nft-mint? stacks-parrots-3d u12 'SP197GMEG6WGBRDTCTGGWMRA1G77E65TRXWYKGCT7))
    (try! (nft-mint? stacks-parrots-3d u13 'SP26RK25RPVPZF7QT940CKTQJR6Y5JEHWGWWFDMK4))
    (try! (nft-mint? stacks-parrots-3d u14 'SPPT6DNNC9KQW9MXNYTX4FH3CJXWQP90E5B6K64G))
    (try! (nft-mint? stacks-parrots-3d u15 'SPNZJ9DXN2HGNJDV1NWGPKHVW02ZS6DTJV8WEKF2))
    (try! (nft-mint? stacks-parrots-3d u16 'SPBKC1NGB52EMR5HWXB3P615XKTHD64TXY3D6J1G))
    (try! (nft-mint? stacks-parrots-3d u17 'SPNZJ9DXN2HGNJDV1NWGPKHVW02ZS6DTJV8WEKF2))
    (try! (nft-mint? stacks-parrots-3d u18 'SPAFPBD7M89973WDEN68FKYW761RQVYNHSEFQZB9))
    (try! (nft-mint? stacks-parrots-3d u19 'SP2YGQR4V3BD4AS0H259JD6NVVNHZ7P6VG6Q8B9J3))
    (try! (nft-mint? stacks-parrots-3d u20 'SP1DJD4TJGJF2X3KNMAKYVYQ8RBX9T4CABNQKM10M))
    (try! (nft-mint? stacks-parrots-3d u21 'SPPT6DNNC9KQW9MXNYTX4FH3CJXWQP90E5B6K64G))
    (try! (nft-mint? stacks-parrots-3d u22 'SPPT6DNNC9KQW9MXNYTX4FH3CJXWQP90E5B6K64G))
    (try! (nft-mint? stacks-parrots-3d u23 'SPPT6DNNC9KQW9MXNYTX4FH3CJXWQP90E5B6K64G))
    (try! (nft-mint? stacks-parrots-3d u24 'SP16RTD5EJ1EBNP30X3VF83FZ1H02CD7Z9YCVV1G4))
    (try! (nft-mint? stacks-parrots-3d u25 'SP3VMNHZRPSXM8ANWBMGZ8FN17SNVT1MXXNY0SCFR))
    (try! (nft-mint? stacks-parrots-3d u26 'SPXTCQME93WE51Y3N5B3Z4RE4XFXQ79M3JFR4MTF))
    (try! (nft-mint? stacks-parrots-3d u27 'SPV4GYHQ2B7R831M3F7ZNN22RDDHEKQ52ZN50CDE))
    (try! (nft-mint? stacks-parrots-3d u28 'SPPT6DNNC9KQW9MXNYTX4FH3CJXWQP90E5B6K64G))
    (try! (nft-mint? stacks-parrots-3d u29 'SP6VV2AFXM7ZMT5V3ZAE8M6JXK9EA5N1GPFHJC4M))
    (try! (nft-mint? stacks-parrots-3d u30 'SP31YR3Z34BZ379R54RSN1VCCXZA1236W3RP4TSWJ))
    (try! (nft-mint? stacks-parrots-3d u31 'SP2CHC7GM2Y8RMMSRC7DSDJW3Y7CNYC2Q9EVFSSHV))
    (try! (nft-mint? stacks-parrots-3d u32 'SPPT6DNNC9KQW9MXNYTX4FH3CJXWQP90E5B6K64G))
    (try! (nft-mint? stacks-parrots-3d u33 'SPR0ERQGYW544QPS4Q97A2SVDG2JBBCBJJ71MA6C))
    (try! (nft-mint? stacks-parrots-3d u34 'SP2YGQR4V3BD4AS0H259JD6NVVNHZ7P6VG6Q8B9J3))
    (try! (nft-mint? stacks-parrots-3d u35 'SPWJ630P1F6WQ7AWW50P7W4E4AM9FBJ1QBT9KQTX))
    (try! (nft-mint? stacks-parrots-3d u36 'SP1F934ZWR42NBC8W7YKRXJR3KYZBTMY66A9SF8T3))
    (try! (nft-mint? stacks-parrots-3d u37 'SP15TF0R1GCEFA84WSSRFPWM8XDQSQAJN7QAB31BE))
    (try! (nft-mint? stacks-parrots-3d u38 'SPPT6DNNC9KQW9MXNYTX4FH3CJXWQP90E5B6K64G))
    (try! (nft-mint? stacks-parrots-3d u39 'SP2ZA7GC9H00VM4AEKB50AZFEP7T36X1VD8M9Y2DV))
    (try! (nft-mint? stacks-parrots-3d u40 'SP2RS0YJZ2QH5VYXQ91X06B9QYR90BNGJETWP0V69))
    (try! (nft-mint? stacks-parrots-3d u41 'SPPT6DNNC9KQW9MXNYTX4FH3CJXWQP90E5B6K64G))
    (try! (nft-mint? stacks-parrots-3d u42 'SPN7C68VE0HZJ2812V5ZT444GJPZXE9G3TT9QFYT))
    (try! (nft-mint? stacks-parrots-3d u43 'SP1XA1Z1ZYRMWZAYR5TA756CSDRPP7WN415MZZYHM))
    (try! (nft-mint? stacks-parrots-3d u44 'SP3HV4WQ6NZNJ9QPNP6RN5DCD6T0S9Z74K0MQX486))
    (try! (nft-mint? stacks-parrots-3d u45 'SP1F934ZWR42NBC8W7YKRXJR3KYZBTMY66A9SF8T3))
    (try! (nft-mint? stacks-parrots-3d u46 'SPPT6DNNC9KQW9MXNYTX4FH3CJXWQP90E5B6K64G))
    (try! (nft-mint? stacks-parrots-3d u47 'SP3HV4WQ6NZNJ9QPNP6RN5DCD6T0S9Z74K0MQX486))
    (try! (nft-mint? stacks-parrots-3d u48 'SP3VQM46NM7Z41VP3ZR80M1YRZC92QWK6SSV1EEHG))
    (try! (nft-mint? stacks-parrots-3d u49 'SPPT6DNNC9KQW9MXNYTX4FH3CJXWQP90E5B6K64G))
    (try! (nft-mint? stacks-parrots-3d u50 'SP2CHC7GM2Y8RMMSRC7DSDJW3Y7CNYC2Q9EVFSSHV))
    (try! (nft-mint? stacks-parrots-3d u51 'SP2KZ24AM4X9HGTG8314MS4VSY1CVAFH0G1KBZZ1D))
    (try! (nft-mint? stacks-parrots-3d u52 'SPAFPBD7M89973WDEN68FKYW761RQVYNHSEFQZB9))
    (try! (nft-mint? stacks-parrots-3d u53 'SP26C9TWJYK6DTCD4T6HKBC76DPMK2DXXRNWS3E2D))
    (try! (nft-mint? stacks-parrots-3d u54 'SP1FR2M102H4DE4DH96R4D29RC8AGQZG5D5Y4S7CH))
    (try! (nft-mint? stacks-parrots-3d u55 'SP36NC0KX6RZGPQXR73AMW8R0CXXHS06DRM487A5G))
    (try! (nft-mint? stacks-parrots-3d u56 'SP3E545ADCKY56EVCXZPA87525VM0ZA8DQQAEP77Z))
    (try! (nft-mint? stacks-parrots-3d u57 'SP1WYHPJJVN3P0PS32BMF33P6WVVK1SNRRS28ZF0G))
    (try! (nft-mint? stacks-parrots-3d u58 'SP33G7CYV2ACDVKEK3HV5Q2M1EPJ4T2111HBVMD1T))
    (try! (nft-mint? stacks-parrots-3d u59 'SP2CHC7GM2Y8RMMSRC7DSDJW3Y7CNYC2Q9EVFSSHV))
    (try! (nft-mint? stacks-parrots-3d u60 'SP16YA5N2VE52JRDYXKFZ2TF7T2CBRB4SH8NYKJX1))
    (try! (nft-mint? stacks-parrots-3d u61 'SPPT6DNNC9KQW9MXNYTX4FH3CJXWQP90E5B6K64G))
    (try! (nft-mint? stacks-parrots-3d u62 'SPR52K2MQQR7B3RKFHE8WDG97G0PRPH21PXYR6VB))
    (try! (nft-mint? stacks-parrots-3d u63 'SP3XMYSS7VHPQV9YP2083D3VN8VDH8ZYZYD7XAR6E))
    (try! (nft-mint? stacks-parrots-3d u64 'SP3AQSW210PFW6K3FB1JW62ZHTH11FSVR0SH5AZ6P))
    (try! (nft-mint? stacks-parrots-3d u65 'SP2KZ24AM4X9HGTG8314MS4VSY1CVAFH0G1KBZZ1D))
    (try! (nft-mint? stacks-parrots-3d u66 'SP14R7S7497PS3VMH3WQ1S6NPNXR47G3RRC1G2K0G))
    (try! (nft-mint? stacks-parrots-3d u67 'SP3HV4WQ6NZNJ9QPNP6RN5DCD6T0S9Z74K0MQX486))
    (try! (nft-mint? stacks-parrots-3d u68 'SPPT6DNNC9KQW9MXNYTX4FH3CJXWQP90E5B6K64G))
    (try! (nft-mint? stacks-parrots-3d u69 'SP1DJD4TJGJF2X3KNMAKYVYQ8RBX9T4CABNQKM10M))
    (try! (nft-mint? stacks-parrots-3d u70 'SP2FHRXHTZBFGPFKSNWFGYPNBQXKSXC2JFJZ7BY7D))
    (try! (nft-mint? stacks-parrots-3d u71 'SP2EJMPGZKE983KP58VRZZVTYV6Q99HHZ0WYEKGZR))
    (try! (nft-mint? stacks-parrots-3d u72 'SP20Q2Q6HZ7R7FMY7WX9XQG8KJ79J79EEYG69JE6H))
    (try! (nft-mint? stacks-parrots-3d u73 'SPR0ERQGYW544QPS4Q97A2SVDG2JBBCBJJ71MA6C))
    (try! (nft-mint? stacks-parrots-3d u74 'SP1YT6QRRHPGJVDKQY89MSGGFHYAETD4FKVTBRH1P))
    (try! (nft-mint? stacks-parrots-3d u75 'SP2KZ24AM4X9HGTG8314MS4VSY1CVAFH0G1KBZZ1D))
    (try! (nft-mint? stacks-parrots-3d u76 'SP2CHC7GM2Y8RMMSRC7DSDJW3Y7CNYC2Q9EVFSSHV))
    (try! (nft-mint? stacks-parrots-3d u77 'SPAFPBD7M89973WDEN68FKYW761RQVYNHSEFQZB9))
    (try! (nft-mint? stacks-parrots-3d u78 'SP3HV4WQ6NZNJ9QPNP6RN5DCD6T0S9Z74K0MQX486))
    (try! (nft-mint? stacks-parrots-3d u79 'SP2868VG4Q2G7CAV12M7MZ17XJ018R8D60WF27XQR))
    (try! (nft-mint? stacks-parrots-3d u80 'SPVCMKZTGYMKYJEHFN4FABNFBBYMM02HNF66A6N6))
    (try! (nft-mint? stacks-parrots-3d u81 'SP3K22XKPT9WJFCE957J94J6XXVZHP7747YNPDTFD))
    (try! (nft-mint? stacks-parrots-3d u82 'SPPT6DNNC9KQW9MXNYTX4FH3CJXWQP90E5B6K64G))
    (try! (nft-mint? stacks-parrots-3d u83 'SP3766HJFN7ZRB6708Y2EZ367H4M3PWBJTNVCYV6G))
    (try! (nft-mint? stacks-parrots-3d u84 'SPAFJKGDVS11C9P9DY0ZTNFQ9774R568W9XYZDJV))
    (try! (nft-mint? stacks-parrots-3d u85 'SP2C8P3MM137K1A48D1SRENG67KHEVPZV4K36G3JY))
    (try! (nft-mint? stacks-parrots-3d u86 'SP1WYHPJJVN3P0PS32BMF33P6WVVK1SNRRS28ZF0G))
    (try! (nft-mint? stacks-parrots-3d u87 'SP3XQZJQ87Q6G70PSM0PPVE9MCFP29EJ5CVP3568K))
    (try! (nft-mint? stacks-parrots-3d u88 'SP2868VG4Q2G7CAV12M7MZ17XJ018R8D60WF27XQR))
    (try! (nft-mint? stacks-parrots-3d u89 'SP36NC0KX6RZGPQXR73AMW8R0CXXHS06DRM487A5G))
    (try! (nft-mint? stacks-parrots-3d u90 'SP3VMNHZRPSXM8ANWBMGZ8FN17SNVT1MXXNY0SCFR))
    (try! (nft-mint? stacks-parrots-3d u91 'SP16YA5N2VE52JRDYXKFZ2TF7T2CBRB4SH8NYKJX1))
    (try! (nft-mint? stacks-parrots-3d u92 'SP1CE3NQXDKCJ2KEFFGCVFA5C196S9F0RRX93HY87))
    (try! (nft-mint? stacks-parrots-3d u93 'SP3KPC43PAJA0ZFEYNGZDWTHKPWKSHF8ARP2CQ6ED))
    (try! (nft-mint? stacks-parrots-3d u94 'SP3R4NKXMGW6YXA44X2ESZPKJNV25X4ZN7DPW0RXR))
    (try! (nft-mint? stacks-parrots-3d u95 'SP3CXP82SP2M920C5XX42RMAJ3Y6FS0KS5ZK1N1BC))
    (try! (nft-mint? stacks-parrots-3d u96 'SP1VJ3EFBG4YBCB143S9Z8AMTCRJBN5MYS1EG982A))
    (try! (nft-mint? stacks-parrots-3d u97 'SP3E545ADCKY56EVCXZPA87525VM0ZA8DQQAEP77Z))
    (try! (nft-mint? stacks-parrots-3d u98 'SPAFPBD7M89973WDEN68FKYW761RQVYNHSEFQZB9))
    (try! (nft-mint? stacks-parrots-3d u99 'SP33G7CYV2ACDVKEK3HV5Q2M1EPJ4T2111HBVMD1T))
    (try! (nft-mint? stacks-parrots-3d u100 'SP31YR3Z34BZ379R54RSN1VCCXZA1236W3RP4TSWJ))
    (try! (nft-mint? stacks-parrots-3d u101 'SP3VMNHZRPSXM8ANWBMGZ8FN17SNVT1MXXNY0SCFR))
    (try! (nft-mint? stacks-parrots-3d u102 'SP3HV4WQ6NZNJ9QPNP6RN5DCD6T0S9Z74K0MQX486))
    (try! (nft-mint? stacks-parrots-3d u103 'SP3QD9EVZB3E7E7Z3FWH7KBDH5RZWA4PYHSQ0FGTQ))
    (try! (nft-mint? stacks-parrots-3d u104 'SPVCMKZTGYMKYJEHFN4FABNFBBYMM02HNF66A6N6))
    (try! (nft-mint? stacks-parrots-3d u105 'SPPT6DNNC9KQW9MXNYTX4FH3CJXWQP90E5B6K64G))
    (try! (nft-mint? stacks-parrots-3d u106 'SPPT6DNNC9KQW9MXNYTX4FH3CJXWQP90E5B6K64G))
    (try! (nft-mint? stacks-parrots-3d u107 'SPPT6DNNC9KQW9MXNYTX4FH3CJXWQP90E5B6K64G))
    (try! (nft-mint? stacks-parrots-3d u108 'SP2CHC7GM2Y8RMMSRC7DSDJW3Y7CNYC2Q9EVFSSHV))
    (try! (nft-mint? stacks-parrots-3d u109 'SP3VMNHZRPSXM8ANWBMGZ8FN17SNVT1MXXNY0SCFR))
    (try! (nft-mint? stacks-parrots-3d u110 'SP2R4DNJXP7M340BBK6G3GEBVFBC3D7HK8743F17K))
    (try! (nft-mint? stacks-parrots-3d u111 'SPAFPBD7M89973WDEN68FKYW761RQVYNHSEFQZB9))
    (try! (nft-mint? stacks-parrots-3d u112 'SP3TZ3BCB16A0W0PPFYMGTTWTT3DVWTQEP8DFRAG1))
    (try! (nft-mint? stacks-parrots-3d u113 'SP2EJMPGZKE983KP58VRZZVTYV6Q99HHZ0WYEKGZR))
    (try! (nft-mint? stacks-parrots-3d u114 'SPPT6DNNC9KQW9MXNYTX4FH3CJXWQP90E5B6K64G))
    (try! (nft-mint? stacks-parrots-3d u115 'SP2CHC7GM2Y8RMMSRC7DSDJW3Y7CNYC2Q9EVFSSHV))
    (try! (nft-mint? stacks-parrots-3d u116 'SPAFPBD7M89973WDEN68FKYW761RQVYNHSEFQZB9))
    (try! (nft-mint? stacks-parrots-3d u117 'SPAFPBD7M89973WDEN68FKYW761RQVYNHSEFQZB9))
    (try! (nft-mint? stacks-parrots-3d u118 'SPPT6DNNC9KQW9MXNYTX4FH3CJXWQP90E5B6K64G))
    (try! (nft-mint? stacks-parrots-3d u119 'SP32KNBCPDS2M6CGYNHVFRR855GQVQ340AJ24PETF))
    (try! (nft-mint? stacks-parrots-3d u120 'SP3HV4WQ6NZNJ9QPNP6RN5DCD6T0S9Z74K0MQX486))
    (try! (nft-mint? stacks-parrots-3d u121 'SPPT6DNNC9KQW9MXNYTX4FH3CJXWQP90E5B6K64G))
    (try! (nft-mint? stacks-parrots-3d u122 'SP3E545ADCKY56EVCXZPA87525VM0ZA8DQQAEP77Z))
    (try! (nft-mint? stacks-parrots-3d u123 'SP29C7GQZ5NSP404KNZZYKAX8KBJCV6Z01YDKNVX0))
    (try! (nft-mint? stacks-parrots-3d u124 'SP2R4DNJXP7M340BBK6G3GEBVFBC3D7HK8743F17K))
    (try! (nft-mint? stacks-parrots-3d u125 'SP3766HJFN7ZRB6708Y2EZ367H4M3PWBJTNVCYV6G))
    (try! (nft-mint? stacks-parrots-3d u126 'SP2868VG4Q2G7CAV12M7MZ17XJ018R8D60WF27XQR))
    (try! (nft-mint? stacks-parrots-3d u127 'SP15TF0R1GCEFA84WSSRFPWM8XDQSQAJN7QAB31BE))
    (try! (nft-mint? stacks-parrots-3d u128 'SP1VJ3EFBG4YBCB143S9Z8AMTCRJBN5MYS1EG982A))
    (try! (nft-mint? stacks-parrots-3d u129 'SP36WZAANJF0DBV7D7487SMAX8TJ1EEGKMTX1ZRV6))
    (try! (nft-mint? stacks-parrots-3d u130 'SP3HV4WQ6NZNJ9QPNP6RN5DCD6T0S9Z74K0MQX486))
    (try! (nft-mint? stacks-parrots-3d u131 'SP32KNBCPDS2M6CGYNHVFRR855GQVQ340AJ24PETF))
    (try! (nft-mint? stacks-parrots-3d u132 'SPJ81C2WPQHFB6XTG518JKPABWM639R2X0B331XE))
    (try! (nft-mint? stacks-parrots-3d u133 'SP1VJ3EFBG4YBCB143S9Z8AMTCRJBN5MYS1EG982A))
    (try! (nft-mint? stacks-parrots-3d u134 'SPW05PZKP6CXKF0YAKBAMHV5XY2VXFVSCVKJCDVE))
    (try! (nft-mint? stacks-parrots-3d u135 'SP3QD9EVZB3E7E7Z3FWH7KBDH5RZWA4PYHSQ0FGTQ))
    (try! (nft-mint? stacks-parrots-3d u136 'SP3VQM46NM7Z41VP3ZR80M1YRZC92QWK6SSV1EEHG))
    (try! (nft-mint? stacks-parrots-3d u137 'SPWJ630P1F6WQ7AWW50P7W4E4AM9FBJ1QBT9KQTX))
    (try! (nft-mint? stacks-parrots-3d u138 'SP3HV4WQ6NZNJ9QPNP6RN5DCD6T0S9Z74K0MQX486))
    (try! (nft-mint? stacks-parrots-3d u139 'SP3FF6G73VD2AXJ5A757THZAHEEB385Y36YR49Q12))
    (try! (nft-mint? stacks-parrots-3d u140 'SP3R4NKXMGW6YXA44X2ESZPKJNV25X4ZN7DPW0RXR))
    (try! (nft-mint? stacks-parrots-3d u141 'SPPT6DNNC9KQW9MXNYTX4FH3CJXWQP90E5B6K64G))
    (try! (nft-mint? stacks-parrots-3d u142 'SP3E545ADCKY56EVCXZPA87525VM0ZA8DQQAEP77Z))
    (try! (nft-mint? stacks-parrots-3d u143 'SP1YXXHFWESW7GY7CRT2RB98WEMHSXKDPBQ7EXN1R))
    (try! (nft-mint? stacks-parrots-3d u144 'SP2CHC7GM2Y8RMMSRC7DSDJW3Y7CNYC2Q9EVFSSHV))
    (try! (nft-mint? stacks-parrots-3d u145 'SP1FR2M102H4DE4DH96R4D29RC8AGQZG5D5Y4S7CH))
    (ok true)
  )
)