{"version":3,"file":"ngx-drupal8-rest.mjs","sources":["../../../projects/ngx-drupal8-rest/src/lib/config/drupal-constants.ts","../../../projects/ngx-drupal8-rest/src/lib/models/commerce.ts","../../../projects/ngx-drupal8-rest/src/lib/http/base.service.ts","../../../projects/ngx-drupal8-rest/src/lib/http/user.service.ts","../../../projects/ngx-drupal8-rest/src/lib/http/view.service.ts","../../../projects/ngx-drupal8-rest/src/lib/http/content.service.ts","../../../projects/ngx-drupal8-rest/src/lib/http/taxonomy.service.ts","../../../projects/ngx-drupal8-rest/src/lib/http/file.service.ts","../../../projects/ngx-drupal8-rest/src/lib/http/media.service.ts","../../../projects/ngx-drupal8-rest/src/lib/http/flag.service.ts","../../../projects/ngx-drupal8-rest/src/lib/http/webform.service.ts","../../../projects/ngx-drupal8-rest/src/lib/http/push.service.ts","../../../projects/ngx-drupal8-rest/src/lib/http/commerce.service.ts","../../../projects/ngx-drupal8-rest/src/lib/http/comment.service.ts","../../../projects/ngx-drupal8-rest/src/lib/http/quiz.service.ts","../../../projects/ngx-drupal8-rest/src/lib/ngx-drupal8-rest.module.ts","../../../projects/ngx-drupal8-rest/src/public_api.ts","../../../projects/ngx-drupal8-rest/src/ngx-drupal8-rest.ts"],"sourcesContent":["import { Settings, LoginResponse } from '../models';\r\n\r\n// @dynamic\r\nexport class DrupalConstants {\r\n  // Singletons\r\n  private static instance: DrupalConstants;\r\n  // props\r\n  private settings: Settings;\r\n  private connection: LoginResponse;\r\n  private token: string;\r\n  private tokenInit = false;\r\n\r\n  /**\r\n   * Init the module with Drupal 8 website configs\r\n   * @param settings Drupal 8 back-end config\r\n   */\r\n  static init(settings: Settings) {\r\n    // Optional config default values\r\n    if (!settings.requestTimeout) {\r\n      // 10 seconds\r\n      settings.requestTimeout = 10000;\r\n    }\r\n    if (!settings.cookieLifetime) {\r\n      // 23 days\r\n      settings.cookieLifetime = 2000000;\r\n    }\r\n    this.Instance.settings = settings;\r\n  }\r\n\r\n  static get Token(): string {\r\n    return this.Instance.token;\r\n  }\r\n\r\n  static set Token(value: string) {\r\n    this.Instance.tokenInit = value ? true : false;\r\n    this.Instance.token = value;\r\n  }\r\n\r\n  static get TokenInit(): boolean {\r\n    return this.Instance.tokenInit;\r\n  }\r\n\r\n  static set TokenInit(value: boolean) {\r\n    this.Instance.tokenInit = value;\r\n  }\r\n\r\n  /**\r\n   * Get the settings object, Supports dynamic config\r\n   */\r\n  static get Settings(): Settings {\r\n    if (!this.Instance.settings) {\r\n      throw new Error('ngx-drupal8-rest: Application settings are not set, Please read README.MD file');\r\n    }\r\n    return this.Instance.settings;\r\n  }\r\n\r\n  /**\r\n   * Get the back-end structured url\r\n   */\r\n  static get backEndUrl(): string {\r\n    const settings = this.Settings;\r\n    // Add protocol\r\n    const url = settings.protocol + '://' + settings.host;\r\n    // Check for port and return\r\n    return settings.port ? url + ':' + settings.port : url;\r\n  }\r\n\r\n  /**\r\n   * Get Singleton instance\r\n   */\r\n  private static get Instance() {\r\n    if (!this.instance) {\r\n      this.instance = new DrupalConstants();\r\n    }\r\n    return this.instance;\r\n  }\r\n\r\n  /**\r\n   * Set the current connection info\r\n   */\r\n  static set Connection(newConnection: LoginResponse) {\r\n    this.Instance.connection = newConnection;\r\n  }\r\n\r\n  /**\r\n   * Get current connection info\r\n   */\r\n  static get Connection(): LoginResponse {\r\n    return this.Instance.connection;\r\n  }\r\n}\r\n","// Shared\r\n\r\nimport { FieldNumber, FieldText, FieldEntityReference, FieldEntityReferenceUrl, FieldBoolean } from './field';\r\n\r\nexport interface CommercePrice {\r\n  number?: number;\r\n  currency_code?: string;\r\n  formatted?: string;\r\n}\r\n\r\nexport interface CommerceOrderEntity {\r\n  order_id: FieldNumber[];\r\n  uuid: FieldText[];\r\n  type: FieldEntityReference[];\r\n  order_number: FieldText[];\r\n  store_id: FieldEntityReference[];\r\n  uid: FieldEntityReferenceUrl[];\r\n  mail: FieldText[];\r\n  ip_address: FieldText[];\r\n  billing_profile: FieldEntityReferenceUrl[];\r\n  order_items: FieldEntityReference[];\r\n  total_price: CommercePrice[];\r\n  total_paid: CommercePrice[];\r\n  state: FieldText[];\r\n  data: { paid_event_dispatched: boolean }[];\r\n  locked: FieldBoolean[];\r\n  created: FieldNumber[];\r\n  changed: FieldNumber[];\r\n  placed: FieldNumber[];\r\n  completed: FieldNumber[];\r\n  cart: FieldBoolean[];\r\n  payment_gateway: FieldEntityReference[];\r\n  payment_method: FieldEntityReference[];\r\n}\r\n\r\nexport interface CommercePaymentEntity {\r\n  payment_id: FieldNumber[];\r\n  uuid: FieldText[];\r\n  type: FieldText[];\r\n  payment_gateway: FieldEntityReference[];\r\n  payment_gateway_mode: FieldText[];\r\n  payment_method: FieldEntityReference[];\r\n  order_id: FieldEntityReference[];\r\n  remote_id: FieldText[];\r\n  amount: CommercePrice[];\r\n  refunded_amount: CommercePrice[];\r\n  state: FieldText[];\r\n  expires: FieldNumber[];\r\n  completed: FieldNumber[];\r\n}\r\n\r\n// Commerce Cart API\r\n\r\nexport interface CartOrder {\r\n  order_id: number;\r\n  uuid: string;\r\n  store_id: number;\r\n  order_items: CartOrderItem[];\r\n  total_price: CommercePrice;\r\n  coupons: any[]; // TODO\r\n  order_number?: number;\r\n}\r\n\r\nexport interface CartOrderItem {\r\n  order_item_id: number;\r\n  uuid: string;\r\n  order_id: number;\r\n  title: string;\r\n  quantity: number;\r\n  unit_price: CommercePrice;\r\n  total_price: CommercePrice;\r\n  purchased_entity: CartProduct;\r\n}\r\n\r\nexport interface CartProduct {\r\n  variation_id: number;\r\n  uuid: string;\r\n  type: string;\r\n  product_id: number;\r\n  sku: string;\r\n  title: string;\r\n  list_price: CommercePrice;\r\n  price: CommercePrice;\r\n  content_translation_source: string;\r\n  content_translation_outdated: boolean;\r\n  attribute_color: number;\r\n  attribute_size: number;\r\n  printful_reference: string;\r\n  [key: string]: any; // custom fields\r\n  weight?: number;\r\n}\r\n\r\nexport interface CartProductAdd {\r\n  purchased_entity_type: string;\r\n  purchased_entity_id: number;\r\n  quantity: number;\r\n}\r\n\r\n// Commerce Decoupled Checkout\r\n\r\nexport interface CommerceOrder {\r\n  order?: {\r\n    order_items?: CommerceOrdeItem[];\r\n    type?: string;\r\n    email?: string;\r\n    store?: number;\r\n    [key: string]: any; // custom fields\r\n  };\r\n  // User profile associated with the order.\r\n  profile?: {\r\n    type?: string;\r\n    status?: boolean;\r\n    [key: string]: any; // custom fields\r\n  };\r\n  // A user account associated with the transaction.\r\n  // Creates a new user if didn't not exist, or uses existing one.\r\n  // In the second case fields WILL NOT be updated.\r\n  user: {\r\n    mail: string;\r\n    name?: string;\r\n    status?: boolean;\r\n    [key: string]: any; // custom fields\r\n  };\r\n  // If you want to process the payment alongside with order submission,\r\n  // then fill in the details of this field. Otherwise you can skip it\r\n  // and use other REST endpoints to handle payments separately.\r\n  payment?: CommercePayment;\r\n}\r\n\r\nexport interface CommerceOrdeItem {\r\n  purchased_entity: {\r\n    sku: string;\r\n  };\r\n  type?: string;\r\n  title?: string;\r\n  quantity?: number;\r\n  unit_price?: CommercePrice;\r\n  [key: string]: any; // custom fields\r\n}\r\n\r\nexport interface CommercePayment {\r\n  gateway: string;\r\n  type: string;\r\n  details?: any[];\r\n  capture?: boolean;\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\r\n\r\n// RXJS\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { mergeMap, tap, timeout } from 'rxjs/operators';\r\n\r\n// Custom imports\r\nimport { isPlatformBrowser, isPlatformServer } from '@angular/common';\r\nimport { DrupalConstants } from '../config';\r\nimport { HttpOptions, LoginResponse } from '../models';\r\n\r\n@Injectable()\r\nexport class BaseService {\r\n  private static currentTokenRequest: Subject<string> = null;\r\n\r\n  constructor(\r\n    private httpClient: HttpClient,\r\n    @Inject(PLATFORM_ID) private platform: string\r\n  ) {}\r\n\r\n  getToken(): Observable<string> {\r\n    if (BaseService.currentTokenRequest) {\r\n      return BaseService.currentTokenRequest.asObservable();\r\n    }\r\n\r\n    BaseService.currentTokenRequest = new Subject<string>();\r\n    const tokenOptions: HttpOptions = {\r\n      method: 'get',\r\n      responseType: 'text',\r\n    };\r\n    this.request(tokenOptions, '/session/token')\r\n      .pipe(\r\n        tap((token) => {\r\n          if (DrupalConstants.Token && token !== DrupalConstants.Token) {\r\n            this.deleteConnection();\r\n          }\r\n          DrupalConstants.Token = token;\r\n          if (isPlatformBrowser(this.platform)) {\r\n            localStorage.setItem('token', token);\r\n          }\r\n          // If connection is not init but localstorage contains a connection\r\n          if (!DrupalConstants.Connection && this.connection) {\r\n            DrupalConstants.Connection = this.connection;\r\n          }\r\n          return token;\r\n        })\r\n      )\r\n      .subscribe({\r\n        next: (token) => {\r\n          queueMicrotask(() => {\r\n            BaseService.currentTokenRequest.next(token);\r\n            BaseService.currentTokenRequest.complete();\r\n            BaseService.currentTokenRequest = null;\r\n          });\r\n        },\r\n        error: (error) => {\r\n          BaseService.currentTokenRequest = null;\r\n          throw Error(error);\r\n        },\r\n      });\r\n    return BaseService.currentTokenRequest.asObservable();\r\n  }\r\n\r\n  /**\r\n   * Check for current user if logged in or not.\r\n   * Based on current connection and expiration date\r\n   */\r\n  get isLoggedIn(): boolean {\r\n    // if the connection expired, delete the connection\r\n    if (this.connectionExpired) {\r\n      this.deleteConnection();\r\n      return false;\r\n    }\r\n\r\n    return DrupalConstants.Connection || this.connection ? true : false;\r\n  }\r\n\r\n  /**\r\n   * Get current user login connection\r\n   */\r\n  get connection(): LoginResponse {\r\n    if (!isPlatformServer(this.platform)) {\r\n      if (DrupalConstants.Connection) {\r\n        return DrupalConstants.Connection;\r\n      }\r\n      const storageToken = localStorage.getItem('token');\r\n      if (storageToken) {\r\n        DrupalConstants.Token = localStorage.getItem('token');\r\n      }\r\n      // get connection from localstorage\r\n      const connection = <LoginResponse>(\r\n        JSON.parse(localStorage.getItem('connection'))\r\n      );\r\n      if (connection) {\r\n        DrupalConstants.Connection = connection;\r\n      }\r\n      // parse and return the data\r\n      return connection;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Check if the current connection is expired\r\n   */\r\n  protected get connectionExpired(): boolean {\r\n    if (!isPlatformServer(this.platform)) {\r\n      // get expiration time in ms\r\n      const expiration = +localStorage.getItem('expiration');\r\n      // get current date\r\n      const now = new Date();\r\n      return expiration ? now.getTime() > expiration : true;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * save the user login connection in localstorage and constants singleton\r\n   * @param data connection to be saved\r\n   */\r\n  protected saveConnection(data: LoginResponse, token: string) {\r\n    if (!isPlatformServer(this.platform)) {\r\n      // set the current session\r\n      DrupalConstants.Connection = data;\r\n      DrupalConstants.Token = token;\r\n      // save the connection in localstorage\r\n      localStorage.setItem('connection', JSON.stringify(data));\r\n      // get current time in ms\r\n      const now = new Date().getTime();\r\n      // get the future expiration time in ms\r\n      const expiration = now + DrupalConstants.Settings.cookieLifetime * 1000;\r\n      // set the expiration time\r\n      localStorage.setItem('expiration', expiration.toString());\r\n      localStorage.setItem('token', token);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * remove the current session details\r\n   */\r\n  protected deleteConnection() {\r\n    if (!isPlatformServer(this.platform)) {\r\n      // empty current session\r\n      DrupalConstants.Connection = undefined;\r\n      DrupalConstants.Token = undefined;\r\n      // removed saved data\r\n      localStorage.removeItem('connection');\r\n      localStorage.removeItem('expiration');\r\n      localStorage.removeItem('token');\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Main method for implementing all the HttpClient requests and return the results\r\n   * @param options Custom HttpOptions to be overrided\r\n   * @param resource The resource url, Token frags will be replaced from options.frags, EX: {'/user/{uid}'}\r\n   * @param body the content to be sent with the request, Only for patch and post methods\r\n   */\r\n  protected request(\r\n    options: HttpOptions,\r\n    resource: string,\r\n    body?\r\n  ): Observable<any> {\r\n    // Get full url\r\n    const structuredResource = this.structureResource(resource, options.frags);\r\n\r\n    let request: Observable<Object>;\r\n    // Init http options\r\n    const httpOptions = this.httpOptions(options);\r\n\r\n    // Use the desired method\r\n    if (options.method === 'patch' || options.method === 'post') {\r\n      request = this.httpClient[options.method](\r\n        structuredResource,\r\n        body,\r\n        httpOptions\r\n      );\r\n    } else {\r\n      request = (this.httpClient[options.method] as any)(\r\n        structuredResource,\r\n        httpOptions\r\n      );\r\n    }\r\n    if (resource !== '/session/token' && !DrupalConstants.TokenInit) {\r\n      return this.getToken().pipe(\r\n        mergeMap(() =>\r\n          request.pipe(timeout(DrupalConstants.Settings.requestTimeout))\r\n        )\r\n      );\r\n    }\r\n    // Set requests time out from drupal config\r\n    return request.pipe(timeout(DrupalConstants.Settings.requestTimeout));\r\n  }\r\n\r\n  /**\r\n   * Get default HttpOptions or replace the custom ones.\r\n   * Supports url params, responseType, headers, observer\r\n   * @param options Custom httpOptions to override the defaults\r\n   */\r\n  private httpOptions(options: HttpOptions) {\r\n    // Init default options\r\n    const httpOptions: any = {\r\n      reportProgress: true, // allow for progress\r\n      withCredentials: true,\r\n      responseType: 'json',\r\n      params: {\r\n        _format: 'json', // required by drupal 8 rest\r\n      },\r\n      headers: {},\r\n      observe: 'body',\r\n    };\r\n\r\n    // If the user is logged in, add the CSRF header token\r\n    if (DrupalConstants.Connection && DrupalConstants.Connection.csrf_token) {\r\n      httpOptions.headers['X-CSRF-Token'] =\r\n        DrupalConstants.Connection.csrf_token;\r\n    } else if (DrupalConstants.Token) {\r\n      httpOptions.headers['X-CSRF-Token'] = DrupalConstants.Token;\r\n    }\r\n\r\n    // Override defaults\r\n    if (options.params) {\r\n      httpOptions.params = options.params;\r\n    }\r\n    if (options.responseType) {\r\n      httpOptions.responseType = options.responseType;\r\n    }\r\n    if (options.headers) {\r\n      httpOptions.headers = options.headers;\r\n    }\r\n    if (options.observe) {\r\n      httpOptions.observe = options.observe;\r\n    }\r\n\r\n    return httpOptions;\r\n  }\r\n\r\n  /**\r\n   * get full resource structure after adding the frags\r\n   * @param resource drupal base resource url\r\n   * @param frags frags to change it with the value that inside brackets\r\n   */\r\n  private structureResource(\r\n    resource: string,\r\n    frags: string[] | number[] = []\r\n  ): string {\r\n    // if there is no custom frags\r\n    if (frags.length === 0) {\r\n      return DrupalConstants.backEndUrl + resource;\r\n    }\r\n    // split the resource to fragments\r\n    const resourceParts = resource.split('/');\r\n    // init empty string\r\n    let resourceFrags = '';\r\n    // check for each frag and replace it\r\n    resourceParts.forEach((part, index) => {\r\n      // if the part is a frag\r\n      if (part[0] === '{') {\r\n        // get the value from frags array and remove it\r\n        resourceFrags += `/${frags.shift()}`;\r\n      } else {\r\n        // if part is not a frag add it directly\r\n        resourceFrags += `/${part}`;\r\n      }\r\n    });\r\n    // remove duplicate / at the start of the resource\r\n    resourceFrags = resourceFrags.substr(1);\r\n    return DrupalConstants.backEndUrl + resourceFrags;\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n// RXJS\r\nimport { Observable, of, throwError } from 'rxjs';\r\nimport { tap, mergeMap, map, catchError } from 'rxjs/operators';\r\n\r\n// Custom imports\r\nimport {\r\n  HttpOptions,\r\n  LoginCredentials,\r\n  LoginResponse,\r\n  UserEntity,\r\n} from '../models';\r\nimport { BaseService } from './base.service';\r\n\r\n@Injectable()\r\nexport class UserService extends BaseService {\r\n  private static readonly keyStoreCredentials: string = 'drx_8_derc';\r\n  /**\r\n   * Implements resource /user/login POST\r\n   * Logs the user in using cookie authentication method\r\n   * @param credentials username and password object style of the user\r\n   */\r\n  login(credentials: LoginCredentials): Observable<LoginResponse> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'post',\r\n    };\r\n    return this.request(httpOptions, '/user/login', credentials).pipe(\r\n      mergeMap((response: LoginResponse) => {\r\n        this.saveCredentialsInStorage(credentials);\r\n        return this.getToken().pipe(\r\n          map((token: string) => {\r\n            // Save the response connection\r\n            this.saveConnection(response, token);\r\n            return response;\r\n          })\r\n        );\r\n      })\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Implements /user/logout POST\r\n   * Logs the user out.\r\n   * Will throw and error if the user is not logged in\r\n   */\r\n  logout(): Observable<null> {\r\n    // if the user is not logged in yet, throw an observable error\r\n    if (!this.isLoggedIn) {\r\n      return throwError(() => 'User is not logged in.');\r\n    }\r\n\r\n    // set the options and logout token\r\n    const httpOptions: HttpOptions = {\r\n      method: 'post',\r\n      params: {\r\n        _format: 'json',\r\n        token: this.connection.logout_token,\r\n      },\r\n    };\r\n\r\n    // delete the saved connection after logging out\r\n    return this.request(httpOptions, '/user/logout').pipe(\r\n      tap(this.deleteConnection),\r\n      tap(this.deleteStoredCredentials),\r\n      catchError((err) => {\r\n        if (err && err.status === 403) {\r\n          this.deleteConnection();\r\n        }\r\n        throw err;\r\n      })\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Implement resource /user/{user} GET\r\n   * @param uid the user id\r\n   */\r\n  get(uid: number): Observable<UserEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n      frags: [uid],\r\n    };\r\n    return this.request(httpOptions, '/user/{user}');\r\n  }\r\n\r\n  /**\r\n   * Implement resource /entity/user: POST\r\n   * @param user user object to create\r\n   */\r\n  create(user: UserEntity): Observable<UserEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'post',\r\n    };\r\n    return this.request(httpOptions, '/entity/user', user);\r\n  }\r\n\r\n  /**\r\n   * Implement resource /user/{user}: PATCH\r\n   * @param uid user id to update\r\n   * @param user user object with required values\r\n   */\r\n  update(uid: number, user: UserEntity): Observable<UserEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'patch',\r\n      frags: [uid],\r\n    };\r\n    return this.request(httpOptions, '/user/{user}', user);\r\n  }\r\n\r\n  /**\r\n   * Implement resource /user/{user}: DELETE\r\n   * @param uid user id to delete\r\n   */\r\n  delete(uid: number): Observable<null> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'delete',\r\n      frags: [uid],\r\n    };\r\n    return this.request(httpOptions, '/user/{user}');\r\n  }\r\n\r\n  /**\r\n   * Implement resource /user/register: POST\r\n   * @param user user info object to register\r\n   */\r\n  register(user: {\r\n    name: string[];\r\n    pass: string[];\r\n    mail: string[];\r\n    [key:string]: any[]\r\n  }): Observable<UserEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'post',\r\n    };\r\n    return this.request(httpOptions, '/user/register', user);\r\n  }\r\n  /**\r\n   * try to login user with the saved credentials in local storage if they exist\r\n   * @returns Observable<LoginResponse>\r\n   */\r\n\r\n  attemptToLoginWithSavedCredentials(): Observable<LoginResponse> {\r\n    const credentials = this.getStoredCredentials();\r\n    if (!credentials) {\r\n      return throwError(() => 'No credentials stored');\r\n    }\r\n    return this.login(credentials);\r\n  }\r\n\r\n  /**\r\n   * Delete credentials from localstorage\r\n   */\r\n  deleteStoredCredentials(): void {\r\n    localStorage.removeItem(UserService.keyStoreCredentials);\r\n  }\r\n\r\n  /**\r\n   * Get the current user credentials from localstorage\r\n   */\r\n  getStoredCredentials(): LoginCredentials | null {\r\n    const credStore = localStorage.getItem(UserService.keyStoreCredentials);\r\n    if (!credStore) {\r\n      return null;\r\n    }\r\n    return <LoginCredentials>JSON.parse(credStore);\r\n  }\r\n\r\n  /**\r\n   * Save credentials in localstorage\r\n   * @param credentials credentials to save in localstorage\r\n   */\r\n  protected saveCredentialsInStorage(credentials: LoginCredentials): void {\r\n    localStorage.setItem(\r\n      UserService.keyStoreCredentials,\r\n      JSON.stringify(credentials)\r\n    );\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n// RXJS\r\nimport { Observable } from 'rxjs';\r\n\r\n// Custom imports\r\nimport { BaseService } from './base.service';\r\nimport { ViewOptions, HttpOptions, ViewEntity } from '../models';\r\n\r\n@Injectable()\r\nexport class ViewService extends BaseService {\r\n\r\n  /**\r\n   * Implements /entity/view/{view}: GET\r\n   * Get view result\r\n   * @param machineName view machine name\r\n   */\r\n  getView(machineName: string): Observable<ViewEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n      frags: [machineName],\r\n    };\r\n    return this.request(httpOptions, '/entity/view/{view}');\r\n  }\r\n\r\n  /**\r\n   * Implements Views rest export\r\n   * Returns array of view rows\r\n   * @param viewPath the view url path, EX: '/view/my_custom_view_path'\r\n   */\r\n  get(viewPath: string, viewOptions: ViewOptions = {}): Observable<any[]> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n      params: {\r\n        '_format': 'json'\r\n      }\r\n    };\r\n\r\n    if (viewOptions.args) {\r\n      viewPath += '/' + viewOptions.args.join('/');\r\n    }\r\n\r\n    if (viewOptions.filters) {\r\n      httpOptions.params = { ...httpOptions.params, ...viewOptions.filters };\r\n    }\r\n\r\n    if (viewOptions.pagination) {\r\n      httpOptions.params = { ...httpOptions.params, ...viewOptions.pagination };\r\n    }\r\n\r\n\r\n    if (viewOptions.sorting) {\r\n      httpOptions.params = { ...httpOptions.params, ...viewOptions.sorting };\r\n    }\r\n\r\n    return this.request(httpOptions, viewPath);\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n// RXJS\r\nimport { Observable } from 'rxjs';\r\n\r\n// Custom imports\r\nimport { BaseService } from './base.service';\r\nimport { HttpOptions, ContentEntity, ContentType } from '../models';\r\n\r\n@Injectable()\r\nexport class ContentService extends BaseService {\r\n\r\n  /**\r\n   * Implement resource /node/{node} GET\r\n   * @param nid the node id\r\n   */\r\n  get(nid: number): Observable<ContentEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n      frags: [nid]\r\n    };\r\n    return this.request(httpOptions, '/node/{node}');\r\n  }\r\n\r\n  /**\r\n   * Implement resource /node: POST\r\n   * @param content node object to create\r\n   */\r\n  create(content: ContentEntity): Observable<ContentEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'post',\r\n    };\r\n    return this.request(httpOptions, '/node', content);\r\n  }\r\n\r\n  /**\r\n   * Implement resource /node/{node}: PATCH\r\n   * @param nid node id to update\r\n   * @param content node object with required values\r\n   */\r\n  update(nid: number, content: ContentEntity): Observable<ContentEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'patch',\r\n      frags: [nid]\r\n    };\r\n    return this.request(httpOptions, '/node/{node}', content);\r\n  }\r\n\r\n  /**\r\n   * Implement resource /node/{node}: DELETE\r\n   * @param nid content id to delete\r\n   */\r\n  delete(nid: number): Observable<null> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'delete',\r\n      frags: [nid]\r\n    };\r\n    return this.request(httpOptions, '/node/{node}');\r\n  }\r\n\r\n  /**\r\n   * Implement resource /entity/node_type/{node_type}\r\n   * @param type node type or machine name like page, article\r\n   */\r\n  contentType(type: string): Observable<ContentType> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n      frags: [type]\r\n    };\r\n    return this.request(httpOptions, '/entity/node_type/{node_type}');\r\n  }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n// RXJS\r\nimport { Observable } from 'rxjs';\r\n\r\n// Custom imports\r\nimport { BaseService } from './base.service';\r\nimport { HttpOptions, TaxonomyTermEntity, TaxonomyVocabularyEntity } from '../models';\r\n\r\n@Injectable()\r\nexport class TaxonomyService extends BaseService {\r\n\r\n  /**\r\n   * Implement resource /taxonomy/term/{taxonomy_term} GET\r\n   * @param tid the term id\r\n   */\r\n  get(tid: number): Observable<TaxonomyTermEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n      frags: [tid]\r\n    };\r\n    return this.request(httpOptions, '/taxonomy/term/{taxonomy_term}');\r\n  }\r\n\r\n  /**\r\n   * Implement resource /taxonomy/term: POST\r\n   * @param term term object to create\r\n   */\r\n  create(term: TaxonomyTermEntity): Observable<TaxonomyTermEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'post',\r\n    };\r\n    return this.request(httpOptions, '/taxonomy/term', term);\r\n  }\r\n\r\n  /**\r\n   * Implement resource /taxonomy/term/{taxonomy_term}: PATCH\r\n   * @param tid node id to update\r\n   * @param term term object with required values\r\n   */\r\n  update(tid: number, term: TaxonomyTermEntity): Observable<TaxonomyTermEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'patch',\r\n      frags: [tid]\r\n    };\r\n    return this.request(httpOptions, '/taxonomy/term/{taxonomy_term}', term);\r\n  }\r\n\r\n  /**\r\n   * Implement resource /taxonomy/term/{taxonomy_term}: DELETE\r\n   * @param tid term id to delete\r\n   */\r\n  delete(tid: number): Observable<null> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'delete',\r\n      frags: [tid]\r\n    };\r\n    return this.request(httpOptions, '/taxonomy/term/{taxonomy_term}');\r\n  }\r\n\r\n  /**\r\n   * Implement /entity/taxonomy_vocabulary/{taxonomy_vocabulary}: Get\r\n   * @param machineName vocabulary machine name like tags\r\n   */\r\n  vocabulary(machineName: string): Observable<TaxonomyVocabularyEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n      frags: [machineName]\r\n    };\r\n    return this.request(httpOptions, '/entity/taxonomy_vocabulary/{taxonomy_vocabulary}');\r\n  }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n// RXJS\r\nimport { Observable } from 'rxjs';\r\n\r\n// Custom imports\r\nimport { BaseService } from './base.service';\r\nimport { HttpOptions, FileEntity } from '../models';\r\nimport { DrupalConstants } from '../config';\r\n\r\n@Injectable()\r\nexport class FileService extends BaseService {\r\n\r\n  /**\r\n   * Implement resource /entity/file/{file}: GET\r\n   * @param fid the file id\r\n   */\r\n  get(fid: number): Observable<FileEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n      frags: [fid]\r\n    };\r\n    return this.request(httpOptions, '/entity/file/{file}');\r\n  }\r\n\r\n  /**\r\n   * Implement resource /file/upload/{entity_type_id}/{bundle}/{field_name}: POST\r\n   * @param file the file to create\r\n   */\r\n  upload(entityType: string, bundle: string, fieldName: string, file: File): Observable<FileEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'post',\r\n      frags: [entityType, bundle, fieldName],\r\n      headers: {\r\n        'Content-Type': 'application/octet-stream',\r\n        'Content-Disposition': `file; filename=\"${file.name}\"`\r\n      },\r\n    };\r\n\r\n    // If the user is logged in, add the CSRF header token\r\n    if (DrupalConstants.Connection && DrupalConstants.Connection.csrf_token) {\r\n      httpOptions.headers['X-CSRF-Token'] = DrupalConstants.Connection.csrf_token;\r\n    }\r\n    return this.request(httpOptions, '/file/upload/{entity_type_id}/{bundle}/{field_name}', file);\r\n  }\r\n\r\n  /**\r\n   * Implement resource /entity/file/{file}: PATCH\r\n   * @param fid the file id\r\n   * @param file the file content to be updated\r\n   */\r\n  update(fid: number, file: FileEntity): Observable<FileEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'patch',\r\n      frags: [fid],\r\n    };\r\n\r\n    return this.request(httpOptions, '/entity/file/{file}', file);\r\n  }\r\n\r\n  /**\r\n   * Implement resource /entity/file/{file}: DELETE\r\n   * @param fid the file id\r\n   */\r\n  delete(fid: number): Observable<null> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'delete',\r\n      frags: [fid],\r\n    };\r\n\r\n    return this.request(httpOptions, '/entity/file/{file}');\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n// RXJS\r\nimport { Observable } from 'rxjs';\r\n\r\n// Custom imports\r\nimport { BaseService } from './base.service';\r\nimport { HttpOptions, MediaEntity, MediaType } from '../models';\r\n\r\n@Injectable()\r\nexport class MediaService extends BaseService {\r\n\r\n  /**\r\n   * Implement resource /media/{media}/edit GET\r\n   * @param mid the media id\r\n   */\r\n  get(mid: number): Observable<MediaEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n      frags: [mid]\r\n    };\r\n    return this.request(httpOptions, '/media/{media}/edit');\r\n  }\r\n\r\n  /**\r\n   * Implement resource /entity/media: POST\r\n   * @param media media object to create\r\n   */\r\n  create(media: MediaEntity): Observable<MediaEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'post',\r\n    };\r\n    return this.request(httpOptions, '/entity/media', media);\r\n  }\r\n\r\n  /**\r\n   * Implement resource /media/{media}/edit: PATCH\r\n   * @param mid media id to update\r\n   * @param media media object with required values\r\n   */\r\n  update(mid: number, media: MediaEntity): Observable<MediaEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'patch',\r\n      frags: [mid]\r\n    };\r\n    return this.request(httpOptions, '/media/{media}/edit', media);\r\n  }\r\n\r\n  /**\r\n   * Implement resource /media/{media}/edit: DELETE\r\n   * @param mid media id to delete\r\n   */\r\n  delete(mid: number): Observable<null> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'delete',\r\n      frags: [mid]\r\n    };\r\n    return this.request(httpOptions, '/media/{media}/edit');\r\n  }\r\n\r\n  /**\r\n   * Implement resource /entity/media_type/{media_type}\r\n   * @param type media type or machine name like audio, image and video\r\n   */\r\n  mediaType(type: string): Observable<MediaType> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n      frags: [type]\r\n    };\r\n    return this.request(httpOptions, '/entity/media_type/{media_type}');\r\n  }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n// RXJS\r\nimport { Observable } from 'rxjs';\r\n\r\n// Custom imports\r\nimport { BaseService } from './base.service';\r\nimport { HttpOptions, FlagRegisteration, FlagEntity } from '../models';\r\n\r\n@Injectable()\r\nexport class FlagService extends BaseService {\r\n\r\n  /**\r\n   * Implement resource /entity/flagging/{flagging}: GET\r\n   * @param fid the flag id\r\n   */\r\n  get(fid: number): Observable<FlagEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n      frags: [fid]\r\n    };\r\n    return this.request(httpOptions, '/entity/flagging/{flagging}');\r\n  }\r\n\r\n  /**\r\n   * Implement resource /entity/flagging: POST\r\n   * @param flag: flag content\r\n   */\r\n  post(flag: FlagRegisteration): Observable<FlagEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'post',\r\n    };\r\n    return this.request(httpOptions, '/entity/flagging', flag);\r\n  }\r\n\r\n  update(fid: number, flag: FlagEntity): Observable<FlagEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'patch',\r\n      frags: [fid]\r\n    };\r\n    return this.request(httpOptions, '/entity/flagging/{flagging}', flag);\r\n  }\r\n\r\n  delete(fid: number): Observable<null> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'delete',\r\n      frags: [fid]\r\n    };\r\n    return this.request(httpOptions, '/entity/flagging/{flagging}');\r\n  }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n// RXJS\r\nimport { Observable } from 'rxjs';\r\n\r\n// Custom imports\r\nimport { BaseService } from './base.service';\r\nimport {\r\n  HttpOptions,\r\n  WebformEntity,\r\n  WebformFields,\r\n  WebformSubmission,\r\n} from '../models';\r\nimport { DrupalConstants } from '../config';\r\n\r\n@Injectable()\r\nexport class WebformService extends BaseService {\r\n  /**\r\n   * Implement resource \t/webform/{webform} GET\r\n   * @param name the webform machine name\r\n   * @param langCode the language code for the webform\r\n   */\r\n  get(machineName: string, langCode?: string): Observable<WebformEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n      frags: [machineName],\r\n    };\r\n    if (langCode) {\r\n      httpOptions.params = { langcode: langCode };\r\n    }\r\n    return this.request(httpOptions, '/webform/{webform}');\r\n  }\r\n\r\n  /**\r\n   * Implement resource /webform_rest/{webform_id}/fields GET\r\n   * @param machineName the webform machine name\r\n   * @param langCode the language code for the webform\r\n   */\r\n  fields(machineName: string, langCode?: string): Observable<WebformFields> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n      frags: [machineName],\r\n    };\r\n    if (langCode) {\r\n      httpOptions.params = { langcode: langCode };\r\n    }\r\n    return this.request(httpOptions, '/webform_rest/{webform_id}/fields');\r\n  }\r\n\r\n  /**\r\n   * Implement resource /webform_rest/{webform_id}/submission/{sid} GET\r\n   * @param machineName the webform machine name\r\n   * @param sid the webform submittion id\r\n   */\r\n  getSubmission(\r\n    machineName: string,\r\n    sid: string,\r\n    langCode?: string\r\n  ): Observable<WebformSubmission> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n      frags: [machineName, sid.toString()],\r\n    };\r\n    if (langCode) {\r\n      httpOptions.params = { langcode: langCode };\r\n    }\r\n    return this.request(\r\n      httpOptions,\r\n      '/webform_rest/{webform_id}/submission/{sid}'\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Implement resource /webform_rest/{webform_id}/submission/{sid} PATCH\r\n   * @param machineName the webform machine name\r\n   * @param sid the webform submittion id\r\n   * @param webformSubmission the submission content object of fields\r\n   */\r\n  updateSubmission(\r\n    machineName: string,\r\n    sid: string,\r\n    webformSubmission: any\r\n  ): Observable<{ sid: string } | { error: { message: string } }> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'patch',\r\n      frags: [machineName, sid.toString()],\r\n    };\r\n    return this.request(\r\n      httpOptions,\r\n      '/webform_rest/{webform_id}/submission/{sid}',\r\n      webformSubmission\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Implement resource /webform_rest/submit POST\r\n   * @param webformSubmission the submission content object of fields\r\n   * All required fields should be added or the request will return error 400 :/\r\n   */\r\n  submit(webformSubmission: {\r\n    webform_id: string;\r\n    [key: string]: any;\r\n  }): Observable<{ sid: string }> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'post',\r\n    };\r\n    return this.request(httpOptions, '/webform_rest/submit', webformSubmission);\r\n  }\r\n\r\n  /**\r\n   * Implement resource /webform_rest/{webform_id}/upload/{field_name}: POST\r\n   * @param file the file to upload\r\n   */\r\n  upload(machineName: string, fieldName: string, file: File) {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'post',\r\n      frags: [machineName, fieldName],\r\n      headers: {\r\n        'Content-Type': 'application/octet-stream',\r\n        'Content-Disposition': `file; filename=\"${file.name}\"`,\r\n      },\r\n    };\r\n\r\n    // If the user is logged in, add the CSRF header token\r\n    if (DrupalConstants.Connection && DrupalConstants.Connection.csrf_token) {\r\n      httpOptions.headers['X-CSRF-Token'] =\r\n        DrupalConstants.Connection.csrf_token;\r\n    }\r\n    return this.request(\r\n      httpOptions,\r\n      '/webform_rest/{webform_id}/upload/{field_name}',\r\n      file\r\n    );\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n// RXJS\r\nimport { Observable } from 'rxjs';\r\n\r\n// Custom imports\r\nimport { BaseService } from './base.service';\r\nimport { HttpOptions, PushRegistration, PushRegisterationResponse } from '../models';\r\n\r\n@Injectable()\r\nexport class PushService extends BaseService {\r\n\r\n  register(registration: PushRegistration): Observable<PushRegisterationResponse> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'post',\r\n    };\r\n    return this.request(httpOptions, '/entity/push_notifications_token', registration);\r\n  }\r\n\r\n  get(tokenId: number): Observable<PushRegisterationResponse> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n      frags: [tokenId]\r\n    };\r\n    return this.request(httpOptions, '/push_notifications/token/{push_notifications_token}');\r\n  }\r\n\r\n  update(tokenId: number, registration: PushRegistration): Observable<PushRegisterationResponse> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'patch',\r\n      frags: [tokenId]\r\n    };\r\n    return this.request(httpOptions, '/push_notifications/token/{push_notifications_token}', registration);\r\n  }\r\n\r\n  delete(tokenId: number): Observable<null> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'delete',\r\n      frags: [tokenId]\r\n    };\r\n    return this.request(httpOptions, '/push_notifications/token/{push_notifications_token}');\r\n  }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n// RXJS\r\nimport { Observable } from 'rxjs';\r\n\r\n// Custom imports\r\nimport { BaseService } from './base.service';\r\nimport {\r\n  HttpOptions,\r\n  CartOrder,\r\n  CartProductAdd,\r\n  CommerceOrder,\r\n  CommerceOrderEntity,\r\n  CommercePayment,\r\n  CommercePaymentEntity,\r\n} from '../models';\r\n\r\n@Injectable()\r\nexport class CommerceService extends BaseService {\r\n  // Commerce Cart API\r\n\r\n  getCart(): Observable<CartOrder[]> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n    };\r\n    return this.request(httpOptions, '/cart');\r\n  }\r\n\r\n  getCartOrder(orderId: number): Observable<CartOrder> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n      frags: [orderId],\r\n    };\r\n    return this.request(httpOptions, '/cart/{order}');\r\n  }\r\n\r\n  addToCart(data: CartProductAdd[]): Observable<CartOrder[]> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'post',\r\n    };\r\n    return this.request(httpOptions, '/cart/add', data);\r\n  }\r\n\r\n  updateCartOrderItems(\r\n    orderId: number,\r\n    items: { [key: number]: { quantity: number } }\r\n  ): Observable<CartOrder> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'patch',\r\n      frags: [orderId],\r\n    };\r\n    return this.request(httpOptions, '/cart/{order}/items', items);\r\n  }\r\n\r\n  deleteCartOrderItem(orderId: number, itemId: number): Observable<null> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'delete',\r\n      frags: [orderId, itemId],\r\n    };\r\n    return this.request(httpOptions, '/cart/{order}/items/{item}');\r\n  }\r\n\r\n  deleteCartOrderItems(orderId: number): Observable<null> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'delete',\r\n      frags: [orderId],\r\n    };\r\n    return this.request(httpOptions, '/cart/{order}/items');\r\n  }\r\n\r\n  // Commerce Decoupled Checkout\r\n\r\n  createOrder(order: CommerceOrder): Observable<CommerceOrderEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'post',\r\n    };\r\n    return this.request(httpOptions, '/commerce/order/create', order);\r\n  }\r\n\r\n  createPayment(\r\n    orderId: number,\r\n    payment: CommercePayment\r\n  ): Observable<CommercePaymentEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'post',\r\n      frags: [orderId],\r\n    };\r\n    return this.request(\r\n      httpOptions,\r\n      '/commerce/payment/create/{order_id}',\r\n      payment\r\n    );\r\n  }\r\n\r\n  capturePayment(orderId: number, paymenId: number): Observable<null> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'post',\r\n      frags: [orderId, paymenId],\r\n    };\r\n    return this.request(\r\n      httpOptions,\r\n      '/commerce/payment/capture/{order_id}/{payment_id}',\r\n      {}\r\n    );\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n// RXJS\r\nimport { Observable } from 'rxjs';\r\n\r\n// Custom imports\r\nimport { BaseService } from './base.service';\r\nimport { HttpOptions, CommentType, Comment, CommentEntity } from '../models';\r\n\r\n@Injectable()\r\nexport class CommentService extends BaseService {\r\n\r\n  create(comment: Comment): Observable<CommentEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'post',\r\n    };\r\n    return this.request(httpOptions, '/comment', comment);\r\n  }\r\n\r\n  update(cid: number, comment: Comment): Observable<CommentEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'patch',\r\n      frags: [cid],\r\n    };\r\n    return this.request(httpOptions, '/comment/{comment}', comment);\r\n  }\r\n\r\n  delete(cid: number): Observable<null> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'delete',\r\n      frags: [cid],\r\n    };\r\n    return this.request(httpOptions, '/comment/{comment}');\r\n  }\r\n\r\n  getById(cid: number): Observable<CommentEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n      frags: [cid],\r\n    };\r\n    return this.request(httpOptions, '/comment/{comment}');\r\n  }\r\n\r\n  getType(type: string): Observable<CommentType> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n      frags: [type],\r\n    };\r\n    return this.request(httpOptions, '/entity/comment_type/{comment_type}');\r\n  }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n// RXJS\r\nimport { Observable } from 'rxjs';\r\n\r\n// Custom imports\r\nimport { BaseService } from './base.service';\r\nimport {\r\n  QuizEntity,\r\n  HttpOptions,\r\n  QuizFeedbackTypeEntity,\r\n  QuizQuestionEntity,\r\n  EntityBundleType,\r\n  QuizQuestionRelationshipEntity,\r\n  QuizResultEntity,\r\n  QuizResultAnswerEntity,\r\n} from '../models';\r\n\r\n@Injectable()\r\nexport class QuizService extends BaseService {\r\n  /**\r\n   * Implements /quiz/{quiz}: GET\r\n   * Returns quiz entity\r\n   * @param qid the quiz entity ID\r\n   */\r\n  get(qid: number): Observable<QuizEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n      params: {\r\n        _format: 'json',\r\n      },\r\n      frags: [qid],\r\n    };\r\n\r\n    return this.request(httpOptions, '/quiz/{quiz}');\r\n  }\r\n\r\n  /**\r\n   * Implements /entity/quiz: POST\r\n   * Returns quiz created entity\r\n   * @param quiz the quiz entity with updated values\r\n   */\r\n  create(quiz: QuizEntity): Observable<QuizEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'post',\r\n      params: {\r\n        _format: 'json',\r\n      },\r\n    };\r\n\r\n    return this.request(httpOptions, '/entity/quiz', quiz);\r\n  }\r\n\r\n  /**\r\n   * Implements /quiz/{quiz}: PATCH\r\n   * Returns quiz updated entity\r\n   * @param qid the quiz entity ID\r\n   * @param quiz the quiz entity with updated values\r\n   */\r\n  update(qid: number, quiz: QuizEntity): Observable<QuizEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'patch',\r\n      params: {\r\n        _format: 'json',\r\n      },\r\n      frags: [qid],\r\n    };\r\n\r\n    return this.request(httpOptions, '/quiz/{quiz}', quiz);\r\n  }\r\n\r\n  /**\r\n   * Implements /quiz/{quiz}: DELETE\r\n   * @param qid the quiz entity ID\r\n   */\r\n  delete(qid: number): Observable<null> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'delete',\r\n      params: {\r\n        _format: 'json',\r\n      },\r\n      frags: [qid],\r\n    };\r\n\r\n    return this.request(httpOptions, '/quiz/{quiz}');\r\n  }\r\n\r\n  /**\r\n   * Implements /entity/quiz_type/{quiz_type}: GET\r\n   * Returns quiz type\r\n   * @param quizMachineName the quiz type machine name\r\n   */\r\n  getType(quizMachineName: string): Observable<EntityBundleType> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n      params: {\r\n        _format: 'json',\r\n      },\r\n      frags: [quizMachineName],\r\n    };\r\n\r\n    return this.request(httpOptions, '/entity/quiz_type/{quiz_type}');\r\n  }\r\n\r\n  /**\r\n   * Implements /entity/quiz_feedback_type/{quiz_feedback_type}: GET\r\n   * Returns quiz feedback type\r\n   * @param feedbackMachineName the feedback type machine name\r\n   */\r\n  getFeedbackType(\r\n    feedbackMachineName: string\r\n  ): Observable<QuizFeedbackTypeEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n      params: {\r\n        _format: 'json',\r\n      },\r\n      frags: [feedbackMachineName],\r\n    };\r\n\r\n    return this.request(\r\n      httpOptions,\r\n      '/entity/quiz_feedback_type/{quiz_feedback_type}'\r\n    );\r\n  }\r\n\r\n  // Question\r\n\r\n  /**\r\n   * Implements /quiz-question/{quiz_question}: GET\r\n   * Returns quiz question entity\r\n   * @param qqid the quiz question entity ID\r\n   */\r\n  getQuestion(qqid: number): Observable<QuizQuestionEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n      params: {\r\n        _format: 'json',\r\n      },\r\n      frags: [qqid],\r\n    };\r\n\r\n    return this.request(httpOptions, '/quiz-question/{quiz_question}');\r\n  }\r\n\r\n  /**\r\n   * Implements /entity/quiz_question: POST\r\n   * Returns question created entity\r\n   * @param question the quiz question entity to create\r\n   */\r\n  createQuestion(question: QuizQuestionEntity): Observable<QuizQuestionEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'post',\r\n      params: {\r\n        _format: 'json',\r\n      },\r\n    };\r\n\r\n    return this.request(httpOptions, '/entity/quiz_question', question);\r\n  }\r\n\r\n  /**\r\n   * Implements /quiz-question/{quiz_question}: PATCH\r\n   * Returns question updated entity\r\n   * @param qqid the quiz question entity ID\r\n   * @param question the quiz question entity with updated values\r\n   */\r\n  updateQuestion(\r\n    qqid: number,\r\n    question: QuizQuestionEntity\r\n  ): Observable<QuizQuestionEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'patch',\r\n      params: {\r\n        _format: 'json',\r\n      },\r\n      frags: [qqid],\r\n    };\r\n\r\n    return this.request(\r\n      httpOptions,\r\n      '/quiz-question/{quiz_question}',\r\n      question\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Implements /quiz-question/{quiz_question}: DELETE\r\n   * @param qqid the question entity ID\r\n   */\r\n  deleteQuestion(qqid: number): Observable<null> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'delete',\r\n      params: {\r\n        _format: 'json',\r\n      },\r\n      frags: [qqid],\r\n    };\r\n\r\n    return this.request(httpOptions, '/quiz-question/{quiz_question}');\r\n  }\r\n\r\n  /**\r\n   * Implements /entity/quiz_question_type/{quiz_question_type}: GET\r\n   * Returns quiz question type\r\n   * @param feedbackMachineName the type machine name\r\n   */\r\n  getQuestionType(typeMachineName: string): Observable<EntityBundleType> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n      params: {\r\n        _format: 'json',\r\n      },\r\n      frags: [typeMachineName],\r\n    };\r\n\r\n    return this.request(\r\n      httpOptions,\r\n      '/entity/quiz_question_type/{quiz_question_type}'\r\n    );\r\n  }\r\n\r\n  // Relationship\r\n\r\n  /**\r\n   * Implements /quiz-question-relationship/{quiz_question_relationship}: GET\r\n   * Returns quiz question relationship entity\r\n   * @param qqrid the quiz question relationship entity ID 'question id'\r\n   */\r\n  getQuestionRelationship(\r\n    qqrid: number\r\n  ): Observable<QuizQuestionRelationshipEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n      params: {\r\n        _format: 'json',\r\n      },\r\n      frags: [qqrid],\r\n    };\r\n\r\n    return this.request(\r\n      httpOptions,\r\n      '/quiz-question-relationship/{quiz_question_relationship}'\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Implements /quiz-question-relationship/{quiz_question_relationship}: POST\r\n   * Returns quiz question relationship created entity\r\n   * @param questionRelationship the quiz question relationship entity to create\r\n   */\r\n  createQuestionRelationship(\r\n    questionRelationship: QuizQuestionRelationshipEntity\r\n  ): Observable<QuizQuestionRelationshipEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'post',\r\n      params: {\r\n        _format: 'json',\r\n      },\r\n    };\r\n\r\n    return this.request(\r\n      httpOptions,\r\n      '/entity/quiz_question_relationship',\r\n      questionRelationship\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Implements /quiz-question-relationship/{quiz_question_relationship}: PATCH\r\n   * Returns quiz question relationship updated entity\r\n   * @param qqrid the quiz question relationship entity ID 'question id'\r\n   * @param questionRelationship the quiz question relationship updated entity\r\n   */\r\n  updateQuestionRelationship(\r\n    qqrid: number,\r\n    questionRelationship: QuizQuestionRelationshipEntity\r\n  ): Observable<QuizQuestionRelationshipEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'patch',\r\n      params: {\r\n        _format: 'json',\r\n      },\r\n      frags: [qqrid],\r\n    };\r\n\r\n    return this.request(\r\n      httpOptions,\r\n      '/quiz-question-relationship/{quiz_question_relationship}',\r\n      questionRelationship\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Implements /quiz-question-relationship/{quiz_question_relationship}: DELETE\r\n   * @param qqrid the quiz question relationship entity ID 'question id'\r\n   */\r\n  deleteQuestionRelationship(qqrid: number): Observable<null> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'delete',\r\n      params: {\r\n        _format: 'json',\r\n      },\r\n      frags: [qqrid],\r\n    };\r\n\r\n    return this.request(\r\n      httpOptions,\r\n      '/quiz-question-relationship/{quiz_question_relationship}'\r\n    );\r\n  }\r\n\r\n  // Result\r\n\r\n  /**\r\n   * Implements /quiz/{quiz}/result/{quiz_result}: GET\r\n   * Returns quiz result entity\r\n   * @param qid the quiz entity ID\r\n   * @param qrid the quiz result entity ID\r\n   */\r\n  getResult(qid: number, qrid: number): Observable<QuizResultEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n      params: {\r\n        _format: 'json',\r\n      },\r\n      frags: [qid, qrid],\r\n    };\r\n\r\n    return this.request(httpOptions, '/quiz/{quiz}/result/{quiz_result}');\r\n  }\r\n\r\n  /**\r\n   * Implements /entity/quiz_result: POST\r\n   * Returns quiz result created entity\r\n   * @param result the quiz result entity\r\n   */\r\n  createResult(result: QuizResultEntity): Observable<QuizResultEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'post',\r\n      params: {\r\n        _format: 'json',\r\n      },\r\n    };\r\n\r\n    return this.request(httpOptions, '/entity/quiz_result', result);\r\n  }\r\n\r\n  /**\r\n   * Implements /quiz/{quiz}/result/{quiz_result}: PATCH\r\n   * Returns quiz result updated entity\r\n   * @param qid the quiz entity ID\r\n   * @param qrid the quiz result entity ID\r\n   * @param result the quiz result updated entity\r\n   */\r\n   updateResult(qid: number, qrid: number, result: QuizResultEntity): Observable<QuizResultEntity> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'patch',\r\n      params: {\r\n        _format: 'json',\r\n      },\r\n      frags: [qid, qrid]\r\n    };\r\n\r\n    return this.request(httpOptions, '/quiz/{quiz}/result/{quiz_result}', result);\r\n  }\r\n\r\n  /**\r\n   * Implements /quiz/{quiz}/result/{quiz_result}: DELETE\r\n   * @param qid the quiz entity ID\r\n   * @param qrid the quiz result entity ID\r\n   */\r\n   deleteResult(qid: number, qrid: number): Observable<null> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'delete',\r\n      params: {\r\n        _format: 'json',\r\n      },\r\n      frags: [qid, qrid]\r\n    };\r\n\r\n    return this.request(httpOptions, '/quiz/{quiz}/result/{quiz_result}');\r\n  }\r\n\r\n  /**\r\n   * Implements /entity/quiz_result_type/{quiz_result_type}: GET\r\n   * Returns quiz result type\r\n   * @param resultMachineName the type machine name\r\n   */\r\n   getResultType(resultMachineName: string): Observable<EntityBundleType> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n      params: {\r\n        _format: 'json',\r\n      },\r\n      frags: [resultMachineName],\r\n    };\r\n\r\n    return this.request(\r\n      httpOptions,\r\n      '/entity/quiz_result_type/{quiz_result_type}'\r\n    );\r\n  }\r\n\r\n  // Result answer: interfaces TODO\r\n\r\n  /**\r\n   * Implements /quiz/{quiz}/result/{quiz_result}/answer/{quiz_result_answer}: GET\r\n   * Returns quiz result answer entity\r\n   * @param qid the quiz entity ID\r\n   * @param qrid the quiz result entity ID\r\n   * @param qrid the quiz result answer entity ID\r\n   */\r\n   getResultAnswer(qid: number, qrid: number, raid: number): Observable<any> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n      params: {\r\n        _format: 'json',\r\n      },\r\n      frags: [qid, qrid, raid],\r\n    };\r\n\r\n    return this.request(httpOptions, '/quiz/{quiz}/result/{quiz_result}/answer/{quiz_result_answer}');\r\n  }\r\n\r\n  /**\r\n   * Implements /entity/quiz_result_answer: POST\r\n   * Returns quiz result answer created entity\r\n   * @param answer the quiz result answer entity\r\n   */\r\n  createResultAnswer(answer: any): Observable<any> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'post',\r\n      params: {\r\n        _format: 'json',\r\n      },\r\n    };\r\n\r\n    return this.request(httpOptions, '/entity/quiz_result_answer', answer);\r\n  }\r\n\r\n  /**\r\n   * Implements /quiz/{quiz}/result/{quiz_result}/answer/{quiz_result_answer}: PATCH\r\n   * Returns quiz result updated entity\r\n   * Returns quiz result answer entity\r\n   * @param qid the quiz entity ID\r\n   * @param qrid the quiz result entity ID\r\n   * @param qrid the quiz result answer entity ID\r\n   * @param answer the quiz result answer entity\r\n   */\r\n   updateResultAnswer(qid: number, qrid: number, raid: number, answer: any): Observable<any> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'patch',\r\n      params: {\r\n        _format: 'json',\r\n      },\r\n      frags: [qid, qrid, raid]\r\n    };\r\n\r\n    return this.request(httpOptions, '/quiz/{quiz}/result/{quiz_result}/answer/{quiz_result_answer}', answer);\r\n  }\r\n\r\n  /**\r\n   * Implements /quiz/{quiz}/result/{quiz_result}/answer/{quiz_result_answer}: DELETE\r\n   * @param qid the quiz entity ID\r\n   * @param qrid the quiz result entity ID\r\n   * @param qrid the quiz result answer entity ID\r\n   */\r\n   deleteResultAnswer(qid: number, qrid: number, raid: number): Observable<null> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'delete',\r\n      params: {\r\n        _format: 'json',\r\n      },\r\n      frags: [qid, qrid, raid]\r\n    };\r\n\r\n    return this.request(httpOptions, '/quiz/{quiz}/result/{quiz_result}/answer/{quiz_result_answer}');\r\n  }\r\n\r\n/**\r\n   * Implements /entity/quiz_result_answer_type/{quiz_result_answer_type}: GET\r\n   * Returns quiz answer result type\r\n   * @param resultMachineName the type machine name\r\n   */\r\n  getResultAnswerType(resultAnswerMachineName: string): Observable<EntityBundleType> {\r\n    const httpOptions: HttpOptions = {\r\n      method: 'get',\r\n      params: {\r\n        _format: 'json',\r\n      },\r\n      frags: [resultAnswerMachineName],\r\n    };\r\n\r\n    return this.request(\r\n      httpOptions,\r\n      '/entity/quiz_result_answer_type/{quiz_result_answer_type}'\r\n    );\r\n  }\r\n}\r\n","import { NgModule, APP_INITIALIZER } from '@angular/core';\r\nimport { HttpClientModule } from '@angular/common/http';\r\n\r\nimport { DrupalConstants } from './config';\r\nimport { UserService } from './http/user.service';\r\nimport { BaseService } from './http/base.service';\r\nimport { ViewService } from './http/view.service';\r\nimport { ContentService } from './http/content.service';\r\nimport { TaxonomyService } from './http/taxonomy.service';\r\nimport { FileService } from './http/file.service';\r\nimport { MediaService } from './http/media.service';\r\nimport { FlagService } from './http/flag.service';\r\nimport { WebformService } from './http/webform.service';\r\nimport { PushService } from './http/push.service';\r\nimport { CommerceService } from './http/commerce.service';\r\nimport { CommentService } from './http/comment.service';\r\nimport { QuizService } from './http/quiz.service';\r\n\r\n/**\r\n * implement APP_INITIALIZER\r\n * @param userService user service\r\n * @see https://gillespie59.github.io/2016/12/04/angular2-code-before-rendering.html\r\n */\r\nexport function init(userService: UserService): () => void {\r\n  return () => {\r\n    DrupalConstants.Connection = userService.connection;\r\n  };\r\n}\r\n// @dynamic\r\n@NgModule({\r\n  imports: [\r\n    HttpClientModule\r\n  ],\r\n  providers: [\r\n    BaseService,\r\n    UserService,\r\n    ViewService,\r\n    ContentService,\r\n    TaxonomyService,\r\n    FileService,\r\n    MediaService,\r\n    FlagService,\r\n    WebformService,\r\n    PushService,\r\n    CommerceService,\r\n    CommentService,\r\n    QuizService,\r\n    {\r\n      'provide': APP_INITIALIZER,\r\n      'useFactory': init,\r\n      'deps': [UserService],\r\n      'multi': true\r\n    }\r\n  ]\r\n})\r\nexport class Drupal8RestModule { }\r\n\r\nexport {\r\n  BaseService,\r\n  UserService,\r\n  ViewService,\r\n  ContentService,\r\n  TaxonomyService,\r\n  FileService,\r\n  MediaService,\r\n  FlagService,\r\n  WebformService,\r\n  PushService,\r\n  CommerceService,\r\n  CommentService,\r\n  QuizService\r\n};\r\n","/*\r\n * Public API Surface of ngx-drupal8-rest\r\n */\r\nexport * from './lib/config';\r\nexport * from './lib/models';\r\nexport * from './lib/ngx-drupal8-rest.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;AAEA;MACa,eAAe,CAAA;;IAElB,OAAO,QAAQ;;AAEf,IAAA,QAAQ;AACR,IAAA,UAAU;AACV,IAAA,KAAK;IACL,SAAS,GAAG,KAAK;AAEzB;;;AAGG;IACH,OAAO,IAAI,CAAC,QAAkB,EAAA;;AAE5B,QAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;;AAE5B,YAAA,QAAQ,CAAC,cAAc,GAAG,KAAK;;AAEjC,QAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;;AAE5B,YAAA,QAAQ,CAAC,cAAc,GAAG,OAAO;;AAEnC,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,QAAQ;;AAGnC,IAAA,WAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK;;IAG5B,WAAW,KAAK,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK;AAC9C,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK;;AAG7B,IAAA,WAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS;;IAGhC,WAAW,SAAS,CAAC,KAAc,EAAA;AACjC,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK;;AAGjC;;AAEG;AACH,IAAA,WAAW,QAAQ,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AAC3B,YAAA,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC;;AAEnG,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ;;AAG/B;;AAEG;AACH,IAAA,WAAW,UAAU,GAAA;AACnB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;;QAE9B,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC,IAAI;;AAErD,QAAA,OAAO,QAAQ,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC,IAAI,GAAG,GAAG;;AAGxD;;AAEG;AACK,IAAA,WAAW,QAAQ,GAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,EAAE;;QAEvC,OAAO,IAAI,CAAC,QAAQ;;AAGtB;;AAEG;IACH,WAAW,UAAU,CAAC,aAA4B,EAAA;AAChD,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,aAAa;;AAG1C;;AAEG;AACH,IAAA,WAAW,UAAU,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU;;AAElC;;AC1FD;;MCaa,WAAW,CAAA;AAIZ,IAAA,UAAA;AACqB,IAAA,QAAA;AAJvB,IAAA,OAAO,mBAAmB,GAAoB,IAAI;IAE1D,WACU,CAAA,UAAsB,EACD,QAAgB,EAAA;QADrC,IAAU,CAAA,UAAA,GAAV,UAAU;QACW,IAAQ,CAAA,QAAA,GAAR,QAAQ;;IAGvC,QAAQ,GAAA;AACN,QAAA,IAAI,WAAW,CAAC,mBAAmB,EAAE;AACnC,YAAA,OAAO,WAAW,CAAC,mBAAmB,CAAC,YAAY,EAAE;;AAGvD,QAAA,WAAW,CAAC,mBAAmB,GAAG,IAAI,OAAO,EAAU;AACvD,QAAA,MAAM,YAAY,GAAgB;AAChC,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,YAAY,EAAE,MAAM;SACrB;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,gBAAgB;AACxC,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,KAAK,KAAI;YACZ,IAAI,eAAe,CAAC,KAAK,IAAI,KAAK,KAAK,eAAe,CAAC,KAAK,EAAE;gBAC5D,IAAI,CAAC,gBAAgB,EAAE;;AAEzB,YAAA,eAAe,CAAC,KAAK,GAAG,KAAK;AAC7B,YAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AACpC,gBAAA,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;;;YAGtC,IAAI,CAAC,eAAe,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE;AAClD,gBAAA,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;;AAE9C,YAAA,OAAO,KAAK;AACd,SAAC,CAAC;AAEH,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,KAAK,KAAI;gBACd,cAAc,CAAC,MAAK;AAClB,oBAAA,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3C,oBAAA,WAAW,CAAC,mBAAmB,CAAC,QAAQ,EAAE;AAC1C,oBAAA,WAAW,CAAC,mBAAmB,GAAG,IAAI;AACxC,iBAAC,CAAC;aACH;AACD,YAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,gBAAA,WAAW,CAAC,mBAAmB,GAAG,IAAI;AACtC,gBAAA,MAAM,KAAK,CAAC,KAAK,CAAC;aACnB;AACF,SAAA,CAAC;AACJ,QAAA,OAAO,WAAW,CAAC,mBAAmB,CAAC,YAAY,EAAE;;AAGvD;;;AAGG;AACH,IAAA,IAAI,UAAU,GAAA;;AAEZ,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,OAAO,KAAK;;AAGd,QAAA,OAAO,eAAe,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,KAAK;;AAGrE;;AAEG;AACH,IAAA,IAAI,UAAU,GAAA;QACZ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AACpC,YAAA,IAAI,eAAe,CAAC,UAAU,EAAE;gBAC9B,OAAO,eAAe,CAAC,UAAU;;YAEnC,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;YAClD,IAAI,YAAY,EAAE;gBAChB,eAAe,CAAC,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;;;AAGvD,YAAA,MAAM,UAAU,IACd,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAC/C;YACD,IAAI,UAAU,EAAE;AACd,gBAAA,eAAe,CAAC,UAAU,GAAG,UAAU;;;AAGzC,YAAA,OAAO,UAAU;;;AAIrB;;AAEG;AACH,IAAA,IAAc,iBAAiB,GAAA;QAC7B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;;YAEpC,MAAM,UAAU,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC;;AAEtD,YAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;AACtB,YAAA,OAAO,UAAU,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,UAAU,GAAG,IAAI;;;AAIzD;;;AAGG;IACO,cAAc,CAAC,IAAmB,EAAE,KAAa,EAAA;QACzD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;;AAEpC,YAAA,eAAe,CAAC,UAAU,GAAG,IAAI;AACjC,YAAA,eAAe,CAAC,KAAK,GAAG,KAAK;;AAE7B,YAAA,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;;YAExD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;;YAEhC,MAAM,UAAU,GAAG,GAAG,GAAG,eAAe,CAAC,QAAQ,CAAC,cAAc,GAAG,IAAI;;YAEvE,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC;AACzD,YAAA,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;;;AAIxC;;AAEG;IACO,gBAAgB,GAAA;QACxB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;;AAEpC,YAAA,eAAe,CAAC,UAAU,GAAG,SAAS;AACtC,YAAA,eAAe,CAAC,KAAK,GAAG,SAAS;;AAEjC,YAAA,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC;AACrC,YAAA,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC;AACrC,YAAA,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;;;AAIpC;;;;;AAKG;AACO,IAAA,OAAO,CACf,OAAoB,EACpB,QAAgB,EAChB,IAAK,EAAA;;AAGL,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC;AAE1E,QAAA,IAAI,OAA2B;;QAE/B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;;AAG7C,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE;AAC3D,YAAA,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CACvC,kBAAkB,EAClB,IAAI,EACJ,WAAW,CACZ;;aACI;AACL,YAAA,OAAO,GAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAS,CAChD,kBAAkB,EAClB,WAAW,CACZ;;QAEH,IAAI,QAAQ,KAAK,gBAAgB,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE;YAC/D,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CACzB,QAAQ,CAAC,MACP,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAC/D,CACF;;;AAGH,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;;AAGvE;;;;AAIG;AACK,IAAA,WAAW,CAAC,OAAoB,EAAA;;AAEtC,QAAA,MAAM,WAAW,GAAQ;YACvB,cAAc,EAAE,IAAI;AACpB,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,YAAY,EAAE,MAAM;AACpB,YAAA,MAAM,EAAE;gBACN,OAAO,EAAE,MAAM;AAChB,aAAA;AACD,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,OAAO,EAAE,MAAM;SAChB;;QAGD,IAAI,eAAe,CAAC,UAAU,IAAI,eAAe,CAAC,UAAU,CAAC,UAAU,EAAE;AACvE,YAAA,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC;AACjC,gBAAA,eAAe,CAAC,UAAU,CAAC,UAAU;;AAClC,aAAA,IAAI,eAAe,CAAC,KAAK,EAAE;YAChC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,eAAe,CAAC,KAAK;;;AAI7D,QAAA,IAAI,OAAO,CAAC,MAAM,EAAE;AAClB,YAAA,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;;AAErC,QAAA,IAAI,OAAO,CAAC,YAAY,EAAE;AACxB,YAAA,WAAW,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY;;AAEjD,QAAA,IAAI,OAAO,CAAC,OAAO,EAAE;AACnB,YAAA,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO;;AAEvC,QAAA,IAAI,OAAO,CAAC,OAAO,EAAE;AACnB,YAAA,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO;;AAGvC,QAAA,OAAO,WAAW;;AAGpB;;;;AAIG;AACK,IAAA,iBAAiB,CACvB,QAAgB,EAChB,KAAA,GAA6B,EAAE,EAAA;;AAG/B,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,YAAA,OAAO,eAAe,CAAC,UAAU,GAAG,QAAQ;;;QAG9C,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;;QAEzC,IAAI,aAAa,GAAG,EAAE;;QAEtB,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;;AAEpC,YAAA,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;;AAEnB,gBAAA,aAAa,IAAI,CAAI,CAAA,EAAA,KAAK,CAAC,KAAK,EAAE,EAAE;;iBAC/B;;AAEL,gBAAA,aAAa,IAAI,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE;;AAE/B,SAAC,CAAC;;AAEF,QAAA,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;AACvC,QAAA,OAAO,eAAe,CAAC,UAAU,GAAG,aAAa;;AA7PxC,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,4CAKZ,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HALV,WAAW,EAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB;;0BAMI,MAAM;2BAAC,WAAW;;;ACFjB,MAAO,WAAY,SAAQ,WAAW,CAAA;AAClC,IAAA,OAAgB,mBAAmB,GAAW,YAAY;AAClE;;;;AAIG;AACH,IAAA,KAAK,CAAC,WAA6B,EAAA;AACjC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;SACf;AACD,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,IAAI,CAC/D,QAAQ,CAAC,CAAC,QAAuB,KAAI;AACnC,YAAA,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC;AAC1C,YAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CACzB,GAAG,CAAC,CAAC,KAAa,KAAI;;AAEpB,gBAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC;AACpC,gBAAA,OAAO,QAAQ;aAChB,CAAC,CACH;SACF,CAAC,CACH;;AAGH;;;;AAIG;IACH,MAAM,GAAA;;AAEJ,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,OAAO,UAAU,CAAC,MAAM,wBAAwB,CAAC;;;AAInD,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY;AACpC,aAAA;SACF;;AAGD,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,IAAI,CACnD,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAC1B,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EACjC,UAAU,CAAC,CAAC,GAAG,KAAI;YACjB,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;gBAC7B,IAAI,CAAC,gBAAgB,EAAE;;AAEzB,YAAA,MAAM,GAAG;SACV,CAAC,CACH;;AAGH;;;AAGG;AACH,IAAA,GAAG,CAAC,GAAW,EAAA;AACb,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,GAAG,CAAC;SACb;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC;;AAGlD;;;AAGG;AACH,IAAA,MAAM,CAAC,IAAgB,EAAA;AACrB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;SACf;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,EAAE,IAAI,CAAC;;AAGxD;;;;AAIG;IACH,MAAM,CAAC,GAAW,EAAE,IAAgB,EAAA;AAClC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,CAAC,GAAG,CAAC;SACb;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,EAAE,IAAI,CAAC;;AAGxD;;;AAGG;AACH,IAAA,MAAM,CAAC,GAAW,EAAA;AAChB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,CAAC,GAAG,CAAC;SACb;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC;;AAGlD;;;AAGG;AACH,IAAA,QAAQ,CAAC,IAKR,EAAA;AACC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;SACf;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,gBAAgB,EAAE,IAAI,CAAC;;AAE1D;;;AAGG;IAEH,kCAAkC,GAAA;AAChC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,EAAE;QAC/C,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,OAAO,UAAU,CAAC,MAAM,uBAAuB,CAAC;;AAElD,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;;AAGhC;;AAEG;IACH,uBAAuB,GAAA;AACrB,QAAA,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,mBAAmB,CAAC;;AAG1D;;AAEG;IACH,oBAAoB,GAAA;QAClB,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC;QACvE,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,OAAO,IAAI;;AAEb,QAAA,OAAyB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;;AAGhD;;;AAGG;AACO,IAAA,wBAAwB,CAAC,WAA6B,EAAA;AAC9D,QAAA,YAAY,CAAC,OAAO,CAClB,WAAW,CAAC,mBAAmB,EAC/B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAC5B;;0HAhKQ,WAAW,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HAAX,WAAW,EAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB;;;ACLK,MAAO,WAAY,SAAQ,WAAW,CAAA;AAE1C;;;;AAIG;AACH,IAAA,OAAO,CAAC,WAAmB,EAAA;AACzB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,WAAW,CAAC;SACrB;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qBAAqB,CAAC;;AAGzD;;;;AAIG;AACH,IAAA,GAAG,CAAC,QAAgB,EAAE,WAAA,GAA2B,EAAE,EAAA;AACjD,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,MAAM,EAAE;AACN,gBAAA,SAAS,EAAE;AACZ;SACF;AAED,QAAA,IAAI,WAAW,CAAC,IAAI,EAAE;YACpB,QAAQ,IAAI,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;;AAG9C,QAAA,IAAI,WAAW,CAAC,OAAO,EAAE;AACvB,YAAA,WAAW,CAAC,MAAM,GAAG,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE;;AAGxE,QAAA,IAAI,WAAW,CAAC,UAAU,EAAE;AAC1B,YAAA,WAAW,CAAC,MAAM,GAAG,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC,UAAU,EAAE;;AAI3E,QAAA,IAAI,WAAW,CAAC,OAAO,EAAE;AACvB,YAAA,WAAW,CAAC,MAAM,GAAG,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE;;QAGxE,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC;;0HA7CjC,WAAW,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HAAX,WAAW,EAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB;;;ACCK,MAAO,cAAe,SAAQ,WAAW,CAAA;AAE7C;;;AAGG;AACH,IAAA,GAAG,CAAC,GAAW,EAAA;AACb,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,GAAG;SACZ;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC;;AAGlD;;;AAGG;AACH,IAAA,MAAM,CAAC,OAAsB,EAAA;AAC3B,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;SACf;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC;;AAGpD;;;;AAIG;IACH,MAAM,CAAC,GAAW,EAAE,OAAsB,EAAA;AACxC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,CAAC,GAAG;SACZ;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,EAAE,OAAO,CAAC;;AAG3D;;;AAGG;AACH,IAAA,MAAM,CAAC,GAAW,EAAA;AAChB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,CAAC,GAAG;SACZ;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC;;AAGlD;;;AAGG;AACH,IAAA,WAAW,CAAC,IAAY,EAAA;AACtB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,IAAI;SACb;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,+BAA+B,CAAC;;0HA3DxD,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HAAd,cAAc,EAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;;ACCK,MAAO,eAAgB,SAAQ,WAAW,CAAA;AAE9C;;;AAGG;AACH,IAAA,GAAG,CAAC,GAAW,EAAA;AACb,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,GAAG;SACZ;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,gCAAgC,CAAC;;AAGpE;;;AAGG;AACH,IAAA,MAAM,CAAC,IAAwB,EAAA;AAC7B,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;SACf;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,gBAAgB,EAAE,IAAI,CAAC;;AAG1D;;;;AAIG;IACH,MAAM,CAAC,GAAW,EAAE,IAAwB,EAAA;AAC1C,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,CAAC,GAAG;SACZ;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,gCAAgC,EAAE,IAAI,CAAC;;AAG1E;;;AAGG;AACH,IAAA,MAAM,CAAC,GAAW,EAAA;AAChB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,CAAC,GAAG;SACZ;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,gCAAgC,CAAC;;AAGpE;;;AAGG;AACH,IAAA,UAAU,CAAC,WAAmB,EAAA;AAC5B,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,WAAW;SACpB;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,mDAAmD,CAAC;;0HA3D5E,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HAAf,eAAe,EAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B;;;ACEK,MAAO,WAAY,SAAQ,WAAW,CAAA;AAE1C;;;AAGG;AACH,IAAA,GAAG,CAAC,GAAW,EAAA;AACb,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,GAAG;SACZ;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qBAAqB,CAAC;;AAGzD;;;AAGG;AACH,IAAA,MAAM,CAAC,UAAkB,EAAE,MAAc,EAAE,SAAiB,EAAE,IAAU,EAAA;AACtE,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC;AACtC,YAAA,OAAO,EAAE;AACP,gBAAA,cAAc,EAAE,0BAA0B;AAC1C,gBAAA,qBAAqB,EAAE,CAAA,gBAAA,EAAmB,IAAI,CAAC,IAAI,CAAG,CAAA;AACvD,aAAA;SACF;;QAGD,IAAI,eAAe,CAAC,UAAU,IAAI,eAAe,CAAC,UAAU,CAAC,UAAU,EAAE;YACvE,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC,UAAU;;QAE7E,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qDAAqD,EAAE,IAAI,CAAC;;AAG/F;;;;AAIG;IACH,MAAM,CAAC,GAAW,EAAE,IAAgB,EAAA;AAClC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,CAAC,GAAG,CAAC;SACb;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qBAAqB,EAAE,IAAI,CAAC;;AAG/D;;;AAGG;AACH,IAAA,MAAM,CAAC,GAAW,EAAA;AAChB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,CAAC,GAAG,CAAC;SACb;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qBAAqB,CAAC;;0HA3D9C,WAAW,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HAAX,WAAW,EAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB;;;ACAK,MAAO,YAAa,SAAQ,WAAW,CAAA;AAE3C;;;AAGG;AACH,IAAA,GAAG,CAAC,GAAW,EAAA;AACb,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,GAAG;SACZ;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qBAAqB,CAAC;;AAGzD;;;AAGG;AACH,IAAA,MAAM,CAAC,KAAkB,EAAA;AACvB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;SACf;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,eAAe,EAAE,KAAK,CAAC;;AAG1D;;;;AAIG;IACH,MAAM,CAAC,GAAW,EAAE,KAAkB,EAAA;AACpC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,CAAC,GAAG;SACZ;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qBAAqB,EAAE,KAAK,CAAC;;AAGhE;;;AAGG;AACH,IAAA,MAAM,CAAC,GAAW,EAAA;AAChB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,CAAC,GAAG;SACZ;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qBAAqB,CAAC;;AAGzD;;;AAGG;AACH,IAAA,SAAS,CAAC,IAAY,EAAA;AACpB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,IAAI;SACb;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,iCAAiC,CAAC;;0HA3D1D,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HAAZ,YAAY,EAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB;;;ACCK,MAAO,WAAY,SAAQ,WAAW,CAAA;AAE1C;;;AAGG;AACH,IAAA,GAAG,CAAC,GAAW,EAAA;AACb,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,GAAG;SACZ;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,6BAA6B,CAAC;;AAGjE;;;AAGG;AACH,IAAA,IAAI,CAAC,IAAuB,EAAA;AAC1B,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;SACf;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,kBAAkB,EAAE,IAAI,CAAC;;IAG5D,MAAM,CAAC,GAAW,EAAE,IAAgB,EAAA;AAClC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,CAAC,GAAG;SACZ;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,6BAA6B,EAAE,IAAI,CAAC;;AAGvE,IAAA,MAAM,CAAC,GAAW,EAAA;AAChB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,CAAC,GAAG;SACZ;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,6BAA6B,CAAC;;0HAtCtD,WAAW,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HAAX,WAAW,EAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB;;;ACOK,MAAO,cAAe,SAAQ,WAAW,CAAA;AAC7C;;;;AAIG;IACH,GAAG,CAAC,WAAmB,EAAE,QAAiB,EAAA;AACxC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,WAAW,CAAC;SACrB;QACD,IAAI,QAAQ,EAAE;YACZ,WAAW,CAAC,MAAM,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE;;QAE7C,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,oBAAoB,CAAC;;AAGxD;;;;AAIG;IACH,MAAM,CAAC,WAAmB,EAAE,QAAiB,EAAA;AAC3C,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,WAAW,CAAC;SACrB;QACD,IAAI,QAAQ,EAAE;YACZ,WAAW,CAAC,MAAM,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE;;QAE7C,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,mCAAmC,CAAC;;AAGvE;;;;AAIG;AACH,IAAA,aAAa,CACX,WAAmB,EACnB,GAAW,EACX,QAAiB,EAAA;AAEjB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;SACrC;QACD,IAAI,QAAQ,EAAE;YACZ,WAAW,CAAC,MAAM,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE;;QAE7C,OAAO,IAAI,CAAC,OAAO,CACjB,WAAW,EACX,6CAA6C,CAC9C;;AAGH;;;;;AAKG;AACH,IAAA,gBAAgB,CACd,WAAmB,EACnB,GAAW,EACX,iBAAsB,EAAA;AAEtB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;SACrC;QACD,OAAO,IAAI,CAAC,OAAO,CACjB,WAAW,EACX,6CAA6C,EAC7C,iBAAiB,CAClB;;AAGH;;;;AAIG;AACH,IAAA,MAAM,CAAC,iBAGN,EAAA;AACC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;SACf;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,sBAAsB,EAAE,iBAAiB,CAAC;;AAG7E;;;AAGG;AACH,IAAA,MAAM,CAAC,WAAmB,EAAE,SAAiB,EAAE,IAAU,EAAA;AACvD,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;AAC/B,YAAA,OAAO,EAAE;AACP,gBAAA,cAAc,EAAE,0BAA0B;AAC1C,gBAAA,qBAAqB,EAAE,CAAA,gBAAA,EAAmB,IAAI,CAAC,IAAI,CAAG,CAAA,CAAA;AACvD,aAAA;SACF;;QAGD,IAAI,eAAe,CAAC,UAAU,IAAI,eAAe,CAAC,UAAU,CAAC,UAAU,EAAE;AACvE,YAAA,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC;AACjC,gBAAA,eAAe,CAAC,UAAU,CAAC,UAAU;;QAEzC,OAAO,IAAI,CAAC,OAAO,CACjB,WAAW,EACX,gDAAgD,EAChD,IAAI,CACL;;0HApHQ,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HAAd,cAAc,EAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;;ACLK,MAAO,WAAY,SAAQ,WAAW,CAAA;AAE1C,IAAA,QAAQ,CAAC,YAA8B,EAAA;AACrC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;SACf;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,kCAAkC,EAAE,YAAY,CAAC;;AAGpF,IAAA,GAAG,CAAC,OAAe,EAAA;AACjB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,OAAO;SAChB;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,sDAAsD,CAAC;;IAG1F,MAAM,CAAC,OAAe,EAAE,YAA8B,EAAA;AACpD,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,CAAC,OAAO;SAChB;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,sDAAsD,EAAE,YAAY,CAAC;;AAGxG,IAAA,MAAM,CAAC,OAAe,EAAA;AACpB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,CAAC,OAAO;SAChB;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,sDAAsD,CAAC;;0HA9B/E,WAAW,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HAAX,WAAW,EAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB;;;ACSK,MAAO,eAAgB,SAAQ,WAAW,CAAA;;IAG9C,OAAO,GAAA;AACL,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;SACd;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC;;AAG3C,IAAA,YAAY,CAAC,OAAe,EAAA;AAC1B,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,OAAO,CAAC;SACjB;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC;;AAGnD,IAAA,SAAS,CAAC,IAAsB,EAAA;AAC9B,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;SACf;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,CAAC;;IAGrD,oBAAoB,CAClB,OAAe,EACf,KAA8C,EAAA;AAE9C,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,CAAC,OAAO,CAAC;SACjB;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qBAAqB,EAAE,KAAK,CAAC;;IAGhE,mBAAmB,CAAC,OAAe,EAAE,MAAc,EAAA;AACjD,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;SACzB;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,4BAA4B,CAAC;;AAGhE,IAAA,oBAAoB,CAAC,OAAe,EAAA;AAClC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,CAAC,OAAO,CAAC;SACjB;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qBAAqB,CAAC;;;AAKzD,IAAA,WAAW,CAAC,KAAoB,EAAA;AAC9B,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;SACf;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,wBAAwB,EAAE,KAAK,CAAC;;IAGnE,aAAa,CACX,OAAe,EACf,OAAwB,EAAA;AAExB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,CAAC,OAAO,CAAC;SACjB;QACD,OAAO,IAAI,CAAC,OAAO,CACjB,WAAW,EACX,qCAAqC,EACrC,OAAO,CACR;;IAGH,cAAc,CAAC,OAAe,EAAE,QAAgB,EAAA;AAC9C,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;SAC3B;QACD,OAAO,IAAI,CAAC,OAAO,CACjB,WAAW,EACX,mDAAmD,EACnD,EAAE,CACH;;0HArFQ,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HAAf,eAAe,EAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B;;;ACPK,MAAO,cAAe,SAAQ,WAAW,CAAA;AAE7C,IAAA,MAAM,CAAC,OAAgB,EAAA;AACrB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;SACf;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC;;IAGvD,MAAM,CAAC,GAAW,EAAE,OAAgB,EAAA;AAClC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,CAAC,GAAG,CAAC;SACb;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,oBAAoB,EAAE,OAAO,CAAC;;AAGjE,IAAA,MAAM,CAAC,GAAW,EAAA;AAChB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,CAAC,GAAG,CAAC;SACb;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,oBAAoB,CAAC;;AAGxD,IAAA,OAAO,CAAC,GAAW,EAAA;AACjB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,GAAG,CAAC;SACb;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,oBAAoB,CAAC;;AAGxD,IAAA,OAAO,CAAC,IAAY,EAAA;AAClB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,IAAI,CAAC;SACd;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qCAAqC,CAAC;;0HAtC9D,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HAAd,cAAc,EAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;;ACUK,MAAO,WAAY,SAAQ,WAAW,CAAA;AAC1C;;;;AAIG;AACH,IAAA,GAAG,CAAC,GAAW,EAAA;AACb,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,CAAC,GAAG,CAAC;SACb;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC;;AAGlD;;;;AAIG;AACH,IAAA,MAAM,CAAC,IAAgB,EAAA;AACrB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;SACF;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,EAAE,IAAI,CAAC;;AAGxD;;;;;AAKG;IACH,MAAM,CAAC,GAAW,EAAE,IAAgB,EAAA;AAClC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,CAAC,GAAG,CAAC;SACb;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,EAAE,IAAI,CAAC;;AAGxD;;;AAGG;AACH,IAAA,MAAM,CAAC,GAAW,EAAA;AAChB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,CAAC,GAAG,CAAC;SACb;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC;;AAGlD;;;;AAIG;AACH,IAAA,OAAO,CAAC,eAAuB,EAAA;AAC7B,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,CAAC,eAAe,CAAC;SACzB;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,+BAA+B,CAAC;;AAGnE;;;;AAIG;AACH,IAAA,eAAe,CACb,mBAA2B,EAAA;AAE3B,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,CAAC,mBAAmB,CAAC;SAC7B;QAED,OAAO,IAAI,CAAC,OAAO,CACjB,WAAW,EACX,iDAAiD,CAClD;;;AAKH;;;;AAIG;AACH,IAAA,WAAW,CAAC,IAAY,EAAA;AACtB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,CAAC,IAAI,CAAC;SACd;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,gCAAgC,CAAC;;AAGpE;;;;AAIG;AACH,IAAA,cAAc,CAAC,QAA4B,EAAA;AACzC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;SACF;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,uBAAuB,EAAE,QAAQ,CAAC;;AAGrE;;;;;AAKG;IACH,cAAc,CACZ,IAAY,EACZ,QAA4B,EAAA;AAE5B,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,CAAC,IAAI,CAAC;SACd;QAED,OAAO,IAAI,CAAC,OAAO,CACjB,WAAW,EACX,gCAAgC,EAChC,QAAQ,CACT;;AAGH;;;AAGG;AACH,IAAA,cAAc,CAAC,IAAY,EAAA;AACzB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,CAAC,IAAI,CAAC;SACd;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,gCAAgC,CAAC;;AAGpE;;;;AAIG;AACH,IAAA,eAAe,CAAC,eAAuB,EAAA;AACrC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,CAAC,eAAe,CAAC;SACzB;QAED,OAAO,IAAI,CAAC,OAAO,CACjB,WAAW,EACX,iDAAiD,CAClD;;;AAKH;;;;AAIG;AACH,IAAA,uBAAuB,CACrB,KAAa,EAAA;AAEb,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,CAAC,KAAK,CAAC;SACf;QAED,OAAO,IAAI,CAAC,OAAO,CACjB,WAAW,EACX,0DAA0D,CAC3D;;AAGH;;;;AAIG;AACH,IAAA,0BAA0B,CACxB,oBAAoD,EAAA;AAEpD,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;SACF;QAED,OAAO,IAAI,CAAC,OAAO,CACjB,WAAW,EACX,oCAAoC,EACpC,oBAAoB,CACrB;;AAGH;;;;;AAKG;IACH,0BAA0B,CACxB,KAAa,EACb,oBAAoD,EAAA;AAEpD,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,CAAC,KAAK,CAAC;SACf;QAED,OAAO,IAAI,CAAC,OAAO,CACjB,WAAW,EACX,0DAA0D,EAC1D,oBAAoB,CACrB;;AAGH;;;AAGG;AACH,IAAA,0BAA0B,CAAC,KAAa,EAAA;AACtC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,CAAC,KAAK,CAAC;SACf;QAED,OAAO,IAAI,CAAC,OAAO,CACjB,WAAW,EACX,0DAA0D,CAC3D;;;AAKH;;;;;AAKG;IACH,SAAS,CAAC,GAAW,EAAE,IAAY,EAAA;AACjC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC;SACnB;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,mCAAmC,CAAC;;AAGvE;;;;AAIG;AACH,IAAA,YAAY,CAAC,MAAwB,EAAA;AACnC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;SACF;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qBAAqB,EAAE,MAAM,CAAC;;AAGjE;;;;;;AAMG;AACF,IAAA,YAAY,CAAC,GAAW,EAAE,IAAY,EAAE,MAAwB,EAAA;AAC/D,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI;SAClB;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,mCAAmC,EAAE,MAAM,CAAC;;AAG/E;;;;AAIG;IACF,YAAY,CAAC,GAAW,EAAE,IAAY,EAAA;AACrC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI;SAClB;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,mCAAmC,CAAC;;AAGvE;;;;AAIG;AACF,IAAA,aAAa,CAAC,iBAAyB,EAAA;AACtC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,CAAC,iBAAiB,CAAC;SAC3B;QAED,OAAO,IAAI,CAAC,OAAO,CACjB,WAAW,EACX,6CAA6C,CAC9C;;;AAKH;;;;;;AAMG;AACF,IAAA,eAAe,CAAC,GAAW,EAAE,IAAY,EAAE,IAAY,EAAA;AACtD,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC;SACzB;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,+DAA+D,CAAC;;AAGnG;;;;AAIG;AACH,IAAA,kBAAkB,CAAC,MAAW,EAAA;AAC5B,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;SACF;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,4BAA4B,EAAE,MAAM,CAAC;;AAGxE;;;;;;;;AAQG;AACF,IAAA,kBAAkB,CAAC,GAAW,EAAE,IAAY,EAAE,IAAY,EAAE,MAAW,EAAA;AACtE,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI;SACxB;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,+DAA+D,EAAE,MAAM,CAAC;;AAG3G;;;;;AAKG;AACF,IAAA,kBAAkB,CAAC,GAAW,EAAE,IAAY,EAAE,IAAY,EAAA;AACzD,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI;SACxB;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,+DAA+D,CAAC;;AAGrG;;;;AAIK;AACH,IAAA,mBAAmB,CAAC,uBAA+B,EAAA;AACjD,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,CAAC,uBAAuB,CAAC;SACjC;QAED,OAAO,IAAI,CAAC,OAAO,CACjB,WAAW,EACX,2DAA2D,CAC5D;;0HA9dQ,WAAW,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HAAX,WAAW,EAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB;;;ACAD;;;;AAIG;AACG,SAAU,IAAI,CAAC,WAAwB,EAAA;AAC3C,IAAA,OAAO,MAAK;AACV,QAAA,eAAe,CAAC,UAAU,GAAG,WAAW,CAAC,UAAU;AACrD,KAAC;AACH;AACA;MA2Ba,iBAAiB,CAAA;0HAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAjB,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAxB1B,gBAAgB,CAAA,EAAA,CAAA;AAwBP,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAtBjB,SAAA,EAAA;YACT,WAAW;YACX,WAAW;YACX,WAAW;YACX,cAAc;YACd,eAAe;YACf,WAAW;YACX,YAAY;YACZ,WAAW;YACX,cAAc;YACd,WAAW;YACX,eAAe;YACf,cAAc;YACd,WAAW;AACX,YAAA;AACE,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,YAAY,EAAE,IAAI;gBAClB,MAAM,EAAE,CAAC,WAAW,CAAC;AACrB,gBAAA,OAAO,EAAE;AACV;AACF,SAAA,EAAA,OAAA,EAAA,CAtBC,gBAAgB,CAAA,EAAA,CAAA;;2FAwBP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA1B7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP;AACD,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT,WAAW;wBACX,WAAW;wBACX,WAAW;wBACX,cAAc;wBACd,eAAe;wBACf,WAAW;wBACX,YAAY;wBACZ,WAAW;wBACX,cAAc;wBACd,WAAW;wBACX,eAAe;wBACf,cAAc;wBACd,WAAW;AACX,wBAAA;AACE,4BAAA,SAAS,EAAE,eAAe;AAC1B,4BAAA,YAAY,EAAE,IAAI;4BAClB,MAAM,EAAE,CAAC,WAAW,CAAC;AACrB,4BAAA,OAAO,EAAE;AACV;AACF;AACF,iBAAA;;;ACtDD;;AAEG;;ACFH;;AAEG;;;;"}