@coolon/angular-ui-powerups 0.0.79 → 0.0.81

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.
Files changed (31) hide show
  1. package/bundles/coolon-angular-ui-powerups.umd.js +143 -51
  2. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  3. package/bundles/coolon-angular-ui-powerups.umd.min.js +1 -1
  4. package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
  5. package/coolon-angular-ui-powerups.d.ts +20 -19
  6. package/coolon-angular-ui-powerups.metadata.json +1 -1
  7. package/esm2015/coolon-angular-ui-powerups.js +20 -19
  8. package/esm2015/index.js +2 -2
  9. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +61 -10
  10. package/esm2015/lib/place/index.js +2 -1
  11. package/esm2015/lib/place/place-component.js +13 -4
  12. package/esm2015/lib/place/place-config.js +16 -0
  13. package/esm2015/lib/place/place.module.js +7 -2
  14. package/esm2015/public_api.js +2 -2
  15. package/esm5/coolon-angular-ui-powerups.js +20 -19
  16. package/esm5/index.js +2 -2
  17. package/esm5/lib/place/components/place-outlet/place-outlet.component.js +69 -18
  18. package/esm5/lib/place/index.js +2 -1
  19. package/esm5/lib/place/place-component.js +26 -4
  20. package/esm5/lib/place/place-config.js +16 -0
  21. package/esm5/lib/place/place.module.js +7 -2
  22. package/esm5/public_api.js +2 -2
  23. package/fesm2015/coolon-angular-ui-powerups.js +89 -12
  24. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  25. package/fesm5/coolon-angular-ui-powerups.js +110 -20
  26. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  27. package/lib/place/components/place-outlet/place-outlet.component.d.ts +6 -1
  28. package/lib/place/index.d.ts +1 -0
  29. package/lib/place/place-component.d.ts +8 -3
  30. package/lib/place/place-config.d.ts +5 -0
  31. package/package.json +1 -1
@@ -1156,7 +1156,7 @@
1156
1156
  * @abstract
1157
1157
  * @template D, R, E
1158
1158
  */
