/* Generated by Nim Compiler v1.6.14 */
#define NIM_INTBITS 64

#include "nimbase.h"
#include <string.h>
#undef LANGUAGE_C
#undef MIPSEB
#undef MIPSEL
#undef PPC
#undef R3000
#undef R4000
#undef i386
#undef linux
#undef mips
#undef near
#undef far
#undef powerpc
#undef unix
#define nimfr_(x, y)
#define nimln_(x, y)
typedef struct tyObject_BuildCache__3RriOFYkrnBg9bAREc08ZSQ tyObject_BuildCache__3RriOFYkrnBg9bAREc08ZSQ;
typedef struct tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g;
typedef struct tyObject_Joptions__KEnZw9a9a5Pq4nzgEqVDEM9cw tyObject_Joptions__KEnZw9a9a5Pq4nzgEqVDEM9cw;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct tyObject_ValueError__5lcTdgqMq62cNGRwBb0thA tyObject_ValueError__5lcTdgqMq62cNGRwBb0thA;
typedef struct tyObject_CatchableError__8K3kdpxrBD9aI27J0kpSCpQ tyObject_CatchableError__8K3kdpxrBD9aI27J0kpSCpQ;
typedef struct Exception Exception;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tySequence__QbmGqFaLnb1IWWToREeaIA tySequence__QbmGqFaLnb1IWWToREeaIA;
typedef struct tyObject_Cell__nhn83Yf9cX7rcmG5W9b4oa6g tyObject_Cell__nhn83Yf9cX7rcmG5W9b4oa6g;
typedef struct tyObject_CellSeq__nav876ELHgxScHhs30CKiA tyObject_CellSeq__nav876ELHgxScHhs30CKiA;
typedef struct tyObject_GcHeap__ZRn9bWCksoiGwT2drZZzyWQ tyObject_GcHeap__ZRn9bWCksoiGwT2drZZzyWQ;
typedef struct tyObject_GcStack__qFeGMKlnq6c9cTM2vPWycQQ tyObject_GcStack__qFeGMKlnq6c9cTM2vPWycQQ;
typedef struct tyObject_MemRegion__6QRscFDo4mEwbg9aL76vDGQ tyObject_MemRegion__6QRscFDo4mEwbg9aL76vDGQ;
typedef struct tyObject_SmallChunk__eUrTKmsk1Dqt5tm2WUT2Lw tyObject_SmallChunk__eUrTKmsk1Dqt5tm2WUT2Lw;
typedef struct tyObject_BigChunk__39bC3HTk2w4NGDjG74oNjmA tyObject_BigChunk__39bC3HTk2w4NGDjG74oNjmA;
typedef struct tyObject_LLChunk__Fjkr5Ya6Zl0UoUGxG047hA tyObject_LLChunk__Fjkr5Ya6Zl0UoUGxG047hA;
typedef struct tyObject_IntSet__WrQriiGmHk59cB1lNPtGo6A tyObject_IntSet__WrQriiGmHk59cB1lNPtGo6A;
typedef struct tyObject_Trunk__Ju1AURWHenTn3cJwAjbUhg tyObject_Trunk__Ju1AURWHenTn3cJwAjbUhg;
typedef struct tyObject_AvlNode__aGkK1t9a0WoXjpugXR6FWpw tyObject_AvlNode__aGkK1t9a0WoXjpugXR6FWpw;
typedef struct tyObject_HeapLinks__5IkCDh5QlsYpsfEMJf6zNw tyObject_HeapLinks__5IkCDh5QlsYpsfEMJf6zNw;
typedef struct tyTuple__p2vAp9cQ6YrpDq9cI3XzEDWA tyTuple__p2vAp9cQ6YrpDq9cI3XzEDWA;
typedef struct tyObject_GcStat__OG9ams3mtFJyICkjTOHbc9bg tyObject_GcStat__OG9ams3mtFJyICkjTOHbc9bg;
typedef struct tyObject_CellSet__A0mJvGLunfUxGkLUtesjdA tyObject_CellSet__A0mJvGLunfUxGkLUtesjdA;
typedef struct tyObject_PageDesc__N7tjEodqPVJaQ6oKQW8YfQ tyObject_PageDesc__N7tjEodqPVJaQ6oKQW8YfQ;
typedef struct tyTuple__Qs8sDfUhU9bpCSJUdwfMJiA tyTuple__Qs8sDfUhU9bpCSJUdwfMJiA;
typedef struct tyObject_OrderedTable__S0a9amCISWbmv4PR18G6gmQ tyObject_OrderedTable__S0a9amCISWbmv4PR18G6gmQ;
typedef struct tySequence__CZrkID0OnHjQpN63AqYJwg tySequence__CZrkID0OnHjQpN63AqYJwg;
typedef struct tySequence__qIo1GWQhO9cOgsAJDKUY8kw tySequence__qIo1GWQhO9cOgsAJDKUY8kw;
typedef struct tySequence__4eQHGndY6XBYpFOH09apV8Q tySequence__4eQHGndY6XBYpFOH09apV8Q;
typedef struct tySequence__sM4lkSb7zS6F7OVMvW9cffQ tySequence__sM4lkSb7zS6F7OVMvW9cffQ;
typedef struct tyTuple__NZDXyOL9bXdVfZI9bh9asxScA tyTuple__NZDXyOL9bXdVfZI9bh9asxScA;
typedef struct tyTuple__UV3llMMYFckfui8YMBuUZA tyTuple__UV3llMMYFckfui8YMBuUZA;
typedef struct tyTuple__CWLiqluAXi3Y4RHZUwBh9bQ tyTuple__CWLiqluAXi3Y4RHZUwBh9bQ;
typedef struct tyTuple__vHUW1Tno3SvNzAormr6Geg tyTuple__vHUW1Tno3SvNzAormr6Geg;
typedef struct tyObject_ToJsonOptions__hwpMtSVqR9ad9atcjwlRIwtg tyObject_ToJsonOptions__hwpMtSVqR9ad9atcjwlRIwtg;
typedef struct tyObject_StackTraceEntry__3r2E7OgmrW3VdUTaooCuyA tyObject_StackTraceEntry__3r2E7OgmrW3VdUTaooCuyA;
struct tyObject_Joptions__KEnZw9a9a5Pq4nzgEqVDEM9cw {
NIM_BOOL allowExtraKeys;
NIM_BOOL allowMissingKeys;
};
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef NU8 tyEnum_TNimKind__pspQAsqJLrw3jEKBD9bxmyQ;
typedef NU8 tySet_tyEnum_TNimTypeFlag__Yt5hq6z2IoHhKZrzIVrc1w;
typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
struct TNimType {
NI size;
NI align;
tyEnum_TNimKind__pspQAsqJLrw3jEKBD9bxmyQ kind;
tySet_tyEnum_TNimTypeFlag__Yt5hq6z2IoHhKZrzIVrc1w flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
struct RootObj {
TNimType* m_type;
};
struct Exception {
  RootObj Sup;
Exception* parent;
NCSTRING name;
NimStringDesc* message;
tySequence__QbmGqFaLnb1IWWToREeaIA* trace;
Exception* up;
};
struct tyObject_CatchableError__8K3kdpxrBD9aI27J0kpSCpQ {
  Exception Sup;
};
struct tyObject_ValueError__5lcTdgqMq62cNGRwBb0thA {
  tyObject_CatchableError__8K3kdpxrBD9aI27J0kpSCpQ Sup;
};
typedef NU8 tyEnum_TNimNodeKind__rrp49bl1h9aEkXfXp9bNg0yZw;
struct TNimNode {
tyEnum_TNimNodeKind__rrp49bl1h9aEkXfXp9bNg0yZw kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct tyObject_Cell__nhn83Yf9cX7rcmG5W9b4oa6g {
NI refcount;
TNimType* typ;
};
struct tyObject_GcStack__qFeGMKlnq6c9cTM2vPWycQQ {
void* bottom;
};
struct tyObject_CellSeq__nav876ELHgxScHhs30CKiA {
NI len;
NI cap;
tyObject_Cell__nhn83Yf9cX7rcmG5W9b4oa6g** d;
};
typedef tyObject_SmallChunk__eUrTKmsk1Dqt5tm2WUT2Lw* tyArray__1eFxjkcKGHnofywkmCV8oQ[256];
typedef NU32 tyArray__BHbOSqU1t9b3Gt7K2c6fQig[24];
typedef tyObject_BigChunk__39bC3HTk2w4NGDjG74oNjmA* tyArray__KxTmKT9a3kTkdwYfqXhEYSw[32];
typedef tyArray__KxTmKT9a3kTkdwYfqXhEYSw tyArray__ATT5LBefmjy9bg8ApRmg3rw[24];
typedef tyObject_Trunk__Ju1AURWHenTn3cJwAjbUhg* tyArray__RxhBwkGQwTHLKhoK685Xfg[256];
struct tyObject_IntSet__WrQriiGmHk59cB1lNPtGo6A {
tyArray__RxhBwkGQwTHLKhoK685Xfg data;
};
typedef tyObject_AvlNode__aGkK1t9a0WoXjpugXR6FWpw* tyArray__DrxDrI9bg9apB70ydOoNZrWw[2];
struct tyObject_AvlNode__aGkK1t9a0WoXjpugXR6FWpw {
tyArray__DrxDrI9bg9apB70ydOoNZrWw link;
NI key;
NI upperBound;
NI level;
};
struct tyTuple__p2vAp9cQ6YrpDq9cI3XzEDWA {
tyObject_BigChunk__39bC3HTk2w4NGDjG74oNjmA* Field0;
NI Field1;
};
typedef tyTuple__p2vAp9cQ6YrpDq9cI3XzEDWA tyArray__wsokuoa9bVBSU4gPLKbFaaw[30];
struct tyObject_HeapLinks__5IkCDh5QlsYpsfEMJf6zNw {
NI len;
tyArray__wsokuoa9bVBSU4gPLKbFaaw chunks;
tyObject_HeapLinks__5IkCDh5QlsYpsfEMJf6zNw* next;
};
struct tyObject_MemRegion__6QRscFDo4mEwbg9aL76vDGQ {
NI minLargeObj;
NI maxLargeObj;
tyArray__1eFxjkcKGHnofywkmCV8oQ freeSmallChunks;
NU32 flBitmap;
tyArray__BHbOSqU1t9b3Gt7K2c6fQig slBitmap;
tyArray__ATT5LBefmjy9bg8ApRmg3rw matrix;
tyObject_LLChunk__Fjkr5Ya6Zl0UoUGxG047hA* llmem;
NI currMem;
NI maxMem;
NI freeMem;
NI occ;
NI lastSize;
tyObject_IntSet__WrQriiGmHk59cB1lNPtGo6A chunkStarts;
tyObject_AvlNode__aGkK1t9a0WoXjpugXR6FWpw* root;
tyObject_AvlNode__aGkK1t9a0WoXjpugXR6FWpw* deleted;
tyObject_AvlNode__aGkK1t9a0WoXjpugXR6FWpw* last;
tyObject_AvlNode__aGkK1t9a0WoXjpugXR6FWpw* freeAvlNodes;
NIM_BOOL locked;
NIM_BOOL blockChunkSizeIncrease;
NI nextChunkSize;
tyObject_AvlNode__aGkK1t9a0WoXjpugXR6FWpw bottomData;
tyObject_HeapLinks__5IkCDh5QlsYpsfEMJf6zNw heapLinks;
};
struct tyObject_GcStat__OG9ams3mtFJyICkjTOHbc9bg {
NI stackScans;
NI cycleCollections;
NI maxThreshold;
NI maxStackSize;
NI maxStackCells;
NI cycleTableSize;
NI64 maxPause;
};
struct tyObject_CellSet__A0mJvGLunfUxGkLUtesjdA {
NI counter;
NI max;
tyObject_PageDesc__N7tjEodqPVJaQ6oKQW8YfQ* head;
tyObject_PageDesc__N7tjEodqPVJaQ6oKQW8YfQ** data;
};
struct tyObject_GcHeap__ZRn9bWCksoiGwT2drZZzyWQ {
tyObject_GcStack__qFeGMKlnq6c9cTM2vPWycQQ stack;
NI cycleThreshold;
NI zctThreshold;
tyObject_CellSeq__nav876ELHgxScHhs30CKiA zct;
tyObject_CellSeq__nav876ELHgxScHhs30CKiA decStack;
tyObject_CellSeq__nav876ELHgxScHhs30CKiA tempStack;
NI recGcLock;
tyObject_MemRegion__6QRscFDo4mEwbg9aL76vDGQ region;
tyObject_GcStat__OG9ams3mtFJyICkjTOHbc9bg stat;
tyObject_CellSet__A0mJvGLunfUxGkLUtesjdA marked;
tyObject_CellSeq__nav876ELHgxScHhs30CKiA additionalRoots;
NI gcThreadId;
};
struct tyTuple__Qs8sDfUhU9bpCSJUdwfMJiA {
NimStringDesc* Field0;
tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* Field1;
};
typedef NU8 tyEnum_JsonNodeKind__SME9c3kTLtQAHAI8HiX0v8A;
struct tyObject_OrderedTable__S0a9amCISWbmv4PR18G6gmQ {
tySequence__CZrkID0OnHjQpN63AqYJwg* data;
NI counter;
NI first;
NI last;
};
struct tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g {
NIM_BOOL isUnquoted;
tyEnum_JsonNodeKind__SME9c3kTLtQAHAI8HiX0v8A kind;
union{
struct {NimStringDesc* str;
} _kind_1;
struct {NI64 num;
} _kind_2;
struct {NF fnum;
} _kind_3;
struct {NIM_BOOL bval;
} _kind_4;
struct {tyObject_OrderedTable__S0a9amCISWbmv4PR18G6gmQ fields;
} _kind_6;
struct {tySequence__qIo1GWQhO9cOgsAJDKUY8kw* elems;
} _kind_7;
};
};
struct tyObject_BuildCache__3RriOFYkrnBg9bAREc08ZSQ {
NimStringDesc* cacheVersion;
NimStringDesc* outputFile;
tySequence__4eQHGndY6XBYpFOH09apV8Q* compile;
tySequence__sM4lkSb7zS6F7OVMvW9cffQ* link;
NimStringDesc* linkcmd;
tySequence__sM4lkSb7zS6F7OVMvW9cffQ* extraCmds;
tySequence__sM4lkSb7zS6F7OVMvW9cffQ* configFiles;
NIM_BOOL stdinInput;
NIM_BOOL projectIsCmd;
NimStringDesc* cmdInput;
NimStringDesc* currentDir;
NimStringDesc* cmdline;
tySequence__4eQHGndY6XBYpFOH09apV8Q* depfiles;
NimStringDesc* nimexe;
};
struct tyTuple__NZDXyOL9bXdVfZI9bh9asxScA {
NimStringDesc* Field0;
NimStringDesc* Field1;
tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* Field2;
};
struct tyTuple__UV3llMMYFckfui8YMBuUZA {
NimStringDesc* Field0;
NimStringDesc* Field1;
};
struct tyTuple__CWLiqluAXi3Y4RHZUwBh9bQ {
NI Field0;
NI Field1;
NimStringDesc* Field2;
tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* Field3;
};
struct tyTuple__vHUW1Tno3SvNzAormr6Geg {
NI Field0;
NI Field1;
NI Field2;
NimStringDesc* Field3;
tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* Field4;
};
typedef NU8 tyEnum_EnumMode__UPxyMpu2tP81EYqUaP7xtQ;
typedef NU8 tyEnum_JsonNodeMode__QYSP9auMM9bae9bt6SiPtuD6Q;
struct tyObject_ToJsonOptions__hwpMtSVqR9ad9atcjwlRIwtg {
tyEnum_EnumMode__UPxyMpu2tP81EYqUaP7xtQ enumMode;
tyEnum_JsonNodeMode__QYSP9auMM9bae9bt6SiPtuD6Q jsonNodeMode;
};
struct tyObject_StackTraceEntry__3r2E7OgmrW3VdUTaooCuyA {
NCSTRING procname;
NI line;
NCSTRING filename;
};
struct tySequence__4eQHGndY6XBYpFOH09apV8Q {
  TGenericSeq Sup;
  tyTuple__UV3llMMYFckfui8YMBuUZA data[SEQ_DECL_SIZE];
};
struct tySequence__qIo1GWQhO9cOgsAJDKUY8kw {
  TGenericSeq Sup;
  tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* data[SEQ_DECL_SIZE];
};
struct tySequence__sM4lkSb7zS6F7OVMvW9cffQ {
  TGenericSeq Sup;
  NimStringDesc* data[SEQ_DECL_SIZE];
};
struct tySequence__QbmGqFaLnb1IWWToREeaIA {
  TGenericSeq Sup;
  tyObject_StackTraceEntry__3r2E7OgmrW3VdUTaooCuyA data[SEQ_DECL_SIZE];
};
struct tySequence__CZrkID0OnHjQpN63AqYJwg {
  TGenericSeq Sup;
  tyTuple__CWLiqluAXi3Y4RHZUwBh9bQ data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, eqeq___pureZjson_2063)(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* a, tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* b);
N_LIB_PRIVATE N_NOINLINE(void, raiseJsonException__stdZjsonutils_169)(NimStringDesc* condStr, NimStringDesc* msg);
N_LIB_PRIVATE N_NOINLINE(void*, newObj)(TNimType* typ, NI size);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
static N_INLINE(void, copyMem__system_1733)(void* dest, void* source, NI size);
static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incRef__system_5311)(tyObject_Cell__nhn83Yf9cX7rcmG5W9b4oa6g* c);
static N_INLINE(NI, pluspercent___system_696)(NI x, NI y);
static N_INLINE(tyObject_Cell__nhn83Yf9cX7rcmG5W9b4oa6g*, usrToCell__system_5273)(void* usr);
static N_INLINE(NI, minuspercent___system_716)(NI x, NI y);
static N_INLINE(void, decRef__system_5318)(tyObject_Cell__nhn83Yf9cX7rcmG5W9b4oa6g* c);
static N_INLINE(NIM_BOOL, ltpercent___system_1005)(NI x, NI y);
static N_INLINE(void, rtlAddZCT__system_5316)(tyObject_Cell__nhn83Yf9cX7rcmG5W9b4oa6g* c);
N_LIB_PRIVATE N_NOINLINE(void, addZCT__system_5267)(tyObject_CellSeq__nav876ELHgxScHhs30CKiA* s, tyObject_Cell__nhn83Yf9cX7rcmG5W9b4oa6g* c);
N_LIB_PRIVATE N_NIMCALL(void, raiseExceptionEx)(Exception* e, NCSTRING ename, NCSTRING procname, NCSTRING filename, NI line);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___stdZjsonutils_408)(tyTuple__Qs8sDfUhU9bpCSJUdwfMJiA x);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, reprEnum)(NI e, TNimType* typ);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, hasKey__pureZjson_3171)(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* node, NimStringDesc* key);
N_LIB_PRIVATE N_NIMCALL(void, fromJson__stdZjsonutils_567)(NimStringDesc** a, tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* b, tyObject_Joptions__KEnZw9a9a5Pq4nzgEqVDEM9cw opt);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, to__stdZjsonutils_582)(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* node);
N_LIB_PRIVATE N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
static N_INLINE(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g*, X5BX5D___pureZjson_3062)(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* node, NimStringDesc* name);
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g**, X5BX5D___pureZjson_2657)(tyObject_OrderedTable__S0a9amCISWbmv4PR18G6gmQ* t, NimStringDesc* key);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___stdZjsonutils_505)(tyTuple__NZDXyOL9bXdVfZI9bh9asxScA x);
N_LIB_PRIVATE N_NIMCALL(void, fromJson__extccomp_1966)(tySequence__4eQHGndY6XBYpFOH09apV8Q** a, tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* b, tyObject_Joptions__KEnZw9a9a5Pq4nzgEqVDEM9cw opt);
N_LIB_PRIVATE N_NIMCALL(NI, len__pureZjson_3008)(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* n);
N_LIB_PRIVATE N_NIMCALL(TGenericSeq*, setLengthSeqV2)(TGenericSeq* s, TNimType* typ, NI newLen);
N_LIB_PRIVATE N_NIMCALL(tySequence__qIo1GWQhO9cOgsAJDKUY8kw*, getElems__pureZjson_226)(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* n, tySequence__qIo1GWQhO9cOgsAJDKUY8kw* default_0);
N_LIB_PRIVATE N_NIMCALL(void, fromJson__extccomp_2018)(tyTuple__UV3llMMYFckfui8YMBuUZA* a, tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* b, tyObject_Joptions__KEnZw9a9a5Pq4nzgEqVDEM9cw opt);
static N_INLINE(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g*, X5BX5D___pureZjson_3137)(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* node, NI index);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___extccomp_2072)(tyTuple__CWLiqluAXi3Y4RHZUwBh9bQ* x);
N_LIB_PRIVATE N_NIMCALL(void, fromJson__extccomp_2154)(tySequence__sM4lkSb7zS6F7OVMvW9cffQ** a, tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* b, tyObject_Joptions__KEnZw9a9a5Pq4nzgEqVDEM9cw opt);
N_LIB_PRIVATE N_NIMCALL(void, fromJson__extccomp_2274)(NIM_BOOL* a, tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* b, tyObject_Joptions__KEnZw9a9a5Pq4nzgEqVDEM9cw opt);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, to__extccomp_2285)(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* node);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___extccomp_2443)(tyTuple__vHUW1Tno3SvNzAormr6Geg* x);
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g*, newJObject__pureZjson_102)(void);
static N_INLINE(void, X5BX5Deq___pureZjson_1942)(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* obj, NimStringDesc* key, tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* val);
N_LIB_PRIVATE N_NIMCALL(void, X5BX5Deq___pureZjson_306)(tyObject_OrderedTable__S0a9amCISWbmv4PR18G6gmQ* t, NimStringDesc* key, tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* val);
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g*, toJson__stdZjsonutils_604)(NimStringDesc* a, tyObject_ToJsonOptions__hwpMtSVqR9ad9atcjwlRIwtg opt);
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g*, percent___pureZjson_1809)(NimStringDesc* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g*, toJson__extccomp_1710)(tySequence__4eQHGndY6XBYpFOH09apV8Q* a, tyObject_ToJsonOptions__hwpMtSVqR9ad9atcjwlRIwtg opt);
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g*, newJArray__pureZjson_133)(void);
N_LIB_PRIVATE N_NIMCALL(void, add__pureZjson_241)(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* father, tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* child);
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g*, toJson__extccomp_1738)(tyTuple__UV3llMMYFckfui8YMBuUZA a, tyObject_ToJsonOptions__hwpMtSVqR9ad9atcjwlRIwtg opt);
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g*, toJson__extccomp_1759)(tySequence__sM4lkSb7zS6F7OVMvW9cffQ* a, tyObject_ToJsonOptions__hwpMtSVqR9ad9atcjwlRIwtg opt);
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g*, toJson__extccomp_1787)(NIM_BOOL a, tyObject_ToJsonOptions__hwpMtSVqR9ad9atcjwlRIwtg opt);
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g*, percent___pureZjson_1835)(NIM_BOOL b);
extern TNimType NTIrefvalueerror__MdotPfdEWddcwl4HcVVgeQ_;
extern TNimType NTIvalueerror__5lcTdgqMq62cNGRwBb0thA_;
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_2, " failed: ", 9);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_3, "\012not (b == nil)", 15);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_4, "BuildCache", 10);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_5, "b.kind == JObject", 17);
extern TNimType NTIjsonnodekind__SME9c3kTLtQAHAI8HiX0v8A_;
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_6, "cacheVersion", 12);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_7, "string", 6);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_8, "false", 5);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_9, "outputFile", 10);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_10, "compile", 7);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_11, "seq[(string, string)]", 21);
extern TNimType NTIseqLtupleLkey58string_value58stringTT__4eQHGndY6XBYpFOH09apV8Q_;
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_12, "(string, string)", 16);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_13, "b.kind == JArray", 16);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_14, "b.len == i", 10);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_15, "link", 4);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_16, "seq[string]", 11);
extern TNimType NTIseqLstringT__sM4lkSb7zS6F7OVMvW9cffQ_;
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_17, "linkcmd", 7);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_18, "extraCmds", 9);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_19, "configFiles", 11);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_20, "stdinInput", 10);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_21, "bool", 4);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_22, "projectIsCmd", 12);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_23, "cmdInput", 8);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_24, "currentDir", 10);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_25, "cmdline", 7);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_26, "depfiles", 8);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_27, "nimexe", 6);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_28, "ok`gensym14", 11);
extern tyObject_GcHeap__ZRn9bWCksoiGwT2drZZzyWQ gch__system_5220;
static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size) {
	void* T1_;
	T1_ = (void*)0;
	T1_ = memcpy(dest, source, ((size_t) (size)));
}
static N_INLINE(void, copyMem__system_1733)(void* dest, void* source, NI size) {
	nimCopyMem(dest, source, size);
}
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src) {
	{
		if (!!((src == ((NimStringDesc*) NIM_NIL)))) goto LA3_;
		copyMem__system_1733(((void*) ((&(*dest).data[(*dest).Sup.len]))), ((void*) ((*src).data)), ((NI) ((NI)((*src).Sup.len + ((NI) 1)))));
		(*dest).Sup.len += (*src).Sup.len;
	}
	LA3_: ;
}
static N_INLINE(NI, pluspercent___system_696)(NI x, NI y) {
	NI result;
	result = (NI)0;
	result = ((NI) ((NU)((NU64)(((NU) (x))) + (NU64)(((NU) (y))))));
	return result;
}
static N_INLINE(void, incRef__system_5311)(tyObject_Cell__nhn83Yf9cX7rcmG5W9b4oa6g* c) {
	(*c).refcount = pluspercent___system_696((*c).refcount, ((NI) 8));
}
static N_INLINE(NI, minuspercent___system_716)(NI x, NI y) {
	NI result;
	result = (NI)0;
	result = ((NI) ((NU)((NU64)(((NU) (x))) - (NU64)(((NU) (y))))));
	return result;
}
static N_INLINE(tyObject_Cell__nhn83Yf9cX7rcmG5W9b4oa6g*, usrToCell__system_5273)(void* usr) {
	tyObject_Cell__nhn83Yf9cX7rcmG5W9b4oa6g* result;
	NI T1_;
	result = (tyObject_Cell__nhn83Yf9cX7rcmG5W9b4oa6g*)0;
	T1_ = (NI)0;
	T1_ = minuspercent___system_716(((NI) (ptrdiff_t) (usr)), ((NI) 16));
	result = ((tyObject_Cell__nhn83Yf9cX7rcmG5W9b4oa6g*) (T1_));
	return result;
}
static N_INLINE(NIM_BOOL, ltpercent___system_1005)(NI x, NI y) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	result = ((NU64)(((NU) (x))) < (NU64)(((NU) (y))));
	return result;
}
static N_INLINE(void, rtlAddZCT__system_5316)(tyObject_Cell__nhn83Yf9cX7rcmG5W9b4oa6g* c) {
	addZCT__system_5267((&gch__system_5220.zct), c);
}
static N_INLINE(void, decRef__system_5318)(tyObject_Cell__nhn83Yf9cX7rcmG5W9b4oa6g* c) {
	(*c).refcount = minuspercent___system_716((*c).refcount, ((NI) 8));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ltpercent___system_1005((*c).refcount, ((NI) 8));
		if (!T3_) goto LA4_;
		rtlAddZCT__system_5316(c);
	}
	LA4_: ;
}
static N_INLINE(void, asgnRef)(void** dest, void* src) {
	{
		tyObject_Cell__nhn83Yf9cX7rcmG5W9b4oa6g* T5_;
		if (!!((src == NIM_NIL))) goto LA3_;
		T5_ = (tyObject_Cell__nhn83Yf9cX7rcmG5W9b4oa6g*)0;
		T5_ = usrToCell__system_5273(src);
		incRef__system_5311(T5_);
	}
	LA3_: ;
	{
		tyObject_Cell__nhn83Yf9cX7rcmG5W9b4oa6g* T10_;
		if (!!(((*dest) == NIM_NIL))) goto LA8_;
		T10_ = (tyObject_Cell__nhn83Yf9cX7rcmG5W9b4oa6g*)0;
		T10_ = usrToCell__system_5273((*dest));
		decRef__system_5318(T10_);
	}
	LA8_: ;
	(*dest) = src;
}
N_LIB_PRIVATE N_NOINLINE(void, raiseJsonException__stdZjsonutils_169)(NimStringDesc* condStr, NimStringDesc* msg) {
	tyObject_ValueError__5lcTdgqMq62cNGRwBb0thA* T1_;
	NimStringDesc* T2_;
	T1_ = NIM_NIL;
	T1_ = (tyObject_ValueError__5lcTdgqMq62cNGRwBb0thA*) newObj((&NTIrefvalueerror__MdotPfdEWddcwl4HcVVgeQ_), sizeof(tyObject_ValueError__5lcTdgqMq62cNGRwBb0thA));
	(*T1_).Sup.Sup.Sup.m_type = (&NTIvalueerror__5lcTdgqMq62cNGRwBb0thA_);
	(*T1_).Sup.Sup.name = "ValueError";
	T2_ = NIM_NIL;
	T2_ = rawNewString((condStr ? condStr->Sup.len : 0) + (msg ? msg->Sup.len : 0) + 9);
appendString(T2_, condStr);
appendString(T2_, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_2));
appendString(T2_, msg);
	asgnRef((void**) (&(*T1_).Sup.Sup.message), T2_);
	asgnRef((void**) (&(*T1_).Sup.Sup.parent), ((Exception*) NIM_NIL));
	raiseExceptionEx((Exception*)T1_, "ValueError", "raiseJsonException", "jsonutils.nim", 139);
}
static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size) {
	void* T1_;
	T1_ = (void*)0;
	T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
	nimSetMem__systemZmemory_7(p, ((int) 0), size);
}
N_LIB_PRIVATE N_NIMCALL(void, fromJson__stdZjsonutils_567)(NimStringDesc** a, tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* b, tyObject_Joptions__KEnZw9a9a5Pq4nzgEqVDEM9cw opt) {
	{
		NIM_BOOL T3_;
		tyTuple__Qs8sDfUhU9bpCSJUdwfMJiA T6_;
		NimStringDesc* T7_;
		T3_ = (NIM_BOOL)0;
		T3_ = eqeq___pureZjson_2063(b, ((tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g*) NIM_NIL));
		if (!!(!(T3_))) goto LA4_;
		nimZeroMem((void*)(&T6_), sizeof(tyTuple__Qs8sDfUhU9bpCSJUdwfMJiA));
		T6_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_7));
		T6_.Field1 = b;
		T7_ = NIM_NIL;
		T7_ = dollar___stdZjsonutils_408(T6_);
		raiseJsonException__stdZjsonutils_169(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_3), T7_);
	}
	LA4_: ;
	unsureAsgnRef((void**) (&(*a)), to__stdZjsonutils_582(b));
}
static N_INLINE(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g*, X5BX5D___pureZjson_3062)(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* node, NimStringDesc* name) {
	tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* result;
	tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g** T1_;
	result = NIM_NIL;
	T1_ = (tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g**)0;
	T1_ = X5BX5D___pureZjson_2657((&(*node)._kind_6.fields), name);
	result = (*T1_);
	return result;
}
static N_INLINE(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g*, X5BX5D___pureZjson_3137)(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* node, NI index) {
	tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* result;
{	result = NIM_NIL;
	result = (*node)._kind_7.elems->data[index];
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, fromJson__extccomp_2018)(tyTuple__UV3llMMYFckfui8YMBuUZA* a, tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* b, tyObject_Joptions__KEnZw9a9a5Pq4nzgEqVDEM9cw opt) {
	NI i;
	tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T12_;
	tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T13_;
	{
		NIM_BOOL T3_;
		tyTuple__Qs8sDfUhU9bpCSJUdwfMJiA T6_;
		NimStringDesc* T7_;
		T3_ = (NIM_BOOL)0;
		T3_ = eqeq___pureZjson_2063(b, ((tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g*) NIM_NIL));
		if (!!(!(T3_))) goto LA4_;
		nimZeroMem((void*)(&T6_), sizeof(tyTuple__Qs8sDfUhU9bpCSJUdwfMJiA));
		T6_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_12));
		T6_.Field1 = b;
		T7_ = NIM_NIL;
		T7_ = dollar___stdZjsonutils_408(T6_);
		raiseJsonException__stdZjsonutils_169(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_3), T7_);
	}
	LA4_: ;
	{
		if (!!(((*b).kind == ((tyEnum_JsonNodeKind__SME9c3kTLtQAHAI8HiX0v8A) 6)))) goto LA10_;
		raiseJsonException__stdZjsonutils_169(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_13), reprEnum((NI)(*b).kind, (&NTIjsonnodekind__SME9c3kTLtQAHAI8HiX0v8A_)));
	}
	LA10_: ;
	i = ((NI) 0);
	T12_ = NIM_NIL;
	T12_ = X5BX5D___pureZjson_3137(b, i);
	fromJson__stdZjsonutils_567((&(*a).Field0), T12_, opt);
	i += ((NI) 1);
	T13_ = NIM_NIL;
	T13_ = X5BX5D___pureZjson_3137(b, i);
	fromJson__stdZjsonutils_567((&(*a).Field1), T13_, opt);
	i += ((NI) 1);
	{
		NI T16_;
		tyTuple__CWLiqluAXi3Y4RHZUwBh9bQ T19_;
		NimStringDesc* T20_;
		T16_ = (NI)0;
		T16_ = len__pureZjson_3008(b);
		if (!!((T16_ == i))) goto LA17_;
		nimZeroMem((void*)(&T19_), sizeof(tyTuple__CWLiqluAXi3Y4RHZUwBh9bQ));
		T19_.Field0 = len__pureZjson_3008(b);
		T19_.Field1 = i;
		T19_.Field2 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_12));
		T19_.Field3 = b;
		T20_ = NIM_NIL;
		T20_ = dollar___extccomp_2072((&T19_));
		raiseJsonException__stdZjsonutils_169(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_14), T20_);
	}
	LA17_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, fromJson__extccomp_1966)(tySequence__4eQHGndY6XBYpFOH09apV8Q** a, tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* b, tyObject_Joptions__KEnZw9a9a5Pq4nzgEqVDEM9cw opt) {
	NI T8_;
	{
		NIM_BOOL T3_;
		tyTuple__Qs8sDfUhU9bpCSJUdwfMJiA T6_;
		NimStringDesc* T7_;
		T3_ = (NIM_BOOL)0;
		T3_ = eqeq___pureZjson_2063(b, ((tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g*) NIM_NIL));
		if (!!(!(T3_))) goto LA4_;
		nimZeroMem((void*)(&T6_), sizeof(tyTuple__Qs8sDfUhU9bpCSJUdwfMJiA));
		T6_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_11));
		T6_.Field1 = b;
		T7_ = NIM_NIL;
		T7_ = dollar___stdZjsonutils_408(T6_);
		raiseJsonException__stdZjsonutils_169(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_3), T7_);
	}
	LA4_: ;
	T8_ = (NI)0;
	T8_ = len__pureZjson_3008(b);
	unsureAsgnRef((void**) (&(*a)), (tySequence__4eQHGndY6XBYpFOH09apV8Q*) setLengthSeqV2(((*a))?&((*a))->Sup:NIM_NIL, (&NTIseqLtupleLkey58string_value58stringTT__4eQHGndY6XBYpFOH09apV8Q_), ((NI) (T8_))));
	{
		NI i;
		tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* val;
		tySequence__qIo1GWQhO9cOgsAJDKUY8kw* colontmp_;
		tySequence__qIo1GWQhO9cOgsAJDKUY8kw* T10_;
		NI i_2;
		NI L;
		NI T11_;
		i = (NI)0;
		val = NIM_NIL;
		colontmp_ = NIM_NIL;
		T10_ = NIM_NIL;
		T10_ = NIM_NIL;
		colontmp_ = getElems__pureZjson_226(b, T10_);
		i_2 = ((NI) 0);
		T11_ = (colontmp_ ? colontmp_->Sup.len : 0);
		L = T11_;
		{
			while (1) {
				if (!(i_2 < L)) goto LA13;
				i = i_2;
				val = colontmp_->data[i_2];
				fromJson__extccomp_2018((&(*a)->data[i]), val, opt);
				i_2 += ((NI) 1);
			} LA13: ;
		}
	}
}
N_LIB_PRIVATE N_NIMCALL(void, fromJson__extccomp_2154)(tySequence__sM4lkSb7zS6F7OVMvW9cffQ** a, tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* b, tyObject_Joptions__KEnZw9a9a5Pq4nzgEqVDEM9cw opt) {
	NI T8_;
	{
		NIM_BOOL T3_;
		tyTuple__Qs8sDfUhU9bpCSJUdwfMJiA T6_;
		NimStringDesc* T7_;
		T3_ = (NIM_BOOL)0;
		T3_ = eqeq___pureZjson_2063(b, ((tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g*) NIM_NIL));
		if (!!(!(T3_))) goto LA4_;
		nimZeroMem((void*)(&T6_), sizeof(tyTuple__Qs8sDfUhU9bpCSJUdwfMJiA));
		T6_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_16));
		T6_.Field1 = b;
		T7_ = NIM_NIL;
		T7_ = dollar___stdZjsonutils_408(T6_);
		raiseJsonException__stdZjsonutils_169(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_3), T7_);
	}
	LA4_: ;
	T8_ = (NI)0;
	T8_ = len__pureZjson_3008(b);
	unsureAsgnRef((void**) (&(*a)), (tySequence__sM4lkSb7zS6F7OVMvW9cffQ*) setLengthSeqV2(((*a))?&((*a))->Sup:NIM_NIL, (&NTIseqLstringT__sM4lkSb7zS6F7OVMvW9cffQ_), ((NI) (T8_))));
	{
		NI i;
		tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* val;
		tySequence__qIo1GWQhO9cOgsAJDKUY8kw* colontmp_;
		tySequence__qIo1GWQhO9cOgsAJDKUY8kw* T10_;
		NI i_2;
		NI L;
		NI T11_;
		i = (NI)0;
		val = NIM_NIL;
		colontmp_ = NIM_NIL;
		T10_ = NIM_NIL;
		T10_ = NIM_NIL;
		colontmp_ = getElems__pureZjson_226(b, T10_);
		i_2 = ((NI) 0);
		T11_ = (colontmp_ ? colontmp_->Sup.len : 0);
		L = T11_;
		{
			while (1) {
				if (!(i_2 < L)) goto LA13;
				i = i_2;
				val = colontmp_->data[i_2];
				fromJson__stdZjsonutils_567((&(*a)->data[i]), val, opt);
				i_2 += ((NI) 1);
			} LA13: ;
		}
	}
}
N_LIB_PRIVATE N_NIMCALL(void, fromJson__extccomp_2274)(NIM_BOOL* a, tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* b, tyObject_Joptions__KEnZw9a9a5Pq4nzgEqVDEM9cw opt) {
	{
		NIM_BOOL T3_;
		tyTuple__Qs8sDfUhU9bpCSJUdwfMJiA T6_;
		NimStringDesc* T7_;
		T3_ = (NIM_BOOL)0;
		T3_ = eqeq___pureZjson_2063(b, ((tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g*) NIM_NIL));
		if (!!(!(T3_))) goto LA4_;
		nimZeroMem((void*)(&T6_), sizeof(tyTuple__Qs8sDfUhU9bpCSJUdwfMJiA));
		T6_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_21));
		T6_.Field1 = b;
		T7_ = NIM_NIL;
		T7_ = dollar___stdZjsonutils_408(T6_);
		raiseJsonException__stdZjsonutils_169(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_3), T7_);
	}
	LA4_: ;
	(*a) = to__extccomp_2285(b);
}
N_LIB_PRIVATE N_NIMCALL(void, fromJson__extccomp_1852)(tyObject_BuildCache__3RriOFYkrnBg9bAREc08ZSQ* a, tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* b, tyObject_Joptions__KEnZw9a9a5Pq4nzgEqVDEM9cw opt) {
	NI numX60gensym14_;
	NI numMatchedX60gensym14_;
	NIM_BOOL okX60gensym14_;
	{
		NIM_BOOL T3_;
		tyTuple__Qs8sDfUhU9bpCSJUdwfMJiA T6_;
		NimStringDesc* T7_;
		T3_ = (NIM_BOOL)0;
		T3_ = eqeq___pureZjson_2063(b, ((tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g*) NIM_NIL));
		if (!!(!(T3_))) goto LA4_;
		nimZeroMem((void*)(&T6_), sizeof(tyTuple__Qs8sDfUhU9bpCSJUdwfMJiA));
		T6_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
		T6_.Field1 = b;
		T7_ = NIM_NIL;
		T7_ = dollar___stdZjsonutils_408(T6_);
		raiseJsonException__stdZjsonutils_169(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_3), T7_);
	}
	LA4_: ;
	{
		if (!!(((*b).kind == ((tyEnum_JsonNodeKind__SME9c3kTLtQAHAI8HiX0v8A) 5)))) goto LA10_;
		raiseJsonException__stdZjsonutils_169(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_5), reprEnum((NI)(*b).kind, (&NTIjsonnodekind__SME9c3kTLtQAHAI8HiX0v8A_)));
	}
	LA10_: ;
	numX60gensym14_ = ((NI) 0);
	numMatchedX60gensym14_ = ((NI) 0);
	numX60gensym14_ += ((NI) 1);
	{
		NIM_BOOL T14_;
		tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T17_;
		T14_ = (NIM_BOOL)0;
		T14_ = hasKey__pureZjson_3171(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_6));
		if (!T14_) goto LA15_;
		numMatchedX60gensym14_ += ((NI) 1);
		T17_ = NIM_NIL;
		T17_ = X5BX5D___pureZjson_3062(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_6));
		fromJson__stdZjsonutils_567((&(*a).cacheVersion), T17_, opt);
	}
	goto LA12_;
	LA15_: ;
	{
		if (!opt.allowMissingKeys) goto LA19_;
	}
	goto LA12_;
	LA19_: ;
	{
		{
			tyTuple__NZDXyOL9bXdVfZI9bh9asxScA T26_;
			NimStringDesc* T27_;
			if (!NIM_TRUE) goto LA24_;
			nimZeroMem((void*)(&T26_), sizeof(tyTuple__NZDXyOL9bXdVfZI9bh9asxScA));
			T26_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
			T26_.Field1 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_6));
			T26_.Field2 = b;
			T27_ = NIM_NIL;
			T27_ = dollar___stdZjsonutils_505(T26_);
			raiseJsonException__stdZjsonutils_169(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_8), T27_);
		}
		LA24_: ;
	}
	LA12_: ;
	numX60gensym14_ += ((NI) 1);
	{
		NIM_BOOL T30_;
		tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T33_;
		T30_ = (NIM_BOOL)0;
		T30_ = hasKey__pureZjson_3171(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_9));
		if (!T30_) goto LA31_;
		numMatchedX60gensym14_ += ((NI) 1);
		T33_ = NIM_NIL;
		T33_ = X5BX5D___pureZjson_3062(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_9));
		fromJson__stdZjsonutils_567((&(*a).outputFile), T33_, opt);
	}
	goto LA28_;
	LA31_: ;
	{
		if (!opt.allowMissingKeys) goto LA35_;
	}
	goto LA28_;
	LA35_: ;
	{
		{
			tyTuple__NZDXyOL9bXdVfZI9bh9asxScA T42_;
			NimStringDesc* T43_;
			if (!NIM_TRUE) goto LA40_;
			nimZeroMem((void*)(&T42_), sizeof(tyTuple__NZDXyOL9bXdVfZI9bh9asxScA));
			T42_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
			T42_.Field1 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_9));
			T42_.Field2 = b;
			T43_ = NIM_NIL;
			T43_ = dollar___stdZjsonutils_505(T42_);
			raiseJsonException__stdZjsonutils_169(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_8), T43_);
		}
		LA40_: ;
	}
	LA28_: ;
	numX60gensym14_ += ((NI) 1);
	{
		NIM_BOOL T46_;
		tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T49_;
		T46_ = (NIM_BOOL)0;
		T46_ = hasKey__pureZjson_3171(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_10));
		if (!T46_) goto LA47_;
		numMatchedX60gensym14_ += ((NI) 1);
		T49_ = NIM_NIL;
		T49_ = X5BX5D___pureZjson_3062(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_10));
		fromJson__extccomp_1966((&(*a).compile), T49_, opt);
	}
	goto LA44_;
	LA47_: ;
	{
		if (!opt.allowMissingKeys) goto LA51_;
	}
	goto LA44_;
	LA51_: ;
	{
		{
			tyTuple__NZDXyOL9bXdVfZI9bh9asxScA T58_;
			NimStringDesc* T59_;
			if (!NIM_TRUE) goto LA56_;
			nimZeroMem((void*)(&T58_), sizeof(tyTuple__NZDXyOL9bXdVfZI9bh9asxScA));
			T58_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
			T58_.Field1 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_10));
			T58_.Field2 = b;
			T59_ = NIM_NIL;
			T59_ = dollar___stdZjsonutils_505(T58_);
			raiseJsonException__stdZjsonutils_169(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_8), T59_);
		}
		LA56_: ;
	}
	LA44_: ;
	numX60gensym14_ += ((NI) 1);
	{
		NIM_BOOL T62_;
		tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T65_;
		T62_ = (NIM_BOOL)0;
		T62_ = hasKey__pureZjson_3171(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_15));
		if (!T62_) goto LA63_;
		numMatchedX60gensym14_ += ((NI) 1);
		T65_ = NIM_NIL;
		T65_ = X5BX5D___pureZjson_3062(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_15));
		fromJson__extccomp_2154((&(*a).link), T65_, opt);
	}
	goto LA60_;
	LA63_: ;
	{
		if (!opt.allowMissingKeys) goto LA67_;
	}
	goto LA60_;
	LA67_: ;
	{
		{
			tyTuple__NZDXyOL9bXdVfZI9bh9asxScA T74_;
			NimStringDesc* T75_;
			if (!NIM_TRUE) goto LA72_;
			nimZeroMem((void*)(&T74_), sizeof(tyTuple__NZDXyOL9bXdVfZI9bh9asxScA));
			T74_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
			T74_.Field1 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_15));
			T74_.Field2 = b;
			T75_ = NIM_NIL;
			T75_ = dollar___stdZjsonutils_505(T74_);
			raiseJsonException__stdZjsonutils_169(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_8), T75_);
		}
		LA72_: ;
	}
	LA60_: ;
	numX60gensym14_ += ((NI) 1);
	{
		NIM_BOOL T78_;
		tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T81_;
		T78_ = (NIM_BOOL)0;
		T78_ = hasKey__pureZjson_3171(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_17));
		if (!T78_) goto LA79_;
		numMatchedX60gensym14_ += ((NI) 1);
		T81_ = NIM_NIL;
		T81_ = X5BX5D___pureZjson_3062(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_17));
		fromJson__stdZjsonutils_567((&(*a).linkcmd), T81_, opt);
	}
	goto LA76_;
	LA79_: ;
	{
		if (!opt.allowMissingKeys) goto LA83_;
	}
	goto LA76_;
	LA83_: ;
	{
		{
			tyTuple__NZDXyOL9bXdVfZI9bh9asxScA T90_;
			NimStringDesc* T91_;
			if (!NIM_TRUE) goto LA88_;
			nimZeroMem((void*)(&T90_), sizeof(tyTuple__NZDXyOL9bXdVfZI9bh9asxScA));
			T90_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
			T90_.Field1 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_17));
			T90_.Field2 = b;
			T91_ = NIM_NIL;
			T91_ = dollar___stdZjsonutils_505(T90_);
			raiseJsonException__stdZjsonutils_169(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_8), T91_);
		}
		LA88_: ;
	}
	LA76_: ;
	numX60gensym14_ += ((NI) 1);
	{
		NIM_BOOL T94_;
		tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T97_;
		T94_ = (NIM_BOOL)0;
		T94_ = hasKey__pureZjson_3171(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_18));
		if (!T94_) goto LA95_;
		numMatchedX60gensym14_ += ((NI) 1);
		T97_ = NIM_NIL;
		T97_ = X5BX5D___pureZjson_3062(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_18));
		fromJson__extccomp_2154((&(*a).extraCmds), T97_, opt);
	}
	goto LA92_;
	LA95_: ;
	{
		if (!opt.allowMissingKeys) goto LA99_;
	}
	goto LA92_;
	LA99_: ;
	{
		{
			tyTuple__NZDXyOL9bXdVfZI9bh9asxScA T106_;
			NimStringDesc* T107_;
			if (!NIM_TRUE) goto LA104_;
			nimZeroMem((void*)(&T106_), sizeof(tyTuple__NZDXyOL9bXdVfZI9bh9asxScA));
			T106_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
			T106_.Field1 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_18));
			T106_.Field2 = b;
			T107_ = NIM_NIL;
			T107_ = dollar___stdZjsonutils_505(T106_);
			raiseJsonException__stdZjsonutils_169(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_8), T107_);
		}
		LA104_: ;
	}
	LA92_: ;
	numX60gensym14_ += ((NI) 1);
	{
		NIM_BOOL T110_;
		tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T113_;
		T110_ = (NIM_BOOL)0;
		T110_ = hasKey__pureZjson_3171(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_19));
		if (!T110_) goto LA111_;
		numMatchedX60gensym14_ += ((NI) 1);
		T113_ = NIM_NIL;
		T113_ = X5BX5D___pureZjson_3062(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_19));
		fromJson__extccomp_2154((&(*a).configFiles), T113_, opt);
	}
	goto LA108_;
	LA111_: ;
	{
		if (!opt.allowMissingKeys) goto LA115_;
	}
	goto LA108_;
	LA115_: ;
	{
		{
			tyTuple__NZDXyOL9bXdVfZI9bh9asxScA T122_;
			NimStringDesc* T123_;
			if (!NIM_TRUE) goto LA120_;
			nimZeroMem((void*)(&T122_), sizeof(tyTuple__NZDXyOL9bXdVfZI9bh9asxScA));
			T122_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
			T122_.Field1 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_19));
			T122_.Field2 = b;
			T123_ = NIM_NIL;
			T123_ = dollar___stdZjsonutils_505(T122_);
			raiseJsonException__stdZjsonutils_169(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_8), T123_);
		}
		LA120_: ;
	}
	LA108_: ;
	numX60gensym14_ += ((NI) 1);
	{
		NIM_BOOL T126_;
		tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T129_;
		T126_ = (NIM_BOOL)0;
		T126_ = hasKey__pureZjson_3171(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_20));
		if (!T126_) goto LA127_;
		numMatchedX60gensym14_ += ((NI) 1);
		T129_ = NIM_NIL;
		T129_ = X5BX5D___pureZjson_3062(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_20));
		fromJson__extccomp_2274((&(*a).stdinInput), T129_, opt);
	}
	goto LA124_;
	LA127_: ;
	{
		if (!opt.allowMissingKeys) goto LA131_;
	}
	goto LA124_;
	LA131_: ;
	{
		{
			tyTuple__NZDXyOL9bXdVfZI9bh9asxScA T138_;
			NimStringDesc* T139_;
			if (!NIM_TRUE) goto LA136_;
			nimZeroMem((void*)(&T138_), sizeof(tyTuple__NZDXyOL9bXdVfZI9bh9asxScA));
			T138_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
			T138_.Field1 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_20));
			T138_.Field2 = b;
			T139_ = NIM_NIL;
			T139_ = dollar___stdZjsonutils_505(T138_);
			raiseJsonException__stdZjsonutils_169(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_8), T139_);
		}
		LA136_: ;
	}
	LA124_: ;
	numX60gensym14_ += ((NI) 1);
	{
		NIM_BOOL T142_;
		tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T145_;
		T142_ = (NIM_BOOL)0;
		T142_ = hasKey__pureZjson_3171(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_22));
		if (!T142_) goto LA143_;
		numMatchedX60gensym14_ += ((NI) 1);
		T145_ = NIM_NIL;
		T145_ = X5BX5D___pureZjson_3062(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_22));
		fromJson__extccomp_2274((&(*a).projectIsCmd), T145_, opt);
	}
	goto LA140_;
	LA143_: ;
	{
		if (!opt.allowMissingKeys) goto LA147_;
	}
	goto LA140_;
	LA147_: ;
	{
		{
			tyTuple__NZDXyOL9bXdVfZI9bh9asxScA T154_;
			NimStringDesc* T155_;
			if (!NIM_TRUE) goto LA152_;
			nimZeroMem((void*)(&T154_), sizeof(tyTuple__NZDXyOL9bXdVfZI9bh9asxScA));
			T154_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
			T154_.Field1 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_22));
			T154_.Field2 = b;
			T155_ = NIM_NIL;
			T155_ = dollar___stdZjsonutils_505(T154_);
			raiseJsonException__stdZjsonutils_169(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_8), T155_);
		}
		LA152_: ;
	}
	LA140_: ;
	numX60gensym14_ += ((NI) 1);
	{
		NIM_BOOL T158_;
		tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T161_;
		T158_ = (NIM_BOOL)0;
		T158_ = hasKey__pureZjson_3171(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_23));
		if (!T158_) goto LA159_;
		numMatchedX60gensym14_ += ((NI) 1);
		T161_ = NIM_NIL;
		T161_ = X5BX5D___pureZjson_3062(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_23));
		fromJson__stdZjsonutils_567((&(*a).cmdInput), T161_, opt);
	}
	goto LA156_;
	LA159_: ;
	{
		if (!opt.allowMissingKeys) goto LA163_;
	}
	goto LA156_;
	LA163_: ;
	{
		{
			tyTuple__NZDXyOL9bXdVfZI9bh9asxScA T170_;
			NimStringDesc* T171_;
			if (!NIM_TRUE) goto LA168_;
			nimZeroMem((void*)(&T170_), sizeof(tyTuple__NZDXyOL9bXdVfZI9bh9asxScA));
			T170_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
			T170_.Field1 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_23));
			T170_.Field2 = b;
			T171_ = NIM_NIL;
			T171_ = dollar___stdZjsonutils_505(T170_);
			raiseJsonException__stdZjsonutils_169(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_8), T171_);
		}
		LA168_: ;
	}
	LA156_: ;
	numX60gensym14_ += ((NI) 1);
	{
		NIM_BOOL T174_;
		tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T177_;
		T174_ = (NIM_BOOL)0;
		T174_ = hasKey__pureZjson_3171(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_24));
		if (!T174_) goto LA175_;
		numMatchedX60gensym14_ += ((NI) 1);
		T177_ = NIM_NIL;
		T177_ = X5BX5D___pureZjson_3062(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_24));
		fromJson__stdZjsonutils_567((&(*a).currentDir), T177_, opt);
	}
	goto LA172_;
	LA175_: ;
	{
		if (!opt.allowMissingKeys) goto LA179_;
	}
	goto LA172_;
	LA179_: ;
	{
		{
			tyTuple__NZDXyOL9bXdVfZI9bh9asxScA T186_;
			NimStringDesc* T187_;
			if (!NIM_TRUE) goto LA184_;
			nimZeroMem((void*)(&T186_), sizeof(tyTuple__NZDXyOL9bXdVfZI9bh9asxScA));
			T186_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
			T186_.Field1 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_24));
			T186_.Field2 = b;
			T187_ = NIM_NIL;
			T187_ = dollar___stdZjsonutils_505(T186_);
			raiseJsonException__stdZjsonutils_169(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_8), T187_);
		}
		LA184_: ;
	}
	LA172_: ;
	numX60gensym14_ += ((NI) 1);
	{
		NIM_BOOL T190_;
		tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T193_;
		T190_ = (NIM_BOOL)0;
		T190_ = hasKey__pureZjson_3171(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_25));
		if (!T190_) goto LA191_;
		numMatchedX60gensym14_ += ((NI) 1);
		T193_ = NIM_NIL;
		T193_ = X5BX5D___pureZjson_3062(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_25));
		fromJson__stdZjsonutils_567((&(*a).cmdline), T193_, opt);
	}
	goto LA188_;
	LA191_: ;
	{
		if (!opt.allowMissingKeys) goto LA195_;
	}
	goto LA188_;
	LA195_: ;
	{
		{
			tyTuple__NZDXyOL9bXdVfZI9bh9asxScA T202_;
			NimStringDesc* T203_;
			if (!NIM_TRUE) goto LA200_;
			nimZeroMem((void*)(&T202_), sizeof(tyTuple__NZDXyOL9bXdVfZI9bh9asxScA));
			T202_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
			T202_.Field1 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_25));
			T202_.Field2 = b;
			T203_ = NIM_NIL;
			T203_ = dollar___stdZjsonutils_505(T202_);
			raiseJsonException__stdZjsonutils_169(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_8), T203_);
		}
		LA200_: ;
	}
	LA188_: ;
	numX60gensym14_ += ((NI) 1);
	{
		NIM_BOOL T206_;
		tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T209_;
		T206_ = (NIM_BOOL)0;
		T206_ = hasKey__pureZjson_3171(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_26));
		if (!T206_) goto LA207_;
		numMatchedX60gensym14_ += ((NI) 1);
		T209_ = NIM_NIL;
		T209_ = X5BX5D___pureZjson_3062(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_26));
		fromJson__extccomp_1966((&(*a).depfiles), T209_, opt);
	}
	goto LA204_;
	LA207_: ;
	{
		if (!opt.allowMissingKeys) goto LA211_;
	}
	goto LA204_;
	LA211_: ;
	{
		{
			tyTuple__NZDXyOL9bXdVfZI9bh9asxScA T218_;
			NimStringDesc* T219_;
			if (!NIM_TRUE) goto LA216_;
			nimZeroMem((void*)(&T218_), sizeof(tyTuple__NZDXyOL9bXdVfZI9bh9asxScA));
			T218_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
			T218_.Field1 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_26));
			T218_.Field2 = b;
			T219_ = NIM_NIL;
			T219_ = dollar___stdZjsonutils_505(T218_);
			raiseJsonException__stdZjsonutils_169(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_8), T219_);
		}
		LA216_: ;
	}
	LA204_: ;
	numX60gensym14_ += ((NI) 1);
	{
		NIM_BOOL T222_;
		tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T225_;
		T222_ = (NIM_BOOL)0;
		T222_ = hasKey__pureZjson_3171(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_27));
		if (!T222_) goto LA223_;
		numMatchedX60gensym14_ += ((NI) 1);
		T225_ = NIM_NIL;
		T225_ = X5BX5D___pureZjson_3062(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_27));
		fromJson__stdZjsonutils_567((&(*a).nimexe), T225_, opt);
	}
	goto LA220_;
	LA223_: ;
	{
		if (!opt.allowMissingKeys) goto LA227_;
	}
	goto LA220_;
	LA227_: ;
	{
		{
			tyTuple__NZDXyOL9bXdVfZI9bh9asxScA T234_;
			NimStringDesc* T235_;
			if (!NIM_TRUE) goto LA232_;
			nimZeroMem((void*)(&T234_), sizeof(tyTuple__NZDXyOL9bXdVfZI9bh9asxScA));
			T234_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
			T234_.Field1 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_27));
			T234_.Field2 = b;
			T235_ = NIM_NIL;
			T235_ = dollar___stdZjsonutils_505(T234_);
			raiseJsonException__stdZjsonutils_169(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_8), T235_);
		}
		LA232_: ;
	}
	LA220_: ;
	{
		NIM_BOOL T238_;
		T238_ = (NIM_BOOL)0;
		T238_ = opt.allowExtraKeys;
		if (!(T238_)) goto LA239_;
		T238_ = opt.allowMissingKeys;
		LA239_: ;
		if (!T238_) goto LA240_;
		okX60gensym14_ = NIM_TRUE;
	}
	goto LA236_;
	LA240_: ;
	{
		if (!opt.allowExtraKeys) goto LA243_;
		okX60gensym14_ = (numX60gensym14_ == numMatchedX60gensym14_);
	}
	goto LA236_;
	LA243_: ;
	{
		NI T248_;
		if (!opt.allowMissingKeys) goto LA246_;
		T248_ = (NI)0;
		T248_ = len__pureZjson_3008(b);
		okX60gensym14_ = (T248_ == numMatchedX60gensym14_);
	}
	goto LA236_;
	LA246_: ;
	{
		NIM_BOOL T250_;
		NI T251_;
		T250_ = (NIM_BOOL)0;
		T251_ = (NI)0;
		T251_ = len__pureZjson_3008(b);
		T250_ = (T251_ == numX60gensym14_);
		if (!(T250_)) goto LA252_;
		T250_ = (numX60gensym14_ == numMatchedX60gensym14_);
		LA252_: ;
		okX60gensym14_ = T250_;
	}
	LA236_: ;
	{
		tyTuple__vHUW1Tno3SvNzAormr6Geg T257_;
		NimStringDesc* T258_;
		if (!!(okX60gensym14_)) goto LA255_;
		nimZeroMem((void*)(&T257_), sizeof(tyTuple__vHUW1Tno3SvNzAormr6Geg));
		T257_.Field0 = len__pureZjson_3008(b);
		T257_.Field1 = numX60gensym14_;
		T257_.Field2 = numMatchedX60gensym14_;
		T257_.Field3 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
		T257_.Field4 = b;
		T258_ = NIM_NIL;
		T258_ = dollar___extccomp_2443((&T257_));
		raiseJsonException__stdZjsonutils_169(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_28), T258_);
	}
	LA255_: ;
}
static N_INLINE(void, X5BX5Deq___pureZjson_1942)(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* obj, NimStringDesc* key, tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* val) {
	X5BX5Deq___pureZjson_306((&(*obj)._kind_6.fields), key, val);
}
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g*, toJson__stdZjsonutils_604)(NimStringDesc* a, tyObject_ToJsonOptions__hwpMtSVqR9ad9atcjwlRIwtg opt) {
	tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* result;
	result = NIM_NIL;
	result = percent___pureZjson_1809(a);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g*, toJson__extccomp_1738)(tyTuple__UV3llMMYFckfui8YMBuUZA a, tyObject_ToJsonOptions__hwpMtSVqR9ad9atcjwlRIwtg opt) {
	tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* result;
	tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T1_;
	tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T2_;
	result = NIM_NIL;
	result = newJArray__pureZjson_133();
	T1_ = NIM_NIL;
	T1_ = toJson__stdZjsonutils_604(a.Field0, opt);
	add__pureZjson_241(result, T1_);
	T2_ = NIM_NIL;
	T2_ = toJson__stdZjsonutils_604(a.Field1, opt);
	add__pureZjson_241(result, T2_);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g*, toJson__extccomp_1710)(tySequence__4eQHGndY6XBYpFOH09apV8Q* a, tyObject_ToJsonOptions__hwpMtSVqR9ad9atcjwlRIwtg opt) {
	tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* result;
	result = NIM_NIL;
	result = newJArray__pureZjson_133();
	{
		tyTuple__UV3llMMYFckfui8YMBuUZA* ai;
		NI i;
		NI L;
		NI T2_;
		ai = (tyTuple__UV3llMMYFckfui8YMBuUZA*)0;
		i = ((NI) 0);
		T2_ = (a ? a->Sup.len : 0);
		L = T2_;
		{
			while (1) {
				tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T5_;
				if (!(i < L)) goto LA4;
				ai = (&a->data[i]);
				T5_ = NIM_NIL;
				T5_ = toJson__extccomp_1738((*ai), opt);
				add__pureZjson_241(result, T5_);
				i += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g*, toJson__extccomp_1759)(tySequence__sM4lkSb7zS6F7OVMvW9cffQ* a, tyObject_ToJsonOptions__hwpMtSVqR9ad9atcjwlRIwtg opt) {
	tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* result;
	result = NIM_NIL;
	result = newJArray__pureZjson_133();
	{
		NimStringDesc** ai;
		NI i;
		NI L;
		NI T2_;
		ai = (NimStringDesc**)0;
		i = ((NI) 0);
		T2_ = (a ? a->Sup.len : 0);
		L = T2_;
		{
			while (1) {
				tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T5_;
				if (!(i < L)) goto LA4;
				ai = (&a->data[i]);
				T5_ = NIM_NIL;
				T5_ = toJson__stdZjsonutils_604((*ai), opt);
				add__pureZjson_241(result, T5_);
				i += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g*, toJson__extccomp_1787)(NIM_BOOL a, tyObject_ToJsonOptions__hwpMtSVqR9ad9atcjwlRIwtg opt) {
	tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* result;
	result = NIM_NIL;
	result = percent___pureZjson_1835(a);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g*, toJson__extccomp_1689)(tyObject_BuildCache__3RriOFYkrnBg9bAREc08ZSQ* a, tyObject_ToJsonOptions__hwpMtSVqR9ad9atcjwlRIwtg opt) {
	tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* result;
	tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T1_;
	tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T2_;
	tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T3_;
	tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T4_;
	tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T5_;
	tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T6_;
	tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T7_;
	tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T8_;
	tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T9_;
	tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T10_;
	tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T11_;
	tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T12_;
	tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T13_;
	tyObject_JsonNodeObj__wYd81YPSGeV9aTaTIRihe3g* T14_;
	result = NIM_NIL;
	result = newJObject__pureZjson_102();
	T1_ = NIM_NIL;
	T1_ = toJson__stdZjsonutils_604((*a).cacheVersion, opt);
	X5BX5Deq___pureZjson_1942(result, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_6), T1_);
	T2_ = NIM_NIL;
	T2_ = toJson__stdZjsonutils_604((*a).outputFile, opt);
	X5BX5Deq___pureZjson_1942(result, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_9), T2_);
	T3_ = NIM_NIL;
	T3_ = toJson__extccomp_1710((*a).compile, opt);
	X5BX5Deq___pureZjson_1942(result, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_10), T3_);
	T4_ = NIM_NIL;
	T4_ = toJson__extccomp_1759((*a).link, opt);
	X5BX5Deq___pureZjson_1942(result, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_15), T4_);
	T5_ = NIM_NIL;
	T5_ = toJson__stdZjsonutils_604((*a).linkcmd, opt);
	X5BX5Deq___pureZjson_1942(result, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_17), T5_);
	T6_ = NIM_NIL;
	T6_ = toJson__extccomp_1759((*a).extraCmds, opt);
	X5BX5Deq___pureZjson_1942(result, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_18), T6_);
	T7_ = NIM_NIL;
	T7_ = toJson__extccomp_1759((*a).configFiles, opt);
	X5BX5Deq___pureZjson_1942(result, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_19), T7_);
	T8_ = NIM_NIL;
	T8_ = toJson__extccomp_1787((*a).stdinInput, opt);
	X5BX5Deq___pureZjson_1942(result, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_20), T8_);
	T9_ = NIM_NIL;
	T9_ = toJson__extccomp_1787((*a).projectIsCmd, opt);
	X5BX5Deq___pureZjson_1942(result, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_22), T9_);
	T10_ = NIM_NIL;
	T10_ = toJson__stdZjsonutils_604((*a).cmdInput, opt);
	X5BX5Deq___pureZjson_1942(result, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_23), T10_);
	T11_ = NIM_NIL;
	T11_ = toJson__stdZjsonutils_604((*a).currentDir, opt);
	X5BX5Deq___pureZjson_1942(result, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_24), T11_);
	T12_ = NIM_NIL;
	T12_ = toJson__stdZjsonutils_604((*a).cmdline, opt);
	X5BX5Deq___pureZjson_1942(result, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_25), T12_);
	T13_ = NIM_NIL;
	T13_ = toJson__extccomp_1710((*a).depfiles, opt);
	X5BX5Deq___pureZjson_1942(result, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_26), T13_);
	T14_ = NIM_NIL;
	T14_ = toJson__stdZjsonutils_604((*a).nimexe, opt);
	X5BX5Deq___pureZjson_1942(result, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_27), T14_);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_ToJsonOptions__hwpMtSVqR9ad9atcjwlRIwtg, initToJsonOptions__stdZjsonutils_33)(void) {
	tyObject_ToJsonOptions__hwpMtSVqR9ad9atcjwlRIwtg result;
	nimZeroMem((void*)(&result), sizeof(tyObject_ToJsonOptions__hwpMtSVqR9ad9atcjwlRIwtg));
	nimZeroMem((void*)(&result), sizeof(tyObject_ToJsonOptions__hwpMtSVqR9ad9atcjwlRIwtg));
	result.enumMode = ((tyEnum_EnumMode__UPxyMpu2tP81EYqUaP7xtQ) 0);
	result.jsonNodeMode = ((tyEnum_JsonNodeMode__QYSP9auMM9bae9bt6SiPtuD6Q) 0);
	return result;
}
