@adaptware/eagles-db 0.1.56 → 0.1.57
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/client/edge.js +68 -105
- package/client/index-browser.js +67 -104
- package/client/index.d.ts +24799 -26470
- package/client/index.js +70 -107
- package/client/{libquery_engine-darwin.dylib.node → libquery_engine-darwin-arm64.dylib.node} +0 -0
- package/client/package.json +1 -1
- package/client/schema.prisma +156 -197
- package/client/wasm.js +67 -104
- package/package.json +1 -1
- package/prisma/.DS_Store +0 -0
- package/prisma/schema/integration.prisma +92 -0
- package/prisma/schema/jobDescription.prisma +1 -0
- package/prisma/schema/organisation.prisma +3 -1
package/client/wasm.js
CHANGED
|
@@ -163,6 +163,18 @@ exports.Prisma.ActionScalarFieldEnum = {
|
|
|
163
163
|
is_active: 'is_active'
|
|
164
164
|
};
|
|
165
165
|
|
|
166
|
+
exports.Prisma.ActivityLogScalarFieldEnum = {
|
|
167
|
+
id: 'id',
|
|
168
|
+
application_id: 'application_id',
|
|
169
|
+
actor_id: 'actor_id',
|
|
170
|
+
actor_type: 'actor_type',
|
|
171
|
+
message: 'message',
|
|
172
|
+
timestamp: 'timestamp',
|
|
173
|
+
metadata: 'metadata',
|
|
174
|
+
created_at: 'created_at',
|
|
175
|
+
is_active: 'is_active'
|
|
176
|
+
};
|
|
177
|
+
|
|
166
178
|
exports.Prisma.ApplicationScalarFieldEnum = {
|
|
167
179
|
id: 'id',
|
|
168
180
|
candidate_id: 'candidate_id',
|
|
@@ -197,7 +209,7 @@ exports.Prisma.ApprovalScalarFieldEnum = {
|
|
|
197
209
|
|
|
198
210
|
exports.Prisma.AssessmentScalarFieldEnum = {
|
|
199
211
|
id: 'id',
|
|
200
|
-
|
|
212
|
+
assessment_library_id: 'assessment_library_id',
|
|
201
213
|
candidate_id: 'candidate_id',
|
|
202
214
|
reviewer_id: 'reviewer_id',
|
|
203
215
|
score: 'score',
|
|
@@ -238,6 +250,30 @@ exports.Prisma.AssessmentQuestionScalarFieldEnum = {
|
|
|
238
250
|
updated_at: 'updated_at'
|
|
239
251
|
};
|
|
240
252
|
|
|
253
|
+
exports.Prisma.AssignmentScalarFieldEnum = {
|
|
254
|
+
id: 'id',
|
|
255
|
+
candidate_id: 'candidate_id',
|
|
256
|
+
assignment_library_id: 'assignment_library_id',
|
|
257
|
+
reviewer_id: 'reviewer_id',
|
|
258
|
+
application_id: 'application_id',
|
|
259
|
+
job_description_id: 'job_description_id',
|
|
260
|
+
organisation_id: 'organisation_id',
|
|
261
|
+
ongoing_evaluation_id: 'ongoing_evaluation_id',
|
|
262
|
+
score: 'score',
|
|
263
|
+
ai_result: 'ai_result',
|
|
264
|
+
ai_reasoning: 'ai_reasoning',
|
|
265
|
+
status: 'status',
|
|
266
|
+
cancel_reason: 'cancel_reason',
|
|
267
|
+
solution_url: 'solution_url',
|
|
268
|
+
scheduled_start_time: 'scheduled_start_time',
|
|
269
|
+
scheduled_end_time: 'scheduled_end_time',
|
|
270
|
+
created_at: 'created_at',
|
|
271
|
+
updated_at: 'updated_at',
|
|
272
|
+
created_by: 'created_by',
|
|
273
|
+
updated_by: 'updated_by',
|
|
274
|
+
is_active: 'is_active'
|
|
275
|
+
};
|
|
276
|
+
|
|
241
277
|
exports.Prisma.AssignmentLibraryScalarFieldEnum = {
|
|
242
278
|
id: 'id',
|
|
243
279
|
deadline: 'deadline',
|
|
@@ -364,6 +400,7 @@ exports.Prisma.FeedbackScalarFieldEnum = {
|
|
|
364
400
|
exports.Prisma.FitCheckScalarFieldEnum = {
|
|
365
401
|
id: 'id',
|
|
366
402
|
organisation_id: 'organisation_id',
|
|
403
|
+
candidate_id: 'candidate_id',
|
|
367
404
|
resume_id: 'resume_id',
|
|
368
405
|
job_description_id: 'job_description_id',
|
|
369
406
|
skills_match: 'skills_match',
|
|
@@ -407,33 +444,17 @@ exports.Prisma.GoogleScalarFieldEnum = {
|
|
|
407
444
|
is_active: 'is_active'
|
|
408
445
|
};
|
|
409
446
|
|
|
410
|
-
exports.Prisma.IntermediateFeedbackScalarFieldEnum = {
|
|
411
|
-
id: 'id',
|
|
412
|
-
interview_id: 'interview_id',
|
|
413
|
-
overall_feedback_id: 'overall_feedback_id',
|
|
414
|
-
intermediate_feedback: 'intermediate_feedback',
|
|
415
|
-
order_no: 'order_no',
|
|
416
|
-
created_at: 'created_at',
|
|
417
|
-
updated_at: 'updated_at',
|
|
418
|
-
created_by: 'created_by',
|
|
419
|
-
updated_by: 'updated_by',
|
|
420
|
-
is_active: 'is_active'
|
|
421
|
-
};
|
|
422
|
-
|
|
423
447
|
exports.Prisma.InterviewScalarFieldEnum = {
|
|
424
448
|
id: 'id',
|
|
449
|
+
organisation_id: 'organisation_id',
|
|
425
450
|
candidate_id: 'candidate_id',
|
|
426
451
|
interviewer_id: 'interviewer_id',
|
|
427
452
|
evaluation_plan_id: 'evaluation_plan_id',
|
|
428
453
|
application_id: 'application_id',
|
|
429
454
|
resume_id: 'resume_id',
|
|
430
455
|
job_description_id: 'job_description_id',
|
|
431
|
-
organisation_id: 'organisation_id',
|
|
432
456
|
room_name: 'room_name',
|
|
433
457
|
interview_summary: 'interview_summary',
|
|
434
|
-
ai_interview_feedback: 'ai_interview_feedback',
|
|
435
|
-
interview_feedback: 'interview_feedback',
|
|
436
|
-
interview_rating: 'interview_rating',
|
|
437
458
|
scheduled_start_time: 'scheduled_start_time',
|
|
438
459
|
scheduled_end_time: 'scheduled_end_time',
|
|
439
460
|
actual_start_time: 'actual_start_time',
|
|
@@ -441,6 +462,14 @@ exports.Prisma.InterviewScalarFieldEnum = {
|
|
|
441
462
|
recording_url: 'recording_url',
|
|
442
463
|
interview_status: 'interview_status',
|
|
443
464
|
google_event_id: 'google_event_id',
|
|
465
|
+
ai_interview_feedback: 'ai_interview_feedback',
|
|
466
|
+
interview_feedback: 'interview_feedback',
|
|
467
|
+
overall_feedback: 'overall_feedback',
|
|
468
|
+
interview_rating: 'interview_rating',
|
|
469
|
+
ai_feedback: 'ai_feedback',
|
|
470
|
+
human_feedback: 'human_feedback',
|
|
471
|
+
interviewer_feedback: 'interviewer_feedback',
|
|
472
|
+
section_feedback: 'section_feedback',
|
|
444
473
|
created_at: 'created_at',
|
|
445
474
|
updated_at: 'updated_at',
|
|
446
475
|
created_by: 'created_by',
|
|
@@ -448,22 +477,6 @@ exports.Prisma.InterviewScalarFieldEnum = {
|
|
|
448
477
|
is_active: 'is_active'
|
|
449
478
|
};
|
|
450
479
|
|
|
451
|
-
exports.Prisma.InterviewLibraryScalarFieldEnum = {
|
|
452
|
-
id: 'id',
|
|
453
|
-
title: 'title',
|
|
454
|
-
description: 'description',
|
|
455
|
-
organisation_id: 'organisation_id',
|
|
456
|
-
category: 'category',
|
|
457
|
-
evaluation_type: 'evaluation_type',
|
|
458
|
-
duration: 'duration',
|
|
459
|
-
passing_marks: 'passing_marks',
|
|
460
|
-
is_active: 'is_active',
|
|
461
|
-
created_by: 'created_by',
|
|
462
|
-
updated_by: 'updated_by',
|
|
463
|
-
created_at: 'created_at',
|
|
464
|
-
updated_at: 'updated_at'
|
|
465
|
-
};
|
|
466
|
-
|
|
467
480
|
exports.Prisma.InterviewNotesScalarFieldEnum = {
|
|
468
481
|
id: 'id',
|
|
469
482
|
interview_id: 'interview_id',
|
|
@@ -530,6 +543,7 @@ exports.Prisma.OngoingEvaluationScalarFieldEnum = {
|
|
|
530
543
|
job_description_id: 'job_description_id',
|
|
531
544
|
evaluation_plan_id: 'evaluation_plan_id',
|
|
532
545
|
interview_id: 'interview_id',
|
|
546
|
+
assignment_id: 'assignment_id',
|
|
533
547
|
status: 'status',
|
|
534
548
|
state: 'state',
|
|
535
549
|
round_status: 'round_status',
|
|
@@ -572,39 +586,6 @@ exports.Prisma.OrganisationScalarFieldEnum = {
|
|
|
572
586
|
logo: 'logo'
|
|
573
587
|
};
|
|
574
588
|
|
|
575
|
-
exports.Prisma.OverallFeedbackScalarFieldEnum = {
|
|
576
|
-
id: 'id',
|
|
577
|
-
interview_id: 'interview_id',
|
|
578
|
-
interviewer_id: 'interviewer_id',
|
|
579
|
-
feedback_type: 'feedback_type',
|
|
580
|
-
overall_score: 'overall_score',
|
|
581
|
-
overall_recommendation: 'overall_recommendation',
|
|
582
|
-
overall_feedback: 'overall_feedback',
|
|
583
|
-
created_at: 'created_at',
|
|
584
|
-
updated_at: 'updated_at',
|
|
585
|
-
created_by: 'created_by',
|
|
586
|
-
updated_by: 'updated_by',
|
|
587
|
-
is_active: 'is_active'
|
|
588
|
-
};
|
|
589
|
-
|
|
590
|
-
exports.Prisma.PanelistScalarFieldEnum = {
|
|
591
|
-
id: 'id',
|
|
592
|
-
name: 'name',
|
|
593
|
-
designation: 'designation',
|
|
594
|
-
experience: 'experience',
|
|
595
|
-
expertise: 'expertise',
|
|
596
|
-
suited_interview: 'suited_interview',
|
|
597
|
-
industry: 'industry',
|
|
598
|
-
special_areas: 'special_areas',
|
|
599
|
-
organisation_id: 'organisation_id',
|
|
600
|
-
user_id: 'user_id',
|
|
601
|
-
created_at: 'created_at',
|
|
602
|
-
updated_at: 'updated_at',
|
|
603
|
-
created_by: 'created_by',
|
|
604
|
-
updated_by: 'updated_by',
|
|
605
|
-
is_active: 'is_active'
|
|
606
|
-
};
|
|
607
|
-
|
|
608
589
|
exports.Prisma.PermissionScalarFieldEnum = {
|
|
609
590
|
id: 'id',
|
|
610
591
|
permissions: 'permissions',
|
|
@@ -772,10 +753,6 @@ exports.Prisma.NullableJsonNullValueInput = {
|
|
|
772
753
|
JsonNull: Prisma.JsonNull
|
|
773
754
|
};
|
|
774
755
|
|
|
775
|
-
exports.Prisma.JsonNullValueInput = {
|
|
776
|
-
JsonNull: Prisma.JsonNull
|
|
777
|
-
};
|
|
778
|
-
|
|
779
756
|
exports.Prisma.QueryMode = {
|
|
780
757
|
default: 'default',
|
|
781
758
|
insensitive: 'insensitive'
|
|
@@ -803,6 +780,12 @@ exports.ActionStatus = exports.$Enums.ActionStatus = {
|
|
|
803
780
|
CANCELLED: 'CANCELLED'
|
|
804
781
|
};
|
|
805
782
|
|
|
783
|
+
exports.ActivityActorType = exports.$Enums.ActivityActorType = {
|
|
784
|
+
USER: 'USER',
|
|
785
|
+
AI: 'AI',
|
|
786
|
+
SYSTEM: 'SYSTEM'
|
|
787
|
+
};
|
|
788
|
+
|
|
806
789
|
exports.ApplicationStatus = exports.$Enums.ApplicationStatus = {
|
|
807
790
|
PENDING: 'PENDING',
|
|
808
791
|
IN_PROGRESS: 'IN_PROGRESS',
|
|
@@ -834,6 +817,12 @@ exports.AssessmentCategory = exports.$Enums.AssessmentCategory = {
|
|
|
834
817
|
ASSIGNMENT: 'ASSIGNMENT'
|
|
835
818
|
};
|
|
836
819
|
|
|
820
|
+
exports.AssignmentStatus = exports.$Enums.AssignmentStatus = {
|
|
821
|
+
AVAILABLE: 'AVAILABLE',
|
|
822
|
+
SCHEDULED: 'SCHEDULED',
|
|
823
|
+
CANCELLED: 'CANCELLED'
|
|
824
|
+
};
|
|
825
|
+
|
|
837
826
|
exports.JobType = exports.$Enums.JobType = {
|
|
838
827
|
Full_time: 'Full_time',
|
|
839
828
|
Part_time: 'Part_time',
|
|
@@ -882,13 +871,6 @@ exports.EvaluationPlanType = exports.$Enums.EvaluationPlanType = {
|
|
|
882
871
|
DELETED: 'DELETED'
|
|
883
872
|
};
|
|
884
873
|
|
|
885
|
-
exports.InterviewFeedback = exports.$Enums.InterviewFeedback = {
|
|
886
|
-
STRONG_HIRE: 'STRONG_HIRE',
|
|
887
|
-
HIRE: 'HIRE',
|
|
888
|
-
NO_HIRE: 'NO_HIRE',
|
|
889
|
-
STRONG_NO_HIRE: 'STRONG_NO_HIRE'
|
|
890
|
-
};
|
|
891
|
-
|
|
892
874
|
exports.InterviewStatus = exports.$Enums.InterviewStatus = {
|
|
893
875
|
INTERVIEW_REQUESTED: 'INTERVIEW_REQUESTED',
|
|
894
876
|
SCHEDULED: 'SCHEDULED',
|
|
@@ -899,15 +881,11 @@ exports.InterviewStatus = exports.$Enums.InterviewStatus = {
|
|
|
899
881
|
EVALUATED: 'EVALUATED'
|
|
900
882
|
};
|
|
901
883
|
|
|
902
|
-
exports.
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
MANAGERIAL: 'MANAGERIAL',
|
|
908
|
-
CULTURAL_FIT: 'CULTURAL_FIT',
|
|
909
|
-
FINAL_DISCUSSION: 'FINAL_DISCUSSION',
|
|
910
|
-
GENERAL: 'GENERAL'
|
|
884
|
+
exports.InterviewFeedback = exports.$Enums.InterviewFeedback = {
|
|
885
|
+
STRONG_HIRE: 'STRONG_HIRE',
|
|
886
|
+
HIRE: 'HIRE',
|
|
887
|
+
NO_HIRE: 'NO_HIRE',
|
|
888
|
+
STRONG_NO_HIRE: 'STRONG_NO_HIRE'
|
|
911
889
|
};
|
|
912
890
|
|
|
913
891
|
exports.JobDescriptionStatus = exports.$Enums.JobDescriptionStatus = {
|
|
@@ -953,19 +931,6 @@ exports.OrganisationSize = exports.$Enums.OrganisationSize = {
|
|
|
953
931
|
FIVE_HUNDRED_PLUS: 'FIVE_HUNDRED_PLUS'
|
|
954
932
|
};
|
|
955
933
|
|
|
956
|
-
exports.FeedbackType = exports.$Enums.FeedbackType = {
|
|
957
|
-
HUMAN: 'HUMAN',
|
|
958
|
-
AI: 'AI'
|
|
959
|
-
};
|
|
960
|
-
|
|
961
|
-
exports.OverallRecommendation = exports.$Enums.OverallRecommendation = {
|
|
962
|
-
StrongHire: 'StrongHire',
|
|
963
|
-
Hire: 'Hire',
|
|
964
|
-
LeaningHire: 'LeaningHire',
|
|
965
|
-
NoHire: 'NoHire',
|
|
966
|
-
StrongNoHire: 'StrongNoHire'
|
|
967
|
-
};
|
|
968
|
-
|
|
969
934
|
exports.AsyncOperationStatus = exports.$Enums.AsyncOperationStatus = {
|
|
970
935
|
PENDING: 'PENDING',
|
|
971
936
|
IN_PROGRESS: 'IN_PROGRESS',
|
|
@@ -997,11 +962,13 @@ exports.Prisma.ModelName = {
|
|
|
997
962
|
CandidateQuestionResponse: 'CandidateQuestionResponse',
|
|
998
963
|
UserRole: 'UserRole',
|
|
999
964
|
Action: 'Action',
|
|
965
|
+
ActivityLog: 'ActivityLog',
|
|
1000
966
|
Application: 'Application',
|
|
1001
967
|
Approval: 'Approval',
|
|
1002
968
|
Assessment: 'Assessment',
|
|
1003
969
|
AssessmentLibrary: 'AssessmentLibrary',
|
|
1004
970
|
AssessmentQuestion: 'AssessmentQuestion',
|
|
971
|
+
Assignment: 'Assignment',
|
|
1005
972
|
AssignmentLibrary: 'AssignmentLibrary',
|
|
1006
973
|
Budget: 'Budget',
|
|
1007
974
|
Calendly: 'Calendly',
|
|
@@ -1011,17 +978,13 @@ exports.Prisma.ModelName = {
|
|
|
1011
978
|
Feedback: 'Feedback',
|
|
1012
979
|
FitCheck: 'FitCheck',
|
|
1013
980
|
Google: 'Google',
|
|
1014
|
-
IntermediateFeedback: 'IntermediateFeedback',
|
|
1015
981
|
Interview: 'Interview',
|
|
1016
|
-
InterviewLibrary: 'InterviewLibrary',
|
|
1017
982
|
InterviewNotes: 'InterviewNotes',
|
|
1018
983
|
JobDescription: 'JobDescription',
|
|
1019
984
|
JobDescriptionData: 'JobDescriptionData',
|
|
1020
985
|
Message: 'Message',
|
|
1021
986
|
OngoingEvaluation: 'OngoingEvaluation',
|
|
1022
987
|
Organisation: 'Organisation',
|
|
1023
|
-
OverallFeedback: 'OverallFeedback',
|
|
1024
|
-
Panelist: 'Panelist',
|
|
1025
988
|
Permission: 'Permission',
|
|
1026
989
|
AsyncOperation: 'AsyncOperation',
|
|
1027
990
|
Question: 'Question',
|
package/package.json
CHANGED
package/prisma/.DS_Store
ADDED
|
Binary file
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
enum IntegrationProvider {
|
|
2
|
+
NAUKRI
|
|
3
|
+
ZOHO_RECRUIT
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
enum IntegrationAuthType {
|
|
7
|
+
OAUTH2
|
|
8
|
+
API_KEY
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
enum SyncDirection {
|
|
12
|
+
PUSH
|
|
13
|
+
PULL
|
|
14
|
+
BIDIRECTIONAL
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
enum SyncEntityType {
|
|
18
|
+
CANDIDATE
|
|
19
|
+
JOB_OPENING
|
|
20
|
+
INTERVIEW
|
|
21
|
+
APPLICATION
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
enum SyncStatus {
|
|
25
|
+
SYNCED
|
|
26
|
+
PENDING
|
|
27
|
+
FAILED
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
model IntegrationCredential {
|
|
31
|
+
id String @id @default(uuid())
|
|
32
|
+
organisation_id String?
|
|
33
|
+
provider IntegrationProvider
|
|
34
|
+
auth_type IntegrationAuthType
|
|
35
|
+
access_token String?
|
|
36
|
+
refresh_token String?
|
|
37
|
+
token_expires_at DateTime?
|
|
38
|
+
api_key String?
|
|
39
|
+
api_secret String?
|
|
40
|
+
metadata Json @default("{}")
|
|
41
|
+
is_active Boolean @default(true)
|
|
42
|
+
|
|
43
|
+
organisation Organisation? @relation(fields: [organisation_id], references: [id], onDelete: Cascade)
|
|
44
|
+
|
|
45
|
+
created_at DateTime @default(now())
|
|
46
|
+
updated_at DateTime @updatedAt
|
|
47
|
+
created_by String
|
|
48
|
+
updated_by String
|
|
49
|
+
|
|
50
|
+
@@unique([organisation_id, provider])
|
|
51
|
+
@@index([provider])
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
model IntegrationJobSync {
|
|
55
|
+
id String @id @default(uuid())
|
|
56
|
+
job_description_id String
|
|
57
|
+
provider IntegrationProvider
|
|
58
|
+
external_id String?
|
|
59
|
+
sync_enabled Boolean @default(true)
|
|
60
|
+
last_synced_at DateTime?
|
|
61
|
+
sync_direction SyncDirection @default(PUSH)
|
|
62
|
+
metadata Json @default("{}")
|
|
63
|
+
|
|
64
|
+
job_description JobDescription @relation(fields: [job_description_id], references: [id], onDelete: Cascade)
|
|
65
|
+
|
|
66
|
+
created_at DateTime @default(now())
|
|
67
|
+
updated_at DateTime @updatedAt
|
|
68
|
+
|
|
69
|
+
@@unique([job_description_id, provider])
|
|
70
|
+
@@index([provider])
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
model ZohoSyncMapping {
|
|
74
|
+
id String @id @default(uuid())
|
|
75
|
+
organisation_id String
|
|
76
|
+
entity_type SyncEntityType
|
|
77
|
+
treadspace_id String
|
|
78
|
+
zoho_module String
|
|
79
|
+
zoho_record_id String
|
|
80
|
+
last_synced_at DateTime @default(now())
|
|
81
|
+
sync_status SyncStatus @default(PENDING)
|
|
82
|
+
error_message String?
|
|
83
|
+
|
|
84
|
+
organisation Organisation @relation(fields: [organisation_id], references: [id], onDelete: Cascade)
|
|
85
|
+
|
|
86
|
+
created_at DateTime @default(now())
|
|
87
|
+
updated_at DateTime @updatedAt
|
|
88
|
+
|
|
89
|
+
@@unique([organisation_id, entity_type, treadspace_id])
|
|
90
|
+
@@index([zoho_record_id])
|
|
91
|
+
@@index([sync_status])
|
|
92
|
+
}
|
|
@@ -40,6 +40,7 @@ model JobDescription {
|
|
|
40
40
|
hiring_manager User? @relation("HiringManager", fields: [hiring_manager_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
|
|
41
41
|
recruiters User[]
|
|
42
42
|
transcripts Transcript[]
|
|
43
|
+
integration_job_syncs IntegrationJobSync[]
|
|
43
44
|
|
|
44
45
|
@@index([organisation_id])
|
|
45
46
|
@@index([hiring_manager_id])
|
|
@@ -37,7 +37,9 @@ model Organisation {
|
|
|
37
37
|
approvals Approval[] // one-to-many link
|
|
38
38
|
suggestions Suggestion[]
|
|
39
39
|
ongoing_evaluations OngoingEvaluation[] // optional one-to-many
|
|
40
|
-
actions
|
|
40
|
+
actions Action[]
|
|
41
|
+
integration_credentials IntegrationCredential[]
|
|
42
|
+
zoho_sync_mappings ZohoSyncMapping[]
|
|
41
43
|
|
|
42
44
|
@@index([name])
|
|
43
45
|
}
|