@matech/thebigpos-sdk 3.25.0-dev-8059 → 3.25.0-main-8104

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/src/index.ts CHANGED
@@ -73,8 +73,6 @@ export type PartnerTier = "Lite" | "LitePlusPortal" | "Pending";
73
73
 
74
74
  export type OutboundFailureSeverity = "All" | "Failed" | "CompletedWithErrors";
75
75
 
76
- export type MfaFactor = "None" | "Sms" | "Email";
77
-
78
76
  export type LosWebhookSigningKeySyncStatus = "Unknown" | "Synced";
79
77
 
80
78
  export type LosWebhookInventoryStatus =
@@ -724,8 +722,6 @@ export type AiPromptCategory =
724
722
  | "General"
725
723
  | "Action";
726
724
 
727
- export type AiPendingLoanUpdateOutcome = "Applied" | "Refused";
728
-
729
725
  export type AiGuardrailCategory =
730
726
  | "ContentSafety"
731
727
  | "PromptInjection"
@@ -1015,7 +1011,6 @@ export interface AdminAccessUser {
1015
1011
  title?: string | null;
1016
1012
  forcePasswordReset: boolean;
1017
1013
  mfaEnabled: boolean;
1018
- mfaFactor: AdminAccessUserMfaFactorEnum;
1019
1014
  phoneVerified: boolean;
1020
1015
  /** @format int32 */
1021
1016
  loginsWithoutMFACount: number;
@@ -1252,7 +1247,6 @@ export interface AiChatMetadata {
1252
1247
  wasBlocked: boolean;
1253
1248
  blockedReason?: string | null;
1254
1249
  tokenBudget?: AiTokenBudgetStatus | null;
1255
- pendingLoanUpdateDecision?: AiPendingLoanUpdateDecision | null;
1256
1250
  }
1257
1251
 
1258
1252
  export interface AiChatRequest {
@@ -1318,9 +1312,6 @@ export interface AiConversationAuditSummary {
1318
1312
  userName?: string | null;
1319
1313
  userRole?: string | null;
1320
1314
  name?: string | null;
1321
- /** @format uuid */
1322
- loanId?: string | null;
1323
- loanNumber?: string | null;
1324
1315
  /** @format int32 */
1325
1316
  turnCount: number;
1326
1317
  /** @format int32 */
@@ -1406,13 +1397,6 @@ export interface AiGuardrail {
1406
1397
  updatedBy?: AiUpdatedBy | null;
1407
1398
  }
1408
1399
 
1409
- export interface AiPendingLoanUpdateDecision {
1410
- /** @format uuid */
1411
- pendingLoanUpdateId: string;
1412
- outcome: AiPendingLoanUpdateDecisionOutcomeEnum;
1413
- reason?: string | null;
1414
- }
1415
-
1416
1400
  export interface AiPrompt {
1417
1401
  /** @format uuid */
1418
1402
  id: string;
@@ -1906,7 +1890,6 @@ export interface BranchUser {
1906
1890
  title?: string | null;
1907
1891
  forcePasswordReset: boolean;
1908
1892
  mfaEnabled: boolean;
1909
- mfaFactor: BranchUserMfaFactorEnum;
1910
1893
  phoneVerified: boolean;
1911
1894
  /** @format int32 */
1912
1895
  loginsWithoutMFACount: number;
@@ -2379,10 +2362,6 @@ export interface ConditionComment {
2379
2362
  createdByName: string;
2380
2363
  }
2381
2364
 
2382
- export interface ConfirmMfaEnrollmentRequest {
2383
- code: string;
2384
- }
2385
-
2386
2365
  export interface ConsumerConnectRetry {
2387
2366
  correlationKey: string;
2388
2367
  email: string;
@@ -2788,7 +2767,6 @@ export interface DetailedUser {
2788
2767
  title?: string | null;
2789
2768
  forcePasswordReset: boolean;
2790
2769
  mfaEnabled: boolean;
2791
- mfaFactor: DetailedUserMfaFactorEnum;
2792
2770
  phoneVerified: boolean;
2793
2771
  /** @format int32 */
2794
2772
  loginsWithoutMFACount: number;
@@ -3631,7 +3609,6 @@ export interface ImpersonatedDetailedUser {
3631
3609
  title?: string | null;
3632
3610
  forcePasswordReset: boolean;
3633
3611
  mfaEnabled: boolean;
3634
- mfaFactor: ImpersonatedDetailedUserMfaFactorEnum;
3635
3612
  phoneVerified: boolean;
3636
3613
  /** @format int32 */
3637
3614
  loginsWithoutMFACount: number;
@@ -6132,23 +6109,6 @@ export interface MaterializeLoanRoleTasks {
6132
6109
  rowsAdded: number;
6133
6110
  }
6134
6111
 
6135
- export interface MfaEnrollment {
6136
- enrollmentId: string;
6137
- factor: MfaEnrollmentFactorEnum;
6138
- destination?: string | null;
6139
- /** @format int32 */
6140
- expiresInSeconds: number;
6141
- canResend: boolean;
6142
- }
6143
-
6144
- export interface MfaMethod {
6145
- factor: MfaMethodFactorEnum;
6146
- available: boolean;
6147
- current: boolean;
6148
- destination?: string | null;
6149
- requiresConfirmation: boolean;
6150
- }
6151
-
6152
6112
  export interface MilestoneConfiguration {
6153
6113
  /** @format date-time */
6154
6114
  createdAt: string;
@@ -6806,10 +6766,6 @@ export interface RequestImpersonationRequest {
6806
6766
  email: string;
6807
6767
  }
6808
6768
 
6809
- export interface ResendChallengeCodeRequest {
6810
- sessionId: string;
6811
- }
6812
-
6813
6769
  export interface ResetPasswordRequest {
6814
6770
  token: string;
6815
6771
  password: string;
@@ -7746,10 +7702,6 @@ export interface StandardLoanField {
7746
7702
  isAiEnabled: boolean;
7747
7703
  }
7748
7704
 
7749
- export interface StartMfaEnrollmentRequest {
7750
- factor?: MfaFactor | null;
7751
- }
7752
-
7753
7705
  export interface SupportedModel {
7754
7706
  modelId: string;
7755
7707
  displayName: string;
@@ -8172,11 +8124,6 @@ export interface UpdateMeRequest {
8172
8124
  preferredLoanOfficerId?: string | null;
8173
8125
  }
8174
8126
 
8175
- export interface UpdateMfaFactorRequest {
8176
- factor?: MfaFactor | null;
8177
- passwordConfirmation?: string | null;
8178
- }
8179
-
8180
8127
  export interface UpdateMobilePhoneRequest {
8181
8128
  phone: string;
8182
8129
  }
@@ -8388,7 +8335,6 @@ export interface User {
8388
8335
  title?: string | null;
8389
8336
  forcePasswordReset: boolean;
8390
8337
  mfaEnabled: boolean;
8391
- mfaFactor: UserMfaFactorEnum;
8392
8338
  phoneVerified: boolean;
8393
8339
  /** @format int32 */
8394
8340
  loginsWithoutMFACount: number;
@@ -8577,13 +8523,6 @@ export interface UserLoanTaskUpdateRequest {
8577
8523
  loanDocumentFolderId?: string | null;
8578
8524
  }
8579
8525
 
8580
- export interface UserMfaState {
8581
- enabled: boolean;
8582
- factor: UserMfaStateFactorEnum;
8583
- required: boolean;
8584
- methods: MfaMethod[];
8585
- }
8586
-
8587
8526
  export interface UserMobilePhoneVerificationRequest {
8588
8527
  code: string;
8589
8528
  }
@@ -8788,8 +8727,6 @@ type BaseCanvasWidgetConfigTypeMapping<Key, Type> = {
8788
8727
 
8789
8728
  export type AccountBillingRequestBillingTypeEnum = "ClosedLoan" | "LoanOfficer";
8790
8729
 
8791
- export type AdminAccessUserMfaFactorEnum = "None" | "Sms" | "Email";
8792
-
8793
8730
  export type AiAuditLogEventTypeEnum =
8794
8731
  | "Error"
8795
8732
  | "GuardrailBlockedPre"
@@ -8848,8 +8785,6 @@ export type AiGuardrailCategoryEnum =
8848
8785
  | "Privacy"
8849
8786
  | "Legal";
8850
8787
 
8851
- export type AiPendingLoanUpdateDecisionOutcomeEnum = "Applied" | "Refused";
8852
-
8853
8788
  export type AiUrlSourceCategoryEnum =
8854
8789
  | "Regulatory"
8855
8790
  | "Guidelines"
@@ -8913,8 +8848,6 @@ export type BorrowerIdentityRoleEnum =
8913
8848
  | "SettlementAgent"
8914
8849
  | "Admin";
8915
8850
 
8916
- export type BranchUserMfaFactorEnum = "None" | "Sms" | "Email";
8917
-
8918
8851
  export type CanvasFieldDescriptorSourceEnum = "Standard" | "Custom";
8919
8852
 
8920
8853
  export type CanvasFieldDescriptorDataTypeEnum =
@@ -9214,8 +9147,6 @@ export type CustomFieldValueDataTypeEnum =
9214
9147
  | "SingleSelect"
9215
9148
  | "MultiSelect";
9216
9149
 
9217
- export type DetailedUserMfaFactorEnum = "None" | "Sms" | "Email";
9218
-
9219
9150
  export type DocumentsWidgetConfigTypeEnum = "Documents";
9220
9151
 
9221
9152
  export type DraftTypeEnum = "NewLoan" | "EditLoan";
@@ -9302,8 +9233,6 @@ export type IpAddressAddressFamilyEnum =
9302
9233
  | "ControllerAreaNetwork"
9303
9234
  | "Unknown";
9304
9235
 
9305
- export type ImpersonatedDetailedUserMfaFactorEnum = "None" | "Sms" | "Email";
9306
-
9307
9236
  export type IncompleteLoanSourceEnum = "V3" | "LegacyDraft";
9308
9237
 
9309
9238
  export type IncompleteLoanBorrowerApplicationStatusEnum = "Draft" | "Complete";
@@ -9675,10 +9604,6 @@ export type ManualDocumentClassificationRequestDocumentTypeEnum =
9675
9604
  | "AiGeneratedDocument"
9676
9605
  | "Unidentified";
9677
9606
 
9678
- export type MfaEnrollmentFactorEnum = "None" | "Sms" | "Email";
9679
-
9680
- export type MfaMethodFactorEnum = "None" | "Sms" | "Email";
9681
-
9682
9607
  export type MonthlyPaymentWidgetConfigTypeEnum = "MonthlyPayment";
9683
9608
 
9684
9609
  export type MyPartnerTierEnum = "Lite" | "LitePlusPortal" | "Pending";
@@ -9805,8 +9730,6 @@ export type UpdateAiUrlSourceRequestCategoryEnum =
9805
9730
 
9806
9731
  export type UpdateAiUrlSourceRequestScopeEnum = "FullDomain" | "SpecificPath";
9807
9732
 
9808
- export type UserMfaFactorEnum = "None" | "Sms" | "Email";
9809
-
9810
9733
  export type UserDraftRoleEnum =
9811
9734
  | "Borrower"
9812
9735
  | "CoBorrower"
@@ -9860,8 +9783,6 @@ export type UserLoanConsentLosSyncStatusEnum =
9860
9783
  | "Failed"
9861
9784
  | "Success";
9862
9785
 
9863
- export type UserMfaStateFactorEnum = "None" | "Sms" | "Email";
9864
-
9865
9786
  export type UserTableSettingsTableKeyEnum = "Pipeline";
9866
9787
 
9867
9788
  export type UserTableViewTableKeyEnum = "Pipeline";
@@ -10865,11 +10786,11 @@ export class Api<
10865
10786
  }),
10866
10787
 
10867
10788
  /**
10868
- * @description startDate and endDate accept any ISO-8601 value. A value with no timezone designator (2026-09-01 or 2026-09-01T00:00:00) is read as UTC; a value with Z or an offset is used as the instant it names. A date-only value names the start of that day, so endDate=2026-09-01 returns nothing recorded on the 1st; to include that day send endDate=2026-09-02, or an explicit time such as 2026-09-01T23:59:59. searchText matches a case-insensitive substring of the originating user's name or email, the conversation name or the loan number, or an exact conversation, request or user id.
10789
+ * @description startDate and endDate accept any ISO-8601 value. A value with no timezone designator (2026-09-01 or 2026-09-01T00:00:00) is read as UTC; a value with Z or an offset is used as the instant it names. A date-only value names the start of that day, so endDate=2026-09-01 returns nothing recorded on the 1st; to include that day send endDate=2026-09-02, or an explicit time such as 2026-09-01T23:59:59.
10869
10790
  *
10870
10791
  * @tags AiAudit
10871
10792
  * @name GetAiAuditConversations
10872
- * @summary List conversations with their audit roll-up — origin user, loan, turns, status, tokens
10793
+ * @summary List conversations with their audit roll-up — origin user, turns, status, tokens
10873
10794
  * @request GET:/api/ai/audit-conversations
10874
10795
  * @secure
10875
10796
  * @response `200` `AiConversationAuditSummaryPaginated` OK
@@ -10995,30 +10916,6 @@ export class Api<
10995
10916
  ...params,
10996
10917
  }),
10997
10918
 
10998
- /**
10999
- * No description
11000
- *
11001
- * @tags AiChat
11002
- * @name RejectAiPendingLoanUpdate
11003
- * @summary Reject a pending AI loan change so a new one can be proposed
11004
- * @request POST:/api/ai/chats/pending-loan-updates/{pendingLoanUpdateId}/reject
11005
- * @secure
11006
- * @response `204` `void` No Content
11007
- * @response `401` `ProblemDetails` Unauthorized
11008
- * @response `404` `ProblemDetails` Not Found
11009
- * @response `429` `ProblemDetails` Too Many Requests
11010
- */
11011
- rejectAiPendingLoanUpdate: (
11012
- pendingLoanUpdateId: string,
11013
- params: RequestParams = {},
11014
- ) =>
11015
- this.request<void, ProblemDetails>({
11016
- path: `/api/ai/chats/pending-loan-updates/${pendingLoanUpdateId}/reject`,
11017
- method: "POST",
11018
- secure: true,
11019
- ...params,
11020
- }),
11021
-
11022
10919
  /**
11023
10920
  * No description
11024
10921
  *
@@ -11516,36 +11413,6 @@ export class Api<
11516
11413
  ...params,
11517
11414
  }),
11518
11415
 
11519
- /**
11520
- * No description
11521
- *
11522
- * @tags AiPromptRun
11523
- * @name RerunAiPromptRun
11524
- * @summary Re-run the AI verification bound to a loan task
11525
- * @request POST:/api/ai/prompt-runs/rerun
11526
- * @secure
11527
- * @response `202` `void` Accepted
11528
- * @response `400` `ProblemDetails` Bad Request
11529
- * @response `404` `ProblemDetails` Not Found
11530
- * @response `409` `ProblemDetails` Conflict
11531
- * @response `429` `ProblemDetails` Too Many Requests
11532
- * @response `503` `void` Service Unavailable
11533
- */
11534
- rerunAiPromptRun: (
11535
- query?: {
11536
- /** @format uuid */
11537
- subjectEntityId?: string;
11538
- },
11539
- params: RequestParams = {},
11540
- ) =>
11541
- this.request<void, ProblemDetails | void>({
11542
- path: `/api/ai/prompt-runs/rerun`,
11543
- method: "POST",
11544
- query: query,
11545
- secure: true,
11546
- ...params,
11547
- }),
11548
-
11549
11416
  /**
11550
11417
  * No description
11551
11418
  *
@@ -12249,14 +12116,9 @@ export class Api<
12249
12116
  * @secure
12250
12117
  * @response `200` `UserDeactivated` OK
12251
12118
  * @response `422` `UnprocessableEntity` Unprocessable Content
12252
- * @response `429` `ProblemDetails` Too Many Requests
12253
- * @response `503` `void` Service Unavailable
12254
12119
  */
12255
12120
  getToken: (data: TokenRequest, params: RequestParams = {}) =>
12256
- this.request<
12257
- UserDeactivated,
12258
- UnprocessableEntity | ProblemDetails | void
12259
- >({
12121
+ this.request<UserDeactivated, UnprocessableEntity>({
12260
12122
  path: `/api/token`,
12261
12123
  method: "POST",
12262
12124
  body: data,
@@ -12275,15 +12137,13 @@ export class Api<
12275
12137
  * @request POST:/api/token/code
12276
12138
  * @secure
12277
12139
  * @response `200` `UserDeactivated` OK
12278
- * @response `400` `ProblemDetails` Bad Request
12279
12140
  * @response `422` `UnprocessableEntity` Unprocessable Content
12280
- * @response `429` `ProblemDetails` Too Many Requests
12281
12141
  */
12282
12142
  getTokenFromChallengeCode: (
12283
12143
  data: TokenChallengeRequest,
12284
12144
  params: RequestParams = {},
12285
12145
  ) =>
12286
- this.request<UserDeactivated, ProblemDetails | UnprocessableEntity>({
12146
+ this.request<UserDeactivated, UnprocessableEntity>({
12287
12147
  path: `/api/token/code`,
12288
12148
  method: "POST",
12289
12149
  body: data,
@@ -12293,32 +12153,6 @@ export class Api<
12293
12153
  ...params,
12294
12154
  }),
12295
12155
 
12296
- /**
12297
- * No description
12298
- *
12299
- * @tags Authentication
12300
- * @name ResendChallengeCode
12301
- * @summary Resend Challenge Code
12302
- * @request POST:/api/token/code/resend
12303
- * @secure
12304
- * @response `204` `void` No Content
12305
- * @response `422` `UnprocessableEntity` Unprocessable Content
12306
- * @response `429` `ProblemDetails` Too Many Requests
12307
- * @response `503` `void` Service Unavailable
12308
- */
12309
- resendChallengeCode: (
12310
- data: ResendChallengeCodeRequest,
12311
- params: RequestParams = {},
12312
- ) =>
12313
- this.request<void, UnprocessableEntity | ProblemDetails | void>({
12314
- path: `/api/token/code/resend`,
12315
- method: "POST",
12316
- body: data,
12317
- secure: true,
12318
- type: "application/json",
12319
- ...params,
12320
- }),
12321
-
12322
12156
  /**
12323
12157
  * No description
12324
12158
  *
@@ -22685,35 +22519,6 @@ export class Api<
22685
22519
  ...params,
22686
22520
  }),
22687
22521
 
22688
- /**
22689
- * No description
22690
- *
22691
- * @tags Users
22692
- * @name ClearUserMfa
22693
- * @summary Clear MFA
22694
- * @request PUT:/api/users/{id}/mfa
22695
- * @secure
22696
- * @response `200` `UserMfaState` OK
22697
- * @response `400` `ProblemDetails` Bad Request
22698
- * @response `403` `ProblemDetails` Forbidden
22699
- * @response `404` `ProblemDetails` Not Found
22700
- * @response `422` `UnprocessableEntity` Unprocessable Content
22701
- */
22702
- clearUserMfa: (
22703
- id: string,
22704
- data: UpdateMfaFactorRequest,
22705
- params: RequestParams = {},
22706
- ) =>
22707
- this.request<UserMfaState, ProblemDetails | UnprocessableEntity>({
22708
- path: `/api/users/${id}/mfa`,
22709
- method: "PUT",
22710
- body: data,
22711
- secure: true,
22712
- type: "application/json",
22713
- format: "json",
22714
- ...params,
22715
- }),
22716
-
22717
22522
  /**
22718
22523
  * No description
22719
22524
  *
@@ -23140,136 +22945,6 @@ export class Api<
23140
22945
  ...params,
23141
22946
  }),
23142
22947
 
23143
- /**
23144
- * No description
23145
- *
23146
- * @tags UsersMeMfa
23147
- * @name GetMyMfa
23148
- * @summary Get MFA
23149
- * @request GET:/api/users/me/mfa
23150
- * @secure
23151
- * @response `200` `UserMfaState` OK
23152
- * @response `401` `ProblemDetails` Unauthorized
23153
- */
23154
- getMyMfa: (params: RequestParams = {}) =>
23155
- this.request<UserMfaState, ProblemDetails>({
23156
- path: `/api/users/me/mfa`,
23157
- method: "GET",
23158
- secure: true,
23159
- format: "json",
23160
- ...params,
23161
- }),
23162
-
23163
- /**
23164
- * No description
23165
- *
23166
- * @tags UsersMeMfa
23167
- * @name UpdateMyMfa
23168
- * @summary Update MFA
23169
- * @request PUT:/api/users/me/mfa
23170
- * @secure
23171
- * @response `200` `UserMfaState` OK
23172
- * @response `400` `ProblemDetails` Bad Request
23173
- * @response `401` `ProblemDetails` Unauthorized
23174
- * @response `403` `ProblemDetails` Forbidden
23175
- * @response `422` `UnprocessableEntity` Unprocessable Content
23176
- */
23177
- updateMyMfa: (data: UpdateMfaFactorRequest, params: RequestParams = {}) =>
23178
- this.request<UserMfaState, ProblemDetails | UnprocessableEntity>({
23179
- path: `/api/users/me/mfa`,
23180
- method: "PUT",
23181
- body: data,
23182
- secure: true,
23183
- type: "application/json",
23184
- format: "json",
23185
- ...params,
23186
- }),
23187
-
23188
- /**
23189
- * No description
23190
- *
23191
- * @tags UsersMeMfa
23192
- * @name StartMyMfaEnrollment
23193
- * @summary Start MFA Enrollment
23194
- * @request POST:/api/users/me/mfa/enrollments
23195
- * @secure
23196
- * @response `200` `MfaEnrollment` OK
23197
- * @response `400` `ProblemDetails` Bad Request
23198
- * @response `401` `ProblemDetails` Unauthorized
23199
- * @response `403` `ProblemDetails` Forbidden
23200
- * @response `422` `UnprocessableEntity` Unprocessable Content
23201
- * @response `429` `ProblemDetails` Too Many Requests
23202
- * @response `503` `void` Service Unavailable
23203
- */
23204
- startMyMfaEnrollment: (
23205
- data: StartMfaEnrollmentRequest,
23206
- params: RequestParams = {},
23207
- ) =>
23208
- this.request<MfaEnrollment, ProblemDetails | UnprocessableEntity | void>({
23209
- path: `/api/users/me/mfa/enrollments`,
23210
- method: "POST",
23211
- body: data,
23212
- secure: true,
23213
- type: "application/json",
23214
- format: "json",
23215
- ...params,
23216
- }),
23217
-
23218
- /**
23219
- * No description
23220
- *
23221
- * @tags UsersMeMfa
23222
- * @name ConfirmMyMfaEnrollment
23223
- * @summary Confirm MFA Enrollment
23224
- * @request POST:/api/users/me/mfa/enrollments/{enrollmentId}/confirm
23225
- * @secure
23226
- * @response `200` `UserMfaState` OK
23227
- * @response `400` `ProblemDetails` Bad Request
23228
- * @response `401` `ProblemDetails` Unauthorized
23229
- * @response `403` `ProblemDetails` Forbidden
23230
- * @response `422` `UnprocessableEntity` Unprocessable Content
23231
- * @response `429` `ProblemDetails` Too Many Requests
23232
- */
23233
- confirmMyMfaEnrollment: (
23234
- enrollmentId: string,
23235
- data: ConfirmMfaEnrollmentRequest,
23236
- params: RequestParams = {},
23237
- ) =>
23238
- this.request<UserMfaState, ProblemDetails | UnprocessableEntity>({
23239
- path: `/api/users/me/mfa/enrollments/${enrollmentId}/confirm`,
23240
- method: "POST",
23241
- body: data,
23242
- secure: true,
23243
- type: "application/json",
23244
- format: "json",
23245
- ...params,
23246
- }),
23247
-
23248
- /**
23249
- * No description
23250
- *
23251
- * @tags UsersMeMfa
23252
- * @name ResendMyMfaEnrollmentCode
23253
- * @summary Resend MFA Enrollment Code
23254
- * @request POST:/api/users/me/mfa/enrollments/{enrollmentId}/resend
23255
- * @secure
23256
- * @response `204` `void` No Content
23257
- * @response `401` `ProblemDetails` Unauthorized
23258
- * @response `403` `ProblemDetails` Forbidden
23259
- * @response `429` `ProblemDetails` Too Many Requests
23260
- * @response `503` `void` Service Unavailable
23261
- */
23262
- resendMyMfaEnrollmentCode: (
23263
- enrollmentId: string,
23264
- params: RequestParams = {},
23265
- ) =>
23266
- this.request<void, ProblemDetails | void>({
23267
- path: `/api/users/me/mfa/enrollments/${enrollmentId}/resend`,
23268
- method: "POST",
23269
- secure: true,
23270
- ...params,
23271
- }),
23272
-
23273
22948
  /**
23274
22949
  * No description
23275
22950
  *