drizzle-orm 0.12.0-beta.7 → 0.12.0-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/alias.js CHANGED
@@ -24,9 +24,13 @@ class TableAliasProxyHandler {
24
24
  return this.alias;
25
25
  }
26
26
  if (prop === table_1.Table.Symbol.Columns) {
27
+ const columns = tableObj[table_1.Table.Symbol.Columns];
28
+ if (!columns) {
29
+ return columns;
30
+ }
27
31
  const proxiedColumns = {};
28
- Object.keys(tableObj[table_1.Table.Symbol.Columns]).map((key) => {
29
- proxiedColumns[key] = new Proxy(tableObj[table_1.Table.Symbol.Columns][key], new ColumnAliasProxyHandler(new Proxy(tableObj, this)));
32
+ Object.keys(columns).map((key) => {
33
+ proxiedColumns[key] = new Proxy(columns[key], new ColumnAliasProxyHandler(new Proxy(tableObj, this)));
30
34
  });
31
35
  return proxiedColumns;
32
36
  }
package/alias.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"alias.js","sourceRoot":"","sources":["../src/alias.ts"],"names":[],"mappings":";;;AAAA,qCAA6C;AAC7C,mCAAgC;AAEhC,MAAa,uBAAuB;IACnC,YAA2B,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IAEpC,GAAG,CAAC,SAAkB,EAAE,IAAqB,EAAE,QAAa;QAClE,IAAI,IAAI,KAAK,OAAO,EAAE;YACrB,OAAO,IAAI,CAAC,KAAK,CAAC;SAClB;QACD,OAAO,SAAS,CAAC,IAAqB,CAAC,CAAC;IACzC,CAAC;CACD;AATD,0DASC;AAED,MAAa,sBAAsB;IAClC,YAA2B,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;IAErC,GAAG,CAAC,QAAe,EAAE,IAAqB,EAAE,QAAa;QAC/D,IAAI,IAAI,KAAK,aAAK,CAAC,MAAM,CAAC,IAAI,EAAE;YAC/B,OAAO,IAAI,CAAC,KAAK,CAAC;SAClB;QACD,IAAI,IAAI,KAAK,aAAK,CAAC,MAAM,CAAC,OAAO,EAAE;YAClC,MAAM,cAAc,GAA2B,EAAE,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBACvD,cAAc,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,CAC9B,QAAQ,CAAC,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAE,EACpC,IAAI,uBAAuB,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CACtD,CAAC;YACH,CAAC,CAAC,CAAC;YACH,OAAO,cAAc,CAAC;SACtB;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAmB,CAAC,CAAC;QAC5C,IAAI,KAAK,YAAY,eAAM,EAAE;YAC5B,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,uBAAuB,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;SAChF;QAED,OAAO,KAAK,CAAC;IACd,CAAC;CACD;AAzBD,wDAyBC"}
1
+ {"version":3,"file":"alias.js","sourceRoot":"","sources":["../src/alias.ts"],"names":[],"mappings":";;;AAAA,qCAA6C;AAC7C,mCAAgC;AAEhC,MAAa,uBAAuB;IACnC,YAA2B,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IAEpC,GAAG,CAAC,SAAkB,EAAE,IAAqB,EAAE,QAAa;QAClE,IAAI,IAAI,KAAK,OAAO,EAAE;YACrB,OAAO,IAAI,CAAC,KAAK,CAAC;SAClB;QACD,OAAO,SAAS,CAAC,IAAqB,CAAC,CAAC;IACzC,CAAC;CACD;AATD,0DASC;AAED,MAAa,sBAAsB;IAClC,YAA2B,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;IAErC,GAAG,CAAC,QAAe,EAAE,IAAqB,EAAE,QAAa;QAC/D,IAAI,IAAI,KAAK,aAAK,CAAC,MAAM,CAAC,IAAI,EAAE;YAC/B,OAAO,IAAI,CAAC,KAAK,CAAC;SAClB;QACD,IAAI,IAAI,KAAK,aAAK,CAAC,MAAM,CAAC,OAAO,EAAE;YAClC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,CAAC,OAAO,EAAE;gBACb,OAAO,OAAO,CAAC;aACf;YAED,MAAM,cAAc,GAA2B,EAAE,CAAC;YAElD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBAChC,cAAc,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,CAC9B,OAAO,CAAC,GAAG,CAAE,EACb,IAAI,uBAAuB,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CACtD,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,OAAO,cAAc,CAAC;SACtB;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAmB,CAAC,CAAC;QAC5C,IAAI,KAAK,YAAY,eAAM,EAAE;YAC5B,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,uBAAuB,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;SAChF;QAED,OAAO,KAAK,CAAC;IACd,CAAC;CACD;AAhCD,wDAgCC"}
@@ -1,31 +1,34 @@
1
1
  import { SQL } from './sql';
2
- import { RequiredKeys } from './utils';
2
+ import { Update } from './utils';
3
3
  export interface ColumnBuilderBaseConfig {
4
4
  data: unknown;
5
5
  driverParam: unknown;
6
6
  notNull: boolean;
7
7
  hasDefault: boolean;
8
8
  }
9
- export declare type ColumnBuilderConfig<TPartial extends Partial<ColumnBuilderBaseConfig> = {}> = UpdateColumnBuilderConfig<ColumnBuilderBaseConfig & {
9
+ export declare type ColumnBuilderConfig<TPartial extends Partial<ColumnBuilderBaseConfig> = {}> = Update<ColumnBuilderBaseConfig & {
10
10
  notNull: false;
11
11
  hasDefault: false;
12
12
  }, TPartial>;
13
- export declare type UpdateColumnBuilderConfig<T extends ColumnBuilderBaseConfig, TUpdate extends Partial<ColumnBuilderBaseConfig>> = {} extends TUpdate ? T : RequiredKeys<Omit<T, keyof TUpdate> & Pick<TUpdate, keyof ColumnBuilderBaseConfig>>;
14
- export declare abstract class ColumnBuilder<T extends ColumnBuilderBaseConfig> {
15
- protected $config: T;
13
+ export declare abstract class ColumnBuilder<T extends Partial<ColumnBuilderBaseConfig>> {
16
14
  protected $brand: {
17
15
  type: 'ColumnBuilder';
18
16
  subtype: string;
19
17
  };
18
+ protected $config: T;
19
+ protected $data: T['data'];
20
+ protected $driverParam: T['driverParam'];
21
+ protected $notNull: T['notNull'];
22
+ protected $hasDefault: T['hasDefault'];
20
23
  constructor(name: string);
21
- notNull(): ColumnBuilder<UpdateColumnBuilderConfig<T, {
24
+ notNull(): ColumnBuilder<UpdateCBConfig<T, {
22
25
  notNull: true;
23
26
  }>>;
24
- default(value: T['data'] | SQL): ColumnBuilder<UpdateColumnBuilderConfig<T, {
27
+ default(value: T['data'] | SQL): ColumnBuilder<UpdateCBConfig<T, {
25
28
  hasDefault: true;
26
29
  }>>;
27
- primaryKey(): ColumnBuilder<UpdateColumnBuilderConfig<T, {
30
+ primaryKey(): ColumnBuilder<UpdateCBConfig<T, {
28
31
  notNull: true;
29
32
  }>>;
30
33
  }
31
- export declare type AnyColumnBuilder<TPartial extends Partial<ColumnBuilderBaseConfig> = {}> = ColumnBuilder<UpdateColumnBuilderConfig<ColumnBuilderBaseConfig, TPartial>>;
34
+ export declare type UpdateCBConfig<T extends Partial<ColumnBuilderBaseConfig>, TUpdate extends Partial<ColumnBuilderBaseConfig>> = Update<T, TUpdate>;
@@ -1 +1 @@
1
- {"version":3,"file":"column-builder.js","sourceRoot":"","sources":["../src/column-builder.ts"],"names":[],"mappings":";;;AAuBA,+GAA+G;AAC/G,MAAsB,aAAa;IAelC,YAAY,IAAY;QACvB,IAAI,CAAC,MAAM,GAAG;YACb,IAAI;YACJ,OAAO,EAAE,KAAqB;YAC9B,OAAO,EAAE,SAAS;YAClB,UAAU,EAAE,KAAK;SACjB,CAAC;IACH,CAAC;IAED,OAAO;QACN,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAoB,CAAC;QAC3C,OAAO,IAAmC,CAAC;IAC5C,CAAC;IAED,OAAO,CACN,KAAsB;QAEtB,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;QAC5B,OAAO,IAAmC,CAAC;IAC5C,CAAC;IAED,UAAU;QACT,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;QAC9B,OAAO,IAAsC,CAAC;IAC/C,CAAC;CACD;AAxCD,sCAwCC"}
1
+ {"version":3,"file":"column-builder.js","sourceRoot":"","sources":["../src/column-builder.ts"],"names":[],"mappings":";;;AAkBA,+GAA+G;AAC/G,MAAsB,aAAa;IAmBlC,YAAY,IAAY;QACvB,IAAI,CAAC,MAAM,GAAG;YACb,IAAI;YACJ,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,SAAS;YAClB,UAAU,EAAE,KAAK;SACjB,CAAC;IACH,CAAC;IAED,OAAO;QACN,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QAC3B,OAAO,IAAmC,CAAC;IAC5C,CAAC;IAED,OAAO,CACN,KAAsB;QAEtB,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;QAC5B,OAAO,IAAmC,CAAC;IAC5C,CAAC;IAED,UAAU;QACT,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;QAC9B,OAAO,IAAsC,CAAC;IAC/C,CAAC;CACD;AA5CD,sCA4CC"}
package/column.d.ts CHANGED
@@ -1,15 +1,14 @@
1
1
  import { ColumnBuilder, ColumnBuilderBaseConfig, ColumnBuilderConfig } from './column-builder';
2
2
  import { DriverValueMapper, SQL } from './sql';
3
3
  import { Table } from './table';
4
- import { RequiredKeys } from './utils';
4
+ import { Update } from './utils';
5
5
  export interface ColumnBaseConfig extends ColumnBuilderBaseConfig {
6
6
  tableName: string;
7
7
  }
8
- export declare type ColumnConfig<TPartial extends Partial<ColumnBaseConfig> = {}> = UpdateColumnConfig<ColumnBuilderConfig & {
8
+ export declare type ColumnConfig<TPartial extends Partial<ColumnBaseConfig> = {}> = Update<ColumnBuilderConfig & {
9
9
  tableName: string;
10
10
  }, TPartial>;
11
- export declare type UpdateColumnConfig<T extends ColumnBaseConfig, TUpdate extends Partial<ColumnBaseConfig>> = {} extends TUpdate ? T : RequiredKeys<Omit<T, keyof TUpdate> & Pick<TUpdate, keyof ColumnBaseConfig>>;
12
- export declare abstract class Column<T extends ColumnBaseConfig> implements DriverValueMapper<T['data'], T['driverParam']> {
11
+ export declare abstract class Column<T extends Partial<ColumnBaseConfig>> implements DriverValueMapper<T['data'], T['driverParam']> {
13
12
  readonly table: Table<T['tableName']>;
14
13
  protected $brand: 'Column';
15
14
  protected $config: T;
@@ -26,7 +25,8 @@ export declare abstract class Column<T extends ColumnBaseConfig> implements Driv
26
25
  mapFromDriverValue(value: T['driverParam']): T['data'];
27
26
  mapToDriverValue(value: T['data']): T['driverParam'];
28
27
  }
29
- export declare type AnyColumn<TPartial extends Partial<ColumnBaseConfig> = {}> = Column<UpdateColumnConfig<ColumnBaseConfig, TPartial>>;
28
+ export declare type UpdateColConfig<T extends Partial<ColumnBaseConfig>, TUpdate extends Partial<ColumnBaseConfig>> = Update<T, TUpdate>;
29
+ export declare type AnyColumn<TPartial extends Partial<ColumnBaseConfig> = {}> = Column<Update<ColumnBaseConfig, TPartial>>;
30
30
  export declare type GetColumnData<TColumn extends AnyColumn, TInferMode extends 'query' | 'raw' = 'query'> = TColumn extends AnyColumn<{
31
31
  data: infer TData;
32
32
  notNull: infer TNotNull extends boolean;
package/column.js CHANGED
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Column = void 0;
4
+ // export type UpdateColumnConfig<
5
+ // T extends ColumnBaseConfig,
6
+ // TUpdate extends Partial<ColumnBaseConfig>,
7
+ // > = Update<T, TUpdate, keyof ColumnBaseConfig>;
4
8
  /*
5
9
  `Column` only accepts a full `ColumnConfig` as its generic.
6
10
  To infer parts of the config, use `AnyColumn` that accepts a partial config.
package/column.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"column.js","sourceRoot":"","sources":["../src/column.ts"],"names":[],"mappings":";;;AAqBA;;;;EAIE;AACF,MAAsB,MAAM;IAa3B,YAAqB,KAA4B,EAAE,OAA4C;QAA1E,UAAK,GAAL,KAAK,CAAuB;QAChD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;IAC1C,CAAC;IAID,kBAAkB,CAAC,KAAuB;QACzC,OAAO,KAAY,CAAC;IACrB,CAAC;IAED,gBAAgB,CAAC,KAAgB;QAChC,OAAO,KAAY,CAAC;IACrB,CAAC;CACD;AA7BD,wBA6BC"}
1
+ {"version":3,"file":"column.js","sourceRoot":"","sources":["../src/column.ts"],"names":[],"mappings":";;;AAeA,kCAAkC;AAClC,+BAA+B;AAC/B,8CAA8C;AAC9C,kDAAkD;AAElD;;;;EAIE;AACF,MAAsB,MAAM;IAe3B,YAAqB,KAA4B,EAAE,OAA4C;QAA1E,UAAK,GAAL,KAAK,CAAuB;QAChD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;IAC1C,CAAC;IAID,kBAAkB,CAAC,KAAuB;QACzC,OAAO,KAAY,CAAC;IACrB,CAAC;IAED,gBAAgB,CAAC,KAAgB;QAChC,OAAO,KAAY,CAAC;IACrB,CAAC;CACD;AA/BD,wBA+BC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "drizzle-orm",
3
- "version": "0.12.0-beta.7",
3
+ "version": "0.12.0-beta.8",
4
4
  "description": "Drizzle ORM package for SQL databases",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
package/table.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare class Table<TName extends string = string> {
1
+ export declare class Table<TName extends string | undefined = string> {
2
2
  protected $brand: 'Table';
3
3
  protected $name: TName;
4
4
  constructor(name: TName);
package/utils.d.ts CHANGED
@@ -1,6 +1,5 @@
1
+ import { Simplify } from 'type-fest';
1
2
  import { SelectFieldsOrdered } from './operations';
2
3
  export declare function mapResultRow<TResult extends Record<string, unknown>>(columns: SelectFieldsOrdered, row: unknown[], joinsNotNullable?: Record<string, boolean>): TResult;
3
- export declare type RequiredKeys<T> = {
4
- [K in keyof T]-?: T[K];
5
- };
6
4
  export declare type OneOrMany<T> = T | T[];
5
+ export declare type Update<T, TUpdate> = Simplify<Omit<T, keyof TUpdate> & TUpdate>;
package/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAAA,qCAAkC;AAElC,+BAAyC;AAGzC,SAAgB,YAAY,CAC3B,OAA4B,EAC5B,GAAc,EACd,gBAA0C;IAE1C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAC5B,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,KAAK,EAAE,EAAE;QAClE,IAAI,OAAO,CAAC;QACZ,IAAI,gBAAgB,YAAY,eAAM,EAAE;YACvC,OAAO,GAAG,gBAAgB,CAAC;SAC3B;aAAM,IAAI,gBAAgB,YAAY,SAAG,EAAE;YAC3C,OAAO,GAAG,iBAAW,CAAC;SACtB;aAAM;YACN,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC;SACnC;QACD,IAAI,CAAC,CAAC,eAAe,IAAI,GAAG,CAAC,EAAE;YAC9B,GAAG,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC;SAC1B;QACD,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAE,CAAC;QAC7B,GAAG,CAAC,eAAe,CAAE,CAAC,IAAI,CAAC,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC9F,OAAO,GAAG,CAAC;IACZ,CAAC,EACD,EAAE,CACF,CAAC;IAEF,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;QACrC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAY,CAAC;KAC3C;IAED,IAAI,CAAC,gBAAgB,EAAE;QACtB,OAAO,MAAiB,CAAC;KACzB;IAED,OAAO,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,EAAE;QACvD,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE;YACjC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;YAC9E,IAAI,CAAC,UAAU,EAAE;gBAChB,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;aACzB;SACD;QACD,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACjC,CAAC,CAAC,CACS,CAAC;AACd,CAAC;AA5CD,oCA4CC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AACA,qCAAkC;AAElC,+BAAyC;AAEzC,SAAgB,YAAY,CAC3B,OAA4B,EAC5B,GAAc,EACd,gBAA0C;IAE1C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAC5B,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,KAAK,EAAE,EAAE;QAClE,IAAI,OAAO,CAAC;QACZ,IAAI,gBAAgB,YAAY,eAAM,EAAE;YACvC,OAAO,GAAG,gBAAgB,CAAC;SAC3B;aAAM,IAAI,gBAAgB,YAAY,SAAG,EAAE;YAC3C,OAAO,GAAG,iBAAW,CAAC;SACtB;aAAM;YACN,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC;SACnC;QACD,IAAI,CAAC,CAAC,eAAe,IAAI,GAAG,CAAC,EAAE;YAC9B,GAAG,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC;SAC1B;QACD,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAE,CAAC;QAC7B,GAAG,CAAC,eAAe,CAAE,CAAC,IAAI,CAAC,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC9F,OAAO,GAAG,CAAC;IACZ,CAAC,EACD,EAAE,CACF,CAAC;IAEF,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;QACrC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAY,CAAC;KAC3C;IAED,IAAI,CAAC,gBAAgB,EAAE;QACtB,OAAO,MAAiB,CAAC;KACzB;IAED,OAAO,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,EAAE;QACvD,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE;YACjC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;YAC9E,IAAI,CAAC,UAAU,EAAE;gBAChB,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;aACzB;SACD;QACD,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACjC,CAAC,CAAC,CACS,CAAC;AACd,CAAC;AA5CD,oCA4CC"}