1159
- exports.ɵbd = /** @class */ (function (_super) {
1159
+ exports.ɵbf = /** @class */ (function (_super) {
1160
1160
  __extends(Activity, _super);
1161
1161
  function Activity() {
1162
1162
  var _this = _super !== null && _super.apply(this, arguments) || this;
@@ -1246,12 +1246,12 @@
1246
1246
  * @type {?}
1247
1247
  * @private
1248
1248
  */
1249
- exports.ɵbd.prototype._busyModel;
1249
+ exports.ɵbf.prototype._busyModel;
1250
1250
  /**
1251
1251
  * @type {?}
1252
1252
  * @private
1253
1253
  */
1254
- exports.ɵbd.prototype._activityContext;
1254
+ exports.ɵbf.prototype._activityContext;
1255
1255
  }
1256
1256
  (function (Activity) {
1257
1257
  /**
@@ -1266,7 +1266,7 @@
1266
1266
  /** @type {?} */
1267
1267
  Callbacks.prototype.onCancel;
1268
1268
  }
1269
- })(exports.ɵbd || (exports.ɵbd = {}));
1269
+ })(exports.ɵbf || (exports.ɵbf = {}));
1270
1270
 
1271
1271
  /**
1272
1272
  * @fileoverview added by tsickle
@@ -1423,7 +1423,7 @@
1423
1423
  return _super !== null && _super.apply(this, arguments) || this;
1424
1424
  }
1425
1425
  return AbstractActivity;
1426
- }(exports.ɵbd));
1426
+ }(exports.ɵbf));
1427
1427
 
1428
1428
  /**
1429
1429
  * @fileoverview added by tsickle
@@ -1469,7 +1469,7 @@
1469
1469
  /**
1470
1470
  * @template D, R, E
1471
1471
  */
1472
- exports.ɵbf = /** @class */ (function (_super) {
1472
+ exports.ɵbh = /** @class */ (function (_super) {
1473
1473
  __extends(ConfirmThenDialogComponent, _super);
1474
1474
  function ConfirmThenDialogComponent(config, interactionContext) {
1475
1475
  var _this = _super.call(this) || this;
@@ -1541,9 +1541,9 @@
1541
1541
  }(AbstractActivity));
1542
1542
  if (false) {
1543
1543
  /** @type {?} */
1544
- exports.ɵbf.prototype.config;
1544
+ exports.ɵbh.prototype.config;
1545
1545
  /** @type {?} */
1546
- exports.ɵbf.prototype.interactionContext;
1546
+ exports.ɵbh.prototype.interactionContext;
1547
1547
  }
1548
1548
  (function (ConfirmThenDialogComponent) {
1549
1549
  /**
@@ -1560,7 +1560,7 @@
1560
1560
  /** @type {?} */
1561
1561
  Data.prototype.data;
1562
1562
  }
1563
- })(exports.ɵbf || (exports.ɵbf = {}));
1563
+ })(exports.ɵbh || (exports.ɵbh = {}));
1564
1564
 
1565
1565
  /**
1566
1566
  * @fileoverview added by tsickle
@@ -1933,7 +1933,7 @@
1933
1933
  * @return {?}
1934
1934
  */
1935
1935
  function (confirm, activityType, data) {
1936
- return this.startActivity(exports.ɵbf, {
1936
+ return this.startActivity(exports.ɵbh, {
1937
1937
  confirm: confirm,
1938
1938
  activityType: activityType,
1939
1939
  data: data
@@ -2189,7 +2189,7 @@
2189
2189
  * @return {?}
2190
2190
  */
2191
2191
  function (confirm, activityType, data) {
2192
- return this._startActivity(exports.ɵbf, {
2192
+ return this._startActivity(exports.ɵbh, {
2193
2193
  confirm: confirm,
2194
2194
  activityType: activityType,
2195
2195
  data: data
@@ -2563,7 +2563,7 @@
2563
2563
  * @return {?}
2564
2564
  */
2565
2565
  function (confirm, activityType, data) {
2566
- return this._startActivity(exports.ɵbf, {
2566
+ return this._startActivity(exports.ɵbh, {
2567
2567
  confirm: confirm,
2568
2568
  activityType: activityType,
2569
2569
  data: data
@@ -2636,7 +2636,7 @@
2636
2636
  declarations: [
2637
2637
  ActivityContainerComponent,
2638
2638
  ConfirmationDialogComponent,
2639
- exports.ɵbf,
2639
+ exports.ɵbh,
2640
2640
  AlertDialogComponent,
2641
2641
  ActivityOutletComponent,
2642
2642
  InteractionOutletComponent,
@@ -2651,7 +2651,7 @@
2651
2651
  entryComponents: [
2652
2652
  ActivityContainerComponent,
2653
2653
  ConfirmationDialogComponent,
2654
- exports.ɵbf,
2654
+ exports.ɵbh,
2655
2655
  AlertDialogComponent
2656
2656
  ],
2657
2657
  providers: [
@@ -3486,13 +3486,36 @@
3486
3486
  */
3487
3487
  function () {
3488
3488
  };
3489
+ /**
3490
+ * Called by the place outlet after all animations have finished. We need this instead of ngOnDestroy
3491
+ * to avoid the fact that the angular router calls it before the animations have run causing the component
3492
+ * to loose any pectin bindings.
3493
+ */
3494
+ // @Trace()
3495
+ /**
3496
+ * Called by the place outlet after all animations have finished. We need this instead of ngOnDestroy
3497
+ * to avoid the fact that the angular router calls it before the animations have run causing the component
3498
+ * to loose any pectin bindings.
3499
+ * @return {?}
3500
+ */
3501
+ // @Trace()
3502
+ PlaceComponent.prototype.onPlaceDestroyed = /**
3503
+ * Called by the place outlet after all animations have finished. We need this instead of ngOnDestroy
3504
+ * to avoid the fact that the angular router calls it before the animations have run causing the component
3505
+ * to loose any pectin bindings.
3506
+ * @return {?}
3507
+ */
3508
+ // @Trace()
3509
+ function () {
3510
+ this.dispose();
3511
+ };
3489
3512
  __decorate([
3490
3513
  fastMemoizeDecorator.Memoize(),
3491
3514
  __metadata("design:type", exports.PlaceDefinition),
3492
3515
  __metadata("design:paramtypes", [])
3493
3516
  ], PlaceComponent.prototype, "placeDefinition", null);
3494
3517
  return PlaceComponent;
3495
- }(DisposableComponent));
3518
+ }(pectin.GarbageCollector));
3496
3519
  if (false) {
3497
3520
  /**
3498
3521
  * @type {?}
@@ -3720,6 +3743,21 @@
3720
3743
  Visit.prototype.visitParameters;
3721
3744
  }
3722
3745
 
3746
+ /**
3747
+ * @fileoverview added by tsickle
3748
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
3749
+ */
3750
+ /** @type {?} */
3751
+ var AUP_PLACE_CONFIG = new core.InjectionToken('AUP_PLACE_CONFIG');
3752
+ /**
3753
+ * @record
3754
+ */
3755
+ function PlaceConfig() { }
3756
+ if (false) {
3757
+ /** @type {?} */
3758
+ PlaceConfig.prototype.animationDuration;
3759
+ }
3760
+
3723
3761
  /**
3724
3762
  * @fileoverview added by tsickle
3725
3763
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
@@ -4417,10 +4455,11 @@
4417
4455
  }
4418
4456
  var PlaceOutletComponent = /** @class */ (function (_super) {
4419
4457
  __extends(PlaceOutletComponent, _super);
4420
- function PlaceOutletComponent(router, placeRouter, parentOutlet) {
4458
+ function PlaceOutletComponent(router, placeRouter, placeConfig, parentOutlet) {
4421
4459
  var _this = _super.call(this) || this;
4422
4460
  _this.router = router;
4423
4461
  _this.placeRouter = placeRouter;
4462
+ _this.placeConfig = placeConfig;
4424
4463
  _this.animate = true;
4425
4464
  _this.placeChanged = new core.EventEmitter();
4426
4465
  _this._activePlace = new pectin.MutableValueModel();
@@ -4438,9 +4477,9 @@
4438
4477
  * @return {?}
4439
4478
  */
4440
4479
  function (o) { return o.activePlaceModel; }))
4441
- .pluck("placeDefinition")
4442
- .pluckList("children")
4443
- .pluck("component");
4480
+ .pluck('placeDefinition')
4481
+ .pluckList('children')
4482
+ .pluck('component');
4444
4483
  /** @type {?} */
4445
4484
  var activatePlaceType = chain(_this.activePlaceModel).map((/**
4446
4485
  * @param {?} p
@@ -4509,6 +4548,16 @@
4509
4548
  */
4510
4549
  function () {
4511
4550
  };
4551
+ Object.defineProperty(PlaceOutletComponent.prototype, "animationDuration", {
4552
+ get: /**
4553
+ * @return {?}
4554
+ */
4555
+ function () {
4556
+ return this.placeConfig && this.placeConfig.animationDuration ? this.placeConfig.animationDuration : '500ms';
4557
+ },
4558
+ enumerable: true,
4559
+ configurable: true
4560
+ });
4512
4561
  /**
4513
4562
  * @param {?} visit
4514
4563
  * @return {?}
@@ -4568,16 +4617,12 @@
4568
4617
  enumerable: true,
4569
4618
  configurable: true
4570
4619
  });
4571
- // @Trace()
4572
- // @Trace()
4573
4620
  /**
4574
4621
  * @param {?} routerOutlet
4575
4622
  * @param {?} place
4576
4623
  * @return {?}
4577
4624
  */
4578
- PlaceOutletComponent.prototype.onOutletActivated =
4579
- // @Trace()
4580
- /**
4625
+ PlaceOutletComponent.prototype.onOutletActivated = /**
4581
4626
  * @param {?} routerOutlet
4582
4627
  * @param {?} place
4583
4628
  * @return {?}
@@ -4603,16 +4648,12 @@
4603
4648
  this.animationDone();
4604
4649
  }
4605
4650
  };
4606
- // @Trace()
4607
- // @Trace()
4608
4651
  /**
4609
4652
  * @param {?} routerOutlet
4610
4653
  * @param {?} $event
4611
4654
  * @return {?}
4612
4655
  */
4613
- PlaceOutletComponent.prototype.onOutletDeactivated =
4614
- // @Trace()
4615
- /**
4656
+ PlaceOutletComponent.prototype.onOutletDeactivated = /**
4616
4657
  * @param {?} routerOutlet
4617
4658
  * @param {?} $event
4618
4659
  * @return {?}
@@ -4623,12 +4664,22 @@
4623
4664
  * @return {?}
4624
4665
  */
4625
4666
  function () {
4667
+ _this._previousPlace = _this._activePlace.value;
4626
4668
  _this.isOnInitialPlace = false;
4627
4669
  _this._activePlace.value = null;
4628
4670
  _this._activatedRouteModel.value = null;
4629
4671
  _this._placeDefinition.value = null;
4630
4672
  }));
4631
4673
  };
4674
+ /**
4675
+ * @return {?}
4676
+ */
4677
+ PlaceOutletComponent.prototype.animationStarted = /**
4678
+ * @return {?}
4679
+ */
4680
+ function () {
4681
+ console.log({ activePlace: this._activePlace.value });
4682
+ };
4632
4683
  /**
4633
4684
  * @return {?}
4634
4685
  */
@@ -4636,6 +4687,10 @@
4636
4687
  * @return {?}
4637
4688
  */
4638
4689
  function () {
4690
+ console.log({ activePlace: this._activePlace.value });
4691
+ if (this._previousPlace) {
4692
+ this._previousPlace.onPlaceDestroyed();
4693
+ }
4639
4694
  if (this._activePlace.value) {
4640
4695
  this._activePlace.value.onPlaceReady();
4641
4696
  }
@@ -4643,7 +4698,7 @@
4643
4698
  PlaceOutletComponent.decorators = [
4644
4699
  { type: core.Component, args: [{
4645
4700
  selector: 'aup-place-outlet',
4646
- template: "<div class=\"router-outlet-container\"\n [@routeAnimations]=\"placeAnimationOrder.value\"\n (@routeAnimations.done)=\"animationDone()\"\n>\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated(routerOutlet, $event)\">\n </router-outlet>\n</div>\n\n",
4701
+ template: "<div class=\"router-outlet-container\"\n [@routeAnimations]=\"{value: placeAnimationOrder.value, params:{duration: animationDuration}}\"\n (@routeAnimations.start)=\"animationStarted()\"\n (@routeAnimations.done)=\"animationDone()\"\n>\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated(routerOutlet, $event)\">\n </router-outlet>\n</div>\n\n",
4647
4702
  animations: [LEFT_RIGHT_PLACE_ANIMATION],
4648
4703
  styles: [":host{display:flex;flex-direction:column;min-height:0;overflow-x:hidden}.router-outlet-container{flex:1;display:block;position:relative;min-height:0}router-outlet{display:none}"]
4649
4704
  }] }
@@ -4652,6 +4707,7 @@
4652
4707
  PlaceOutletComponent.ctorParameters = function () { return [
4653
4708
  { type: router.Router },
4654
4709
  { type: PlaceRouter },
4710
+ { type: undefined, decorators: [{ type: core.Optional }, { type: core.Inject, args: [AUP_PLACE_CONFIG,] }] },
4655
4711
  { type: PlaceOutletComponent, decorators: [{ type: core.SkipSelf }, { type: core.Optional }] }
4656
4712
  ]; };
4657
4713
  PlaceOutletComponent.propDecorators = {
@@ -4666,7 +4722,7 @@
4666
4722
  __metadata("design:type", pectin.ListModel)
4667
4723
  ], PlaceOutletComponent.prototype, "customPlaceAnimationOrderModel", void 0);
4668
4724
  __decorate([
4669
- pectin.StoreInListModel("customPlaceAnimationOrderModel"),
4725
+ pectin.StoreInListModel('customPlaceAnimationOrderModel'),
4670
4726
  __metadata("design:type", Array)
4671
4727
  ], PlaceOutletComponent.prototype, "customPlaceAnimationOrder", void 0);
4672
4728
  __decorate([
@@ -4675,6 +4731,30 @@
4675
4731
  __metadata("design:paramtypes", [Visit]),
4676
4732
  __metadata("design:returntype", void 0)
4677
4733
  ], PlaceOutletComponent.prototype, "navigate", null);
4734
+ __decorate([
4735
+ pectin.Trace(),
4736
+ __metadata("design:type", Function),
4737
+ __metadata("design:paramtypes", [router.RouterOutlet, exports.PlaceComponent]),
4738
+ __metadata("design:returntype", void 0)
4739
+ ], PlaceOutletComponent.prototype, "onOutletActivated", null);
4740
+ __decorate([
4741
+ pectin.Trace(),
4742
+ __metadata("design:type", Function),
4743
+ __metadata("design:paramtypes", [router.RouterOutlet, Object]),
4744
+ __metadata("design:returntype", void 0)
4745
+ ], PlaceOutletComponent.prototype, "onOutletDeactivated", null);
4746
+ __decorate([
4747
+ pectin.Trace(),
4748
+ __metadata("design:type", Function),
4749
+ __metadata("design:paramtypes", []),
4750
+ __metadata("design:returntype", void 0)
4751
+ ], PlaceOutletComponent.prototype, "animationStarted", null);
4752
+ __decorate([
4753
+ pectin.Trace(),
4754
+ __metadata("design:type", Function),
4755
+ __metadata("design:paramtypes", []),
4756
+ __metadata("design:returntype", void 0)
4757
+ ], PlaceOutletComponent.prototype, "animationDone", null);
4678
4758
  return PlaceOutletComponent;
4679
4759
  }(DisposableComponent));
4680
4760
  if (false) {
@@ -4725,6 +4805,11 @@
4725
4805
  * @private
4726
4806
  */
4727
4807
  PlaceOutletComponent.prototype.isOnInitialPlace;
4808
+ /**
4809
+ * @type {?}
4810
+ * @private
4811
+ */
4812
+ PlaceOutletComponent.prototype._previousPlace;
4728
4813
  /**
4729
4814
  * @type {?}
4730
4815
  * @private
@@ -4735,6 +4820,8 @@
4735
4820
  * @private
4736
4821
  */
4737
4822
  PlaceOutletComponent.prototype.placeRouter;
4823
+ /** @type {?} */
4824
+ PlaceOutletComponent.prototype.placeConfig;
4738
4825
  }
4739
4826
 
4740
4827
  /**
@@ -4939,6 +5026,7 @@
4939
5026
  * @fileoverview added by tsickle
4940
5027
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4941
5028
  */
5029
+ var ɵ0 = { animationDuration: "2000ms" };
4942
5030
  var PlaceModule = /** @class */ (function () {
4943
5031
  function PlaceModule() {
4944
5032
  }
@@ -4970,7 +5058,9 @@
4970
5058
  TabbedPlaceNavigationComponent,
4971
5059
  ListPlaceNavComponent
4972
5060
  ],
4973
- providers: []
5061
+ providers: [
5062
+ { provide: AUP_PLACE_CONFIG, useValue: ɵ0 }
5063
+ ]
4974
5064
  },] }
4975
5065
  ];
4976
5066
  return PlaceModule;
@@ -6392,10 +6482,11 @@
6392
6482
  }
6393
6483
 
6394
6484
  exports.ACTIVITY_DATA = ACTIVITY_DATA;
6485
+ exports.AUP_PLACE_CONFIG = AUP_PLACE_CONFIG;
6395
6486
  exports.AbstractActivity = AbstractActivity;
6396
6487
  exports.AbstractInputComponent = AbstractInputComponent;
6397
6488
  exports.AbstractPlaceNavigationComponent = AbstractPlaceNavigationComponent;
6398
- exports.Activity = exports.ɵbd;
6489
+ exports.Activity = exports.ɵbf;
6399
6490
  exports.ActivityContainerComponent = ActivityContainerComponent;
6400
6491
  exports.ActivityOutletComponent = ActivityOutletComponent;
6401
6492
  exports.AlertDialogComponent = AlertDialogComponent;
@@ -6403,7 +6494,7 @@
6403
6494
  exports.BusyOverlayComponent = BusyOverlayComponent;
6404
6495
  exports.CommandDirective = CommandDirective;
6405
6496
  exports.ComponentsModule = ComponentsModule;
6406
- exports.ConfirmThenDialogComponent = exports.ɵbf;
6497
+ exports.ConfirmThenDialogComponent = exports.ɵbh;
6407
6498
  exports.ConfirmationDialogComponent = ConfirmationDialogComponent;
6408
6499
  exports.DEFINITION_META_DATA_KEY = DEFINITION_META_DATA_KEY;
6409
6500
  exports.DIALOG_INTERACTION_SERVICE_DEFAULTS = DIALOG_INTERACTION_SERVICE_DEFAULTS;
@@ -6444,14 +6535,16 @@
6444
6535
  exports.slideDownAndUpAnimation = slideDownAndUpAnimation;
6445
6536
  exports.ɵa = DirectivesModule;
6446
6537
  exports.ɵb = CommandDirective;
6447
- exports.ɵba = ConfirmationDialogComponent;
6448
- exports.ɵbb = AbstractActivity;
6449
- exports.ɵbc = ACTIVITY_DATA;
6450
- exports.ɵbg = AlertDialogComponent;
6451
- exports.ɵbi = InteractionOutletComponent;
6452
- exports.ɵbj = InplaceInteractionContextComponent;
6453
- exports.ɵbk = DIALOG_INTERACTION_SERVICE_DEFAULTS;
6454
- exports.ɵbl = DialogInteractionService;
6538
+ exports.ɵba = InteractionContext;
6539
+ exports.ɵbb = ActivityOutletComponent;
6540
+ exports.ɵbc = ConfirmationDialogComponent;
6541
+ exports.ɵbd = AbstractActivity;
6542
+ exports.ɵbe = ACTIVITY_DATA;
6543
+ exports.ɵbi = AlertDialogComponent;
6544
+ exports.ɵbk = InteractionOutletComponent;
6545
+ exports.ɵbl = InplaceInteractionContextComponent;
6546
+ exports.ɵbm = DIALOG_INTERACTION_SERVICE_DEFAULTS;
6547
+ exports.ɵbn = DialogInteractionService;
6455
6548
  exports.ɵc = FocusBindingDirective;
6456
6549
  exports.ɵd = DisposableComponent;
6457
6550
  exports.ɵe = ComponentsModule;
@@ -6467,15 +6560,14 @@
6467
6560
  exports.ɵo = PlaceOutletComponent;
6468
6561
  exports.ɵp = leftRightPlaceAnimation;
6469
6562
  exports.ɵq = LEFT_RIGHT_PLACE_ANIMATION;
6470
- exports.ɵr = PlaceRouter;
6471
- exports.ɵs = PlaceHistory;
6472
- exports.ɵt = TabbedPlaceNavigationComponent;
6473
- exports.ɵu = AbstractPlaceNavigationComponent;
6474
- exports.ɵv = ListPlaceNavComponent;
6475
- exports.ɵw = InteractionModule;
6476
- exports.ɵx = ActivityContainerComponent;
6477
- exports.ɵy = InteractionContext;
6478
- exports.ɵz = ActivityOutletComponent;
6563
+ exports.ɵr = AUP_PLACE_CONFIG;
6564
+ exports.ɵt = PlaceRouter;
6565
+ exports.ɵu = PlaceHistory;
6566
+ exports.ɵv = TabbedPlaceNavigationComponent;
6567
+ exports.ɵw = AbstractPlaceNavigationComponent;
6568
+ exports.ɵx = ListPlaceNavComponent;
6569
+ exports.ɵy = InteractionModule;
6570
+ exports.ɵz = ActivityContainerComponent;
6479
6571
 
6480
6572
  Object.defineProperty(exports, '__esModule', { value: true });
6481
6573