/* Minification failed. Returning unminified contents.
(1,1): run-time error CSS1019: Unexpected token, found '('
(1,11): run-time error CSS1031: Expected selector, found '('
(1,11): run-time error CSS1025: Expected comma or open brace, found '('
(19,2): run-time error CSS1019: Unexpected token, found ')'
(19,3): run-time error CSS1019: Unexpected token, found '('
(19,4): run-time error CSS1019: Unexpected token, found ')'
(21,1): run-time error CSS1019: Unexpected token, found '('
(21,11): run-time error CSS1031: Expected selector, found '('
(21,11): run-time error CSS1025: Expected comma or open brace, found '('
(26,2): run-time error CSS1019: Unexpected token, found ')'
(26,3): run-time error CSS1019: Unexpected token, found '('
(26,4): run-time error CSS1019: Unexpected token, found ')'
(28,8): run-time error CSS1031: Expected selector, found ';'
(28,8): run-time error CSS1025: Expected comma or open brace, found ';'
(29,1): run-time error CSS1019: Unexpected token, found '('
(29,11): run-time error CSS1031: Expected selector, found '('
(29,11): run-time error CSS1025: Expected comma or open brace, found '('
(111,2): run-time error CSS1019: Unexpected token, found ')'
(111,3): run-time error CSS1019: Unexpected token, found '('
(111,9): run-time error CSS1030: Expected identifier, found '|'
(111,9): run-time error CSS1031: Expected selector, found '|'
(111,9): run-time error CSS1025: Expected comma or open brace, found '|'
(113,8): run-time error CSS1031: Expected selector, found ';'
(113,8): run-time error CSS1025: Expected comma or open brace, found ';'
(114,1): run-time error CSS1019: Unexpected token, found '('
(114,11): run-time error CSS1031: Expected selector, found '('
(114,11): run-time error CSS1025: Expected comma or open brace, found '('
(140,2): run-time error CSS1019: Unexpected token, found ')'
(140,3): run-time error CSS1019: Unexpected token, found '('
(140,9): run-time error CSS1030: Expected identifier, found '|'
(140,9): run-time error CSS1031: Expected selector, found '|'
(140,9): run-time error CSS1025: Expected comma or open brace, found '|'
(142,8): run-time error CSS1031: Expected selector, found ';'
(142,8): run-time error CSS1025: Expected comma or open brace, found ';'
(143,1): run-time error CSS1019: Unexpected token, found '('
(143,11): run-time error CSS1031: Expected selector, found '('
(143,11): run-time error CSS1025: Expected comma or open brace, found '('
(169,2): run-time error CSS1019: Unexpected token, found ')'
(169,3): run-time error CSS1019: Unexpected token, found '('
(169,9): run-time error CSS1030: Expected identifier, found '|'
(169,9): run-time error CSS1031: Expected selector, found '|'
(169,9): run-time error CSS1025: Expected comma or open brace, found '|'
(171,8): run-time error CSS1031: Expected selector, found ';'
(171,8): run-time error CSS1025: Expected comma or open brace, found ';'
(172,1): run-time error CSS1019: Unexpected token, found '('
(172,11): run-time error CSS1031: Expected selector, found '('
(172,11): run-time error CSS1025: Expected comma or open brace, found '('
(376,2): run-time error CSS1019: Unexpected token, found ')'
(376,3): run-time error CSS1019: Unexpected token, found '('
(376,9): run-time error CSS1030: Expected identifier, found '|'
(376,9): run-time error CSS1031: Expected selector, found '|'
(376,9): run-time error CSS1025: Expected comma or open brace, found '|'
(378,8): run-time error CSS1031: Expected selector, found ';'
(378,8): run-time error CSS1025: Expected comma or open brace, found ';'
(379,1): run-time error CSS1019: Unexpected token, found '('
(379,11): run-time error CSS1031: Expected selector, found '('
(379,11): run-time error CSS1025: Expected comma or open brace, found '('
(768,2): run-time error CSS1019: Unexpected token, found ')'
(768,3): run-time error CSS1019: Unexpected token, found '('
(768,9): run-time error CSS1030: Expected identifier, found '|'
(768,9): run-time error CSS1031: Expected selector, found '|'
(768,9): run-time error CSS1025: Expected comma or open brace, found '|'
(770,8): run-time error CSS1031: Expected selector, found ';'
(770,8): run-time error CSS1025: Expected comma or open brace, found ';'
(771,1): run-time error CSS1019: Unexpected token, found '('
(771,11): run-time error CSS1031: Expected selector, found '('
(771,11): run-time error CSS1025: Expected comma or open brace, found '('
(804,2): run-time error CSS1019: Unexpected token, found ')'
(804,3): run-time error CSS1019: Unexpected token, found '('
(804,9): run-time error CSS1030: Expected identifier, found '|'
(804,9): run-time error CSS1031: Expected selector, found '|'
(804,9): run-time error CSS1025: Expected comma or open brace, found '|'
(806,8): run-time error CSS1031: Expected selector, found ';'
(806,8): run-time error CSS1025: Expected comma or open brace, found ';'
(807,1): run-time error CSS1019: Unexpected token, found '('
(807,11): run-time error CSS1031: Expected selector, found '('
(807,11): run-time error CSS1025: Expected comma or open brace, found '('
(1079,2): run-time error CSS1019: Unexpected token, found ')'
(1079,3): run-time error CSS1019: Unexpected token, found '('
(1079,9): run-time error CSS1030: Expected identifier, found '|'
(1079,9): run-time error CSS1031: Expected selector, found '|'
(1079,9): run-time error CSS1025: Expected comma or open brace, found '|'
(1081,8): run-time error CSS1031: Expected selector, found ';'
(1081,8): run-time error CSS1025: Expected comma or open brace, found ';'
(1082,1): run-time error CSS1019: Unexpected token, found '('
(1082,11): run-time error CSS1031: Expected selector, found '('
(1082,11): run-time error CSS1025: Expected comma or open brace, found '('
(1120,2): run-time error CSS1019: Unexpected token, found ')'
(1120,3): run-time error CSS1019: Unexpected token, found '('
(1120,9): run-time error CSS1030: Expected identifier, found '|'
(1120,9): run-time error CSS1031: Expected selector, found '|'
(1120,9): run-time error CSS1025: Expected comma or open brace, found '|'
(1122,8): run-time error CSS1031: Expected selector, found ';'
(1122,8): run-time error CSS1025: Expected comma or open brace, found ';'
(1123,1): run-time error CSS1019: Unexpected token, found '('
(1123,11): run-time error CSS1031: Expected selector, found '('
(1123,11): run-time error CSS1025: Expected comma or open brace, found '('
(1262,2): run-time error CSS1019: Unexpected token, found ')'
(1262,3): run-time error CSS1019: Unexpected token, found '('
(1262,9): run-time error CSS1030: Expected identifier, found '|'
(1262,9): run-time error CSS1031: Expected selector, found '|'
(1262,9): run-time error CSS1025: Expected comma or open brace, found '|'
(1264,8): run-time error CSS1031: Expected selector, found ';'
(1264,8): run-time error CSS1025: Expected comma or open brace, found ';'
(1265,1): run-time error CSS1019: Unexpected token, found '('
(1265,11): run-time error CSS1031: Expected selector, found '('
(1265,11): run-time error CSS1025: Expected comma or open brace, found '('
(1306,2): run-time error CSS1019: Unexpected token, found ')'
(1306,3): run-time error CSS1019: Unexpected token, found '('
(1306,9): run-time error CSS1030: Expected identifier, found '|'
(1306,9): run-time error CSS1031: Expected selector, found '|'
(1306,9): run-time error CSS1025: Expected comma or open brace, found '|'
(1308,8): run-time error CSS1031: Expected selector, found ';'
(1308,8): run-time error CSS1025: Expected comma or open brace, found ';'
(1309,1): run-time error CSS1019: Unexpected token, found '('
(1309,11): run-time error CSS1031: Expected selector, found '('
(1309,11): run-time error CSS1025: Expected comma or open brace, found '('
(1451,2): run-time error CSS1019: Unexpected token, found ')'
(1451,3): run-time error CSS1019: Unexpected token, found '('
(1451,9): run-time error CSS1030: Expected identifier, found '|'
(1451,9): run-time error CSS1031: Expected selector, found '|'
(1451,9): run-time error CSS1025: Expected comma or open brace, found '|'
(1453,8): run-time error CSS1031: Expected selector, found ';'
(1453,8): run-time error CSS1025: Expected comma or open brace, found ';'
(1454,1): run-time error CSS1019: Unexpected token, found '('
(1454,11): run-time error CSS1031: Expected selector, found '('
(1454,11): run-time error CSS1025: Expected comma or open brace, found '('
(1486,2): run-time error CSS1019: Unexpected token, found ')'
(1486,3): run-time error CSS1019: Unexpected token, found '('
(1486,9): run-time error CSS1030: Expected identifier, found '|'
(1486,9): run-time error CSS1031: Expected selector, found '|'
(1486,9): run-time error CSS1025: Expected comma or open brace, found '|'
(1488,8): run-time error CSS1031: Expected selector, found ';'
(1488,8): run-time error CSS1025: Expected comma or open brace, found ';'
(1489,1): run-time error CSS1019: Unexpected token, found '('
(1489,11): run-time error CSS1031: Expected selector, found '('
(1489,11): run-time error CSS1025: Expected comma or open brace, found '('
(1547,2): run-time error CSS1019: Unexpected token, found ')'
(1547,3): run-time error CSS1019: Unexpected token, found '('
(1547,9): run-time error CSS1030: Expected identifier, found '|'
(1547,9): run-time error CSS1031: Expected selector, found '|'
(1547,9): run-time error CSS1025: Expected comma or open brace, found '|'
(1549,9): run-time error CSS1030: Expected identifier, found 'module('
(1549,9): run-time error CSS1031: Expected selector, found 'module('
(1549,9): run-time error CSS1025: Expected comma or open brace, found 'module('
(1565,8): run-time error CSS1031: Expected selector, found ';'
(1565,8): run-time error CSS1025: Expected comma or open brace, found ';'
(1566,1): run-time error CSS1019: Unexpected token, found '('
(1566,11): run-time error CSS1031: Expected selector, found '('
(1566,11): run-time error CSS1025: Expected comma or open brace, found '('
(1646,2): run-time error CSS1019: Unexpected token, found ')'
(1646,3): run-time error CSS1019: Unexpected token, found '('
(1646,9): run-time error CSS1030: Expected identifier, found '|'
(1646,9): run-time error CSS1031: Expected selector, found '|'
(1646,9): run-time error CSS1025: Expected comma or open brace, found '|'
(1648,8): run-time error CSS1031: Expected selector, found ';'
(1648,8): run-time error CSS1025: Expected comma or open brace, found ';'
(1649,1): run-time error CSS1019: Unexpected token, found '('
(1649,11): run-time error CSS1031: Expected selector, found '('
(1649,11): run-time error CSS1025: Expected comma or open brace, found '('
(1675,2): run-time error CSS1019: Unexpected token, found ')'
(1675,3): run-time error CSS1019: Unexpected token, found '('
(1675,9): run-time error CSS1030: Expected identifier, found '|'
(1675,9): run-time error CSS1031: Expected selector, found '|'
(1675,9): run-time error CSS1025: Expected comma or open brace, found '|'
(1677,8): run-time error CSS1031: Expected selector, found ';'
(1677,8): run-time error CSS1025: Expected comma or open brace, found ';'
(1678,1): run-time error CSS1019: Unexpected token, found '('
(1678,11): run-time error CSS1031: Expected selector, found '('
(1678,11): run-time error CSS1025: Expected comma or open brace, found '('
(1791,2): run-time error CSS1019: Unexpected token, found ')'
(1791,3): run-time error CSS1019: Unexpected token, found '('
(1791,9): run-time error CSS1030: Expected identifier, found '|'
(1791,9): run-time error CSS1031: Expected selector, found '|'
(1791,9): run-time error CSS1025: Expected comma or open brace, found '|'
(1793,8): run-time error CSS1031: Expected selector, found ';'
(1793,8): run-time error CSS1025: Expected comma or open brace, found ';'
(1794,1): run-time error CSS1019: Unexpected token, found '('
(1794,11): run-time error CSS1031: Expected selector, found '('
(1794,11): run-time error CSS1025: Expected comma or open brace, found '('
(1843,2): run-time error CSS1019: Unexpected token, found ')'
(1843,3): run-time error CSS1019: Unexpected token, found '('
(1843,9): run-time error CSS1030: Expected identifier, found '|'
(1843,9): run-time error CSS1031: Expected selector, found '|'
(1843,9): run-time error CSS1025: Expected comma or open brace, found '|'
(1845,8): run-time error CSS1031: Expected selector, found ';'
(1845,8): run-time error CSS1025: Expected comma or open brace, found ';'
(1846,1): run-time error CSS1019: Unexpected token, found '('
(1846,11): run-time error CSS1031: Expected selector, found '('
(1846,11): run-time error CSS1025: Expected comma or open brace, found '('
(2030,2): run-time error CSS1019: Unexpected token, found ')'
(2030,3): run-time error CSS1019: Unexpected token, found '('
(2030,9): run-time error CSS1030: Expected identifier, found '|'
(2030,9): run-time error CSS1031: Expected selector, found '|'
(2030,9): run-time error CSS1025: Expected comma or open brace, found '|'
(2032,8): run-time error CSS1031: Expected selector, found ';'
(2032,8): run-time error CSS1025: Expected comma or open brace, found ';'
(2033,1): run-time error CSS1019: Unexpected token, found '('
(2033,11): run-time error CSS1031: Expected selector, found '('
(2033,11): run-time error CSS1025: Expected comma or open brace, found '('
(2055,2): run-time error CSS1019: Unexpected token, found ')'
(2055,3): run-time error CSS1019: Unexpected token, found '('
(2055,9): run-time error CSS1030: Expected identifier, found '|'
(2055,9): run-time error CSS1031: Expected selector, found '|'
(2055,9): run-time error CSS1025: Expected comma or open brace, found '|'
(2057,8): run-time error CSS1031: Expected selector, found ';'
(2057,8): run-time error CSS1025: Expected comma or open brace, found ';'
(2058,1): run-time error CSS1019: Unexpected token, found '('
(2058,11): run-time error CSS1031: Expected selector, found '('
(2058,11): run-time error CSS1025: Expected comma or open brace, found '('
(2084,2): run-time error CSS1019: Unexpected token, found ')'
(2084,3): run-time error CSS1019: Unexpected token, found '('
(2084,9): run-time error CSS1030: Expected identifier, found '|'
(2084,9): run-time error CSS1031: Expected selector, found '|'
(2084,9): run-time error CSS1025: Expected comma or open brace, found '|'
(2086,8): run-time error CSS1031: Expected selector, found ';'
(2086,8): run-time error CSS1025: Expected comma or open brace, found ';'
(2087,1): run-time error CSS1019: Unexpected token, found '('
(2087,11): run-time error CSS1031: Expected selector, found '('
(2087,11): run-time error CSS1025: Expected comma or open brace, found '('
(2468,2): run-time error CSS1019: Unexpected token, found ')'
(2468,3): run-time error CSS1019: Unexpected token, found '('
(2468,9): run-time error CSS1030: Expected identifier, found '|'
(2468,9): run-time error CSS1031: Expected selector, found '|'
(2468,9): run-time error CSS1025: Expected comma or open brace, found '|'
(2470,8): run-time error CSS1031: Expected selector, found ';'
(2470,8): run-time error CSS1025: Expected comma or open brace, found ';'
(2471,1): run-time error CSS1019: Unexpected token, found '('
(2471,11): run-time error CSS1031: Expected selector, found '('
(2471,11): run-time error CSS1025: Expected comma or open brace, found '('
(2497,2): run-time error CSS1019: Unexpected token, found ')'
(2497,3): run-time error CSS1019: Unexpected token, found '('
(2497,9): run-time error CSS1030: Expected identifier, found '|'
(2497,9): run-time error CSS1031: Expected selector, found '|'
(2497,9): run-time error CSS1025: Expected comma or open brace, found '|'
(2499,8): run-time error CSS1031: Expected selector, found ';'
(2499,8): run-time error CSS1025: Expected comma or open brace, found ';'
(2500,1): run-time error CSS1019: Unexpected token, found '('
(2500,11): run-time error CSS1031: Expected selector, found '('
(2500,11): run-time error CSS1025: Expected comma or open brace, found '('
(2574,2): run-time error CSS1019: Unexpected token, found ')'
(2574,3): run-time error CSS1019: Unexpected token, found '('
(2574,9): run-time error CSS1030: Expected identifier, found '|'
(2574,9): run-time error CSS1031: Expected selector, found '|'
(2574,9): run-time error CSS1025: Expected comma or open brace, found '|'
(2576,8): run-time error CSS1031: Expected selector, found ';'
(2576,8): run-time error CSS1025: Expected comma or open brace, found ';'
(2577,1): run-time error CSS1019: Unexpected token, found '('
(2577,11): run-time error CSS1031: Expected selector, found '('
(2577,11): run-time error CSS1025: Expected comma or open brace, found '('
(2603,2): run-time error CSS1019: Unexpected token, found ')'
(2603,3): run-time error CSS1019: Unexpected token, found '('
(2603,9): run-time error CSS1030: Expected identifier, found '|'
(2603,9): run-time error CSS1031: Expected selector, found '|'
(2603,9): run-time error CSS1025: Expected comma or open brace, found '|'
(2605,8): run-time error CSS1031: Expected selector, found ';'
(2605,8): run-time error CSS1025: Expected comma or open brace, found ';'
(2606,1): run-time error CSS1019: Unexpected token, found '('
(2606,11): run-time error CSS1031: Expected selector, found '('
(2606,11): run-time error CSS1025: Expected comma or open brace, found '('
(2632,2): run-time error CSS1019: Unexpected token, found ')'
(2632,3): run-time error CSS1019: Unexpected token, found '('
(2632,9): run-time error CSS1030: Expected identifier, found '|'
(2632,9): run-time error CSS1031: Expected selector, found '|'
(2632,9): run-time error CSS1025: Expected comma or open brace, found '|'
(2634,8): run-time error CSS1031: Expected selector, found ';'
(2634,8): run-time error CSS1025: Expected comma or open brace, found ';'
(2635,1): run-time error CSS1019: Unexpected token, found '('
(2635,11): run-time error CSS1031: Expected selector, found '('
(2635,11): run-time error CSS1025: Expected comma or open brace, found '('
(2661,2): run-time error CSS1019: Unexpected token, found ')'
(2661,3): run-time error CSS1019: Unexpected token, found '('
(2661,9): run-time error CSS1030: Expected identifier, found '|'
(2661,9): run-time error CSS1031: Expected selector, found '|'
(2661,9): run-time error CSS1025: Expected comma or open brace, found '|'
(2663,8): run-time error CSS1031: Expected selector, found ';'
(2663,8): run-time error CSS1025: Expected comma or open brace, found ';'
(2664,1): run-time error CSS1019: Unexpected token, found '('
(2664,11): run-time error CSS1031: Expected selector, found '('
(2664,11): run-time error CSS1025: Expected comma or open brace, found '('
(2771,2): run-time error CSS1019: Unexpected token, found ')'
(2771,3): run-time error CSS1019: Unexpected token, found '('
(2771,9): run-time error CSS1030: Expected identifier, found '|'
(2771,9): run-time error CSS1031: Expected selector, found '|'
(2771,9): run-time error CSS1025: Expected comma or open brace, found '|'
(2773,8): run-time error CSS1031: Expected selector, found ';'
(2773,8): run-time error CSS1025: Expected comma or open brace, found ';'
(2774,1): run-time error CSS1019: Unexpected token, found '('
(2774,11): run-time error CSS1031: Expected selector, found '('
(2774,11): run-time error CSS1025: Expected comma or open brace, found '('
(2931,2): run-time error CSS1019: Unexpected token, found ')'
(2931,3): run-time error CSS1019: Unexpected token, found '('
(2931,9): run-time error CSS1030: Expected identifier, found '|'
(2931,9): run-time error CSS1031: Expected selector, found '|'
(2931,9): run-time error CSS1025: Expected comma or open brace, found '|'
(2933,8): run-time error CSS1031: Expected selector, found ';'
(2933,8): run-time error CSS1025: Expected comma or open brace, found ';'
(2934,1): run-time error CSS1019: Unexpected token, found '('
(2934,11): run-time error CSS1031: Expected selector, found '('
(2934,11): run-time error CSS1025: Expected comma or open brace, found '('
(3123,2): run-time error CSS1019: Unexpected token, found ')'
(3123,3): run-time error CSS1019: Unexpected token, found '('
(3123,9): run-time error CSS1030: Expected identifier, found '|'
(3123,9): run-time error CSS1031: Expected selector, found '|'
(3123,9): run-time error CSS1025: Expected comma or open brace, found '|'
(3125,8): run-time error CSS1031: Expected selector, found ';'
(3125,8): run-time error CSS1025: Expected comma or open brace, found ';'
(3126,1): run-time error CSS1019: Unexpected token, found '('
(3126,11): run-time error CSS1031: Expected selector, found '('
(3126,11): run-time error CSS1025: Expected comma or open brace, found '('
(3294,2): run-time error CSS1019: Unexpected token, found ')'
(3294,3): run-time error CSS1019: Unexpected token, found '('
(3294,9): run-time error CSS1030: Expected identifier, found '|'
(3294,9): run-time error CSS1031: Expected selector, found '|'
(3294,9): run-time error CSS1025: Expected comma or open brace, found '|'
(3296,8): run-time error CSS1031: Expected selector, found ';'
(3296,8): run-time error CSS1025: Expected comma or open brace, found ';'
(3297,1): run-time error CSS1019: Unexpected token, found '('
(3297,11): run-time error CSS1031: Expected selector, found '('
(3297,11): run-time error CSS1025: Expected comma or open brace, found '('
(3372,2): run-time error CSS1019: Unexpected token, found ')'
(3372,3): run-time error CSS1019: Unexpected token, found '('
(3372,9): run-time error CSS1030: Expected identifier, found '|'
(3372,9): run-time error CSS1031: Expected selector, found '|'
(3372,9): run-time error CSS1025: Expected comma or open brace, found '|'
(3374,8): run-time error CSS1031: Expected selector, found ';'
(3374,8): run-time error CSS1025: Expected comma or open brace, found ';'
(3375,1): run-time error CSS1019: Unexpected token, found '('
(3375,11): run-time error CSS1031: Expected selector, found '('
(3375,11): run-time error CSS1025: Expected comma or open brace, found '('
(3479,2): run-time error CSS1019: Unexpected token, found ')'
(3479,3): run-time error CSS1019: Unexpected token, found '('
(3479,9): run-time error CSS1030: Expected identifier, found '|'
(3479,9): run-time error CSS1031: Expected selector, found '|'
(3479,9): run-time error CSS1025: Expected comma or open brace, found '|'
(3481,8): run-time error CSS1031: Expected selector, found ';'
(3481,8): run-time error CSS1025: Expected comma or open brace, found ';'
(3482,1): run-time error CSS1019: Unexpected token, found '('
(3482,11): run-time error CSS1031: Expected selector, found '('
(3482,11): run-time error CSS1025: Expected comma or open brace, found '('
(3603,2): run-time error CSS1019: Unexpected token, found ')'
(3603,3): run-time error CSS1019: Unexpected token, found '('
(3603,9): run-time error CSS1030: Expected identifier, found '|'
(3603,9): run-time error CSS1031: Expected selector, found '|'
(3603,9): run-time error CSS1025: Expected comma or open brace, found '|'
(3605,8): run-time error CSS1031: Expected selector, found ';'
(3605,8): run-time error CSS1025: Expected comma or open brace, found ';'
(3606,1): run-time error CSS1019: Unexpected token, found '('
(3606,11): run-time error CSS1031: Expected selector, found '('
(3606,11): run-time error CSS1025: Expected comma or open brace, found '('
(3677,2): run-time error CSS1019: Unexpected token, found ')'
(3677,3): run-time error CSS1019: Unexpected token, found '('
(3677,9): run-time error CSS1030: Expected identifier, found '|'
(3677,9): run-time error CSS1031: Expected selector, found '|'
(3677,9): run-time error CSS1025: Expected comma or open brace, found '|'
(3679,8): run-time error CSS1031: Expected selector, found ';'
(3679,8): run-time error CSS1025: Expected comma or open brace, found ';'
(3680,1): run-time error CSS1019: Unexpected token, found '('
(3680,11): run-time error CSS1031: Expected selector, found '('
(3680,11): run-time error CSS1025: Expected comma or open brace, found '('
(3738,2): run-time error CSS1019: Unexpected token, found ')'
(3738,3): run-time error CSS1019: Unexpected token, found '('
(3738,9): run-time error CSS1030: Expected identifier, found '|'
(3738,9): run-time error CSS1031: Expected selector, found '|'
(3738,9): run-time error CSS1025: Expected comma or open brace, found '|'
(3740,8): run-time error CSS1031: Expected selector, found ';'
(3740,8): run-time error CSS1025: Expected comma or open brace, found ';'
(3741,1): run-time error CSS1019: Unexpected token, found '('
(3741,11): run-time error CSS1031: Expected selector, found '('
(3741,11): run-time error CSS1025: Expected comma or open brace, found '('
(3852,2): run-time error CSS1019: Unexpected token, found ')'
(3852,3): run-time error CSS1019: Unexpected token, found '('
(3852,9): run-time error CSS1030: Expected identifier, found '|'
(3852,9): run-time error CSS1031: Expected selector, found '|'
(3852,9): run-time error CSS1025: Expected comma or open brace, found '|'
(3854,8): run-time error CSS1031: Expected selector, found ';'
(3854,8): run-time error CSS1025: Expected comma or open brace, found ';'
(3855,1): run-time error CSS1019: Unexpected token, found '('
(3855,11): run-time error CSS1031: Expected selector, found '('
(3855,11): run-time error CSS1025: Expected comma or open brace, found '('
(3873,2): run-time error CSS1019: Unexpected token, found ')'
(3873,3): run-time error CSS1019: Unexpected token, found '('
(3873,9): run-time error CSS1030: Expected identifier, found '|'
(3873,9): run-time error CSS1031: Expected selector, found '|'
(3873,9): run-time error CSS1025: Expected comma or open brace, found '|'
(3875,8): run-time error CSS1031: Expected selector, found ';'
(3875,8): run-time error CSS1025: Expected comma or open brace, found ';'
(3876,1): run-time error CSS1019: Unexpected token, found '('
(3876,11): run-time error CSS1031: Expected selector, found '('
(3876,11): run-time error CSS1025: Expected comma or open brace, found '('
(3934,2): run-time error CSS1019: Unexpected token, found ')'
(3934,3): run-time error CSS1019: Unexpected token, found '('
(3934,9): run-time error CSS1030: Expected identifier, found '|'
(3934,9): run-time error CSS1031: Expected selector, found '|'
(3934,9): run-time error CSS1025: Expected comma or open brace, found '|'
(3936,8): run-time error CSS1031: Expected selector, found ';'
(3936,8): run-time error CSS1025: Expected comma or open brace, found ';'
(3937,1): run-time error CSS1019: Unexpected token, found '('
(3937,11): run-time error CSS1031: Expected selector, found '('
(3937,11): run-time error CSS1025: Expected comma or open brace, found '('
(3970,2): run-time error CSS1019: Unexpected token, found ')'
(3970,3): run-time error CSS1019: Unexpected token, found '('
(3970,9): run-time error CSS1030: Expected identifier, found '|'
(3970,9): run-time error CSS1031: Expected selector, found '|'
(3970,9): run-time error CSS1025: Expected comma or open brace, found '|'
(3972,8): run-time error CSS1031: Expected selector, found ';'
(3972,8): run-time error CSS1025: Expected comma or open brace, found ';'
(3973,1): run-time error CSS1019: Unexpected token, found '('
(3973,11): run-time error CSS1031: Expected selector, found '('
(3973,11): run-time error CSS1025: Expected comma or open brace, found '('
(4329,2): run-time error CSS1019: Unexpected token, found ')'
(4329,3): run-time error CSS1019: Unexpected token, found '('
(4329,9): run-time error CSS1030: Expected identifier, found '|'
(4329,9): run-time error CSS1031: Expected selector, found '|'
(4329,9): run-time error CSS1025: Expected comma or open brace, found '|'
(4331,8): run-time error CSS1031: Expected selector, found ';'
(4331,8): run-time error CSS1025: Expected comma or open brace, found ';'
(4332,1): run-time error CSS1019: Unexpected token, found '('
(4332,11): run-time error CSS1031: Expected selector, found '('
(4332,11): run-time error CSS1025: Expected comma or open brace, found '('
(4391,2): run-time error CSS1019: Unexpected token, found ')'
(4391,3): run-time error CSS1019: Unexpected token, found '('
(4391,9): run-time error CSS1030: Expected identifier, found '|'
(4391,9): run-time error CSS1031: Expected selector, found '|'
(4391,9): run-time error CSS1025: Expected comma or open brace, found '|'
(4393,8): run-time error CSS1031: Expected selector, found ';'
(4393,8): run-time error CSS1025: Expected comma or open brace, found ';'
(4394,1): run-time error CSS1019: Unexpected token, found '('
(4394,11): run-time error CSS1031: Expected selector, found '('
(4394,11): run-time error CSS1025: Expected comma or open brace, found '('
(4435,2): run-time error CSS1019: Unexpected token, found ')'
(4435,3): run-time error CSS1019: Unexpected token, found '('
(4435,9): run-time error CSS1030: Expected identifier, found '|'
(4435,9): run-time error CSS1031: Expected selector, found '|'
(4435,9): run-time error CSS1025: Expected comma or open brace, found '|'
(4437,8): run-time error CSS1031: Expected selector, found ';'
(4437,8): run-time error CSS1025: Expected comma or open brace, found ';'
(4438,1): run-time error CSS1019: Unexpected token, found '('
(4438,11): run-time error CSS1031: Expected selector, found '('
(4438,11): run-time error CSS1025: Expected comma or open brace, found '('
(4587,2): run-time error CSS1019: Unexpected token, found ')'
(4587,3): run-time error CSS1019: Unexpected token, found '('
(4587,9): run-time error CSS1030: Expected identifier, found '|'
(4587,9): run-time error CSS1031: Expected selector, found '|'
(4587,9): run-time error CSS1025: Expected comma or open brace, found '|'
(4589,8): run-time error CSS1031: Expected selector, found ';'
(4589,8): run-time error CSS1025: Expected comma or open brace, found ';'
(4590,1): run-time error CSS1019: Unexpected token, found '('
(4590,11): run-time error CSS1031: Expected selector, found '('
(4590,11): run-time error CSS1025: Expected comma or open brace, found '('
(4616,2): run-time error CSS1019: Unexpected token, found ')'
(4616,3): run-time error CSS1019: Unexpected token, found '('
(4616,9): run-time error CSS1030: Expected identifier, found '|'
(4616,9): run-time error CSS1031: Expected selector, found '|'
(4616,9): run-time error CSS1025: Expected comma or open brace, found '|'
(4618,8): run-time error CSS1031: Expected selector, found ';'
(4618,8): run-time error CSS1025: Expected comma or open brace, found ';'
(4619,1): run-time error CSS1019: Unexpected token, found '('
(4619,11): run-time error CSS1031: Expected selector, found '('
(4619,11): run-time error CSS1025: Expected comma or open brace, found '('
(4740,2): run-time error CSS1019: Unexpected token, found ')'
(4740,3): run-time error CSS1019: Unexpected token, found '('
(4740,9): run-time error CSS1030: Expected identifier, found '|'
(4740,9): run-time error CSS1031: Expected selector, found '|'
(4740,9): run-time error CSS1025: Expected comma or open brace, found '|'
(4742,8): run-time error CSS1031: Expected selector, found ';'
(4742,8): run-time error CSS1025: Expected comma or open brace, found ';'
(4743,1): run-time error CSS1019: Unexpected token, found '('
(4743,11): run-time error CSS1031: Expected selector, found '('
(4743,11): run-time error CSS1025: Expected comma or open brace, found '('
(4785,2): run-time error CSS1019: Unexpected token, found ')'
(4785,3): run-time error CSS1019: Unexpected token, found '('
(4785,9): run-time error CSS1030: Expected identifier, found '|'
(4785,9): run-time error CSS1031: Expected selector, found '|'
(4785,9): run-time error CSS1025: Expected comma or open brace, found '|'
(4787,1): run-time error CSS1019: Unexpected token, found '('
(4787,11): run-time error CSS1031: Expected selector, found '('
(4787,11): run-time error CSS1025: Expected comma or open brace, found '('
(4971,2): run-time error CSS1019: Unexpected token, found ')'
(4971,3): run-time error CSS1019: Unexpected token, found '('
(4971,4): run-time error CSS1019: Unexpected token, found ')'
(4973,1): run-time error CSS1019: Unexpected token, found '('
(4973,11): run-time error CSS1031: Expected selector, found '('
(4973,11): run-time error CSS1025: Expected comma or open brace, found '('
(5043,2): run-time error CSS1019: Unexpected token, found ')'
(5043,3): run-time error CSS1019: Unexpected token, found '('
(5043,4): run-time error CSS1019: Unexpected token, found ')'
(5045,1): run-time error CSS1019: Unexpected token, found '('
(5045,11): run-time error CSS1031: Expected selector, found '('
(5045,11): run-time error CSS1025: Expected comma or open brace, found '('
(5065,2): run-time error CSS1019: Unexpected token, found ')'
(5065,3): run-time error CSS1019: Unexpected token, found '('
(5065,4): run-time error CSS1019: Unexpected token, found ')'
(5067,1): run-time error CSS1019: Unexpected token, found '('
(5067,11): run-time error CSS1031: Expected selector, found '('
(5067,11): run-time error CSS1025: Expected comma or open brace, found '('
(5087,2): run-time error CSS1019: Unexpected token, found ')'
(5087,3): run-time error CSS1019: Unexpected token, found '('
(5087,4): run-time error CSS1019: Unexpected token, found ')'
(5089,1): run-time error CSS1019: Unexpected token, found '('
(5089,11): run-time error CSS1031: Expected selector, found '('
(5089,11): run-time error CSS1025: Expected comma or open brace, found '('
(5117,2): run-time error CSS1019: Unexpected token, found ')'
(5117,3): run-time error CSS1019: Unexpected token, found '('
(5117,4): run-time error CSS1019: Unexpected token, found ')'
(5119,1): run-time error CSS1019: Unexpected token, found '('
(5119,11): run-time error CSS1031: Expected selector, found '('
(5119,11): run-time error CSS1025: Expected comma or open brace, found '('
(5163,2): run-time error CSS1019: Unexpected token, found ')'
(5163,3): run-time error CSS1019: Unexpected token, found '('
(5163,4): run-time error CSS1019: Unexpected token, found ')'
(5165,1): run-time error CSS1019: Unexpected token, found '('
(5165,11): run-time error CSS1031: Expected selector, found '('
(5165,11): run-time error CSS1025: Expected comma or open brace, found '('
(5226,2): run-time error CSS1019: Unexpected token, found ')'
(5226,3): run-time error CSS1019: Unexpected token, found '('
(5226,4): run-time error CSS1019: Unexpected token, found ')'
(5228,1): run-time error CSS1019: Unexpected token, found '('
(5228,11): run-time error CSS1031: Expected selector, found '('
(5228,11): run-time error CSS1025: Expected comma or open brace, found '('
(5245,2): run-time error CSS1019: Unexpected token, found ')'
(5245,3): run-time error CSS1019: Unexpected token, found '('
(5245,4): run-time error CSS1019: Unexpected token, found ')'
(5247,1): run-time error CSS1019: Unexpected token, found '('
(5247,11): run-time error CSS1031: Expected selector, found '('
(5247,11): run-time error CSS1025: Expected comma or open brace, found '('
(5252,2): run-time error CSS1019: Unexpected token, found ')'
(5252,3): run-time error CSS1019: Unexpected token, found '('
(5252,4): run-time error CSS1019: Unexpected token, found ')'
(5254,1): run-time error CSS1019: Unexpected token, found '('
(5254,11): run-time error CSS1031: Expected selector, found '('
(5254,11): run-time error CSS1025: Expected comma or open brace, found '('
(5296,2): run-time error CSS1019: Unexpected token, found ')'
(5296,3): run-time error CSS1019: Unexpected token, found '('
(5296,4): run-time error CSS1019: Unexpected token, found ')'
(5298,1): run-time error CSS1019: Unexpected token, found '('
(5298,11): run-time error CSS1031: Expected selector, found '('
(5298,11): run-time error CSS1025: Expected comma or open brace, found '('
(5303,2): run-time error CSS1019: Unexpected token, found ')'
(5303,3): run-time error CSS1019: Unexpected token, found '('
(5303,4): run-time error CSS1019: Unexpected token, found ')'
(5305,1): run-time error CSS1019: Unexpected token, found '('
(5305,11): run-time error CSS1031: Expected selector, found '('
(5305,11): run-time error CSS1025: Expected comma or open brace, found '('
(5325,2): run-time error CSS1019: Unexpected token, found ')'
(5325,3): run-time error CSS1019: Unexpected token, found '('
(5325,4): run-time error CSS1019: Unexpected token, found ')'
(5327,1): run-time error CSS1019: Unexpected token, found '('
(5327,11): run-time error CSS1031: Expected selector, found '('
(5327,11): run-time error CSS1025: Expected comma or open brace, found '('
(5344,2): run-time error CSS1019: Unexpected token, found ')'
(5344,3): run-time error CSS1019: Unexpected token, found '('
(5344,4): run-time error CSS1019: Unexpected token, found ')'
(5346,1): run-time error CSS1019: Unexpected token, found '('
(5346,11): run-time error CSS1031: Expected selector, found '('
(5346,11): run-time error CSS1025: Expected comma or open brace, found '('
(5354,2): run-time error CSS1019: Unexpected token, found ')'
(5354,3): run-time error CSS1019: Unexpected token, found '('
(5354,4): run-time error CSS1019: Unexpected token, found ')'
(5356,1): run-time error CSS1019: Unexpected token, found '('
(5356,11): run-time error CSS1031: Expected selector, found '('
(5356,11): run-time error CSS1025: Expected comma or open brace, found '('
(5388,2): run-time error CSS1019: Unexpected token, found ')'
(5388,3): run-time error CSS1019: Unexpected token, found '('
(5388,4): run-time error CSS1019: Unexpected token, found ')'
(5390,1): run-time error CSS1019: Unexpected token, found '('
(5390,11): run-time error CSS1031: Expected selector, found '('
(5390,11): run-time error CSS1025: Expected comma or open brace, found '('
(5408,2): run-time error CSS1019: Unexpected token, found ')'
(5408,3): run-time error CSS1019: Unexpected token, found '('
(5408,4): run-time error CSS1019: Unexpected token, found ')'
(5410,1): run-time error CSS1019: Unexpected token, found '('
(5410,11): run-time error CSS1031: Expected selector, found '('
(5410,11): run-time error CSS1025: Expected comma or open brace, found '('
(5430,2): run-time error CSS1019: Unexpected token, found ')'
(5430,3): run-time error CSS1019: Unexpected token, found '('
(5430,4): run-time error CSS1019: Unexpected token, found ')'
(5432,1): run-time error CSS1019: Unexpected token, found '('
(5432,11): run-time error CSS1031: Expected selector, found '('
(5432,11): run-time error CSS1025: Expected comma or open brace, found '('
(5449,2): run-time error CSS1019: Unexpected token, found ')'
(5449,3): run-time error CSS1019: Unexpected token, found '('
(5449,4): run-time error CSS1019: Unexpected token, found ')'
(5451,1): run-time error CSS1019: Unexpected token, found '('
(5451,11): run-time error CSS1031: Expected selector, found '('
(5451,11): run-time error CSS1025: Expected comma or open brace, found '('
(5481,2): run-time error CSS1019: Unexpected token, found ')'
(5481,3): run-time error CSS1019: Unexpected token, found '('
(5481,4): run-time error CSS1019: Unexpected token, found ')'
(5483,1): run-time error CSS1019: Unexpected token, found '('
(5483,11): run-time error CSS1031: Expected selector, found '('
(5483,11): run-time error CSS1025: Expected comma or open brace, found '('
(5561,2): run-time error CSS1019: Unexpected token, found ')'
(5561,3): run-time error CSS1019: Unexpected token, found '('
(5561,4): run-time error CSS1019: Unexpected token, found ')'
(5563,1): run-time error CSS1019: Unexpected token, found '('
(5563,11): run-time error CSS1031: Expected selector, found '('
(5563,11): run-time error CSS1025: Expected comma or open brace, found '('
(5575,2): run-time error CSS1019: Unexpected token, found ')'
(5575,3): run-time error CSS1019: Unexpected token, found '('
(5575,4): run-time error CSS1019: Unexpected token, found ')'
(5577,1): run-time error CSS1019: Unexpected token, found '('
(5577,11): run-time error CSS1031: Expected selector, found '('
(5577,11): run-time error CSS1025: Expected comma or open brace, found '('
(5597,2): run-time error CSS1019: Unexpected token, found ')'
(5597,3): run-time error CSS1019: Unexpected token, found '('
(5597,4): run-time error CSS1019: Unexpected token, found ')'
(5599,1): run-time error CSS1019: Unexpected token, found '('
(5599,11): run-time error CSS1031: Expected selector, found '('
(5599,11): run-time error CSS1025: Expected comma or open brace, found '('
(5621,2): run-time error CSS1019: Unexpected token, found ')'
(5621,3): run-time error CSS1019: Unexpected token, found '('
(5621,4): run-time error CSS1019: Unexpected token, found ')'
(5623,1): run-time error CSS1019: Unexpected token, found '('
(5623,11): run-time error CSS1031: Expected selector, found '('
(5623,11): run-time error CSS1025: Expected comma or open brace, found '('
(5640,2): run-time error CSS1019: Unexpected token, found ')'
(5640,3): run-time error CSS1019: Unexpected token, found '('
(5640,4): run-time error CSS1019: Unexpected token, found ')'
(5642,1): run-time error CSS1019: Unexpected token, found '('
(5642,11): run-time error CSS1031: Expected selector, found '('
(5642,11): run-time error CSS1025: Expected comma or open brace, found '('
(5670,2): run-time error CSS1019: Unexpected token, found ')'
(5670,3): run-time error CSS1019: Unexpected token, found '('
(5670,4): run-time error CSS1019: Unexpected token, found ')'
(5672,1): run-time error CSS1019: Unexpected token, found '('
(5672,11): run-time error CSS1031: Expected selector, found '('
(5672,11): run-time error CSS1025: Expected comma or open brace, found '('
(5689,2): run-time error CSS1019: Unexpected token, found ')'
(5689,3): run-time error CSS1019: Unexpected token, found '('
(5689,4): run-time error CSS1019: Unexpected token, found ')'
(5691,1): run-time error CSS1019: Unexpected token, found '('
(5691,11): run-time error CSS1031: Expected selector, found '('
(5691,11): run-time error CSS1025: Expected comma or open brace, found '('
(5708,2): run-time error CSS1019: Unexpected token, found ')'
(5708,3): run-time error CSS1019: Unexpected token, found '('
(5708,4): run-time error CSS1019: Unexpected token, found ')'
(5710,1): run-time error CSS1019: Unexpected token, found '('
(5710,11): run-time error CSS1031: Expected selector, found '('
(5710,11): run-time error CSS1025: Expected comma or open brace, found '('
(5776,2): run-time error CSS1019: Unexpected token, found ')'
(5776,3): run-time error CSS1019: Unexpected token, found '('
(5776,4): run-time error CSS1019: Unexpected token, found ')'
(5778,1): run-time error CSS1019: Unexpected token, found '('
(5778,11): run-time error CSS1031: Expected selector, found '('
(5778,11): run-time error CSS1025: Expected comma or open brace, found '('
(5820,2): run-time error CSS1019: Unexpected token, found ')'
(5820,3): run-time error CSS1019: Unexpected token, found '('
(5820,4): run-time error CSS1019: Unexpected token, found ')'
(5822,1): run-time error CSS1019: Unexpected token, found '('
(5822,2): run-time error CSS1019: Unexpected token, found 'function('
(5822,11): run-time error CSS1019: Unexpected token, found ')'
(5822,13): run-time error CSS1019: Unexpected token, found '{'
(5823,5): run-time error CSS1019: Unexpected token, found ''use strict''
(5825,10): run-time error CSS1030: Expected identifier, found 'module('
(5825,10): run-time error CSS1031: Expected selector, found 'module('
(5825,10): run-time error CSS1025: Expected comma or open brace, found 'module('
(5828,14): run-time error CSS1031: Expected selector, found 'focusIf('
(5828,14): run-time error CSS1025: Expected comma or open brace, found 'focusIf('
(5849,1): run-time error CSS1019: Unexpected token, found '}'
(5849,2): run-time error CSS1019: Unexpected token, found ')'
(5849,3): run-time error CSS1019: Unexpected token, found '('
(5849,4): run-time error CSS1019: Unexpected token, found ')'
(5850,8): run-time error CSS1031: Expected selector, found ';'
(5850,8): run-time error CSS1025: Expected comma or open brace, found ';'
(5851,1): run-time error CSS1019: Unexpected token, found '('
(5851,11): run-time error CSS1031: Expected selector, found '('
(5851,11): run-time error CSS1025: Expected comma or open brace, found '('
(5913,2): run-time error CSS1019: Unexpected token, found ')'
(5913,3): run-time error CSS1019: Unexpected token, found '('
(5913,9): run-time error CSS1030: Expected identifier, found '|'
(5913,9): run-time error CSS1031: Expected selector, found '|'
(5913,9): run-time error CSS1025: Expected comma or open brace, found '|'
(5915,8): run-time error CSS1031: Expected selector, found ';'
(5915,8): run-time error CSS1025: Expected comma or open brace, found ';'
(5916,1): run-time error CSS1019: Unexpected token, found '('
(5916,11): run-time error CSS1031: Expected selector, found '('
(5916,11): run-time error CSS1025: Expected comma or open brace, found '('
(5944,2): run-time error CSS1019: Unexpected token, found ')'
(5944,3): run-time error CSS1019: Unexpected token, found '('
(5944,9): run-time error CSS1030: Expected identifier, found '|'
(5944,9): run-time error CSS1031: Expected selector, found '|'
(5944,9): run-time error CSS1025: Expected comma or open brace, found '|'
(5946,8): run-time error CSS1031: Expected selector, found ';'
(5946,8): run-time error CSS1025: Expected comma or open brace, found ';'
(5947,1): run-time error CSS1019: Unexpected token, found '('
(5947,11): run-time error CSS1031: Expected selector, found '('
(5947,11): run-time error CSS1025: Expected comma or open brace, found '('
(5976,2): run-time error CSS1019: Unexpected token, found ')'
(5976,3): run-time error CSS1019: Unexpected token, found '('
(5976,9): run-time error CSS1030: Expected identifier, found '|'
(5976,9): run-time error CSS1031: Expected selector, found '|'
(5976,9): run-time error CSS1025: Expected comma or open brace, found '|'
(5978,8): run-time error CSS1031: Expected selector, found ';'
(5978,8): run-time error CSS1025: Expected comma or open brace, found ';'
(5979,1): run-time error CSS1019: Unexpected token, found '('
(5979,11): run-time error CSS1031: Expected selector, found '('
(5979,11): run-time error CSS1025: Expected comma or open brace, found '('
(6002,2): run-time error CSS1019: Unexpected token, found ')'
(6002,3): run-time error CSS1019: Unexpected token, found '('
(6002,9): run-time error CSS1030: Expected identifier, found '|'
(6002,9): run-time error CSS1031: Expected selector, found '|'
(6002,9): run-time error CSS1025: Expected comma or open brace, found '|'
(6004,8): run-time error CSS1031: Expected selector, found ';'
(6004,8): run-time error CSS1025: Expected comma or open brace, found ';'
(6005,1): run-time error CSS1019: Unexpected token, found '('
(6005,11): run-time error CSS1031: Expected selector, found '('
(6005,11): run-time error CSS1025: Expected comma or open brace, found '('
(6029,2): run-time error CSS1019: Unexpected token, found ')'
(6029,3): run-time error CSS1019: Unexpected token, found '('
(6029,9): run-time error CSS1030: Expected identifier, found '|'
(6029,9): run-time error CSS1031: Expected selector, found '|'
(6029,9): run-time error CSS1025: Expected comma or open brace, found '|'
(6031,8): run-time error CSS1031: Expected selector, found ';'
(6031,8): run-time error CSS1025: Expected comma or open brace, found ';'
(6032,1): run-time error CSS1019: Unexpected token, found '('
(6032,11): run-time error CSS1031: Expected selector, found '('
(6032,11): run-time error CSS1025: Expected comma or open brace, found '('
(6089,2): run-time error CSS1019: Unexpected token, found ')'
(6089,3): run-time error CSS1019: Unexpected token, found '('
(6089,9): run-time error CSS1030: Expected identifier, found '|'
(6089,9): run-time error CSS1031: Expected selector, found '|'
(6089,9): run-time error CSS1025: Expected comma or open brace, found '|'
(6091,8): run-time error CSS1031: Expected selector, found ';'
(6091,8): run-time error CSS1025: Expected comma or open brace, found ';'
(6092,1): run-time error CSS1019: Unexpected token, found '('
(6092,11): run-time error CSS1031: Expected selector, found '('
(6092,11): run-time error CSS1025: Expected comma or open brace, found '('
(6118,2): run-time error CSS1019: Unexpected token, found ')'
(6118,3): run-time error CSS1019: Unexpected token, found '('
(6118,9): run-time error CSS1030: Expected identifier, found '|'
(6118,9): run-time error CSS1031: Expected selector, found '|'
(6118,9): run-time error CSS1025: Expected comma or open brace, found '|'
(6120,8): run-time error CSS1031: Expected selector, found ';'
(6120,8): run-time error CSS1025: Expected comma or open brace, found ';'
(6121,1): run-time error CSS1019: Unexpected token, found '('
(6121,11): run-time error CSS1031: Expected selector, found '('
(6121,11): run-time error CSS1025: Expected comma or open brace, found '('
(6177,2): run-time error CSS1019: Unexpected token, found ')'
(6177,3): run-time error CSS1019: Unexpected token, found '('
(6177,9): run-time error CSS1030: Expected identifier, found '|'
(6177,9): run-time error CSS1031: Expected selector, found '|'
(6177,9): run-time error CSS1025: Expected comma or open brace, found '|'
(6179,8): run-time error CSS1031: Expected selector, found ';'
(6179,8): run-time error CSS1025: Expected comma or open brace, found ';'
(6180,1): run-time error CSS1019: Unexpected token, found '('
(6180,11): run-time error CSS1031: Expected selector, found '('
(6180,11): run-time error CSS1025: Expected comma or open brace, found '('
(6236,2): run-time error CSS1019: Unexpected token, found ')'
(6236,3): run-time error CSS1019: Unexpected token, found '('
(6236,9): run-time error CSS1030: Expected identifier, found '|'
(6236,9): run-time error CSS1031: Expected selector, found '|'
(6236,9): run-time error CSS1025: Expected comma or open brace, found '|'
(6238,8): run-time error CSS1031: Expected selector, found ';'
(6238,8): run-time error CSS1025: Expected comma or open brace, found ';'
(6239,1): run-time error CSS1019: Unexpected token, found '('
(6239,11): run-time error CSS1031: Expected selector, found '('
(6239,11): run-time error CSS1025: Expected comma or open brace, found '('
(6317,2): run-time error CSS1019: Unexpected token, found ')'
(6317,3): run-time error CSS1019: Unexpected token, found '('
(6317,9): run-time error CSS1030: Expected identifier, found '|'
(6317,9): run-time error CSS1031: Expected selector, found '|'
(6317,9): run-time error CSS1025: Expected comma or open brace, found '|'
(6319,8): run-time error CSS1031: Expected selector, found ';'
(6319,8): run-time error CSS1025: Expected comma or open brace, found ';'
(6320,1): run-time error CSS1019: Unexpected token, found '('
(6320,11): run-time error CSS1031: Expected selector, found '('
(6320,11): run-time error CSS1025: Expected comma or open brace, found '('
(6363,2): run-time error CSS1019: Unexpected token, found ')'
(6363,3): run-time error CSS1019: Unexpected token, found '('
(6363,9): run-time error CSS1030: Expected identifier, found '|'
(6363,9): run-time error CSS1031: Expected selector, found '|'
(6363,9): run-time error CSS1025: Expected comma or open brace, found '|'
(6365,8): run-time error CSS1031: Expected selector, found ';'
(6365,8): run-time error CSS1025: Expected comma or open brace, found ';'
(6366,1): run-time error CSS1019: Unexpected token, found '('
(6366,11): run-time error CSS1031: Expected selector, found '('
(6366,11): run-time error CSS1025: Expected comma or open brace, found '('
(6388,2): run-time error CSS1019: Unexpected token, found ')'
(6388,3): run-time error CSS1019: Unexpected token, found '('
(6388,9): run-time error CSS1030: Expected identifier, found '|'
(6388,9): run-time error CSS1031: Expected selector, found '|'
(6388,9): run-time error CSS1025: Expected comma or open brace, found '|'
(6390,1): run-time error CSS1019: Unexpected token, found '('
(6390,11): run-time error CSS1031: Expected selector, found '('
(6390,11): run-time error CSS1025: Expected comma or open brace, found '('
(6423,2): run-time error CSS1019: Unexpected token, found ')'
(6423,3): run-time error CSS1019: Unexpected token, found '('
(6423,4): run-time error CSS1019: Unexpected token, found ')'
(6425,1): run-time error CSS1019: Unexpected token, found '('
(6425,11): run-time error CSS1031: Expected selector, found '('
(6425,11): run-time error CSS1025: Expected comma or open brace, found '('
(6444,2): run-time error CSS1019: Unexpected token, found ')'
(6444,3): run-time error CSS1019: Unexpected token, found '('
(6444,4): run-time error CSS1019: Unexpected token, found ')'
(6446,8): run-time error CSS1031: Expected selector, found ';'
(6446,8): run-time error CSS1025: Expected comma or open brace, found ';'
(6447,1): run-time error CSS1019: Unexpected token, found '('
(6447,11): run-time error CSS1031: Expected selector, found '('
(6447,11): run-time error CSS1025: Expected comma or open brace, found '('
(6490,2): run-time error CSS1019: Unexpected token, found ')'
(6490,3): run-time error CSS1019: Unexpected token, found '('
(6490,9): run-time error CSS1030: Expected identifier, found '|'
(6490,9): run-time error CSS1031: Expected selector, found '|'
(6490,9): run-time error CSS1025: Expected comma or open brace, found '|'
(6492,8): run-time error CSS1031: Expected selector, found ';'
(6492,8): run-time error CSS1025: Expected comma or open brace, found ';'
(6493,1): run-time error CSS1019: Unexpected token, found '('
(6493,11): run-time error CSS1031: Expected selector, found '('
(6493,11): run-time error CSS1025: Expected comma or open brace, found '('
(6586,2): run-time error CSS1019: Unexpected token, found ')'
(6586,3): run-time error CSS1019: Unexpected token, found '('
(6586,9): run-time error CSS1030: Expected identifier, found '|'
(6586,9): run-time error CSS1031: Expected selector, found '|'
(6586,9): run-time error CSS1025: Expected comma or open brace, found '|'
(6588,8): run-time error CSS1031: Expected selector, found ';'
(6588,8): run-time error CSS1025: Expected comma or open brace, found ';'
(6589,1): run-time error CSS1019: Unexpected token, found '('
(6589,11): run-time error CSS1031: Expected selector, found '('
(6589,11): run-time error CSS1025: Expected comma or open brace, found '('
(6686,2): run-time error CSS1019: Unexpected token, found ')'
(6686,3): run-time error CSS1019: Unexpected token, found '('
(6686,9): run-time error CSS1030: Expected identifier, found '|'
(6686,9): run-time error CSS1031: Expected selector, found '|'
(6686,9): run-time error CSS1025: Expected comma or open brace, found '|'
(6688,8): run-time error CSS1031: Expected selector, found ';'
(6688,8): run-time error CSS1025: Expected comma or open brace, found ';'
(6689,1): run-time error CSS1019: Unexpected token, found '('
(6689,11): run-time error CSS1031: Expected selector, found '('
(6689,11): run-time error CSS1025: Expected comma or open brace, found '('
(6723,2): run-time error CSS1019: Unexpected token, found ')'
(6723,3): run-time error CSS1019: Unexpected token, found '('
(6723,9): run-time error CSS1030: Expected identifier, found '|'
(6723,9): run-time error CSS1031: Expected selector, found '|'
(6723,9): run-time error CSS1025: Expected comma or open brace, found '|'
(6725,8): run-time error CSS1031: Expected selector, found ';'
(6725,8): run-time error CSS1025: Expected comma or open brace, found ';'
(6726,1): run-time error CSS1019: Unexpected token, found '('
(6726,11): run-time error CSS1031: Expected selector, found '('
(6726,11): run-time error CSS1025: Expected comma or open brace, found '('
(6882,2): run-time error CSS1019: Unexpected token, found ')'
(6882,3): run-time error CSS1019: Unexpected token, found '('
(6882,9): run-time error CSS1030: Expected identifier, found '|'
(6882,9): run-time error CSS1031: Expected selector, found '|'
(6882,9): run-time error CSS1025: Expected comma or open brace, found '|'
(6884,8): run-time error CSS1031: Expected selector, found ';'
(6884,8): run-time error CSS1025: Expected comma or open brace, found ';'
(6885,1): run-time error CSS1019: Unexpected token, found '('
(6885,11): run-time error CSS1031: Expected selector, found '('
(6885,11): run-time error CSS1025: Expected comma or open brace, found '('
(6975,2): run-time error CSS1019: Unexpected token, found ')'
(6975,3): run-time error CSS1019: Unexpected token, found '('
(6975,9): run-time error CSS1030: Expected identifier, found '|'
(6975,9): run-time error CSS1031: Expected selector, found '|'
(6975,9): run-time error CSS1025: Expected comma or open brace, found '|'
(6977,8): run-time error CSS1031: Expected selector, found ';'
(6977,8): run-time error CSS1025: Expected comma or open brace, found ';'
(6978,1): run-time error CSS1019: Unexpected token, found '('
(6978,11): run-time error CSS1031: Expected selector, found '('
(6978,11): run-time error CSS1025: Expected comma or open brace, found '('
(6996,2): run-time error CSS1019: Unexpected token, found ')'
(6996,3): run-time error CSS1019: Unexpected token, found '('
(6996,9): run-time error CSS1030: Expected identifier, found '|'
(6996,9): run-time error CSS1031: Expected selector, found '|'
(6996,9): run-time error CSS1025: Expected comma or open brace, found '|'
(6998,8): run-time error CSS1031: Expected selector, found ';'
(6998,8): run-time error CSS1025: Expected comma or open brace, found ';'
(6999,1): run-time error CSS1019: Unexpected token, found '('
(6999,11): run-time error CSS1031: Expected selector, found '('
(6999,11): run-time error CSS1025: Expected comma or open brace, found '('
(7009,2): run-time error CSS1019: Unexpected token, found ')'
(7009,3): run-time error CSS1019: Unexpected token, found '('
(7009,9): run-time error CSS1030: Expected identifier, found '|'
(7009,9): run-time error CSS1031: Expected selector, found '|'
(7009,9): run-time error CSS1025: Expected comma or open brace, found '|'
(7011,8): run-time error CSS1031: Expected selector, found ';'
(7011,8): run-time error CSS1025: Expected comma or open brace, found ';'
(7012,1): run-time error CSS1019: Unexpected token, found '('
(7012,11): run-time error CSS1031: Expected selector, found '('
(7012,11): run-time error CSS1025: Expected comma or open brace, found '('
(7193,2): run-time error CSS1019: Unexpected token, found ')'
(7193,3): run-time error CSS1019: Unexpected token, found '('
(7193,9): run-time error CSS1030: Expected identifier, found '|'
(7193,9): run-time error CSS1031: Expected selector, found '|'
(7193,9): run-time error CSS1025: Expected comma or open brace, found '|'
(7195,1): run-time error CSS1019: Unexpected token, found '('
(7195,11): run-time error CSS1031: Expected selector, found '('
(7195,11): run-time error CSS1025: Expected comma or open brace, found '('
(7216,2): run-time error CSS1019: Unexpected token, found ')'
(7216,3): run-time error CSS1019: Unexpected token, found '('
(7216,4): run-time error CSS1019: Unexpected token, found ')'
(7218,8): run-time error CSS1031: Expected selector, found ';'
(7218,8): run-time error CSS1025: Expected comma or open brace, found ';'
(7219,1): run-time error CSS1019: Unexpected token, found '('
(7219,11): run-time error CSS1031: Expected selector, found '('
(7219,11): run-time error CSS1025: Expected comma or open brace, found '('
(7302,2): run-time error CSS1019: Unexpected token, found ')'
(7302,3): run-time error CSS1019: Unexpected token, found '('
(7302,9): run-time error CSS1030: Expected identifier, found '|'
(7302,9): run-time error CSS1031: Expected selector, found '|'
(7302,9): run-time error CSS1025: Expected comma or open brace, found '|'
(7304,8): run-time error CSS1031: Expected selector, found ';'
(7304,8): run-time error CSS1025: Expected comma or open brace, found ';'
(7305,1): run-time error CSS1019: Unexpected token, found '('
(7305,11): run-time error CSS1031: Expected selector, found '('
(7305,11): run-time error CSS1025: Expected comma or open brace, found '('
(7337,2): run-time error CSS1019: Unexpected token, found ')'
(7337,3): run-time error CSS1019: Unexpected token, found '('
(7337,9): run-time error CSS1030: Expected identifier, found '|'
(7337,9): run-time error CSS1031: Expected selector, found '|'
(7337,9): run-time error CSS1025: Expected comma or open brace, found '|'
(7339,10): run-time error CSS1031: Expected selector, found ';'
(7339,10): run-time error CSS1025: Expected comma or open brace, found ';'
(7340,1): run-time error CSS1019: Unexpected token, found '('
(7340,11): run-time error CSS1031: Expected selector, found '('
(7340,11): run-time error CSS1025: Expected comma or open brace, found '('
(7356,2): run-time error CSS1019: Unexpected token, found ')'
(7356,3): run-time error CSS1019: Unexpected token, found '('
(7356,11): run-time error CSS1030: Expected identifier, found '|'
(7356,11): run-time error CSS1031: Expected selector, found '|'
(7356,11): run-time error CSS1025: Expected comma or open brace, found '|'
(7358,10): run-time error CSS1031: Expected selector, found ';'
(7358,10): run-time error CSS1025: Expected comma or open brace, found ';'
(7359,1): run-time error CSS1019: Unexpected token, found '('
(7359,11): run-time error CSS1031: Expected selector, found '('
(7359,11): run-time error CSS1025: Expected comma or open brace, found '('
(7417,2): run-time error CSS1019: Unexpected token, found ')'
(7417,3): run-time error CSS1019: Unexpected token, found '('
(7417,11): run-time error CSS1030: Expected identifier, found '|'
(7417,11): run-time error CSS1031: Expected selector, found '|'
(7417,11): run-time error CSS1025: Expected comma or open brace, found '|'
(7419,10): run-time error CSS1031: Expected selector, found ';'
(7419,10): run-time error CSS1025: Expected comma or open brace, found ';'
(7420,1): run-time error CSS1019: Unexpected token, found '('
(7420,11): run-time error CSS1031: Expected selector, found '('
(7420,11): run-time error CSS1025: Expected comma or open brace, found '('
(7462,2): run-time error CSS1019: Unexpected token, found ')'
(7462,3): run-time error CSS1019: Unexpected token, found '('
(7462,11): run-time error CSS1030: Expected identifier, found '|'
(7462,11): run-time error CSS1031: Expected selector, found '|'
(7462,11): run-time error CSS1025: Expected comma or open brace, found '|'
(7464,10): run-time error CSS1031: Expected selector, found ';'
(7464,10): run-time error CSS1025: Expected comma or open brace, found ';'
(7465,1): run-time error CSS1019: Unexpected token, found '('
(7465,11): run-time error CSS1031: Expected selector, found '('
(7465,11): run-time error CSS1025: Expected comma or open brace, found '('
(7514,2): run-time error CSS1019: Unexpected token, found ')'
(7514,3): run-time error CSS1019: Unexpected token, found '('
(7514,11): run-time error CSS1030: Expected identifier, found '|'
(7514,11): run-time error CSS1031: Expected selector, found '|'
(7514,11): run-time error CSS1025: Expected comma or open brace, found '|'
(7516,10): run-time error CSS1031: Expected selector, found ';'
(7516,10): run-time error CSS1025: Expected comma or open brace, found ';'
(7517,1): run-time error CSS1019: Unexpected token, found '('
(7517,11): run-time error CSS1031: Expected selector, found '('
(7517,11): run-time error CSS1025: Expected comma or open brace, found '('
(7542,2): run-time error CSS1019: Unexpected token, found ')'
(7542,3): run-time error CSS1019: Unexpected token, found '('
(7542,11): run-time error CSS1030: Expected identifier, found '|'
(7542,11): run-time error CSS1031: Expected selector, found '|'
(7542,11): run-time error CSS1025: Expected comma or open brace, found '|'
(7544,10): run-time error CSS1031: Expected selector, found ';'
(7544,10): run-time error CSS1025: Expected comma or open brace, found ';'
(7545,1): run-time error CSS1019: Unexpected token, found '('
(7545,11): run-time error CSS1031: Expected selector, found '('
(7545,11): run-time error CSS1025: Expected comma or open brace, found '('
(7565,2): run-time error CSS1019: Unexpected token, found ')'
(7565,3): run-time error CSS1019: Unexpected token, found '('
(7565,11): run-time error CSS1030: Expected identifier, found '|'
(7565,11): run-time error CSS1031: Expected selector, found '|'
(7565,11): run-time error CSS1025: Expected comma or open brace, found '|'
(7567,10): run-time error CSS1031: Expected selector, found ';'
(7567,10): run-time error CSS1025: Expected comma or open brace, found ';'
(7568,1): run-time error CSS1019: Unexpected token, found '('
(7568,11): run-time error CSS1031: Expected selector, found '('
(7568,11): run-time error CSS1025: Expected comma or open brace, found '('
(7610,2): run-time error CSS1019: Unexpected token, found ')'
(7610,3): run-time error CSS1019: Unexpected token, found '('
(7610,11): run-time error CSS1030: Expected identifier, found '|'
(7610,11): run-time error CSS1031: Expected selector, found '|'
(7610,11): run-time error CSS1025: Expected comma or open brace, found '|'
(7612,10): run-time error CSS1031: Expected selector, found ';'
(7612,10): run-time error CSS1025: Expected comma or open brace, found ';'
(7613,1): run-time error CSS1019: Unexpected token, found '('
(7613,11): run-time error CSS1031: Expected selector, found '('
(7613,11): run-time error CSS1025: Expected comma or open brace, found '('
(7824,2): run-time error CSS1019: Unexpected token, found ')'
(7824,3): run-time error CSS1019: Unexpected token, found '('
(7824,11): run-time error CSS1030: Expected identifier, found '|'
(7824,11): run-time error CSS1031: Expected selector, found '|'
(7824,11): run-time error CSS1025: Expected comma or open brace, found '|'
(7826,10): run-time error CSS1031: Expected selector, found ';'
(7826,10): run-time error CSS1025: Expected comma or open brace, found ';'
(7827,1): run-time error CSS1019: Unexpected token, found '('
(7827,11): run-time error CSS1031: Expected selector, found '('
(7827,11): run-time error CSS1025: Expected comma or open brace, found '('
(7938,2): run-time error CSS1019: Unexpected token, found ')'
(7938,3): run-time error CSS1019: Unexpected token, found '('
(7938,11): run-time error CSS1030: Expected identifier, found '|'
(7938,11): run-time error CSS1031: Expected selector, found '|'
(7938,11): run-time error CSS1025: Expected comma or open brace, found '|'
(7940,10): run-time error CSS1031: Expected selector, found ';'
(7940,10): run-time error CSS1025: Expected comma or open brace, found ';'
(7941,1): run-time error CSS1019: Unexpected token, found '('
(7941,11): run-time error CSS1031: Expected selector, found '('
(7941,11): run-time error CSS1025: Expected comma or open brace, found '('
(8036,2): run-time error CSS1019: Unexpected token, found ')'
(8036,3): run-time error CSS1019: Unexpected token, found '('
(8036,11): run-time error CSS1030: Expected identifier, found '|'
(8036,11): run-time error CSS1031: Expected selector, found '|'
(8036,11): run-time error CSS1025: Expected comma or open brace, found '|'
(8038,10): run-time error CSS1031: Expected selector, found ';'
(8038,10): run-time error CSS1025: Expected comma or open brace, found ';'
(8039,1): run-time error CSS1019: Unexpected token, found '('
(8039,11): run-time error CSS1031: Expected selector, found '('
(8039,11): run-time error CSS1025: Expected comma or open brace, found '('
(8234,2): run-time error CSS1019: Unexpected token, found ')'
(8234,3): run-time error CSS1019: Unexpected token, found '('
(8234,11): run-time error CSS1030: Expected identifier, found '|'
(8234,11): run-time error CSS1031: Expected selector, found '|'
(8234,11): run-time error CSS1025: Expected comma or open brace, found '|'
(8236,10): run-time error CSS1031: Expected selector, found ';'
(8236,10): run-time error CSS1025: Expected comma or open brace, found ';'
(8237,1): run-time error CSS1019: Unexpected token, found '('
(8237,11): run-time error CSS1031: Expected selector, found '('
(8237,11): run-time error CSS1025: Expected comma or open brace, found '('
(8261,2): run-time error CSS1019: Unexpected token, found ')'
(8261,3): run-time error CSS1019: Unexpected token, found '('
(8261,11): run-time error CSS1030: Expected identifier, found '|'
(8261,11): run-time error CSS1031: Expected selector, found '|'
(8261,11): run-time error CSS1025: Expected comma or open brace, found '|'
(8263,13): run-time error CSS1031: Expected selector, found ';'
(8263,13): run-time error CSS1025: Expected comma or open brace, found ';'
(8264,1): run-time error CSS1019: Unexpected token, found '('
(8264,11): run-time error CSS1031: Expected selector, found '('
(8264,11): run-time error CSS1025: Expected comma or open brace, found '('
(8304,2): run-time error CSS1019: Unexpected token, found ')'
(8304,3): run-time error CSS1019: Unexpected token, found '('
(8304,14): run-time error CSS1030: Expected identifier, found '|'
(8304,14): run-time error CSS1031: Expected selector, found '|'
(8304,14): run-time error CSS1025: Expected comma or open brace, found '|'
(8306,13): run-time error CSS1031: Expected selector, found ';'
(8306,13): run-time error CSS1025: Expected comma or open brace, found ';'
(8307,1): run-time error CSS1019: Unexpected token, found '('
(8307,11): run-time error CSS1031: Expected selector, found '('
(8307,11): run-time error CSS1025: Expected comma or open brace, found '('
(8337,2): run-time error CSS1019: Unexpected token, found ')'
(8337,3): run-time error CSS1019: Unexpected token, found '('
(8337,14): run-time error CSS1030: Expected identifier, found '|'
(8337,14): run-time error CSS1031: Expected selector, found '|'
(8337,14): run-time error CSS1025: Expected comma or open brace, found '|'
(8339,13): run-time error CSS1031: Expected selector, found ';'
(8339,13): run-time error CSS1025: Expected comma or open brace, found ';'
(8340,1): run-time error CSS1019: Unexpected token, found '('
(8340,11): run-time error CSS1031: Expected selector, found '('
(8340,11): run-time error CSS1025: Expected comma or open brace, found '('
(8439,2): run-time error CSS1019: Unexpected token, found ')'
(8439,3): run-time error CSS1019: Unexpected token, found '('
(8439,14): run-time error CSS1030: Expected identifier, found '|'
(8439,14): run-time error CSS1031: Expected selector, found '|'
(8439,14): run-time error CSS1025: Expected comma or open brace, found '|'
(8441,13): run-time error CSS1031: Expected selector, found ';'
(8441,13): run-time error CSS1025: Expected comma or open brace, found ';'
(8442,1): run-time error CSS1019: Unexpected token, found '('
(8442,11): run-time error CSS1031: Expected selector, found '('
(8442,11): run-time error CSS1025: Expected comma or open brace, found '('
(8542,2): run-time error CSS1019: Unexpected token, found ')'
(8542,3): run-time error CSS1019: Unexpected token, found '('
(8542,14): run-time error CSS1030: Expected identifier, found '|'
(8542,14): run-time error CSS1031: Expected selector, found '|'
(8542,14): run-time error CSS1025: Expected comma or open brace, found '|'
(8544,13): run-time error CSS1031: Expected selector, found ';'
(8544,13): run-time error CSS1025: Expected comma or open brace, found ';'
(8545,1): run-time error CSS1019: Unexpected token, found '('
(8545,11): run-time error CSS1031: Expected selector, found '('
(8545,11): run-time error CSS1025: Expected comma or open brace, found '('
(8574,2): run-time error CSS1019: Unexpected token, found ')'
(8574,3): run-time error CSS1019: Unexpected token, found '('
(8574,14): run-time error CSS1030: Expected identifier, found '|'
(8574,14): run-time error CSS1031: Expected selector, found '|'
(8574,14): run-time error CSS1025: Expected comma or open brace, found '|'
(8576,13): run-time error CSS1031: Expected selector, found ';'
(8576,13): run-time error CSS1025: Expected comma or open brace, found ';'
(8577,1): run-time error CSS1019: Unexpected token, found '('
(8577,11): run-time error CSS1031: Expected selector, found '('
(8577,11): run-time error CSS1025: Expected comma or open brace, found '('
(8601,2): run-time error CSS1019: Unexpected token, found ')'
(8601,3): run-time error CSS1019: Unexpected token, found '('
(8601,14): run-time error CSS1030: Expected identifier, found '|'
(8601,14): run-time error CSS1031: Expected selector, found '|'
(8601,14): run-time error CSS1025: Expected comma or open brace, found '|'
(8603,13): run-time error CSS1031: Expected selector, found ';'
(8603,13): run-time error CSS1025: Expected comma or open brace, found ';'
(8604,1): run-time error CSS1019: Unexpected token, found '('
(8604,11): run-time error CSS1031: Expected selector, found '('
(8604,11): run-time error CSS1025: Expected comma or open brace, found '('
(8632,2): run-time error CSS1019: Unexpected token, found ')'
(8632,3): run-time error CSS1019: Unexpected token, found '('
(8632,14): run-time error CSS1030: Expected identifier, found '|'
(8632,14): run-time error CSS1031: Expected selector, found '|'
(8632,14): run-time error CSS1025: Expected comma or open brace, found '|'
(8634,10): run-time error CSS1031: Expected selector, found ';'
(8634,10): run-time error CSS1025: Expected comma or open brace, found ';'
(8635,1): run-time error CSS1019: Unexpected token, found '('
(8635,11): run-time error CSS1031: Expected selector, found '('
(8635,11): run-time error CSS1025: Expected comma or open brace, found '('
(8802,2): run-time error CSS1019: Unexpected token, found ')'
(8802,3): run-time error CSS1019: Unexpected token, found '('
(8802,11): run-time error CSS1030: Expected identifier, found '|'
(8802,11): run-time error CSS1031: Expected selector, found '|'
(8802,11): run-time error CSS1025: Expected comma or open brace, found '|'
(8804,11): run-time error CSS1031: Expected selector, found ';'
(8804,11): run-time error CSS1025: Expected comma or open brace, found ';'
(8805,1): run-time error CSS1019: Unexpected token, found '('
(8805,11): run-time error CSS1031: Expected selector, found '('
(8805,11): run-time error CSS1025: Expected comma or open brace, found '('
(8951,2): run-time error CSS1019: Unexpected token, found ')'
(8951,3): run-time error CSS1019: Unexpected token, found '('
(8951,12): run-time error CSS1030: Expected identifier, found '|'
(8951,12): run-time error CSS1031: Expected selector, found '|'
(8951,12): run-time error CSS1025: Expected comma or open brace, found '|'
(8953,10): run-time error CSS1031: Expected selector, found ';'
(8953,10): run-time error CSS1025: Expected comma or open brace, found ';'
(8954,1): run-time error CSS1019: Unexpected token, found '('
(8954,11): run-time error CSS1031: Expected selector, found '('
(8954,11): run-time error CSS1025: Expected comma or open brace, found '('
(11214,2): run-time error CSS1019: Unexpected token, found ')'
(11214,3): run-time error CSS1019: Unexpected token, found '('
(11214,11): run-time error CSS1030: Expected identifier, found '|'
(11214,11): run-time error CSS1031: Expected selector, found '|'
(11214,11): run-time error CSS1025: Expected comma or open brace, found '|'
(11216,11): run-time error CSS1031: Expected selector, found ';'
(11216,11): run-time error CSS1025: Expected comma or open brace, found ';'
(11217,1): run-time error CSS1019: Unexpected token, found '('
(11217,11): run-time error CSS1031: Expected selector, found '('
(11217,11): run-time error CSS1025: Expected comma or open brace, found '('
(11401,2): run-time error CSS1019: Unexpected token, found ')'
(11401,3): run-time error CSS1019: Unexpected token, found '('
(11401,12): run-time error CSS1030: Expected identifier, found '|'
(11401,12): run-time error CSS1031: Expected selector, found '|'
(11401,12): run-time error CSS1025: Expected comma or open brace, found '|'
(11403,10): run-time error CSS1031: Expected selector, found ';'
(11403,10): run-time error CSS1025: Expected comma or open brace, found ';'
(11404,1): run-time error CSS1019: Unexpected token, found '('
(11404,11): run-time error CSS1031: Expected selector, found '('
(11404,11): run-time error CSS1025: Expected comma or open brace, found '('
(11863,2): run-time error CSS1019: Unexpected token, found ')'
(11863,3): run-time error CSS1019: Unexpected token, found '('
(11863,11): run-time error CSS1030: Expected identifier, found '|'
(11863,11): run-time error CSS1031: Expected selector, found '|'
(11863,11): run-time error CSS1025: Expected comma or open brace, found '|'
(11865,11): run-time error CSS1031: Expected selector, found ';'
(11865,11): run-time error CSS1025: Expected comma or open brace, found ';'
(11866,1): run-time error CSS1019: Unexpected token, found '('
(11866,11): run-time error CSS1031: Expected selector, found '('
(11866,11): run-time error CSS1025: Expected comma or open brace, found '('
(12012,2): run-time error CSS1019: Unexpected token, found ')'
(12012,3): run-time error CSS1019: Unexpected token, found '('
(12012,12): run-time error CSS1030: Expected identifier, found '|'
(12012,12): run-time error CSS1031: Expected selector, found '|'
(12012,12): run-time error CSS1025: Expected comma or open brace, found '|'
(12014,11): run-time error CSS1031: Expected selector, found ';'
(12014,11): run-time error CSS1025: Expected comma or open brace, found ';'
(12015,1): run-time error CSS1019: Unexpected token, found '('
(12015,11): run-time error CSS1031: Expected selector, found '('
(12015,11): run-time error CSS1025: Expected comma or open brace, found '('
(12061,2): run-time error CSS1019: Unexpected token, found ')'
(12061,3): run-time error CSS1019: Unexpected token, found '('
(12061,12): run-time error CSS1030: Expected identifier, found '|'
(12061,12): run-time error CSS1031: Expected selector, found '|'
(12061,12): run-time error CSS1025: Expected comma or open brace, found '|'
(12063,10): run-time error CSS1031: Expected selector, found ';'
(12063,10): run-time error CSS1025: Expected comma or open brace, found ';'
(12064,1): run-time error CSS1019: Unexpected token, found '('
(12064,11): run-time error CSS1031: Expected selector, found '('
(12064,11): run-time error CSS1025: Expected comma or open brace, found '('
(12317,2): run-time error CSS1019: Unexpected token, found ')'
(12317,3): run-time error CSS1019: Unexpected token, found '('
(12317,11): run-time error CSS1030: Expected identifier, found '|'
(12317,11): run-time error CSS1031: Expected selector, found '|'
(12317,11): run-time error CSS1025: Expected comma or open brace, found '|'
(12319,10): run-time error CSS1031: Expected selector, found ';'
(12319,10): run-time error CSS1025: Expected comma or open brace, found ';'
(12320,1): run-time error CSS1019: Unexpected token, found '('
(12320,11): run-time error CSS1031: Expected selector, found '('
(12320,11): run-time error CSS1025: Expected comma or open brace, found '('
(12400,2): run-time error CSS1019: Unexpected token, found ')'
(12400,3): run-time error CSS1019: Unexpected token, found '('
(12400,11): run-time error CSS1030: Expected identifier, found '|'
(12400,11): run-time error CSS1031: Expected selector, found '|'
(12400,11): run-time error CSS1025: Expected comma or open brace, found '|'
(12402,14): run-time error CSS1031: Expected selector, found ';'
(12402,14): run-time error CSS1025: Expected comma or open brace, found ';'
(12403,1): run-time error CSS1019: Unexpected token, found '('
(12403,11): run-time error CSS1031: Expected selector, found '('
(12403,11): run-time error CSS1025: Expected comma or open brace, found '('
(12443,2): run-time error CSS1019: Unexpected token, found ')'
(12443,3): run-time error CSS1019: Unexpected token, found '('
(12443,15): run-time error CSS1030: Expected identifier, found '|'
(12443,15): run-time error CSS1031: Expected selector, found '|'
(12443,15): run-time error CSS1025: Expected comma or open brace, found '|'
(12445,10): run-time error CSS1031: Expected selector, found ';'
(12445,10): run-time error CSS1025: Expected comma or open brace, found ';'
(12446,1): run-time error CSS1019: Unexpected token, found '('
(12446,11): run-time error CSS1031: Expected selector, found '('
(12446,11): run-time error CSS1025: Expected comma or open brace, found '('
(12613,2): run-time error CSS1019: Unexpected token, found ')'
(12613,3): run-time error CSS1019: Unexpected token, found '('
(12613,11): run-time error CSS1030: Expected identifier, found '|'
(12613,11): run-time error CSS1031: Expected selector, found '|'
(12613,11): run-time error CSS1025: Expected comma or open brace, found '|'
(12615,10): run-time error CSS1031: Expected selector, found ';'
(12615,10): run-time error CSS1025: Expected comma or open brace, found ';'
(12616,1): run-time error CSS1019: Unexpected token, found '('
(12616,11): run-time error CSS1031: Expected selector, found '('
(12616,11): run-time error CSS1025: Expected comma or open brace, found '('
(12737,2): run-time error CSS1019: Unexpected token, found ')'
(12737,3): run-time error CSS1019: Unexpected token, found '('
(12737,11): run-time error CSS1030: Expected identifier, found '|'
(12737,11): run-time error CSS1031: Expected selector, found '|'
(12737,11): run-time error CSS1025: Expected comma or open brace, found '|'
(12739,10): run-time error CSS1031: Expected selector, found ';'
(12739,10): run-time error CSS1025: Expected comma or open brace, found ';'
(12740,1): run-time error CSS1019: Unexpected token, found '('
(12740,11): run-time error CSS1031: Expected selector, found '('
(12740,11): run-time error CSS1025: Expected comma or open brace, found '('
(12856,2): run-time error CSS1019: Unexpected token, found ')'
(12856,3): run-time error CSS1019: Unexpected token, found '('
(12856,11): run-time error CSS1030: Expected identifier, found '|'
(12856,11): run-time error CSS1031: Expected selector, found '|'
(12856,11): run-time error CSS1025: Expected comma or open brace, found '|'
(12858,12): run-time error CSS1031: Expected selector, found ';'
(12858,12): run-time error CSS1025: Expected comma or open brace, found ';'
(12859,1): run-time error CSS1019: Unexpected token, found '('
(12859,11): run-time error CSS1031: Expected selector, found '('
(12859,11): run-time error CSS1025: Expected comma or open brace, found '('
(12884,2): run-time error CSS1019: Unexpected token, found ')'
(12884,3): run-time error CSS1019: Unexpected token, found '('
(12884,13): run-time error CSS1030: Expected identifier, found '|'
(12884,13): run-time error CSS1031: Expected selector, found '|'
(12884,13): run-time error CSS1025: Expected comma or open brace, found '|'
(12886,14): run-time error CSS1031: Expected selector, found ';'
(12886,14): run-time error CSS1025: Expected comma or open brace, found ';'
(12887,1): run-time error CSS1019: Unexpected token, found '('
(12887,11): run-time error CSS1031: Expected selector, found '('
(12887,11): run-time error CSS1025: Expected comma or open brace, found '('
(13085,2): run-time error CSS1019: Unexpected token, found ')'
(13085,3): run-time error CSS1019: Unexpected token, found '('
(13085,15): run-time error CSS1030: Expected identifier, found '|'
(13085,15): run-time error CSS1031: Expected selector, found '|'
(13085,15): run-time error CSS1025: Expected comma or open brace, found '|'
(13087,14): run-time error CSS1031: Expected selector, found ';'
(13087,14): run-time error CSS1025: Expected comma or open brace, found ';'
(13088,1): run-time error CSS1019: Unexpected token, found '('
(13088,11): run-time error CSS1031: Expected selector, found '('
(13088,11): run-time error CSS1025: Expected comma or open brace, found '('
(13389,2): run-time error CSS1019: Unexpected token, found ')'
(13389,3): run-time error CSS1019: Unexpected token, found '('
(13389,15): run-time error CSS1030: Expected identifier, found '|'
(13389,15): run-time error CSS1031: Expected selector, found '|'
(13389,15): run-time error CSS1025: Expected comma or open brace, found '|'
(13391,14): run-time error CSS1031: Expected selector, found ';'
(13391,14): run-time error CSS1025: Expected comma or open brace, found ';'
(13392,1): run-time error CSS1019: Unexpected token, found '('
(13392,11): run-time error CSS1031: Expected selector, found '('
(13392,11): run-time error CSS1025: Expected comma or open brace, found '('
(13590,2): run-time error CSS1019: Unexpected token, found ')'
(13590,3): run-time error CSS1019: Unexpected token, found '('
(13590,15): run-time error CSS1030: Expected identifier, found '|'
(13590,15): run-time error CSS1031: Expected selector, found '|'
(13590,15): run-time error CSS1025: Expected comma or open brace, found '|'
(13592,14): run-time error CSS1031: Expected selector, found ';'
(13592,14): run-time error CSS1025: Expected comma or open brace, found ';'
(13593,1): run-time error CSS1019: Unexpected token, found '('
(13593,11): run-time error CSS1031: Expected selector, found '('
(13593,11): run-time error CSS1025: Expected comma or open brace, found '('
(13791,2): run-time error CSS1019: Unexpected token, found ')'
(13791,3): run-time error CSS1019: Unexpected token, found '('
(13791,15): run-time error CSS1030: Expected identifier, found '|'
(13791,15): run-time error CSS1031: Expected selector, found '|'
(13791,15): run-time error CSS1025: Expected comma or open brace, found '|'
(13793,14): run-time error CSS1031: Expected selector, found ';'
(13793,14): run-time error CSS1025: Expected comma or open brace, found ';'
(13794,1): run-time error CSS1019: Unexpected token, found '('
(13794,11): run-time error CSS1031: Expected selector, found '('
(13794,11): run-time error CSS1025: Expected comma or open brace, found '('
(13885,2): run-time error CSS1019: Unexpected token, found ')'
(13885,3): run-time error CSS1019: Unexpected token, found '('
(13885,15): run-time error CSS1030: Expected identifier, found '|'
(13885,15): run-time error CSS1031: Expected selector, found '|'
(13885,15): run-time error CSS1025: Expected comma or open brace, found '|'
(13887,14): run-time error CSS1031: Expected selector, found ';'
(13887,14): run-time error CSS1025: Expected comma or open brace, found ';'
(13888,1): run-time error CSS1019: Unexpected token, found '('
(13888,11): run-time error CSS1031: Expected selector, found '('
(13888,11): run-time error CSS1025: Expected comma or open brace, found '('
(14086,2): run-time error CSS1019: Unexpected token, found ')'
(14086,3): run-time error CSS1019: Unexpected token, found '('
(14086,15): run-time error CSS1030: Expected identifier, found '|'
(14086,15): run-time error CSS1031: Expected selector, found '|'
(14086,15): run-time error CSS1025: Expected comma or open brace, found '|'
(14088,8): run-time error CSS1031: Expected selector, found ';'
(14088,8): run-time error CSS1025: Expected comma or open brace, found ';'
(14089,1): run-time error CSS1019: Unexpected token, found '('
(14089,11): run-time error CSS1031: Expected selector, found '('
(14089,11): run-time error CSS1025: Expected comma or open brace, found '('
(14107,2): run-time error CSS1019: Unexpected token, found ')'
(14107,3): run-time error CSS1019: Unexpected token, found '('
(14107,9): run-time error CSS1030: Expected identifier, found '|'
(14107,9): run-time error CSS1031: Expected selector, found '|'
(14107,9): run-time error CSS1025: Expected comma or open brace, found '|'
(14109,8): run-time error CSS1031: Expected selector, found ';'
(14109,8): run-time error CSS1025: Expected comma or open brace, found ';'
(14110,1): run-time error CSS1019: Unexpected token, found '('
(14110,11): run-time error CSS1031: Expected selector, found '('
(14110,11): run-time error CSS1025: Expected comma or open brace, found '('
(14131,2): run-time error CSS1019: Unexpected token, found ')'
(14131,3): run-time error CSS1019: Unexpected token, found '('
(14131,9): run-time error CSS1030: Expected identifier, found '|'
(14131,9): run-time error CSS1031: Expected selector, found '|'
(14131,9): run-time error CSS1025: Expected comma or open brace, found '|'
(14133,13): run-time error CSS1031: Expected selector, found ';'
(14133,13): run-time error CSS1025: Expected comma or open brace, found ';'
(14134,1): run-time error CSS1019: Unexpected token, found '('
(14134,11): run-time error CSS1031: Expected selector, found '('
(14134,11): run-time error CSS1025: Expected comma or open brace, found '('
(14316,2): run-time error CSS1019: Unexpected token, found ')'
(14316,3): run-time error CSS1019: Unexpected token, found '('
(14316,14): run-time error CSS1030: Expected identifier, found '|'
(14316,14): run-time error CSS1031: Expected selector, found '|'
(14316,14): run-time error CSS1025: Expected comma or open brace, found '|'
(14318,13): run-time error CSS1031: Expected selector, found ';'
(14318,13): run-time error CSS1025: Expected comma or open brace, found ';'
(14319,1): run-time error CSS1019: Unexpected token, found '('
(14319,11): run-time error CSS1031: Expected selector, found '('
(14319,11): run-time error CSS1025: Expected comma or open brace, found '('
(14444,2): run-time error CSS1019: Unexpected token, found ')'
(14444,3): run-time error CSS1019: Unexpected token, found '('
(14444,14): run-time error CSS1030: Expected identifier, found '|'
(14444,14): run-time error CSS1031: Expected selector, found '|'
(14444,14): run-time error CSS1025: Expected comma or open brace, found '|'
(14446,13): run-time error CSS1031: Expected selector, found ';'
(14446,13): run-time error CSS1025: Expected comma or open brace, found ';'
(14447,1): run-time error CSS1019: Unexpected token, found '('
(14447,11): run-time error CSS1031: Expected selector, found '('
(14447,11): run-time error CSS1025: Expected comma or open brace, found '('
(14476,2): run-time error CSS1019: Unexpected token, found ')'
(14476,3): run-time error CSS1019: Unexpected token, found '('
(14476,14): run-time error CSS1030: Expected identifier, found '|'
(14476,14): run-time error CSS1031: Expected selector, found '|'
(14476,14): run-time error CSS1025: Expected comma or open brace, found '|'
(14478,8): run-time error CSS1031: Expected selector, found ';'
(14478,8): run-time error CSS1025: Expected comma or open brace, found ';'
(14479,1): run-time error CSS1019: Unexpected token, found '('
(14479,11): run-time error CSS1031: Expected selector, found '('
(14479,11): run-time error CSS1025: Expected comma or open brace, found '('
(14543,2): run-time error CSS1019: Unexpected token, found ')'
(14543,3): run-time error CSS1019: Unexpected token, found '('
(14543,9): run-time error CSS1030: Expected identifier, found '|'
(14543,9): run-time error CSS1031: Expected selector, found '|'
(14543,9): run-time error CSS1025: Expected comma or open brace, found '|'
(14545,8): run-time error CSS1031: Expected selector, found ';'
(14545,8): run-time error CSS1025: Expected comma or open brace, found ';'
(14546,1): run-time error CSS1019: Unexpected token, found '('
(14546,11): run-time error CSS1031: Expected selector, found '('
(14546,11): run-time error CSS1025: Expected comma or open brace, found '('
(14667,2): run-time error CSS1019: Unexpected token, found ')'
(14667,3): run-time error CSS1019: Unexpected token, found '('
(14667,9): run-time error CSS1030: Expected identifier, found '|'
(14667,9): run-time error CSS1031: Expected selector, found '|'
(14667,9): run-time error CSS1025: Expected comma or open brace, found '|'
(14669,12): run-time error CSS1031: Expected selector, found ';'
(14669,12): run-time error CSS1025: Expected comma or open brace, found ';'
(14670,1): run-time error CSS1019: Unexpected token, found '('
(14670,11): run-time error CSS1031: Expected selector, found '('
(14670,11): run-time error CSS1025: Expected comma or open brace, found '('
(14736,2): run-time error CSS1019: Unexpected token, found ')'
(14736,3): run-time error CSS1019: Unexpected token, found '('
(14736,13): run-time error CSS1030: Expected identifier, found '|'
(14736,13): run-time error CSS1031: Expected selector, found '|'
(14736,13): run-time error CSS1025: Expected comma or open brace, found '|'
(14738,12): run-time error CSS1031: Expected selector, found ';'
(14738,12): run-time error CSS1025: Expected comma or open brace, found ';'
(14739,1): run-time error CSS1019: Unexpected token, found '('
(14739,11): run-time error CSS1031: Expected selector, found '('
(14739,11): run-time error CSS1025: Expected comma or open brace, found '('
(14805,2): run-time error CSS1019: Unexpected token, found ')'
(14805,3): run-time error CSS1019: Unexpected token, found '('
(14805,13): run-time error CSS1030: Expected identifier, found '|'
(14805,13): run-time error CSS1031: Expected selector, found '|'
(14805,13): run-time error CSS1025: Expected comma or open brace, found '|'
(14807,12): run-time error CSS1031: Expected selector, found ';'
(14807,12): run-time error CSS1025: Expected comma or open brace, found ';'
(14808,1): run-time error CSS1019: Unexpected token, found '('
(14808,11): run-time error CSS1031: Expected selector, found '('
(14808,11): run-time error CSS1025: Expected comma or open brace, found '('
(14886,2): run-time error CSS1019: Unexpected token, found ')'
(14886,3): run-time error CSS1019: Unexpected token, found '('
(14886,13): run-time error CSS1030: Expected identifier, found '|'
(14886,13): run-time error CSS1031: Expected selector, found '|'
(14886,13): run-time error CSS1025: Expected comma or open brace, found '|'
(14888,12): run-time error CSS1031: Expected selector, found ';'
(14888,12): run-time error CSS1025: Expected comma or open brace, found ';'
(14889,1): run-time error CSS1019: Unexpected token, found '('
(14889,11): run-time error CSS1031: Expected selector, found '('
(14889,11): run-time error CSS1025: Expected comma or open brace, found '('
(14975,2): run-time error CSS1019: Unexpected token, found ')'
(14975,3): run-time error CSS1019: Unexpected token, found '('
(14975,13): run-time error CSS1030: Expected identifier, found '|'
(14975,13): run-time error CSS1031: Expected selector, found '|'
(14975,13): run-time error CSS1025: Expected comma or open brace, found '|'
(14977,8): run-time error CSS1031: Expected selector, found ';'
(14977,8): run-time error CSS1025: Expected comma or open brace, found ';'
(14978,1): run-time error CSS1019: Unexpected token, found '('
(14978,11): run-time error CSS1031: Expected selector, found '('
(14978,11): run-time error CSS1025: Expected comma or open brace, found '('
(15062,2): run-time error CSS1019: Unexpected token, found ')'
(15062,3): run-time error CSS1019: Unexpected token, found '('
(15062,9): run-time error CSS1030: Expected identifier, found '|'
(15062,9): run-time error CSS1031: Expected selector, found '|'
(15062,9): run-time error CSS1025: Expected comma or open brace, found '|'
(15064,8): run-time error CSS1031: Expected selector, found ';'
(15064,8): run-time error CSS1025: Expected comma or open brace, found ';'
(15065,1): run-time error CSS1019: Unexpected token, found '('
(15065,11): run-time error CSS1031: Expected selector, found '('
(15065,11): run-time error CSS1025: Expected comma or open brace, found '('
(15090,2): run-time error CSS1019: Unexpected token, found ')'
(15090,3): run-time error CSS1019: Unexpected token, found '('
(15090,9): run-time error CSS1030: Expected identifier, found '|'
(15090,9): run-time error CSS1031: Expected selector, found '|'
(15090,9): run-time error CSS1025: Expected comma or open brace, found '|'
(15092,8): run-time error CSS1031: Expected selector, found ';'
(15092,8): run-time error CSS1025: Expected comma or open brace, found ';'
(15093,1): run-time error CSS1019: Unexpected token, found '('
(15093,11): run-time error CSS1031: Expected selector, found '('
(15093,11): run-time error CSS1025: Expected comma or open brace, found '('
(15107,2): run-time error CSS1019: Unexpected token, found ')'
(15107,3): run-time error CSS1019: Unexpected token, found '('
(15107,9): run-time error CSS1030: Expected identifier, found '|'
(15107,9): run-time error CSS1031: Expected selector, found '|'
(15107,9): run-time error CSS1025: Expected comma or open brace, found '|'
(15109,16): run-time error CSS1031: Expected selector, found ';'
(15109,16): run-time error CSS1025: Expected comma or open brace, found ';'
(15110,1): run-time error CSS1019: Unexpected token, found '('
(15110,11): run-time error CSS1031: Expected selector, found '('
(15110,11): run-time error CSS1025: Expected comma or open brace, found '('
(15476,2): run-time error CSS1019: Unexpected token, found ')'
(15476,3): run-time error CSS1019: Unexpected token, found '('
(15476,17): run-time error CSS1030: Expected identifier, found '|'
(15476,17): run-time error CSS1031: Expected selector, found '|'
(15476,17): run-time error CSS1025: Expected comma or open brace, found '|'
(15478,16): run-time error CSS1031: Expected selector, found ';'
(15478,16): run-time error CSS1025: Expected comma or open brace, found ';'
(15479,1): run-time error CSS1019: Unexpected token, found '('
(15479,11): run-time error CSS1031: Expected selector, found '('
(15479,11): run-time error CSS1025: Expected comma or open brace, found '('
(15639,2): run-time error CSS1019: Unexpected token, found ')'
(15639,3): run-time error CSS1019: Unexpected token, found '('
(15639,17): run-time error CSS1030: Expected identifier, found '|'
(15639,17): run-time error CSS1031: Expected selector, found '|'
(15639,17): run-time error CSS1025: Expected comma or open brace, found '|'
(15641,15): run-time error CSS1031: Expected selector, found '='
(15641,15): run-time error CSS1025: Expected comma or open brace, found '='
(15656,16): run-time error CSS1031: Expected selector, found ';'
(15656,16): run-time error CSS1025: Expected comma or open brace, found ';'
(15657,1): run-time error CSS1019: Unexpected token, found '('
(15657,11): run-time error CSS1031: Expected selector, found '('
(15657,11): run-time error CSS1025: Expected comma or open brace, found '('
(15734,2): run-time error CSS1019: Unexpected token, found ')'
(15734,3): run-time error CSS1019: Unexpected token, found '('
(15734,17): run-time error CSS1030: Expected identifier, found '|'
(15734,17): run-time error CSS1031: Expected selector, found '|'
(15734,17): run-time error CSS1025: Expected comma or open brace, found '|'
(15736,15): run-time error CSS1031: Expected selector, found '='
(15736,15): run-time error CSS1025: Expected comma or open brace, found '='
(15751,16): run-time error CSS1031: Expected selector, found ';'
(15751,16): run-time error CSS1025: Expected comma or open brace, found ';'
(15752,1): run-time error CSS1019: Unexpected token, found '('
(15752,11): run-time error CSS1031: Expected selector, found '('
(15752,11): run-time error CSS1025: Expected comma or open brace, found '('
(15844,2): run-time error CSS1019: Unexpected token, found ')'
(15844,3): run-time error CSS1019: Unexpected token, found '('
(15844,17): run-time error CSS1030: Expected identifier, found '|'
(15844,17): run-time error CSS1031: Expected selector, found '|'
(15844,17): run-time error CSS1025: Expected comma or open brace, found '|'
(15846,14): run-time error CSS1031: Expected selector, found ';'
(15846,14): run-time error CSS1025: Expected comma or open brace, found ';'
(15847,1): run-time error CSS1019: Unexpected token, found '('
(15847,11): run-time error CSS1031: Expected selector, found '('
(15847,11): run-time error CSS1025: Expected comma or open brace, found '('
(15980,2): run-time error CSS1019: Unexpected token, found ')'
(15980,3): run-time error CSS1019: Unexpected token, found '('
(15980,15): run-time error CSS1030: Expected identifier, found '|'
(15980,15): run-time error CSS1031: Expected selector, found '|'
(15980,15): run-time error CSS1025: Expected comma or open brace, found '|'
(15982,14): run-time error CSS1031: Expected selector, found ';'
(15982,14): run-time error CSS1025: Expected comma or open brace, found ';'
(15983,1): run-time error CSS1019: Unexpected token, found '('
(15983,11): run-time error CSS1031: Expected selector, found '('
(15983,11): run-time error CSS1025: Expected comma or open brace, found '('
(16190,2): run-time error CSS1019: Unexpected token, found ')'
(16190,3): run-time error CSS1019: Unexpected token, found '('
(16190,15): run-time error CSS1030: Expected identifier, found '|'
(16190,15): run-time error CSS1031: Expected selector, found '|'
(16190,15): run-time error CSS1025: Expected comma or open brace, found '|'
(16192,14): run-time error CSS1031: Expected selector, found ';'
(16192,14): run-time error CSS1025: Expected comma or open brace, found ';'
(16193,1): run-time error CSS1019: Unexpected token, found '('
(16193,11): run-time error CSS1031: Expected selector, found '('
(16193,11): run-time error CSS1025: Expected comma or open brace, found '('
(17384,2): run-time error CSS1019: Unexpected token, found ')'
(17384,3): run-time error CSS1019: Unexpected token, found '('
(17384,15): run-time error CSS1030: Expected identifier, found '|'
(17384,15): run-time error CSS1031: Expected selector, found '|'
(17384,15): run-time error CSS1025: Expected comma or open brace, found '|'
(17386,14): run-time error CSS1031: Expected selector, found ';'
(17386,14): run-time error CSS1025: Expected comma or open brace, found ';'
(17387,1): run-time error CSS1019: Unexpected token, found '('
(17387,11): run-time error CSS1031: Expected selector, found '('
(17387,11): run-time error CSS1025: Expected comma or open brace, found '('
(17432,2): run-time error CSS1019: Unexpected token, found ')'
(17432,3): run-time error CSS1019: Unexpected token, found '('
(17432,15): run-time error CSS1030: Expected identifier, found '|'
(17432,15): run-time error CSS1031: Expected selector, found '|'
(17432,15): run-time error CSS1025: Expected comma or open brace, found '|'
(17434,14): run-time error CSS1031: Expected selector, found ';'
(17434,14): run-time error CSS1025: Expected comma or open brace, found ';'
(17435,1): run-time error CSS1019: Unexpected token, found '('
(17435,11): run-time error CSS1031: Expected selector, found '('
(17435,11): run-time error CSS1025: Expected comma or open brace, found '('
(17595,2): run-time error CSS1019: Unexpected token, found ')'
(17595,3): run-time error CSS1019: Unexpected token, found '('
(17595,15): run-time error CSS1030: Expected identifier, found '|'
(17595,15): run-time error CSS1031: Expected selector, found '|'
(17595,15): run-time error CSS1025: Expected comma or open brace, found '|'
(17597,14): run-time error CSS1031: Expected selector, found ';'
(17597,14): run-time error CSS1025: Expected comma or open brace, found ';'
(17598,1): run-time error CSS1019: Unexpected token, found '('
(17598,11): run-time error CSS1031: Expected selector, found '('
(17598,11): run-time error CSS1025: Expected comma or open brace, found '('
(17704,2): run-time error CSS1019: Unexpected token, found ')'
(17704,3): run-time error CSS1019: Unexpected token, found '('
(17704,15): run-time error CSS1030: Expected identifier, found '|'
(17704,15): run-time error CSS1031: Expected selector, found '|'
(17704,15): run-time error CSS1025: Expected comma or open brace, found '|'
(17706,14): run-time error CSS1031: Expected selector, found ';'
(17706,14): run-time error CSS1025: Expected comma or open brace, found ';'
(17707,1): run-time error CSS1019: Unexpected token, found '('
(17707,11): run-time error CSS1031: Expected selector, found '('
(17707,11): run-time error CSS1025: Expected comma or open brace, found '('
(17755,2): run-time error CSS1019: Unexpected token, found ')'
(17755,3): run-time error CSS1019: Unexpected token, found '('
(17755,15): run-time error CSS1030: Expected identifier, found '|'
(17755,15): run-time error CSS1031: Expected selector, found '|'
(17755,15): run-time error CSS1025: Expected comma or open brace, found '|'
(17757,14): run-time error CSS1031: Expected selector, found ';'
(17757,14): run-time error CSS1025: Expected comma or open brace, found ';'
(17758,1): run-time error CSS1019: Unexpected token, found '('
(17758,11): run-time error CSS1031: Expected selector, found '('
(17758,11): run-time error CSS1025: Expected comma or open brace, found '('
(17810,2): run-time error CSS1019: Unexpected token, found ')'
(17810,3): run-time error CSS1019: Unexpected token, found '('
(17810,15): run-time error CSS1030: Expected identifier, found '|'
(17810,15): run-time error CSS1031: Expected selector, found '|'
(17810,15): run-time error CSS1025: Expected comma or open brace, found '|'
(17812,11): run-time error CSS1031: Expected selector, found ';'
(17812,11): run-time error CSS1025: Expected comma or open brace, found ';'
(17813,1): run-time error CSS1019: Unexpected token, found '('
(17813,11): run-time error CSS1031: Expected selector, found '('
(17813,11): run-time error CSS1025: Expected comma or open brace, found '('
(17860,2): run-time error CSS1019: Unexpected token, found ')'
(17860,3): run-time error CSS1019: Unexpected token, found '('
(17860,12): run-time error CSS1030: Expected identifier, found '|'
(17860,12): run-time error CSS1031: Expected selector, found '|'
(17860,12): run-time error CSS1025: Expected comma or open brace, found '|'
(17862,15): run-time error CSS1031: Expected selector, found '='
(17862,15): run-time error CSS1025: Expected comma or open brace, found '='
(17877,11): run-time error CSS1031: Expected selector, found ';'
(17877,11): run-time error CSS1025: Expected comma or open brace, found ';'
(17878,1): run-time error CSS1019: Unexpected token, found '('
(17878,11): run-time error CSS1031: Expected selector, found '('
(17878,11): run-time error CSS1025: Expected comma or open brace, found '('
(18185,2): run-time error CSS1019: Unexpected token, found ')'
(18185,3): run-time error CSS1019: Unexpected token, found '('
(18185,12): run-time error CSS1030: Expected identifier, found '|'
(18185,12): run-time error CSS1031: Expected selector, found '|'
(18185,12): run-time error CSS1025: Expected comma or open brace, found '|'
(18187,15): run-time error CSS1031: Expected selector, found '='
(18187,15): run-time error CSS1025: Expected comma or open brace, found '='
(18202,11): run-time error CSS1031: Expected selector, found ';'
(18202,11): run-time error CSS1025: Expected comma or open brace, found ';'
(18203,1): run-time error CSS1019: Unexpected token, found '('
(18203,11): run-time error CSS1031: Expected selector, found '('
(18203,11): run-time error CSS1025: Expected comma or open brace, found '('
(19266,2): run-time error CSS1019: Unexpected token, found ')'
(19266,3): run-time error CSS1019: Unexpected token, found '('
(19266,12): run-time error CSS1030: Expected identifier, found '|'
(19266,12): run-time error CSS1031: Expected selector, found '|'
(19266,12): run-time error CSS1025: Expected comma or open brace, found '|'
(19268,15): run-time error CSS1031: Expected selector, found '='
(19268,15): run-time error CSS1025: Expected comma or open brace, found '='
(19283,11): run-time error CSS1031: Expected selector, found ';'
(19283,11): run-time error CSS1025: Expected comma or open brace, found ';'
(19284,1): run-time error CSS1019: Unexpected token, found '('
(19284,11): run-time error CSS1031: Expected selector, found '('
(19284,11): run-time error CSS1025: Expected comma or open brace, found '('
(19504,2): run-time error CSS1019: Unexpected token, found ')'
(19504,3): run-time error CSS1019: Unexpected token, found '('
(19504,12): run-time error CSS1030: Expected identifier, found '|'
(19504,12): run-time error CSS1031: Expected selector, found '|'
(19504,12): run-time error CSS1025: Expected comma or open brace, found '|'
(19506,15): run-time error CSS1031: Expected selector, found '='
(19506,15): run-time error CSS1025: Expected comma or open brace, found '='
(19521,11): run-time error CSS1031: Expected selector, found ';'
(19521,11): run-time error CSS1025: Expected comma or open brace, found ';'
(19522,1): run-time error CSS1019: Unexpected token, found '('
(19522,11): run-time error CSS1031: Expected selector, found '('
(19522,11): run-time error CSS1025: Expected comma or open brace, found '('
(19768,2): run-time error CSS1019: Unexpected token, found ')'
(19768,3): run-time error CSS1019: Unexpected token, found '('
(19768,12): run-time error CSS1030: Expected identifier, found '|'
(19768,12): run-time error CSS1031: Expected selector, found '|'
(19768,12): run-time error CSS1025: Expected comma or open brace, found '|'
(19770,15): run-time error CSS1031: Expected selector, found '='
(19770,15): run-time error CSS1025: Expected comma or open brace, found '='
(19785,11): run-time error CSS1031: Expected selector, found ';'
(19785,11): run-time error CSS1025: Expected comma or open brace, found ';'
(19786,1): run-time error CSS1019: Unexpected token, found '('
(19786,11): run-time error CSS1031: Expected selector, found '('
(19786,11): run-time error CSS1025: Expected comma or open brace, found '('
(20722,2): run-time error CSS1019: Unexpected token, found ')'
(20722,3): run-time error CSS1019: Unexpected token, found '('
(20722,12): run-time error CSS1030: Expected identifier, found '|'
(20722,12): run-time error CSS1031: Expected selector, found '|'
(20722,12): run-time error CSS1025: Expected comma or open brace, found '|'
(20724,15): run-time error CSS1031: Expected selector, found '='
(20724,15): run-time error CSS1025: Expected comma or open brace, found '='
(20739,11): run-time error CSS1031: Expected selector, found ';'
(20739,11): run-time error CSS1025: Expected comma or open brace, found ';'
(20740,1): run-time error CSS1019: Unexpected token, found '('
(20740,11): run-time error CSS1031: Expected selector, found '('
(20740,11): run-time error CSS1025: Expected comma or open brace, found '('
(21763,2): run-time error CSS1019: Unexpected token, found ')'
(21763,3): run-time error CSS1019: Unexpected token, found '('
(21763,12): run-time error CSS1030: Expected identifier, found '|'
(21763,12): run-time error CSS1031: Expected selector, found '|'
(21763,12): run-time error CSS1025: Expected comma or open brace, found '|'
(21765,15): run-time error CSS1031: Expected selector, found '='
(21765,15): run-time error CSS1025: Expected comma or open brace, found '='
(21780,11): run-time error CSS1031: Expected selector, found ';'
(21780,11): run-time error CSS1025: Expected comma or open brace, found ';'
(21781,1): run-time error CSS1019: Unexpected token, found '('
(21781,11): run-time error CSS1031: Expected selector, found '('
(21781,11): run-time error CSS1025: Expected comma or open brace, found '('
(22246,2): run-time error CSS1019: Unexpected token, found ')'
(22246,3): run-time error CSS1019: Unexpected token, found '('
(22246,12): run-time error CSS1030: Expected identifier, found '|'
(22246,12): run-time error CSS1031: Expected selector, found '|'
(22246,12): run-time error CSS1025: Expected comma or open brace, found '|'
(22248,15): run-time error CSS1031: Expected selector, found '='
(22248,15): run-time error CSS1025: Expected comma or open brace, found '='
(22263,11): run-time error CSS1031: Expected selector, found ';'
(22263,11): run-time error CSS1025: Expected comma or open brace, found ';'
(22264,1): run-time error CSS1019: Unexpected token, found '('
(22264,11): run-time error CSS1031: Expected selector, found '('
(22264,11): run-time error CSS1025: Expected comma or open brace, found '('
(22829,2): run-time error CSS1019: Unexpected token, found ')'
(22829,3): run-time error CSS1019: Unexpected token, found '('
(22829,12): run-time error CSS1030: Expected identifier, found '|'
(22829,12): run-time error CSS1031: Expected selector, found '|'
(22829,12): run-time error CSS1025: Expected comma or open brace, found '|'
(22831,16): run-time error CSS1031: Expected selector, found ';'
(22831,16): run-time error CSS1025: Expected comma or open brace, found ';'
(22832,1): run-time error CSS1019: Unexpected token, found '('
(22832,11): run-time error CSS1031: Expected selector, found '('
(22832,11): run-time error CSS1025: Expected comma or open brace, found '('
(22907,2): run-time error CSS1019: Unexpected token, found ')'
(22907,3): run-time error CSS1019: Unexpected token, found '('
(22907,17): run-time error CSS1030: Expected identifier, found '|'
(22907,17): run-time error CSS1031: Expected selector, found '|'
(22907,17): run-time error CSS1025: Expected comma or open brace, found '|'
(22909,16): run-time error CSS1031: Expected selector, found ';'
(22909,16): run-time error CSS1025: Expected comma or open brace, found ';'
(22910,1): run-time error CSS1019: Unexpected token, found '('
(22910,11): run-time error CSS1031: Expected selector, found '('
(22910,11): run-time error CSS1025: Expected comma or open brace, found '('
(22943,2): run-time error CSS1019: Unexpected token, found ')'
(22943,3): run-time error CSS1019: Unexpected token, found '('
(22943,17): run-time error CSS1030: Expected identifier, found '|'
(22943,17): run-time error CSS1031: Expected selector, found '|'
(22943,17): run-time error CSS1025: Expected comma or open brace, found '|'
(22945,21): run-time error CSS1031: Expected selector, found ';'
(22945,21): run-time error CSS1025: Expected comma or open brace, found ';'
(22946,1): run-time error CSS1019: Unexpected token, found '('
(22946,11): run-time error CSS1031: Expected selector, found '('
(22946,11): run-time error CSS1025: Expected comma or open brace, found '('
(22995,2): run-time error CSS1019: Unexpected token, found ')'
(22995,3): run-time error CSS1019: Unexpected token, found '('
(22995,22): run-time error CSS1030: Expected identifier, found '|'
(22995,22): run-time error CSS1031: Expected selector, found '|'
(22995,22): run-time error CSS1025: Expected comma or open brace, found '|'
(22997,21): run-time error CSS1031: Expected selector, found ';'
(22997,21): run-time error CSS1025: Expected comma or open brace, found ';'
(22998,1): run-time error CSS1019: Unexpected token, found '('
(22998,11): run-time error CSS1031: Expected selector, found '('
(22998,11): run-time error CSS1025: Expected comma or open brace, found '('
(23036,2): run-time error CSS1019: Unexpected token, found ')'
(23036,3): run-time error CSS1019: Unexpected token, found '('
(23036,22): run-time error CSS1030: Expected identifier, found '|'
(23036,22): run-time error CSS1031: Expected selector, found '|'
(23036,22): run-time error CSS1025: Expected comma or open brace, found '|'
(23038,8): run-time error CSS1031: Expected selector, found ';'
(23038,8): run-time error CSS1025: Expected comma or open brace, found ';'
(23039,1): run-time error CSS1019: Unexpected token, found '('
(23039,11): run-time error CSS1031: Expected selector, found '('
(23039,11): run-time error CSS1025: Expected comma or open brace, found '('
(23104,2): run-time error CSS1019: Unexpected token, found ')'
(23104,3): run-time error CSS1019: Unexpected token, found '('
(23104,9): run-time error CSS1030: Expected identifier, found '|'
(23104,9): run-time error CSS1031: Expected selector, found '|'
(23104,9): run-time error CSS1025: Expected comma or open brace, found '|'
(23106,8): run-time error CSS1031: Expected selector, found ';'
(23106,8): run-time error CSS1025: Expected comma or open brace, found ';'
(23107,1): run-time error CSS1019: Unexpected token, found '('
(23107,11): run-time error CSS1031: Expected selector, found '('
(23107,11): run-time error CSS1025: Expected comma or open brace, found '('
(23141,2): run-time error CSS1019: Unexpected token, found ')'
(23141,3): run-time error CSS1019: Unexpected token, found '('
(23141,9): run-time error CSS1030: Expected identifier, found '|'
(23141,9): run-time error CSS1031: Expected selector, found '|'
(23141,9): run-time error CSS1025: Expected comma or open brace, found '|'
(23143,10): run-time error CSS1031: Expected selector, found ';'
(23143,10): run-time error CSS1025: Expected comma or open brace, found ';'
(23144,1): run-time error CSS1019: Unexpected token, found '('
(23144,11): run-time error CSS1031: Expected selector, found '('
(23144,11): run-time error CSS1025: Expected comma or open brace, found '('
(23296,2): run-time error CSS1019: Unexpected token, found ')'
(23296,3): run-time error CSS1019: Unexpected token, found '('
(23296,11): run-time error CSS1030: Expected identifier, found '|'
(23296,11): run-time error CSS1031: Expected selector, found '|'
(23296,11): run-time error CSS1025: Expected comma or open brace, found '|'
(23298,10): run-time error CSS1031: Expected selector, found ';'
(23298,10): run-time error CSS1025: Expected comma or open brace, found ';'
(23299,1): run-time error CSS1019: Unexpected token, found '('
(23299,11): run-time error CSS1031: Expected selector, found '('
(23299,11): run-time error CSS1025: Expected comma or open brace, found '('
(23640,2): run-time error CSS1019: Unexpected token, found ')'
(23640,3): run-time error CSS1019: Unexpected token, found '('
(23640,11): run-time error CSS1030: Expected identifier, found '|'
(23640,11): run-time error CSS1031: Expected selector, found '|'
(23640,11): run-time error CSS1025: Expected comma or open brace, found '|'
(23642,12): run-time error CSS1031: Expected selector, found ';'
(23642,12): run-time error CSS1025: Expected comma or open brace, found ';'
(23643,1): run-time error CSS1019: Unexpected token, found '('
(23643,11): run-time error CSS1031: Expected selector, found '('
(23643,11): run-time error CSS1025: Expected comma or open brace, found '('
(23674,2): run-time error CSS1019: Unexpected token, found ')'
(23674,3): run-time error CSS1019: Unexpected token, found '('
(23674,13): run-time error CSS1030: Expected identifier, found '|'
(23674,13): run-time error CSS1031: Expected selector, found '|'
(23674,13): run-time error CSS1025: Expected comma or open brace, found '|'
(23676,13): run-time error CSS1031: Expected selector, found ';'
(23676,13): run-time error CSS1025: Expected comma or open brace, found ';'
(23677,1): run-time error CSS1019: Unexpected token, found '('
(23677,11): run-time error CSS1031: Expected selector, found '('
(23677,11): run-time error CSS1025: Expected comma or open brace, found '('
(23813,2): run-time error CSS1019: Unexpected token, found ')'
(23813,3): run-time error CSS1019: Unexpected token, found '('
(23813,14): run-time error CSS1030: Expected identifier, found '|'
(23813,14): run-time error CSS1031: Expected selector, found '|'
(23813,14): run-time error CSS1025: Expected comma or open brace, found '|'
(23815,9): run-time error CSS1031: Expected selector, found ';'
(23815,9): run-time error CSS1025: Expected comma or open brace, found ';'
(23816,1): run-time error CSS1019: Unexpected token, found '('
(23816,11): run-time error CSS1031: Expected selector, found '('
(23816,11): run-time error CSS1025: Expected comma or open brace, found '('
(23958,2): run-time error CSS1019: Unexpected token, found ')'
(23958,3): run-time error CSS1019: Unexpected token, found '('
(23958,10): run-time error CSS1030: Expected identifier, found '|'
(23958,10): run-time error CSS1031: Expected selector, found '|'
(23958,10): run-time error CSS1025: Expected comma or open brace, found '|'
(23960,9): run-time error CSS1031: Expected selector, found ';'
(23960,9): run-time error CSS1025: Expected comma or open brace, found ';'
(23961,1): run-time error CSS1019: Unexpected token, found '('
(23961,11): run-time error CSS1031: Expected selector, found '('
(23961,11): run-time error CSS1025: Expected comma or open brace, found '('
(24222,2): run-time error CSS1019: Unexpected token, found ')'
(24222,3): run-time error CSS1019: Unexpected token, found '('
(24222,10): run-time error CSS1030: Expected identifier, found '|'
(24222,10): run-time error CSS1031: Expected selector, found '|'
(24222,10): run-time error CSS1025: Expected comma or open brace, found '|'
(24224,9): run-time error CSS1031: Expected selector, found ';'
(24224,9): run-time error CSS1025: Expected comma or open brace, found ';'
(24225,1): run-time error CSS1019: Unexpected token, found '('
(24225,11): run-time error CSS1031: Expected selector, found '('
(24225,11): run-time error CSS1025: Expected comma or open brace, found '('
(24295,2): run-time error CSS1019: Unexpected token, found ')'
(24295,3): run-time error CSS1019: Unexpected token, found '('
(24295,10): run-time error CSS1030: Expected identifier, found '|'
(24295,10): run-time error CSS1031: Expected selector, found '|'
(24295,10): run-time error CSS1025: Expected comma or open brace, found '|'
(24297,9): run-time error CSS1031: Expected selector, found ';'
(24297,9): run-time error CSS1025: Expected comma or open brace, found ';'
(24298,1): run-time error CSS1019: Unexpected token, found '('
(24298,11): run-time error CSS1031: Expected selector, found '('
(24298,11): run-time error CSS1025: Expected comma or open brace, found '('
(24335,2): run-time error CSS1019: Unexpected token, found ')'
(24335,3): run-time error CSS1019: Unexpected token, found '('
(24335,10): run-time error CSS1030: Expected identifier, found '|'
(24335,10): run-time error CSS1031: Expected selector, found '|'
(24335,10): run-time error CSS1025: Expected comma or open brace, found '|'
(24337,9): run-time error CSS1031: Expected selector, found ';'
(24337,9): run-time error CSS1025: Expected comma or open brace, found ';'
(24338,1): run-time error CSS1019: Unexpected token, found '('
(24338,11): run-time error CSS1031: Expected selector, found '('
(24338,11): run-time error CSS1025: Expected comma or open brace, found '('
(24378,2): run-time error CSS1019: Unexpected token, found ')'
(24378,3): run-time error CSS1019: Unexpected token, found '('
(24378,10): run-time error CSS1030: Expected identifier, found '|'
(24378,10): run-time error CSS1031: Expected selector, found '|'
(24378,10): run-time error CSS1025: Expected comma or open brace, found '|'
(24380,9): run-time error CSS1031: Expected selector, found ';'
(24380,9): run-time error CSS1025: Expected comma or open brace, found ';'
(24381,1): run-time error CSS1019: Unexpected token, found '('
(24381,11): run-time error CSS1031: Expected selector, found '('
(24381,11): run-time error CSS1025: Expected comma or open brace, found '('
(24440,2): run-time error CSS1019: Unexpected token, found ')'
(24440,3): run-time error CSS1019: Unexpected token, found '('
(24440,10): run-time error CSS1030: Expected identifier, found '|'
(24440,10): run-time error CSS1031: Expected selector, found '|'
(24440,10): run-time error CSS1025: Expected comma or open brace, found '|'
(24442,9): run-time error CSS1031: Expected selector, found ';'
(24442,9): run-time error CSS1025: Expected comma or open brace, found ';'
(24443,1): run-time error CSS1019: Unexpected token, found '('
(24443,11): run-time error CSS1031: Expected selector, found '('
(24443,11): run-time error CSS1025: Expected comma or open brace, found '('
(24482,2): run-time error CSS1019: Unexpected token, found ')'
(24482,3): run-time error CSS1019: Unexpected token, found '('
(24482,10): run-time error CSS1030: Expected identifier, found '|'
(24482,10): run-time error CSS1031: Expected selector, found '|'
(24482,10): run-time error CSS1025: Expected comma or open brace, found '|'
(24484,9): run-time error CSS1031: Expected selector, found ';'
(24484,9): run-time error CSS1025: Expected comma or open brace, found ';'
(24485,1): run-time error CSS1019: Unexpected token, found '('
(24485,11): run-time error CSS1031: Expected selector, found '('
(24485,11): run-time error CSS1025: Expected comma or open brace, found '('
(24525,2): run-time error CSS1019: Unexpected token, found ')'
(24525,3): run-time error CSS1019: Unexpected token, found '('
(24525,10): run-time error CSS1030: Expected identifier, found '|'
(24525,10): run-time error CSS1031: Expected selector, found '|'
(24525,10): run-time error CSS1025: Expected comma or open brace, found '|'
(24527,9): run-time error CSS1031: Expected selector, found ';'
(24527,9): run-time error CSS1025: Expected comma or open brace, found ';'
(24528,1): run-time error CSS1019: Unexpected token, found '('
(24528,11): run-time error CSS1031: Expected selector, found '('
(24528,11): run-time error CSS1025: Expected comma or open brace, found '('
(24577,2): run-time error CSS1019: Unexpected token, found ')'
(24577,3): run-time error CSS1019: Unexpected token, found '('
(24577,10): run-time error CSS1030: Expected identifier, found '|'
(24577,10): run-time error CSS1031: Expected selector, found '|'
(24577,10): run-time error CSS1025: Expected comma or open brace, found '|'
(24579,9): run-time error CSS1031: Expected selector, found ';'
(24579,9): run-time error CSS1025: Expected comma or open brace, found ';'
(24580,1): run-time error CSS1019: Unexpected token, found '('
(24580,11): run-time error CSS1031: Expected selector, found '('
(24580,11): run-time error CSS1025: Expected comma or open brace, found '('
(24599,2): run-time error CSS1019: Unexpected token, found ')'
(24599,3): run-time error CSS1019: Unexpected token, found '('
(24599,10): run-time error CSS1030: Expected identifier, found '|'
(24599,10): run-time error CSS1031: Expected selector, found '|'
(24599,10): run-time error CSS1025: Expected comma or open brace, found '|'
(24601,9): run-time error CSS1031: Expected selector, found ';'
(24601,9): run-time error CSS1025: Expected comma or open brace, found ';'
(24602,1): run-time error CSS1019: Unexpected token, found '('
(24602,11): run-time error CSS1031: Expected selector, found '('
(24602,11): run-time error CSS1025: Expected comma or open brace, found '('
(25047,2): run-time error CSS1019: Unexpected token, found ')'
(25047,3): run-time error CSS1019: Unexpected token, found '('
(25047,10): run-time error CSS1030: Expected identifier, found '|'
(25047,10): run-time error CSS1031: Expected selector, found '|'
(25047,10): run-time error CSS1025: Expected comma or open brace, found '|'
(25049,9): run-time error CSS1031: Expected selector, found ';'
(25049,9): run-time error CSS1025: Expected comma or open brace, found ';'
(25050,1): run-time error CSS1019: Unexpected token, found '('
(25050,11): run-time error CSS1031: Expected selector, found '('
(25050,11): run-time error CSS1025: Expected comma or open brace, found '('
(25143,2): run-time error CSS1019: Unexpected token, found ')'
(25143,3): run-time error CSS1019: Unexpected token, found '('
(25143,10): run-time error CSS1030: Expected identifier, found '|'
(25143,10): run-time error CSS1031: Expected selector, found '|'
(25143,10): run-time error CSS1025: Expected comma or open brace, found '|'
(25145,9): run-time error CSS1031: Expected selector, found ';'
(25145,9): run-time error CSS1025: Expected comma or open brace, found ';'
(25146,1): run-time error CSS1019: Unexpected token, found '('
(25146,11): run-time error CSS1031: Expected selector, found '('
(25146,11): run-time error CSS1025: Expected comma or open brace, found '('
(25179,2): run-time error CSS1019: Unexpected token, found ')'
(25179,3): run-time error CSS1019: Unexpected token, found '('
(25179,10): run-time error CSS1030: Expected identifier, found '|'
(25179,10): run-time error CSS1031: Expected selector, found '|'
(25179,10): run-time error CSS1025: Expected comma or open brace, found '|'
(25181,12): run-time error CSS1031: Expected selector, found ';'
(25181,12): run-time error CSS1025: Expected comma or open brace, found ';'
(25182,1): run-time error CSS1019: Unexpected token, found '('
(25182,11): run-time error CSS1031: Expected selector, found '('
(25182,11): run-time error CSS1025: Expected comma or open brace, found '('
(25312,2): run-time error CSS1019: Unexpected token, found ')'
(25312,3): run-time error CSS1019: Unexpected token, found '('
(25312,13): run-time error CSS1030: Expected identifier, found '|'
(25312,13): run-time error CSS1031: Expected selector, found '|'
(25312,13): run-time error CSS1025: Expected comma or open brace, found '|'
(25314,8): run-time error CSS1031: Expected selector, found ';'
(25314,8): run-time error CSS1025: Expected comma or open brace, found ';'
(25315,1): run-time error CSS1019: Unexpected token, found '('
(25315,11): run-time error CSS1031: Expected selector, found '('
(25315,11): run-time error CSS1025: Expected comma or open brace, found '('
(25352,2): run-time error CSS1019: Unexpected token, found ')'
(25352,3): run-time error CSS1019: Unexpected token, found '('
(25352,9): run-time error CSS1030: Expected identifier, found '|'
(25352,9): run-time error CSS1031: Expected selector, found '|'
(25352,9): run-time error CSS1025: Expected comma or open brace, found '|'
(25354,12): run-time error CSS1031: Expected selector, found ';'
(25354,12): run-time error CSS1025: Expected comma or open brace, found ';'
(25355,1): run-time error CSS1019: Unexpected token, found '('
(25355,11): run-time error CSS1031: Expected selector, found '('
(25355,11): run-time error CSS1025: Expected comma or open brace, found '('
(25429,2): run-time error CSS1019: Unexpected token, found ')'
(25429,3): run-time error CSS1019: Unexpected token, found '('
(25429,13): run-time error CSS1030: Expected identifier, found '|'
(25429,13): run-time error CSS1031: Expected selector, found '|'
(25429,13): run-time error CSS1025: Expected comma or open brace, found '|'
(25431,9): run-time error CSS1031: Expected selector, found ';'
(25431,9): run-time error CSS1025: Expected comma or open brace, found ';'
(25432,1): run-time error CSS1019: Unexpected token, found '('
(25432,11): run-time error CSS1031: Expected selector, found '('
(25432,11): run-time error CSS1025: Expected comma or open brace, found '('
(25469,2): run-time error CSS1019: Unexpected token, found ')'
(25469,3): run-time error CSS1019: Unexpected token, found '('
(25469,10): run-time error CSS1030: Expected identifier, found '|'
(25469,10): run-time error CSS1031: Expected selector, found '|'
(25469,10): run-time error CSS1025: Expected comma or open brace, found '|'
(25471,10): run-time error CSS1031: Expected selector, found ';'
(25471,10): run-time error CSS1025: Expected comma or open brace, found ';'
(25472,1): run-time error CSS1019: Unexpected token, found '('
(25472,11): run-time error CSS1031: Expected selector, found '('
(25472,11): run-time error CSS1025: Expected comma or open brace, found '('
(25668,2): run-time error CSS1019: Unexpected token, found ')'
(25668,3): run-time error CSS1019: Unexpected token, found '('
(25668,11): run-time error CSS1030: Expected identifier, found '|'
(25668,11): run-time error CSS1031: Expected selector, found '|'
(25668,11): run-time error CSS1025: Expected comma or open brace, found '|'
(25670,10): run-time error CSS1031: Expected selector, found ';'
(25670,10): run-time error CSS1025: Expected comma or open brace, found ';'
(25671,1): run-time error CSS1019: Unexpected token, found '('
(25671,11): run-time error CSS1031: Expected selector, found '('
(25671,11): run-time error CSS1025: Expected comma or open brace, found '('
(25782,2): run-time error CSS1019: Unexpected token, found ')'
(25782,3): run-time error CSS1019: Unexpected token, found '('
(25782,11): run-time error CSS1030: Expected identifier, found '|'
(25782,11): run-time error CSS1031: Expected selector, found '|'
(25782,11): run-time error CSS1025: Expected comma or open brace, found '|'
(25784,10): run-time error CSS1031: Expected selector, found ';'
(25784,10): run-time error CSS1025: Expected comma or open brace, found ';'
(25785,1): run-time error CSS1019: Unexpected token, found '('
(25785,11): run-time error CSS1031: Expected selector, found '('
(25785,11): run-time error CSS1025: Expected comma or open brace, found '('
(25878,2): run-time error CSS1019: Unexpected token, found ')'
(25878,3): run-time error CSS1019: Unexpected token, found '('
(25878,11): run-time error CSS1030: Expected identifier, found '|'
(25878,11): run-time error CSS1031: Expected selector, found '|'
(25878,11): run-time error CSS1025: Expected comma or open brace, found '|'
 */
(function () {
    "use strict";
    angular.module("app.core", [
        "ui.router",
        "ui.bootstrap",
        "focus-if",
        "ngFileUpload",
        "ngStorage",
        "ngAnimate",
        "unsavedChanges",
        "ui.validate",
        "ngMessages",
        "ngFileSaver",
        'ngSanitize',
        'angularjs-dropdown-multiselect'
    ]).config(config);
    function config($provide) {
    }
})();
//# sourceMappingURL=app.core.js.map
(function () {
    "use strict";
    angular.module("app.services", [
        "app.core"
    ]);
})();
//# sourceMappingURL=app.services.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var IAdvisory = (function () {
            function IAdvisory() {
            }
            return IAdvisory;
        }());
        services.IAdvisory = IAdvisory;
        var IAdvisoryLine = (function () {
            function IAdvisoryLine() {
            }
            return IAdvisoryLine;
        }());
        services.IAdvisoryLine = IAdvisoryLine;
        var AdvisoryService = (function () {
            function AdvisoryService($http, mv360api, $q, LoginService) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.$q = $q;
                this.LoginService = LoginService;
            }
            AdvisoryService.prototype.getAdvisories = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    url: this.mv360api.baseURL + "/api/ServiceAdvisory",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken }
                });
            };
            AdvisoryService.prototype.getAdvisory = function (serviceCampaignNumber) {
                var _this = this;
                var defered = this.$q.defer();
                this.$http({
                    method: "GET",
                    url: this.mv360api.baseURL + "/api/ServiceAdvisory/" + serviceCampaignNumber,
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken }
                })
                    .then(function (response) {
                    var advisory = response.data;
                    _this.$http({
                        method: "GET",
                        url: _this.mv360api.baseURL + "/api/ServiceAdvisory/" + serviceCampaignNumber + "/Line",
                        headers: { "Authorization": "Bearer " + _this.mv360api.accessToken }
                    })
                        .then(function (lineresponse) {
                        advisory.Lines = lineresponse.data;
                        defered.resolve(advisory);
                    });
                }, function (errorResponse) {
                    console.log("Error: " + errorResponse);
                    if (errorResponse.status == 401) {
                    }
                });
                return defered.promise;
            };
            AdvisoryService.prototype.searchAdvisories = function (search, sortField, sortDesc) {
                var odata = '?';
                if (search) {
                    odata = odata + "$filter=substringof(toupper('" + search + "'), toupper(ServiceCampaignNumber)) eq true or substringof(toupper('" + search + "'), toupper(Name)) eq true or substringof(toupper('" + search + "'), toupper(AffectedUnits)) eq true";
                }
                if (sortField) {
                    odata = odata + "&$orderby=" + sortField;
                    if (sortDesc) {
                        odata = odata + ' desc';
                    }
                }
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    url: this.mv360api.baseURL + "/api/ServiceAdvisory" + odata,
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken }
                });
            };
            AdvisoryService.$inject = ["$http", "mv360api", "$q", "app.services.LoginService"];
            return AdvisoryService;
        }());
        angular
            .module("app.services")
            .service("app.services.AdvisoryService", AdvisoryService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=AdvisoryService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var AOSStatusService = (function () {
            function AOSStatusService($http, mv360api, LoginService, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
            }
            AOSStatusService.prototype.getStatus = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/AOSStatus"
                });
            };
            AOSStatusService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q"];
            return AOSStatusService;
        }());
        angular
            .module("app.services")
            .service("app.services.AOSStatusService", AOSStatusService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=AOSStatusService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var APIVersionService = (function () {
            function APIVersionService($http, mv360api, LoginService, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
            }
            APIVersionService.prototype.getVersion = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/APIVersion"
                });
            };
            APIVersionService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q"];
            return APIVersionService;
        }());
        angular
            .module("app.services")
            .service("app.services.APIVersionService", APIVersionService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=APIVersionService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var ICampaign = (function () {
            function ICampaign() {
            }
            return ICampaign;
        }());
        services.ICampaign = ICampaign;
        var ICampaignUnit = (function () {
            function ICampaignUnit() {
            }
            return ICampaignUnit;
        }());
        services.ICampaignUnit = ICampaignUnit;
        var ICampaignVin = (function () {
            function ICampaignVin() {
            }
            return ICampaignVin;
        }());
        services.ICampaignVin = ICampaignVin;
        var ICampaignNotificaiton = (function () {
            function ICampaignNotificaiton() {
            }
            return ICampaignNotificaiton;
        }());
        services.ICampaignNotificaiton = ICampaignNotificaiton;
        var ServiceCampaignSearchQueryFilter = (function () {
            function ServiceCampaignSearchQueryFilter() {
            }
            return ServiceCampaignSearchQueryFilter;
        }());
        services.ServiceCampaignSearchQueryFilter = ServiceCampaignSearchQueryFilter;
        var ServiceCampaignUnitSearchQueryFilter = (function () {
            function ServiceCampaignUnitSearchQueryFilter() {
            }
            return ServiceCampaignUnitSearchQueryFilter;
        }());
        services.ServiceCampaignUnitSearchQueryFilter = ServiceCampaignUnitSearchQueryFilter;
        var CampaignService = (function () {
            function CampaignService($http, mv360api, $q, LoginService, $modal) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.$q = $q;
                this.LoginService = LoginService;
                this.$modal = $modal;
            }
            CampaignService.prototype.getMV360API = function () {
                return this.mv360api;
            };
            CampaignService.prototype.getCampaigns = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    url: this.mv360api.baseURL + "/api/ServiceCampaign",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken }
                });
            };
            CampaignService.prototype.getCampaign = function (serviceCampaignId, dealerNumber) {
                var defered = this.$q.defer();
                this.$http({
                    method: "GET",
                    url: this.mv360api.baseURL + "/api/ServiceCampaign/" + serviceCampaignId,
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken }
                })
                    .then(function (response) {
                    var Campaign = response.data;
                    defered.resolve(Campaign);
                }, function (errorResponse) {
                    console.log("Error: " + errorResponse);
                    if (errorResponse.status == 401) {
                    }
                });
                return defered.promise;
            };
            CampaignService.prototype.search = function (search, dealerUnitsOnly, pageSize, currentPage, sortField, sortDesc) {
                var query = new services.SearchQuery();
                query.PageSize = pageSize;
                query.CurrentPage = currentPage;
                query.SortField = sortField;
                query.SortAscending = !sortDesc;
                var filter = new ServiceCampaignSearchQueryFilter();
                filter.SimpleSearch = search;
                filter.DealerNumber = this.mv360api.currentDealer;
                filter.UserID = this.LoginService.UserInfo.Username;
                query.Filter = filter;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/ServiceCampaign/Search",
                    data: query
                });
            };
            CampaignService.prototype.searchAdvanced = function (query) {
                var oneV = null;
                if (query.Filter.UnitCampaignSearch != null && query.Filter.UnitCampaignSearch != undefined && query.Filter.UnitCampaignSearch) {
                    if (!query.Filter.AllVins) {
                        query.Filter.UserID = this.LoginService.UserInfo.Username;
                    }
                    if (query.Filter.oneVin != null && query.Filter.oneVin != "") {
                        oneV = query.Filter.oneVin;
                        var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                        return httpRetry.run({
                            method: "POST",
                            headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                            url: this.mv360api.baseURL + "/api/ServiceCampaign/SearchCampaignOneVIN/" + oneV,
                            data: query
                        });
                    }
                    else {
                        var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                        return httpRetry.run({
                            method: "POST",
                            headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                            url: this.mv360api.baseURL + "/api/ServiceCampaign/SearchCampaignVIN",
                            data: query
                        });
                    }
                }
                else {
                    query.Filter.UserID = this.LoginService.UserInfo.Username;
                    var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                    return httpRetry.run({
                        method: "POST",
                        headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                        url: this.mv360api.baseURL + "/api/ServiceCampaign/Search",
                        data: query
                    });
                }
            };
            CampaignService.prototype.getServiceTypes = function () {
                var campaignTypes = ['Campaign', 'Advisory'];
                return campaignTypes;
            };
            CampaignService.prototype.getReasonCodes = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/ServiceCampaign/ReasonCodes"
                });
            };
            CampaignService.prototype.postCampaignNotification = function (vin) {
                var data = new ICampaignNotificaiton();
                data.VIN = vin;
                data.DealerNumber = this.mv360api.currentDealer;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/ServiceCampaign/Notification",
                    data: data
                });
            };
            CampaignService.prototype.getCampaignsPerVin = function (vin) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    url: this.mv360api.baseURL + "/api/ServiceCampaign/SearchCampaignPerVIN/" + vin,
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken }
                });
            };
            CampaignService.prototype.vinHasCampaign = function (vin) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/ServiceCampaign/HasCampaign/" + vin
                });
            };
            CampaignService.prototype.showNotification = function (vin) {
                var vm = this;
                var options = {
                    templateUrl: '/app/campaign/campaign.notification.modal.html',
                    controller: 'app.campaign.CampaignNotificationController as vm',
                    keyboard: false,
                    backdrop: true,
                    resolve: {
                        vin: function () { return vin; }
                    }
                };
                var modalInstance = this.$modal.open(options);
                modalInstance.result.then(function (resultVin) {
                    vin == resultVin;
                });
            };
            CampaignService.prototype.getDocuments = function (serviceCampaignId) {
                var activeCampaignVINs;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/ServiceCampaign/" + serviceCampaignId + "/Documents"
                });
            };
            CampaignService.$inject = ["$http", "mv360api", "$q", "app.services.LoginService", "$uibModal"];
            return CampaignService;
        }());
        angular
            .module("app.services")
            .service("app.services.CampaignService", CampaignService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=CampaignService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var IClaimStatus = (function () {
            function IClaimStatus() {
            }
            return IClaimStatus;
        }());
        services.IClaimStatus = IClaimStatus;
        var IClaimLineRecIDs = (function () {
            function IClaimLineRecIDs() {
            }
            return IClaimLineRecIDs;
        }());
        services.IClaimLineRecIDs = IClaimLineRecIDs;
        var IFileItem = (function () {
            function IFileItem() {
            }
            return IFileItem;
        }());
        services.IFileItem = IFileItem;
        var IClaim = (function () {
            function IClaim() {
            }
            return IClaim;
        }());
        services.IClaim = IClaim;
        var IClaimLabor = (function () {
            function IClaimLabor() {
                this.ImageURL = "";
            }
            return IClaimLabor;
        }());
        services.IClaimLabor = IClaimLabor;
        var IClaimPart = (function () {
            function IClaimPart() {
            }
            return IClaimPart;
        }());
        services.IClaimPart = IClaimPart;
        var ClaimSearchQueryFilter = (function () {
            function ClaimSearchQueryFilter() {
            }
            return ClaimSearchQueryFilter;
        }());
        services.ClaimSearchQueryFilter = ClaimSearchQueryFilter;
        var ClaimStatusLineRule = (function () {
            function ClaimStatusLineRule(fields) {
                if (fields) {
                    this.ClaimLineStatus = fields.ClaimLineStatus || this.ClaimLineStatus;
                    this.LineChangeFields = fields.LineChangeFields || this.LineChangeFields;
                    this.FeedBackImages = fields.FeedBackImages || this.LineChangeFields;
                    this.LineDelete = fields.LineDelete || this.LineDelete;
                }
            }
            return ClaimStatusLineRule;
        }());
        services.ClaimStatusLineRule = ClaimStatusLineRule;
        var ClaimStatusHeaderRule = (function () {
            function ClaimStatusHeaderRule(fields) {
                if (fields) {
                    this.ClaimStatus = fields.ClaimStatus || this.ClaimStatus;
                    this.InsertLines = fields.InsertLines || this.InsertLines;
                    this.HeaderButtonsActiveDraft = fields.HeaderButtonsActiveDraft || this.HeaderButtonsActiveDraft;
                    this.HeaderButtonsActiveSubmit = fields.HeaderButtonsActiveSubmit || this.HeaderButtonsActiveSubmit;
                    this.ClaimHeaderLockVIN = fields.ClaimHeaderLockVIN || this.ClaimHeaderLockVIN;
                    this.ClaimHeaderLockStartDate = fields.ClaimHeaderLockStartDate || this.ClaimHeaderLockStartDate;
                    this.ClaimHeaderLockAll = fields.ClaimHeaderLockAll || this.ClaimHeaderLockAll;
                    this.ClaimHeaderLockSubmitPayment = fields.ClaimHeaderLockSubmitPayment || this.ClaimHeaderLockSubmitPayment;
                    this.LineRules = fields.LineRules || this.LineRules;
                }
            }
            ClaimStatusHeaderRule.prototype.ClaimHeaderLockSubmitPayment = function (claim) { return false; };
            ;
            ClaimStatusHeaderRule.prototype.LineRule = function (lineStatus) {
                for (var index = 0; index < this.LineRules.length; index++) {
                    if (this.LineRules[index].ClaimLineStatus == lineStatus.toLocaleLowerCase() || this.LineRules[index].ClaimLineStatus == "*") {
                        return this.LineRules[index];
                    }
                }
                return null;
            };
            return ClaimStatusHeaderRule;
        }());
        services.ClaimStatusHeaderRule = ClaimStatusHeaderRule;
        var ClaimService = (function () {
            function ClaimService($http, mv360api, $q, LoginService) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.$q = $q;
                this.LoginService = LoginService;
            }
            ClaimService.prototype.addClaim = function (item, submitForAuth, submitForPayment) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/Claims/" + submitForAuth + "/" + submitForPayment,
                    data: item
                });
            };
            ClaimService.prototype.updateClaim = function (item, submitForAuth, submitForPayment) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "PUT",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/Claims/" + item.ClaimNumber + "/" + submitForAuth + "/" + submitForPayment,
                    data: item
                });
            };
            ClaimService.prototype.linkClaims = function (fromClaimNumber, toClaimNumber) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/Claims/link/" + fromClaimNumber + "/" + toClaimNumber
                });
            };
            ClaimService.prototype.splitClaimLines = function (fromClaimNumber, toClaimNumber, claimLineRecIDs) {
                IClaimLineRecIDs;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/Claims/split/" + fromClaimNumber + "/" + toClaimNumber,
                    data: claimLineRecIDs
                });
            };
            ClaimService.prototype.getClaims = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/Claims"
                });
            };
            ClaimService.prototype.getClaim = function (claimNumber) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/Claims/" + claimNumber
                });
            };
            ClaimService.prototype.getLinkedClaims = function (claimNumber) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/Claims/links/" + claimNumber
                });
            };
            ClaimService.prototype.deleteClaim = function (claimNumber) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "DELETE",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/Claims/" + claimNumber
                });
            };
            ClaimService.prototype.lockClaimToggle = function (claimNumber, unlockOnly) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/Claims/Lock/" + claimNumber + "/" + unlockOnly
                });
            };
            ClaimService.prototype.search = function (search, dealerUnitsOnly, pageSize, currentPage, sortField, sortDesc) {
                var query = new services.SearchQuery();
                query.PageSize = pageSize;
                query.CurrentPage = currentPage;
                query.SortField = sortField;
                query.SortAscending = !sortDesc;
                var filter = new ClaimSearchQueryFilter();
                if (search == "Draft30") {
                    filter.RepairStartDateAge = 30;
                }
                else {
                    filter.SimpleSearch = search;
                }
                query.Filter = filter;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/Claims/Search",
                    data: query
                });
            };
            ClaimService.prototype.searchAdvanced = function (query) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/Claims/Search",
                    data: query,
                    ignoreLoadingBar: true
                });
            };
            ClaimService.prototype.getStates = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/Claims/states"
                });
            };
            ClaimService.prototype.getClaimStatuses = function () {
                var statuses = [
                    { id: 0, label: "Draft" },
                    { id: 1, label: "PreAuth" },
                    { id: 2, label: "Needs Review" },
                    { id: 3, label: "Authorized" },
                    { id: 4, label: "Cancelled" },
                    { id: 5, label: "Processing" },
                    { id: 6, label: "Claim Feedback" },
                    { id: 7, label: "Pending Payment" },
                    { id: 8, label: "Paid" },
                    { id: 9, label: "Expired" },
                    { id: 10, label: "Denied" }
                ];
                return statuses;
            };
            ClaimService.prototype.getStatusRules = function () {
                var rules = new Array();
                rules.push(new ClaimStatusHeaderRule({
                    ClaimStatus: "draft",
                    InsertLines: true,
                    HeaderButtonsActiveDraft: true,
                    HeaderButtonsActiveSubmit: true,
                    ClaimHeaderLockVIN: false,
                    ClaimHeaderLockStartDate: false,
                    ClaimHeaderLockAll: false,
                    ClaimHeaderLockSubmitPayment: function (claim) { return true; },
                    LineRules: new Array(new ClaimStatusLineRule({ ClaimLineStatus: "*", LineChangeFields: true, FeedBackImages: true, LineDelete: true }))
                }));
                rules.push(new ClaimStatusHeaderRule({
                    ClaimStatus: "pre auth",
                    InsertLines: false,
                    HeaderButtonsActiveDraft: false,
                    HeaderButtonsActiveSubmit: false,
                    ClaimHeaderLockVIN: true,
                    ClaimHeaderLockStartDate: true,
                    ClaimHeaderLockAll: false,
                    ClaimHeaderLockSubmitPayment: function (claim) { return true; },
                    LineRules: new Array(new ClaimStatusLineRule({ ClaimLineStatus: "*", LineChangeFields: false, FeedBackImages: false, LineDelete: false }))
                }));
                rules.push(new ClaimStatusHeaderRule({
                    ClaimStatus: "pre auth feedback",
                    InsertLines: true,
                    HeaderButtonsActiveDraft: false,
                    HeaderButtonsActiveSubmit: true,
                    ClaimHeaderLockVIN: true,
                    ClaimHeaderLockStartDate: true,
                    ClaimHeaderLockAll: false,
                    ClaimHeaderLockSubmitPayment: function (claim) { return true; },
                    LineRules: new Array(new ClaimStatusLineRule({ ClaimLineStatus: "draft", LineChangeFields: true, FeedBackImages: true, LineDelete: true }), new ClaimStatusLineRule({ ClaimLineStatus: "authorized", LineChangeFields: false, FeedBackImages: true, LineDelete: true }), new ClaimStatusLineRule({ ClaimLineStatus: "approved", LineChangeFields: false, FeedBackImages: true, LineDelete: true }), new ClaimStatusLineRule({ ClaimLineStatus: "feedback", LineChangeFields: true, FeedBackImages: false, LineDelete: true }), new ClaimStatusLineRule({ ClaimLineStatus: "denied", LineChangeFields: false, FeedBackImages: false, LineDelete: true }))
                }));
                rules.push(new ClaimStatusHeaderRule({
                    ClaimStatus: "needs review",
                    InsertLines: true,
                    HeaderButtonsActiveDraft: false,
                    HeaderButtonsActiveSubmit: true,
                    ClaimHeaderLockVIN: true,
                    ClaimHeaderLockStartDate: true,
                    ClaimHeaderLockAll: false,
                    ClaimHeaderLockSubmitPayment: function (claim) { return true; },
                    LineRules: new Array(new ClaimStatusLineRule({ ClaimLineStatus: "draft", LineChangeFields: true, FeedBackImages: true, LineDelete: true }), new ClaimStatusLineRule({ ClaimLineStatus: "authorized", LineChangeFields: false, FeedBackImages: true, LineDelete: true }), new ClaimStatusLineRule({ ClaimLineStatus: "approved", LineChangeFields: false, FeedBackImages: true, LineDelete: true }), new ClaimStatusLineRule({ ClaimLineStatus: "feedback", LineChangeFields: true, FeedBackImages: false, LineDelete: true }), new ClaimStatusLineRule({ ClaimLineStatus: "denied", LineChangeFields: false, FeedBackImages: false, LineDelete: true }))
                }));
                rules.push(new ClaimStatusHeaderRule({
                    ClaimStatus: "authorized",
                    InsertLines: true,
                    HeaderButtonsActiveDraft: false,
                    HeaderButtonsActiveSubmit: true,
                    ClaimHeaderLockVIN: true,
                    ClaimHeaderLockStartDate: true,
                    ClaimHeaderLockAll: false,
                    ClaimHeaderLockSubmitPayment: function (claim) {
                        if (claim.Labor) {
                            for (var index = 0; index < claim.Labor.length; index++) {
                                if (claim.Labor[index].LineStatus.toLocaleLowerCase() == "draft") {
                                    return true;
                                }
                            }
                        }
                        return false;
                    },
                    LineRules: new Array(new ClaimStatusLineRule({ ClaimLineStatus: "draft", LineChangeFields: true, FeedBackImages: true, LineDelete: true }), new ClaimStatusLineRule({ ClaimLineStatus: "authorized", LineChangeFields: false, FeedBackImages: true, LineDelete: true }), new ClaimStatusLineRule({ ClaimLineStatus: "approved", LineChangeFields: false, FeedBackImages: true, LineDelete: true }), new ClaimStatusLineRule({ ClaimLineStatus: "feedback", LineChangeFields: true, FeedBackImages: false, LineDelete: true }), new ClaimStatusLineRule({ ClaimLineStatus: "denied", LineChangeFields: false, FeedBackImages: false, LineDelete: true }))
                }));
                rules.push(new ClaimStatusHeaderRule({
                    ClaimStatus: "processing",
                    InsertLines: false,
                    HeaderButtonsActiveDraft: false,
                    HeaderButtonsActiveSubmit: false,
                    ClaimHeaderLockVIN: false,
                    ClaimHeaderLockStartDate: false,
                    ClaimHeaderLockAll: true,
                    ClaimHeaderLockSubmitPayment: function (claim) { return true; },
                    LineRules: new Array(new ClaimStatusLineRule({ ClaimLineStatus: "*", LineChangeFields: false, FeedBackImages: false, LineDelete: false }))
                }));
                rules.push(new ClaimStatusHeaderRule({
                    ClaimStatus: "claim feedback",
                    InsertLines: false,
                    HeaderButtonsActiveDraft: false,
                    HeaderButtonsActiveSubmit: false,
                    ClaimHeaderLockVIN: false,
                    ClaimHeaderLockStartDate: false,
                    ClaimHeaderLockAll: true,
                    ClaimHeaderLockSubmitPayment: function (claim) { return false; },
                    LineRules: new Array(new ClaimStatusLineRule({ ClaimLineStatus: "draft", LineChangeFields: false, FeedBackImages: true, LineDelete: false }), new ClaimStatusLineRule({ ClaimLineStatus: "authorized", LineChangeFields: false, FeedBackImages: true, LineDelete: false }), new ClaimStatusLineRule({ ClaimLineStatus: "approved", LineChangeFields: false, FeedBackImages: true, LineDelete: false }), new ClaimStatusLineRule({ ClaimLineStatus: "feedback", LineChangeFields: true, FeedBackImages: true, LineDelete: false }), new ClaimStatusLineRule({ ClaimLineStatus: "denied", LineChangeFields: false, FeedBackImages: true, LineDelete: false }))
                }));
                rules.push(new ClaimStatusHeaderRule({
                    ClaimStatus: "awaiting payment",
                    InsertLines: false,
                    HeaderButtonsActiveDraft: false,
                    HeaderButtonsActiveSubmit: true,
                    ClaimHeaderLockVIN: false,
                    ClaimHeaderLockStartDate: false,
                    ClaimHeaderLockAll: true,
                    ClaimHeaderLockSubmitPayment: function (claim) { return true; },
                    LineRules: new Array(new ClaimStatusLineRule({ ClaimLineStatus: "*", LineChangeFields: false, FeedBackImages: false, LineDelete: false }))
                }));
                rules.push(new ClaimStatusHeaderRule({
                    ClaimStatus: "paid",
                    InsertLines: false,
                    HeaderButtonsActiveDraft: false,
                    HeaderButtonsActiveSubmit: true,
                    ClaimHeaderLockVIN: false,
                    ClaimHeaderLockStartDate: false,
                    ClaimHeaderLockAll: true,
                    ClaimHeaderLockSubmitPayment: function (claim) { return true; },
                    LineRules: new Array(new ClaimStatusLineRule({ ClaimLineStatus: "*", LineChangeFields: false, FeedBackImages: false, LineDelete: false }))
                }));
                rules.push(new ClaimStatusHeaderRule({
                    ClaimStatus: "cancelled",
                    InsertLines: false,
                    HeaderButtonsActiveDraft: false,
                    HeaderButtonsActiveSubmit: false,
                    ClaimHeaderLockVIN: false,
                    ClaimHeaderLockStartDate: false,
                    ClaimHeaderLockAll: true,
                    ClaimHeaderLockSubmitPayment: function (claim) { return true; },
                    LineRules: new Array(new ClaimStatusLineRule({ ClaimLineStatus: "*", LineChangeFields: false, FeedBackImages: false, LineDelete: false }))
                }));
                rules.push(new ClaimStatusHeaderRule({
                    ClaimStatus: "expired",
                    InsertLines: false,
                    HeaderButtonsActiveDraft: false,
                    HeaderButtonsActiveSubmit: false,
                    ClaimHeaderLockVIN: false,
                    ClaimHeaderLockStartDate: false,
                    ClaimHeaderLockAll: true,
                    ClaimHeaderLockSubmitPayment: function (claim) { return true; },
                    LineRules: new Array(new ClaimStatusLineRule({ ClaimLineStatus: "*", LineChangeFields: false, FeedBackImages: false, LineDelete: false }))
                }));
                return rules;
            };
            ClaimService.prototype.getStatusRule = function (status) {
                if (this.LoginService.GetPrivilegeLevel("CLAIMS_FORM") != "Write") {
                    var rule = new ClaimStatusHeaderRule({
                        ClaimStatus: "expired",
                        InsertLines: false,
                        HeaderButtonsActiveDraft: false,
                        HeaderButtonsActiveSubmit: false,
                        ClaimHeaderLockVIN: false,
                        ClaimHeaderLockStartDate: false,
                        ClaimHeaderLockAll: true,
                        ClaimHeaderLockSubmitPayment: function (claim) { return true; },
                        LineRules: new Array(new ClaimStatusLineRule({ ClaimLineStatus: "*", LineChangeFields: false, FeedBackImages: false, LineDelete: false }))
                    });
                    return rule;
                }
                var rules = this.getStatusRules();
                for (var index = 0; index < rules.length; index++) {
                    if (rules[index].ClaimStatus == status.toLocaleLowerCase()) {
                        return rules[index];
                    }
                }
                return null;
            };
            ClaimService.$inject = ["$http", "mv360api", "$q", "app.services.LoginService"];
            return ClaimService;
        }());
        angular
            .module("app.services")
            .service("app.services.ClaimService", ClaimService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=ClaimService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var IContact = (function () {
            function IContact() {
            }
            return IContact;
        }());
        services.IContact = IContact;
        var ContactService = (function () {
            function ContactService($http, mv360api, LoginService, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
            }
            ContactService.prototype.sendEmail = function (data) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/contact",
                    data: data
                });
            };
            ContactService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q"];
            return ContactService;
        }());
        angular
            .module("app.services")
            .service("app.services.ContactService", ContactService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=ContactService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var CountryService = (function () {
            function CountryService($http, mv360api, $state, $q, LoginService) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.$state = $state;
                this.$q = $q;
                this.LoginService = LoginService;
            }
            CountryService.prototype.GetCountries = function () {
                var countries = ["AFG",
                    "ALA",
                    "ALB",
                    "DZA",
                    "ASM",
                    "AND",
                    "AGO",
                    "AIA",
                    "ATA",
                    "ATG",
                    "ARG",
                    "ARM",
                    "ABW",
                    "AUS",
                    "AUT",
                    "AZE",
                    "BHS",
                    "BHR",
                    "BGD",
                    "BRB",
                    "BLR",
                    "BEL",
                    "BLZ",
                    "BEN",
                    "BMU",
                    "BTN",
                    "BOL",
                    "BES",
                    "BIH",
                    "BWA",
                    "BVT",
                    "BRA",
                    "IOT",
                    "BRN",
                    "BGR",
                    "BFA",
                    "BDI",
                    "KHM",
                    "CMR",
                    "CPV",
                    "CYM",
                    "CAF",
                    "TCD",
                    "CHL",
                    "CHN",
                    "CXR",
                    "CCK",
                    "COL",
                    "COM",
                    "COG",
                    "COD",
                    "COK",
                    "CRI",
                    "CIV",
                    "HRV",
                    "CUB",
                    "CUW",
                    "CYP",
                    "CZE",
                    "DNK",
                    "DJI",
                    "DMA",
                    "DOM",
                    "ECU",
                    "EGY",
                    "SLV",
                    "GNQ",
                    "ERI",
                    "EST",
                    "ETH",
                    "FLK",
                    "FRO",
                    "FJI",
                    "FIN",
                    "FRA",
                    "GUF",
                    "PYF",
                    "ATF",
                    "GAB",
                    "GMB",
                    "GEO",
                    "DEU",
                    "GHA",
                    "GIB",
                    "GRC",
                    "GRL",
                    "GRD",
                    "GLP",
                    "GUM",
                    "GTM",
                    "GGY",
                    "GIN",
                    "GNB",
                    "GUY",
                    "HTI",
                    "HMD",
                    "VAT",
                    "HND",
                    "HKG",
                    "HUN",
                    "ISL",
                    "IND",
                    "IDN",
                    "IRN",
                    "IRQ",
                    "IRL",
                    "IMN",
                    "ISR",
                    "ITA",
                    "JAM",
                    "JPN",
                    "JEY",
                    "JOR",
                    "KAZ",
                    "KEN",
                    "KIR",
                    "PRK",
                    "KOR",
                    "KWT",
                    "KGZ",
                    "LAO",
                    "LVA",
                    "LBN",
                    "LSO",
                    "LBR",
                    "LBY",
                    "LIE",
                    "LTU",
                    "LUX",
                    "MAC",
                    "MKD",
                    "MDG",
                    "MWI",
                    "MYS",
                    "MDV",
                    "MLI",
                    "MLT",
                    "MHL",
                    "MTQ",
                    "MRT",
                    "MUS",
                    "MYT",
                    "MEX",
                    "FSM",
                    "MDA",
                    "MCO",
                    "MNG",
                    "MNE",
                    "MSR",
                    "MAR",
                    "MOZ",
                    "MMR",
                    "NAM",
                    "NRU",
                    "NPL",
                    "NLD",
                    "NCL",
                    "NZL",
                    "NIC",
                    "NER",
                    "NGA",
                    "NIU",
                    "NFK",
                    "MNP",
                    "NOR",
                    "OMN",
                    "PAK",
                    "PLW",
                    "PSE",
                    "PAN",
                    "PNG",
                    "PRY",
                    "PER",
                    "PHL",
                    "PCN",
                    "POL",
                    "PRT",
                    "PRI",
                    "QAT",
                    "REU",
                    "ROU",
                    "RUS",
                    "RWA",
                    "BLM",
                    "SHN",
                    "KNA",
                    "LCA",
                    "MAF",
                    "SPM",
                    "VCT",
                    "WSM",
                    "SMR",
                    "STP",
                    "SAU",
                    "SEN",
                    "SRB",
                    "SYC",
                    "SLE",
                    "SGP",
                    "SXM",
                    "SVK",
                    "SVN",
                    "SLB",
                    "SOM",
                    "ZAF",
                    "SGS",
                    "SSD",
                    "ESP",
                    "LKA",
                    "SDN",
                    "SUR",
                    "SJM",
                    "SWZ",
                    "SWE",
                    "CHE",
                    "SYR",
                    "TWN",
                    "TJK",
                    "TZA",
                    "THA",
                    "TLS",
                    "TGO",
                    "TKL",
                    "TON",
                    "TTO",
                    "TUN",
                    "TUR",
                    "TKM",
                    "TCA",
                    "TUV",
                    "UGA",
                    "UKR",
                    "ARE",
                    "GBR",
                    "UMI",
                    "URY",
                    "UZB",
                    "VUT",
                    "VEN",
                    "VNM",
                    "VGB",
                    "VIR",
                    "WLF",
                    "ESH",
                    "YEM",
                    "ZMB",
                    "ZWE"];
                countries = countries.sort();
                countries.unshift("CAN");
                countries.unshift("USA");
                return this.$q.when(countries);
            };
            CountryService.$inject = ["$http", "mv360api", "$state", "$q", "app.services.LoginService"];
            return CountryService;
        }());
        angular
            .module("app.services")
            .service("app.services.CountryService", CountryService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=CountryService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var IDealerConnectBrand = (function () {
            function IDealerConnectBrand() {
            }
            return IDealerConnectBrand;
        }());
        services.IDealerConnectBrand = IDealerConnectBrand;
        var IDealerConnectContact = (function () {
            function IDealerConnectContact() {
            }
            return IDealerConnectContact;
        }());
        services.IDealerConnectContact = IDealerConnectContact;
        var DealerConnectContactService = (function () {
            function DealerConnectContactService($http, mv360api, LoginService, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
            }
            DealerConnectContactService.prototype.getDealerConnectContacts = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/DealerConnectContact/"
                });
            };
            DealerConnectContactService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q"];
            return DealerConnectContactService;
        }());
        angular
            .module("app.services")
            .service("app.services.DealerConnectContactService", DealerConnectContactService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=DealerConnectContactService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var IDashboard = (function () {
            function IDashboard() {
            }
            return IDashboard;
        }());
        services.IDashboard = IDashboard;
        var IDealer = (function () {
            function IDealer() {
            }
            return IDealer;
        }());
        services.IDealer = IDealer;
        var IDealerAccountInformation = (function () {
            function IDealerAccountInformation() {
            }
            return IDealerAccountInformation;
        }());
        services.IDealerAccountInformation = IDealerAccountInformation;
        var IDealerAddress = (function () {
            function IDealerAddress() {
                this.Name = "";
                this.IsPrimary = false;
                this.Purpose = 'Delivery';
                this.Address1 = "";
                this.Address2 = "";
                this.City = "";
                this.StateOrProvince = "";
                this.PostalCode = "";
                this.Country = "";
                this.DealerNumber = "";
                this.DefaultRoles = "";
                this.OneTimeAddressShip = 0;
            }
            return IDealerAddress;
        }());
        services.IDealerAddress = IDealerAddress;
        var DealerService = (function () {
            function DealerService($http, mv360api, LoginService, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
            }
            DealerService.prototype.getDealer = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Dealer/" + this.mv360api.currentDealer
                });
            };
            DealerService.prototype.getDealerByNumber = function (dealerNumber) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Dealer/" + dealerNumber
                });
            };
            DealerService.prototype.getAddressesByNumber = function (dealerNumber) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + dealerNumber + "/DealerAddress",
                    ignoreLoadingBar: true
                });
            };
            DealerService.prototype.getDealerAccountInformationByNumber = function (dealerNumber, permission) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Dealer/" + dealerNumber + "/" + permission
                });
            };
            DealerService.prototype.getAddresses = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/DealerAddress",
                    ignoreLoadingBar: true
                });
            };
            DealerService.prototype.getAddressesShip = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/DealerAddress/GetONlyPermAddress",
                    ignoreLoadingBar: true
                });
            };
            DealerService.prototype.getDashboard = function () {
                if (this.mv360api.currentDealer) {
                    var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                    return httpRetry.run({
                        method: "GET",
                        headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                        url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/Dashboard",
                        ignoreLoadingBar: true
                    });
                }
                else {
                    var deffered = this.$q.defer();
                    deffered.resolve(null);
                    return deffered.promise;
                }
            };
            DealerService.prototype.getDealerAllowedSPIFFSubmission = function (dealerNumber) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Dealer/CheckSpiffAllowed/" + dealerNumber,
                    ignoreLoadingBar: true
                });
            };
            DealerService.prototype.checkIfDealerInCompanyChain = function (dealerNumber, registeredDealerNumber) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Dealer/CheckDealerInCompanyChain/" + dealerNumber + "/" + registeredDealerNumber,
                    ignoreLoadingBar: true
                });
            };
            DealerService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q"];
            return DealerService;
        }());
        angular
            .module("app.services")
            .service("app.services.DealerService", DealerService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=DealerService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var IDeliveryMode = (function () {
            function IDeliveryMode() {
            }
            return IDeliveryMode;
        }());
        services.IDeliveryMode = IDeliveryMode;
        var DeliveryModeService = (function () {
            function DeliveryModeService($http, mv360api, LoginService, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
            }
            DeliveryModeService.prototype.getDeliveryModes = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/DeliveryMode",
                    ignoreLoadingBar: true
                });
            };
            DeliveryModeService.prototype.getDeliveryModeDetails = function (deliveryMode) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/DeliveryMode/" + deliveryMode
                });
            };
            DeliveryModeService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q"];
            return DeliveryModeService;
        }());
        angular
            .module("app.services")
            .service("app.services.DeliveryModeService", DeliveryModeService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=DeliveryModeService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var DocumentSearchQueryFilter = (function () {
            function DocumentSearchQueryFilter() {
            }
            return DocumentSearchQueryFilter;
        }());
        services.DocumentSearchQueryFilter = DocumentSearchQueryFilter;
        var DocumentSearchItem = (function () {
            function DocumentSearchItem() {
            }
            return DocumentSearchItem;
        }());
        services.DocumentSearchItem = DocumentSearchItem;
        var DocumentService = (function () {
            function DocumentService($http, mv360api, LoginService, $q, filesaver) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
                this.filesaver = filesaver;
            }
            DocumentService.prototype.getDocuments = function () {
                var link = this.mv360api.baseURL + "/api/Documents/GetDocuments/";
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: link
                });
            };
            DocumentService.prototype.getSpecificDocuments = function (folder) {
                var link = this.mv360api.baseURL + "/api/Documents/GetDocuments/" + folder;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: link
                });
            };
            DocumentService.prototype.geSearchSpecificDocuments = function (folder, searchTerm) {
                var link = this.mv360api.baseURL + "/api/Documents/GetDocuments/" + folder + "/" + searchTerm;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: link
                });
            };
            DocumentService.prototype.searchDocuments = function (searchTerm) {
                var ds = new services.IDirectorySearch();
                ds.SearchTerms = searchTerm;
                var link = this.mv360api.baseURL + "/api/Documents/SearchDocuments/";
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: link,
                    data: ds
                });
            };
            DocumentService.prototype.downloadFileContents = function (folder, docName) {
                var _this = this;
                var link = this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/Document/" + folder + "/" + docName + "/Contents";
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                link = link.replace("\\", "*backslash*");
                var blobdefer = this.$q.defer();
                httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: link
                }).then(function (base64) {
                    var newblob = _this.b64toBlob(base64, 'application/octet-stream', 512);
                    _this.filesaver.saveAs(newblob, docName);
                    blobdefer.resolve(true);
                })["catch"](function (error) {
                    console.log(error);
                    blobdefer.reject(error);
                });
                return blobdefer.promise;
            };
            DocumentService.prototype.b64toBlob = function (b64Data, contentType, sliceSize) {
                contentType = contentType || '';
                sliceSize = sliceSize || 512;
                var byteCharacters = atob(b64Data);
                var byteArrays = [];
                for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {
                    var slice = byteCharacters.slice(offset, offset + sliceSize);
                    var byteNumbers = new Array(slice.length);
                    for (var i = 0; i < slice.length; i++) {
                        byteNumbers[i] = slice.charCodeAt(i);
                    }
                    var byteArray = new Uint8Array(byteNumbers);
                    byteArrays.push(byteArray);
                }
                var blob = new Blob(byteArrays, { type: contentType });
                return blob;
            };
            DocumentService.prototype.search = function (search, dealerUnitsOnly, pageSize, currentPage, sortField, sortDesc) {
                var query = new services.SearchQuery();
                query.PageSize = pageSize;
                query.CurrentPage = currentPage;
                query.SortField = sortField;
                query.SortAscending = !sortDesc;
                var filter = new DocumentSearchQueryFilter();
                filter.Folder = search;
                query.Filter = filter;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/Documents/Search",
                    data: query
                });
            };
            DocumentService.prototype.searchAdvanced = function (query) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/Document/Search",
                    data: query
                });
            };
            DocumentService.prototype.searchInvoices = function (query) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/Document/SearchInvoices",
                    data: query
                });
            };
            DocumentService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q", "FileSaver"];
            return DocumentService;
        }());
        angular
            .module("app.services")
            .service("app.services.DocumentService", DocumentService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=DocumentService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var IFailureCode = (function () {
            function IFailureCode() {
            }
            return IFailureCode;
        }());
        services.IFailureCode = IFailureCode;
        var FailureCodeService = (function () {
            function FailureCodeService($http, mv360api, LoginService, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
            }
            FailureCodeService.prototype.getFailureCodes = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/FailureCode"
                });
            };
            FailureCodeService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q"];
            return FailureCodeService;
        }());
        angular
            .module("app.services")
            .service("app.services.FailureCodeService", FailureCodeService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=FailureCodeService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var IFeedbackItem = (function () {
            function IFeedbackItem() {
            }
            return IFeedbackItem;
        }());
        services.IFeedbackItem = IFeedbackItem;
        var FeedbackService = (function () {
            function FeedbackService($http, mv360api, LoginService, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
            }
            FeedbackService.prototype.getFeedback = function (feedbackType, id) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Feedback/" + feedbackType + "/" + id
                });
            };
            FeedbackService.prototype.getFeedbackToSplit = function (feedbackType, id, toID) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Feedback/" + feedbackType + "/" + id + "/" + toID
                });
            };
            FeedbackService.prototype.postFeedback = function (item) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Feedback/",
                    data: item
                });
            };
            FeedbackService.prototype.postFeedbackForSplits = function (item, overrideStatus, claimStatusForOverride, copy) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Feedback/" + overrideStatus + "/" + claimStatusForOverride + "/" + copy,
                    data: item
                });
            };
            FeedbackService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q"];
            return FeedbackService;
        }());
        angular
            .module("app.services")
            .service("app.services.FeedbackService", FeedbackService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=FeedbackService.js.map
angular.module("app.core")
    .directive('fileModel', ['$parse', function ($parse) {
        return {
            restrict: 'A',
            link: function (scope, element, attrs) {
                var model = $parse(attrs.fileModel);
                var modelSetter = model.assign;
                element.bind('change', function () {
                    scope.$apply(function () {
                        modelSetter(scope, element[0].files[0]);
                    });
                });
            }
        };
    }]);
//# sourceMappingURL=FileModelDirective.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var FileUploadService = (function () {
            function FileUploadService($http, mv360api, LoginService, $q, filesaver) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
                this.filesaver = filesaver;
            }
            FileUploadService.prototype.getUploadId = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/FileUpload/UploadId"
                });
            };
            FileUploadService.prototype.getUploadURL = function () {
                return this.mv360api.baseURL + "/api/FileUpload";
            };
            FileUploadService.prototype.getTempURL = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/FileUpload/TempURL"
                });
            };
            FileUploadService.prototype.download = function (file) {
                var _this = this;
                this.$http({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    responseType: "arraybuffer",
                    url: this.mv360api.baseURL + "/api/FileUpload?file=" + file
                }).then(function (resp) {
                    _this.processArrayBufferToBlob(resp.data, resp.headers);
                });
            };
            FileUploadService.prototype.downloadFile = function (file) {
                var _this = this;
                this.$http({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    responseType: "arraybuffer",
                    url: this.mv360api.baseURL + "/api/FileUpload?file=" + file
                }).then(function (resp) {
                    _this.processArrayBufferToBlob(resp.data, resp.headers);
                })["catch"](function (ex) {
                    console.log(ex);
                });
            };
            FileUploadService.prototype.uploadFile = function (file, fileType, recordID) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/FileUpload/ClaimOrPart/" + fileType + "/" + recordID,
                    data: file
                });
            };
            FileUploadService.prototype.processArrayBufferToBlob = function (data, headers) {
                var octetStreamMime = 'application/octet-stream';
                var success = false;
                headers = headers();
                var filename = headers['x-filename'];
                var contentType = headers['content-type'] || octetStreamMime;
                var blob = new Blob([data], { type: contentType });
                this.filesaver.saveAs(blob, filename);
            };
            FileUploadService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q", "FileSaver"];
            return FileUploadService;
        }());
        angular
            .module("app.services")
            .service("app.services.FileUploadService", FileUploadService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=FileUploadService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var FlatRateGroupService = (function () {
            function FlatRateGroupService($http, mv360api, LoginService, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
            }
            FlatRateGroupService.prototype.getFlatRateGroups = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/FlatRateGroup"
                });
            };
            FlatRateGroupService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q"];
            return FlatRateGroupService;
        }());
        angular
            .module("app.services")
            .service("app.services.FlatRateGroupService", FlatRateGroupService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=FlatRateGroupService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var IFlatRateManual = (function () {
            function IFlatRateManual() {
            }
            return IFlatRateManual;
        }());
        services.IFlatRateManual = IFlatRateManual;
        var FlatRateSearchQueryFilter = (function () {
            function FlatRateSearchQueryFilter() {
            }
            return FlatRateSearchQueryFilter;
        }());
        services.FlatRateSearchQueryFilter = FlatRateSearchQueryFilter;
        var FlatRateManualService = (function () {
            function FlatRateManualService($http, mv360api, LoginService, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
            }
            FlatRateManualService.prototype.getFlatRateManual = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/FlatRateManual"
                });
            };
            FlatRateManualService.prototype.getFlatRateCode = function (code) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/FlatRateManual/" + code
                });
            };
            FlatRateManualService.prototype.getFlatRateCodeDetails = function (flatRateCode) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/FlatRateManual/details/" + flatRateCode
                });
            };
            FlatRateManualService.prototype.searchFlatRateManual = function (search, sortField, sortDesc) {
                var odata = '?';
                if (search) {
                    odata = odata + "$filter=";
                    var strings = search.split(" ");
                    for (var index = 0; index < strings.length; index++) {
                        odata = odata + "(substringof(toupper('" + strings[index] + "'), toupper(FlatRateCode)) eq true or substringof(toupper('" + strings[index] + "'), toupper(Description)) eq true" +
                            " or substringof(toupper('" + strings[index] + "'), toupper(OperationCodeId)) eq true )";
                        if (index < strings.length - 1) {
                            odata = odata + " and ";
                        }
                    }
                }
                if (sortField) {
                    odata = odata + "&$orderby=" + sortField;
                    if (sortDesc) {
                        odata = odata + ' desc';
                    }
                }
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/FlatRateManual" + odata
                });
            };
            FlatRateManualService.prototype.search = function (search) {
                var query = new services.SearchQuery();
                query.PageSize = 5;
                var filter = new FlatRateSearchQueryFilter();
                filter.SimpleSearch = search;
                query.Filter = filter;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/FlatRateManual/Search",
                    data: query
                });
            };
            FlatRateManualService.prototype.searchAdvanced = function (query) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/FlatRateManual/Search",
                    data: query
                });
            };
            FlatRateManualService.prototype.searchCategory = function (categoryName, filter) {
                console.log(filter);
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/FlatRateManual/Category/" + categoryName,
                    data: filter
                });
            };
            FlatRateManualService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q"];
            return FlatRateManualService;
        }());
        angular
            .module("app.services")
            .service("app.services.FlatRateManualService", FlatRateManualService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=FlatRateManualService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var IFolder = (function () {
            function IFolder() {
            }
            return IFolder;
        }());
        services.IFolder = IFolder;
        var FolderService = (function () {
            function FolderService($http, mv360api, LoginService, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
            }
            FolderService.prototype.getRootFolders = function () {
                if (this.mv360api.currentDealer) {
                    var link = this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/Folder";
                    var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                    return httpRetry.run({
                        method: "GET",
                        headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                        url: link
                    });
                }
                else {
                    var deffered = this.$q.defer();
                    deffered.resolve(null);
                    return deffered.promise;
                }
            };
            FolderService.prototype.getChildFolders = function (folderName) {
                var link = this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/Folder/" + folderName;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: link
                });
            };
            FolderService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q"];
            return FolderService;
        }());
        angular
            .module("app.services")
            .service("app.services.FolderService", FolderService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=FolderService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var IInquiry = (function () {
            function IInquiry() {
            }
            return IInquiry;
        }());
        services.IInquiry = IInquiry;
        var IVendorInquiry = (function () {
            function IVendorInquiry() {
            }
            return IVendorInquiry;
        }());
        services.IVendorInquiry = IVendorInquiry;
        var IVendorInquiryLine = (function () {
            function IVendorInquiryLine() {
            }
            return IVendorInquiryLine;
        }());
        services.IVendorInquiryLine = IVendorInquiryLine;
        var IStatementHeader = (function () {
            function IStatementHeader() {
            }
            return IStatementHeader;
        }());
        services.IStatementHeader = IStatementHeader;
        var InquirySearchQueryFilter = (function () {
            function InquirySearchQueryFilter() {
            }
            return InquirySearchQueryFilter;
        }());
        services.InquirySearchQueryFilter = InquirySearchQueryFilter;
        var InquirySearchCheckQueryFilter = (function () {
            function InquirySearchCheckQueryFilter() {
            }
            return InquirySearchCheckQueryFilter;
        }());
        services.InquirySearchCheckQueryFilter = InquirySearchCheckQueryFilter;
        var IVendorCheck = (function () {
            function IVendorCheck() {
            }
            return IVendorCheck;
        }());
        services.IVendorCheck = IVendorCheck;
        var IVendorCheckExport = (function () {
            function IVendorCheckExport() {
            }
            return IVendorCheckExport;
        }());
        services.IVendorCheckExport = IVendorCheckExport;
        var InquiryService = (function () {
            function InquiryService($http, mv360api, $q, LoginService) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.$q = $q;
                this.LoginService = LoginService;
            }
            InquiryService.prototype.getAgingReport = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/Inquiry/Aging"
                });
            };
            InquiryService.prototype.getInquiries = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/Inquiry"
                });
            };
            InquiryService.prototype.getStatementHeader = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/Inquiry/Details"
                });
            };
            InquiryService.prototype.search = function (search, dealerUnitsOnly, pageSize, currentPage, sortField, sortDesc) {
                var query = new services.SearchQuery();
                query.PageSize = pageSize;
                query.CurrentPage = currentPage;
                query.SortField = sortField;
                query.SortAscending = !sortDesc;
                var filter = new InquirySearchQueryFilter();
                filter.DealerNumber = this.mv360api.currentDealer;
                query.Filter = filter;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/Inquiry",
                    data: query
                });
            };
            InquiryService.prototype.searchAdvanced = function (query) {
                query.Filter.DealerNumber = this.mv360api.currentDealer;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return query.Filter.InvoiceType != null ?
                    httpRetry.run({
                        method: "POST",
                        headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                        url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/Inquiry/Invoice",
                        data: query
                    }) :
                    httpRetry.run({
                        method: "POST",
                        headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                        url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/Inquiry",
                        data: query
                    });
            };
            InquiryService.prototype.searchVendor = function (search, dealerUnitsOnly, pageSize, currentPage, sortField, sortDesc) {
                var query = new services.SearchQuery();
                query.PageSize = pageSize;
                query.CurrentPage = currentPage;
                query.SortField = sortField;
                query.SortAscending = !sortDesc;
                var filter = new InquirySearchQueryFilter();
                filter.DealerNumber = this.mv360api.currentVendor;
                query.Filter = filter;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/Inquiry/Vendor",
                    data: query
                });
            };
            InquiryService.prototype.searchVendorAdvanced = function (query) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/VendorPortal/Search/Invoice/" + this.mv360api.currentVendor,
                    data: query
                });
            };
            InquiryService.prototype.searchCheckAdvanced = function (query) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/VendorPortal/Search/Check/" + this.mv360api.currentVendor,
                    data: query
                });
            };
            InquiryService.prototype.checkSearchResultExport = function (query) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/VendorPortal/Export/Check/" + this.mv360api.currentVendor,
                    data: query
                });
            };
            InquiryService.prototype.getVendorInvoiceHeader = function (invoiceID) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/VendorPortal/InvoiceDetails/" + invoiceID + "/" + this.mv360api.currentVendor
                });
            };
            InquiryService.prototype.getVendorInvoiceLines = function (invoiceID) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/VendorPortal/InvoiceLines/" + invoiceID + "/" + this.mv360api.currentVendor
                });
            };
            InquiryService.$inject = ["$http", "mv360api", "$q", "app.services.LoginService"];
            return InquiryService;
        }());
        angular
            .module("app.services")
            .service("app.services.InquiryService", InquiryService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=InquiryService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        var SearchQuery = (function () {
            function SearchQuery() {
            }
            return SearchQuery;
        }());
        services.SearchQuery = SearchQuery;
        var SearchResult = (function () {
            function SearchResult() {
            }
            return SearchResult;
        }());
        services.SearchResult = SearchResult;
        var SingleFieldSearchQuery = (function () {
            function SingleFieldSearchQuery() {
            }
            return SingleFieldSearchQuery;
        }());
        services.SingleFieldSearchQuery = SingleFieldSearchQuery;
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=ISearchService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var LocationService = (function () {
            function LocationService($http, mv360api, LoginService, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
            }
            LocationService.prototype.getLocation = function (locationName) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Location/" + locationName
                });
            };
            LocationService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q"];
            return LocationService;
        }());
        angular
            .module("app.services")
            .service("app.services.LocationService", LocationService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=LocationService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var IUserInfo = (function () {
            function IUserInfo() {
            }
            return IUserInfo;
        }());
        services.IUserInfo = IUserInfo;
        var IUserInfoDealer = (function () {
            function IUserInfoDealer() {
            }
            return IUserInfoDealer;
        }());
        services.IUserInfoDealer = IUserInfoDealer;
        var IAccessTokenResponse = (function () {
            function IAccessTokenResponse() {
            }
            return IAccessTokenResponse;
        }());
        services.IAccessTokenResponse = IAccessTokenResponse;
        var LoginService = (function () {
            function LoginService($http, mv360api, $state, $localStorage, rootScope, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.$state = $state;
                this.$localStorage = $localStorage;
                this.rootScope = rootScope;
                this.$q = $q;
            }
            LoginService.prototype.StoredAccessToken = function () {
                return this.$localStorage.accessToken;
            };
            LoginService.prototype.StoredRefreshToken = function () {
                return this.$localStorage.refreshToken;
            };
            LoginService.prototype.StoredAccessType = function () {
                return this.$localStorage.accessType;
            };
            LoginService.prototype.StoredSelectedDealer = function () {
                return this.$localStorage.selectedDealer;
            };
            LoginService.prototype.selectDealer = function () {
                var vm = this;
                vm.mv360api.currentDealer = this.selectedDealer.DealerNumber;
                vm.UserInfo.DealerCreditOnHold = this.selectedDealer.CreditHoldCode;
                vm.UserInfo.DefaultDivision = this.selectedDealer.DefaultDivision;
                vm.UserInfo.DealerPortalUserId = this.selectedDealer.UserDealerId;
                vm.rootScope.Claims = null;
                vm.rootScope.PartOrder = null;
                vm.rootScope.PartsCatalog = null;
                vm.rootScope.VIN = null;
                vm.rootScope.SPIFF = null;
                vm.GetPrivileges(vm.mv360api.currentDealer).then(function (result) {
                    console.log("Privs Returned");
                    console.log(result);
                    vm.mv360api.currentPrivileges = result;
                });
                vm.$localStorage.selectedDealer = JSON.stringify(this.selectedDealer.DealerNumber);
                var currentPage = vm.$state.current.name;
                if (currentPage.length != 0) {
                    vm.$state.go("reload", { "statename": "home" });
                }
                else {
                }
            };
            LoginService.prototype.getDealer = function () {
                return this.$http({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Dealer/" + this.mv360api.currentDealer
                })
                    .then(function (response) {
                    return response.data;
                });
            };
            LoginService.prototype.IsInRole = function (role) {
                if (this.UserInfo) {
                    var rolelist = this.UserInfo.Roles.split(",");
                    if (rolelist.filter(function (value, index, array) {
                        return (value == role);
                    }).length > 0) {
                        return true;
                    }
                }
                return false;
            };
            LoginService.prototype.HasFolderPrivilege = function (folder) {
                var priv = this.getFolderPrivilege(folder);
                if (priv) {
                    return (priv.PrivilegeLevel != "None");
                }
                return false;
            };
            LoginService.prototype.ValidateLoginAttempt = function (userName) {
                return this.$http({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Dealer/" + this.mv360api.currentDealer
                })
                    .then(function (response) {
                    return response.data;
                });
            };
            LoginService.prototype.GetPrivilegeLevel = function (privilege) {
                var vm = this;
                if (vm.mv360api.currentPrivileges) {
                    var privilegeResult = vm.mv360api.currentPrivileges.filter(function (priv) { return priv.PrivilegeName == privilege; });
                    return privilegeResult.length > 0 ?
                        privilegeResult[0].PrivilegeLevel :
                        "None";
                }
            };
            LoginService.prototype.getFolderPrivilege = function (folderName) {
                if (!this.mv360api.currentPrivileges) {
                    return null;
                }
                var result = this.mv360api.currentPrivileges.filter(function (priv) {
                    return priv.FolderName == folderName;
                });
                if (result.length > 0) {
                    return result[0];
                }
                return null;
            };
            LoginService.prototype.IsLoggedIn = function () {
                if (this.UserInfo) {
                    return true;
                }
                return false;
            };
            LoginService.prototype.IsVendorLogin = function () {
                var vm = this;
                if (vm.$localStorage.vendorLogin != null) {
                    return vm.$localStorage.vendorLogin;
                }
                return false;
            };
            LoginService.prototype.IsVendorEnvironment = function () {
                var vm = this;
                return vm.$http({
                    method: 'GET', url: this.mv360api.baseURL + "/api/User/EnvironmentType",
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    }
                }).then(function (result) {
                    if (result.data == "Vendor") {
                        return true;
                    }
                    else {
                        return false;
                    }
                });
                ;
            };
            LoginService.prototype.LoginBasic = function (userName, password) {
                this.$localStorage.selectedDealer = null;
                var vm = this;
                return vm.$http.post("/api/token", "userName=" + encodeURIComponent(userName) +
                    "&password=" + encodeURIComponent(password) +
                    "&grant_type=password", { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } });
            };
            LoginService.prototype.VendorLoginBasic = function (userName, password) {
                var vm = this;
                return vm.$http.post("/api/token", "userName=" + encodeURIComponent(userName) +
                    "&password=" + encodeURIComponent(password) +
                    "&grant_type=password", { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } });
            };
            LoginService.prototype.Logout = function (dontChangeState) {
                if (dontChangeState === void 0) { dontChangeState = false; }
                var vm = this;
                var isVendorLogin = vm.$localStorage.vendorLogin;
                vm.$localStorage.selectedDealer = null;
                vm.$localStorage.accessToken = null;
                vm.$localStorage.refreshToken = null;
                vm.$localStorage.accessType = null;
                vm.$localStorage.markupPercent = null;
                vm.$localStorage.vendorLogin = null;
                vm.mv360api.accessToken = null;
                vm.mv360api.refreshToken = null;
                vm.mv360api.authAccount = "";
                vm.UserInfo = null;
                if (!dontChangeState && (isVendorLogin == null || isVendorLogin == false)) {
                    vm.$state.go('login');
                }
                if (!dontChangeState && isVendorLogin != null && isVendorLogin == true) {
                    vm.$state.go('vendorlogin');
                }
                else {
                    vm.$state.go('login');
                }
            };
            LoginService.prototype.ResetTimer = function () {
                var vm = this;
                if (vm.IsLoggedIn()) {
                    clearTimeout(this.sessionTimer);
                    this.sessionTimer = setTimeout(function () {
                        vex.dialog.alert({
                            message: 'Your current session has expired. Please login to continue.',
                            callback: function (value) {
                                vm.Logout();
                            }
                        });
                    }, timeout * 60 * 1000);
                }
            };
            LoginService.prototype.DisplayOutOfService = function () {
                var vm = this;
                vm.$state.go('outOfService');
            };
            LoginService.prototype.Validate = function (token, refreshToken) {
                var _this = this;
                return new this.$q(function (resolve, reject) {
                    var vm = _this;
                    vm.$http({
                        method: 'GET', url: _this.mv360api.baseURL + "/api/User",
                        headers: {
                            "Authorization": "Bearer " + token
                        }
                    }).then(function (response) {
                        vm.UserInfo = response.data;
                        vm.selectedDealer = vm.getDealerInfo(vm.UserInfo.DefaultDealer);
                        if (!vm.selectedDealer) {
                            vm.selectedDealer = vm.UserInfo.Dealers[0];
                        }
                        vm.mv360api.currentDealer = vm.selectedDealer.DealerNumber;
                        vm.UserInfo.DealerCreditOnHold = vm.selectedDealer.CreditHoldCode;
                        vm.UserInfo.DefaultDivision = vm.selectedDealer.DefaultDivision;
                        vm.mv360api.logo = "acmelogo.png";
                        vm.mv360api.accessToken = token;
                        vm.$localStorage.accessToken = vm.mv360api.accessToken;
                        vm.mv360api.refreshToken = refreshToken;
                        vm.$localStorage.refreshToken = vm.mv360api.refreshToken;
                        vm.$localStorage.vendorLogin = false;
                        vm.GetPrivileges(vm.mv360api.currentDealer)
                            .then(function (privResult) {
                            vm.mv360api.currentPrivileges = privResult;
                            resolve(true);
                        })["catch"](function (ex) {
                            reject();
                        });
                        vm.getDefaultMarkupPercent()
                            .then(function (result) {
                            vm.$localStorage.markupPercent = result ? 15.0 : 0.0;
                        })["catch"](function (ex) {
                            reject();
                        });
                        vm.GetEnvironmentCompanyName()
                            .then(function (result) {
                            vm.$localStorage.companyName = result.toString();
                        });
                    }, function (error) {
                        console.log(error);
                        vm.$localStorage.accessToken = null;
                        vm.$localStorage.refreshToken = null;
                        vm.$localStorage.markupPercent = 0;
                        vm.UserInfo = null;
                        reject();
                    });
                });
            };
            LoginService.prototype.ValidateVendor = function (token, refreshToken) {
                var _this = this;
                return new this.$q(function (resolve, reject) {
                    var vm = _this;
                    vm.$http({
                        method: 'GET', url: _this.mv360api.baseURL + "/api/VendorUser",
                        headers: {
                            "Authorization": "Bearer " + token
                        }
                    }).then(function (response) {
                        vm.UserInfo = response.data;
                        vm.UserInfo.IsVendorAccount = true;
                        vm.mv360api.accessToken = token;
                        vm.$localStorage.accessToken = vm.mv360api.accessToken;
                        vm.mv360api.refreshToken = refreshToken;
                        vm.$localStorage.refreshToken = vm.mv360api.refreshToken;
                        vm.$localStorage.vendorLogin = true;
                        vm.mv360api.currentVendor = vm.UserInfo.VendorNumber;
                        resolve(true);
                    }, function (error) {
                        console.log(error);
                        vm.$localStorage.accessToken = null;
                        vm.$localStorage.refreshToken = null;
                        vm.$localStorage.markupPercent = 0;
                        vm.UserInfo = null;
                        reject();
                    });
                });
            };
            LoginService.prototype.getDealerInfo = function (dealerNumber) {
                var result = this.UserInfo.Dealers.filter(function (ud) {
                    return ud.DealerNumber == dealerNumber;
                });
                if (result.length == 1) {
                    return result[0];
                }
                return null;
            };
            LoginService.prototype.getDefaultMarkupPercent = function () {
                var vm = this;
                return vm.$http({
                    method: 'GET', url: vm.mv360api.baseURL + "/api/Parameters/MarkupPercent",
                    headers: {
                        "Authorization": "Bearer " + vm.mv360api.accessToken
                    }
                }).then(function (response) {
                    return response.data;
                });
            };
            LoginService.prototype.GetEnvironmentCompanyName = function () {
                var vm = this;
                return vm.$http({
                    method: 'GET', url: this.mv360api.baseURL + "/api/Environment/CompanyName",
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    }
                }).then(function (result) {
                    return result.data;
                });
                ;
            };
            LoginService.prototype.GetEnvironmentType = function () {
                var vm = this;
                return vm.$http({
                    method: 'GET', url: this.mv360api.baseURL + "/api/Environment/Type",
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    }
                }).then(function (result) {
                    return result.data;
                });
                ;
            };
            LoginService.prototype.GetPrivileges = function (dealerNumber) {
                var vm = this;
                return vm.$http({
                    method: 'GET', url: vm.mv360api.baseURL + "/api/User/Privileges/" + dealerNumber,
                    headers: {
                        "Authorization": "Bearer " + vm.mv360api.accessToken
                    }
                }).then(function (response) {
                    return response.data;
                });
            };
            LoginService.prototype.AttemptTokenRefresh = function () {
                var vm = this;
                console.log("attempting to refresh");
                return vm.$http.post("/api/token", "refresh_token=" + vm.$localStorage.refreshToken +
                    "&grant_type=refresh_token", { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }).then(function (resp) {
                    var responseData = resp.data;
                    if (responseData.access_token) {
                        vm.mv360api.accessToken = responseData.access_token;
                        vm.$localStorage.accessToken = vm.mv360api.accessToken;
                        vm.mv360api.refreshToken = responseData.refresh_token;
                        vm.$localStorage.refreshToken = vm.mv360api.refreshToken;
                        return true;
                        ;
                    }
                    else {
                        return false;
                    }
                });
            };
            LoginService.prototype.DeleteRefreshToken = function () {
                var vm = this;
                vm.$http({
                    method: 'DELETE', url: vm.mv360api.baseURL + "/api/RefreshTokens",
                    params: {
                        "tokenId": vm.mv360api.refreshToken
                    }
                });
            };
            LoginService.$inject = ["$http", "mv360api", "$state", "$localStorage", "$rootScope", "$q"];
            return LoginService;
        }());
        angular
            .module("app.services")
            .service("app.services.LoginService", LoginService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=LoginService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var MakeService = (function () {
            function MakeService($http, mv360api, LoginService, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
            }
            MakeService.prototype.getMakes = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Make"
                });
            };
            MakeService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q"];
            return MakeService;
        }());
        angular
            .module("app.services")
            .service("app.services.MakeService", MakeService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=MakeService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var IMessageItem = (function () {
            function IMessageItem() {
            }
            return IMessageItem;
        }());
        services.IMessageItem = IMessageItem;
        var IMessageUserDealer = (function () {
            function IMessageUserDealer() {
            }
            return IMessageUserDealer;
        }());
        services.IMessageUserDealer = IMessageUserDealer;
        var IMessageAttachment = (function () {
            function IMessageAttachment() {
            }
            return IMessageAttachment;
        }());
        services.IMessageAttachment = IMessageAttachment;
        var MessageSearchQueryFilter = (function () {
            function MessageSearchQueryFilter() {
            }
            return MessageSearchQueryFilter;
        }());
        services.MessageSearchQueryFilter = MessageSearchQueryFilter;
        var MessageService = (function () {
            function MessageService($http, mv360api, LoginService, $q, fileSaver) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
                this.fileSaver = fileSaver;
            }
            MessageService.prototype.getMessages = function (includeArchived) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Message/dealer/" + this.mv360api.currentDealer + "/" + includeArchived
                });
            };
            MessageService.prototype.markMessageRead = function (messageId) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "PUT",
                    ignoreLoadingBar: true,
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Message/dealer/" + this.mv360api.currentDealer + "/" + messageId
                });
            };
            MessageService.prototype.downloadFileContent = function (messageId, messageAttachment) {
                var _this = this;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    responseType: 'arraybuffer',
                    url: this.mv360api.baseURL + "/api/Message/attachment/" + messageId + "/" + messageAttachment.FileName + "/" + messageAttachment.Extension
                }).then(function (resp) {
                    var octetStreamMime = 'application/octet-stream';
                    var blob = new Blob([resp], { type: octetStreamMime });
                    _this.fileSaver.saveAs(blob, messageAttachment.FileName + "." + messageAttachment.Extension);
                });
            };
            MessageService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q", "FileSaver"];
            return MessageService;
        }());
        angular
            .module("app.services")
            .service("app.services.MessageService", MessageService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=MessageService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var ModelCodeService = (function () {
            function ModelCodeService($http, mv360api, LoginService, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
            }
            ModelCodeService.prototype.getModelCodes = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/ModelCode"
                });
            };
            ModelCodeService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q"];
            return ModelCodeService;
        }());
        angular
            .module("app.services")
            .service("app.services.ModelCodeService", ModelCodeService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=ModelCodeService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var ModelYearService = (function () {
            function ModelYearService($http, mv360api, LoginService, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
            }
            ModelYearService.prototype.getModelYears = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/ModelYear"
                });
            };
            ModelYearService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q"];
            return ModelYearService;
        }());
        angular
            .module("app.services")
            .service("app.services.ModelYearService", ModelYearService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=ModelYearService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var ParametersService = (function () {
            function ParametersService($http, mv360api, LoginService, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
            }
            ParametersService.prototype.getDefaultMarkupPercent = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Parameters/markuppercent/"
                });
            };
            ParametersService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q"];
            return ParametersService;
        }());
        angular
            .module("app.services")
            .service("app.services.ParametersService", ParametersService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=ParametersService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var IPartOrderLegacy = (function () {
            function IPartOrderLegacy() {
            }
            return IPartOrderLegacy;
        }());
        services.IPartOrderLegacy = IPartOrderLegacy;
        var IPartOrderLegacyLine = (function () {
            function IPartOrderLegacyLine() {
            }
            return IPartOrderLegacyLine;
        }());
        services.IPartOrderLegacyLine = IPartOrderLegacyLine;
        var PartOrderLegacySearchQueryFilter = (function () {
            function PartOrderLegacySearchQueryFilter() {
            }
            return PartOrderLegacySearchQueryFilter;
        }());
        services.PartOrderLegacySearchQueryFilter = PartOrderLegacySearchQueryFilter;
        var PartOrderLegacyService = (function () {
            function PartOrderLegacyService($http, mv360api, $q, LoginService) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.$q = $q;
                this.LoginService = LoginService;
            }
            PartOrderLegacyService.prototype.getPartOrders = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/PartOrder"
                });
            };
            PartOrderLegacyService.prototype.getPrintLink = function (partOrderNumber) {
                return this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/PartOrder/" + partOrderNumber + "/Print";
            };
            PartOrderLegacyService.prototype.getPartOrder = function (partOrderNumber) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/PartOrder/Legacy/" + partOrderNumber
                });
            };
            PartOrderLegacyService.prototype.getPartOrderInvoices = function (partOrderNumber) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/PartOrder/Invoices/" + partOrderNumber
                });
            };
            PartOrderLegacyService.prototype.getInvoice = function (invoice) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/PartOrder/" + invoice + "/Invoice"
                });
            };
            PartOrderLegacyService.prototype.getOptions = function (salesID) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/PartOrder/" + salesID + "/Options"
                });
            };
            PartOrderLegacyService.prototype.search = function (search, dealerUnitsOnly, pageSize, currentPage, sortField, sortDesc) {
                var query = new services.SearchQuery();
                query.PageSize = pageSize;
                query.CurrentPage = currentPage;
                query.SortField = sortField;
                query.SortAscending = !sortDesc;
                var filter = new services.PartOrderSearchQueryFilter();
                filter.SimpleSearch = search;
                query.Filter = filter;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/PartOrder/Search",
                    data: query,
                    ignoreLoadingBar: true
                });
            };
            PartOrderLegacyService.prototype.searchAdvanced = function (query) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/PartOrder/LegacySearch",
                    data: query,
                    ignoreLoadingBar: true
                });
            };
            PartOrderLegacyService.$inject = ["$http", "mv360api", "$q", "app.services.LoginService"];
            return PartOrderLegacyService;
        }());
        angular
            .module("app.services")
            .service("app.services.PartOrderLegacyService", PartOrderLegacyService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=PartOrderLegacy.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var IPartOrder = (function () {
            function IPartOrder() {
            }
            return IPartOrder;
        }());
        services.IPartOrder = IPartOrder;
        var IPartOrderLine = (function () {
            function IPartOrderLine() {
            }
            return IPartOrderLine;
        }());
        services.IPartOrderLine = IPartOrderLine;
        var PartOrderSearchQueryFilter = (function () {
            function PartOrderSearchQueryFilter() {
            }
            return PartOrderSearchQueryFilter;
        }());
        services.PartOrderSearchQueryFilter = PartOrderSearchQueryFilter;
        var PartOrderInvoiceHeader = (function () {
            function PartOrderInvoiceHeader() {
            }
            return PartOrderInvoiceHeader;
        }());
        services.PartOrderInvoiceHeader = PartOrderInvoiceHeader;
        var PartOrderService = (function () {
            function PartOrderService($http, mv360api, $q, LoginService) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.$q = $q;
                this.LoginService = LoginService;
            }
            PartOrderService.prototype.getPartOrders = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/PartOrder"
                });
            };
            PartOrderService.prototype.getPrintLink = function (partOrderNumber) {
                return this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/PartOrder/" + partOrderNumber + "/Print";
            };
            PartOrderService.prototype.addPartOrder = function (order) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/PartOrder",
                    data: order
                });
            };
            PartOrderService.prototype.deletePartOrder = function (partOrderNumber) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "DELETE",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/PartOrder/" + partOrderNumber
                });
            };
            PartOrderService.prototype.getPartOrder = function (partOrderNumber) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/PartOrder/" + partOrderNumber
                });
            };
            PartOrderService.prototype.getPartOrderInvoices = function (partOrderNumber) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/PartOrder/Invoices/" + partOrderNumber
                });
            };
            PartOrderService.prototype.getInvoice = function (invoice) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/PartOrder/" + invoice + "/Invoice"
                });
            };
            PartOrderService.prototype.getOptions = function (salesID) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/PartOrder/" + salesID + "/Options"
                });
            };
            PartOrderService.prototype.updatePartOrder = function (order) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "PUT",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/PartOrder/" + order.SalesId,
                    data: order
                });
            };
            PartOrderService.prototype.search = function (search, dealerUnitsOnly, pageSize, currentPage, sortField, sortDesc) {
                var query = new services.SearchQuery();
                query.PageSize = pageSize;
                query.CurrentPage = currentPage;
                query.SortField = sortField;
                query.SortAscending = !sortDesc;
                var filter = new PartOrderSearchQueryFilter();
                filter.SimpleSearch = search;
                query.Filter = filter;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/PartOrder/Search",
                    data: query,
                    ignoreLoadingBar: true
                });
            };
            PartOrderService.prototype.searchAdvanced = function (query) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/PartOrder/Search",
                    data: query,
                    ignoreLoadingBar: true
                });
            };
            PartOrderService.prototype.searchLegacy = function (query) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/PartOrder/LegacySearch",
                    data: query,
                    ignoreLoadingBar: true
                });
            };
            PartOrderService.prototype.getStates = function () {
                var states = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delaware', 'Florida', 'Georgia', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire', 'New Jersey', 'New Mexico', 'New York', 'North Carolina', 'North Dakota', 'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island', 'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont', 'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming'];
                return states;
            };
            PartOrderService.prototype.getStatuses = function () {
                var statuses = ['Draft', 'Open Order', 'Shipped', 'Invoiced', 'Cancelled'];
                return statuses;
            };
            PartOrderService.$inject = ["$http", "mv360api", "$q", "app.services.LoginService"];
            return PartOrderService;
        }());
        angular
            .module("app.services")
            .service("app.services.PartOrderService", PartOrderService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=PartOrderService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var PartCatalogCategoryResults = (function () {
            function PartCatalogCategoryResults() {
            }
            return PartCatalogCategoryResults;
        }());
        services.PartCatalogCategoryResults = PartCatalogCategoryResults;
        var ILookup = (function () {
            function ILookup() {
            }
            return ILookup;
        }());
        services.ILookup = ILookup;
        var PartsCatalogSearchValue = (function () {
            function PartsCatalogSearchValue() {
            }
            return PartsCatalogSearchValue;
        }());
        services.PartsCatalogSearchValue = PartsCatalogSearchValue;
        var Filter = (function () {
            function Filter() {
            }
            return Filter;
        }());
        services.Filter = Filter;
        var IPartsCatalogDivision = (function () {
            function IPartsCatalogDivision() {
            }
            return IPartsCatalogDivision;
        }());
        services.IPartsCatalogDivision = IPartsCatalogDivision;
        var IPartsCatalogCategory = (function () {
            function IPartsCatalogCategory() {
            }
            return IPartsCatalogCategory;
        }());
        services.IPartsCatalogCategory = IPartsCatalogCategory;
        var IPartsCatalogCategoryValue = (function () {
            function IPartsCatalogCategoryValue() {
            }
            return IPartsCatalogCategoryValue;
        }());
        services.IPartsCatalogCategoryValue = IPartsCatalogCategoryValue;
        var PartsCatalogQueryFilter = (function () {
            function PartsCatalogQueryFilter() {
            }
            return PartsCatalogQueryFilter;
        }());
        services.PartsCatalogQueryFilter = PartsCatalogQueryFilter;
        var PartsCatalogSearchResult = (function () {
            function PartsCatalogSearchResult() {
            }
            PartsCatalogSearchResult.prototype.GetImageURL = function () {
                return encodeURIComponent(this.ImageURL);
            };
            PartsCatalogSearchResult.prototype.GetImageThumnailURL = function () {
                return encodeURIComponent(this.ImageThumbURL);
            };
            return PartsCatalogSearchResult;
        }());
        services.PartsCatalogSearchResult = PartsCatalogSearchResult;
        var PartsCatalogService = (function () {
            function PartsCatalogService($http, mv360api, LoginService, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
            }
            PartsCatalogService.prototype.getDivision = function (divisionName) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/PartsCatalog/Division/" + divisionName
                });
            };
            PartsCatalogService.prototype.getDivisions = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/PartsCatalog/Division"
                });
            };
            PartsCatalogService.prototype.getMakes = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Make"
                });
            };
            PartsCatalogService.prototype.getModelCodes = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/ModelCode"
                });
            };
            PartsCatalogService.prototype.getModelYears = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/ModelYear"
                });
            };
            PartsCatalogService.prototype.checkVINCatalog = function (vin) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/PartsCatalog/VINCatalog/" + vin
                });
            };
            PartsCatalogService.prototype.getCatalog = function (Division, ModelCode, Location, SubBrand, wareHouse, isVin) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    ignoreLoadingBar: true,
                    url: this.mv360api.baseURL + "/api/PartsCatalog/GetCatalog/" + Division + "/" + (ModelCode || 'null') + "/" + (Location || 'null') + "/" + (SubBrand || 'null') + "/" + (wareHouse || 'null') + '/' + isVin
                });
            };
            PartsCatalogService.prototype.getCatalogValues = function (catalog) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    ignoreLoadingBar: true,
                    url: this.mv360api.baseURL + "/api/PartsCatalog/GetCatalogValues/" + catalog
                });
            };
            PartsCatalogService.prototype.getSites = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Site"
                });
            };
            PartsCatalogService.prototype.search = function (search, dealerUnitsOnly, pageSize, currentPage, sortField, sortDesc) {
                return null;
            };
            PartsCatalogService.prototype.searchAdvanced = function (query) {
                var dealerNumber = this.LoginService.selectedDealer.DealerNumber;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/PartsCatalog/Search/" + dealerNumber,
                    data: query,
                    ignoreLoadingBar: true
                });
            };
            PartsCatalogService.prototype.searchCategory = function (filter) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/PartsCatalog/Category/test",
                    data: filter,
                    ignoreLoadingBar: true
                });
            };
            PartsCatalogService.prototype.checkExistingPO = function (purchaseOrderName) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                var filter = new PartsCatalogQueryFilter();
                var dealerNumber = this.LoginService.selectedDealer.DealerNumber;
                filter.SimpleSearch = purchaseOrderName.toString();
                var POExists = httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/PartsCatalog/CheckIfExistingPO/" + dealerNumber,
                    data: filter
                });
                return POExists;
            };
            PartsCatalogService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q"];
            return PartsCatalogService;
        }());
        angular
            .module("app.services")
            .service("app.services.PartsCatalogService", PartsCatalogService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=PartsCatalogService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var IPart = (function () {
            function IPart() {
            }
            return IPart;
        }());
        services.IPart = IPart;
        var ISupplementalPart = (function () {
            function ISupplementalPart() {
            }
            return ISupplementalPart;
        }());
        services.ISupplementalPart = ISupplementalPart;
        var PartSearchQueryFilter = (function () {
            function PartSearchQueryFilter() {
            }
            return PartSearchQueryFilter;
        }());
        services.PartSearchQueryFilter = PartSearchQueryFilter;
        var SelectedPart = (function () {
            function SelectedPart() {
            }
            return SelectedPart;
        }());
        services.SelectedPart = SelectedPart;
        var PartService = (function () {
            function PartService($http, mv360api, LoginService, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
            }
            PartService.prototype.getParts = function () {
                var dealerNumber = this.LoginService.selectedDealer.DealerNumber;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Parts" + "/" + dealerNumber
                });
            };
            PartService.prototype.getPart = function (partNumber) {
                var dealerNumber = this.LoginService.selectedDealer.DealerNumber;
                partNumber = this.encodeString(partNumber);
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Parts/Active/" + partNumber + "/" + dealerNumber
                });
            };
            PartService.prototype.getPartFromCatalog = function (partNumber, division, modelcode) {
                var dealerNumber = this.LoginService.selectedDealer.DealerNumber;
                partNumber = this.encodeString(partNumber);
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Parts/Active/" + partNumber + "/" + division + "/" + modelcode + "/" + dealerNumber
                });
            };
            PartService.prototype.getValidPart = function (partNumber, make, subrand, division, vin) {
                var dealerNumber = this.LoginService.selectedDealer.DealerNumber;
                partNumber = this.encodeString(partNumber);
                var isVin;
                if (vin) {
                    isVin = true;
                }
                else {
                    isVin = false;
                }
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Parts/Active/" + partNumber + "/" + make + "/" + subrand + "/" + division + "/" + isVin + "/" + dealerNumber
                });
            };
            PartService.prototype.getValidPartForVIN = function (partNumber, make, subrand, division, vin, site) {
                var dealerNumber = this.LoginService.selectedDealer.DealerNumber;
                partNumber = this.encodeString(partNumber);
                var isVin;
                if (vin) {
                    isVin = true;
                }
                else {
                    isVin = false;
                }
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Parts/Active/" + partNumber + "/" + make + "/" + subrand + "/" + division + "/" + isVin + "/" + dealerNumber + "/" + site
                });
            };
            PartService.prototype.searchParts = function (search, sortField, sortDesc) {
                var odata = '?';
                if (search) {
                    odata = odata + "$filter=substringof(toupper('" + search + "'), toupper(PartNumber)) eq true or substringof(toupper('" + search + "'), toupper(Description)) eq true";
                }
                if (sortField) {
                    odata = odata + "&$orderby=" + sortField;
                    if (sortDesc) {
                        odata = odata + ' desc';
                    }
                }
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Parts" + odata
                });
            };
            PartService.prototype.search = function (search) {
                var query = new services.SearchQuery();
                query.PageSize = 5;
                var filter = new PartSearchQueryFilter();
                filter.SimpleSearch = search;
                query.Filter = filter;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Parts/Search",
                    data: query
                });
            };
            PartService.prototype.encodeString = function (value) {
                return value.replace('!', '*exclamation*')
                    .replace('@', '*at*')
                    .replace('#', '*pound*')
                    .replace('$', '*dollar*')
                    .replace('%', '*percent*')
                    .replace('^', '*caret*')
                    .replace('&', '*ampersand*')
                    .replace('*', '*star*')
                    .replace('(', '*leftparen*')
                    .replace(')', '*rightparen*')
                    .replace('+', '*plus*')
                    .replace('=', '*equals*')
                    .replace(':', '*colon*')
                    .replace('\\', '*backslash*')
                    .replace(';', '*semicolon*')
                    .replace("'", '*apostrophe*')
                    .replace('<', '*lessthan*')
                    .replace('>', '*greaterthan*')
                    .replace('/', '*forwardslash*')
                    .replace('?', '*questionmark*');
            };
            PartService.prototype.getSupplementalParts = function (partNumber, catalog) {
                var urlString = this.mv360api.baseURL + "/api/Parts/" + partNumber + "/Supplemental/PartList/" + this.LoginService.selectedDealer.DealerNumber + "/\"" + catalog + "\"";
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: urlString
                });
            };
            PartService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q"];
            return PartService;
        }());
        angular
            .module("app.services")
            .service("app.services.PartService", PartService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=PartService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var ReportService = (function () {
            function ReportService($http, mv360api, LoginService, $q, filesaver) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
                this.filesaver = filesaver;
            }
            ReportService.prototype.getReportLink = function (reportName, parameters) {
                var vm = this;
                var reportlink = vm.mv360api.baseURL + "/api/Report/" + reportName + "/Execute";
                if (parameters) {
                    for (var index = 0; index < parameters.length; index++) {
                        reportlink = (reportlink + "&" + parameters[index].Name + "=" + parameters[index].Value);
                    }
                }
                return reportlink;
            };
            ReportService.prototype.downloadFileContents = function (reportName, parameters) {
                var _this = this;
                var vm = this;
                var link = vm.mv360api.baseURL + "/api/Report/" + reportName + "/Execute";
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                link = link.replace("\\", "*backslash*");
                var blobdefer = this.$q.defer();
                var downloadName = reportName.replace(".rdl", ".pdf");
                httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: link,
                    data: parameters
                }).then(function (base64) {
                    var newblob = _this.b64toBlob(base64, 'application/octet-stream', 512);
                    _this.filesaver.saveAs(newblob, downloadName);
                    blobdefer.resolve(true);
                })["catch"](function (error) {
                    console.log(error);
                    blobdefer.reject(error);
                });
                return blobdefer.promise;
            };
            ReportService.prototype.b64toBlob = function (b64Data, contentType, sliceSize) {
                contentType = contentType || '';
                sliceSize = sliceSize || 512;
                var byteCharacters = atob(b64Data);
                var byteArrays = [];
                for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {
                    var slice = byteCharacters.slice(offset, offset + sliceSize);
                    var byteNumbers = new Array(slice.length);
                    for (var i = 0; i < slice.length; i++) {
                        byteNumbers[i] = slice.charCodeAt(i);
                    }
                    var byteArray = new Uint8Array(byteNumbers);
                    byteArrays.push(byteArray);
                }
                var blob = new Blob(byteArrays, { type: contentType });
                return blob;
            };
            ReportService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q", "FileSaver"];
            return ReportService;
        }());
        var ReportParam = (function () {
            function ReportParam() {
            }
            return ReportParam;
        }());
        services.ReportParam = ReportParam;
        angular
            .module("app.services")
            .service("app.services.ReportService", ReportService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=ReportService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var ISalesPerson = (function () {
            function ISalesPerson() {
            }
            return ISalesPerson;
        }());
        services.ISalesPerson = ISalesPerson;
        var SalesPersonService = (function () {
            function SalesPersonService($http, mv360api, LoginService, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
            }
            SalesPersonService.prototype.updateSalesPerson = function (salesPerson) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                salesPerson.LastUpdatedByConnector = false;
                return httpRetry.run({
                    method: "PUT",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/SalesPerson/" + salesPerson.SalesPersonNumber,
                    data: salesPerson
                });
            };
            SalesPersonService.prototype.getCreatedBy = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/SalesPerson/CreatedBy",
                    ignoreLoadingBar: true
                });
            };
            SalesPersonService.prototype.getClaimDealerContact = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/SalesPerson/ClaimDealerContact"
                });
            };
            SalesPersonService.prototype.getSalesPeople = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/SalesPerson/Active",
                    ignoreLoadingBar: true
                });
            };
            SalesPersonService.prototype.getVendors = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/SalesPerson/Vendor"
                });
            };
            SalesPersonService.prototype.searchSalesPeople = function (search) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/SalesPerson/Search/" + search
                });
            };
            SalesPersonService.prototype.setDisplayField = function (data) {
                for (var item in data) {
                    data[item].Display = data[item].LastName + ", " + data[item].FirstName;
                    if (data[item].Email && data[item].SSN) {
                        data[item].Display += " (" + data[item].Email + ", " + data[item].SSN + ")";
                    }
                    else if (data[item].SSN) {
                        data[item].Display += " (" + data[item].SSN + ")";
                    }
                    else if (data[item].Email) {
                        data[item].Display += " (" + data[item].Email + ")";
                    }
                }
            };
            SalesPersonService.prototype.setDisplayFieldWithSSN = function (data) {
                for (var item in data) {
                    data[item].Display = data[item].LastName + ", " + data[item].FirstName;
                    if (data[item].Email && data[item].SSN) {
                        data[item].Display += " (" + data[item].Email + ", " + data[item].SSN + ")";
                    }
                    else if (data[item].SSN) {
                        data[item].Display += " (" + data[item].SSN + ")";
                    }
                    else if (data[item].Email) {
                        data[item].Display += " (" + data[item].Email + ")";
                    }
                }
            };
            SalesPersonService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q"];
            return SalesPersonService;
        }());
        angular
            .module("app.services")
            .service("app.services.SalesPersonService", SalesPersonService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=SalesPersonService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var IShipmentTracking = (function () {
            function IShipmentTracking() {
            }
            return IShipmentTracking;
        }());
        services.IShipmentTracking = IShipmentTracking;
        var IUpsShippingLabelInfo = (function () {
            function IUpsShippingLabelInfo() {
            }
            return IUpsShippingLabelInfo;
        }());
        services.IUpsShippingLabelInfo = IUpsShippingLabelInfo;
        var IShipTagDetails = (function () {
            function IShipTagDetails() {
            }
            return IShipTagDetails;
        }());
        services.IShipTagDetails = IShipTagDetails;
        var IShipTagLabel = (function () {
            function IShipTagLabel() {
            }
            return IShipTagLabel;
        }());
        services.IShipTagLabel = IShipTagLabel;
        var IShippingAddress = (function () {
            function IShippingAddress() {
            }
            return IShippingAddress;
        }());
        services.IShippingAddress = IShippingAddress;
        var IPackageDetails = (function () {
            function IPackageDetails() {
            }
            return IPackageDetails;
        }());
        services.IPackageDetails = IPackageDetails;
        var IPartTag = (function () {
            function IPartTag() {
            }
            return IPartTag;
        }());
        services.IPartTag = IPartTag;
        var IShipTagInformation = (function () {
            function IShipTagInformation() {
            }
            return IShipTagInformation;
        }());
        services.IShipTagInformation = IShipTagInformation;
        var ShipmentTrackingQueryFilter = (function () {
            function ShipmentTrackingQueryFilter() {
            }
            return ShipmentTrackingQueryFilter;
        }());
        services.ShipmentTrackingQueryFilter = ShipmentTrackingQueryFilter;
        var ShipmentTrackingService = (function () {
            function ShipmentTrackingService($http, mv360api, $q, LoginService) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.$q = $q;
                this.LoginService = LoginService;
            }
            ShipmentTrackingService.prototype.getShipmentTrackings = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/ShipmentTracking"
                });
            };
            ShipmentTrackingService.prototype.getShipmentTrackingsByPartOrder = function (partOrderNumber) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/ShipmentTracking/partsorder/" + partOrderNumber
                });
            };
            ShipmentTrackingService.prototype.getShipmentTrackingsByClaim = function (claimNumber) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/ShipmentTracking/claim/" + claimNumber
                });
            };
            ShipmentTrackingService.prototype.getUpsShippingLabelInfo = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/ShipmentTracking/UPS/"
                });
            };
            ShipmentTrackingService.prototype.getUpsShippingLabelInfoForSite = function (siteId) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/ShipmentTracking/UPS/" + siteId
                });
            };
            ShipmentTrackingService.prototype.getUpsShipPartTag = function (shipTagDetails) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Shipment/CreatePartTag",
                    data: shipTagDetails
                });
            };
            ShipmentTrackingService.$inject = ["$http", "mv360api", "$q", "app.services.LoginService"];
            return ShipmentTrackingService;
        }());
        angular
            .module("app.services")
            .service("app.services.ShipmentTrackingService", ShipmentTrackingService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=ShipmentTrackingService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var ILineSearch = (function () {
            function ILineSearch() {
            }
            return ILineSearch;
        }());
        services.ILineSearch = ILineSearch;
        var SIPService = (function () {
            function SIPService($http, mv360api, $q, LoginService) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.$q = $q;
                this.LoginService = LoginService;
            }
            SIPService.prototype.VINSearch = function (search, sortField, sortDesc) {
                var odata = '?';
                if (search) {
                    odata = odata + "$filter=toupper('" + search + "') eq toupper(VIN)";
                    odata = odata + '&';
                }
                if (sortField) {
                    odata = odata + "$orderby=" + sortField;
                    if (sortDesc) {
                        odata = odata + ' desc';
                    }
                }
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/SIP/LineSearch" + odata
                });
            };
            SIPService.prototype.LineSearch = function (search, sortField, sortDesc) {
                var odata = '?';
                if (search) {
                    odata = odata + "$filter=substringof(toupper('" + search + "'), toupper(ProgramNumber)) eq true or substringof(toupper('" + search + "'), toupper(VIN)) eq true";
                    odata = odata + '&';
                }
                if (sortField) {
                    odata = odata + "$orderby=" + sortField;
                    if (sortDesc) {
                        odata = odata + ' desc';
                    }
                }
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/SIP/LineSearch" + odata
                });
            };
            SIPService.prototype.UpdateSipLine = function (programNumber, vin, salesPersonNumber) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "PUT",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/SIP/" + programNumber + "/Line/" + vin + "/SalesPerson/" + salesPersonNumber,
                    data: null
                });
            };
            SIPService.$inject = ["$http", "mv360api", "$q", "app.services.LoginService"];
            return SIPService;
        }());
        angular
            .module("app.services")
            .service("app.services.SIPService", SIPService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=SIPService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var SiteService = (function () {
            function SiteService($http, mv360api, LoginService, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
            }
            SiteService.prototype.getSites = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Site"
                });
            };
            SiteService.prototype.getSite = function (siteName) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Site/" + siteName
                });
            };
            SiteService.prototype.getSiteInfo = function (siteName) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Site/" + siteName
                });
            };
            SiteService.prototype.getPartsSiteReturn = function (siteName) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Site/Return/" + siteName
                });
            };
            SiteService.prototype.getPortalSiteAddress = function (siteId) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Site/Address/" + siteId
                });
            };
            SiteService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q"];
            return SiteService;
        }());
        angular
            .module("app.services")
            .service("app.services.SiteService", SiteService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=SiteService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var ISPIFFLine = (function () {
            function ISPIFFLine() {
            }
            return ISPIFFLine;
        }());
        services.ISPIFFLine = ISPIFFLine;
        var DropDown = (function () {
            function DropDown() {
            }
            return DropDown;
        }());
        services.DropDown = DropDown;
        var SPIFFLineSearchQueryFilter = (function () {
            function SPIFFLineSearchQueryFilter() {
            }
            return SPIFFLineSearchQueryFilter;
        }());
        services.SPIFFLineSearchQueryFilter = SPIFFLineSearchQueryFilter;
        var SPIFFService = (function () {
            function SPIFFService($http, mv360api, $q, LoginService) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.$q = $q;
                this.LoginService = LoginService;
            }
            SPIFFService.prototype.addSPIFFLine = function (item) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "PUT",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/SIPAllowanceLine/" + item.ProgramId + "/" + item.VIN,
                    data: item
                });
            };
            SPIFFService.prototype.getSPIFFLines = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/SIPAllowanceLine"
                });
            };
            SPIFFService.prototype.getSPIFFLine = function (programNumber, vin) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/SIPAllowanceLine/" + programNumber + "/" + vin
                });
            };
            SPIFFService.prototype.getDefaultSPIFF = function (vin, allowanceType) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/SIPAllowanceLine/DefaultProgram/" + allowanceType + "/" + vin + "/" + this.mv360api.currentDealer
                }, true);
            };
            SPIFFService.prototype.getAllowanceType = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/DropDown/SIPAllowanceType"
                });
            };
            SPIFFService.prototype.getLineStatus = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/DropDown/SIPLineStatus"
                });
            };
            SPIFFService.prototype.search = function (search, dealerUnitsOnly, pageSize, currentPage, sortField, sortDesc) {
                var query = new services.SearchQuery();
                query.PageSize = pageSize;
                query.CurrentPage = currentPage;
                query.SortField = sortField;
                query.SortAscending = !sortDesc;
                var filter = new SPIFFLineSearchQueryFilter();
                filter.SimpleSearch = search;
                query.Filter = filter;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/SIPAllowanceLine/Search/" + this.mv360api.currentDealer,
                    data: query
                });
            };
            SPIFFService.prototype.searchAdvanced = function (query) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/SIPAllowanceLine/Search/" + this.mv360api.currentDealer,
                    data: query
                });
            };
            SPIFFService.$inject = ["$http", "mv360api", "$q", "app.services.LoginService"];
            return SPIFFService;
        }());
        angular
            .module("app.services")
            .service("app.services.SPIFFService", SPIFFService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=SPIFFService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var SupportService = (function () {
            function SupportService($http, mv360api, LoginService, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
            }
            SupportService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q"];
            return SupportService;
        }());
        angular
            .module("app.services")
            .service("app.services.SupportService", SupportService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=SupportService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var IDirectoryContent = (function () {
            function IDirectoryContent() {
            }
            return IDirectoryContent;
        }());
        services.IDirectoryContent = IDirectoryContent;
        var IDirectoryFile = (function () {
            function IDirectoryFile() {
            }
            return IDirectoryFile;
        }());
        services.IDirectoryFile = IDirectoryFile;
        var IDirectorySearch = (function () {
            function IDirectorySearch() {
            }
            return IDirectorySearch;
        }());
        services.IDirectorySearch = IDirectorySearch;
        var TrainingService = (function () {
            function TrainingService($http, mv360api, LoginService, $q, filesaver) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
                this.filesaver = filesaver;
            }
            TrainingService.prototype.getTrainingFiles = function () {
                var link = this.mv360api.baseURL + "/api/Training/GetDocuments/";
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: link
                });
            };
            TrainingService.prototype.searchTrainingFiles = function (searchTerm) {
                var ds = new IDirectorySearch();
                ds.SearchTerms = searchTerm;
                var link = this.mv360api.baseURL + "/api/Training/SearchDocuments/";
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: link,
                    data: ds
                });
            };
            TrainingService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q", "FileSaver"];
            return TrainingService;
        }());
        angular
            .module("app.services")
            .service("app.services.TrainingService", TrainingService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=TrainingService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var IUnitOfMesaure = (function () {
            function IUnitOfMesaure() {
            }
            return IUnitOfMesaure;
        }());
        services.IUnitOfMesaure = IUnitOfMesaure;
        var UnitOfMesaureService = (function () {
            function UnitOfMesaureService($http, mv360api, LoginService, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
            }
            UnitOfMesaureService.prototype.getUOMs = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/UnitOfMeasure",
                    ignoreLoadingBar: true
                });
            };
            UnitOfMesaureService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q"];
            return UnitOfMesaureService;
        }());
        angular
            .module("app.services")
            .service("app.services.UnitOfMesaureService", UnitOfMesaureService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=UnitOfMeasureService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var IUser = (function () {
            function IUser() {
            }
            return IUser;
        }());
        services.IUser = IUser;
        var IUserDealer = (function () {
            function IUserDealer() {
            }
            return IUserDealer;
        }());
        services.IUserDealer = IUserDealer;
        var IPrivilege = (function () {
            function IPrivilege() {
            }
            return IPrivilege;
        }());
        services.IPrivilege = IPrivilege;
        var ISecurityTemplate = (function () {
            function ISecurityTemplate() {
            }
            return ISecurityTemplate;
        }());
        services.ISecurityTemplate = ISecurityTemplate;
        var IUserPreferences = (function () {
            function IUserPreferences() {
            }
            return IUserPreferences;
        }());
        services.IUserPreferences = IUserPreferences;
        var UserService = (function () {
            function UserService($http, mv360api, $state, $q, LoginService) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.$state = $state;
                this.$q = $q;
                this.LoginService = LoginService;
            }
            UserService.prototype.GetUsers = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET', url: this.mv360api.baseURL + "/api/Users/" + this.mv360api.currentDealer,
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    },
                    ignoreLoadingBar: true
                });
            };
            UserService.prototype.GetVendorUsers = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET', url: this.mv360api.baseURL + "/api/VendorUser/" + this.mv360api.currentVendor,
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    },
                    ignoreLoadingBar: true
                });
            };
            UserService.prototype.GetUserDealer = function (email) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET', url: this.mv360api.baseURL + "/api/User/" + encodeURIComponent(email) + "/" + this.mv360api.currentDealer,
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    }
                });
            };
            UserService.prototype.GetVendorUser = function (userName) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET', url: this.mv360api.baseURL + "/api/VendorUser/" + encodeURIComponent(userName) + "/" + this.mv360api.currentVendor,
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    }
                });
            };
            UserService.prototype.GetDealers = function (email) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET', url: this.mv360api.baseURL + "/api/User/" + email + "/Dealers",
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    }
                });
            };
            UserService.prototype.ValidateLoginAttempt = function (userName) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET', url: this.mv360api.baseURL + "/api/User/ValidateLoginAttempt/" + encodeURIComponent(userName) + "/",
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    }
                });
            };
            UserService.prototype.ValidateVendorLoginAttempt = function (userName) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET', url: this.mv360api.baseURL + "/api/User/ValidateVendorLoginAttempt/" + encodeURIComponent(userName) + "/",
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    }
                });
            };
            UserService.prototype.GetEnvironmentCompanyName = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET', url: this.mv360api.baseURL + "/api/User/EnvironmentCompany",
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    }
                });
            };
            UserService.prototype.InviteUser = function (firstName, lastName, email, phone, role, dealerPrivileges) {
                var user = new IUser();
                user.FirstName = firstName;
                user.LastName = lastName;
                user.Email = email;
                user.Phone = phone;
                user.Role = role;
                user.DealerPrivileges = dealerPrivileges;
                user.DealerNumber = this.mv360api.currentDealer;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'POST', url: this.mv360api.baseURL + "/api/User/Invite",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    data: user
                });
            };
            UserService.prototype.EnableUser = function (userId) {
                var dealer = this.mv360api.currentDealer;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET', url: this.mv360api.baseURL + "/api/User/" + userId + "/Enable/" + dealer,
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    }
                });
            };
            UserService.prototype.DisableUser = function (userId) {
                var dealer = this.mv360api.currentDealer;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET', url: this.mv360api.baseURL + "/api/User/" + userId + "/Disable/" + dealer,
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    }
                });
            };
            UserService.prototype.DeleteUser = function (user) {
                console.log(user);
                var dealer = this.mv360api.currentDealer;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'POST', url: this.mv360api.baseURL + "/api/User/Delete/" + user.SalesPersonNumber + "/" + dealer,
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    },
                    data: user
                });
            };
            UserService.prototype.UpdateUser = function (user) {
                user.LastUpdatedByConnector = false;
                console.log("update user");
                console.log(user);
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'PUT', url: this.mv360api.baseURL + "/api/User/" + encodeURIComponent(user.Email) + "/" + this.mv360api.currentDealer,
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    },
                    data: user
                });
            };
            UserService.prototype.ResetPassword = function (email) {
                console.log("Reset Password");
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'PUT', url: this.mv360api.baseURL + "/api/User/" + encodeURIComponent(email) + "/ResetPassword",
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    }
                });
            };
            UserService.prototype.GetRoles = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET', url: this.mv360api.baseURL + "/api/User/Roles",
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    }
                });
            };
            UserService.prototype.GetEmptyPrivileges = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET', url: this.mv360api.baseURL + "/api/User/Privileges",
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    }
                });
            };
            UserService.prototype.GetProfile = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET', url: this.mv360api.baseURL + "/api/User/Profile",
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    }
                });
            };
            UserService.prototype.GetVendorProfile = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET', url: this.mv360api.baseURL + "/api/VendorUser/Profile",
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    }
                });
            };
            UserService.prototype.ValidatePassword = function (email, password) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET', url: this.mv360api.baseURL + "/api/User/Validate/" + email + "/" + password,
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    }
                });
            };
            UserService.prototype.GetPrivileges = function (dealerNumber) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET', url: this.mv360api.baseURL + "/api/User/Privileges/" + dealerNumber,
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    }
                });
            };
            UserService.prototype.UpdateProfile = function (profile) {
                profile.LastUpdatedByConnector = false;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'PUT',
                    url: this.mv360api.baseURL + "/api/User/Profile",
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    },
                    data: profile
                });
            };
            UserService.prototype.GetTemplates = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET', url: this.mv360api.baseURL + "/api/Security/Template",
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    }
                });
            };
            UserService.prototype.GetTemplatePrivileges = function (templateName) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET', url: this.mv360api.baseURL + "/api/Security/Template/" + templateName + "/",
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    }
                });
            };
            UserService.prototype.GetPreferences = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET', url: this.mv360api.baseURL + "/api/UserPreferences",
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    }
                });
            };
            UserService.prototype.UpdatePreferences = function (preferences) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'PUT',
                    url: this.mv360api.baseURL + "/api/UserPreferences",
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    },
                    data: preferences
                });
            };
            UserService.prototype.InviteVendorUser = function (firstName, lastName, email, userName) {
                var user = new IUser();
                user.FirstName = firstName;
                user.LastName = lastName;
                user.Username = userName;
                user.Email = email;
                user.VendorNumber = this.mv360api.currentVendor;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'POST', url: this.mv360api.baseURL + "/api/VendorUser/Invite",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    data: user
                });
            };
            UserService.prototype.DeleteVendorUser = function (user) {
                console.log(user);
                var vendor = this.mv360api.currentVendor;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'POST', url: this.mv360api.baseURL + "/api/VendorUser/Delete/" + user.Username,
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    },
                    data: user
                });
            };
            UserService.prototype.UpdateVendorUser = function (user) {
                user.LastUpdatedByConnector = false;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'PUT', url: this.mv360api.baseURL + "/api/VendorUser/" + encodeURIComponent(user.Username) + "/Update/",
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    },
                    data: user
                });
            };
            UserService.prototype.UpdateVendorProfile = function (user) {
                user.LastUpdatedByConnector = false;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'PUT', url: this.mv360api.baseURL + "/api/VendorUser/Profile/",
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    },
                    data: user
                });
            };
            UserService.prototype.ResetVendorPassword = function (email) {
                console.log("Reset Password");
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'PUT', url: this.mv360api.baseURL + "/api/VendorUser/" + encodeURIComponent(email) + "/ResetPassword",
                    headers: {
                        "Authorization": "Bearer " + this.mv360api.accessToken
                    }
                });
            };
            UserService.$inject = ["$http", "mv360api", "$state", "$q", "app.services.LoginService"];
            return UserService;
        }());
        angular
            .module("app.services")
            .service("app.services.UserService", UserService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=UserService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var IVendorRequest = (function () {
            function IVendorRequest() {
            }
            return IVendorRequest;
        }());
        services.IVendorRequest = IVendorRequest;
        var VendorRequestService = (function () {
            function VendorRequestService($http, mv360api, LoginService, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
            }
            VendorRequestService.prototype.getRequest = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/VendorRequests/" + this.mv360api.currentDealer
                });
            };
            VendorRequestService.prototype.getHistory = function (allDealers) {
                if (allDealers === void 0) { allDealers = false; }
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/VendorRequests/History/" + this.mv360api.currentDealer + "/" + allDealers
                });
            };
            VendorRequestService.prototype.getDealerVendors = function (dealerNumber) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET',
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/VendorRequests/DealerVendors/" + dealerNumber
                });
            };
            VendorRequestService.prototype.saveRequest = function (request) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                request.DealerNumber = this.mv360api.currentDealer;
                return httpRetry.run({
                    method: "PUT",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/VendorRequests/decrypted",
                    data: request
                });
            };
            VendorRequestService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q"];
            return VendorRequestService;
        }());
        angular
            .module("app.services")
            .service("app.services.VendorRequestService", VendorRequestService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=VendorRequestService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var IVINOptionNotes = (function () {
            function IVINOptionNotes() {
            }
            return IVINOptionNotes;
        }());
        services.IVINOptionNotes = IVINOptionNotes;
        var VINOptionNotesService = (function () {
            function VINOptionNotesService($http, mv360api, LoginService, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
            }
            VINOptionNotesService.prototype.getOptionNotes = function (VIN) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/VINOptionNotes/" + VIN
                });
            };
            VINOptionNotesService.prototype.addOptionNote = function (VIN, vinOptionNote) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "PUT",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/VINOptionNotes/" + VIN,
                    data: vinOptionNote
                });
            };
            VINOptionNotesService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q"];
            return VINOptionNotesService;
        }());
        angular
            .module("app.services")
            .service("app.services.VINOptionNotesService", VINOptionNotesService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=VINOptionNotesService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var IVINInfo = (function () {
            function IVINInfo() {
            }
            return IVINInfo;
        }());
        services.IVINInfo = IVINInfo;
        var IPDIDocuments = (function () {
            function IPDIDocuments() {
            }
            return IPDIDocuments;
        }());
        services.IPDIDocuments = IPDIDocuments;
        var IVINNotes = (function () {
            function IVINNotes() {
            }
            return IVINNotes;
        }());
        services.IVINNotes = IVINNotes;
        var VINSearchQueryFilter = (function () {
            function VINSearchQueryFilter() {
            }
            return VINSearchQueryFilter;
        }());
        services.VINSearchQueryFilter = VINSearchQueryFilter;
        var VINService = (function () {
            function VINService($http, mv360api, LoginService, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
            }
            VINService.prototype.getVIN = function (VIN, includeLegacy) {
                if (includeLegacy === void 0) { includeLegacy = false; }
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET',
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/VIN/" + VIN + "/" + includeLegacy,
                    headers: { 'Authorization': 'Bearer ' + this.mv360api.accessToken }
                });
            };
            VINService.prototype.getVINMSRP = function (VIN) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET',
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/VIN/" + VIN + "/MSRP",
                    headers: { 'Authorization': 'Bearer ' + this.mv360api.accessToken }
                });
            };
            VINService.prototype.getVINInvoice = function (VIN) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET',
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/VIN/" + VIN + "/Invoice",
                    headers: { 'Authorization': 'Bearer ' + this.mv360api.accessToken }
                });
            };
            VINService.prototype.getVINInvoiceById = function (Id) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET',
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/vin/" + Id + "/PrintInvoice",
                    headers: { 'Authorization': 'Bearer ' + this.mv360api.accessToken }
                });
            };
            VINService.prototype.getMV360API = function () {
                return this.mv360api;
            };
            VINService.prototype.search = function (search, dealerUnitsOnly, pageSize, currentPage, sortField, sortDesc) {
                var query = new services.SearchQuery();
                query.PageSize = pageSize;
                query.CurrentPage = currentPage;
                query.SortField = sortField;
                query.SortAscending = !sortDesc;
                var filter = new VINSearchQueryFilter();
                filter.SimpleSearch = search;
                filter.DealerUnitsOnly = dealerUnitsOnly;
                query.Filter = filter;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/VIN/Search",
                    data: query
                });
            };
            VINService.prototype.searchAdvanced = function (query) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/VIN/Search",
                    data: query
                });
            };
            VINService.prototype.getClaims = function (VIN) {
                if (!VIN) {
                    return null;
                }
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET',
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/VIN/" + VIN + "/Claims",
                    headers: { 'Authorization': 'Bearer ' + this.mv360api.accessToken }
                });
            };
            VINService.prototype.getDealerNotesForVIN = function (VIN) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET',
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/VIN/" + VIN + "/DealerNotes",
                    headers: { 'Authorization': 'Bearer ' + this.mv360api.accessToken }
                });
            };
            VINService.prototype.getVinForWeb = function (VIN) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET',
                    url: this.mv360api.baseURL + "/api/" + "/VIN/" + VIN + "/VinForWeb",
                    headers: { 'Authorization': 'Bearer ' + this.mv360api.accessToken }
                });
            };
            VINService.prototype.getPDIDocumentsForVIN = function (VIN) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET',
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/VIN/" + VIN + "/PDIDocuments",
                    headers: { 'Authorization': 'Bearer ' + this.mv360api.accessToken }
                });
            };
            VINService.prototype.uploadPDIDocumentsForVIN = function (PDIDocuments) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: 'GET',
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/VIN/UploadPDIDocuments",
                    headers: { 'Authorization': 'Bearer ' + this.mv360api.accessToken },
                    data: PDIDocuments
                });
            };
            VINService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q"];
            return VINService;
        }());
        angular
            .module("app.services")
            .service("app.services.VINService", VINService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=VINService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var WarehouseService = (function () {
            function WarehouseService($http, mv360api, LoginService, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
            }
            WarehouseService.prototype.getWarehouseAddresses = function (warehouseId) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/Warehouse/" + warehouseId
                });
            };
            WarehouseService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q"];
            return WarehouseService;
        }());
        angular
            .module("app.services")
            .service("app.services.WarehouseService", WarehouseService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=WarehouseService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var IWarranty = (function () {
            function IWarranty() {
            }
            return IWarranty;
        }());
        services.IWarranty = IWarranty;
        var IOwnership = (function () {
            function IOwnership() {
            }
            return IOwnership;
        }());
        services.IOwnership = IOwnership;
        var IAddress = (function () {
            function IAddress() {
            }
            return IAddress;
        }());
        services.IAddress = IAddress;
        var IWarrantyType = (function () {
            function IWarrantyType() {
            }
            return IWarrantyType;
        }());
        services.IWarrantyType = IWarrantyType;
        var IWarrantyTerm = (function () {
            function IWarrantyTerm() {
            }
            return IWarrantyTerm;
        }());
        services.IWarrantyTerm = IWarrantyTerm;
        var WarrantyService = (function () {
            function WarrantyService($http, mv360api, LoginService, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
            }
            WarrantyService.prototype.getPrintLink = function (VIN) {
                return this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/VIN/" + VIN + "/warranty/RegistrationCard";
            };
            WarrantyService.prototype.updateWarranty = function (VIN, warranty, updateInstallAddress) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "PUT",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/VIN/" + VIN + "/Warranty/" + updateInstallAddress,
                    data: warranty
                });
            };
            WarrantyService.prototype.getWarranty = function (VIN) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/VIN/" + VIN + "/Warranty"
                });
            };
            WarrantyService.prototype.getWarrantyByOwner = function (VIN, name, address) {
                var owner = new IOwnership();
                owner.Name = name;
                owner.Address = address;
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/" + this.mv360api.currentDealer + "/VIN/" + VIN + "/Warranty",
                    data: owner
                });
            };
            WarrantyService.prototype.getWarrantyTypes = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/WarrantyType"
                });
            };
            WarrantyService.prototype.getWarrantyRetailSoldMinimum = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/WarrantyType/RetailSoldMinDate"
                });
            };
            WarrantyService.prototype.getWarrantyRetailSoldMaximum = function () {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/WarrantyType/RetailSoldMaxDate"
                });
            };
            WarrantyService.prototype.getBusinessUnitAllowedMilesRequired = function (Division) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/WarrantyType/AllowedMilesCheck/" + Division
                });
            };
            WarrantyService.prototype.getWarrantyTerm = function (VIN, warranty) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                return httpRetry.run({
                    method: "POST",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/WarrantyType/WarrantyTerm/" + VIN,
                    data: warranty
                });
            };
            WarrantyService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q"];
            return WarrantyService;
        }());
        angular
            .module("app.services")
            .service("app.services.WarrantyService", WarrantyService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=WarrantyService.js.map
var app;
(function (app) {
    var services;
    (function (services) {
        "use strict";
        var IZipLookup = (function () {
            function IZipLookup() {
            }
            return IZipLookup;
        }());
        services.IZipLookup = IZipLookup;
        var ZipLookupService = (function () {
            function ZipLookupService($http, mv360api, LoginService, $q) {
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$q = $q;
            }
            ZipLookupService.prototype.getZip = function (postalCode) {
                var httpRetry = new app.core.HttpRetry(this.$http, this.$q, this.LoginService, this.mv360api);
                if (postalCode.length > 3) {
                    var USPostalCode = postalCode.substring(0, 5);
                    var isNumeric = /^\d+$/.test(USPostalCode);
                    if (isNumeric) {
                        postalCode = USPostalCode;
                    }
                    else {
                        postalCode = postalCode.substring(0, 10);
                    }
                }
                return httpRetry.run({
                    method: "GET",
                    headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                    url: this.mv360api.baseURL + "/api/ZipLookup/" + postalCode
                });
            };
            ZipLookupService.$inject = ["$http", "mv360api", "app.services.LoginService", "$q"];
            return ZipLookupService;
        }());
        angular
            .module("app.services")
            .service("app.services.ZipLookupService", ZipLookupService);
    })(services = app.services || (app.services = {}));
})(app || (app = {}));
//# sourceMappingURL=ZipLookupService.js.map
(function () {
    "use strict";
    angular.module("app", [
        "app.core",
        "app.services",
        "app.home",
        "app.unit",
        "app.salesperson",
        "app.partorder",
        "app.partcatalog",
        "app.spiff",
        "app.campaign",
        "app.claims",
        "app.flatrate",
        "app.links",
        "app.messages",
        "app.admin",
        "app.contact",
        "app.documents",
        "app.training",
        "app.shipmenttracking",
        "app.directives",
        "app.filters",
        "app.image",
        "app.outofservice",
        "app.support",
        "app.inquiry",
        "app.report",
        "app.vendor",
        "angular-loading-bar"
    ]).config(config).run(run);
    config.$inject = [
        "$locationProvider",
        "$stateProvider",
        "$urlRouterProvider",
    ];
    function config($locationProvider, $stateProvider, $urlRouterProvider) {
        $locationProvider.html5Mode(true);
        $urlRouterProvider.otherwise("/home");
        $stateProvider.state("login", {
            url: "/login",
            templateUrl: "app/login.html",
            controller: "app.core.LoginController as vm"
        });
        $stateProvider.state("vendorlogin", {
            name: "vendorlogin",
            url: "/vendorlogin",
            templateUrl: "app/vendorlogin.html",
            controller: "app.core.VendorLoginController as vm"
        });
        $stateProvider.state("callback", {
            url: "/callback/:invitecode",
            templateUrl: "app/welcome.html",
            controller: "app.core.CallbackController as vm"
        });
        $stateProvider.state("activate", {
            url: "/activate/:invitecode",
            templateUrl: "app/activate.html",
            controller: "app.core.ActivateController as vm"
        });
        $stateProvider.state("reload", {
            url: "/reload/:statename",
            controller: "app.core.ReloadController as vm"
        });
    }
    run.$inject = [
        "$rootScope", "$state", "$stateParams", "mv360api", "app.services.LoginService", "$timeout", '$transitions', '$q'
    ];
    function run($rootscope, $state, $stateParams, mv360api, LoginService, $timeout, $transitions, $q) {
        $transitions.onBefore({}, function (trans) {
            return new $q(function (resolve, reject) {
                var name = trans.to().name.toUpperCase();
                if (name == "LOGIN" ||
                    name == "CALLBACK" ||
                    name == "ACTIVATE" ||
                    name == "CONTACT" ||
                    name == "OUTOFSERVICE" ||
                    name == "SUPPORT" ||
                    name == "VENDORLOGIN" ||
                    name == "VENDORHOME") {
                    resolve();
                    return;
                }
                var stateService = trans.router.stateService;
                var goToLogin = function () {
                    reject();
                    $state.go("login");
                };
                var goToVendorLogin = function () {
                    reject();
                    $state.go("vendorlogin");
                };
                var checkPriv = function () {
                    if (trans.to().resolve) {
                        var r = trans.to().resolve;
                        if (typeof r.privilege === "function") {
                            var priv = r.privilege();
                            if (priv) {
                                if (!LoginService.GetPrivilegeLevel(priv)) {
                                    reject();
                                }
                            }
                            else {
                                console.log("ERROR Unknown privilege - " + priv);
                            }
                        }
                    }
                    resolve();
                };
                if (name == "ACTIVATE") {
                    LoginService.Logout(true);
                }
                if (!LoginService.IsLoggedIn()) {
                    var token = LoginService.StoredAccessToken();
                    var refreshToken = LoginService.StoredRefreshToken();
                    var selectedDealer = LoginService.StoredSelectedDealer();
                    var isVendorLogin = LoginService.IsVendorLogin();
                    if (refreshToken) {
                        LoginService.AttemptTokenRefresh()
                            .then(function (refreshResult) {
                            console.log(refreshResult);
                            if (refreshResult) {
                                token = LoginService.StoredAccessToken();
                                refreshToken = LoginService.StoredRefreshToken();
                                selectedDealer = LoginService.StoredSelectedDealer();
                                if (!isVendorLogin) {
                                    LoginService.Validate(token, refreshToken).then(function (result) {
                                        if (!result) {
                                            goToLogin();
                                        }
                                        else {
                                            checkPriv();
                                            if (selectedDealer != null && selectedDealer.length > 0) {
                                                var parsedDealer = JSON.parse(selectedDealer);
                                                LoginService.selectedDealer = LoginService.getDealerInfo(parsedDealer);
                                                LoginService.selectDealer();
                                            }
                                            resolve();
                                        }
                                    })["catch"](function (error) {
                                        goToLogin();
                                    });
                                }
                                else {
                                    LoginService.ValidateVendor(token, refreshToken).then(function (result) {
                                        if (!result) {
                                            goToVendorLogin();
                                        }
                                        else {
                                            resolve();
                                        }
                                    })["catch"](function (error) {
                                        goToVendorLogin();
                                    });
                                }
                            }
                            else {
                                if (!isVendorLogin) {
                                    goToLogin();
                                }
                                else {
                                    goToVendorLogin();
                                }
                            }
                        }, function (error) {
                            console.log(error);
                            if (!isVendorLogin) {
                                goToLogin();
                            }
                            else {
                                goToVendorLogin();
                            }
                        });
                    }
                    else {
                        goToLogin();
                    }
                }
                else {
                    checkPriv();
                }
            });
        }, { priority: 10 });
    }
})();
//# sourceMappingURL=app.module.js.map
(function () {
    "use strict";
    angular.module("app.admin", [
        "app.core"
    ]).config(config);
    config.$inject = [
        "$locationProvider",
        "$stateProvider",
        "$urlRouterProvider"
    ];
    function config($locationProvider, $stateProvider, $urlRouterProvider) {
        $stateProvider.state("admin", {
            url: "/admin",
            templateUrl: "app/admin/admin.html",
            controller: "app.admin.AdminController as vm"
        });
        $stateProvider.state("admin.profile", {
            url: "/admin/profile",
            templateUrl: "app/admin/profile/profile.html",
            controller: "app.admin.ProfileController as vm",
            resolve: {
                privilege: function () { return "SETUP_PROFILE_FORM"; }
            }
        });
        $stateProvider.state("admin.address", {
            url: "/admin/address",
            templateUrl: "app/admin/address/address.html",
            controller: "app.admin.AddressController as vm",
            resolve: {
                privilege: function () { return "SETUP_DEALER_ADDRESS_GRID"; }
            }
        });
        $stateProvider.state("admin.users", {
            url: "/users/?search",
            templateUrl: "app/admin/users/users.html",
            controller: "app.admin.UsersController as vm",
            resolve: {
                privilege: function () { return "USER_SECURITY_MAINTENANCE"; }
            },
            params: { search: null }
        });
        $stateProvider.state("admin.vendorrequest", {
            url: "/vendorrequest/?search",
            templateUrl: "app/admin/vendorrequest/vendorrequest.html",
            controller: "app.admin.VendorRequestController as vm",
            resolve: {
                privilege: function () { return "SETUP_PROFILE_FORM"; }
            }
        });
        $stateProvider.state("admin.preferences", {
            url: "/admin/preferences",
            templateUrl: "app/admin/preferences/preferences.html",
            controller: "app.admin.PreferencesController as vm"
        });
        $stateProvider.state("admin.help", {
            url: "/admin/help",
            templateUrl: "app/admin/help/help.html",
            controller: "app.admin.HelpController as vm"
        });
        $stateProvider.state("admin.accountinfo", {
            url: "/admin/accountinfo",
            templateUrl: "app/admin/accountinfo/accountinfo.html",
            controller: "app.admin.AccountInfoController as vm"
        });
        $stateProvider.state("admin.permissions", {
            url: "/admin/permissions",
            templateUrl: "app/admin/permissions/permissions.html",
            controller: "app.admin.PermissionsController as vm"
        });
    }
})();
//# sourceMappingURL=admin.module.js.map
(function () {
    "use strict";
    angular.module("app.users", [
        "app.core"
    ]).config(config);
    config.$inject = [
        "$locationProvider",
        "$stateProvider",
        "$urlRouterProvider"
    ];
    function config($locationProvider, $stateProvider, $urlRouterProvider) {
        $stateProvider.state("users", {
            url: "/users/?search",
            templateUrl: "app/users/users.html",
            controller: "app.users.UsersController as vm",
            resolve: {
                privilege: function () { return "SETUP_DEALER_ADDRESS_GRID"; }
            }
        });
    }
})();
//# sourceMappingURL=address.module.js.map
(function () {
    "use strict";
    angular.module("app.users", [
        "app.core"
    ]).config(config);
    config.$inject = [
        "$locationProvider",
        "$stateProvider",
        "$urlRouterProvider"
    ];
    function config($locationProvider, $stateProvider, $urlRouterProvider) {
        $stateProvider.state("users", {
            url: "/users/?search",
            templateUrl: "app/users/users.html",
            controller: "app.users.UsersController as vm",
            resolve: {
                privilege: function () { return "USERS_GRID"; }
            }
        });
    }
})();
//# sourceMappingURL=users.module.js.map
(function () {
    "use strict";
    angular.module("app.advisory", [
        "app.core"
    ]).config(config);
    config.$inject = [
        "$locationProvider",
        "$stateProvider",
        "$urlRouterProvider"
    ];
    function config($locationProvider, $stateProvider, $urlRouterProvider) {
        $stateProvider.state("advisory", {
            url: "/advisory/?search",
            templateUrl: "app/advisory/advisory.html",
            controller: "app.advisory.AdvisoryController as vm",
            resolve: {
                privilege: function () { return "SERVICE_ADVISORIES_GRID"; }
            }
        });
        $stateProvider.state("advisoryDetail", {
            url: "/advisory/:serviceCampaignNumber",
            templateUrl: "app/advisory/advisory.details.html",
            controller: "app.advisory.AdvisoryDetailsController as vm",
            resolve: {
                privilege: function () { return "SERVICE_ADVISORIES_GRID"; }
            }
        });
    }
})();
//# sourceMappingURL=advisory.module.js.map
(function () {
    "use strict";
    angular.module("app.campaign", [
        "app.core"
    ]).config(config);
    config.$inject = [
        "$locationProvider",
        "$stateProvider",
        "$urlRouterProvider"
    ];
    function config($locationProvider, $stateProvider, $urlRouterProvider) {
        $stateProvider.state("campaign", {
            url: "/campaign/?search/?vin/?fromState/?fromItem",
            templateUrl: "app/campaign/campaign.html",
            controller: "app.campaign.CampaignController as vm",
            resolve: {
                privilege: function () { return "SERVICE_ADVISORIES_GRID"; }
            }
        });
        $stateProvider.state("campaignDetail", {
            url: "/campaign/detail/:serviceCampaignId/:ShowAllVins/?Vin/?fromState/?fromItem",
            templateUrl: "app/campaign/campaign.details.html",
            controller: "app.campaign.CampaignDetailsController as vm",
            resolve: {
                privilege: function () { return "SERVICE_CAMPAIGN_FORM"; }
            }
        });
        $stateProvider.state("dealerCampaignDetail", {
            url: "/campaign/detail/:serviceCampaignId/:DealerNumber/:ShowAllVins/?Vin/?fromState/?fromItem",
            templateUrl: "app/campaign/campaign.details.html",
            controller: "app.campaign.CampaignDetailsController as vm",
            resolve: {
                privilege: function () { return "SERVICE_CAMPAIGN_FORM"; }
            }
        });
        $stateProvider.state("campaignPerVin", {
            url: "/campaignPerVin/?vin/",
            templateUrl: "app/campaign/campaign.vin.html",
            controller: "app.campaign.CampaignVinController as vm",
            resolve: {
                privilege: function () { return "SERVICE_ADVISORIES_GRID"; }
            }
        });
    }
})();
//# sourceMappingURL=campaign.module.js.map
(function () {
    "use strict";
    angular.module("app.claims", [
        "app.core"
    ]).config(config);
    config.$inject = [
        "$locationProvider",
        "$stateProvider",
        "$urlRouterProvider"
    ];
    function config($locationProvider, $stateProvider, $urlRouterProvider) {
        $stateProvider.state("claims", {
            url: "/claims/?search",
            templateUrl: "app/claims/claims.html",
            controller: "app.claims.ClaimsController as vm",
            resolve: {
                privilege: function () { return "CLAIMS_GRID"; }
            },
            params: { search: null }
        });
        $stateProvider.state("claimscreate", {
            url: "/claims/create/?vin",
            templateUrl: "app/claims/claims.create.html",
            controller: "app.claims.ClaimsEditController as vm",
            resolve: {
                privilege: function () { return "CLAIMS_GRID"; }
            }
        });
        $stateProvider.state("claimshistorycreate", {
            url: "/claims/history/create/?vin",
            templateUrl: "app/claims/claims.create.html",
            controller: "app.claims.ClaimsEditController as vm",
            resolve: {
                privilege: function () { return "CLAIMS_FORM"; }
            }
        });
        $stateProvider.state("claimsedit", {
            url: "/claims/:claimNumber",
            templateUrl: "app/claims/claims.create.html",
            controller: "app.claims.ClaimsEditController as vm",
            resolve: {
                privilege: function () { return "CLAIMS_FORM"; }
            }
        });
        $stateProvider.state("claimshistory", {
            url: "/claims/history/search/?search",
            templateUrl: "app/claims/claims.history.html",
            controller: "app.claims.ClaimsController as vm",
            resolve: {
                privilege: function () { return "CLAIMS_FORM"; }
            }
        });
        $stateProvider.state("claimshistoryedit", {
            url: "/claims/history/:claimNumber",
            templateUrl: "app/claims/claims.create.html",
            controller: "app.claims.ClaimsEditController as vm",
            resolve: {
                privilege: function () { return "CLAIMS_FORM"; }
            }
        });
    }
})();
//# sourceMappingURL=claims.module.js.map
(function () {
    "use strict";
    angular.module("app.contact", [
        "app.core"
    ]).config(config);
    config.$inject = [
        "$locationProvider",
        "$stateProvider",
        "$urlRouterProvider"
    ];
    function config($locationProvider, $stateProvider, $urlRouterProvider) {
        $stateProvider.state("contact", {
            url: "/contactus",
            templateUrl: "app/contact/contact.html",
            controller: "app.contact.ContactController as vm"
        });
    }
})();
//# sourceMappingURL=contact.module.js.map
(function () {
    "use strict";
    angular.module("app.directives", [
        "app.core"
    ]);
})();
//# sourceMappingURL=_directive.module.js.map
(function () {
    "use strict";
    angular.module("app.documents", [
        "app.core"
    ]).config(config);
    config.$inject = [
        "$locationProvider",
        "$stateProvider",
        "$urlRouterProvider"
    ];
    function config($locationProvider, $stateProvider, $urlRouterProvider) {
        $stateProvider.state("documents", {
            url: "/documents",
            templateUrl: "app/documents/documents.html",
            controller: "app.documents.DocumentsController as vm"
        });
        $stateProvider.state("documentsrelatedto", {
            url: "/documents/relatedto/?partorder",
            templateUrl: "app/documents/documents.relatedto.html",
            controller: "app.documents.DocumentsRelatedToController as vm"
        });
        $stateProvider.state("documentspolicy", {
            url: "/documents",
            templateUrl: "app/documents/documents.policy.html",
            controller: "app.documents.DocumentsPolicyController as vm"
        });
        $stateProvider.state("flatratedocuments", {
            url: "/documents",
            templateUrl: "app/documents/documents.flatrate.html",
            controller: "app.documents.DocumentsFlatRateController as vm"
        });
        $stateProvider.state("documentstraining", {
            url: "/documents",
            templateUrl: "app/documents/documents.training.html",
            controller: "app.documents.DocumentsTrainingController as vm"
        });
        $stateProvider.state("documentsbus", {
            url: "/documents",
            templateUrl: "app/documents/documents.bus.html",
            controller: "app.documents.DocumentsBusController as vm"
        });
    }
})();
//# sourceMappingURL=documents.module.js.map
(function () {
    "use strict";
    angular.module("app.filters", [
        "app.core"
    ]);
})();
//# sourceMappingURL=filter.module.js.map
(function () {
    "use strict";
    angular.module("app.flatrate", [
        "app.core"
    ]).config(config);
    config.$inject = [
        "$locationProvider",
        "$stateProvider",
        "$urlRouterProvider"
    ];
    function config($locationProvider, $stateProvider, $urlRouterProvider) {
        $stateProvider.state("flatratemanual", {
            url: "/flatratemanual/?search",
            templateUrl: "app/flatrate/flatrate.html",
            controller: "app.flatrate.FlatRateController as vm",
            resolve: {
                privilege: function () { return "FLATRATE_MAIN_SEARCH"; }
            }
        });
    }
})();
//# sourceMappingURL=flatrate.module.js.map
(function () {
    "use strict";
    angular.module("app.home", [
        "app.core"
    ]).config(config);
    config.$inject = [
        "$locationProvider",
        "$stateProvider",
        "$urlRouterProvider"
    ];
    function config($locationProvider, $stateProvider, $urlRouterProvider) {
        $stateProvider.state("home", {
            url: "/home",
            templateUrl: "app/home/home.html",
            controller: "app.home.HomeController as vm"
        });
    }
})();
//# sourceMappingURL=home.module.js.map
(function () {
    "use strict";
    angular.module("app.image", [
        "app.core"
    ]).config(config);
    config.$inject = [];
    function config() {
    }
})();
//# sourceMappingURL=image.module.js.map
(function () {
    "use strict";
    angular.module("app.inquiry", [
        "app.core"
    ]).config(config);
    config.$inject = [
        "$locationProvider",
        "$stateProvider",
        "$urlRouterProvider"
    ];
    function config($locationProvider, $stateProvider, $urlRouterProvider) {
        $stateProvider.state("inquiries", {
            url: "/inquiry",
            templateUrl: "app/inquiry/inquiry.html",
            controller: "app.inquiry.InquiryController as vm"
        });
        $stateProvider.state("ar", {
            url: "/inquiry/ar",
            templateUrl: "app/inquiry/inquiry.ar.html",
            controller: "app.inquiry.InquiryARController as vm"
        });
        $stateProvider.state("unitinv", {
            url: "/inquiry/unitinv",
            templateUrl: "app/inquiry/inquiry.unitinv.html",
            controller: "app.inquiry.InquiryUnitInvController as vm"
        });
        $stateProvider.state("partinv", {
            url: "/inquiry/partinv",
            templateUrl: "app/inquiry/inquiry.partinv.html",
            controller: "app.inquiry.InquiryPartInvController as vm"
        });
    }
})();
//# sourceMappingURL=inquiry.module.js.map
(function () {
    "use strict";
    angular.module("app.links", [
        "app.core"
    ]).config(config);
    config.$inject = [
        "$locationProvider",
        "$stateProvider",
        "$urlRouterProvider"
    ];
    function config($locationProvider, $stateProvider, $urlRouterProvider) {
        $stateProvider.state("links", {
            url: "/links/?folder",
            templateUrl: function (stateParams) {
                return "app/links/links." + stateParams.folder.toLowerCase() + ".html";
            }
        });
    }
})();
//# sourceMappingURL=links.module.js.map
(function () {
    "use strict";
    angular.module("app.messages", [
        "app.core"
    ]).config(config);
    config.$inject = [
        "$locationProvider",
        "$stateProvider",
        "$urlRouterProvider"
    ];
    function config($locationProvider, $stateProvider, $urlRouterProvider) {
        $stateProvider.state("messages", {
            url: "/messages",
            templateUrl: "app/messages/messages.html",
            controller: "app.messages.MessagesController as vm",
            resolve: {
                privilege: function () { return "MESSAGEBOARD"; }
            }
        });
    }
})();
//# sourceMappingURL=messages.module.js.map
(function () {
    "use strict";
    angular.module("app.outofservice", [
        "app.core"
    ]).config(config);
    config.$inject = [
        "$locationProvider",
        "$stateProvider",
        "$urlRouterProvider"
    ];
    function config($locationProvider, $stateProvider, $urlRouterProvider) {
        $stateProvider.state("outOfService", {
            url: "/outofservice",
            templateUrl: "app/outofservice/outofservice.html",
            controller: "app.outofservice.OutOfServiceController as vm"
        });
    }
})();
//# sourceMappingURL=outofservice.module.js.map
(function () {
    "use strict";
    angular.module("app.partcatalog", [
        "app.core"
    ]).config(config);
    config.$inject = [
        "$locationProvider",
        "$stateProvider",
        "$urlRouterProvider"
    ];
    function config($locationProvider, $stateProvider, $urlRouterProvider) {
        $stateProvider.state("partcatalog", {
            url: "/partcatalog",
            templateUrl: "app/partcatalog/partcatalog.html",
            controller: "app.partcatalog.PartCatalogController as vm",
            resolve: {
                privilege: function () { return "PARTCATALOG_SEARCH"; },
                isVIN: function () { return false; }
            }
        });
        $stateProvider.state("partcatalogdetail", {
            url: "/partcatalog/?partnumber/?showprices/?division/?make/?site/?modelCode/?modelYear/?Subbrand/?Vin/?Catalog",
            templateUrl: "app/partcatalog/partcatalog.details.html",
            controller: "app.partcatalog.PartCatalogDetailController as vm",
            resolve: {
                privilege: function () { return "PARTCATALOG_DETAILS"; },
                modal: function () { return false; }
            }
        });
    }
})();
//# sourceMappingURL=partcatalog.module.js.map
(function () {
    "use strict";
    angular.module("app.partorder", [
        "app.core"
    ]).config(config);
    config.$inject = [
        "$locationProvider",
        "$stateProvider",
        "$urlRouterProvider"
    ];
    function config($locationProvider, $stateProvider, $urlRouterProvider) {
        $stateProvider.state("partorder", {
            url: "/partorder/?search",
            templateUrl: "app/partorder/partorder.html",
            controller: "app.partorder.PartOrderController as vm",
            resolve: {
                privilege: function () { return "PARTORDERS_GRID"; }
            },
            params: { search: null }
        });
        $stateProvider.state("partordercreate", {
            url: "/partorder/create/?vin?partnumber?division?make?site?modelCode?modelYear?subBrand?isParent",
            templateUrl: "app/partorder/partorder.detail.html",
            controller: "app.partorder.PartOrderDetailController as vm",
            resolve: {
                privilege: function () { return "PARTORDERS_FORM"; }
            }
        });
        $stateProvider.state("partorderhistorycreate", {
            url: "/partorder/history/create/?vin?partnumber?division?make?site?modelCode?modelYear",
            templateUrl: "app/partorder/partorder.detail.html",
            controller: "app.partorder.PartOrderDetailController as vm",
            resolve: {
                privilege: function () { return "PARTORDERS_FORM"; }
            }
        });
        $stateProvider.state("partorderedit", {
            url: "/partorder/?partordernumber",
            templateUrl: "app/partorder/partorder.detail.html",
            controller: "app.partorder.PartOrderDetailController as vm",
            resolve: {
                privilege: function () { return "PARTORDERS_FORM"; }
            }
        });
        $stateProvider.state("partorderhistory", {
            url: "/partorder/history/search/?search",
            templateUrl: "app/partorder/partorder.history.html",
            controller: "app.partorder.PartOrderController as vm",
            resolve: {
                privilege: function () { return "PARTORDERS_FORM"; }
            }
        });
        $stateProvider.state("partorderhistoryedit", {
            url: "/partorder/history/:partordernumber",
            templateUrl: "app/partorder/partorder.detail.html",
            controller: "app.partorder.PartOrderDetailController as vm",
            resolve: {
                privilege: function () { return "PARTORDERS_FORM"; }
            }
        });
        $stateProvider.state("partorderlegacyedit", {
            url: "/partorderlegacy/?partordernumber",
            templateUrl: "app/partorder/partorder.legacy.detail.html",
            controller: "app.partorder.PartOrderLegacyDetailController as vm",
            resolve: {
                privilege: function () { return "PARTORDERS_FORM"; }
            }
        });
        $stateProvider.state("partorderlegacysearch", {
            url: "/partorderlegacy",
            templateUrl: "app/partorder/partorder.legacy.search.html",
            controller: "app.partorder.LegacyPartOrderSearchController as vm",
            resolve: {
                privilege: function () { return "PARTORDERS_GRID"; }
            },
            params: { search: null }
        });
    }
})();
//# sourceMappingURL=partorder.module.js.map
(function () {
    "use strict";
    angular.module("app.report", [
        "app.core"
    ]).config(config);
    config.$inject = [
        "$locationProvider",
        "$stateProvider",
        "$urlRouterProvider"
    ];
    function config($locationProvider, $stateProvider, $urlRouterProvider) {
    }
})();
//# sourceMappingURL=report.module.js.map
(function () {
    "use strict";
    angular.module("app.salesperson", [
        "app.core"
    ]).config(config);
    config.$inject = [
        "$locationProvider",
        "$stateProvider",
        "$urlRouterProvider"
    ];
    function config($locationProvider, $stateProvider, $urlRouterProvider) {
        $stateProvider.state("salesperson", {
            url: "/salesperson/?search",
            templateUrl: "app/salesperson/salesperson.html",
            controller: "app.salesperson.SalesPersonController as vm",
            resolve: {
                privilege: function () { return "USER_SECURITY_MAINTENANCE"; }
            }
        });
    }
})();
//# sourceMappingURL=salesperson.module.js.map
(function () {
    "use strict";
    angular.module("app.shipmenttracking", [
        "app.core"
    ]).config(config);
    config.$inject = [
        "$locationProvider",
        "$stateProvider",
        "$urlRouterProvider"
    ];
    function config($locationProvider, $stateProvider, $urlRouterProvider) {
        $stateProvider.state("shipmenttracking", {
            url: "/shipmenttracking/?partorder",
            templateUrl: "app/shipmenttracking/shipment.tracking.html",
            controller: "app.shipmenttracking.ShipmentTrackingController as vm"
        });
        $stateProvider.state("claimshipmenttracking", {
            url: "/claimshipmenttracking/?claim",
            templateUrl: "app/shipmenttracking/shipment.claimtracking.html",
            controller: "app.shipmenttracking.ClaimShipmentTrackingController as vm"
        });
    }
})();
//# sourceMappingURL=shipment.tracking.module.js.map
(function () {
    "use strict";
    angular.module("app.sip", [
        "app.core"
    ]).config(config);
    config.$inject = [
        "$locationProvider",
        "$stateProvider",
        "$urlRouterProvider"
    ];
    function config($locationProvider, $stateProvider, $urlRouterProvider) {
        $stateProvider.state("sip", {
            url: "/sip/?search",
            templateUrl: "app/sip/sip.html",
            controller: "app.sip.SIPController as vm"
        });
    }
})();
//# sourceMappingURL=sip.module.js.map
(function () {
    "use strict";
    angular.module("app.spiff", [
        "app.core"
    ]).config(config);
    config.$inject = [
        "$locationProvider",
        "$stateProvider",
        "$urlRouterProvider"
    ];
    function config($locationProvider, $stateProvider, $urlRouterProvider) {
        $stateProvider.state("spiff", {
            url: "/spiff/?search",
            templateUrl: "app/spiff/spiff.html",
            controller: "app.spiff.SPIFFController as vm",
            resolve: {
                privilege: function () { return "SPIFF_GRID"; }
            }
        });
        $stateProvider.state("spiffedit", {
            url: "/spiff/create",
            templateUrl: "app/spiff/spiff.create.html",
            controller: "app.spiff.SPIFFLineEditController as vm",
            resolve: {
                privilege: function () { return "SPIFF_REGISTER_FORM"; }
            }
        });
    }
})();
//# sourceMappingURL=spiff.module.js.map
(function () {
    "use strict";
    angular.module("app.support", [
        "app.core"
    ]).config(config);
    config.$inject = [
        "$locationProvider",
        "$stateProvider",
        "$urlRouterProvider"
    ];
    function config($locationProvider, $stateProvider, $urlRouterProvider) {
        $stateProvider.state("support", {
            url: "/support",
            templateUrl: "app/support/support.html",
            controller: "app.support.SupportController as vm"
        });
    }
})();
//# sourceMappingURL=support.module.js.map
(function () {
    "use strict";
    angular.module("app.training", [
        "app.core"
    ]).config(config);
    config.$inject = [
        "$locationProvider",
        "$stateProvider",
        "$urlRouterProvider"
    ];
    function config($locationProvider, $stateProvider, $urlRouterProvider) {
        $stateProvider.state("training", {
            url: "/training",
            templateUrl: "app/training/training.html",
            controller: "app.training.TrainingController as vm"
        });
    }
})();
//# sourceMappingURL=training.module.js.map
(function () {
    "use strict";
    angular.module("app.unit", [
        "app.core"
    ]).config(config);
    config.$inject = [
        "$locationProvider",
        "$stateProvider",
        "$urlRouterProvider"
    ];
    function config($locationProvider, $stateProvider, $urlRouterProvider) {
        $stateProvider.state("unit", {
            url: "/unit/?search",
            templateUrl: "app/unit/unit.html",
            controller: "app.unit.UnitController as vm",
            resolve: {
                privilege: function () { return "DEALER_UNITS_GRID"; }
            }
        });
        $stateProvider.state("unitdetails", {
            url: "/unit/details/:vin/:includeLegacy",
            templateUrl: "app/unit/unit.details.html",
            controller: "app.unit.UnitDetailsController as vm",
            resolve: {
                privilege: function () { return "DEALER_UNITS_FORM"; }
            },
            params: {
                includeLegacy: { value: null }
            }
        });
        $stateProvider.state("unitdetailsWeb", {
            url: "/unit/details/vin/GetVinForWeb",
            templateUrl: "app/unit/unit.details.html",
            controller: "app.unit.UnitDetailsController as vm",
            resolve: {
                privilege: function () { return "DEALER_UNITS_FORM"; }
            }
        });
        $stateProvider.state("unitwarrantyregister", {
            url: "/unit/:vin/warranty/register",
            templateUrl: "app/unit/unit.warranty.register.html",
            controller: "app.unit.warranty.WarrantyRegisterController as vm",
            resolve: {
                privilege: function () { return "RETAIL_REGISTRATION_FORM"; }
            }
        });
        $stateProvider.state("unitwarrantyview", {
            url: "/unit/:vin/warranty/view",
            templateUrl: "app/unit/unit.warranty.view.html",
            controller: "app.unit.warranty.WarrantyViewController as vm",
            resolve: {
                privilege: function () { return "RETAIL_REGISTRATION_FORM"; },
                name: function ($stateParams) { return $stateParams.name; },
                address: function ($stateParams) { return $stateParams.address; }
            },
            params: {
                name: null,
                address: null
            }
        });
        $stateProvider.state("pdi", {
            url: "/unit/report/pdi/:vin",
            templateUrl: "app/unit/unit.report.pdi.html",
            controller: "app.unit.report.PDIController as vm"
        });
    }
})();
//# sourceMappingURL=unit.module.js.map
(function () {
    "use strict";
    angular.module("app.vendor", [
        "app.core"
    ]).config(config);
    config.$inject = [
        "$locationProvider",
        "$stateProvider",
        "$urlRouterProvider"
    ];
    function config($locationProvider, $stateProvider, $urlRouterProvider) {
        $stateProvider.state("vendorhome", {
            url: "/vendorhome",
            templateUrl: "app/vendorportal/vendor.home.html",
            controller: "app.vendor.VendorHomeController as vm"
        });
        $stateProvider.state("vendorinvoice", {
            url: "/vendorinvoice",
            templateUrl: "app/vendorportal/vendor.invoice.html",
            controller: "app.vendor.InquiryVendorInvController as vm"
        });
        $stateProvider.state("vendorremit", {
            url: "/vendorremit",
            templateUrl: "app/vendorportal/vendor.remit.html",
            controller: "app.vendor.VendorRecreateRemitController as vm"
        });
        $stateProvider.state("vendorcheckinq", {
            url: "/vendorcheckinq/?checkNumber",
            templateUrl: "app/vendorportal/vendor.checkinq.html",
            controller: "app.vendor.InquiryVendorCheckInqController as vm"
        });
        $stateProvider.state("vendorusers", {
            url: "/vendorusers",
            templateUrl: "app/vendorportal/vendor.users.html",
            controller: "app.vendor.VendorUsersController as vm"
        });
        $stateProvider.state("vendorprofile", {
            url: "/vendorprofile",
            templateUrl: "app/vendorportal/vendor.profile.html",
            controller: "app.vendor.VendorProfileController as vm"
        });
    }
})();
//# sourceMappingURL=vendorportal.module.js.map
(function() {
    'use strict';
    angular
        .module('focus-if', [])
        .directive('focusIf', focusIf);

    function focusIf($timeout) {
        function link($scope, $element, $attrs) {
            var dom = $element[0];
            if ($attrs.focusIf) {
                $scope.$watch($attrs.focusIf, focus);
            } else {
                focus(true);
            }
            function focus(condition) {
                if (condition) {
                    $timeout(function() {
                        dom.focus();
                    }, $scope.$eval($attrs.focusDelay) || 0);
                }
            }
        }
        return {
            restrict: 'A',
            link: link
        };
    }
})();
var app;
(function (app) {
    var directives;
    (function (directives) {
        "use strict";
        function formatAttribute($filter) {
            return {
                require: 'ngModel',
                link: function (scope, elem, attrs, ctrl) {
                    if (!ctrl)
                        return;
                    if (attrs.format == 'currency') {
                        ctrl.$formatters.unshift(function (a) {
                            return $filter(attrs.format)(ctrl.$modelValue);
                        });
                        elem.bind('blur', function (event) {
                            var plainNumber = ctrl.$viewValue.replace(/[^\d|\-+|\.+]/g, '');
                            if (plainNumber != '') {
                                elem.val($filter(attrs.format)(plainNumber));
                            }
                        });
                    }
                    if (attrs.format == 'number') {
                        elem.bind('blur', function (event) {
                            var plainNumber = elem.val().replace(/[^\d|\-+|\.+]/g, '');
                            if (plainNumber != NaN) {
                                elem.val($filter(attrs.format)(plainNumber));
                                elem.val(parseFloat(plainNumber).toFixed(2));
                            }
                        });
                        ctrl.$formatters.unshift(function (a) {
                            try {
                                var plainNumber = $filter(attrs.format)(ctrl.$modelValue).replace(/[^\d|\-+|\.+]/g, '');
                                if (plainNumber != NaN) {
                                    return parseFloat(plainNumber).toFixed(2);
                                }
                                else {
                                    return 0;
                                }
                            }
                            catch (e) {
                                return 0;
                            }
                        });
                        var unregister = scope.$watch(attrs['ngModel'], function (v) {
                            if (document.activeElement.id != '_hours') {
                                var plainNumber = elem.val().replace(/[^\d|\-+|\.+]/g, '');
                                if (plainNumber != NaN) {
                                    elem.val($filter(attrs.format)(plainNumber));
                                    elem.val(parseFloat(plainNumber).toFixed(2));
                                    unregister();
                                }
                            }
                        });
                    }
                }
            };
        }
        directives.formatAttribute = formatAttribute;
        formatAttribute.$inject = ['$filter'];
        angular.module("app.directives")
            .directive('formatAttribute', formatAttribute);
    })(directives = app.directives || (app.directives = {}));
})(app || (app = {}));
//# sourceMappingURL=formatAttribute.directive.js.map
var app;
(function (app) {
    var directives;
    (function (directives) {
        "use strict";
        function blurCurrency($filter) {
            return {
                require: 'ngModel',
                restrict: 'A',
                link: function (scope, elem, attrs, ctrl) {
                    function formatter(value) {
                        value = value ? parseFloat(value.toString().replace(/[^0-9._-]/g, '')) || 0 : 0;
                        var formattedValue = $filter('currency')(value);
                        elem.val(formattedValue);
                        ctrl.$setViewValue(value);
                        return formattedValue;
                    }
                    ctrl.$formatters.push(formatter);
                    elem.bind('blur', function () {
                        formatter(elem.val());
                    });
                }
            };
        }
        directives.blurCurrency = blurCurrency;
        blurCurrency.$inject = ['$filter'];
        angular.module("app.directives")
            .directive('blurCurrency', blurCurrency);
    })(directives = app.directives || (app.directives = {}));
})(app || (app = {}));
//# sourceMappingURL=ngblurcurrency.directive.js.map
var app;
(function (app) {
    var directives;
    (function (directives) {
        "use strict";
        function input() {
            return {
                restrict: 'E',
                link: function (scope, elem, attrs) {
                    var validTypes = /^(search|email|url|tel|number|text)$/i;
                    if (!validTypes.test(attrs.type))
                        return;
                    elem.bind('mouseup', function () {
                        var $input = $(this), oldValue = $input.val();
                        if (oldValue === '')
                            return;
                        setTimeout(function () {
                            var newValue = $input.val();
                            if (newValue === '') {
                                angular.element($input).change();
                            }
                        }, 1);
                    });
                }
            };
        }
        directives.input = input;
        angular.module("app.directives")
            .directive('input', input);
    })(directives = app.directives || (app.directives = {}));
})(app || (app = {}));
//# sourceMappingURL=ngclearinput.directive.js.map
var app;
(function (app) {
    var directives;
    (function (directives) {
        "use strict";
        function NgEnterDirective() {
            return {
                restrict: 'A',
                link: function (scope, elem, attrs, ctrl) {
                    elem.bind("keydown keypress", function (event) {
                        if (event.which === 13) {
                            scope.$apply(function () {
                                scope.$eval(attrs.ngEnter);
                            });
                            event.preventDefault();
                        }
                    });
                }
            };
        }
        directives.NgEnterDirective = NgEnterDirective;
        angular.module("app.directives")
            .directive('ngEnter', NgEnterDirective);
    })(directives = app.directives || (app.directives = {}));
})(app || (app = {}));
//# sourceMappingURL=ngEnter.directive.js.map
var app;
(function (app) {
    var directives;
    (function (directives) {
        "use strict";
        function focusMe($timeout) {
            return {
                scope: { trigger: '@focusMe' },
                link: function (scope, element) {
                    scope.$watch('trigger', function (value) {
                        if (value === "true") {
                            $timeout(function () {
                                element[0].focus();
                                value = false;
                            });
                        }
                    });
                }
            };
        }
        directives.focusMe = focusMe;
        focusMe.$inject = ['$timeout'];
        angular.module("app.directives")
            .directive('focusMe', focusMe);
    })(directives = app.directives || (app.directives = {}));
})(app || (app = {}));
//# sourceMappingURL=ngFocusMe.directive.js.map
var app;
(function (app) {
    var directives;
    (function (directives) {
        "use strict";
        function PhoneFormatDirective() {
            return {
                require: 'ngModel',
                restrict: 'A',
                link: function (scope, elem, attrs, ctrl) {
                    var domElement = elem[0];
                    var phoneNumberRegex = new RegExp("\\d{3}\\-\\d{3}\\-\\d{4}");
                    var cursorIndex;
                    ctrl.$parsers.push(function (value) {
                        if (typeof value === "undefined" || value === null || value == "") {
                            ctrl.$setValidity('Invalid. Please enter phone number, it will auto-format.', true);
                            return value;
                        }
                        var prevValue, nextValue;
                        prevValue = value;
                        nextValue = value.replace(/[\D]/gi, "");
                        nextValue = $.trim(nextValue);
                        if (nextValue.length >= 4 && nextValue.length <= 6) {
                            nextValue = nextValue.replace(/(\d{3})(\d{3})?/, "$1-$2");
                        }
                        else if (nextValue.length >= 7 && nextValue.length <= 10) {
                            nextValue = nextValue.replace(/(\d{3})(\d{3})(\d{4})?/, "$1-$2-$3");
                        }
                        else if (nextValue.length > 10) {
                            nextValue = nextValue.substring(0, 10);
                            nextValue = nextValue.replace(/(\d{3})(\d{3})(\d{4})?/, "$1-$2-$3");
                        }
                        cursorIndex = domElement.selectionStart;
                        if (nextValue == "") {
                            ctrl.$setViewValue(nextValue);
                            ctrl.$render();
                        }
                        else if (prevValue != nextValue) {
                            ctrl.$setViewValue(nextValue);
                        }
                        else {
                            ctrl.$render();
                        }
                        if (cursorIndex == 4 || cursorIndex == 8) {
                            cursorIndex = cursorIndex + 1;
                        }
                        var valid = phoneNumberRegex.test(nextValue);
                        ctrl.$setValidity('Invalid. Please enter phone number, it will auto-format.', valid);
                        domElement.setSelectionRange(cursorIndex, cursorIndex);
                        return nextValue;
                    });
                }
            };
        }
        directives.PhoneFormatDirective = PhoneFormatDirective;
        angular.module("app.directives")
            .directive('phoneFormat', PhoneFormatDirective);
    })(directives = app.directives || (app.directives = {}));
})(app || (app = {}));
//# sourceMappingURL=phoneformatter.directive.js.map
var app;
(function (app) {
    var directives;
    (function (directives) {
        "use strict";
        function scrollIntoView() {
            return {
                link: function (scope, elem, attrs, ctrl) {
                    if (scope.$last) {
                        if (elem.context.attributes['scroll-into-view'].value == 0) {
                            window.setTimeout(function () {
                                window.scrollTo(0, 0);
                            }, 0);
                        }
                        else {
                            setTimeout(function () {
                                window.scrollBy(0, elem.context.attributes['scroll-into-view'].value);
                            }, 20);
                        }
                    }
                }
            };
        }
        directives.scrollIntoView = scrollIntoView;
        angular.module("app.directives")
            .directive('scrollIntoView', scrollIntoView);
    })(directives = app.directives || (app.directives = {}));
})(app || (app = {}));
//# sourceMappingURL=scrollIntoView.directive.js.map
var app;
(function (app) {
    var directives;
    (function (directives) {
        "use strict";
        function SINFormatDirective() {
            return {
                require: 'ngModel',
                restrict: 'A',
                link: function (scope, elem, attrs, ctrl) {
                    var domElement = elem[0];
                    var phoneNumberRegex = new RegExp("\\d{3}\\-\\d{3}\\-\\d{3}");
                    var cursorIndex;
                    ctrl.$parsers.push(function (value) {
                        if (typeof value === "undefined" || value === null || value == "") {
                            ctrl.$setValidity('invalidFormat', true);
                            return undefined;
                        }
                        var prevValue, nextValue;
                        prevValue = value;
                        nextValue = value.replace(/[\D]/gi, "");
                        if (nextValue.length >= 4 && nextValue.length <= 6) {
                            nextValue = nextValue.replace(/(\d{3})(\d{3})?/, "$1-$2");
                        }
                        else if (nextValue.length >= 7 && nextValue.length <= 9) {
                            nextValue = nextValue.replace(/(\d{3})(\d{3})(\d{3})?/, "$1-$2-$3");
                        }
                        else if (nextValue.length > 9) {
                            nextValue = nextValue.substring(0, 9);
                            nextValue = nextValue.replace(/(\d{3})(\d{3})(\d{3})?/, "$1-$2-$3");
                        }
                        cursorIndex = domElement.selectionStart;
                        if (nextValue == "") {
                            ctrl.$setViewValue(nextValue);
                            ctrl.$render();
                        }
                        else if (prevValue != nextValue) {
                            ctrl.$setViewValue(nextValue);
                        }
                        else {
                            ctrl.$render();
                        }
                        if (cursorIndex == 4 || cursorIndex == 8) {
                            cursorIndex = cursorIndex + 1;
                        }
                        var valid = phoneNumberRegex.test(value);
                        ctrl.$setValidity('Invalid Primary Phone Number. Please enter 10 digits. Enter numbers only the phone number will auto-format.', valid);
                        domElement.setSelectionRange(cursorIndex, cursorIndex);
                        return nextValue;
                    });
                }
            };
        }
        directives.SINFormatDirective = SINFormatDirective;
        angular.module("app.directives")
            .directive('sinFormat', SINFormatDirective);
    })(directives = app.directives || (app.directives = {}));
})(app || (app = {}));
//# sourceMappingURL=SINFormatter.directive.js.map
var app;
(function (app) {
    var directives;
    (function (directives) {
        "use strict";
        function SSNFormatDirective() {
            return {
                require: 'ngModel',
                restrict: 'A',
                link: function (scope, elem, attrs, ctrl) {
                    var domElement = elem[0];
                    var phoneNumberRegex = new RegExp("\\d{3}\\-\\d{2}\\-\\d{4}");
                    var cursorIndex;
                    ctrl.$parsers.push(function (value) {
                        if (typeof value === "undefined" || value === null || value == "") {
                            ctrl.$setValidity('invalidFormat', true);
                            return undefined;
                        }
                        var prevValue, nextValue;
                        prevValue = value;
                        nextValue = value.replace(/[\D]/gi, "");
                        if (nextValue.length >= 4 && nextValue.length <= 5) {
                            nextValue = nextValue.replace(/(\d{3})(\d{2})?/, "$1-$2");
                        }
                        else if (nextValue.length >= 6 && nextValue.length <= 9) {
                            nextValue = nextValue.replace(/(\d{3})(\d{2})(\d{4})?/, "$1-$2-$3");
                        }
                        else if (nextValue.length > 9) {
                            nextValue = nextValue.substring(0, 9);
                            nextValue = nextValue.replace(/(\d{3})(\d{2})(\d{4})?/, "$1-$2-$3");
                        }
                        cursorIndex = domElement.selectionStart;
                        if (nextValue == "") {
                            ctrl.$setViewValue(nextValue);
                            ctrl.$render();
                        }
                        else if (prevValue != nextValue) {
                            ctrl.$setViewValue(nextValue);
                        }
                        else {
                            ctrl.$render();
                        }
                        if (cursorIndex == 4 || cursorIndex == 7) {
                            cursorIndex = cursorIndex + 1;
                        }
                        var valid = phoneNumberRegex.test(value);
                        ctrl.$setValidity('Invalid SSN. Please enter 9 digits. Enter numbers only the SSN will auto-format.', valid);
                        domElement.setSelectionRange(cursorIndex, cursorIndex);
                        return nextValue;
                    });
                }
            };
        }
        directives.SSNFormatDirective = SSNFormatDirective;
        angular.module("app.directives")
            .directive('ssnFormat', SSNFormatDirective);
    })(directives = app.directives || (app.directives = {}));
})(app || (app = {}));
//# sourceMappingURL=SSNFormatter.directive.js.map
var app;
(function (app) {
    var directives;
    (function (directives) {
        "use strict";
        function StickyDirective($window) {
            return {
                link: function (scope, element, attrs, controller) {
                    var $win = angular.element($window);
                    if (scope._stickyElements === undefined) {
                        scope._stickyElements = [];
                    }
                    $win.bind("scroll.sticky", function (e) {
                        var pos = $win.scrollTop();
                        for (var i = 0; i < scope._stickyElements.length; i++) {
                            var item = scope._stickyElements[i];
                            scope.$watch(item.offsetHeight, function (values) {
                                recheckPositions();
                            });
                            if (!item.isStuck && pos > item.start) {
                                if (item.isPartItem) {
                                    item.element.addClass("stuckPart");
                                    item.element.css('width', item.width);
                                }
                                else {
                                    item.element.addClass("stuck");
                                }
                                item.isStuck = true;
                                if (item.placeholder) {
                                    item.placeholder = angular.element("<div></div>")
                                        .css({ height: item.element.outerHeight() + "px" })
                                        .insertBefore(item.element);
                                }
                            }
                            else if (item.isStuck && pos < item.start) {
                                if (item.isPartItem) {
                                    item.element.removeClass("stuckPart");
                                }
                                else {
                                    item.element.removeClass("stuck");
                                }
                                item.isStuck = false;
                                if (item.placeholder) {
                                    item.placeholder.remove();
                                    item.placeholder = true;
                                }
                            }
                        }
                    });
                    var recheckPositions = function () {
                        for (var i = 0; i < scope._stickyElements.length; i++) {
                            var item = scope._stickyElements[i];
                            if (!item.isStuck) {
                                item.start = item.element.offset().top;
                            }
                            else if (item.placeholder) {
                                item.start = item.placeholder.offset().top;
                            }
                        }
                    };
                    $win.bind("load", recheckPositions);
                    $win.bind("resize", recheckPositions);
                    var item = {
                        element: element,
                        isStuck: false,
                        placeholder: attrs.usePlaceholder !== undefined,
                        start: element.offset().top,
                        isPartItem: attrs.partItem !== undefined,
                        width: element[0].clientWidth
                    };
                    scope._stickyElements.push(item);
                }
            };
        }
        directives.StickyDirective = StickyDirective;
        ;
        angular.module("app.directives")
            .directive('sticky', StickyDirective);
    })(directives = app.directives || (app.directives = {}));
})(app || (app = {}));
//# sourceMappingURL=stickyheader.directive.js.map
var app;
(function (app) {
    var directives;
    (function (directives) {
        "use strict";
        function stickyNavDirective($window) {
            return {
                restrict: 'A',
                scope: {},
                link: function (scope, elem, attrs) {
                    var elemRect;
                    var height = elem[0].clientHeight;
                    var top = 0;
                    scope.$watch(function () {
                        elemRect = elem[0].getBoundingClientRect();
                        return elemRect.top + $window.pageYOffset;
                    }, function (newVal, oldVal) {
                        if (!elem.hasClass('fixed-bottom')) {
                            top = newVal;
                        }
                        elem.css('width', elemRect.width);
                        elem.css('left', elemRect.left);
                        toggleClass();
                    });
                    var toggleClass = function () {
                        if (elem[0].getBoundingClientRect().top + height <= $window.innerHeight) {
                            elem.addClass('fixed-bottom');
                        }
                        else {
                            if (top - $window.pageYOffset + height >= $window.innerHeight && elem.hasClass('fixed-bottom')) {
                                elem.removeClass('fixed-bottom');
                            }
                        }
                    };
                    $window.onscroll = function () {
                        toggleClass();
                    };
                }
            };
        }
        directives.stickyNavDirective = stickyNavDirective;
        angular.module("app.directives")
            .directive('stickyNav', stickyNavDirective);
    })(directives = app.directives || (app.directives = {}));
})(app || (app = {}));
//# sourceMappingURL=stickyNav.js.map
var app;
(function (app) {
    var core;
    (function (core) {
        "use strict";
        var ActivateController = (function () {
            function ActivateController($state, $location, $http, mv360api, LoginService, $localStorage) {
                this.$state = $state;
                this.$location = $location;
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$localStorage = $localStorage;
                var vm = this;
                vm.inviteCode = $state.params['invitecode'];
                $localStorage.inviteCode = vm.inviteCode;
            }
            ActivateController.$inject = ["$state", "$location", "$http", "mv360api", "app.services.LoginService", "$localStorage"];
            return ActivateController;
        }());
        angular.module("app.core")
            .controller("app.core.ActivateController", ActivateController);
    })(core = app.core || (app.core = {}));
})(app || (app = {}));
//# sourceMappingURL=activate.controller.js.map
(function () {
    "use strict";
    var priv = {
        DEALER_UNITS_GRID: 1,
        DEALER_UNITS_FORM: 2,
        RETAIL_REGISTRATION_FORM: 3,
        CLAIMS_GRID: 4,
        CLAIMS_FORM: 5,
        FLATRATE_MAIN_SEARCH: 6,
        FLATRATE_NOTES_FORM: 7,
        PARTORDERS_GRID: 8,
        PARTORDERS_FORM: 9,
        PARTCATALOG_SEARCH: 10,
        PARTCATALOG_DETAILS: 11,
        SPIFF_GRID: 12,
        SPIFF_REGISTER_FORM: 13,
        SERVICE_ADVISORIES_GRID: 14,
        SERVICE_CAMPAIGN_FORM: 15,
        SETUP_DEALER_ADDRESS_GRID: 18,
        USER_SECURITY_MAINTENANCE: 19,
        USERS_GRID: 20,
        CONTACTS: 21,
        DOCUMENTS: 22,
        DOCUMENTS_INVOICES: 23,
        DOCUMENTS_STATEMENTS: 24,
        DOCUMENTS_SUPPORT: 25,
        DOCUMENTS_TRAINING: 26,
        SPIFF_PAY_DEALER: 27,
        SPIFF_PAY_DEALER_SALES_PERSON: 28,
        SPIFF_GRID_CURRENT_USER: 29,
        UNIT_ORDER_INVOICES: 30,
        PART_ORDER_INVOICES: 31
    };
})();
//# sourceMappingURL=app.privileges.js.map
(function () {
    "use strict";
    var mv360api = {
        appVersion: "1.0.0",
        baseURL: "",
        logo: "acmelogo.png",
        clientId: "0000000044164A4C",
        callbackUrl: "https://fr-dev-portal-mv360.azurewebsites.net/callback/",
        accessToken: "",
        refreshToken: "",
        authAccount: "",
        releaseName: "RELEASE 180",
        currentDealer: "",
        currentVendor: "",
        currentPrivileges: null
    };
    angular
        .module("app")
        .value("mv360api", mv360api);
})();
//# sourceMappingURL=app.values.js.map
var app;
(function (app) {
    var core;
    (function (core) {
        "use strict";
        var CallbackController = (function () {
            function CallbackController($state, $location, $http, mv360api, LoginService, $localStorage, DealerService) {
                this.$state = $state;
                this.$location = $location;
                this.$http = $http;
                this.mv360api = mv360api;
                this.LoginService = LoginService;
                this.$localStorage = $localStorage;
                this.DealerService = DealerService;
                var vm = this;
                if ($localStorage.loginerror) {
                    $localStorage.loginerror = "";
                    vm.header = "We're sorry ;(";
                    vm.message = "mv360 doesn't recognize your Microsoft Login as being a valid mv360 account.  Please ask your mv360 admin to resend your invitiation email.  Use the link provided in your invitation email.";
                }
                else {
                    vm.header = "Welcome";
                    vm.message = "Welcome to the mv360 dealer portal!  Click the login button in the top-right corner to login.";
                }
                var invitecode = $state.params['invitecode'];
                var url = $location.url();
                var codepos = url.indexOf("code") + 5;
                if (codepos > 5) {
                    var accesscode = url.substr(codepos);
                    if ($localStorage.inviteCode) {
                        vm.header = "Activating...";
                        vm.message = "We are activating your mv360 account.";
                        $localStorage.inviteCode = null;
                    }
                    else {
                    }
                }
            }
            CallbackController.$inject = ["$state", "$location", "$http", "mv360api", "app.services.LoginService", "$localStorage", "app.services.DealerService"];
            return CallbackController;
        }());
        angular.module("app.core")
            .controller("app.core.CallbackController", CallbackController);
    })(core = app.core || (app.core = {}));
})(app || (app = {}));
//# sourceMappingURL=callback.controller.js.map
var app;
(function (app) {
    var core;
    (function (core) {
        var HttpRetry = (function () {
            function HttpRetry($http, $q, LoginService, mv360api) {
                this.$http = $http;
                this.$q = $q;
                this.LoginService = LoginService;
                this.mv360api = mv360api;
            }
            HttpRetry.prototype.run = function (config, doNotShowGenericErrorMessage) {
                var _this = this;
                var deferred = this.$q.defer();
                this.LoginService.ResetTimer();
                this.$http(config)
                    .then(function (response) {
                    deferred.resolve(response.data);
                }, function (errorResponse) {
                    if (errorResponse.status == 401) {
                        HttpRetry.awaitingPromises.push({
                            config: config,
                            deferred: deferred
                        });
                        if (!HttpRetry.refreshing) {
                            HttpRetry.refreshing = true;
                            _this.LoginService.AttemptTokenRefresh()
                                .then(function (refreshResult) {
                                console.log(refreshResult);
                                HttpRetry.refreshing = false;
                                if (refreshResult) {
                                    var awaitingPromises = HttpRetry.awaitingPromises.slice();
                                    HttpRetry.awaitingPromises = [];
                                    awaitingPromises.forEach(function (x) {
                                        x.config.headers["Authorization"] = "Bearer " + _this.mv360api.accessToken;
                                        _this.$http(x.config).then(function (retryResponse) {
                                            console.log('success');
                                            x.deferred.resolve(retryResponse.data);
                                        }, function (errorResponse) {
                                            console.log('operation still failed');
                                            console.log("Error: " + errorResponse);
                                            x.deferred.reject(errorResponse);
                                        });
                                    });
                                }
                                else {
                                    console.log('unable to get new access_token');
                                    deferred.reject(errorResponse);
                                }
                            })["catch"](function (ex) {
                                console.log(ex);
                                HttpRetry.awaitingPromises = [];
                                console.log("logging out");
                                HttpRetry.refreshing = false;
                                _this.LoginService.Logout(false);
                            });
                        }
                    }
                    else {
                        console.log(errorResponse);
                        if (errorResponse.status == 503 && displayOutOfService == "true") {
                            _this.LoginService.DisplayOutOfService();
                        }
                        if (!HttpRetry.errorMessageShown && doNotShowGenericErrorMessage != true) {
                            HttpRetry.errorMessageShown = true;
                            if (errorResponse.data.ExceptionMessage != undefined) {
                                vex.dialog.alert({
                                    unsafeMessage: 'Sorry, an error has occurred. Please try again later. If error persists, please contact support. Please provide details on how the error was produced, screen shot if applicable, and email this information to <a href="mailto:portalhelpdesk@forestriverinc.com">portalhelpdesk@forestriverinc.com.</a><br /> <br /> <b>Error details:</b> <br />' + errorResponse.data.ExceptionMessage.toString(),
                                    callback: function (value) {
                                        HttpRetry.errorMessageShown = false;
                                    }
                                });
                            }
                            else {
                                vex.dialog.alert({
                                    unsafeMessage: 'Sorry, an error has occurred. Please try again later. If error persists, please contact support. Please provide details on how the error was produced, screen shot if applicable, and email this information to <a href="mailto:portalhelpdesk@forestriverinc.com">portalhelpdesk@forestriverinc.com.</a><br /> <br /> <b>Error details:</b> <br />' + errorResponse.data.toString(),
                                    callback: function (value) {
                                        HttpRetry.errorMessageShown = false;
                                    }
                                });
                            }
                        }
                        deferred.reject(errorResponse);
                    }
                });
                return deferred.promise;
            };
            HttpRetry.errorMessageShown = false;
            HttpRetry.refreshing = false;
            HttpRetry.awaitingPromises = [];
            return HttpRetry;
        }());
        core.HttpRetry = HttpRetry;
    })(core = app.core || (app.core = {}));
})(app || (app = {}));
//# sourceMappingURL=HttpRetry.js.map
var app;
(function (app) {
    var core;
    (function (core) {
        "use strict";
        var LoginController = (function () {
            function LoginController($state, LoginService, $modal, AOSStatusService, userService, $localStorage) {
                var _this = this;
                this.$state = $state;
                this.LoginService = LoginService;
                this.$modal = $modal;
                this.AOSStatusService = AOSStatusService;
                this.userService = userService;
                this.$localStorage = $localStorage;
                var vm = this;
                vm.username = "";
                vm.password = "";
                vm.invalidCredentials = false;
                vm.LoginService.IsVendorEnvironment().then(function (result) {
                    if (result) {
                        _this.$state.go("vendorlogin");
                    }
                });
                vm.userService.GetEnvironmentCompanyName().then(function (result) {
                    vm.companyName = result.toString();
                });
            }
            LoginController.prototype.login = function () {
                var _this = this;
                var vm = this;
                vm.AOSStatusService.getStatus().then(function () {
                    vm.invalidCredentials = false;
                    vm.userService.ValidateLoginAttempt(_this.username).then(function (result) {
                        if (result) {
                            vm.LoginService.LoginBasic(_this.username, _this.password).then(function (resp) {
                                if (resp.data.access_token) {
                                    vm.LoginService.Validate(resp.data.access_token, resp.data.refresh_token).then(function (result) {
                                        if (result) {
                                            vm.$state.go('home');
                                            vm.LoginService.ResetTimer();
                                        }
                                        else {
                                            console.log("login error");
                                        }
                                    });
                                }
                                else {
                                    vm.showError = true;
                                    vex.dialog.alert("Username or Password was incorrect. If you"
                                        + " cannot remember your password or would like to reset it, please click on the Reset Password button below.");
                                }
                            })["catch"](function (ex) {
                                console.log(ex);
                                vm.errorMessage = ex.data.error;
                                vm.showError = true;
                                if (ex.data.error.includes("NEW LONGER PASSWORD IS REQUIRED")) {
                                    vex.dialog.alert(" Please click on the Reset Password button below, then you can set you  new password in preferences if you want to.");
                                }
                                else {
                                    vex.dialog.alert("Username or Password was incorrect. If you"
                                        + " cannot remember your password or would like to reset it, please click on the Reset Password button below.");
                                }
                            });
                        }
                        else {
                            vex.dialog.alert("Too many failed attempts for the username. Please wait 15 minutes before attempting again. If you"
                                + " cannot remember your password or would like to reset it, please click on the Reset Password button below.");
                        }
                    });
                });
            };
            ;
            LoginController.prototype.forgotPassword = function () {
                var vm = this;
                var settings = {
                    controller: "app.core.LoginModalController as vm",
                    templateUrl: "app/login.modal.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'lg',
                    resolve: {
                        IsPasswordReset: function () { return true; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
                modalInstance.result.then(function (resultdata) {
                    vm.addAlert("success", "An email has been sent to you containing a new password. Please check your email and try to log in again.");
                });
            };
            LoginController.prototype.addAlert = function (type, message) {
                this.alerts.push({ type: type, msg: message });
            };
            LoginController.$inject = ["$state", "app.services.LoginService", "$uibModal", "app.services.AOSStatusService", "app.services.UserService", "$localStorage"];
            return LoginController;
        }());
        angular.module("app.core")
            .controller("app.core.LoginController", LoginController);
    })(core = app.core || (app.core = {}));
})(app || (app = {}));
//# sourceMappingURL=login.controller.js.map
var app;
(function (app) {
    var core;
    (function (core) {
        "use strict";
        var LoginModalController = (function () {
            function LoginModalController($state, userService, $modalInstance, IsPasswordReset, $localStorage) {
                this.$state = $state;
                this.userService = userService;
                this.$modalInstance = $modalInstance;
                this.$localStorage = $localStorage;
                var vm = this;
                vm.$localStorage.vendorLogin = null;
                console.log(IsPasswordReset);
                vm.hasPasswordBeenReset = false;
                if (IsPasswordReset) {
                    vm.showPasswordReset = true;
                }
                else {
                    vm.showPasswordReset = false;
                }
            }
            LoginModalController.prototype.save = function () {
                this.userService.ResetPassword(this.data.Email);
                this.hasPasswordBeenReset = true;
            };
            LoginModalController.prototype.close = function () {
                this.$modalInstance.dismiss();
            };
            LoginModalController.$inject = ["$state", "app.services.UserService", "$uibModalInstance", "IsPasswordReset", "$localStorage"];
            return LoginModalController;
        }());
        angular.module("app.core")
            .controller("app.core.LoginModalController", LoginModalController);
    })(core = app.core || (app.core = {}));
})(app || (app = {}));
//# sourceMappingURL=login.modal.controller.js.map
var app;
(function (app) {
    var core;
    (function (core) {
        "use strict";
        var mv360Controller = (function () {
            function mv360Controller($state, salesPersonService, mv360api, $modal, $http, $location, loginService, rootScope, apiversionService) {
                this.$state = $state;
                this.salesPersonService = salesPersonService;
                this.mv360api = mv360api;
                this.$modal = $modal;
                this.$http = $http;
                this.$location = $location;
                this.loginService = loginService;
                this.rootScope = rootScope;
                this.apiversionService = apiversionService;
                var vm = this;
                vm.portalversion = mv360api.appVersion;
                apiversionService.getVersion().then(function (result) { vm.apiversion = result; });
                vm.releaseName = mv360api.releaseName;
            }
            mv360Controller.prototype.logout = function () {
                this.loginService.Logout(false);
            };
            mv360Controller.prototype.isLoggedIn = function () {
                var vm = this;
                return this.loginService.IsLoggedIn();
            };
            mv360Controller.prototype.isVendorLogin = function () {
                var vm = this;
                return vm.loginService.IsVendorLogin();
            };
            mv360Controller.prototype.loginName = function () {
                if (this.loginService.UserInfo) {
                    if (this.loginService.UserInfo.LastName) {
                        return (this.loginService.UserInfo.FirstName + " " + this.loginService.UserInfo.LastName);
                    }
                    else {
                        return (this.loginService.UserInfo.FirstName);
                    }
                }
                return "";
            };
            mv360Controller.prototype.dealerName = function () {
                if (this.loginService.UserInfo && !this.loginService.UserInfo.IsVendorAccount) {
                    return this.loginService.selectedDealer.DealerName;
                }
                else if (this.loginService.UserInfo && this.loginService.UserInfo.IsVendorAccount) {
                    return this.loginService.UserInfo.VendorNumber;
                }
                return "";
            };
            mv360Controller.prototype.claims = function () {
                if (this.rootScope.Claims) {
                    this.rootScope.Claims = null;
                }
                if (this.$state.current.name == "claims") {
                    this.$state.go("reload", { "statename": "claims" });
                }
                else {
                    this.$state.go('claims');
                }
            };
            mv360Controller.prototype.partorder = function () {
                if (this.rootScope.PartOrder) {
                    this.rootScope.PartOrder = null;
                }
                if (this.$state.current.name == "partorder") {
                    this.$state.go("reload", { "statename": "partorder" });
                }
                else {
                    this.$state.go('partorder');
                }
            };
            mv360Controller.prototype.unit = function () {
                if (this.rootScope.VIN) {
                    this.rootScope.VIN = null;
                }
                if (this.$state.current.name == "unit") {
                    this.$state.go("reload", { "statename": "unit" });
                }
                else {
                    this.$state.go('unit');
                }
            };
            mv360Controller.prototype.partcatalog = function () {
                if (this.rootScope.PartsCatalog) {
                    this.rootScope.PartsCatalog = null;
                }
                if (this.$state.current.name == "partcatalog") {
                    this.$state.go("reload", { "statename": "partcatalog" });
                }
                else {
                    this.$state.go('partcatalog');
                }
            };
            mv360Controller.prototype.spiff = function () {
                if (this.rootScope.SPIFF) {
                    this.rootScope.SPIFF = null;
                }
                if (this.$state.current.name == "spiff") {
                    this.$state.go("reload", { "statename": "spiff" });
                }
                else {
                    this.$state.go('spiff');
                }
            };
            mv360Controller.prototype.flatratemanual = function () {
                this.$state.go('flatratemanual');
            };
            mv360Controller.prototype.vendorhome = function () {
                if (this.$state.current.name == "vendorhome") {
                    this.$state.go("reload", { "statename": "vendorhome" });
                }
                else {
                    this.$state.go('vendorhome');
                }
            };
            mv360Controller.prototype.vendorcheckremit = function () {
                if (this.$state.current.name == "vendorcheckremit") {
                    this.$state.go("reload", { "statename": "vendorcheckremit " });
                }
                else {
                    this.$state.go('vendorcheckremit');
                }
            };
            mv360Controller.prototype.vendorcheckinq = function () {
                if (this.$state.current.name == "vendorcheckinq") {
                    this.$state.go("reload", { "statename": "vendorcheckinq" });
                }
                else {
                    this.$state.go('vendorcheckinq');
                }
            };
            mv360Controller.prototype.vendorinvoice = function () {
                if (this.$state.current.name == "vendorinvoice") {
                    this.$state.go("reload", { "statename": "vendorinvoice" });
                }
                else {
                    this.$state.go('vendorinvoice');
                }
            };
            mv360Controller.prototype.reset = function () {
                this.rootScope.Claims = null;
                this.rootScope.PartOrder = null;
                this.rootScope.PartsCatalog = null;
                this.rootScope.VIN = null;
            };
            mv360Controller.prototype.goToContactUs = function () {
                this.$state.go('contact');
            };
            mv360Controller.$inject = ["$state", "app.services.SalesPersonService", "mv360api", "$uibModal", "$http", "$location", "app.services.LoginService", "$rootScope", "app.services.APIVersionService"];
            return mv360Controller;
        }());
        angular.module("app.core")
            .controller("app.core.mv360Controller", mv360Controller);
    })(core = app.core || (app.core = {}));
})(app || (app = {}));
//# sourceMappingURL=mv360.controller.js.map
var app;
(function (app) {
    var core;
    (function (core) {
        var PageData = (function () {
            function PageData(searchService, search) {
                this.SearchField = {};
                this.PageSizes = [5, 10, 15, 25, 50, 100];
                this.PageSize = 50;
                this.CurrentPage = 1;
                this.Years = [{ Label: '1 year', Value: 1 }, { Label: '2 years', Value: 2 }, { Label: '3 years', Value: 3 }, { Label: 'All', Value: 0 }];
                this.ClaimAge = [{ Label: '170 Days', Value: 170 }, { Label: '150 Days', Value: 150 }, { Label: '120 Days', Value: 120 }, { Label: '90 Days', Value: 90 }, { Label: '60 Days', Value: 60 }, { Label: 'All', Value: 0 }];
                this.searchService = searchService;
                this.searchfunc = search;
                this.CacheTimeoutMinutes = 3;
            }
            PageData.prototype.searchfunc = function (searchService, page) { };
            PageData.prototype.Update = function (result) {
                this.TotalResults = result.TotalResultCount;
                this.Results = result.Results;
                this.ResultTime = moment();
                this.Ready = true;
            };
            PageData.prototype.Search = function (resetPageNumber) {
                if (resetPageNumber === void 0) { resetPageNumber = true; }
                if (resetPageNumber) {
                    this.CurrentPage = 1;
                }
                this.Results = null;
                this.Ready = false;
                this.ErrorMessage = "";
                this.searchfunc(this.searchService, this);
            };
            PageData.prototype.ForceExpire = function () {
                this.Results = null;
                this.ResultTime = null;
            };
            PageData.prototype.SearchIfExpired = function () {
                if (this.ResultTime) {
                    var cachetime = moment().diff(this.ResultTime, "m");
                    if (cachetime >= this.CacheTimeoutMinutes) {
                        this.Search();
                    }
                    else {
                        this.Ready = true;
                    }
                }
                else {
                    this.Search();
                }
            };
            PageData.prototype.ClearIfExpired = function () {
                if (this.ResultTime) {
                    var cachetime = moment().diff(this.ResultTime, "m");
                    if (cachetime >= this.CacheTimeoutMinutes) {
                        this.Results = null;
                        this.TotalResults = 0;
                        this.ResultTime = null;
                    }
                }
                this.Ready = true;
            };
            PageData.prototype.PageChanged = function () {
                this.Ready = false;
                this.Search(false);
                document.body.scrollTop = 0;
                document.documentElement.scrollTop = 0;
            };
            PageData.prototype.ChangeSearchMode = function () {
                if (!this.AdvancedSearchMode) {
                    this.AdvancedSearchMode = true;
                }
                else {
                    this.AdvancedSearchMode = false;
                    this.Search();
                }
            };
            PageData.prototype.Sort = function (sortField) {
                if (sortField == this.SortField) {
                    this.SortDesc = !this.SortDesc;
                }
                else {
                    this.SortDesc = false;
                }
                this.SortField = sortField;
                this.Search();
            };
            return PageData;
        }());
        core.PageData = PageData;
    })(core = app.core || (app.core = {}));
})(app || (app = {}));
//# sourceMappingURL=PageData.js.map
var app;
(function (app) {
    var core;
    (function (core) {
        "use strict";
        var ReloadController = (function () {
            function ReloadController($state, rootScope) {
                this.$state = $state;
                this.rootScope = rootScope;
                var vm = this;
                var nextstate = $state.params["statename"];
                $state.go(nextstate);
            }
            ReloadController.$inject = ["$state", "$rootScope"];
            return ReloadController;
        }());
        angular.module("app.core")
            .controller("app.core.ReloadController", ReloadController);
    })(core = app.core || (app.core = {}));
})(app || (app = {}));
//# sourceMappingURL=reload.controller.js.map
var app;
(function (app) {
    var core;
    (function (core) {
        var mv360rootscope = (function () {
            function mv360rootscope() {
            }
            return mv360rootscope;
        }());
        core.mv360rootscope = mv360rootscope;
    })(core = app.core || (app.core = {}));
})(app || (app = {}));
//# sourceMappingURL=RootScope.js.map
var app;
(function (app) {
    var core;
    (function (core) {
        var SearchFilters = (function () {
            function SearchFilters(filters, searchfunc) {
                this.filters = filters;
                this.searchfunc = searchfunc;
                this.readOnlyFilters = [];
            }
            SearchFilters.prototype.AllowSearch = function () {
                var allowSearch = true;
                var vm = this;
                this.filters.forEach(function (f) {
                    if (vm.ShowFilter(f) && f.Required() && !f.Value) {
                        allowSearch = false;
                    }
                });
                return allowSearch;
            };
            SearchFilters.prototype.ShowFilter = function (filter) {
                var _this = this;
                var me = this;
                if (filter.Options.length == 0)
                    return false;
                if (!filter.Value && this.FilterIsReadOnly(filter))
                    return false;
                if (filter.ShowWhenPopulate.length == 0)
                    return true;
                if (filter.Value)
                    return true;
                var showFilter = true;
                filter.ShowWhenPopulate.forEach(function (f) {
                    var otherFilter = me.filters.filter(function (x) { return x.SearchField == f; })[0];
                    if (otherFilter != undefined && _this.ShowFilter(otherFilter) && otherFilter.Options.length > 0 && !otherFilter.Value)
                        showFilter = false;
                });
                return showFilter;
            };
            SearchFilters.prototype.FilterIsReadOnly = function (filter) {
                return this.readOnlyFilters.filter(function (x) { return x == filter.SearchField; }).length > 0;
            };
            SearchFilters.prototype.ClearFilter = function (filter) {
                filter.Value = null;
                this.ClearRestOfFilters(filter);
                this.UpdateCategories(filter, false);
            };
            SearchFilters.prototype.ClearRestOfFilters = function (filter) {
                var _this = this;
                var filterIndex = this.filters.indexOf(filter) + 1;
                if (filter.ClearAllFieldsAfter) {
                    for (var i = filterIndex; i < this.filters.length; i++) {
                        var otherFilter = this.filters[i];
                        otherFilter.Value = null;
                        otherFilter.TempValue = null;
                    }
                }
                else if (filter.ClearOtherFields) {
                    filter.ClearOtherFields.forEach(function (filterfield) {
                        var otherFilter = _this.filters.filter(function (x) { return x.SearchField == filterfield; })[0];
                        if (otherFilter)
                            _this.ClearFilter(otherFilter);
                    });
                }
            };
            SearchFilters.prototype.UpdateCategories = function (filter, clearOtherFilters) {
                if (clearOtherFilters)
                    this.ClearRestOfFilters(filter);
                this.UpdateFilter(this.filters[0], false);
            };
            SearchFilters.prototype.UpdateFilter = function (filter, clearOtherFilters) {
                var _this = this;
                var filterIndex = this.filters.indexOf(filter);
                if (filter.LockOptions) {
                    if (filter.TempValue) {
                        filter.Value = filter.TempValue;
                        filter.TempValue = null;
                    }
                    if (filterIndex + 1 < this.filters.length)
                        this.UpdateFilter(this.filters[filterIndex + 1], clearOtherFilters);
                    return;
                }
                var queryFilter = this.GetFilter(null);
                this.searchfunc(filter.SearchField, queryFilter).then(function (result) {
                    for (var i in result) {
                        var f = _this.filters.filter(function (x) { return x.SearchField == i; });
                        if (f && f.length) {
                            var currentFilter = f[0];
                            var re = result[i];
                            if (re) {
                                currentFilter.Options = re.map(function (x) {
                                    var r = new app.services.ILookup();
                                    r.Name = x;
                                    r.Value = x;
                                    return r;
                                });
                            }
                            else
                                currentFilter.Options = [];
                            if (currentFilter.Options.length == 1) {
                                if (currentFilter.DefaultOnSingleValue != false)
                                    currentFilter.Value = currentFilter.Options[0].Name;
                            }
                            if (currentFilter.TempValue) {
                                var foundOptions = currentFilter.Options.filter(function (x) { return x.Value == currentFilter.TempValue; });
                                if (currentFilter.AddIfNotInResults && foundOptions.length == 0) {
                                    currentFilter.Options.push({ Name: currentFilter.TempValue, Value: currentFilter.TempValue, Description: currentFilter.TempValue });
                                    currentFilter.Value = currentFilter.TempValue;
                                    currentFilter.LockOptions = true;
                                }
                                else if (currentFilter.OnlyShowValueIfValid) {
                                    currentFilter.LockOptions = true;
                                    var findValue = currentFilter.Options.filter(function (x) { return x.Value == currentFilter.TempValue; });
                                    if (findValue.length > 0) {
                                        currentFilter.Options = [findValue[0]];
                                    }
                                    else {
                                        currentFilter.Options = [];
                                    }
                                }
                                else if (foundOptions.length > 0) {
                                    currentFilter.Value = foundOptions[0].Value;
                                }
                                currentFilter.TempValue = null;
                            }
                        }
                    }
                });
            };
            SearchFilters.prototype.GetFilter = function (filter) {
                var queryFilter = {};
                for (var i = 0; i < this.filters.length; i++) {
                    var otherFilter = this.filters[i];
                    if (this.ShowFilter(otherFilter) && otherFilter != filter)
                        queryFilter[otherFilter.SearchField] = otherFilter.Value;
                }
                return queryFilter;
            };
            SearchFilters.prototype.GetAllFilters = function () {
                return this.GetFilter(null);
            };
            SearchFilters.prototype.SetFilter = function (filterField, value, updateCategories, lock, tempValue) {
                var filter = this.filters.filter(function (x) { return x.SearchField == filterField; })[0];
                if (value)
                    filter.Options.push({ Name: value, Value: value, Description: value });
                if (tempValue)
                    filter.TempValue = value;
                else
                    filter.Value = value;
                if (lock)
                    this.readOnlyFilters.push(filterField);
                if (updateCategories)
                    this.UpdateFilter(filter, false);
            };
            SearchFilters.prototype.SetOptions = function (filterField, value) {
                var filter = this.filters.filter(function (x) { return x.SearchField == filterField; })[0];
                if (value)
                    filter.Options = [{ Name: value, Value: value, Description: value }];
                filter.LockOptions = true;
            };
            SearchFilters.prototype.Merge = function (otherFilter, lockFields, dontLock, dontDefaultButOnlySelectable) {
                var _this = this;
                otherFilter.forEach(function (x) {
                    var filter = _this.filters.filter(function (z) { return z.SearchField == x.SearchField; })[0];
                    if (dontDefaultButOnlySelectable.filter(function (y) { return y == x.SearchField; }).length == 0) {
                        filter.TempValue = x.Value;
                    }
                    else {
                        _this.SetOptions(x.SearchField, x.Value);
                    }
                    if (lockFields && dontLock.filter(function (dl) { return dl == x.SearchField; }).length == 0)
                        _this.readOnlyFilters.push(x.SearchField);
                });
                this.UpdateCategories(this.filters[3], false);
            };
            SearchFilters.prototype.GetFilterValue = function (filterField) {
                return this.filters.filter(function (x) { return x.SearchField == filterField; })[0].Value;
            };
            return SearchFilters;
        }());
        core.SearchFilters = SearchFilters;
    })(core = app.core || (app.core = {}));
})(app || (app = {}));
//# sourceMappingURL=SearchFilters.js.map
(function () {
    "use strict";
    angular.module('app').filter('unique', function () {
        return function (arr, targetField) {
            var values = [], i, unique, l = arr.length, results = [], obj;
            for (i = 0; i < arr.length; i++) {
                obj = arr[i];
                unique = true;
                for (i = 0; i < values.length; i++) {
                    if (obj[targetField] == values[i]) {
                        unique = false;
                    }
                }
                if (unique) {
                    values.push(obj[targetField]);
                    results.push(obj);
                }
            }
            return results;
        };
    });
})();
//# sourceMappingURL=uniquefilter.js.map
var app;
(function (app) {
    var core;
    (function (core) {
        "use strict";
        var VendorLoginController = (function () {
            function VendorLoginController($state, LoginService, $modal, AOSStatusService, userService, $localStorage) {
                this.$state = $state;
                this.LoginService = LoginService;
                this.$modal = $modal;
                this.AOSStatusService = AOSStatusService;
                this.userService = userService;
                this.$localStorage = $localStorage;
                var vm = this;
                vm.username = "";
                vm.password = "";
                vm.invalidCredentials = false;
            }
            VendorLoginController.prototype.login = function () {
                var _this = this;
                var vm = this;
                vm.AOSStatusService.getStatus().then(function () {
                    vm.invalidCredentials = false;
                    vm.userService.ValidateVendorLoginAttempt(_this.username).then(function (result) {
                        if (result) {
                            vm.LoginService.VendorLoginBasic(_this.username, _this.password).then(function (resp) {
                                if (resp.data.access_token) {
                                    vm.LoginService.ValidateVendor(resp.data.access_token, resp.data.refresh_token).then(function (result) {
                                        if (result) {
                                            vm.$state.go('vendorhome');
                                            vm.LoginService.ResetTimer();
                                        }
                                        else {
                                            console.log("login error");
                                        }
                                    });
                                }
                                else {
                                    vm.showError = true;
                                    vex.dialog.alert("Username or Password was incorrect. If you"
                                        + " cannot remember your password or would like to reset it, please click on the Reset Password button below.");
                                }
                            })["catch"](function (ex) {
                                console.log(ex);
                                vm.errorMessage = ex.data.error;
                                vm.showError = true;
                                vex.dialog.alert("Username or Password was incorrect. If you"
                                    + " cannot remember your password or would like to reset it, please click on the Reset Password button below.");
                            });
                        }
                        else {
                            vex.dialog.alert("Too many failed attempts for the username. Please wait 15 minutes before attempting again. If you"
                                + " cannot remember your password or would like to reset it, please click on the Reset Password button below.");
                        }
                    });
                });
            };
            ;
            VendorLoginController.prototype.forgotPassword = function () {
                var vm = this;
                var settings = {
                    controller: "app.core.VendorLoginModalController as vm",
                    templateUrl: "app/vendorlogin.modal.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'lg',
                    resolve: {
                        IsPasswordReset: function () { return true; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
                modalInstance.result.then(function (resultdata) {
                    vm.addAlert("success", "An email has been sent to you containing a new password. Please check your email and try to log in again.");
                });
            };
            VendorLoginController.prototype.addAlert = function (type, message) {
                this.alerts.push({ type: type, msg: message });
            };
            VendorLoginController.$inject = ["$state", "app.services.LoginService", "$uibModal", "app.services.AOSStatusService", "app.services.UserService", "$localStorage"];
            return VendorLoginController;
        }());
        angular.module("app.core")
            .controller("app.core.VendorLoginController", VendorLoginController);
    })(core = app.core || (app.core = {}));
})(app || (app = {}));
//# sourceMappingURL=vendorlogin.controller.js.map
var app;
(function (app) {
    var core;
    (function (core) {
        "use strict";
        var VendorLoginModalController = (function () {
            function VendorLoginModalController($state, userService, $modalInstance, IsPasswordReset) {
                this.$state = $state;
                this.userService = userService;
                this.$modalInstance = $modalInstance;
                var vm = this;
                console.log(IsPasswordReset);
                vm.hasPasswordBeenReset = false;
                if (IsPasswordReset) {
                    vm.showPasswordReset = true;
                }
                else {
                    vm.showPasswordReset = false;
                }
            }
            VendorLoginModalController.prototype.save = function () {
                this.userService.ResetVendorPassword(this.data.Email);
                this.hasPasswordBeenReset = true;
            };
            VendorLoginModalController.prototype.close = function () {
                this.$modalInstance.dismiss();
            };
            VendorLoginModalController.$inject = ["$state", "app.services.UserService", "$uibModalInstance", "IsPasswordReset"];
            return VendorLoginModalController;
        }());
        angular.module("app.core")
            .controller("app.core.VendorLoginModalController", VendorLoginModalController);
    })(core = app.core || (app.core = {}));
})(app || (app = {}));
//# sourceMappingURL=vendorlogin.modal.controller.js.map
var admin;
(function (admin) {
    var home;
    (function (home) {
        "use strict";
        var AdminController = (function () {
            function AdminController($state, loginService) {
                this.$state = $state;
                this.loginService = loginService;
                var vm = this;
            }
            AdminController.$inject = ["$state", "app.services.LoginService"];
            return AdminController;
        }());
        angular.module("app.admin")
            .controller("app.admin.AdminController", AdminController);
    })(home = admin.home || (admin.home = {}));
})(admin || (admin = {}));
//# sourceMappingURL=admin.controller.js.map
var users;
(function (users) {
    var home;
    (function (home) {
        "use strict";
        var AccountController = (function () {
            function AccountController($state, $modal, mv360api, dealerService, loginService) {
                this.$state = $state;
                this.$modal = $modal;
                this.mv360api = mv360api;
                this.dealerService = dealerService;
                this.loginService = loginService;
                var vm = this;
                this.getDealerAccountInfo();
            }
            AccountController.prototype.getDealerAccountInfo = function () {
                var _this = this;
                var vm = this;
                var currentDealer = vm.loginService.selectedDealer;
                this.controllerReady = false;
                vm.dealerService.getDealerAccountInformationByNumber(currentDealer.DealerNumber, "USERS_GRID").then(function (result) {
                    vm.userContacts = result;
                    if (vm.userContacts[0]) {
                        vm.dealer = vm.userContacts[0].DealerNumber;
                        vm.dealerName = vm.userContacts[0].DealerName;
                        vm.blocked = vm.userContacts[0].Blocked;
                        vm.accountTerms = vm.userContacts[0].DealerAccountTerms;
                        vm.partsEmail = vm.userContacts[0].PartsEmail;
                        if (vm.blocked == 0) {
                            vm.blockedString = "No";
                        }
                        else if (vm.blocked == 1) {
                            vm.blockedString = "Invoice";
                        }
                        else if (vm.blocked == 2) {
                            vm.blockedString = "All";
                        }
                        else if (vm.blocked == 3) {
                            vm.blockedString = "Payment";
                        }
                        else if (vm.blocked == 4) {
                            vm.blockedString = "Requisition";
                        }
                        else if (vm.blocked == 5) {
                            vm.blockedString = "Never";
                        }
                        else if (vm.blocked == 10) {
                            vm.blockedString = "Permanent Invoice";
                        }
                    }
                    _this.controllerReady = true;
                });
            };
            AccountController.$inject = ["$state", "$uibModal", "mv360api", "app.services.DealerService", "app.services.LoginService"];
            return AccountController;
        }());
        angular.module("app.admin")
            .controller("app.admin.AccountInfoController", AccountController);
    })(home = users.home || (users.home = {}));
})(users || (users = {}));
//# sourceMappingURL=accountinfo.controller.js.map
var users;
(function (users) {
    var home;
    (function (home) {
        "use strict";
        var AddressController = (function () {
            function AddressController($state, dealerService, $modal) {
                this.$state = $state;
                this.dealerService = dealerService;
                this.$modal = $modal;
                var vm = this;
                vm.searchText = "";
                vm.alerts = new Array();
                this.search("");
            }
            AddressController.prototype.search = function (searchText) {
                var _this = this;
                var vm = this;
                this.data = null;
                this.controllerReady = false;
                this.dealerService.getAddresses().then(function (data) {
                    vm.data = data;
                    _this.controllerReady = true;
                    for (var i = 0; i < vm.data.length; i++) {
                        if (vm.data[i].IsPrimary) {
                            vm.primaryAddress = vm.data[i];
                            break;
                        }
                    }
                });
            };
            AddressController.prototype.addAlert = function (type, message) {
                this.alerts.push({ type: type, msg: message });
            };
            AddressController.prototype.closeAlert = function (index) {
                this.alerts.splice(index, 1);
            };
            AddressController.$inject = ["$state", "app.services.DealerService", "$uibModal"];
            return AddressController;
        }());
        angular.module("app.admin")
            .controller("app.admin.AddressController", AddressController);
    })(home = users.home || (users.home = {}));
})(users || (users = {}));
//# sourceMappingURL=address.controller.js.map
var users;
(function (users) {
    var home;
    (function (home) {
        "use strict";
        var AddressModalController = (function () {
            function AddressModalController($state, userService, $modalInstance, ziplookupService, address, otherPrimaryExists) {
                this.$state = $state;
                this.userService = userService;
                this.$modalInstance = $modalInstance;
                this.ziplookupService = ziplookupService;
                var vm = this;
                vm.data = address;
                vm.otherPrimaryExists = otherPrimaryExists;
                if (!vm.data) {
                    vm.data = new app.services.IDealerAddress();
                    vm.isNewRecord = true;
                }
                vm.controllerReady = true;
            }
            AddressModalController.prototype.save = function () {
                if (this.data.IsPrimary && this.otherPrimaryExists) {
                    var confirmed = confirm("This address will be set as the only primary delivery address. Do you wish to continue?");
                    if (!confirmed) {
                        return;
                    }
                }
                this.$modalInstance.close(this.data);
            };
            AddressModalController.prototype.close = function () {
                this.$modalInstance.dismiss();
            };
            AddressModalController.prototype.postalCodeChanged = function () {
                var _this = this;
                if (this.data.PostalCode.length >= 5) {
                    this.ziplookupService.getZip(this.data.PostalCode).then(function (results) {
                        if (results) {
                            _this.data.City = results[0].City;
                            _this.data.StateOrProvince = results[0].State;
                            _this.data.Country = results[0].Country;
                        }
                    });
                }
            };
            AddressModalController.$inject = ["$state", "app.services.UserService", "$uibModalInstance", "app.services.ZipLookupService", "address", "otherPrimaryExists"];
            return AddressModalController;
        }());
        angular.module("app.admin")
            .controller("app.admin.AddressModalController", AddressModalController);
    })(home = users.home || (users.home = {}));
})(users || (users = {}));
//# sourceMappingURL=address.modal.controller.js.map
var users;
(function (users) {
    var home;
    (function (home) {
        "use strict";
        var HelpController = (function () {
            function HelpController($state, $modal, mv360api, dealerConnectContactService) {
                this.$state = $state;
                this.$modal = $modal;
                this.mv360api = mv360api;
                this.dealerConnectContactService = dealerConnectContactService;
                var vm = this;
                vm.getDealerConnectContactList();
            }
            HelpController.prototype.getDealerConnectContactList = function () {
                var vm = this;
                vm.dealerConnectContactService.getDealerConnectContacts().then(function (result) {
                    vm.dealerBrands = result;
                });
            };
            HelpController.$inject = ["$state", "$uibModal", "mv360api", "app.services.DealerConnectContactService"];
            return HelpController;
        }());
        angular.module("app.admin")
            .controller("app.admin.HelpController", HelpController);
    })(home = users.home || (users.home = {}));
})(users || (users = {}));
//# sourceMappingURL=help.controller.js.map
var users;
(function (users) {
    var home;
    (function (home) {
        "use strict";
        var PermissionsController = (function () {
            function PermissionsController($state, $modal, mv360api, loginService) {
                this.$state = $state;
                this.$modal = $modal;
                this.mv360api = mv360api;
                this.loginService = loginService;
                var vm = this;
                vm.controllerReady = true;
                vm.permissions = vm.mv360api.currentPrivileges;
            }
            PermissionsController.$inject = ["$state", "$uibModal", "mv360api", "app.services.LoginService"];
            return PermissionsController;
        }());
        angular.module("app.admin")
            .controller("app.admin.PermissionsController", PermissionsController);
    })(home = users.home || (users.home = {}));
})(users || (users = {}));
//# sourceMappingURL=permissions.controller.js.map
var users;
(function (users) {
    var home;
    (function (home) {
        "use strict";
        var PreferencesController = (function () {
            function PreferencesController($state, userService, $modal) {
                this.$state = $state;
                this.userService = userService;
                this.$modal = $modal;
                this.showSaved = false;
                this.yesNoOptions = [{
                        id: true,
                        label: 'Yes'
                    }, {
                        id: false,
                        label: 'No'
                    }];
                this.getPreferences();
            }
            PreferencesController.prototype.getPreferences = function () {
                var vm = this;
                this.userService.GetPreferences()
                    .then(function (data) {
                    vm.data = data;
                });
            };
            PreferencesController.prototype.updatePreferences = function () {
                var me = this;
                me.showSaved = false;
                this.userService
                    .UpdatePreferences(this.data)
                    .then(function () {
                    me.EmailPreferencesForm.$setPristine();
                    me.showSaved = true;
                });
            };
            PreferencesController.$inject = ["$state", "app.services.UserService"];
            return PreferencesController;
        }());
        angular.module("app.admin")
            .controller("app.admin.PreferencesController", PreferencesController);
    })(home = users.home || (users.home = {}));
})(users || (users = {}));
//# sourceMappingURL=preferences.controller.js.map
var users;
(function (users) {
    var home;
    (function (home) {
        "use strict";
        var ProfileController = (function () {
            function ProfileController($state, userService, $modal, mv360api, loginService, $scope, $timeout) {
                this.$state = $state;
                this.userService = userService;
                this.$modal = $modal;
                this.mv360api = mv360api;
                this.loginService = loginService;
                this.$scope = $scope;
                this.$timeout = $timeout;
                var vm = this;
                vm.searchText = "";
                vm.alerts = new Array();
                vm.MINIMUM_PASSWORD_LENGTH = 10;
                vm.MINIMUM_PASSWORD_UPPPERCASE = 1;
                vm.MINIMUM_PASSWORD_LOWERCASE = 1;
                vm.MINIMUM_PASSWORD_NUMBER_OR_SPECIAL_CHAR = 1;
                vm.MINIMUM_PASSWORD_NUMBER = 1;
                this.load();
            }
            ProfileController.prototype.load = function () {
                var _this = this;
                var vm = this;
                this.data = null;
                this.controllerReady = false;
                this.userService.GetProfile().then(function (data) {
                    vm.data = data;
                    setTimeout(function () {
                        vm.profileform.$setPristine();
                    }, 500);
                    _this.controllerReady = true;
                });
            };
            ProfileController.prototype.save = function () {
                var vm = this;
                var passwordChange = (vm.data.ConfirmPassword);
                vm.controllerReady = false;
                this.data.LastUpdatedByConnector = false;
                if (passwordChange) {
                    if (vm.validateNewPassword()) {
                        vm.validateCurrentPassword();
                    }
                }
                else {
                    this.userService.UpdateProfile(this.data).then(function (result) {
                        vm.controllerReady = true;
                        vm.profileform.$setPristine();
                    })["catch"](function (error) {
                        console.log(error);
                        vm.addAlert("danger", "Error saving profile changes.");
                        vm.controllerReady = true;
                    });
                }
            };
            ProfileController.prototype.addAlert = function (type, message) {
                this.alerts.push({ type: type, msg: message });
            };
            ProfileController.prototype.closeAlert = function (index) {
                this.alerts.splice(index, 1);
            };
            ProfileController.prototype.newPasswordIsValid = function () {
                var vm = this;
                var newpass = angular.element(document.getElementById("newpassword")).val();
                var confirmpass = angular.element(document.getElementById("confirmpassword")).val();
                vm.invalidpassword = false;
                vm.newpasswordoesntmatch = false;
                vm.newpasswordlength = false;
                vm.newpassworduppercount = false;
                vm.newpasswordlowercount = false;
                vm.newpasswordnumericspecial = false;
                vm.newpasswordnumeric = false;
                var meetsComplexityRequirements;
                meetsComplexityRequirements = true;
                if (newpass.length < vm.MINIMUM_PASSWORD_LENGTH) {
                    meetsComplexityRequirements = false;
                    vm.newpasswordlength = true;
                }
                var numberOfUppercase = newpass.replace(/[^A-Z]/g, "").length;
                if (numberOfUppercase < vm.MINIMUM_PASSWORD_UPPPERCASE) {
                    meetsComplexityRequirements = false;
                    vm.newpassworduppercount = true;
                }
                var numberOfLowercase = newpass.replace(/[^a-z]/g, "").length;
                if (numberOfLowercase < vm.MINIMUM_PASSWORD_LOWERCASE) {
                    meetsComplexityRequirements = false;
                    vm.newpasswordlowercount = true;
                }
                var numberOfNumeric = newpass.replace(/[^0-9]/g, "").length;
                var numberOfSpecialCharacters = newpass.replace(/[^\s\!\@\#\$\%\^\&\*\(\)\-\_\+\=\|\.\,\?]/g, "").length;
                if (numberOfSpecialCharacters < vm.MINIMUM_PASSWORD_NUMBER_OR_SPECIAL_CHAR) {
                    meetsComplexityRequirements = false;
                    vm.newpasswordnumericspecial = true;
                }
                if (numberOfNumeric < vm.MINIMUM_PASSWORD_NUMBER) {
                    meetsComplexityRequirements = false;
                    vm.newpasswordnumeric = true;
                }
                if (numberOfNumeric < vm.MINIMUM_PASSWORD_NUMBER) {
                    meetsComplexityRequirements = false;
                    vm.newpasswordnumeric = true;
                }
                if ((!newpass) && (!confirmpass)) {
                    return;
                }
                if (!meetsComplexityRequirements) {
                    vm.invalidpassword = true;
                }
                else if (newpass != confirmpass) {
                    vm.newpasswordoesntmatch = true;
                    vm.invalidpassword = true;
                }
                else {
                    vm.currentPasswordIsValid();
                }
            };
            ProfileController.prototype.currentPasswordIsValid = function () {
                var vm = this;
                var newpass = angular.element(document.getElementById("newpassword")).val();
                var currentpass = angular.element(document.getElementById("currentpassword")).val();
                vm.currentpasswordrequired = newpass.length > 0 && currentpass.length < 1;
            };
            ProfileController.prototype.validateCurrentPassword = function () {
                var vm = this;
                var newpass = angular.element(document.getElementById("newpassword")).val();
                var currentpass = angular.element(document.getElementById("currentpassword")).val();
                var isValid;
                var UserName = vm.data.Email;
                this.userService.UpdateProfile(this.data).then(function (result) {
                    if (result != null) {
                        vm.addAlert("success", "Password has been changed. You will be logged out in 5 seconds and required to log in with your new password.");
                        vm.controllerReady = true;
                        vm.loginService.Logout(true);
                        vm.$timeout(function () {
                            vm.profileform.$setPristine();
                        }, 500);
                        vm.$timeout(function () {
                            vm.profileform.$setPristine();
                            vm.$state.go('login');
                        }, 5000);
                    }
                    else {
                        vm.addAlert("danger", "An error has occurred.");
                    }
                })["catch"](function (error) {
                    console.log(error);
                    vm.addAlert("danger", "An error has occurred.");
                    vm.controllerReady = true;
                });
                return;
            };
            ProfileController.prototype.validateNewPassword = function () {
                var vm = this;
                var newpass = angular.element(document.getElementById("newpassword")).val();
                var confirmpass = angular.element(document.getElementById("confirmpassword")).val();
                var currentpass = angular.element(document.getElementById("currentpassword")).val();
                var meetsComplexityRequirements;
                if (newpass == currentpass) {
                    vm.addAlert("danger", "New password cannot be the same as the current password.");
                    vm.controllerReady = true;
                    return false;
                }
                if (newpass != confirmpass) {
                    vm.addAlert("danger", "The new password and the confirmation password do not match.");
                    vm.controllerReady = true;
                    return false;
                }
                meetsComplexityRequirements = true;
                if (newpass.length < vm.MINIMUM_PASSWORD_LENGTH) {
                    vm.addAlert("danger", "Password must contain at least " + vm.MINIMUM_PASSWORD_LENGTH.toString() + " characters.");
                    meetsComplexityRequirements = false;
                }
                var numberOfUppercase = newpass.replace(/[^A-Z]/g, "").length;
                if (numberOfUppercase < vm.MINIMUM_PASSWORD_UPPPERCASE) {
                    vm.addAlert("danger", "Password must contain at least " + vm.MINIMUM_PASSWORD_UPPPERCASE.toString() + " upper case character(s).");
                    meetsComplexityRequirements = false;
                }
                var numberOfLowercase = newpass.replace(/[^a-z]/g, "").length;
                if (numberOfLowercase < vm.MINIMUM_PASSWORD_LOWERCASE) {
                    vm.addAlert("danger", "Password must contain at least " + vm.MINIMUM_PASSWORD_LOWERCASE.toString() + " lower case character(s).");
                    meetsComplexityRequirements = false;
                }
                var numberOfNumeric = newpass.replace(/[^0-9]/g, "").length;
                var numberOfSpecialCharacters = newpass.replace(/[^\s\!\@\#\$\%\^\&\*\(\)\-\_\+\=\|\.\,\?]/g, "").length;
                if (numberOfNumeric < vm.MINIMUM_PASSWORD_NUMBER || numberOfSpecialCharacters < vm.MINIMUM_PASSWORD_NUMBER_OR_SPECIAL_CHAR) {
                    vm.addAlert("danger", "Password must contain at least " + vm.MINIMUM_PASSWORD_NUMBER_OR_SPECIAL_CHAR.toString() + "  special character and " + vm.MINIMUM_PASSWORD_NUMBER + " number.");
                    meetsComplexityRequirements = false;
                }
                vm.controllerReady = true;
                return meetsComplexityRequirements;
            };
            ProfileController.prototype.GetFirstProfileTabWithAccess = function () {
                var vm = this;
                if (vm.loginService.GetPrivilegeLevel("SETUP_DEALER_ADDRESS_GRID") != "None") {
                    this.$state.go("admin.address");
                }
                else if (vm.loginService.GetPrivilegeLevel("USERS_GRID") != "None") {
                    this.$state.go("admin.users");
                }
                else {
                    this.$state.go("admin.preferences");
                }
            };
            ProfileController.$inject = ["$state", "app.services.UserService", "$uibModal", "mv360api", "app.services.LoginService", "$scope", "$timeout"];
            return ProfileController;
        }());
        angular.module("app.admin")
            .controller("app.admin.ProfileController", ProfileController);
    })(home = users.home || (users.home = {}));
})(users || (users = {}));
//# sourceMappingURL=profile.controller.js.map
var users;
(function (users) {
    var home;
    (function (home) {
        "use strict";
        var UsersController = (function () {
            function UsersController($state, userService, loginService, $modal) {
                this.$state = $state;
                this.userService = userService;
                this.loginService = loginService;
                this.$modal = $modal;
                var vm = this;
                vm.searchText = "";
                vm.alerts = new Array();
                if (this.loginService.GetPrivilegeLevel('USERS_GRID') != 'None') {
                    this.search("");
                }
            }
            UsersController.prototype.search = function (searchText) {
                var _this = this;
                var vm = this;
                this.data = null;
                this.controllerReady = false;
                this.userService.GetUsers().then(function (data) {
                    vm.data = data;
                    _this.controllerReady = true;
                });
            };
            UsersController.prototype.enableUser = function (user) {
                var _this = this;
                var vm = this;
                this.userService.EnableUser(user.SalesPersonNumber).then(function (result) {
                    _this.search(vm.searchText);
                    vm.addAlert("success", user.FirstName + " " + user.LastName + " successfully enabled");
                });
            };
            UsersController.prototype.disableUser = function (user) {
                var _this = this;
                var vm = this;
                this.userService.DisableUser(user.SalesPersonNumber).then(function (result) {
                    _this.search(vm.searchText);
                    vm.addAlert("success", user.FirstName + " " + user.LastName + " successfully disabled");
                });
            };
            UsersController.prototype.addUser = function () {
                var vm = this;
                var settings = {
                    controller: "app.admin.UserModalController as vm",
                    templateUrl: "app/admin/users/users.modal.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'lg',
                    resolve: {
                        user: function () { return null; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
                modalInstance.result.then(function (resultdata) {
                    vm.search(vm.searchText);
                    vm.addAlert("success", "User successfully invited");
                });
            };
            UsersController.prototype.editUser = function (user) {
                var vm = this;
                var settings = {
                    controller: "app.admin.UserModalController as vm",
                    templateUrl: "app/admin/users/users.modal.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'lg',
                    resolve: {
                        user: function () { return user.Email; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
                modalInstance.result.then(function (resultdata) {
                    vm.search(vm.searchText);
                });
            };
            UsersController.prototype.deleteUser = function (user) {
                var vm = this;
                vex.dialog.confirm({
                    message: "Are you sure you want to delete user " + user.FirstName + " " + user.LastName + "?",
                    callback: function (value) {
                        if (value) {
                            vm.userService.DeleteUser(user).then(function (result) {
                                vm.search(vm.searchText);
                                vm.addAlert("success", user.FirstName + " " + user.LastName + " successfully deleted");
                            });
                        }
                    }
                });
            };
            UsersController.prototype.resendEmail = function (user) {
                var vm = this;
                vm.userService.InviteUser(user.FirstName, user.LastName, user.Email, user.Phone, user.Role, null).then(function (result) {
                    vm.search(vm.searchText);
                    vm.addAlert("success", "Invitation email resent to " + user.Email);
                });
            };
            UsersController.prototype.addAlert = function (type, message) {
                this.alerts.push({ type: type, msg: message });
            };
            UsersController.prototype.closeAlert = function (index) {
                this.alerts.splice(index, 1);
            };
            UsersController.$inject = ["$state", "app.services.UserService", "app.services.LoginService", "$uibModal"];
            return UsersController;
        }());
        angular.module("app.admin")
            .controller("app.admin.UsersController", UsersController);
    })(home = users.home || (users.home = {}));
})(users || (users = {}));
//# sourceMappingURL=users.controller.js.map
var users;
(function (users) {
    var home;
    (function (home) {
        "use strict";
        var UserModalController = (function () {
            function UserModalController($state, userService, $modalInstance, user) {
                this.$state = $state;
                this.userService = userService;
                this.$modalInstance = $modalInstance;
                var vm = this;
                vm.isEmailDisable = true;
                vm.roles = ["Parts", "Warranty", "Dealer User", "Dealer Admin", "Manufacturer Admin"];
                userService.GetTemplates().then(function (response) {
                    vm.templates = response;
                });
                userService.GetUserDealer(user).then(function (response) {
                    vm.data = response;
                    vm.controllerReady = true;
                    if (!user) {
                        vm.data.IsEnabled = true;
                        vm.isNewRecord = true;
                        vm.isEmailDisable = false;
                        userService.GetEmptyPrivileges().then(function (response) {
                            vm.data.DealerPrivileges = response;
                        });
                    }
                });
            }
            UserModalController.prototype.save = function () {
                var _this = this;
                if (this.isNewRecord) {
                    if (this.validatePhone()) {
                        this.data.Role = "Dealer User";
                        this.userService.InviteUser(this.data.FirstName, this.data.LastName, this.data.Email, this.data.Phone, this.data.Role, this.data.DealerPrivileges).then(function (response) {
                            _this.$modalInstance.close(response);
                        });
                    }
                    else {
                        vex.dialog.alert("Name, email and primary phone number are required to save your profile.  Please fill in any empty fields.");
                    }
                }
                else {
                    this.userService.UpdateUser(this.data).then(function (response) {
                        _this.$modalInstance.close(response);
                    });
                }
            };
            UserModalController.prototype.close = function () {
                this.$modalInstance.dismiss();
            };
            UserModalController.prototype.addTemplate = function () {
                console.log("Add template");
                console.log(this.SelectedTemplate);
                var vm = this;
                vm.userService.GetTemplatePrivileges(vm.SelectedTemplate.TemplateName).then(function (result) {
                    var privs = result;
                    for (var index = 0; index < privs.length; index++) {
                        var priv = privs[index];
                        var userpriv = vm.getUserPriv(priv.PrivilegeName);
                        if (userpriv) {
                            if ((priv.PrivilegeLevel == "Read") && (userpriv.PrivilegeLevel != "Read")) {
                                userpriv.PrivilegeLevel = priv.PrivilegeLevel;
                            }
                            else if ((priv.PrivilegeLevel == "Write") && (userpriv.PrivilegeLevel != "Write")) {
                                userpriv.PrivilegeLevel = priv.PrivilegeLevel;
                            }
                            else if ((priv.PrivilegeLevel == "None") && (userpriv.PrivilegeLevel != "None")) {
                                userpriv.PrivilegeLevel = priv.PrivilegeLevel;
                            }
                        }
                    }
                });
            };
            UserModalController.prototype.getUserPriv = function (privilegeName) {
                var vm = this;
                for (var index = 0; index < vm.data.DealerPrivileges.length; index++) {
                    if (vm.data.DealerPrivileges[index].PrivilegeName == privilegeName) {
                        return vm.data.DealerPrivileges[index];
                    }
                }
                return null;
            };
            UserModalController.prototype.validatePhone = function () {
                if ((this.data.FirstName == null || this.data.FirstName.toString().length < 1) || (this.data.LastName == null || this.data.LastName.toString().length < 1) || (this.data.Email == null || this.data.Email.toString().length < 7) || (this.data.Phone == null || this.data.Phone.toString().length < 10)) {
                    return false;
                }
                else
                    return true;
            };
            UserModalController.$inject = ["$state", "app.services.UserService", "$uibModalInstance", "user"];
            return UserModalController;
        }());
        angular.module("app.admin")
            .controller("app.admin.UserModalController", UserModalController);
    })(home = users.home || (users.home = {}));
})(users || (users = {}));
//# sourceMappingURL=users.modal.controller.js.map
var users;
(function (users) {
    var home;
    (function (home) {
        "use strict";
        var VendorRequestController = (function () {
            function VendorRequestController($state, $modal, vendorRequestService, loginService, countryService, ziplookupService, userService) {
                var _this = this;
                this.$state = $state;
                this.$modal = $modal;
                this.vendorRequestService = vendorRequestService;
                this.loginService = loginService;
                this.countryService = countryService;
                this.ziplookupService = ziplookupService;
                this.userService = userService;
                var vm = this;
                countryService.GetCountries().then(function (response) {
                    vm.countries = response;
                });
                vm.displaySSN = false;
                vm.displaySIN = false;
                vm.displayTaxCode = true;
                vm.alerts = new Array();
                vm.loadHistory();
                vm.SSNHasFailedValidation = false;
                vm.vendorRequestService.getRequest().then(function (data) {
                    if (data)
                        vm.cities = [data.City];
                    vm.data = data;
                    if (!vm.data) {
                        vm.data = new app.services.IVendorRequest();
                        vm.data.Status = 'Draft';
                    }
                    else {
                        vm.data.OriginalDisplaySSN = vm.data.CountryOfCitizenship == "USA" ? "XXX-XX-" + vm.data.SSN.slice(-4) : (vm.data.CountryOfCitizenship == "CAN" ? "XXX-XXX-" + vm.data.SSN.slice(-3) : "XXXXXXX" + vm.data.SSN.slice(-4));
                        vm.data.DisplaySSN = vm.data.CountryOfCitizenship == "USA" ? "XXX-XX-" + vm.data.SSN.slice(-4) : "";
                        vm.data.DisplaySIN = vm.data.CountryOfCitizenship == "CAN" ? "XXX-XXX-" + vm.data.SSN.slice(-3) : "";
                        vm.data.DisplayTaxCode = vm.data.CountryOfCitizenship != "CAN" && vm.data.CountryOfCitizenship != "USA" ? "XXXXXXX" + vm.data.SSN.slice(-4) : "";
                        if (vm.data.CountryOfCitizenship == "USA") {
                            vm.displaySSN = true;
                            vm.displaySIN = false;
                            vm.displayTaxCode = false;
                        }
                        else if (vm.data.CountryOfCitizenship == "CAN") {
                            vm.displaySSN = false;
                            vm.displaySIN = true;
                            vm.displayTaxCode = false;
                        }
                    }
                    vm.data.Signed = false;
                    _this.controllerReady = true;
                });
                vm.userService.GetProfile().then(function (data) {
                    vm.legalName = data.FirstName + " " + data.LastName;
                    _this.controllerReady = true;
                });
            }
            VendorRequestController.prototype.save = function () {
                var vm = this;
                vm.controllerReady = false;
                var validSSN = true;
                var ssnErrorMessage;
                var isTaxCodeChanged = false;
                if ((vm.data.CountryOfCitizenship == "USA" && vm.data.DisplaySSN != vm.data.OriginalDisplaySSN)
                    || (vm.data.CountryOfCitizenship == "CAN" && vm.data.DisplaySIN != vm.data.OriginalDisplaySSN)
                    || (vm.data.CountryOfCitizenship != "USA" && vm.data.CountryOfCitizenship != "CAN" && vm.data.DisplayTaxCode != vm.data.OriginalDisplaySSN)) {
                    isTaxCodeChanged = true;
                }
                if ((vm.data.OriginalDisplaySSN && vm.data.OriginalDisplaySSN.length == 0) || isTaxCodeChanged) {
                    if (vm.data.CountryOfCitizenship == "USA") {
                        var ssnPattern = /^[0-9]{3}\-[0-9]{2}\-[0-9]{4}$/;
                        ssnErrorMessage = "Tax code formatted incorrectly - US SSNs must be in the format of XXX-XX-XXXX";
                        validSSN = ssnPattern.test(vm.data.DisplaySSN);
                    }
                    else if (vm.data.CountryOfCitizenship == "CAN") {
                        var ssnPattern = /^[0-9]{3}\-[0-9]{3}\-[0-9]{3}$/;
                        ssnErrorMessage = "Tax code formatted incorrectly - Canadian Tax IDs must be in the format of XXX-XXX-XXX";
                        validSSN = ssnPattern.test(vm.data.DisplaySIN);
                    }
                }
                if (validSSN) {
                    if (vm.data.CountryOfCitizenship == "USA" && vm.data.OriginalDisplaySSN != vm.data.DisplaySSN) {
                        vm.data.SSN = vm.data.DisplaySSN;
                        vm.data.DisplaySSN = "XXX-XX-" + vm.data.DisplaySSN.slice(-4);
                    }
                    else if (vm.data.CountryOfCitizenship == "CAN" && vm.data.OriginalDisplaySSN != vm.data.DisplaySIN) {
                        vm.data.SSN = vm.data.DisplaySIN;
                        vm.data.DisplaySIN = "XXX-XXX-" + vm.data.DisplaySIN.slice(-3);
                    }
                    else if (vm.data.CountryOfCitizenship != "CAN" && vm.data.CountryOfCitizenship != "USA" && vm.data.OriginalDisplaySSN != vm.data.DisplayTaxCode) {
                        vm.data.SSN = vm.data.DisplayTaxCode;
                        vm.data.DisplayTaxCode = "XXXXXXX" + vm.data.DisplayTaxCode.slice(-4);
                    }
                    vm.vendorRequestService.saveRequest(vm.data).then(function (result) {
                        vm.addAlert("success", "Vendor Request Sent.");
                        vm.loadHistory();
                        vm.SSNHasFailedValidation = false;
                        vm.controllerReady = true;
                    })["catch"](function (error) {
                        console.log(error);
                        vm.addAlert("danger", "Error saving Vendor Request changes.");
                        vm.controllerReady = true;
                    });
                }
                else {
                    vm.addAlert("danger", ssnErrorMessage);
                    vm.controllerReady = true;
                    vm.SSNHasFailedValidation = true;
                }
            };
            VendorRequestController.prototype.loadHistory = function () {
                var vm = this;
                vm.vendorRequestService.getHistory()
                    .then(function (data) {
                    vm.draftRequests = data.filter(function (x) { return x.Status == "Draft"; });
                    vm.draftRequests.forEach(function (x) { return x.CountryOfCitizenship == "USA" ? x.SSN = "XXX-XX-" + x.SSN.slice(-4) : (x.CountryOfCitizenship == "CAN" ? x.SSN = "XXX-XXX-" + x.SSN.slice(-3) : "XXXXXXX" + x.SSN.slice(-4)); });
                    vm.rejectedRequests = data.filter(function (x) { return x.Status == "Rejected"; });
                    vm.rejectedRequests.forEach(function (x) { return x.CountryOfCitizenship == "USA" ? x.SSN = "XXX-XX-" + x.SSN.slice(-4) : (x.CountryOfCitizenship == "CAN" ? x.SSN = "XXX-XXX-" + x.SSN.slice(-3) : "XXXXXXX" + x.SSN.slice(-4)); });
                });
            };
            VendorRequestController.prototype.addAlert = function (type, message) {
                this.alerts.push({ type: type, msg: message });
            };
            VendorRequestController.prototype.closeAlert = function (index) {
                this.alerts.splice(index, 1);
            };
            VendorRequestController.prototype.InstallPostalCodeChanged = function () {
                var _this = this;
                if (this.data.ZipCode && this.data.ZipCode.length >= 5) {
                    this.ziplookupService.getZip(this.data.ZipCode).then(function (results) {
                        if (results && results.length > 0) {
                            _this.data.City = results[0].City;
                            _this.data.State = results[0].State;
                            _this.data.Country = results[0].Country;
                            _this.cities = results.map(function (x) { return x.City; });
                            _this.invalidPostal = false;
                            if (_this.data.Country.toUpperCase() == 'USA' || _this.data.Country.toUpperCase() == 'CAN') {
                                _this.overseePostal = false;
                            }
                            else {
                                _this.overseePostal = true;
                            }
                        }
                        else {
                            _this.cities = null;
                            _this.invalidPostal = true;
                            _this.overseePostal = false;
                        }
                    });
                }
                else {
                    this.cities = null;
                }
            };
            VendorRequestController.prototype.openHistory = function (title, requests) {
                var settings = {
                    controller: "app.admin.VendorRequestHistoryModalController as vm",
                    templateUrl: "app/admin/vendorrequest/vendorrequest.history.modal.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'xl',
                    resolve: {
                        requests: function () { return requests; },
                        title: function () { return title; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
                modalInstance.result.then(function () { });
            };
            VendorRequestController.prototype.updateCountry = function () {
                var vm = this;
                vm.data.DisplaySIN = "";
                vm.data.DisplaySSN = "";
                vm.data.DisplayTaxCode = "";
                if (vm.data.CountryOfCitizenship == "USA") {
                    vm.displaySSN = true;
                    vm.displaySIN = false;
                    vm.displayTaxCode = false;
                }
                else if (vm.data.CountryOfCitizenship == "CAN") {
                    vm.displaySSN = false;
                    vm.displaySIN = true;
                    vm.displayTaxCode = false;
                }
                else {
                    vm.displaySSN = false;
                    vm.displaySIN = false;
                    vm.displayTaxCode = true;
                }
            };
            VendorRequestController.$inject = ["$state", "$uibModal", "app.services.VendorRequestService", "app.services.LoginService", "app.services.CountryService", "app.services.ZipLookupService", "app.services.UserService"];
            return VendorRequestController;
        }());
        angular.module("app.admin")
            .controller("app.admin.VendorRequestController", VendorRequestController);
    })(home = users.home || (users.home = {}));
})(users || (users = {}));
//# sourceMappingURL=vendorrequest.controller.js.map
var admin;
(function (admin) {
    var vendorRequest;
    (function (vendorRequest) {
        "use strict";
        var VendorRequestHistoryModalController = (function () {
            function VendorRequestHistoryModalController($modalInstance, title, requests) {
                this.$modalInstance = $modalInstance;
                var vm = this;
                vm.title = title;
                vm.requests = requests;
            }
            VendorRequestHistoryModalController.prototype.close = function (value) {
                this.$modalInstance.close(value);
            };
            VendorRequestHistoryModalController.$inject = [
                "$uibModalInstance",
                "title",
                "requests"
            ];
            return VendorRequestHistoryModalController;
        }());
        angular.module("app.admin")
            .controller("app.admin.VendorRequestHistoryModalController", VendorRequestHistoryModalController);
    })(vendorRequest = admin.vendorRequest || (admin.vendorRequest = {}));
})(admin || (admin = {}));
//# sourceMappingURL=vendorrequest.history.modal.controller.js.map
var advisory;
(function (advisory) {
    var home;
    (function (home) {
        "use strict";
        var AdvisoryController = (function () {
            function AdvisoryController($state, advisoryService) {
                this.$state = $state;
                this.advisoryService = advisoryService;
                this.sortDesc = false;
                var vm = this;
                vm.searchText = $state.params["search"];
                vm.sortField = 'ValidFrom';
                vm.sortDesc = true;
                vm.search(vm.searchText);
            }
            AdvisoryController.prototype.search = function (searchText) {
                var _this = this;
                this.data = null;
                this.controllerReady = false;
                this.advisoryService.searchAdvisories("", this.sortField, this.sortDesc).then(function (data) {
                    _this.data = data;
                    _this.controllerReady = true;
                });
            };
            AdvisoryController.prototype.sort = function (sortField) {
                if (sortField == this.sortField) {
                    this.sortDesc = !this.sortDesc;
                }
                else {
                    this.sortDesc = false;
                }
                this.sortField = sortField;
                this.search(this.searchText);
            };
            AdvisoryController.$inject = ["$state", "app.services.AdvisoryService"];
            return AdvisoryController;
        }());
        angular.module("app.advisory")
            .controller("app.advisory.AdvisoryController", AdvisoryController);
    })(home = advisory.home || (advisory.home = {}));
})(advisory || (advisory = {}));
//# sourceMappingURL=advisory.controller.js.map
var advisory;
(function (advisory) {
    var home;
    (function (home) {
        "use strict";
        var AdvisoryDetailsController = (function () {
            function AdvisoryDetailsController($state, advisoryService) {
                var _this = this;
                this.$state = $state;
                this.advisoryService = advisoryService;
                var vm = this;
                vm.serviceCampaignNumber = $state.params['serviceCampaignNumber'];
                vm.headerText = vm.serviceCampaignNumber;
                this.controllerReady = false;
                this.advisoryService.getAdvisory(vm.serviceCampaignNumber).then(function (data) {
                    _this.advisory = data;
                    if (vm.advisory.ServiceType == "ServiceAdvisory") {
                        vm.headerText = "Service Advisory - " + vm.advisory.ServiceCampaignNumber;
                    }
                    else {
                        vm.headerText = "Service Campaign - " + vm.advisory.ServiceCampaignNumber;
                    }
                    _this.controllerReady = true;
                });
            }
            AdvisoryDetailsController.$inject = ["$state", "app.services.AdvisoryService"];
            return AdvisoryDetailsController;
        }());
        angular.module("app.advisory")
            .controller("app.advisory.AdvisoryDetailsController", AdvisoryDetailsController);
    })(home = advisory.home || (advisory.home = {}));
})(advisory || (advisory = {}));
//# sourceMappingURL=advisory.details.controller.js.map
var Campaign;
(function (Campaign) {
    var home;
    (function (home) {
        "use strict";
        var CampaignController = (function () {
            function CampaignController($state, CampaignService, loginService, $scope) {
                this.$state = $state;
                this.CampaignService = CampaignService;
                this.loginService = loginService;
                this.$scope = $scope;
                var vm = this;
                if (!vm.campaigns) {
                    vm.campaigns = new app.core.PageData(CampaignService, this.search);
                    vm.campaigns.SearchField.VIN = $state.params["vin"];
                    vm.campaigns.SearchText = $state.params["search"];
                    vm.campaigns.Results = [];
                    vm.campaigns.SearchField.Preauths = 'Any';
                    vm.campaigns.SearchField.Rejected = 'Any';
                    vm.campaigns.SearchField.Feedback = 'false';
                    vm.campaigns.SearchField.DealerNumber = CampaignService.getMV360API().currentDealer;
                    vm.campaigns.SearchField.AllUnitsSearch = true;
                    vm.campaigns.SearchField.ActiveCampaignOnly = true;
                    vm.campaigns.SearchField.UserDealers = loginService.UserInfo.Dealers.map(function (d) { return d.DealerNumber; });
                    vm.campaigns.SortField = 'ServiceCampaignId';
                    vm.campaigns.SortDesc = false;
                    vm.campaigns.Search();
                }
                else {
                    var newsearch = $state.params["search"];
                    if (newsearch) {
                        if (newsearch != vm.campaigns.SearchText) {
                            vm.campaigns.SearchText = newsearch;
                            this.campaigns.Search();
                        }
                    }
                    else {
                        this.campaigns.SearchIfExpired();
                    }
                }
                vm.fromState = $state.params["fromState"];
                vm.fromItem = $state.params["fromItem"];
                this.whenEnterKeyIsHitSearch($scope);
            }
            CampaignController.prototype.whenEnterKeyIsHitSearch = function ($scope) {
                var vm = this;
                var onEnter = function (e) {
                    if (e.which == 13) {
                        vm.campaigns.Search();
                    }
                };
                $(document).keydown(onEnter);
                $scope.$on('$destroy', function () {
                    $(document).unbind('keydown', onEnter);
                });
            };
            CampaignController.prototype.search = function (searchService, pageData) {
                var vm = this;
                var query = new app.services.SearchQuery();
                query.PageSize = pageData.PageSize;
                query.CurrentPage = pageData.CurrentPage;
                query.SortField = pageData.SortField;
                query.SortAscending = !pageData.SortDesc;
                var filter = new app.services.ServiceCampaignSearchQueryFilter();
                filter.SimpleSearch = pageData.SearchText;
                filter.DealerNumber = pageData.SearchField.DealerNumber.DealerNumber ? pageData.SearchField.DealerNumber.DealerNumber : pageData.SearchField.DealerNumber;
                filter.AllUnitsSearch = pageData.SearchField.AllUnitsSearch;
                filter.ActiveCampaignOnly = pageData.SearchField.ActiveCampaignOnly;
                filter.VIN = pageData.SearchField.VIN;
                filter.Name = pageData.SearchField.Name;
                filter.ServiceCampaignId = pageData.SearchField.ServiceCampaignId;
                filter.AffectedUnits = pageData.SearchField.AffectedUnits;
                filter.ProblemDesc = pageData.SearchField.ProblemDesc;
                filter.NHTSARecallId = pageData.SearchField.NHTSARecallId;
                filter.TransCARecallId = pageData.SearchField.TransCARecallId;
                filter.InspectionOperation = pageData.SearchField.InspectionOperation;
                filter.ServiceType = pageData.SearchField.ServiceType;
                filter.RepairOperation = pageData.SearchField.RepairOperation;
                filter.ValidFrom = pageData.SearchField.ValidFrom;
                filter.ValidTo = pageData.SearchField.ValidTo;
                filter.PostedDate = pageData.SearchField.PostedDate;
                filter.ShortVIN = pageData.SearchField.ShortVIN;
                filter.Make = pageData.SearchField.Make;
                filter.ModelCode = pageData.SearchField.ModelCode;
                filter.ModelYear = pageData.SearchField.ModelYear;
                filter.MakeDescription = pageData.SearchField.MakeDescription;
                filter.ModelCodeDescription = pageData.SearchField.ModelCodeDescription;
                filter.ModelYearDescription = pageData.SearchField.ModelYearDescription;
                filter.UserDealers = pageData.SearchField.DealerNumber.DealerNumber ? [pageData.SearchField.DealerNumber.DealerNumber] : pageData.SearchField.UserDealers;
                query.Filter = filter;
                searchService.searchAdvanced(query).then(function (data) {
                    pageData.Update(data);
                });
            };
            CampaignController.$inject = ["$state", "app.services.CampaignService", "app.services.LoginService", "$scope"];
            return CampaignController;
        }());
        angular.module("app.campaign")
            .controller("app.campaign.CampaignController", CampaignController);
    })(home = Campaign.home || (Campaign.home = {}));
})(Campaign || (Campaign = {}));
//# sourceMappingURL=campaign.controller.js.map
var Campaign;
(function (Campaign) {
    var home;
    (function (home) {
        "use strict";
        var CampaignDetailsController = (function () {
            function CampaignDetailsController($state, $modal, CampaignService, DocumentService, loginService) {
                var _this = this;
                this.$state = $state;
                this.$modal = $modal;
                this.CampaignService = CampaignService;
                this.DocumentService = DocumentService;
                this.loginService = loginService;
                var vm = this;
                vm.ServiceCampaignId = $state.params['serviceCampaignId'];
                vm.dealerNumber = $state.params['DealerNumber'];
                vm.fromState = $state.params["fromState"];
                vm.fromItem = $state.params["fromItem"];
                vm.headerText = vm.ServiceCampaignId;
                vm.AllVins = $state.params['ShowAllVins'] == "false";
                this.CampaignService.getReasonCodes().then(function (result) {
                    vm.reasonCodes = result;
                });
                vm.serviceTypes = this.CampaignService.getServiceTypes();
                this.controllerReady = false;
                this.CampaignService.getCampaign(vm.ServiceCampaignId, vm.dealerNumber).then(function (data) {
                    _this.Campaign = data;
                    if (vm.Campaign.ServiceType == "ServiceCampaign" || vm.Campaign.ServiceType == "Campaign" || vm.Campaign.ServiceType == "Recall") {
                        vm.headerText = "Recall - " + vm.Campaign.ServiceCampaignId;
                    }
                    else {
                        vm.headerText = "Service Advisory - " + vm.Campaign.ServiceCampaignId;
                    }
                    _this.controllerReady = true;
                });
                if (!vm.campaignUnits) {
                    vm.campaignUnits = new app.core.PageData(CampaignService, this.search);
                    vm.campaignUnits.SearchField.ServiceCampaignId = vm.ServiceCampaignId;
                    vm.campaignUnits.SearchField.AllVins = vm.AllVins;
                    vm.campaignUnits.SearchField.UnitCampaignSearch = true;
                    vm.campaignUnits.Search();
                }
                this.UserDealers = loginService.UserInfo.Dealers.map(function (d) { return d.DealerNumber; });
            }
            CampaignDetailsController.prototype.ShowAllVins = function (value) {
                var vm = this;
                vm.AllVins = value;
                vm.campaignUnits.SearchField.ServiceCampaignId = vm.ServiceCampaignId;
                vm.campaignUnits.SearchField.AllVins = vm.AllVins;
                vm.campaignUnits.SearchField.UnitCampaignSearch = true;
                vm.campaignUnits.SearchField.VIN = vm.oneUnitsearchtext;
                vm.campaignUnits.Search();
            };
            CampaignDetailsController.prototype.openDocumentsDialog = function (title, requests) {
                var vm = this;
                var settings = {
                    controller: "app.campaign.CampaignDocumentsController as vm",
                    templateUrl: "app/campaign/campaign.documents.modal.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'xl',
                    resolve: {
                        campaignId: function () { return vm.Campaign.ServiceCampaignId; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
                modalInstance.result.then(function () { });
            };
            CampaignDetailsController.prototype.search = function (searchService, pageData) {
                var vm = this;
                var query = new app.services.SearchQuery();
                query.PageSize = pageData.PageSize;
                query.CurrentPage = pageData.CurrentPage;
                var filter = new app.services.ServiceCampaignUnitSearchQueryFilter();
                filter.ServiceCampaignId = pageData.SearchField.ServiceCampaignId;
                filter.AllVins = pageData.SearchField.AllVins;
                filter.UnitCampaignSearch = pageData.SearchField.UnitCampaignSearch;
                if (pageData.SearchField.VIN != null && pageData.SearchField.VIN != "") {
                    filter.oneVin = pageData.SearchField.VIN;
                }
                query.Filter = filter;
                searchService.searchAdvanced(query).then(function (data) {
                    pageData.Update(data);
                });
            };
            CampaignDetailsController.prototype.ShowOneVin = function (searchService, pageData) {
                var vm = this;
                vm.AllVins = true;
                var query = new app.services.SearchQuery();
                vm.campaignUnits.SearchField.ServiceCampaignId = vm.ServiceCampaignId;
                vm.campaignUnits.SearchField.AllVins = vm.AllVins;
                vm.campaignUnits.SearchField.UnitCampaignSearch = true;
                vm.campaignUnits.SearchField.VIN = vm.oneUnitsearchtext;
                vm.campaignUnits.Search();
            };
            CampaignDetailsController.$inject = ["$state", "$uibModal", "app.services.CampaignService", "app.services.DocumentService", "app.services.LoginService"];
            return CampaignDetailsController;
        }());
        angular.module("app.campaign")
            .controller("app.campaign.CampaignDetailsController", CampaignDetailsController);
    })(home = Campaign.home || (Campaign.home = {}));
})(Campaign || (Campaign = {}));
//# sourceMappingURL=campaign.details.controller.js.map
var Campaign;
(function (Campaign) {
    var home;
    (function (home) {
        "use strict";
        var CampaignDocumentsController = (function () {
            function CampaignDocumentsController(campaignService, fileUpload, $modalInstance, campaignId) {
                this.campaignService = campaignService;
                this.fileUpload = fileUpload;
                this.$modalInstance = $modalInstance;
                var vm = this;
                vm.campaignService.getDocuments(campaignId)
                    .then(function (response) {
                    vm.files = response;
                });
            }
            CampaignDocumentsController.prototype.close = function (value) {
                this.$modalInstance.close(value);
            };
            CampaignDocumentsController.$inject = [
                "app.services.CampaignService",
                "app.services.FileUploadService",
                "$uibModalInstance",
                "campaignId"
            ];
            return CampaignDocumentsController;
        }());
        angular.module("app.campaign")
            .controller("app.campaign.CampaignDocumentsController", CampaignDocumentsController);
    })(home = Campaign.home || (Campaign.home = {}));
})(Campaign || (Campaign = {}));
//# sourceMappingURL=campaign.documents.modal.controller.js.map
var Campaign;
(function (Campaign) {
    var home;
    (function (home) {
        "use strict";
        var CampaignNotificationController = (function () {
            function CampaignNotificationController($modalInstance, campaignService, vin) {
                this.$modalInstance = $modalInstance;
                this.campaignService = campaignService;
                this.vin = vin;
                var vm = this;
            }
            CampaignNotificationController.prototype.save = function () {
                var vm = this;
                this.$modalInstance.close(vm.vin);
            };
            CampaignNotificationController.prototype.cancel = function () {
                this.$modalInstance.dismiss('cancel');
            };
            CampaignNotificationController.$inject = ["$uibModalInstance", "app.services.CampaignService", "vin"];
            return CampaignNotificationController;
        }());
        angular.module("app.campaign")
            .controller("app.campaign.CampaignNotificationController", CampaignNotificationController);
    })(home = Campaign.home || (Campaign.home = {}));
})(Campaign || (Campaign = {}));
//# sourceMappingURL=campaign.notification.modal.controller.js.map
var Campaign;
(function (Campaign) {
    var home;
    (function (home) {
        "use strict";
        var CampaignVinController = (function () {
            function CampaignVinController($state, campaignService, loginService, $scope) {
                this.$state = $state;
                this.campaignService = campaignService;
                this.loginService = loginService;
                this.$scope = $scope;
                var vm = this;
                vm.vinPassed = $state.params["vin"];
                if (!vm.campaignsPerVin) {
                    vm.search(vm.vinPassed);
                }
            }
            CampaignVinController.prototype.search = function (vin) {
                var vm = this;
                vm.campaignService.getCampaignsPerVin(vin).then(function (data) {
                    vm.campaignsPerVin = data;
                });
            };
            CampaignVinController.$inject = ["$state", "app.services.CampaignService", "app.services.LoginService", "$scope"];
            return CampaignVinController;
        }());
        angular.module("app.campaign")
            .controller("app.campaign.CampaignVinController", CampaignVinController);
    })(home = Campaign.home || (Campaign.home = {}));
})(Campaign || (Campaign = {}));
//# sourceMappingURL=campaign.vin.controller.js.map
var claim;
(function (claim) {
    var acknowledge;
    (function (acknowledge) {
        "use strict";
        var AcknowledgModalController = (function () {
            function AcknowledgModalController($state, $modalInstance, feedbackService, labor, part, $scope, fileUpload, LoginService) {
                this.$state = $state;
                this.$modalInstance = $modalInstance;
                this.feedbackService = feedbackService;
                this.$scope = $scope;
                this.fileUpload = fileUpload;
                this.LoginService = LoginService;
                var vm = this;
                vm.feedbacktext = [];
                vm.fileList = [];
                vm.labor = labor;
                vm.part = part;
                vm.id = "Acknowledge";
                if (vm.part) {
                    vm.id = vm.part.PartRecID.toString();
                    feedbackService.getFeedback("PartsFeedback", vm.part.PartRecID).then(function (result) {
                        vm.part.Feedback = result;
                    });
                }
                if (vm.labor) {
                    vm.id = vm.labor.OpRecID.toString();
                    feedbackService.getFeedback("Feedback", vm.labor.OpRecID).then(function (result) {
                        vm.labor.Feedback = result;
                    });
                }
                vm.controllerReady = true;
                setTimeout(function () { $('textarea').first().focus(); }, 0);
            }
            AcknowledgModalController.prototype.addFeedback = function (id, lineType, fileItem) {
                var vm = this;
                vm.feedbackDisabled = true;
                var feedbackitem = new app.services.IFeedbackItem();
                feedbackitem.ERPRecordId = id;
                feedbackitem.LineType = lineType;
                feedbackitem.Comments = vm.feedbacktext[id];
                feedbackitem.Title = "Acknowledge Comments";
                feedbackitem.FeedbackType = fileItem ? "FileOrig" : "Feedback";
                feedbackitem.CreatedOn = new Date();
                feedbackitem.FileName = fileItem ? fileItem.Name : null;
                feedbackitem.FileSrc = fileItem ? fileItem.Src : null;
                feedbackitem.CreatedByUserName = this.LoginService.UserInfo.Username;
                if (lineType == "Labor") {
                    vm.feedbackService.postFeedback(feedbackitem).then(function (result) {
                        vm.feedbackService.getFeedback("Feedback", id).then(function (result) {
                            vm.labor.Feedback = result;
                            vm.feedbacktext[id] = "";
                            vm.feedbackDisabled = false;
                        });
                    });
                }
                else {
                    vm.feedbackService.postFeedback(feedbackitem).then(function (result) {
                        vm.feedbackService.getFeedback("PartsFeedback", id).then(function (result) {
                            vm.part.Feedback = result;
                            vm.feedbacktext[id] = "";
                            vm.feedbackDisabled = false;
                        });
                    });
                }
            };
            AcknowledgModalController.prototype.uploadFiles = function (f, id) {
                var vm = this;
                vm.fileList[id] = [];
                var fileNumberDisplay;
                var fileData;
                var recordID;
                var displayRecordId;
                var _loop_1 = function () {
                    var photofile = f[i];
                    var reader = new FileReader();
                    if (photofile.size <= 51200000) {
                        reader.onload = function (e) {
                            fileData = reader.result;
                            vm.fileItem = {
                                Name: photofile.name,
                                Src: fileData,
                                IsNew: true,
                                Path: photofile.type,
                                IsDeleted: false,
                                Thumbnail: null
                            };
                            vm.fileUpload.uploadFile(vm.fileItem, "Acknowledge", vm.id)
                                .then(function (response) {
                                vm.result = response.toString();
                                if (vm.result != "File Type Error" && vm.result != "File Upload Error") {
                                    vm.fileList[id].push({
                                        Name: photofile.name,
                                        Src: vm.result,
                                        IsNew: true,
                                        Path: vm.result,
                                        IsDeleted: false,
                                        Thumbnail: null
                                    });
                                    vm.fileItem.Src = vm.result;
                                    vm.fileItem.Path = vm.result;
                                    var type;
                                    if (vm.part) {
                                        type = "Part";
                                        vm.addFeedback(vm.part.PartRecID, type, vm.fileItem);
                                    }
                                    else if (vm.labor) {
                                        type = "Labor";
                                        vm.addFeedback(vm.labor.OpRecID, type, vm.fileItem);
                                    }
                                }
                                else if (vm.result == "File Type Error") {
                                }
                                else {
                                }
                            }, function (response) {
                                if (response.status > 0) {
                                    if (response.status == 404) {
                                    }
                                    else {
                                    }
                                }
                            });
                        };
                        reader.readAsDataURL(photofile);
                    }
                    else {
                    }
                };
                for (var i in f) {
                    _loop_1();
                }
            };
            ;
            AcknowledgModalController.prototype.close = function (value) {
                var vm = this;
                if (vm.part && !vm.feedbackDisabled) {
                    if (vm.feedbacktext[vm.part.PartRecID]) {
                        vm.addFeedback(vm.part.PartRecID, "Part", null);
                    }
                }
                if (vm.labor && !vm.feedbackDisabled) {
                    if (vm.feedbacktext[vm.labor.OpRecID]) {
                        if (vm.labor.Parts != undefined && vm.labor.Parts.length > 0) {
                            vm.labor.Parts.forEach(function (laborPart) {
                                if (laborPart.LineStatus == "Denied") {
                                    vm.addFeedback(laborPart, "Part", null);
                                }
                            });
                        }
                        vm.addFeedback(vm.labor.OpRecID, "Labor", null);
                    }
                }
                this.$modalInstance.close(value);
            };
            AcknowledgModalController.prototype.remove = function (fileItem, id) {
                var i = this.fileList[id].indexOf(fileItem);
                this.fileList[id].splice(i, 1);
            };
            AcknowledgModalController.prototype.getImageSource = function (src) {
                return "/api/image/false/?file=" + encodeURI(src);
            };
            AcknowledgModalController.$inject = ["$state", "$uibModalInstance", "app.services.FeedbackService", "labor", "part", "$scope", "app.services.FileUploadService", "app.services.LoginService"];
            return AcknowledgModalController;
        }());
        angular.module("app.claims")
            .controller("app.claims.AcknowledgModalController", AcknowledgModalController);
    })(acknowledge = claim.acknowledge || (claim.acknowledge = {}));
})(claim || (claim = {}));
//# sourceMappingURL=claims.acknowledge.modal.controller.js.map
var claims;
(function (claims) {
    var home;
    (function (home) {
        "use strict";
        var ClaimsController = (function () {
            function ClaimsController($state, claimService, rootScope, loginService, userService, $scope) {
                var _this = this;
                this.$state = $state;
                this.claimService = claimService;
                this.rootScope = rootScope;
                this.loginService = loginService;
                this.userService = userService;
                this.$scope = $scope;
                var vm = this;
                vm.selectedStatuses = [];
                vm.statuses = claimService.getClaimStatuses();
                $scope.statusData = vm.statuses;
                $scope.statusSettings = {
                    smartButtonMaxItems: 3,
                    smartButtonTextConverter: function (itemText, originalItem) {
                        return itemText;
                    },
                    checkBoxes: true,
                    placeholder: "Select Status"
                };
                var newsearch = $state.params["search"];
                $scope.statusModel = [];
                if (newsearch == "Needs Review") {
                    $scope.statusModel.push($scope.statusData[2]);
                }
                else if (newsearch == "Draft") {
                    $scope.statusModel.push($scope.statusData[0]);
                }
                else if (newsearch == "ShowExpiringClaims") {
                    $scope.statusModel.push($scope.statusData[0]);
                    $scope.statusModel.push($scope.statusData[1]);
                    $scope.statusModel.push($scope.statusData[2]);
                    $scope.statusModel.push($scope.statusData[3]);
                    $scope.statusModel.push($scope.statusData[6]);
                }
                if (newsearch != "Needs Review" && newsearch != "Draft") {
                    this.userService.GetUsers().then(function (data) {
                        vm.userContacts = data;
                        vm.userContacts = vm.userContacts.sort(function (a, b) {
                            return a.Username > b.Username ? 1 : a.Username < b.Username ? -1 : 0;
                        });
                        vm.currentUser = vm.userContacts.filter(function (x) { return x.Email == _this.loginService.UserInfo.Email; })[0];
                    });
                }
                if (!vm.rootScope.Claims || (newsearch == "Needs Review" || newsearch == "Draft" || newsearch == "ShowExpiringClaims")) {
                    vm.rootScope.Claims = new app.core.PageData(claimService, this.search);
                    vm.rootScope.Claims.SearchText = $state.params["search"];
                    vm.rootScope.Claims.SearchField.ClaimStatus = $scope.statusModel;
                    vm.rootScope.Claims.SearchField.CreatedBy = '';
                    vm.rootScope.Claims.SearchField.ExcludeCreatedBy = '';
                    vm.rootScope.Claims.SearchField.Preauths = 'Any';
                    vm.rootScope.Claims.SearchField.Rejected = 'Any';
                    vm.rootScope.Claims.SearchField.Feedback = newsearch == "Needs Review" ? true : null;
                    vm.rootScope.Claims.SearchField.ClaimsAge = newsearch == "ShowExpiringClaims" ? vm.rootScope.Claims.ClaimAge[2].Value : 0;
                    vm.rootScope.Claims.SearchField.Archived = true;
                    vm.rootScope.Claims.SortField = '';
                    vm.rootScope.Claims.SortDesc = true;
                    if (newsearch != "Needs Review" && newsearch != "Draft") {
                        vm.rootScope.Claims.Search();
                    }
                    else {
                        this.userService.GetUsers().then(function (data) {
                            vm.userContacts = data;
                            vm.userContacts = vm.userContacts.sort(function (a, b) {
                                return a.Username > b.Username ? 1 : a.Username < b.Username ? -1 : 0;
                            });
                            vm.currentUser = vm.userContacts.filter(function (x) { return x.Email == _this.loginService.UserInfo.Email; })[0];
                            if (newsearch == "Needs Review" || newsearch == "Draft") {
                                vm.rootScope.Claims.SearchField.CreatedBy = vm.currentUser;
                                vm.rootScope.Claims.SearchField.CreatedBy.Username.value = vm.currentUser;
                            }
                        })["finally"](function () {
                            vm.rootScope.Claims.Search();
                            vm.$scope.$apply();
                            vm.$scope.$digest();
                        });
                    }
                }
                else {
                    if (newsearch) {
                        vm.rootScope.Claims.SearchField.VIN = newsearch;
                        this.rootScope.Claims.Search();
                    }
                    else {
                        vm.rootScope.Claims.SearchField.ClaimStatus = $scope.statusModel;
                        this.rootScope.Claims.SearchIfExpired();
                    }
                }
                this.whenEnterKeyIsHitSearch($scope);
            }
            ClaimsController.prototype.whenEnterKeyIsHitSearch = function ($scope) {
                var vm = this;
                var onEnter = function (e) {
                    if (e.which == 13) {
                        vm.rootScope.Claims.Search();
                    }
                };
                $(document).keydown(onEnter);
                $scope.$on('$destroy', function () {
                    $(document).unbind('keydown', onEnter);
                });
            };
            ClaimsController.prototype.search = function (searchService, page) {
                var vm = this;
                var query = new app.services.SearchQuery();
                query.PageSize = page.PageSize;
                query.CurrentPage = page.CurrentPage;
                query.SortField = page.SortField;
                query.SortAscending = page.SortDesc;
                var filter = new app.services.ClaimSearchQueryFilter();
                filter.ClaimStatus = page.SearchField.ClaimStatus;
                filter.VIN = page.SearchField.VIN;
                filter.Owner = page.SearchField.Owner;
                filter.DealerReference = page.SearchField.DealerReference;
                if (page.SearchField.CreatedBy != undefined) {
                    filter.CreatedBy = page.SearchField.CreatedBy.Username;
                }
                if (page.SearchField.ExcludeCreatedBy != undefined) {
                    filter.ExcludeCreatedBy = page.SearchField.ExcludeCreatedBy.Username;
                }
                filter.ClaimNumber = page.SearchField.ClaimNumber;
                filter.Feedback = page.SearchField.Feedback;
                filter.Archived = page.SearchField.Archived;
                filter.ClaimsAge = page.SearchField.ClaimsAge;
                query.Filter = filter;
                searchService.searchAdvanced(query).then(function (data) {
                    page.Update(data);
                });
            };
            ClaimsController.prototype.deleteClaim = function (claim) {
                var _this = this;
                this.claimService.deleteClaim(claim.ClaimNumber).then(function () {
                    _this.rootScope.Claims.Search();
                });
            };
            ClaimsController.$inject = ["$state", "app.services.ClaimService", "$rootScope", "app.services.LoginService", "app.services.UserService", "$scope"];
            return ClaimsController;
        }());
        angular.module("app.claims")
            .controller("app.claims.ClaimsController", ClaimsController);
    })(home = claims.home || (claims.home = {}));
})(claims || (claims = {}));
//# sourceMappingURL=claims.controller.js.map
var claim;
(function (claim_1) {
    var edit;
    (function (edit) {
        "use strict";
        var ClaimEditController = (function () {
            function ClaimEditController($state, vinService, claimService, flatRateManualService, failureCodeService, partService, $modal, $q, dealerService, mv360api, warrantyService, $scope, rootScope, salesPersonService, loginService, userService, locationSerivce, feedbackService, reportService, siteService, partsCatalogService, campaignService, $localStorage, $window) {
                var _this = this;
                this.$state = $state;
                this.vinService = vinService;
                this.claimService = claimService;
                this.flatRateManualService = flatRateManualService;
                this.failureCodeService = failureCodeService;
                this.partService = partService;
                this.$modal = $modal;
                this.$q = $q;
                this.dealerService = dealerService;
                this.mv360api = mv360api;
                this.warrantyService = warrantyService;
                this.$scope = $scope;
                this.rootScope = rootScope;
                this.salesPersonService = salesPersonService;
                this.loginService = loginService;
                this.userService = userService;
                this.locationSerivce = locationSerivce;
                this.feedbackService = feedbackService;
                this.reportService = reportService;
                this.siteService = siteService;
                this.partsCatalogService = partsCatalogService;
                this.campaignService = campaignService;
                this.$localStorage = $localStorage;
                this.$window = $window;
                var PARAM_CLAIM_NUMBER = "claimNumber";
                var PARAM_VIN = "vin";
                var vm = this;
                vm.claimNumber = $state.params[PARAM_CLAIM_NUMBER];
                vm.SubmitForPaymentClicked = false;
                vm.SubmitForProcessingClicked = false;
                vm.InvalidMileage = false;
                vm.partValidateWaiting = "";
                vm.SubmitClicked = false;
                vm.vinValidated = false;
                vm.hasLaborLinesRequiringReturns = false;
                vm.isParentOrderLinkable = false;
                vm.dangers = [];
                vm.warnings = [];
                vm.notifications = [];
                vm.isClaimLockedByUser = false;
                vm.newPartLineAdded = false;
                vm.newLaborLineAdded = false;
                vm.hasDisplayedCampaign = false;
                $scope.$watch(function watchDangerVariables(scope) {
                    $scope.myDangerArray = [
                        vm.claim.ClaimStatus,
                        vm.claim.FrPortalLock,
                        vm.claim.Locked,
                        vm.claim.VIN,
                        vm.claim.VIN.length,
                        vm.claimform.dealercontact,
                        vm.claimform,
                        vm.claim.Mileage,
                        vm.claimform.year,
                        vm.claimlinesContainFeedback(vm.claim),
                        vm.containsNewPartLines(),
                        vm.DealerAddress,
                        vm.flatRateGroup,
                        vm.hasUnacknowledgedDeniedLines(),
                        vm.InvalidMileage,
                        vm.laborLineError,
                        vm.laborLinesCount(),
                        vm.laborLineSerialError,
                        vm.partLineError,
                        vm.statusRule.ClaimHeaderLockSubmitPayment(vm.claim),
                        vm.SubmitClicked,
                        vm.SubmitForPaymentClicked,
                        vm.SubmitForProcessingClicked,
                        vm.validateSublet(),
                        vm.vinIsMotorized,
                        vm.vinValid,
                        vm.vinValidated
                    ];
                    return ($scope.myDangerArray);
                }, function Danger() {
                    vm.setDangers();
                }, true);
                $scope.$watch(function watchVariables(scope) {
                    $scope.myArray = [
                        vm.claim.ClaimStatus,
                        vm.claim.HasAdjustments,
                        vm.claimlinesContainFeedback(vm.claim),
                        vm.claimlinesContainPortalFeedback(vm.claim),
                        vm.hasUnacknowledgedDeniedLines(),
                        vm.noCatalog,
                        vm.partTagUnassigned,
                        vm.validateReqFilesAttached(),
                        vm.vinNotRegistered,
                        vm.vinValidated
                    ];
                    return ($scope.myArray);
                }, function Warn() {
                    vm.setWarnings();
                }, true);
                if (!vm.claimNumber || vm.claimNumber == "create") {
                    vm.setNotifications();
                    if ($state.params[PARAM_VIN]) {
                        vm.vin = $state.params[PARAM_VIN];
                        vm.ShowUnitCrumbs = true;
                    }
                    vm.headerText = "New Claim";
                    vm.claim = new app.services.IClaim();
                    vm.claim.Labor = new Array();
                    if (vm.vin) {
                        vm.claim.VIN = vm.vin;
                    }
                    else {
                        vm.claim.VIN = "";
                    }
                    vm.claim.ClaimStatus = "Draft";
                    vm.claim.RepairStartDate = null;
                    vm.claim.RepairEndDate = null;
                    vm.controllerReady = true;
                    vm.isEditLoad = false;
                    vm.claim.PartInProgress = false;
                    vm.claim.LaborInProgress = false;
                    vm.isNew = true;
                    vm.statusChanged();
                    if (vm.claim.VIN) {
                        vm.updateVINinfo();
                    }
                    salesPersonService.getSalesPeople().then(function (data) {
                        vm.salesperson = data;
                        salesPersonService.setDisplayField(vm.salesperson);
                        _this.userService.GetProfile().then(function (data) {
                            vm.claim.DealerContact = data.Email;
                        });
                    });
                    dealerService.getDealer()
                        .then(function (data) {
                        vm.laborRate = data.LaborRate;
                        vm.markupPercent = data.MarkupPercent ? data.MarkupPercent : vm.$localStorage.markupPercent;
                    });
                    vm.getAddresses();
                }
                else {
                    vm.headerText = "Claim";
                    vm.isEditLoad = true;
                    var loadpromises = new Array();
                    loadpromises.push(dealerService.getDealer()
                        .then(function (data) {
                        vm.markupPercent = data.MarkupPercent ? data.MarkupPercent : vm.$localStorage.markupPercent;
                    }));
                    loadpromises.push(claimService.getClaim(vm.claimNumber).then(function (data) {
                        vm.claim = data;
                        vm.laborRate = vm.claim.LaborRate;
                        vm.claim.PartInProgress = false;
                        vm.claim.LaborInProgress = false;
                        vm.claim.Labor.forEach(function (x) {
                            loadpromises.push(flatRateManualService.getFlatRateCodeDetails(x.FlatRateCode).then(function (data) {
                                x.ModelNumberRequired = data.ModelNumberRequired;
                                x.SerialNumberRequired = data.SerialNumberRequired;
                            }));
                            x.Parts.forEach(function (y) {
                                y.IsNew = false;
                                y.OldPartNumber = y.PartNumber;
                            });
                        });
                        vm.getAddresses();
                        if (vm.claim) {
                            if (vm.claim.ClaimNumber) {
                                vm.headerText = "Claim - " + vm.claim.ClaimNumber;
                            }
                            else if (vm.claim.ClaimStatus.toLowerCase() == "denied") {
                                vm.headerText = "Claim - ";
                                vm.claim.PaymentDate = null;
                            }
                            else {
                                vm.headerText = "Claim - Draft";
                            }
                            vm.setNotifications();
                        }
                    }));
                    loadpromises.push(salesPersonService.getSalesPeople().then(function (data) {
                        vm.salesperson = data;
                        salesPersonService.setDisplayField(vm.salesperson);
                    }));
                    loadpromises.push(claimService.getLinkedClaims(vm.claimNumber).then(function (data) {
                        vm.linkedClaims = data;
                    }));
                    $q.all(loadpromises).then(function () {
                        if (vm.claim) {
                            if (!vm.claim.Locked) {
                                if (vm.claim.ClaimStatus.toLowerCase() === "draft" || vm.claim.ClaimStatus.toLowerCase() === "authorized" || vm.claim.ClaimStatus == "paid" || vm.claim.ClaimStatus == "denied" || vm.claim.ClaimStatus == "expried" ||
                                    vm.claim.ClaimStatus.toLowerCase() === "needs review" && (vm.hasUnacknowledgedDeniedLines() || vm.claimlinesContainFeedback(vm.claim))) {
                                    if (vm.claimNumber && vm.claimNumber != "Create") {
                                        vm.isClaimLockedByUser = true;
                                        claimService.lockClaimToggle(vm.claimNumber, false)
                                            .then(function (data) {
                                            vm.toggleClaimLockOnExit($scope, claimService, vm.claimNumber, $window);
                                        });
                                    }
                                }
                                else {
                                    vm.claim.Locked = true;
                                    vex.dialog.alert("This claim is currently locked for editing. No changes can be saved on this claim.");
                                }
                            }
                            else {
                                vex.dialog.alert("This claim is currently locked for editing. No changes can be saved on this claim.");
                            }
                            if (vm.claim.FrOriginalclaimid && (vm.claim.FrOriginalclaimid.length == 6 && vm.claim.FrOriginalclaimid.replace(/\D/g, '').length == 6)) {
                                vm.isParentOrderLinkable = true;
                            }
                            vm.statusChanged();
                            vm.updateVINinfo();
                        }
                        vm.controllerReady = true;
                        vm.typeaheadisopen = false;
                    });
                }
            }
            ClaimEditController.prototype.setNotifications = function () {
                var vm = this;
                vm.notifications.length = 0;
                var warrantyEndDateString;
                var datenow = new Date();
                var warrantyEndDateString;
                if (vm.claim != null) {
                    warrantyEndDateString = vm.claim.WarrantyEndDate;
                    var warrantyEndDate = new Date(warrantyEndDateString);
                    if (datenow > warrantyEndDate) {
                        vm.notifications.push('<span>The Warranty Period on this unit has expired.  Please note that any and all repair requests made could be denied and will be subject to review by Forest River.</span><br>');
                    }
                }
                if (vm.loginService.selectedDealer.ServiceCenter) {
                    vm.notifications.push('<span>All repairs requested on claims by a Service Center account will require pre-authorization, regardless of the flat rate requirements listed on the code.</span><br>');
                }
            };
            ClaimEditController.prototype.setDangers = function () {
                var vm = this;
                vm.dangers.length = 0;
                if (vm.claim.ClaimStatus == 'Denied') {
                    vm.dangers.push('<span> This claim has been Denied. ' +
                        'If you have questions, please contact the ' + vm.claim.MakeDescription + ' Warranty Department. ' +
                        'The phone numbers and email addresses can be found in the Quick Link: Warranty' +
                        ' & Parts Contacts on the portal\'s homepage, <br> or by clicking the following link :' +
                        ' <a href="https://forestriverinc.com/CustomerService/Portal_Contact_Information.pdf" target="_blank">Warranty Contact Information</a></span><br>');
                }
                if (vm.claim.ClaimStatus != 'Denied') {
                    var listOfReasons = '';
                    if (vm.SubmitForPaymentClicked || vm.SubmitForProcessingClicked || vm.SubmitClicked) {
                        if (vm.claim.Locked == true) {
                            listOfReasons += '<li>The Claim is locked for editing by Forest River.</li>';
                        }
                        if (!vm.DealerAddress) {
                            listOfReasons += '<li>A Dealer Address is required</li>';
                        }
                        if ((vm.SubmitForPaymentClicked || vm.SubmitForProcessingClicked) && vm.laborLinesCount() == 0) {
                            listOfReasons += '<li>Claim does not contain any Labor lines</li>';
                        }
                        if (vm.SubmitForPaymentClicked && vm.containsNewPartLines()) {
                            listOfReasons += '<li>This claim contains new part lines.</li>';
                        }
                        if (vm.SubmitForPaymentClicked && vm.claim.ClaimStatus == 'Authorized' && vm.statusRule.ClaimHeaderLockSubmitPayment(vm.claim)) {
                            listOfReasons += "<li>One or more labor lines has a status of 'draft'</li>";
                        }
                        if (vm.SubmitForPaymentClicked && vm.claim.ClaimStatus == 'Processing' && vm.statusRule.ClaimHeaderLockSubmitPayment(vm.claim)) {
                            listOfReasons += '<li>This claim is currently has a status of Processing.</li>';
                        }
                        if (vm.SubmitForPaymentClicked && vm.claim.ClaimStatus == 'Draft' && vm.statusRule.ClaimHeaderLockSubmitPayment(vm.claim)) {
                            listOfReasons += '<li>This claim currently has a status of Draft.</li>';
                        }
                        if (vm.SubmitForPaymentClicked && vm.claim.ClaimStatus == 'Pre Auth' && vm.statusRule.ClaimHeaderLockSubmitPayment(vm.claim)) {
                            listOfReasons += '<li>This claim currently has a status of Pre Auth.</li>';
                        }
                        if (vm.SubmitForProcessingClicked && !vm.validateSublet()) {
                            listOfReasons += '<li>Labor lines marked as sublet must have an attachment.</li>';
                        }
                        if (vm.SubmitForProcessingClicked && (vm.vinValid != null && !vm.vinValid)) {
                            listOfReasons += '<li>VIN is invalid.</li>';
                        }
                        if (vm.SubmitForProcessingClicked && vm.claim.VIN.length < 17) {
                            listOfReasons += '<li>VIN has not been selected.</li>';
                        }
                        if (vm.SubmitForProcessingClicked && vm.claim.ClaimStatus == 'Authorized') {
                            listOfReasons += '<li>Claim status is Authorized.</li>';
                        }
                        if (vm.claimform.dealercontact.$invalid) {
                            listOfReasons += '<li>Dealer Contact is invalid or missing</li>';
                        }
                        if (vm.claimform.year.$invalid) {
                            listOfReasons += '<li> * Year is invalid or missing</li>';
                        }
                        if (vm.claimform.$invalid && vm.laborLineError) {
                            listOfReasons += '<li>' + vm.laborLineError + '</li>';
                        }
                        if (vm.claimform.$invalid && vm.laborLineSerialError) {
                            listOfReasons += '<li>' + vm.laborLineSerialError + '</li>';
                        }
                        if (vm.claimform.$invalid && vm.partLineError) {
                            listOfReasons += '<li>' + vm.partLineError + '</li>';
                        }
                        if ((vm.vinIsMotorized && (vm.claim.Mileage == null || vm.claim.Mileage == 0)) || vm.InvalidMileage) {
                            listOfReasons += '<li>Mileage must be greater than 0.</li>';
                        }
                        if (listOfReasons) {
                            if (vm.SubmitForPaymentClicked) {
                                listOfReasons = '<span> Cannot Submit for Payment because:</span><br>' + listOfReasons;
                            }
                            if (vm.SubmitForProcessingClicked) {
                                listOfReasons = '<span> Cannot Submit for Authorization because:</span><br>' + listOfReasons;
                            }
                            if (vm.SubmitClicked) {
                                listOfReasons = '<span> Cannot Save Draft because:</span><br>' + listOfReasons;
                            }
                            listOfReasons = '<ul style="margin-left: 20px;">' + listOfReasons;
                            ;
                        }
                        if (listOfReasons)
                            vm.dangers.push(listOfReasons + '</ul>');
                    }
                }
                if (vm.hasUnacknowledgedDeniedLines() || vm.claimlinesContainFeedback(vm.claim)) {
                    vm.dangers.push('<span> One or more claim lines need to be reviewed.</span><br>');
                }
                if (vm.vinValid && !vm.flatRateGroup) {
                    vm.dangers.push('<span> Selected VIN is not assigned to a flat rate group.Please contact Forest River for assistance.</span><br>');
                }
                if (!vm.vinValid && vm.claim.VIN && vm.vinValidated) {
                    vm.dangers.push('<span> The system is unable to validate your VIN number.Please verify the VIN number being entered is correct.</span><br>');
                }
            };
            ClaimEditController.prototype.setWarnings = function () {
                var vm = this;
                vm.warnings.length = 0;
                if (vm.vinNotRegistered && (vm.claim.ClaimStatus.toLowerCase() != 'pending payment' && vm.claim.ClaimStatus.toLowerCase() != 'paid')) {
                    vm.warnings.push('The VIN is not retail registered. <br>');
                }
                if (vm.vinValidated && vm.noCatalog) {
                    vm.warnings.push('<span> Selected VIN is not assigned to a parts catalog. Only USERPART can be added at this time. Please contact Forest River for assistance.</span><br>');
                }
                if (vm.claim.HasAdjustments) {
                    vm.warnings.push('<span> This claim has one or more adjustment notes that need to be reviewed.</span><br>');
                }
                if ((!vm.hasUnacknowledgedDeniedLines() && !vm.claimlinesContainFeedback(vm.claim) && vm.claimlinesContainPortalFeedback(vm.claim))) {
                    vm.warnings.push('<span> Claim is being reviewed by Forest River.</span><br>');
                }
                if (vm.partTagUnassigned && (vm.claim.ClaimStatus.toLowerCase() != 'pending payment' && vm.claim.ClaimStatus.toLowerCase() != 'paid')) {
                    vm.warnings.push('<span> A Part Tag Number has not been assigned yet. Please try again later or contact Forest River.</span><br>');
                }
            };
            ClaimEditController.prototype.reloadClaim = function (claimNumber) {
                var vm = this;
                vm.SubmitForPaymentClicked = false;
                vm.SubmitForProcessingClicked = false;
                vm.partValidateWaiting = "";
                vm.SubmitClicked = false;
                vm.vinValidated = false;
                vm.isNew = false;
                var loadpromises = new Array();
                loadpromises.push(this.claimService.getClaim(claimNumber).then(function (data) {
                    vm.claim = data;
                    if (vm.claim) {
                        if (vm.claim.ClaimNumber) {
                            vm.headerText = "Claim - " + vm.claim.ClaimNumber;
                        }
                        else if (vm.claim.ClaimStatus.toLowerCase() == "denied") {
                            vm.headerText = "Claim - ";
                            vm.claim.PaymentDate = null;
                        }
                    }
                }));
                loadpromises.push(this.claimService.getLinkedClaims(claimNumber).then(function (data) {
                    vm.linkedClaims = data;
                }));
                this.$q.all(loadpromises).then(function () {
                    if (vm.claim) {
                        if (!vm.claim.Locked) {
                            if (vm.claim.ClaimStatus.toLowerCase() === "draft" || vm.claim.ClaimStatus.toLowerCase() === "authorized" || vm.claim.ClaimStatus == "paid" || vm.claim.ClaimStatus == "denied" || vm.claim.ClaimStatus == "expried" ||
                                vm.claim.ClaimStatus.toLowerCase() === "needs review" && (vm.hasUnacknowledgedDeniedLines() || vm.claimlinesContainFeedback(vm.claim))) {
                                vm.claimService.lockClaimToggle(vm.claimNumber, false)
                                    .then(function (data) {
                                });
                            }
                            else {
                                vm.claim.Locked = true;
                            }
                        }
                        vm.statusChanged();
                        vm.updateVINinfo();
                        vm.showSaveMessage = false;
                    }
                    vm.controllerReady = true;
                    vm.typeaheadisopen = false;
                });
            };
            ClaimEditController.prototype.getAddresses = function () {
                var vm = this;
                vm.dealerService.getAddresses().then(function (addressResult) {
                    vm.dealerAddresses = addressResult;
                    var primaryDeliveryAddressFound = false;
                    var deliveryAddressFound = false;
                    for (var index = 0; index < addressResult.length; index++) {
                        if (vm.claim.DealerAddress != undefined && addressResult[index].FullAddress.replace(/ /g, '').toLocaleLowerCase() == vm.claim.DealerAddress.replace(/ /g, '').toLocaleLowerCase()) {
                            vm.DealerAddress = addressResult[index];
                            return;
                        }
                        if (addressResult[index].Purpose.indexOf("Delivery") > -1 && addressResult[index].DefaultRoles.indexOf("Delivery") > -1) {
                            vm.DealerAddress = addressResult[index];
                            primaryDeliveryAddressFound = true;
                        }
                        if (addressResult[index].Purpose.indexOf("Delivery") > -1 && primaryDeliveryAddressFound == false) {
                            vm.DealerAddress = addressResult[index];
                            deliveryAddressFound = true;
                        }
                        if (addressResult[index].IsPrimary && primaryDeliveryAddressFound == false && deliveryAddressFound == false) {
                            vm.DealerAddress = addressResult[index];
                        }
                    }
                    if (vm.DealerAddress == undefined && addressResult.length > 0) {
                        vm.DealerAddress = addressResult[0];
                    }
                });
            };
            ClaimEditController.prototype.claimChanged = function () {
                var vm = this;
                if (vm.controllerReady) {
                }
            };
            ClaimEditController.prototype.statusChanged = function () {
                var vm = this;
                vm.statusRule = vm.claimService.getStatusRule(vm.claim.Processing ? 'processing' : vm.claim.ClaimStatus);
                if ((this.claim.Locked) || (this.claim.Expired)) {
                }
                this.submitProcessCtrl();
            };
            ClaimEditController.prototype.submitProcessCtrl = function () {
                this.disableSubmitProcess = !this.validateSublet();
            };
            ClaimEditController.prototype.validateSublet = function () {
                var hasinvalidLine = false;
                var vm = this;
                if (vm.statusRule && vm.statusRule.HeaderButtonsActiveSubmit || this.containsNewPartLines()) {
                    for (var index = 0; index < this.claim.Labor.length; index++) {
                        if (!this.claim.Labor[index].IsDeleted) {
                            if (this.claim.Labor[index].Sublet) {
                                this.hasSublet = true;
                                if (this.laborLineFilesCount(this.claim.Labor[index]) < 1) {
                                    hasinvalidLine = true;
                                }
                            }
                        }
                    }
                }
                return !hasinvalidLine;
            };
            ClaimEditController.prototype.validateReqFilesAttached = function () {
                var hasinvalidLine = false;
                var vm = this;
                if (vm.statusRule && vm.statusRule.HeaderButtonsActiveSubmit || this.containsNewPartLines()) {
                    for (var index = 0; index < this.claim.Labor.length; index++) {
                        if (!this.claim.Labor[index].IsDeleted) {
                            if (this.claim.Labor[index].FlatRateCode) {
                                if (this.claim.Labor[index].PhotoRequired || this.claim.Labor[index].Sublet) {
                                    if (this.claim.Labor[index].Files.length < 1) {
                                        hasinvalidLine = true;
                                    }
                                }
                                if (this.claim.Labor[index].PhotoRequiredCAN) {
                                    if (this.claim.Labor[index].Files.length < 1) {
                                        hasinvalidLine = true;
                                    }
                                }
                            }
                        }
                    }
                }
                return !hasinvalidLine;
            };
            ClaimEditController.prototype.submitlogic = function (event, claim) {
                if (event.toLowerCase() === "submit") {
                    if (claim.ClaimStatus.toLowerCase() === "draft") {
                        for (var index = 0; index < claim.Labor.length; index++) {
                            if (claim.Labor[index].LineStatus.toLowerCase() == "draft" && !this.claimLineContainSubletPreauthOrOverAllowedHours(claim.Labor[index])) {
                                claim.Labor[index].LineStatus = "Authorized";
                            }
                        }
                        if (this.claimlinesContainSubletPreauthOrOverAllowedHours(claim)) {
                        }
                        else {
                            if (this.vinWarrantyIsValidOrNotRegistered(this.vinInfo)) {
                                claim.RepairEndDate = new Date();
                                this.setAllClaimLaborLinesToAuthorized(claim);
                            }
                            else {
                            }
                        }
                    }
                    else if (claim.ClaimStatus.toLowerCase() === "authorized") {
                        for (var index = 0; index < claim.Labor.length; index++) {
                            if (claim.Labor[index].LineStatus.toLowerCase() == "draft" && !this.claimLineContainSubletPreauthOrOverAllowedHours(claim.Labor[index])) {
                                claim.Labor[index].LineStatus = "Authorized";
                            }
                        }
                        if (this.claimlinesContainSubletPreauthOrOverAllowedHours(claim)) {
                        }
                        else {
                            claim.RepairEndDate = new Date();
                        }
                    }
                    else if (claim.ClaimStatus.toLowerCase() === "claim feedback" || claim.ClaimStatus.toLowerCase() === "pre auth feedback" || claim.ClaimStatus.toLowerCase() === "needs review - feedback") {
                        for (var index = 0; index < claim.Labor.length; index++) {
                            if (claim.Labor[index].LineStatus.toLowerCase() == "draft" && !this.claimLineContainSubletPreauthOrOverAllowedHours(claim.Labor[index])) {
                                claim.Labor[index].LineStatus = "Authorized";
                            }
                        }
                        if (this.claimlinesContainSubletPreauthOrOverAllowedHours(claim)) {
                        }
                        else {
                            if (!this.claimlinesContainFeedback(claim)) {
                            }
                            else {
                            }
                        }
                    }
                    else if (claim.ClaimStatus.toLowerCase() === "pre auth feedback" || claim.ClaimStatus.toLowerCase() === "needs review - pre auth") {
                        if (!this.claimlinesContainFeedback(claim)) {
                        }
                        else {
                        }
                    }
                }
                else if (event.toLowerCase() === "cancel") {
                    if (claim.ClaimStatus.toLowerCase() === "draft" ||
                        claim.ClaimStatus.toLowerCase() === "pre auth" || claim.ClaimStatus.toLowerCase() === "preauth" ||
                        claim.ClaimStatus.toLowerCase() === "authorized" ||
                        claim.ClaimStatus.toLowerCase() === "processing" ||
                        claim.ClaimStatus.toLowerCase() === "pre auth feedback" || claim.ClaimStatus.toLowerCase() === "needs review - pre auth" ||
                        claim.ClaimStatus.toLowerCase() === "claim feedback" || claim.ClaimStatus.toLowerCase() === "needs review - feedback") {
                        claim.ClaimStatus = "Cancelled";
                        this.claimlinesSetDenied(claim);
                    }
                }
            };
            ClaimEditController.prototype.acknowledgePart = function (part) {
                var vm = this;
                vm.showAcknowledgeModal(function () {
                    vm.save(null, true);
                }, part, null);
            };
            ClaimEditController.prototype.acknowledgeLabor = function (labor) {
                var vm = this;
                vm.showAcknowledgeModal(function () {
                    vm.save(null, true);
                }, null, labor);
            };
            ClaimEditController.prototype.showAcknowledgeModal = function (onSuccess, part, labor) {
                var vm = this;
                var settings = {
                    controller: "app.claims.AcknowledgModalController as vm",
                    templateUrl: "app/claims/claims.acknowledge.modal.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'xl',
                    resolve: {
                        labor: function () { return labor; },
                        part: function () { return part; }
                    }
                };
                this.$modal.open(settings)
                    .result
                    .then(function (value) {
                    if (value) {
                        vm.claim.Labor.forEach(function (l) {
                            if (labor) {
                                if (labor.OpRecID == l.OpRecID) {
                                    if (l.LineStatus == "Feedback") {
                                        l.LineStatusId = "5";
                                        l.LineStatus = "Portal Feedback";
                                    }
                                    else if (l.LineStatus == "Denied") {
                                        l.FrDenialAcknowledged = true;
                                    }
                                }
                            }
                            if (part) {
                                if (l.Parts) {
                                    l.Parts.forEach(function (p) {
                                        if (part.PartRecID == p.PartRecID) {
                                            if (p.LineStatus == "Feedback") {
                                                p.LineStatusId = "5";
                                                p.LineStatus = "Portal Feedback";
                                            }
                                            else if (p.LineStatus == "Denied") {
                                                p.FrDenialAcknowledged = true;
                                            }
                                        }
                                    });
                                }
                            }
                        });
                        onSuccess();
                    }
                });
            };
            ClaimEditController.prototype.vinWarrantyIsValidOrNotRegistered = function (vinInfo) {
                if (vinInfo != null) {
                    if (vinInfo.WarrantyIsValid) {
                        return true;
                    }
                    if (!vinInfo.WarrantyEnd) {
                        return true;
                    }
                }
                return false;
            };
            ClaimEditController.prototype.claimlinesContainSubletPreauthOrOverAllowedHours = function (claim) {
                for (var index = 0; index < claim.Labor.length; index++) {
                    if (this.claimLineContainSubletPreauthOrOverAllowedHours(claim.Labor[index])) {
                        return true;
                    }
                }
                return false;
            };
            ClaimEditController.prototype.claimLineContainSubletPreauthOrOverAllowedHours = function (line) {
                if (line.Sublet ||
                    line.PreAuth ||
                    line.DealerSubmittedHours > line.AllowedHours) {
                    return true;
                }
                return false;
            };
            ClaimEditController.prototype.setAllClaimLaborLinesToAuthorized = function (claim) {
                for (var index = 0; index < claim.Labor.length; index++) {
                    claim.Labor[index].LineStatus = "Authorized";
                    if (claim.Labor[index].SubLabor) {
                        for (var subIndex = 0; subIndex < claim.Labor[index].SubLabor.length; subIndex++) {
                            claim.Labor[index].SubLabor[subIndex].LineStatus = "Authorized";
                        }
                    }
                }
            };
            ClaimEditController.prototype.claimlinesContainFeedback = function (claim) {
                if (claim) {
                    for (var index = 0; index < claim.Labor.length; index++) {
                        if (claim.Labor[index].LineStatus.toLowerCase() === "feedback") {
                            return true;
                        }
                        if (claim.Labor[index].Parts) {
                            for (var partIndex = 0; partIndex < claim.Labor[index].Parts.length; partIndex++) {
                                if (claim.Labor[index].Parts[partIndex].LineStatus.toLowerCase() == "feedback") {
                                    return true;
                                }
                            }
                        }
                    }
                }
                return false;
            };
            ClaimEditController.prototype.claimlinesContainPortalFeedback = function (claim) {
                if (claim) {
                    for (var index = 0; index < claim.Labor.length; index++) {
                        if (claim.Labor[index].LineStatus.toLowerCase() === "portal feedback") {
                            return true;
                        }
                        if (claim.Labor[index].Parts) {
                            for (var partIndex = 0; partIndex < claim.Labor[index].Parts.length; partIndex++) {
                                if (claim.Labor[index].Parts[partIndex].LineStatus.toLowerCase() == "portal feedback") {
                                    return true;
                                }
                            }
                        }
                    }
                }
                return false;
            };
            ClaimEditController.prototype.newAuthClaimLines = function () {
                var vm = this;
                if (vm.claim.ClaimStatus == 'Authorized' && (!vm.containsNewLaborLines() && !vm.containsNewPartLines())) {
                    return false;
                }
                else
                    return true;
            };
            ClaimEditController.prototype.claimlinesSetDenied = function (claim) {
                for (var index = 0; index < claim.Labor.length; index++) {
                    claim.Labor[index].LineStatus = "Denied";
                }
            };
            ClaimEditController.prototype.claimLineStatusLogic = function (event, claim) {
                if (event === "submit") {
                }
                else {
                }
            };
            ClaimEditController.prototype.setPreAuthForOverAllowedHours = function (claim) {
                for (var index = 0; index < claim.Labor.length; index++) {
                    this.setPreAuth(claim.Labor[index]);
                }
            };
            ClaimEditController.prototype.setPreAuth = function (labor, fromFlatRateManual, flatRateManualValue) {
                if (fromFlatRateManual === void 0) { fromFlatRateManual = false; }
                if (flatRateManualValue === void 0) { flatRateManualValue = false; }
                var dateNow = new Date();
                var warrantyEndDate;
                var warrantyEndDateString;
                var oldestDate = new Date("Wed Dec 31 1969 19:00:00").toUTCString();
                if (this.claim.WarrantyEndDate != undefined) {
                    warrantyEndDateString = this.claim.WarrantyEndDate;
                    warrantyEndDateString = new Date(warrantyEndDateString).toUTCString();
                    warrantyEndDate = new Date(warrantyEndDateString);
                }
                if (labor.Sublet == true) {
                    labor.PreAuth = true;
                    return;
                }
                if ((warrantyEndDateString != oldestDate) && (warrantyEndDate != undefined) && (dateNow > warrantyEndDate)) {
                    labor.PreAuth = true;
                    return;
                }
                if (labor.DealerSubmittedHours > (labor.AllowedHours * labor.Quantity)) {
                    labor.PreAuth = true;
                    return;
                }
                if (fromFlatRateManual == true && flatRateManualValue == true) {
                    labor.PreAuth = true;
                    labor.PreAuthFlatRateManualFlag = true;
                    return;
                }
                if (labor.PreAuthFlatRateManualFlag == true) {
                    labor.PreAuth = true;
                    return;
                }
                if (this.loginService.selectedDealer.ServiceCenter) {
                    labor.PreAuth = true;
                    return;
                }
                labor.PreAuth = false;
            };
            ClaimEditController.prototype.setLaborInProgress = function (claim, labor) {
                if (claim.ClaimStatus.toLowerCase() == "needs review") {
                    claim.LaborInProgress = true;
                    return;
                }
                claim.LaborInProgress = false;
            };
            ClaimEditController.prototype.setPartInProgress = function (claim, part) {
                if (claim.ClaimStatus.toLowerCase() == "needs review") {
                    claim.PartInProgress = true;
                    return;
                }
                claim.PartInProgress = false;
            };
            ClaimEditController.prototype.AfterRemoveEvent = function () {
                var vm = this;
                for (var i = 0; i < vm.claim.Labor.length; i++) {
                    if (vm.claim.Labor[i].IsDeleted != true) {
                        vm.setLaborInProgress(vm.claim, vm.claim.Labor[i]);
                        if (vm.claim.LaborInProgress == true) {
                            return;
                        }
                        for (var j = 0; j < vm.claim.Labor[i].Parts.length; j++) {
                            if (vm.claim.Labor[i].Parts[j].IsDeleted != true) {
                                vm.setPartInProgress(vm.claim, vm.claim.Labor[i].Parts[j]);
                                if (vm.claim.PartInProgress == true) {
                                    return;
                                }
                            }
                        }
                    }
                }
                vm.claim.PartInProgress = false;
                vm.claim.LaborInProgress = false;
            };
            ClaimEditController.prototype.save = function (event, acknowledge) {
                var _this = this;
                if (acknowledge === void 0) { acknowledge = false; }
                var vm = this;
                vm.SubmitForPaymentClicked = false;
                vm.SubmitForProcessingClicked = false;
                vm.SubmitClicked = false;
                vm.partLineError = "";
                vm.laborLineError = "";
                vm.laborLineSerialError = "";
                vm.setPreAuthForOverAllowedHours(vm.claim);
                if (vm.claim.VIN.length == 0 || vm.claimform.$invalid || !vm.vinValid || vm.claim.Locked || !vm.DealerAddress) {
                    if (vm.claim.VIN.length == 0) {
                        vm.vinValid = false;
                    }
                    if (this.DealerAddress)
                        if (vm.claimform.$invalid) {
                            var errorMessages = vm.claimform.$error;
                            if (errorMessages.required) {
                                errorMessages.required.forEach(function (error) {
                                    if (error.$name.indexOf("flatRateCodeDescription_") != -1) {
                                        vm.laborLineError = "Cannot save draft because: Flat Rate Code field is blank.";
                                    }
                                    if (error.$name.indexOf("flatratecode") != -1) {
                                        vm.laborLineError = "Invalid Flat Rate Code.";
                                    }
                                    if (error.$name.indexOf("laborModelNumber_") != -1) {
                                        vm.laborLineError += "Model field is required.";
                                    }
                                    if (error.$name.indexOf("laborSerial_") != -1) {
                                        vm.laborLineSerialError += "Serial field is required. \n";
                                    }
                                    if (error.$name.indexOf("partDescription_") != -1) {
                                        vm.partLineError = "Invalid Part. Part lines cannot have a blank description.";
                                    }
                                });
                            }
                        }
                    if (event === "submitpayment") {
                        vm.SubmitForPaymentClicked = true;
                    }
                    else if (event === "submit") {
                        vm.SubmitForProcessingClicked = true;
                    }
                    else if (event == "Draft") {
                        vm.SubmitClicked = true;
                    }
                    this.controllerReady = true;
                    return;
                }
                if (event === "submit") {
                    vm.SubmitForProcessingClicked = true;
                    if (!((vm.claim.ClaimStatus == 'Pre Auth' && vm.claim.FrPortalLock)
                        || vm.claim.ClaimStatus == 'Needs Review'
                        || vm.claim.ClaimStatus == 'Draft'
                        || vm.claim.ClaimStatus == 'Authorized')
                        || !vm.newAuthClaimLines()) {
                        this.saveMessage = "";
                        return;
                    }
                    if (vm.vinIsMotorized && (vm.claim.Mileage == null || vm.claim.Mileage == 0)) {
                        vm.InvalidMileage = true;
                        this.saveMessage = "";
                        return;
                    }
                    else {
                        vm.InvalidMileage = false;
                    }
                    if (!vm.claimform.$invalid && vm.claim.Labor.length > 0 && vm.validateSublet() && (vm.vinValid != null && vm.vinValid)) {
                        this.saveMessage = "Submiting claim..";
                        if (this.claim.RepairStartDate == null) {
                            this.claim.RepairStartDate = new Date();
                        }
                        this.submitlogic(event, this.claim);
                    }
                    else if (vm.vinValid == null || !vm.vinValid) {
                        this.saveMessage = "Invalid VIN";
                        this.controllerReady = true;
                        return;
                    }
                    else {
                        this.controllerReady = true;
                        return;
                    }
                }
                else if (event === "submitpayment") {
                    vm.SubmitForPaymentClicked = true;
                    if (vm.laborLinesCount() == 0 || vm.containsNewPartLines() || (vm.statusRule && vm.statusRule.ClaimHeaderLockSubmitPayment(vm.claim))) {
                        this.saveMessage = "";
                        return;
                    }
                    else {
                        this.saveMessage = "Submitting claim..";
                        this.claim.RepairEndDate = new Date();
                    }
                }
                else if (event == "Draft") {
                    vm.SubmitClicked = true;
                }
                else if (event === "cancel") {
                    this.saveMessage = "Cancelling claim..";
                    this.submitlogic(event, this.claim);
                }
                else {
                    this.saveMessage = "Saving claim..";
                }
                if (event == "submit" || event == "submitpayment") {
                    if (vm.vinIsMotorized && vm.claim.Mileage == null) {
                        return;
                    }
                    vm.claim.FrPortalLock = false;
                    if (!acknowledge) {
                        if (vm.laborLinesCount() == 0 || vm.containsNewPartLines() || (event == "submitpayment" && vm.statusRule && vm.statusRule.ClaimHeaderLockSubmitPayment(vm.claim))) {
                        }
                        else {
                            if (vm.hasUnacknowledgedDeniedLines()) {
                                this.saveMessage = "";
                                return;
                            }
                            else {
                                acknowledge = true;
                            }
                        }
                    }
                }
                for (var i = 0; i < vm.claim.Labor.length; i++) {
                    var labor = vm.claim.Labor[i];
                    if (labor.Parts) {
                        for (var c = 0; c < labor.Parts.length; c++) {
                            var part = labor.Parts[c];
                            if (part.SubmittedFreight) {
                                part.SubmittedFreight = Number(part.SubmittedFreight.toString().replace('$', '').replace(',', ''));
                            }
                            if (part.CrateCharge) {
                                part.CrateCharge = Number(part.CrateCharge.toString().replace('$', '').replace(',', ''));
                            }
                            if (part.SubmittedPartCost) {
                                part.SubmittedPartCost = Number(part.SubmittedPartCost.toString().replace('$', '').replace(',', ''));
                            }
                            if (part.CanadianBrokerage) {
                                part.CanadianBrokerage = Number(part.CanadianBrokerage.toString().replace('$', '').replace(',', ''));
                            }
                        }
                    }
                }
                this.showSaveMessage = !acknowledge;
                this.controllerReady = acknowledge;
                this.claim.LaborRate = this.laborRate;
                if (this.DealerAddress) {
                    vm.claim.DealerAddress = vm.DealerAddress.FullAddress;
                    vm.claim.DealerAddressRecID = vm.DealerAddress.DealerAddressRecID;
                }
                if (this.isNew) {
                    this.claim.CreatedBy = this.loginService.UserInfo.Username;
                    this.claimService.addClaim(this.claim, this.SubmitForProcessingClicked, this.SubmitForPaymentClicked)
                        .then(function (claimNumber) {
                        _this.claim.ClaimNumber = claimNumber;
                        if (event === "submit") {
                            _this.saveMessage = "";
                        }
                        else if (event === "cancel") {
                            _this.saveMessage = "Claim cancelled.";
                        }
                        else {
                            _this.saveMessage = "";
                        }
                        _this.controllerReady = true;
                        if (_this.rootScope.Claims) {
                            _this.rootScope.Claims.ForceExpire();
                        }
                        _this.claimform.$setPristine();
                        vm.reloadClaim(claimNumber);
                    })["catch"](function (error) {
                        _this.controllerReady = true;
                        _this.saveMessage = "Error.";
                    });
                }
                else {
                    this.claimService.updateClaim(this.claim, this.SubmitForProcessingClicked, this.SubmitForPaymentClicked)
                        .then(function (claim) {
                        _this.claim = claim;
                        if (event === "submit") {
                            _this.saveMessage = "";
                        }
                        else if (event === "cancel") {
                            _this.saveMessage = "Claim cancelled.";
                        }
                        else {
                            _this.saveMessage = "";
                        }
                        _this.controllerReady = true;
                        if (_this.rootScope.Claims) {
                            _this.rootScope.Claims.ForceExpire();
                        }
                        _this.claimService.lockClaimToggle(vm.claimNumber, true)
                            .then(function (data) {
                            _this.claimform.$setPristine();
                            _this.isClaimLockedByUser = false;
                            vm.reloadClaim(claim.ClaimNumber);
                        });
                    })["catch"](function (error) {
                        _this.controllerReady = true;
                        _this.saveMessage = "Error.";
                    });
                }
            };
            ClaimEditController.prototype.deleteClaim = function (claimNumber) {
                var vm = this;
                vex.dialog.confirm({
                    message: "Are you sure you want to delete this claim?",
                    callback: function (value) {
                        var _this = this;
                        if (value) {
                            vm.saveMessage = "Deleting draft claim...";
                            vm.showSaveMessage = true;
                            vm.controllerReady = false;
                            vm.claimService.deleteClaim(claimNumber).then(function (claim) { vm.$state.go('claims'); })["catch"](function (error) {
                                _this.controllerReady = true;
                                _this.saveMessage = "Error.";
                            });
                        }
                        ;
                    }
                });
            };
            ClaimEditController.prototype.openDatePicker = function ($event, control) {
                $event.preventDefault();
                $event.stopPropagation();
                if (control === "processdate") {
                    this.processdateopen = true;
                }
                if (control === "repairstartdate") {
                    this.repairstartdateopen = true;
                }
                if (control === "repairenddate") {
                    this.repairenddateopen = true;
                }
            };
            ClaimEditController.prototype.vinSearch = function () {
                var vm = this;
                if (vm.claim.VIN.length != 17) {
                    var settings = {
                        controller: "app.unit.UnitModalController as vm",
                        templateUrl: "app/unit/unit.modal.html",
                        keyboard: false,
                        backdrop: "static",
                        size: "xl",
                        resolve: {
                            search: function () { return vm.claim.VIN; },
                            userDealers: function () { return null; },
                            allUnitsSearch: function () { return true; },
                            includeLegacy: function () { return true; }
                        }
                    };
                    var modalInstance = this.$modal.open(settings);
                    modalInstance.result.then(function (resultdata) {
                        vm.claim.VIN = resultdata.VIN;
                        vm.updateVINinfo();
                        vm.vinValidated = true;
                    });
                }
            };
            ClaimEditController.prototype.flatrateSearch = function (labor, sublabor) {
                var vm = this;
                vm.claimform.$setDirty();
                var settings = {
                    controller: "app.flatrate.FlatRateModalController as vm",
                    templateUrl: "app/flatrate/flatrate.modal.html",
                    keyboard: false,
                    backdrop: "static",
                    size: "xl",
                    resolve: {
                        flatRateGroup: function () { return vm.flatRateGroup; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
                modalInstance.result.then(function (resultdata) {
                    if (sublabor) {
                        if (sublabor.FlatRateCode != resultdata) {
                            sublabor.LineStatus = "Draft";
                        }
                        sublabor.FlatRateCode = resultdata;
                        vm.flatrateCodeChanged(labor, sublabor);
                        vm.updateLaborDescription(sublabor, false);
                    }
                    else {
                        if (labor.FlatRateCode != resultdata) {
                            labor.LineStatus = "Draft";
                        }
                        vm.laborFRCodeChange(labor);
                        labor.FlatRateCode = resultdata;
                        vm.flatrateCodeChanged(labor, sublabor);
                        vm.updateLaborDescription(labor, true);
                    }
                });
                vm.setLaborInProgress(vm.claim, labor);
            };
            ClaimEditController.prototype.partSearch = function (labor, line) {
                var vm = this;
                if (this.rootScope.PartsCatalog) {
                    this.rootScope.PartsCatalog = null;
                }
                var settings = {
                    controller: "app.partcatalog.PartCatalogModalController as vm",
                    templateUrl: "app/partcatalog/partcatalog.html",
                    keyboard: false,
                    backdrop: true,
                    size: "xl",
                    resolve: {
                        modal: function () { return true; },
                        division: function () { return vm.claim.Division; },
                        make: function () { return vm.claim.MakeDescription; },
                        location: function () { return vm.claim.Location; },
                        site: function () { return vm.claim.Location; },
                        modelCode: function () { return vm.claim.ModelDescription; },
                        isVIN: function () { return true; },
                        modelYearLocked: function () { return false; },
                        modelCodeLocked: function () { return false; },
                        searchText: function () { return line.PartNumber; },
                        subBrand: function () { return vm.subBrand; },
                        filter: function () { return null; },
                        modelYear: function () { return vm.claim.Year; },
                        typeToAdd: function () { return "Claim"; },
                        vin: function () { return vm.claim.VIN; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
                modalInstance.result.then(function (resultdata) {
                    line.PartNumber = resultdata[0].PartNumber;
                    line.NoCharge = resultdata[0].NoCharge;
                    vm.updatePartDescription(line);
                    if (resultdata.length > 1) {
                        for (var index = 1; index < resultdata.length; index++) {
                            var part = new app.services.IClaimPart();
                            part.LineStatus = "Draft";
                            part.ClaimLaborLineNumber = line ? line.ClaimLaborLineNumber : null;
                            part.ClaimPartsLineNumber = vm.getPartLineNumber(labor).toString();
                            part.SubmittedQty = 1;
                            part.PartNumber = resultdata[index].PartNumber;
                            part.NoCharge = resultdata[index].NoCharge;
                            part.IsNew = true;
                            labor.Parts.push(part);
                            vm.updatePartDescription(part);
                        }
                    }
                    vm.claimChanged();
                });
            };
            ClaimEditController.prototype.addPart = function (item) {
                var vm = this;
                vm.claimform.$setDirty();
                vm.newPartLineAdded = true;
                vm.newLaborLineAdded = false;
                this.isEditLoad = true;
                if (!item.Parts) {
                    item.Parts = new Array();
                }
                var part = new app.services.IClaimPart();
                part.LineStatus = "Draft";
                part.ClaimLaborLineNumber = item.ClaimLaborLineNumber;
                part.ClaimPartsLineNumber = this.getPartLineNumber(item).toString();
                part.SubmittedQty = 1;
                part.IsNew = true;
                part.Files = [];
                part.Attachments = [];
                part.ShowPrintButtons = false;
                item.Parts.push(part);
                this.updatePartDescription(part);
                this.setPartInProgress(vm.claim, part);
                this.claimChanged();
            };
            ClaimEditController.prototype.copyPartOrderLines = function (targetClaimLabor) {
                var vm = this;
                vm.claimform.$setDirty();
                var settings = {
                    controller: "app.partorder.PartOrderCopyController as vm",
                    templateUrl: "/app/partorder/partorder.copy.html",
                    size: "lg",
                    keyboard: false,
                    backdrop: "static",
                    resolve: {
                        targetClaim: function () {
                            return vm.claim;
                        },
                        targetClaimLabor: function () {
                            return targetClaimLabor;
                        }
                    }
                };
                var modalInstance = this.$modal.open(settings);
                modalInstance.result.then(function (resultdata) {
                    if (resultdata) {
                        if (resultdata.Parts.length > 0) {
                            targetClaimLabor = resultdata;
                            targetClaimLabor.Parts.forEach(function (obj) {
                                obj.PartReady = true;
                                vm.updatePartTotal(obj);
                                vm.claimChanged();
                            });
                        }
                    }
                });
            };
            ClaimEditController.prototype.removePart = function (labor, part) {
                part.IsDeleted = true;
                this.AfterRemoveEvent();
                this.claimChanged();
            };
            ClaimEditController.prototype.addLabor = function () {
                var vm = this;
                vm.claimform.$setDirty();
                vm.newPartLineAdded = false;
                vm.newLaborLineAdded = true;
                this.isEditLoad = true;
                var labor = new app.services.IClaimLabor();
                labor.ClaimLaborLineNumber = this.getLaborLineNumber().toString();
                labor.Quantity = 1;
                labor.Parts = new Array();
                labor.SubLabor = new Array();
                labor.Collapsed = false;
                labor.LineStatus = "Draft";
                labor.IsNew = true;
                labor.FlatRateCode = "";
                labor.Description = "";
                labor.Files = [];
                if (!this.flatRateGroup)
                    labor.flatrateError = "Invalid flat rate code. Selected VIN is not assigned to a flat rate group. Please contact Forest River for assistance.";
                this.openLaborNotes(labor, true);
                this.setLaborInProgress(vm.claim, labor);
                this.claimChanged();
            };
            ClaimEditController.prototype.addSubLabor = function (labor) {
                this.isEditLoad = true;
                if (!labor.SubLabor) {
                    labor.SubLabor = new Array();
                }
                var sublabor = new app.services.IClaimLabor();
                sublabor.Quantity = 1;
                sublabor.ClaimLaborLineNumber = this.getSubLaborLineNumber(labor).toString();
                sublabor.Parts = new Array();
                sublabor.SubLabor = new Array();
                sublabor.IsNew = true;
                sublabor.LineStatus = "Draft";
                labor.SubLabor.push(sublabor);
                this.claimChanged();
            };
            ClaimEditController.prototype.removeLabor = function (item) {
                item.IsDeleted = true;
                this.AfterRemoveEvent();
                this.claimChanged();
            };
            ClaimEditController.prototype.removeSubLabor = function (labor, sublabor) {
                sublabor.IsDeleted = true;
                this.claimChanged();
            };
            ClaimEditController.prototype.updateLaborDescription = function (item, codechanged) {
                var _this = this;
                if (codechanged === void 0) { codechanged = false; }
                var promdef = this.$q.defer();
                var query = new app.services.SearchQuery();
                var filter = new app.services.FlatRateSearchQueryFilter();
                filter.FlatRateGroup = this.flatRateGroup;
                filter.OperationCodeId = item.FlatRateCode;
                query.Filter = filter;
                query.PageSize = 1;
                query.CurrentPage = 1;
                this.flatRateManualService.searchAdvanced(query).then(function (result) {
                    if (result.Results.length > 0) {
                        if (item.IsNew || codechanged) {
                            item.DealerSubmittedHours = result.Results[0].AllowedHours;
                            item.IsNew = true;
                            item.LineStatus = "Draft";
                        }
                        item.ItemReturnRequiredUS = result.Results[0].ItemReturnRequiredUS;
                        item.ItemReturnRequiredCanada = result.Results[0].ItemReturnRequiredCanada;
                        item.ItemReturnRequired = (item.ItemReturnRequiredCanada || item.ItemReturnRequiredUS) ? true : false;
                        item.PhotoRequired = result.Results[0].PhotoRequired;
                        item.PhotoRequiredCAN = result.Results[0].PhotoRequiredCAN;
                        _this.setPreAuth(item, true, result.Results[0].RequiresPreAuth);
                        item.flatRateHasNotes = result.Results[0].Notes;
                        item.Description = result.Results[0].Description;
                        item.AllowedHours = result.Results[0].AllowedHours;
                        item.SerialNumberRequired = result.Results[0].SerialNumberRequired;
                        item.ModelNumberRequired = result.Results[0].ModelNumberRequired;
                        item.flatRateIsInValid = false;
                        promdef.resolve(result.Results[0]);
                        item.DisplayDescription = result.Results[0].DisplayDescription;
                        if (item.ItemReturnRequired) {
                            _this.hasLaborLinesRequiringReturns = true;
                        }
                    }
                    else {
                        item.Description = "";
                        item.PhotoRequired = false;
                        item.PhotoRequiredCAN = false;
                        item.ItemReturnRequiredUS = false;
                        item.ItemReturnRequiredCanada = false;
                        item.AllowedHours = 0;
                        _this.setPreAuth(item);
                        item.SerialNumberRequired = false;
                        item.ModelNumberRequired = false;
                        item.flatRateIsInValid = true;
                        item.DisplayDescription = "";
                        promdef.reject();
                    }
                });
                return promdef.promise;
            };
            ClaimEditController.prototype.flatRateCodeIsValid = function (item, value) {
                var _this = this;
                var vm = this;
                var prom = this.$q.defer();
                var origRetReq = item.ItemReturnRequired;
                if (vm.vinValid && (value == '' || !vm.flatRateGroup)) {
                    prom.reject();
                }
                else {
                    if (item.FlatRateCode != value) {
                        item.LineStatus = "Draft";
                    }
                    item.FlatRateCode = value;
                    this.updateLaborDescription(item, value != item.FlatRateCode).then(function (flatrate) {
                        if (flatrate) {
                            if (flatrate.InternalUseOnly && (item.IsNew || item.FlatRateCode != item.OrigFlatRateCode)) {
                                item.flatrateError = "This code is internal use only.";
                                item.InternalUseOnly = true;
                                prom.reject();
                            }
                            else {
                                item.flatrateError = "";
                                prom.resolve();
                            }
                        }
                        else {
                            item.flatrateError = "Invalid flat rate code. " + (vm.flatRateGroup == undefined || vm.flatRateGroup ? "Please verify this code is in the VIN's flat rate group. This VIN's Group is " + vm.flatRateGroup : "Selected VIN is not assigned to a flat rate group. Please contact Forest River for assistance.");
                            prom.reject();
                        }
                        _this.updateSubmittedLaborAmount(item);
                    }, function (error) {
                        item.flatrateError = "Invalid flat rate code. " + (vm.flatRateGroup == undefined || vm.flatRateGroup ? "Please verify this code is in the VIN's flat rate group. This VIN's Group is " + vm.flatRateGroup : "Selected VIN is not assigned to a flat rate group. Please contact Forest River for assistance.");
                        prom.reject();
                    });
                }
                return prom.promise;
            };
            ClaimEditController.prototype.laborFRCodeChange = function (labor) {
                var vm = this;
                if (!labor.OrigFlatRateCode &&
                    (labor.OrigFlatRateCode != labor.FlatRateCode)) {
                    labor.OrigFlatRateCode = labor.FlatRateCode;
                    labor.OrigReturnRequired = labor.ItemReturnRequired;
                }
            };
            ClaimEditController.prototype.isItemRequiredChange = function (labor) {
                var vm = this;
                if ((labor.OrigFlatRateCode && (labor.OrigFlatRateCode != labor.FlatRateCode))
                    && (labor.OrigReturnRequired != labor.ItemReturnRequired)) {
                    return true;
                }
                return false;
            };
            ClaimEditController.prototype.partLinesCount = function (labor) {
                var count = 0;
                for (var index = 0; index < labor.Parts.length; index++) {
                    if (!labor.Parts[index].IsDeleted) {
                        count += 1;
                    }
                }
                return count;
            };
            ClaimEditController.prototype.flatrateCodeChanged = function (labor, sublabor) {
                var _this = this;
                var vm = this;
                if (sublabor) {
                    this.updateLaborDescription(sublabor, true).then(function (flatrate) {
                        if (flatrate) {
                            sublabor.flatrateError = "";
                        }
                        else {
                            sublabor.flatrateError = "Invalid flat rate code." + (vm.flatRateGroup == undefined || vm.flatRateGroup ? "Please verify this code is in the VIN's flat rate group. This VIN's Group is " + vm.flatRateGroup : "Selected VIN is not assigned to a flat rate group. Please contact Forest River for assistance.");
                        }
                        _this.updateSubmittedLaborAmount(labor, sublabor);
                    })["catch"](function (error) {
                        sublabor.flatrateError = "Invalid flat rate code." + (vm.flatRateGroup == undefined || vm.flatRateGroup ? "Please verify this code is in the VIN's flat rate group. This VIN's Group is " + vm.flatRateGroup : "Selected VIN is not assigned to a flat rate group. Please contact Forest River for assistance.");
                    });
                }
                else {
                    this.updateLaborDescription(labor, true).then(function (flatrate) {
                        if (flatrate) {
                            labor.flatrateError = "";
                        }
                        else {
                            labor.flatrateError = "Invalid flat rate code." + (vm.flatRateGroup == undefined || vm.flatRateGroup ? "Please verify this code is in the VIN's flat rate group. This VIN's Group is " + vm.flatRateGroup : "Selected VIN is not assigned to a flat rate group. Please contact Forest River for assistance.");
                        }
                        _this.updateSubmittedLaborAmount(labor);
                    })["catch"](function (error) {
                        labor.flatrateError = "Invalid flat rate code." + (vm.flatRateGroup == undefined || vm.flatRateGroup ? "Please verify this code is in the VIN's flat rate group. This VIN's Group is " + vm.flatRateGroup : "Selected VIN is not assigned to a flat rate group. Please contact Forest River for assistance.");
                    });
                }
            };
            ClaimEditController.prototype.searchParts = function (search) {
                return this.partService.search(search).then(function (result) {
                    return result.Results;
                });
            };
            ClaimEditController.prototype.updatePartDescription = function (item) {
                var vm = this;
                if (vm.partValidateWaiting.indexOf(item.PartNumber + ",") < 0) {
                    setTimeout(function () {
                        vm.GetPartFromCatalog(item);
                    }, 500);
                    vm.partValidateWaiting += item.PartNumber + ",";
                }
                ;
                this.setPartInProgress(this.claim, item);
            };
            ClaimEditController.prototype.GetPartFromCatalog = function (item) {
                var _this = this;
                var vm = this;
                if (item.PartNumber && vm.claim.MakeDescription) {
                    this.partService.getValidPartForVIN(item.PartNumber, vm.claim.MakeDescription, vm.subBrandDescription, vm.claim.Division, vm.claim.VIN, vm.claim.Site).then(function (result) {
                        if (result) {
                            var partLines = [].concat.apply([], vm.claim.Labor.map(function (x) { return x.Parts; })).filter(function (x) { return x.PartNumber == item.PartNumber; });
                            partLines.forEach(function (x) {
                                x.Valid = true;
                                if (vm.manualpartitemcode) {
                                    x.IsManualPart = (x.PartNumber.toLowerCase() === vm.manualpartitemcode.toLowerCase());
                                }
                                if (!x.IsManualPart) {
                                    x.Description = result.Description;
                                    if (x.NoCharge) {
                                        result.ListPrice = 0;
                                    }
                                    else {
                                        if (x.IsNew || (x.OldPartNumber != x.PartNumber)) {
                                            x.PartCost = result.ListPrice;
                                            if (!x.SubmittedPartCost || x.SubmittedPartCost <= 0) {
                                                x.SubmittedPartCost = result.ListPrice;
                                            }
                                        }
                                    }
                                }
                                item.PartReady = true;
                            });
                        }
                        else {
                            item.Description = "";
                            item.Valid = false;
                        }
                        _this.updatePartTotal(item);
                    });
                }
                vm.partValidateWaiting = vm.partValidateWaiting.replace(item.PartNumber + ",", "");
            };
            ClaimEditController.prototype.updateSubmittedLaborAmount = function (labor, sublabor) {
                labor.DealerSubmittedHours = parseFloat(labor.DealerSubmittedHours.toFixed(2));
                if (!labor.Sublet) {
                    labor.SubmittedLaborAmount = this.laborRate * labor.DealerSubmittedHours;
                    if (sublabor) {
                        sublabor.SubmittedLaborAmount = this.laborRate * sublabor.DealerSubmittedHours;
                    }
                    this.setPreAuth(labor);
                }
                labor.SubmittedLaborAmount = parseFloat(Number(labor.SubmittedLaborAmount.toString().replace('$', '').replace(',', '')).toFixed(2));
                this.updateCalculatedHours(labor);
                this.setLaborInProgress(this.claim, labor);
            };
            ClaimEditController.prototype.onSubmittedLaborAmountChange = function (labor) {
                if (labor.SubmittedLaborAmount < 0) {
                    vex.dialog.alert("Labor invoice amount submitted must be a positive number. Resetting to 0.");
                    labor.SubmittedLaborAmount = 0.00;
                    return;
                }
                labor.SubmittedLaborAmount = parseFloat(Number(labor.SubmittedLaborAmount.toString().replace('$', '').replace(',', '')).toFixed(2));
                this.setLaborInProgress(this.claim, labor);
            };
            ClaimEditController.prototype.subletChanged = function (item) {
                var vm = this;
                if (item.Sublet) {
                    item.Sublet = true;
                    vm.updateSubmittedLaborAmount(item);
                    vm.submitProcessCtrl();
                }
                else {
                    vm.updateLaborDescription(item, true);
                    vm.updateSubmittedLaborAmount(item);
                    vm.submitProcessCtrl();
                }
                vm.setPreAuth(item);
                vm.setLaborInProgress(vm.claim, item);
            };
            ClaimEditController.prototype.updatePartTotal = function (item) {
                var qty = 0;
                var partprice = 0;
                var freight = 0;
                var submittedcost = 0;
                var canadianBrokerage = 0;
                var crateCharge = 0;
                if (item.SubmittedQty) {
                    qty = Number(item.SubmittedQty);
                }
                if (item.PartCost) {
                    partprice = Number(item.PartCost);
                }
                if (item.SubmittedFreight) {
                    freight = parseFloat(Number(item.SubmittedFreight.toString().replace('$', '').replace(',', '')).toFixed(2));
                    item.SubmittedFreight = freight;
                }
                else {
                    item.SubmittedFreight = 0;
                }
                if (item.CanadianBrokerage) {
                    canadianBrokerage = parseFloat(Number(item.CanadianBrokerage.toString().replace('$', '').replace(',', '')).toFixed(2));
                    item.CanadianBrokerage = canadianBrokerage;
                }
                else {
                    item.CanadianBrokerage = 0;
                }
                if (item.CrateCharge) {
                    crateCharge = parseFloat(Number(item.CrateCharge.toString().replace('$', '').replace(',', '')).toFixed(2));
                    item.CrateCharge = crateCharge;
                }
                else {
                    item.CrateCharge = 0;
                }
                if (item.SubmittedPartCost) {
                    submittedcost = Number(item.SubmittedPartCost.toString().replace('$', '').replace(',', ''));
                }
                else {
                    item.SubmittedPartCost = 0;
                }
                submittedcost = submittedcost ? submittedcost : partprice;
                if (item.IsManualPart)
                    item.MarkupPercent = 0;
                else
                    item.MarkupPercent = this.markupPercent;
                item.SubmittedPartTotal = parseFloat(((((qty * submittedcost * (1 + (item.MarkupPercent / 100))) * 100) / 100) + freight + crateCharge + canadianBrokerage).toFixed(2));
                this.updateTotals();
                this.setPartInProgress(this.claim, item);
                this.claimChanged();
            };
            ClaimEditController.prototype.partFreightChange = function (item) {
                if (item.SubmittedFreight) {
                    item.SubmittedFreight = parseFloat(Number(item.SubmittedFreight.toString().replace('$', '').replace(',', '')).toFixed(2));
                }
                this.updatePartTotal(item);
            };
            ClaimEditController.prototype.partCrateChange = function (item) {
                if (item.CrateCharge) {
                    item.CrateCharge = parseFloat(Number(item.CrateCharge.toString().replace('$', '').replace(',', '')).toFixed(2));
                }
                this.updatePartTotal(item);
            };
            ClaimEditController.prototype.getLaborLineNumber = function () {
                var arrayLength = this.claim.Labor.length;
                var highestnum = 0;
                for (var index = 0; index < arrayLength; index++) {
                    if (!this.claim.Labor[index].IsDeleted) {
                        var linenum = parseInt(this.claim.Labor[index].ClaimLaborLineNumber, null);
                        if (linenum > highestnum) {
                            highestnum = linenum;
                        }
                    }
                }
                return (highestnum + 1);
            };
            ClaimEditController.prototype.getSubLaborLineNumber = function (labor) {
                var arrayLength = labor.SubLabor.length;
                var highestnum = 0;
                for (var index = 0; index < arrayLength; index++) {
                    var linenum = parseInt(labor.SubLabor[index].ClaimLaborLineNumber, null);
                    if (linenum > highestnum) {
                        highestnum = linenum;
                    }
                }
                return (highestnum + 1);
            };
            ClaimEditController.prototype.getPartLineNumber = function (item) {
                var arrayLength = item.Parts.length;
                var highestnum = 0;
                for (var index = 0; index < arrayLength; index++) {
                    var linenum = parseInt(item.Parts[index].ClaimPartsLineNumber, null);
                    if (linenum > highestnum) {
                        highestnum = linenum;
                    }
                }
                return (highestnum + 1);
            };
            ClaimEditController.prototype.isFirstRow = function (item) {
                var index = this.claim.Labor.indexOf(item);
                if (index === 0) {
                    return true;
                }
                return false;
            };
            ClaimEditController.prototype.addLaborNotes = function (labor, isNew) {
                var vm = this;
                vm.openLaborNotesModal(function () {
                    vm.save(null, false);
                }, labor);
            };
            ClaimEditController.prototype.openLaborNotesModal = function (onSuccess, labor, isNew) {
                var _this = this;
                var me = this;
                var vm = this;
                var preValue = labor.Complaint;
                var settings = {
                    controller: "app.claims.ClaimsNotesController as vm",
                    templateUrl: "/app/claims/claims.notes.html",
                    resolve: {
                        items: function () {
                            return labor;
                        },
                        isReadOnly: function () {
                            if ((me.claim.ClaimStatus.toLowerCase() == "draft" || me.claim.ClaimStatus.toLowerCase() == "authorized")
                                && (labor.LineStatus.toLowerCase() != 'feedback' && labor.LineStatus.toLowerCase() != 'denied') && !vm.claim.Locked) {
                                return false;
                            }
                            return true;
                        },
                        isNew: function () {
                            return isNew;
                        }
                    },
                    size: "lg",
                    keyboard: false,
                    backdrop: "static"
                };
                var modalInstance = this.$modal.open(settings);
                modalInstance.result.then(function (resultdata) {
                    if (resultdata) {
                        if (preValue != resultdata.Complaint) {
                            me.claimform.$setDirty();
                            onSuccess();
                        }
                        labor.Complaint = resultdata.Complaint;
                        labor.Cause = resultdata.Cause;
                        labor.Correction = resultdata.Correction;
                        if (vm.claim.Labor.indexOf(resultdata) < 0) {
                            vm.claim.Labor.push(resultdata);
                        }
                    }
                })["finally"](function () { _this.AfterRemoveEvent(); });
            };
            ClaimEditController.prototype.openLaborNotes = function (labor, isNew) {
                var _this = this;
                var me = this;
                var vm = this;
                var preValue = labor.Complaint;
                var settings = {
                    controller: "app.claims.ClaimsNotesController as vm",
                    templateUrl: "/app/claims/claims.notes.html",
                    resolve: {
                        items: function () {
                            return labor;
                        },
                        isReadOnly: function () {
                            if ((me.claim.ClaimStatus.toLowerCase() == "draft" || me.claim.ClaimStatus.toLowerCase() == "authorized")
                                && (labor.LineStatus.toLowerCase() != 'feedback' && labor.LineStatus.toLowerCase() != 'denied') && !vm.claim.Locked) {
                                return false;
                            }
                            return true;
                        },
                        isNew: function () {
                            return isNew;
                        }
                    },
                    size: "lg",
                    keyboard: false,
                    backdrop: "static"
                };
                var modalInstance = this.$modal.open(settings);
                modalInstance.result.then(function (resultdata) {
                    if (resultdata) {
                        if (preValue != resultdata.Complaint)
                            me.claimform.$setDirty();
                        labor.Complaint = resultdata.Complaint;
                        labor.Cause = resultdata.Cause;
                        labor.Correction = resultdata.Correction;
                        if (vm.claim.Labor.indexOf(resultdata) < 0) {
                            vm.claim.Labor.push(resultdata);
                        }
                    }
                })["finally"](function () { _this.AfterRemoveEvent(); });
            };
            ClaimEditController.prototype.laborLinesCount = function () {
                var count = 0;
                for (var index = 0; index < this.claim.Labor.length; index++) {
                    if (!this.claim.Labor[index].IsDeleted) {
                        count += 1;
                    }
                }
                return count;
            };
            ClaimEditController.prototype.laborLineFilesCount = function (line) {
                return line.Files.length;
            };
            ClaimEditController.prototype.updateVINinfo = function () {
                var vm = this;
                vm.claim.WarrantyStartDate = null;
                vm.vinHasCampaigns = false;
                vm.claim.Make = null;
                vm.claim.Model = null;
                vm.claim.Year = null;
                vm.claim.Owner = null;
                vm.claim.WarrantyStartDate = null;
                vm.claim.WarrantyEndDate = null;
                return this.vinService.getVIN(vm.claim.VIN, true).then(function (data) {
                    if (data) {
                        vm.vinInfo = data;
                        vm.vinValidated = true;
                        vm.vinValid = true;
                        vm.vinHasAdvisories = data.HasAdvisories;
                        vm.vinHasCampaigns = data.HasCampaigns;
                        vm.vinIsMotorized = data.IsMotorized;
                        vm.claim.Make = data.Brand;
                        vm.claim.MakeDescription = data.BrandDescription;
                        vm.claim.Model = data.ModelCode;
                        vm.claim.ModelDescription = data.VINItemNumber;
                        vm.claim.Year = data.ModelYear;
                        vm.claim.Site = data.Site;
                        vm.claim.Location = data.LocationDescription;
                        vm.claim.Division = data.Division;
                        vm.claim.ChassisNumber = data.ChassisNumber;
                        vm.flatRateGroup = data.FlatRateGroup;
                        vm.manualpartitemcode = data.ManualPartItemCode;
                        vm.siteName = data.SiteDescription;
                        vm.subBrand = data.SubBrand;
                        vm.subBrandDescription = data.SubBrandDescription;
                        vm.setDangers();
                    }
                    else {
                        vm.flatRateGroup = null;
                        vm.vinValid = false;
                    }
                    vm.warrantyService.getWarranty(vm.claim.VIN).then(function (data) {
                        if (data) {
                            vm.claim.WarrantyStartDate = data.ValidFrom;
                            vm.claim.WarrantyEndDate = data.ValidTo;
                            vm.claim.Owner = (data.Ownership.Name);
                            var datenow = new Date();
                            if (datenow > data.ValidTo) {
                                vm.vinNotRegistered = true;
                            }
                            else {
                                vm.vinNotRegistered = false;
                            }
                            vm.setNotifications();
                        }
                        else {
                            vm.vinNotRegistered = true;
                        }
                    });
                    if (vm.vinHasCampaigns == true && !vm.hasDisplayedCampaign) {
                        vm.hasDisplayedCampaign = true;
                        vm.campaignService.showNotification(vm.claim.VIN);
                    }
                });
            };
            ClaimEditController.prototype.updateExistingVINinfo = function (data) {
                var vm = this;
                vm.claim.WarrantyStartDate = null;
                vm.vinHasCampaigns = false;
                vm.claim.Make = null;
                vm.claim.Model = null;
                vm.claim.Year = null;
                vm.claim.Owner = null;
                vm.claim.WarrantyStartDate = null;
                vm.claim.WarrantyEndDate = null;
                vm.vinInfo = data;
                vm.vinValidated = true;
                vm.vinValid = true;
                vm.vinHasAdvisories = data.HasAdvisories;
                vm.vinHasCampaigns = data.HasCampaigns;
                vm.vinIsMotorized = data.IsMotorized;
                vm.claim.Make = data.Brand;
                vm.claim.MakeDescription = data.BrandDescription;
                vm.claim.Model = data.ModelCode;
                vm.claim.ModelDescription = data.VINItemNumber;
                vm.claim.Year = data.ModelYear;
                vm.claim.Site = data.Site;
                vm.claim.Location = data.LocationDescription;
                vm.claim.Division = data.Division;
                vm.claim.ChassisNumber = data.ChassisNumber;
                vm.flatRateGroup = data.FlatRateGroup;
                vm.manualpartitemcode = data.ManualPartItemCode;
                vm.siteName = data.SiteDescription;
                vm.subBrand = data.SubBrand;
                vm.subBrandDescription = data.SubBrandDescription;
                if (vm.vinHasCampaigns == true && !vm.hasDisplayedCampaign) {
                    vm.hasDisplayedCampaign = true;
                    vm.campaignService.showNotification(vm.claim.VIN);
                }
                return this.warrantyService.getWarranty(vm.claim.VIN).then(function (data) {
                    if (data) {
                        vm.claim.WarrantyStartDate = data.ValidFrom;
                        vm.claim.WarrantyEndDate = data.ValidTo;
                        vm.claim.Owner = (data.Ownership.Name);
                        var datenow = new Date();
                        if (datenow > data.ValidTo) {
                            vm.vinNotRegistered = true;
                        }
                        else {
                            vm.vinNotRegistered = false;
                        }
                        vm.setNotifications();
                    }
                    else {
                        vm.vinNotRegistered = true;
                    }
                });
            };
            ClaimEditController.prototype.uploadPhoto = function (files, recordType) {
                var vm = this;
                var fileCount = files.length;
                var settings = {
                    controller: "app.image.ImageModalController as vm",
                    templateUrl: "app/image/image.modal.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'lg',
                    resolve: {
                        readonly: function () { return vm.claim.Locked; },
                        files: function () {
                            return files;
                        },
                        submittedDealerNumber: function () { return vm.claim.DealerNumber; },
                        submittedClaimOrPartNumber: function () { return vm.claim.ClaimNumber; },
                        submittedUploadType: function () { return recordType; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
                modalInstance.result.then(function (resultdata) {
                    if (fileCount != resultdata.length)
                        vm.claimform.$setDirty();
                    files = resultdata;
                });
            };
            ClaimEditController.prototype.updateCalculatedHours = function (line) {
                if (!line.Sublet) {
                    var calculatedhours = 0;
                    calculatedhours += line.DealerSubmittedHours;
                    if (line.SubLabor) {
                        for (var index = 0; index < line.SubLabor.length; index++) {
                            calculatedhours += line.SubLabor[index].DealerSubmittedHours;
                        }
                    }
                    line.DealerCalculatedHours = calculatedhours;
                    line.DealerCalculatedAmount = this.laborRate * calculatedhours;
                }
                this.updateTotals();
            };
            ClaimEditController.prototype.updateTotals = function () {
                var claim = this.claim;
                var submittedTotal = 0;
                var approvedTotal = 0;
                if (claim.Labor) {
                    for (var laborIndex = 0; laborIndex < claim.Labor.length; laborIndex++) {
                        submittedTotal += claim.Labor[laborIndex].SubmittedLaborAmount;
                        approvedTotal += claim.Labor[laborIndex].ApprovedAmount;
                        if (claim.Labor[laborIndex].Parts) {
                            for (var partIndex = 0; partIndex < claim.Labor[laborIndex].Parts.length; partIndex++) {
                                submittedTotal += claim.Labor[laborIndex].Parts[partIndex].SubmittedPartTotal;
                                approvedTotal += claim.Labor[laborIndex].Parts[partIndex].ApprovedPartTotal;
                            }
                        }
                        if (claim.Labor[laborIndex].SubLabor) {
                            for (var subLaborIndex = 0; subLaborIndex < claim.Labor[laborIndex].SubLabor.length; subLaborIndex++) {
                                submittedTotal += claim.Labor[laborIndex].SubLabor[subLaborIndex].SubmittedLaborAmount;
                                approvedTotal += claim.Labor[laborIndex].SubLabor[subLaborIndex].ApprovedAmount;
                            }
                        }
                    }
                }
                claim.ApprovedClaimTotal = approvedTotal;
                claim.SubmittedClaimTotal = submittedTotal;
            };
            ClaimEditController.prototype.toggleCollapse = function (labor) {
                if (labor.Collapsed === undefined) {
                    labor.Collapsed = true;
                }
                else {
                    labor.Collapsed = !labor.Collapsed;
                }
            };
            ClaimEditController.prototype.onBrokerageChange = function (part) {
                if (part.CanadianBrokerage) {
                    part.CanadianBrokerage = parseFloat(Number(part.CanadianBrokerage.toString().replace('$', '').replace(',', '')).toFixed(2));
                }
                this.updatePartTotal(part);
            };
            ClaimEditController.prototype.containsNewLaborLines = function () {
                var vm = this;
                if (vm.claim) {
                    for (var laborIndex = 0; laborIndex < vm.claim.Labor.length; laborIndex++) {
                        if (vm.claim.Labor[laborIndex].IsNew) {
                            return true;
                        }
                    }
                }
                return false;
            };
            ClaimEditController.prototype.containsNewPartLines = function () {
                var vm = this;
                if (vm.claim) {
                    for (var laborIndex = 0; laborIndex < vm.claim.Labor.length; laborIndex++) {
                        for (var partIndex = 0; partIndex < vm.claim.Labor[laborIndex].Parts.length; partIndex++) {
                            if (vm.claim.Labor[laborIndex].Parts[partIndex].IsNew && !vm.claim.Labor[laborIndex].Parts[partIndex].IsDeleted) {
                                return true;
                            }
                        }
                    }
                }
                return false;
            };
            ClaimEditController.prototype.uniqueFlatRateCode = function (labor, sublabor) {
                labor.flatrateError = "";
                if (sublabor == null) {
                    if (labor.SubLabor) {
                        for (var index = 0; index < labor.SubLabor.length; index++) {
                            if (labor.FlatRateCode == labor.SubLabor[index].FlatRateCode) {
                                labor.flatrateError = "Sub -Labor Flat Rate Code cannot be the same as the Labor Flat Rate Code.";
                                return false;
                            }
                        }
                    }
                    return true;
                }
                else {
                    if (labor) {
                        if (labor.FlatRateCode) {
                            if (labor.FlatRateCode == sublabor) {
                                labor.flatrateError = "Sub -Labor Flat Rate Code cannot be the same as the Labor Flat Rate Code.";
                                return false;
                            }
                        }
                    }
                    return true;
                }
            };
            ClaimEditController.prototype.splitClaim = function () {
                var vm = this;
                var settings = {
                    controller: "app.claims.SplitController as vm",
                    templateUrl: "app/claims/claims.split.modal.html",
                    keyboard: false,
                    backdrop: "static",
                    size: "xl",
                    resolve: {
                        targetClaim: function () {
                            return vm.claim;
                        },
                        targetLaborRate: function () {
                            return vm.laborRate;
                        }
                    }
                };
                var modalInstance = this.$modal.open(settings);
                modalInstance.result.then(function (resultdata) {
                    if (resultdata) {
                        resultdata.Labor.forEach(function (labor) {
                            vm.removeLabor(labor);
                        });
                        vm.claim.LaborRate = vm.laborRate;
                        vm.linkedClaims.push(resultdata.ClaimNumber);
                        vm.saveMessage = "Split successful. Claim " + resultdata.ClaimNumber + " has been created and linked to this claim.";
                        vm.claimService.linkClaims(vm.claim.ClaimNumber, resultdata.ClaimNumber)
                            .then(function (links) {
                            if (links)
                                console.log(links);
                        })["catch"](function (error) {
                            vm.saveMessage = "An error occurred when trying to link the two claims (" + resultdata.ClaimNumber + " and" + vm.claim.ClaimNumber + "). " + error;
                        });
                    }
                });
            };
            ClaimEditController.prototype.openFeedbackLabor = function (feedbackType, labor, sublabor) {
                var vm = this;
                var settings = {
                    controller: "app.claims.FeedbackController as vm",
                    templateUrl: "app/claims/claims.feedback.html",
                    keyboard: false,
                    backdrop: "static",
                    size: "xl",
                    resolve: {
                        isReadOnly: function () {
                            if (sublabor) {
                                return sublabor.LineStatus != "Feedback";
                            }
                            else {
                                return labor.LineStatus != "Feedback";
                            }
                        },
                        isNew: function () { return vm.isNew; },
                        lineType: function () { return "Labor"; },
                        feedbackType: function () { return feedbackType; },
                        id: function () { return labor.OpRecID; },
                        claimN: function () { return vm.claim.ClaimNumber; },
                        title: function () {
                            if (sublabor) {
                                return "Claim " + vm.claim.ClaimNumber + " > Labor Line " + labor.ClaimLaborLineNumber + " > Sub Labor Line " + sublabor.ClaimLaborLineNumber;
                            }
                            else {
                                return "Claim " + vm.claim.ClaimNumber + " > Labor Line " + labor.ClaimLaborLineNumber;
                            }
                        }
                    }
                };
                var modalInstance = this.$modal.open(settings);
            };
            ClaimEditController.prototype.openFeedbackPart = function (feedbackType, labor, part) {
                var vm = this;
                var settings = {
                    controller: "app.claims.FeedbackController as vm",
                    templateUrl: "app/claims/claims.feedback.html",
                    keyboard: false,
                    backdrop: "static",
                    size: "xl",
                    resolve: {
                        isReadOnly: function () { return part.LineStatus != "3"; },
                        isNew: function () { return vm.isNew; },
                        id: function () { return part.PartRecID; },
                        lineType: function () { return "Part"; },
                        feedbackType: function () { return feedbackType; },
                        claimN: function () { return vm.claim.ClaimNumber; },
                        title: function () {
                            return "Claim " + vm.claim.ClaimNumber + " > Labor Line " + labor.ClaimLaborLineNumber + " > Part Line " + part.ClaimPartsLineNumber;
                        }
                    }
                };
                var modalInstance = this.$modal.open(settings);
            };
            ClaimEditController.prototype.openFeedbackClaimHeader = function (feedbackType, claim) {
                var vm = this;
                var settings = {
                    controller: "app.claims.FeedbackController as vm",
                    templateUrl: "app/claims/claims.feedback.html",
                    keyboard: false,
                    backdrop: "static",
                    size: "xl",
                    resolve: {
                        isReadOnly: function () { return true; },
                        isNew: function () { return vm.isNew; },
                        id: function () { return claim.RecId; },
                        lineType: function () { return "Claim"; },
                        feedbackType: function () { return feedbackType; },
                        claimN: function () { return vm.claim.ClaimNumber; },
                        title: function () {
                            return "Claim " + vm.claim.ClaimNumber;
                        }
                    }
                };
                var modalInstance = this.$modal.open(settings);
            };
            ClaimEditController.prototype.downloadClaimSheet = function () {
                var vm = this;
                var settings = {
                    controller: "app.report.ClaimController as vm",
                    templateUrl: "app/report/report.viewer.html",
                    keyboard: false,
                    backdrop: true,
                    size: "print",
                    resolve: {
                        VIN: function () { return vm.claim.VIN; },
                        division: function () { return vm.claim.Division; },
                        ClaimNumber: function () { return vm.claim.ClaimNumber; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
            };
            ClaimEditController.prototype.printUPSTag = function (part) {
                var vm = this;
                vm.claim.Division = "RV";
                var settings = {
                    controller: "app.claims.PartTagModalController as vm",
                    templateUrl: "app/claims/claims.parttag.modal.html",
                    keyboard: false,
                    backdrop: "static",
                    size: "lg",
                    resolve: {
                        PartTagReport: function () { return ""; },
                        ERPClaimNumber: function () { return vm.claim.ClaimNumber; },
                        ClaimLaborLineNumber: function () { return part ? part.ClaimLaborLineNumber : null; },
                        ClaimPartLineNumber: function () { return part ? part.ClaimPartsLineNumber : null; },
                        VIN: function () { return vm.claim.VIN; },
                        division: function () { return vm.claim.Division; },
                        dealerAddress: function () { return vm.DealerAddress; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
            };
            ClaimEditController.prototype.viewUPSTag = function () {
                var vm = this;
                var settings = {
                    controller: "app.shipmenttracking.ClaimShipmentTrackingController as vm",
                    templateUrl: "app/shipmenttracking/shipment.claimtracking.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'lg',
                    resolve: {
                        claimNumber: function () { return vm.claim.ClaimNumber; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
            };
            ClaimEditController.prototype.downloadPartTag = function (part) {
                var vm = this;
                var settings = {
                    controller: "app.claims.PartTagPartModalController as vm",
                    templateUrl: "app/claims/claims.parttagpart.modal.html",
                    keyboard: false,
                    backdrop: "static",
                    size: "lg",
                    resolve: {
                        ClaimLaborLineNumber: function () { return part.ClaimLaborLineNumber; },
                        ClaimPartLineNumber: function () { return part.ClaimPartsLineNumber; },
                        VIN: function () { return vm.claim.VIN; },
                        division: function () { return vm.claim.Division; },
                        ClaimNumber: function () { return vm.claim.ClaimNumber; },
                        Quantity: function () { return part.SubmittedQty; },
                        Description: function () { return part.Description; },
                        SerialNumber: function () { return part.ComponentSerial; },
                        PartTagNumber: function () { return part.PartTag; },
                        DealerNumber: function () { return vm.claim.DealerNumber; },
                        ClaimDealerAddress: function () { return vm.claim.DealerAddress; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
            };
            ClaimEditController.prototype.getPartTagLink = function (part) {
                var parameters = new Array();
                var paramPartLineNumber = new app.services.ReportParam();
                paramPartLineNumber.Name = "ERPClaimNumber";
                paramPartLineNumber.Value = this.claim.ClaimNumber;
                parameters.push(paramPartLineNumber);
                var paramPartLineNumber = new app.services.ReportParam();
                paramPartLineNumber.Name = "ClaimLabor";
                paramPartLineNumber.Value = part.ClaimLaborLineNumber;
                parameters.push(paramPartLineNumber);
                var paramPartLineNumber = new app.services.ReportParam();
                paramPartLineNumber.Name = "PartLineNumber";
                paramPartLineNumber.Value = part.ClaimPartsLineNumber;
                parameters.push(paramPartLineNumber);
                return this.reportService.getReportLink("Part Tag Report", parameters);
            };
            ClaimEditController.prototype.vinIsValid = function () {
                var vm = this;
                vm.controllerReady = false;
                var valid = false;
                if ((!vm.vinInfo || vm.vinInfo.VIN != vm.claim.VIN) && vm.claim.VIN.length == 17) {
                    this.vinService.getVIN(vm.claim.VIN, true).then(function (data) {
                        vm.vinValid = true;
                        vm.vinValidated = true;
                        if (data) {
                            vm.claim.VIN = data.VIN;
                            vm.flatRateGroup = data.FlatRateGroup;
                            vm.updateExistingVINinfo(data);
                        }
                        else {
                            vm.vinValid = false;
                            valid = false;
                        }
                    }, function (error) {
                        vm.vinValid = false;
                        valid = false;
                    });
                }
                else {
                    if (vm.vinInfo != null && vm.vinInfo.VIN == vm.claim.VIN)
                        valid = vm.vinValidated;
                    else {
                        valid = false;
                        vm.vinValidated = false;
                    }
                }
                vm.controllerReady = true;
                return valid;
            };
            ClaimEditController.prototype.getVINCatalog = function () {
                var vm = this;
                this.partsCatalogService.checkVINCatalog(vm.claim.VIN).then(function (result) {
                    if (result) {
                        vm.noCatalog = !result;
                    }
                    else {
                        vm.noCatalog = true;
                    }
                });
            };
            ClaimEditController.prototype.showFlatRate = function (flatRateCode) {
                var _this = this;
                var vm = this;
                this.flatRateManualService.getFlatRateCode(flatRateCode).then(function (result) {
                    var settings = {
                        controller: "app.flatrate.FlatRateNotesModalController as vm",
                        templateUrl: "app/flatrate/flatrate.notes.modal.html",
                        keyboard: false,
                        backdrop: "static",
                        size: "lg",
                        resolve: {
                            flatRate: function () { return result; },
                            selectable: function () { return false; }
                        }
                    };
                    var modalInstance = _this.$modal.open(settings);
                });
            };
            ClaimEditController.prototype.roIsEditable = function () {
                var vm = this;
                if (vm.claim.ClaimStatus.toLowerCase() == "pending payment" || vm.claim.ClaimStatus.toLowerCase() == "paid" ||
                    vm.claim.ClaimStatus.toLowerCase() == "expired" || vm.claim.ClaimStatus.toLowerCase() == "denied" ||
                    vm.claim.ClaimStatus.toLowerCase() == "needs review" || vm.claim.ClaimStatus.toLowerCase() == "processing") {
                    return true;
                }
            };
            ClaimEditController.prototype.hasUnacknowledgedDeniedLines = function () {
                var vm = this;
                if (vm.claim) {
                    if (vm.claim.Labor) {
                        for (var laborIndex = 0; laborIndex < vm.claim.Labor.length; laborIndex++) {
                            if (vm.claim.Labor[laborIndex].LineStatus == "Denied" && !vm.claim.Labor[laborIndex].FrDenialAcknowledged) {
                                return true;
                            }
                            if (vm.claim.Labor[laborIndex].Parts) {
                                for (var partIndex = 0; partIndex < vm.claim.Labor[laborIndex].Parts.length; partIndex++) {
                                    if (vm.claim.Labor[laborIndex].Parts[partIndex].LineStatus == "Denied" && !vm.claim.Labor[laborIndex].Parts[partIndex].FrDenialAcknowledged) {
                                        return true;
                                    }
                                }
                            }
                            if (vm.claim.Labor[laborIndex].SubLabor) {
                                for (var subIndex = 0; subIndex < vm.claim.Labor[laborIndex].SubLabor.length; subIndex++) {
                                    if (vm.claim.Labor[laborIndex].SubLabor[subIndex].LineStatus == "Denied" && !vm.claim.Labor[laborIndex].SubLabor[subIndex].FrDenialAcknowledged) {
                                        return true;
                                    }
                                }
                            }
                        }
                    }
                }
                return false;
            };
            ClaimEditController.prototype.hasReturnReq = function () {
                var items = this.claim.Labor.filter(function (x) { return x.PhotoRequired || x.PhotoRequiredCAN; });
                return items.length > 0;
            };
            ClaimEditController.prototype.toggleClaimLockOnExit = function ($scope, claimService, claimNumber, $window) {
                $scope.$on('$destroy', function () {
                    claimService.lockClaimToggle(claimNumber, true)
                        .then(function (data) {
                    });
                });
                window.addEventListener('beforeunload', function (e) {
                    claimService.lockClaimToggle(claimNumber, true)
                        .then(function (data) {
                    });
                });
            };
            ClaimEditController.$inject = ["$state",
                "app.services.VINService",
                "app.services.ClaimService",
                "app.services.FlatRateManualService",
                "app.services.FailureCodeService",
                "app.services.PartService",
                "$uibModal",
                "$q",
                "app.services.DealerService",
                "mv360api",
                "app.services.WarrantyService",
                "$scope",
                "$rootScope",
                "app.services.SalesPersonService",
                "app.services.LoginService",
                "app.services.UserService",
                "app.services.LocationService",
                "app.services.FeedbackService",
                "app.services.ReportService",
                "app.services.SiteService",
                "app.services.PartsCatalogService",
                "app.services.CampaignService",
                "$localStorage",
                "$window"
            ];
            return ClaimEditController;
        }());
        angular.module("app.claims")
            .controller("app.claims.ClaimsEditController", ClaimEditController);
    })(edit = claim_1.edit || (claim_1.edit = {}));
})(claim || (claim = {}));
//# sourceMappingURL=claims.edit.controller.js.map
var claims;
(function (claims) {
    var feedback;
    (function (feedback) {
        "use strict";
        var ClaimFeedbackController = (function () {
            function ClaimFeedbackController($modalInstance, feedbackService, isReadOnly, isNew, feedbackType, id, lineType, title, claimN, fileUpload, LoginService) {
                this.$modalInstance = $modalInstance;
                this.feedbackService = feedbackService;
                this.title = title;
                this.claimN = claimN;
                this.fileUpload = fileUpload;
                this.LoginService = LoginService;
                this.isReadOnly = true;
                this.isNew = isNew;
                this.id = id;
                this.lineType = lineType;
                this.title = title;
                this.claimN = claimN;
                this.fileList = [];
                this.showStatus = true;
                this.feedbackTypePassed = feedbackType;
                var vm = this;
                vm.header = "Feedback";
                if (feedbackType == "Note") {
                    vm.header = "Notes and Feedback";
                    feedbackType = "All Adjustments";
                    vm.isReadOnly = true;
                }
                if (id) {
                    feedbackService.getFeedback(feedbackType, id).then(function (result) {
                        vm.items = result;
                        vm.controllerReady = true;
                    });
                }
            }
            ClaimFeedbackController.prototype.addFeedback = function (fileItem) {
                var vm = this;
                vm.feedbackDisabled = true;
                var feedbackitem = new app.services.IFeedbackItem();
                feedbackitem.ERPRecordId = vm.id;
                feedbackitem.LineType = vm.lineType;
                feedbackitem.Comments = vm.feedbacktext;
                feedbackitem.Title = vm.title;
                feedbackitem.FeedbackType = fileItem ? "FileOrig" : "Feedback";
                feedbackitem.CreatedOn = new Date();
                feedbackitem.FileName = fileItem ? fileItem.Name : null;
                feedbackitem.FileSrc = fileItem ? fileItem.Src : null;
                feedbackitem.CreatedByUserName = this.LoginService.UserInfo.Username;
                vm.feedbackService.postFeedback(feedbackitem).then(function (result) {
                    vm.feedbackService.getFeedback("Feedback", vm.id).then(function (result) {
                        vm.items = result;
                        vm.feedbacktext = "";
                        if (fileItem)
                            vm.remove(fileItem);
                        vm.feedbackDisabled = false;
                    });
                });
            };
            ClaimFeedbackController.prototype.GetStatusType = function (status) {
                if (this.feedbackTypePassed == "Header") {
                    if (status == 0)
                        return "Draft";
                    else if (status == 1)
                        return "Pre-Auth";
                    else if (status == 2)
                        return "Needs Review";
                    else if (status == 3)
                        return "Authorized";
                    else if (status == 4)
                        return "Cancelled";
                    else if (status == 5)
                        return "Processing";
                    else if (status == 6)
                        return "Claim Feedback";
                    else if (status == 7)
                        return "Awaiting Payment";
                    else if (status == 8)
                        return "Paid";
                    else if (status == 9)
                        return "Expired";
                    else if (status == 10)
                        return "Denied";
                    else if (status == 11)
                        return "Needs Review";
                }
                else {
                    if (status == 0)
                        return "Draft";
                    else if (status == 1)
                        return "Authorized";
                    else if (status == 2)
                        return "Approved";
                    else if (status == 3)
                        return "Feedback";
                    else if (status == 4)
                        return "Denied";
                    else if (status == 5)
                        return "Portal Feedback";
                }
            };
            ClaimFeedbackController.prototype.uploadFiles = function (f) {
                var vm = this;
                var fileNumberDisplay;
                var fileData;
                var recordID;
                var displayRecordId;
                var _loop_1 = function () {
                    var photofile = f[i];
                    var reader = new FileReader();
                    if (photofile.size <= 51200000) {
                        reader.onload = function (e) {
                            fileData = reader.result;
                            vm.fileItem = {
                                Name: photofile.name,
                                Src: fileData,
                                IsNew: true,
                                Path: photofile.type,
                                IsDeleted: false,
                                Thumbnail: null
                            };
                            vm.fileUpload.uploadFile(vm.fileItem, "Feedback", vm.id.toString())
                                .then(function (response) {
                                vm.result = response.toString();
                                if (vm.result != "File Type Error" && vm.result != "File Upload Error") {
                                    vm.fileList.push({
                                        Name: photofile.name,
                                        Src: vm.result,
                                        IsNew: true,
                                        Path: vm.result,
                                        IsDeleted: false,
                                        Thumbnail: null
                                    });
                                }
                                else if (vm.result == "File Type Error") {
                                }
                                else {
                                }
                            }, function (response) {
                                if (response.status > 0) {
                                    if (response.status == 404) {
                                    }
                                    else {
                                    }
                                }
                            });
                        };
                        reader.readAsDataURL(photofile);
                    }
                    else {
                    }
                };
                for (var i in f) {
                    _loop_1();
                }
            };
            ;
            ClaimFeedbackController.prototype.cancel = function () {
                this.$modalInstance.dismiss();
            };
            ClaimFeedbackController.prototype.remove = function (fileItem) {
                var index = this.fileList.indexOf(fileItem);
                this.fileList.splice(index, 1);
            };
            ClaimFeedbackController.prototype.getImageSource = function (src) {
                return "/api/image/false/?file=" + encodeURI(src);
            };
            ClaimFeedbackController.$inject = [
                "$uibModalInstance",
                "app.services.FeedbackService",
                "isReadOnly",
                "isNew",
                "feedbackType",
                "id",
                "lineType",
                "title",
                "claimN",
                "app.services.FileUploadService",
                "app.services.LoginService"
            ];
            return ClaimFeedbackController;
        }());
        angular.module("app.unit")
            .controller("app.claims.FeedbackController", ClaimFeedbackController);
    })(feedback = claims.feedback || (claims.feedback = {}));
})(claims || (claims = {}));
//# sourceMappingURL=claims.feedback.controller.js.map
var claim;
(function (claim_1) {
    var legacydetails;
    (function (legacydetails) {
        "use strict";
        var ClaimLegacyDetailsController = (function () {
            function ClaimLegacyDetailsController($state, vinService, claimService, flatRateManualService, failureCodeService, partService, $modal, $q, dealerService, mv360api, warrantyService, $scope, rootScope, salesPersonService, loginService, userService, locationSerivce, feedbackService, reportService, siteService, partsCatalogService, campaignService, $localStorage, $window) {
                var _this = this;
                this.$state = $state;
                this.vinService = vinService;
                this.claimService = claimService;
                this.flatRateManualService = flatRateManualService;
                this.failureCodeService = failureCodeService;
                this.partService = partService;
                this.$modal = $modal;
                this.$q = $q;
                this.dealerService = dealerService;
                this.mv360api = mv360api;
                this.warrantyService = warrantyService;
                this.$scope = $scope;
                this.rootScope = rootScope;
                this.salesPersonService = salesPersonService;
                this.loginService = loginService;
                this.userService = userService;
                this.locationSerivce = locationSerivce;
                this.feedbackService = feedbackService;
                this.reportService = reportService;
                this.siteService = siteService;
                this.partsCatalogService = partsCatalogService;
                this.campaignService = campaignService;
                this.$localStorage = $localStorage;
                this.$window = $window;
                var PARAM_CLAIM_NUMBER = "claimNumber";
                var PARAM_VIN = "vin";
                var vm = this;
                vm.claimNumber = $state.params[PARAM_CLAIM_NUMBER];
                vm.SubmitForPaymentClicked = false;
                vm.SubmitForProcessingClicked = false;
                vm.InvalidMileage = false;
                vm.partValidateWaiting = "";
                vm.SubmitClicked = false;
                vm.vinValidated = false;
                vm.hasLaborLinesRequiringReturns = false;
                vm.isParentOrderLinkable = false;
                vm.dangers = [];
                vm.warnings = [];
                vm.notifications = [];
                vm.isClaimLockedByUser = false;
                vm.newPartLineAdded = false;
                vm.newLaborLineAdded = false;
                vm.hasDisplayedCampaign = false;
                $scope.$watch(function watchDangerVariables(scope) {
                    $scope.myDangerArray = [
                        vm.claim.ClaimStatus,
                        vm.claim.FrPortalLock,
                        vm.claim.Locked,
                        vm.claim.VIN,
                        vm.claim.VIN.length,
                        vm.claimform.dealercontact,
                        vm.claimform,
                        vm.claim.Mileage,
                        vm.claimform.year,
                        vm.claimlinesContainFeedback(vm.claim),
                        vm.DealerAddress,
                        vm.flatRateGroup,
                        vm.InvalidMileage,
                        vm.laborLineError,
                        vm.laborLineSerialError,
                        vm.partLineError,
                        vm.statusRule.ClaimHeaderLockSubmitPayment(vm.claim),
                        vm.SubmitClicked,
                        vm.SubmitForPaymentClicked,
                        vm.SubmitForProcessingClicked,
                        vm.vinIsMotorized,
                        vm.vinValid,
                        vm.vinValidated
                    ];
                    return ($scope.myDangerArray);
                }, function Danger() {
                }, true);
                $scope.$watch(function watchVariables(scope) {
                    $scope.myArray = [
                        vm.claim.ClaimStatus,
                        vm.claim.HasAdjustments,
                        vm.claimlinesContainFeedback(vm.claim),
                        vm.claimlinesContainPortalFeedback(vm.claim),
                        vm.noCatalog,
                        vm.partTagUnassigned,
                        vm.vinNotRegistered,
                        vm.vinValidated
                    ];
                    return ($scope.myArray);
                }, function Warn() {
                }, true);
                if (!vm.claimNumber || vm.claimNumber == "create") {
                    vm.setNotifications();
                    if ($state.params[PARAM_VIN]) {
                        vm.vin = $state.params[PARAM_VIN];
                        vm.ShowUnitCrumbs = true;
                    }
                    vm.headerText = "New Claim";
                    vm.claim = new app.services.IClaim();
                    vm.claim.Labor = new Array();
                    if (vm.vin) {
                        vm.claim.VIN = vm.vin;
                    }
                    else {
                        vm.claim.VIN = "";
                    }
                    vm.claim.ClaimStatus = "Draft";
                    vm.claim.RepairStartDate = null;
                    vm.claim.RepairEndDate = null;
                    vm.controllerReady = true;
                    vm.isEditLoad = false;
                    vm.claim.PartInProgress = false;
                    vm.claim.LaborInProgress = false;
                    vm.isNew = true;
                    salesPersonService.getSalesPeople().then(function (data) {
                        vm.salesperson = data;
                        salesPersonService.setDisplayField(vm.salesperson);
                        _this.userService.GetProfile().then(function (data) {
                            vm.claim.DealerContact = data.Email;
                        });
                    });
                    dealerService.getDealer()
                        .then(function (data) {
                        vm.laborRate = data.LaborRate;
                        vm.markupPercent = data.MarkupPercent ? data.MarkupPercent : vm.$localStorage.markupPercent;
                    });
                    vm.getAddresses();
                }
                else {
                    vm.headerText = "Claim";
                    vm.isEditLoad = true;
                    var loadpromises = new Array();
                    loadpromises.push(dealerService.getDealer()
                        .then(function (data) {
                        vm.markupPercent = data.MarkupPercent ? data.MarkupPercent : vm.$localStorage.markupPercent;
                    }));
                    loadpromises.push(claimService.getClaim(vm.claimNumber).then(function (data) {
                        vm.claim = data;
                        vm.laborRate = vm.claim.LaborRate;
                        vm.claim.PartInProgress = false;
                        vm.claim.LaborInProgress = false;
                        vm.claim.Labor.forEach(function (x) {
                            loadpromises.push(flatRateManualService.getFlatRateCodeDetails(x.FlatRateCode).then(function (data) {
                                x.ModelNumberRequired = data.ModelNumberRequired;
                                x.SerialNumberRequired = data.SerialNumberRequired;
                            }));
                            x.Parts.forEach(function (y) {
                                y.IsNew = false;
                                y.OldPartNumber = y.PartNumber;
                            });
                        });
                        vm.getAddresses();
                        if (vm.claim) {
                            if (vm.claim.ClaimNumber) {
                                vm.headerText = "Claim - " + vm.claim.ClaimNumber;
                            }
                            else if (vm.claim.ClaimStatus.toLowerCase() == "denied") {
                                vm.headerText = "Claim - ";
                                vm.claim.PaymentDate = null;
                            }
                            else {
                                vm.headerText = "Claim - Draft";
                            }
                            vm.setNotifications();
                        }
                    }));
                    loadpromises.push(salesPersonService.getSalesPeople().then(function (data) {
                        vm.salesperson = data;
                        salesPersonService.setDisplayField(vm.salesperson);
                    }));
                    loadpromises.push(claimService.getLinkedClaims(vm.claimNumber).then(function (data) {
                        vm.linkedClaims = data;
                    }));
                    $q.all(loadpromises).then(function () {
                        if (vm.claim) {
                            if (!vm.claim.Locked) {
                                if (vm.claim.ClaimStatus.toLowerCase() === "draft" || vm.claim.ClaimStatus.toLowerCase() === "authorized" || vm.claim.ClaimStatus == "paid" || vm.claim.ClaimStatus == "denied" || vm.claim.ClaimStatus == "expried" ||
                                    vm.claim.ClaimStatus.toLowerCase() === "needs review" && (vm.claimlinesContainFeedback(vm.claim))) {
                                    if (vm.claimNumber && vm.claimNumber != "Create") {
                                        vm.isClaimLockedByUser = true;
                                    }
                                }
                                else {
                                    vm.claim.Locked = true;
                                    vex.dialog.alert("This claim is currently locked for editing. No changes can be saved on this claim.");
                                }
                            }
                            else {
                                vex.dialog.alert("This claim is currently locked for editing. No changes can be saved on this claim.");
                            }
                            if (vm.claim.FrOriginalclaimid && (vm.claim.FrOriginalclaimid.length == 6 && vm.claim.FrOriginalclaimid.replace(/\D/g, '').length == 6)) {
                                vm.isParentOrderLinkable = true;
                            }
                        }
                        vm.controllerReady = true;
                        vm.typeaheadisopen = false;
                    });
                }
            }
            ClaimLegacyDetailsController.prototype.setNotifications = function () {
                var vm = this;
                vm.notifications.length = 0;
                var datenow = new Date();
            };
            ClaimLegacyDetailsController.prototype.reloadClaim = function (claimNumber) {
                var vm = this;
                vm.SubmitForPaymentClicked = false;
                vm.SubmitForProcessingClicked = false;
                vm.partValidateWaiting = "";
                vm.SubmitClicked = false;
                vm.vinValidated = false;
                vm.isNew = false;
                var loadpromises = new Array();
                loadpromises.push(this.claimService.getClaim(claimNumber).then(function (data) {
                    vm.claim = data;
                    if (vm.claim) {
                        if (vm.claim.ClaimNumber) {
                            vm.headerText = "Claim - " + vm.claim.ClaimNumber;
                        }
                        else if (vm.claim.ClaimStatus.toLowerCase() == "denied") {
                            vm.headerText = "Claim - ";
                            vm.claim.PaymentDate = null;
                        }
                    }
                }));
                loadpromises.push(this.claimService.getLinkedClaims(claimNumber).then(function (data) {
                    vm.linkedClaims = data;
                }));
                this.$q.all(loadpromises).then(function () {
                    if (vm.claim) {
                        vm.showSaveMessage = false;
                    }
                    vm.controllerReady = true;
                    vm.typeaheadisopen = false;
                });
            };
            ClaimLegacyDetailsController.prototype.getAddresses = function () {
                var vm = this;
                vm.dealerService.getAddresses().then(function (addressResult) {
                    vm.dealerAddresses = addressResult;
                    var primaryDeliveryAddressFound = false;
                    var deliveryAddressFound = false;
                    for (var index = 0; index < addressResult.length; index++) {
                        if (vm.claim.DealerAddress != undefined && addressResult[index].FullAddress.replace(/ /g, '').toLocaleLowerCase() == vm.claim.DealerAddress.replace(/ /g, '').toLocaleLowerCase()) {
                            vm.DealerAddress = addressResult[index];
                            return;
                        }
                        if (addressResult[index].Purpose.indexOf("Delivery") > -1 && addressResult[index].DefaultRoles.indexOf("Delivery") > -1) {
                            vm.DealerAddress = addressResult[index];
                            primaryDeliveryAddressFound = true;
                        }
                        if (addressResult[index].Purpose.indexOf("Delivery") > -1 && primaryDeliveryAddressFound == false) {
                            vm.DealerAddress = addressResult[index];
                            deliveryAddressFound = true;
                        }
                        if (addressResult[index].IsPrimary && primaryDeliveryAddressFound == false && deliveryAddressFound == false) {
                            vm.DealerAddress = addressResult[index];
                        }
                    }
                    if (vm.DealerAddress == undefined && addressResult.length > 0) {
                        vm.DealerAddress = addressResult[0];
                    }
                });
            };
            ClaimLegacyDetailsController.prototype.showAcknowledgeModal = function (onSuccess, part, labor) {
                var vm = this;
                var settings = {
                    controller: "app.claims.AcknowledgModalController as vm",
                    templateUrl: "app/claims/claims.acknowledge.modal.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'xl',
                    resolve: {
                        labor: function () { return labor; },
                        part: function () { return part; }
                    }
                };
                this.$modal.open(settings)
                    .result
                    .then(function (value) {
                    if (value) {
                        vm.claim.Labor.forEach(function (l) {
                            if (labor) {
                                if (labor.OpRecID == l.OpRecID) {
                                    if (l.LineStatus == "Feedback") {
                                        l.LineStatusId = "5";
                                        l.LineStatus = "Portal Feedback";
                                    }
                                    else if (l.LineStatus == "Denied") {
                                        l.FrDenialAcknowledged = true;
                                    }
                                }
                            }
                            if (part) {
                                if (l.Parts) {
                                    l.Parts.forEach(function (p) {
                                        if (part.PartRecID == p.PartRecID) {
                                            if (p.LineStatus == "Feedback") {
                                                p.LineStatusId = "5";
                                                p.LineStatus = "Portal Feedback";
                                            }
                                            else if (p.LineStatus == "Denied") {
                                                p.FrDenialAcknowledged = true;
                                            }
                                        }
                                    });
                                }
                            }
                        });
                        onSuccess();
                    }
                });
            };
            ClaimLegacyDetailsController.prototype.vinWarrantyIsValidOrNotRegistered = function (vinInfo) {
                if (vinInfo != null) {
                    if (vinInfo.WarrantyIsValid) {
                        return true;
                    }
                    if (!vinInfo.WarrantyEnd) {
                        return true;
                    }
                }
                return false;
            };
            ClaimLegacyDetailsController.prototype.claimlinesContainSubletPreauthOrOverAllowedHours = function (claim) {
                for (var index = 0; index < claim.Labor.length; index++) {
                    if (this.claimLineContainSubletPreauthOrOverAllowedHours(claim.Labor[index])) {
                        return true;
                    }
                }
                return false;
            };
            ClaimLegacyDetailsController.prototype.claimLineContainSubletPreauthOrOverAllowedHours = function (line) {
                if (line.Sublet ||
                    line.PreAuth ||
                    line.DealerSubmittedHours > line.AllowedHours) {
                    return true;
                }
                return false;
            };
            ClaimLegacyDetailsController.prototype.setAllClaimLaborLinesToAuthorized = function (claim) {
                for (var index = 0; index < claim.Labor.length; index++) {
                    claim.Labor[index].LineStatus = "Authorized";
                    if (claim.Labor[index].SubLabor) {
                        for (var subIndex = 0; subIndex < claim.Labor[index].SubLabor.length; subIndex++) {
                            claim.Labor[index].SubLabor[subIndex].LineStatus = "Authorized";
                        }
                    }
                }
            };
            ClaimLegacyDetailsController.prototype.claimlinesContainFeedback = function (claim) {
                if (claim) {
                    for (var index = 0; index < claim.Labor.length; index++) {
                        if (claim.Labor[index].LineStatus.toLowerCase() === "feedback") {
                            return true;
                        }
                        if (claim.Labor[index].Parts) {
                            for (var partIndex = 0; partIndex < claim.Labor[index].Parts.length; partIndex++) {
                                if (claim.Labor[index].Parts[partIndex].LineStatus.toLowerCase() == "feedback") {
                                    return true;
                                }
                            }
                        }
                    }
                }
                return false;
            };
            ClaimLegacyDetailsController.prototype.claimlinesContainPortalFeedback = function (claim) {
                if (claim) {
                    for (var index = 0; index < claim.Labor.length; index++) {
                        if (claim.Labor[index].LineStatus.toLowerCase() === "portal feedback") {
                            return true;
                        }
                        if (claim.Labor[index].Parts) {
                            for (var partIndex = 0; partIndex < claim.Labor[index].Parts.length; partIndex++) {
                                if (claim.Labor[index].Parts[partIndex].LineStatus.toLowerCase() == "portal feedback") {
                                    return true;
                                }
                            }
                        }
                    }
                }
                return false;
            };
            ClaimLegacyDetailsController.prototype.claimlinesSetDenied = function (claim) {
                for (var index = 0; index < claim.Labor.length; index++) {
                    claim.Labor[index].LineStatus = "Denied";
                }
            };
            ClaimLegacyDetailsController.prototype.claimLineStatusLogic = function (event, claim) {
                if (event === "submit") {
                }
                else {
                }
            };
            ClaimLegacyDetailsController.prototype.vinIsValid = function () {
                var vm = this;
                vm.controllerReady = false;
                var valid = false;
                if ((!vm.vinInfo || vm.vinInfo.VIN != vm.claim.VIN) && vm.claim.VIN.length == 17) {
                    this.vinService.getVIN(vm.claim.VIN, true).then(function (data) {
                        vm.vinValid = true;
                        vm.vinValidated = true;
                        if (data) {
                            vm.claim.VIN = data.VIN;
                            vm.flatRateGroup = data.FlatRateGroup;
                        }
                        else {
                            vm.vinValid = false;
                            valid = false;
                        }
                    }, function (error) {
                        vm.vinValid = false;
                        valid = false;
                    });
                }
                else {
                    if (vm.vinInfo != null && vm.vinInfo.VIN == vm.claim.VIN)
                        valid = vm.vinValidated;
                    else {
                        valid = false;
                        vm.vinValidated = false;
                    }
                }
                vm.controllerReady = true;
                return valid;
            };
            ClaimLegacyDetailsController.$inject = ["$state",
                "app.services.VINService",
                "app.services.ClaimService",
                "app.services.FlatRateManualService",
                "app.services.FailureCodeService",
                "app.services.PartService",
                "$uibModal",
                "$q",
                "app.services.DealerService",
                "mv360api",
                "app.services.WarrantyService",
                "$scope",
                "$rootScope",
                "app.services.SalesPersonService",
                "app.services.LoginService",
                "app.services.UserService",
                "app.services.LocationService",
                "app.services.FeedbackService",
                "app.services.ReportService",
                "app.services.SiteService",
                "app.services.PartsCatalogService",
                "app.services.CampaignService",
                "$localStorage",
                "$window"
            ];
            return ClaimLegacyDetailsController;
        }());
        angular.module("app.claims")
            .controller("app.claims.ClaimsLegacyDetailsController", ClaimLegacyDetailsController);
    })(legacydetails = claim_1.legacydetails || (claim_1.legacydetails = {}));
})(claim || (claim = {}));
//# sourceMappingURL=claims.legacy.details.controller.js.map
var claims;
(function (claims) {
    var legacysearch;
    (function (legacysearch) {
        "use strict";
        var ClaimsLegacySearchController = (function () {
            function ClaimsLegacySearchController($state, claimService, rootScope, loginService, userService, $scope) {
                var _this = this;
                this.$state = $state;
                this.claimService = claimService;
                this.rootScope = rootScope;
                this.loginService = loginService;
                this.userService = userService;
                this.$scope = $scope;
                var vm = this;
                vm.selectedStatuses = [];
                vm.statuses = claimService.getClaimStatuses();
                $scope.statusData = vm.statuses;
                $scope.statusSettings = {
                    smartButtonMaxItems: 3,
                    smartButtonTextConverter: function (itemText, originalItem) {
                        return itemText;
                    },
                    checkBoxes: true,
                    placeholder: "Select Status"
                };
                var newsearch = $state.params["search"];
                $scope.statusModel = [];
                if (newsearch == "Needs Review") {
                    $scope.statusModel.push($scope.statusData[2]);
                }
                else if (newsearch == "Draft") {
                    $scope.statusModel.push($scope.statusData[0]);
                }
                else if (newsearch == "ShowExpiringClaims") {
                    $scope.statusModel.push($scope.statusData[0]);
                    $scope.statusModel.push($scope.statusData[1]);
                    $scope.statusModel.push($scope.statusData[2]);
                    $scope.statusModel.push($scope.statusData[3]);
                    $scope.statusModel.push($scope.statusData[6]);
                }
                if (newsearch != "Needs Review" && newsearch != "Draft") {
                    this.userService.GetUsers().then(function (data) {
                        vm.userContacts = data;
                        vm.userContacts = vm.userContacts.sort(function (a, b) {
                            return a.Username > b.Username ? 1 : a.Username < b.Username ? -1 : 0;
                        });
                        vm.currentUser = vm.userContacts.filter(function (x) { return x.Email == _this.loginService.UserInfo.Email; })[0];
                    });
                }
                if (!vm.rootScope.Claims || (newsearch == "Needs Review" || newsearch == "Draft" || newsearch == "ShowExpiringClaims")) {
                    vm.rootScope.Claims = new app.core.PageData(claimService, this.search);
                    vm.rootScope.Claims.SearchText = $state.params["search"];
                    vm.rootScope.Claims.SearchField.ClaimStatus = $scope.statusModel;
                    vm.rootScope.Claims.SearchField.CreatedBy = '';
                    vm.rootScope.Claims.SearchField.ExcludeCreatedBy = '';
                    vm.rootScope.Claims.SearchField.Preauths = 'Any';
                    vm.rootScope.Claims.SearchField.Rejected = 'Any';
                    vm.rootScope.Claims.SearchField.Feedback = newsearch == "Needs Review" ? true : null;
                    vm.rootScope.Claims.SearchField.ClaimsAge = newsearch == "ShowExpiringClaims" ? vm.rootScope.Claims.ClaimAge[2].Value : 0;
                    vm.rootScope.Claims.SearchField.Archived = true;
                    vm.rootScope.Claims.SortField = '';
                    vm.rootScope.Claims.SortDesc = true;
                    if (newsearch != "Needs Review" && newsearch != "Draft") {
                        vm.rootScope.Claims.Search();
                    }
                    else {
                        this.userService.GetUsers().then(function (data) {
                            vm.userContacts = data;
                            vm.userContacts = vm.userContacts.sort(function (a, b) {
                                return a.Username > b.Username ? 1 : a.Username < b.Username ? -1 : 0;
                            });
                            vm.currentUser = vm.userContacts.filter(function (x) { return x.Email == _this.loginService.UserInfo.Email; })[0];
                            if (newsearch == "Needs Review" || newsearch == "Draft") {
                                vm.rootScope.Claims.SearchField.CreatedBy = vm.currentUser;
                                vm.rootScope.Claims.SearchField.CreatedBy.Username.value = vm.currentUser;
                            }
                        })["finally"](function () {
                            vm.rootScope.Claims.Search();
                            vm.$scope.$apply();
                            vm.$scope.$digest();
                        });
                    }
                }
                else {
                    if (newsearch) {
                        vm.rootScope.Claims.SearchField.VIN = newsearch;
                        this.rootScope.Claims.Search();
                    }
                    else {
                        vm.rootScope.Claims.SearchField.ClaimStatus = $scope.statusModel;
                        this.rootScope.Claims.SearchIfExpired();
                    }
                }
                this.whenEnterKeyIsHitSearch($scope);
            }
            ClaimsLegacySearchController.prototype.whenEnterKeyIsHitSearch = function ($scope) {
                var vm = this;
                var onEnter = function (e) {
                    if (e.which == 13) {
                        vm.rootScope.Claims.Search();
                    }
                };
                $(document).keydown(onEnter);
                $scope.$on('$destroy', function () {
                    $(document).unbind('keydown', onEnter);
                });
            };
            ClaimsLegacySearchController.prototype.search = function (searchService, page) {
                var vm = this;
                var query = new app.services.SearchQuery();
                query.PageSize = page.PageSize;
                query.CurrentPage = page.CurrentPage;
                query.SortField = page.SortField;
                query.SortAscending = page.SortDesc;
                var filter = new app.services.ClaimSearchQueryFilter();
                filter.ClaimStatus = page.SearchField.ClaimStatus;
                filter.VIN = page.SearchField.VIN;
                filter.Owner = page.SearchField.Owner;
                filter.DealerReference = page.SearchField.DealerReference;
                if (page.SearchField.CreatedBy != undefined) {
                    filter.CreatedBy = page.SearchField.CreatedBy.Username;
                }
                if (page.SearchField.ExcludeCreatedBy != undefined) {
                    filter.ExcludeCreatedBy = page.SearchField.ExcludeCreatedBy.Username;
                }
                filter.ClaimNumber = page.SearchField.ClaimNumber;
                filter.Feedback = page.SearchField.Feedback;
                filter.Archived = page.SearchField.Archived;
                filter.ClaimsAge = page.SearchField.ClaimsAge;
                query.Filter = filter;
                searchService.searchAdvanced(query).then(function (data) {
                    page.Update(data);
                });
            };
            ClaimsLegacySearchController.prototype.deleteClaim = function (claim) {
                var _this = this;
                this.claimService.deleteClaim(claim.ClaimNumber).then(function () {
                    _this.rootScope.Claims.Search();
                });
            };
            ClaimsLegacySearchController.$inject = ["$state", "app.services.ClaimService", "$rootScope", "app.services.LoginService", "app.services.UserService", "$scope"];
            return ClaimsLegacySearchController;
        }());
        angular.module("app.claims")
            .controller("app.claims.ClaimsLegacySearchController", ClaimsLegacySearchController);
    })(legacysearch = claims.legacysearch || (claims.legacysearch = {}));
})(claims || (claims = {}));
//# sourceMappingURL=claims.legacy.search.controller.js.map
var claims;
(function (claims) {
    var notes;
    (function (notes) {
        "use strict";
        var ClaimNotesController = (function () {
            function ClaimNotesController($modalInstance, $filter, items, isReadOnly, isNew, loginService) {
                this.$modalInstance = $modalInstance;
                this.$filter = $filter;
                this.loginService = loginService;
                this.labor = items;
                this.notes = this.labor.Complaint;
                this.isReadOnly = isReadOnly;
                this.isNew = isNew;
            }
            ClaimNotesController.prototype.ok = function () {
                var currentUser = this.loginService.UserInfo.Username;
                var today = new Date();
                var formattedTimeStamp = this.$filter('date')(today, 'yyyy-MM-dd HH:mm:ss');
                var newNoteToConcat = '';
                if (this.notes == undefined) {
                    newNoteToConcat = 'Original Note : \n';
                    newNoteToConcat += currentUser + ', ' + formattedTimeStamp + ' :: ' + this.newNotes + '\n';
                    this.labor.Complaint = newNoteToConcat;
                }
                else {
                    newNoteToConcat = 'Additional Note : \n';
                    newNoteToConcat += currentUser + ', ' + formattedTimeStamp + ' :: ' + this.newNotes + '\n';
                    var test = this.notes.substring(0, 7);
                    if (this.notes.substring(0, 8) != "Original") {
                        this.labor.Complaint = this.notes + '\n' + newNoteToConcat;
                    }
                    else {
                        this.labor.Complaint = this.notes + newNoteToConcat;
                    }
                }
                this.$modalInstance.close(this.labor);
            };
            ClaimNotesController.prototype.cancel = function () {
                this.$modalInstance.dismiss();
            };
            ClaimNotesController.$inject = ["$uibModalInstance", "$filter", "items", "isReadOnly", "isNew", "app.services.LoginService"];
            return ClaimNotesController;
        }());
        angular.module("app.unit")
            .controller("app.claims.ClaimsNotesController", ClaimNotesController);
    })(notes = claims.notes || (claims.notes = {}));
})(claims || (claims = {}));
//# sourceMappingURL=claims.notes.controller.js.map
var claim;
(function (claim) {
    var parttag;
    (function (parttag) {
        "use strict";
        var PartTagController = (function () {
            function PartTagController($state, $modalInstance, reportService, siteService, vinService, dealerService, partCatalogService, PartTagReport, ERPClaimNumber, ClaimLaborLineNumber, ClaimPartLineNumber, VIN, division, shipmentTrackingService, dealerAddress, userService) {
                this.$state = $state;
                this.$modalInstance = $modalInstance;
                this.reportService = reportService;
                this.siteService = siteService;
                this.vinService = vinService;
                this.dealerService = dealerService;
                this.partCatalogService = partCatalogService;
                this.PartTagReport = PartTagReport;
                this.ERPClaimNumber = ERPClaimNumber;
                this.ClaimLaborLineNumber = ClaimLaborLineNumber;
                this.ClaimPartLineNumber = ClaimPartLineNumber;
                this.VIN = VIN;
                this.division = division;
                this.shipmentTrackingService = shipmentTrackingService;
                this.dealerAddress = dealerAddress;
                this.userService = userService;
                var vm = this;
                vm.controllerReady = true;
                vm.InsuredValue = 200;
                vm.invalidWeight = false;
                vm.toAddress = new app.services.IShippingAddress;
                vm.shipmentDetails = new app.services.IShipTagDetails;
                vm.fromAddress = new app.services.IShippingAddress;
                vm.packageDetails = new app.services.IPackageDetails;
                vm.displayResults = false;
                vm.packageDetails.ClaimID = ERPClaimNumber;
                vm.packageDetails.PartLineNumber = ClaimPartLineNumber != null ? ClaimPartLineNumber : 0;
                vm.packageDetails.LaborLineNumber = ClaimLaborLineNumber != null ? ClaimLaborLineNumber : 0;
                vm.packageDetails.VIN = VIN;
                vm.dealerService.getDealer().then(function (dealerResult) { vm.DealerName = dealerResult.DealerName; });
                vm.vinService.getVIN(VIN, true).then(function (vinResult) {
                    if (vinResult.Location) {
                        vm.siteService.getPartsSiteReturn(vinResult.Location).then(function (tosite) {
                            if (tosite) {
                                vm.SiteInfo = tosite;
                                vm.siteService.getPortalSiteAddress(vinResult.Site).then(function (result) {
                                    vm.SiteInfo.UPSAccount = result.UPSAccount;
                                })["catch"](function (error) {
                                    vm.errorMessage = "Error loading site information";
                                });
                            }
                            else {
                                vm.siteService.getPortalSiteAddress(vinResult.Site).then(function (result) {
                                    vm.SiteInfo = result;
                                })["catch"](function (error) {
                                    vm.errorMessage = "Error loading site information";
                                });
                            }
                        });
                    }
                })["catch"](function (error) {
                    vm.errorMessage = "Error loading vin information";
                });
            }
            PartTagController.prototype.save = function () {
            };
            PartTagController.prototype.close = function () {
                this.$modalInstance.dismiss();
            };
            PartTagController.prototype.setdata = function () {
                var vm = this;
                vm.toAddress.Name = vm.SiteInfo.Name;
                vm.toAddress.Address1 = vm.SiteInfo.Address1;
                vm.toAddress.Address2 = vm.SiteInfo.Address2;
                vm.toAddress.City = vm.SiteInfo.City;
                vm.toAddress.State = vm.SiteInfo.StateOrProvince;
                vm.toAddress.Country = "US";
                vm.toAddress.Zip = vm.SiteInfo.PostalCode;
                if (vm.SiteInfo.Phone == null || vm.SiteInfo.Phone == undefined || vm.SiteInfo.Phone.length == 0) {
                    vm.toAddress.Phone = "5745343167";
                }
                else {
                    vm.toAddress.Phone = vm.SiteInfo.Phone;
                }
                vm.fromAddress.Name = vm.DealerName.toString();
                vm.fromAddress.Address1 = vm.DealerAddress.Address1;
                vm.fromAddress.Address2 = vm.DealerAddress.Address2;
                vm.fromAddress.City = vm.DealerAddress.City;
                vm.fromAddress.State = vm.DealerAddress.StateOrProvince;
                vm.fromAddress.Phone = vm.DealerAddress.RetailPhone;
                vm.fromAddress.Country = vm.DealerAddress.Country.substr(0, 2);
                vm.fromAddress.Zip = vm.DealerAddress.PostalCode;
                vm.fromAddress.Name = vm.DealerName.toString();
                vm.packageDetails.Length = vm.Length;
                vm.packageDetails.Height = vm.Height;
                vm.packageDetails.Width = vm.Width;
                vm.packageDetails.Weight = vm.Weight;
                vm.packageDetails.InsuredValue = vm.InsuredValue.toString();
                vm.packageDetails.Description = vm.Weight + " lbs, " + vm.Length + " x " + vm.Width + " x " + vm.Height + " inches.";
                vm.packageDetails.UPSAccountNumber = vm.SiteInfo.UPSAccount;
                if (vm.DealerAddress.Country.substr(0, 2).toUpperCase() == "US") {
                    vm.packageDetails.ServiceCode = "03";
                }
                else {
                    vm.packageDetails.ServiceCode = "11";
                }
                vm.shipmentDetails.FromAddress = vm.fromAddress;
                vm.shipmentDetails.ToAddress = vm.toAddress;
                vm.shipmentDetails.PackageDetails = vm.packageDetails;
            };
            PartTagController.prototype.printUPSTag = function () {
                var vm = this;
                if (vm.Weight != "" && vm.Weight != "0") {
                    vm.invalidWeight = false;
                }
                else {
                    vm.invalidWeight = true;
                }
                vm.isInsuredValueValid();
                if (!vm.isInsuedValueValid) {
                    alert("The minimum Insured Value is 200. Please insure the return appropriately.");
                }
                if ((parseInt(vm.Height) > 96 || parseInt(vm.Width) > 96 || parseInt(vm.Length) > 96) || ((parseInt(vm.Height) * parseInt(vm.Width) * parseInt(vm.Length)) > 130)) {
                    if ((parseInt(vm.Height) > 108 || parseInt(vm.Width) > 108 || parseInt(vm.Length) > 108) || ((parseInt(vm.Height) * parseInt(vm.Width) * parseInt(vm.Length)) > 165)) {
                        alert("Adjustment Charges may be added to the return shipping.");
                    }
                    else {
                        alert("Large Adjustment Charges may be added to the return shipping.");
                    }
                }
                if (!vm.invalidWeight && vm.isInsuedValueValid) {
                    vm.setAddressAndCreateLabel();
                }
            };
            PartTagController.prototype.getUPSLabel = function () {
                var vm = this;
                vm.shipmentTrackingService.getUpsShipPartTag(vm.shipmentDetails).then(function (shippingLabelResult) {
                    vm.ShippingLabel = shippingLabelResult;
                    vm.displayResults = true;
                    vm.labelErrored = false;
                    if (vm.ShippingLabel.ErrorMessage != null && vm.ShippingLabel.ErrorMessage.length > 0) {
                        vm.labelErrored = true;
                    }
                });
            };
            PartTagController.prototype.isInsuredValueValid = function () {
                var vm = this;
                var insuredValue = angular.element(document.getElementsByName("insuredvalue")).val();
                if (parseInt(insuredValue) && parseInt(insuredValue) >= 200) {
                    vm.isInsuedValueValid = true;
                }
                else {
                    vm.isInsuedValueValid = false;
                }
                vm.controllerReady = true;
            };
            PartTagController.prototype.setAddressAndCreateLabel = function () {
                var _this = this;
                var vm = this;
                var validAddressSet = false;
                if (vm.dealerAddress != null) {
                    vm.DealerAddress = vm.dealerAddress;
                    validAddressSet = true;
                }
                vm.dealerService.getAddresses().then(function (addressResult) {
                    var primaryServiceAddressFound = false;
                    var serviceAddressFound = false;
                    var deliveryAddressFound = false;
                    for (var index = 0; index < addressResult.length; index++) {
                        if (addressResult[index].Purpose.indexOf("Service") > -1 && addressResult[index].DefaultRoles.indexOf("Service") > -1) {
                            vm.DealerAddress = addressResult[index];
                            primaryServiceAddressFound = true;
                            validAddressSet = true;
                        }
                        if (addressResult[index].Purpose.indexOf("Service") > -1 && primaryServiceAddressFound == false) {
                            vm.DealerAddress = addressResult[index];
                            serviceAddressFound = true;
                            validAddressSet = true;
                        }
                        if (addressResult[index].Purpose.indexOf("Delivery") > -1 && addressResult[index].DefaultRoles.indexOf("Delivery") > -1 && primaryServiceAddressFound == false && serviceAddressFound == false) {
                            vm.DealerAddress = addressResult[index];
                            deliveryAddressFound = true;
                            validAddressSet = true;
                        }
                        if (addressResult[index].Purpose.indexOf("Service") <= -1 && addressResult[index].IsPrimary && primaryServiceAddressFound == false && serviceAddressFound == false && deliveryAddressFound == false) {
                            vm.DealerAddress = addressResult[index];
                            validAddressSet = true;
                        }
                    }
                    if (vm.DealerAddress == undefined && addressResult.length > 0) {
                        vm.DealerAddress = addressResult[0];
                        validAddressSet = true;
                    }
                    _this.userService.GetProfile().then(function (data) {
                        if (data != null && data.Phone != null && data.Phone.length > 0) {
                            vm.DealerAddress.RetailPhone = data.Phone;
                            validAddressSet = true;
                        }
                        else {
                            vm.errorMessage = "Phone number is required to print UPS label. Please add a phone number to your user profile.";
                            validAddressSet = false;
                        }
                        if (vm.addressIsToAPOBox()) {
                            validAddressSet = false;
                            vm.errorMessage = "Cannot generate UPS label for a PO Box address. Please update address to generate a UPS label.";
                        }
                        vm.setdata();
                        vm.getUPSLabel();
                    });
                });
                return validAddressSet;
            };
            PartTagController.prototype.addressIsToAPOBox = function () {
                var vm = this;
                var POBoxRegex = /^ *((#\d+)|((box|bin)[-. \/\\]?\d+)|(.*p[ \.]? ?(o|0)[-. \/\\]? *-?((box|bin)|b|(#|num)?\d+))|(p(ost)? *(o(ff(ice)?)?)? *((box|bin)|b)? *\d+)|(p *-?\/?(o)? *-?box)|post office box|((box|bin)|b) *(number|num|#)? *\d+|(num|number|#) *\d+)/i;
                var address1ContainsPO = false;
                var address2ContainsPO = false;
                if (vm.DealerAddress.Address1 != null) {
                    if (vm.DealerAddress.Address1.match(POBoxRegex) != null) {
                        address1ContainsPO = true;
                    }
                }
                if (vm.DealerAddress.Address2 != null) {
                    if (vm.DealerAddress.Address2.match(POBoxRegex) != null) {
                        address2ContainsPO = true;
                    }
                }
                if (address1ContainsPO || address2ContainsPO) {
                    return true;
                }
                return false;
            };
            PartTagController.prototype.print = function () {
                var divContents = $(".print").clone();
                var body = $("body").detach();
                document.body = document.createElement("body");
                divContents.appendTo($("body"));
                window.print();
                $("html body").remove();
                body.appendTo($("html"));
            };
            PartTagController.prototype.mileageChanged = function () {
                var vm = this;
                var intWeight = parseInt(vm.Weight, 10);
                if (intWeight > 0) {
                    vm.invalidWeight = false;
                }
                else {
                    vm.invalidWeight = true;
                }
            };
            PartTagController.$inject = ["$state", "$uibModalInstance", "app.services.ReportService", "app.services.SiteService", "app.services.VINService", "app.services.DealerService", "app.services.PartsCatalogService", "PartTagReport", "ERPClaimNumber", "ClaimLaborLineNumber", "ClaimPartLineNumber", "VIN", "division", "app.services.ShipmentTrackingService", "dealerAddress", "app.services.UserService"];
            return PartTagController;
        }());
        angular.module("app.claims")
            .controller("app.claims.PartTagModalController", PartTagController);
    })(parttag = claim.parttag || (claim.parttag = {}));
})(claim || (claim = {}));
//# sourceMappingURL=claims.parttag.modal.controller.js.map
var claim;
(function (claim) {
    var parttagpart;
    (function (parttagpart) {
        "use strict";
        var PartTagPartController = (function () {
            function PartTagPartController($state, $modalInstance, reportService, siteService, vinService, dealerService, partCatalogService, warehouseService, ClaimLaborLineNumber, ClaimPartLineNumber, VIN, division, ClaimNumber, Quantity, Description, SerialNumber, PartTagNumber, DealerNumber, ClaimDealerAddress) {
                this.$state = $state;
                this.$modalInstance = $modalInstance;
                this.reportService = reportService;
                this.siteService = siteService;
                this.vinService = vinService;
                this.dealerService = dealerService;
                this.partCatalogService = partCatalogService;
                this.warehouseService = warehouseService;
                var vm = this;
                vm.controllerReady = true;
                vm.Quantity = Quantity;
                vm.PartTagNumber = PartTagNumber;
                vm.VIN = VIN;
                vm.division = division;
                vm.ClaimNumber = ClaimNumber;
                vm.ClaimPartLineNumber = ClaimPartLineNumber;
                vm.ClaimLaborLineNumber = ClaimLaborLineNumber;
                vm.SerialNumber = SerialNumber;
                vm.PartTagNumber = PartTagNumber;
                vm.DealerNumber = DealerNumber;
                vm.Description = Description;
                vm.ClaimDealerAddress = ClaimDealerAddress;
                vm.partCatalogService.getDivision(division).then(function (divisionResult) {
                    vm.Division = divisionResult;
                })["catch"](function (error) {
                    vm.errorMessage = "Error loading division information";
                });
                vm.dealerService.getDealerByNumber(DealerNumber).then(function (dealerResult) {
                    vm.DealerName = dealerResult.DealerName;
                    vm.DealerPhone = dealerResult.DealerPhone;
                });
                vm.vinService.getVIN(VIN, true).then(function (vinResult) {
                    if (vinResult.Location) {
                        vm.siteService.getPartsSiteReturn(vinResult.Location).then(function (tosite) {
                            if (tosite) {
                                vm.SiteInfo = tosite;
                            }
                            else {
                                vm.siteService.getPortalSiteAddress(vinResult.Site).then(function (result) {
                                    vm.SiteInfo = result;
                                })["catch"](function (error) {
                                    vm.errorMessage = "Error loading site information";
                                });
                            }
                        });
                    }
                })["catch"](function (error) {
                    vm.errorMessage = "Error loading vin information";
                });
            }
            PartTagPartController.prototype.save = function () {
            };
            PartTagPartController.prototype.close = function () {
                this.$modalInstance.dismiss();
            };
            PartTagPartController.prototype.printUPSTag = function () {
                var vm = this;
            };
            PartTagPartController.prototype.print = function () {
                var divContents = $(".print").clone();
                var body = $("body").detach();
                document.body = document.createElement("body");
                divContents.appendTo($("body"));
                window.print();
                $("html body").remove();
                body.appendTo($("html"));
            };
            PartTagPartController.$inject = ["$state", "$uibModalInstance", "app.services.ReportService", "app.services.SiteService", "app.services.VINService", "app.services.DealerService", "app.services.PartsCatalogService", "app.services.WarehouseService",
                "ClaimLaborLineNumber", "ClaimPartLineNumber", "VIN", "division", "ClaimNumber", "Quantity", "Description", "SerialNumber", "PartTagNumber", "DealerNumber", "ClaimDealerAddress"];
            return PartTagPartController;
        }());
        angular.module("app.claims")
            .controller("app.claims.PartTagPartModalController", PartTagPartController);
    })(parttagpart = claim.parttagpart || (claim.parttagpart = {}));
})(claim || (claim = {}));
//# sourceMappingURL=claims.parttagpart.modal.controller.js.map
var partorder;
(function (partorder) {
    var home;
    (function (home) {
        "use strict";
        var ClaimsPhotoModalController = (function () {
            function ClaimsPhotoModalController($state, $modalInstance, isreadonly, $scope, Upload, $timeout, fileUpload, line, claimId, mv360api) {
                var _this = this;
                this.$state = $state;
                this.$modalInstance = $modalInstance;
                this.$scope = $scope;
                this.Upload = Upload;
                this.$timeout = $timeout;
                this.fileUpload = fileUpload;
                this.line = line;
                this.claimId = claimId;
                this.mv360api = mv360api;
                var vm = this;
                vm.isReadOnly = isreadonly;
                fileUpload.getTempURL().then(function (data) {
                    _this.tempURL = data;
                    vm.controllerReady = true;
                });
            }
            ClaimsPhotoModalController.prototype.uploadFiles = function (files) {
                var vm = this;
            };
            ;
            ClaimsPhotoModalController.prototype.close = function () {
                this.$modalInstance.close();
            };
            ClaimsPhotoModalController.prototype.remove = function (fileItem) {
            };
            ClaimsPhotoModalController.prototype.refreshImages = function () {
            };
            ClaimsPhotoModalController.$inject = ["$state", "$uibModalInstance", "isreadonly", "$scope", "Upload", "$timeout", "app.services.FileUploadService", "line", "claimId", "mv360api"];
            return ClaimsPhotoModalController;
        }());
        angular.module("app.claims")
            .controller("app.claims.ClaimsPhotoModalController", ClaimsPhotoModalController);
    })(home = partorder.home || (partorder.home = {}));
})(partorder || (partorder = {}));
//# sourceMappingURL=claims.photo.modal.controller.js.map
var claim;
(function (claim) {
    var parttag;
    (function (parttag) {
        "use strict";
        var ClaimSheet = (function () {
            function ClaimSheet($state, $modalInstance, reportService, siteService, vinService, dealerService, partCatalogService, claimService, partService, warrantyService, feedbackService, VIN, division, ClaimNumber) {
                this.$state = $state;
                this.$modalInstance = $modalInstance;
                this.reportService = reportService;
                this.siteService = siteService;
                this.vinService = vinService;
                this.dealerService = dealerService;
                this.partCatalogService = partCatalogService;
                this.claimService = claimService;
                this.partService = partService;
                this.warrantyService = warrantyService;
                this.feedbackService = feedbackService;
                var vm = this;
                vm.controllerReady = true;
                vm.VIN = VIN;
                vm.division = division;
                vm.ClaimNumber = ClaimNumber;
                vm.hasLaborLines = false;
                vm.hasPartsLines = true;
                vm.claimLineFeedback = [];
                vm.partCatalogService.getDivision(division).then(function (divisionResult) {
                    vm.Division = divisionResult;
                })["catch"](function (error) {
                    vm.errorMessage = "Error loading division information";
                });
                claimService.getClaim(vm.ClaimNumber).then(function (data) {
                    vm.claim = data;
                    vm.claimLineFeedback = [];
                    for (var index = 0; index < vm.claim.Labor.length; index++) {
                        if (!vm.claim.Labor[index].IsDeleted) {
                            if (vm.claim.Labor[index].HasAdjustments || vm.claim.Labor[index].HasFeedback) {
                                vm.feedbackService.getFeedback('Labor', vm.claim.Labor[index].OpRecID).then(function (result) {
                                    $.merge(vm.claimLineFeedback, result);
                                });
                            }
                            if (vm.claim.Labor[index].Parts) {
                                vm.claim.Labor[index].Parts.forEach(function (part) {
                                    if (part.HasFeedback || part.HasAdjustments) {
                                        vm.feedbackService.getFeedback('Part', part.PartRecID).then(function (result) {
                                            $.merge(vm.claimLineFeedback, result);
                                        });
                                    }
                                });
                            }
                        }
                    }
                    vm.getPartTotal();
                    vm.getLaborTotal();
                    vm.submittedClaimTotal = vm.submittedLaborTotal + vm.submittedPartTotal;
                    vm.claimTotal = vm.partTotal + vm.laborTotal;
                })["catch"](function (error) {
                    vm.errorMessage = "Error loading claim information";
                });
                dealerService.getDealer()
                    .then(function (data) {
                    vm.DealerName = data.DealerName;
                    vm.DealerNumber = data.DealerNumber;
                    vm.laborRate = data.LaborRate;
                });
                vm.warrantyService.getWarranty(vm.VIN).then(function (data) {
                    if (data) {
                        vm.Warranty = data;
                    }
                });
                vm.vinService.getVIN(VIN, true).then(function (vinResult) {
                    vm.vinInfo = vinResult;
                    vm.siteService.getSiteInfo(vinResult.Site).then(function (result) {
                        vm.SiteInfo = result;
                    })["catch"](function (error) {
                        vm.errorMessage = "Error loading site information";
                    });
                })["catch"](function (error) {
                    vm.errorMessage = "Error loading vin information";
                });
            }
            ClaimSheet.prototype.save = function () {
            };
            ClaimSheet.prototype.close = function () {
                this.$modalInstance.dismiss();
            };
            ClaimSheet.prototype.printUPSTag = function () {
                var vm = this;
            };
            ClaimSheet.prototype.getLaborTotal = function () {
                var vm = this;
                vm.laborTotal = 0;
                vm.submittedLaborTotal = 0;
                var count = 0;
                for (var i = 0; i < vm.claim.Labor.length; i++) {
                    var labor = vm.claim.Labor[i];
                    vm.laborTotal += labor.ApprovedAmount;
                    vm.submittedLaborTotal += labor.SubmittedLaborAmount;
                    count++;
                }
                if (count > 0) {
                    vm.hasLaborLines = true;
                }
            };
            ClaimSheet.prototype.getLaborNotes = function (labor) {
                var vm = this;
                var notes = "";
                vm.claimLineFeedback.forEach(function (note) {
                    if (note.id == labor.OpRecID) {
                        if (note.Comments != null && note.FeedbackType == "Note") {
                            notes += "<p>" + note.Comments + "</p>";
                        }
                    }
                });
                if (notes == "") {
                    notes = "<p>&nbsp;</p>";
                }
                return notes;
            };
            ClaimSheet.prototype.getPartTotal = function () {
                var vm = this;
                vm.partTotal = 0;
                vm.submittedPartTotal = 0;
                var count = 0;
                for (var i = 0; i < vm.claim.Labor.length; i++) {
                    var labor = vm.claim.Labor[i];
                    for (var j = 0; j < labor.Parts.length; j++) {
                        var part = labor.Parts[j];
                        vm.partTotal += part.ApprovedPartTotal;
                        vm.submittedPartTotal += part.SubmittedPartTotal;
                        count++;
                    }
                }
                if (count > 0) {
                    vm.hasPartsLines = true;
                }
            };
            ClaimSheet.prototype.getPartNotes = function (part) {
                var vm = this;
                var notes = "";
                vm.claimLineFeedback.forEach(function (note) {
                    if (note.id == part.PartRecID) {
                        if (note.Comments != null && note.FeedbackType == "Note") {
                            notes += "<p>" + note.Comments + "</p>";
                        }
                    }
                });
                if (notes == "") {
                    notes = "<p>&nbsp;</p>";
                }
                return notes;
            };
            ClaimSheet.prototype.print = function () {
                var divContents = $(".print").clone();
                var body = $("body").detach();
                document.body = document.createElement("body");
                divContents.appendTo($("body"));
                window.print();
                $("html body").remove();
                body.appendTo($("html"));
            };
            ClaimSheet.$inject = ["$state", "$uibModalInstance", "app.services.ReportService", "app.services.SiteService", "app.services.VINService", "app.services.DealerService",
                "app.services.PartsCatalogService", "app.services.ClaimService", "app.services.PartService", "app.services.WarrantyService", "app.services.FeedbackService", "VIN", "division", "ClaimNumber"];
            return ClaimSheet;
        }());
        angular.module("app.claims")
            .controller("app.claims.ClaimSheet", ClaimSheet);
    })(parttag = claim.parttag || (claim.parttag = {}));
})(claim || (claim = {}));
//# sourceMappingURL=claims.sheet.modal.controller.js.map
var claim;
(function (claim) {
    var parttag;
    (function (parttag) {
        "use strict";
        var ShipTagController = (function () {
            function ShipTagController($state, $modalInstance, reportService, siteService, vinService, dealerService, partCatalogService, PartTagReport, ERPClaimNumber, ClaimLaborLineNumber, ClaimPartLineNumber, VIN, division) {
                this.$state = $state;
                this.$modalInstance = $modalInstance;
                this.reportService = reportService;
                this.siteService = siteService;
                this.vinService = vinService;
                this.dealerService = dealerService;
                this.partCatalogService = partCatalogService;
                this.PartTagReport = PartTagReport;
                this.ERPClaimNumber = ERPClaimNumber;
                this.ClaimLaborLineNumber = ClaimLaborLineNumber;
                this.ClaimPartLineNumber = ClaimPartLineNumber;
                this.VIN = VIN;
                this.division = division;
                var vm = this;
                vm.controllerReady = true;
                vm.InsuredValue = 200;
                vm.partCatalogService.getDivision(division).then(function (divisionResult) {
                    vm.Division = divisionResult;
                })["catch"](function (error) {
                    vm.errorMessage = "Error loading division information";
                });
                vm.dealerService.getDealer().then(function (dealerResult) { vm.DealerName = dealerResult.DealerName; });
                vm.vinService.getVIN(VIN).then(function (vinResult) {
                    vm.siteService.getSiteInfo(vinResult.Site).then(function (result) {
                        vm.SiteInfo = result;
                        vm.dealerService.getAddresses().then(function (addressResult) {
                            for (var index = 0; index < addressResult.length; index++) {
                                if (addressResult[index].IsPrimary) {
                                    vm.DealerAddress = addressResult[index];
                                    return;
                                }
                                vm.errorMessage = "No Primary Dealer Address found";
                            }
                        })["catch"](function (error) {
                            vm.errorMessage = "Error retrieving Dealer Address";
                        });
                    })["catch"](function (error) {
                        vm.errorMessage = "Error loading site information";
                    });
                })["catch"](function (error) {
                    vm.errorMessage = "Error loading vin information";
                });
            }
            ShipTagController.prototype.save = function () {
            };
            ShipTagController.prototype.close = function () {
                this.$modalInstance.dismiss();
            };
            ShipTagController.prototype.setdata = function () {
                var vm = this;
                $("#Company").val(vm.Division.PartTagUPSCompany);
                $("#LoginId").val(vm.Division.PartTagUPSUsername);
                $("#Password").val(vm.Division.PartTagUPSPassword);
                $("#AcctNumb").val(vm.Division.PartTagUPSAccNumb);
                $("#PayAccount").val(vm.Division.PartTagUPSPayAccount);
                $("#PayInfo").val(vm.Division.PartTagUPSPayInfo);
                if (vm.Division.PartTagUPSUseNegotiatedRate) {
                    $("#UseNegotiatedRates").val("true");
                }
                else {
                    $("#UseNegotiatedRates").val("false");
                }
                $("#SFName").val(vm.DealerName);
                $("#SFPhone").val(vm.DealerAddress.RetailPhone);
                $("#SFAddr1").val(vm.DealerAddress.Address1);
                $("#SFAddr2").val(vm.DealerAddress.Address2);
                $("#SFCity").val(vm.DealerAddress.City);
                $("#SFState").val(vm.DealerAddress.StateOrProvince);
                $("#SFZip").val(vm.DealerAddress.PostalCode);
                $("#SFCountry").val(vm.DealerAddress.Country.substr(0, 2));
                $("#STAddr1").val(vm.SiteInfo.Address1);
                $("#STAddr2").val(vm.SiteInfo.Address2);
                $("#STCity").val(vm.SiteInfo.City);
                $("#STState").val(vm.SiteInfo.StateOrProvince);
                $("#STZip").val(vm.SiteInfo.PostalCode);
                $("#STCountry").val(vm.SiteInfo.Country.substr(0, 2));
                $("#PackageLength").val(vm.Length);
                $("#PackageHeight").val(vm.Width);
                $("#PackageWidth").val(vm.Height);
                $("#PackageWeight").val(vm.Weight);
                $("#PackageInsuredValue").val(vm.InsuredValue.toString());
                var ref1 = vm.ERPClaimNumber.replace("-", "");
                $("#PackageRef01").val(ref1);
                $("#PackageRef02").val(vm.VIN);
                $("#PackageRef03").val(vm.Description);
                if (vm.DealerAddress.Country.substr(0, 2).toUpperCase() == "US") {
                    $("#ServiceCode").val("03");
                }
                else {
                    $("#ServiceCode").val("11");
                    $("#STPhone").val("5745343167");
                }
                $("#Desc").val(vm.Weight + " lbs, " + vm.Length + " x " + vm.Width + " x " + vm.Height + " inches");
            };
            ShipTagController.prototype.printUPSTag = function () {
                var vm = this;
                vm.setdata();
                $("#upsform").submit();
                vm.close();
            };
            ShipTagController.prototype.print = function () {
                var divContents = $(".print").clone();
                var body = $("body").detach();
                document.body = document.createElement("body");
                divContents.appendTo($("body"));
                window.print();
                $("html body").remove();
                body.appendTo($("html"));
            };
            ShipTagController.$inject = ["$state", "$uibModalInstance", "app.services.ReportService", "app.services.SiteService", "app.services.VINService", "app.services.DealerService", "app.services.PartsCatalogService", "PartTagReport", "ERPClaimNumber", "ClaimLaborLineNumber", "ClaimPartLineNumber", "VIN", "division"];
            return ShipTagController;
        }());
        angular.module("app.claims")
            .controller("app.claims.ShipTagModalController", ShipTagController);
    })(parttag = claim.parttag || (claim.parttag = {}));
})(claim || (claim = {}));
//# sourceMappingURL=claims.shiptag.modal.controller.js.map
var claim;
(function (claim) {
    var split;
    (function (split) {
        "use strict";
        var SplitModalController = (function () {
            function SplitModalController($modalInstance, claimService, feedbackService, targetClaim, targetLaborRate) {
                this.$modalInstance = $modalInstance;
                this.claimService = claimService;
                this.feedbackService = feedbackService;
                this.targetClaim = targetClaim;
                this.targetLaborRate = targetLaborRate;
                var vm = this;
                vm.claim = targetClaim;
                vm.LaborRate = targetLaborRate;
                vm.targetLaborLines = [];
            }
            SplitModalController.prototype.getSelectedLaborLines = function (labor) {
                var vm = this;
                if (vm.targetLaborLines != undefined && vm.targetLaborLines.indexOf(labor) > -1) {
                    vm.targetLaborLines.splice(vm.targetLaborLines.indexOf(labor), 1);
                }
                else {
                    vm.targetLaborLines.push(labor);
                }
            };
            SplitModalController.prototype.cancel = function () {
                this.$modalInstance.dismiss('cancel');
            };
            SplitModalController.prototype.split = function () {
                var _this = this;
                var vm = this;
                var laborRecs = [];
                var partRecs = [];
                var emptyLabor = "";
                var newClaim = new app.services.IClaim();
                newClaim.ClaimStatus = vm.claim.ClaimStatus;
                newClaim.ClaimStatusId = vm.claim.ClaimStatusId;
                newClaim.VIN = vm.claim.VIN;
                newClaim.Mileage = vm.claim.Mileage;
                newClaim.DealerContact = vm.claim.DealerContact;
                newClaim.DealerNumber = vm.claim.DealerNumber;
                newClaim.DealerReference = vm.claim.DealerReference;
                newClaim.ChassisNumber = vm.claim.ChassisNumber;
                newClaim.Owner = vm.claim.Owner;
                newClaim.Make = vm.claim.Make;
                newClaim.Model = vm.claim.Model;
                newClaim.Year = vm.claim.Year;
                newClaim.CreatedBy = vm.claim.CreatedBy;
                newClaim.WarrantyStartDate = vm.claim.WarrantyStartDate;
                newClaim.WarrantyEndDate = vm.claim.WarrantyEndDate;
                newClaim.LaborRate = vm.targetLaborRate;
                newClaim.FrPortalLock = vm.claim.FrPortalLock;
                newClaim.DealerAddressRecID = vm.claim.DealerAddressRecID;
                newClaim.DealerAddress = vm.claim.DealerAddress;
                newClaim.Labor = new Array();
                vm.targetLaborLines.forEach(function (labor) {
                    laborRecs.push(labor.OpRecID);
                    labor.Parts.forEach(function (part) {
                        partRecs.push(part.PartRecID);
                    });
                });
                vm.claimService.addClaim(newClaim, false, false)
                    .then(function (claimNumber) {
                    if (claimNumber) {
                        newClaim.ClaimNumber = claimNumber;
                        var claimLines = new app.services.IClaimLineRecIDs;
                        {
                            claimLines.laborRecIDs = laborRecs,
                                claimLines.partRecIDs = partRecs;
                        }
                        ;
                        var hasNotes = false;
                        vm.claimService.splitClaimLines(vm.claim.ClaimNumber, claimNumber, claimLines).then(function (message) {
                            newClaim.Labor = vm.targetLaborLines;
                            _this.$modalInstance.close(newClaim);
                        });
                    }
                    else {
                        _this.$modalInstance.dismiss("The new claim was not created sucessfully.");
                    }
                })["catch"](function (error) {
                    _this.$modalInstance.dismiss("The new claim was not created sucessfully.");
                });
            };
            SplitModalController.prototype.addFeedback = function (note, overrideStatus, claimStatusForOverride) {
                var vm = this;
                var feedbackitem = new app.services.IFeedbackItem();
                feedbackitem.ERPRecordId = note.ERPRecordId;
                feedbackitem.LineType = note.LineType;
                feedbackitem.Comments = note.Comments;
                feedbackitem.Title = note.Title;
                feedbackitem.FeedbackType = note.FeedbackType;
                feedbackitem.CreatedOn = feedbackitem.CreatedOn;
                feedbackitem.FileName = note.FileName;
                feedbackitem.CreatedByUserName = note.CreatedByUserName;
                if (note.FeedbackType == "Feedback")
                    claimStatusForOverride = "Feedback";
                else
                    claimStatusForOverride = "Draft";
                vm.feedbackService.postFeedbackForSplits(feedbackitem, overrideStatus, claimStatusForOverride, true).then(function (result) { });
            };
            SplitModalController.prototype.CopyArray = function (o) {
                var output, v, key;
                output = Array.isArray(o) ? [] : {};
                for (key in o) {
                    v = o[key];
                    output[key] = (typeof v === "object") ? this.CopyArray(v) : v;
                }
                return output;
            };
            SplitModalController.$inject = ["$uibModalInstance", "app.services.ClaimService", "app.services.FeedbackService", "targetClaim", "targetLaborRate"];
            return SplitModalController;
        }());
        angular.module("app.claims")
            .controller("app.claims.SplitController", SplitModalController);
    })(split = claim.split || (claim.split = {}));
})(claim || (claim = {}));
//# sourceMappingURL=claims.split.modal.controller.js.map
var contact;
(function (contact) {
    var home;
    (function (home) {
        "use strict";
        var ContactController = (function () {
            function ContactController($state, $modal, mv360api, dealerConnectContactService) {
                this.$state = $state;
                this.$modal = $modal;
                this.mv360api = mv360api;
                this.dealerConnectContactService = dealerConnectContactService;
                var vm = this;
                vm.getDealerConnectContactList();
            }
            ContactController.prototype.getDealerConnectContactList = function () {
                var vm = this;
                vm.dealerConnectContactService.getDealerConnectContacts().then(function (result) {
                    vm.dealerBrands = result;
                });
            };
            ContactController.$inject = ["$state", "$uibModal", "mv360api", "app.services.DealerConnectContactService"];
            return ContactController;
        }());
        angular.module("app.contact")
            .controller("app.contact.ContactController", ContactController);
    })(home = contact.home || (contact.home = {}));
})(contact || (contact = {}));
//# sourceMappingURL=contact.controller.js.map
var documents;
(function (documents) {
    var home;
    (function (home) {
        "use strict";
        var DocumentsBusController = (function () {
            function DocumentsBusController($state, docService, $modal, $window, loginService) {
                this.$state = $state;
                this.docService = docService;
                this.$modal = $modal;
                this.$window = $window;
                this.loginService = loginService;
                var vm = this;
                vm.directories = null;
                vm.displayedDirectory = null;
                vm.showMainMenu = false;
                vm.showMediaLinks = false;
                vm.showPolicyLinks = true;
                vm.showVendorLinks = false;
                vm.showTechnicalTraining = false;
                vm.menuNavigation = "Documents Bus";
                vm.baseFolder = "Documents Bus";
                vm.folder = "Documents";
                vm.linkStart = "/files/Documents";
                vm.docService.getSpecificDocuments("Documents").then(function (data) {
                    vm.directories = data;
                    vm.displayedDirectory = vm.directories;
                    vm.parentDirectory = null;
                });
            }
            DocumentsBusController.prototype.search = function (searchService, page) {
                var vm = this;
                var query = new app.services.SearchQuery();
                query.PageSize = page.PageSize;
                query.CurrentPage = page.CurrentPage;
                query.SortField = page.SortField;
                query.SortAscending = page.SortDesc;
                var filter = new app.services.DocumentSearchQueryFilter();
                filter.Folder = page.SearchField.Folder;
                filter.DocDate = page.SearchField.Month + "/" + page.SearchField.Year;
                filter.ERPPartOrderNumber = page.SearchField.ERPPartOrderNumber;
                query.Filter = filter;
                searchService.searchInvoices(query).then(function (data) {
                    data.Results = data.Results.filter(function (doc) {
                        if (doc.RelatedTo == filter.ERPPartOrderNumber) {
                            return doc;
                        }
                    });
                    data.TotalResultCount = data.Results.length;
                    if (filter.Folder.indexOf("\\") > 0) {
                        var navigateUp = new app.services.DocumentSearchItem();
                        navigateUp.ItemType = "FolderUp";
                        navigateUp.Folder = page.SearchField.UpFolder;
                        navigateUp.FileName = "Navigate Up";
                        data.Results.unshift(navigateUp);
                    }
                    page.Update(data);
                });
            };
            DocumentsBusController.prototype.searchDocuments = function () {
                var vm = this;
                vm.folder = 'Search Results';
                vm.docService.geSearchSpecificDocuments("Documents", vm.searchText).then(function (data) {
                    vm.directories = data;
                    vm.displayedDirectory = vm.directories;
                    vm.parentDirectory = null;
                });
            };
            DocumentsBusController.prototype.folderLevelDown = function (val) {
                var vm = this;
                vm.parentDirectory = vm.displayedDirectory;
                angular.forEach(vm.parentDirectory.ChildDirectories, function (value, key) {
                    if (val.Path == value.Path) {
                        vm.displayedDirectory = value;
                        vm.folder = vm.folder + " > " + value.Name;
                    }
                });
            };
            DocumentsBusController.prototype.folderLevelUp = function () {
                var vm = this;
                vm.folder = vm.folder.substring(0, vm.folder.lastIndexOf(" > " + vm.displayedDirectory.Name));
                vm.displayedDirectory = vm.parentDirectory;
                console.log(vm.displayedDirectory.Path);
                if (vm.parentDirectory.Path == vm.directories.Path) {
                    vm.parentDirectory = null;
                }
                else {
                    var nextLevels = vm.parentDirectory.Path.replace(vm.directories.Path, "").split('\\');
                    nextLevels.shift();
                    if (nextLevels.length > 1) {
                        vm.parentDirectory = vm.GetParent(vm.directories, nextLevels);
                    }
                    else {
                        vm.parentDirectory = vm.directories;
                    }
                }
            };
            DocumentsBusController.prototype.GetParent = function (directory, levels) {
                var newDirectory = null;
                var vm = this;
                angular.forEach(directory.ChildDirectories, function (value, key) {
                    if (levels[0] == value.Name) {
                        newDirectory = value;
                    }
                });
                if (newDirectory == null) {
                    levels.shift();
                    newDirectory = vm.GetParent(directory, levels);
                    return newDirectory;
                }
                levels.shift();
                if (levels.length > 0) {
                    newDirectory = vm.GetParent(newDirectory, levels);
                    return newDirectory;
                }
                else {
                    return directory;
                }
            };
            DocumentsBusController.prototype.folderNavigation = function () {
                var vm = this;
                return vm.folder.replace("\\", " > ").split(" > ");
            };
            DocumentsBusController.prototype.currentFolderNavigation = function () {
                var vm = this;
                if (vm.baseFolder.length == 0) {
                    var folderStructure = vm.folder.split(" > ");
                    return folderStructure[folderStructure.length - 1].replace("\\", "");
                }
                else {
                    var displayLocation = vm.baseFolder;
                    vm.baseFolder = "";
                    return displayLocation;
                }
            };
            DocumentsBusController.prototype.folderLevel = function (index) {
                var vm = this;
                var path = vm.folder.split(' > ');
                path.length = index + 1;
                vm.folder = path.join(' > ');
                var levels = vm.displayedDirectory.Path.replace(vm.directories.Path, "").split('\\');
                levels.shift();
                levels.length = index + 1;
                if (levels.length > 1) {
                    vm.showFileSize = true;
                    vm.displayedDirectory = vm.GetParent(vm.directories, levels);
                    var nextLevels = vm.displayedDirectory.Path.replace(vm.directories.Path, "").split('\\');
                    nextLevels.shift();
                    vm.parentDirectory = vm.GetParent(vm.directories, nextLevels);
                }
                else {
                    vm.showFileSize = false;
                    vm.displayedDirectory = vm.directories;
                    vm.parentDirectory = null;
                }
            };
            DocumentsBusController.prototype.getUpFolder = function (folder) {
                var lastSlash = folder.lastIndexOf("\\");
                return folder.slice(0, lastSlash);
            };
            DocumentsBusController.prototype.setDirLocation = function (dir) {
                var vm = this;
                var location = dir.Path.replace(vm.directories.Path + "\\", "").replace(/\\/g, "/");
                return "Documents/" + location;
            };
            DocumentsBusController.prototype.setFileLocation = function (file) {
                var vm = this;
                var location = file.Path.replace(vm.directories.Path + "\\", "").replace("\\" + file.Name, "").replace(/\\/g, "/");
                return "Documents/" + location;
            };
            DocumentsBusController.prototype.select = function (item) {
                console.log("select");
                var vm = this;
                if (item.ItemType == "Folder") {
                    var newfolder = vm.folder += "\\" + item.FileName;
                    vm.$state.go("documents", { "folder": newfolder });
                }
                else if (item.ItemType == "FolderUp") {
                    vm.$state.go("documents", { "folder": item.Folder });
                }
                else {
                    console.log("file click");
                    if (!item.URL) {
                        vm.docService.downloadFileContents(item.Folder, item.FileName).then(function (result) {
                            var iframe = document.getElementById('invisible');
                            iframe.src = "data:application/pdf;base64," + result;
                        });
                    }
                    else {
                        vm.$window.open(item.URL, '_blank');
                    }
                }
            };
            DocumentsBusController.$inject = ["$state", "app.services.DocumentService", "$uibModal", "$window", "app.services.LoginService"];
            return DocumentsBusController;
        }());
        angular.module("app.documents")
            .controller("app.documents.DocumentsBusController", DocumentsBusController);
    })(home = documents.home || (documents.home = {}));
})(documents || (documents = {}));
//# sourceMappingURL=documents.bus.controller.js.map
var documents;
(function (documents) {
    var home;
    (function (home) {
        "use strict";
        var DocumentsController = (function () {
            function DocumentsController($state, docService, $modal, $window, loginService) {
                this.$state = $state;
                this.docService = docService;
                this.$modal = $modal;
                this.$window = $window;
                this.loginService = loginService;
                var vm = this;
                vm.folder = $state.params['folder'];
                vm.baseFolder = "";
                vm.menuNavigation = "Forest River Documents & Links";
                vm.showMainMenu = true;
                vm.showMediaLinks = false;
                vm.showPolicyLinks = false;
                vm.showVendorLinks = false;
                vm.showTechnicalTraining = false;
                vm.showFileSize = true;
                if (!vm.folder) {
                    vm.folder = '';
                }
                else {
                    console.log("param folder");
                    console.log(vm.folder);
                }
                vm.linkStart = "/files";
            }
            DocumentsController.prototype.folderLevelDown = function (val) {
                var vm = this;
                vm.parentDirectory = vm.displayedDirectory;
                angular.forEach(vm.parentDirectory.ChildDirectories, function (value, key) {
                    if (val.Path == value.Path) {
                        vm.displayedDirectory = value;
                        vm.folder = vm.folder + " > " + value.Name;
                    }
                });
            };
            DocumentsController.prototype.folderLevelUp = function () {
                var vm = this;
                vm.folder = vm.folder.substring(0, vm.folder.lastIndexOf(" > " + vm.displayedDirectory.Name));
                vm.displayedDirectory = vm.parentDirectory;
                console.log(vm.displayedDirectory.Path);
                if (vm.parentDirectory.Path == vm.directories.Path) {
                    vm.parentDirectory = null;
                }
                else {
                    var nextLevels = vm.parentDirectory.Path.replace(vm.directories.Path, "").split('\\');
                    nextLevels.shift();
                    if (nextLevels.length > 1) {
                        vm.parentDirectory = vm.GetParent(vm.directories, nextLevels);
                    }
                    else {
                        vm.parentDirectory = vm.directories;
                    }
                }
            };
            DocumentsController.prototype.GetParent = function (directory, levels) {
                var newDirectory = null;
                var vm = this;
                angular.forEach(directory.ChildDirectories, function (value, key) {
                    if (levels[0] == value.Name) {
                        newDirectory = value;
                    }
                });
                if (newDirectory == null) {
                    levels.shift();
                    newDirectory = vm.GetParent(directory, levels);
                    return newDirectory;
                }
                levels.shift();
                if (levels.length > 0) {
                    newDirectory = vm.GetParent(newDirectory, levels);
                    return newDirectory;
                }
                else {
                    return directory;
                }
            };
            DocumentsController.prototype.searchDocuments = function () {
                var vm = this;
                vm.folder = 'Search Results';
                vm.docService.searchDocuments(vm.searchText).then(function (data) {
                    vm.directories = data;
                    vm.displayedDirectory = vm.directories;
                    vm.parentDirectory = null;
                });
            };
            DocumentsController.prototype.searchPolicyDocuments = function () {
                var vm = this;
                vm.folder = 'Search Results';
                vm.docService.searchDocuments(vm.searchText).then(function (data) {
                    vm.directories = data;
                    vm.displayedDirectory = vm.directories;
                    vm.parentDirectory = null;
                });
            };
            DocumentsController.prototype.search = function (searchService, page) {
                var vm = this;
                var query = new app.services.SearchQuery();
                query.PageSize = page.PageSize;
                query.CurrentPage = page.CurrentPage;
                query.SortField = page.SortField;
                query.SortAscending = page.SortDesc;
                var filter = new app.services.DocumentSearchQueryFilter();
                filter.Folder = page.SearchField.Folder;
                filter.DocDate = page.SearchField.Month + "/" + page.SearchField.Year;
                filter.SimpleSearch = page.SearchField.SearchText;
                query.Filter = filter;
                searchService.searchAdvanced(query).then(function (data) {
                    if (filter.Folder.indexOf("\\") > 0) {
                        var navigateUp = new app.services.DocumentSearchItem();
                        navigateUp.ItemType = "FolderUp";
                        navigateUp.Folder = page.SearchField.UpFolder;
                        navigateUp.FileName = "Navigate Up";
                        data.Results.unshift(navigateUp);
                    }
                    page.Update(data);
                });
            };
            DocumentsController.prototype.folderNavigation = function () {
                var vm = this;
                return vm.folder.replace("\\", " > ").split(" > ");
            };
            DocumentsController.prototype.currentFolderNavigation = function () {
                var vm = this;
                if (vm.baseFolder.length == 0) {
                    var folderStructure = vm.folder.split(" > ");
                    return folderStructure[folderStructure.length - 1].replace("\\", "");
                }
                else {
                    var displayLocation = vm.baseFolder;
                    vm.baseFolder = "";
                    return displayLocation;
                }
            };
            DocumentsController.prototype.getUpFolder = function (folder) {
                var lastSlash = folder.lastIndexOf("\\");
                return folder.slice(0, lastSlash);
            };
            DocumentsController.prototype.setDirLocation = function (dir) {
                var vm = this;
                var location = dir.Path.replace(vm.directories.Path + "\\", "").replace(/\\/g, "/");
                return location;
            };
            DocumentsController.prototype.setFileLocation = function (file) {
                var vm = this;
                var location = file.Path.replace(vm.directories.Path + "\\", "").replace("\\" + file.Name, "").replace(/\\/g, "/");
                return location;
            };
            DocumentsController.prototype.select = function (item) {
                console.log("select");
                var vm = this;
                if (item.ItemType == "Folder") {
                    var newfolder = vm.folder += "\\" + item.FileName;
                    vm.$state.go("documents", { "folder": newfolder });
                }
                else if (item.ItemType == "FolderUp") {
                    vm.$state.go("documents", { "folder": item.Folder });
                }
                else {
                    console.log("file click");
                    if (!item.URL) {
                        vm.docService.downloadFileContents(item.Folder, item.FileName).then(function (result) {
                            var iframe = document.getElementById('invisible');
                            iframe.src = "data:application/pdf;base64," + result;
                        });
                    }
                    else {
                        vm.$window.open(item.URL, '_blank');
                    }
                }
            };
            DocumentsController.prototype.MenuSelect = function (option) {
                var vm = this;
                switch (option) {
                    case "Menu":
                        vm.showMainMenu = false;
                        vm.showMediaLinks = false;
                        vm.showPolicyLinks = false;
                        vm.showVendorLinks = false;
                        vm.showTechnicalTraining = false;
                        vm.baseFolder = "";
                        vm.menuNavigation = "Forest River Documents & Links";
                        vm.linkStart = "/files";
                        vm.folder = "";
                        vm.docService.getDocuments().then(function (data) {
                            vm.directories = data;
                            vm.displayedDirectory = vm.directories;
                            vm.parentDirectory = null;
                        });
                        break;
                    case "Media":
                        vm.showMainMenu = false;
                        vm.showMediaLinks = true;
                        vm.showPolicyLinks = false;
                        vm.showVendorLinks = false;
                        vm.showTechnicalTraining = false;
                        vm.folder = "";
                        vm.docService.getSpecificDocuments("Media").then(function (data) {
                            vm.directories = data;
                            vm.displayedDirectory = vm.directories;
                            vm.parentDirectory = null;
                        });
                        vm.menuNavigation = "Media Links & Documents";
                        vm.baseFolder = "Media Links & Documents";
                        break;
                    case "Policy":
                        vm.directories = null;
                        vm.displayedDirectory = null;
                        vm.showMainMenu = false;
                        vm.showMediaLinks = false;
                        vm.showPolicyLinks = true;
                        vm.showVendorLinks = false;
                        vm.showTechnicalTraining = false;
                        vm.menuNavigation = "Policy & Procedure";
                        vm.baseFolder = "Policy & Procedure";
                        vm.folder = "Policy";
                        vm.linkStart = "/files/Policy";
                        vm.docService.getSpecificDocuments("Policy").then(function (data) {
                            vm.directories = data;
                            vm.displayedDirectory = vm.directories;
                            vm.parentDirectory = null;
                        });
                        break;
                    case "Vendor":
                        vm.showMainMenu = false;
                        vm.showMediaLinks = false;
                        vm.showPolicyLinks = false;
                        vm.showVendorLinks = true;
                        vm.showTechnicalTraining = false;
                        vm.folder = "Vendor";
                        vm.linkStart = "/files/Vendor";
                        vm.docService.getSpecificDocuments("Vendor").then(function (data) {
                            vm.directories = data;
                            vm.displayedDirectory = vm.directories;
                            vm.parentDirectory = null;
                        });
                        vm.menuNavigation = "Vendor Links & Technical Bulletins";
                        vm.baseFolder = "Vendor Links & Technical Bulletins";
                        break;
                    case "TechTraining":
                        vm.showMainMenu = false;
                        vm.showMediaLinks = false;
                        vm.showPolicyLinks = false;
                        vm.showVendorLinks = false;
                        vm.showTechnicalTraining = true;
                        vm.folder = "Dealer and Technician Support";
                        vm.linkStart = "/files/Dealer and Technician Support";
                        vm.menuNavigation = "Forest River Technical Training";
                        vm.baseFolder = "Forest River Technical Training";
                        vm.docService.getSpecificDocuments("Dealer and Technician Support").then(function (data) {
                            vm.directories = data;
                            vm.displayedDirectory = vm.directories;
                            vm.parentDirectory = null;
                        });
                        break;
                    case "FlatRate":
                        vm.directories = null;
                        vm.displayedDirectory = null;
                        vm.showMainMenu = false;
                        vm.showMediaLinks = false;
                        vm.showPolicyLinks = true;
                        vm.showVendorLinks = false;
                        vm.showTechnicalTraining = false;
                        vm.menuNavigation = "Flat Rate";
                        vm.baseFolder = "Flat Rate";
                        vm.folder = "Flat Rate Documents";
                        vm.linkStart = "/files/Flat Rate Documents";
                        vm.docService.getSpecificDocuments("Flat Rate Documents").then(function (data) {
                            vm.directories = data;
                            vm.displayedDirectory = vm.directories;
                            vm.parentDirectory = null;
                        });
                        break;
                    default:
                }
            };
            DocumentsController.prototype.policyPageShow = function () {
                this.$state.go("documentspolicy");
            };
            DocumentsController.prototype.flatRatePageShow = function () {
                this.$state.go("flatratedocuments");
            };
            DocumentsController.prototype.techTrainingPageShow = function () {
                this.$state.go("documentstraining");
            };
            DocumentsController.prototype.dealerTrainingPageShow = function () {
                this.$state.go("training");
            };
            DocumentsController.prototype.busDocumentsShow = function () {
                this.$state.go("documentsbus");
            };
            DocumentsController.$inject = ["$state", "app.services.DocumentService", "$uibModal", "$window", "app.services.LoginService"];
            return DocumentsController;
        }());
        angular.module("app.documents")
            .controller("app.documents.DocumentsController", DocumentsController);
    })(home = documents.home || (documents.home = {}));
})(documents || (documents = {}));
//# sourceMappingURL=documents.controller.js.map
var documents;
(function (documents) {
    var home;
    (function (home) {
        "use strict";
        var DocumentsFlatRateController = (function () {
            function DocumentsFlatRateController($state, docService, $modal, $window, loginService) {
                this.$state = $state;
                this.docService = docService;
                this.$modal = $modal;
                this.$window = $window;
                this.loginService = loginService;
                var vm = this;
                vm.directories = null;
                vm.displayedDirectory = null;
                vm.showMainMenu = false;
                vm.showMediaLinks = false;
                vm.showPolicyLinks = true;
                vm.showVendorLinks = false;
                vm.showTechnicalTraining = false;
                vm.menuNavigation = "Flat Rate ";
                vm.baseFolder = "Flat Rate";
                vm.folder = "Flat Rate Documents";
                vm.linkStart = "/files/Flat Rate Documents";
                vm.docService.getSpecificDocuments("Flat Rate Documents").then(function (data) {
                    vm.directories = data;
                    vm.displayedDirectory = vm.directories;
                    vm.parentDirectory = null;
                });
            }
            DocumentsFlatRateController.prototype.search = function (searchService, page) {
                var vm = this;
                var query = new app.services.SearchQuery();
                query.PageSize = page.PageSize;
                query.CurrentPage = page.CurrentPage;
                query.SortField = page.SortField;
                query.SortAscending = page.SortDesc;
                var filter = new app.services.DocumentSearchQueryFilter();
                filter.Folder = page.SearchField.Folder;
                filter.DocDate = page.SearchField.Month + "/" + page.SearchField.Year;
                filter.ERPPartOrderNumber = page.SearchField.ERPPartOrderNumber;
                query.Filter = filter;
                searchService.searchInvoices(query).then(function (data) {
                    data.Results = data.Results.filter(function (doc) {
                        if (doc.RelatedTo == filter.ERPPartOrderNumber) {
                            return doc;
                        }
                    });
                    data.TotalResultCount = data.Results.length;
                    if (filter.Folder.indexOf("\\") > 0) {
                        var navigateUp = new app.services.DocumentSearchItem();
                        navigateUp.ItemType = "FolderUp";
                        navigateUp.Folder = page.SearchField.UpFolder;
                        navigateUp.FileName = "Navigate Up";
                        data.Results.unshift(navigateUp);
                    }
                    page.Update(data);
                });
            };
            DocumentsFlatRateController.prototype.searchDocuments = function () {
                var vm = this;
                vm.folder = 'Search Results';
                vm.docService.geSearchSpecificDocuments("Flat Rate Documents", vm.searchText).then(function (data) {
                    vm.directories = data;
                    vm.displayedDirectory = vm.directories;
                    vm.parentDirectory = null;
                });
            };
            DocumentsFlatRateController.prototype.folderLevelDown = function (val) {
                var vm = this;
                vm.parentDirectory = vm.displayedDirectory;
                angular.forEach(vm.parentDirectory.ChildDirectories, function (value, key) {
                    if (val.Path == value.Path) {
                        vm.displayedDirectory = value;
                        vm.folder = vm.folder + " > " + value.Name;
                    }
                });
            };
            DocumentsFlatRateController.prototype.folderLevelUp = function () {
                var vm = this;
                vm.folder = vm.folder.substring(0, vm.folder.lastIndexOf(" > " + vm.displayedDirectory.Name));
                vm.displayedDirectory = vm.parentDirectory;
                console.log(vm.displayedDirectory.Path);
                if (vm.parentDirectory.Path == vm.directories.Path) {
                    vm.parentDirectory = null;
                }
                else {
                    var nextLevels = vm.parentDirectory.Path.replace(vm.directories.Path, "").split('\\');
                    nextLevels.shift();
                    if (nextLevels.length > 1) {
                        vm.parentDirectory = vm.GetParent(vm.directories, nextLevels);
                    }
                    else {
                        vm.parentDirectory = vm.directories;
                    }
                }
            };
            DocumentsFlatRateController.prototype.GetParent = function (directory, levels) {
                var newDirectory = null;
                var vm = this;
                angular.forEach(directory.ChildDirectories, function (value, key) {
                    if (levels[0] == value.Name) {
                        newDirectory = value;
                    }
                });
                if (newDirectory == null) {
                    levels.shift();
                    newDirectory = vm.GetParent(directory, levels);
                    return newDirectory;
                }
                levels.shift();
                if (levels.length > 0) {
                    newDirectory = vm.GetParent(newDirectory, levels);
                    return newDirectory;
                }
                else {
                    return directory;
                }
            };
            DocumentsFlatRateController.prototype.folderNavigation = function () {
                var vm = this;
                return vm.folder.replace("\\", " > ").split(" > ");
            };
            DocumentsFlatRateController.prototype.currentFolderNavigation = function () {
                var vm = this;
                if (vm.baseFolder.length == 0) {
                    var folderStructure = vm.folder.split(" > ");
                    return folderStructure[folderStructure.length - 1].replace("\\", "");
                }
                else {
                    var displayLocation = vm.baseFolder;
                    vm.baseFolder = "";
                    return displayLocation;
                }
            };
            DocumentsFlatRateController.prototype.folderLevel = function (index) {
                var vm = this;
                var path = vm.folder.split(' > ');
                path.length = index + 1;
                vm.folder = path.join(' > ');
                var levels = vm.displayedDirectory.Path.replace(vm.directories.Path, "").split('\\');
                levels.shift();
                levels.length = index + 1;
                if (levels.length > 1) {
                    vm.showFileSize = true;
                    vm.displayedDirectory = vm.GetParent(vm.directories, levels);
                    var nextLevels = vm.displayedDirectory.Path.replace(vm.directories.Path, "").split('\\');
                    nextLevels.shift();
                    vm.parentDirectory = vm.GetParent(vm.directories, nextLevels);
                }
                else {
                    vm.showFileSize = false;
                    vm.displayedDirectory = vm.directories;
                    vm.parentDirectory = null;
                }
            };
            DocumentsFlatRateController.prototype.getUpFolder = function (folder) {
                var lastSlash = folder.lastIndexOf("\\");
                return folder.slice(0, lastSlash);
            };
            DocumentsFlatRateController.prototype.setDirLocation = function (dir) {
                var vm = this;
                var location = dir.Path.replace(vm.directories.Path + "\\", "").replace(/\\/g, "/");
                return "Flat Rate Documents/" + location;
            };
            DocumentsFlatRateController.prototype.setFileLocation = function (file) {
                var vm = this;
                var location = file.Path.replace(vm.directories.Path + "\\", "").replace("\\" + file.Name, "").replace(/\\/g, "/");
                return "Flat Rate Documents/" + location;
            };
            DocumentsFlatRateController.prototype.select = function (item) {
                console.log("select");
                var vm = this;
                if (item.ItemType == "Folder") {
                    var newfolder = vm.folder += "\\" + item.FileName;
                    vm.$state.go("documents", { "folder": newfolder });
                }
                else if (item.ItemType == "FolderUp") {
                    vm.$state.go("documents", { "folder": item.Folder });
                }
                else {
                    console.log("file click");
                    if (!item.URL) {
                        vm.docService.downloadFileContents(item.Folder, item.FileName).then(function (result) {
                            var iframe = document.getElementById('invisible');
                            iframe.src = "data:application/pdf;base64," + result;
                        });
                    }
                    else {
                        vm.$window.open(item.URL, '_blank');
                    }
                }
            };
            DocumentsFlatRateController.$inject = ["$state", "app.services.DocumentService", "$uibModal", "$window", "app.services.LoginService"];
            return DocumentsFlatRateController;
        }());
        angular.module("app.documents")
            .controller("app.documents.DocumentsFlatRateController", DocumentsFlatRateController);
    })(home = documents.home || (documents.home = {}));
})(documents || (documents = {}));
//# sourceMappingURL=documents.flatRate.controller.js.map
var documents;
(function (documents) {
    var home;
    (function (home) {
        "use strict";
        var DocumentsPolicyController = (function () {
            function DocumentsPolicyController($state, docService, $modal, $window, loginService) {
                this.$state = $state;
                this.docService = docService;
                this.$modal = $modal;
                this.$window = $window;
                this.loginService = loginService;
                var vm = this;
                vm.directories = null;
                vm.displayedDirectory = null;
                vm.showMainMenu = false;
                vm.showMediaLinks = false;
                vm.showPolicyLinks = true;
                vm.showVendorLinks = false;
                vm.showTechnicalTraining = false;
                vm.menuNavigation = "Policy & Procedure";
                vm.baseFolder = "Policy & Procedure";
                vm.folder = "Policy";
                vm.linkStart = "/files/Policy";
                vm.docService.getSpecificDocuments("Policy").then(function (data) {
                    vm.directories = data;
                    vm.displayedDirectory = vm.directories;
                    vm.parentDirectory = null;
                });
            }
            DocumentsPolicyController.prototype.search = function (searchService, page) {
                var vm = this;
                var query = new app.services.SearchQuery();
                query.PageSize = page.PageSize;
                query.CurrentPage = page.CurrentPage;
                query.SortField = page.SortField;
                query.SortAscending = page.SortDesc;
                var filter = new app.services.DocumentSearchQueryFilter();
                filter.Folder = page.SearchField.Folder;
                filter.DocDate = page.SearchField.Month + "/" + page.SearchField.Year;
                filter.ERPPartOrderNumber = page.SearchField.ERPPartOrderNumber;
                query.Filter = filter;
                searchService.searchInvoices(query).then(function (data) {
                    data.Results = data.Results.filter(function (doc) {
                        if (doc.RelatedTo == filter.ERPPartOrderNumber) {
                            return doc;
                        }
                    });
                    data.TotalResultCount = data.Results.length;
                    if (filter.Folder.indexOf("\\") > 0) {
                        var navigateUp = new app.services.DocumentSearchItem();
                        navigateUp.ItemType = "FolderUp";
                        navigateUp.Folder = page.SearchField.UpFolder;
                        navigateUp.FileName = "Navigate Up";
                        data.Results.unshift(navigateUp);
                    }
                    page.Update(data);
                });
            };
            DocumentsPolicyController.prototype.searchDocuments = function () {
                var vm = this;
                vm.folder = 'Search Results';
                vm.docService.geSearchSpecificDocuments("Policy", vm.searchText).then(function (data) {
                    vm.directories = data;
                    vm.displayedDirectory = vm.directories;
                    vm.parentDirectory = null;
                });
            };
            DocumentsPolicyController.prototype.folderLevelDown = function (val) {
                var vm = this;
                vm.parentDirectory = vm.displayedDirectory;
                angular.forEach(vm.parentDirectory.ChildDirectories, function (value, key) {
                    if (val.Path == value.Path) {
                        vm.displayedDirectory = value;
                        vm.folder = vm.folder + " > " + value.Name;
                    }
                });
            };
            DocumentsPolicyController.prototype.folderLevelUp = function () {
                var vm = this;
                vm.folder = vm.folder.substring(0, vm.folder.lastIndexOf(" > " + vm.displayedDirectory.Name));
                vm.displayedDirectory = vm.parentDirectory;
                console.log(vm.displayedDirectory.Path);
                if (vm.parentDirectory.Path == vm.directories.Path) {
                    vm.parentDirectory = null;
                }
                else {
                    var nextLevels = vm.parentDirectory.Path.replace(vm.directories.Path, "").split('\\');
                    nextLevels.shift();
                    if (nextLevels.length > 1) {
                        vm.parentDirectory = vm.GetParent(vm.directories, nextLevels);
                    }
                    else {
                        vm.parentDirectory = vm.directories;
                    }
                }
            };
            DocumentsPolicyController.prototype.GetParent = function (directory, levels) {
                var newDirectory = null;
                var vm = this;
                angular.forEach(directory.ChildDirectories, function (value, key) {
                    if (levels[0] == value.Name) {
                        newDirectory = value;
                    }
                });
                if (newDirectory == null) {
                    levels.shift();
                    newDirectory = vm.GetParent(directory, levels);
                    return newDirectory;
                }
                levels.shift();
                if (levels.length > 0) {
                    newDirectory = vm.GetParent(newDirectory, levels);
                    return newDirectory;
                }
                else {
                    return directory;
                }
            };
            DocumentsPolicyController.prototype.folderNavigation = function () {
                var vm = this;
                return vm.folder.replace("\\", " > ").split(" > ");
            };
            DocumentsPolicyController.prototype.currentFolderNavigation = function () {
                var vm = this;
                if (vm.baseFolder.length == 0) {
                    var folderStructure = vm.folder.split(" > ");
                    return folderStructure[folderStructure.length - 1].replace("\\", "");
                }
                else {
                    var displayLocation = vm.baseFolder;
                    vm.baseFolder = "";
                    return displayLocation;
                }
            };
            DocumentsPolicyController.prototype.folderLevel = function (index) {
                var vm = this;
                var path = vm.folder.split(' > ');
                path.length = index + 1;
                vm.folder = path.join(' > ');
                var levels = vm.displayedDirectory.Path.replace(vm.directories.Path, "").split('\\');
                levels.shift();
                levels.length = index + 1;
                if (levels.length > 1) {
                    vm.showFileSize = true;
                    vm.displayedDirectory = vm.GetParent(vm.directories, levels);
                    var nextLevels = vm.displayedDirectory.Path.replace(vm.directories.Path, "").split('\\');
                    nextLevels.shift();
                    vm.parentDirectory = vm.GetParent(vm.directories, nextLevels);
                }
                else {
                    vm.showFileSize = false;
                    vm.displayedDirectory = vm.directories;
                    vm.parentDirectory = null;
                }
            };
            DocumentsPolicyController.prototype.getUpFolder = function (folder) {
                var lastSlash = folder.lastIndexOf("\\");
                return folder.slice(0, lastSlash);
            };
            DocumentsPolicyController.prototype.setDirLocation = function (dir) {
                var vm = this;
                var location = dir.Path.replace(vm.directories.Path + "\\", "").replace(/\\/g, "/");
                return "Policy/" + location;
            };
            DocumentsPolicyController.prototype.setFileLocation = function (file) {
                var vm = this;
                var location = file.Path.replace(vm.directories.Path + "\\", "").replace("\\" + file.Name, "").replace(/\\/g, "/");
                return "Policy/" + location;
            };
            DocumentsPolicyController.prototype.select = function (item) {
                console.log("select");
                var vm = this;
                if (item.ItemType == "Folder") {
                    var newfolder = vm.folder += "\\" + item.FileName;
                    vm.$state.go("documents", { "folder": newfolder });
                }
                else if (item.ItemType == "FolderUp") {
                    vm.$state.go("documents", { "folder": item.Folder });
                }
                else {
                    console.log("file click");
                    if (!item.URL) {
                        vm.docService.downloadFileContents(item.Folder, item.FileName).then(function (result) {
                            var iframe = document.getElementById('invisible');
                            iframe.src = "data:application/pdf;base64," + result;
                        });
                    }
                    else {
                        vm.$window.open(item.URL, '_blank');
                    }
                }
            };
            DocumentsPolicyController.$inject = ["$state", "app.services.DocumentService", "$uibModal", "$window", "app.services.LoginService"];
            return DocumentsPolicyController;
        }());
        angular.module("app.documents")
            .controller("app.documents.DocumentsPolicyController", DocumentsPolicyController);
    })(home = documents.home || (documents.home = {}));
})(documents || (documents = {}));
//# sourceMappingURL=documents.policy.controler.js.map
var documents;
(function (documents) {
    var home;
    (function (home) {
        "use strict";
        var DocumentsRelatedToController = (function () {
            function DocumentsRelatedToController($state, docService, $modal) {
                this.$state = $state;
                this.docService = docService;
                this.$modal = $modal;
                var vm = this;
                vm.relatedto = $state.params['partorder'];
                vm.folder = '';
                vm.page = new app.core.PageData(this.docService, this.search);
                vm.page.SearchField.Folder = vm.folder;
                vm.page.SearchField.UpFolder = vm.getUpFolder(vm.folder);
                vm.page.SearchField.ERPPartOrderNumber = vm.relatedto;
                vm.page.SortDesc = true;
                vm.page.Search();
            }
            DocumentsRelatedToController.prototype.search = function (searchService, page) {
                var vm = this;
                var query = new app.services.SearchQuery();
                query.PageSize = page.PageSize;
                query.CurrentPage = page.CurrentPage;
                query.SortField = page.SortField;
                query.SortAscending = page.SortDesc;
                var filter = new app.services.DocumentSearchQueryFilter();
                filter.Folder = page.SearchField.Folder;
                filter.DocDate = page.SearchField.Month + "/" + page.SearchField.Year;
                filter.ERPPartOrderNumber = page.SearchField.ERPPartOrderNumber;
                query.Filter = filter;
                searchService.searchInvoices(query).then(function (data) {
                    data.Results = data.Results.filter(function (doc) {
                        if (doc.RelatedTo == filter.ERPPartOrderNumber) {
                            return doc;
                        }
                    });
                    data.TotalResultCount = data.Results.length;
                    if (filter.Folder.indexOf("\\") > 0) {
                        var navigateUp = new app.services.DocumentSearchItem();
                        navigateUp.ItemType = "FolderUp";
                        navigateUp.Folder = page.SearchField.UpFolder;
                        navigateUp.FileName = "Navigate Up";
                        data.Results.unshift(navigateUp);
                    }
                    page.Update(data);
                });
            };
            DocumentsRelatedToController.prototype.folderNavigation = function () {
                var vm = this;
                return vm.folder.replace("\\", " > ");
            };
            DocumentsRelatedToController.prototype.getUpFolder = function (folder) {
                var lastSlash = folder.lastIndexOf("\\");
                return folder.slice(0, lastSlash);
            };
            DocumentsRelatedToController.prototype.select = function (item) {
                var vm = this;
                if (item.ItemType == "Folder") {
                    var newfolder = vm.folder += "\\" + item.FileName;
                    vm.$state.go("documents", { "folder": newfolder });
                }
                else if (item.ItemType == "FolderUp") {
                    vm.$state.go("documents", { "folder": item.Folder });
                }
                else {
                    vm.docService.downloadFileContents(vm.folder, item.FileName).then(function (result) {
                        var iframe = document.getElementById('invisible');
                        iframe.src = "data:application/pdf;base64," + result;
                    });
                }
            };
            DocumentsRelatedToController.prototype.print = function (doc) {
                var settings = {
                    controller: "app.unit.print.InvoiceController as vm",
                    templateUrl: "app/unit/unit.report.invoice.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'print',
                    resolve: {
                        id: function () { return doc.DocNumber; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
            };
            DocumentsRelatedToController.$inject = ["$state", "app.services.DocumentService", "$uibModal"];
            return DocumentsRelatedToController;
        }());
        angular.module("app.documents")
            .controller("app.documents.DocumentsRelatedToController", DocumentsRelatedToController);
    })(home = documents.home || (documents.home = {}));
})(documents || (documents = {}));
//# sourceMappingURL=documents.relatedto.controller.js.map
var documents;
(function (documents) {
    var home;
    (function (home) {
        "use strict";
        var DocumentsTrainingController = (function () {
            function DocumentsTrainingController($state, docService, $modal, $window, loginService) {
                this.$state = $state;
                this.docService = docService;
                this.$modal = $modal;
                this.$window = $window;
                this.loginService = loginService;
                var vm = this;
                vm.directories = null;
                vm.displayedDirectory = null;
                vm.showMainMenu = false;
                vm.showMediaLinks = false;
                vm.showPolicyLinks = true;
                vm.showVendorLinks = false;
                vm.showTechnicalTraining = false;
                vm.menuNavigation = "Dealer & Technician Support ";
                vm.baseFolder = "Dealer & Technician Support ";
                vm.folder = "Dealer and Technician Support";
                vm.linkStart = "/files/Dealer and Technician Support";
                vm.docService.getSpecificDocuments("Dealer and Technician Support").then(function (data) {
                    vm.directories = data;
                    vm.displayedDirectory = vm.directories;
                    vm.parentDirectory = null;
                });
            }
            DocumentsTrainingController.prototype.search = function (searchService, page) {
                var vm = this;
                var query = new app.services.SearchQuery();
                query.PageSize = page.PageSize;
                query.CurrentPage = page.CurrentPage;
                query.SortField = page.SortField;
                query.SortAscending = page.SortDesc;
                var filter = new app.services.DocumentSearchQueryFilter();
                filter.Folder = page.SearchField.Folder;
                filter.DocDate = page.SearchField.Month + "/" + page.SearchField.Year;
                filter.ERPPartOrderNumber = page.SearchField.ERPPartOrderNumber;
                query.Filter = filter;
                searchService.searchInvoices(query).then(function (data) {
                    data.Results = data.Results.filter(function (doc) {
                        if (doc.RelatedTo == filter.ERPPartOrderNumber) {
                            return doc;
                        }
                    });
                    data.TotalResultCount = data.Results.length;
                    if (filter.Folder.indexOf("\\") > 0) {
                        var navigateUp = new app.services.DocumentSearchItem();
                        navigateUp.ItemType = "FolderUp";
                        navigateUp.Folder = page.SearchField.UpFolder;
                        navigateUp.FileName = "Navigate Up";
                        data.Results.unshift(navigateUp);
                    }
                    page.Update(data);
                });
            };
            DocumentsTrainingController.prototype.searchDocuments = function () {
                var vm = this;
                vm.folder = 'Search Results';
                vm.docService.geSearchSpecificDocuments("Dealer and Technician Support", vm.searchText).then(function (data) {
                    vm.directories = data;
                    vm.displayedDirectory = vm.directories;
                    vm.parentDirectory = null;
                });
            };
            DocumentsTrainingController.prototype.folderLevel = function (index) {
                var vm = this;
                var path = vm.folder.split(' > ');
                path.length = index + 1;
                vm.folder = path.join(' > ');
                var levels = vm.displayedDirectory.Path.replace(vm.directories.Path, "").split('\\');
                levels.shift();
                levels.length = index + 1;
                if (levels.length > 1) {
                    vm.showFileSize = true;
                    vm.displayedDirectory = vm.GetParent(vm.directories, levels);
                    var nextLevels = vm.displayedDirectory.Path.replace(vm.directories.Path, "").split('\\');
                    nextLevels.shift();
                    vm.parentDirectory = vm.GetParent(vm.directories, nextLevels);
                }
                else {
                    vm.showFileSize = false;
                    vm.displayedDirectory = vm.directories;
                    vm.parentDirectory = null;
                }
            };
            DocumentsTrainingController.prototype.folderLevelDown = function (val) {
                var vm = this;
                vm.parentDirectory = vm.displayedDirectory;
                angular.forEach(vm.parentDirectory.ChildDirectories, function (value, key) {
                    if (val.Path == value.Path) {
                        vm.displayedDirectory = value;
                        vm.folder = vm.folder + " > " + value.Name;
                    }
                });
            };
            DocumentsTrainingController.prototype.folderLevelUp = function () {
                var vm = this;
                vm.folder = vm.folder.substring(0, vm.folder.lastIndexOf(" > " + vm.displayedDirectory.Name));
                vm.displayedDirectory = vm.parentDirectory;
                console.log(vm.displayedDirectory.Path);
                if (vm.parentDirectory.Path == vm.directories.Path) {
                    vm.parentDirectory = null;
                }
                else {
                    var nextLevels = vm.parentDirectory.Path.replace(vm.directories.Path, "").split('\\');
                    nextLevels.shift();
                    if (nextLevels.length > 1) {
                        vm.parentDirectory = vm.GetParent(vm.directories, nextLevels);
                    }
                    else {
                        vm.parentDirectory = vm.directories;
                    }
                }
            };
            DocumentsTrainingController.prototype.GetParent = function (directory, levels) {
                var newDirectory = null;
                var vm = this;
                angular.forEach(directory.ChildDirectories, function (value, key) {
                    if (levels[0] == value.Name) {
                        newDirectory = value;
                    }
                });
                if (newDirectory == null) {
                    levels.shift();
                    newDirectory = vm.GetParent(directory, levels);
                    return newDirectory;
                }
                levels.shift();
                if (levels.length > 0) {
                    newDirectory = vm.GetParent(newDirectory, levels);
                    return newDirectory;
                }
                else {
                    return directory;
                }
            };
            DocumentsTrainingController.prototype.folderNavigation = function () {
                var vm = this;
                return vm.folder.replace("\\", " > ").split(" > ");
            };
            DocumentsTrainingController.prototype.currentFolderNavigation = function () {
                var vm = this;
                if (vm.baseFolder.length == 0) {
                    var folderStructure = vm.folder.split(" > ");
                    return folderStructure[folderStructure.length - 1].replace("\\", "");
                }
                else {
                    var displayLocation = vm.baseFolder;
                    vm.baseFolder = "";
                    return displayLocation;
                }
            };
            DocumentsTrainingController.prototype.getUpFolder = function (folder) {
                var lastSlash = folder.lastIndexOf("\\");
                return folder.slice(0, lastSlash);
            };
            DocumentsTrainingController.prototype.setDirLocation = function (dir) {
                var vm = this;
                var location = dir.Path.replace(vm.directories.Path + "\\", "").replace(/\\/g, "/");
                return "Dealer and Technician Support/" + location;
            };
            DocumentsTrainingController.prototype.setFileLocation = function (file) {
                var vm = this;
                var location = file.Path.replace(vm.directories.Path + "\\", "").replace("\\" + file.Name, "").replace(/\\/g, "/");
                return "Dealer and Technician Support/" + location;
            };
            DocumentsTrainingController.prototype.select = function (item) {
                console.log("select");
                var vm = this;
                if (item.ItemType == "Folder") {
                    var newfolder = vm.folder += "\\" + item.FileName;
                    vm.$state.go("documents", { "folder": newfolder });
                }
                else if (item.ItemType == "FolderUp") {
                    vm.$state.go("documents", { "folder": item.Folder });
                }
                else {
                    console.log("file click");
                    if (!item.URL) {
                        vm.docService.downloadFileContents(item.Folder, item.FileName).then(function (result) {
                            var iframe = document.getElementById('invisible');
                            iframe.src = "data:application/pdf;base64," + result;
                        });
                    }
                    else {
                        vm.$window.open(item.URL, '_blank');
                    }
                }
            };
            DocumentsTrainingController.$inject = ["$state", "app.services.DocumentService", "$uibModal", "$window", "app.services.LoginService"];
            return DocumentsTrainingController;
        }());
        angular.module("app.documents")
            .controller("app.documents.DocumentsTrainingController", DocumentsTrainingController);
    })(home = documents.home || (documents.home = {}));
})(documents || (documents = {}));
//# sourceMappingURL=documents.training.controler.js.map
var app;
(function (app) {
    var filters;
    (function (filters) {
        "use strict";
        function filter() {
            return function (input) {
                if (!input)
                    return '';
                if (input.length <= 2)
                    return input.toUpperCase();
                else
                    return input.charAt(0).toUpperCase() + input.substr(1).toLowerCase();
            };
        }
        filters.filter = filter;
        angular.module("app.filters")
            .filter('capitalize', filter);
    })(filters = app.filters || (app.filters = {}));
})(app || (app = {}));
//# sourceMappingURL=capitalize.filter.js.map
var app;
(function (app) {
    var filters;
    (function (filters) {
        "use strict";
        function filterkmtom() {
            return function milestoKM(distance, from, to) {
                if (from == "m" && to == "km") {
                    return distance * 1.609344;
                }
                else if (from == "km" && to == "m") {
                    return distance / 1.609344;
                }
                else {
                    return distance;
                }
            };
        }
        filters.filterkmtom = filterkmtom;
        angular.module("app.filters")
            .filter('distance', filters.filter);
    })(filters = app.filters || (app.filters = {}));
})(app || (app = {}));
//# sourceMappingURL=milesToKM.filter.js.map
var flatrate;
(function (flatrate) {
    var home;
    (function (home) {
        "use strict";
        var FlatRateController = (function () {
            function FlatRateController($state, flatrateService, $modal, flatrateGroupService, vinService, loginService, $timeout) {
                this.$state = $state;
                this.flatrateService = flatrateService;
                this.$modal = $modal;
                this.flatrateGroupService = flatrateGroupService;
                this.vinService = vinService;
                this.loginService = loginService;
                this.$timeout = $timeout;
                var vm = this;
                vm.init();
            }
            FlatRateController.prototype.init = function () {
                var vm = this;
                vm.pagedata = new app.core.PageData(this.flatrateService, this.search.bind(this));
                vm.pagedata.SearchText = vm.$state.params["search"];
                vm.pagedata.SortField = '';
                vm.pagedata.SortDesc = true;
                vm.pagedata.SearchField.Section = "";
                vm.pagedata.SearchField.Component = "";
                vm.pagedata.Ready = true;
                vm.pagedata.SearchField.showprices = true;
                var sectionFilter = new app.services.FlatRateSearchQueryFilter();
                vm.clear();
                vm.updateFlatRateGroup();
                vm.VINValid = false;
            };
            FlatRateController.prototype.clear = function () {
                var vm = this;
                if (!vm.flatRateGroupLocked)
                    vm.pagedata.SearchField.FlatRateGroup = "";
                vm.VIN = "";
                vm.pagedata.SearchField.Section = "";
                vm.pagedata.SearchField.Component = "";
                vm.pagedata.SearchText = "";
                vm.pagedata.Results = null;
                vm.VINValid = false;
                vm.previousVinVaule = "";
            };
            FlatRateController.prototype.updateCategories = function () {
                var vm = this;
                var sectionFilter = new app.services.FlatRateSearchQueryFilter();
                sectionFilter.FlatRateGroup = vm.pagedata.SearchField.FlatRateGroup;
                sectionFilter.Configuration = vm.pagedata.SearchField.Configuration;
                vm.flatrateService.searchCategory("Section", sectionFilter).then(function (result) {
                    vm.pagedata.SearchField.Sections = result;
                });
                var componentFilter = new app.services.FlatRateSearchQueryFilter();
                componentFilter.FlatRateGroup = vm.pagedata.SearchField.FlatRateGroup;
                componentFilter.Configuration = vm.pagedata.SearchField.Configuration;
                componentFilter.Section = vm.pagedata.SearchField.Section;
                vm.flatrateService.searchCategory("Component", componentFilter).then(function (result) {
                    vm.pagedata.SearchField.Components = result;
                });
            };
            FlatRateController.prototype.throttleSearch = function () {
                var vm = this;
                if (this.searchTimeout)
                    this.$timeout.cancel(this.searchTimeout);
                this.searchTimeout = this.$timeout(function () {
                    vm.pagedata.Search();
                }, 500);
            };
            FlatRateController.prototype.search = function (searchService, page) {
                var vm = this;
                if (!vm.VINValid || page.SearchField.FlatRateGroup == null || page.SearchField.FlatRateGroup.Length == 0) {
                    return;
                }
                vm.controllerReady = false;
                var query = new app.services.SearchQuery();
                query.PageSize = page.PageSize;
                query.CurrentPage = page.CurrentPage;
                query.SortField = page.SortField;
                query.SortAscending = page.SortDesc;
                var filter = new app.services.FlatRateSearchQueryFilter();
                filter.SimpleSearch = page.SearchText;
                filter.Section = page.SearchField.Section;
                filter.Component = page.SearchField.Component;
                filter.FlatRateGroup = page.SearchField.FlatRateGroup;
                filter.HideInternalUseParts = true;
                query.Filter = filter;
                searchService.searchAdvanced(query).then(function (data) {
                    page.Update(data);
                    console.log(data);
                }, function (errorResponse) {
                    page.Ready = true;
                    page.ErrorMessage = "There was an error when performing your search.  Please try again.";
                    console.log("Parts catalog search error");
                    console.log(errorResponse);
                });
            };
            FlatRateController.prototype.showNotes = function (flatRate) {
                var _this = this;
                var vm = this;
                this.flatrateService.getFlatRateCode(flatRate.FlatRateCode).then(function (result) {
                    var settings = {
                        controller: "app.flatrate.FlatRateNotesModalController as vm",
                        templateUrl: "app/flatrate/flatrate.notes.modal.html",
                        keyboard: false,
                        backdrop: "static",
                        size: "lg",
                        resolve: {
                            flatRate: function () { return result; },
                            selectable: function () { return false; }
                        }
                    };
                    var modalInstance = _this.$modal.open(settings);
                });
            };
            FlatRateController.prototype.updateVIN = function (unitInfo) {
                var vm = this;
                if (vm.VIN.length >= 8) {
                    if (unitInfo && unitInfo.FlatRateGroup) {
                        vm.pagedata.SearchField.FlatRateGroup = unitInfo.FlatRateGroup;
                        vm.flatRateGroupLocked = true;
                        vm.VINValid = true;
                        vm.updateCategories();
                    }
                    else {
                        vm.pagedata.SearchField.FlatRateGroup = "";
                        vm.VINValid = false;
                    }
                }
            };
            FlatRateController.prototype.vinIsValid = function () {
                var vm = this;
                vm.controllerReady = false;
                var valid = false;
                if (vm.VIN != vm.previousVinVaule && vm.VIN.length == 17) {
                    vm.VINValid = false;
                    this.vinService.getVIN(vm.VIN, true).then(function (data) {
                        if (data) {
                            vm.updateVIN(data);
                        }
                    }, function (error) {
                        valid = false;
                    });
                }
                vm.previousVinVaule = vm.VIN;
            };
            FlatRateController.prototype.updateFlatRateGroup = function () {
                var vm = this;
                vm.pagedata.SearchField.FlatRateGroup = '';
            };
            FlatRateController.prototype.vinSearch = function () {
                var vm = this;
                if (vm.VIN.length != 17) {
                    var vm = this;
                    var settings = {
                        controller: "app.unit.UnitModalController as vm",
                        templateUrl: "app/unit/unit.modal.html",
                        keyboard: false,
                        backdrop: true,
                        size: 'xl',
                        resolve: {
                            search: function () { return vm.VIN; },
                            userDealers: function () { return null; },
                            allUnitsSearch: function () { return true; },
                            includeLegacy: function () { return true; }
                        }
                    };
                    var modalInstance = this.$modal.open(settings);
                    modalInstance.result.then(function (resultdata) {
                        vm.VIN = resultdata.VIN;
                        vm.previousVinVaule = vm.VIN;
                        vm.updateVIN(resultdata);
                    });
                }
                else {
                    vm.vinIsValid();
                }
            };
            FlatRateController.$inject = ["$state", "app.services.FlatRateManualService", "$uibModal", "app.services.FlatRateGroupService", "app.services.VINService", "app.services.LoginService", "$timeout"];
            return FlatRateController;
        }());
        angular.module("app.flatrate")
            .controller("app.flatrate.FlatRateController", FlatRateController);
    })(home = flatrate.home || (flatrate.home = {}));
})(flatrate || (flatrate = {}));
//# sourceMappingURL=flatrate.controller.js.map
var flatrate;
(function (flatrate) {
    var home;
    (function (home) {
        "use strict";
        var FlatRateModalController = (function () {
            function FlatRateModalController($state, flatrateService, $modal, $modalInstance, flatrateGroupService, $timeout, flatRateGroup) {
                this.$state = $state;
                this.flatrateService = flatrateService;
                this.$modal = $modal;
                this.$modalInstance = $modalInstance;
                this.flatrateGroupService = flatrateGroupService;
                this.$timeout = $timeout;
                var vm = this;
                this.flatRateGroup = flatRateGroup;
                vm.init();
            }
            FlatRateModalController.prototype.init = function () {
                var vm = this;
                vm.pagedata = new app.core.PageData(this.flatrateService, this.search);
                vm.pagedata.SearchText = vm.$state.params["search"];
                vm.pagedata.SortField = '';
                vm.pagedata.SortDesc = true;
                vm.pagedata.SearchField.Section = "";
                vm.pagedata.SearchField.Component = "";
                vm.pagedata.Ready = true;
                vm.pagedata.SearchField.showprices = true;
                vm.clear();
                vm.updateCategories();
                vm.controllerReady = true;
                vm.showFlatRateCodeColumn = true;
                vm.pagedata.SearchField.FlatRateGroup = vm.flatRateGroup;
            };
            FlatRateModalController.prototype.clear = function () {
                var vm = this;
                vm.pagedata.SearchField.Section = "";
                vm.pagedata.SearchField.Component = "";
                vm.pagedata.SearchText = "";
                vm.pagedata.Results = null;
            };
            FlatRateModalController.prototype.updateCategories = function () {
                var vm = this;
                vm.flatrateGroupService.getFlatRateGroups().then(function (result) {
                    vm.pagedata.SearchField.FlatRateGroups = result;
                    vm.pagedata.SearchField.FlatRateGroup = vm.flatRateGroup;
                });
                var sectionFilter = new app.services.FlatRateSearchQueryFilter();
                sectionFilter.FlatRateGroup = vm.pagedata.SearchField.FlatRateGroup;
                sectionFilter.Configuration = vm.pagedata.SearchField.Configuration;
                vm.flatrateService.searchCategory("Section", sectionFilter).then(function (result) {
                    vm.pagedata.SearchField.Sections = result;
                });
                var componentFilter = new app.services.FlatRateSearchQueryFilter();
                componentFilter.FlatRateGroup = vm.pagedata.SearchField.FlatRateGroup;
                componentFilter.Configuration = vm.pagedata.SearchField.Configuration;
                componentFilter.Section = vm.pagedata.SearchField.Section;
                vm.flatrateService.searchCategory("Component", componentFilter).then(function (result) {
                    vm.pagedata.SearchField.Components = result;
                });
            };
            FlatRateModalController.prototype.throttleSearch = function () {
                var vm = this;
                if (this.searchTimeout)
                    this.$timeout.cancel(this.searchTimeout);
                this.searchTimeout = this.$timeout(function () {
                    vm.pagedata.Search();
                }, 500);
            };
            FlatRateModalController.prototype.search = function (searchService, page) {
                var vm = this;
                vm.controllerReady = false;
                var query = new app.services.SearchQuery();
                query.PageSize = page.PageSize;
                query.CurrentPage = page.CurrentPage;
                query.SortField = page.SortField;
                query.SortAscending = page.SortDesc;
                var filter = new app.services.FlatRateSearchQueryFilter();
                filter.SimpleSearch = page.SearchText;
                filter.FlatRateGroup = vm.flatRateGroup;
                filter.Section = page.SearchField.Section;
                filter.Component = page.SearchField.Component;
                filter.FlatRateGroup = page.SearchField.FlatRateGroup;
                filter.HideInternalUseParts = true;
                query.Filter = filter;
                searchService.searchAdvanced(query).then(function (data) {
                    page.Update(data);
                }, function (errorResponse) {
                    page.Ready = true;
                    page.ErrorMessage = "There was an error when performing your search.  Please try again.";
                    console.log("Parts catalog search error");
                    console.log(errorResponse);
                });
            };
            FlatRateModalController.prototype.select = function (partNumber) {
                this.$modalInstance.close(partNumber);
            };
            FlatRateModalController.prototype.close = function () {
                this.$modalInstance.dismiss();
            };
            FlatRateModalController.prototype.showNotes = function (flatRate) {
                var _this = this;
                var vm = this;
                this.flatrateService.getFlatRateCode(flatRate.FlatRateCode).then(function (result) {
                    var settings = {
                        controller: "app.flatrate.FlatRateNotesModalController as vm",
                        templateUrl: "app/flatrate/flatrate.notes.modal.html",
                        keyboard: false,
                        backdrop: "static",
                        size: "lg",
                        resolve: {
                            flatRate: function () { return result; },
                            selectable: function () { return true; }
                        }
                    };
                    var modalInstance = _this.$modal.open(settings);
                    modalInstance.result.then(function (resultdata) {
                        vm.select(resultdata);
                    });
                });
            };
            FlatRateModalController.$inject = ["$state", "app.services.FlatRateManualService", "$uibModal", "$uibModalInstance", "app.services.FlatRateGroupService", "$timeout", "flatRateGroup"];
            return FlatRateModalController;
        }());
        angular.module("app.flatrate")
            .controller("app.flatrate.FlatRateModalController", FlatRateModalController);
    })(home = flatrate.home || (flatrate.home = {}));
})(flatrate || (flatrate = {}));
//# sourceMappingURL=flatrate.modal.controller.js.map
var flatrate;
(function (flatrate) {
    var home;
    (function (home) {
        "use strict";
        var FlatRateNotesModalController = (function () {
            function FlatRateNotesModalController($state, $modalInstance, flatRate, selectable) {
                this.$state = $state;
                this.$modalInstance = $modalInstance;
                this.flatRate = flatRate;
                this.selectable = selectable;
                var vm = this;
                vm.init();
            }
            FlatRateNotesModalController.prototype.init = function () {
                var vm = this;
                vm.controllerReady = true;
            };
            FlatRateNotesModalController.prototype.close = function () {
                this.$modalInstance.dismiss();
            };
            FlatRateNotesModalController.prototype.select = function (partNumber) {
                this.$modalInstance.close(partNumber);
            };
            FlatRateNotesModalController.$inject = ["$state", "$uibModalInstance", "flatRate", "selectable"];
            return FlatRateNotesModalController;
        }());
        angular.module("app.flatrate")
            .controller("app.flatrate.FlatRateNotesModalController", FlatRateNotesModalController);
    })(home = flatrate.home || (flatrate.home = {}));
})(flatrate || (flatrate = {}));
//# sourceMappingURL=flatrate.notes.modal.controller.js.map
var app;
(function (app) {
    var home;
    (function (home) {
        "use strict";
        var HomeController = (function () {
            function HomeController($state, vinService, dealerService, folderService, loginService, docService, mv360api) {
                this.$state = $state;
                this.vinService = vinService;
                this.dealerService = dealerService;
                this.folderService = folderService;
                this.loginService = loginService;
                this.docService = docService;
                this.mv360api = mv360api;
                var vm = this;
                if ((vm.mv360api.currentDealer == null || vm.mv360api.currentDealer.length == 0) && (vm.mv360api.currentVendor != null && vm.mv360api.currentVendor.length > 0)) {
                    this.$state.go("vendorhome");
                }
                vm.unitsearchtext = "";
                dealerService.getDashboard().then(function (result) {
                    vm.dashboard = result;
                    vm.controllerReady = true;
                });
                folderService.getRootFolders().then(function (data) {
                    vm.folders = data;
                });
                if (vm.loginService.UserInfo.DealerDATAEID == "fri") {
                    this.quickAllChoice = true;
                }
                else {
                    this.quickAllChoice = false;
                }
            }
            HomeController.prototype.unitSearch = function (vin) {
                if (vin.length >= 6) {
                    this.$state.go("unit", { "search": vin });
                }
            };
            HomeController.prototype.campaignSearch = function (search) {
                this.$state.go("campaign", { "search": search });
            };
            HomeController.prototype.download = function () {
                this.docService.downloadFileContents("Documents", "test.pdf");
            };
            HomeController.prototype.goToLink = function (button) {
                this.$state.go(button.toLowerCase());
            };
            HomeController.prototype.policyPageShow = function () {
                this.$state.go("documentspolicy");
            };
            HomeController.prototype.flatRatePageShow = function () {
                this.$state.go("flatratedocuments");
            };
            HomeController.prototype.techTrainingPageShow = function () {
                this.$state.go("documentstraining");
            };
            HomeController.prototype.busDocumentsShow = function () {
                this.$state.go("documentsbus");
            };
            HomeController.$inject = ["$state", "app.services.VINService", "app.services.DealerService", "app.services.FolderService", "app.services.LoginService", "app.services.DocumentService", "mv360api"];
            return HomeController;
        }());
        angular.module("app.home")
            .controller("app.home.HomeController", HomeController);
    })(home = app.home || (app.home = {}));
})(app || (app = {}));
//# sourceMappingURL=home.controller.js.map
var app;
(function (app) {
    var image;
    (function (image) {
        "use strict";
        var ImageModalController = (function () {
            function ImageModalController($modalInstance, readonly, files, $scope, $sce, fileUpload, submittedDealerNumber, submittedClaimOrPartNumber, submittedUploadType, Upload, mv360api) {
                this.$modalInstance = $modalInstance;
                this.$scope = $scope;
                this.$sce = $sce;
                this.fileUpload = fileUpload;
                this.Upload = Upload;
                this.mv360api = mv360api;
                this.trusted = {};
                var vm = this;
                vm.readonly = readonly;
                vm.controllerReady = true;
                vm.fileList = files || [];
                vm.dealerNumber = submittedDealerNumber;
                vm.uploadType = submittedUploadType;
                vm.claimOrPartNumber = submittedClaimOrPartNumber;
                vm.errorMsg = "";
            }
            ImageModalController.prototype.uploadFiles = function (f) {
                var vm = this;
                vm.fileNumber = 0;
                var fileNumberDisplay;
                var fileData;
                var recordID;
                var displayRecordId;
                if (vm.claimOrPartNumber != null && vm.claimOrPartNumber != "" && vm.claimOrPartNumber != "undefined") {
                    recordID = vm.claimOrPartNumber;
                }
                else {
                    recordID = "Draft";
                }
                var _loop_1 = function () {
                    var photofile = f[i];
                    var reader = new FileReader();
                    if (photofile.size <= 51200000) {
                        vm.fileNumber = (vm.fileNumber + 1);
                        reader.onload = function (e) {
                            fileData = reader.result;
                            vm.fileItem = {
                                Name: photofile.name,
                                Src: fileData,
                                IsNew: true,
                                Path: photofile.type,
                                IsDeleted: false,
                                Thumbnail: null
                            };
                            vm.fileUpload.uploadFile(vm.fileItem, vm.uploadType, recordID)
                                .then(function (response) {
                                vm.result = response.toString();
                                if (vm.result != "File Type Error" && vm.result != "File Upload Error") {
                                    vm.fileList.push({
                                        Name: photofile.name,
                                        Src: vm.result,
                                        IsNew: true,
                                        Path: vm.result,
                                        IsDeleted: false,
                                        Thumbnail: null
                                    });
                                }
                                else if (vm.result == "File Type Error") {
                                    vm.errorMsg = vm.errorMsg + "Unable to upload file " + photofile.name + " because it is of an invalid file type. Please upload an image file or PDF. ";
                                }
                                else {
                                    vm.errorMsg = vm.errorMsg + "Unable to upload file " + photofile.name + " due to an error. Please try again, or contact support if this problem continues.";
                                }
                            }, function (response) {
                                if (response.status > 0) {
                                    if (response.status == 404) {
                                        vm.errorMsg = vm.errorMsg + "File size limit exceeded - files uploaded must remain under 50 MB.";
                                    }
                                    else {
                                        vm.errorMsg = vm.errorMsg + response.status + ': ' + response.data;
                                    }
                                }
                            });
                            vm.$scope.$apply();
                            vm.$scope.$digest();
                        };
                        reader.readAsDataURL(photofile);
                    }
                    else {
                        vm.errorMsg = vm.errorMsg + "Unable to upload file " + photofile.name + " because it is over 50 MB. Please use a smaller image. ";
                    }
                    vm.$scope.$digest();
                };
                for (var i in f) {
                    _loop_1();
                }
            };
            ;
            ImageModalController.prototype.close = function () {
                this.$modalInstance.close(this.fileList);
            };
            ImageModalController.prototype.remove = function (fileItem) {
                if (fileItem.IsNew) {
                    var index = this.fileList.indexOf(fileItem);
                    this.fileList.splice(index, 1);
                }
                else {
                    fileItem.IsDeleted = true;
                }
            };
            ImageModalController.prototype.getImageSource = function (file) {
                return "/api/image/true/?file=" + encodeURI(file.Src);
            };
            ImageModalController.prototype.getImageSourceForDownload = function (file) {
                return "/api/image/?file=" + encodeURI(file.Src);
            };
            ImageModalController.prototype.getImageHTML = function (file) {
                return "<div ><img style='width:500px' src='" + this.getImageSource(file) + "'/></div>";
            };
            ImageModalController.$inject = ["$uibModalInstance", "readonly", "files", "$scope", "$sce", "app.services.FileUploadService", "submittedDealerNumber", "submittedClaimOrPartNumber", "submittedUploadType", "Upload", "mv360api"];
            return ImageModalController;
        }());
        angular.module("app.image")
            .controller("app.image.ImageModalController", ImageModalController);
    })(image = app.image || (app.image = {}));
})(app || (app = {}));
//# sourceMappingURL=image.modal.controller.js.map
var Inquiry;
(function (Inquiry) {
    var home;
    (function (home) {
        "use strict";
        var InquiryARController = (function () {
            function InquiryARController($state, $modal, InquiryService, rootScope, loginService) {
                this.$state = $state;
                this.$modal = $modal;
                this.InquiryService = InquiryService;
                this.rootScope = rootScope;
                this.loginService = loginService;
                var vm = this;
                vm.currentDateAndTime = new Date();
                vm.currentDealerNumber = vm.loginService.selectedDealer.DealerNumber;
                vm.InquiryService.getStatementHeader().then(function (result) {
                    vm.statementHeader = result;
                    if (vm.statementHeader)
                        vm.addressArray = vm.parseAddress(vm.statementHeader.Address);
                });
                vm.InquiryService.getAgingReport().then(function (result) {
                    vm.agingReport = result;
                });
                if (!vm.ar) {
                    vm.ar = new app.core.PageData(InquiryService, this.search);
                    vm.ar.Results = [];
                    vm.ar.SortDesc = true;
                    vm.ar.Search();
                }
                else {
                    this.ar.SearchIfExpired();
                }
            }
            InquiryARController.prototype.parseAddress = function (address) {
                return address.split(/\n/);
            };
            InquiryARController.prototype.print = function () {
                var vm = this;
                var settings = {
                    controller: "app.report.ArstatementController as vm",
                    templateUrl: "app/report/report.viewer.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'print',
                    resolve: {
                        vms: function () { return vm; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
            };
            InquiryARController.prototype.search = function (searchService, pageData) {
                var vm = this;
                var query = new app.services.SearchQuery();
                query.PageSize = pageData.PageSize;
                query.CurrentPage = pageData.CurrentPage;
                var filter = new app.services.InquirySearchQueryFilter();
                query.Filter = filter;
                searchService.searchAdvanced(query).then(function (data) {
                    pageData.Update(data);
                });
            };
            InquiryARController.$inject = ["$state", "$uibModal", "app.services.InquiryService", "$rootScope", "app.services.LoginService"];
            return InquiryARController;
        }());
        angular.module("app.inquiry")
            .controller("app.inquiry.InquiryARController", InquiryARController);
    })(home = Inquiry.home || (Inquiry.home = {}));
})(Inquiry || (Inquiry = {}));
//# sourceMappingURL=inquiry.ar.controller.js.map
var Inquiry;
(function (Inquiry) {
    var home;
    (function (home) {
        "use strict";
        var InquiryController = (function () {
            function InquiryController($state, $modal, InquiryService, rootScope, loginService) {
                this.$state = $state;
                this.$modal = $modal;
                this.InquiryService = InquiryService;
                this.rootScope = rootScope;
                this.loginService = loginService;
                var vm = this;
                vm.currentDateAndTime = new Date();
                vm.currentDealerNumber = vm.loginService.selectedDealer.DealerNumber;
                vm.InquiryService.getStatementHeader().then(function (result) {
                    vm.statementHeader = result;
                    if (vm.statementHeader)
                        vm.addressArray = vm.parseAddress(vm.statementHeader.Address);
                });
                vm.InquiryService.getAgingReport().then(function (result) {
                    vm.agingReport = result;
                });
                if (!vm.ar) {
                    vm.ar = new app.core.PageData(InquiryService, this.search);
                    vm.ar.Results = [];
                    vm.ar.SortDesc = true;
                    vm.ar.Search();
                }
                else {
                    this.ar.SearchIfExpired();
                }
            }
            InquiryController.prototype.print = function () {
                var vm = this;
                var settings = {
                    controller: "app.report.ArstatementController as vm",
                    templateUrl: "app/report/report.viewer.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'print',
                    resolve: {
                        vms: function () { return vm; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
            };
            InquiryController.prototype.parseAddress = function (address) {
                return address.split(/\n/);
            };
            InquiryController.prototype.search = function (searchService, pageData) {
                var vm = this;
                var query = new app.services.SearchQuery();
                query.PageSize = pageData.PageSize;
                query.CurrentPage = pageData.CurrentPage;
                var filter = new app.services.InquirySearchQueryFilter();
                query.Filter = filter;
                searchService.searchAdvanced(query).then(function (data) {
                    pageData.Update(data);
                });
            };
            InquiryController.$inject = ["$state", "$uibModal", "app.services.InquiryService", "$rootScope", "app.services.LoginService"];
            return InquiryController;
        }());
        angular.module("app.inquiry")
            .controller("app.inquiry.InquiryController", InquiryController);
    })(home = Inquiry.home || (Inquiry.home = {}));
})(Inquiry || (Inquiry = {}));
//# sourceMappingURL=inquiry.controller.js.map
var Inquiry;
(function (Inquiry) {
    var home;
    (function (home) {
        "use strict";
        var InquiryPartInvController = (function () {
            function InquiryPartInvController($state, InquiryService, loginService, $modal, dealerService) {
                this.$state = $state;
                this.InquiryService = InquiryService;
                this.loginService = loginService;
                this.$modal = $modal;
                this.dealerService = dealerService;
                var vm = this;
                this.DealersChoice = vm.loginService.UserInfo.Dealers;
                this.currentDealer = vm.loginService.selectedDealer;
                this.dealerNumber = this.currentDealer.DealerNumber;
                if (!vm.invoice) {
                    vm.invoice = new app.core.PageData(InquiryService, this.search);
                    vm.invoice.SearchText = $state.params["search"];
                    vm.invoice.Results = [];
                    vm.invoice.SortField = 'Date';
                    vm.invoice.SortDesc = true;
                    vm.invoice.SearchField.AccountNumber = this.currentDealer.DealerNumber;
                }
                else {
                    var newsearch = $state.params["search"];
                    if (newsearch) {
                        if (newsearch != vm.invoice.SearchText) {
                            vm.invoice.SearchText = newsearch;
                            this.invoice.Search();
                        }
                    }
                    else {
                        this.invoice.SearchIfExpired();
                    }
                }
            }
            InquiryPartInvController.prototype.search = function (searchService, pageData) {
                var vm = this;
                console.log(vm);
                var query = new app.services.SearchQuery();
                query.PageSize = pageData.PageSize;
                query.CurrentPage = pageData.CurrentPage;
                query.SortField = pageData.SortField;
                query.SortAscending = pageData.SortDesc;
                var filter = new app.services.InquirySearchQueryFilter();
                filter.VIN = pageData.SearchField.VIN;
                filter.SalesOrderNumber = pageData.SearchField.SalesOrderNumber;
                filter.InvoiceNumber = pageData.SearchField.InvoiceNumber;
                filter.InvoiceType = "Parts";
                filter.AccountNumber = pageData.SearchField.AccountNumber;
                filter.ChassiNumber = pageData.SearchField.ChassiNumber;
                query.Filter = filter;
                searchService.searchAdvanced(query).then(function (data) {
                    console.log(data);
                    pageData.Update(data);
                });
            };
            InquiryPartInvController.prototype.openInvoice = function (invoice) {
                var vm = this;
                var settings = {
                    controller: "app.report.UnitInvoiceController as vm",
                    templateUrl: "app/report/report.viewer.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'print',
                    resolve: {
                        vin: function () { return null; },
                        invoice: function () { return invoice; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
            };
            InquiryPartInvController.$inject = ["$state", "app.services.InquiryService", "app.services.LoginService", "$uibModal", "app.services.DealerService"];
            return InquiryPartInvController;
        }());
        angular.module("app.inquiry")
            .controller("app.inquiry.InquiryPartInvController", InquiryPartInvController);
    })(home = Inquiry.home || (Inquiry.home = {}));
})(Inquiry || (Inquiry = {}));
//# sourceMappingURL=inquiry.partinv.controller.js.map
var Inquiry;
(function (Inquiry) {
    var home;
    (function (home) {
        "use strict";
        var InquiryUnitInvController = (function () {
            function InquiryUnitInvController($state, InquiryService, loginService, $modal) {
                this.$state = $state;
                this.InquiryService = InquiryService;
                this.loginService = loginService;
                this.$modal = $modal;
                var vm = this;
                if (!vm.invoice) {
                    vm.invoice = new app.core.PageData(InquiryService, this.search);
                    vm.invoice.SearchText = $state.params["search"];
                    vm.invoice.Results = [];
                    vm.invoice.SortField = 'Date';
                    vm.invoice.SortDesc = true;
                }
                else {
                    var newsearch = $state.params["search"];
                    if (newsearch) {
                        if (newsearch != vm.invoice.SearchText) {
                            vm.invoice.SearchText = newsearch;
                            this.invoice.Search();
                        }
                    }
                    else {
                        this.invoice.SearchIfExpired();
                    }
                }
            }
            InquiryUnitInvController.prototype.search = function (searchService, pageData) {
                var invalidLengthForSearch = true;
                if (pageData.SearchField.VIN && pageData.SearchField.VIN.length >= 4) {
                    invalidLengthForSearch = false;
                }
                if (pageData.SearchField.SalesOrderNumber && pageData.SearchField.SalesOrderNumber.length >= 4) {
                    invalidLengthForSearch = false;
                }
                if (pageData.SearchField.InvoiceNumber && pageData.SearchField.InvoiceNumber.length >= 4) {
                    invalidLengthForSearch = false;
                }
                if (pageData.SearchField.ChassiNumber && pageData.SearchField.ChassiNumber.length >= 4) {
                    invalidLengthForSearch = false;
                }
                if (invalidLengthForSearch == true) {
                    vex.dialog.alert("Please Enter at least 4 characters to search.");
                    return;
                }
                var query = new app.services.SearchQuery();
                query.PageSize = pageData.PageSize;
                query.CurrentPage = pageData.CurrentPage;
                query.SortField = pageData.SortField;
                query.SortAscending = !pageData.SortDesc;
                var filter = new app.services.InquirySearchQueryFilter();
                filter.VIN = pageData.SearchField.VIN;
                filter.SalesOrderNumber = pageData.SearchField.SalesOrderNumber;
                filter.InvoiceNumber = pageData.SearchField.InvoiceNumber;
                filter.ChassiNumber = pageData.SearchField.ChassiNumber;
                filter.InvoiceType = "Unit";
                query.Filter = filter;
                searchService.searchAdvanced(query).then(function (data) {
                    pageData.Update(data);
                });
            };
            InquiryUnitInvController.prototype.openInvoice = function (invoice) {
                var vm = this;
                var settings = {
                    controller: "app.report.UnitInvoiceController as vm",
                    templateUrl: "app/report/report.viewer.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'print',
                    resolve: {
                        vin: function () { return null; },
                        invoice: function () { return invoice; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
            };
            InquiryUnitInvController.$inject = ["$state", "app.services.InquiryService", "app.services.LoginService", "$uibModal"];
            return InquiryUnitInvController;
        }());
        angular.module("app.inquiry")
            .controller("app.inquiry.InquiryUnitInvController", InquiryUnitInvController);
    })(home = Inquiry.home || (Inquiry.home = {}));
})(Inquiry || (Inquiry = {}));
//# sourceMappingURL=inquiry.unitinv.controller.js.map
var app;
(function (app) {
    var messages;
    (function (messages) {
        "use strict";
        var MessagesController = (function () {
            function MessagesController($state, $filter, $modal, messageService) {
                this.$state = $state;
                this.$filter = $filter;
                this.$modal = $modal;
                this.messageService = messageService;
                var vm = this;
                vm.includeArchived = false;
                vm.unreadMessagesOnly = false;
                vm.messages = [];
                vm.getMessages();
            }
            MessagesController.prototype.getMessages = function () {
                var vm = this;
                vm.controllerReady = false;
                vm.messageService.getMessages(vm.includeArchived).then(function (result) {
                    vm.messages = result;
                    vm.applyFilter();
                    vm.controllerReady = true;
                });
            };
            MessagesController.prototype.applyFilter = function () {
                var vm = this;
                if (vm.unreadMessagesOnly == true) {
                    vm.filteredMessages = vm.$filter('filter')(vm.messages, { MessageRead: false });
                }
                else {
                    vm.filteredMessages = vm.messages;
                }
                for (var messageNumber in vm.filteredMessages) {
                    vm.filteredMessages[messageNumber].StartDate = new Date(vm.filteredMessages[messageNumber].StartDate + "Z");
                }
            };
            MessagesController.prototype.selectMessage = function (message, idx) {
                var vm = this;
                for (var index = 0; index < this.messages.length; index++) {
                    this.messages[index].IsSelected = false;
                }
                this.selectedMessage = message;
                this.selectedMessage.IsSelected = true;
                this.markMessageRead();
                var vm = this;
                var settings = {
                    controller: "app.messages.MessageModalController as vm",
                    templateUrl: "app/messages/messages.modal.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'lg',
                    resolve: {
                        message: function () { return message; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
            };
            MessagesController.prototype.markMessageRead = function () {
                var vm = this;
                if (!vm.selectedMessage.MessageRead) {
                    vm.selectedMessage.MessageRead = true;
                    vm.messageService.markMessageRead(vm.selectedMessage.MessageId);
                }
            };
            MessagesController.prototype.unreadMessageCount = function () {
                var count = 0;
                for (var index = 0; index < this.messages.length; index++) {
                    if (this.messages[index].MessageRead == false) {
                        count += 1;
                    }
                }
                return count;
            };
            MessagesController.prototype.downloadAttachmnet = function (messageId, attachment) {
                var vm = this;
                vm.messageService.downloadFileContent(messageId, attachment);
            };
            MessagesController.$inject = ["$state", "$filter", "$uibModal", "app.services.MessageService"];
            return MessagesController;
        }());
        angular.module("app.messages")
            .controller("app.messages.MessagesController", MessagesController);
    })(messages = app.messages || (app.messages = {}));
})(app || (app = {}));
//# sourceMappingURL=messages.controller.js.map
var app;
(function (app) {
    var messages;
    (function (messages) {
        "use strict";
        var MessageModalController = (function () {
            function MessageModalController($modalInstance, messageService, message) {
                this.$modalInstance = $modalInstance;
                this.messageService = messageService;
                var vm = this;
                console.log(message);
                vm.message = message;
            }
            MessageModalController.prototype.downloadAttachmnet = function (messageId, attachment) {
                var vm = this;
                vm.messageService.downloadFileContent(messageId, attachment);
            };
            MessageModalController.prototype.close = function () {
                this.$modalInstance.dismiss();
            };
            MessageModalController.$inject = ["$uibModalInstance", "app.services.MessageService", "message"];
            return MessageModalController;
        }());
        angular.module("app.messages")
            .controller("app.messages.MessageModalController", MessageModalController);
    })(messages = app.messages || (app.messages = {}));
})(app || (app = {}));
//# sourceMappingURL=messages.modal.controller.js.map
var app;
(function (app) {
    var outofservice;
    (function (outofservice) {
        "use strict";
        var OutOfServiceController = (function () {
            function OutOfServiceController() {
                var vm = this;
                vm.outOfServiceText = outOfServiceText;
            }
            return OutOfServiceController;
        }());
        angular.module("app.outofservice")
            .controller("app.outofservice.OutOfServiceController", OutOfServiceController);
    })(outofservice = app.outofservice || (app.outofservice = {}));
})(app || (app = {}));
//# sourceMappingURL=outofservice.controller.js.map
var partcatalog;
(function (partcatalog) {
    var home;
    (function (home) {
        "use strict";
        var PartCatalogController = (function () {
            function PartCatalogController($state, partService, partsCatalogService, $q, rootScope, loginService, $sce, $modal, vinService, isVIN, $scope) {
                this.$state = $state;
                this.partService = partService;
                this.partsCatalogService = partsCatalogService;
                this.$q = $q;
                this.rootScope = rootScope;
                this.loginService = loginService;
                this.$sce = $sce;
                this.vinService = vinService;
                this.$scope = $scope;
                this.trusted = {};
                var vm = this;
                vm.$modal = $modal;
                vm.isVIN = isVIN;
                vm.init();
            }
            PartCatalogController.prototype.init = function () {
                var vm = this;
                if (!vm.rootScope.PartsCatalog) {
                    vm.rootScope.PartsCatalog = new app.core.PageData(this.partsCatalogService, this.search.bind(this));
                    vm.rootScope.PartsCatalog.SearchText = vm.$state.params["search"];
                    vm.rootScope.PartsCatalog.SortField = '';
                    vm.rootScope.PartsCatalog.SortDesc = true;
                    vm.rootScope.PartsCatalog.SearchField.RetailSold = 'Any';
                    vm.rootScope.PartsCatalog.SearchField.HasAdvisories = false;
                    vm.rootScope.PartsCatalog.Ready = true;
                    vm.rootScope.PartsCatalog.SearchField.showprices = true;
                    vm.rootScope.PartsCatalog.Filters = new app.core.SearchFilters(this.GetFilters(), this.updateFilter.bind(this));
                    if (!vm.isVIN) {
                        if (vm.loginService.UserInfo.DefaultDivision) {
                            vm.rootScope.PartsCatalog.Filters.SetFilter("Division", vm.loginService.UserInfo.DefaultDivision, true, false, true);
                        }
                    }
                    else {
                        vm.rootScope.PartsCatalog.ClearIfExpired();
                    }
                }
                else {
                    this.getCatalog();
                }
            };
            PartCatalogController.prototype.whenEnterKeyIsHitSearch = function ($scope) {
                var vm = this;
                var onEnter = function (e) {
                    if (e.which == 13) {
                        vm.Search();
                    }
                };
                $(document).keydown(onEnter);
                $scope.$on('$destroy', function () {
                    $(document).unbind('keydown', onEnter);
                });
            };
            PartCatalogController.prototype.updateFilter = function (field, filter) {
                var _this = this;
                var me = this;
                me.filterUpdating = true;
                return new this.$q(function (resolve, reject) {
                    filter.IsVIN = me.isVIN;
                    _this.partsCatalogService.searchCategory(filter).then(function (result) {
                        resolve(result);
                        me.filterUpdating = false;
                        setTimeout(function () {
                            me.getCatalog();
                        }, 1000);
                    });
                });
            };
            PartCatalogController.prototype.onFilterChange = function (filter) {
                this.rootScope.PartsCatalog.Filters.UpdateCategories(filter, true);
                this.getCatalog();
            };
            PartCatalogController.prototype.getCatalog = function () {
                var vm = this;
                vm.noCatalog = false;
                this.partsCatalogService.getCatalog(vm.rootScope.PartsCatalog.Filters.GetFilterValue('Division'), vm.vinValidated ? vm.unitInfo.Brand : vm.rootScope.PartsCatalog.Filters.GetFilterValue('Make'), vm.vinValidated ? vm.unitInfo.Site : vm.rootScope.PartsCatalog.Filters.GetFilterValue('Site'), vm.vinValidated ? vm.unitInfo.SubBrand : vm.rootScope.PartsCatalog.Filters.GetFilterValue('SubBrand'), vm.unitInfo ? vm.unitInfo.Location : null, vm.vinValidated == true).then(function (result) {
                    vm.catalog = result;
                    if (vm.vinValidated && !result)
                        vm.noCatalog = true;
                    vm.VIN = vm.rootScope.PartsCatalog.Filters.GetFilterValue('VinNumber');
                });
            };
            PartCatalogController.prototype.GetFilters = function () {
                var vm = this;
                return [
                    {
                        Label: "Business Unit",
                        SearchField: "Division",
                        Value: null,
                        ShowWhenPopulate: [],
                        Required: function () { return true; },
                        Options: [],
                        LockOptions: false,
                        DefaultOnSingleValue: true,
                        ShowIfNoResults: true,
                        ClearAllFieldsAfter: true
                    },
                    {
                        Label: "Brand",
                        SearchField: "Make",
                        Value: null,
                        ShowWhenPopulate: [],
                        Required: function () { return true; },
                        Options: [],
                        LockOptions: false,
                        ClearAllFieldsAfter: true
                    }, {
                        Label: "Sub Brand",
                        SearchField: "SubBrand",
                        Value: null,
                        ShowWhenPopulate: ["Make"],
                        Required: function () { return !vm.catalog && this.Options.length > 0; },
                        Options: [],
                        LockOptions: false,
                        ClearAllFieldsAfter: true
                    }, {
                        Label: "Location",
                        SearchField: "Site",
                        Value: null,
                        ShowWhenPopulate: ["Division"],
                        Required: function () { return this.Options.length > 0; },
                        Options: [],
                        LockOptions: false,
                        DefaultOnSingleValue: false
                    }, {
                        Label: "Model Year",
                        SearchField: "ModelYear",
                        Value: null,
                        ShowWhenPopulate: ['Site'],
                        Required: function () { return false; },
                        Options: [],
                        LockOptions: false
                    }, {
                        Label: "Category",
                        SearchField: "Category",
                        Value: null,
                        ShowWhenPopulate: ['Site'],
                        Required: function () { return false; },
                        Options: [],
                        LockOptions: false,
                        ClearOtherFields: ["SubCategory"]
                    }, {
                        Label: "Sub Category",
                        SearchField: "SubCategory",
                        Value: null,
                        ShowWhenPopulate: ['Site'],
                        Required: function () { return false; },
                        Options: [],
                        LockOptions: false
                    }, {
                        Label: "Type",
                        SearchField: "Type",
                        Value: null,
                        ShowWhenPopulate: ['Site'],
                        Required: function () { return false; },
                        Options: [],
                        LockOptions: false,
                        ClearOtherFields: ["SubType"]
                    }, {
                        Label: "Sub Type",
                        SearchField: "SubType",
                        Value: null,
                        ShowWhenPopulate: ['Site'],
                        Required: function () { return false; },
                        Options: [],
                        LockOptions: false
                    }, {
                        Label: "Model",
                        SearchField: "ModelCode",
                        Value: null,
                        ShowWhenPopulate: ['Site'],
                        Required: function () { return false; },
                        Options: [],
                        LockOptions: false,
                        OnlyShowValueIfValid: false,
                        DefaultOnSingleValue: false
                    }, {
                        Label: "Vin",
                        SearchField: "VinNumber",
                        Value: null,
                        ShowWhenPopulate: [''],
                        Required: function () { return false; },
                        Options: [],
                        LockOptions: false,
                        OnlyShowValueIfValid: false,
                        DefaultOnSingleValue: false
                    }
                ];
            };
            PartCatalogController.prototype.Search = function () {
                if (this.catalog && this.rootScope.PartsCatalog.Filters.AllowSearch())
                    this.rootScope.PartsCatalog.Search();
            };
            PartCatalogController.prototype.search = function (searchService, page) {
                this.controllerReady = false;
                var query = new app.services.SearchQuery();
                query.PageSize = page.PageSize;
                query.CurrentPage = page.CurrentPage;
                query.SortField = page.SortField;
                query.SortAscending = page.SortDesc;
                var filter = this.rootScope.PartsCatalog.Filters.GetAllFilters();
                filter.SimpleSearch = page.SearchText;
                filter.IsVIN = this.vinValidated;
                if (filter.IsVIN)
                    filter.Site = this.unitInfo.Warehouse;
                query.Filter = filter;
                searchService.searchAdvanced(query).then(function (data) {
                    page.Update(data);
                }, function (errorResponse) {
                    page.Ready = true;
                    page.ErrorMessage = "There was an error when performing your search.  Please try again.";
                });
            };
            PartCatalogController.prototype.detail = function (partNumber) {
                var vm = this;
                vm.$state.go("partcatalogdetail", {
                    partnumber: partNumber,
                    showprices: vm.rootScope.PartsCatalog.SearchField.showprices,
                    division: vm.rootScope.PartsCatalog.Filters.GetFilterValue('Division'),
                    make: vm.rootScope.PartsCatalog.Filters.GetFilterValue('Make'),
                    site: vm.rootScope.PartsCatalog.Filters.GetFilterValue('Site'),
                    modelYear: vm.rootScope.PartsCatalog.Filters.GetFilterValue('ModelYear'),
                    Subbrand: vm.rootScope.PartsCatalog.Filters.GetFilterValue('SubBrand'),
                    Vin: vm.VIN,
                    Catalog: vm.catalog
                });
            };
            PartCatalogController.prototype.getImageHTML = function (part) {
                var ret = this.trusted[part.ImageThumbURL] || (this.trusted[part.ImageThumbURL] = this.$sce.getTrustedHtml("<div><img src='/api/image/false/?file=" + encodeURIComponent(part.ImageThumbURL) + "' /></div>"));
                return ret;
            };
            PartCatalogController.prototype.getImageUrl = function (url) {
                return "/api/image/false/?file=" + encodeURIComponent(url);
            };
            PartCatalogController.prototype.updateVIN = function (unitInfo) {
                var vm = this;
                if (vm.VIN.length >= 8) {
                    if (unitInfo) {
                        vm.vinValidated = true;
                        var numericModelYear = parseInt(unitInfo.ModelYear);
                        vm.loading = true;
                        vm.rootScope.PartsCatalog.Filters.SetFilter('Division', null, false, false);
                        vm.rootScope.PartsCatalog.Filters.SetFilter('Make', null, false, false);
                        vm.rootScope.PartsCatalog.Filters.SetFilter('SubBrand', null, false, false);
                        vm.rootScope.PartsCatalog.Filters.SetFilter('Site', null, false, false);
                        vm.rootScope.PartsCatalog.Filters.SetFilter('ModelYear', null, false, false);
                        vm.rootScope.PartsCatalog.Filters.SetFilter('ModelCode', null, false, false);
                        vm.rootScope.PartsCatalog.Filters.SetFilter('Category', null, false, false);
                        vm.rootScope.PartsCatalog.Filters.SetFilter('SubCategory', null, false, false);
                        vm.rootScope.PartsCatalog.Filters.SetFilter('Type', null, false, false);
                        vm.rootScope.PartsCatalog.Filters.SetFilter('SubType', null, false, false);
                        vm.rootScope.PartsCatalog.Filters.SetFilter('Division', unitInfo.Division, false, true);
                        vm.rootScope.PartsCatalog.Filters.SetFilter('Make', unitInfo.BrandDescription, false, true);
                        vm.rootScope.PartsCatalog.Filters.SetFilter('SubBrand', unitInfo.SubBrandDescription, false, true);
                        vm.rootScope.PartsCatalog.Filters.SetFilter('Site', unitInfo.LocationDescription || unitInfo.Location, false, true, true);
                        if (numericModelYear > 2016) {
                            vm.rootScope.PartsCatalog.Filters.SetFilter('ModelYear', unitInfo.ModelYear, false, false, true);
                        }
                        else {
                            vm.rootScope.PartsCatalog.Filters.SetFilter('ModelYear', '', false, false, false);
                        }
                        vm.rootScope.PartsCatalog.Filters.SetFilter('ModelCode', unitInfo.ModelCode, false, false, true);
                        vm.rootScope.PartsCatalog.Filters.SetFilter('VinNumber', unitInfo.VIN, false, true);
                        vm.rootScope.PartsCatalog.Filters.UpdateFilter(vm.rootScope.PartsCatalog.Filters.filters[3], false);
                        vm.unitInfo = unitInfo;
                        setTimeout(function () {
                            vm.loading = false;
                        }, 1000);
                    }
                    else {
                    }
                }
            };
            PartCatalogController.prototype.clearVin = function () {
                var vm = this;
                vm.VIN = "";
                vm.unitInfo = null;
                vm.rootScope.PartsCatalog.Filters.readOnlyFilters = [];
                vm.rootScope.PartsCatalog.Filters.SetFilter('Division', null, false, false);
                vm.rootScope.PartsCatalog.Filters.SetFilter('Make', null, false, false);
                vm.rootScope.PartsCatalog.Filters.SetFilter('SubBrand', null, false, false);
                vm.rootScope.PartsCatalog.Filters.SetFilter('Site', null, false, false);
                vm.rootScope.PartsCatalog.Filters.SetFilter('ModelYear', null, false, false);
                vm.rootScope.PartsCatalog.Filters.SetFilter('ModelCode', null, false, false);
                vm.rootScope.PartsCatalog.Filters.SetFilter('Category', null, false, false);
                vm.rootScope.PartsCatalog.Filters.SetFilter('SubCategory', null, false, false);
                vm.rootScope.PartsCatalog.Filters.SetFilter('Type', null, false, false);
                vm.rootScope.PartsCatalog.Filters.SetFilter('SubType', null, false, false);
                vm.rootScope.PartsCatalog.Filters.SetFilter('VinNumber', null, false, false);
                vm.vinValidated = false;
                vm.previousVinVaule = "";
                vm.getCatalog();
                this.rootScope.PartsCatalog.Filters.UpdateCategories(null, false);
            };
            PartCatalogController.prototype.clearFilter = function () {
                this.clearVin();
                this.rootScope.PartsCatalog.Results = null;
                this.rootScope.PartsCatalog.SearchText = "";
            };
            PartCatalogController.prototype.vinChange = function () {
                var vm = this;
                vm.previousVinVaule = vm.VIN;
                if (!vm.VIN)
                    vm.clearVin();
            };
            PartCatalogController.prototype.vinToClean = function () {
                var vm = this;
                if (vm.VIN.length < 17 && vm.VIN.length == 0) {
                    this.clearVin();
                }
            };
            PartCatalogController.prototype.vinIsValid = function () {
                var vm = this;
                vm.controllerReady = false;
                var valid = false;
                if (vm.VIN != vm.previousVinVaule && vm.VIN.length == 17) {
                    vm.vinValidated = false;
                    this.vinService.getVIN(vm.VIN, true).then(function (data) {
                        if (data) {
                            vm.updateVIN(data);
                        }
                    }, function (error) {
                        valid = false;
                    });
                }
                vm.previousVinVaule = vm.VIN;
            };
            PartCatalogController.prototype.vinSearch = function () {
                var vm = this;
                if (vm.VIN.length != 17) {
                    var vm = this;
                    var settings = {
                        controller: "app.unit.UnitModalController as vm",
                        templateUrl: "app/unit/unit.modal.html",
                        keyboard: false,
                        backdrop: true,
                        size: 'xl',
                        resolve: {
                            search: function () { return vm.VIN; },
                            userDealers: function () { return null; },
                            allUnitsSearch: function () { return true; },
                            includeLegacy: function () { return true; }
                        }
                    };
                    var modalInstance = this.$modal.open(settings);
                    modalInstance.result.then(function (resultdata) {
                        vm.VIN = resultdata.VIN;
                        vm.vinIsValid();
                    });
                }
                else {
                    vm.vinIsValid();
                }
            };
            PartCatalogController.$inject = ["$state", "app.services.PartService", "app.services.PartsCatalogService", "$q", "$rootScope", "app.services.LoginService", "$sce", "$uibModal", "app.services.VINService", "isVIN", "$scope"];
            return PartCatalogController;
        }());
        home.PartCatalogController = PartCatalogController;
        angular.module("app.partcatalog")
            .controller("app.partcatalog.PartCatalogController", PartCatalogController);
    })(home = partcatalog.home || (partcatalog.home = {}));
})(partcatalog || (partcatalog = {}));
//# sourceMappingURL=partcatalog.controller.js.map
var partcatalog;
(function (partcatalog) {
    var home;
    (function (home) {
        "use strict";
        var PartCatalogDetailController = (function () {
            function PartCatalogDetailController($state, partService, scope, $sce, loginService, modal) {
                this.$state = $state;
                this.partService = partService;
                this.scope = scope;
                this.$sce = $sce;
                this.loginService = loginService;
                this.trusted = {};
                var vm = this;
                vm.modal = modal;
                if (!modal) {
                    vm.partNumber = $state.params['partnumber'];
                    vm.Division = $state.params['division'];
                    vm.Make = $state.params['make'];
                    vm.Site = $state.params['site'];
                    vm.ModelCode = $state.params['modelCode'];
                    vm.ModelYear = $state.params['modelYear'];
                    vm.Subbrand = $state.params['Subbrand'];
                    vm.Catalog = $state.params['Catalog'];
                    vm.Vin = $state.params['Vin'];
                }
                vm.scope.$on('$destroy', function iVeBeenDismissed() {
                    $('.zoomContainer').remove();
                });
                var showprices = $state.params['showprices'];
                if (showprices) {
                    if (showprices.toLowerCase() == "false") {
                        vm.showprices = false;
                    }
                    else {
                        vm.showprices = true;
                    }
                }
                else {
                    vm.showprices = true;
                }
                if (vm.partNumber)
                    this.loadPart(vm.partNumber);
                vm.AddParentItem = false;
            }
            PartCatalogDetailController.prototype.loadPart = function (partNumber) {
                var _this = this;
                this.headerText = partNumber;
                this.partService.getPart(partNumber).then(function (data) {
                    _this.data = data;
                    var me = _this;
                    me.controllerReady = true;
                    setTimeout(function () {
                        $('#imageGallery').lightSlider({
                            gallery: true,
                            item: 1,
                            loop: true,
                            thumbItem: 9,
                            slideMargin: 0,
                            enableDrag: false,
                            currentPagerPosition: 'left',
                            controls: false,
                            verticalHeight: 295,
                            adaptiveHeight: true,
                            onSliderLoad: function (el) {
                                $('.lslide.active img').ezPlus({
                                    scrollZoom: true
                                });
                            },
                            onAfterSlide: function (el) {
                                $('.lslide.active img').ezPlus({
                                    scrollZoom: true
                                });
                            },
                            onBeforeSlide: function (el) {
                                $('.zoomContainer').remove();
                                $('.lslide.active img').removeData('elevateZoom');
                                $('.lslide.active img').removeData('zoomImage');
                            }
                        });
                    }, 2);
                });
                this.partService.getSupplementalParts(partNumber, this.Catalog).then(function (data) {
                    _this.supplemental = data;
                });
            };
            PartCatalogDetailController.prototype.getImageSource = function (filePath) {
                return "/api/image/false/?file=" + encodeURIComponent(filePath);
            };
            PartCatalogDetailController.prototype.addToOrder = function () {
                var vm = this;
                var parts = new Array();
                var isParent = false;
                if (vm.AddParentItem || vm.supplemental.length == 0) {
                    isParent = true;
                }
                if (this.supplemental) {
                    for (var index = 0; index < this.supplemental.length; index++) {
                        if (((!this.supplemental[index].Optional && vm.AddParentItem) || (this.supplemental[index].Checked)) && (this.supplemental[index].SupplementalPartNumber != vm.partNumber)) {
                            parts.push(this.supplemental[index].SupplementalPartNumber);
                        }
                    }
                }
                var me = this;
                if (parts.length) {
                    if (!isParent) {
                        vex.dialog.confirm({
                            message: "You are trying to add a supplemental part without the parent, do you wish to proceed?",
                            callback: function (value) {
                                if (value) {
                                    me.$state.go('partordercreate', { "partnumber": parts, "division": vm.Division, "site": vm.Site, "make": vm.Make, "modelCode": vm.ModelCode, "modelYear": vm.ModelYear, "subBrand": vm.Subbrand, "isParent": isParent, "vin": vm.Vin });
                                }
                            }
                        });
                        return;
                    }
                    else {
                        parts.push(vm.partNumber);
                        this.$state.go('partordercreate', { "partnumber": parts, "division": vm.Division, "site": vm.Site, "make": vm.Make, "modelCode": vm.ModelCode, "modelYear": vm.ModelYear, "subBrand": vm.Subbrand, "isParent": isParent, "vin": vm.Vin });
                    }
                }
                else {
                    var requiredSupplemental = vm.supplemental.filter(function (x) { return !x.Optional; });
                    if (!isParent) {
                        vex.dialog.alert({
                            message: "You did not select a parent or supplemental part. Please make a selection and try again."
                        });
                    }
                    else if (requiredSupplemental && vm.supplemental.length > 0) {
                        vex.dialog.confirm({
                            message: "You did not select any supplemental parts, are you sure you just want to add " + vm.partNumber + "?",
                            callback: function (value) {
                                if (value) {
                                    me.$state.go('partordercreate', { "partnumber": vm.partNumber, "division": vm.Division, "site": vm.Site, "make": vm.Make, "modelCode": vm.ModelCode, "modelYear": vm.ModelYear, "subBrand": vm.Subbrand, "isParent": isParent, "vin": vm.Vin });
                                }
                            }
                        });
                    }
                    else {
                        this.$state.go('partordercreate', { "partnumber": vm.partNumber, "division": vm.Division, "site": vm.Site, "make": vm.Make, "modelCode": vm.ModelCode, "modelYear": vm.ModelYear, "subBrand": vm.Subbrand, "isParent": isParent, "vin": vm.Vin });
                    }
                }
            };
            PartCatalogDetailController.prototype.getImageHTML = function (part) {
                var ret = this.trusted[part.ImageThumbURL] || (this.trusted[part.ImageThumbURL] = this.$sce.getTrustedHtml("<div><img src='/api/image/false/?file=" + encodeURIComponent(part.ImageThumbURL) + "' /></div>"));
                console.log(ret);
                return ret;
            };
            PartCatalogDetailController.prototype.getImageUrl = function (url) {
                return "/api/image/false/?file=" + encodeURIComponent(url);
            };
            PartCatalogDetailController.prototype.back = function () {
                window.history.back();
            };
            PartCatalogDetailController.$inject = ["$state", "app.services.PartService", "$scope", "$sce", "app.services.LoginService", "modal"];
            return PartCatalogDetailController;
        }());
        home.PartCatalogDetailController = PartCatalogDetailController;
        angular.module("app.partcatalog")
            .controller("app.partcatalog.PartCatalogDetailController", PartCatalogDetailController);
    })(home = partcatalog.home || (partcatalog.home = {}));
})(partcatalog || (partcatalog = {}));
//# sourceMappingURL=partcatalog.details.controller.js.map
var __extends = (this && this.__extends) || (function () {
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };
    return function (d, b) {
        if (typeof b !== "function" && b !== null)
            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();
var partcatalog;
(function (partcatalog) {
    var home;
    (function (home) {
        "use strict";
        var PartCatalogDetailModalController = (function (_super) {
            __extends(PartCatalogDetailModalController, _super);
            function PartCatalogDetailModalController($state, partService, scope, $sce, loginService, $modalInstance, partNumber, typeToAdd, Catalog) {
                var _this = _super.call(this, $state, partService, scope, $sce, loginService, true) || this;
                _this.$modalInstance = $modalInstance;
                var vm = _this;
                vm.Catalog = Catalog;
                vm.typeToAdd = typeToAdd;
                _this.loadPart(partNumber);
                return _this;
            }
            PartCatalogDetailModalController.prototype.close = function () {
                this.$modalInstance.close(false);
            };
            PartCatalogDetailModalController.prototype.addToOrder = function () {
                var vm = this;
                var parts = new Array();
                var isParent = false;
                var ParentPartNumber = this.data.PartNumber;
                if (vm.AddParentItem || vm.supplemental.length == 0) {
                    isParent = true;
                    var selpart = new app.services.SelectedPart();
                    selpart.PartNumber = ParentPartNumber;
                    selpart.NoCharge = false;
                    selpart.IsParent = true;
                    parts.push(selpart);
                }
                if (this.supplemental) {
                    for (var index = 0; index < this.supplemental.length; index++) {
                        if (((!this.supplemental[index].Optional && vm.AddParentItem) || (this.supplemental[index].Checked)) && (this.supplemental[index].SupplementalPartNumber != vm.partNumber)) {
                            var selpart = new app.services.SelectedPart();
                            selpart.PartNumber = this.supplemental[index].SupplementalPartNumber;
                            selpart.NoCharge = this.supplemental[index].NoCharge;
                            selpart.ParentPartNumber = ParentPartNumber;
                            parts.push(selpart);
                        }
                    }
                }
                if (parts.length) {
                    if (!isParent) {
                        var me = this;
                        vex.dialog.confirm({
                            message: "You are trying to add a supplemental part without the parent, do you wish to proceed?",
                            callback: function (value) {
                                if (value) {
                                    vm.$modalInstance.close(parts);
                                }
                            }
                        });
                        return;
                    }
                    else {
                        vm.$modalInstance.close(parts);
                    }
                }
                else {
                    if (vm.supplemental.length > 0) {
                        vex.dialog.alert({
                            message: "You did not select a parent or supplemental part. Please make a selection and try again."
                        });
                    }
                    else {
                        vm.$modalInstance.close(parts);
                    }
                }
            };
            PartCatalogDetailModalController.$inject = ["$state", "app.services.PartService", "$scope", "$sce", "app.services.LoginService", "$uibModalInstance", "partNumber", "typeToAdd", "Catalog"];
            return PartCatalogDetailModalController;
        }(home.PartCatalogDetailController));
        home.PartCatalogDetailModalController = PartCatalogDetailModalController;
        angular.module("app.partcatalog")
            .controller("app.partcatalog.PartCatalogDetailsModalController", PartCatalogDetailModalController);
    })(home = partcatalog.home || (partcatalog.home = {}));
})(partcatalog || (partcatalog = {}));
//# sourceMappingURL=partcatalog.details.modal.controller.js.map
var __extends = (this && this.__extends) || (function () {
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };
    return function (d, b) {
        if (typeof b !== "function" && b !== null)
            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();
var partcatalog;
(function (partcatalog) {
    var home;
    (function (home) {
        "use strict";
        var PartCatalogModalController = (function (_super) {
            __extends(PartCatalogModalController, _super);
            function PartCatalogModalController($state, partService, partsCatalogService, $q, rootScope, loginService, $modalInstance, $modal, $sce, division, make, location, site, modelCode, isVIN, $scope, modelYearLocked, modelCodeLocked, searchText, subBrand, filter, modelYear, typeToAdd, vinService, vin) {
                var _this = _super.call(this, $state, partService, partsCatalogService, $q, rootScope, loginService, $sce, $modal, vinService, isVIN, $scope) || this;
                var vm = _this;
                vm.typeToAdd = typeToAdd;
                vm.modal = true;
                vm.$modalInstance = $modalInstance;
                if (vin) {
                    _this.VIN = vin;
                    _this.disableVin = true;
                    _this.vinSearch();
                }
                else {
                    if (division) {
                        rootScope.PartsCatalog.Filters.SetFilter("Division", division, false, true, true);
                    }
                    if (make) {
                        rootScope.PartsCatalog.Filters.SetFilter("Make", make, false, true, true);
                    }
                    if (site) {
                        if (isVIN)
                            rootScope.PartsCatalog.Filters.SetOptions("Site", site);
                        rootScope.PartsCatalog.Filters.SetFilter("Site", site, false, true, true);
                    }
                    if (subBrand) {
                        rootScope.PartsCatalog.Filters.SetFilter("SubBrand", subBrand, false, true, true);
                    }
                    if (modelYear) {
                        rootScope.PartsCatalog.Filters.SetFilter("ModelYear", modelYear, false, false, true);
                    }
                    if (searchText) {
                        rootScope.PartsCatalog.SearchText = searchText;
                    }
                    if (modelCode) {
                        rootScope.PartsCatalog.Filters.SetFilter("ModelCode", modelCode, false, false, true);
                    }
                    if (filter) {
                        if (isVIN)
                            rootScope.PartsCatalog.Filters.SetOptions("Site", filter.filter(function (x) { return x.SearchField == "Site"; })[0].Value);
                        rootScope.PartsCatalog.Filters.Merge(filter, true, ["ModelYear", "ModelCode"], []);
                    }
                    else
                        rootScope.PartsCatalog.Filters.UpdateCategories(rootScope.PartsCatalog.Filters.filters[0], false);
                }
                setTimeout(function () {
                    vm.getCatalog();
                }, 2000);
                return _this;
            }
            PartCatalogModalController.prototype.select = function (partNumber) {
                var parts = new Array();
                var selpart = new app.services.SelectedPart();
                selpart.PartNumber = partNumber;
                selpart.NoCharge = false;
                parts.push(selpart);
                this.$modalInstance.close(parts);
            };
            PartCatalogModalController.prototype.close = function () {
                this.$modalInstance.dismiss();
            };
            PartCatalogModalController.prototype.detail = function (partNumber) {
                var vm = this;
                var settings = {
                    controller: "app.partcatalog.PartCatalogDetailsModalController as vm",
                    templateUrl: "app/partcatalog/partcatalog.details.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'xl',
                    resolve: {
                        partNumber: function () { return partNumber; },
                        typeToAdd: function () { return vm.typeToAdd; },
                        Catalog: function () { return vm.catalog; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
                modalInstance.result.then(function (resultdata) {
                    if (resultdata)
                        vm.$modalInstance.close(resultdata);
                });
            };
            PartCatalogModalController.$inject = ["$state", "app.services.PartService", "app.services.PartsCatalogService", "$q", "$rootScope", "app.services.LoginService", "$uibModalInstance", "$uibModal", "$sce", "division", "make", "location", "site", "modelCode", "isVIN", "$scope", "modelYearLocked", "modelCodeLocked", "searchText", "subBrand", "filter", "modelYear", "typeToAdd", "app.services.VINService", "vin"];
            return PartCatalogModalController;
        }(home.PartCatalogController));
        home.PartCatalogModalController = PartCatalogModalController;
        angular.module("app.partcatalog")
            .controller("app.partcatalog.PartCatalogModalController", PartCatalogModalController);
    })(home = partcatalog.home || (partcatalog.home = {}));
})(partcatalog || (partcatalog = {}));
//# sourceMappingURL=partcatalog.modal.controller.js.map
var partorder;
(function (partorder) {
    var home;
    (function (home) {
        "use strict";
        var PartOrderController = (function () {
            function PartOrderController($state, partOrderService, rootScope, loginService, salesPersonService, userService, $scope) {
                var _this = this;
                this.$state = $state;
                this.partOrderService = partOrderService;
                this.rootScope = rootScope;
                this.loginService = loginService;
                this.salesPersonService = salesPersonService;
                this.userService = userService;
                this.$scope = $scope;
                var vm = this;
                vm.currentSearch = 0;
                vm.statuses = partOrderService.getStatuses();
                var newsearch = $state.params["search"];
                vm.salesPersonService.getSalesPeople().then(function (data) {
                    salesPersonService.setDisplayField(data);
                    vm.contactpeople = data;
                });
                if (!vm.rootScope.PartOrder || $state.params["search"]) {
                    vm.rootScope.PartOrder = new app.core.PageData(partOrderService, this.search.bind(this));
                    if (!vm.rootScope.PartOrder.SearchText) {
                        vm.rootScope.PartOrder.SearchText = '';
                    }
                    if (newsearch != "Needs Review" && newsearch != "Draft") {
                        vm.rootScope.PartOrder.SearchField.ShowMyOrders = "Yes";
                        vm.salesPersonService.getCreatedBy().then(function (data) {
                            vm.createdBy = data;
                        });
                    }
                    if (newsearch == "Needs Review" || newsearch == "Draft") {
                        vm.rootScope.PartOrder.SearchField.OrderStatus = newsearch;
                    }
                    else {
                        vm.rootScope.PartOrder.SearchField.VIN = newsearch;
                    }
                    vm.rootScope.PartOrder.SearchField.ShowMyOrders = "All";
                    vm.rootScope.PartOrder.SortField = 'ERPPartOrderNumber';
                    vm.rootScope.PartOrder.SearchField.Year = vm.rootScope.PartOrder.Years[0].Value;
                    vm.rootScope.PartOrder.SortDesc = true;
                    if (newsearch != "Needs Review" && newsearch != "Draft") {
                        vm.rootScope.PartOrder.Search();
                    }
                    else {
                        vm.salesPersonService.getCreatedBy().then(function (data) {
                            vm.createdBy = data;
                            vm.rootScope.PartOrder.SearchField.CreatedBy = _this.loginService.UserInfo.Username;
                        })["finally"](function () {
                            vm.rootScope.PartOrder.SearchField.ShowMyOrders = "Yes";
                            vm.rootScope.PartOrder.Search();
                            vm.$scope.$apply();
                            vm.$scope.$digest();
                        });
                    }
                }
                else {
                    vm.salesPersonService.getSalesPeople().then(function (data) {
                        salesPersonService.setDisplayField(data);
                        vm.contactpeople = data;
                        if (newsearch == "Needs Review" || newsearch == "Draft") {
                            vm.rootScope.PartOrder.SearchField.CreatedBy = _this.loginService.UserInfo.Username;
                        }
                    });
                    vm.rootScope.PartOrder.SearchIfExpired();
                }
                this.whenEnterKeyIsHitSearch($scope);
            }
            PartOrderController.prototype.whenEnterKeyIsHitSearch = function ($scope) {
                var vm = this;
                var onEnter = function (e) {
                    if (e.which == 13) {
                        vm.rootScope.PartOrder.Search();
                    }
                };
                $(document).keydown(onEnter);
                $scope.$on('$destroy', function () {
                    $(document).unbind('keydown', onEnter);
                });
            };
            PartOrderController.prototype.openDatePicker = function ($event, control) {
                $event.preventDefault();
                $event.stopPropagation();
                if (control == "searchdatesubmitted") {
                    this.searchdatesubmittedopen = true;
                }
            };
            PartOrderController.prototype.search = function (searchService, page) {
                var query = new app.services.SearchQuery();
                var currentSearch = ++this.currentSearch;
                var vm = this;
                vm.loadingGrid = true;
                query.PageSize = page.PageSize;
                query.CurrentPage = page.CurrentPage;
                query.SortField = page.SortField;
                query.SortAscending = !page.SortDesc;
                var filter = new app.services.PartOrderSearchQueryFilter();
                filter.Contact = page.SearchField.Contact;
                filter.OrderNumber = page.SearchField.OrderNumber;
                filter.OrderStatus = page.SearchField.OrderStatus;
                filter.PurchaseOrderFormNumber = page.SearchField.PurchaseOrderFormNumber;
                filter.VIN = page.SearchField.VIN;
                filter.Years = page.SearchField.Year;
                filter.CustomerRef = page.SearchField.CustomerRef;
                filter.DateSubmitted = page.SearchField.DateSubmitted;
                filter.ShowMyOrders = page.SearchField.ShowMyOrders;
                filter.CreatedBy = page.SearchField.CreatedBy;
                filter.IsLoadPartsSearch = true;
                query.Filter = filter;
                searchService.searchAdvanced(query).then(function (data) {
                    if (currentSearch == vm.currentSearch) {
                        page.Update(data);
                        vm.loadingGrid = false;
                    }
                });
            };
            PartOrderController.prototype.deleteOrder = function (order) {
                var _this = this;
                var index = this.rootScope.PartOrder.Results.indexOf(order);
                if (index > -1) {
                    this.partOrderService.deletePartOrder(order.PartOrderNumber).then(function () {
                        _this.rootScope.PartOrder.Results.splice(index);
                    });
                }
            };
            PartOrderController.$inject = ["$state", "app.services.PartOrderService", "$rootScope", "app.services.LoginService", "app.services.SalesPersonService", "app.services.UserService", "$scope"];
            return PartOrderController;
        }());
        angular.module("app.partorder")
            .controller("app.partorder.PartOrderController", PartOrderController);
    })(home = partorder.home || (partorder.home = {}));
})(partorder || (partorder = {}));
//# sourceMappingURL=partorder.controller.js.map
var partorder;
(function (partorder) {
    var home;
    (function (home) {
        "use strict";
        var PartOrderCopyController = (function () {
            function PartOrderCopyController($modalInstance, $filter, partOrderService, targetClaim, targetClaimLabor, dealerService, $localStorage) {
                this.$modalInstance = $modalInstance;
                this.$filter = $filter;
                this.partOrderService = partOrderService;
                this.targetClaim = targetClaim;
                this.targetClaimLabor = targetClaimLabor;
                this.dealerService = dealerService;
                this.$localStorage = $localStorage;
                var vm = this;
                vm.targetClaimParts = angular.copy(targetClaimLabor.Parts);
                if (!vm.orders) {
                    vm.orders = new app.core.PageData(partOrderService, this.search);
                    vm.orders.SearchText = null;
                    vm.orders.AdvancedSearchMode = true;
                    vm.orders.PageSize = 5;
                    vm.orders.SearchField.VIN = targetClaim.VIN;
                    vm.orders.SearchField.OrderStatus = "Invoiced";
                    vm.orders.SearchField.DealerNumber = targetClaim.DealerNumber;
                    vm.orders.SearchField.ExcludeNotAssigned = true;
                    vm.orders.SearchField.IsLoadPartsSearch = true;
                    vm.orders.SortField = 'ERPPartOrderNumber';
                    vm.orders.SortDesc = true;
                    vm.orders.Search();
                }
                else {
                    vm.orders.SearchIfExpired();
                }
                dealerService.getDealer()
                    .then(function (data) {
                    vm.markupPercent = data.MarkupPercent ? data.MarkupPercent : vm.$localStorage.markupPercent;
                });
            }
            PartOrderCopyController.prototype.search = function (searchService, page) {
                var vm = this;
                if (page.AdvancedSearchMode) {
                    var query = new app.services.SearchQuery();
                    query.PageSize = page.PageSize;
                    query.CurrentPage = page.CurrentPage;
                    query.SortField = page.SortField;
                    query.SortAscending = page.SortDesc;
                    var filter = new app.services.PartOrderSearchQueryFilter();
                    filter.Contact = page.SearchField.Contact;
                    filter.OrderNumber = page.SearchField.OrderNumber;
                    filter.OrderStatus = page.SearchField.OrderStatus;
                    filter.PurchaseOrderFormNumber = page.SearchField.PurchaseOrderFormNumber;
                    filter.VIN = page.SearchField.VIN;
                    filter.DateSubmitted = page.SearchField.DateSubmitted;
                    filter.ExcludeNotAssigned = page.SearchField.ExcludeNotAssigned;
                    if (page.SearchField.IsLoadPartsSearch != null && page.SearchField.IsLoadPartsSearch) {
                        filter.IsLoadPartsSearch = page.SearchField.IsLoadPartsSearch;
                    }
                    query.Filter = filter;
                    searchService.searchAdvanced(query).then(function (data) {
                        page.Update(data);
                    });
                }
                else {
                    searchService.search(page.SearchText, false, page.PageSize, page.CurrentPage, page.SortField, page.SortDesc).then(function (data) {
                        page.Update(data);
                    });
                }
            };
            PartOrderCopyController.prototype.adjustRemainQty = function () {
                var vm = this;
                var partOrders = vm.orders.Results;
                if (partOrders.length > 0) {
                    angular.forEach(partOrders, function (order, orderIdx) {
                        angular.forEach(order.Lines, function (line, lineIdx) {
                            angular.forEach(vm.targetClaimLabor.Parts, function (part, partIdx) {
                            });
                        });
                    });
                }
            };
            PartOrderCopyController.prototype.save = function () {
                var vm = this;
                var partOrders = vm.orders.Results;
                if (partOrders.length > 0) {
                    angular.forEach(partOrders, function (order, orderIdx) {
                        if (order.Selected) {
                            angular.forEach(order.Lines, function (line, lineIdx) {
                                if (line.SelectedQuantity > 0) {
                                    vm.copyPartOrderLine(line, order.SalesId);
                                }
                            });
                        }
                    });
                }
                vm.targetClaimLabor.Parts = vm.targetClaimParts;
                this.$modalInstance.close(vm.targetClaimLabor);
            };
            PartOrderCopyController.prototype.cancel = function () {
                this.$modalInstance.dismiss('cancel');
            };
            PartOrderCopyController.prototype.copyPartOrderLine = function (partOrderLine, ERPPartOrderNumber) {
                var vm = this;
                var fileList = [];
                if (!vm.targetClaimParts) {
                    vm.targetClaimParts = new Array();
                }
                var newClaimPart = new app.services.IClaimPart();
                if (vm.targetClaimParts && vm.targetClaimParts.length > 0) {
                    var maxLineNum = Math.max.apply(Math, vm.targetClaimParts.map(function (part) { return part.ClaimPartsLineNumber; }));
                }
                else {
                    maxLineNum = 0;
                }
                maxLineNum += 1;
                newClaimPart.LineStatus = "Draft";
                newClaimPart.ClaimLaborLineNumber = vm.targetClaimLabor.ClaimLaborLineNumber;
                newClaimPart.ClaimPartsLineNumber = maxLineNum;
                newClaimPart.PartOrderNumber = partOrderLine.PartOrderNumber;
                newClaimPart.PartOrderLineNumber = partOrderLine.PartOrderLineNumber;
                newClaimPart.PartNumber = partOrderLine.PartNumber;
                newClaimPart.SubmittedQty = partOrderLine.SelectedQuantity;
                newClaimPart.IsManualPart = partOrderLine.IsManualPart;
                newClaimPart.PartCost = partOrderLine.PricePerUnit;
                newClaimPart.Description = partOrderLine.Description;
                newClaimPart.PartOrderLineRecordId = partOrderLine.ERPRecordId;
                newClaimPart.ERPPartOrderNumber = ERPPartOrderNumber;
                newClaimPart.InventTransId = partOrderLine.InventTransId;
                newClaimPart.SubmittedPartCost = partOrderLine.PricePerUnit;
                newClaimPart.MarkupPercent = vm.markupPercent;
                newClaimPart.Files = fileList;
                newClaimPart.NewLine = true;
                newClaimPart.IsNew = true;
                newClaimPart.CanadianBrokerage = 0;
                newClaimPart.SubmittedFreight = 0;
                newClaimPart.CrateCharge = 0;
                newClaimPart.SubmittedPartTotal = (Math.round((partOrderLine.SelectedQuantity * partOrderLine.PricePerUnit *
                    (1 + (vm.markupPercent / 100))) * 100) / 100);
                vm.targetClaimParts.push(newClaimPart);
            };
            PartOrderCopyController.prototype.getPartLineNumber = function (item) {
                var arrayLength = item.Parts.length;
                var highestnum = 0;
                for (var index = 0; index < arrayLength; index++) {
                    var linenum = parseInt(item.Parts[index].ClaimPartsLineNumber, null);
                    if (linenum > highestnum) {
                        highestnum = linenum;
                    }
                }
                return (highestnum + 1);
            };
            PartOrderCopyController.prototype.getOrderLines = function (order) {
                var vm = this;
                order.Selected = true;
                vm.partOrderService.getPartOrder(order.SalesId).then(function (result) {
                    order.Lines = result.Lines;
                    for (var i = result.Lines.length - 1; i >= 0; i--) {
                        if (result.Lines[i].Qty <= 0) {
                            result.Lines.splice(i, 1);
                        }
                        angular.forEach(vm.targetClaimLabor.Parts, function (part, partIdx) {
                            if (result.Lines[i]) {
                                if (part.NewLine && part.PartNumber == result.Lines[i].PartNumber && part.PartOrderLineNumber == result.Lines[i].PartOrderLineNumber) {
                                    result.Lines[i].Qty = result.Lines[i].Qty - part.SubmittedQty;
                                    if (result.Lines[i].Qty <= 0) {
                                        result.Lines.splice(i, 1);
                                    }
                                }
                            }
                        });
                    }
                    if (order.Lines.length > 0) {
                        angular.forEach(order.Lines, function (value, key) {
                            var newValue = value;
                            newValue.SelectedQuantity = 0;
                            order.Lines[key] = newValue;
                        });
                    }
                });
            };
            PartOrderCopyController.prototype.partOrderLineSelected = function (orderIdx, lineIdx) {
                return;
            };
            PartOrderCopyController.prototype.partOrderLineModified = function (orderIdx, lineIdx) {
                var vm = this;
                var order = vm.orders.Results[orderIdx];
                var partOrderLine = order.Lines[lineIdx];
                if (partOrderLine.SelectedQuantity > partOrderLine.RemainQuantity) {
                    partOrderLine.SelectedQuantity = partOrderLine.RemainQuantity;
                }
                else if (partOrderLine.SelectedQuantity < 0) {
                    partOrderLine.SelectedQuantity = 0;
                }
                order.Lines[lineIdx] = partOrderLine;
                vm.orders.Results[orderIdx] = order;
            };
            PartOrderCopyController.$inject = ["$uibModalInstance",
                "$filter",
                "app.services.PartOrderService",
                "targetClaim",
                "targetClaimLabor",
                "app.services.DealerService",
                "$localStorage"
            ];
            return PartOrderCopyController;
        }());
        angular.module("app.partorder")
            .controller("app.partorder.PartOrderCopyController", PartOrderCopyController);
    })(home = partorder.home || (partorder.home = {}));
})(partorder || (partorder = {}));
//# sourceMappingURL=partorder.copy.controller.js.map
var partorder;
(function (partorder) {
    var home;
    (function (home) {
        "use strict";
        var PartOrderDetailController = (function () {
            function PartOrderDetailController($state, partOrderService, partService, $modal, uomService, deliverymodeService, partsCatalogService, rootScope, loginService, makeService, modelCodeService, modelYearService, locationService, siteService, vinService, dealerService, salesPersonService, $q, reportService, userService, campaignService) {
                this.$state = $state;
                this.partOrderService = partOrderService;
                this.partService = partService;
                this.$modal = $modal;
                this.uomService = uomService;
                this.deliverymodeService = deliverymodeService;
                this.partsCatalogService = partsCatalogService;
                this.rootScope = rootScope;
                this.loginService = loginService;
                this.makeService = makeService;
                this.modelCodeService = modelCodeService;
                this.modelYearService = modelYearService;
                this.locationService = locationService;
                this.siteService = siteService;
                this.vinService = vinService;
                this.dealerService = dealerService;
                this.salesPersonService = salesPersonService;
                this.$q = $q;
                this.reportService = reportService;
                this.userService = userService;
                this.campaignService = campaignService;
                this.controllerReady = false;
                this.partOrderNumber = $state.params["partordernumber"];
                this.partValidateWaiting = "";
                this.displayShipToAddressRequired = false;
                var temp = this.loginService.selectedDealer.ServiceCenter;
                if (this.partOrderNumber)
                    this.editPartOrderInit();
                else
                    this.createPartOrderInit();
            }
            PartOrderDetailController.prototype.createPartOrderInit = function () {
                var _this = this;
                var vm = this;
                vm.Filters = new app.core.SearchFilters(this.GetFilters(), this.updateFilter.bind(this));
                vm.order = new app.services.IPartOrder();
                if (vm.$state.params["vin"] && vm.$state.params["vin"].length == 17) {
                    vm.ShowUnitCrumbs = true;
                    vm.vin = vm.$state.params["vin"];
                    vm.order.VIN = vm.$state.params["vin"];
                }
                vm.Filters.SetFilter('Division', vm.$state.params["division"], false);
                vm.Filters.SetFilter('Make', vm.$state.params["make"], false);
                vm.Filters.SetFilter('Site', vm.$state.params["site"], false);
                vm.Filters.SetFilter('ModelYear', vm.$state.params["modelYear"], false);
                vm.Filters.SetFilter('SubBrand', vm.$state.params["subBrand"], false);
                vm.Filters.UpdateFilter(vm.Filters.filters[0], false);
                if (vm.order.VIN) {
                    this.updateVIN();
                }
                vm.createPartNumber = vm.$state.params["partnumber"];
                vm.isParent = vm.$state.params["isParent"] == "true";
                vm.POExists = false;
                vm.order.Lines = new Array();
                vm.order.OrderStatus = 'Draft';
                vm.order.PortalLocked = true;
                vm.headerText = "New Part Order";
                vm.order.SalesOrigin = "Web";
                if (vm.loginService.UserInfo) {
                    vm.order.Contact = vm.loginService.UserInfo.FirstName + " " + vm.loginService.UserInfo.LastName;
                }
                vm.salesPersonService.getSalesPeople().then(function (data) {
                    vm.salesperson = data;
                    vm.salesPersonService.setDisplayField(vm.salesperson);
                    vm.userService.GetProfile().then(function (data) {
                        vm.order.Contact = data.SalesPersonNumber;
                    });
                });
                vm.dealerService.getAddressesShip().then(function (addressResult) {
                    vm.dealerAddresses = addressResult;
                    var onetime = new app.services.IDealerAddress();
                    if (!vm.loginService.selectedDealer.ServiceCenter) {
                        onetime.Name = "<One Time Address>";
                        onetime.FullAddress = "<One Time Address>";
                        vm.dealerAddresses.push(onetime);
                    }
                    var primaryServiceAddressFound = false;
                    var serviceAddressFound = false;
                    var deliveryAddressFound = false;
                    for (var index = 0; index < addressResult.length; index++) {
                        if (vm.order.ShipToAddress1 != undefined && (addressResult[index].Address1.replace(/ /g, '').toLocaleLowerCase() == vm.order.ShipToAddress1.replace(/ /g, '').toLocaleLowerCase() && addressResult[index].Name.replace(/ /g, '').toLocaleLowerCase() == vm.order.ShipToAddressName.replace(/ /g, '').toLocaleLowerCase())) {
                            vm.DealerAddress = addressResult[index];
                            return;
                        }
                        if (addressResult[index].Purpose.indexOf("Service") > -1 && addressResult[index].DefaultRoles.indexOf("Service") > -1 && vm.order.ShipToAddress1 == undefined) {
                            vm.DealerAddress = addressResult[index];
                            primaryServiceAddressFound = true;
                        }
                        if (addressResult[index].Purpose.indexOf("Service") > -1 && vm.order.ShipToAddress1 == undefined && primaryServiceAddressFound == false) {
                            vm.DealerAddress = addressResult[index];
                            serviceAddressFound = true;
                        }
                        if (addressResult[index].Purpose.indexOf("Delivery") > -1 && addressResult[index].DefaultRoles.indexOf("Delivery") > -1 && primaryServiceAddressFound == false && serviceAddressFound == false) {
                            vm.DealerAddress = addressResult[index];
                            deliveryAddressFound = true;
                        }
                        if (addressResult[index].Purpose.indexOf("Service") <= -1 && addressResult[index].IsPrimary && vm.order.ShipToAddress1 == undefined && primaryServiceAddressFound == false && serviceAddressFound == false && deliveryAddressFound == false) {
                            vm.DealerAddress = addressResult[index];
                        }
                    }
                    if (vm.DealerAddress == undefined && addressResult.length > 0) {
                        vm.DealerAddress = addressResult[0];
                    }
                    var defaultAddress = null;
                    vm.updateShipToAddress();
                });
                vm.deliverymodeService.getDeliveryModes().then(function (data) {
                    vm.deliverymodes = data;
                    vm.setDefaultShippingMethod();
                });
                this.uomService.getUOMs().then(function (uomresult) {
                    _this.uoms = uomresult;
                });
                if (vm.createPartNumber) {
                    if (Array.isArray(vm.createPartNumber)) {
                        for (var index = 0; index < vm.createPartNumber.length; index++) {
                            vm.addExistingPart(1, vm.createPartNumber[index], false, true, true, vm.isParent ? vm.createPartNumber[0] : null);
                        }
                        for (var index = 0; index < vm.order.Lines.length; index++) {
                            vm.updatePartDescription(vm.order.Lines[index], true);
                        }
                    }
                    else {
                        vm.addExistingPart(1, vm.createPartNumber, false, true, true, null);
                    }
                }
                vm.controllerReady = true;
            };
            PartOrderDetailController.prototype.editPartOrderInit = function () {
                var _this = this;
                var vm = this;
                vm.Filters = new app.core.SearchFilters(this.GetFilters(), this.updateFilter.bind(this));
                vm.headerText = "Part Order";
                vm.activeCampaignVINs = [];
                var loadpromises = new Array();
                loadpromises.push(vm.salesPersonService.getSalesPeople().then(function (data) {
                    vm.salesperson = data;
                    vm.salesPersonService.setDisplayField(vm.salesperson);
                }));
                loadpromises.push(vm.dealerService.getAddressesShip().then(function (addressResult) {
                    vm.dealerAddresses = addressResult;
                    var onetime = new app.services.IDealerAddress();
                    onetime.Name = "<One Time Address>";
                    onetime.FullAddress = "<One Time Address>";
                    onetime.DealerAddressRecID = 0;
                    vm.dealerAddresses.push(onetime);
                }));
                loadpromises.push(vm.deliverymodeService.getDeliveryModes()
                    .then(function (data) {
                    _this.deliverymodes = data;
                }));
                loadpromises.push(this.uomService.getUOMs().then(function (uomresult) {
                    _this.uoms = uomresult;
                }));
                loadpromises.push(vm.partOrderService.getPartOrder(vm.partOrderNumber).then(function (result) {
                    vm.order = result;
                    vm.Filters.SetFilter('Division', vm.order.Division, false);
                    vm.Filters.SetFilter('Make', vm.order.Make, false);
                    vm.Filters.SetFilter('SubBrand', vm.order.ModelCode, false);
                    vm.Filters.SetFilter('Site', vm.order.Site, false);
                    vm.Filters.SetFilter('ModelYear', vm.order.ModelYear, false);
                    vm.validVIN = vm.order.VIN ? true : false;
                    if (vm.order.VIN) {
                        _this.updateVIN();
                    }
                }));
                vm.$q.all(loadpromises).then(function () {
                    if (vm.order == null) {
                        _this.saveMessage = "Error loading part order..";
                        _this.showSaveMessage = true;
                        _this.controllerReady = true;
                        console.log("No data returned for part order " + vm.partOrderNumber);
                    }
                    else {
                        vm.getLocationDescriptionFromCode();
                        if (vm.order.SalesId) {
                            vm.headerText = "Part Order - " + vm.order.SalesId;
                        }
                        else {
                            vm.headerText = "Part Order";
                        }
                        if (vm.order.Lines) {
                            vm.order.Lines.forEach(function (value) {
                                _this.updatePartDescription(value, false);
                            });
                        }
                        if (vm.order && vm.order.ShipToOneTimeAddress && vm.dealerAddresses) {
                            var address = new app.services.IDealerAddress();
                            address.Name = vm.order.ShipToAddressName;
                            address.Address1 = vm.order.ShipToAddress1;
                            address.Address2 = vm.order.ShipToAddress2;
                            address.City = vm.order.ShipToCity;
                            address.StateOrProvince = vm.order.ShipToStateOrProvince;
                            address.PostalCode = vm.order.ShipToPostalCode;
                            address.Country = vm.order.ShipToCountry;
                            address.RetailPhone = vm.order.ShipToRetailPhone;
                            address.FullAddress = address.Name;
                            address.DealerAddressRecID = vm.order.DealerAddressRecID;
                            vm.dealerAddresses.push(address);
                            vm.DealerAddress = address;
                        }
                        else if (vm.dealerAddresses) {
                            for (var index = 0; index < vm.dealerAddresses.length; index++) {
                                if (vm.order.ShipToAddress1 != undefined && (vm.dealerAddresses[index].Address1.replace(/ /g, '').toLocaleLowerCase() == vm.order.ShipToAddress1.replace(/ /g, '').toLocaleLowerCase() && vm.dealerAddresses[index].Name.replace(/ /g, '').toLocaleLowerCase() == vm.order.ShipToAddressName.replace(/ /g, '').toLocaleLowerCase())) {
                                    vm.DealerAddress = vm.dealerAddresses[index];
                                }
                            }
                            if (!vm.DealerAddress) {
                                var address = new app.services.IDealerAddress();
                                address.Name = vm.order.ShipToAddressName;
                                address.Address1 = vm.order.ShipToAddress1;
                                address.Address2 = vm.order.ShipToAddress2;
                                address.City = vm.order.ShipToCity;
                                address.StateOrProvince = vm.order.ShipToStateOrProvince;
                                address.PostalCode = vm.order.ShipToPostalCode;
                                address.Country = vm.order.ShipToCountry;
                                address.RetailPhone = vm.order.ShipToRetailPhone;
                                address.FullAddress = address.Name;
                                vm.dealerAddresses.push(address);
                                vm.DealerAddress = address;
                            }
                        }
                        vm.hasValidPhone();
                        vm.isReadOnly = !(vm.order.OrderStatus == "Draft") || vm.loginService.GetPrivilegeLevel("PARTORDERS_FORM") != "Write";
                        vm.updateAddressBlockText();
                        _this.lastShipToAddressName = vm.order.ShipToAddressName;
                        console.log(vm.order);
                        vm.controllerReady = true;
                    }
                });
            };
            PartOrderDetailController.prototype.updateFilter = function (field, filter) {
                var _this = this;
                var me = this;
                me.filterUpdating = true;
                return new this.$q(function (resolve, reject) {
                    _this.partsCatalogService.searchCategory(filter).then(function (result) {
                        resolve(result);
                        me.filterUpdating = false;
                        me.getCatalog();
                    });
                });
            };
            PartOrderDetailController.prototype.setDefaultShippingMethod = function () {
                var vm = this;
                for (var index = 0; index < vm.deliverymodes.length; index++) {
                    if (vm.deliverymodes[index].Country == vm.order.ShipToCountry && vm.deliverymodes[index].IsDefault) {
                        vm.order.DeliveryMode = vm.deliverymodes[index].DeliveryMode;
                        return;
                    }
                }
                if (this.deliverymodes.length >= 1) {
                    this.order.DeliveryMode = this.deliverymodes[0].DeliveryMode;
                }
            };
            PartOrderDetailController.prototype.getCatalog = function () {
                var vm = this;
                this.partsCatalogService.getCatalog(vm.Filters.GetFilterValue('Division'), vm.validVIN ? vm.order.Make : vm.Filters.GetFilterValue('Make'), vm.validVIN ? vm.order.Site : vm.Filters.GetFilterValue('Site'), vm.validVIN ? vm.order.SubBrand : vm.Filters.GetFilterValue('SubBrand'), vm.order.Location, vm.validVIN == true).then(function (result) {
                    vm.catalog = result;
                    if (result)
                        vm.noCatalog = false;
                });
            };
            PartOrderDetailController.prototype.GetFilters = function () {
                var vm = this;
                return [
                    {
                        Label: "Business Unit",
                        SearchField: "Division",
                        Value: null,
                        ShowWhenPopulate: [],
                        Required: function () { return true; },
                        Options: [],
                        LockOptions: false,
                        DefaultOnSingleValue: true,
                        ShowIfNoResults: true,
                        ClearAllFieldsAfter: true,
                        AddIfNotInResults: true
                    },
                    {
                        Label: "Brand",
                        SearchField: "Make",
                        Value: null,
                        ShowWhenPopulate: [],
                        Required: function () { return true; },
                        Options: [],
                        LockOptions: false,
                        ClearAllFieldsAfter: true,
                        AddIfNotInResults: true
                    }, {
                        Label: "Sub Brand",
                        SearchField: "SubBrand",
                        Value: null,
                        ShowWhenPopulate: ["Make"],
                        Required: function () { return this.Options.length > 0; },
                        Options: [],
                        LockOptions: false,
                        ClearAllFieldsAfter: true,
                        AddIfNotInResults: true
                    }, {
                        Label: "Location",
                        SearchField: "Site",
                        Value: null,
                        ShowWhenPopulate: ["Division"],
                        Required: function () { return this.Options.length > 0; },
                        Options: [],
                        LockOptions: false,
                        AddIfNotInResults: true
                    }, {
                        Label: "Model Year",
                        SearchField: "ModelYear",
                        Value: null,
                        ShowWhenPopulate: ['Site'],
                        Required: function () { return false; },
                        Options: [],
                        LockOptions: false,
                        AddIfNotInResults: true
                    }, {
                        Label: "Model",
                        SearchField: "ModelCode",
                        Value: null,
                        ShowWhenPopulate: ['Site'],
                        Required: function () { return false; },
                        Options: [],
                        LockOptions: false,
                        AddIfNotInResults: true
                    }
                ];
            };
            PartOrderDetailController.prototype.partSearch = function (line) {
                var vm = this;
                if (this.rootScope.PartsCatalog) {
                    this.rootScope.PartsCatalog = null;
                }
                var settings = {
                    controller: "app.partcatalog.PartCatalogModalController as vm",
                    templateUrl: "app/partcatalog/partcatalog.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'xl',
                    resolve: {
                        modal: function () { return true; },
                        division: function () { return null; },
                        make: function () { return null; },
                        modelCode: function () { return null; },
                        modelYear: function () { return null; },
                        location: function () { return null; },
                        site: function () { return null; },
                        isVIN: function () { return vm.validVIN; },
                        modelYearLocked: function () { return false; },
                        modelCodeLocked: function () { return false; },
                        searchText: function () { return line.PartNumber; },
                        subBrand: function () { return null; },
                        filter: function () { return vm.Filters.filters; },
                        typeToAdd: function () { return "Order"; },
                        vin: function () { return vm.vin; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
                modalInstance.result.then(function (resultdata) {
                    line.PartNumber = resultdata[0].PartNumber;
                    line.NoCharge = resultdata[0].NoCharge;
                    line.ParentPartNumber = resultdata[0].ParentPartNumber;
                    vm.updatePartDescription(line, true);
                    if (resultdata.length > 1) {
                        for (var index = 1; index < resultdata.length; index++) {
                            vm.addExistingPart(1, resultdata[index].PartNumber, resultdata[index].NoCharge, false, true, resultdata[index].ParentPartNumber);
                        }
                    }
                });
            };
            PartOrderDetailController.prototype.printPartOrder = function () {
                var vm = this;
                var settings = {
                    controller: "app.partorder.ReportController as vm",
                    templateUrl: "app/partorder/partorder.report.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'print',
                    resolve: {
                        vinItemNumber: function () { return vm.validVIN ? vm.vinItemNumber : null; },
                        deliveryMode: function () { return vm.deliverymodes.filter(function (x) { return x.DeliveryMode == vm.order.DeliveryMode; })[0].Description; },
                        order: function () { return vm.order; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
            };
            PartOrderDetailController.prototype.shipTrackingModal = function () {
                var vm = this;
                var temp = vm.order.SalesId;
                var settings = {
                    controller: "app.shipmenttracking.ShipmentTrackingController as vm",
                    templateUrl: "app/shipmenttracking/shipment.tracking.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'lg',
                    resolve: {
                        partOrder: function () { return vm.order.SalesId; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
            };
            PartOrderDetailController.prototype.downloadVinOptions = function () {
                var vm = this;
                var settings = {
                    controller: "app.unit.report.OptionsController as vm",
                    templateUrl: "app/unit/unit.report.options.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'print',
                    resolve: {
                        vin: function () { return vm.order.VIN; },
                        salesId: function () { return null; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
            };
            PartOrderDetailController.prototype.addExistingPart = function (qty, partNumber, noCharge, UpdatePrice, addSupplemental, parentPartNumber) {
                var _this = this;
                if (addSupplemental === void 0) { addSupplemental = true; }
                var vm = this;
                var partline = new app.services.IPartOrderLine();
                partline.Qty = qty;
                partline.PartNumber = partNumber;
                partline.NoCharge = noCharge;
                partline.DiscountAmount = 0.00;
                partline.DiscountPercent = 0.00;
                partline.LineAmount = 0.00;
                partline.ParentPartNumber = parentPartNumber;
                vm.order.Lines.push(partline);
                vm.updatePartDescription(partline, UpdatePrice);
                if (addSupplemental) {
                    vm.getValidPart(partline, true);
                    vm.partService.getSupplementalParts(partNumber, this.catalog).then(function (data) {
                        var mandatorySupplemental = data.filter(function (x) { return !x.Optional; });
                        mandatorySupplemental.forEach(function (x) {
                            if (_this.order.Lines.filter(function (y) { return y.PartNumber == x.PartNumber; }).length == 0)
                                vm.addExistingPart(x.Quantity, x.PartNumber, x.NoCharge, true, true, partNumber);
                        });
                    });
                }
                vm.reorderLines();
            };
            PartOrderDetailController.prototype.vinSearch = function () {
                var vm = this;
                if (vm.order.VIN.length != 17) {
                    var settings = {
                        controller: "app.unit.UnitModalController as vm",
                        templateUrl: "app/unit/unit.modal.html",
                        keyboard: false,
                        backdrop: true,
                        size: 'xl',
                        resolve: {
                            search: function () { return vm.order.VIN; },
                            userDealers: function () { return null; },
                            allUnitsSearch: function () { return true; },
                            includeLegacy: function () { return true; }
                        }
                    };
                    var modalInstance = this.$modal.open(settings);
                    modalInstance.result.then(function (resultdata) {
                        vm.order.VIN = resultdata.VIN;
                        vm.vinIsValid();
                    });
                }
            };
            PartOrderDetailController.prototype.vinIsValid = function () {
                var vm = this;
                if (vm.vin == vm.order.VIN)
                    return this.validVIN;
                vm.controllerReady = false;
                var valid = false;
                if ((!vm.vin || vm.vin != vm.order.VIN) && (vm.order.VIN && vm.order.VIN.length == 17)) {
                    this.vinService.getVIN(vm.order.VIN, true).then(function (data) {
                        if (data) {
                            vm.order.VIN = data.VIN;
                            vm.order.SubBrand;
                            vm.setVinInfo(data);
                            vm.validVIN = true;
                        }
                        else {
                            valid = false;
                            vm.validVIN = false;
                        }
                        vm.VINvalidated = true;
                    }, function (error) {
                        valid = false;
                    });
                }
                else {
                    valid = false;
                    vm.VINvalidated = false;
                }
                vm.controllerReady = true;
                return valid;
            };
            PartOrderDetailController.prototype.vinChange = function () {
                var vm = this;
                if (vm.order.VIN.length != 17) {
                    vm.vin = vm.order.VIN;
                }
                vm.validVIN = false;
                vm.VINvalidated = false;
                if (!vm.order.VIN) {
                    this.Filters.UpdateCategories(this.Filters.filters[0], true);
                }
            };
            PartOrderDetailController.prototype.getVINCatalog = function () {
                var vm = this;
                this.partsCatalogService.checkVINCatalog(vm.order.VIN).then(function (result) {
                    if (result) {
                        vm.noCatalog = !result;
                    }
                    else {
                        vm.noCatalog = true;
                    }
                });
            };
            PartOrderDetailController.prototype.viewInvoices = function () {
                var vm = this;
                var settings = {
                    controller: "app.partorder.InvoiceModalController as vm",
                    templateUrl: "app/partorder/partorder.invoice.modal.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'print',
                    resolve: {
                        partOrder: function () {
                            return vm.partOrderNumber;
                        }
                    }
                };
                this.$modal.open(settings)
                    .result
                    .then(function (value) {
                });
            };
            PartOrderDetailController.prototype.checkForExistingPO = function () {
                var vm = this;
                vm.partsCatalogService.checkExistingPO(vm.order.PurchaseOrderFormNumber).then(function (result) {
                    if (result) {
                        vm.POExists = true;
                    }
                    else {
                        vm.POExists = false;
                    }
                });
                if (!this.partorderform.$error.required) {
                    this.showError = false;
                }
            };
            PartOrderDetailController.prototype.uploadPhoto = function (line) {
                var vm = this;
                var settings = {
                    controller: "app.image.ImageModalController as vm",
                    templateUrl: "app/image/image.modal.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'lg',
                    resolve: {
                        readonly: function () { return vm.isReadOnly; },
                        files: function () {
                            return line.Files || [];
                        },
                        submittedDealerNumber: function () { return vm.order.DealerNumber; },
                        submittedClaimOrPartNumber: function () { return vm.order.SalesId; },
                        submittedUploadType: function () { return "PartOrder"; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
                modalInstance.result.then(function (resultdata) {
                    line.Files = resultdata;
                });
            };
            PartOrderDetailController.prototype.searchParts = function (search) {
                return this.partService.search(search).then(function (result) {
                    return result.Results;
                });
            };
            PartOrderDetailController.prototype.updatePartDescription = function (item, reloadPrice) {
                var vm = this;
                if (vm.partValidateWaiting.indexOf(item.PartOrderLineNumber + ",") < 0) {
                    setTimeout(function () {
                        vm.getValidPart(item, reloadPrice);
                    }, 500);
                    vm.partValidateWaiting += item.PartOrderLineNumber + ",";
                }
                ;
            };
            PartOrderDetailController.prototype.getValidPart = function (item, reloadPrice) {
                var _this = this;
                var vm = this;
                if (vm.order.SalesOrigin != "Web") {
                    item.Valid = true;
                }
                else if (item.PartNumber && !item.IsManualPart) {
                    var Division = this.Filters.GetFilterValue('Division');
                    var Make = this.Filters.GetFilterValue('Make');
                    var SubBrand = this.Filters.GetFilterValue('SubBrand');
                    var Site = this.Filters.GetFilterValue('Site');
                    var ModelYear = this.Filters.GetFilterValue('ModelYear');
                    if (vm.order.VIN == null || vm.order.VIN.length == 0) {
                        this.partService.getValidPart(item.PartNumber, (Make || null), (SubBrand || null), (Division || null), (vm.order.VIN || null)).then(function (result) {
                            if (result) {
                                item.Valid = true;
                                item.Description = result.Description;
                                item.UnitOfMeasure = result.UnitOfMeasure;
                                item.MinQty = result.MinQty;
                                if (item.Qty < item.MinQty)
                                    item.Qty = item.MinQty;
                                if (reloadPrice) {
                                    if (item.NoCharge) {
                                        item.PricePerUnit = 0;
                                    }
                                    else {
                                        item.PricePerUnit = result.ListPrice;
                                    }
                                    _this.updatePartPrice(item);
                                }
                                vm.partService.getSupplementalParts(item.PartNumber, _this.catalog).then(function (data) {
                                    var mandatorySupplemental = data.filter(function (x) { return !x.Optional; });
                                    mandatorySupplemental.forEach(function (x) {
                                        if (_this.order.Lines.filter(function (y) { return y.PartNumber == x.PartNumber; }).length == 0)
                                            vm.addExistingPart(x.Quantity, x.PartNumber, x.NoCharge, true, true, item.PartNumber);
                                    });
                                });
                            }
                            else {
                                item.DiscountAmount = 0;
                                item.UnitOfMeasure = "";
                                item.ExtendedPrice = 0;
                                item.PricePerUnit = 0;
                                item.LineAmount = 0;
                                item.Description = "";
                                item.Valid = false;
                            }
                        });
                    }
                    else {
                        this.partService.getValidPartForVIN(item.PartNumber, (Make || null), (SubBrand || null), (Division || null), (vm.order.VIN || null), (Site || null)).then(function (result) {
                            if (result) {
                                item.Valid = true;
                                item.Description = result.Description;
                                item.UnitOfMeasure = result.UnitOfMeasure;
                                item.MinQty = result.MinQty;
                                if (item.Qty < item.MinQty)
                                    item.Qty = item.MinQty;
                                if (reloadPrice) {
                                    if (item.NoCharge) {
                                        item.PricePerUnit = 0;
                                    }
                                    else {
                                        item.PricePerUnit = result.ListPrice;
                                    }
                                    _this.updatePartPrice(item);
                                }
                                vm.partService.getSupplementalParts(item.PartNumber, _this.catalog).then(function (data) {
                                    var mandatorySupplemental = data.filter(function (x) { return !x.Optional; });
                                    mandatorySupplemental.forEach(function (x) {
                                        if (_this.order.Lines.filter(function (y) { return y.PartNumber == x.PartNumber; }).length == 0)
                                            vm.addExistingPart(x.Quantity, x.PartNumber, x.NoCharge, true, true, item.PartNumber);
                                    });
                                });
                            }
                            else {
                                item.DiscountAmount = 0;
                                item.UnitOfMeasure = "";
                                item.ExtendedPrice = 0;
                                item.PricePerUnit = 0;
                                item.LineAmount = 0;
                                item.Description = "";
                                item.Valid = false;
                            }
                        });
                    }
                }
                vm.partValidateWaiting = vm.partValidateWaiting.replace(item.PartOrderLineNumber + ",", "");
            };
            PartOrderDetailController.prototype.onQuantityChange = function (item) {
                if (item.Qty < item.MinQty) {
                    vex.dialog.alert({
                        message: "Minimum quantity is " + item.MinQty + ". Please contact a Forest River parts rep if you need to order less than the minimum quantity.",
                        callback: function (value) {
                        }
                    });
                    item.Qty = item.MinQty;
                }
                this.updatePartPrice(item);
            };
            PartOrderDetailController.prototype.showAddParts = function () {
                var vm = this;
                return !vm.isReadOnly && !vm.noCatalog && !vm.partorderform.$invalid;
            };
            PartOrderDetailController.prototype.updatePartPrice = function (item) {
                if (item.Qty == null || item.Qty <= 0) {
                    vex.dialog.alert({
                        message: "Quantity for items cannot be less that 1. If you no longer want the item, please remove it from your order.",
                        callback: function (value) {
                        }
                    });
                    item.Qty = 1;
                }
                if ((item.Qty % 1) != 0) {
                    vex.dialog.alert({
                        message: "Only whole numbers can be used to order parts. The number you entered will be rounded up to the nearest whole number. Please review this line and make any changes necessary if this is an issue.",
                        callback: function (value) {
                        }
                    });
                    item.Qty = Math.ceil(item.Qty);
                }
                if (item) {
                    item.PricePerUnit = Number(item.PricePerUnit.toFixed(2));
                    item.LineAmount = (item.PricePerUnit * (1 - (item.DiscountPercent / 100))) * item.Qty;
                }
            };
            PartOrderDetailController.prototype.addPart = function () {
                var part = new app.services.IPartOrderLine();
                part.Qty = 1;
                part.DiscountAmount = 0.00;
                part.DiscountPercent = 0.00;
                part.LineAmount = 0.00;
                part.Files = [];
                this.order.Lines.splice(0, 0, part);
                this.focusPartLine = true;
                this.reorderLines();
            };
            PartOrderDetailController.prototype.removePart = function (part) {
                var vm = this;
                var index = vm.order.Lines.indexOf(part);
                if (index > -1 && (part.PartNumber != undefined && part.PartNumber != "")) {
                    var partNumber = vm.order.Lines[index].PartNumber;
                    var supplementalPartCount = vm.order.Lines.filter(function (y) { return y.ParentPartNumber == partNumber; }).length;
                    if (supplementalPartCount > 1 && partNumber.length > 0) {
                        vm.order.Lines.filter(function (y) { return y.ParentPartNumber == partNumber; }).forEach(function (value) {
                            vm.removePartOrSuppliment(value);
                        });
                        vex.dialog.alert({
                            message: "This part has " + (supplementalPartCount - 1).toString() + " supplemental parts that were removed with this part.",
                            callback: function (value) {
                            }
                        });
                        vm.reorderLines();
                    }
                }
                vm.removePartOrSuppliment(part);
                if (!this.partorderform.$error.required) {
                    this.showError = false;
                }
            };
            PartOrderDetailController.prototype.removePartOrSuppliment = function (part) {
                var vm = this;
                var index = vm.order.Lines.indexOf(part);
                if (index > -1) {
                    vm.order.Lines.splice(index, 1);
                    vm.reorderLines();
                }
            };
            PartOrderDetailController.prototype.addManualPart = function () {
                var part = new app.services.IPartOrderLine();
                part.Qty = 1;
                part.PricePerUnit = 0.00;
                part.DiscountAmount = 0.00;
                part.DiscountPercent = 0.00;
                part.LineAmount = 0.00;
                part.UnitOfMeasure = "ea";
                part.Files = [];
                part.IsManualPart = true;
                this.order.Lines.splice(0, 0, part);
                this.reorderLines();
                this.focusManualPartLine = true;
            };
            PartOrderDetailController.prototype.removeManualPart = function (part) {
                var index = this.order.Lines.indexOf(part);
                if (index > -1) {
                    this.order.Lines.splice(index, 1);
                }
                if (!this.partorderform.$error.required) {
                    this.showError = false;
                }
                this.reorderLines();
            };
            PartOrderDetailController.prototype.reorderLines = function () {
                var manualParts = this.order.Lines.filter(function (x) { return x.IsManualPart; });
                var nonManualParts = this.order.Lines.filter(function (x) { return !x.IsManualPart; });
                var index = 1;
                nonManualParts.forEach(function (line, i) {
                    line.PartOrderLineNumber = index++;
                });
                manualParts.forEach(function (line, i) {
                    line.PartOrderLineNumber = index++;
                });
            };
            PartOrderDetailController.prototype.deleteOrder = function () {
                var vm = this;
                vex.dialog.confirm({
                    message: "Are you sure you want to delete this order?",
                    callback: function (value) {
                        if (value) {
                            vm.saveMessage = "Deleting draft part order...";
                            vm.showSaveMessage = true;
                            vm.controllerReady = false;
                            vm.order.OrderStatus = "Deleted";
                            vm.partOrderService.deletePartOrder(vm.order.SalesId).then(function () {
                                vm.saveMessage = "Draft Deleted.";
                                vm.controllerReady = true;
                            });
                        }
                        ;
                    }
                });
            };
            PartOrderDetailController.prototype.confirmSubmit = function () {
                var vm = this;
                if (vm.partorderform.$invalid) {
                    vm.showError = true;
                    return;
                }
                if (vm.order.ShipToAddressName == null || vm.order.ShipToAddressName.length == 0) {
                    this.displayShipToAddressRequired = true;
                    return;
                }
                else if (!vm.order.VIN) {
                    vex.dialog.buttons.YES.text = 'OK';
                    vex.dialog.buttons.NO.text = 'Cancel';
                    vex.dialog.confirm({
                        message: "The dealer assumes responsibility for the accuracy of the parts on this order because it was placed without a VIN number.",
                        callback: function (value) {
                            if (value) {
                                vm.save('Open Order');
                            }
                            ;
                        }
                    });
                }
                else {
                    vm.save('Open Order');
                }
            };
            PartOrderDetailController.prototype.save = function (status) {
                var _this = this;
                var manualerrors = true;
                if (this.partorderlines.$invalid) {
                    if (this.partorderlines.$error.required)
                        manualerrors = false;
                    if (this.partorderlines.$error.min) {
                        this.partorderlines.$error.min.forEach(function (error) {
                            if (status != 'Draft' || !error.$name.includes("manualPart")) {
                                manualerrors = false;
                            }
                        });
                    }
                }
                if (this.partorderform.$invalid || !this.validVIN && this.order.VIN) {
                    this.showError = true;
                    return;
                }
                if (!manualerrors) {
                    this.showError = true;
                    return;
                }
                if (this.order.ShipToAddressName == null || this.order.ShipToAddressName.length == 0) {
                    this.displayShipToAddressRequired = true;
                    return;
                }
                if (status == 'Draft') {
                    this.saveMessage = "Saving part order..";
                }
                else {
                    this.order.SubmittedDate = new Date();
                    this.saveMessage = "Submitting part order..";
                    this.isReadOnly = true;
                }
                this.showSaveMessage = true;
                this.controllerReady = false;
                this.order.OrderStatus = status;
                if (!this.order.ShipToAddressName) {
                    for (var i = 0; i < this.addresses.length; i++) {
                        var a = this.addresses[i];
                        if (a.DealerNumber == this.order.DealerNumber && a.IsPrimary) {
                            this.updateOrderShipToAddress(a);
                            this.lastShipToAddressName = a.Name;
                            this.order.ShipToOneTimeAddress = false;
                            break;
                        }
                    }
                }
                this.order.Division = this.Filters.GetFilterValue('Division');
                this.order.Make = this.Filters.GetFilterValue('Make');
                this.order.ModelCode = this.Filters.GetFilterValue('SubBrand');
                this.order.Site = this.Filters.GetFilterValue('Site');
                this.order.ModelYear = this.Filters.GetFilterValue('ModelYear');
                this.order.Catalog = this.catalog;
                if (this.order.SalesId)
                    request = this.partOrderService.updatePartOrder(this.order);
                else
                    var request = this.partOrderService.addPartOrder(this.order);
                request
                    .then(function (salesID) {
                    if (status == 'Draft') {
                        _this.saveMessage = "Part order saved.";
                    }
                    else {
                        _this.saveMessage = "Part order submitted.";
                    }
                    _this.partorderlines.$dirty = false;
                    _this.partorderform.$dirty = false;
                    _this.controllerReady = true;
                    _this.showSaveMessage = false;
                    _this.$state.go('partorderedit', { "partordernumber": salesID });
                })["catch"](function (error) {
                    _this.controllerReady = true;
                    _this.saveMessage = error.data.ExceptionMessage;
                    _this.errorDetails = "";
                    console.log(error);
                });
            };
            PartOrderDetailController.prototype.updateVIN = function () {
                var _this = this;
                this.vinHasCampaigns = false;
                this.vinHasAdvisories = false;
                var vm = this;
                this.order.Division = "";
                this.order.Make = "";
                this.order.ModelCode = "";
                this.order.ModelYear = "";
                this.order.Location = "";
                this.order.Site = "";
                this.vinItemNumber = "";
                this.validVIN = false;
                this.isLegacy = false;
                this.vinUnknown = false;
                if (this.order.VIN) {
                    this.order.Division = "";
                    this.order.Make = "";
                    this.order.ModelCode = "";
                    this.order.ModelYear = "";
                    this.order.Location = "";
                    this.order.Site = "";
                    this.vinItemNumber = "";
                    this.order.SubBrand = "";
                    this.vinService.getVIN(this.order.VIN, true).then(function (data) {
                        if (data) {
                            vm.setVinInfo(data);
                        }
                    })["catch"](function (error) {
                        if (_this.order.VIN != "") {
                            vm.vinUnknown = true;
                        }
                    });
                }
                if (vm.order.ShipWithVIN) {
                    vm.order.ShipWithVIN = null;
                }
            };
            PartOrderDetailController.prototype.setVinInfo = function (data) {
                var vm = this;
                vm.vinUnknown = false;
                vm.validVIN = true;
                vm.isLegacy = data.IsLegacy;
                vm.order.Division = data.Division;
                vm.order.Make = data.Brand;
                vm.order.ModelCode = data.VINItemNumber;
                vm.order.ModelYear = data.ModelYear;
                vm.order.Location = data.Location;
                vm.order.SubBrand = data.SubBrand;
                vm.order.Brand = data.Brand;
                vm.vinItemNumber = data.VINItemNumber;
                vm.vin = data.VIN;
                vm.order.VIN = data.VIN;
                vm.order.ShortVIN = data.ShortVIN;
                vm.order.ModelCodeName = data.ModelCodeDescription;
                vm.order.SiteName = data.LocationDescription;
                vm.order.LocationName = data.LocationDescription;
                vm.vinHasCampaigns = data.HasCampaigns;
                vm.vinHasAdvisories = data.HasAdvisories;
                vm.Filters.SetFilter('Division', vm.order.Division, false);
                vm.Filters.SetFilter('Make', data.BrandDescription, false);
                vm.Filters.SetFilter('SubBrand', data.SubBrandDescription, false);
                vm.Filters.SetFilter('Site', vm.order.LocationName, false);
                vm.Filters.SetFilter('ModelYear', vm.order.ModelYear, false);
                vm.Filters.SetFilter('ModelCode', vm.order.ModelCode, false);
                vm.order.ShipWithVIN = vm.order.DeliveryMode == "A003" && vm.order.VIN ? vm.order.VIN : null;
                vm.VINvalidated = true;
                vm.getCatalog();
            };
            PartOrderDetailController.prototype.openDatePicker = function ($event, control) {
                $event.preventDefault();
                $event.stopPropagation();
                if (control == "daterequested") {
                    this.daterequestedopen = true;
                }
            };
            PartOrderDetailController.prototype.updateShipToAddress = function () {
                if (this.DealerAddress.Name == "<One Time Address>") {
                    this.editOneTimeShipAddress();
                }
                else {
                    this.updateOrderShipToAddress(this.DealerAddress);
                    this.order.ShipToOneTimeAddress = false;
                }
                this.setDefaultShippingMethod();
            };
            PartOrderDetailController.prototype.updateOrderShipToAddress = function (address) {
                this.order.ShipToAddressName = address.Name;
                this.order.ShipToAddress1 = address.Address1;
                this.order.ShipToAddress2 = address.Address2;
                this.order.ShipToCity = address.City;
                this.order.ShipToStateOrProvince = address.StateOrProvince;
                this.order.ShipToPostalCode = address.PostalCode;
                this.order.ShipToCountry = address.Country;
                this.order.ShipToRetailPhone = address.RetailPhone;
                this.order.DealerAddressRecID = address.DealerAddressRecID;
                this.updateAddressBlockText();
                this.hasValidPhone();
            };
            PartOrderDetailController.prototype.updateAddressBlockText = function () {
                if (this.order) {
                    var addressblock = this.order.ShipToAddress1 + "\n";
                    if (this.order.ShipToAddress2) {
                        addressblock += this.order.ShipToAddress2 + "\n";
                    }
                    addressblock += this.order.ShipToCity + ", ";
                    addressblock += this.order.ShipToStateOrProvince + " ";
                    addressblock += this.order.ShipToPostalCode + "\n";
                    addressblock += this.order.ShipToCountry ? this.order.ShipToCountry + "\n" : "";
                    addressblock += this.order.ShipToRetailPhone ? this.order.ShipToRetailPhone : "";
                    this.shipToBlock = addressblock;
                }
            };
            PartOrderDetailController.prototype.editOneTimeShipAddress = function () {
                var vm = this;
                var settings = {
                    controller: "app.partorder.ShipToModalController as vm",
                    templateUrl: "app/partorder/shipto.modal.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'md',
                    resolve: {
                        address: function () {
                            return new app.services.IDealerAddress();
                        }
                    }
                };
                var modalInstance = this.$modal.open(settings);
                modalInstance.result.then(function (address) {
                    if (address) {
                        for (var index = 0; index < vm.dealerAddresses.length; index++) {
                            if (vm.dealerAddresses[index].Name == address.Name) {
                                vm.dealerAddresses.splice(index);
                                break;
                            }
                        }
                        address.RetailPhone = address.RetailPhone.substring(0, 12);
                        address.FullAddress = address.Name;
                        vm.dealerAddresses.push(address);
                        vm.DealerAddress = address;
                        vm.order.ShipToOneTimeAddress = true;
                        vm.updateOrderShipToAddress(address);
                        vm.order.ShipToContact = address.Name;
                    }
                    else {
                        vm.order.ShipToOneTimeAddress = false;
                        vm.order.ShipToAddressName = vm.lastShipToAddressName;
                        vm.updateShipToAddress();
                    }
                });
            };
            PartOrderDetailController.prototype.getMakeDescriptionFromCode = function (name) {
                if (this.makes) {
                    for (var index = 0; index < this.makes.length; index++) {
                        if (this.makes[index].Value == name) {
                            return this.makes[index].Name;
                        }
                    }
                }
                return null;
            };
            PartOrderDetailController.prototype.getSiteDescription = function () {
                var vm = this;
                if (this.order.Site) {
                    this.siteService.getSite(this.order.Site).then(function (result) {
                        vm.order.SiteName = result.Description;
                    });
                }
            };
            PartOrderDetailController.prototype.getLocationDescription = function () {
                var vm = this;
                if (this.order.Location) {
                    this.locationService.getLocation(this.order.Location).then(function (result) {
                        vm.order.LocationName = result.Description;
                    });
                }
            };
            PartOrderDetailController.prototype.getSiteDescriptionFromCode = function (name) {
                if (this.sites) {
                    for (var index = 0; index < this.sites.length; index++) {
                        if (this.sites[index].Value == name) {
                            return this.sites[index].Name;
                        }
                    }
                }
                return null;
            };
            PartOrderDetailController.prototype.getLocationDescriptionFromCode = function () {
                if (this.locations) {
                    for (var index = 0; index < this.locations.length; index++) {
                        if (this.locations[index].Name == this.order.Location) {
                            this.order.LocationName = this.locations[index].Description;
                        }
                    }
                }
            };
            PartOrderDetailController.prototype.deliveryModeChanged = function () {
                var vm = this;
                for (var index = 0; index < vm.deliverymodes.length; index++) {
                    var mode = vm.deliverymodes[index];
                    if (mode.DeliveryMode == vm.order.DeliveryMode) {
                        if (mode.NotificationMessage || mode.ExpeditedMessage) {
                            var msg = "";
                            if (mode.NotificationMessage) {
                                msg += mode.NotificationMessage + "\n";
                            }
                            if (mode.ExpeditedMessage) {
                                msg += mode.ExpeditedMessage;
                            }
                            vex.dialog.alert({
                                message: msg,
                                callback: function (value) {
                                }
                            });
                        }
                    }
                }
                vm.order.ShipWithVIN = vm.order.DeliveryMode == "A003" && vm.order.VIN ? vm.order.VIN : null;
            };
            PartOrderDetailController.prototype.vinDetail = function () {
                var vm = this;
                var VIN = vm.order.VIN;
                var url = vm.$state.href('unitdetails', { "vin": VIN, "includeLegacy": true });
                window.open(url, '_blank');
            };
            PartOrderDetailController.prototype.getState = function (id, value) {
                return this.partorderlines[id][value];
            };
            PartOrderDetailController.prototype.hasValidPhone = function () {
                var vm = this;
                vm.validPhone = true;
                this.userService.GetProfile().then(function (x) {
                    if (!x.Phone) {
                        vex.dialog.alert({
                            unsafeMessage: 'Phone number required. Please enter a Primary Phone Number in your <a onclick="vex.closeAll()" href="/admin/admin/profile">profile</a>.',
                            callback: function (value) {
                            }
                        });
                        vm.validPhone = false;
                    }
                });
            };
            PartOrderDetailController.$inject = ["$state",
                "app.services.PartOrderService",
                "app.services.PartService",
                "$uibModal",
                "app.services.UnitOfMesaureService",
                "app.services.DeliveryModeService",
                "app.services.PartsCatalogService",
                "$rootScope",
                "app.services.LoginService",
                "app.services.MakeService",
                "app.services.ModelCodeService",
                "app.services.ModelYearService",
                "app.services.LocationService",
                "app.services.SiteService",
                "app.services.VINService",
                "app.services.DealerService",
                "app.services.SalesPersonService",
                "$q",
                "app.services.ReportService",
                "app.services.UserService",
                "app.services.CampaignService"
            ];
            return PartOrderDetailController;
        }());
        angular.module("app.partorder")
            .controller("app.partorder.PartOrderDetailController", PartOrderDetailController);
    })(home = partorder.home || (partorder.home = {}));
})(partorder || (partorder = {}));
//# sourceMappingURL=partorder.detail.controller.js.map
var partorder;
(function (partorder) {
    var invoices;
    (function (invoices) {
        "use strict";
        var InvoiceModalController = (function () {
            function InvoiceModalController($state, partOrderService, $modalInstance, $modal, partOrder) {
                this.$state = $state;
                this.partOrderService = partOrderService;
                this.$modalInstance = $modalInstance;
                this.$modal = $modal;
                var vm = this;
                vm.partOrderService.getPartOrderInvoices(partOrder)
                    .then(function (response) {
                    vm.invoices = response;
                    vm.controllerReady = true;
                });
            }
            InvoiceModalController.prototype.printInvoice = function (invoice) {
                var vm = this;
                var settings = {
                    controller: "app.report.UnitInvoiceController as vm",
                    templateUrl: "app/report/report.viewer.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'print',
                    resolve: {
                        vin: function () { return null; },
                        invoice: function () { return invoice; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
            };
            InvoiceModalController.prototype.close = function (value) {
                this.$modalInstance.close(value);
            };
            InvoiceModalController.$inject = ["$state",
                "app.services.PartOrderService",
                "$uibModalInstance",
                "$uibModal",
                "partOrder"];
            return InvoiceModalController;
        }());
        angular.module("app.claims")
            .controller("app.partorder.InvoiceModalController", InvoiceModalController);
    })(invoices = partorder.invoices || (partorder.invoices = {}));
})(partorder || (partorder = {}));
//# sourceMappingURL=partorder.invoice.modal.controller.js.map
var partorder;
(function (partorder) {
    var home;
    (function (home) {
        "use strict";
        var PartOrderLegacyDetailController = (function () {
            function PartOrderLegacyDetailController($state, partOrderService, partService, $modal, uomService, deliverymodeService, partsCatalogService, rootScope, loginService, makeService, modelCodeService, modelYearService, locationService, siteService, vinService, dealerService, salesPersonService, $q, reportService, userService, campaignService) {
                this.$state = $state;
                this.partOrderService = partOrderService;
                this.partService = partService;
                this.$modal = $modal;
                this.uomService = uomService;
                this.deliverymodeService = deliverymodeService;
                this.partsCatalogService = partsCatalogService;
                this.rootScope = rootScope;
                this.loginService = loginService;
                this.makeService = makeService;
                this.modelCodeService = modelCodeService;
                this.modelYearService = modelYearService;
                this.locationService = locationService;
                this.siteService = siteService;
                this.vinService = vinService;
                this.dealerService = dealerService;
                this.salesPersonService = salesPersonService;
                this.$q = $q;
                this.reportService = reportService;
                this.userService = userService;
                this.campaignService = campaignService;
                this.controllerReady = false;
                this.partOrderNumber = $state.params["partordernumber"];
                this.partValidateWaiting = "";
                this.displayShipToAddressRequired = false;
                this.editPartOrderInit();
            }
            PartOrderLegacyDetailController.prototype.editPartOrderInit = function () {
                var _this = this;
                var vm = this;
                vm.headerText = "Legacy Part Order";
                vm.activeCampaignVINs = [];
                var loadpromises = new Array();
                loadpromises.push(vm.partOrderService.getPartOrder(vm.partOrderNumber).then(function (result) {
                    vm.order = result;
                    vm.shipToBlock = vm.order.ShipToAddressName + "\n" + vm.order.ShipToAddress1;
                    _this.lastShipToAddressName = vm.order.ShipToAddressName;
                    if (vm.order.PartOrderNumber) {
                        vm.headerText = "Part Order - " + vm.order.PartOrderNumber;
                    }
                    vm.validVIN = vm.order.VIN ? true : false;
                    if (vm.order.VIN) {
                        vm.order.VIN = vm.order.VIN.trim();
                        _this.updateVINinfo();
                    }
                }));
                vm.$q.all(loadpromises).then(function () {
                    if (vm.order == null) {
                        _this.saveMessage = "Error loading part order..";
                        _this.showSaveMessage = true;
                        _this.controllerReady = true;
                        console.log("No data returned for part order " + vm.partOrderNumber);
                    }
                    else {
                        if (vm.order.PartOrderNumber) {
                            vm.headerText = "Part Order - " + vm.order.PartOrderNumber;
                        }
                        else {
                            vm.headerText = "Part Order";
                        }
                        if (vm.order.Lines) {
                        }
                        if (!vm.DealerAddress) {
                            var address = new app.services.IDealerAddress();
                            address.Name = vm.order.ShipToAddressName;
                            address.Address1 = vm.order.ShipToAddress1;
                            address.Address2 = vm.order.ShipToAddress2;
                            address.City = vm.order.ShipToCity;
                            address.StateOrProvince = vm.order.ShipToStateOrProvince;
                            address.PostalCode = vm.order.ShipToPostalCode;
                            address.Country = vm.order.ShipToCountry;
                            address.RetailPhone = vm.order.ShipToRetailPhone;
                            address.FullAddress = address.Name;
                            vm.dealerAddresses.push(address);
                            vm.DealerAddress = address;
                        }
                        console.log(vm.order);
                        vm.controllerReady = true;
                    }
                });
            };
            PartOrderLegacyDetailController.prototype.vinDetail = function () {
                var vm = this;
                var VIN = vm.order.VIN;
                var url = vm.$state.href('unitdetails', { "vin": VIN, "includeLegacy": true });
                window.open(url, '_blank');
            };
            PartOrderLegacyDetailController.prototype.downloadVinOptions = function () {
                var vm = this;
                var settings = {
                    controller: "app.unit.report.OptionsController as vm",
                    templateUrl: "app/unit/unit.report.options.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'print',
                    resolve: {
                        vin: function () { return vm.order.VIN; },
                        salesId: function () { return null; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
            };
            PartOrderLegacyDetailController.prototype.updateVINinfo = function () {
                var vm = this;
                vm.claim.WarrantyStartDate = null;
                vm.vinHasCampaigns = false;
                vm.claim.Make = null;
                vm.claim.Model = null;
                vm.claim.Year = null;
                vm.claim.Owner = null;
                vm.claim.WarrantyStartDate = null;
                vm.claim.WarrantyEndDate = null;
                if (vm.claim.VIN && vm.claim.VIN.Length == 17) {
                    return this.vinService.getVIN(vm.claim.VIN, true).then(function (data) {
                        if (data) {
                            vm.vinValidated = true;
                            vm.vinValid = true;
                        }
                        else {
                            vm.vinValid = false;
                        }
                    });
                }
                else {
                    vm.vinValid = false;
                }
            };
            PartOrderLegacyDetailController.$inject = ["$state",
                "app.services.PartOrderLegacyService",
                "app.services.PartService",
                "$uibModal",
                "app.services.UnitOfMesaureService",
                "app.services.DeliveryModeService",
                "app.services.PartsCatalogService",
                "$rootScope",
                "app.services.LoginService",
                "app.services.MakeService",
                "app.services.ModelCodeService",
                "app.services.ModelYearService",
                "app.services.LocationService",
                "app.services.SiteService",
                "app.services.VINService",
                "app.services.DealerService",
                "app.services.SalesPersonService",
                "$q",
                "app.services.ReportService",
                "app.services.UserService",
                "app.services.CampaignService"
            ];
            return PartOrderLegacyDetailController;
        }());
        angular.module("app.partorder")
            .controller("app.partorder.PartOrderLegacyDetailController", PartOrderLegacyDetailController);
    })(home = partorder.home || (partorder.home = {}));
})(partorder || (partorder = {}));
//# sourceMappingURL=partorder.legacy.detail.controller.js.map
var partorder;
(function (partorder) {
    var home;
    (function (home) {
        "use strict";
        var LegacyPartOrderSearchController = (function () {
            function LegacyPartOrderSearchController($state, partOrderService, rootScope, loginService, salesPersonService, userService, $scope) {
                var _this = this;
                this.$state = $state;
                this.partOrderService = partOrderService;
                this.rootScope = rootScope;
                this.loginService = loginService;
                this.salesPersonService = salesPersonService;
                this.userService = userService;
                this.$scope = $scope;
                var vm = this;
                vm.currentSearch = 0;
                var newsearch = $state.params["search"];
                if (!vm.rootScope.PartOrderLegacy || $state.params["search"]) {
                    vm.rootScope.PartOrderLegacy = new app.core.PageData(partOrderService, this.search.bind(this));
                    if (!vm.rootScope.PartOrderLegacy.SearchText) {
                        vm.rootScope.PartOrderLegacy.SearchText = '';
                    }
                    if (newsearch == "Needs Review" || newsearch == "Draft") {
                        vm.rootScope.PartOrderLegacy.SearchField.OrderStatus = newsearch;
                    }
                    else {
                        vm.rootScope.PartOrderLegacy.SearchField.VIN = newsearch;
                    }
                    vm.rootScope.PartOrderLegacy.SearchField.ShowMyOrders = "All";
                    vm.rootScope.PartOrderLegacy.SortField = 'ERPPartOrderNumber';
                    vm.rootScope.PartOrderLegacy.SearchField.Year = vm.rootScope.PartOrderLegacy.Years[0].Value;
                    vm.rootScope.PartOrderLegacy.SortDesc = true;
                    if (newsearch != "Needs Review" && newsearch != "Draft") {
                        vm.rootScope.PartOrderLegacy.Search();
                    }
                    else {
                        vm.salesPersonService.getCreatedBy().then(function (data) {
                            vm.createdBy = data;
                            vm.rootScope.PartOrderLegacy.SearchField.CreatedBy = _this.loginService.UserInfo.Username;
                        })["finally"](function () {
                            vm.rootScope.PartOrderLegacy.SearchField.ShowMyOrders = "Yes";
                            vm.rootScope.PartOrderLegacy.Search();
                            vm.$scope.$apply();
                            vm.$scope.$digest();
                        });
                    }
                }
                else {
                    vm.rootScope.PartOrderLegacy.Search();
                }
                this.whenEnterKeyIsHitSearch($scope);
            }
            LegacyPartOrderSearchController.prototype.whenEnterKeyIsHitSearch = function ($scope) {
                var vm = this;
                var onEnter = function (e) {
                    if (e.which == 13) {
                        vm.rootScope.PartOrderLegacy.Search();
                    }
                };
                $(document).keydown(onEnter);
                $scope.$on('$destroy', function () {
                    $(document).unbind('keydown', onEnter);
                });
            };
            LegacyPartOrderSearchController.prototype.openDatePicker = function ($event, control) {
                $event.preventDefault();
                $event.stopPropagation();
                if (control == "searchdatesubmitted") {
                    this.searchdatesubmittedopen = true;
                }
            };
            LegacyPartOrderSearchController.prototype.search = function (searchService, page) {
                var query = new app.services.SearchQuery();
                var currentSearch = ++this.currentSearch;
                var vm = this;
                vm.loadingGrid = true;
                query.PageSize = page.PageSize;
                query.CurrentPage = page.CurrentPage;
                query.SortField = page.SortField;
                query.SortAscending = !page.SortDesc;
                var filter = new app.services.PartOrderLegacySearchQueryFilter();
                filter.Contact = page.SearchField.Contact;
                filter.OrderNumber = page.SearchField.OrderNumber;
                filter.OrderStatus = page.SearchField.OrderStatus;
                filter.PurchaseOrderFormNumber = page.SearchField.PurchaseOrderFormNumber;
                filter.VIN = page.SearchField.VIN;
                filter.Years = page.SearchField.Year;
                filter.CustomerRef = page.SearchField.CustomerRef;
                filter.DateSubmitted = page.SearchField.DateSubmitted;
                filter.ShowMyOrders = page.SearchField.ShowMyOrders;
                filter.CreatedBy = page.SearchField.CreatedBy;
                filter.IsLoadPartsSearch = true;
                query.Filter = filter;
                searchService.searchAdvanced(query).then(function (data) {
                    if (currentSearch == vm.currentSearch) {
                        page.Update(data);
                        vm.loadingGrid = false;
                    }
                });
            };
            LegacyPartOrderSearchController.$inject = ["$state", "app.services.PartOrderLegacyService", "$rootScope", "app.services.LoginService", "app.services.SalesPersonService", "app.services.UserService", "$scope"];
            return LegacyPartOrderSearchController;
        }());
        angular.module("app.partorder")
            .controller("app.partorder.LegacyPartOrderSearchController", LegacyPartOrderSearchController);
    })(home = partorder.home || (partorder.home = {}));
})(partorder || (partorder = {}));
//# sourceMappingURL=partorder.legacy.search.controller.js.map
var partorder;
(function (partorder) {
    var home;
    (function (home) {
        "use strict";
        var ReportController = (function () {
            function ReportController($modalInstance, $state, vinItemNumber, deliveryMode, order) {
                this.$modalInstance = $modalInstance;
                this.$state = $state;
                var vm = this;
                vm.data = order;
                if (vm.data) {
                    var addressblock = vm.data.ShipToAddressName ? vm.data.ShipToAddressName + "\n" : "";
                    addressblock += vm.data.ShipToAddress1 + "\n";
                    if (vm.data.ShipToAddress2) {
                        addressblock += vm.data.ShipToAddress2 + "\n";
                    }
                    addressblock += vm.data.ShipToCity + ", ";
                    addressblock += vm.data.ShipToStateOrProvince + " ";
                    addressblock += vm.data.ShipToPostalCode + "\n";
                    addressblock += vm.data.ShipToCountry ? vm.data.ShipToCountry + "\n" : "";
                    addressblock += vm.data.ShipToRetailPhone ? vm.data.ShipToRetailPhone : "";
                    vm.shipToBlock = addressblock;
                }
                if (vinItemNumber) {
                    vm.data.ModelCode = vinItemNumber;
                }
                if (deliveryMode) {
                    vm.deliveryMode = deliveryMode;
                }
            }
            ReportController.prototype.close = function () {
                this.$modalInstance.dismiss();
            };
            ReportController.prototype.print = function () {
                var divContents = $(".print").clone();
                var body = $("body").detach();
                document.body = document.createElement("body");
                divContents.appendTo($("body"));
                window.print();
                $("html body").remove();
                body.appendTo($("html"));
            };
            ReportController.$inject = ["$uibModalInstance", "$state", "vinItemNumber", "deliveryMode", "order"];
            return ReportController;
        }());
        angular.module("app.partorder")
            .controller("app.partorder.ReportController", ReportController);
    })(home = partorder.home || (partorder.home = {}));
})(partorder || (partorder = {}));
//# sourceMappingURL=partorder.report.controller.js.map
var partorder;
(function (partorder) {
    var home;
    (function (home) {
        "use strict";
        var ShipToModalController = (function () {
            function ShipToModalController($state, $modalInstance, mv360api, address, ziplookupService, countryService) {
                this.$state = $state;
                this.$modalInstance = $modalInstance;
                this.mv360api = mv360api;
                this.address = address;
                this.ziplookupService = ziplookupService;
                this.countryService = countryService;
                var vm = this;
                vm.cities = [];
                countryService.GetCountries().then(function (response) {
                    vm.countries = response;
                });
                vm.data = address;
                vm.description = "One Time Address";
                vm.cities.push(vm.data.City);
            }
            ShipToModalController.prototype.cancel = function () {
                this.$modalInstance.close();
            };
            ShipToModalController.prototype.save = function () {
                this.$modalInstance.close(this.data);
            };
            ShipToModalController.prototype.postalCodeChanged = function () {
                var _this = this;
                if (this.data.PostalCode && this.data.PostalCode.length >= 3) {
                    this.ziplookupService.getZip(this.data.PostalCode).then(function (results) {
                        if (results && results.length > 0) {
                            _this.data.City = results[0].City;
                            _this.data.StateOrProvince = results[0].State;
                            _this.data.Country = results[0].Country;
                            _this.cities = results.map(function (x) { return x.City; });
                        }
                        else {
                            _this.cities = null;
                        }
                    });
                }
                else {
                    this.cities = null;
                }
            };
            ShipToModalController.$inject = ["$state", "$uibModalInstance", "mv360api", "address", "app.services.ZipLookupService", "app.services.CountryService"];
            return ShipToModalController;
        }());
        angular.module("app.partorder")
            .controller("app.partorder.ShipToModalController", ShipToModalController);
    })(home = partorder.home || (partorder.home = {}));
})(partorder || (partorder = {}));
//# sourceMappingURL=shipto.modal.controller.js.map
var report;
(function (report) {
    "use strict";
    var ReportController = (function () {
        function ReportController($modalInstance) {
            this.$modalInstance = $modalInstance;
        }
        ReportController.prototype.createPDF = function (dd, name) {
            var ua = window.navigator.userAgent;
            var is_ie = /MSIE|Trident/.test(ua) || /Edge/.test(ua);
            if (!is_ie) {
                this.pdf = pdfMake.createPdf(dd);
                this.pdf.getDataUrl(function (dataUrl) {
                    var targetElement = document.querySelector('#iframeContainer');
                    var iframe = document.createElement('iframe');
                    iframe.src = dataUrl;
                    iframe.setAttribute("style", "width:100%; height:100%;");
                    targetElement.appendChild(iframe);
                });
            }
            else {
                if (window.navigator.msSaveOrOpenBlob) {
                    pdfMake.createPdf(dd).getBlob(function (result) {
                        window.navigator.msSaveOrOpenBlob(result, name);
                    });
                }
                else {
                    pdfMake.createPdf(dd).download(name);
                }
            }
        };
        ReportController.prototype.close = function () {
            this.$modalInstance.dismiss();
        };
        ReportController.prototype.print = function () {
            var win = window.open('', '_blank');
            this.pdf.print({}, win);
        };
        ReportController.prototype.isIE = function () {
            var ua = window.navigator.userAgent;
            return /MSIE|Trident/.test(ua);
        };
        ReportController.$inject = ["$uibModalInstance"];
        return ReportController;
    }());
    report.ReportController = ReportController;
    angular.module("app.report")
        .controller("app.report.ReportController", ReportController);
})(report || (report = {}));
//# sourceMappingURL=areport.controller.js.map
var __extends = (this && this.__extends) || (function () {
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };
    return function (d, b) {
        if (typeof b !== "function" && b !== null)
            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();
var report;
(function (report) {
    "use strict";
    var ReportArstatementController = (function (_super) {
        __extends(ReportArstatementController, _super);
        function ReportArstatementController($modalInstance, $state, vinService, warrantyService, InquiryService, rootScope, loginService, vms) {
            var _this = _super.call(this, $modalInstance) || this;
            _this.$state = $state;
            _this.vinService = vinService;
            _this.warrantyService = warrantyService;
            _this.InquiryService = InquiryService;
            _this.rootScope = rootScope;
            _this.loginService = loginService;
            var vm = vms;
            var dd = null;
            var fullDate = new Date(vm.currentDateAndTime);
            var amPM = 'AM';
            if (fullDate.getHours() > 12) {
                amPM = 'PM';
            }
            var currentDate = (fullDate.getMonth() + 1) + '/' + fullDate.getDate() + '/' + fullDate.getFullYear() + ' ' + (fullDate.getHours() % 12 || 12) + ':' + ('0' + fullDate.getMinutes()).slice(-2) + ' ' + amPM;
            var myContent = [];
            var MainTable = [];
            var MainTableHeader = [];
            var MainTableHeader2 = [];
            var MainTableTotal = [];
            MainTableHeader.push({ text: 'Date', bold: true, border: [false, false, false, true] });
            MainTableHeader.push({ text: 'Invoice', bold: true, border: [false, false, false, true] });
            MainTableHeader.push({ text: 'Sales Order', bold: true, border: [false, false, false, true] });
            MainTableHeader.push({ text: 'PO Number', bold: true, border: [false, false, false, true] });
            MainTableHeader.push({ text: 'Debit', bold: true, border: [false, false, false, true], alignment: 'right' });
            MainTableHeader.push({ text: 'Credit', bold: true, border: [false, false, false, true], alignment: 'right' });
            MainTableHeader.push({ text: 'Balance', bold: true, border: [false, false, false, true], alignment: 'right' });
            MainTable.push(MainTableHeader);
            MainTableHeader2.push({ text: '', border: [false, false, false, true] });
            MainTableHeader2.push({ text: 'Opening', bold: true, border: [false, false, false, true] });
            MainTableHeader2.push({ text: '', border: [false, false, false, true] });
            MainTableHeader2.push({ text: '', border: [false, false, false, true] });
            MainTableHeader2.push({ text: '0.00', bold: true, border: [false, false, false, true], alignment: 'right' });
            MainTableHeader2.push({ text: '', border: [false, false, false, true] });
            MainTableHeader2.push({ text: '', border: [false, false, false, true] });
            MainTable.push(MainTableHeader2);
            vm.ar.Results.forEach(function (ar) {
                var rowCell = [];
                var fullDate = new Date(ar.TransactionDate);
                var TDate = (fullDate.getMonth() + 1) + '/' + fullDate.getDate() + '/' + fullDate.getFullYear();
                rowCell.push({ text: TDate, border: [false, false, false, false] });
                rowCell.push({ text: ar.Invoice, border: [false, false, false, false] });
                rowCell.push({ text: ar.SalesOrder, border: [false, false, false, false] });
                rowCell.push({ text: ar.PONumber, border: [false, false, false, false] });
                rowCell.push({ text: (ar.OpenAmount > 0 ? ar.OpenAmount : 0.00).toLocaleString(undefined, { minimumFractionDigits: 2 }, { maximumFractionDigits: 2 }), border: [false, false, false, false], alignment: 'right' });
                rowCell.push({ text: ((ar.OpenAmount < 0 ? ar.OpenAmount : 0.00)).toLocaleString(undefined, { minimumFractionDigits: 2 }, { maximumFractionDigits: 2 }), border: [false, false, false, false], alignment: 'right' });
                rowCell.push({ text: ar.Balance.toLocaleString(undefined, { minimumFractionDigits: 2 }, { maximumFractionDigits: 2 }), border: [false, false, false, false], alignment: 'right' });
                MainTable.push(rowCell);
            });
            MainTableTotal.push({ text: 'Total Due on account', colSpan: 2, border: [false, true, false, false], fontSize: 9, bold: true });
            MainTableTotal.push({ text: '', border: [false, true, false, false] });
            MainTableTotal.push({ text: vm.ar.Results.length > 0 ? vm.ar.Results[vm.ar.Results.length - 1].Balance.toLocaleString(undefined, { minimumFractionDigits: 2 }, { maximumFractionDigits: 2 }) : 0.00, fontSize: 9, bold: true, border: [false, true, false, false], alignment: 'right' });
            MainTableTotal.push({ text: '', border: [false, true, false, false] });
            MainTableTotal.push({ text: '', border: [false, true, false, false] });
            MainTableTotal.push({ text: '', border: [false, true, false, false] });
            MainTableTotal.push({ text: '', border: [false, true, false, false] });
            MainTable.push(MainTableTotal);
            myContent.push({
                margin: [0, 35, 0, 10],
                fontSize: 10,
                columns: [
                    [
                        {
                            margin: [45, 0, 0, 0],
                            text: vm.statementHeader ? vm.statementHeader.Name : null
                        },
                        {
                            margin: [45, 0, 0, 0],
                            text: vm.addressArray ? vm.addressArray[0] : null
                        },
                        {
                            margin: [45, 0, 0, 0],
                            text: vm.addressArray ? vm.addressArray[1] : null
                        },
                        {
                            margin: [45, 0, 0, 40],
                            text: vm.addressArray ? vm.addressArray[2] : null
                        },
                        {
                            text: 'Phone              ' + (vm.statementHeader ? vm.statementHeader.PhoneNumber : "")
                        },
                        {
                            text: 'Fax                   ' + (vm.statementHeader ? vm.statementHeader.FaxNumber : "")
                        }
                    ],
                    [
                        {
                            text: 'Customer Account',
                            alignment: 'right'
                        }
                    ],
                    [
                        {
                            text: vm.currentDealerNumber,
                            alignment: 'center'
                        }
                    ]
                ]
            }, {
                margin: [0, 0, 0, 30],
                fontSize: 8,
                table: {
                    widths: ['10%', '10%', '15%', '25%', '15%', '10%', '15%'],
                    headerRows: 1,
                    body: MainTable
                },
                layout: {
                    paddingLeft: function (i, node) { return 0; },
                    paddingTop: function (i, node) { return 1; },
                    paddingRight: function (i, node) { return 0; },
                    paddingBottom: function (i, node) { return 1; },
                    hLineWidth: function (i, node) { return 1; },
                    vLineWidth: function (i, node) { return 0; }
                }
            }, {
                margin: [0, 0, 0, 20],
                fontSize: 9,
                table: {
                    widths: ['*', '*', '*', '*', '*', '*'],
                    body: [
                        [
                            {
                                text: 'Currency',
                                bold: true,
                                border: [false, false, false, true]
                            },
                            {
                                text: 'Today\'s Charges',
                                bold: true,
                                border: [false, false, false, true]
                            },
                            {
                                text: '1-60 days',
                                bold: true,
                                border: [false, false, false, true]
                            },
                            {
                                text: '61-90 days',
                                bold: true,
                                border: [false, false, false, true]
                            },
                            {
                                text: '91-120 days',
                                bold: true,
                                border: [false, false, false, true]
                            },
                            {
                                text: '+120 days',
                                bold: true,
                                border: [false, false, false, true]
                            }
                        ],
                        [
                            {
                                text: vm.statementHeader ? vm.statementHeader.CurrencyCode : null,
                                border: [false, false, false, false]
                            },
                            {
                                text: vm.agingReport[4].toLocaleString(undefined, { minimumFractionDigits: 2 }, { maximumFractionDigits: 2 }),
                                border: [false, false, false, false]
                            },
                            {
                                text: vm.agingReport[0].toLocaleString(undefined, { minimumFractionDigits: 2 }, { maximumFractionDigits: 2 }),
                                border: [false, false, false, false]
                            },
                            {
                                text: vm.agingReport[1].toLocaleString(undefined, { minimumFractionDigits: 2 }, { maximumFractionDigits: 2 }),
                                border: [false, false, false, false]
                            },
                            {
                                text: vm.agingReport[2].toLocaleString(undefined, { minimumFractionDigits: 2 }, { maximumFractionDigits: 2 }),
                                border: [false, false, false, false]
                            },
                            {
                                text: vm.agingReport[3].toLocaleString(undefined, { minimumFractionDigits: 2 }, { maximumFractionDigits: 2 }),
                                border: [false, false, false, false]
                            }
                        ]
                    ]
                },
                layout: {
                    paddingLeft: function (i, node) { return 0; },
                    paddingTop: function (i, node) { return 0; },
                    paddingRight: function (i, node) { return 0; },
                    paddingBottom: function (i, node) { return 0; },
                    hLineWidth: function (i, node) { return 1; },
                    vLineWidth: function (i, node) { return 0; }
                }
            }, {
                text: 'Questions? Contact AR Parts.  Dealers beginning with:',
                style: 'Questions'
            }, {
                text: '#\'s - E   Betsy Connors 574-389-4610 or bconnors@forestriverinc.com',
                style: 'Questions'
            }, {
                text: 'F - M   Karen Siade 574-389-4650  or ksiade@forestriverinc.com',
                style: 'Questions'
            }, {
                text: 'N - Z   Janice Werts 574-389-4615 or jwerts@forestriverinc.com',
                style: 'Questions'
            }, {
                text: 'or fax accounts receivable @ 574-296-7549',
                style: 'Questions'
            });
            dd = {
                pageOrientation: 'portrait',
                pageSize: 'LETTER',
                pageMargins: [25, 120, 25, 25],
                header: function (currentPage, pageCount) {
                    return {
                        fontSize: 10,
                        margin: [25, 25, 25, 0],
                        table: {
                            widths: ['*', '*', '*'],
                            body: [
                                [
                                    {
                                        text: 'Forest River, Inc. \n 21815 Network Place \n Chicago, IL 60673-1218 \n USA',
                                        rowSpan: 2
                                    },
                                    {
                                        text: 'Account Statement',
                                        bold: true,
                                        fontSize: 14,
                                        alignment: 'center'
                                    },
                                    {
                                        text: 'Original',
                                        bold: true,
                                        fontSize: 12,
                                        alignment: 'center'
                                    }
                                ],
                                [
                                    {},
                                    {
                                        colSpan: 2,
                                        margin: [0, 5, 0, 0],
                                        table: {
                                            widths: ['28%', '*', '10%', '30%'],
                                            body: [
                                                [
                                                    {},
                                                    {
                                                        text: 'Page'
                                                    },
                                                    {},
                                                    {
                                                        text: 'Page ' + currentPage.toString() + ' of ' + pageCount
                                                    }
                                                ],
                                                [
                                                    {},
                                                    {
                                                        text: 'Date and Time'
                                                    },
                                                    {},
                                                    {
                                                        text: currentDate
                                                    }
                                                ]
                                            ]
                                        },
                                        layout: {
                                            paddingLeft: function (i, node) { return 0; },
                                            paddingTop: function (i, node) { return 0; },
                                            paddingRight: function (i, node) { return 0; },
                                            paddingBottom: function (i, node) { return 1; },
                                            hLineWidth: function (i, node) { return 0; },
                                            vLineWidth: function (i, node) { return 0; }
                                        }
                                    },
                                    {}
                                ]
                            ]
                        },
                        layout: {
                            paddingLeft: function (i, node) { return 0; },
                            paddingTop: function (i, node) { return 1; },
                            paddingRight: function (i, node) { return 0; },
                            paddingBottom: function (i, node) { return 1; },
                            hLineWidth: function (i, node) { return 0; },
                            vLineWidth: function (i, node) { return 0; }
                        }
                    };
                },
                content: myContent,
                styles: {
                    Questions: {
                        alignment: 'center',
                        fontSize: 8
                    }
                }
            };
            _this.createPDF(dd, "ArReport.pdf");
            return _this;
        }
        ReportArstatementController.$inject = ["$uibModalInstance", "$state", "app.services.VINService", "app.services.WarrantyService", "app.services.InquiryService", "$rootScope", "app.services.LoginService", "vms"];
        return ReportArstatementController;
    }(report.ReportController));
    angular.module("app.report")
        .controller("app.report.ArstatementController", ReportArstatementController);
})(report || (report = {}));
//# sourceMappingURL=report.arstatement.controller.js.map
var __extends = (this && this.__extends) || (function () {
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };
    return function (d, b) {
        if (typeof b !== "function" && b !== null)
            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();
var report;
(function (report) {
    "use strict";
    var ReportClaimController = (function (_super) {
        __extends(ReportClaimController, _super);
        function ReportClaimController($state, $modalInstance, reportService, siteService, vinService, dealerService, partCatalogService, claimService, partService, warrantyService, feedbackService, VIN, division, ClaimNumber, $q) {
            var _this = _super.call(this, $modalInstance) || this;
            _this.$state = $state;
            _this.reportService = reportService;
            _this.siteService = siteService;
            _this.vinService = vinService;
            _this.dealerService = dealerService;
            _this.partCatalogService = partCatalogService;
            _this.claimService = claimService;
            _this.partService = partService;
            _this.warrantyService = warrantyService;
            _this.feedbackService = feedbackService;
            _this.$q = $q;
            var loadpromises = new Array();
            var vm = _this;
            var laborFeedBackDone = false;
            var partFeedBackDone = false;
            vm.controllerReady = true;
            vm.VIN = VIN;
            vm.division = division;
            vm.ClaimNumber = ClaimNumber;
            vm.hasLaborLines = false;
            vm.hasPartsLines = true;
            vm.claimLineFeedback = [];
            vm.partCatalogService.getDivision(division).then(function (divisionResult) {
                vm.Division = divisionResult;
                claimService.getClaim(vm.ClaimNumber).then(function (data) {
                    vm.claim = data;
                    vm.laborRate = vm.claim.LaborRate;
                    vm.claimLineFeedback = [];
                    for (var index = 0; index < vm.claim.Labor.length; index++) {
                        if (!vm.claim.Labor[index].IsDeleted) {
                            if (vm.claim.Labor[index].HasAdjustments || vm.claim.Labor[index].HasFeedback) {
                                loadpromises.push(vm.feedbackService.getFeedback('Labor', vm.claim.Labor[index].OpRecID).then(function (result) {
                                    $.merge(vm.claimLineFeedback, result);
                                }));
                            }
                            if (vm.claim.Labor[index].Parts) {
                                vm.claim.Labor[index].Parts.forEach(function (part) {
                                    if (part.HasFeedback || part.HasAdjustments) {
                                        loadpromises.push(vm.feedbackService.getFeedback('Part', part.PartRecID).then(function (result) {
                                            $.merge(vm.claimLineFeedback, result);
                                        }));
                                    }
                                });
                            }
                        }
                    }
                    vm.getPartTotal();
                    vm.getLaborTotal();
                    vm.submittedClaimTotal = vm.submittedLaborTotal + vm.partTotal;
                    vm.claimTotal = vm.partTotal + vm.laborTotal;
                    loadpromises.push(dealerService.getDealer()
                        .then(function (data) {
                        vm.DealerName = data.DealerName;
                        vm.DealerNumber = data.DealerNumber;
                    }));
                    loadpromises.push(vm.warrantyService.getWarranty(vm.VIN).then(function (data) {
                        if (data) {
                            vm.Warranty = data;
                        }
                    }));
                    loadpromises.push(vm.vinService.getVIN(VIN, true).then(function (vinResult) {
                        vm.vinInfo = vinResult;
                        vm.siteService.getSiteInfo(vinResult.Site).then(function (result) {
                            vm.SiteInfo = result;
                        })["catch"](function (error) {
                            vm.errorMessage = "Error loading site information";
                        });
                    })["catch"](function (error) {
                        vm.errorMessage = "Error loading vin information";
                    }));
                    $q.all(loadpromises).then(function () {
                        vm.CreateReport();
                    });
                })["catch"](function (error) {
                    vm.errorMessage = "Error loading claim information";
                });
            })["catch"](function (error) {
                vm.errorMessage = "Error loading division information";
            });
            return _this;
        }
        ReportClaimController.prototype.CreateReport = function () {
            var vm = this;
            var dd = null;
            var RepairStartDate = '';
            var RepairEndDate = '';
            var RetailSoldDate = '';
            var ValidTo = '';
            var currency = new Intl.NumberFormat('en-US', {
                style: 'currency',
                currency: 'USD',
                minimumFractionDigits: 2
            });
            if (vm.claim.RepairStartDate) {
                var fullDate = new Date(vm.claim.RepairStartDate.toString());
                RepairStartDate = ('0' + (fullDate.getMonth() + 1)).slice(-2) + '/' + ('0' + fullDate.getDate()).slice(-2) + '/' + fullDate.getFullYear();
            }
            if (vm.claim.RepairEndDate) {
                var fullDate2 = new Date(vm.claim.RepairEndDate.toString());
                RepairEndDate = ('0' + (fullDate2.getMonth() + 1)).slice(-2) + '/' + ('0' + fullDate2.getDate()).slice(-2) + '/' + fullDate2.getFullYear();
            }
            if (vm.Warranty && vm.Warranty.RetailSoldDate) {
                var fullDate = new Date(vm.Warranty.RetailSoldDate.toString());
                RetailSoldDate = ('0' + (fullDate.getMonth() + 1)).slice(-2) + '/' + ('0' + fullDate.getDate()).slice(-2) + '/' + fullDate.getFullYear();
            }
            if (vm.Warranty && vm.Warranty.ValidTo) {
                var fullDate = new Date(vm.Warranty.ValidTo.toString());
                ValidTo = ('0' + (fullDate.getMonth() + 1)).slice(-2) + '/' + ('0' + fullDate.getDate()).slice(-2) + '/' + fullDate.getFullYear();
            }
            var myContent = [];
            myContent.push({
                table: {
                    widths: ['*'],
                    body: [
                        [
                            {
                                text: 'FOREST RIVER WARRANTY CLAIM FORM',
                                alignment: 'center',
                                fontSize: 16,
                                bold: true,
                                border: [false, false, false, true]
                            }
                        ]
                    ]
                },
                layout: {
                    hLineWidth: function (i, node) { return 5; }
                }
            }, {
                columns: [
                    {
                        margin: [0, 3, 0, 0],
                        table: {
                            widths: ['*', '*'],
                            body: [
                                [
                                    {
                                        text: 'DEALER ACCOUNT #',
                                        style: 'AccountHeader'
                                    },
                                    {
                                        text: vm.claim.DealerNumber,
                                        style: 'AccountInfo'
                                    }
                                ],
                                [
                                    {
                                        text: vm.DealerName,
                                        style: 'AccountInfo',
                                        colSpan: 2
                                    },
                                    {}
                                ],
                                [
                                    {
                                        text: vm.claim.DealerAddress,
                                        style: 'AccountInfo',
                                        colSpan: 2,
                                        margin: [0, 0, 0, 25]
                                    },
                                    {}
                                ],
                                [
                                    {
                                        text: 'Labor rate:',
                                        style: 'AccountHeader'
                                    },
                                    {
                                        text: vm.laborRate ? "$" + vm.laborRate.toFixed(2) : "",
                                        style: 'AccountInfo'
                                    }
                                ],
                                [
                                    {
                                        text: 'OWNER INFORMATION',
                                        style: 'AccountHeader',
                                        colSpan: 2,
                                        margin: [0, 0, 0, 5]
                                    },
                                    {}
                                ],
                                [
                                    {
                                        text: vm.vinInfo.Owner,
                                        style: 'AccountInfo',
                                        colSpan: 2,
                                        margin: [0, 0, 0, 5]
                                    },
                                    {}
                                ],
                                [
                                    {
                                        text: vm.Warranty ? vm.Warranty.Ownership.AddressName : null,
                                        style: vm.Warranty ? 'AccountInfo' : null,
                                        colSpan: 2
                                    },
                                    {}
                                ]
                            ]
                        },
                        layout: {
                            paddingLeft: function (i, node) { return 0; },
                            paddingTop: function (i, node) { return 1; },
                            paddingRight: function (i, node) { return 0; },
                            paddingBottom: function (i, node) { return 1; },
                            hLineWidth: function (i, node) { return 0; },
                            vLineWidth: function (i, node) { return 0; }
                        }
                    },
                    {
                        table: {
                            widths: ['*', '*'],
                            body: [
                                [
                                    {
                                        text: 'CLAIM STATUS',
                                        style: 'detailsLeft'
                                    },
                                    {
                                        text: vm.claim.ClaimStatus,
                                        style: 'detailsRight'
                                    }
                                ],
                                [
                                    {
                                        text: 'CLAIM',
                                        style: 'detailsLeft'
                                    },
                                    {
                                        text: vm.claim.ClaimNumber,
                                        style: 'detailsRight'
                                    }
                                ],
                                [
                                    {
                                        text: 'CLAIM ORIGIN',
                                        style: 'detailsLeft'
                                    },
                                    {
                                        text: vm.claim.ChassisNumber,
                                        style: 'detailsRight'
                                    }
                                ],
                                [
                                    {
                                        text: 'ORIGINAL CLAIM ID',
                                        style: 'detailsLeft'
                                    },
                                    {
                                        text: vm.claim.FrOriginalclaimid,
                                        style: 'detailsRight'
                                    }
                                ],
                                [
                                    {
                                        text: 'VIN',
                                        style: 'detailsLeft'
                                    },
                                    {
                                        text: vm.claim.VIN,
                                        style: 'detailsRight'
                                    }
                                ],
                                [
                                    {
                                        text: 'CHASSIS VIN',
                                        style: 'detailsLeft'
                                    },
                                    {
                                        text: vm.vinInfo.ChassisNumber,
                                        style: 'detailsRight'
                                    }
                                ],
                                [
                                    {
                                        text: 'MILEAGE',
                                        style: 'detailsLeft'
                                    },
                                    {
                                        text: vm.claim.Mileage,
                                        style: 'detailsRight'
                                    }
                                ],
                                [
                                    {
                                        text: 'SITE/WAREHOUSE',
                                        style: 'detailsLeft'
                                    },
                                    {
                                        text: vm.claim.Site + ' / ' + vm.vinInfo.Location,
                                        style: 'detailsRight'
                                    }
                                ],
                                [
                                    {
                                        text: 'ITEM #',
                                        style: 'detailsLeft'
                                    },
                                    {
                                        text: vm.vinInfo.VINItemNumber,
                                        style: 'detailsRight'
                                    }
                                ],
                                [
                                    {
                                        text: 'DEALER RO #',
                                        style: 'detailsLeft'
                                    },
                                    {
                                        text: vm.claim.DealerReference,
                                        style: 'detailsRight'
                                    }
                                ],
                                [
                                    {
                                        text: 'CLAIM START DATE',
                                        style: 'detailsLeft'
                                    },
                                    {
                                        text: RepairStartDate,
                                        style: 'detailsRight'
                                    }
                                ],
                                [
                                    {
                                        text: 'CLAIM END DATE',
                                        style: 'detailsLeft'
                                    },
                                    {
                                        text: RepairEndDate,
                                        style: 'detailsRight'
                                    }
                                ]
                            ]
                        },
                        layout: {
                            paddingLeft: function (i, node) { return 0; },
                            paddingTop: function (i, node) { return 1; },
                            paddingRight: function (i, node) { return 0; },
                            paddingBottom: function (i, node) { return 1; },
                            hLineWidth: function (i, node) { return 0; },
                            vLineWidth: function (i, node) { return 0; }
                        }
                    }
                ]
            }, {
                table: {
                    widths: ['*', '*', '*', '*'],
                    body: [
                        [
                            {
                                text: 'Retail Date of Purchase',
                                bold: true,
                                fontSize: 10,
                                border: [false, false, false, true]
                            },
                            {
                                text: RetailSoldDate,
                                fontSize: 10,
                                border: [false, false, false, true]
                            },
                            {
                                text: 'WARRANTY EXPIRATION DATE',
                                style: 'detailsLeft',
                                border: [false, false, false, true]
                            },
                            {
                                text: ValidTo,
                                style: 'detailsRight',
                                border: [false, false, false, true]
                            }
                        ]
                    ]
                },
                layout: {
                    paddingLeft: function (i, node) { return 0; },
                    paddingTop: function (i, node) { return 3; },
                    paddingRight: function (i, node) { return 0; },
                    paddingBottom: function (i, node) { return 3; },
                    hLineWidth: function (i, node) { return 5; }
                }
            });
            if (vm.hasLaborLines) {
                myContent.push({
                    text: 'Claim Line Details',
                    bold: true
                });
                vm.claim.Labor.forEach(function (labor) {
                    if (!labor.IsDeleted) {
                        var myParts_1 = [];
                        if (labor.Parts && labor.Parts.length > 0) {
                            myParts_1.push({
                                text: 'Part',
                                bold: true
                            });
                            labor.Parts.forEach(function (part) {
                                if (!part.IsDeleted) {
                                    myParts_1.push({
                                        fontSize: 10,
                                        table: {
                                            widths: ['*', '*', '*', '*', '*', '*', '*'],
                                            body: [
                                                [
                                                    {
                                                        text: 'Line# ' + part.ClaimPartsLineNumber,
                                                        style: 'MiddleBold'
                                                    },
                                                    {
                                                        text: 'Item #',
                                                        style: 'MiddleBold',
                                                        colSpan: 2
                                                    },
                                                    {},
                                                    {
                                                        text: 'Description',
                                                        style: 'MiddleBold',
                                                        colSpan: 4,
                                                        margin: [0, 0, 0, 2]
                                                    },
                                                    {},
                                                    {},
                                                    {}
                                                ],
                                                [
                                                    {
                                                        text: ''
                                                    },
                                                    {
                                                        text: part.PartNumber,
                                                        colSpan: 2
                                                    },
                                                    {},
                                                    {
                                                        text: part.Description,
                                                        colSpan: 4
                                                    },
                                                    {},
                                                    {},
                                                    {}
                                                ],
                                                [
                                                    {
                                                        text: ''
                                                    },
                                                    {
                                                        text: 'Model #',
                                                        style: 'MiddleBold'
                                                    },
                                                    {
                                                        text: part.ComponentModel
                                                    },
                                                    {
                                                        text: 'Serial #',
                                                        style: 'MiddleBold'
                                                    },
                                                    {
                                                        text: part.ComponentSerial
                                                    },
                                                    {
                                                        text: 'Part tag',
                                                        style: 'MiddleBold'
                                                    },
                                                    {
                                                        text: part.PartTag
                                                    }
                                                ],
                                                [
                                                    {
                                                        text: ''
                                                    },
                                                    {
                                                        text: 'Sub Qty',
                                                        margin: [15, 0, 0, 0],
                                                        style: 'MiddleBold'
                                                    },
                                                    {
                                                        text: part.SubmittedQty.toFixed(2)
                                                    },
                                                    {
                                                        text: 'Sub Dlr Price',
                                                        style: 'MiddleBold'
                                                    },
                                                    {
                                                        text: currency.format(part.SubmittedQty * (part.SubmittedPartCost * (1 + part.MarkupPercent / 100)))
                                                    },
                                                    {
                                                        text: 'Sub Freight',
                                                        style: 'MiddleBold'
                                                    },
                                                    {
                                                        text: currency.format(part.SubmittedFreight + part.SubmittedCrate + part.SubmittedBrokerage)
                                                    }
                                                ],
                                                [
                                                    {
                                                        text: '',
                                                        margin: [0, 0, 0, 25]
                                                    },
                                                    {
                                                        text: 'Appr Qty',
                                                        margin: [15, 0, 0, 0],
                                                        style: 'MiddleBold'
                                                    },
                                                    {
                                                        text: part.ApprovedQty.toFixed(2)
                                                    },
                                                    {
                                                        text: 'Appr Dlr Price',
                                                        style: 'MiddleBold'
                                                    },
                                                    {
                                                        text: currency.format(part.ApprovedPartTotal - part.ApprovedFreight - part.ApprovedBrokerage - part.ApprovedCrate)
                                                    },
                                                    {
                                                        text: 'Appr Freight',
                                                        style: 'MiddleBold'
                                                    },
                                                    {
                                                        text: currency.format(part.ApprovedFreight + part.ApprovedBrokerage + part.ApprovedCrate)
                                                    }
                                                ],
                                                [
                                                    {
                                                        text: ''
                                                    },
                                                    {
                                                        text: 'Notes',
                                                        style: 'MiddleBold',
                                                        colSpan: 6
                                                    },
                                                    {},
                                                    {},
                                                    {},
                                                    {},
                                                    {}
                                                ],
                                                [
                                                    {
                                                        text: ''
                                                    },
                                                    {
                                                        text: vm.getPartNotes(part),
                                                        colSpan: 6
                                                    },
                                                    {},
                                                    {},
                                                    {},
                                                    {},
                                                    {}
                                                ]
                                            ]
                                        },
                                        layout: {
                                            paddingLeft: function (i, node) { return 0; },
                                            paddingTop: function (i, node) { return 0; },
                                            paddingRight: function (i, node) { return 0; },
                                            paddingBottom: function (i, node) { return 0; },
                                            hLineWidth: function (i, node) { return 0; },
                                            vLineWidth: function (i, node) { return 0; }
                                        }
                                    });
                                }
                            });
                        }
                        myContent.push({
                            text: 'Labor',
                            bold: true
                        }, {
                            fontSize: 10,
                            table: {
                                widths: ['*', '*', '*', '*', '*', '*', '*', '*'],
                                body: [
                                    [
                                        {
                                            text: 'Line# ' + labor.ClaimLaborLineNumber,
                                            style: 'MiddleBold'
                                        },
                                        {
                                            text: 'Operation Code',
                                            style: 'MiddleBold',
                                            colSpan: 2
                                        },
                                        {},
                                        {
                                            text: 'Operational Description',
                                            style: 'MiddleBold',
                                            colSpan: 4
                                        },
                                        {},
                                        {},
                                        {}
                                    ],
                                    [
                                        {
                                            text: ''
                                        },
                                        {
                                            text: labor.FlatRateCode,
                                            colSpan: 2
                                        },
                                        {},
                                        {
                                            text: labor.SubletDescription + " - " + labor.Description,
                                            colSpan: 5
                                        },
                                        {},
                                        {},
                                        {}
                                    ],
                                    [
                                        {
                                            text: ''
                                        },
                                        {
                                            text: 'Complaint, Cause, Correction',
                                            style: 'MiddleBold',
                                            colSpan: 7
                                        },
                                        {},
                                        {},
                                        {},
                                        {},
                                        {}
                                    ],
                                    [
                                        {
                                            text: ''
                                        },
                                        {
                                            text: labor.Complaint.replace(/(\r\n|\n|\r)/gm, " "),
                                            colSpan: 7
                                        },
                                        {},
                                        {},
                                        {},
                                        {},
                                        {},
                                        {}
                                    ],
                                    [
                                        {
                                            text: 'Model# ',
                                            margin: [0, 0, 0, 5],
                                            style: 'MiddleBold',
                                            alignment: 'right'
                                        },
                                        {
                                            text: labor.ModelNumber,
                                            margin: [5, 0, 0, 0],
                                            alignment: 'left',
                                            colSpan: 2
                                        },
                                        {},
                                        {
                                            text: 'Dlr Sub Hrs ',
                                            style: 'MiddleBold'
                                        },
                                        {
                                            text: labor.DealerSubmittedHours.toFixed(2)
                                        },
                                        {
                                            text: 'Sub Labor Amt ',
                                            style: 'MiddleBold',
                                            alignment: 'left'
                                        },
                                        {
                                            text: currency.format(labor.SubmittedLaborAmount),
                                            alignment: 'left'
                                        }
                                    ],
                                    [
                                        {
                                            text: 'Serial# ',
                                            margin: [0, 0, 0, 5],
                                            style: 'MiddleBold',
                                            alignment: 'right'
                                        },
                                        {
                                            text: labor.SerialNumber,
                                            margin: [5, 0, 0, 0],
                                            alignment: 'left',
                                            colSpan: 2
                                        },
                                        {},
                                        {
                                            text: 'Appr Hrs ',
                                            style: 'MiddleBold'
                                        },
                                        {
                                            text: labor.ApprovedHours.toFixed(2),
                                            alignment: 'left'
                                        },
                                        {
                                            text: 'Appr Labor Amt ',
                                            style: 'MiddleBold',
                                            alignment: 'left'
                                        },
                                        {
                                            text: currency.format(labor.ApprovedAmount),
                                            alignment: 'left'
                                        }
                                    ],
                                    [
                                        {
                                            text: ''
                                        },
                                        {
                                            text: 'Notes',
                                            margin: [0, 0, 0, 0],
                                            style: 'MiddleBold',
                                            alignment: 'left',
                                            colSpan: 7
                                        },
                                        {},
                                        {},
                                        {},
                                        {},
                                        {}
                                    ],
                                    [
                                        {
                                            text: ''
                                        },
                                        {
                                            text: vm.getLaborNotes(labor),
                                            colSpan: 6
                                        },
                                        {},
                                        {},
                                        {},
                                        {},
                                        {}
                                    ]
                                ]
                            },
                            layout: {
                                paddingLeft: function (i, node) { return 0; },
                                paddingTop: function (i, node) { return 0; },
                                paddingRight: function (i, node) { return 0; },
                                paddingBottom: function (i, node) { return 0; },
                                hLineWidth: function (i, node) { return 0; },
                                vLineWidth: function (i, node) { return 0; }
                            }
                        });
                        myContent.push(myParts_1);
                    }
                });
                myContent.push({
                    table: {
                        widths: ['*'],
                        body: [
                            [
                                {
                                    text: '',
                                    border: [false, false, false, true]
                                }
                            ]
                        ]
                    },
                    layout: {
                        hLineWidth: function (i, node) { return 5; }
                    }
                });
            }
            myContent.push({
                table: {
                    widths: ['*', '*', '*', '*', '*', '*', '*'],
                    body: [
                        [
                            {
                                text: 'Submitted',
                                bold: true,
                                rowSpan: 3,
                                border: [false, false, false, true]
                            },
                            {
                                text: 'Labor Amt',
                                border: [false, false, false, false],
                                style: 'Totals'
                            },
                            {
                                text: currency.format(vm.submittedLaborTotal),
                                border: [false, false, false, false],
                                style: 'Totals'
                            },
                            {
                                text: '',
                                border: [false, false, false, false]
                            },
                            {
                                text: 'Approved',
                                bold: true,
                                rowSpan: 3,
                                border: [false, false, false, true]
                            },
                            {
                                text: 'Labor Amt',
                                border: [false, false, false, false],
                                style: 'Totals'
                            },
                            {
                                text: currency.format(vm.laborTotal),
                                border: [false, false, false, false],
                                style: 'Totals'
                            }
                        ],
                        [
                            {},
                            {
                                text: 'Parts & Freight',
                                border: [false, false, false, false],
                                style: 'Totals'
                            },
                            {
                                text: currency.format(vm.submittedPartTotal),
                                border: [false, false, false, false],
                                style: 'Totals'
                            },
                            {
                                text: '',
                                border: [false, false, false, false]
                            },
                            {},
                            {
                                text: 'Parts & Freight',
                                border: [false, false, false, false],
                                style: 'Totals'
                            },
                            {
                                text: currency.format(vm.partTotal),
                                border: [false, false, false, false],
                                style: 'Totals'
                            }
                        ],
                        [
                            {},
                            {
                                text: 'Total',
                                border: [false, false, false, true],
                                margin: [0, 0, 0, 35],
                                style: 'Totals'
                            },
                            {
                                text: currency.format(vm.submittedLaborTotal + vm.submittedPartTotal),
                                border: [false, false, false, true],
                                style: 'Totals'
                            },
                            {
                                text: '',
                                border: [false, false, false, false]
                            },
                            {},
                            {
                                text: 'Total',
                                border: [false, false, false, true],
                                style: 'Totals'
                            },
                            {
                                text: currency.format(vm.partTotal + vm.laborTotal),
                                border: [false, false, false, true],
                                style: 'Totals'
                            }
                        ],
                        [
                            {
                                text: 'DEALER',
                                border: [false, false, false, false],
                                bold: true,
                                colSpan: 2,
                                fontSize: 10
                            },
                            {},
                            {
                                text: 'DATE',
                                bold: true,
                                border: [false, false, false, false],
                                fontSize: 10
                            },
                            {
                                text: '',
                                border: [false, false, false, false]
                            },
                            {
                                text: 'CUSTOMER',
                                bold: true,
                                border: [false, false, false, false],
                                colSpan: 2,
                                fontSize: 10
                            },
                            {},
                            {
                                text: 'DATE',
                                bold: true,
                                border: [false, false, false, false],
                                fontSize: 10
                            }
                        ],
                        [
                            {
                                text: 'SIGNATURE',
                                border: [false, false, false, false],
                                bold: true,
                                colSpan: 3,
                                fontSize: 10
                            },
                            {},
                            {},
                            {
                                text: '',
                                border: [false, false, false, false]
                            },
                            {
                                text: 'SIGNATURE',
                                bold: true,
                                border: [false, false, false, false],
                                colSpan: 3,
                                fontSize: 10
                            },
                            {},
                            {}
                        ],
                        [
                            {
                                text: 'I certify that I have performed these repairs consistent with Forest River Policies.',
                                colSpan: 3,
                                border: [false, false, false, false],
                                fontSize: 8
                            },
                            {},
                            {},
                            {
                                text: '',
                                border: [false, false, false, false]
                            },
                            {
                                text: 'All repairs described have been inspected and are satisfactory.',
                                colSpan: 3,
                                border: [false, false, false, false],
                                fontSize: 8
                            },
                            {},
                            {}
                        ]
                    ]
                },
                layout: {
                    paddingLeft: function (i, node) { return 0; },
                    paddingTop: function (i, node) { return 0; },
                    paddingRight: function (i, node) { return 0; },
                    paddingBottom: function (i, node) { return 0; }
                }
            });
            dd = {
                pageOrientation: 'portrait',
                pageSize: 'LETTER',
                pageMargins: [15, 25, 25, 15],
                content: myContent,
                styles: {
                    detailsLeft: {
                        bold: true,
                        alignment: 'right',
                        fontSize: 10
                    },
                    detailsRight: {
                        alignment: 'right',
                        fontSize: 10
                    },
                    AccountHeader: {
                        bold: true,
                        fontSize: 10
                    },
                    AccountInfo: {
                        fontSize: 10
                    },
                    MiddleBold: {
                        bold: true
                    },
                    Totals: {
                        fontSize: 10
                    }
                }
            };
            this.createPDF(dd, "ClaimReport.pdf");
        };
        ReportClaimController.prototype.getLaborTotal = function () {
            var vm = this;
            vm.laborTotal = 0;
            vm.submittedLaborTotal = 0;
            var count = 0;
            for (var i = 0; i < vm.claim.Labor.length; i++) {
                var labor = vm.claim.Labor[i];
                vm.laborTotal += labor.ApprovedAmount;
                vm.submittedLaborTotal += labor.SubmittedLaborAmount;
                count++;
            }
            if (count > 0) {
                vm.hasLaborLines = true;
            }
        };
        ReportClaimController.prototype.getLaborNotes = function (labor) {
            var vm = this;
            var notes = "";
            vm.claimLineFeedback.forEach(function (note) {
                if (note.id == labor.OpRecID) {
                    if (note.Comments != null && (note.FeedbackType == "Note" || note.FeedbackType == "Feedback") || note.FeedbackType == "OP change") {
                        var tesS = note.Comments;
                        if (tesS != null && tesS.length > 1) {
                            tesS = tesS.replace("\n", " ");
                            notes += tesS + "\n";
                        }
                    }
                }
            });
            if (notes == "") {
                notes = " ";
            }
            return notes;
        };
        ReportClaimController.prototype.getPartTotal = function () {
            var vm = this;
            vm.partTotal = 0;
            vm.submittedPartTotal = 0;
            var count = 0;
            for (var i = 0; i < vm.claim.Labor.length; i++) {
                var labor = vm.claim.Labor[i];
                for (var j = 0; j < labor.Parts.length; j++) {
                    var part = labor.Parts[j];
                    vm.partTotal += part.ApprovedPartTotal;
                    vm.submittedPartTotal += part.SubmittedPartTotal;
                    count++;
                }
            }
            if (count > 0) {
                vm.hasPartsLines = true;
            }
        };
        ReportClaimController.prototype.getPartNotes = function (part) {
            var vm = this;
            var notes = "";
            vm.claimLineFeedback.forEach(function (note) {
                if (note.id == part.PartRecID) {
                    if (note.Comments != null && note.FeedbackType == "Note") {
                        notes += note.Comments + " ";
                    }
                }
            });
            if (notes == "") {
                notes = " ";
            }
            return notes;
        };
        ReportClaimController.$inject = ["$state", "$uibModalInstance", "app.services.ReportService", "app.services.SiteService", "app.services.VINService", "app.services.DealerService",
            "app.services.PartsCatalogService", "app.services.ClaimService", "app.services.PartService", "app.services.WarrantyService", "app.services.FeedbackService", "VIN", "division", "ClaimNumber", "$q"];
        return ReportClaimController;
    }(report.ReportController));
    angular.module("app.report")
        .controller("app.report.ClaimController", ReportClaimController);
})(report || (report = {}));
//# sourceMappingURL=report.claim.controller.js.map
var __extends = (this && this.__extends) || (function () {
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };
    return function (d, b) {
        if (typeof b !== "function" && b !== null)
            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();
var report;
(function (report) {
    "use strict";
    var ReportMSRPController = (function (_super) {
        __extends(ReportMSRPController, _super);
        function ReportMSRPController($modalInstance, $state, vinService, warrantyService, vin) {
            var _this = _super.call(this, $modalInstance) || this;
            _this.$state = $state;
            _this.vinService = vinService;
            _this.warrantyService = warrantyService;
            var vm = _this;
            var dd = null;
            var myContent = [];
            vinService.getVINMSRP(vin)
                .then(function (data) {
                vm.data = data;
                console.log(vm.data.ShipToName);
                var currency = new Intl.NumberFormat('en-US', {
                    style: 'currency',
                    currency: 'USD',
                    minimumFractionDigits: 2
                });
                var bodyData = [];
                var headerRow = [];
                headerRow.push({ text: 'Optional Equipment Installed By Manufacturer', alignment: 'center', fillColor: 'lightgray', bold: true, colSpan: 4, fontSize: 12 });
                headerRow.push('');
                headerRow.push('');
                headerRow.push('');
                bodyData.push(headerRow);
                vm.data.Options.forEach(function (item) {
                    var dataRow = [];
                    if (item.isChassis || item.isUnit) {
                        item.Show = false;
                    }
                    else {
                        item.Show = true;
                        dataRow.push({ text: item.Id, border: [false, false, false, false] });
                        dataRow.push({ text: item.Name, border: [false, false, false, false] });
                        dataRow.push({ text: item.Quantity.toFixed(2), border: [false, false, false, false] });
                        dataRow.push({ text: currency.format(item.Price), alignment: 'right', border: [false, false, false, false] });
                        bodyData.push(dataRow);
                    }
                });
                var LastRows = [];
                LastRows.push([{ text: 'Base Price', border: [true, true, false, true], fillColor: 'lightgray', bold: true, alignment: 'center' },
                    { text: 'Options', colSpan: 2, alignment: 'center', border: [false, true, false, true], fillColor: 'lightgray', bold: true },
                    {},
                    { text: 'Suggested Retail', alignment: 'center', border: [false, true, true, true], fillColor: 'lightgray', bold: true }]);
                LastRows.push([{ text: currency.format(vm.data.BasePrice), border: [false, false, false, false], alignment: 'right' },
                    { text: currency.format(vm.data.OptionsTotal), colSpan: 2, alignment: 'right', border: [false, false, false, false] },
                    {},
                    { text: currency.format(vm.data.SuggestedRetail), alignment: 'right', fillColor: 'lightgray', bold: true }]);
                var footerContent = {
                    margin: [25, 0, 25, 25],
                    stack: [
                        {
                            fontSize: 10,
                            table: {
                                widths: [100, '*', 'auto', '*'],
                                body: LastRows
                            },
                            layout: {
                                paddingTop: function (i, node) { return 3; },
                                paddingBottom: function (i, node) { return 3; }
                            }
                        },
                        {
                            style: 'subHeader',
                            text: '\n'
                        },
                        {
                            style: 'header',
                            text: 'DO NOT REMOVE UNTIL SOLD'
                        },
                        {
                            style: 'footer',
                            text: [
                                'MANUFACTURER\'S SUGGESTED RETAIL PRICE DOES NOT INCLUDE STATE AND LOCAL TAXES. DEALER PREP AND/ OR OPTIONS INSTALLED BY DEALER ',
                                { text: 'FOREST RIVER, INC.', bold: true },
                                ' RESERVES THE RIGHT TO CHANGE PRICES AND SPECIFICATIONS WITHOUT NOTICE OR OBLIGATION'
                            ]
                        }
                    ]
                };
                myContent.push({
                    fontSize: 10,
                    table: {
                        widths: [100, 325, 50, 50],
                        body: bodyData
                    },
                    layout: {
                        paddingTop: function (i, node) { return 3; },
                        paddingBottom: function (i, node) { return 3; }
                    }
                });
                console.log(myContent);
                dd = {
                    pageOrientation: 'portrait',
                    pageSize: 'LETTER',
                    pageMargins: [25, 265, 25, 150],
                    header: {
                        margin: [25, 25, 25, 0],
                        stack: [
                            {
                                style: 'header',
                                text: 'Forest River, Inc.\n'
                            },
                            {
                                style: 'subHeader',
                                text: '\n'
                            },
                            {
                                style: 'subHeader',
                                text: '900 County Road 1'
                            },
                            {
                                style: 'subHeader',
                                text: 'PO BOX 3030'
                            },
                            {
                                style: 'subHeader',
                                text: 'Elkhart, IN 46515'
                            },
                            {
                                layout: 'noBorders',
                                table: {
                                    widths: ['*', '*', '*'],
                                    body: [
                                        [
                                            {},
                                            { text: 'USA', style: 'subHeader' },
                                            { text: 'Sales ID : ' + vm.data.SalesID, alignment: 'right' }
                                        ]
                                    ]
                                }
                            },
                            {
                                alignment: 'center',
                                margin: [0, 5, 0, 15],
                                table: {
                                    widths: ['*'],
                                    body: [
                                        [{ text: 'Vehicle Description', alignment: 'center', fillColor: 'lightgray', bold: true, fontSize: 12 }]
                                    ]
                                }
                            },
                            {
                                margin: [5, 0, 5, 15],
                                columns: [
                                    {
                                        table: {
                                            widths: ['auto', 'auto'],
                                            body: [
                                                [{ text: 'MAKE:', style: 'makeTableLFT', border: [true, true, true, false] }, { text: vm.data.Make, style: 'makeTableRT', border: [false, false, false, false] }],
                                                [{ text: 'MODEL:', style: 'makeTableLFT', border: [true, false, true, false] }, { text: vm.data.Model, style: 'makeTableRT', border: [false, false, false, false] }],
                                                [{ text: 'SERIAL NO.:', style: 'makeTableLFT', border: [true, false, true, false] }, { text: vm.data.SerialNumber, style: 'makeTableRT', border: [false, false, false, false] }],
                                                [{ text: 'VIN NO.:', style: 'makeTableLFT', border: [true, false, true, true] }, { text: !vm.data.ChasisVin ? vm.data.Vin : vm.data.ChasisVin, style: 'makeTableRT', border: [false, false, false, false] }],
                                            ]
                                        },
                                        layout: {
                                            paddingLeft: function (i, node) { return 3; },
                                            paddingTop: function (i, node) { return 3; },
                                            paddingRight: function (i, node) { return 3; },
                                            paddingBottom: function (i, node) { return 3; }
                                        }
                                    },
                                    {
                                        table: {
                                            widths: ['auto', 'auto'],
                                            body: [
                                                [{ text: 'SHIP TO\nADDRESS:', style: 'makeTableLFT', rowSpan: 2 }, { text: vm.data.ShipToName, style: 'makeTableRT', bold: false, border: [false, false, false, false] }],
                                                [{}, { text: vm.data.ShipToAddress, style: 'makeTableRT', bold: false, border: [false, false, false, false] }]
                                            ]
                                        },
                                        layout: {
                                            paddingLeft: function (i, node) { return 3; },
                                            paddingTop: function (i, node) { return 3; },
                                            paddingRight: function (i, node) { return 3; },
                                            paddingBottom: function (i, node) { return 3; }
                                        }
                                    }
                                ]
                            }
                        ]
                    },
                    content: myContent,
                    footer: footerContent,
                    styles: {
                        header: {
                            alignment: 'center',
                            fontSize: 24,
                            bold: true
                        },
                        subHeader: {
                            fontSize: 12,
                            alignment: 'center',
                            bold: true
                        },
                        footer: {
                            margin: [0, 15, 0, 0],
                            fontSize: 8,
                            alignment: 'center'
                        },
                        makeTableLFT: {
                            fillColor: 'lightgray',
                            bold: true
                        },
                        makeTableRT: {
                            bold: true
                        }
                    }
                };
                _this.createPDF(dd, "MSRP Report.pdf");
            });
            return _this;
        }
        ReportMSRPController.$inject = ["$uibModalInstance", "$state", "app.services.VINService", "app.services.WarrantyService", "vin"];
        return ReportMSRPController;
    }(report.ReportController));
    angular.module("app.report")
        .controller("app.report.MSRPController", ReportMSRPController);
})(report || (report = {}));
//# sourceMappingURL=report.msrp.controller.js.map
var __extends = (this && this.__extends) || (function () {
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };
    return function (d, b) {
        if (typeof b !== "function" && b !== null)
            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();
var report;
(function (report) {
    "use strict";
    var ReportOptionsController = (function (_super) {
        __extends(ReportOptionsController, _super);
        function ReportOptionsController($modalInstance, $state, vinService, warrantyService, partOrderService, vin, salesId) {
            var _this = _super.call(this, $modalInstance) || this;
            _this.$state = $state;
            _this.vinService = vinService;
            _this.warrantyService = warrantyService;
            _this.partOrderService = partOrderService;
            var vm = _this;
            vin = _this.partOrderService.toString();
            if (vin) {
                vinService.getVINMSRP(vin).then(function (data) {
                    vm.data = data;
                    _this.createPage(data, vm);
                });
            }
            else {
                _this.partOrderService.getOptions(salesId).then(function (data) {
                    vm.data = data;
                    _this.createPage(data, vm);
                });
            }
            return _this;
        }
        ReportOptionsController.prototype.createPage = function (data, vm) {
            console.log(data);
            console.log('aa');
            console.log(vm);
            var canvas = document.createElement("canvas");
            JsBarcode(canvas, data.ShortVin, {
                format: "CODE128", displayValue: false,
                fontSize: 12,
                height: 15,
                width: 1
            });
            var barCode = canvas.toDataURL("image/png");
            var dd = null;
            var myContent = [];
            var MiddleTable = [];
            var MiddleHeader = [];
            MiddleHeader.push({ text: 'Item Number', bold: true });
            MiddleHeader.push({ text: 'Description', bold: true });
            MiddleHeader.push({ text: 'Quantity', bold: true, alignment: 'right' });
            MiddleHeader.push({ text: 'Unit', bold: true });
            MiddleTable.push(MiddleHeader);
            data.Options.forEach(function (item) {
                var rowCell = [];
                rowCell.push({ text: item.Id });
                rowCell.push({ text: item.Name });
                rowCell.push({ text: item.Quantity.toFixed(2), alignment: 'right' });
                rowCell.push({ text: item.Unit });
                MiddleTable.push(rowCell);
            });
            myContent.push({
                layout: 'headerLineOnly',
                fontSize: 10,
                table: {
                    widths: ['15%', '*', 'auto', '10%'],
                    headerRows: 1,
                    body: MiddleTable
                }
            });
            if (data.VINNoteSales.length > 0) {
                var NotesSales = [];
                var NotesHeader = [];
                NotesHeader.push({ text: 'Sales ID', bold: true, border: [false, false, false, true] });
                NotesHeader.push({ text: 'Description', bold: true, border: [false, false, false, true] });
                NotesHeader.push({ text: 'Notes', bold: true, border: [false, false, false, true] });
                NotesSales.push(NotesHeader);
                data.VINNoteSales.forEach(function (item) {
                    var rowCell = [];
                    rowCell.push({ text: item.Item, border: [false, false, false, false] });
                    rowCell.push({ text: item.Title, border: [false, false, false, false] });
                    rowCell.push({ text: item.Notes, border: [false, false, false, false] });
                    NotesSales.push(rowCell);
                });
                myContent.push({
                    text: 'VIN Notes Sales',
                    fontSize: 14,
                    margin: [0, 20, 0, 0]
                }, {
                    fontSize: 10,
                    table: {
                        widths: ['15%', '25%', '*'],
                        headerRows: 1,
                        body: NotesSales
                    },
                    layout: {
                        paddingLeft: function (i, node) { return 0; },
                        paddingRight: function (i, node) { return 10; }
                    }
                });
            }
            if (data.VINNotesSalesLine.length > 0) {
                var NotesSalesLine = [];
                var NotesSalesLineHeader = [];
                NotesSalesLineHeader.push({ text: 'Sales Line ID', bold: true, border: [false, false, false, true] });
                NotesSalesLineHeader.push({ text: 'Description', bold: true, border: [false, false, false, true] });
                NotesSalesLineHeader.push({ text: 'Notes', bold: true, border: [false, false, false, true] });
                NotesSalesLine.push(NotesSalesLineHeader);
                data.VINNotesSalesLine.forEach(function (item) {
                    var rowCell = [];
                    rowCell.push({ text: item.Item, border: [false, false, false, false] });
                    rowCell.push({ text: item.Title, border: [false, false, false, false] });
                    rowCell.push({ text: item.Notes, border: [false, false, false, false] });
                    NotesSalesLine.push(rowCell);
                });
                myContent.push({
                    text: 'VIN Notes Sales Line',
                    fontSize: 14,
                    margin: [0, 20, 0, 0]
                }, {
                    fontSize: 10,
                    table: {
                        widths: ['15%', '25%', '*'],
                        headerRows: 1,
                        body: NotesSalesLine
                    },
                    layout: {
                        paddingLeft: function (i, node) { return 0; },
                        paddingRight: function (i, node) { return 10; }
                    }
                });
            }
            if (data.InventNotes.length > 0) {
                var InventNotes = [];
                var InventNotesHeader = [];
                InventNotesHeader.push({ text: 'Inventory ID', bold: true, border: [false, false, false, true] });
                InventNotesHeader.push({ text: 'Description', bold: true, border: [false, false, false, true] });
                InventNotesHeader.push({ text: 'Notes', bold: true, border: [false, false, false, true] });
                InventNotes.push(InventNotesHeader);
                data.InventNotes.forEach(function (item) {
                    var rowCell = [];
                    rowCell.push({ text: item.Item, border: [false, false, false, false] });
                    rowCell.push({ text: item.Title, border: [false, false, false, false] });
                    rowCell.push({ text: item.Notes, border: [false, false, false, false] });
                    InventNotes.push(rowCell);
                });
                myContent.push({
                    text: 'VIN Notes Sales Line',
                    fontSize: 14,
                    margin: [0, 20, 0, 0]
                }, {
                    fontSize: 10,
                    table: {
                        widths: ['15%', '25%', '*'],
                        headerRows: 1,
                        body: InventNotes
                    },
                    layout: {
                        paddingLeft: function (i, node) { return 0; },
                        paddingRight: function (i, node) { return 10; }
                    }
                });
            }
            if (data.GeneralNotes.length > 0) {
                var GeneralNotes = "Notes:";
                data.GeneralNotes.forEach(function (item) {
                    GeneralNotes += item.Notes + '\n';
                });
                myContent.push({
                    text: GeneralNotes,
                    fontSize: 14,
                    margin: [0, 20, 0, 0]
                });
            }
            dd = {
                pageOrientation: 'portrait',
                pageSize: 'LETTER',
                pageMargins: [25, 260, 25, 25],
                header: function (currentPage, pageCount) {
                    return {
                        margin: [25, 25, 25, 0],
                        columns: [
                            [
                                {
                                    text: 'Ship To: ' + data.DealerNumber,
                                    bold: true,
                                    fontSize: 10
                                },
                                {
                                    text: data.ShipToName,
                                    fontSize: 10
                                },
                                {
                                    text: data.ShipToAddress,
                                    fontSize: 10
                                }
                            ],
                            [
                                {
                                    text: 'Page                                                      ' + currentPage.toString() + ' of ' + pageCount,
                                    fontSize: 10,
                                    alignment: 'right'
                                },
                                {
                                    image: barCode,
                                    width: 95,
                                    alignment: 'center'
                                },
                                {
                                    text: 'Production Order Options',
                                    alignment: 'right',
                                    bold: true,
                                    fontSize: 16
                                },
                                {
                                    fontSize: 10,
                                    table: {
                                        widths: ['*', '*'],
                                        body: [
                                            [{ text: 'Version', alignment: 'right', border: [false, false, false, false] }, { text: data.Version, alignment: 'right', border: [false, false, false, false] }],
                                            [{ text: 'Date', alignment: 'right', border: [false, false, false, false] }, { text: data.Date, alignment: 'right', border: [false, false, false, false] }],
                                            [{ text: 'Sales Order', alignment: 'right', border: [false, false, false, false] }, { text: data.SalesID, alignment: 'right', border: [false, false, false, false] }],
                                            [{ text: 'Site', alignment: 'right', border: [false, false, false, false] }, { text: data.Site, alignment: 'right', border: [false, false, false, false] }],
                                            [{ text: 'Production Order', alignment: 'right', border: [false, false, false, false] }, { text: data.ProductionOrder, alignment: 'right', border: [false, false, false, false] }],
                                            [{ text: 'Forest River Vin', alignment: 'right', border: [false, false, false, false] }, { text: data.Vin, alignment: 'right', border: [false, false, false, false] }],
                                            [{ text: 'Internal Reference', alignment: 'right', border: [false, false, false, false] }, { text: data.InternalReference, alignment: 'right', border: [false, false, false, false] }],
                                            [{ text: 'Sales Group', alignment: 'right', border: [false, false, false, false] }, { text: data.SalesGroup + ': ' + data.SalePerson, alignment: 'right', border: [false, false, false, false] }],
                                            [{ text: 'Short Vin', alignment: 'right', border: [false, false, false, false], bold: true, fontSize: 13 }, { text: data.ShortVin, alignment: 'right', border: [false, false, false, false], bold: true, fontSize: 13 }],
                                            [{ text: 'Chasis Vin', alignment: 'right', border: [false, false, false, false], bold: true, fontSize: 13 }, { text: data.ChasisVin, alignment: 'right', border: [false, false, false, false], bold: true, fontSize: 13 }],
                                            [{ text: 'Unit Type', alignment: 'right', border: [false, false, false, false], bold: true, fontSize: 13 }, { text: data.UnitType, alignment: 'right', border: [false, false, false, false], bold: true, fontSize: 13 }]
                                        ]
                                    },
                                    layout: {
                                        paddingLeft: function (i, node) { return 0; },
                                        paddingTop: function (i, node) { return 2; },
                                        paddingRight: function (i, node) { return 0; },
                                        paddingBottom: function (i, node) { return 0; }
                                    }
                                }
                            ]
                        ]
                    };
                },
                content: myContent
            };
            this.createPDF(dd, "Option Reports.pdf");
        };
        ReportOptionsController.$inject = ["$uibModalInstance", "$state", "app.services.VINService", "app.services.PartOrderService", "vin", "salesId"];
        return ReportOptionsController;
    }(report.ReportController));
    angular.module("app.report")
        .controller("app.report.OptionsController", ReportOptionsController);
})(report || (report = {}));
//# sourceMappingURL=report.options.controller.js.map
var __extends = (this && this.__extends) || (function () {
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };
    return function (d, b) {
        if (typeof b !== "function" && b !== null)
            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();
var report;
(function (report) {
    "use strict";
    var IPart = (function () {
        function IPart() {
        }
        return IPart;
    }());
    var ReportPDIController = (function (_super) {
        __extends(ReportPDIController, _super);
        function ReportPDIController($modalInstance, $state, vinService, warrantyService, vin) {
            var _this = _super.call(this, $modalInstance) || this;
            _this.$state = $state;
            _this.vinService = vinService;
            _this.warrantyService = warrantyService;
            var vm = _this;
            vm.vin = vin;
            var dd = null;
            vinService.getVIN(vm.vin, true).then(function (data) {
                vm.VinInfo = data;
                warrantyService
                    .getWarranty(vm.vin)
                    .then(function (data) {
                    vm.Warranty = data;
                    vm.requiresDisclaimer = vm.Warranty.Ownership.State == "NY";
                    var fullDate = new Date(vm.VinInfo.RetailSoldDate.toString());
                    var delDate = ("0" + (fullDate.getMonth() + 1)).slice(-2) +
                        "/" +
                        ("0" + fullDate.getDate()).slice(-2) +
                        "/" +
                        fullDate.getFullYear();
                    var footerText = "I have had the opportunity to review the Forest River, Inc. Limited Warranty during the purchase of this unit and I understand that this product is designed to be used for recreational camping and travel. I have been given the opportunity to make notations in the space provided above, have observed or received satisfactory explanation to all questions regarding the items listed during this delivery process.";
                    if (vm.Warranty.Ownership.State == "LA") {
                        footerText +=
                            " FURTHER, I WAIVE ANY AND ALL RIGHTS TO RESCIND THIS SALE OR TO REDUCE THE PURCHASE PRICE AGAINST FOREST RIVER, INC. BY REASON OF ANY VICE OR DEFECTS IN THE ABOVE-DESCRIBED UNIT. INCLUDING BUT NOT LIMITED TO ANY RIGHTS OF REDHIBITION GRANTED TO ME BY LAW. I ACKNOWLEDGE THAT THIS PRIVISION AND WAIVER HAS BEEN BROUGHT TO MY ATTENTION.";
                    }
                    else {
                        footerText += "\n\n\n";
                    }
                    var canvas = document.createElement("canvas");
                    JsBarcode(canvas, vm.VinInfo.ShortVIN, {
                        format: "CODE128",
                        displayValue: false,
                        fontSize: 12,
                        height: 15,
                        width: 1
                    });
                    var barCode = canvas.toDataURL("image/png");
                    var myContent = [];
                    myContent.push({
                        layout: "noBorders",
                        table: {
                            widths: [80, "*"],
                            body: [
                                [
                                    {
                                        width: 80,
                                        border: [false, false, false, false],
                                        image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAB2IAAALaCAYAAADjmJO8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAe2VJREFUeNrs3U+MXNd9J/r7BgakWYgmFxZAIo3XJC74AJKAmarZuLlgC16MgbRGCsYI0D1J3AJie2U4HhuzmI2p7bwoCeGVpQe4lXjYgKEg1KgFaCOwuWB7VRUGIPkwxHlkBwzYAL0gTS0i7V79bnVJlE1K/FNddc6tzwe4KD2/95DLc29VNep7v79TVQAAAAAAAACM1f9hCQAAAMhZSml+8DL/4P9W1/WmlQEAACBnglgAAAAm4oFAdXSE0w/8f3JycOx/xv8zlwfHvd3/3h4c/7L735uj//d1Xd9zNQAAANhrglgAAADGJqUUQerJ3eP/3H2dr36n0ZqBzWoY2P5zNQxvt+u6vuwKAgAAMC6CWAAAAJ7KA6Hr4uD4evVZ6FqyzWrYpL1YDduzwlkAAACeiiAWAACAx7I7WnixGo4THrVe2y5asxHGRjC7aW9aAAAAHpcgFgAAgEdKKb1aDYPXeJ23Io3z1WfBrMYsAAAADyWIBQAA4FO7rdcHw1e+2Ha1G8zWdX3ecgAAADAiiAUAAJhxD4Sv36lmY9zwXokxxhHGviuUBQAAQBALAAAwg1JK+6th+PrDSvi6F0ah7Nv2lQUAAJhNglgAAIAZsrvn6yuDY9VqTMz24Hh7cKzVdb1tOQAAAGaDIBYAAKDldkcPr1bD0cPzVmSqRi1Zo4sBAABaThALAADQUrvt1whfX7Ua2YnRxWuD46yWLAAAQDsJYgEAAFpkt/0a+76uDo79VqQIm9WwJbtmKQAAANpDEAsAAFC4lFIErqP266IVKVa0ZGNkcbRkL1sOAACAsgliAQAACpVSOlkN268Rwmq/tksEsWcHx/m6ru9ZDgAAgPIIYgEAAAryQPs1AtiTVmQmrFXD0cWblgIAAKAcglgAAIACpJQWq+Ho4VWrMbO2q2FLdk1LFgAAIH+CWAAAgEzttl9Xq2H7dd6K8IDYSzZasuctBQAAQJ4EsQAAAJlJKcXo4Wi/vmo1+BLbg+PtatiS3bYcAAAA+RDEAgAAZCClNF8N268RwM5bEZ5CtGPfret6zVIAAABMnyAWAABgilJKq9UwfF20GoxJ7B+7NjjOaskCAABMjyAWAABgwnbbr7Hv6+rg2G9F2EOXB8fZwXG+rut7lgMAAGByBLEAAAATkFKKwDX2fI0A9qQVYcIihI3RxdGSvWw5AAAA9p4gFgAAYA+llCJ0jfA1QljtV3IQQezbg2NNSxYAAGDvCGIBAADGbLf9uloN937VfiVna4Pj7bquNy0FAADAeAliAQAAxiSltFgNw9dVq0FhtqvP9pLdthwAAADPThALAADwDFJK89Vn7dd5K0ILxF6y0ZI9bykAAACeniAWAADgKaSUYs/XCF9ftRq01Hb12V6y25YDAADgyQhiAQAAHtNu+/WH1TB8nbcizJDNatiSXbMUAAAAj0cQCwAA8CVSSqvVsP26aDWYcfcGx1o1DGUvWw4AAIBHE8QCAAA8RErpZDUMX1cHx34rAr8ngtizg+N8Xdf3LAcAAMDnCWIBAAB2pZQicI2xwzF++KQVgccSIez5wXFWSxYAAOAzglgAAGDmpZQWq2H7NUJY7Vd4etvVsCW7piULAADMOkEsAAAwk3bbr6vVsP06b0Vg7Naq4V6ym5YCAACYRYJYAABgpqSUovX6SjUMYYG9tz043q6GLdltywEAAMwKQSwAANB6KaX5ahi8xvjheSuSh537d6vbv71XffTJv1XXf7Mz/N9+O/jf7n9+om3v1o3f+//30L4D1cGvHvjc/3b0awerF55/vnrhuecH/32o+d+6c4ctdF5iL9loyZ63FAAAQNsJYgEAgNbabb+O9n5lSiJw/d93dpqw9frg9fbg/zleJ6UJZl881AS1h766vwlpBbRTF2n72uA4qyULAAC0lSAWAABold32a+z7ujo49luRyevduln1/vVG83r9zu3qo08+zvI8j754sPq/vnaw6s4daYLZg/sOuHjTsVkNW7JrlgIAAGgTQSwAANAKKaXVath+XbQakxXt1s3/79owgH3IGOFSxLjjCGQjmD1dH2uatExUtGRjZHG0ZC9bDgAAoHSCWAAAoFgppZPVsP0ao4e1XydoM12rLg6OeM218fqsojH78vFOtVgf05advAhizw6O83Vd37McAABAiQSxAABAUVJKEbhG8BoB7EkrMjmzEL4+ilB2akYt2RhdvGk5AACAkghiAQCAIqSUFqvh6OFVqzE5O/fvVud6W00Ae3vw31TN6OIIZZcGBxO1XQ1bsmtasgAAQAkEsQAAQLZ226+r1bD9Om9FJmfjar96b3CUvOfrXos9ZKMhu9w51TRmmahRS/a8pQAAAHIliAUAALKTUorRw9F+fdVqTM71OzvVev/STI4eflYRxK50TlWn62NNQMvEbA+Ot6thS3bbcgAAADkRxAIAAFlIKc1Xw/ZrBLDzVmQyInCNscPn+peaIJZnM2rJLh3vVt25wxZksqId+25d12uWAgAAyIEgFgAAmKqU0urg5ZVK+3WierduVhtXe9qve+jQvgPVcnehCWW1ZCcq9o9dGxxntWQBAIBpEsQCAAATt9t+jX1fVwfHfisyGRG4Rvi63tuqbt+/a0Em6OXjnWZscbRlmajNaji6+Hxd1/csBwAAMEmCWAAAYCJSShG4Rus1AtiTVmRyovW6cbXfvDJd0ZJdOtFpgtmDg/9mYiKEjdHF0ZK9bDkAAIBJEMQCAAB7KqUUoWuErxHCar9OyM79u9V7V/vVxpW+9mumFncbskvHOxZjsiKIjZbsmpYsAACwlwSxAADA2O22X1cHx3cq7deJGjVftV/LEfvHxj6yK90FLdnJWxscb9d1vWkpAACAcRPEAgAAY5NSWqyG4euq1ZicaL+e6201+7/GPrCUqzt35NP9ZCOgZWK2B8fZariX7LblAAAAxkEQCwAAPJOU0nz12d6v81ZkMiJwvZiuNeOHe7duWJCWiRA2xhYvd05VR188aEEmK/aSjZbseUsBAAA8C0EsAADwVFJKEb5G+/VVqzE51+/sVOv9S83oYe3X2RBB7ErnlJbs5G1Xn+0lu205AACAJyWIBQAAHttu+zWarxG+zluRyYjANcYOR/s1glhmV4wtjv1ku3OHLcZkbVbDluyapQAAAB6XIBYAAPhSKaXVath+XbQak9O7dfPTABYedGjfgWq5u9CMLz44+G8m5t7gWKuGoexlywEAAHwRQSwAAPBQKaWT1TB8XR0c+63IZOzcv9uMHV7vbVW3B/8NXybC2KXjneaViYog9uzgOF/X9T3LAQAA/C5BLAAA8KmUUgSuMXY4xg+ftCKTE+HrxtV+8wpPI1qySyc6zfhiLdmJihD2/OA4qyULAAA8SBALAACM2q+jvV+1Xyck2q8xdnjjSl/7lbHqzh3Z3U+2YzEma7satmTXtGQBAABBLAAAzKjd9utqNQxg563I5ETzNQLY3q0bFoM99cJzz1dLx7vVSndBS3by1qrhXrKblgIAAGaTIBYAAGZMSilar69UwxCWCbl+Z2fYfr3aqz765GMLwsQdffFgtdI5VZ2ujzUBLROzPTjeroYt2W3LAQAAs0MQCwAAMyClNF8Ng9fvVNqvExOB68V0rTrXv9QEsZCDCGEX62PVcudUE84yUbGXbLRkz1sKAABoP0EsAAC02G77NcLXV63G5ETout6/VG2ma9qvZO3QvgPVcnehGV+sJTtRsX/s2uA4qyULAADtJYgFAICW2W2/xr6vq4NjvxWZjAhcY+zwem+run3/rgWhOC8f7zSBbHfusMWYrM1q2JJdsxQAANAuglgAAGiJlNJqNWy/LlqNyendutkEsLH/K7RBtGSXTnSaYPbg4L+ZmGjJxsjiaMlethwAAFA+QSwAABQspXSyGrZfY/Sw9uuE7Ny/2wSvG1f62q+0Wuwlu3S807wyURHEnh0c5+u6vmc5AACgTIJYAAAoTEopAtcIXiOAPWlFJif2fN242m9eYZZES/Z0faxa6S5oyU7WqCUbo4s3LQcAAJRFEAsAAIVIKS1Ww9HDq1ZjcqL9eq631Ywfjn1gYdZ1547s7ifbsRiTtV0NW7JrWrIAAFAGQSwAAGRst/26Wg3br/NWZHKi+Rrjh3u3blgMeIgXnnu+WjrebULZoy8etCCTNWrJnrcUAACQL0EsAABkKKUUo4ej/fqq1Zic63d2qvX+pWb0sPYrPL4IYlc6p5rxxRHQMjHbg+PtatiS3bYcAACQF0EsAABkIqU0Xw3brxHAzluRyYjA9WK6Vp3rX2qCWODpRQi7WB9rmrLducMWZLKiHftuXddrlgIAAPIgiAUAgClLKa0OXl6ptF8nqnfrZrPvq/Yr7I1D+w5Uy92FJpTVkp2o2D92bXCc1ZIFAIDpEsQCAMAU7LZfY9/X1cGx34pMRgSuEb6u97aq2/fvWhCYkNhHNsYWR1uWidqshqOLz9d1fc9yAADAZAliAQBgQlJKEbhG6zUC2JNWZHKi9bpxtd+8AtMTLdmlE50mmD04+G8mJkLYGF0cLdnLlgMAACZDEAsAAHsspRSha4SvEcJqv07Izv271XtX+9XGlb72a8YimIu9RONajVt37kjz2rt1w0JnaLiXbEdLdvIiiI2W7JqWLAAA7C1BLAAA7IHd9uvq4PhOpf06UaPmq/ZrvmK/0GEI121C2Niv9/u/emvs/3e+t/DN6nvf+KZQvoD7Ie6Fle6CluzkrQ2Ot+u63rQUAAAwfoJYAAAYo5TSYjUMX1etxuRE0Haut9Xs/xr7wJKnoy8erFY6p5q9QiN8G9nrIPZBxlTnLVrMo/1kH7xH2HPbg+NsNdxLdttyAADAeAhiAQDgGaWU5qvP9n6dtyKTEYHrxXStaToaPZuvUdsxwrUIYh9mkkHsSIT3Ecau97a0ZDO9b6I1vdw59cj7hj0Te8lGS/a8pQAAgGcjiAUAgKeUUorwNdqvr1qNybl+Z6da719qQjTt13yNmo2xB+iXmUYQ+7v/96NNvRf71PLsHtWkZs9tV5/tJbttOQAA4MkJYgEA4Anstl+j+Rrh67wVmYxR+/Vc/1ITxJKnQ/sONGHZk+71Oe0g1n1WjmG4P9xbmInarIYt2TVLAQAAj08QCwAAjyGltFoN26+LVmNyNBXLECNko/kar097nXMIYh+keZ23CP2XuwtNKKslO1H3BsdaNQxlL1sOAAD4YoJYAAB4hJTSyWoYvq4Ojv1WZDLs3VmGURAW4euTtF8fJscgdsRexPl71gcBeGoRxJ4dHOfrur5nOQAA4PcJYgEA4AEppQhcY+xwjB8+aUUmJ8LXjav95pV87cVo2JyD2AfFQwLneltNS1tLNj/xcMDSiU5zjz7rwwE8kQhhzw+Os1qyAADweYJYAACoPm2/jvZ+1X6dkAi2omm4caWv/Zqxoy8e/DSA3YsxsKUEsQ/y4EDeunNHdu/ZjsWYrO1q2JJd05IFAABBLAAAM2y3/bpaDQPYeSsyORFgGfWatwhcY9TrcudUE8TupRKD2BEPE+R/H8cDBCvdBS3ZyVurhnvJbloKAABmlSAWAICZk1KK1usr1TCEZUKMdS1DhK4rnVPV6frYnrRfH6bkIPZB0Y4d7SeLe5tPbQ+Ot6thS3bbcgAAMEsEsQAAzISU0nw1DF6/U2m/TkwErhFMnetfqq7f2bEgmZp2a7AtQeyD9308cLDe29KSzfR+n1Tbm98Te8lGS/a8pQAAYBYIYgEAaLXd9muEr69ajcmJ0HW9f6lpCGq/5ivCqDimvY9m24LY3/23RSjrvZCnvd7/mEeK/WPXBsdZLVkAANpMEAsAQOvstl9j39fVwbHfikyGFmAZDu07UC2d6DThUy57ZrY5iH3w/aEdnrdRINudO2wxJmuzGrZk1ywFAABtI4gFAKA1Ukqr1bD9umg1JmfU+LMvZt5Gzdd4zfEeansQ+6AIYuP9Yr/kPOX4sMKMiJZsjCyOluxlywEAQBsIYgEAKNpu+/Wn1XD0sPbrhOzcvzsMkq70tV8zFoHScnch+7GrsxbEPmhj8D6K91Lv1g03bIZyfoCh5SKIPTs4ztd1fc9yAABQKkEsAABF0n6djtjnMoKjeCVPEbgOw6NyRqzOchA7Eg83nOttNeOLPdyQn3io4fTgfbXSXdCSnSx7yQIAUDRBLAAAxUgpReN1tRru/zpvRSZDQFSGoy8erFY6p5qwKOf268MIYj/PAw95684d2d1PtmMxJms0tnjTUgAAUApBLAAA2dsdP7xaDQNY44cnxMjU/I3ar8udU00QWypB7MPFQxARxq73tjwEken7L5rnEcqW/P4r0ObgeLuu6zVLAQBA7gSxAABk64H9X1etxmRcv7NTrfcvNeHPR598bEEy1bZGniD28dZo42qveTiC/JTcSC/Y9uB4XSALAEDOBLEAAGRHADtZEbjG2OFz/UtNEEueRu27Nu5RKYh9svfrKJD1fs3zfVraHs0tsF0JZAEAyJQgFgCAbOzuAfuXlRHEEzFq2Gm/5m0Y6nSa1zbfi4LYJ6fBnrdD+w5Uy92FJpTVkp2I7cHxmj1kAQDIiSAWAIAspJTOVALYPTdq09lzMm8R4Cyd6DTjh9vWfn0YQeyzv6+12vMW7+UYW9zmByoyslkNG7KblgIAgGkTxAIAMFUppVcHL38zOOatxt6JxlwENfaXzNtw39fZG2kqiB2fnft3q3O9reaBCy3Z/MzaQxZTtlYNA9ltSwEAwLQIYgEAmIrdfWB/MTgWrcbeiEAmgteNK33t14wZXyqI3Ssbg/d/PIQRB/mZhbHjGbg3OM7WdX3GUgAAMA2CWAAAJuqBfWB/ajX2hvAlfxG4Rviy3DlVHX3x4MyvhyB2b3koI//Pg3gQY6W7oCW7d7Yr+8cCADAFglgAACYmpbRYDVuw81ZjvIwjLUOEriudU81ekbPafn0YQezkxAMao4c1yE937sin+8n6jNgTa4PjR3Vd37MUAABMwlcsAQAAe223BRsB7KtWY3wicB3t+9q7dcOCZErbjZxEEzuO+PyIBzfWe1tashmJz/I4tOb3zGr8LTL4uyTasectBwAAe00jFgCAPZVSivA1Qtj9VmM8rt/Zqdb7l5pGm/ZrvkbNttgDki+mETv99Y9Q1mdKnjTp90wEsa9pxwIAsJcEsQAA7IndFuzfVMP2Cc9o1H4917/UBLHk6dC+A9XSiU4TwGq/Pj5BrM8ZHs/w4Y5u1Z07bDHGI0JY7VgAAPaMIBYAgLFLKZ0cvPxjZS/YZzZqqsX4YfIVI0Sj+RqvPN19LojNi+Z93uKhj+XuQhPKasmOxd8Ojte1YwEAGDdBLAAAY5VSOjN4+amVeHo79+824Ye9G/M2CkIifNV+fTaC2LxtXO3bizpjHgQZm8vVsB172VIAADAuX7EEAACMw+4o4mjBLlqNpxPhawQe8Uq+jAZl1izt7nUcD4mc6201LX0t2by+O+IwGv2ZxTSPC4O/Z35U1/Wa5QAAYBw0YgEAeGa7o4gvDI79VuPJRLARTbONK33t14wdffFgtdI5VZ2ujxkDugc0YsvjwZG8deeO7D400rEYT2dtcPzIqGIAAJ6VIBYAgGeSUlodvPzCSjwZoz7zF4FrjPpc7pxqglj2jiC2XB4myf9zLBr8K90FLdknFyOK/7iu621LAQDA0xLEAgDw1FJKEcCuWonHY6xnGUZNMu3XyRHEtuc6xudbBLPkR7P/qUQjNsLYTUsBAMDTEMQCAPDEdveDjVHEJ63GF4vA9WK6Vp3rX6qu39mxIJnSGpsuQWz7PvcikF3vbWnJZvp5p+3/xF6zbywAAE9DEAsAwBPZ3Q82mrBC2C8Qoet6/1Kzf6L2a74ijIg9FOOV6RHE+ixkOiKIHe4l29WS/XJrdV2/ZhkAAHgSglgAAB7bbggbTdj9VuP3aYGV4dC+A9XSiU4TPmi/5kEQOxufj6YD5G0UyHbnDluMR1sbHD+q6/qepQAA4HEIYgEAeCwppdVq2ITld9gXsQyjfV+1X/N8DwliZ4f9svPmYZUvdXlwvCSMBQDgcQhiAQD4UkLY3xdBQgSvG1f62q8Zi0Bhubtg7GbmBLGza2PwORqfpb1bNyxGhoxvfyRhLAAAj+UrlgAAgC8ihP282OcwgoN4JU8RuA7DAyM2S7HjYYaZtdSMw+14uCXj77w44qGWmCiw0l3Qkh2KrRr+afA30h/XdX3ZcgAA8CgasQAAPFJKKQLY1Vlfh9EYzdjfUECQr6MvHqxWOqeasED7NX+T2DNUI7ZMHnjJW3fuyO5+sh2LUVXRiH1JGAsAwKMIYgEAeCghrJGZJYjANZqvEQpEEEv+RnsqR8i21/uDCmLLFg/BxH2y3tvyEIzP35wJYwEAeCRBLAAAv2eWQ9ho5q33L00kJOLpaWSVJd5LEb5OOlATxLbHKMCPh2PIj4kEwlgAAB5OEAsAwOfMYgg7iRGpPDt7FJYnHmiI99a0wjNBrM9rJmvG9+gWxgIA8HsEsQAAfCqldGbw8tNZ+fdOckQqT2/4o36neSV/MU42gteNK/2pj5MVxLabCQZ5i4dnlrsLTSg7Qy1ZYSwAAJ8jiAUAoJFSWh28/KLt/85pjUjlyYx+wI/wVfu1DBGGxb7K8ZoLQexsGLVk7emdr+Eo+ZlpyUYYe7iu63uuPAAAglgAAGYihI2W3ptbH2pOZW7GfqxvxfvqXG+rebghx/eVINY9SV5Ge8nOwP7e0Yh9SRgLAIAgFgBgxqWUXh28/GNb/32j8cPT2qOSLxc/zI8C2BkaX1msktqHgtjZlmNLm6GYerB0olMtd061+XNfGAsAgCAWAGCWpZRODl4uDI79bfu3RQD75q8/NKYyU/HDe4wdjh/hI4glfyXuxymIJeS0bzG//12w3D3V5kB2ra7r11xpAIDZJYgFAJhRKaX5wcs/VS0LYeMH9zMf/IMANlOjsZSn62ParwUYtV/P9S81QWxpBLH8rniQYNToJh+jQLal71dhLADADBPEAgDMoJRShK/RhD3Zln9TBEZ/fWHDj+sZih/YY+zwSnehOrjvgAUpQFtGegti+aLvjLjH13tbWrIZiZHF8b5t4R6yr9V1veYKAwDMHkEsAMAMSinFnrCvtuXfEyOI13uXihmXOiti9HAcLfxBvZXaGEwJYnkcowcPShq73XbduSPNe7c7d7hN/6zYL3bT1QUAmC2CWACAGZNSOjN4+Wkb/i3x4/nrH7yjzZSRaDMtnehULx/vaL8WIsKnjav95rVtBLE8idJHcbdR7B0b7+OWjLK/Nzj+sK7rbVcWAGB2CGIBAGZISilasP9Y+r/DGOL8jJqv8Ur+Yi/leP9sXOm3+kEGQSxPK4LY5j1ytaclO2URwv70W99uy/fL5WrYjL3nygIAzAZBLADAjEgpxX6wsS/s/pL/HdHaixasH8anL9qvy92FZv/XlrSVWi+arxEu9W7dmIl/ryAW75v2iCA2AtkWfN+s1XX9misKADAbBLEAADMgpRTha4SwJ0v9N0TwGgFsG8enliR+AB+2X7tt27uvtaL9eq63NZPNvtyD2PhM814q770U44uNxJ/ed1BL2rGv1XW95ooCALSfIBYAYAaklH4xeFkt9fztBTt9R188WK10TlWn62ParwWw1+VQ7kHsf3jjvzev9lYuT5v3Vi5BvFf+60tLJX8fxWjiGFF82dUEAGg3QSwAQMuVvi/sm7/+sHpz60MXcgpG7dflzqkmiCV/Ebqu9y814ZDx3eUEsQ+y33JZoiUb77f13paHhSYsvpfO/Mdvl/z9ZL9YAIAZIIgFAGixlNL84OWfqgL3hTWKeHq6c0eatlGEQZTxXomxw7GH5Sy3Xx+mxCB2JB6EiLHFK90FLdlCxPSG0XuRyYj3yY9fWir5++pv67r+kSsJANBeglgAgBZLKcW+sIulnXeEST9595faRRMk9CmP0OfLlRzEPsjDEWXxcMTkxfsj9o4t1B/XdX3eVQQAaCdBLABAS6WU/nLw8jelnXc0YKMJa6zqZBiDWhZjUJ9MW4LYEePCy2Nc+OTEAwt/9cqflrhvbIwmPmxEMQBAOwliAQBaKKV0shqOJC5K/Fj9xoX3XcA9dmjfgWrpRKdpEGm/liFCnI2rfaO6n1DbgtgHRRC70jlVna6PlRg8zZwIYS8O3r/nBt9zWrJ7p+B9Y8/Xdf3HriAAQPsIYgEAWiilFCHsyZLOOVqwRqzureFo027VnTtsMQoQ7ddzva0mvNF+fTptDmJHRi1Z7+3y3tsxvlhLdvziPfHzP/luiWGsEcUAAC0kiAUAaJkSRxILYfdOtF+XuwtNSKM1V4Zovsb7oXfrhsV4RrMQxHq/l/9+j6a7tvt4xf0fe8YWNnbfiGIAgBYSxAIAtEhKab4ajiTeX8L5RhPo+796y5jGMbOPZHniPRDhq4bceM1aEPsg+z+XJVqyzWfAlb4G/Bid+da3m/dBQdbqun7NlQMAaA9BLABAi6SULgxeFks4VyHs+Nkzsiz2jNx7sxzEjtgTujz2hB6vAsPYl+q63nTlAADa4SuWAACgHVJKr1ZC2JkTgWuMIV3pLghZChH3/Xr/UhOyaL+y16Jd+ebWh80R7dhRU5Z8ja5TfD5ES369t6Ul+wzOfPBO81rQff+LwWHDZwCAltCIBQBogZRSjCKOkcTzuZ+rEHY8unNHmoabQKUMApXp0Ih9OA9wlKd362bzGeIBjqdXWDP29bquz7hqAADlE8QCALRASunM4OWnJZzryt//TAj7lIwYLU+EJjF+OPZ+ZPIEsV9u9FCHkeZlMNL82RQUxt4bHH9Y1/W2qwYAUDajiQEACpdSmh+8/LCEc339g3f8cPwURqNE45X87dy/2wSvG1f62q9kr3frRnNECBufMcudU81+0+Rp2GYeTkMw5vzJxZjio187WMI9HpNO4gG711w1AICyacQCABQupRR7ia3mfp4RwmoFPr5ovy53F5rxoVpqZYgwZGNwj8credCIfToRUq10TmnJFiQ+e+I7NkJ1vljc0z//k++W8sDBS3Vdb7pqAADlEsQCABQspbQ4eLmQ+3lGY+eNC++7YI9huO9rt+rOHbYYBYj267neVrN3o0ZafgSxPpN8JvEwEcb+r+/+txIeNNis6/olVwwAoFyCWACAgqWUIoRdzPkco6UTowB5NO2z8miflUEQOz6jln6ML7ZHdRm09L/8uzeasQV872rFAgAUTBALAFCoEtqwsX/d93/1llbOQ9iPsTz2YyyPIHZv2Le6LPat/uJ7+a9e+dPcT/NyXdd/6GoBAJRJEAsAUKjc27ARVP2Xv/uZH31/R3fuSDPqU/u1DHEfX0zXqnP9S00QS1kEsXsrWrJLJzrNZ5qWbBl6t242Y4vt2V7O58Su1+q6XnO1AADKI4gFAChQCW3Y7//q/zG2dVcErrHH4kp3QVhRCGFFOwhiJ2f0kEk0ZclfPGQSn3HrvS0PTA1EKzbzhvd2Xdc2agYAKJAgFgCgQLm3Yd/89YfVm1sfzvx1Mr6zLIKJ9hHETp4HT8pj7Prwvj335z/I/Z7VigUAKJAgFgCgMLm3YaNJGPvCziqjOssT4cPG1X7zSrsIYqcr9r9e6Zwyir0Qsz6KPe7Xc3/2g5xPUSsWAKBAglgAgMLk3IaNH3H/01v/YyYbNaN9X7Vfy7Bz/24zdnjjSl/7tcUEsXmIEDY+G5c7p5qwizI+I8/1tpopAbP0nV7AfrEv1XW96Q4FACiHIBYAoCC5t2F/8u4vZ6pVGO3X5e5CM4ZT26sMo+ar9utsEMT63GQ8n5vx4Mqs7Pv+8z/5btWdy7Z4ulnX9UvuSgCAcghiAQAKklL6xeBlNcdzi2Argti20+wqz6w2uxDE5i4mCUQgm3Hoxe98ls7CJIF4WOB//vkPcn5QQCsWAKAgglgAgEKklOYHLzdzPLdZGElsr8OyzPpehwwJYstgb+3ytH1v7XjY6scv/VGup7dW1/Vr7kIAgDIIYgEACpFS+pvBy1/meG5tHkncnTvSBDkaW2WI0HW9f6m5H7VfEcSWJyYOLB3v2G+7ENGSfXPrw6Yp2zaZjyg+XNf1tjsQACB/X7EEAADFWM3xpNq636YAthwRuMbY4QgCtF+hbKPvlGjJxgSCle6ClmzG4tr89Fvfbh56aFsg+8bmRnXuz36Q89+EZ9yBAAD504gFAChASml18PKL3M4rArD/8nc/a9VecTGC+MeLSwLYAvRu3fw0gIWH0Yhth3gwZrifbMdiZC4asm9ceL81D2hl/Blyr65rTygAABRAIxYAoAw/zPGkYgRsW0LY2Pc1fnCNfeHIV/zIHz/wr/e2WvUAAPBovVs3muONCxvNyOL4nI6HZshPNGT/6pU/bR6Uef2Dd4r/nF7vXcp17+L98ZBeXddr7joAgLwJYgEAMpdSOjl4OZnbeY32hWuDaFud+dZ/Nv4yYxG+blztt3YvYuDLxRSGaMDHEUHsSudUM744HqQht+/Vw9X//PMfNH8nxENbJd9z8W+I8csZemVwrLnbAADyJogFAMjfd3I8qbaEsD9+6Y+0YDMVYf+53lZ1MV3TfgU+J/aDPvPBO00IGy3ZpeNdI+UzE9cmvmPj+vzk3b9vQs0SRfCf6f31akppvq7rbXcbAEC+BLEAAPlbze2EYuRg6ftyxg/EP/+T7xpvmaGN3cZbjCIF+CIPtmQP7TtQLXcXmtBMSzYfEWD+r+/+t+on7/6y2M/1N3/9YfXzub/I8dReHRx/6y4DAMiXIBYAIGMppfiBbX9u5xU/SJYswtcIYf1Qn49ot0WQsnG1V2xrCpiuaM6/ceH95oh9PWNscbQxmb7hw09/0ewbW+KDXMN9im/m2Ir9YSWIBQDImiAWACBvr+R2QvFDZMlNxfhxPtO93mZOBK4xdvhc/1ITxAKMy4Mt2aUTneaz3z7g0xffv82+7B+8U9y5v7G5UZ37sx/kdlrzKaWTdV1fdncBAORJEAsAkKmUUjRhV3M7r5LbsELYPETout6/VG2ma9qvwJ6KlmzsaR7H4m5DdmnwXcD0jNa/tDA2vrs2mv1is7t/vjM4BLEAAJkSxAIA5OvV3E6o5DasEHa6InCNscPrva0mGAGYtHj4I443Lmw0+8iudBe0ZKek1DA2JjhkGMTG34s/clcBAORJEAsAkK/sxhKX2oYVwk5PhPcRwJa4JyDQTvFgSLTy44gxuaP9ZO0bPlklhrHRis1wr1jjiQEAMiaIBQDI12JOJzP88bG8NqwQdvJ27t9tgteNK33tVyBr8b0WR4SwMbZ4uXOqOvriQQszISWGsfFQ2s/n/iK30zKeGAAgU4JYAIAMpZRizNz+nM4pmkOliaaTEHZyYuRn7J8XrwAliZZsPEASRwSxK51TWrITEmHsaC/fEkRwHw+nZRbYG08MAJApQSwAQJ6yGks8ajiWJH4g/atX/tSdNIF741xvqxk/HEEGQOkiZBs1NGOqQuwnm9ko2tb53je+We38tpy/NeLhtMwe9IrxxPN1XW+7mwAA8iKIBQDI02JOJ1NaCBsNpjP/8duaTHtoY7c5VuK4aoAn+f6L49C+A9Vyd6EZX3xw8N+M3399aan637/ZaYLwEu6LON/M/s6IVuzfupMAAPIiiAUAyExK6eTgZT6nc4q9Pkvy45eW7PG3B+LH8WgBxehh7VdglsTo3DcuvN8cEcbGON14ZXxGD1F9/1dvFfEdE5MgYk/hjJyuBLEAANkRxAIA5Gcxp5OJ0C1+gC5m8XZ/IGc84sfwi4N74Fz/UhEtJYBJfC/GES3ZpROdZnyxlux4xENU31v4ZhN45269t5VbEPuqOwgAID+CWACA/GS1P+xGQWOJo02T2Z5txerdutm0fbRfAR4uHlJ6c+vD5ujOHdndT9aDQM8qws3N9P9mP/o+rn98V+a0f3BKabGu6013EQBAPgSxAAD5WczlRCKAiyCuFBHC2hf22a53hK/R8impBQ0wbREaxvHGhY1q6Xi3WukuaMk+gzPf+s/Vyt/9LPsHgeI7M6cgdvdvyE13EABAPgSxAAAZiSZDTudzsaAQNtpI9ut7OhG2R/O5pNAdIEcRHMZe2nHEmN2Vzqnq9OC7yUNCTyZC7OXuqaZtnPv350/zOqXT7h4AgLwIYgEA8rKY08nEvqCliPYMj2/n/t3qvav9auNKX/sVYA/EvtpnPninCWHjQaEYuRvhLI/ne9/4ZvbfUaPJIRk9CLbozgEAyIsgFgAgL1/P5UQiqIsfkUsQ+/IZAfl4Rs1X7VeAyYiwLh58iSOC2OFesl0t2cfwvYVvNmF2zi7mFcTaJxYAIDOCWACAvCzmciK9WzeLWbT4oZZHi1D9XG+r2csu9/32ANosHnB648771RsX3v80kM1sj9GsLA3WKMYT59yKzXA8cfwtuenuAQDIgyAWACATKaX5wcv+XM6nlMakNuzDReAaLZ1oYPVu3bAgAJkZtWQPDb7Dlk50fJ89Qu6t2AzHE3/dXQMAkA9BLABAPhZzOplSglht2M+LttV6/1Jz/bRfAfIXbc9ofcYRYV60QHMadTttJbRiY4qIfWIBAHgYQSwAQD6yaTBow5YlAtcYOxzNqlL29QXg4d+/cURL9nR9rFrpLvieq/JvxcYEih+/9Ee5nM7+mLJS1/W2dxQAwPQJYgEA8nEylxMpZX/Y2FtvlsV1GgWwALRHtD9jukEc3bkju/vJdmZ2PSKUfuG557Od9BDXK/Zjzyg0nx8c295JAADTJ4gFAMhHPkHsv+a/p2i0hbpzh2fuJokfeqMttd7bynpMIwBj+k6+daM53riw0TyAFKHs0RcPztQaRAgbo39zfvAoHo5aOp5NELs4ODa9ewAApk8QCwCQgRghN3jZn8O5RNukhPG2p2ds/7wIXzeu9osZGw3A+L+fRy3ZCGJXOqc+bYrOgtPZB7E3cmotf907BgAgD4JYAIA8zOdyIvFDYglenoERjdF+jR+dN670tV8B+FQ8MBV7po6aotGUbfuUiMXMxxNntq3DvHcJAEAeBLEAAHlYzOVEStgfNsYSt3ksYzRfI4AtJRQHYDoilHxv9zsjvhuXuwtNKNvWlmzO44njgam4Hpms/UnvDgCAPAhiAQDy8NVcTuT6b4wlnsq639kZtl+v9rJt+wCQrwgC37jwfnPE1Ij4rlxs2fdlCeOJc1nz2Pairutt7wwAgOkSxAIA5CGb5kIJLcy2jF+MwPViulad618qYl9eAMrwYEt26USnCWYPDv67dN25I1mfXzzMllH4PT84tr0bAACmSxALAJCH+RxOopQwsPSGT6zzev9StZmuab8CsGeiJfvm1ofNMdxLtlP0d2iM/Y0wNteHxprtHb6RzenEQ36b3gUAANMliAUAyMN8DicRP9jmrtS9YSNwjbHD672tItYZgHaJh3/iiDAz9pFd6S4U2ZI9+rWD2QaxO7/N6vt9v7seAGD6BLEAAFMWe3jlci4l7A/b/YMjRV3fnd02Us572gEwO+LBoJjKEEe0S7/3jW8WNfI/zjXOPUeZPWj1dXc7AMD0/TtLAAAwdfO5nEgJo4kPfbWcgsfG1X618nc/E8ICkKVoln7/V29Vb1x4v5hzPpR5i7cZT5wHjVgAgAwIYgEApi+bH8pK2K/06NcOFXFRI4Q988E79oAFIHvRMH198J1Vgty3KNjJpxV70p0NADB9glgAgOnL5oeyXPdce1AJe8SOQlgAKEVMbxDGPruMxhNrxAIAZEAQCwBAo5Tm5gvPPZ/1+UUT5o0LG24oAIoTYexmulbA3wL/Pt+/A357140EAMCnBLEAANP31RxOooT9YUtow5754B+MIwagWK8XMFb/6NdybsTey+ZcUkqL7mgAgOkSxAIATJ89vB5Tzg2YEG3YEsY7A8CjRAh7MfNW7AvPP5/x+v2bmwgAgE8JYgEAaFz/zW2L8IxipCMAlK6E8cTZ/j1VwIQRAAAmRxALAEDDON1n17t10yIAUDxBbGvstwQAANMliAUAmD4/kj2m7tzhrM/v+h2tYgDaIcbt5yrnPWJDRg+32f4CAGDKBLEAANOXxY9kO7+960o8I61iANri9m/vZXtuue8ZbzwxAAAjglgAABq379+zCAAAAAAwJoJYAAAAAAAAgDETxAIAAAAAAACMmSAWAAAAAAAAYMwEsQAAAAAAAABjJogFAAAAAAAAGDNBLAAAAAAAAMCYCWIBAAAAAAAAxkwQCwAAAAAAADBmglgAAAAAAACAMRPEAgAAAAAAAIyZIBYAAAAAAABgzASxAAAAAAAAAGMmiAUAAAAAAAAYM0EsAAAAAAAAwJgJYgEAAAAAAADGTBALAAAAAAAAMGaCWAAAAAAAAIAxE8QCAAAAAAAAjJkgFgAAAAAAAGDMBLEAAAAAAAAAYyaIBQAAAAAAABgzQSwAAAAAAADAmAliAQAAAAAAAMZMEAsAAAAAAAAwZoJYAAAAAAAAgDETxAIAAAAAAACMmSAWAAAAAAAAYMwEsQAAAAAAAABjJogFAAAAAAAAGDNBLAAAAAAAAMCYCWIBAAAAAAAAxkwQCwAAAAAAADBmglgAAAAAAACAMRPEAgAAAAAAAIyZIBYAAAAAAABgzL5iCQAAYDy+t/BNiwBfYuNKv7p9/66F8JlB5g59db9FAACAZySIBQCAMfneN4Qq8GV6t24KYn1mAAAAzASjiQEAAAAAAADGTBALAAAAAAAAMGaCWAAAAAAAAIAxE8QCAAAAAAAAjJkgFgAAAAAAAGDMBLEAAAAAAAAAYyaIBQAAAAAAABgzQSwAAAAAAADAmAliAQAAAAAAAMZMEAsAAAAAAAAwZoJYAAAAAAAAgDETxAIAAAAAAACMmSAWAAAAgGJ89Mm/WQQAAIogiAUAAACgGNd/s2MRAAAogiAWAAAAAAAAYMwEsQAAAAAUY+e3dy0CAABFEMQCAAAAUIzb9+9ZBAAAiiCIBQAAAKAYvVs3LAIAAEUQxAIAAABQhM10zSIAAFAMQSwAAAAARbgoiAUAoCCCWAAAAACKoBELAEBJBLEAAAAAZG/jar/66JOPLQQAAMUQxAIAAACQvTe3PrQIAAAURRALAAAAQNbe/PWH1e37dy0EAABFEcQCAAAAkK2d+3er9d4lCwEAQHEEsQAAAABkKfaE/fG7v7Q3LAAARRLEAgAAAJClv76wUV2/s2MhAAAokiAWAAAAgOy8/sE71XtX+xYCAIBiCWIBAAAAyIoQFgCANviKJQAAAAAgB7EXbISwm+maxQAAoHiCWAAAAACmLvaC/cm7v6xu379rMQAAaAVBLAAAAABTEy3Y9f6l6s2tDy0GAACtIogFAAAAYCo2rvabAFYLFgCANhLEAgAAADBRAlgAAGaBIBYAAACAPbdz/2713tV+tXGlL4AFAGAmCGIBAAAA2BOx/+vFdK3a3D0AAGCWCGIBAAAAGJverZtV719vNMHr9Ts7FgQAgJkliAUAAADgmUTo+uavPxS8AgDAAwSxAAAwJv/hjf9uEYDHFq1BCIe+ur86uO9A0f+G7tyR6vq7v3QxAQDgAYJYAAAAmILv/+oti8DnHH3xYNX9gyPVSnehuGD2heeer14+3qneu9p3IQEAYNe/swQAAAAA0xdjfdf7l6qX3/q/q9c/eKf66JOPizr/peNdFxEAAB4giAUAAADITDRL/9Nb/6OoPVe7c4erQ4WPWAYAgHESxAIAAABkKBqxMcK6pDB2ubvgwgEAwC5BLAAAAECmRmHszv27RZzvYn3MRQMAgF2CWAAAAICMRRh75oN/KOJcD+47IIwFAIBdglgAAACAzPVu3RgcN4s416XjHRcMAAAqQSwAAABAEdb7l4o4z2jEHtp3wAUDAGDmCWIBAAAACrCZrjVjiktw2nhiAAAQxAIAAACUYuNqr4jzXOkuuFgAAMw8QSwAAABAIdZ7W0Wc58F9B6ru3BEXDACAmSaIBQAAACjE7ft3q96tm0Wc68vHOy4YAAAzTRALAAAAUJBSxhMvHe9ULzz3vAsGAMDMEsQCAAAAFGQzXas++uTjIs516XjXBQMAYGYJYgEAAAAKEiHsxXStiHM1nhgAgFkmiAUAAAAozLn+pSLO8+iLB5sDAABmkSAWAAAAoDDX7+w0RwlWOqdcMAAAZpIgFgAAAKBA64W0Yk/Xx6oXnnveBQMAYOYIYgEAAAAKtFnIPrERwi7Wx1wwAABmjiAWAAAAoEAfffJxtXG1X8S5Lh3vumAAAMwcQSwAAABAod4rJIjtzh2uDu074IIBADBTBLEAAAAAherdulHt3L9bxLkudxdcMAAAZoogFgAAAKBg53pbRZyn8cQAAMwaQSwAAABAwTau9oo4zxeee756+XjHBQMAYGYIYgEAAAAK9tEnH1eb6VoR53q6PuaCAQAwMwSxAAAAAIXbuNov4jwX62PVoX0HXDAAAGaCIBYAAACgcNGI3bl/t4hzXTphPDEAALNBEAsAAADQAu8V0oq1TywAALNCEAsAAADQAhtXyghiD+470IwoBgCAthPEAgAAALTA7ft3mxHFJVjSigUAYAYIYgEAAABa4mIhQWw0Yl947nkXDACAVhPEAgAAALRE7BP70ScfF3GuS8e7LhgAAK0miAUAAABokY2rvSLOc6W74GIBANBqglgAAACAFlnvbRVxngf3Hai6c0dcMAAAWksQCwAAANAit+/fra7f2SniXF8+3nHBAABoLUEsAAAAQMus9y8VcZ6n62PVC88974IBANBKglgAgOm7l8NJdOcOuxIA0BKb6Vr10ScfZ3+eEcIu1sdatfaCZQAARgSxAADTd9kSPJ6d3961CADwGCKEvZiuFXGuy51TrVr7oy8ezOVU7nknAABMlyAWAIBi3L7v90QAeFznChlPHMFlRuFlm3jYDwBgygSxAAA0jn7ND6AA0CbX7+w0RwlWWtKKNZYYAIAHCWIBAKYvi5rnC8/9e1cCAFrmvav9Is7zdEv2iT364iE3HQAAnxLEAgBM3z/ncBIlNDiu37ntbgGAJ7BxtVfEecbfIS8f77hg47VtCQAApksQCwBAo4S92T765GMXCgCe8Ltzo5BW7NLxbvHr3Z07nM251HW97R0AADBdglgAgOm7l8uJlNGK3XHHAMATKGU8cYSYh/YdcMEAAGgNQSwAwPRdzuVEStjXTCsWAJ5M79aNauf+3SLOdbm7UPRad//giL8vAQD4lCAWAIBPHf1a/uOJe/96w4UCgCd0rrdVxHku1seKXueMpovcc9cDAEyfIBYAYMrqut7M5VwOfXV/9utlNDEAPLmL6VoR53lw34Giw9ijL2bzUNu2ux4AYPoEsQAAfOro1/IfTSyIBYAnd/v+3WqzkDB26XinyDXuzh3J6XT+xV0PADB9glgAgDxs5nASGbU4Hil+SC5lnzsAyMnG1X4R5xmN2EP7DhS3vof2ZTVZZNsdDwAwfYJYAIA8ZLGPV+xrVsIPn71bN90xAPCEohFbysNMSyfKa8Vm9kDbtjseAGD6BLEAAHn451xOpIRWbCmjFQHAd+jTebnA8cSZbfFw2d0OADB9glgAgDxs53Ii3bnD2S9W79YNdwwAPIX13lYR53lw34Hc9lwt6W+oe3Vd33O3AwBMnyAWACAP27mcSPcP8v/R86NPPtaKBYCnEHutlzLiv6RWbGahsTYsAEAmBLEAABmo63ozl3OJ0cSxV2zuLgpiAeCpbFztFXGeS8c7RfxNEjKbKCKIBQDIhCAWACAf27mcSAmjAN+72m+asQBAe79Dl453izjPzCaK/Iu7HAAgD4JYAIB8ZNNeKGGf2FBKowcAfIc+nZXuQhHnqRELAMDDCGIBAPLxz7mcSAn7xIb13pa7BgCeQrRiS3Bw34Fm24ScLdbHsjqfnLa8AACYdYJYAIB8bOZyIvGD56F9B7JfsNv371YbhfyQDAA5uX5npzlKsNI5lfX5acMCAPAoglgAgHxk9cPZ6czaHY/yniAWAJ7Kev9SEecZf5O88Nzz2Z5fZo1YQSwAQEYEsQAAmajr+l5ln9gn1rt1Y3DcdAMBwBPaTNeqjz75OPvzjBB2MdMHxGKKyMG8pohcdGcDAORDEAsAkJdsgtjFzNsnD3r9g3fcOQDwhCKEvZiuFXGuy5mOJ375eCe3U9p0ZwMA5EMQCwCQl6xaDIuFjCe2VywAPJ1zhYwnznX/+sz+VrpX1/W2uxoAIB+CWACAvGzmdDJLx7vFLNwbFzaKGK8IADm5fmen2rl/10I8hQzHEm+6KgAAeRHEAgBkZLfFsJ3L+cQ+sTm2Tx4mQti/vrDhJgKAJ3Sut5X9Ob756w+bCRg5yXAssf1hAQAyI4gFAMjPZk4ns3SiU8zCvXe1X/Vu3XQHAcAT2Ljay/r8orG73stvhHKGk0POu5sBAPIiiAUAyM+7OZ1Mhm2PL/STd//eiGIAeALxvZnzXutnPviH7L7bY2/YF557PqdT2rY/LABAfgSxAAD52czpZGLvs+7ckWIWL36off2Dd9xFAPAkf3yka1meV4wk7t26kd15LXdO+fsRAIAvJYgFAMhMXdf3qsx+TFvuLBS1hvFjcvxwCwA8/nfnTmZ7sF6/s1O9uZXf9/mh5iG1w7md1rvuYgCA/AhiAQDylNWPaTF+L350LEn8cJtruwcAcvReRuOJY8LFT979ZZbrtNzN8gG1TXcwAEB+BLEAAHk6n9sJZfqj4xeKEcXRpgEAvtzGlXyC2Ahhb2fW0A2xL+zS8W52fzfuTlQBACAzglgAgAzVdb09eNnO6ZziR8f48bEk0ab5/q/eEsYCwGOI4DOHaRJvXHg/y31hw3L3VI5/DxlLDACQKUEsAEC+smrFxo+O8eNjaUZhbLwCAF9sY8rjieP//nr/Urbr8/Lxjr8ZAQB4bIJYAIB8vZ3bCS13ThXXig0Rwv7/7N1PjBzXnSf414QBew/Wlg4jgMIQTgkBLSAJMF21F5MHFaHDNmB6RGEbAsTpWRWBaS90aEi0d+ewF5HXnW6YhT4I3T2AkrO7JCAM4FKbDcylodRBmlPR1YClAYSAlAYXIqA9qNo+jH3qjV9GlFiSSNa/zKiIF58PEMgSTRczfxGR+TK+8XvvX//Hv9IZCwB7iI7Y47p5KULYK//5P3W2NhHCnnzk0a49LdMSAwB0mCAWAKCjiqLYSh2bnrivXbEhpls0TTEA7O3Wh5ut/5vx+dzlEDb85MzzXXxapiUGAOgwQSwAQLfpip2jnWmKN+986sgCgAe4uflBq/9ehLDx+dxlHe2GDaYlBgDoMEEsAEC3jbv2hPrcFRt2wtgurz8HAMcpZpFo66al+He6vpZ7jH1+eu58F5+aaYkBADpOEAsA0GFFUUyrh62uPa8+d8Xu+Mt3/z5d/c//qdMXfgHguLQxPXGsCdv1EHY27lnp7LjnuiMVAKDbBLEAAN233rUnFBcjf9bNzpAD+eWHt9O//o9/Zd1YALjPZ+QiA9IIYbu+JuzOmCduQOug7aIoTEsMANBxglgAgO6Li2ydm3bu/DPL6anHTva+uDH94sX/66/S3/yXf9AdCwC7vFd+tJDfGzNS9CGEDXHjWUe7YceOUACA7hPEAgB0XLP2Vyc7Hn62ej6bOv/NB/8w645ta008AOi6G3NeTz1ueIqbn6Lbtg9WTj05u/Gso9YdoQAA3SeIBQDoh05ebFs59UT6cXcvUB5YdMfGWnX/69v/Id2tfgaAIYup++c1fX/c6PSv/vb/7NVyAD9b/VFXn9qkKIqpIxQAoPsEsQAAPVAUxVb1MOnic/tpd6fsO7TNO5+kH//tv59NnSiQBWDIbs6hK/Yv3/372Y1OfVoCINaF7fASDNcdmQAA/SCIBQDoj05edIsQNtZPy1FMnRiB7P/2zv9tymIABmlyhHVio/s1piK+Oecpjhft8UceTT8583xXn960KIqxIxMAoB8EsQAAPdFcdJt28bnF+mmxjlqu4iJ0dPL8q7/997OLybpkARiK6GK9dcA1XeP/E12wEcL2aSriHW/88Z90ebYPa8MCAPSIIBYAoF86OxXdlT/+n7ObovjrYg3ZuLAcXbI7HT5CWQBy98sDBLER2sZasH3rgt0RUxKvnHqiq09vu9rGjkgAgP74lhIAAPTKtWp7rdqWuvbETj7y6KyDJKbxHYLo8PnLz/9+FszGGnI/fmbZ0QlAlmLt9LjxKD7rH/x3Pp2trf5Zj29Q6viUxGFcFMW2IxIAoD90xAIA9Ehz8a2zU9KtFk8PMpCchbLv/r0DFIBs3dj84L5/Xk/f/x9mU/h/1vNZIv7ihT/t+uwepiUGAOgZQSwAQP9c6/KT++m587OOEgAgH7c+3Pzy5511Y2Pt9JgJIzpm++5n5340m+Giw6IbdupIBADoF1MTAwD0THTFlmU5rn5c6+Lzi06S6CiJzpi4UAsA9F98pse6rzELRHTB5vQZHzN6xNqwHXfVUQgA0D86YgEA+qnTF+Oio+Rn587bSwCQkZiG/5cf3s4qhH28WeO+43TDAgD0lCAWAKCHmotxnQ5jzz+zPMj1YgGAftiZxaPj68KmpBsWAKC3BLEAAP0Va8Vud/kJRodJx9dbAwAGKmbv6ME4RTcsAECPCWIBAHoq1oqtHta7/jz/+qU/E8YCAJ3ys3M/ms3e0XEx1rtsbwEA9JcgFgCg3zrfFRvT/V35n/6kD9P+AQADEEsnvLx8tg9Pdb258Q4AgJ4SxAIA9Fhzca7znRLRERudscJYAOA4rRZPz5ZO6IFpqm+4AwCgxwSxAAA9VxTFuHrY6vrzjDC2Jxc+AYAM9WwsclU3LABA/wliAQDy0Iv1w6IL5YowFgBoWc9m55g0N9oBANBzglgAgAwURTGpHjb68FzPP7MsjAUAWtPDJRKu2msAAHkQxAIA5CO6YnsxhZ0wFgBoQw9D2GvNDXYAAGRAEAsAkImiKKapRx0UwlgAYJF6GMJuJ92wAABZEcQCAGSkKIpr1cNWX56vMBYAWIQehrDhUjWW27b3AADyIYgFAMjPpT492Qhjb/ybP+/bhVIAoKNWi6f7GMJuFEWxYe8BAORFEAsAkJmiKKIjtlfT2vW0awUA6JgfP7Oc/uKFP+3bmCK6YC/bewAA+RHEAgBkqCiKK6lHUxSHCGP/7s/+3ewRAOCgfnbuR+mNfi55cLkau03tQQCA/AhiAQDydalvTzi6V6IzNrpZAAD2O36ILtiXl8/28enHlMRjexEAIE+CWACATDVTFPdumru4mBrdLD8587ydCAA81M7yBrEubA/FlMSX7EUAgHwJYgEAMlYUxbXqYdLH5/6THz5v3VgA4IEifI2xQo+XNXixGqtt25MAAPkSxAIA5O/FVHdc9M7KqSdm68aunHrSXgQAvhTrwcZ0xD2+YetaURQTexIAIG+CWACAzDWdFi/29fnX68b+W1MVAwCz7tcb/+bP+7oe7I6tanx22d4EAMifIBYAYACajourfX4NMVVxXHjt8fSDAMARRPja86mIQ69vkAMA4GAEsQAAA1EUxZXU0/Vid+x0weiOBYDhePyRR2cBbExHnMHa8ZeqMdnUXgUAGAZBLADAsEQHxrTvL0J3LAAMQ9x89f/8L38+Wzc+A1eLotiwVwEAhkMQCwAwILvWi93u+2vZ6Y7NpDsGANhl5dST9SwYP3w+l8/5jWZ2EgAABkQQCwAwMEVRbFUPl3N5PbFe3N/92b9LP35m2c4FgJ6LaYj/4oU/TX/90r/NaeaLGHtdsncBAIZHEAsAMEBFUYyrh6u5vJ7olHnjj/8k/fLP/vdZBw0A0L/P8piG+O+qz/LV4umcXtpsNpJmVhIAAAbmW0oAADBMMT1eWZbfq35cy+U1nXzk0VkHzeadT9Pf/Jd/qB4/saMBoMMigH155exshosMlxqI8PVcNeaa2tMAAMMkiAUAGLCiKC6VZTmqflzN6XWtnHoi/fUpgSwAdFXmAeyOy82SEAAADJQgFgCAF6vt3Wo7ndsL2x3I3rz9fpqUH9nbAHCMYg3Y888u5x7AhkvNUhAAAAyYIBYAYOBizbKyLM+lTMPYEIFsbHd/+0W6sflBuvXhZvrdH35v5wNAS5567GS6uHw2nX9meQgv96oQFgCAIIgFAGAnjI3O2F9V21KurzPWkP3ZuR+ln5x5Pr1XfpRu3H4/ffz5XQcAACxAdLyuFk/Pul8jiB2IcTWuumLvAwAQBLEAAMwURTHd1Rm7lPNrjQvD0ZETmy5ZAJivne7X54qnc59++OsihL3kCAAAYIcgFgCALxVFsTWUMHbHTpdsbLc+vJ1+WW2bdz5xMADAAdQ3Oa2kiytnZp+tAySEBQDgGwSxAAB8xRDD2B27u2QjkL3169vps+pnAOD+Vk49mX7cfH4OmBAWAID7EsQCAPANQw5jQ3Ty/OSHz8+2SfnRrFM2HgGAlB6vPifPP7s8C2AH2v26mxAWAIAHEsQCAHBfQw9jd6wWT8+26JKNMPbm5ge6ZAEY7GdidL7GIzNCWAAAHkoQCwDAA+0KY9+qttNDrkV0/Ly8fHa2bd75NN36cHM2fTEA5Cy6X19eOTNb/zXWgeVLQlgAAPYkiAUA4KG+1hl7WkViPbwnZttPz51P75UfpRu3308ff35XYQDIRr3u68rs845vuFSNj8bKAADAXgSxAADsqSiK7SaM/UW1rapILTqDzs8uVC/Pgtibt9+fTV/8uz/8XnEA6J2nHjuZLi6fTc8VT+t+fTAhLAAA+yaIBQBgXyKMrR7OlWUZ0xSvqchXxcXrN/74T9JP//D7WZdsTFu8eecThQGg0yJwjTVfY+r9+CzjgWIc9GI1HpooBQAA+yWIBQDgQGI9tLIsf1P9+IZqfNPuLtm7v/0i3dj8YLaerC5ZALpk5dSTs+mHdb/uyzTVIeyWUgAAcBCCWAAADqwoiitlWU6rH39ebUsqcn8nH3k0/ezcj2bbrQ9vz6Ytjg0AjkN9s9BKurhyZvYZxb5E+HqumRkEAAAORBALAMChxPpoZVnGxclYN3akIg+3u0s2pi2+9evb6bPqZwBYtJh6OD6D4pEDGcdMIMoAAMBhCWIBADi0mKKvLMsfpDqMXVWRvUUH0k9++Pxsi+7YnfVkAWCeHq8+b84/uzybflj366FcipvOlAEAgKMQxAIAcCTNVH3nyrK8kqwbeyDRmRTbT8+dn60je3PzA12yABzJzrqvul8PbZqsBwsAwJwIYgEAmItm3dhJqrtjrRt7ALFm38vLZ2fb5p1PZ6FsdMv+7g+/VxwA9hTdry+vnJmt/xqfKRzaRqo7Ya0HCwDAXAhiAQCYm6IoJmVZPpFMVXxoK6eemG0//cPvZ9MW37j9fvr487sKA8BXROBar/26Mvvc4EgieL1ajWOuKQUAAPMkiAUAYK5MVTwfcYH9/DPLsy2C2Ju339clC0B66rGT6eLy2dn0w7pf5yKmIL5kKmIAABbhj5QAAIBFKcvydPXwVrWdVo35uPXh7fTLatu884liwB5+cub59JMfPt/Z5/c//uX/YSexL/XNOSuz9V8jiGVurhVFcVkZAABYFB2xAAAsTNNd8gPdsfOz0yV797dfpBubH8ymL/6s+hmA/KycenIWvsb7PnM1TXUX7EQpAABYJB2xAAC0Qnfs4sSUxdEpG4/APTpi6aPHH3l0Nu3wxZUz6WT1M3N3NdWdsNtKAQDAoumIBQCgFV/rjn2t2pZUZT5Wi6dnW3TJxrTFt359W5csQA/fy6PzNR5ZCGvBAgDQOh2xAAC0rizLUfXw82q7oBqLsXnn03Trw81ZMAtDpSOWrovu1/PPLs+mH9b9ujDR+Xq1KIprSgEAQNt0xAIA0LqiKKbVw4tlWa6merrikarM18qpJ2bbT8+dnwWyNzc/0CUL0BH1uq8rs/dpFmpcbZdNQwwAwHERxAIAcGyKophUD0+UZfl69fhGMl3x3H33299JLy+fnW0ff3433bz9/mwt2d/94feKA9Cipx47+WUAG+/NLFSMLy6bhhgAgONmamIAADqhLMsIYXcCWRYoQtj3yo/Sjdvvz8JZyJWpiTluEbjGmq9xM0wEsSzcNNXrwE6UAgCALtARCwBAJzTTBl4py3Kc6jB2TVUWI4KB87OurOV097dfpBubH8ymL9YlCzAfEbpeXD6bniue1v3ajmmq14EdKwUAAF2iIxYAgE4qy3KUBLKtuvXh7fTLatu884likAUdsbSpvsllJV1cOZNOPvKogrRjmgSwAAB0mI5YAAA6qSiKafVwqSzLq0kg24rdXbIRyN769e30WfUzAA+2curJZu3XZcVoT4wRBLAAAHSejlgAAHqh6ZB9LdWB7JKKtGNSfjTrlI1H6BsdsSzK4488ms4/uzwLYHW/tmqr2tYFsAAA9IWOWAAAeqHpkL3cdMiupTqUHanMYq0WT8+26JKNMPbm5ge6ZIFBvydG52s80qqNVAewE6UAAKBPdMQCANBbZVleqB5eqbYLqtGezTufplsfbs6mL4Yu0xHLPET368srZ2brv8Y6sLRmu9rGqQ5gp8oBAEAf6YgFAKC3iqKIDpmNXdMWRyA7UpnFWjn1xGz76bnz6b3yo3Tj9vvp48/vKgyQlXrd15XZ+x2tmlTbddMPAwCQA0EsAAC9tzNtcaqnLtYl25LoDDs/CyqWZ0Hszdvvz6Yv/t0ffq848BBxjrxn3eVOeuqxk+ni8tn0XPG07td2xef49Wob634FACAnpiYGACBLTZdshLHWkm3RTsAU0xZv3vlEQThWXZua2LTe3RSBa6z5+vLy2VkQS6tiZovrzQwXAACQHUEsAADZK8tyNdVdsmuq0Z67v/0i3dj8YBY86ZLlOHQhiI3zIDrFb1bnwmfVz3THyqknZ9MP635t3bTa1qttQ/crAAC5E8QCADAYZVkupTqMjVD2tIq059aHt2dh1MR0rLToOIPYONZ3jnu6o55SfSVdXDmTTj7yqIK0a5zq7teJUgAAMBSCWAAABqksywhiY9rimL54SUXaEd2BMS3rrV/f1h3IwrUdxO50gcf03I7vbomph2M963ikVVvp3tqv28oBAMDQCGIBABi0pkt2Zy1ZXbItik7BnfVkYRHaCmKj89W6yN3z+COPpvPPLs+mH9b92qoIXGPN1/WiKLaUAwCAIRPEAgBAoyzLUaoD2bWkS7Y1sX5srCNrDU3mbZFB7Mef3627u62B3Dk7677qfm3dJNXdrxu6XwEAoCaIBQCA+yjLcq16eCHV3bK0ZPPOp7NgK7plhVsc1byD2Dgmo4v7xu33Z0Es3RHdry+vnJmt/xrrwNKaCFzHqe5+nSoHAAB8lSAWAAAeoumSXau2V6ptpCLtEHgxD/MKYt0g0E0RuNZrv66klVNPKEi7Yurhd4qiGCsFAAA8mCAWAAD2qSzL6I6NQFaXbIsiiL15+30hGAd2lCDWlNnd9dRjJ9PF5bOz6Yd1v7Zqmuqph8e6XwEAYH8EsQAAcEBlWcb6sWupXk92pCLtufXh7dm6nJt3PlEM9nSYIDYC/zjO4pHuiMA1Ol9j/dcIYmlVdL9eL4piQykAAOBgBLEAAHAEZVmuprpLdk012nP3t1+kG5sfzDoWdcnyIPsNYuN4ioD/1q9v637tmJVTT87C1/PVRqum1bae6u7XbeUAAIDDEcQCAMAcNF2yMWVxdMmeVpH26GDkQfYKYnVYd9Pjjzw6m3b44sqZdLL6mdZE4LrT/TpRDgAAODpBLAAAzFlZlhHERiAbweySirRDVyNfd78gVjd1d60WT886X+ORVm2luvt1Q/crAADMlyAWAAAWqCzLtVRPXbyqGu3ZvPPpLGiLYJbh2gliI3B9r/wo3bj9fvr487sK0yHR/Xr+2eXZ9MO6X1u10/26XhTFlnIAAMBiCGIBAKAFZVmOUt0lu5Z0ybYmArgIZG9ufqBLdoB+3KwrGtNW637t3r45/8xKWjn1hGK0a5LqqYfHSgEAAIsniAUAgJaVZRlTFkeX7AXVaE90Qt68/b5QDo7JU4+d/DKA/e63v6Mg7Ynu13Gqu1+nygEAAO0RxAIAwDFpumTXUh3KjlSkHaaphfZE4Bprvr68fHYWxNKqmHo4ul83lAIAAI6HIBYAADqg6ZJ9IdXBLC2JIDbWkY3pi3XJwvxE6Hpx+Wx6rnha92u7ptV2vdrGul8BAOD4CWIBAKBDyrKM9WPXUr2e7EhF2nPrw9uzUHbzzieKAYcQgWtMO3xx5Uw6+cijCtKucaq7XydKAQAA3SGIBQCAjirL8nSqA9noll1SkXbc/e0XdZfsr2+nz6qfgYdbOfVks/brsmK0a1pt66nuft1WDgAA6B5BLAAAdFzTJRthbISyp1WkPZPyo1mnbDwC9zz+yKPp/LPLswBW92urInCNNV/Xi6LYUg4AAOg2QSwAAPRI0yX7SqqnL9Yl25Loko0w9ubmB7pkGbTV4ulZ52s80qoIXaP7dUP3KwAA9IcgFgAAeqosy7VUh7KrqtGezTufplsfbs6mL4YhiO7Xl1fOzMJX3a+tisB1nOq1X3W/AgBADwliAQCg58qyHKV7a8mOVKQdv/vD778MZD/+/K6CkJ163deVtHLqCcVo1yTV4etYKQAAoN8EsQAAkJGyLCOMjS7ZC6rRnghib95+fzZ9cQS00FdPPXYyXVw+m54rnk7f/fZ3FKQ902q7Xm3joiimygEAAHkQxAIAQIaaLtkIY6NTdqQi7YgQ9r3yo1mX7OadTxSEXojANaYdfnn57CyIpVUbqe5+3VAKAADIjyAWAAAyV5blaqq7ZNdUoz13f/tFurH5wWz6Yl2ydNHKqSdn0w/rfm3dtNrWq21D9ysAAORNEAsAAANRluVSqsPYCGVPq0h7bn14ezZtcWxwnCJwjXVfL66cSScfeVRB2jVOdffrRCkAAGAYBLEAADBAZVlGEBvTFsf0xUsq0o7oko1pi2/9+nb6rPoZ2hJTD8d2/pllxWjXVrq39uu2cgAAwLAIYgEAYMCaLtmdtWR1ybYoumN3OmVhER5/5NF0/tnl2fTDul9bFYFrrPm6XhTFlnIAAMBwCWIBAICZsixHqQ5k15Iu2dbE+rGxjuzNzQ90yTIXO+u+RgcsrZqkuvt1Q/crAAAQBLEAAMA3lGW5Vj28kOpuWVqyeefTWSgbXbIR0MJ+RffryytnZuu/xjqwtCYC13Gqu1+nygEAAOwmiAUAAB6o6ZJdq7ZXqm2kIu2IEPa98qN04/b76ePP7yoI9xWBa73u60paOfWEgrQrph5+pyiKsVIAAAAPIogFAAD2pSzL6I6NQFaXbIsiiL15+31dsnzpqcdOpovLZ2fTD+t+bdU01VMPj3W/AgAA+yGIBQAADqQsy1g/di3V68mOVKQ9tz68nX5ZbZt3PlGMgdnpfn15+ewsiKVV0f16vSiKDaUAAAAOQhALAAAcWlmWq6nukl1Tjfbc/e0X6cbmB7P1ZHXJ5m3l1JPpx88sp/PVRqum1bae6u7XbeUAAAAOQxALAAAcWdMlG1MWR5fsaRVpT0xZHJ2y8UgeHn/k0dm0wxdXzqST1c+0JgLXne7XiXIAAABHJYgFAADmqizLCGIjkI1gdklF2hFdsjFt8a1f306fVT/TPzH1cHS+xiOt2kp19+uG7lcAAGCeBLEAAMDClGW5luqpi1dVoz2bdz6dTVscwSzdFt2v559dnk0/rPu1VTvdr+tFUWwpBwAAsAiCWAAAYOHKshylukt2LemSbU2sHxuB7M3ND3TJdky97utKWjn1hGK0a5LqqYfHSgEAACyaIBYAAGhVWZYxZXF0yV5QjfZ8/PnddPP2+7O1ZCOgpX3R/fryyplZAPvdb39HQdoT3a/jVHe/TpUDAABoiyAWAAA4Fk2X7FqqQ9mRirQjQtj3yo/Sjdvvz8JZFisC11jz9eXls+mpx04qSLti6uHoft1QCgAA4DgIYgEAgGPXdMm+kOpglpZEEBvryMb0xbpk5ytC14vLZ9NzxdO6X9s1rbbr1TbW/QoAABw3QSwAANAZZVnG+rFrqV5PdqQi7bn14e1ZKLt55xPFOKQIXGPa4YsrZ9LJRx5VkHaNU939OlEKAACgKwSxAABAJ5VluZrurSW7pCLtuPvbL+ou2V/fTp9VP7O3lVNPph8/s5zOVxutmlbbeqq7X7eVAwAA6BpBLAAA0GlNl2yEsdEle1pF2jMpP5p1ysYjX/X4I4+m888uzwJY3a+tisA11nxdL4piSzkAAIAuE8QCAAC9UZZlBLHRJbuWdMm2JrpkI4yNTtlYV3bIIniNdV9Xq41WRega3a8bul8BAIC+EMQCAAC9VJblWqpD2VXVaE8EsRHIvld+NJipi1eb4DUC2FgHltZE4DpO9dqvul8BAIDeEcQCAAC9VpblKNXTFsf0xSMVac9Op+yk/K9p884n2byuCFt3gtdY/1X42rpJqsPXsVIAAAB9JogFAACyUZZlhLHRJXtBNdr1uz/8fhbGbt75NG3+v5/0agrjCFojcF059URa+ZdPpqceO2mHtm9abderbVwUxVQ5AACAHAhiAQCA7DRdsmupDmVHKtK+CGYjjN0JZWPrylTGEbo+9S9Opv/hsZOzR8HrsdpIdffrhlIAAAC5EcQCAABZK8tyNdWB7JpqHL/omI0pjSOUjXC2Dmw/mz3OU4Sr3/32fzcLWr/7ne/MOl0f/++X0slHHrUTjt+02tarbUP3KwAAkDNBLAAAMAhlWS6le12yp1Wke3a6aO/9939LH/9/D57iOKYUfupfPP7V/9bd2mXjVHe/TpQCAAAYAkEsAAAwOGVZRhD7WqrXkl1SEViYrXRv7ddt5QAAAIZEEAsAAAxW0yUbYWyEsrpkYT4icI01X9eLothSDgAAYKgEsQAAAGkWyo5SHciuJV2ycBiTVHe/buh+BQAAEMQCAAB8Q1mWa6leS3ZVNeChInAdp7r7daocAAAA9whiAQAAHqDpkl1LdSg7UhH4Ukw9/E5RFGOlAAAAuD9BLAAAwD6UZRlryUYge0E1GKhpqqceHut+BQAA2JsgFgAA4ADKsoz1Y9dSvZ7sSEUYgOh+vV4UxYZSAAAA7J8gFgAA4JDKslxNdZfsmmqQmWm1rae6+3VbOQAAAA5OEAsAAHBETZdsTFkcXbKnVYSeisB1p/t1ohwAAABHI4gFAACYo7IsI4iNQDaC2SUVoQe2Ut39uqH7FQAAYH4EsQAAAAuwq0s2pi5eVRE6Zqf7db0oii3lAAAAmD9BLAAAwIKVZTlKdZfsWtIly/GapHrq4bFSAAAALJYgFgAAoEVlWe50yV5QDVoS3a/jVHe/TpUDAACgHYJYAACAY9B0ya6lOpQdqQgLEFMPR/frhlIAAAC0TxALAABwzJou2RdSHczCUUyr7Xq1jXW/AgAAHC9BLAAAQEeUZRnrx66lej3ZkYpwAONqe0f3KwAAQHcIYgEAADqoLMvVdG8t2SUV4T6m1bae6u7XbeUAAADoFkEsAABAhzVdshHGRpfsaRUZvAhco+t1vSiKLeUAAADoLkEsAABAT5RlGUFsdMmuJV2yQxOha3S/buh+BQAA6AdBLAAAQA+VZbmW6lB2VTWyFYHruNqu634FAADoH0EsAABAj5VlOUr1tMUxffFIRbIwSXX4OlYKAACA/hLEAgAAZKIsywhjo0v2gmr0zjTdW/t1qhwAAAD9J4gFAADITNMlu5bqUHakIp0W4Wt0v24oBQAAQF4EsQAAABkry3I11YHsmmp0xrTa1qttQ/crAABAvgSxAAAAA1CW5VK61yV7WkWOxTjV3a8TpQAAAMifIBYAAGBgyrKMIPa1VK8lu6QiC7WV7nW/bisHAADAcAhiAQAABqwsywhjX0hC2XmaVtv1ahubehgAAGC4BLEAAADMCGWPJDpf30l15+uWcgAAACCIBQAA4BuaUPa5VIeyIxW5r41qey/V4etUOQAAANhNEAsAAMBDlWU5qh5WUx3MxuNooKWITtdJtb1TFMXEkQEAAMDDCGIBAAA4kK8Fs6ebLTfbqQ5eo+N1Ej8XRbFt7wMAALBfglgAAACOrCzL1VQHst9Pdcfsao+e/rTZInSN8HXLVMMAAAAclSAWAACAhWg6Z2OLgHYp1R20YfUYns501/abVAeu26YYBgAAYFEEsQAAAByLXUFtah5HX/sr30t7r0f73n3+bLLzg6AVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPL2R0uvvrRUPb6uFHTAePvNt6fH/SSqc2I1HqrttF0yOFvVtl0dh5MuPrnq2LxiF3FA02bbqo7r7S4/Ucc3i1Ad91c6cnwbWzgWr8zpOFpVTY7BpKvj4zm9R8d78wW7GWP2Pc+VUfWwNsTP4gy/q8R1j2tOvYfu8zjWR5m9rENdd+37uU93P/uq43Hs/KUrn4vpXi6wtYh/4FsxyKsOzu95Q6ULX/CbLx9tD66WmuP/heTiFvUxsXM8vtMMVLvyZfgNe4cjHNdbzXG93oWbXhzftOTKMZ1vxhYs4lhc9V7JMX9Xy1JcbKnet19LrolgzL6XUc8/h47yWZzdddM41nK+yeaItYlj/a3cPsePcDNC3899uju2HC/od7/iezhH+AzYbo7P69X75sa8fu+J5ovHpQUe+NDVk2qpuavx02r7uTdovma1OS6+qI6Tt5qL6sd5vOqi4qjiGIoZMD5tjumRksBCxhazzw5jC4D+cE0EY3b2cDXV3TI5EawNqzZX7VaAfYkMIGbL+UU1Dvu06bA+shO+eDDIs+nVl+Jk+rQZXC2pCHtYa74Irx3nYWs3sIBj+opSwNzHFpb8AOgh10QwZuch7w/T6mE9s5e12ix7wFfH9KOU3wwJG7qfAQ4lPhPixrhfHbVJ6oQvHgxwUBXTi/wiCbY44KHTvPG+pRRk5I3qmH73uDu+wdgCgC5orolsqATG7NxHrKmqK3YA51uGr+my3QpwJBHCvnuUJq0TD/jiMVZbctRcKF1TCY5gTRhLZlabwYQLO2BsAUBKcU1kSxkwZme37TffjhA2t+ldV01//ZVx/SjDcf21Dq43DdDLj4lUN2kd6nPixAMGF8JYchxQuVDKvAhjyc3OnV0u7ICxBcCgNWHLuSSMxZidb74/RFfsNLOXpSs231rkePMAwHE7VBh74iGDC2Es2ahOjp8nF0qZr7XmuIJcxIWdXygDGFsADJ0wFmN2HiK3YGtNV2y23bBXm88zAObrrYOuGXtijy8fwlhyGEytVg+vqwQL8HpzfEEuYmqqK8oAe44tLhhbAORNGEvHx+zGIcf33jCuHiaZvSxdsfnVYNp0cAOwGL84yCwlJ/YxwBDG0lvNyWAKWRbJ8UV2X0DdEQ17ji3MiAAwAMJYjNl5AF2xeY3v47WvZfayLjtN6bj3lICei8+Ofd/Ec2I/f0kYS4+93pwUsLA3XR2EZMgd0eRgUdNwGVsADOnDRBhLNy0Zsx/r+8Ik6Yr12rtrUh2jG85UgIV7fb83Mp3Y728UxtJTrykBLXhFCciMdYLIwdwvmDfdsMYWAAMjjKXDY/YlZTg2lzM8ngb3HTDXtWGdngCt2dc1ohMH+Y3CWHo2mIqBlC8ltGHUrBcIOXFMw/3PC2MLgAESxtJRa0pwbO8J8V4wzuxlDfGGw9y6YcdNxzYAHRqLnTjobxXG0iMvKAGONzg0nd7gvR6AXYSxdNBzSnCsclwrdjA3HWbYDbuddMMCtP5xUn2erO71l04c5jcLY+mJVSXA8QaHdtpUZ+C9HoCvEsbSMWaxOd73g2nKK/iK73+vD2gX5tYNu94ckwC0a3Wvv3DisL9ZGEunR471XW0CBNo0UgIydFoJwNgCgK8SxtLBMQrH51qqOxFz8doQbsjNtBv22qLK5TQHeKg9Zyg5cZTfLoylw3wR4TgG8quqgPdScD4AkD9hLMYo7HovWM/oJQ2lKza3btjLzbG4CG7QBjiiE0f9BcJYOjxwBOBoRq28YbuJAecDAD0kjAWa94Ir1cM0o5eUdVdsht2w0+oYHDsTAY7N6l5/4cQ8/hVhLB3kbi0AYJ5GSgDA1wljgYa1Yvsjt27YS04/gG47Ma9fJIwFAABYmO8rAXSTMBZoOhKnGb2kV3LcTxl2w06qY2/iDATothPz/GVNGAsAAEDzNWlOv8fSG9DlE70OYy+rBAxaTtdFR0uvvrSW4T7SDQtA6+YaxDZ3FQEAAFDTIQcAA9B0Jk4yeklZhZYZdsOOq2Nu6swD6L4Tc/59IyUFAAAAAAYop7Vic+uKzSlYNgsDQI+cUAIAAAAAgKNpumLHGb2kLMLLDLth15sp8QHoAUEsAAAAAMB86Irtnpy6Yafbb759xWkG0J335b3+wrfUCADgSK4qQT8HwgDsi44bIIyUYJ9vmm++PV169aVr1Y+vZ/KSIsQc9/XJZ9gN6/vnwb4TXleGTpooAZm91zzUEIPYLV8kfcEHgLl9eLkbGYD8v0OzPyMlwPFNI8KytWpbymHfL7360moz7XIf5dQNO6n2w9jptW+6h4dpVQnomqF2xL5oHn0AAABgjkZKAIS47rj06kvrKZ8QMF7HpG9PWjcsAF0wxCD2dLW9W30QnxPGcozirnLH4DcHyKtxfqpEL/2gOp51SziegW6KO+fPKUO/5b4Pq8/Nf+7x07+q24IeGFfH6SVlMGanVTE98Sspj5s0VnvaFZtTN+xGj7uSgXo20HOun2b3XXBfTgx03+6EsUsOcxyDMBdxPJ9WhiwHiQAA9N9aNV5/SxmgxS9T9c33OXUw9irUzLAb9rKzCnotcgDXTwfqxIBfuyAMxyAYTPBw7tIDAMiHMBZa1qznOc3k5aw2XeR9kVM3bMy+MXVGQe+5fjpQJwb++gVhOAbp0we1wQQAAHAUwtivGikBLcipk7EX4WZm3bDRWX3NaQTZcP10gE4ogSAMxyC9OU4MJvplpAQAAHRQhLFrymDMTju233x7o3qYZPJyVnvyfT+3bljLBkFeXD8dGEFsTRCGYxAMJuZt5FCArHxPCQDIyFvCWGhVTmvFvtblJ5dZN+x0+823dcNCnlw/HRBB7D2nU386zsj3GBTG9lg1OJ6ogsEEkK2REgCQGWEsg/m6fuxPoL5esJFJPdeasLOrcuqGvez0hay5fjoQgtivmioBxyzedK3Xg8EEAADQBmEsQ7DVkedhrdgFy6wbdtJMaw3kzfXTARDE7lJ9uE1VgY68+UJWgwllAACAzhLGQgua647jTF5OV7tidcMCfSSMzZwgFoA2BhMAfTdVAgAy9ooS9JMlcnonwrXtTF5Lp0LPzLphx9W5veV0gUGJ66cXlCFP31ICAADY0296/NxPL736UsxOsNW8jnjc2n7z7W27FQCgPTH+qsZl6ymPzs3oir3aoRkGc+mGjTH6VWcLQD4EsQAAkLe4s3a12e794asvxUWerSSgBQBo07Vqey3lMXtUhJ+Xjn2wm1c37Lrl8wDyIoglV99TAgBgjqYZviYBLQBAy5qu2Oh4/HkGL+dC9Voud2CcmFM37DVnCUBeBLHkaqQEAMAcTQf0WgW0AAALVI2frlVjq+iKHWUwbny92q4c2xPIqxv2srE1QH4EsQAAsIftN9+eLL360tDLIKAFAJif6Ip9K4PX8Vo1Hrx2jGO/XLphY/w8dloA5EcQCwBwBEuvvvTPqnB8tt98+49a/OciYDyt6t88DdL+A9qpNa8AAGbj2HE1Xnrl62Oono4Fj6UrNrduWGfF3K36vn6sJtX73DllAEEsAADs1/UkiD2IBwW0sy/lqZ7u+TfNz9vVl/QtJQMABuZq6n8QG46rKzaXbtgIrCZOB4A8CWIBAGB/Nqrt58owF6u7fp5dQGsC2lnXbLX9Y/M4dVEKAMhVs/zFJOmKPfg/mFc37KUOP7fnnKnQGjcnZ0oQCwAct5ES0AcxpW4mF8q67HSzXdj5gyag3T3N8T8lXbQAQD4ihPs0g9fxWmp3euJcumHHlu4AGttKkCdBLABw3EZKQI/kMn1c33x9muPdXbTTZhPSAgC909zsN0797+5cql7HWqx9u/B/KJ9u2AhdrA0LkDlBLNAl1t0DoNMymj4uJ6Nm29knu0PanU7aePzHXf+dTHkMAHRI3OwXM4Is9fx1xDhs3NK/k4P1Y1hXF4CWCWKBLllSAgB6IO5a/5Uy9GZssdr8fOEr/0Md1IZJ86ijlsOaKAEAR9F0xa6n/geMo0V3xWbUDTut6nTF0Q+QP0EsAIvmQjaQlQjoll59KcLYn6tGFla/9ri7o3aS6mmPo5t2IpwFABboWqrXWdUVu/fvz8FVhzzAMJxQAugcU5LgmAbo+hvbm2/HhbKxSmRvNdUdFxG6/2rp1Ze+qLa3mk4MAIB5ji/ju/N6Bi9l1hW7iF+cUTfspI21dAFoxZ43bM+7I9a0onB0/6gEZGa1+rL0z8oA5Gb7zbcvNV2Ta6oxGEvN/l5r1gqOdb02lAUwZgfmNL68Up2Lr1Q/jnr+UhbVFasbFsjZu7uW0KE//mmvvzDvIPZ0n6tVHeTvOmbm7ro7vACAXAljB2011cHFtHq8aswLAMxJhHRv9fw1RFfshXnesJZRN+xGVZeJwxxgOKwR+1WrSjB37ykBAJCzJox9J9UXzMwQMzyj2PfVMRAdGpdcWAMAjji2HFfjilgr9nTPX0q8hnnOHJJLN+xlRznAsFgjFgAAjqi52/+JZN3YIRuleiqpNaU4GGvuAvTCc0rQqhzCupg5ZHWOY4Ucxlgxi8rU4Q2+VzAsglgA4EG2lAD2b/vNt7ejOzYJZIfuLWHsgY2UAAC+Mq6cVA+TDF7KGx37Pce6W6vtmqMbfK9geASxAMCDvvxvqwIc6tyZ7gpko5vBTQ3DI4yFYfqeEgBzpCs2ZdcN6zs2wAAJYgHmY6oEAOzWBLLXqu0HqQ5lI5wdJ8HsULw1r+n4gN4YKQEwx7HkVspjlpU3jvn/3wWz7wWOagZmqgRQ+5YSABhcAHjvXaxmLahx2nUxrQnpTqe6g+p0sy3ZrVn5RbWfzzUXUgEADupq6n836Kwrtplu+UAy6oa97FBmgH6jBFATxAIA0FfTPj/5+639tfTqSxHE7g5ln2seT9vdvRT77q1q+4FSAACHGC9Oq/FhdFK+3vOX8lo63Jq3OXTDTqr9uOFoBhguQSxAP3xfCQDy16wbNUn3uVC1K6QdNdv3mkedtN12utp3V6p9e0UpAIBD2OmK7fN470J0tzazxOyLblgAciGIBegHF9gBBm5XSHv/D4p6quNRs32/+exYVblOiC6QK8oAwJxNlWAYY8BqnLee+t8dGs//0gH/ft+NLVEBgCAWAAAy8KB1t5pugth2T3e882e0Y6naDxdMSwfAnE2VYDBieuJXej5+W6vGQ1f30xWbSTds3ER51aELgCAWALgfd+1CJpqLXbFNvv6/NV20O1MeRxftKFmPdlFeqDZBLABz/ZhXgsGM56IrNkK9t3r+UvbbFZtDN+z6QaZiBqC3Jnv9BUEsuXIBEeBofGGEAdjVRfuVgHBXF+1qshbtvKwqAQBz9o9KMKhx27gao72RMu+Kzagb9pqjFmAQpnv9BUEsuXKREOBo3lGCfX/B1j18fNR+UQf2A7pol159aad7Nrbv7frZ2Gtvo7iwqDMCgDky08LwRDfpuz1/DXt1xebQDXs5upgdrsdu5zsNx1d/yP443893fEEsAHA/EyXYl61qwHVOGRiK5oLSJD14muNRs1mH9v6iRmNlAGAO4sKfm9KGNxabVGOuSer3TBvRFXvfoDKTbtj4jmi81w3Xq31xRRmABdrXTXGCWADgG4MIHVvAQe2a5vgr7hPQ7nTVDtH3HSkAzMl1JRisWCt2teev4fVqu3KfP8+iG9YhCjAY6/v5S4JYAOBQgwiA/XhIQBth7CjVoez3d/2cs9OOCADm8fGazLAw6LFVNY6K/b/W45fxWvUaru3uis2kG3byoLEvANkZ77eRRRALAHx9EOGLI7BwzXSKsX1lKp/MA9pVex6AOVg3g83gRVfsWo+ff8yQ8vWu2By6YS85NAEGYbv5LN4XQSzQJabrg+MfRJhGCTjeN6L9BbS9vVBXvY6l+62JBgD7tGXNwwN7L8Px0jSTrtjndv33as93y9gNEgCDcfUg7/mCWKBLlpQAjtWLwgGgq3YHtEuvvtTnjokIkif2KACH+ThMOu64J26ivZD6ey0lnvdqRuemm5oBhmFj+823rx3k/3BCzQCAyiVTEgMAQOfH7FvKQGhuol1XiU5Yd1MzwCDEOOzAN8UJYqGDY2klAFoWF3TGygAAAJ203YzZN5SCr7mWXEc6btPMpwsf2cUAMxHCnjvMjTeCWOjmCQ3Qhu1mADFWCgAAMGanZwdHfTHYlLjH62rmr29kFwPM1gH/wWFnPxDEAsAwTartBx2Zjvg5uwMAAL4hOmCfMB0xD9OE9FOVOJ7v1W6SAMj7Y7baXqze6y8d5Zd8Sx2/FINad5DNn4EgQMe+KFbbVevBAgCAMTvZiGuav1CG1l1VAoAs7azDfm0ea4ALYncV1gAXgEzFzUbxGXfd3fQAAGDMTl5i/eClV1+K42dVNVqz4VoyQF4fp81Y7J3mPX5ua7ALYgFYtHG1Xe/oc/t5tZ3OpM5xB/TWfb6Q+2IIAIs1VQKM2Y3ZjzBm3xa8MifRnbmqDK2ezwDzdK6jz+t0Mx7LwYNmxp1W47GFfa8TxAKwaL/pahi49OpLMcB5N+VxYeeNGLC5iAMA7VrkF3YwZjdmhwN8Hk10xbbmqs9/YBHv4x19avH58v3qcS2DMsd48pWjrvl6UIJY6OCbQfXGNtTXvmT30/IAZ7u5sPOrahtlcP68G6/HhR1Y4In26kujDN4vAKBvY/a4WPZuBt8ZjdlZtDhXPlWGxb4tVds1ZQAGNh671GQWaxm8nLV4LW2GsYJY6J6fKwG0OpCICzsvJhd2gH0O2FPdzQIAtDdm39rVGWvMDg8+V6bVsTVOeVwo76qr81w3EKBHnzHC2EM64fABmAtfoPs9kIj9Fxd2cvgytXNh57Q9CwCAMbsxO4NzNZPzpItiDUHdsMCQx2MRXI4zeTkRxr7Vxj80747Y5xyKwED9kxL0fiDhLnsOY1TV+YoydNLYuk0AYMxuzD6/ca8jsDfnSXTFriezuCzCZSXoled8X+/s+5T90u/9l1tn7Hb1mhb6/m5qYgC4N5BwYYeDGiUXOLpqUm1TZQAAY/aOj9nfasbsXe9gHDn6eiW6Nl/L4Bzp1PeL6jzdUIZeWW02uufKAvc57YzHcgpjX69eyz9Wr2m8qH/A1MQA8NWBRG5Tnv2iGkz48g1Al60qATDgMXtMT/yuMTtzPkfi3LiqEnOlGxbgq581OU1THDfGrS3qlwtiAeCbA4mcLuyMkgs7AAAYs3eZMJZFnCPRFTtVibkYm2kK4L6fNcLYfRDEAsD9BxIu7AAAcBDGWsczZn8xk5djzM4i6Iqdw1uNOgI8dDwWYWwuU7cvJIwVxJLfN19fWoD5DSSEsQAAHGS8Rftj9kn1cCmjY8iYnXmeH+PqYaISR7Je1XGqDAAPFWOxXGYOmHsYK4jFl1/oB1/Ej++Lq7vsAQCg22P2cRLGwoPo5jzC20u1XVMGgD3HYvF+Gc0swtj7EMSS6yAJcuMGg+MdTEySCzsAANDlMfvYmB0e+H12ohKHcrkJFwDY+/NGGPsAgth73lOCbE74LVUAFvDeMk4u7ABwdFMlADBm3+eY/S17lTm5rAQHttW8pwCw/7GYMPY+BLEA8zFVgkEMJuJLmDAWgKN8lhgzABiz79eFarwujGUe50VcEB+rxIEIrwEO95mTYxi7epRfIIglV7piadtUCQYzmIgvr8JYAIwXAIzZ27AmjGVOrBW7f5NmSmcADjcWyy2M/UU1Hjv00oGCWHIliKXtDxcD9GHt73HKK4z9ub0K0ArjBYB2x+y5dLQJY5nHOTFNwtj9uqQEsDBTJRjM505OYWw0sbx72DBWEEuurPlLmzaUYJCDiXFylz0AxqhAJsPbTMfs11I+07EaszMP13I93+dZI0tJwEI5v4Y0wBTGzghiyZVgjDa9owSDHUyMkzAWunp+TlQBY1SAfct2VqlqTBDj9bExO3x5QXxdJR5coqRrGGARnz3nUh43Ah0qjBXEkvPJPVYJ2jjcmjCO4b7fxP4XxgKwl3EzRgWg/TG7MBbunQ9Xko60B1k3XgNYyGfPoMNYQSw5cwcbrQzSlYAmjL2WyctxYQfA2BQgxzF7bmHsFXsV45K5mjYhNQCLGYvFDCyDDGMFseR8Yk9TPsEIBul0/z3ncnKXPQD3d9VaYwCdGLPnFMa+UY3Z1+xVDnkuxHlgbPK18ZoSACz882eQYawgliEMogwsWZQXlYCvDSZMeQbA1225cQvAmH1B3hLGcgSXlOBLE8tOAbQ2FhtcGCuIJfeTOk7mFzM5qenYF5bmQwO+/r4jjAXgy4+F5CIngDH7YgljOex5MKkeJioxoxsWoN3PoNzC2F9U47GlB/0FQSxDOaldAGOexu6UZI/3HWEsAPGF8pwbtwA6K5YWyeU9WhjLYQkg62s8E2UAaPkLc15h7CjVnbH3DWMFsQzlpN5IdRirM5ajutaEbLDX+05uYeyavQqw/4+BJIQF6Pp4ffZenYSxDPs8mGT0vfWwhNEPUL2nrKoCsODPoZzC2Jie+L5hrCCWIZ3U4+aknqoGhzmEUj0d8WWl4ADvO6Y825+Ro4UeeU4J2MPsi6QQFqAX43VhLAw7iLxavQ9MHQIAxzoeyz6MFcQyxJP6B8ndfhzMJNUXVB03HOZ9Rxi7t5EjBcjEtSSEBejbeD3HMPaCPcsBzoFpM4YZ3Esf6OsG6OJnUU7LS34jjBXEMsgvWU0wEl+0NlSEh5ikugvWBVWO+r4jjAXIW7zHPxEzZzQX9AHo2XWClF8Y+/+zd0c3CMJAAED5cAFHcAMdwREcxRHcADdgBDeQURjFXiQYjIkmakLb9xISv0woB732aNm6spNBE7wVq2Jry2FO8jZgSemIfGz6vGQJZsVYhVhqvrH7dBzSz006YrvZi+RcWDT34mvEw24swHaahR+JuLLlGUAZImfsxkHiOl64sa0dQPZzBCUVY2PS76oYO+u3eR//55piIp2z1bDAklgE1EyflyyuGLv68R8fx2RPUkZON3dc+7Z52o7EB+nr6ugyeAtyb9Cb/8A2PVf2YydcxCmJbyqVc77L98/yXiv8RQy2tS0lyDmnMfknZxfftBX1x4PL/fG9Y7zOkvumksYVVug/8rEu5WPx/DH3AgAAAAAAAMBrNwEGAKTXElFwew/RAAAAAElFTkSuQmCC"
                                    },
                                    {
                                        fontSize: 8,
                                        table: {
                                            widths: ["*", 50, 80],
                                            body: [
                                                [
                                                    {
                                                        border: [false, false, false, false],
                                                        bold: true,
                                                        fontSize: 11,
                                                        alignment: "center",
                                                        margin: [50, 0, 0, 0],
                                                        text: "Forest River, Inc."
                                                    },
                                                    {
                                                        fontSize: 10,
                                                        border: [false, false, false, false],
                                                        margin: [0, 2, 0, 0],
                                                        text: vm.VinInfo.IsMotorized
                                                            ? "Motorized"
                                                            : "Towables"
                                                    },
                                                    {
                                                        margin: [20, 0, 0, 0],
                                                        border: [false, false, false, false],
                                                        image: barCode,
                                                        width: 60
                                                    }
                                                ],
                                                [
                                                    {
                                                        border: [false, false, false, false],
                                                        colSpan: 2,
                                                        alignment: "center",
                                                        bold: true,
                                                        text: "CUSTOMER DELIVERY AND WARRANTY REGISTRATION FORM"
                                                    },
                                                    {
                                                        border: [false, false, false, false],
                                                        text: ""
                                                    },
                                                    {
                                                        border: [false, false, false, false],
                                                        text: ""
                                                    }
                                                ],
                                                [
                                                    {
                                                        border: [false, false, false, false],
                                                        colSpan: 2,
                                                        decoration: "underline",
                                                        alignment: "center",
                                                        text: "DEALER TO ASSURE THAT THIS FORM IS PROPERLY COMPLETED AND RETURNED TO FOREST RIVER, INC. WITHIN(10) WORKING DAYS AFTER PDI AND DELIVERY IS PERFORMED, TO ACTIVATE & ENSURE WARRANTY COVERAGE, PLEASE ATTACH COMPLETED FORM TO THE VIN ON FOREST RIVER DEALER CONNECT OR EMAIL TO DCWARRANTYREG@FORESTRIVERINC.COM."
                                                    },
                                                    {
                                                        border: [false, false, false, false],
                                                        text: ""
                                                    },
                                                    {
                                                        margin: [25, 0, 0, 0],
                                                        border: [false, false, false, false],
                                                        text: vm.VinInfo.SalesId
                                                    }
                                                ]
                                            ]
                                        },
                                        layout: {
                                            paddingLeft: function (i, node) {
                                                return 0;
                                            },
                                            paddingTop: function (i, node) {
                                                return 0;
                                            },
                                            paddingRight: function (i, node) {
                                                return 0;
                                            },
                                            paddingBottom: function (i, node) {
                                                return 0;
                                            }
                                        }
                                    }
                                ]
                            ]
                        }
                    }, {
                        fontSize: 6,
                        table: {
                            widths: ["*", "*"],
                            body: [
                                [
                                    {
                                        layout: "noBorders",
                                        table: {
                                            widths: ["*", "*"],
                                            body: [
                                                [
                                                    { text: "OWNERS NAME:", bold: true },
                                                    { text: "EMAIL ADDRESS:", bold: true }
                                                ],
                                                [
                                                    vm.Warranty.Ownership.Name,
                                                    vm.Warranty.Ownership.Email
                                                ]
                                            ]
                                        }
                                    },
                                    {
                                        layout: "noBorders",
                                        table: {
                                            widths: [
                                                "*",
                                                "*",
                                                vm.VinInfo.IsMotorized ? "*" : 0
                                            ],
                                            body: [
                                                [
                                                    { text: "DEALERS NAME:", bold: true },
                                                    { text: "VIN #", bold: true },
                                                    {
                                                        text: vm.VinInfo.IsMotorized
                                                            ? "CHASSIS VIN #"
                                                            : "",
                                                        bold: true
                                                    }
                                                ],
                                                [
                                                    vm.VinInfo.DealerName,
                                                    vm.VinInfo.VIN,
                                                    vm.VinInfo.IsMotorized
                                                        ? vm.VinInfo.ChassisNumber
                                                        : ""
                                                ]
                                            ]
                                        }
                                    }
                                ],
                                [
                                    {
                                        layout: "noBorders",
                                        table: {
                                            widths: [35, "*", "*", 35, 50],
                                            body: [
                                                [
                                                    { text: "ADDRESS", bold: true },
                                                    { text: "Street:", bold: true },
                                                    { text: "City:", bold: true },
                                                    { text: "State:", bold: true },
                                                    { text: "Zip", bold: true }
                                                ],
                                                [
                                                    "",
                                                    vm.Warranty.Ownership.Address,
                                                    vm.Warranty.Ownership.City,
                                                    vm.Warranty.Ownership.State,
                                                    vm.Warranty.Ownership.PostalCode
                                                ]
                                            ]
                                        }
                                    },
                                    {
                                        layout: "noBorders",
                                        table: {
                                            body: [
                                                [{ text: "ADDRESS", bold: true }],
                                                [
                                                    vm.VinInfo.DealerAddress.replace(/(\r\n|\n|\r)/gm, " ")
                                                ]
                                            ]
                                        }
                                    }
                                ],
                                [
                                    {
                                        layout: "noBorders",
                                        table: {
                                            widths: ["*", 60, "*"],
                                            body: [
                                                [
                                                    { text: "RETAIL DATE OF PURCHASE (mm/dd/yyy):", bold: true },
                                                    { text: "PHONE:", bold: true },
                                                    {
                                                        text: "FOREST RIVER INC. SERIAL:",
                                                        bold: true
                                                    }
                                                ],
                                                [
                                                    delDate,
                                                    vm.Warranty.Ownership.Phone,
                                                    vm.VinInfo.ShortVIN
                                                ]
                                            ]
                                        }
                                    },
                                    {
                                        layout: "noBorders",
                                        table: {
                                            widths: [
                                                "*",
                                                "*",
                                                vm.VinInfo.IsMotorized ? "*" : 0
                                            ],
                                            body: [
                                                [
                                                    { text: "BRAND", bold: true },
                                                    { text: "MODEL #", bold: true },
                                                    {
                                                        text: vm.VinInfo.IsMotorized
                                                            ? "ODOMETER READING"
                                                            : {},
                                                        bold: true
                                                    }
                                                ],
                                                [
                                                    vm.VinInfo.Brand,
                                                    vm.VinInfo.VINItemNumber,
                                                    vm.VinInfo.IsMotorized ? vm.VinInfo.Mileage : {}
                                                ]
                                            ]
                                        }
                                    }
                                ]
                            ]
                        },
                        layout: {
                            paddingLeft: function (i, node) {
                                return 2;
                            },
                            paddingTop: function (i, node) {
                                return 1;
                            },
                            paddingRight: function (i, node) {
                                return 1;
                            },
                            paddingBottom: function (i, node) {
                                return 1;
                            }
                        }
                    }, {
                        text: "PLEASE MARK X IN BOX, LEAVE BLANK IF NOT APPLICABLE. DEALER / LEFT COLUMN, CUSTOMER / RIGHT COLUMN",
                        bold: true,
                        fontSize: 8,
                        alignment: "center",
                        decoration: "underline",
                        margin: [0, 2, 0, 2]
                    }, {
                        fontSize: 6,
                        table: {
                            widths: [6, 6, "*", 6, 6, "*", 6, 6, "*"],
                            margin: [0, 0],
                            body: [
                                [
                                    { text: "ELECTRICAL SYSTEM", colSpan: 3, bold: true },
                                    {},
                                    {},
                                    {
                                        text: !vm.VinInfo.IsMotorized
                                            ? "RUNNING GEAR/FRAME"
                                            : "CHASSIS",
                                        colSpan: 3,
                                        bold: true
                                    },
                                    {},
                                    {},
                                    "",
                                    "",
                                    "ALL FITTINGS TIGHT/NO SYSTEM LEAKS"
                                ],
                                [
                                    "",
                                    "",
                                    "120 VOLT SYSTEM/CIRCUITS, BREAKERS, OPERATION",
                                    "",
                                    "",
                                    vm.VinInfo.IsMotorized
                                        ? "CHECK ALL FLUID LEVELS"
                                        : "BRAKE ADJUSTMENTS AND MAINTENANCE IF NECESSARY",
                                    "",
                                    "",
                                    "P-TRAPS/VENTS TIGHT AND CONNECTED"
                                ],
                                [
                                    "",
                                    "",
                                    "120 VOLT AUXILIARY GENERATOR OPERATION",
                                    "",
                                    "",
                                    vm.VinInfo.IsMotorized
                                        ? "SEAT BELT OPERATION"
                                        : "BRAKE WIRE CONNECTION CHECKED",
                                    { text: "EXTERIOR", colSpan: 3, bold: true },
                                    {},
                                    {}
                                ],
                                [
                                    "",
                                    "",
                                    "12 VOLT/CONVERTOR CIRCUITS, FUSES, OPERATION",
                                    "",
                                    "",
                                    vm.VinInfo.IsMotorized
                                        ? "LEVELING JACK SYSTEM OPERATION"
                                        : "COUPLING/UNCOUPLING PROCEDURES AND OPERATION",
                                    "",
                                    "",
                                    "ENT. DOOR(S)/COMPT. DOORS/LOCK-ALL KEYS"
                                ],
                                [
                                    "",
                                    "",
                                    "GROUND FAULT CIRCUIT INTERRUPTOR (GFCI)",
                                    "",
                                    "",
                                    vm.VinInfo.IsMotorized
                                        ? "DASH CONTROLS, SWITCHES/BACK UP MONITOR"
                                        : "OPERATE AND LUBE JACKS IF NECESSARY",
                                    "",
                                    "",
                                    "ENT. STEP(S) LEVEL/SECURE TO FRAME/ALIGNED"
                                ],
                                [
                                    "",
                                    "",
                                    "ALL INTERIOR LIGHTS, RECEPTS, SWITCHES",
                                    "",
                                    "",
                                    "TIRE CONDITION AND PRESSURE SET @___________ PSI (INCL SPARE)",
                                    "",
                                    "",
                                    "EXPLAINED GENERATOR USE AND MAINTENACE (IF EQUIPPED)"
                                ],
                                [
                                    "",
                                    "",
                                    "ALL EXTERIOR LIGHTS, RECEPTS, SWITCHES",
                                    "",
                                    "",
                                    "WHEEL LUG TORQUE SET/MFG. SPEC/ RE-CK@ 50 AND 250 MI",
                                    "",
                                    "",
                                    "TRIM/SEALANTS, WINDOWS, ROOF, BODY"
                                ],
                                [
                                    "",
                                    "",
                                    "BATTERY SYSTEM/DISCONNECT TESTED",
                                    "",
                                    "",
                                    vm.VinInfo.IsMotorized
                                        ? "EXTERIOR MIRRORS ADJUSTED CORRECTLY"
                                        : "SPARE TIRE CHECKED FOR SIZE, PRESSURE CONDITION",
                                    "",
                                    "",
                                    "WINDOWS, PROPER OPERATION"
                                ],
                                [
                                    "",
                                    "",
                                    "EXPLAINED EMS OPERATION AND SETTINGS (IF EQUIPPED)",
                                    { text: "LP GAS SYSTEM", colSpan: 3, bold: true },
                                    {},
                                    {},
                                    "",
                                    "",
                                    "AWNING DEMONSTRATED/CANVAS CHECKED"
                                ],
                                [
                                    "",
                                    "",
                                    "MONITOR PANEL OPERATION",
                                    "",
                                    "",
                                    vm.VinInfo.IsMotorized
                                        ? "LOCATION OF LP TANKS, LINES AND CONNECTIONS SECURED"
                                        : "LOCATION OF LP LINES AND CONNECTIONS SECURED",
                                    "",
                                    "",
                                    "FULE STATION-SURV. DEMONSTRATE/OPERATION"
                                ],
                                [
                                    "",
                                    "",
                                    "PHONE/SATELLITE FUNCTIONS",
                                    "",
                                    "",
                                    "OPERATION OF REGULATOR AND AUTO-CHANGEOVER",
                                    "",
                                    "",
                                    "STABILIZER JACKS DEMONSTRATED"
                                ],
                                [
                                    "",
                                    "",
                                    "AUDIO/VIDEO ENTERTAINMENT SYSTEM FUNCTIONS",
                                    { text: "", rowSpan: 4 },
                                    { text: "", rowSpan: 4 },
                                    {
                                        text: "THE LP SYSTEM WAS CHECKED \nAT ______________ (LOCATION) HOLDING ________________ IN \nWC FOR ____________ MIN. THE PRESSURE WAS THEN \nADJUSTED TO _______________ IN. WC.",
                                        rowSpan: 4,
                                        lineHeight: 1.4
                                    },
                                    "",
                                    "",
                                    "EXTERIOR MAINTENANCE PROCEDURES EXPLAINED"
                                ],
                                [
                                    "",
                                    "",
                                    "CARBON MONOXIDE DETECTOR",
                                    "",
                                    "",
                                    "",
                                    {
                                        text: "SLIDE OUT(S) (IF APPLICABLE)",
                                        colSpan: 3,
                                        bold: true
                                    },
                                    {},
                                    {}
                                ],
                                [
                                    "",
                                    "",
                                    "SMOKE DETECTOR",
                                    "",
                                    "",
                                    "",
                                    "",
                                    "",
                                    "OPERATION AND MANUAL OVERRIDE DEMONSTRATED"
                                ],
                                [
                                    "",
                                    "",
                                    "SHORE CORD INSPECTION AND OPERATION",
                                    "",
                                    "",
                                    "",
                                    "",
                                    "",
                                    "INTERIOR/EXTERIOR SEALS CHECKED"
                                ],
                                [
                                    { text: "APPLICANCES", colSpan: 3, bold: true },
                                    {},
                                    {},
                                    "",
                                    "",
                                    vm.VinInfo.IsMotorized
                                        ? "LP/PROPANE DETECTOR"
                                        : "LP DETECTOR",
                                    "",
                                    "",
                                    "HYDRAULIC OR ELECTRIC PUMP/LINES CHECKED"
                                ],
                                [
                                    "",
                                    "",
                                    "FURNACE AND THERMOSTAT",
                                    {
                                        text: "WATER/PLUMBING SYSTEM",
                                        colSpan: 3,
                                        bold: true
                                    },
                                    {},
                                    {},
                                    "",
                                    "",
                                    "SLIDE OUT TOPPER(S) CANVAS/OPERATION CHECKED"
                                ],
                                [
                                    "",
                                    "",
                                    "RANGE/OVEN",
                                    "",
                                    "",
                                    "POTABLE WATER INTAKE/DRAIN LOCATIONS",
                                    { text: "GENERAL", colSpan: 3, bold: true },
                                    {},
                                    {}
                                ],
                                [
                                    "",
                                    "",
                                    "WATER HEATER",
                                    "",
                                    "",
                                    "CITY WATER FILL CONNECTIONS",
                                    "",
                                    "",
                                    "ALL ACCESSORIES (INCLUDING REMOTES) ARE IN UNIT"
                                ],
                                [
                                    "",
                                    "",
                                    "REFRIGERATOR",
                                    "",
                                    "",
                                    "DEMAND PUMP FUNCTIONS",
                                    "",
                                    "",
                                    "WARRANTY FORMS COMPLETED AND REVIEWED"
                                ],
                                [
                                    "",
                                    "",
                                    "AIR CONDITIONER AND THERMOSTAT",
                                    "",
                                    "",
                                    "FAUCETS/FIXTURES/INCL. W/D-WASHER PRESSURE CHECKED",
                                    "",
                                    "",
                                    "ALL REQUIRED LITERATURE IS IN UNIT"
                                ],
                                [
                                    "",
                                    "",
                                    "MICROWAVE",
                                    "",
                                    "",
                                    "WINTERIZING PROCEDURE/BY PASS DEMONSTRATED",
                                    "",
                                    "",
                                    "ALL COMPONENT OWNERS MANUALS IN UNIT AND REVIEWED"
                                ],
                                [
                                    "",
                                    "",
                                    "TV ANTENNA AND CABLE HOOK UP",
                                    "",
                                    "",
                                    "EXTERIOR SHOWER DEMONSTRATED",
                                    "",
                                    "",
                                    "FIRE EXTINGUISHER INSTALLED"
                                ],
                                [
                                    "",
                                    "",
                                    "ALL OPTIONAL APPLIANCES NOT LISTED",
                                    "",
                                    "",
                                    "BLACK AND GREY HOLDING TANKS/GATE VALVE OPERATIONS",
                                    "",
                                    "",
                                    "ALL FURNITURE APPEARANCE/FUNCTION CHECKED"
                                ],
                                [
                                    {
                                        text: !vm.VinInfo.IsMotorized
                                            ? "FOLDING CAMPER AND BUNK END UNITS ONLY"
                                            : "MOTORIZED TEST DRIVE",
                                        colSpan: 3,
                                        bold: true
                                    },
                                    {},
                                    {},
                                    "",
                                    "",
                                    "FRESH WATER TANK FILLED/EMPTIED",
                                    "",
                                    "",
                                    "ALL FLOORING/APPEARANCE/FREE OF DEFECTS"
                                ],
                                [
                                    "",
                                    "",
                                    vm.VinInfo.IsMotorized
                                        ? "BRAKE/PARK BRAKE OPERATION"
                                        : "COMPLETE SET-UP/CLOSING AND LIFTER DEMONSTRATION",
                                    "",
                                    "",
                                    "TOILET OPERATION",
                                    "",
                                    "",
                                    "REVIEWED ONLINE OWNERS MANUAL AND WARRANTY"
                                ],
                                [
                                    "",
                                    "",
                                    vm.VinInfo.IsMotorized
                                        ? "STEERING AND HANDLING, TRANSMISSION, CRUISE, ETC."
                                        : "FIT AND FINISH AND CONDITION OF CANVAS",
                                    "",
                                    "",
                                    "WATER FILTER OPERATION DEMONSTRATED",
                                    "",
                                    "",
                                    vm.VinInfo.IsMotorized
                                        ? ""
                                        : "HANDLING/TOWING CHECKED, TEST DRIVE"
                                ]
                            ]
                        },
                        layout: {
                            paddingLeft: function (i, node) {
                                return 1;
                            },
                            paddingTop: function (i, node) {
                                return 1;
                            },
                            paddingRight: function (i, node) {
                                return 1;
                            },
                            paddingBottom: function (i, node) {
                                return 1;
                            }
                        }
                    }, {
                        margin: [0, 5, 0, 0],
                        columns: [
                            [
                                {
                                    text: "LIST DEALER INSTALLED OPTIONS (THESE ARE NOT COVERED UNDER THE FOREST RIVER, INC. LIMITED WARRANTY)",
                                    bold: true,
                                    fontSize: 8
                                },
                                {
                                    margin: [0, 5, 5, 0],
                                    table: {
                                        body: [
                                            [
                                                {
                                                    text: "OWNER/DEALER INSPECTION REVIEW",
                                                    bold: true,
                                                    decoration: "underline",
                                                    fontSize: 6,
                                                    margin: [0, 5],
                                                    border: [false, true, false, false]
                                                }
                                            ],
                                            [
                                                {
                                                    text: "1. EXTERIOR AND INTERIOR FIT AND FINISH\n2. OPERATED ALL APPLICANCES, OPTION EQUIPMENT AND ACCESSORIES (REVIEWED MAINTENANCE AND SAFETY OF LP GAS SYSTEM)\n3. EXPLAINED WEIGHT RATINGS, LIMITATIONS AND PROPER LOAD DISTRIBUTION, TOW VEHICLE GVWR, HITCH, SET-UP, BRAKE CONTROL.\n4. OPERATED ALL FRESH WATER AND PLUMBING COMPONENTS, INCLUDING PROPER WINTERIZATION AND DRAIN LOCATIONS.\n5. COMPLETE REVIEW OF OWNERS MANUALS AND HIGHLIGHT OF SAFETY ISSUES.",
                                                    style: "inspectionList",
                                                    border: [false, false, false, false]
                                                }
                                            ],
                                            [
                                                {
                                                    text: "I have completed the above inspections on the family recreational vehicle to my satisfaction and have been offered a test drive at the time of purchase. I understand that issues regarding damage such as scratches, tears, dents, broken items, etc. will not be warranted except those noted in the space:",
                                                    style: "inspectionList",
                                                    margin: [0, 5],
                                                    bold: true,
                                                    border: [false, false, false, true]
                                                }
                                            ]
                                        ]
                                    },
                                    layout: {
                                        paddingLeft: function (i, node) {
                                            return 0;
                                        },
                                        paddingTop: function (i, node) {
                                            return 1;
                                        },
                                        paddingRight: function (i, node) {
                                            return 0;
                                        }
                                    }
                                }
                            ],
                            [
                                {
                                    table: {
                                        body: [
                                            [
                                                {
                                                    border: [true, false, false, false],
                                                    text: footerText,
                                                    style: "inspectionList"
                                                }
                                            ],
                                            [
                                                {
                                                    border: [true, false, false, false],
                                                    style: "inputLine",
                                                    table: {
                                                        widths: ["*"],
                                                        body: [
                                                            [
                                                                {
                                                                    border: [false, true, false, false],
                                                                    text: "DATE"
                                                                }
                                                            ]
                                                        ]
                                                    },
                                                    layout: {
                                                        paddingLeft: function (i, node) {
                                                            return 0;
                                                        },
                                                        paddingTop: function (i, node) {
                                                            return 2;
                                                        },
                                                        paddingBottom: function (i, node) {
                                                            return 0;
                                                        }
                                                    }
                                                }
                                            ],
                                            [
                                                {
                                                    border: [true, false, false, false],
                                                    style: "inputLine",
                                                    table: {
                                                        widths: ["*"],
                                                        body: [
                                                            [
                                                                {
                                                                    border: [false, true, false, false],
                                                                    text: "PURCHASER'S SIGNATURE"
                                                                }
                                                            ]
                                                        ]
                                                    },
                                                    layout: {
                                                        paddingLeft: function (i, node) {
                                                            return 0;
                                                        },
                                                        paddingTop: function (i, node) {
                                                            return 2;
                                                        },
                                                        paddingBottom: function (i, node) {
                                                            return 0;
                                                        }
                                                    }
                                                }
                                            ],
                                            [
                                                {
                                                    border: [true, false, false, false],
                                                    style: "inputLine",
                                                    table: {
                                                        widths: ["*"],
                                                        body: [
                                                            [
                                                                {
                                                                    border: [false, true, false, false],
                                                                    text: "DEALER'S SIGNATURE"
                                                                }
                                                            ]
                                                        ]
                                                    },
                                                    layout: {
                                                        paddingLeft: function (i, node) {
                                                            return 0;
                                                        },
                                                        paddingTop: function (i, node) {
                                                            return 2;
                                                        },
                                                        paddingBottom: function (i, node) {
                                                            return 10;
                                                        }
                                                    }
                                                }
                                            ]
                                        ]
                                    },
                                    layout: {
                                        paddingLeft: function (i, node) {
                                            return 3;
                                        },
                                        paddingTop: function (i, node) {
                                            return 0;
                                        },
                                        paddingRight: function (i, node) {
                                            return 0;
                                        },
                                        paddingBottom: function (i, node) {
                                            return 0;
                                        }
                                    }
                                }
                            ]
                        ]
                    });
                    if (vm.VinInfo.IsMotorized && vm.requiresDisclaimer) {
                        myContent.push({
                            pageBreak: "before",
                            pageOrientation: "portrait",
                            text: "NEW MOTOR HOME LEMON LAW BILL OF RIGHTS",
                            style: "disclaimer",
                            alignment: "center",
                            bold: true
                        }, {
                            text: "(1) IN ADDITION TO ANY WARRANTIES OFFERED BY THE MANUFACTURER, YOUR NEW MOTOR HOME, IF PURCHASED AND REGISTERED IN NEW YORK STATE, IS WARRANTED AGAINST ALL MATERIAL DEFECTS FOR EIGHTEEN THOUSAND MILES OR TWO YEARS, WHICHEVER COMES FIRST.HOWEVER, THIS ADDITIONAL WARRANTY DOES NOT APPLY TO THE LIVING FACILITIES OF MOTOR HOMES, WHICH ARE THE PORTIONS THEREOF DESIGNED, USED OR MAINTAINED PRIMARILY AS LIVING QUARTERS AND SHALL INCLUDE, BUT NOT BE LIMITED TO THE FLOORING, PLUMBING SYSTEM AND FIXTURES, ROOF AIR CONDITIONER, FURNACE, GENERATOR, ELECTRICAL SYSTEMS OTHER THAN AUTOMOTIVE CIRCUITS, THE SIDE ENTRANCE DOOR, EXTERIOR COMPARTMENTS, AND WINDOWS OTHER THAN THE WINDSHIELD AND DRIVER AND FRONT PASSENGER WINDOWS.",
                            style: "disclaimer"
                        }, {
                            text: "(2) YOU MUST REPORT ANY PROBLEMS TO THE MANUFACTURER, ITS AGENT, OR AUTHORIZED DEALER.",
                            style: "disclaimer"
                        }, {
                            text: "(3) UPON NOTIFICATION, THE PROBLEM MUST BE CORRECTED FREE OF CHARGE.",
                            style: "disclaimer"
                        }, {
                            text: "(4) IF, WITHIN THE FIRST EIGHTEEN THOUSAND MILES OF OPERATION OR DURING THE PERIOD OF TWO YEARS FOLLOWING THE DATE OF ORIGINAL DELIVERY OF THE MOTOR VEHICLE TO SUCH CONSUMER, WHICHEVER IS THE EARLIER DATE THE MANUFACTURER OF A MOTOR HOME OR ITS AGENTS OR ITS AUTHORIZED DEALERS OR REPAIR SHOPS TO WHICH THEY REFER A CONSUMER ARE UNABLE TO REPAIR OR CORRECT ANY COVERED DEFECT OR CONDITION WHICH SUBSTANTIALLY IMPAIRS THE VALUE OF THE MOTOR HOME TO THE CONSUMER AFTER A REASONABLE NUMBER OF ATTEMPTS, THE MOTOR HOME MANUFACTURER, AT THE OPTION OF THE CONSUMER, SHALL REPLACE THE MOTOR HOME WITH A COMPARABLE MOTOR HOME, OR ACCEPT RETURN OF THE MOTOR HOME FROM THE CONSUMER AND REFUND TO THE CONSUMER THE FULL PURCHASE PRICE OR, IF APPLICABLE, THE LEASE PRICE AND ANY TRADE-IN ALLOWANCE, PLUS FEES AND CHARGES, AS WELL AS THE OTHER FEES AND CHARGES, INCLUDING BUT NOT LIMITED TO ALL LICENSE FEES, REGISTRATION FEES, AND ANY SIMILAR GOVERNMENTAL CHARGES, LESS AN ALLOWANCE FOR THE CONSUMER'S USE OF THE VEHICLE IN EXCESS OF TWELVE THOUSAND MILES TIMES THE PURCHASE PRICE, OR THE LEASE PRICE IF APPLICABLE, OF THE VEHICLE DIVIDED BY ONE HUNDRED THOUSAND MILES, AND A REASONABLE ALLOWANCE FOR ANY DAMAGE NOT ATTRIBUTABLE TO NORMAL WEAR OR IMPROVEMENTS.",
                            style: "disclaimer"
                        }, {
                            text: "(5) SPECIAL NOTICE PROVISION: IF WITHIN EIGHTEEN THOUSAND MILES OR TWO YEARS, WHICHEVER COMES FIRST, THE SAME COVERED NONCONFORMITY, DEFECT OR CONDITION IN YOUR MOTOR HOME HAS BEEN SUBJECT TO REPAIR TWO TIMES OR YOUR MOTOR HOME HAS BEEN OUT OF SERVICE BY REASON OF REPAIR FOR TWENTY-ONE DAYS, WHICHEVER COMES FIRST, YOU MUST HAVE REPORTED THIS TO THE MOTOR HOME MANUFACTURER BY CERTIFIED MAIL, RETURN RECEIPT REQUESTED, AND YOU MAY INSTITUTE ANY PROCEEDING OR OTHER ACTION PURSUANT TO THE LEMON LAW IF THE MOTOR HOME HAS BEEN OUT OF SERVICE BY REASON OF THREE REPAIR ATTEMPTS OR FOR AT LEAST THIRTY DAYS. THIS SPECIAL NOTICE REQUIREMENT SHALL ONLY APPLY IF THE 2 MANUFACTURER OR ITS AUTHORIZED DEALER PROVIDES WRITTEN COPY OF THE REQUIREMENTS OF THIS PARAGRAPH TO YOU AND RECEIPT OF NOTICE IS ACKNOWLEDGED BY YOU IN WRITING. IF YOU FAIL TO COMPLY WITH THE SPECIAL NOTIFICATION REQUIREMENTS OF THIS PARAGRAPH, ADDITIONAL REPAIR ATTEMPTS OR DAYS OUT OF SERVICE BY REASON OF REPAIR SHALL NOT BE TAKEN INTO ACCOUNT IN DETERMINING WHETHER YOU ARE ENTITLED TO A REMEDY PROVIDED IN PARAGRAPH FOUR. HOWEVER, ADDITIONAL REPAIR ATTEMPTS OR DAYS OUT OF SERVICE BY REASON OF REPAIR THAT OCCUR AFTER YOU COMPLY WITH SUCH SPECIAL NOTIFICATION REQUIREMENTS SHALL BE TAKEN INTO ACCOUNT IN MAKING THAT DETERMINATION.",
                            style: "disclaimer"
                        }, {
                            text: "NOTICE TO THE MANUFACTURER SHOULD BE SENT TO THE FOLLOWING:",
                            style: "disclaimer"
                        }, {
                            text: "FOREST RIVER, INC., P.O. BOX 3030, ELKHART, IN 46515-3030",
                            style: "disclaimer",
                            bold: true,
                            margin: [0, 10, 0, 0],
                            decoration: "underline"
                        }, {
                            text: "(6) A MANUFACTURER MAY DENY LIABILITY IF THE PROBLEM IS CAUSED BY ABUSE, NEGLECT, OR UNAUTHORIZED MODIFICATIONS OF THE MOTOR HOME.",
                            style: "disclaimer",
                            margin: [0, 0, 0, 5]
                        }, {
                            text: "(7) A MANUFACTURER MAY REFUSE TO EXCHANGE A COMPARABLE MOTOR HOME OR REFUND YOUR PURCHASE PRICE IF THE PROBLEM IS NOT COVERED BY THE LEMON LAW OR DOES NOT SUBSTANTIALLY IMPAIR THE VALUE OF YOUR MOTOR HOME.",
                            style: "disclaimer"
                        }, {
                            text: "(8) IF A MANUFACTURER HAS ESTABLISHED AN ARBITRATION PROCEDURE, THE MANUFACTURER MAY REFUSE TO EXCHANGE A COMPARABLE MOTOR HOME OR REFUND YOUR PURCHASE PRICE UNTIL YOU FIRST RESORT TO THE PROCEDURE.",
                            style: "disclaimer"
                        }, {
                            text: "(9) IF THE MANUFACTURER DOES NOT HAVE AN ARBITRATION PROCEDURE, YOU MAY RESORT TO ANY REMEDY BY LAW AND MAY BE ENTITLED TO YOUR ATTORNEY'S FEES IF YOU PREVAIL.",
                            style: "disclaimer"
                        }, {
                            text: "(10) NO CONTRACT OR AGREEMENT CAN VOID ANY OF THESE RIGHTS.",
                            style: "disclaimer"
                        }, {
                            text: "(11) AS AN ALTERNATIVE TO THE ARBITRATION PROCEDURE MADE AVAILABLE THROUGH THE MANUFACTURER, YOU MAY INSTEAD CHOOSE TO SUBMIT YOUR CLAIM TO AN INDEPENDENT ARBITRATOR, APPROVED BY THE ATTORNEY GENERAL.YOU MAY HAVE TO PAY A FEE FOR SUCH ARBITRATION.CONTACT YOUR LOCAL CONSUMER OFFICE OR ATTORNEY GENERAL'S OFFICE TO FIND OUT HOW TO ARRANGE FOR INDEPENDENT ARBITRATION.",
                            style: "disclaimer"
                        }, {
                            text: "RECEIPT OF THIS NOTICE ACKNOWLEDGED BY:",
                            style: "disclaimer"
                        }, {
                            text: "____________________________________________________ DATE: _________________________",
                            style: "disclaimer",
                            margin: [0, 35, 0, 0]
                        }, {
                            text: "PURCHASER(S)",
                            style: "disclaimer",
                            margin: [0, 0, 0, 0]
                        });
                    }
                    dd = {
                        pageOrientation: "landscape",
                        pageSize: "LETTER",
                        pageMargins: [25, 25, 25, 25],
                        content: myContent,
                        styles: {
                            inputLine: {
                                fontSize: 8,
                                bold: true,
                                margin: [0, 13, 0, 0]
                            },
                            inspectionList: {
                                fontSize: 6
                            },
                            disclaimer: {
                                fontSize: 13,
                                margin: [0, 10, 0, 5]
                            }
                        }
                    };
                    vm.createPDF(dd, "PDIReport.pdf");
                });
            });
            return _this;
        }
        ReportPDIController.$inject = [
            "$uibModalInstance",
            "$state",
            "app.services.VINService",
            "app.services.WarrantyService",
            "vin"
        ];
        return ReportPDIController;
    }(report.ReportController));
    angular
        .module("app.report")
        .controller("app.report.PDIController", ReportPDIController);
})(report || (report = {}));
//# sourceMappingURL=report.pdi.controller.js.map
var __extends = (this && this.__extends) || (function () {
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };
    return function (d, b) {
        if (typeof b !== "function" && b !== null)
            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();
var report;
(function (report) {
    "use strict";
    var IPart = (function () {
        function IPart() {
        }
        return IPart;
    }());
    var ReportPDIMarineController = (function (_super) {
        __extends(ReportPDIMarineController, _super);
        function ReportPDIMarineController($modalInstance, $state, vinService, warrantyService, vin) {
            var _this = _super.call(this, $modalInstance) || this;
            _this.$state = $state;
            _this.vinService = vinService;
            _this.warrantyService = warrantyService;
            var vm = _this;
            vm.vin = vin;
            var dd = null;
            vinService.getVIN(vm.vin, true).then(function (data) {
                vm.VinInfo = data;
                warrantyService
                    .getWarranty(vm.vin)
                    .then(function (data) {
                    vm.Warranty = data;
                    vm.requiresDisclaimer = vm.Warranty.Ownership.State == "NY";
                    var fullDate = new Date(vm.VinInfo.RetailSoldDate.toString());
                    var delDate = ("0" + (fullDate.getMonth() + 1)).slice(-2) +
                        "/" +
                        ("0" + fullDate.getDate()).slice(-2) +
                        "/" +
                        fullDate.getFullYear();
                    var footerText = "I have had the opportunity to review the FOREST RIVER, INC. MARINE Limited warranty during the purchase of this unit and I understand that this product is designed to be used for recreational use. I have been given the opportunity to make notations in the space provided above, have observed or received satisfactory explanation to all questions regarding the items listed during this delivery process.";
                    if (vm.Warranty.Ownership.State == "LA") {
                        footerText +=
                            " FURTHER, I WAIVE ANY AND ALL RIGHTS TO RESCIND THIS SALE OR TO REDUCE THE PURCHASE PRICE AGAINST FOREST RIVER, INC. BY REASON OF ANY VICE OR DEFECTS IN THE ABOVE-DESCRIBED UNIT. INCLUDING BUT NOT LIMITED TO ANY RIGHTS OF REDHIBITION GRANTED TO ME BY LAW. I ACKNOWLEDGE THAT THIS PRIVISION AND WAIVER HAS BEEN BROUGHT TO MY ATTENTION.";
                    }
                    else {
                        footerText += "\n\n\n\n";
                    }
                    var canvas = document.createElement("canvas");
                    JsBarcode(canvas, vm.VinInfo.ShortVIN, {
                        format: "CODE128",
                        displayValue: false,
                        fontSize: 12,
                        height: 15,
                        width: 1
                    });
                    var barCode = canvas.toDataURL("image/png");
                    var myContent = [];
                    myContent.push({
                        layout: "noBorders",
                        table: {
                            widths: [80, "*"],
                            body: [
                                [
                                    {
                                        width: 80,
                                        border: [false, false, false, false],
                                        image: "data:image/png;base64,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"
                                    },
                                    {
                                        fontSize: 7,
                                        table: {
                                            widths: ["*", 50, 80],
                                            body: [
                                                [
                                                    {
                                                        border: [false, false, false, false],
                                                        bold: true,
                                                        fontSize: 11,
                                                        alignment: "center",
                                                        margin: [50, 0, 0, 0],
                                                        text: "Forest River, Inc. - Forest River Marine"
                                                    },
                                                    {
                                                        bold: true,
                                                        fontSize: 9,
                                                        border: [false, false, false, false],
                                                        margin: [0, 2, 0, 0],
                                                        text: "Marine"
                                                    },
                                                    {
                                                        margin: [20, 0, 0, 0],
                                                        border: [false, false, false, false],
                                                        image: barCode,
                                                        width: 60
                                                    }
                                                ],
                                                [
                                                    {
                                                        border: [false, false, false, false],
                                                        colSpan: 2,
                                                        alignment: "center",
                                                        bold: true,
                                                        text: "CUSTOMER DELIVERY AND WARRANTY REGISTRATION FORM"
                                                    },
                                                    {
                                                        border: [false, false, false, false],
                                                        text: ""
                                                    },
                                                    {
                                                        border: [false, false, false, false],
                                                        text: ""
                                                    }
                                                ],
                                                [
                                                    {
                                                        border: [false, false, false, false],
                                                        colSpan: 2,
                                                        alignment: "center",
                                                        text: "Customer & Dealer: To assure that this form is properly completed and returned to Forest River, Inc.within ten (10) working days after PDI and delivery is performed to activate and ensure warranty coverage, attach the completed form to the VIN on Dealer Connect or email to dcwarrantyreg@forestriverinc.com."
                                                    },
                                                    {
                                                        border: [false, false, false, false],
                                                        text: ""
                                                    },
                                                    {
                                                        margin: [25, 0, 0, 0],
                                                        border: [false, false, false, false],
                                                        text: vm.VinInfo.SalesId
                                                    }
                                                ]
                                            ]
                                        },
                                        layout: {
                                            paddingLeft: function (i, node) {
                                                return 0;
                                            },
                                            paddingTop: function (i, node) {
                                                return 0;
                                            },
                                            paddingRight: function (i, node) {
                                                return 0;
                                            },
                                            paddingBottom: function (i, node) {
                                                return 0;
                                            }
                                        }
                                    }
                                ]
                            ]
                        }
                    }, {
                        fontSize: 6,
                        table: {
                            widths: ["*", "*"],
                            body: [
                                [
                                    {
                                        table: {
                                            widths: [150, "*"],
                                            margin: [0, 0],
                                            body: [
                                                [
                                                    {
                                                        text: "OWNERS NAME:", bold: true,
                                                        lineHeight: 0.5,
                                                        border: [false, false, true, false]
                                                    },
                                                    {
                                                        text: "EMAIL ADDRESS:", bold: true,
                                                        lineHeight: 0.5,
                                                        border: [false, false, false, false]
                                                    }
                                                ],
                                                [
                                                    {
                                                        text: vm.Warranty.Ownership.Name,
                                                        lineHeight: 0.5,
                                                        border: [false, false, true, false]
                                                    },
                                                    {
                                                        text: vm.Warranty.Ownership.Email,
                                                        lineHeight: 0.5,
                                                        border: [false, false, false, false]
                                                    }
                                                ]
                                            ]
                                        }
                                    },
                                    {
                                        layout: "noBorders",
                                        table: {
                                            widths: ["*", "*"],
                                            body: [
                                                [
                                                    { text: "DEALERS NAME:", bold: true, lineHeight: 0.5 },
                                                    { text: "VIN #:", bold: true, lineHeight: 0.5 }
                                                ],
                                                [
                                                    vm.VinInfo.DealerName,
                                                    vm.VinInfo.VIN
                                                ]
                                            ]
                                        }
                                    }
                                ],
                                [
                                    {
                                        table: {
                                            widths: [150, "*", "*", "*"],
                                            margin: [0, 0],
                                            body: [
                                                [
                                                    {
                                                        text: "STREET ADDRESS:", bold: true,
                                                        lineHeight: 0.5,
                                                        border: [false, false, true, false]
                                                    },
                                                    {
                                                        text: "CITY:", bold: true, lineHeight: 0.5,
                                                        border: [false, false, false, false]
                                                    },
                                                    {
                                                        text: "STATE:", bold: true, lineHeight: 0.5,
                                                        border: [false, false, false, false]
                                                    },
                                                    {
                                                        text: "ZIP:", bold: true, lineHeight: 0.5,
                                                        border: [false, false, false, false]
                                                    }
                                                ],
                                                [
                                                    {
                                                        text: vm.Warranty.Ownership.Address, lineHeight: 0.5,
                                                        border: [false, false, true, false]
                                                    },
                                                    {
                                                        text: vm.Warranty.Ownership.City, lineHeight: 0.5,
                                                        border: [false, false, false, false]
                                                    },
                                                    {
                                                        text: vm.Warranty.Ownership.State, lineHeight: 0.5,
                                                        border: [false, false, false, false]
                                                    },
                                                    {
                                                        text: vm.Warranty.Ownership.PostalCode, lineHeight: 0.5,
                                                        border: [false, false, false, false]
                                                    }
                                                ]
                                            ]
                                        }
                                    },
                                    {
                                        layout: "noBorders",
                                        table: {
                                            body: [
                                                [{ text: "ADDRESS:", bold: true, lineHeight: 0.5 }],
                                                [
                                                    vm.VinInfo.DealerAddress.replace(/(\r\n|\n|\r)/gm, " ")
                                                ]
                                            ]
                                        }
                                    }
                                ],
                                [
                                    {
                                        table: {
                                            widths: [150, 60, "*"],
                                            body: [
                                                [
                                                    {
                                                        text: "RETAIL DATE OF PURCHASE (mm/dd/yyy):", bold: true, lineHeight: 0.5,
                                                        border: [false, false, true, false]
                                                    },
                                                    {
                                                        text: "PHONE #:", bold: true,
                                                        border: [false, false, false, false]
                                                    },
                                                    {
                                                        text: "FOREST RIVER INC. SERIAL #:",
                                                        bold: true, lineHeight: 0.5,
                                                        border: [false, false, false, false]
                                                    }
                                                ],
                                                [
                                                    {
                                                        text: delDate, lineHeight: 0.5,
                                                        border: [false, false, true, false]
                                                    },
                                                    {
                                                        text: vm.Warranty.Ownership.Phone, lineHeight: 0.5,
                                                        border: [false, false, false, false]
                                                    },
                                                    {
                                                        text: vm.VinInfo.ShortVIN, lineHeight: 0.5,
                                                        border: [false, false, false, false]
                                                    }
                                                ]
                                            ]
                                        }
                                    },
                                    {
                                        layout: "noBorders",
                                        table: {
                                            widths: ["*", "*"],
                                            body: [
                                                [
                                                    {
                                                        text: "BRAND", bold: true, lineHeight: 0.5
                                                    },
                                                    {
                                                        text: "MODEL #", bold: true, lineHeight: 0.5
                                                    }
                                                ],
                                                [
                                                    {
                                                        text: vm.VinInfo.BrandDescription, lineHeight: 0.5
                                                    },
                                                    {
                                                        text: vm.VinInfo.VINItemNumber, lineHeight: 0.5
                                                    }
                                                ]
                                            ]
                                        }
                                    }
                                ],
                                [
                                    {
                                        table: {
                                            widths: [150, "*"],
                                            body: [
                                                [
                                                    {
                                                        text: "DATE OF DELIVERY (mm/dd/yyy):", bold: true, lineHeight: 0.5,
                                                        border: [false, false, true, false]
                                                    },
                                                    {
                                                        text: "BOAT HULL ID #:", bold: true, lineHeight: 0.5,
                                                        border: [false, false, false, false]
                                                    },
                                                ],
                                                [
                                                    {
                                                        text: " ", lineHeight: 0.5,
                                                        border: [false, false, true, false]
                                                    },
                                                    {
                                                        text: " ", lineHeight: 0.5,
                                                        border: [false, false, false, false]
                                                    }
                                                ]
                                            ]
                                        }
                                    },
                                    {
                                        layout: "noBorders",
                                        table: {
                                            widths: ["*"],
                                            body: [
                                                [
                                                    { text: "PROP BRAND & SIZE:", bold: true, lineHeight: 0.5 }
                                                ],
                                                [
                                                    " "
                                                ]
                                            ]
                                        }
                                    }
                                ],
                                [
                                    {
                                        table: {
                                            widths: [150, "*"],
                                            body: [
                                                [
                                                    {
                                                        text: "ENGINE BRAND & HP:", bold: true, lineHeight: 0.5,
                                                        border: [false, false, true, false]
                                                    },
                                                    {
                                                        text: "ENGINE SERIAL #:", bold: true, lineHeight: 0.5,
                                                        border: [false, false, false, false]
                                                    },
                                                ],
                                                [
                                                    {
                                                        text: " ", lineHeight: 0.5,
                                                        border: [false, false, true, false]
                                                    },
                                                    {
                                                        text: " ", lineHeight: 0.5,
                                                        border: [false, false, false, false]
                                                    }
                                                ]
                                            ]
                                        }
                                    },
                                    {
                                        layout: "noBorders",
                                        table: {
                                            widths: ["*", "*"],
                                            body: [
                                                [
                                                    { text: "ENGINE MODEL YEAR:", bold: true, lineHeight: 0.5 },
                                                    { text: "DATE INSTALLED (ENGINE):", bold: true, lineHeight: 0.5 }
                                                ],
                                                [
                                                    " ",
                                                    " "
                                                ]
                                            ]
                                        }
                                    }
                                ]
                            ]
                        },
                        layout: {
                            paddingLeft: function (i, node) {
                                return 2;
                            },
                            paddingTop: function (i, node) {
                                return 1;
                            },
                            paddingRight: function (i, node) {
                                return 1;
                            },
                            paddingBottom: function (i, node) {
                                return 1;
                            }
                        }
                    }, {
                        text: "PLEASE MARK X IN BOX, LEAVE BLANK IF NOT APPLICABLE. DEALER / LEFT COLUMN, CUSTOMER / RIGHT COLUMN",
                        bold: true,
                        fontSize: 7,
                        alignment: "center",
                        decoration: "underline",
                        margin: [0, 2, 0, 2]
                    }, {
                        fontSize: 6,
                        table: {
                            widths: [6, 6, "*", 6, 6, "*", 6, 6, "*"],
                            margin: [0, 0],
                            body: [
                                [
                                    { text: "D", bold: true },
                                    { text: "C", bold: true },
                                    { text: "PONTOON TUBE CHECK", bold: true },
                                    { text: "D", bold: true },
                                    { text: "C", bold: true },
                                    { text: "MOTOR AND CONTROLS CHECK, Continued", bold: true },
                                    { text: "D", bold: true },
                                    { text: "C", bold: true },
                                    { text: "BOAT OPERATIONAL CHECK", bold: true }
                                ],
                                [
                                    { text: "", rowSpan: 1 },
                                    { text: "", rowSpan: 1 },
                                    {
                                        text: "IFS DRAIN PLUG (if applicable)",
                                        rowSpan: 1,
                                        lineHeight: 1
                                    },
                                    "",
                                    "",
                                    "CHECK ENGINE STOP SWITCH IS WORKING",
                                    { text: "", rowSpan: 1 },
                                    { text: "", rowSpan: 1 },
                                    {
                                        text: "SHOW CUSTOMER COMPLETE OPERATION OF BOAT IN WATER (TEST RIDE)",
                                        rowSpan: 2,
                                        lineHeight: 1
                                    },
                                ],
                                [
                                    { text: "", rowSpan: 2 },
                                    { text: "", rowSpan: 2 },
                                    {
                                        text: "AIR VALVE PRESSURE (3-3.5psi recommended / must use low pressure gauge for testing)",
                                        rowSpan: 2,
                                        lineHeight: 1
                                    },
                                    "",
                                    "",
                                    "CHECK IDLING RPM RANGE",
                                    {},
                                    {},
                                    {}
                                ],
                                [
                                    "",
                                    "",
                                    "",
                                    "",
                                    "",
                                    "TRIM LIMIT INSTALLED AND CALIBRATED (Optional)",
                                    { text: "", rowSpan: 2 },
                                    { text: "", rowSpan: 2 },
                                    {
                                        text: "CUSTOMER INFORMED OF MOTOR WARM-UP PROCEDURE AND BREAK-IN PERIOD (10 hours recommended)",
                                        rowSpan: 2,
                                        lineHeight: 1
                                    },
                                ],
                                [
                                    "",
                                    "",
                                    "VISIBLE DENTS AND CRACKS",
                                    "",
                                    "",
                                    "SAFETY NEUTRAL SWITCH WORKING PROPERLY",
                                    {},
                                    {},
                                    {}
                                ],
                                [
                                    "",
                                    "",
                                    "PONTOON DRAIN PLUGS INSTALLED",
                                    "",
                                    "",
                                    "PROP INSTALLED CORRECTLY",
                                    "",
                                    "",
                                    "REVIEW VINYL CLEANING INSTRUCTIONS WITH CUSTOMER"
                                ],
                                [
                                    { text: "D", bold: true },
                                    { text: "C", bold: true },
                                    { text: "ACCESSORIES OPERATIONAL CHECK", bold: true },
                                    "",
                                    "",
                                    "TILT/TRIM OPERATING CORRECTLY",
                                    "",
                                    "",
                                    "BOAT WARRANTY EXPLAINED"
                                ],
                                [
                                    "",
                                    "",
                                    "NAVIGATION, ANCHOR",
                                    "",
                                    "",
                                    "BATTERY INSTALLED / HOOKED UP CORRECTLY",
                                    "",
                                    "",
                                    "MOTOR WARRANTY EXPLAINED"
                                ],
                                [
                                    "",
                                    "",
                                    "DOCKING LIGHTS (Optional)",
                                    "",
                                    "",
                                    "BATTERY SECURED IN BOX AND IN VENTED AREA",
                                    "",
                                    "",
                                    "CUSTOMER RECEIVED COPY OF OWNER'S MANUAL"
                                ],
                                [
                                    "",
                                    "",
                                    "HORN",
                                    { text: "D", bold: true },
                                    { text: "C", bold: true },
                                    { text: "BIMINI AND MOORING CHECK", bold: true },
                                    "",
                                    "",
                                    "CUSTOMER RECEIVED ALL PRODUCT WARRANTY CARDS"
                                ],
                                [
                                    "",
                                    "",
                                    "RADIO AND ANTENNA",
                                    "",
                                    "",
                                    "MOORING COVER (Not to be used as a travel cover)",
                                    "",
                                    "",
                                    "REVIEW BOAT SAFETY PROCEDURES WITH CUSTOMER"
                                ],
                                [
                                    "",
                                    "",
                                    "GAUGES",
                                    { text: "", rowSpan: 2 },
                                    { text: "", rowSpan: 2 },
                                    { text: "REVIEW PROPER USE OF MOORING COVER STRAP OVER BIMINI FRAME (Traveling or radius position)",
                                        rowSpan: 2,
                                        lineHeight: 1 },
                                    "",
                                    "",
                                    "REVIEW TRIM LIMITS WITH CUSTOMER. IF NONE ARE SET, EXPLAIN"
                                ],
                                [
                                    "",
                                    "",
                                    "LIVEWELL PUMP AND DRAIN (Optional)",
                                    "",
                                    "",
                                    "",
                                    "",
                                    "",
                                    ""
                                ],
                                [
                                    "",
                                    "",
                                    "CHANGING ROOM (Optional)",
                                    "",
                                    "",
                                    "BIMINI FRAME",
                                    { text: "D", bold: true },
                                    { text: "C", bold: true },
                                    { text: "BOAT CHECK", bold: true }
                                ],
                                [
                                    "",
                                    "",
                                    "TABLE (LE - Optional)",
                                    "",
                                    "",
                                    "BIMINI CANVAS",
                                    { text: "", rowSpan: 2 },
                                    { text: "", rowSpan: 2 },
                                    {
                                        text: "\"SHIP LOOSE\" PARTS INSTALLED AND/ OR PRESENT: SKI TOW BAR (if applicable), SMALL PARTS BAG",
                                        rowSpan: 2,
                                        lineHeight: 1
                                    },
                                ],
                                [
                                    "",
                                    "",
                                    "GLOVE BOX AND KEY",
                                    { text: "", rowSpan: 2 },
                                    { text: "", rowSpan: 2 },
                                    {
                                        text: "REVIEW PROPER INSTALLATION OF BIMINI CANVAS (manual & electric bimini)",
                                        rowSpan: 2,
                                        lineHeight: 1
                                    },
                                    "",
                                    "",
                                    "BOAT EXTERIOR: RAILS, STRIPING, PONTOONS, ETC"
                                ],
                                [
                                    "",
                                    "",
                                    "TRANSDUCER DOWN",
                                    "",
                                    "",
                                    "",
                                    "",
                                    "",
                                    "BOAT EXTERIOR: RAILS, STRIPING, PONTOONS, ETC."
                                ],
                                [
                                    { text: "D", bold: true },
                                    { text: "C", bold: true },
                                    { text: "MOTOR AND CONTROLS CHECK", bold: true },
                                    { text: "", rowSpan: 2 },
                                    { text: "", rowSpan: 2 },
                                    {
                                        text: "HOW TO INSTALL BIMINI BOOT PROPERLY (when docked & trailering)",
                                        rowSpan: 2,
                                        lineHeight: 1
                                    },
                                    "",
                                    "",
                                    "BOAT INTERIOR: FURNITURE, CARPET, CANOPY, TABLE, ETC."
                                ],
                                [
                                    "",
                                    "",
                                    "CHECK MOTOR ALIGNMENT / MOTOR MOUNT",
                                    "",
                                    "",
                                    "",
                                    "",
                                    "",
                                    ""
                                ],
                                [
                                    "",
                                    "",
                                    "CHECK CABLES: FREE OF OBSTRUCTIONS AND KINKS",
                                    "",
                                    "",
                                    "REVIEW PROPER MANUAL BIMINI OPERATION (if applicable)",
                                    "",
                                    "",
                                    ""
                                ],
                                [
                                    "",
                                    "",
                                    "NO FUEL OR HYDRAULIC LEAKS",
                                    "",
                                    "",
                                    "REVIEW PROPER ELECTRIC BIMINI OPERATION (if applicable)",
                                    "",
                                    "",
                                    ""
                                ],
                                [
                                    "",
                                    "",
                                    "CHECK STEERING OPERATION",
                                    "",
                                    "",
                                    "REVIEW PROPER TRAILER POSITIONING (manual & electric bimini)",
                                    "",
                                    "",
                                    ""
                                ],
                                [
                                    "",
                                    "",
                                    "CHECK SHIFTER / THROTTLE OPERATION",
                                    "",
                                    "",
                                    "",
                                    "",
                                    "",
                                    ""
                                ]
                            ]
                        },
                        layout: {
                            paddingLeft: function (i, node) {
                                return 1;
                            },
                            paddingTop: function (i, node) {
                                return 1;
                            },
                            paddingRight: function (i, node) {
                                return 1;
                            },
                            paddingBottom: function (i, node) {
                                return 1;
                            }
                        }
                    }, {
                        margin: [0, 2, 0, 0],
                        columns: [
                            [
                                {
                                    text: "LIST DEALER INSTALLED OPTIONS (THESE ARE NOT COVERED UNDER THE FOREST RIVER, INC. MARINE LIMITED WARRANTY):",
                                    bold: true,
                                    fontSize: 6
                                },
                                {
                                    text: " \n \n \n", fontSize: 6
                                },
                                {
                                    margin: [0, 1, 1, 0],
                                    table: {
                                        body: [
                                            [
                                                {
                                                    text: "OWNER/DEALER INSPECTION REVIEW",
                                                    bold: true,
                                                    decoration: "underline",
                                                    fontSize: 6,
                                                    margin: [0, 0],
                                                    border: [false, true, false, false]
                                                }
                                            ],
                                            [
                                                {
                                                    text: "1. INSPECTED EXTERIOR AND INTERIOR FIT AND FINISH.\n2. OPERATED ALL EQUIPMENT AND ACCESSORIES.\n3. CHECKED MOTOR AND CONTROLS.\n4. CHECKED PONTOON TUBES.\n5. REVIEWED WARRANTIES, MANUALS, AND SAFETY PROCEDURES.\n6. REVIEWED AND EXPLAINED OPERATION OF TRIM LIMIT.",
                                                    style: "inspectionList",
                                                    border: [false, false, false, false]
                                                }
                                            ],
                                            [
                                                {
                                                    text: "I have completed the above inspections on the Forest River Marine unit to my satisfaction and have been offered a test drive at the time of the purchase. I ACCEPT THIS UNIT IN ITS CURRENT CONDITION AND WAIVE ANY CLAIM OF NONCOMFORMITY WITH THE EXCEPTION OF ANY ITEMS LISTED BELOW. I understand that these issues regarding damage such as scratches, tears, dents, missing or broken items, etc. will not be warranted except those noted in this space:\n\n",
                                                    style: "inspectionList",
                                                    margin: [0, 1],
                                                    bold: true,
                                                    border: [false, false, false, true]
                                                }
                                            ]
                                        ]
                                    },
                                    layout: {
                                        paddingLeft: function (i, node) {
                                            return 0;
                                        },
                                        paddingTop: function (i, node) {
                                            return 1;
                                        },
                                        paddingRight: function (i, node) {
                                            return 0;
                                        }
                                    }
                                }
                            ],
                            [
                                {
                                    table: {
                                        body: [
                                            [
                                                {
                                                    border: [true, false, false, false],
                                                    text: footerText,
                                                    style: "inspectionList"
                                                }
                                            ],
                                            [
                                                {
                                                    border: [true, false, false, false],
                                                    style: "inputLine",
                                                    table: {
                                                        widths: ["*"],
                                                        body: [
                                                            [
                                                                {
                                                                    border: [false, true, false, false],
                                                                    text: "DATE"
                                                                }
                                                            ],
                                                            [
                                                                {
                                                                    border: [false, false, false, false],
                                                                    text: " \n "
                                                                }
                                                            ]
                                                        ]
                                                    },
                                                    layout: {
                                                        paddingLeft: function (i, node) {
                                                            return 0;
                                                        },
                                                        paddingTop: function (i, node) {
                                                            return 0;
                                                        },
                                                        paddingBottom: function (i, node) {
                                                            return 0;
                                                        }
                                                    }
                                                }
                                            ],
                                            [
                                                {
                                                    border: [true, false, false, false],
                                                    style: "inputLine",
                                                    table: {
                                                        widths: ["*"],
                                                        body: [
                                                            [
                                                                {
                                                                    border: [false, true, false, false],
                                                                    text: "PURCHASER'S SIGNATURE"
                                                                }
                                                            ],
                                                            [
                                                                {
                                                                    border: [false, false, false, false],
                                                                    text: " "
                                                                }
                                                            ],
                                                            [
                                                                {
                                                                    border: [false, false, false, false],
                                                                    text: " "
                                                                }
                                                            ]
                                                        ]
                                                    },
                                                    layout: {
                                                        paddingLeft: function (i, node) {
                                                            return 0;
                                                        },
                                                        paddingTop: function (i, node) {
                                                            return 0;
                                                        },
                                                        paddingBottom: function (i, node) {
                                                            return 0;
                                                        }
                                                    }
                                                }
                                            ],
                                            [
                                                {
                                                    border: [true, false, false, false],
                                                    style: "inputLine",
                                                    table: {
                                                        widths: ["*"],
                                                        body: [
                                                            [
                                                                {
                                                                    border: [false, true, false, false],
                                                                    text: "DEALER'S SIGNATURE"
                                                                }
                                                            ]
                                                        ]
                                                    },
                                                    layout: {
                                                        paddingLeft: function (i, node) {
                                                            return 0;
                                                        },
                                                        paddingTop: function (i, node) {
                                                            return 0;
                                                        },
                                                        paddingBottom: function (i, node) {
                                                            return 5;
                                                        }
                                                    }
                                                }
                                            ]
                                        ]
                                    },
                                    layout: {
                                        paddingLeft: function (i, node) {
                                            return 3;
                                        },
                                        paddingTop: function (i, node) {
                                            return 0;
                                        },
                                        paddingRight: function (i, node) {
                                            return 0;
                                        },
                                        paddingBottom: function (i, node) {
                                            return 0;
                                        }
                                    }
                                }
                            ]
                        ]
                    });
                    if (vm.VinInfo.IsMotorized && vm.requiresDisclaimer) {
                        myContent.push({
                            pageBreak: "before",
                            pageOrientation: "portrait",
                            text: "NEW MOTOR HOME LEMON LAW BILL OF RIGHTS",
                            style: "disclaimer",
                            alignment: "center",
                            bold: true
                        }, {
                            text: "(1) IN ADDITION TO ANY WARRANTIES OFFERED BY THE MANUFACTURER, YOUR NEW MOTOR HOME, IF PURCHASED AND REGISTERED IN NEW YORK STATE, IS WARRANTED AGAINST ALL MATERIAL DEFECTS FOR EIGHTEEN THOUSAND MILES OR TWO YEARS, WHICHEVER COMES FIRST.HOWEVER, THIS ADDITIONAL WARRANTY DOES NOT APPLY TO THE LIVING FACILITIES OF MOTOR HOMES, WHICH ARE THE PORTIONS THEREOF DESIGNED, USED OR MAINTAINED PRIMARILY AS LIVING QUARTERS AND SHALL INCLUDE, BUT NOT BE LIMITED TO THE FLOORING, PLUMBING SYSTEM AND FIXTURES, ROOF AIR CONDITIONER, FURNACE, GENERATOR, ELECTRICAL SYSTEMS OTHER THAN AUTOMOTIVE CIRCUITS, THE SIDE ENTRANCE DOOR, EXTERIOR COMPARTMENTS, AND WINDOWS OTHER THAN THE WINDSHIELD AND DRIVER AND FRONT PASSENGER WINDOWS.",
                            style: "disclaimer"
                        }, {
                            text: "(2) YOU MUST REPORT ANY PROBLEMS TO THE MANUFACTURER, ITS AGENT, OR AUTHORIZED DEALER.",
                            style: "disclaimer"
                        }, {
                            text: "(3) UPON NOTIFICATION, THE PROBLEM MUST BE CORRECTED FREE OF CHARGE.",
                            style: "disclaimer"
                        }, {
                            text: "(4) IF, WITHIN THE FIRST EIGHTEEN THOUSAND MILES OF OPERATION OR DURING THE PERIOD OF TWO YEARS FOLLOWING THE DATE OF ORIGINAL DELIVERY OF THE MOTOR VEHICLE TO SUCH CONSUMER, WHICHEVER IS THE EARLIER DATE THE MANUFACTURER OF A MOTOR HOME OR ITS AGENTS OR ITS AUTHORIZED DEALERS OR REPAIR SHOPS TO WHICH THEY REFER A CONSUMER ARE UNABLE TO REPAIR OR CORRECT ANY COVERED DEFECT OR CONDITION WHICH SUBSTANTIALLY IMPAIRS THE VALUE OF THE MOTOR HOME TO THE CONSUMER AFTER A REASONABLE NUMBER OF ATTEMPTS, THE MOTOR HOME MANUFACTURER, AT THE OPTION OF THE CONSUMER, SHALL REPLACE THE MOTOR HOME WITH A COMPARABLE MOTOR HOME, OR ACCEPT RETURN OF THE MOTOR HOME FROM THE CONSUMER AND REFUND TO THE CONSUMER THE FULL PURCHASE PRICE OR, IF APPLICABLE, THE LEASE PRICE AND ANY TRADE-IN ALLOWANCE, PLUS FEES AND CHARGES, AS WELL AS THE OTHER FEES AND CHARGES, INCLUDING BUT NOT LIMITED TO ALL LICENSE FEES, REGISTRATION FEES, AND ANY SIMILAR GOVERNMENTAL CHARGES, LESS AN ALLOWANCE FOR THE CONSUMER'S USE OF THE VEHICLE IN EXCESS OF TWELVE THOUSAND MILES TIMES THE PURCHASE PRICE, OR THE LEASE PRICE IF APPLICABLE, OF THE VEHICLE DIVIDED BY ONE HUNDRED THOUSAND MILES, AND A REASONABLE ALLOWANCE FOR ANY DAMAGE NOT ATTRIBUTABLE TO NORMAL WEAR OR IMPROVEMENTS.",
                            style: "disclaimer"
                        }, {
                            text: "(5) SPECIAL NOTICE PROVISION: IF WITHIN EIGHTEEN THOUSAND MILES OR TWO YEARS, WHICHEVER COMES FIRST, THE SAME COVERED NONCONFORMITY, DEFECT OR CONDITION IN YOUR MOTOR HOME HAS BEEN SUBJECT TO REPAIR TWO TIMES OR YOUR MOTOR HOME HAS BEEN OUT OF SERVICE BY REASON OF REPAIR FOR TWENTY-ONE DAYS, WHICHEVER COMES FIRST, YOU MUST HAVE REPORTED THIS TO THE MOTOR HOME MANUFACTURER BY CERTIFIED MAIL, RETURN RECEIPT REQUESTED, AND YOU MAY INSTITUTE ANY PROCEEDING OR OTHER ACTION PURSUANT TO THE LEMON LAW IF THE MOTOR HOME HAS BEEN OUT OF SERVICE BY REASON OF THREE REPAIR ATTEMPTS OR FOR AT LEAST THIRTY DAYS. THIS SPECIAL NOTICE REQUIREMENT SHALL ONLY APPLY IF THE 2 MANUFACTURER OR ITS AUTHORIZED DEALER PROVIDES WRITTEN COPY OF THE REQUIREMENTS OF THIS PARAGRAPH TO YOU AND RECEIPT OF NOTICE IS ACKNOWLEDGED BY YOU IN WRITING. IF YOU FAIL TO COMPLY WITH THE SPECIAL NOTIFICATION REQUIREMENTS OF THIS PARAGRAPH, ADDITIONAL REPAIR ATTEMPTS OR DAYS OUT OF SERVICE BY REASON OF REPAIR SHALL NOT BE TAKEN INTO ACCOUNT IN DETERMINING WHETHER YOU ARE ENTITLED TO A REMEDY PROVIDED IN PARAGRAPH FOUR. HOWEVER, ADDITIONAL REPAIR ATTEMPTS OR DAYS OUT OF SERVICE BY REASON OF REPAIR THAT OCCUR AFTER YOU COMPLY WITH SUCH SPECIAL NOTIFICATION REQUIREMENTS SHALL BE TAKEN INTO ACCOUNT IN MAKING THAT DETERMINATION.",
                            style: "disclaimer"
                        }, {
                            text: "NOTICE TO THE MANUFACTURER SHOULD BE SENT TO THE FOLLOWING:",
                            style: "disclaimer"
                        }, {
                            text: "FOREST RIVER, INC., P.O. BOX 3030, ELKHART, IN 46515-3030",
                            style: "disclaimer",
                            bold: true,
                            margin: [0, 10, 0, 0],
                            decoration: "underline"
                        }, {
                            text: "(6) A MANUFACTURER MAY DENY LIABILITY IF THE PROBLEM IS CAUSED BY ABUSE, NEGLECT, OR UNAUTHORIZED MODIFICATIONS OF THE MOTOR HOME.",
                            style: "disclaimer",
                            margin: [0, 0, 0, 5]
                        }, {
                            text: "(7) A MANUFACTURER MAY REFUSE TO EXCHANGE A COMPARABLE MOTOR HOME OR REFUND YOUR PURCHASE PRICE IF THE PROBLEM IS NOT COVERED BY THE LEMON LAW OR DOES NOT SUBSTANTIALLY IMPAIR THE VALUE OF YOUR MOTOR HOME.",
                            style: "disclaimer"
                        }, {
                            text: "(8) IF A MANUFACTURER HAS ESTABLISHED AN ARBITRATION PROCEDURE, THE MANUFACTURER MAY REFUSE TO EXCHANGE A COMPARABLE MOTOR HOME OR REFUND YOUR PURCHASE PRICE UNTIL YOU FIRST RESORT TO THE PROCEDURE.",
                            style: "disclaimer"
                        }, {
                            text: "(9) IF THE MANUFACTURER DOES NOT HAVE AN ARBITRATION PROCEDURE, YOU MAY RESORT TO ANY REMEDY BY LAW AND MAY BE ENTITLED TO YOUR ATTORNEY'S FEES IF YOU PREVAIL.",
                            style: "disclaimer"
                        }, {
                            text: "(10) NO CONTRACT OR AGREEMENT CAN VOID ANY OF THESE RIGHTS.",
                            style: "disclaimer"
                        }, {
                            text: "(11) AS AN ALTERNATIVE TO THE ARBITRATION PROCEDURE MADE AVAILABLE THROUGH THE MANUFACTURER, YOU MAY INSTEAD CHOOSE TO SUBMIT YOUR CLAIM TO AN INDEPENDENT ARBITRATOR, APPROVED BY THE ATTORNEY GENERAL.YOU MAY HAVE TO PAY A FEE FOR SUCH ARBITRATION.CONTACT YOUR LOCAL CONSUMER OFFICE OR ATTORNEY GENERAL'S OFFICE TO FIND OUT HOW TO ARRANGE FOR INDEPENDENT ARBITRATION.",
                            style: "disclaimer"
                        }, {
                            text: "RECEIPT OF THIS NOTICE ACKNOWLEDGED BY:",
                            style: "disclaimer"
                        }, {
                            text: "____________________________________________________ DATE: _________________________",
                            style: "disclaimer",
                            margin: [0, 35, 0, 0]
                        }, {
                            text: "PURCHASER(S)",
                            style: "disclaimer",
                            margin: [0, 0, 0, 0]
                        });
                    }
                    dd = {
                        pageOrientation: "landscape",
                        pageSize: "LETTER",
                        pageMargins: [25, 25, 20, 10],
                        content: myContent,
                        styles: {
                            inputLine: {
                                fontSize: 6,
                                bold: true,
                                margin: [0, 13, 0, 0]
                            },
                            inspectionList: {
                                fontSize: 6
                            },
                            disclaimer: {
                                fontSize: 10,
                                margin: [0, 10, 0, 5]
                            }
                        }
                    };
                    vm.createPDF(dd, "PDIReport.pdf");
                });
            });
            return _this;
        }
        ReportPDIMarineController.$inject = [
            "$uibModalInstance",
            "$state",
            "app.services.VINService",
            "app.services.WarrantyService",
            "vin"
        ];
        return ReportPDIMarineController;
    }(report.ReportController));
    angular
        .module("app.report")
        .controller("app.report.PDIMarineController", ReportPDIMarineController);
})(report || (report = {}));
//# sourceMappingURL=report.pdimarine.controller.js.map
var __extends = (this && this.__extends) || (function () {
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };
    return function (d, b) {
        if (typeof b !== "function" && b !== null)
            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();
var report;
(function (report) {
    "use strict";
    var IPart = (function () {
        function IPart() {
        }
        return IPart;
    }());
    var ReportPDISimpleController = (function (_super) {
        __extends(ReportPDISimpleController, _super);
        function ReportPDISimpleController($modalInstance, $state, vinService, warrantyService, vin) {
            var _this = _super.call(this, $modalInstance) || this;
            _this.$state = $state;
            _this.vinService = vinService;
            _this.warrantyService = warrantyService;
            var vm = _this;
            vm.vin = vin;
            var dd = null;
            vinService.getVIN(vm.vin, true).then(function (data) {
                vm.VinInfo = data;
                warrantyService
                    .getWarranty(vm.vin)
                    .then(function (data) {
                    vm.Warranty = data;
                    vm.requiresDisclaimer = vm.Warranty.Ownership.State == "NY";
                    var retailSoldDate;
                    retailSoldDate = vm.VinInfo.RetailSoldDate;
                    var fullDate = new Date(retailSoldDate);
                    var delDate = ("0" + (fullDate.getMonth() + 1)).slice(-2) +
                        "/" +
                        ("0" + fullDate.getDate()).slice(-2) +
                        "/" +
                        fullDate.getFullYear();
                    var regCreatedDate;
                    regCreatedDate = vm.Warranty.RegCreatedDate;
                    var regDate = new Date(regCreatedDate);
                    var regPartialDate = ("0" + (regDate.getMonth() + 1)).slice(-2) +
                        "/" +
                        ("0" + regDate.getDate()).slice(-2) +
                        "/" +
                        regDate.getFullYear();
                    var myContent = [];
                    myContent.push({
                        layout: "noBorders",
                        table: {
                            widths: [80, "*"],
                            body: [
                                [
                                    {
                                        width: 80,
                                        border: [false, false, false, false],
                                        image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAB2IAAALaCAYAAADjmJO8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAe2VJREFUeNrs3U+MXNd9J/r7BgakWYgmFxZAIo3XJC74AJKAmarZuLlgC16MgbRGCsYI0D1J3AJie2U4HhuzmI2p7bwoCeGVpQe4lXjYgKEg1KgFaCOwuWB7VRUGIPkwxHlkBwzYAL0gTS0i7V79bnVJlE1K/FNddc6tzwe4KD2/95DLc29VNep7v79TVQAAAAAAAACM1f9hCQAAAMhZSml+8DL/4P9W1/WmlQEAACBnglgAAAAm4oFAdXSE0w/8f3JycOx/xv8zlwfHvd3/3h4c/7L735uj//d1Xd9zNQAAANhrglgAAADGJqUUQerJ3eP/3H2dr36n0ZqBzWoY2P5zNQxvt+u6vuwKAgAAMC6CWAAAAJ7KA6Hr4uD4evVZ6FqyzWrYpL1YDduzwlkAAACeiiAWAACAx7I7WnixGo4THrVe2y5asxHGRjC7aW9aAAAAHpcgFgAAgEdKKb1aDYPXeJ23Io3z1WfBrMYsAAAADyWIBQAA4FO7rdcHw1e+2Ha1G8zWdX3ecgAAADAiiAUAAJhxD4Sv36lmY9zwXokxxhHGviuUBQAAQBALAAAwg1JK+6th+PrDSvi6F0ah7Nv2lQUAAJhNglgAAIAZsrvn6yuDY9VqTMz24Hh7cKzVdb1tOQAAAGaDIBYAAKDldkcPr1bD0cPzVmSqRi1Zo4sBAABaThALAADQUrvt1whfX7Ua2YnRxWuD46yWLAAAQDsJYgEAAFpkt/0a+76uDo79VqQIm9WwJbtmKQAAANpDEAsAAFC4lFIErqP266IVKVa0ZGNkcbRkL1sOAACAsgliAQAACpVSOlkN268Rwmq/tksEsWcHx/m6ru9ZDgAAgPIIYgEAAAryQPs1AtiTVmQmrFXD0cWblgIAAKAcglgAAIACpJQWq+Ho4VWrMbO2q2FLdk1LFgAAIH+CWAAAgEzttl9Xq2H7dd6K8IDYSzZasuctBQAAQJ4EsQAAAJlJKcXo4Wi/vmo1+BLbg+PtatiS3bYcAAAA+RDEAgAAZCClNF8N268RwM5bEZ5CtGPfret6zVIAAABMnyAWAABgilJKq9UwfF20GoxJ7B+7NjjOaskCAABMjyAWAABgwnbbr7Hv6+rg2G9F2EOXB8fZwXG+rut7lgMAAGByBLEAAAATkFKKwDX2fI0A9qQVYcIihI3RxdGSvWw5AAAA9p4gFgAAYA+llCJ0jfA1QljtV3IQQezbg2NNSxYAAGDvCGIBAADGbLf9uloN937VfiVna4Pj7bquNy0FAADAeAliAQAAxiSltFgNw9dVq0FhtqvP9pLdthwAAADPThALAADwDFJK89Vn7dd5K0ILxF6y0ZI9bykAAACeniAWAADgKaSUYs/XCF9ftRq01Hb12V6y25YDAADgyQhiAQAAHtNu+/WH1TB8nbcizJDNatiSXbMUAAAAj0cQCwAA8CVSSqvVsP26aDWYcfcGx1o1DGUvWw4AAIBHE8QCAAA8RErpZDUMX1cHx34rAr8ngtizg+N8Xdf3LAcAAMDnCWIBAAB2pZQicI2xwzF++KQVgccSIez5wXFWSxYAAOAzglgAAGDmpZQWq2H7NUJY7Vd4etvVsCW7piULAADMOkEsAAAwk3bbr6vVsP06b0Vg7Naq4V6ym5YCAACYRYJYAABgpqSUovX6SjUMYYG9tz043q6GLdltywEAAMwKQSwAANB6KaX5ahi8xvjheSuSh537d6vbv71XffTJv1XXf7Mz/N9+O/jf7n9+om3v1o3f+//30L4D1cGvHvjc/3b0awerF55/vnrhuecH/32o+d+6c4ctdF5iL9loyZ63FAAAQNsJYgEAgNbabb+O9n5lSiJw/d93dpqw9frg9fbg/zleJ6UJZl881AS1h766vwlpBbRTF2n72uA4qyULAAC0lSAWAABold32a+z7ujo49luRyevduln1/vVG83r9zu3qo08+zvI8j754sPq/vnaw6s4daYLZg/sOuHjTsVkNW7JrlgIAAGgTQSwAANAKKaXVath+XbQakxXt1s3/79owgH3IGOFSxLjjCGQjmD1dH2uatExUtGRjZHG0ZC9bDgAAoHSCWAAAoFgppZPVsP0ao4e1XydoM12rLg6OeM218fqsojH78vFOtVgf05advAhizw6O83Vd37McAABAiQSxAABAUVJKEbhG8BoB7EkrMjmzEL4+ilB2akYt2RhdvGk5AACAkghiAQCAIqSUFqvh6OFVqzE5O/fvVud6W00Ae3vw31TN6OIIZZcGBxO1XQ1bsmtasgAAQAkEsQAAQLZ226+r1bD9Om9FJmfjar96b3CUvOfrXos9ZKMhu9w51TRmmahRS/a8pQAAAHIliAUAALKTUorRw9F+fdVqTM71OzvVev/STI4eflYRxK50TlWn62NNQMvEbA+Ot6thS3bbcgAAADkRxAIAAFlIKc1Xw/ZrBLDzVmQyInCNscPn+peaIJZnM2rJLh3vVt25wxZksqId+25d12uWAgAAyIEgFgAAmKqU0urg5ZVK+3WierduVhtXe9qve+jQvgPVcnehCWW1ZCcq9o9dGxxntWQBAIBpEsQCAAATt9t+jX1fVwfHfisyGRG4Rvi63tuqbt+/a0Em6OXjnWZscbRlmajNaji6+Hxd1/csBwAAMEmCWAAAYCJSShG4Rus1AtiTVmRyovW6cbXfvDJd0ZJdOtFpgtmDg/9mYiKEjdHF0ZK9bDkAAIBJEMQCAAB7KqUUoWuErxHCar9OyM79u9V7V/vVxpW+9mumFncbskvHOxZjsiKIjZbsmpYsAACwlwSxAADA2O22X1cHx3cq7deJGjVftV/LEfvHxj6yK90FLdnJWxscb9d1vWkpAACAcRPEAgAAY5NSWqyG4euq1ZicaL+e6201+7/GPrCUqzt35NP9ZCOgZWK2B8fZariX7LblAAAAxkEQCwAAPJOU0nz12d6v81ZkMiJwvZiuNeOHe7duWJCWiRA2xhYvd05VR188aEEmK/aSjZbseUsBAAA8C0EsAADwVFJKEb5G+/VVqzE51+/sVOv9S83oYe3X2RBB7ErnlJbs5G1Xn+0lu205AACAJyWIBQAAHttu+zWarxG+zluRyYjANcYOR/s1glhmV4wtjv1ku3OHLcZkbVbDluyapQAAAB6XIBYAAPhSKaXVath+XbQak9O7dfPTABYedGjfgWq5u9CMLz44+G8m5t7gWKuGoexlywEAAHwRQSwAAPBQKaWT1TB8XR0c+63IZOzcv9uMHV7vbVW3B/8NXybC2KXjneaViYog9uzgOF/X9T3LAQAA/C5BLAAA8KmUUgSuMXY4xg+ftCKTE+HrxtV+8wpPI1qySyc6zfhiLdmJihD2/OA4qyULAAA8SBALAACM2q+jvV+1Xyck2q8xdnjjSl/7lbHqzh3Z3U+2YzEma7satmTXtGQBAABBLAAAzKjd9utqNQxg563I5ETzNQLY3q0bFoM99cJzz1dLx7vVSndBS3by1qrhXrKblgIAAGaTIBYAAGZMSilar69UwxCWCbl+Z2fYfr3aqz765GMLwsQdffFgtdI5VZ2ujzUBLROzPTjeroYt2W3LAQAAs0MQCwAAMyClNF8Ng9fvVNqvExOB68V0rTrXv9QEsZCDCGEX62PVcudUE84yUbGXbLRkz1sKAABoP0EsAAC02G77NcLXV63G5ETout6/VG2ma9qvZO3QvgPVcnehGV+sJTtRsX/s2uA4qyULAADtJYgFAICW2W2/xr6vq4NjvxWZjAhcY+zwem+run3/rgWhOC8f7zSBbHfusMWYrM1q2JJdsxQAANAuglgAAGiJlNJqNWy/LlqNyendutkEsLH/K7RBtGSXTnSaYPbg4L+ZmGjJxsjiaMlethwAAFA+QSwAABQspXSyGrZfY/Sw9uuE7Ny/2wSvG1f62q+0Wuwlu3S807wyURHEnh0c5+u6vmc5AACgTIJYAAAoTEopAtcIXiOAPWlFJif2fN242m9eYZZES/Z0faxa6S5oyU7WqCUbo4s3LQcAAJRFEAsAAIVIKS1Ww9HDq1ZjcqL9eq631Ywfjn1gYdZ1547s7ifbsRiTtV0NW7JrWrIAAFAGQSwAAGRst/26Wg3br/NWZHKi+Rrjh3u3blgMeIgXnnu+WjrebULZoy8etCCTNWrJnrcUAACQL0EsAABkKKUUo4ej/fqq1Zic63d2qvX+pWb0sPYrPL4IYlc6p5rxxRHQMjHbg+PtatiS3bYcAACQF0EsAABkIqU0Xw3brxHAzluRyYjA9WK6Vp3rX2qCWODpRQi7WB9rmrLducMWZLKiHftuXddrlgIAAPIgiAUAgClLKa0OXl6ptF8nqnfrZrPvq/Yr7I1D+w5Uy92FJpTVkp2o2D92bXCc1ZIFAIDpEsQCAMAU7LZfY9/X1cGx34pMRgSuEb6u97aq2/fvWhCYkNhHNsYWR1uWidqshqOLz9d1fc9yAADAZAliAQBgQlJKEbhG6zUC2JNWZHKi9bpxtd+8AtMTLdmlE50mmD04+G8mJkLYGF0cLdnLlgMAACZDEAsAAHsspRSha4SvEcJqv07Izv271XtX+9XGlb72a8YimIu9RONajVt37kjz2rt1w0JnaLiXbEdLdvIiiI2W7JqWLAAA7C1BLAAA7IHd9uvq4PhOpf06UaPmq/ZrvmK/0GEI121C2Niv9/u/emvs/3e+t/DN6nvf+KZQvoD7Ie6Fle6CluzkrQ2Ot+u63rQUAAAwfoJYAAAYo5TSYjUMX1etxuRE0Haut9Xs/xr7wJKnoy8erFY6p5q9QiN8G9nrIPZBxlTnLVrMo/1kH7xH2HPbg+NsNdxLdttyAADAeAhiAQDgGaWU5qvP9n6dtyKTEYHrxXStaToaPZuvUdsxwrUIYh9mkkHsSIT3Ecau97a0ZDO9b6I1vdw59cj7hj0Te8lGS/a8pQAAgGcjiAUAgKeUUorwNdqvr1qNybl+Z6da719qQjTt13yNmo2xB+iXmUYQ+7v/96NNvRf71PLsHtWkZs9tV5/tJbttOQAA4MkJYgEA4Anstl+j+Rrh67wVmYxR+/Vc/1ITxJKnQ/sONGHZk+71Oe0g1n1WjmG4P9xbmInarIYt2TVLAQAAj08QCwAAjyGltFoN26+LVmNyNBXLECNko/kar097nXMIYh+keZ23CP2XuwtNKKslO1H3BsdaNQxlL1sOAAD4YoJYAAB4hJTSyWoYvq4Ojv1WZDLs3VmGURAW4euTtF8fJscgdsRexPl71gcBeGoRxJ4dHOfrur5nOQAA4PcJYgEA4AEppQhcY+xwjB8+aUUmJ8LXjav95pV87cVo2JyD2AfFQwLneltNS1tLNj/xcMDSiU5zjz7rwwE8kQhhzw+Os1qyAADweYJYAACoPm2/jvZ+1X6dkAi2omm4caWv/Zqxoy8e/DSA3YsxsKUEsQ/y4EDeunNHdu/ZjsWYrO1q2JJd05IFAABBLAAAM2y3/bpaDQPYeSsyORFgGfWatwhcY9TrcudUE8TupRKD2BEPE+R/H8cDBCvdBS3ZyVurhnvJbloKAABmlSAWAICZk1KK1usr1TCEZUKMdS1DhK4rnVPV6frYnrRfH6bkIPZB0Y4d7SeLe5tPbQ+Ot6thS3bbcgAAMEsEsQAAzISU0nw1DF6/U2m/TkwErhFMnetfqq7f2bEgmZp2a7AtQeyD9308cLDe29KSzfR+n1Tbm98Te8lGS/a8pQAAYBYIYgEAaLXd9muEr69ajcmJ0HW9f6lpCGq/5ivCqDimvY9m24LY3/23RSjrvZCnvd7/mEeK/WPXBsdZLVkAANpMEAsAQOvstl9j39fVwbHfikyGFmAZDu07UC2d6DThUy57ZrY5iH3w/aEdnrdRINudO2wxJmuzGrZk1ywFAABtI4gFAKA1Ukqr1bD9umg1JmfU+LMvZt5Gzdd4zfEeansQ+6AIYuP9Yr/kPOX4sMKMiJZsjCyOluxlywEAQBsIYgEAKNpu+/Wn1XD0sPbrhOzcvzsMkq70tV8zFoHScnch+7GrsxbEPmhj8D6K91Lv1g03bIZyfoCh5SKIPTs4ztd1fc9yAABQKkEsAABF0n6djtjnMoKjeCVPEbgOw6NyRqzOchA7Eg83nOttNeOLPdyQn3io4fTgfbXSXdCSnSx7yQIAUDRBLAAAxUgpReN1tRru/zpvRSZDQFSGoy8erFY6p5qwKOf268MIYj/PAw95684d2d1PtmMxJms0tnjTUgAAUApBLAAA2dsdP7xaDQNY44cnxMjU/I3ar8udU00QWypB7MPFQxARxq73tjwEken7L5rnEcqW/P4r0ObgeLuu6zVLAQBA7gSxAABk64H9X1etxmRcv7NTrfcvNeHPR598bEEy1bZGniD28dZo42qveTiC/JTcSC/Y9uB4XSALAEDOBLEAAGRHADtZEbjG2OFz/UtNEEueRu27Nu5RKYh9svfrKJD1fs3zfVraHs0tsF0JZAEAyJQgFgCAbOzuAfuXlRHEEzFq2Gm/5m0Y6nSa1zbfi4LYJ6fBnrdD+w5Uy92FJpTVkp2I7cHxmj1kAQDIiSAWAIAspJTOVALYPTdq09lzMm8R4Cyd6DTjh9vWfn0YQeyzv6+12vMW7+UYW9zmByoyslkNG7KblgIAgGkTxAIAMFUppVcHL38zOOatxt6JxlwENfaXzNtw39fZG2kqiB2fnft3q3O9reaBCy3Z/MzaQxZTtlYNA9ltSwEAwLQIYgEAmIrdfWB/MTgWrcbeiEAmgteNK33t14wZXyqI3Ssbg/d/PIQRB/mZhbHjGbg3OM7WdX3GUgAAMA2CWAAAJuqBfWB/ajX2hvAlfxG4Rviy3DlVHX3x4MyvhyB2b3koI//Pg3gQY6W7oCW7d7Yr+8cCADAFglgAACYmpbRYDVuw81ZjvIwjLUOEriudU81ekbPafn0YQezkxAMao4c1yE937sin+8n6jNgTa4PjR3Vd37MUAABMwlcsAQAAe223BRsB7KtWY3wicB3t+9q7dcOCZErbjZxEEzuO+PyIBzfWe1tashmJz/I4tOb3zGr8LTL4uyTasectBwAAe00jFgCAPZVSivA1Qtj9VmM8rt/Zqdb7l5pGm/ZrvkbNttgDki+mETv99Y9Q1mdKnjTp90wEsa9pxwIAsJcEsQAA7IndFuzfVMP2Cc9o1H4917/UBLHk6dC+A9XSiU4TwGq/Pj5BrM8ZHs/w4Y5u1Z07bDHGI0JY7VgAAPaMIBYAgLFLKZ0cvPxjZS/YZzZqqsX4YfIVI0Sj+RqvPN19LojNi+Z93uKhj+XuQhPKasmOxd8Ojte1YwEAGDdBLAAAY5VSOjN4+amVeHo79+824Ye9G/M2CkIifNV+fTaC2LxtXO3bizpjHgQZm8vVsB172VIAADAuX7EEAACMw+4o4mjBLlqNpxPhawQe8Uq+jAZl1izt7nUcD4mc6201LX0t2by+O+IwGv2ZxTSPC4O/Z35U1/Wa5QAAYBw0YgEAeGa7o4gvDI79VuPJRLARTbONK33t14wdffFgtdI5VZ2ujxkDugc0YsvjwZG8deeO7D400rEYT2dtcPzIqGIAAJ6VIBYAgGeSUlodvPzCSjwZoz7zF4FrjPpc7pxqglj2jiC2XB4myf9zLBr8K90FLdknFyOK/7iu621LAQDA0xLEAgDw1FJKEcCuWonHY6xnGUZNMu3XyRHEtuc6xudbBLPkR7P/qUQjNsLYTUsBAMDTEMQCAPDEdveDjVHEJ63GF4vA9WK6Vp3rX6qu39mxIJnSGpsuQWz7PvcikF3vbWnJZvp5p+3/xF6zbywAAE9DEAsAwBPZ3Q82mrBC2C8Qoet6/1Kzf6L2a74ijIg9FOOV6RHE+ixkOiKIHe4l29WS/XJrdV2/ZhkAAHgSglgAAB7bbggbTdj9VuP3aYGV4dC+A9XSiU4TPmi/5kEQOxufj6YD5G0UyHbnDluMR1sbHD+q6/qepQAA4HEIYgEAeCwppdVq2ITld9gXsQyjfV+1X/N8DwliZ4f9svPmYZUvdXlwvCSMBQDgcQhiAQD4UkLY3xdBQgSvG1f62q8Zi0Bhubtg7GbmBLGza2PwORqfpb1bNyxGhoxvfyRhLAAAj+UrlgAAgC8ihP282OcwgoN4JU8RuA7DAyM2S7HjYYaZtdSMw+14uCXj77w44qGWmCiw0l3Qkh2KrRr+afA30h/XdX3ZcgAA8CgasQAAPFJKKQLY1Vlfh9EYzdjfUECQr6MvHqxWOqeasED7NX+T2DNUI7ZMHnjJW3fuyO5+sh2LUVXRiH1JGAsAwKMIYgEAeCghrJGZJYjANZqvEQpEEEv+RnsqR8i21/uDCmLLFg/BxH2y3tvyEIzP35wJYwEAeCRBLAAAv2eWQ9ho5q33L00kJOLpaWSVJd5LEb5OOlATxLbHKMCPh2PIj4kEwlgAAB5OEAsAwOfMYgg7iRGpPDt7FJYnHmiI99a0wjNBrM9rJmvG9+gWxgIA8HsEsQAAfCqldGbw8tNZ+fdOckQqT2/4o36neSV/MU42gteNK/2pj5MVxLabCQZ5i4dnlrsLTSg7Qy1ZYSwAAJ8jiAUAoJFSWh28/KLt/85pjUjlyYx+wI/wVfu1DBGGxb7K8ZoLQexsGLVk7emdr+Eo+ZlpyUYYe7iu63uuPAAAglgAAGYihI2W3ptbH2pOZW7GfqxvxfvqXG+rebghx/eVINY9SV5Ge8nOwP7e0Yh9SRgLAIAgFgBgxqWUXh28/GNb/32j8cPT2qOSLxc/zI8C2BkaX1msktqHgtjZlmNLm6GYerB0olMtd061+XNfGAsAgCAWAGCWpZRODl4uDI79bfu3RQD75q8/NKYyU/HDe4wdjh/hI4glfyXuxymIJeS0bzG//12w3D3V5kB2ra7r11xpAIDZJYgFAJhRKaX5wcs/VS0LYeMH9zMf/IMANlOjsZSn62ParwUYtV/P9S81QWxpBLH8rniQYNToJh+jQLal71dhLADADBPEAgDMoJRShK/RhD3Zln9TBEZ/fWHDj+sZih/YY+zwSnehOrjvgAUpQFtGegti+aLvjLjH13tbWrIZiZHF8b5t4R6yr9V1veYKAwDMHkEsAMAMSinFnrCvtuXfEyOI13uXihmXOiti9HAcLfxBvZXaGEwJYnkcowcPShq73XbduSPNe7c7d7hN/6zYL3bT1QUAmC2CWACAGZNSOjN4+Wkb/i3x4/nrH7yjzZSRaDMtnehULx/vaL8WIsKnjav95rVtBLE8idJHcbdR7B0b7+OWjLK/Nzj+sK7rbVcWAGB2CGIBAGZISilasP9Y+r/DGOL8jJqv8Ur+Yi/leP9sXOm3+kEGQSxPK4LY5j1ytaclO2URwv70W99uy/fL5WrYjL3nygIAzAZBLADAjEgpxX6wsS/s/pL/HdHaixasH8anL9qvy92FZv/XlrSVWi+arxEu9W7dmIl/ryAW75v2iCA2AtkWfN+s1XX9misKADAbBLEAADMgpRTha4SwJ0v9N0TwGgFsG8enliR+AB+2X7tt27uvtaL9eq63NZPNvtyD2PhM814q770U44uNxJ/ed1BL2rGv1XW95ooCALSfIBYAYAaklH4xeFkt9fztBTt9R188WK10TlWn62ParwWw1+VQ7kHsf3jjvzev9lYuT5v3Vi5BvFf+60tLJX8fxWjiGFF82dUEAGg3QSwAQMuVvi/sm7/+sHpz60MXcgpG7dflzqkmiCV/Ebqu9y814ZDx3eUEsQ+y33JZoiUb77f13paHhSYsvpfO/Mdvl/z9ZL9YAIAZIIgFAGixlNL84OWfqgL3hTWKeHq6c0eatlGEQZTxXomxw7GH5Sy3Xx+mxCB2JB6EiLHFK90FLdlCxPSG0XuRyYj3yY9fWir5++pv67r+kSsJANBeglgAgBZLKcW+sIulnXeEST9595faRRMk9CmP0OfLlRzEPsjDEWXxcMTkxfsj9o4t1B/XdX3eVQQAaCdBLABAS6WU/nLw8jelnXc0YKMJa6zqZBiDWhZjUJ9MW4LYEePCy2Nc+OTEAwt/9cqflrhvbIwmPmxEMQBAOwliAQBaKKV0shqOJC5K/Fj9xoX3XcA9dmjfgWrpRKdpEGm/liFCnI2rfaO6n1DbgtgHRRC70jlVna6PlRg8zZwIYS8O3r/nBt9zWrJ7p+B9Y8/Xdf3HriAAQPsIYgEAWiilFCHsyZLOOVqwRqzureFo027VnTtsMQoQ7ddzva0mvNF+fTptDmJHRi1Z7+3y3tsxvlhLdvziPfHzP/luiWGsEcUAAC0kiAUAaJkSRxILYfdOtF+XuwtNSKM1V4Zovsb7oXfrhsV4RrMQxHq/l/9+j6a7tvt4xf0fe8YWNnbfiGIAgBYSxAIAtEhKab4ajiTeX8L5RhPo+796y5jGMbOPZHniPRDhq4bceM1aEPsg+z+XJVqyzWfAlb4G/Bid+da3m/dBQdbqun7NlQMAaA9BLABAi6SULgxeFks4VyHs+Nkzsiz2jNx7sxzEjtgTujz2hB6vAsPYl+q63nTlAADa4SuWAACgHVJKr1ZC2JkTgWuMIV3pLghZChH3/Xr/UhOyaL+y16Jd+ebWh80R7dhRU5Z8ja5TfD5ES369t6Ul+wzOfPBO81rQff+LwWHDZwCAltCIBQBogZRSjCKOkcTzuZ+rEHY8unNHmoabQKUMApXp0Ih9OA9wlKd362bzGeIBjqdXWDP29bquz7hqAADlE8QCALRASunM4OWnJZzryt//TAj7lIwYLU+EJjF+OPZ+ZPIEsV9u9FCHkeZlMNL82RQUxt4bHH9Y1/W2qwYAUDajiQEACpdSmh+8/LCEc339g3f8cPwURqNE45X87dy/2wSvG1f62q9kr3frRnNECBufMcudU81+0+Rp2GYeTkMw5vzJxZjio187WMI9HpNO4gG711w1AICyacQCABQupRR7ia3mfp4RwmoFPr5ovy53F5rxoVpqZYgwZGNwj8credCIfToRUq10TmnJFiQ+e+I7NkJ1vljc0z//k++W8sDBS3Vdb7pqAADlEsQCABQspbQ4eLmQ+3lGY+eNC++7YI9huO9rt+rOHbYYBYj267neVrN3o0ZafgSxPpN8JvEwEcb+r+/+txIeNNis6/olVwwAoFyCWACAgqWUIoRdzPkco6UTowB5NO2z8miflUEQOz6jln6ML7ZHdRm09L/8uzeasQV872rFAgAUTBALAFCoEtqwsX/d93/1llbOQ9iPsTz2YyyPIHZv2Le6LPat/uJ7+a9e+dPcT/NyXdd/6GoBAJRJEAsAUKjc27ARVP2Xv/uZH31/R3fuSDPqU/u1DHEfX0zXqnP9S00QS1kEsXsrWrJLJzrNZ5qWbBl6t242Y4vt2V7O58Su1+q6XnO1AADKI4gFAChQCW3Y7//q/zG2dVcErrHH4kp3QVhRCGFFOwhiJ2f0kEk0ZclfPGQSn3HrvS0PTA1EKzbzhvd2Xdc2agYAKJAgFgCgQLm3Yd/89YfVm1sfzvx1Mr6zLIKJ9hHETp4HT8pj7Prwvj335z/I/Z7VigUAKJAgFgCgMLm3YaNJGPvCziqjOssT4cPG1X7zSrsIYqcr9r9e6Zwyir0Qsz6KPe7Xc3/2g5xPUSsWAKBAglgAgMLk3IaNH3H/01v/YyYbNaN9X7Vfy7Bz/24zdnjjSl/7tcUEsXmIEDY+G5c7p5qwizI+I8/1tpopAbP0nV7AfrEv1XW96Q4FACiHIBYAoCC5t2F/8u4vZ6pVGO3X5e5CM4ZT26sMo+ar9utsEMT63GQ8n5vx4Mqs7Pv+8z/5btWdy7Z4ulnX9UvuSgCAcghiAQAKklL6xeBlNcdzi2Argti20+wqz6w2uxDE5i4mCUQgm3Hoxe98ls7CJIF4WOB//vkPcn5QQCsWAKAgglgAgEKklOYHLzdzPLdZGElsr8OyzPpehwwJYstgb+3ytH1v7XjY6scv/VGup7dW1/Vr7kIAgDIIYgEACpFS+pvBy1/meG5tHkncnTvSBDkaW2WI0HW9f6m5H7VfEcSWJyYOLB3v2G+7ENGSfXPrw6Yp2zaZjyg+XNf1tjsQACB/X7EEAADFWM3xpNq636YAthwRuMbY4QgCtF+hbKPvlGjJxgSCle6ClmzG4tr89Fvfbh56aFsg+8bmRnXuz36Q89+EZ9yBAAD504gFAChASml18PKL3M4rArD/8nc/a9VecTGC+MeLSwLYAvRu3fw0gIWH0Yhth3gwZrifbMdiZC4asm9ceL81D2hl/Blyr65rTygAABRAIxYAoAw/zPGkYgRsW0LY2Pc1fnCNfeHIV/zIHz/wr/e2WvUAAPBovVs3muONCxvNyOL4nI6HZshPNGT/6pU/bR6Uef2Dd4r/nF7vXcp17+L98ZBeXddr7joAgLwJYgEAMpdSOjl4OZnbeY32hWuDaFud+dZ/Nv4yYxG+blztt3YvYuDLxRSGaMDHEUHsSudUM744HqQht+/Vw9X//PMfNH8nxENbJd9z8W+I8csZemVwrLnbAADyJogFAMjfd3I8qbaEsD9+6Y+0YDMVYf+53lZ1MV3TfgU+J/aDPvPBO00IGy3ZpeNdI+UzE9cmvmPj+vzk3b9vQs0SRfCf6f31akppvq7rbXcbAEC+BLEAAPlbze2EYuRg6ftyxg/EP/+T7xpvmaGN3cZbjCIF+CIPtmQP7TtQLXcXmtBMSzYfEWD+r+/+t+on7/6y2M/1N3/9YfXzub/I8dReHRx/6y4DAMiXIBYAIGMppfiBbX9u5xU/SJYswtcIYf1Qn49ot0WQsnG1V2xrCpiuaM6/ceH95oh9PWNscbQxmb7hw09/0ewbW+KDXMN9im/m2Ir9YSWIBQDImiAWACBvr+R2QvFDZMlNxfhxPtO93mZOBK4xdvhc/1ITxAKMy4Mt2aUTneaz3z7g0xffv82+7B+8U9y5v7G5UZ37sx/kdlrzKaWTdV1fdncBAORJEAsAkKmUUjRhV3M7r5LbsELYPETout6/VG2ma9qvwJ6KlmzsaR7H4m5DdmnwXcD0jNa/tDA2vrs2mv1is7t/vjM4BLEAAJkSxAIA5OvV3E6o5DasEHa6InCNscPrva0mGAGYtHj4I443Lmw0+8iudBe0ZKek1DA2JjhkGMTG34s/clcBAORJEAsAkK/sxhKX2oYVwk5PhPcRwJa4JyDQTvFgSLTy44gxuaP9ZO0bPlklhrHRis1wr1jjiQEAMiaIBQDI12JOJzP88bG8NqwQdvJ27t9tgteNK33tVyBr8b0WR4SwMbZ4uXOqOvriQQszISWGsfFQ2s/n/iK30zKeGAAgU4JYAIAMpZRizNz+nM4pmkOliaaTEHZyYuRn7J8XrwAliZZsPEASRwSxK51TWrITEmHsaC/fEkRwHw+nZRbYG08MAJApQSwAQJ6yGks8ajiWJH4g/atX/tSdNIF741xvqxk/HEEGQOkiZBs1NGOqQuwnm9ko2tb53je+We38tpy/NeLhtMwe9IrxxPN1XW+7mwAA8iKIBQDI02JOJ1NaCBsNpjP/8duaTHtoY7c5VuK4aoAn+f6L49C+A9Vyd6EZX3xw8N+M3399aan637/ZaYLwEu6LON/M/s6IVuzfupMAAPIiiAUAyExK6eTgZT6nc4q9Pkvy45eW7PG3B+LH8WgBxehh7VdglsTo3DcuvN8cEcbGON14ZXxGD1F9/1dvFfEdE5MgYk/hjJyuBLEAANkRxAIA5Gcxp5OJ0C1+gC5m8XZ/IGc84sfwi4N74Fz/UhEtJYBJfC/GES3ZpROdZnyxlux4xENU31v4ZhN45269t5VbEPuqOwgAID+CWACA/GS1P+xGQWOJo02T2Z5txerdutm0fbRfAR4uHlJ6c+vD5ujOHdndT9aDQM8qws3N9P9mP/o+rn98V+a0f3BKabGu6013EQBAPgSxAAD5WczlRCKAiyCuFBHC2hf22a53hK/R8impBQ0wbREaxvHGhY1q6Xi3WukuaMk+gzPf+s/Vyt/9LPsHgeI7M6cgdvdvyE13EABAPgSxAAAZiSZDTudzsaAQNtpI9ut7OhG2R/O5pNAdIEcRHMZe2nHEmN2Vzqnq9OC7yUNCTyZC7OXuqaZtnPv350/zOqXT7h4AgLwIYgEA8rKY08nEvqCliPYMj2/n/t3qvav9auNKX/sVYA/EvtpnPninCWHjQaEYuRvhLI/ne9/4ZvbfUaPJIRk9CLbozgEAyIsgFgAgL1/P5UQiqIsfkUsQ+/IZAfl4Rs1X7VeAyYiwLh58iSOC2OFesl0t2cfwvYVvNmF2zi7mFcTaJxYAIDOCWACAvCzmciK9WzeLWbT4oZZHi1D9XG+r2csu9/32ANosHnB648771RsX3v80kM1sj9GsLA3WKMYT59yKzXA8cfwtuenuAQDIgyAWACATKaX5wcv+XM6nlMakNuzDReAaLZ1oYPVu3bAgAJkZtWQPDb7Dlk50fJ89Qu6t2AzHE3/dXQMAkA9BLABAPhZzOplSglht2M+LttV6/1Jz/bRfAfIXbc9ofcYRYV60QHMadTttJbRiY4qIfWIBAHgYQSwAQD6yaTBow5YlAtcYOxzNqlL29QXg4d+/cURL9nR9rFrpLvieq/JvxcYEih+/9Ee5nM7+mLJS1/W2dxQAwPQJYgEA8nEylxMpZX/Y2FtvlsV1GgWwALRHtD9jukEc3bkju/vJdmZ2PSKUfuG557Od9BDXK/Zjzyg0nx8c295JAADTJ4gFAMhHPkHsv+a/p2i0hbpzh2fuJokfeqMttd7bynpMIwBj+k6+daM53riw0TyAFKHs0RcPztQaRAgbo39zfvAoHo5aOp5NELs4ODa9ewAApk8QCwCQgRghN3jZn8O5RNukhPG2p2ds/7wIXzeu9osZGw3A+L+fRy3ZCGJXOqc+bYrOgtPZB7E3cmotf907BgAgD4JYAIA8zOdyIvFDYglenoERjdF+jR+dN670tV8B+FQ8MBV7po6aotGUbfuUiMXMxxNntq3DvHcJAEAeBLEAAHlYzOVEStgfNsYSt3ksYzRfI4AtJRQHYDoilHxv9zsjvhuXuwtNKNvWlmzO44njgam4Hpms/UnvDgCAPAhiAQDy8NVcTuT6b4wlnsq639kZtl+v9rJt+wCQrwgC37jwfnPE1Ij4rlxs2fdlCeOJc1nz2Pairutt7wwAgOkSxAIA5CGb5kIJLcy2jF+MwPViulad618qYl9eAMrwYEt26USnCWYPDv67dN25I1mfXzzMllH4PT84tr0bAACmSxALAJCH+RxOopQwsPSGT6zzev9StZmuab8CsGeiJfvm1ofNMdxLtlP0d2iM/Y0wNteHxprtHb6RzenEQ36b3gUAANMliAUAyMN8DicRP9jmrtS9YSNwjbHD672tItYZgHaJh3/iiDAz9pFd6S4U2ZI9+rWD2QaxO7/N6vt9v7seAGD6BLEAAFMWe3jlci4l7A/b/YMjRV3fnd02Us572gEwO+LBoJjKEEe0S7/3jW8WNfI/zjXOPUeZPWj1dXc7AMD0/TtLAAAwdfO5nEgJo4kPfbWcgsfG1X618nc/E8ICkKVoln7/V29Vb1x4v5hzPpR5i7cZT5wHjVgAgAwIYgEApi+bH8pK2K/06NcOFXFRI4Q988E79oAFIHvRMH198J1Vgty3KNjJpxV70p0NADB9glgAgOnL5oeyXPdce1AJe8SOQlgAKEVMbxDGPruMxhNrxAIAZEAQCwBAo5Tm5gvPPZ/1+UUT5o0LG24oAIoTYexmulbA3wL/Pt+/A357140EAMCnBLEAANP31RxOooT9YUtow5754B+MIwagWK8XMFb/6NdybsTey+ZcUkqL7mgAgOkSxAIATJ89vB5Tzg2YEG3YEsY7A8CjRAh7MfNW7AvPP5/x+v2bmwgAgE8JYgEAaFz/zW2L8IxipCMAlK6E8cTZ/j1VwIQRAAAmRxALAEDDON1n17t10yIAUDxBbGvstwQAANMliAUAmD4/kj2m7tzhrM/v+h2tYgDaIcbt5yrnPWJDRg+32f4CAGDKBLEAANOXxY9kO7+960o8I61iANri9m/vZXtuue8ZbzwxAAAjglgAABq379+zCAAAAAAwJoJYAAAAAAAAgDETxAIAAAAAAACMmSAWAAAAAAAAYMwEsQAAAAAAAABjJogFAAAAAAAAGDNBLAAAAAAAAMCYCWIBAAAAAAAAxkwQCwAAAAAAADBmglgAAAAAAACAMRPEAgAAAAAAAIyZIBYAAAAAAABgzASxAAAAAAAAAGMmiAUAAAAAAAAYM0EsAAAAAAAAwJgJYgEAAAAAAADGTBALAAAAAAAAMGaCWAAAAAAAAIAxE8QCAAAAAAAAjJkgFgAAAAAAAGDMBLEAAAAAAAAAYyaIBQAAAAAAABgzQSwAAAAAAADAmAliAQAAAAAAAMZMEAsAAAAAAAAwZoJYAAAAAAAAgDETxAIAAAAAAACMmSAWAAAAAAAAYMwEsQAAAAAAAABjJogFAAAAAAAAGDNBLAAAAAAAAMCYCWIBAAAAAAAAxkwQCwAAAAAAADBmglgAAAAAAACAMRPEAgAAAAAAAIyZIBYAAAAAAABgzL5iCQAAYDy+t/BNiwBfYuNKv7p9/66F8JlB5g59db9FAACAZySIBQCAMfneN4Qq8GV6t24KYn1mAAAAzASjiQEAAAAAAADGTBALAAAAAAAAMGaCWAAAAAAAAIAxE8QCAAAAAAAAjJkgFgAAAAAAAGDMBLEAAAAAAAAAYyaIBQAAAAAAABgzQSwAAAAAAADAmAliAQAAAAAAAMZMEAsAAAAAAAAwZoJYAAAAAAAAgDETxAIAAAAAAACMmSAWAAAAgGJ89Mm/WQQAAIogiAUAAACgGNd/s2MRAAAogiAWAAAAAAAAYMwEsQAAAAAUY+e3dy0CAABFEMQCAAAAUIzb9+9ZBAAAiiCIBQAAAKAYvVs3LAIAAEUQxAIAAABQhM10zSIAAFAMQSwAAAAARbgoiAUAoCCCWAAAAACKoBELAEBJBLEAAAAAZG/jar/66JOPLQQAAMUQxAIAAACQvTe3PrQIAAAURRALAAAAQNbe/PWH1e37dy0EAABFEcQCAAAAkK2d+3er9d4lCwEAQHEEsQAAAABkKfaE/fG7v7Q3LAAARRLEAgAAAJClv76wUV2/s2MhAAAokiAWAAAAgOy8/sE71XtX+xYCAIBiCWIBAAAAyIoQFgCANviKJQAAAAAgB7EXbISwm+maxQAAoHiCWAAAAACmLvaC/cm7v6xu379rMQAAaAVBLAAAAABTEy3Y9f6l6s2tDy0GAACtIogFAAAAYCo2rvabAFYLFgCANhLEAgAAADBRAlgAAGaBIBYAAACAPbdz/2713tV+tXGlL4AFAGAmCGIBAAAA2BOx/+vFdK3a3D0AAGCWCGIBAAAAGJverZtV719vNMHr9Ts7FgQAgJkliAUAAADgmUTo+uavPxS8AgDAAwSxAAAwJv/hjf9uEYDHFq1BCIe+ur86uO9A0f+G7tyR6vq7v3QxAQDgAYJYAAAAmILv/+oti8DnHH3xYNX9gyPVSnehuGD2heeer14+3qneu9p3IQEAYNe/swQAAAAA0xdjfdf7l6qX3/q/q9c/eKf66JOPizr/peNdFxEAAB4giAUAAADITDRL/9Nb/6OoPVe7c4erQ4WPWAYAgHESxAIAAABkKBqxMcK6pDB2ubvgwgEAwC5BLAAAAECmRmHszv27RZzvYn3MRQMAgF2CWAAAAICMRRh75oN/KOJcD+47IIwFAIBdglgAAACAzPVu3RgcN4s416XjHRcMAAAqQSwAAABAEdb7l4o4z2jEHtp3wAUDAGDmCWIBAAAACrCZrjVjiktw2nhiAAAQxAIAAACUYuNqr4jzXOkuuFgAAMw8QSwAAABAIdZ7W0Wc58F9B6ru3BEXDACAmSaIBQAAACjE7ft3q96tm0Wc68vHOy4YAAAzTRALAAAAUJBSxhMvHe9ULzz3vAsGAMDMEsQCAAAAFGQzXas++uTjIs516XjXBQMAYGYJYgEAAAAKEiHsxXStiHM1nhgAgFkmiAUAAAAozLn+pSLO8+iLB5sDAABmkSAWAAAAoDDX7+w0RwlWOqdcMAAAZpIgFgAAAKBA64W0Yk/Xx6oXnnveBQMAYOYIYgEAAAAKtFnIPrERwi7Wx1wwAABmjiAWAAAAoEAfffJxtXG1X8S5Lh3vumAAAMwcQSwAAABAod4rJIjtzh2uDu074IIBADBTBLEAAAAAherdulHt3L9bxLkudxdcMAAAZoogFgAAAKBg53pbRZyn8cQAAMwaQSwAAABAwTau9oo4zxeee756+XjHBQMAYGYIYgEAAAAK9tEnH1eb6VoR53q6PuaCAQAwMwSxAAAAAIXbuNov4jwX62PVoX0HXDAAAGaCIBYAAACgcNGI3bl/t4hzXTphPDEAALNBEAsAAADQAu8V0oq1TywAALNCEAsAAADQAhtXyghiD+470IwoBgCAthPEAgAAALTA7ft3mxHFJVjSigUAYAYIYgEAAABa4mIhQWw0Yl947nkXDACAVhPEAgAAALRE7BP70ScfF3GuS8e7LhgAAK0miAUAAABokY2rvSLOc6W74GIBANBqglgAAACAFlnvbRVxngf3Hai6c0dcMAAAWksQCwAAANAit+/fra7f2SniXF8+3nHBAABoLUEsAAAAQMus9y8VcZ6n62PVC88974IBANBKglgAgOm7l8NJdOcOuxIA0BKb6Vr10ScfZ3+eEcIu1sdatfaCZQAARgSxAADTd9kSPJ6d3961CADwGCKEvZiuFXGuy51TrVr7oy8ezOVU7nknAABMlyAWAIBi3L7v90QAeFznChlPHMFlRuFlm3jYDwBgygSxAAA0jn7ND6AA0CbX7+w0RwlWWtKKNZYYAIAHCWIBAKYvi5rnC8/9e1cCAFrmvav9Is7zdEv2iT364iE3HQAAnxLEAgBM3z/ncBIlNDiu37ntbgGAJ7BxtVfEecbfIS8f77hg47VtCQAApksQCwBAo4S92T765GMXCgCe8Ltzo5BW7NLxbvHr3Z07nM251HW97R0AADBdglgAgOm7l8uJlNGK3XHHAMATKGU8cYSYh/YdcMEAAGgNQSwAwPRdzuVEStjXTCsWAJ5M79aNauf+3SLOdbm7UPRad//giL8vAQD4lCAWAIBPHf1a/uOJe/96w4UCgCd0rrdVxHku1seKXueMpovcc9cDAEyfIBYAYMrqut7M5VwOfXV/9utlNDEAPLmL6VoR53lw34Giw9ijL2bzUNu2ux4AYPoEsQAAfOro1/IfTSyIBYAnd/v+3WqzkDB26XinyDXuzh3J6XT+xV0PADB9glgAgDxs5nASGbU4Hil+SC5lnzsAyMnG1X4R5xmN2EP7DhS3vof2ZTVZZNsdDwAwfYJYAIA8ZLGPV+xrVsIPn71bN90xAPCEohFbysNMSyfKa8Vm9kDbtjseAGD6BLEAAHn451xOpIRWbCmjFQHAd+jTebnA8cSZbfFw2d0OADB9glgAgDxs53Ii3bnD2S9W79YNdwwAPIX13lYR53lw34Hc9lwt6W+oe3Vd33O3AwBMnyAWACAP27mcSPcP8v/R86NPPtaKBYCnEHutlzLiv6RWbGahsTYsAEAmBLEAABmo63ozl3OJ0cSxV2zuLgpiAeCpbFztFXGeS8c7RfxNEjKbKCKIBQDIhCAWACAf27mcSAmjAN+72m+asQBAe79Dl453izjPzCaK/Iu7HAAgD4JYAIB8ZNNeKGGf2FBKowcAfIc+nZXuQhHnqRELAMDDCGIBAPLxz7mcSAn7xIb13pa7BgCeQrRiS3Bw34Fm24ScLdbHsjqfnLa8AACYdYJYAIB8bOZyIvGD56F9B7JfsNv371YbhfyQDAA5uX5npzlKsNI5lfX5acMCAPAoglgAgHxk9cPZ6czaHY/yniAWAJ7Kev9SEecZf5O88Nzz2Z5fZo1YQSwAQEYEsQAAmajr+l5ln9gn1rt1Y3DcdAMBwBPaTNeqjz75OPvzjBB2MdMHxGKKyMG8pohcdGcDAORDEAsAkJdsgtjFzNsnD3r9g3fcOQDwhCKEvZiuFXGuy5mOJ375eCe3U9p0ZwMA5EMQCwCQl6xaDIuFjCe2VywAPJ1zhYwnznX/+sz+VrpX1/W2uxoAIB+CWACAvGzmdDJLx7vFLNwbFzaKGK8IADm5fmen2rl/10I8hQzHEm+6KgAAeRHEAgBkZLfFsJ3L+cQ+sTm2Tx4mQti/vrDhJgKAJ3Sut5X9Ob756w+bCRg5yXAssf1hAQAyI4gFAMjPZk4ns3SiU8zCvXe1X/Vu3XQHAcAT2Ljay/r8orG73stvhHKGk0POu5sBAPIiiAUAyM+7OZ1Mhm2PL/STd//eiGIAeALxvZnzXutnPviH7L7bY2/YF557PqdT2rY/LABAfgSxAAD52czpZGLvs+7ckWIWL36off2Dd9xFAPAkf3yka1meV4wk7t26kd15LXdO+fsRAIAvJYgFAMhMXdf3qsx+TFvuLBS1hvFjcvxwCwA8/nfnTmZ7sF6/s1O9uZXf9/mh5iG1w7md1rvuYgCA/AhiAQDylNWPaTF+L350LEn8cJtruwcAcvReRuOJY8LFT979ZZbrtNzN8gG1TXcwAEB+BLEAAHk6n9sJZfqj4xeKEcXRpgEAvtzGlXyC2Ahhb2fW0A2xL+zS8W52fzfuTlQBACAzglgAgAzVdb09eNnO6ZziR8f48bEk0ab5/q/eEsYCwGOI4DOHaRJvXHg/y31hw3L3VI5/DxlLDACQKUEsAEC+smrFxo+O8eNjaUZhbLwCAF9sY8rjieP//nr/Urbr8/Lxjr8ZAQB4bIJYAIB8vZ3bCS13ThXXig0Rwv7/7N1PjBzXnSf414QBew/Wlg4jgMIQTgkBLSAJMF21F5MHFaHDNmB6RGEbAsTpWRWBaS90aEi0d+ewF5HXnW6YhT4I3T2AkrO7JCAM4FKbDcylodRBmlPR1YClAYSAlAYXIqA9qNo+jH3qjV9GlFiSSNa/zKiIF58PEMgSTRczfxGR+TK+8XvvX//Hv9IZCwB7iI7Y47p5KULYK//5P3W2NhHCnnzk0a49LdMSAwB0mCAWAKCjiqLYSh2bnrivXbEhpls0TTEA7O3Wh5ut/5vx+dzlEDb85MzzXXxapiUGAOgwQSwAQLfpip2jnWmKN+986sgCgAe4uflBq/9ehLDx+dxlHe2GDaYlBgDoMEEsAEC3jbv2hPrcFRt2wtgurz8HAMcpZpFo66al+He6vpZ7jH1+eu58F5+aaYkBADpOEAsA0GFFUUyrh62uPa8+d8Xu+Mt3/z5d/c//qdMXfgHguLQxPXGsCdv1EHY27lnp7LjnuiMVAKDbBLEAAN233rUnFBcjf9bNzpAD+eWHt9O//o9/Zd1YALjPZ+QiA9IIYbu+JuzOmCduQOug7aIoTEsMANBxglgAgO6Li2ydm3bu/DPL6anHTva+uDH94sX/66/S3/yXf9AdCwC7vFd+tJDfGzNS9CGEDXHjWUe7YceOUACA7hPEAgB0XLP2Vyc7Hn62ej6bOv/NB/8w645ta008AOi6G3NeTz1ueIqbn6Lbtg9WTj05u/Gso9YdoQAA3SeIBQDoh05ebFs59UT6cXcvUB5YdMfGWnX/69v/Id2tfgaAIYup++c1fX/c6PSv/vb/7NVyAD9b/VFXn9qkKIqpIxQAoPsEsQAAPVAUxVb1MOnic/tpd6fsO7TNO5+kH//tv59NnSiQBWDIbs6hK/Yv3/372Y1OfVoCINaF7fASDNcdmQAA/SCIBQDoj05edIsQNtZPy1FMnRiB7P/2zv9tymIABmlyhHVio/s1piK+Oecpjhft8UceTT8583xXn960KIqxIxMAoB8EsQAAPdFcdJt28bnF+mmxjlqu4iJ0dPL8q7/997OLybpkARiK6GK9dcA1XeP/E12wEcL2aSriHW/88Z90ebYPa8MCAPSIIBYAoF86OxXdlT/+n7ObovjrYg3ZuLAcXbI7HT5CWQBy98sDBLER2sZasH3rgt0RUxKvnHqiq09vu9rGjkgAgP74lhIAAPTKtWp7rdqWuvbETj7y6KyDJKbxHYLo8PnLz/9+FszGGnI/fmbZ0QlAlmLt9LjxKD7rH/x3Pp2trf5Zj29Q6viUxGFcFMW2IxIAoD90xAIA9Ehz8a2zU9KtFk8PMpCchbLv/r0DFIBs3dj84L5/Xk/f/x9mU/h/1vNZIv7ihT/t+uwepiUGAOgZQSwAQP9c6/KT++m587OOEgAgH7c+3Pzy5511Y2Pt9JgJIzpm++5n5340m+Giw6IbdupIBADoF1MTAwD0THTFlmU5rn5c6+Lzi06S6CiJzpi4UAsA9F98pse6rzELRHTB5vQZHzN6xNqwHXfVUQgA0D86YgEA+qnTF+Oio+Rn587bSwCQkZiG/5cf3s4qhH28WeO+43TDAgD0lCAWAKCHmotxnQ5jzz+zPMj1YgGAftiZxaPj68KmpBsWAKC3BLEAAP0Va8Vud/kJRodJx9dbAwAGKmbv6ME4RTcsAECPCWIBAHoq1oqtHta7/jz/+qU/E8YCAJ3ys3M/ms3e0XEx1rtsbwEA9JcgFgCg3zrfFRvT/V35n/6kD9P+AQADEEsnvLx8tg9Pdb258Q4AgJ4SxAIA9Fhzca7znRLRERudscJYAOA4rRZPz5ZO6IFpqm+4AwCgxwSxAAA9VxTFuHrY6vrzjDC2Jxc+AYAM9WwsclU3LABA/wliAQDy0Iv1w6IL5YowFgBoWc9m55g0N9oBANBzglgAgAwURTGpHjb68FzPP7MsjAUAWtPDJRKu2msAAHkQxAIA5CO6YnsxhZ0wFgBoQw9D2GvNDXYAAGRAEAsAkImiKKapRx0UwlgAYJF6GMJuJ92wAABZEcQCAGSkKIpr1cNWX56vMBYAWIQehrDhUjWW27b3AADyIYgFAMjPpT492Qhjb/ybP+/bhVIAoKNWi6f7GMJuFEWxYe8BAORFEAsAkJmiKKIjtlfT2vW0awUA6JgfP7Oc/uKFP+3bmCK6YC/bewAA+RHEAgBkqCiKK6lHUxSHCGP/7s/+3ewRAOCgfnbuR+mNfi55cLkau03tQQCA/AhiAQDydalvTzi6V6IzNrpZAAD2O36ILtiXl8/28enHlMRjexEAIE+CWACATDVTFPdumru4mBrdLD8587ydCAA81M7yBrEubA/FlMSX7EUAgHwJYgEAMlYUxbXqYdLH5/6THz5v3VgA4IEifI2xQo+XNXixGqtt25MAAPkSxAIA5O/FVHdc9M7KqSdm68aunHrSXgQAvhTrwcZ0xD2+YetaURQTexIAIG+CWACAzDWdFi/29fnX68b+W1MVAwCz7tcb/+bP+7oe7I6tanx22d4EAMifIBYAYACajourfX4NMVVxXHjt8fSDAMARRPja86mIQ69vkAMA4GAEsQAAA1EUxZXU0/Vid+x0weiOBYDhePyRR2cBbExHnMHa8ZeqMdnUXgUAGAZBLADAsEQHxrTvL0J3LAAMQ9x89f/8L38+Wzc+A1eLotiwVwEAhkMQCwAwILvWi93u+2vZ6Y7NpDsGANhl5dST9SwYP3w+l8/5jWZ2EgAABkQQCwAwMEVRbFUPl3N5PbFe3N/92b9LP35m2c4FgJ6LaYj/4oU/TX/90r/NaeaLGHtdsncBAIZHEAsAMEBFUYyrh6u5vJ7olHnjj/8k/fLP/vdZBw0A0L/P8piG+O+qz/LV4umcXtpsNpJmVhIAAAbmW0oAADBMMT1eWZbfq35cy+U1nXzk0VkHzeadT9Pf/Jd/qB4/saMBoMMigH155exshosMlxqI8PVcNeaa2tMAAMMkiAUAGLCiKC6VZTmqflzN6XWtnHoi/fUpgSwAdFXmAeyOy82SEAAADJQgFgCAF6vt3Wo7ndsL2x3I3rz9fpqUH9nbAHCMYg3Y888u5x7AhkvNUhAAAAyYIBYAYOBizbKyLM+lTMPYEIFsbHd/+0W6sflBuvXhZvrdH35v5wNAS5567GS6uHw2nX9meQgv96oQFgCAIIgFAGAnjI3O2F9V21KurzPWkP3ZuR+ln5x5Pr1XfpRu3H4/ffz5XQcAACxAdLyuFk/Pul8jiB2IcTWuumLvAwAQBLEAAMwURTHd1Rm7lPNrjQvD0ZETmy5ZAJivne7X54qnc59++OsihL3kCAAAYIcgFgCALxVFsTWUMHbHTpdsbLc+vJ1+WW2bdz5xMADAAdQ3Oa2kiytnZp+tAySEBQDgGwSxAAB8xRDD2B27u2QjkL3169vps+pnAOD+Vk49mX7cfH4OmBAWAID7EsQCAPANQw5jQ3Ty/OSHz8+2SfnRrFM2HgGAlB6vPifPP7s8C2AH2v26mxAWAIAHEsQCAHBfQw9jd6wWT8+26JKNMPbm5ge6ZAEY7GdidL7GIzNCWAAAHkoQCwDAA+0KY9+qttNDrkV0/Ly8fHa2bd75NN36cHM2fTEA5Cy6X19eOTNb/zXWgeVLQlgAAPYkiAUA4KG+1hl7WkViPbwnZttPz51P75UfpRu3308ff35XYQDIRr3u68rs845vuFSNj8bKAADAXgSxAADsqSiK7SaM/UW1rapILTqDzs8uVC/Pgtibt9+fTV/8uz/8XnEA6J2nHjuZLi6fTc8VT+t+fTAhLAAA+yaIBQBgXyKMrR7OlWUZ0xSvqchXxcXrN/74T9JP//D7WZdsTFu8eecThQGg0yJwjTVfY+r9+CzjgWIc9GI1HpooBQAA+yWIBQDgQGI9tLIsf1P9+IZqfNPuLtm7v/0i3dj8YLaerC5ZALpk5dSTs+mHdb/uyzTVIeyWUgAAcBCCWAAADqwoiitlWU6rH39ebUsqcn8nH3k0/ezcj2bbrQ9vz6Ytjg0AjkN9s9BKurhyZvYZxb5E+HqumRkEAAAORBALAMChxPpoZVnGxclYN3akIg+3u0s2pi2+9evb6bPqZwBYtJh6OD6D4pEDGcdMIMoAAMBhCWIBADi0mKKvLMsfpDqMXVWRvUUH0k9++Pxsi+7YnfVkAWCeHq8+b84/uzybflj366FcipvOlAEAgKMQxAIAcCTNVH3nyrK8kqwbeyDRmRTbT8+dn60je3PzA12yABzJzrqvul8PbZqsBwsAwJwIYgEAmItm3dhJqrtjrRt7ALFm38vLZ2fb5p1PZ6FsdMv+7g+/VxwA9hTdry+vnJmt/xqfKRzaRqo7Ya0HCwDAXAhiAQCYm6IoJmVZPpFMVXxoK6eemG0//cPvZ9MW37j9fvr487sKA8BXROBar/26Mvvc4EgieL1ajWOuKQUAAPMkiAUAYK5MVTwfcYH9/DPLsy2C2Ju339clC0B66rGT6eLy2dn0w7pf5yKmIL5kKmIAABbhj5QAAIBFKcvydPXwVrWdVo35uPXh7fTLatu884liwB5+cub59JMfPt/Z5/c//uX/YSexL/XNOSuz9V8jiGVurhVFcVkZAABYFB2xAAAsTNNd8gPdsfOz0yV797dfpBubH8ymL/6s+hmA/KycenIWvsb7PnM1TXUX7EQpAABYJB2xAAC0Qnfs4sSUxdEpG4/APTpi6aPHH3l0Nu3wxZUz6WT1M3N3NdWdsNtKAQDAoumIBQCgFV/rjn2t2pZUZT5Wi6dnW3TJxrTFt359W5csQA/fy6PzNR5ZCGvBAgDQOh2xAAC0rizLUfXw82q7oBqLsXnn03Trw81ZMAtDpSOWrovu1/PPLs+mH9b9ujDR+Xq1KIprSgEAQNt0xAIA0LqiKKbVw4tlWa6merrikarM18qpJ2bbT8+dnwWyNzc/0CUL0BH1uq8rs/dpFmpcbZdNQwwAwHERxAIAcGyKophUD0+UZfl69fhGMl3x3H33299JLy+fnW0ff3433bz9/mwt2d/94feKA9Cipx47+WUAG+/NLFSMLy6bhhgAgONmamIAADqhLMsIYXcCWRYoQtj3yo/Sjdvvz8JZyJWpiTluEbjGmq9xM0wEsSzcNNXrwE6UAgCALtARCwBAJzTTBl4py3Kc6jB2TVUWI4KB87OurOV097dfpBubH8ymL9YlCzAfEbpeXD6bniue1v3ajmmq14EdKwUAAF2iIxYAgE4qy3KUBLKtuvXh7fTLatu884likAUdsbSpvsllJV1cOZNOPvKogrRjmgSwAAB0mI5YAAA6qSiKafVwqSzLq0kg24rdXbIRyN769e30WfUzAA+2curJZu3XZcVoT4wRBLAAAHSejlgAAHqh6ZB9LdWB7JKKtGNSfjTrlI1H6BsdsSzK4488ms4/uzwLYHW/tmqr2tYFsAAA9IWOWAAAeqHpkL3cdMiupTqUHanMYq0WT8+26JKNMPbm5ge6ZIFBvydG52s80qqNVAewE6UAAKBPdMQCANBbZVleqB5eqbYLqtGezTufplsfbs6mL4Yu0xHLPET368srZ2brv8Y6sLRmu9rGqQ5gp8oBAEAf6YgFAKC3iqKIDpmNXdMWRyA7UpnFWjn1xGz76bnz6b3yo3Tj9vvp48/vKgyQlXrd15XZ+x2tmlTbddMPAwCQA0EsAAC9tzNtcaqnLtYl25LoDDs/CyqWZ0Hszdvvz6Yv/t0ffq848BBxjrxn3eVOeuqxk+ni8tn0XPG07td2xef49Wob634FACAnpiYGACBLTZdshLHWkm3RTsAU0xZv3vlEQThWXZua2LTe3RSBa6z5+vLy2VkQS6tiZovrzQwXAACQHUEsAADZK8tyNdVdsmuq0Z67v/0i3dj8YBY86ZLlOHQhiI3zIDrFb1bnwmfVz3THyqknZ9MP635t3bTa1qttQ/crAAC5E8QCADAYZVkupTqMjVD2tIq059aHt2dh1MR0rLToOIPYONZ3jnu6o55SfSVdXDmTTj7yqIK0a5zq7teJUgAAMBSCWAAABqksywhiY9rimL54SUXaEd2BMS3rrV/f1h3IwrUdxO50gcf03I7vbomph2M963ikVVvp3tqv28oBAMDQCGIBABi0pkt2Zy1ZXbItik7BnfVkYRHaCmKj89W6yN3z+COPpvPPLs+mH9b92qoIXGPN1/WiKLaUAwCAIRPEAgBAoyzLUaoD2bWkS7Y1sX5srCNrDU3mbZFB7Mef3627u62B3Dk7677qfm3dJNXdrxu6XwEAoCaIBQCA+yjLcq16eCHV3bK0ZPPOp7NgK7plhVsc1byD2Dgmo4v7xu33Z0Es3RHdry+vnJmt/xrrwNKaCFzHqe5+nSoHAAB8lSAWAAAeoumSXau2V6ptpCLtEHgxD/MKYt0g0E0RuNZrv66klVNPKEi7Yurhd4qiGCsFAAA8mCAWAAD2qSzL6I6NQFaXbIsiiL15+30hGAd2lCDWlNnd9dRjJ9PF5bOz6Yd1v7Zqmuqph8e6XwEAYH8EsQAAcEBlWcb6sWupXk92pCLtufXh7dm6nJt3PlEM9nSYIDYC/zjO4pHuiMA1Ol9j/dcIYmlVdL9eL4piQykAAOBgBLEAAHAEZVmuprpLdk012nP3t1+kG5sfzDoWdcnyIPsNYuN4ioD/1q9v637tmJVTT87C1/PVRqum1bae6u7XbeUAAIDDEcQCAMAcNF2yMWVxdMmeVpH26GDkQfYKYnVYd9Pjjzw6m3b44sqZdLL6mdZE4LrT/TpRDgAAODpBLAAAzFlZlhHERiAbweySirRDVyNfd78gVjd1d60WT886X+ORVm2luvt1Q/crAADMlyAWAAAWqCzLtVRPXbyqGu3ZvPPpLGiLYJbh2gliI3B9r/wo3bj9fvr487sK0yHR/Xr+2eXZ9MO6X1u10/26XhTFlnIAAMBiCGIBAKAFZVmOUt0lu5Z0ybYmArgIZG9ufqBLdoB+3KwrGtNW637t3r45/8xKWjn1hGK0a5LqqYfHSgEAAIsniAUAgJaVZRlTFkeX7AXVaE90Qt68/b5QDo7JU4+d/DKA/e63v6Mg7Ynu13Gqu1+nygEAAO0RxAIAwDFpumTXUh3KjlSkHaaphfZE4Bprvr68fHYWxNKqmHo4ul83lAIAAI6HIBYAADqg6ZJ9IdXBLC2JIDbWkY3pi3XJwvxE6Hpx+Wx6rnha92u7ptV2vdrGul8BAOD4CWIBAKBDyrKM9WPXUr2e7EhF2nPrw9uzUHbzzieKAYcQgWtMO3xx5Uw6+cijCtKucaq7XydKAQAA3SGIBQCAjirL8nSqA9noll1SkXbc/e0XdZfsr2+nz6qfgYdbOfVks/brsmK0a1pt66nuft1WDgAA6B5BLAAAdFzTJRthbISyp1WkPZPyo1mnbDwC9zz+yKPp/LPLswBW92urInCNNV/Xi6LYUg4AAOg2QSwAAPRI0yX7SqqnL9Yl25Loko0w9ubmB7pkGbTV4ulZ52s80qoIXaP7dUP3KwAA9IcgFgAAeqosy7VUh7KrqtGezTufplsfbs6mL4YhiO7Xl1fOzMJX3a+tisB1nOq1X3W/AgBADwliAQCg58qyHKV7a8mOVKQdv/vD778MZD/+/K6CkJ163deVtHLqCcVo1yTV4etYKQAAoN8EsQAAkJGyLCOMjS7ZC6rRnghib95+fzZ9cQS00FdPPXYyXVw+m54rnk7f/fZ3FKQ902q7Xm3joiimygEAAHkQxAIAQIaaLtkIY6NTdqQi7YgQ9r3yo1mX7OadTxSEXojANaYdfnn57CyIpVUbqe5+3VAKAADIjyAWAAAyV5blaqq7ZNdUoz13f/tFurH5wWz6Yl2ydNHKqSdn0w/rfm3dtNrWq21D9ysAAORNEAsAAANRluVSqsPYCGVPq0h7bn14ezZtcWxwnCJwjXVfL66cSScfeVRB2jVOdffrRCkAAGAYBLEAADBAZVlGEBvTFsf0xUsq0o7oko1pi2/9+nb6rPoZ2hJTD8d2/pllxWjXVrq39uu2cgAAwLAIYgEAYMCaLtmdtWR1ybYoumN3OmVhER5/5NF0/tnl2fTDul9bFYFrrPm6XhTFlnIAAMBwCWIBAICZsixHqQ5k15Iu2dbE+rGxjuzNzQ90yTIXO+u+RgcsrZqkuvt1Q/crAAAQBLEAAMA3lGW5Vj28kOpuWVqyeefTWSgbXbIR0MJ+RffryytnZuu/xjqwtCYC13Gqu1+nygEAAOwmiAUAAB6o6ZJdq7ZXqm2kIu2IEPa98qN04/b76ePP7yoI9xWBa73u60paOfWEgrQrph5+pyiKsVIAAAAPIogFAAD2pSzL6I6NQFaXbIsiiL15+31dsnzpqcdOpovLZ2fTD+t+bdU01VMPj3W/AgAA+yGIBQAADqQsy1g/di3V68mOVKQ9tz68nX5ZbZt3PlGMgdnpfn15+ewsiKVV0f16vSiKDaUAAAAOQhALAAAcWlmWq6nukl1Tjfbc/e0X6cbmB7P1ZHXJ5m3l1JPpx88sp/PVRqum1bae6u7XbeUAAAAOQxALAAAcWdMlG1MWR5fsaRVpT0xZHJ2y8UgeHn/k0dm0wxdXzqST1c+0JgLXne7XiXIAAABHJYgFAADmqizLCGIjkI1gdklF2hFdsjFt8a1f306fVT/TPzH1cHS+xiOt2kp19+uG7lcAAGCeBLEAAMDClGW5luqpi1dVoz2bdz6dTVscwSzdFt2v559dnk0/rPu1VTvdr+tFUWwpBwAAsAiCWAAAYOHKshylukt2LemSbU2sHxuB7M3ND3TJdky97utKWjn1hGK0a5LqqYfHSgEAACyaIBYAAGhVWZYxZXF0yV5QjfZ8/PnddPP2+7O1ZCOgpX3R/fryyplZAPvdb39HQdoT3a/jVHe/TpUDAABoiyAWAAA4Fk2X7FqqQ9mRirQjQtj3yo/Sjdvvz8JZFisC11jz9eXls+mpx04qSLti6uHoft1QCgAA4DgIYgEAgGPXdMm+kOpglpZEEBvryMb0xbpk5ytC14vLZ9NzxdO6X9s1rbbr1TbW/QoAABw3QSwAANAZZVnG+rFrqV5PdqQi7bn14e1ZKLt55xPFOKQIXGPa4YsrZ9LJRx5VkHaNU939OlEKAACgKwSxAABAJ5VluZrurSW7pCLtuPvbL+ou2V/fTp9VP7O3lVNPph8/s5zOVxutmlbbeqq7X7eVAwAA6BpBLAAA0GlNl2yEsdEle1pF2jMpP5p1ysYjX/X4I4+m888uzwJY3a+tisA11nxdL4piSzkAAIAuE8QCAAC9UZZlBLHRJbuWdMm2JrpkI4yNTtlYV3bIIniNdV9Xq41WRega3a8bul8BAIC+EMQCAAC9VJblWqpD2VXVaE8EsRHIvld+NJipi1eb4DUC2FgHltZE4DpO9dqvul8BAIDeEcQCAAC9VpblKNXTFsf0xSMVac9Op+yk/K9p884n2byuCFt3gtdY/1X42rpJqsPXsVIAAAB9JogFAACyUZZlhLHRJXtBNdr1uz/8fhbGbt75NG3+v5/0agrjCFojcF059URa+ZdPpqceO2mHtm9abderbVwUxVQ5AACAHAhiAQCA7DRdsmupDmVHKtK+CGYjjN0JZWPrylTGEbo+9S9Opv/hsZOzR8HrsdpIdffrhlIAAAC5EcQCAABZK8tyNdWB7JpqHL/omI0pjSOUjXC2Dmw/mz3OU4Sr3/32fzcLWr/7ne/MOl0f/++X0slHHrUTjt+02tarbUP3KwAAkDNBLAAAMAhlWS6le12yp1Wke3a6aO/9939LH/9/D57iOKYUfupfPP7V/9bd2mXjVHe/TpQCAAAYAkEsAAAwOGVZRhD7WqrXkl1SEViYrXRv7ddt5QAAAIZEEAsAAAxW0yUbYWyEsrpkYT4icI01X9eLothSDgAAYKgEsQAAAGkWyo5SHciuJV2ycBiTVHe/buh+BQAAEMQCAAB8Q1mWa6leS3ZVNeChInAdp7r7daocAAAA9whiAQAAHqDpkl1LdSg7UhH4Ukw9/E5RFGOlAAAAuD9BLAAAwD6UZRlryUYge0E1GKhpqqceHut+BQAA2JsgFgAA4ADKsoz1Y9dSvZ7sSEUYgOh+vV4UxYZSAAAA7J8gFgAA4JDKslxNdZfsmmqQmWm1rae6+3VbOQAAAA5OEAsAAHBETZdsTFkcXbKnVYSeisB1p/t1ohwAAABHI4gFAACYo7IsI4iNQDaC2SUVoQe2Ut39uqH7FQAAYH4EsQAAAAuwq0s2pi5eVRE6Zqf7db0oii3lAAAAmD9BLAAAwIKVZTlKdZfsWtIly/GapHrq4bFSAAAALJYgFgAAoEVlWe50yV5QDVoS3a/jVHe/TpUDAACgHYJYAACAY9B0ya6lOpQdqQgLEFMPR/frhlIAAAC0TxALAABwzJou2RdSHczCUUyr7Xq1jXW/AgAAHC9BLAAAQEeUZRnrx66lej3ZkYpwAONqe0f3KwAAQHcIYgEAADqoLMvVdG8t2SUV4T6m1bae6u7XbeUAAADoFkEsAABAhzVdshHGRpfsaRUZvAhco+t1vSiKLeUAAADoLkEsAABAT5RlGUFsdMmuJV2yQxOha3S/buh+BQAA6AdBLAAAQA+VZbmW6lB2VTWyFYHruNqu634FAADoH0EsAABAj5VlOUr1tMUxffFIRbIwSXX4OlYKAACA/hLEAgAAZKIsywhjo0v2gmr0zjTdW/t1qhwAAAD9J4gFAADITNMlu5bqUHakIp0W4Wt0v24oBQAAQF4EsQAAABkry3I11YHsmmp0xrTa1qttQ/crAABAvgSxAAAAA1CW5VK61yV7WkWOxTjV3a8TpQAAAMifIBYAAGBgyrKMIPa1VK8lu6QiC7WV7nW/bisHAADAcAhiAQAABqwsywhjX0hC2XmaVtv1ahubehgAAGC4BLEAAADMCGWPJDpf30l15+uWcgAAACCIBQAA4BuaUPa5VIeyIxW5r41qey/V4etUOQAAANhNEAsAAMBDlWU5qh5WUx3MxuNooKWITtdJtb1TFMXEkQEAAMDDCGIBAAA4kK8Fs6ebLTfbqQ5eo+N1Ej8XRbFt7wMAALBfglgAAACOrCzL1VQHst9Pdcfsao+e/rTZInSN8HXLVMMAAAAclSAWAACAhWg6Z2OLgHYp1R20YfUYns501/abVAeu26YYBgAAYFEEsQAAAByLXUFtah5HX/sr30t7r0f73n3+bLLzg6AVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPL2R0uvvrRUPb6uFHTAePvNt6fH/SSqc2I1HqrttF0yOFvVtl0dh5MuPrnq2LxiF3FA02bbqo7r7S4/Ucc3i1Ad91c6cnwbWzgWr8zpOFpVTY7BpKvj4zm9R8d78wW7GWP2Pc+VUfWwNsTP4gy/q8R1j2tOvYfu8zjWR5m9rENdd+37uU93P/uq43Hs/KUrn4vpXi6wtYh/4FsxyKsOzu95Q6ULX/CbLx9tD66WmuP/heTiFvUxsXM8vtMMVLvyZfgNe4cjHNdbzXG93oWbXhzftOTKMZ1vxhYs4lhc9V7JMX9Xy1JcbKnet19LrolgzL6XUc8/h47yWZzdddM41nK+yeaItYlj/a3cPsePcDNC3899uju2HC/od7/iezhH+AzYbo7P69X75sa8fu+J5ovHpQUe+NDVk2qpuavx02r7uTdovma1OS6+qI6Tt5qL6sd5vOqi4qjiGIoZMD5tjumRksBCxhazzw5jC4D+cE0EY3b2cDXV3TI5EawNqzZX7VaAfYkMIGbL+UU1Dvu06bA+shO+eDDIs+nVl+Jk+rQZXC2pCHtYa74Irx3nYWs3sIBj+opSwNzHFpb8AOgh10QwZuch7w/T6mE9s5e12ix7wFfH9KOU3wwJG7qfAQ4lPhPixrhfHbVJ6oQvHgxwUBXTi/wiCbY44KHTvPG+pRRk5I3qmH73uDu+wdgCgC5orolsqATG7NxHrKmqK3YA51uGr+my3QpwJBHCvnuUJq0TD/jiMVZbctRcKF1TCY5gTRhLZlabwYQLO2BsAUBKcU1kSxkwZme37TffjhA2t+ldV01//ZVx/SjDcf21Dq43DdDLj4lUN2kd6nPixAMGF8JYchxQuVDKvAhjyc3OnV0u7ICxBcCgNWHLuSSMxZidb74/RFfsNLOXpSs231rkePMAwHE7VBh74iGDC2Es2ahOjp8nF0qZr7XmuIJcxIWdXygDGFsADJ0wFmN2HiK3YGtNV2y23bBXm88zAObrrYOuGXtijy8fwlhyGEytVg+vqwQL8HpzfEEuYmqqK8oAe44tLhhbAORNGEvHx+zGIcf33jCuHiaZvSxdsfnVYNp0cAOwGL84yCwlJ/YxwBDG0lvNyWAKWRbJ8UV2X0DdEQ17ji3MiAAwAMJYjNl5AF2xeY3v47WvZfayLjtN6bj3lICei8+Ofd/Ec2I/f0kYS4+93pwUsLA3XR2EZMgd0eRgUdNwGVsADOnDRBhLNy0Zsx/r+8Ik6Yr12rtrUh2jG85UgIV7fb83Mp3Y728UxtJTrykBLXhFCciMdYLIwdwvmDfdsMYWAAMjjKXDY/YlZTg2lzM8ngb3HTDXtWGdngCt2dc1ohMH+Y3CWHo2mIqBlC8ltGHUrBcIOXFMw/3PC2MLgAESxtJRa0pwbO8J8V4wzuxlDfGGw9y6YcdNxzYAHRqLnTjobxXG0iMvKAGONzg0nd7gvR6AXYSxdNBzSnCsclwrdjA3HWbYDbuddMMCtP5xUn2erO71l04c5jcLY+mJVSXA8QaHdtpUZ+C9HoCvEsbSMWaxOd73g2nKK/iK73+vD2gX5tYNu94ckwC0a3Wvv3DisL9ZGEunR471XW0CBNo0UgIydFoJwNgCgK8SxtLBMQrH51qqOxFz8doQbsjNtBv22qLK5TQHeKg9Zyg5cZTfLoylw3wR4TgG8quqgPdScD4AkD9hLMYo7HovWM/oJQ2lKza3btjLzbG4CG7QBjiiE0f9BcJYOjxwBOBoRq28YbuJAecDAD0kjAWa94Ir1cM0o5eUdVdsht2w0+oYHDsTAY7N6l5/4cQ8/hVhLB3kbi0AYJ5GSgDA1wljgYa1Yvsjt27YS04/gG47Ma9fJIwFAABYmO8rAXSTMBZoOhKnGb2kV3LcTxl2w06qY2/iDATothPz/GVNGAsAAEDzNWlOv8fSG9DlE70OYy+rBAxaTtdFR0uvvrSW4T7SDQtA6+YaxDZ3FQEAAFDTIQcAA9B0Jk4yeklZhZYZdsOOq2Nu6swD6L4Tc/59IyUFAAAAAAYop7Vic+uKzSlYNgsDQI+cUAIAAAAAgKNpumLHGb2kLMLLDLth15sp8QHoAUEsAAAAAMB86Irtnpy6Yafbb759xWkG0J335b3+wrfUCADgSK4qQT8HwgDsi44bIIyUYJ9vmm++PV169aVr1Y+vZ/KSIsQc9/XJZ9gN6/vnwb4TXleGTpooAZm91zzUEIPYLV8kfcEHgLl9eLkbGYD8v0OzPyMlwPFNI8KytWpbymHfL7360moz7XIf5dQNO6n2w9jptW+6h4dpVQnomqF2xL5oHn0AAABgjkZKAIS47rj06kvrKZ8QMF7HpG9PWjcsAF0wxCD2dLW9W30QnxPGcozirnLH4DcHyKtxfqpEL/2gOp51SziegW6KO+fPKUO/5b4Pq8/Nf+7x07+q24IeGFfH6SVlMGanVTE98Sspj5s0VnvaFZtTN+xGj7uSgXo20HOun2b3XXBfTgx03+6EsUsOcxyDMBdxPJ9WhiwHiQAA9N9aNV5/SxmgxS9T9c33OXUw9irUzLAb9rKzCnotcgDXTwfqxIBfuyAMxyAYTPBw7tIDAMiHMBZa1qznOc3k5aw2XeR9kVM3bMy+MXVGQe+5fjpQJwb++gVhOAbp0we1wQQAAHAUwtivGikBLcipk7EX4WZm3bDRWX3NaQTZcP10gE4ogSAMxyC9OU4MJvplpAQAAHRQhLFrymDMTju233x7o3qYZPJyVnvyfT+3bljLBkFeXD8dGEFsTRCGYxAMJuZt5FCArHxPCQDIyFvCWGhVTmvFvtblJ5dZN+x0+823dcNCnlw/HRBB7D2nU386zsj3GBTG9lg1OJ6ogsEEkK2REgCQGWEsg/m6fuxPoL5esJFJPdeasLOrcuqGvez0hay5fjoQgtivmioBxyzedK3Xg8EEAADQBmEsQ7DVkedhrdgFy6wbdtJMaw3kzfXTARDE7lJ9uE1VgY68+UJWgwllAACAzhLGQgua647jTF5OV7tidcMCfSSMzZwgFoA2BhMAfTdVAgAy9ooS9JMlcnonwrXtTF5Lp0LPzLphx9W5veV0gUGJ66cXlCFP31ICAADY0296/NxPL736UsxOsNW8jnjc2n7z7W27FQCgPTH+qsZl6ymPzs3oir3aoRkGc+mGjTH6VWcLQD4EsQAAkLe4s3a12e794asvxUWerSSgBQBo07Vqey3lMXtUhJ+Xjn2wm1c37Lrl8wDyIoglV99TAgBgjqYZviYBLQBAy5qu2Oh4/HkGL+dC9Voud2CcmFM37DVnCUBeBLHkaqQEAMAcTQf0WgW0AAALVI2frlVjq+iKHWUwbny92q4c2xPIqxv2srE1QH4EsQAAsIftN9+eLL360tDLIKAFAJif6Ip9K4PX8Vo1Hrx2jGO/XLphY/w8dloA5EcQCwBwBEuvvvTPqnB8tt98+49a/OciYDyt6t88DdL+A9qpNa8AAGbj2HE1Xnrl62Oono4Fj6UrNrduWGfF3K36vn6sJtX73DllAEEsAADs1/UkiD2IBwW0sy/lqZ7u+TfNz9vVl/QtJQMABuZq6n8QG46rKzaXbtgIrCZOB4A8CWIBAGB/Nqrt58owF6u7fp5dQGsC2lnXbLX9Y/M4dVEKAMhVs/zFJOmKPfg/mFc37KUOP7fnnKnQGjcnZ0oQCwAct5ES0AcxpW4mF8q67HSzXdj5gyag3T3N8T8lXbQAQD4ihPs0g9fxWmp3euJcumHHlu4AGttKkCdBLABw3EZKQI/kMn1c33x9muPdXbTTZhPSAgC909zsN0797+5cql7HWqx9u/B/KJ9u2AhdrA0LkDlBLNAl1t0DoNMymj4uJ6Nm29knu0PanU7aePzHXf+dTHkMAHRI3OwXM4Is9fx1xDhs3NK/k4P1Y1hXF4CWCWKBLllSAgB6IO5a/5Uy9GZssdr8fOEr/0Md1IZJ86ijlsOaKAEAR9F0xa6n/geMo0V3xWbUDTut6nTF0Q+QP0EsAIvmQjaQlQjoll59KcLYn6tGFla/9ri7o3aS6mmPo5t2IpwFABboWqrXWdUVu/fvz8FVhzzAMJxQAugcU5LgmAbo+hvbm2/HhbKxSmRvNdUdFxG6/2rp1Ze+qLa3mk4MAIB5ji/ju/N6Bi9l1hW7iF+cUTfspI21dAFoxZ43bM+7I9a0onB0/6gEZGa1+rL0z8oA5Gb7zbcvNV2Ta6oxGEvN/l5r1gqOdb02lAUwZgfmNL68Up2Lr1Q/jnr+UhbVFasbFsjZu7uW0KE//mmvvzDvIPZ0n6tVHeTvOmbm7ro7vACAXAljB2011cHFtHq8aswLAMxJhHRv9fw1RFfshXnesJZRN+xGVZeJwxxgOKwR+1WrSjB37ykBAJCzJox9J9UXzMwQMzyj2PfVMRAdGpdcWAMAjji2HFfjilgr9nTPX0q8hnnOHJJLN+xlRznAsFgjFgAAjqi52/+JZN3YIRuleiqpNaU4GGvuAvTCc0rQqhzCupg5ZHWOY4Ucxlgxi8rU4Q2+VzAsglgA4EG2lAD2b/vNt7ejOzYJZIfuLWHsgY2UAAC+Mq6cVA+TDF7KGx37Pce6W6vtmqMbfK9geASxAMCDvvxvqwIc6tyZ7gpko5vBTQ3DI4yFYfqeEgBzpCs2ZdcN6zs2wAAJYgHmY6oEAOzWBLLXqu0HqQ5lI5wdJ8HsULw1r+n4gN4YKQEwx7HkVspjlpU3jvn/3wWz7wWOagZmqgRQ+5YSABhcAHjvXaxmLahx2nUxrQnpTqe6g+p0sy3ZrVn5RbWfzzUXUgEADupq6n836Kwrtplu+UAy6oa97FBmgH6jBFATxAIA0FfTPj/5+639tfTqSxHE7g5ln2seT9vdvRT77q1q+4FSAACHGC9Oq/FhdFK+3vOX8lo63Jq3OXTDTqr9uOFoBhguQSxAP3xfCQDy16wbNUn3uVC1K6QdNdv3mkedtN12utp3V6p9e0UpAIBD2OmK7fN470J0tzazxOyLblgAciGIBegHF9gBBm5XSHv/D4p6quNRs32/+exYVblOiC6QK8oAwJxNlWAYY8BqnLee+t8dGs//0gH/ft+NLVEBgCAWAAAy8KB1t5pugth2T3e882e0Y6naDxdMSwfAnE2VYDBieuJXej5+W6vGQ1f30xWbSTds3ER51aELgCAWALgfd+1CJpqLXbFNvv6/NV20O1MeRxftKFmPdlFeqDZBLABz/ZhXgsGM56IrNkK9t3r+UvbbFZtDN+z6QaZiBqC3Jnv9BUEsuXIBEeBofGGEAdjVRfuVgHBXF+1qshbtvKwqAQBz9o9KMKhx27gao72RMu+Kzagb9pqjFmAQpnv9BUEsuXKREOBo3lGCfX/B1j18fNR+UQf2A7pol159aad7Nrbv7frZ2Gtvo7iwqDMCgDky08LwRDfpuz1/DXt1xebQDXs5upgdrsdu5zsNx1d/yP443893fEEsAHA/EyXYl61qwHVOGRiK5oLSJD14muNRs1mH9v6iRmNlAGAO4sKfm9KGNxabVGOuSer3TBvRFXvfoDKTbtj4jmi81w3Xq31xRRmABdrXTXGCWADgG4MIHVvAQe2a5vgr7hPQ7nTVDtH3HSkAzMl1JRisWCt2teev4fVqu3KfP8+iG9YhCjAY6/v5S4JYAOBQgwiA/XhIQBth7CjVoez3d/2cs9OOCADm8fGazLAw6LFVNY6K/b/W45fxWvUaru3uis2kG3byoLEvANkZ77eRRRALAHx9EOGLI7BwzXSKsX1lKp/MA9pVex6AOVg3g83gRVfsWo+ff8yQ8vWu2By6YS85NAEGYbv5LN4XQSzQJabrg+MfRJhGCTjeN6L9BbS9vVBXvY6l+62JBgD7tGXNwwN7L8Px0jSTrtjndv33as93y9gNEgCDcfUg7/mCWKBLlpQAjtWLwgGgq3YHtEuvvtTnjokIkif2KACH+ThMOu64J26ivZD6ey0lnvdqRuemm5oBhmFj+823rx3k/3BCzQCAyiVTEgMAQOfH7FvKQGhuol1XiU5Yd1MzwCDEOOzAN8UJYqGDY2klAFoWF3TGygAAAJ203YzZN5SCr7mWXEc6btPMpwsf2cUAMxHCnjvMjTeCWOjmCQ3Qhu1mADFWCgAAMGanZwdHfTHYlLjH62rmr29kFwPM1gH/wWFnPxDEAsAwTartBx2Zjvg5uwMAAL4hOmCfMB0xD9OE9FOVOJ7v1W6SAMj7Y7baXqze6y8d5Zd8Sx2/FINad5DNn4EgQMe+KFbbVevBAgCAMTvZiGuav1CG1l1VAoAs7azDfm0ea4ALYncV1gAXgEzFzUbxGXfd3fQAAGDMTl5i/eClV1+K42dVNVqz4VoyQF4fp81Y7J3mPX5ua7ALYgFYtHG1Xe/oc/t5tZ3OpM5xB/TWfb6Q+2IIAIs1VQKM2Y3ZjzBm3xa8MifRnbmqDK2ezwDzdK6jz+t0Mx7LwYNmxp1W47GFfa8TxAKwaL/pahi49OpLMcB5N+VxYeeNGLC5iAMA7VrkF3YwZjdmhwN8Hk10xbbmqs9/YBHv4x19avH58v3qcS2DMsd48pWjrvl6UIJY6OCbQfXGNtTXvmT30/IAZ7u5sPOrahtlcP68G6/HhR1Y4In26kujDN4vAKBvY/a4WPZuBt8ZjdlZtDhXPlWGxb4tVds1ZQAGNh671GQWaxm8nLV4LW2GsYJY6J6fKwG0OpCICzsvJhd2gH0O2FPdzQIAtDdm39rVGWvMDg8+V6bVsTVOeVwo76qr81w3EKBHnzHC2EM64fABmAtfoPs9kIj9Fxd2cvgytXNh57Q9CwCAMbsxO4NzNZPzpItiDUHdsMCQx2MRXI4zeTkRxr7Vxj80747Y5xyKwED9kxL0fiDhLnsOY1TV+YoydNLYuk0AYMxuzD6/ca8jsDfnSXTFriezuCzCZSXoled8X+/s+5T90u/9l1tn7Hb1mhb6/m5qYgC4N5BwYYeDGiUXOLpqUm1TZQAAY/aOj9nfasbsXe9gHDn6eiW6Nl/L4Bzp1PeL6jzdUIZeWW02uufKAvc57YzHcgpjX69eyz9Wr2m8qH/A1MQA8NWBRG5Tnv2iGkz48g1Al60qATDgMXtMT/yuMTtzPkfi3LiqEnOlGxbgq581OU1THDfGrS3qlwtiAeCbA4mcLuyMkgs7AAAYs3eZMJZFnCPRFTtVibkYm2kK4L6fNcLYfRDEAsD9BxIu7AAAcBDGWsczZn8xk5djzM4i6Iqdw1uNOgI8dDwWYWwuU7cvJIwVxJLfN19fWoD5DSSEsQAAHGS8Rftj9kn1cCmjY8iYnXmeH+PqYaISR7Je1XGqDAAPFWOxXGYOmHsYK4jFl1/oB1/Ej++Lq7vsAQCg22P2cRLGwoPo5jzC20u1XVMGgD3HYvF+Gc0swtj7EMSS6yAJcuMGg+MdTEySCzsAANDlMfvYmB0e+H12ohKHcrkJFwDY+/NGGPsAgth73lOCbE74LVUAFvDeMk4u7ABwdFMlADBm3+eY/S17lTm5rAQHttW8pwCw/7GYMPY+BLEA8zFVgkEMJuJLmDAWgKN8lhgzABiz79eFarwujGUe50VcEB+rxIEIrwEO95mTYxi7epRfIIglV7piadtUCQYzmIgvr8JYAIwXAIzZ27AmjGVOrBW7f5NmSmcADjcWyy2M/UU1Hjv00oGCWHIliKXtDxcD9GHt73HKK4z9ub0K0ArjBYB2x+y5dLQJY5nHOTFNwtj9uqQEsDBTJRjM505OYWw0sbx72DBWEEuurPlLmzaUYJCDiXFylz0AxqhAJsPbTMfs11I+07EaszMP13I93+dZI0tJwEI5v4Y0wBTGzghiyZVgjDa9owSDHUyMkzAWunp+TlQBY1SAfct2VqlqTBDj9bExO3x5QXxdJR5coqRrGGARnz3nUh43Ah0qjBXEkvPJPVYJ2jjcmjCO4b7fxP4XxgKwl3EzRgWg/TG7MBbunQ9Xko60B1k3XgNYyGfPoMNYQSw5cwcbrQzSlYAmjL2WyctxYQfA2BQgxzF7bmHsFXsV45K5mjYhNQCLGYvFDCyDDGMFseR8Yk9TPsEIBul0/z3ncnKXPQD3d9VaYwCdGLPnFMa+UY3Z1+xVDnkuxHlgbPK18ZoSACz882eQYawgliEMogwsWZQXlYCvDSZMeQbA1225cQvAmH1B3hLGcgSXlOBLE8tOAbQ2FhtcGCuIJfeTOk7mFzM5qenYF5bmQwO+/r4jjAXgy4+F5CIngDH7YgljOex5MKkeJioxoxsWoN3PoNzC2F9U47GlB/0FQSxDOaldAGOexu6UZI/3HWEsAPGF8pwbtwA6K5YWyeU9WhjLYQkg62s8E2UAaPkLc15h7CjVnbH3DWMFsQzlpN5IdRirM5ajutaEbLDX+05uYeyavQqw/4+BJIQF6Pp4ffZenYSxDPs8mGT0vfWwhNEPUL2nrKoCsODPoZzC2Jie+L5hrCCWIZ3U4+aknqoGhzmEUj0d8WWl4ADvO6Y825+Ro4UeeU4J2MPsi6QQFqAX43VhLAw7iLxavQ9MHQIAxzoeyz6MFcQyxJP6B8ndfhzMJNUXVB03HOZ9Rxi7t5EjBcjEtSSEBejbeD3HMPaCPcsBzoFpM4YZ3Esf6OsG6OJnUU7LS34jjBXEMsgvWU0wEl+0NlSEh5ikugvWBVWO+r4jjAXIW7zHPxEzZzQX9AHo2XWClF8Y+/+zd0c3CMJAAED5cAFHcAMdwREcxRHcADdgBDeQURjFXiQYjIkmakLb9xISv0woB732aNm6spNBE7wVq2Jry2FO8jZgSemIfGz6vGQJZsVYhVhqvrH7dBzSz006YrvZi+RcWDT34mvEw24swHaahR+JuLLlGUAZImfsxkHiOl64sa0dQPZzBCUVY2PS76oYO+u3eR//55piIp2z1bDAklgE1EyflyyuGLv68R8fx2RPUkZON3dc+7Z52o7EB+nr6ugyeAtyb9Cb/8A2PVf2YydcxCmJbyqVc77L98/yXiv8RQy2tS0lyDmnMfknZxfftBX1x4PL/fG9Y7zOkvumksYVVug/8rEu5WPx/DH3AgAAAAAAAMBrNwEGAKTXElFwew/RAAAAAElFTkSuQmCC"
                                    },
                                    {
                                        fontSize: 8,
                                        table: {
                                            widths: ["*", 50, 80],
                                            body: [
                                                [
                                                    {
                                                        border: [false, false, false, false],
                                                        bold: true,
                                                        fontSize: 11,
                                                        alignment: "center",
                                                        margin: [50, 0, 0, 0],
                                                        text: "Forest River, Inc."
                                                    },
                                                    {
                                                        fontSize: 10,
                                                        border: [false, false, false, false],
                                                        margin: [0, 2, 0, 0],
                                                        text: ""
                                                    }
                                                ],
                                                [
                                                    {
                                                        border: [false, false, false, false],
                                                        colSpan: 2,
                                                        alignment: "center",
                                                        bold: true,
                                                        text: "WARRANTY REGISTRATION CONFIRMATION FORM"
                                                    },
                                                    {
                                                        border: [false, false, false, false],
                                                        text: ""
                                                    },
                                                    {
                                                        border: [false, false, false, false],
                                                        text: ""
                                                    }
                                                ],
                                                [
                                                    {
                                                        border: [false, false, false, false],
                                                        colSpan: 2,
                                                        decoration: "underline",
                                                        alignment: "center",
                                                        text: ""
                                                    },
                                                    {
                                                        border: [false, false, false, false],
                                                        text: ""
                                                    },
                                                    {
                                                        margin: [25, 0, 0, 0],
                                                        border: [false, false, false, false],
                                                        text: vm.VinInfo.SalesId
                                                    }
                                                ]
                                            ]
                                        },
                                        layout: {
                                            paddingLeft: function (i, node) {
                                                return 0;
                                            },
                                            paddingTop: function (i, node) {
                                                return 0;
                                            },
                                            paddingRight: function (i, node) {
                                                return 0;
                                            },
                                            paddingBottom: function (i, node) {
                                                return 0;
                                            }
                                        }
                                    }
                                ]
                            ]
                        }
                    }, {
                        fontSize: 10,
                        table: {
                            widths: ["*"],
                            body: [
                                [
                                    {
                                        layout: "noBorders",
                                        table: {
                                            widths: ["*"],
                                            body: [
                                                [
                                                    { text: "UNIT INFORMATION", bold: true, fontSize: 14 }
                                                ]
                                            ]
                                        }
                                    }
                                ],
                                [
                                    {
                                        layout: "noBorders",
                                        table: {
                                            widths: ["*", "*"],
                                            body: [
                                                [
                                                    { text: "VIN:", bold: true },
                                                    { text: "CHASSIS VIN:", bold: true }
                                                ],
                                                [
                                                    vm.VinInfo.VIN,
                                                    vm.VinInfo.ChassisNumber
                                                ]
                                            ]
                                        }
                                    }
                                ],
                                [
                                    {
                                        layout: "noBorders",
                                        table: {
                                            widths: ["*", "*"],
                                            body: [
                                                [
                                                    { text: "BRAND:", bold: true },
                                                    { text: "MODEL YEAR:", bold: true }
                                                ],
                                                [
                                                    vm.VinInfo.BrandDescription,
                                                    vm.VinInfo.ModelYear
                                                ]
                                            ]
                                        }
                                    }
                                ],
                                [
                                    {
                                        layout: "noBorders",
                                        table: {
                                            widths: ["*"],
                                            body: [
                                                [
                                                    { text: "DEALER INFORMATION", bold: true, fontSize: 14 }
                                                ]
                                            ]
                                        }
                                    }
                                ],
                                [
                                    {
                                        layout: "noBorders",
                                        table: {
                                            widths: ["*", "*"],
                                            body: [
                                                [
                                                    { text: "DEALER #:", bold: true },
                                                    { text: "DEALER NAME:", bold: true }
                                                ],
                                                [
                                                    vm.VinInfo.DealerNumber,
                                                    vm.VinInfo.DealerName
                                                ]
                                            ]
                                        }
                                    }
                                ],
                                [
                                    {
                                        layout: "noBorders",
                                        table: {
                                            widths: ["*", "*"],
                                            body: [
                                                [
                                                    { text: "REGISTERED DEALER #:", bold: true },
                                                    { text: "REGISTERED DEALER NAME:", bold: true }
                                                ],
                                                [
                                                    vm.VinInfo.RegisteredDealer,
                                                    vm.VinInfo.RegisteredDealerName
                                                ]
                                            ]
                                        }
                                    }
                                ],
                                [
                                    {
                                        layout: "noBorders",
                                        table: {
                                            widths: ["*", "*"],
                                            body: [
                                                [
                                                    { text: "DATE OF PURCHASE:", bold: true },
                                                    { text: "DATE ENTERED:", bold: true }
                                                ],
                                                [
                                                    delDate,
                                                    regPartialDate
                                                ]
                                            ]
                                        }
                                    }
                                ],
                                [
                                    {
                                        layout: "noBorders",
                                        table: {
                                            widths: ["*", "*"],
                                            body: [
                                                [
                                                    { text: "CONTACT PERSON:", bold: true },
                                                    { text: "RENTAL:", bold: true }
                                                ],
                                                [
                                                    vm.Warranty.ContactPerson,
                                                    { text: vm.Warranty.isRental ? "Yes" : "No" }
                                                ]
                                            ]
                                        }
                                    }
                                ],
                                [
                                    {
                                        layout: "noBorders",
                                        table: {
                                            widths: ["*", "*"],
                                            body: [
                                                [
                                                    { text: "SALES PERSON:", bold: true },
                                                    { text: "MILEAGE:", bold: true }
                                                ],
                                                [
                                                    vm.Warranty.DealerSalesPerson,
                                                    vm.VinInfo.Mileage
                                                ]
                                            ]
                                        }
                                    }
                                ],
                                [
                                    {
                                        layout: "noBorders",
                                        table: {
                                            widths: ["*"],
                                            body: [
                                                [
                                                    { text: "OWNER INFORMATION", bold: true, fontSize: 14 }
                                                ]
                                            ]
                                        }
                                    }
                                ],
                                [
                                    {
                                        layout: "noBorders",
                                        table: {
                                            widths: ["*", "*"],
                                            body: [
                                                [
                                                    { text: "OWNER NAME:", bold: true },
                                                    { text: "CO-OWNER NAME:", bold: true },
                                                ],
                                                [
                                                    vm.Warranty.Ownership.Name,
                                                    vm.Warranty.Ownership.Name2
                                                ]
                                            ]
                                        }
                                    }
                                ],
                                [
                                    {
                                        layout: "noBorders",
                                        table: {
                                            widths: ["*", 174, 35, 50],
                                            body: [
                                                [
                                                    { text: "STREET:", bold: true },
                                                    { text: "CITY:", bold: true },
                                                    { text: "STATE:", bold: true },
                                                    { text: "ZIP:", bold: true }
                                                ],
                                                [
                                                    vm.Warranty.Ownership.Address,
                                                    vm.Warranty.Ownership.City,
                                                    vm.Warranty.Ownership.State,
                                                    vm.Warranty.Ownership.PostalCode
                                                ]
                                            ]
                                        }
                                    }
                                ],
                                [
                                    {
                                        layout: "noBorders",
                                        table: {
                                            widths: ["*", "*"],
                                            body: [
                                                [
                                                    { text: "PHONE #:", bold: true },
                                                    { text: "EMAIL:", bold: true },
                                                ],
                                                [
                                                    vm.Warranty.Ownership.Phone,
                                                    vm.Warranty.Ownership.Email
                                                ]
                                            ]
                                        }
                                    }
                                ],
                                [
                                    {
                                        layout: "noBorders",
                                        table: {
                                            widths: ["*"],
                                            body: [
                                                [
                                                    { text: "INSTALL ADDRESS INFORMATION", bold: true, fontSize: 14 }
                                                ]
                                            ]
                                        }
                                    }
                                ],
                                [
                                    {
                                        layout: "noBorders",
                                        table: {
                                            widths: ["*", "*"],
                                            body: [
                                                [
                                                    { text: "NAME:", bold: true },
                                                    { text: "PHONE:", bold: true },
                                                ],
                                                [
                                                    vm.Warranty.InstallAddress.Name,
                                                    vm.Warranty.InstallAddress.Phone
                                                ]
                                            ]
                                        }
                                    }
                                ],
                                [
                                    {
                                        layout: "noBorders",
                                        table: {
                                            widths: ["*", "*", 35, 50, "*"],
                                            body: [
                                                [
                                                    { text: "STREET:", bold: true },
                                                    { text: "CITY:", bold: true },
                                                    { text: "STATE:", bold: true },
                                                    { text: "ZIP:", bold: true },
                                                    { text: "COUNTRY:", bold: true }
                                                ],
                                                [
                                                    vm.Warranty.InstallAddress.Street,
                                                    vm.Warranty.InstallAddress.City,
                                                    vm.Warranty.InstallAddress.State,
                                                    vm.Warranty.InstallAddress.PostalCode,
                                                    vm.Warranty.InstallAddress.Country
                                                ]
                                            ]
                                        }
                                    }
                                ]
                            ]
                        },
                        layout: {
                            paddingLeft: function (i, node) {
                                return 2;
                            },
                            paddingTop: function (i, node) {
                                return 1;
                            },
                            paddingRight: function (i, node) {
                                return 1;
                            },
                            paddingBottom: function (i, node) {
                                return 1;
                            }
                        }
                    });
                    dd = {
                        pageOrientation: "portrait",
                        pageSize: "LETTER",
                        pageMargins: [25, 25, 25, 25],
                        content: myContent,
                        styles: {
                            inputLine: {
                                fontSize: 8,
                                bold: true,
                                margin: [0, 13, 0, 0]
                            },
                            inspectionList: {
                                fontSize: 6
                            },
                            disclaimer: {
                                fontSize: 13,
                                margin: [0, 10, 0, 5]
                            }
                        }
                    };
                    vm.createPDF(dd, "PDIReport.pdf");
                });
            });
            return _this;
        }
        ReportPDISimpleController.$inject = [
            "$uibModalInstance",
            "$state",
            "app.services.VINService",
            "app.services.WarrantyService",
            "vin"
        ];
        return ReportPDISimpleController;
    }(report.ReportController));
    angular
        .module("app.report")
        .controller("app.report.PDISimpleController", ReportPDISimpleController);
})(report || (report = {}));
//# sourceMappingURL=report.pdisimple.controller.js.map
var __extends = (this && this.__extends) || (function () {
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };
    return function (d, b) {
        if (typeof b !== "function" && b !== null)
            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();
var report;
(function (report) {
    "use strict";
    var ReportUnitInvoiceController = (function (_super) {
        __extends(ReportUnitInvoiceController, _super);
        function ReportUnitInvoiceController($modalInstance, $state, vinService, partOrderService, vin, invoice) {
            var _this = _super.call(this, $modalInstance) || this;
            _this.$state = $state;
            _this.vinService = vinService;
            _this.partOrderService = partOrderService;
            var vm = _this;
            if (vin) {
                _this.vinService.getVINInvoice(vin).then(function (data) {
                    vm.data = data;
                    if (vm.data.SalesId) {
                        vm.partOrderService.getPartOrder(vm.data.SalesId).then(function (result) {
                            vm.order = result;
                            createPage(vm, vm.data, vm.order);
                        });
                    }
                });
            }
            else {
                _this.partOrderService.getInvoice(invoice).then(function (data) {
                    vm.data = data;
                    if (vm.data.SalesId) {
                        vm.partOrderService.getPartOrder(vm.data.SalesId).then(function (result) {
                            vm.order = result;
                            createPage(vm, vm.data, vm.order);
                        });
                    }
                });
            }
            return _this;
        }
        ReportUnitInvoiceController.$inject = [
            "$uibModalInstance",
            "$state",
            "app.services.VINService",
            "app.services.PartOrderService",
            "vin",
            "invoice"
        ];
        return ReportUnitInvoiceController;
    }(report.ReportController));
    function createPage(vm, data, order) {
        var dd = null;
        var myHeader = [];
        var myContent = [];
        var fullDate = new Date(data.InvoiceDate);
        var invoiceDate = fullDate.getMonth() +
            1 +
            "/" +
            fullDate.getDate() +
            "/" +
            fullDate.getFullYear();
        var currency = new Intl.NumberFormat("en-US", {
            style: "currency",
            currency: "USD",
            minimumFractionDigits: 2
        });
        var canvas = document.createElement("canvas");
        JsBarcode(canvas, data.InvoiceNumber, {
            format: "CODE128",
            displayValue: false,
            fontSize: 12,
            height: 15,
            width: 1
        });
        var barCode = canvas.toDataURL("image/png");
        var canvas2 = document.createElement("canvas");
        JsBarcode(canvas2, data.BankCustomer, {
            format: "CODE128",
            displayValue: false,
            fontSize: 12,
            height: 15,
            width: 1
        });
        var barCode2 = canvas2.toDataURL("image/png");
        var DetailsTable = [];
        var Row1 = [];
        var Row2 = [];
        var Row3 = [];
        var Row4 = [];
        var Row5 = [];
        var Row6 = [];
        var Row7 = [];
        var Row8 = [];
        var Row9 = [];
        var Row10 = [];
        var Row11 = [];
        var Row12 = [];
        var Row13 = [];
        var Row14 = [];
        var Row15 = [];
        var Row16 = [];
        Row1.push({ text: "Site/Division #" }, { text: data.SiteNumber });
        Row2.push({ text: "Telephone" }, { text: data.Telephone });
        Row3.push({ text: "Invoice number" }, { text: data.InvoiceNumber });
        Row4.push({ text: "Invoice date" }, { text: invoiceDate });
        Row5.push({ text: "Sales order" }, { text: data.SalesOrder });
        Row6.push({ text: "Original sales id" }, { text: data.OriginalSalesId });
        Row7.push({ text: "PO number" }, { text: data.PONumber });
        Row8.push({ text: "Your ref." }, { text: order.CustomerRef });
        Row9.push({ text: "Sales ID: Name" }, { text: data.SalesGroup + " : " + data.SalesName });
        Row10.push({ text: "Retail sold name" }, { text: data.RetailSoldName });
        Row11.push({ text: "Payment terms" }, { text: data.PaymentTerms });
        Row12.push({ text: "Payment method" }, { text: data.PaymentMethod });
        Row13.push({ text: "Delivery mode" }, { text: data.DeliveryMode });
        DetailsTable.push(Row1);
        DetailsTable.push(Row2);
        DetailsTable.push(Row3);
        DetailsTable.push(Row4);
        DetailsTable.push(Row5);
        DetailsTable.push(Row6);
        DetailsTable.push(Row7);
        DetailsTable.push(Row8);
        DetailsTable.push(Row9);
        DetailsTable.push(Row10);
        DetailsTable.push(Row11);
        DetailsTable.push(Row12);
        DetailsTable.push(Row13);
        if (data.FRVin && !data.ChasisVin) {
            Row14.push({ text: "Forest River VIN" }, { text: data.FRVin });
            DetailsTable.push(Row14);
        }
        if (data.ChasisVin) {
            Row15.push({ text: "Chassis VIN" }, { text: data.ChasisVin });
            DetailsTable.push(Row15);
        }
        if (data.ShortVin) {
            Row16.push({ text: "Short VIN" }, { text: data.ShortVin });
            DetailsTable.push(Row16);
        }
        myHeader.push();
        var MainTable = [];
        var MainTableHeader = [];
        var MainTableTotal = [];
        MainTableHeader.push({ text: "Item Number", bold: true });
        MainTableHeader.push({ text: "Description", bold: true });
        MainTableHeader.push({ text: "Quantity", bold: true, alignment: "right" });
        MainTableHeader.push({ text: "Unit", bold: true });
        MainTableHeader.push({
            text: "Unit Price",
            bold: true,
            alignment: "right"
        });
        MainTableHeader.push({ text: "Discount", bold: true, alignment: "right" });
        MainTableHeader.push({ text: "Amount", bold: true, alignment: "right" });
        MainTable.push(MainTableHeader);
        data.Items.forEach(function (item) {
            var rowCell = [];
            rowCell.push({ text: item.ItemNumber, color: "#0066dd" });
            rowCell.push({ text: item.Description });
            rowCell.push({ text: item.Quantity.toFixed(2), alignment: "right" });
            rowCell.push({ text: item.Unit });
            rowCell.push({
                text: currency.format(item.UnitPrice),
                alignment: "right"
            });
            rowCell.push({
                text: currency.format(item.Discount),
                alignment: "right"
            });
            rowCell.push({ text: currency.format(item.Amount), alignment: "right" });
            MainTable.push(rowCell);
        });
        MainTableTotal.push({});
        MainTableTotal.push({});
        MainTableTotal.push({});
        MainTableTotal.push({ text: "Total", bold: true });
        MainTableTotal.push({
            text: currency.format(data.UnitPriceTotal),
            bold: true,
            alignment: "right"
        });
        MainTableTotal.push({
            text: currency.format(data.DiscountTotal),
            bold: true,
            alignment: "right"
        });
        MainTableTotal.push({
            text: currency.format(data.AmountTotal),
            bold: true,
            alignment: "right"
        });
        MainTable.push(MainTableTotal);
        myContent.push({
            layout: "headerLineOnly",
            margin: [0, 0, 0, 0],
            fontSize: 6,
            table: {
                widths: ["12%", "43%", "10%", "5%", "10%", "10%", "10%"],
                headerRows: 1,
                body: MainTable
            }
        }, {
            margin: [0, 10, 0, 0],
            fontSize: 8,
            bold: true,
            alignment: "right",
            table: {
                widths: ["50%", "30%", "10%", "10%"],
                body: [
                    [
                        { text: "", border: [false, false, false, false], rowSpan: 3 },
                        {
                            text: data.PaymentTerms,
                            rowSpan: 3,
                            alignment: "center",
                            margin: [0, 25, 0, 25],
                            border: [true, true, false, true]
                        },
                        {
                            text: "Net Amount",
                            border: [false, true, false, false],
                            margin: [0, 10, 0, 0]
                        },
                        {
                            text: currency.format(data.NetAmount),
                            border: [false, true, true, false],
                            margin: [0, 10, 0, 0]
                        }
                    ],
                    [
                        {},
                        {},
                        { text: "Sales Tax", border: [false, false, false, false] },
                        {
                            text: currency.format(data.SalesTax),
                            border: [false, false, true, false]
                        }
                    ],
                    [
                        {},
                        {},
                        {
                            text: "Grand Total",
                            border: [false, false, false, true],
                            margin: [0, 0, 0, 10]
                        },
                        {
                            text: currency.format(data.GrandTotal) + " USD",
                            border: [false, false, true, true],
                            margin: [0, 0, 0, 10]
                        }
                    ]
                ]
            }
        }, {
            margin: [0, 10, 0, 0],
            fontSize: 8,
            bold: true,
            alignment: "left",
            table: {
                widths: ["20%", "30%", "10%", "10%"],
                body: [
                    [
                        { text: "Payment per", border: [false, false, false, false] },
                        {
                            text: new Date(data.DueDate).toLocaleDateString(),
                            border: [false, false, false, false]
                        }
                    ],
                ]
            }
        });
        var myFooter = [];
        if (order.ShipToCountry != "CAN") {
            myFooter.push({
                margin: [25, 0, 25, 0],
                fontSize: 8,
                table: {
                    widths: ["15%", "10%", "30%"],
                    body: [
                        [
                            {
                                text: "Forest River, Inc CARB 93120 Compliant With Applicable Phase 2 emission",
                                bold: true,
                                border: [false, false, false, false]
                            },
                            {
                                text: "FOREST RIVER, INC. IS NOT RESPONSIBLE FOR SHORTAGES OR DEFECT NOT INDICATED ON THIS FORM AT TIME OF DELIVERY. VEHICHLE RECEIVED IN GOOD CONDITION EXCEPT AS NOTED IN REMARKS ABOVE.",
                                bold: true,
                                colSpan: 2,
                                border: [false, false, false, false]
                            },
                            {}
                        ],
                        [
                            { text: "", border: [false, false, false, false] },
                            {
                                text: "Received by:",
                                border: [false, false, false, false],
                                alignment: "right",
                                margin: [0, 10, 0, 0]
                            },
                            { text: "", border: [false, false, false, true] }
                        ]
                    ]
                }
            });
        }
        else {
            myFooter.push({
                margin: [25, 0, 25, 0],
                fontSize: 8,
                table: {
                    widths: ["15%", "50%", "30%"],
                    body: [
                        [
                            {
                                text: "Forest River, Inc CARB 93120 Compliant With Applicable Phase 2 emission",
                                bold: true,
                                border: [false, false, false, false]
                            },
                            {
                                text: "FOREST RIVER, INC. IS NOT RESPONSIBLE FOR SHORTAGES OR DEFECT NOT INDICATED ON THIS FORM AT TIME OF DELIVERY. VEHICHLE RECEIVED IN GOOD CONDITION EXCEPT AS NOTED IN REMARKS ABOVE.",
                                bold: true,
                                border: [false, false, false, false]
                            },
                            {
                                text: "Compliance Specialist: \n Quality Auditing Institute Ltd. \n (604-527-8378)",
                                bold: true,
                                border: [false, false, false, false]
                            }
                        ],
                        [
                            {
                                text: "Received by:",
                                border: [false, false, false, false],
                                alignment: "right",
                                margin: [0, 10, 0, 0]
                            },
                            {
                                text: "", border: [false, false, false, true]
                            },
                            {
                                text: "", border: [false, false, false, false]
                            }
                        ]
                    ]
                }
            });
        }
        dd = {
            pageOrientation: "portrait",
            pageSize: "LETTER",
            pageMargins: [25, 310, 25, 85],
            header: function (currentPage, pageCount) {
                var t = {
                    table: {
                        widths: ["*"],
                        body: [
                            [
                                {
                                    margin: [25, 25, 25, 0],
                                    columns: [
                                        {
                                            fontSize: 9,
                                            table: {
                                                widths: ["*", "*"],
                                                body: [
                                                    [
                                                        {
                                                            text: "FOREST RIVER, INC.\n900 County Road 1\nPO BOX 3030\nElkhart, IN 46515\nUSA",
                                                            bold: true,
                                                            rowSpan: 2,
                                                            border: [false, false, false, false]
                                                        },
                                                        {
                                                            text: "Remit To:",
                                                            bold: true,
                                                            border: [false, false, false, false]
                                                        }
                                                    ],
                                                    [
                                                        {},
                                                        {
                                                            text: "21814 Network Place\nCHICAGO, IL 60673- 1218\nUSA",
                                                            border: [false, false, false, false]
                                                        }
                                                    ]
                                                ]
                                            },
                                            layout: {
                                                paddingLeft: function (i, node) {
                                                    return 0;
                                                },
                                                paddingTop: function (i, node) {
                                                    return 0;
                                                },
                                                paddingRight: function (i, node) {
                                                    return 0;
                                                },
                                                paddingBottom: function (i, node) {
                                                    return 0;
                                                }
                                            }
                                        },
                                        {
                                            layout: "noBorders",
                                            table: {
                                                widths: ["auto", "*"],
                                                body: [
                                                    [
                                                        {
                                                            image: "data:image/png;base64,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",
                                                            width: 120,
                                                            rowSpan: 3
                                                        },
                                                        {
                                                            text: "Page      " +
                                                                currentPage.toString() +
                                                                " of " +
                                                                pageCount,
                                                            alignment: "right",
                                                            fontSize: 8,
                                                            margin: [0, 0, 8, 0]
                                                        }
                                                    ],
                                                    [
                                                        {},
                                                        {
                                                            image: barCode,
                                                            width: 80,
                                                            alignment: "right"
                                                        }
                                                    ],
                                                    [
                                                        {},
                                                        {
                                                            text: data.OriginalSalesId ? "Credit note" : "Invoice",
                                                            alignment: "right",
                                                            bold: true,
                                                            fontSize: 14,
                                                            margin: [0, 0, 8, 0]
                                                        }
                                                    ]
                                                ]
                                            }
                                        }
                                    ]
                                }
                            ],
                            [
                                {
                                    margin: [25, 0, 25, 0],
                                    columns: [
                                        {
                                            width: "30%",
                                            fontSize: 9,
                                            margin: [0, 7, 0, 0],
                                            text: [
                                                { text: "Ship To: ", bold: true },
                                                data.ShipToNumber + "\n",
                                                data.ShipToName + "\n",
                                                data.ShipToAddress,
                                                "\n\n",
                                                { text: "Bill To: ", bold: true },
                                                data.BillToNumber + "\n",
                                                data.BillToName + "\n",
                                                data.BillToAddress + "\n",
                                                "Phone: " + data.BillToPhone
                                            ]
                                        },
                                        data.FloorPlanBankCode ? {
                                            width: "25%",
                                            fontSize: 9,
                                            table: {
                                                widths: ["auto", "*"],
                                                body: [
                                                    [
                                                        {
                                                            text: "Floor plan bank:",
                                                            bold: true,
                                                            margin: [0, 7, 0, 0]
                                                        },
                                                        {
                                                            image: barCode2,
                                                            width: 72
                                                        }
                                                    ],
                                                    [
                                                        {
                                                            text: "Floor plan bank code: " +
                                                                data.FloorPlanBankCode +
                                                                "\n Approval number: " +
                                                                data.ApprovalNumber +
                                                                "\n" +
                                                                data.BankName +
                                                                "\n" +
                                                                data.BankAddress,
                                                            colSpan: 2
                                                        },
                                                        {}
                                                    ]
                                                ]
                                            },
                                            layout: {
                                                paddingLeft: function (i, node) {
                                                    return 0;
                                                },
                                                paddingTop: function (i, node) {
                                                    return 0;
                                                },
                                                paddingRight: function (i, node) {
                                                    return 0;
                                                },
                                                paddingBottom: function (i, node) {
                                                    return 0;
                                                },
                                                hLineWidth: function (i, node) {
                                                    return 0;
                                                },
                                                vLineWidth: function (i, node) {
                                                    return 0;
                                                }
                                            }
                                        } : {},
                                        {
                                            width: "45%",
                                            alignment: "right",
                                            layout: "noBorders",
                                            fontSize: 8,
                                            table: {
                                                widths: ["*", 150],
                                                body: DetailsTable
                                            }
                                        }
                                    ]
                                }
                            ]
                        ]
                    },
                    layout: {
                        paddingLeft: function (i, node) {
                            return 0;
                        },
                        paddingTop: function (i, node) {
                            return 0;
                        },
                        paddingRight: function (i, node) {
                            return 0;
                        },
                        paddingBottom: function (i, node) {
                            return 0;
                        },
                        hLineWidth: function (i, node) {
                            return 0;
                        },
                        vLineWidth: function (i, node) {
                            return 0;
                        }
                    }
                };
                return t;
            },
            content: myContent,
            footer: myFooter
        };
        vm.createPDF(dd, "InvoiceReport.pdf");
    }
    angular
        .module("app.report")
        .controller("app.report.UnitInvoiceController", ReportUnitInvoiceController);
})(report || (report = {}));
//# sourceMappingURL=report.unitinvoice.controller.js.map
var salesperson;
(function (salesperson) {
    var home;
    (function (home) {
        "use strict";
        var SalesPersonController = (function () {
            function SalesPersonController($state, salesService, $modal) {
                this.$state = $state;
                this.salesService = salesService;
                this.$modal = $modal;
                var vm = this;
                vm.searchText = "";
                this.search("");
            }
            SalesPersonController.prototype.search = function (searchText) {
                var _this = this;
                this.data = null;
                this.controllerReady = false;
                if (searchText != "") {
                    this.salesService.searchSalesPeople(searchText).then(function (data) {
                        _this.data = data;
                        _this.controllerReady = true;
                    });
                }
                else {
                    this.salesService.getSalesPeople().then(function (data) {
                        _this.data = data;
                        _this.controllerReady = true;
                    });
                }
            };
            SalesPersonController.prototype.addSalesPerson = function () {
                var vm = this;
                var settings = {
                    controller: "app.salesperson.AddSalesPersonModalController as vm",
                    templateUrl: "app/salesperson/salesperson.modal.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'lg',
                    resolve: {
                        salesPerson: function () { return null; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
                modalInstance.result.then(function (resultdata) {
                    vm.search(vm.searchText);
                });
            };
            SalesPersonController.prototype.editSalesPerson = function (salesPerson) {
                var vm = this;
                var settings = {
                    controller: "app.salesperson.AddSalesPersonModalController as vm",
                    templateUrl: "app/salesperson/salesperson.modal.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'lg',
                    resolve: {
                        salesPerson: function () { return salesPerson; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
                modalInstance.result.then(function (resultdata) {
                    vm.search(vm.searchText);
                });
            };
            SalesPersonController.prototype.deleteSalesPerson = function (salesPerson) {
                var vm = this;
                salesPerson.IsActive = false;
                vm.salesService.updateSalesPerson(salesPerson);
            };
            SalesPersonController.$inject = ["$state", "app.services.SalesPersonService", "$uibModal"];
            return SalesPersonController;
        }());
        angular.module("app.salesperson")
            .controller("app.salesperson.SalesPersonController", SalesPersonController);
    })(home = salesperson.home || (salesperson.home = {}));
})(salesperson || (salesperson = {}));
//# sourceMappingURL=salesperson.controller.js.map
var partcatalog;
(function (partcatalog) {
    var home;
    (function (home) {
        "use strict";
        var AddSalesPersonModalController = (function () {
            function AddSalesPersonModalController($state, salespersonService, $modalInstance, salesPerson) {
                this.$state = $state;
                this.salespersonService = salespersonService;
                this.$modalInstance = $modalInstance;
                var vm = this;
                vm.data = salesPerson;
                if (!vm.data) {
                    vm.data = new app.services.ISalesPerson();
                    vm.data.IsActive = true;
                    vm.isNewRecord = true;
                }
                vm.controllerReady = true;
            }
            AddSalesPersonModalController.prototype.save = function () {
                var _this = this;
                this.salespersonService.updateSalesPerson(this.data).then(function (response) {
                    _this.$modalInstance.close(response);
                });
            };
            AddSalesPersonModalController.prototype.close = function () {
                this.$modalInstance.dismiss();
            };
            AddSalesPersonModalController.$inject = ["$state", "app.services.SalesPersonService", "$uibModalInstance", "salesPerson"];
            return AddSalesPersonModalController;
        }());
        angular.module("app.salesperson")
            .controller("app.salesperson.AddSalesPersonModalController", AddSalesPersonModalController);
    })(home = partcatalog.home || (partcatalog.home = {}));
})(partcatalog || (partcatalog = {}));
//# sourceMappingURL=salesperson.modal.controller.js.map
var shipmenttracking;
(function (shipmenttracking) {
    var claimtracking;
    (function (claimtracking) {
        "use strict";
        var ClaimShipmentTrackingController = (function () {
            function ClaimShipmentTrackingController($state, shipmentTrackingService, $modal, $modalInstance, claimNumber, $timeout) {
                this.$state = $state;
                this.shipmentTrackingService = shipmentTrackingService;
                this.$modal = $modal;
                this.$modalInstance = $modalInstance;
                this.$timeout = $timeout;
                var vm = this;
                vm.isModal = false;
                vm.claimNumber = claimNumber;
                vm.search();
            }
            ClaimShipmentTrackingController.prototype.search = function () {
                var _this = this;
                var vm = this;
                vm.shipmentTrackingService.getShipmentTrackingsByClaim(vm.claimNumber).then(function (data) {
                    vm.data = data;
                    _this.controllerReady = true;
                });
            };
            ClaimShipmentTrackingController.prototype.print = function (labelFileName) {
                var vm = this;
                vm.LabelImage = labelFileName;
            };
            ClaimShipmentTrackingController.prototype.openPrintDialog = function () {
                var divContents = $(".print").clone();
                var body = $("body").detach();
                document.body = document.createElement("body");
                divContents.appendTo($("body"));
                window.print();
                $("html body").remove();
                body.appendTo($("html"));
            };
            ClaimShipmentTrackingController.prototype.viewAll = function () {
                this.LabelImage = null;
            };
            ClaimShipmentTrackingController.prototype.close = function (value) {
                this.$modalInstance.close(value);
            };
            ClaimShipmentTrackingController.$inject = ["$state", "app.services.ShipmentTrackingService", "$uibModal", "$uibModalInstance", "claimNumber", "$timeout"];
            return ClaimShipmentTrackingController;
        }());
        angular.module("app.shipmenttracking")
            .controller("app.shipmenttracking.ClaimShipmentTrackingController", ClaimShipmentTrackingController);
    })(claimtracking = shipmenttracking.claimtracking || (shipmenttracking.claimtracking = {}));
})(shipmenttracking || (shipmenttracking = {}));
//# sourceMappingURL=shipment.claimtracking.controller.js.map
var shipmenttracking;
(function (shipmenttracking) {
    var home;
    (function (home) {
        "use strict";
        var ShipmentTrackingController = (function () {
            function ShipmentTrackingController($state, shipmentTrackingService, $modal, $modalInstance, partOrder) {
                this.$state = $state;
                this.shipmentTrackingService = shipmentTrackingService;
                this.$modal = $modal;
                this.$modalInstance = $modalInstance;
                var vm = this;
                vm.isModal = false;
                if (partOrder == null) {
                    vm.partOrder = $state.params['partorder'];
                }
                else {
                    vm.partOrder = partOrder;
                    vm.isModal = true;
                }
                vm.search();
            }
            ShipmentTrackingController.prototype.search = function () {
                var _this = this;
                var vm = this;
                vm.shipmentTrackingService.getShipmentTrackingsByPartOrder(vm.partOrder).then(function (data) {
                    vm.data = data;
                    _this.controllerReady = true;
                });
            };
            ShipmentTrackingController.prototype.close = function (value) {
                this.$modalInstance.close(value);
            };
            ShipmentTrackingController.$inject = ["$state", "app.services.ShipmentTrackingService", "$uibModal", "$uibModalInstance", "partOrder"];
            return ShipmentTrackingController;
        }());
        angular.module("app.shipmenttracking")
            .controller("app.shipmenttracking.ShipmentTrackingController", ShipmentTrackingController);
    })(home = shipmenttracking.home || (shipmenttracking.home = {}));
})(shipmenttracking || (shipmenttracking = {}));
//# sourceMappingURL=shipment.tracking.controller.js.map
var sip;
(function (sip) {
    var home;
    (function (home) {
        "use strict";
        var SIPController = (function () {
            function SIPController($state, sipService, $modal) {
                this.$state = $state;
                this.sipService = sipService;
                this.$modal = $modal;
                var vm = this;
                vm.searchText = $state.params["search"];
                vm.sortField = 'ProgramNumber';
                vm.sortDesc = false;
                if (vm.searchText) {
                    this.search(vm.searchText);
                }
                else {
                    vm.searchText = "US1BNDMT6CA000209";
                    this.search(vm.searchText);
                }
            }
            SIPController.prototype.search = function (searchText) {
                var _this = this;
                this.data = null;
                this.controllerReady = false;
                this.sipService.VINSearch(this.searchText, this.sortField, this.sortDesc).then(function (data) {
                    _this.data = data;
                    _this.controllerReady = true;
                });
            };
            SIPController.prototype.sort = function (sortField) {
                if (sortField == this.sortField) {
                    this.sortDesc = !this.sortDesc;
                }
                else {
                    this.sortDesc = false;
                }
                this.sortField = sortField;
                this.search(this.searchText);
            };
            SIPController.prototype.register = function (line) {
                var vm = this;
                var settings = {
                    controller: "app.sip.SipRegisterModalController as vm",
                    templateUrl: "app/sip/sip.register.modal.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'lg',
                    resolve: {
                        vin: function () { return line.VIN; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
                modalInstance.result.then(function (resultdata) {
                    vm.sipService.UpdateSipLine(line.ProgramNumber, line.VIN, resultdata).then(function () {
                        line.SalesPersonNumber = resultdata;
                    });
                });
            };
            SIPController.$inject = ["$state", "app.services.SIPService", "$uibModal"];
            return SIPController;
        }());
        angular.module("app.sip")
            .controller("app.sip.SIPController", SIPController);
    })(home = sip.home || (sip.home = {}));
})(sip || (sip = {}));
//# sourceMappingURL=sip.controller.js.map
var sip;
(function (sip) {
    var home;
    (function (home) {
        "use strict";
        var SipRegisterController = (function () {
            function SipRegisterController($state, $modalInstance, salesPersonService, vin) {
                var _this = this;
                this.$state = $state;
                this.$modalInstance = $modalInstance;
                this.salesPersonService = salesPersonService;
                var vm = this;
                vm.vin = vin;
                salesPersonService.getSalesPeople().then(function (data) {
                    vm.salespeople = data;
                    _this.controllerReady = true;
                });
            }
            SipRegisterController.prototype.select = function (part) {
                this.$modalInstance.close(part.PartNumber);
            };
            SipRegisterController.prototype.close = function () {
                if (this.SalesPerson) {
                    this.$modalInstance.close(this.SalesPerson.SalesPersonNumber);
                }
                else {
                    this.$modalInstance.dismiss();
                }
            };
            SipRegisterController.$inject = ["$state", "$uibModalInstance", "app.services.SalesPersonService", "vin"];
            return SipRegisterController;
        }());
        angular.module("app.sip")
            .controller("app.sip.SipRegisterModalController", SipRegisterController);
    })(home = sip.home || (sip.home = {}));
})(sip || (sip = {}));
//# sourceMappingURL=sip.register.modal.controller.js.map
var spiff;
(function (spiff) {
    var home;
    (function (home) {
        "use strict";
        var SPIFFController = (function () {
            function SPIFFController($state, SPIFFService, loginService, rootScope, CampaignService, vendorRequestService, $scope, mv360api, dealerService) {
                var _this = this;
                this.$state = $state;
                this.SPIFFService = SPIFFService;
                this.loginService = loginService;
                this.rootScope = rootScope;
                this.CampaignService = CampaignService;
                this.vendorRequestService = vendorRequestService;
                this.$scope = $scope;
                this.mv360api = mv360api;
                this.dealerService = dealerService;
                var vm = this;
                vm.W9 = true;
                vm.HasAnyValidW9 = false;
                SPIFFService.getAllowanceType().then(function (data) {
                    vm.allowanceType = data.filter(function (x) { return x.Label.indexOf("Dealer") > -1 || x.Label == "Duplicate"; });
                });
                SPIFFService.getLineStatus().then(function (data) {
                    data.filter(function (x) { return x.Label == "Inreview"; })[0].Label = "In Review";
                    data.filter(function (x) { return x.Label == "Invoiced"; })[0].Label = "Pending Payment";
                    vm.lineStatus = data.filter(function (x) { return x.Label != "Rejected" && x.Label != "Pending" && x.Label != "Cancelled" && x.Label != "Submitted"; });
                });
                vm.vendorRequestService.getHistory(true).then(function (data) {
                    if (vm.loginService.GetPrivilegeLevel("SPIFF_PAY_DEALER_SALES_PERSON") == "Read" ||
                        vm.loginService.GetPrivilegeLevel("SPIFF_PAY_DEALER_SALES_PERSON") == "None") {
                        if (data == null || data.length == 0) {
                            vm.W9 = false;
                        }
                        else {
                            data.forEach(function (request) {
                                if (request.Status == "Accepted" || request.Status == "Pending") {
                                    vm.HasAnyValidW9 = true;
                                }
                            });
                            vm.W9 = vm.HasAnyValidW9;
                        }
                    }
                });
                vm.dealerService.getDealerAllowedSPIFFSubmission(vm.mv360api.currentDealer).then(function (data) {
                    vm.AllowedDealership = data;
                    if (data) {
                        vm.vendorRequestService.getRequest().then(function (data) {
                            if (!vm.rootScope.SPIFF) {
                                vm.rootScope.SPIFF = new app.core.PageData(SPIFFService, _this.search);
                                vm.rootScope.SPIFF.SearchText = $state.params["search"];
                                vm.rootScope.SPIFF.SearchField.Preauths = 'Any';
                                vm.rootScope.SPIFF.SearchField.Rejected = 'Any';
                                vm.rootScope.SPIFF.SearchField.Feedback = 'false';
                                vm.rootScope.SPIFF.SearchField.Year = vm.rootScope.SPIFF.Years[0].Value;
                                vm.rootScope.SPIFF.SearchField.UserDealers = loginService.UserInfo.Dealers.map(function (d) { return d.DealerNumber; });
                                vm.rootScope.SPIFF.SearchField.DealerNumber = vm.loginService.UserInfo.Dealers.filter(function (x) { return x.DealerNumber == CampaignService.getMV360API().currentDealer; })[0];
                                vm.rootScope.SPIFF.SearchField.SalesPersonNumber = data.VendorId;
                                vm.rootScope.SPIFF.Search();
                            }
                            else {
                                var newsearch = $state.params["search"];
                                if (newsearch) {
                                    if (newsearch != vm.rootScope.SPIFF.SearchText) {
                                        vm.rootScope.SPIFF.SearchText = newsearch;
                                        _this.rootScope.SPIFF.Search();
                                    }
                                }
                                else {
                                    _this.rootScope.SPIFF.SearchIfExpired();
                                }
                            }
                            vm.controllerReady = true;
                        });
                    }
                    else {
                        vm.controllerReady = true;
                    }
                });
                this.whenEnterKeyIsHitSearch($scope);
            }
            SPIFFController.prototype.openDatePicker = function ($event, control) {
                $event.preventDefault();
                $event.stopPropagation();
                if (control == "searchdatesubmitted") {
                    this.searchdatesubmittedopen = true;
                }
            };
            SPIFFController.prototype.whenEnterKeyIsHitSearch = function ($scope) {
                var vm = this;
                var onEnter = function (e) {
                    if (e.which == 13 && vm.controllerReady) {
                        vm.rootScope.SPIFF.Search();
                        vm.controllerReady = false;
                    }
                };
                $(document).keydown(onEnter);
                $scope.$on('$destroy', function () {
                    $(document).unbind('keydown', onEnter);
                });
            };
            SPIFFController.prototype.search = function (searchService, page) {
                var query = new app.services.SearchQuery();
                query.PageSize = page.PageSize;
                query.CurrentPage = page.CurrentPage;
                query.SortField = page.SortField;
                query.SortAscending = !page.SortDesc;
                var filter = new app.services.SPIFFLineSearchQueryFilter();
                filter.ProgramId = page.SearchField.ProgramId;
                filter.VIN = page.SearchField.VIN;
                filter.ChassisNumber = page.SearchField.ChassisNumber;
                filter.RetailSoldDate = page.SearchField.RetailSoldDate;
                filter.Amount = page.SearchField.Amount;
                filter.Years = page.SearchField.Year;
                filter.UserDealers = page.SearchField.DealerNumber ? null : page.SearchField.UserDealers;
                filter.DealerNumber = page.SearchField.DealerNumber.DealerNumber;
                filter.SalesPersonNumber = page.SearchField.SalesPersonNumber;
                filter.CheckNumber = page.SearchField.CheckNumber;
                filter.CheckDate = page.SearchField.CheckDate;
                if (page.SearchField.selectedAllowanceType && page.SearchField.selectedAllowanceType.Value != null)
                    filter.AllowanceType = page.SearchField.selectedAllowanceType.Value;
                if (page.SearchField.selectedLineStatus && page.SearchField.selectedLineStatus.Value != null)
                    filter.Status = page.SearchField.selectedLineStatus.Value;
                query.Filter = filter;
                searchService.searchAdvanced(query).then(function (data) {
                    page.Update(data);
                });
            };
            SPIFFController.prototype.showRejectedReason = function (comment) {
                var vm = this;
                comment = comment ? comment : "";
                vex.dialog.alert({
                    unsafeMessage: "<b>Rejected Reason:</b><br>" + comment,
                    callback: function () {
                    }
                });
            };
            SPIFFController.prototype.checkIfDealerIsDisallowedFromSubmittingSpiff = function (dealer) {
                var vm = this;
                var disallowedDealerList = ["0075449", "0060168", "0047476", "0007237", "0007236", "0040824", "0009220", "1012587", "5180522", "0062333", "5140133", "0068805", "1019209", "1014148", "0062120", "0010188", "0069535", "0060570", "0011238", "5180260", "0043218", "5053604", "5053607", "0060571", "0023428", "0057738", "5178115", "0067523", "1007127", "0006398", "0079117", "1010607", "0050423", "0069456", "0063204", "0046605", "0007052", "0064420", "0065178", "1015377", "5054463", "0030968", "0061108", "0036870", "0050447", "1017822", "0066691", "1017415", "0033215", "0046638", "0068079", "0064925", "0050605", "1015903", "1007241", "0040083", "0068547", "0006694", "0032662", "0005901", "0006695", "0067898", "5181230", "1007049", "1009653", "0074321", "5180630", "0075839", "1015975", "1014875", "0009897", "0067281", "0042150", "1006757", "0064981", "1016283", "1016282", "1015424", "0045301", "0076961", "1020297", "1014402", "0029185", "1001257", "1017659", "0035603", "1001259", "0066888", "1019840", "1017708", "0003904", "1019309", "1008820", "0033243", "1016894", "1000611", "1016054", "1014921", "1018545", "1016050", "0006231", "1006492", "1015392", "0067282", "0065945", "0043682", "1001260", "1001258", "0076395", "0067232", "0030055", "0075647", "1014929", "0007623", "0062119", "1018368", "0061507", "0065868", "0075648", "0036295", "0065639", "0030103", "0009863", "0035680", "0005204", "0024407", "1019982", "0030100", "1015904", "0037134", "0009333", "0054482", "0066187", "0023626", "0009818", "0076964", "1015391", "0076963", "0054592", "0071472", "0007799", "0065245", "1013090", "1006818", "1006402", "0069569", "5100674", "5107277", "1010796", "0075651", "0064032", "0009500", "0033209", "0008409", "0007589", "0038562", "0010123", "0010692", "1012373", "0074426", "1012270", "0010082", "1014233", "5056056", "0042048", "1012588", "1010606", "0065395", "1021181", "1015855", "1008997", "0024689", "0047672", "1020717", "1022514", "0027197", "0066125", "1007290", "0030688", "0029730", "0006297", "1006914", "1014957", "1015393", "1001256", "5103479", "0064201", "0047654", "0063202", "1007291", "1007973", "1007861", "1012733", "0044855", "1007485", "0044209", "0007009", "0003418", "0062955", "1015548", "5181078", "1014808", "1015144", "1014786", "0069255", "0065904"];
                if (disallowedDealerList.indexOf(dealer) > 0) {
                    return true;
                }
                else {
                    return false;
                }
            };
            SPIFFController.$inject = ["$state", "app.services.SPIFFService", "app.services.LoginService", "$rootScope", "app.services.CampaignService", "app.services.VendorRequestService", "$scope", "mv360api", "app.services.DealerService"];
            return SPIFFController;
        }());
        angular.module("app.spiff")
            .controller("app.spiff.SPIFFController", SPIFFController);
    })(home = spiff.home || (spiff.home = {}));
})(spiff || (spiff = {}));
//# sourceMappingURL=spiff.controller.js.map
var spiff;
(function (spiff) {
    var edit;
    (function (edit) {
        "use strict";
        var SPIFFLineEditController = (function () {
            function SPIFFLineEditController($state, vinService, spiffService, $modal, $q, mv360api, $scope, rootScope, loginService, userService, vendorRequestService, campaignService, warrantyService, dealerService, siteService, fileUpload, $timeout, Upload) {
                this.$state = $state;
                this.vinService = vinService;
                this.spiffService = spiffService;
                this.$modal = $modal;
                this.$q = $q;
                this.mv360api = mv360api;
                this.$scope = $scope;
                this.rootScope = rootScope;
                this.loginService = loginService;
                this.userService = userService;
                this.vendorRequestService = vendorRequestService;
                this.campaignService = campaignService;
                this.warrantyService = warrantyService;
                this.dealerService = dealerService;
                this.siteService = siteService;
                this.fileUpload = fileUpload;
                this.$timeout = $timeout;
                this.Upload = Upload;
                var vm = this;
                vm.allowRegistration = false;
                vm.spiffLine = new app.services.ISPIFFLine();
                vm.spiffLine.LineStatus = "Draft";
                vm.controllerReady = true;
                spiffService.getAllowanceType().then(function (data) {
                    var payDealer = data.filter(function (x) { return x.Label == "Dealer"; })[0];
                    var paySalesPerson = data.filter(function (x) { return x.Label == "Dealer Sales Person"; })[0];
                    vm.allowanceType = [];
                    vm.allowanceType.push(paySalesPerson);
                    if (vm.loginService.GetPrivilegeLevel('SPIFF_PAY_DEALER') == 'Write')
                        vm.allowanceType.push(payDealer);
                });
            }
            SPIFFLineEditController.prototype.hasApprovedVendorAccount = function () {
                var vm = this;
                return vm.vendorRequestService.getRequest().then(function (data) {
                    return data != null;
                });
            };
            SPIFFLineEditController.prototype.confirmVendor = function () {
                var vm = this;
                if (!(vm.spiffLine.Amount > 0)) {
                    vex.dialog.alert({
                        message: "Spiff with amount of $0 cannot be submitted",
                        callback: function (value) {
                        }
                    });
                    return;
                }
                var msg = "<b>SPIFF will be paid to vendor: " + vm.selectedVendorRequest.VendorName + " (" + vm.selectedVendorRequest.VendorId + ")</b>";
                vex.dialog.buttons.YES.text = 'OK';
                vex.dialog.buttons.NO.text = 'Cancel';
                vex.dialog.confirm({
                    unsafeMessage: msg,
                    callback: function (value) {
                        if (value) {
                            vm.save();
                        }
                        ;
                    }
                });
            };
            SPIFFLineEditController.prototype.save = function () {
                var _this = this;
                var vm = this;
                vm.spiffLine.AllowanceType = this.selectedAllowanceType.Value;
                vm.spiffLine.SalesPerson = vm.selectedVendorRequest.VendorId;
                this.spiffService.addSPIFFLine(vm.spiffLine).then(function () {
                    if (_this.rootScope.SPIFF) {
                        _this.rootScope.SPIFF.ForceExpire();
                    }
                    _this.spiffform.$setPristine();
                    _this.$state.go("spiff");
                });
            };
            SPIFFLineEditController.prototype.vinIsValid = function () {
                var vm = this;
                vm.controllerReady = false;
                var valid = false;
                if (vm.lastVin != vm.spiffLine.VIN && vm.spiffLine.VIN && vm.spiffLine.VIN.length == 17) {
                    vm.lastVin = vm.spiffLine.VIN;
                    this.vinService.getVIN(vm.spiffLine.VIN, true).then(function (data) {
                        if (data) {
                            vm.spiffLine.VIN = data.VIN;
                            vm.setVinInfo(data);
                            vm.validVIN = true;
                            vm.allowRegistration = vm.loginService.UserInfo.Dealers.map(function (d) { return d.DealerNumber; }).indexOf(data.DealerNumber) > -1;
                            vm.siteService.getSiteInfo(data.Site)
                                .then(function (result) {
                                vm.PDIRequired = result.PDIRequired;
                            });
                        }
                        else {
                            valid = false;
                            vm.validVIN = false;
                        }
                        vm.VINvalidated = true;
                    }, function (error) {
                        valid = false;
                    });
                }
                else {
                    valid = false;
                    vm.VINvalidated = false;
                }
                vm.controllerReady = true;
                return valid;
            };
            SPIFFLineEditController.prototype.vinSearch = function () {
                var vm = this;
                if (!vm.spiffLine.VIN || vm.spiffLine.VIN.length != 17) {
                    var settings = {
                        controller: "app.unit.UnitModalController as vm",
                        templateUrl: "app/unit/unit.modal.html",
                        keyboard: false,
                        backdrop: "static",
                        size: "xl",
                        resolve: {
                            search: function () { return vm.spiffLine.VIN; },
                            userDealers: function () { return vm.loginService.UserInfo.Dealers.map(function (d) { return d.DealerNumber; }); },
                            allUnitsSearch: function () { return false; },
                            includeLegacy: function () { return true; }
                        }
                    };
                    var modalInstance = this.$modal.open(settings);
                    modalInstance.result.then(function (resultdata) {
                        vm.spiffLine.VIN = resultdata.VIN;
                        vm.vin = resultdata.VIN;
                        vm.VINvalidated = true;
                        vm.updateVINinfo();
                        vm.validVIN = true;
                    });
                }
            };
            SPIFFLineEditController.prototype.updateVINinfo = function () {
                var vm = this;
                vm.vinHasCampaigns = false;
                vm.vinHasAdvisories = false;
                if (vm.spiffLine.VIN != this.lastVin) {
                    return this.vinService.getVIN(vm.spiffLine.VIN).then(function (data) {
                        if (data) {
                            vm.lastVin = vm.spiffLine.VIN;
                            vm.setVinInfo(data);
                            vm.allowRegistration = vm.loginService.UserInfo.Dealers.map(function (d) { return d.DealerNumber; }).indexOf(data.DealerNumber) > -1;
                        }
                        else {
                            vm.errorMessage = "VIN is invalid.";
                            vm.vin = null;
                            vm.spiffLine = new app.services.ISPIFFLine();
                            vm.spiffLine.LineStatus = "Draft";
                        }
                    })["catch"](function () {
                        vm.errorMessage = "VIN is invalid.";
                        vm.vin = null;
                        vm.spiffLine = new app.services.ISPIFFLine();
                        vm.spiffLine.LineStatus = "Draft";
                    });
                }
            };
            SPIFFLineEditController.prototype.setVinInfo = function (data) {
                var vm = this;
                vm.vin = data;
                vm.vinHasCampaigns = data.HasCampaigns;
                vm.vinHasAdvisories = data.HasAdvisories;
                vm.errorMessage = null;
                vm.getSPIFFProgram();
                if (vm.vinHasCampaigns == true) {
                    vm.campaignService.showNotification(vm.vin.VIN);
                }
                vm.warrantyService.getWarranty(vm.vin.VIN).then(function (data) {
                    if (!data) {
                        vm.errorMessage = "VIN is not warranty registered.";
                        vm.vin = null;
                        vm.spiffLine = new app.services.ISPIFFLine();
                        vm.spiffLine.LineStatus = "Draft";
                    }
                    if (vm.vin.RegisteredDealer) {
                        vm.loginService.GetPrivileges(vm.vin.RegisteredDealer).then(function (result) {
                            var privilegeResult = result.filter(function (priv) { return priv.PrivilegeName == "SPIFF_REGISTER_FORM"; });
                            if (privilegeResult.length == 0 || privilegeResult[0].PrivilegeLevel == "None") {
                                vm.errorMessage = "User does not have permission to process SPIFFs for dealer " + vm.vin.RegisteredDealer;
                                vm.vin = null;
                                vm.spiffLine = new app.services.ISPIFFLine();
                                vm.spiffLine.LineStatus = "Draft";
                            }
                        });
                    }
                });
            };
            SPIFFLineEditController.prototype.getSPIFFProgram = function () {
                var _this = this;
                var vm = this;
                vm.selectedVendorRequest = null;
                vm.errorMessage = null;
                if (vm.selectedAllowanceType && vm.selectedAllowanceType.Value) {
                    if (vm.selectedAllowanceType.Value == 2) {
                        var vendor = new app.services.IVendorRequest();
                        var dealer = vm.vin.RegisteredDealer;
                        if (dealer) {
                            vendor.VendorId = dealer;
                            vendor.VendorName = dealer;
                            vm.dealerService.getDealerByNumber(dealer)
                                .then(function (x) {
                                vendor.VendorName = x.DealerName;
                            });
                        }
                        else {
                            vendor.VendorId = vm.loginService.selectedDealer.DealerNumber;
                            vendor.VendorName = vm.loginService.selectedDealer.DisplayName.substr(0, vm.loginService.selectedDealer.DisplayName.lastIndexOf(' - '));
                        }
                        vm.vendorRequests = new Array();
                        vm.vendorRequests.push(vendor);
                        vm.selectedVendorRequest = vm.vendorRequests[0];
                    }
                    if (vm.selectedAllowanceType.Value == 3) {
                        if (vm.loginService.GetPrivilegeLevel('SPIFF_PAY_DEALER_SALES_PERSON') == 'Write') {
                            var dealer = vm.vin.RegisteredDealer;
                            if (!dealer)
                                dealer = vm.vin.DealerNumber;
                            vm.dealerService.getAddressesByNumber(dealer).then(function (addressResult) {
                                var ddd1 = null;
                                for (var index = 0; index < addressResult.length; index++) {
                                    if (addressResult[index].DealerNumber == dealer && (addressResult[index].Purpose.indexOf("Invoice") > -1 || addressResult[index].Purpose.indexOf("Business") > -1) && addressResult[index].StateOrProvince == 'CA') {
                                        ddd1 = 'CA';
                                    }
                                }
                                if (ddd1 != null && ddd1 == 'CA') {
                                    var vendor = new app.services.IVendorRequest();
                                    vendor.VendorId = dealer;
                                    vendor.VendorName = dealer;
                                    vm.dealerService.getDealerByNumber(dealer)
                                        .then(function (x) {
                                        vendor.VendorName = x.DealerName;
                                    });
                                    vm.vendorRequests = new Array();
                                    vm.vendorRequests.push(vendor);
                                    vm.selectedVendorRequest = vm.vendorRequests[0];
                                }
                                else {
                                    _this.vendorRequestService.getDealerVendors(dealer).then(function (data) {
                                        vm.vendorRequests = data;
                                    });
                                }
                            });
                        }
                        else {
                            vm.vendorRequestService.getRequest().then(function (data) {
                                vm.vendorRequests = new Array();
                                vm.vendorRequests.push(data);
                                vm.selectedVendorRequest = vm.vendorRequests[0];
                            });
                        }
                    }
                    if (vm.spiffLine.VIN) {
                        vm.spiffService.getDefaultSPIFF(vm.spiffLine.VIN, vm.selectedAllowanceType.Value.toString()).then(function (data) {
                            vm.spiffLine = data;
                            vm.errorMessage = data.ProgramId ? undefined : "No SPIFF program exists for selected VIN and Allowance Type.";
                        })["catch"](function (reason) {
                            vm.errorMessage = reason.data.ExceptionMessage;
                            vm.partialVIN = null;
                        });
                    }
                }
            };
            SPIFFLineEditController.prototype.uploadFiles = function (files) {
                var vm = this;
                vm.uploadBusy = true;
                this.files = files;
                if (files && files.length) {
                    var connectionURL = vm.fileUpload.getUploadURL() + "/PostFileWithNote/" + vm.vin.VIN + "/PDIDoc/" + vm.loginService.UserInfo.Username + "/";
                    this.Upload.upload({
                        url: connectionURL,
                        method: 'POST',
                        headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                        data: {
                            files: files
                        }
                    }).then(function (response) {
                        vm.result = response.data;
                        if (response.status == 200) {
                            if (vm.errorMessage.indexOf("VIN does not have a signed PDI/Registration attached. Please go to Dealer Units and attach the required document to the VIN.") != -1) {
                                vm.errorMessage = null;
                            }
                        }
                    }, function (response) {
                        if (response.status > 0) {
                            if (response.status == 404) {
                                vm.errorMsg = "File size limit exceeded - files uploaded must remain under 50 MB.";
                            }
                            else {
                                vm.errorMsg = response.status + ': ' + response.data;
                            }
                        }
                        vm.uploadBusy = false;
                    }, function (evt) {
                        var loaded = evt.loaded;
                        var total = evt.total;
                        vm.progress = Math.floor(Math.min(100, 100.0 * (loaded / total)));
                    })["finally"](function () {
                        vm.errorMessage = null;
                        vm.uploadBusy = false;
                        if (vm.errorMessage.indexOf("VIN does not have a signed PDI/Registration attached. Please go to Dealer Units and attach the required document to the VIN.") != -1) {
                            vm.errorMessage = null;
                        }
                        vm.$scope.$apply();
                        vm.$scope.$digest();
                    });
                }
                else {
                    vm.uploadBusy = false;
                }
            };
            SPIFFLineEditController.$inject = ["$state",
                "app.services.VINService",
                "app.services.SPIFFService",
                "$uibModal",
                "$q",
                "mv360api",
                "$scope",
                "$rootScope",
                "app.services.LoginService",
                "app.services.UserService",
                "app.services.VendorRequestService",
                "app.services.CampaignService",
                "app.services.WarrantyService",
                "app.services.DealerService",
                "app.services.SiteService",
                "app.services.FileUploadService",
                "$timeout",
                "Upload"
            ];
            return SPIFFLineEditController;
        }());
        angular.module("app.spiff")
            .controller("app.spiff.SPIFFLineEditController", SPIFFLineEditController);
    })(edit = spiff.edit || (spiff.edit = {}));
})(spiff || (spiff = {}));
//# sourceMappingURL=spiff.edit.controller.js.map
var support;
(function (support) {
    var home;
    (function (home) {
        "use strict";
        var SupportController = (function () {
            function SupportController($state, $modal, mv360api, loginService, supportService) {
                this.$state = $state;
                this.$modal = $modal;
                this.mv360api = mv360api;
                this.loginService = loginService;
                this.supportService = supportService;
                this.controllerReady = true;
                var vm = this;
                vm.controllerReady = true;
                vm.alerts = new Array();
            }
            SupportController.prototype.backToLogin = function () {
                this.$state.go("login");
            };
            SupportController.prototype.addAlert = function (type, message) {
                this.alerts.push({ type: type, msg: message });
            };
            SupportController.prototype.closeAlert = function (index) {
                this.alerts.splice(index, 1);
            };
            SupportController.$inject = ["$state", "$uibModal", "mv360api", "app.services.LoginService", "app.services.SupportService"];
            return SupportController;
        }());
        angular.module("app.support")
            .controller("app.support.SupportController", SupportController);
    })(home = support.home || (support.home = {}));
})(support || (support = {}));
//# sourceMappingURL=support.controller.js.map
var training;
(function (training) {
    var home;
    (function (home) {
        "use strict";
        var TrainingController = (function () {
            function TrainingController($state, trainingService, $modal, $window, loginService) {
                this.$state = $state;
                this.trainingService = trainingService;
                this.$modal = $modal;
                this.$window = $window;
                this.loginService = loginService;
                var vm = this;
                vm.linkStart = "/files/training";
                vm.folder = $state.params['folder'];
                vm.directories = null;
                if (!vm.folder) {
                    vm.folder = 'Training Manuals and Videos';
                }
                else {
                    console.log("param folder");
                    console.log(vm.folder);
                }
                vm.trainingService.getTrainingFiles().then(function (data) {
                    vm.directories = data;
                    vm.displayedDirectory = vm.directories;
                    vm.parentDirectory = null;
                    console.log(vm.directories);
                });
                vm.showFileSize = false;
            }
            TrainingController.prototype.folderLevelDown = function (val) {
                var vm = this;
                vm.parentDirectory = vm.displayedDirectory;
                angular.forEach(vm.parentDirectory.ChildDirectories, function (value, key) {
                    if (val.Path == value.Path) {
                        vm.displayedDirectory = value;
                        vm.folder = vm.folder + " > " + value.Name;
                    }
                });
                vm.showFileSize = true;
            };
            TrainingController.prototype.folderLevelUp = function () {
                var vm = this;
                vm.folder = vm.folder.substring(0, vm.folder.lastIndexOf(" > " + vm.displayedDirectory.Name));
                vm.displayedDirectory = vm.parentDirectory;
                if (vm.parentDirectory.Path == vm.directories.Path) {
                    vm.parentDirectory = null;
                }
                else {
                    var nextLevels = vm.parentDirectory.Path.replace(vm.directories.Path, "").split('\\');
                    nextLevels.shift();
                    if (nextLevels.length > 1) {
                        vm.parentDirectory = vm.GetParent(vm.directories, nextLevels);
                    }
                    else {
                        vm.parentDirectory = vm.directories;
                    }
                }
                vm.showFileSize = false;
            };
            TrainingController.prototype.folderLevel = function (index) {
                var vm = this;
                var path = vm.folder.split(' > ');
                path.length = index + 1;
                vm.folder = path.join(' > ');
                var levels = vm.displayedDirectory.Path.replace(vm.directories.Path, "").split('\\');
                levels.shift();
                levels.length = index + 1;
                if (levels.length > 1) {
                    vm.showFileSize = true;
                    vm.displayedDirectory = vm.GetParent(vm.directories, levels);
                    var nextLevels = vm.displayedDirectory.Path.replace(vm.directories.Path, "").split('\\');
                    nextLevels.shift();
                    vm.parentDirectory = vm.GetParent(vm.directories, nextLevels);
                }
                else {
                    vm.showFileSize = false;
                    vm.displayedDirectory = vm.directories;
                    vm.parentDirectory = null;
                }
            };
            TrainingController.prototype.GetParent = function (directory, levels) {
                var newDirectory = null;
                var vm = this;
                angular.forEach(directory.ChildDirectories, function (value, key) {
                    if (levels[0] == value.Name) {
                        newDirectory = value;
                    }
                });
                if (newDirectory == null) {
                    levels.shift();
                    newDirectory = vm.GetParent(directory, levels);
                    return newDirectory;
                }
                levels.shift();
                if (levels.length > 0) {
                    newDirectory = vm.GetParent(newDirectory, levels);
                    return newDirectory;
                }
                else {
                    return directory;
                }
            };
            TrainingController.prototype.searchTrainingFiles = function () {
                var vm = this;
                vm.folder = 'Search Results';
                vm.trainingService.searchTrainingFiles(vm.searchText).then(function (data) {
                    vm.directories = data;
                    vm.displayedDirectory = vm.directories;
                    vm.parentDirectory = null;
                });
            };
            TrainingController.prototype.folderNavigation = function () {
                var vm = this;
                return vm.folder.replace("\\", " > ").split(" > ");
            };
            TrainingController.prototype.getUpFolder = function (folder) {
                var lastSlash = folder.lastIndexOf("\\");
                return folder.slice(0, lastSlash);
            };
            TrainingController.prototype.setDirLocation = function (dir) {
                var vm = this;
                var location = dir.Path.replace(vm.directories.Path + "\\", "").replace(/\\/g, "/");
                return "Training/" + location;
            };
            TrainingController.prototype.setFileLocation = function (file) {
                var vm = this;
                var location = file.Path.replace(vm.directories.Path + "\\", "").replace("\\" + file.Name, "").replace(/\\/g, "/");
                return "Training/" + location;
            };
            TrainingController.$inject = ["$state", "app.services.TrainingService", "$uibModal", "$window", "app.services.LoginService"];
            return TrainingController;
        }());
        angular.module("app.training")
            .controller("app.training.TrainingController", TrainingController);
    })(home = training.home || (training.home = {}));
})(training || (training = {}));
//# sourceMappingURL=training.controller.js.map
var unit;
(function (unit) {
    var home;
    (function (home) {
        "use strict";
        var UnitController = (function () {
            function UnitController($state, vinService, CampaignService, rootScope, loginService, $scope) {
                this.$state = $state;
                this.vinService = vinService;
                this.CampaignService = CampaignService;
                this.rootScope = rootScope;
                this.loginService = loginService;
                this.$scope = $scope;
                var vm = this;
                if (vm.rootScope.VIN && $state.params["search"]) {
                    vm.rootScope.VIN = null;
                }
                if (!vm.rootScope.VIN || $state.params["search"] == "HasCampaigns") {
                    vm.rootScope.VIN = new app.core.PageData(this.vinService, this.search);
                    vm.rootScope.VIN.SearchText = $state.params["search"];
                    vm.rootScope.VIN.SearchField.Preauths = 'Any';
                    vm.rootScope.VIN.SearchField.Rejected = 'Any';
                    vm.rootScope.VIN.SortField = 'VIN';
                    vm.rootScope.VIN.SortDesc = true;
                    vm.rootScope.VIN.SearchField.RetailSold = false;
                    vm.rootScope.VIN.AdvancedSearchMode = false;
                    vm.rootScope.VIN.SearchField.HasCampaigns = false;
                    vm.rootScope.VIN.SearchField.UserDealers = loginService.UserInfo.Dealers.map(function (d) { return d.DealerNumber; });
                    vm.rootScope.VIN.SearchField.DealerNumber = loginService.UserInfo.Dealers
                        .filter(function (x) { return x.DealerNumber == CampaignService.getMV360API().currentDealer; })[0];
                    vm.rootScope.VIN.SearchField.AllUnitsSearch = false;
                    vm.checkAllUnitsSearch();
                    vm.checkCampaignSearch();
                    if (!vm.isAllUnitsSearch || (vm.isAllUnitsSearch && vm.rootScope.VIN.SearchText.length >= 6)) {
                        vm.rootScope.VIN.Search();
                    }
                    else {
                        vm.$state.go('home');
                    }
                }
                else {
                    vm.rootScope.VIN.AdvancedSearchMode = false;
                    vm.rootScope.VIN.SearchText = $state.params["search"];
                    vm.checkAllUnitsSearch();
                    vm.checkCampaignSearch();
                    vm.rootScope.VIN.Search();
                }
                setTimeout(function () {
                    vm.rootScope.VIN.SearchText = null;
                }, 500);
                this.whenEnterKeyIsHitSearch($scope);
            }
            UnitController.prototype.whenEnterKeyIsHitSearch = function ($scope) {
                var vm = this;
                var onEnter = function (e) {
                    if (e.which == 13) {
                        vm.rootScope.VIN.Search();
                    }
                };
                $(document).keydown(onEnter);
                $scope.$on('$destroy', function () {
                    $(document).unbind('keydown', onEnter);
                });
            };
            UnitController.prototype.checkAllUnitsSearch = function () {
                var vm = this;
                console.log(vm.$state.params["search"]);
                if (vm.$state.params["search"] && vm.$state.params["search"] != "HasCampaigns") {
                    vm.rootScope.VIN.SearchField.DealerUnitsOnly = false;
                    vm.rootScope.VIN.SearchField.AllUnitsSearch = true;
                    vm.hidePagination = true;
                    vm.isAllUnitsSearch = true;
                    vm.searchText = vm.rootScope.VIN.SearchText;
                }
                else {
                    vm.rootScope.VIN.SearchField.DealerUnitsOnly = true;
                    vm.rootScope.VIN.SearchField.AllUnitsSearch = false;
                    vm.hidePagination = false;
                    vm.isAllUnitsSearch = false;
                }
            };
            UnitController.prototype.checkCampaignSearch = function () {
                var vm = this;
                if (vm.rootScope.VIN.SearchText == 'HasCampaigns') {
                    vm.rootScope.VIN.SearchText = 'OnlyDealerVins';
                    vm.rootScope.VIN.SearchField.HasCampaigns = true;
                    vm.rootScope.VIN.SearchField.RetailSold = false;
                    vm.rootScope.VIN.AdvancedSearchMode = true;
                    vm.rootScope.VIN.SearchField.DealerUnitsOnly = true;
                    vm.rootScope.VIN.SearchField.IncludeLegacy = true;
                }
                else {
                    vm.rootScope.VIN.SearchField.HasCampaigns = 'All';
                    vm.rootScope.VIN.SearchField.RetailSold = 'All';
                }
            };
            UnitController.prototype.search = function (searchService, page) {
                var query = new app.services.SearchQuery();
                query.PageSize = page.PageSize;
                query.CurrentPage = page.CurrentPage;
                query.SortField = page.SortField;
                query.SortAscending = page.SortDesc;
                var filter = new app.services.VINSearchQueryFilter();
                if (page.SearchField.AllUnitsSearch) {
                    this.isAllUnitsSearch = true;
                    this.hidePagination = true;
                    query.PageSize = 15;
                }
                else {
                    this.isAllUnitsSearch = false;
                    this.hidePagination = false;
                }
                if (page.SearchText != null) {
                    page.SearchField.SearchText = page.SearchText;
                }
                filter.SimpleSearch = page.SearchField.SearchText;
                filter.HasCampaigns = page.SearchField.HasCampaigns;
                filter.IsRetailSold = page.SearchField.RetailSold;
                filter.AllUnitsSearch = page.SearchField.AllUnitsSearch;
                filter.UserDealers = page.SearchField.DealerNumber ? null : page.SearchField.UserDealers;
                filter.Make = page.SearchField.Make;
                filter.Model = page.SearchField.Model;
                filter.VIN = page.SearchField.VIN;
                filter.Year = page.SearchField.Year;
                filter.SubBrand = page.SearchField.SubBrand;
                filter.ShortVIN = page.SearchField.ShortVIN;
                filter.ChassisNumber = page.SearchField.ChassisNumber;
                filter.DealerUnitsOnly = page.SearchField.DealerUnitsOnly;
                filter.Owner = page.SearchField.Owner;
                filter.DealerNumber = page.SearchField.DealerNumber ? page.SearchField.DealerNumber.DealerNumber : null;
                filter.RegisteredDealer = page.SearchField.RegisteredDealer;
                filter.IncludeLegacy = true;
                query.Filter = filter;
                searchService.searchAdvanced(query).then(function (data) {
                    page.Update(data);
                });
            };
            UnitController.$inject = ["$state", "app.services.VINService", "app.services.CampaignService", "$rootScope", "app.services.LoginService", "$scope"];
            return UnitController;
        }());
        angular.module("app.unit")
            .controller("app.unit.UnitController", UnitController);
    })(home = unit.home || (unit.home = {}));
})(unit || (unit = {}));
//# sourceMappingURL=unit.controller.js.map
var unit;
(function (unit) {
    var details;
    (function (details) {
        "use strict";
        var UnitDetailsController = (function () {
            function UnitDetailsController($state, $modal, vinService, siteService, locationService, loginService, dealerService, reportService, partsCatalogService, campaignService, $scope, Upload, $timeout, fileUpload, mv360api, documentService) {
                var _this = this;
                this.$state = $state;
                this.$modal = $modal;
                this.vinService = vinService;
                this.siteService = siteService;
                this.locationService = locationService;
                this.loginService = loginService;
                this.dealerService = dealerService;
                this.reportService = reportService;
                this.partsCatalogService = partsCatalogService;
                this.campaignService = campaignService;
                this.$scope = $scope;
                this.Upload = Upload;
                this.$timeout = $timeout;
                this.fileUpload = fileUpload;
                this.mv360api = mv360api;
                this.documentService = documentService;
                var vm = this;
                vm.VINNote = null;
                vm.PDIDocuments = null;
                vm.vinHasCampaigns = false;
                vm.vin = $state.params["vin"];
                var includeLegacy = $state.params["includeLegacy"] ? $state.params["includeLegacy"] : false;
                vinService.getVIN(vm.vin, true).then(function (data) {
                    vm.unit = data;
                    vm.allowRegistration = false;
                    vm.vinHasCampaigns = data.HasCampaigns;
                    vm.allowRegistration = vm.loginService.UserInfo.Dealers.map(function (d) { return d.DealerNumber; }).indexOf(vm.unit.DealerNumber) > -1;
                    if (!vm.allowRegistration) {
                        _this.dealerService.checkIfDealerInCompanyChain(vm.loginService.selectedDealer.DealerNumber, vm.unit.DealerNumber).then(function (result) {
                            vm.allowRegistration = result;
                        });
                    }
                    _this.siteService.getSite(vm.unit.Site).then(function (result) {
                        _this.unit.SiteName = result.Name;
                    });
                    if (vm.unit.Location) {
                        _this.locationService.getLocation(vm.unit.Location).then(function (result) {
                            _this.unit.LocationName = result ? result.Name : null;
                        });
                    }
                    _this.LoadNotes();
                    vm.controllerReady = true;
                });
            }
            UnitDetailsController.prototype.LoadNotes = function () {
                var vm = this;
                this.vinService.getDealerNotesForVIN(vm.vin).then(function (data) {
                    vm.VINNote = data;
                    vm.hasNotes = true;
                });
            };
            UnitDetailsController.prototype.downloadPDI = function () {
                var vm = this;
                if (vm.unit.Division == "Marine") {
                    var settings = {
                        controller: "app.report.PDIMarineController as vm",
                        templateUrl: "app/report/report.viewer.html",
                        keyboard: false,
                        backdrop: true,
                        size: 'print',
                        resolve: {
                            vin: function () { return vm.vin; }
                        }
                    };
                }
                else if (vm.unit.Division == "Cargo" || vm.unit.Division == "Bus" || vm.unit.Division == "Commercial") {
                    var settings = {
                        controller: "app.report.PDISimpleController as vm",
                        templateUrl: "app/report/report.viewer.html",
                        keyboard: false,
                        backdrop: true,
                        size: 'print',
                        resolve: {
                            vin: function () { return vm.vin; }
                        }
                    };
                }
                else {
                    var settings = {
                        controller: "app.report.PDIController as vm",
                        templateUrl: "app/report/report.viewer.html",
                        keyboard: false,
                        backdrop: true,
                        size: 'print',
                        resolve: {
                            vin: function () { return vm.vin; }
                        }
                    };
                }
                var modalInstance = this.$modal.open(settings);
            };
            UnitDetailsController.prototype.uploadFiles = function (files) {
                var vm = this;
                vm.uploadBusy = true;
                this.files = files;
                if (files && files.length) {
                    var connectionURL = vm.fileUpload.getUploadURL() + "/PostFileWithNote/" + vm.vin + "/PDIDoc/" + vm.loginService.UserInfo.Username + "/";
                    this.Upload.upload({
                        url: connectionURL,
                        method: 'POST',
                        headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                        data: {
                            files: files
                        }
                    }).then(function (response) {
                        vm.result = response.data;
                    }, function (response) {
                        if (response.status > 0) {
                            if (response.status == 404) {
                                vm.errorMsg = "File size limit exceeded - files uploaded must remain under 50 MB.";
                            }
                            else {
                                vm.errorMsg = response.status + ': ' + response.data;
                            }
                        }
                        vm.uploadBusy = false;
                    }, function (evt) {
                        var loaded = evt.loaded;
                        var total = evt.total;
                        vm.progress = Math.floor(Math.min(100, 100.0 * (loaded / total)));
                    })["finally"](function () {
                        vm.$timeout(function () {
                            vm.vinService.getDealerNotesForVIN(vm.vin).then(function (data) {
                                vm.VINNote = data;
                                vm.hasNotes = true;
                            });
                            vm.$scope.$apply();
                            vm.uploadBusy = false;
                            vm.$scope.$digest();
                        }, 500);
                    });
                }
                else {
                    vm.uploadBusy = false;
                }
            };
            ;
            UnitDetailsController.prototype.uploadDAFiles = function (files) {
                var vm = this;
                vm.uploadBusy = true;
                this.files = files;
                if (files && files.length) {
                    var connectionURL = vm.fileUpload.getUploadURL() + "/PostFileWithNote/" + vm.vin + "/DAF/" + vm.loginService.UserInfo.Username + "/";
                    this.Upload.upload({
                        url: connectionURL,
                        method: 'POST',
                        headers: { "Authorization": "Bearer " + this.mv360api.accessToken },
                        data: {
                            files: files
                        }
                    }).then(function (response) {
                        vm.result = response.data;
                    }, function (response) {
                        if (response.status > 0) {
                            if (response.status == 404) {
                                vm.errorMsg = "File size limit exceeded - files uploaded must remain under 50 MB.";
                            }
                            else {
                                vm.errorMsg = response.status + ': ' + response.data;
                            }
                        }
                        vm.uploadBusy = false;
                    }, function (evt) {
                        var loaded = evt.loaded;
                        var total = evt.total;
                        vm.progress = Math.floor(Math.min(100, 100.0 * (loaded / total)));
                    })["finally"](function () {
                        vm.$timeout(function () {
                            vm.vinService.getDealerNotesForVIN(vm.vin).then(function (data) {
                                vm.VINNote = data;
                                vm.hasNotes = true;
                            });
                            vm.$scope.$apply();
                            vm.uploadBusy = false;
                            vm.$scope.$digest();
                        }, 500);
                    });
                }
                else {
                    vm.uploadBusy = false;
                }
            };
            ;
            UnitDetailsController.prototype.downloadMSRP = function () {
                var vm = this;
                var settings = {
                    controller: "app.report.MSRPController as vm",
                    templateUrl: "app/report/report.viewer.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'print',
                    resolve: {
                        vin: function () { return vm.vin; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
            };
            UnitDetailsController.prototype.downloadOptions = function () {
                var vm = this;
                var settings = {
                    controller: "app.report.OptionsController as vm",
                    templateUrl: "app/report/report.viewer.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'print',
                    resolve: {
                        vin: function () { return vm.vin; },
                        salesId: function () { return null; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
            };
            UnitDetailsController.prototype.downloadInvoice = function () {
                var vm = this;
                var settings = {
                    controller: "app.report.UnitInvoiceController as vm",
                    templateUrl: "app/report/report.viewer.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'print',
                    resolve: {
                        vin: function () { return null; },
                        invoice: function () { return vm.unit.SalesId; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
            };
            UnitDetailsController.prototype.optionNotes = function () {
                var vm = this;
                var settings = {
                    controller: "app.unit.OptionNotesController as vm",
                    templateUrl: "app/unit/unit.optionnotes.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'xl',
                    resolve: {
                        vin: function () { return vm.vin; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
                modalInstance.result["finally"](function () {
                    vm.LoadNotes();
                });
            };
            UnitDetailsController.prototype.LoadPDIDocuments = function () {
                var vm = this;
            };
            UnitDetailsController.$inject = ["$state", "$uibModal", "app.services.VINService", "app.services.SiteService", "app.services.LocationService", "app.services.LoginService", "app.services.DealerService",
                "app.services.ReportService", "app.services.PartsCatalogService", "app.services.CampaignService", "$scope", "Upload", "$timeout", "app.services.FileUploadService", "mv360api", "app.services.DocumentService"];
            return UnitDetailsController;
        }());
        angular.module("app.unit")
            .controller("app.unit.UnitDetailsController", UnitDetailsController);
    })(details = unit.details || (unit.details = {}));
})(unit || (unit = {}));
//# sourceMappingURL=unit.details.controller.js.map
var unit;
(function (unit_1) {
    var home;
    (function (home) {
        "use strict";
        var UnitModalController = (function () {
            function UnitModalController($state, vinService, $modalInstance, search, userDealers, allUnitsSearch, includeLegacy) {
                this.$state = $state;
                this.vinService = vinService;
                this.$modalInstance = $modalInstance;
                var vm = this;
                vm.Page = new app.core.PageData(vinService, this.search.bind(this));
                vm.Page.SortField = 'VIN';
                if (search) {
                    vm.Page.SearchText = search;
                }
                if (userDealers) {
                    vm.Page.SearchField.UserDealers = userDealers;
                }
                if (allUnitsSearch) {
                    vm.Page.SearchField.AllUnitsSearch = allUnitsSearch;
                }
                if (includeLegacy) {
                    vm.Page.SearchField.IncludeLegacy = includeLegacy;
                }
                if (vm.Page.SearchText) {
                    vm.Page.Search();
                }
                else {
                    vm.Page.Ready = true;
                }
            }
            UnitModalController.prototype.search = function (searchService, page) {
                this.InvalidLengthForSearch = false;
                if (this.Page.SearchText && this.Page.SearchText.length < 4) {
                    this.InvalidLengthForSearch = true;
                    page.Ready = true;
                    return;
                }
                var query = new app.services.SearchQuery();
                query.PageSize = page.PageSize;
                query.CurrentPage = page.CurrentPage;
                query.SortField = page.SortField;
                query.SortAscending = !page.SortDesc;
                var filter = new app.services.VINSearchQueryFilter();
                filter.SimpleSearch = page.SearchText;
                filter.UserDealers = page.SearchField.UserDealers;
                filter.AllUnitsSearch = page.SearchField.AllUnitsSearch;
                filter.IncludeLegacy = true;
                if (page.SearchText.length >= 4) {
                    query.Filter = filter;
                    searchService.searchAdvanced(query).then(function (data) {
                        page.Update(data);
                    })["catch"](function (error) {
                        console.log("error: " + error);
                        page.Ready = true;
                    });
                }
            };
            UnitModalController.prototype.select = function (unit) {
                this.$modalInstance.close(unit);
            };
            UnitModalController.prototype.close = function () {
                this.$modalInstance.dismiss();
            };
            UnitModalController.$inject = ["$state", "app.services.VINService", "$uibModalInstance", "search", "userDealers", "allUnitsSearch", "includeLegacy"];
            return UnitModalController;
        }());
        angular.module("app.unit")
            .controller("app.unit.UnitModalController", UnitModalController);
    })(home = unit_1.home || (unit_1.home = {}));
})(unit || (unit = {}));
//# sourceMappingURL=unit.modal.controller.js.map
var unit;
(function (unit) {
    var home;
    (function (home) {
        "use strict";
        var OptionNotesController = (function () {
            function OptionNotesController($modalInstance, $state, vinOptionNotesService, loginService, vin) {
                var _this = this;
                this.$modalInstance = $modalInstance;
                this.$state = $state;
                this.vinOptionNotesService = vinOptionNotesService;
                this.loginService = loginService;
                var vm = this;
                vm.vin = vin;
                this.vinOptionNotesService.getOptionNotes(this.vin).then(function (data) {
                    _this.VINOptionNotes = data;
                });
            }
            OptionNotesController.prototype.save = function () {
                var _this = this;
                this.VINOptionNote.User = this.loginService.UserInfo.Username;
                this.VINOptionNote.TypeID = "OptionNote";
                this.vinOptionNotesService.addOptionNote(this.vin, this.VINOptionNote).then(function () {
                    _this.vinOptionNotesService.getOptionNotes(_this.vin).then(function (data) {
                        _this.VINOptionNotes = data;
                    });
                    _this.VINOptionNote = null;
                });
            };
            OptionNotesController.prototype.close = function () {
                this.$modalInstance.close(true);
            };
            OptionNotesController.$inject = ["$uibModalInstance", "$state", "app.services.VINOptionNotesService", "app.services.LoginService", "vin"];
            return OptionNotesController;
        }());
        angular.module("app.unit")
            .controller("app.unit.OptionNotesController", OptionNotesController);
    })(home = unit.home || (unit.home = {}));
})(unit || (unit = {}));
//# sourceMappingURL=unit.optionnotes.controller.js.map
var unit;
(function (unit) {
    var home;
    (function (home) {
        "use strict";
        var InvoiceController = (function () {
            function InvoiceController($modalInstance, $state, vinService, id) {
                this.$modalInstance = $modalInstance;
                this.$state = $state;
                this.vinService = vinService;
                var vm = this;
                vinService.getVINInvoiceById(id).then(function (data) {
                    vm.data = data;
                });
            }
            InvoiceController.prototype.close = function () {
                this.$modalInstance.dismiss();
            };
            InvoiceController.prototype.print = function () {
                this.convertToPDF();
            };
            InvoiceController.prototype.convertToPDF = function () {
                var data = document.getElementById('.print');
                html2canvas(data).then(function (canvas) {
                    var imgWidth = 208;
                    var pageHeight = 295;
                    var imgHeight = canvas.height * imgWidth / canvas.width;
                    var heightLeft = imgHeight;
                    var contentDataURL = canvas.toDataURL('image/png');
                    var pdf = new jspdf('p', 'mm', 'a4');
                    var position = 0;
                    pdf.addImage(contentDataURL, 'PNG', 0);
                    pdf.save('MYPdf.pdf');
                });
            };
            InvoiceController.$inject = ["$uibModalInstance", "$state", "app.services.VINService", "id"];
            return InvoiceController;
        }());
        angular.module("app.unit")
            .controller("app.unit.print.InvoiceController", InvoiceController);
    })(home = unit.home || (unit.home = {}));
})(unit || (unit = {}));
//# sourceMappingURL=unit.print.invoice.controller.js.map
var unit;
(function (unit) {
    var home;
    (function (home) {
        "use strict";
        var InvoiceController = (function () {
            function InvoiceController($modalInstance, $state, vinService, partOrderService, vin, invoice) {
                this.$modalInstance = $modalInstance;
                this.$state = $state;
                this.vinService = vinService;
                this.partOrderService = partOrderService;
                var vm = this;
                vm.vin = vin;
                console.log(vm.vin);
                console.log('after again');
                if (vin) {
                    this.vinService.getVINInvoice(vin).then(function (data) {
                        vm.data = data;
                        if (vm.data.SalesId) {
                            vm.partOrderService.getPartOrder(vm.data.SalesId).then(function (result) {
                                vm.order = result;
                            });
                        }
                        window.createBarCode();
                    });
                }
                else {
                    this.partOrderService.getInvoice(invoice).then(function (data) {
                        vm.data = data;
                        console.log('data');
                        console.log(data);
                        if (vm.data.SalesId) {
                            vm.partOrderService.getPartOrder(vm.data.SalesId).then(function (result) {
                                vm.order = result;
                                console.log('result');
                                console.log(result);
                            });
                        }
                        window.createBarCode();
                    });
                }
            }
            InvoiceController.prototype.close = function () {
                this.$modalInstance.dismiss();
            };
            InvoiceController.prototype.print = function () {
                var divContents = $(".print").clone();
                var body = $("body").detach();
                document.body = document.createElement("body");
                divContents.appendTo($("body"));
                window.print();
                $("html body").remove();
                body.appendTo($("html"));
            };
            InvoiceController.$inject = ["$uibModalInstance", "$state", "app.services.VINService", "app.services.PartOrderService", "vin", "invoice"];
            return InvoiceController;
        }());
        angular.module("app.unit")
            .controller("app.unit.report.InvoiceController", InvoiceController);
    })(home = unit.home || (unit.home = {}));
})(unit || (unit = {}));
//# sourceMappingURL=unit.report.invoice.controller.js.map
var unit;
(function (unit) {
    var home;
    (function (home) {
        "use strict";
        var MSRPController = (function () {
            function MSRPController($modalInstance, $state, vinService, vin) {
                this.$modalInstance = $modalInstance;
                this.$state = $state;
                this.vinService = vinService;
                var vm = this;
                vinService.getVINMSRP(vin).then(function (data) {
                    vm.data = data;
                    vm.data.Options.forEach(function (item) {
                        if (item.isChassis || item.isUnit)
                            item.Show = false;
                        else {
                            item.Show = true;
                        }
                    });
                });
            }
            MSRPController.prototype.close = function () {
                this.$modalInstance.dismiss();
            };
            MSRPController.prototype.print = function () {
                var divContents = $(".print").clone();
                var body = $("body").detach();
                document.body = document.createElement("body");
                divContents.appendTo($("body"));
                window.print();
                $("html body").remove();
                body.appendTo($("html"));
            };
            MSRPController.$inject = ["$uibModalInstance", "$state", "app.services.VINService", "vin"];
            return MSRPController;
        }());
        angular.module("app.unit")
            .controller("app.unit.report.MSRPController", MSRPController);
    })(home = unit.home || (unit.home = {}));
})(unit || (unit = {}));
//# sourceMappingURL=unit.report.msrp.controller.js.map
var unit;
(function (unit) {
    var home;
    (function (home) {
        "use strict";
        var OptionsController = (function () {
            function OptionsController($modalInstance, $state, vinService, partOrderService, vin, salesId) {
                this.$modalInstance = $modalInstance;
                this.$state = $state;
                this.vinService = vinService;
                this.partOrderService = partOrderService;
                var vm = this;
                if (vin) {
                    vinService.getVINMSRP(vin).then(function (data) {
                        vm.data = data;
                    });
                }
                else {
                    this.partOrderService.getOptions(salesId).then(function (data) {
                        vm.data = data;
                    });
                }
            }
            OptionsController.prototype.close = function () {
                this.$modalInstance.dismiss();
            };
            OptionsController.prototype.print = function () {
                var divContents = $(".print").clone();
                var body = $("body").detach();
                document.body = document.createElement("body");
                divContents.appendTo($("body"));
                window.print();
                $("html body").remove();
                body.appendTo($("html"));
            };
            OptionsController.$inject = ["$uibModalInstance", "$state", "app.services.VINService", "app.services.PartOrderService", "vin", "salesId"];
            return OptionsController;
        }());
        angular.module("app.unit")
            .controller("app.unit.report.OptionsController", OptionsController);
    })(home = unit.home || (unit.home = {}));
})(unit || (unit = {}));
//# sourceMappingURL=unit.report.options.controller.js.map
var unit;
(function (unit) {
    var home;
    (function (home) {
        "use strict";
        var IPart = (function () {
            function IPart() {
            }
            return IPart;
        }());
        var PDIController = (function () {
            function PDIController($modalInstance, $state, vinService, warrantyService, vin) {
                this.$modalInstance = $modalInstance;
                this.$state = $state;
                this.vinService = vinService;
                this.warrantyService = warrantyService;
                var vm = this;
                vm.vin = vin;
                vinService.getVIN(vm.vin, true)
                    .then(function (data) {
                    vm.VinInfo = data;
                });
                warrantyService.getWarranty(vm.vin)
                    .then(function (data) {
                    vm.Warranty = data;
                    vm.requiresDisclaimer = vm.Warranty.Ownership.State == 'NY';
                    window.createBarCode();
                });
            }
            PDIController.prototype.getRequiresDisclaimer = function () {
                return this.Warranty.Ownership.State == 'NY';
            };
            PDIController.prototype.close = function () {
                this.$modalInstance.dismiss();
            };
            PDIController.prototype.print = function () {
                var divContents = $(".print").clone();
                var body = $("body").detach();
                document.body = document.createElement("body");
                divContents.appendTo($("body"));
                window.print();
                $("html body").remove();
                body.appendTo($("html"));
            };
            PDIController.$inject = ["$uibModalInstance", "$state", "app.services.VINService", "app.services.WarrantyService", "vin"];
            return PDIController;
        }());
        angular.module("app.unit")
            .controller("app.unit.report.PDIController", PDIController);
    })(home = unit.home || (unit.home = {}));
})(unit || (unit = {}));
//# sourceMappingURL=unit.report.pdi.controller.js.map
var unit;
(function (unit) {
    var warranty;
    (function (warranty) {
        var history;
        (function (history) {
            "use strict";
            var WarrantyHistoryController = (function () {
                function WarrantyHistoryController($state, warrantyService) {
                    this.$state = $state;
                    var vm = this;
                    vm.vin = $state.params["vin"];
                }
                WarrantyHistoryController.$inject = ["$state", "app.services.WarrantyService", "$uibModal"];
                return WarrantyHistoryController;
            }());
            angular.module("app.unit")
                .controller("app.unit.warranty.WarrantyHistoryController", WarrantyHistoryController);
        })(history = warranty.history || (warranty.history = {}));
    })(warranty = unit.warranty || (unit.warranty = {}));
})(unit || (unit = {}));
//# sourceMappingURL=unit.warranty.history.controller.js.map
var unit;
(function (unit) {
    var warranty;
    (function (warranty_1) {
        var register;
        (function (register) {
            "use strict";
            var WarrantyRegisterController = (function () {
                function WarrantyRegisterController($scope, $modal, $state, vinService, warrantyService, salesPersonService, ziplookupService, rootScope, userService, campaignService, countryService, loginService, $filter, dealerService) {
                    var _this = this;
                    this.$scope = $scope;
                    this.$modal = $modal;
                    this.$state = $state;
                    this.vinService = vinService;
                    this.warrantyService = warrantyService;
                    this.salesPersonService = salesPersonService;
                    this.ziplookupService = ziplookupService;
                    this.rootScope = rootScope;
                    this.userService = userService;
                    this.campaignService = campaignService;
                    this.countryService = countryService;
                    this.loginService = loginService;
                    this.$filter = $filter;
                    this.dealerService = dealerService;
                    this.showSaveMessage = false;
                    this.formDownloadLink = '';
                    var vm = this;
                    countryService.GetCountries().then(function (response) {
                        vm.countries = response;
                    });
                    vm.mileageInKilometers = false;
                    vm.userService.GetPreferences().then(function (result) {
                        var prefs = result;
                        vm.mileageInKilometers = prefs.MetricMeasurements;
                    });
                    vm.disableWarrantyType = false;
                    vm.warrantyTypes = [];
                    vm.vin = $state.params["vin"];
                    vm.ownershipItem = new app.services.IOwnership();
                    vm.installAddressItem = new app.services.IAddress();
                    vm.InstallAddressSame = true;
                    vm.phonePattern = "^(\\+\\d{1,2}\\s)?\\(?\\d{3}\\)?[\\s.-]?\\d{3}[\\s.-]?\\d{4}$";
                    vm.$scope = $scope;
                    vinService.getVIN(vm.vin, true).then(function (vinData) {
                        vm.unit = vinData;
                        _this.isMotorized = (vm.unit.IsMotorized);
                        _this.MaxMileage = vm.unit.AdditionalAllowedMileage;
                        _this.MaxMileageKM = Number(vm.MilesToKM(_this.MaxMileage, true).toFixed(0));
                        vm.WarrantyTypeDisplay = vm.unit.WarrantyType;
                        vm.allowRegistration = false;
                        vm.allowRegistration = vm.loginService.UserInfo.Dealers.map(function (d) { return d.DealerNumber; }).indexOf(vm.unit.DealerNumber) > -1;
                        if (!vm.allowRegistration) {
                            _this.dealerService.checkIfDealerInCompanyChain(vm.loginService.selectedDealer.DealerNumber, vm.unit.DealerNumber).then(function (result) {
                                vm.allowRegistration = result;
                            });
                        }
                        vm.warrantyAlreadyActive = false;
                        warrantyService.getWarranty(vm.vin).then(function (result) {
                            if (result) {
                                vm.warrantyAlreadyActive = true;
                            }
                        });
                        warrantyService.getWarrantyRetailSoldMinimum().then(function (result) {
                            vm.warrantyRegistrationMinDate = result;
                        });
                        warrantyService.getWarrantyRetailSoldMaximum().then(function (result) {
                            vm.warrantyRegistrationMaxDate = result;
                        });
                        warrantyService.getBusinessUnitAllowedMilesRequired(vm.unit.Division).then(function (result) {
                            if (!result) {
                                vm.MaxMileage = 1000000;
                                vm.MaxMileageKM = 1000000;
                            }
                        });
                        vm.salesPersonService.getSalesPeople().then(function (data) {
                            salesPersonService.setDisplayField(data);
                            if (!data || data.length < 1) {
                                var noncontacts = new app.services.ISalesPerson();
                                noncontacts.SalesPersonNumber = "";
                                noncontacts.IsActive = true;
                                noncontacts.Display = "<No Contact Person>";
                                data.unshift(noncontacts);
                                vm.ContactPersonDisplay = noncontacts.Display;
                                var nonesales = new app.services.ISalesPerson();
                                nonesales.SalesPersonNumber = "";
                                nonesales.IsActive = true;
                                nonesales.Display = "<No Sales Person>";
                                data.unshift(nonesales);
                                vm.SalesPersonDisplay = nonesales.Display;
                            }
                            vm.contactpeople = data;
                            vm.userService.GetProfile().then(function (data) {
                                for (var index = 0; index < _this.contactpeople.length; index++) {
                                    if (_this.contactpeople[index].SalesPersonNumber == data.SalesPersonNumber) {
                                        vm.ContactPersonDisplay = _this.contactpeople[index].Display;
                                    }
                                    if (_this.contactpeople[index].SalesPersonNumber == data.SalesPersonNumber) {
                                        vm.SalesPersonDisplay = _this.contactpeople[index].Display;
                                    }
                                }
                                vm.userService.GetDealers(data.Email).then(function (data) {
                                    if (data) {
                                        vm.associatedDealers = data;
                                        for (var index = 0; index < vm.associatedDealers.length; index++) {
                                            if (vm.associatedDealers[index].DealerNumber == vm.unit.DealerNumber) {
                                                vm.RegisteredDealer = vm.associatedDealers[index];
                                            }
                                            else if (!vm.RegisteredDealer && vm.associatedDealers[index].DealerNumber == vm.loginService.selectedDealer.DealerNumber) {
                                                vm.RegisteredDealer = vm.associatedDealers[index];
                                            }
                                        }
                                    }
                                });
                            });
                            if (vm.unit.HasCampaigns) {
                                vm.campaignService.showNotification(vm.unit.VIN);
                            }
                            _this.controllerReady = true;
                        });
                    });
                }
                WarrantyRegisterController.prototype.showTerms = function (print) {
                    var vm = this;
                    if (vm.unit.Division == "Cargo" || vm.unit.Division == "Bus" || vm.unit.Division == "Commercial") {
                        vm.saveRegistration(print);
                    }
                    else {
                        var msg = "<p>You must read and agree to the following</p><br /><p>The dealership is responsible for retaining a signed copy of the pre-delivery checklists. Forest River, Inc. will perform random audits that will require the dealership to mail in a copy of the Customer Delivery and Warranty Registration Form.</p>";
                        vex.dialog.buttons.YES.text = 'Accept';
                        vex.dialog.buttons.NO.text = 'Cancel';
                        vex.dialog.confirm({
                            unsafeMessage: msg,
                            callback: function (value) {
                                if (value) {
                                    vm.saveRegistration(print);
                                }
                            }
                        });
                    }
                };
                WarrantyRegisterController.prototype.showWarrantyAlert = function (print, date) {
                    var vm = this;
                    var msg = "<p>Please validate if the Retail Date of Purchase entered is correct. The Retail Date of Purchase entered of " + (date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear() + " will make the warranty expired.</p>";
                    vex.dialog.buttons.YES.text = 'Accept';
                    vex.dialog.buttons.NO.text = 'Cancel';
                    vex.dialog.confirm({
                        unsafeMessage: msg,
                        callback: function (value) {
                            if (value) {
                                vm.showTerms(print);
                            }
                        }
                    });
                };
                WarrantyRegisterController.prototype.downloadPDI = function () {
                    var vm = this;
                    if (vm.unit.Division == "Marine") {
                        var settings = {
                            controller: "app.report.PDIMarineController as vm",
                            templateUrl: "app/report/report.viewer.html",
                            keyboard: false,
                            backdrop: true,
                            size: 'print',
                            resolve: {
                                vin: function () { return vm.vin; }
                            }
                        };
                    }
                    else if (vm.unit.Division == "Cargo" || vm.unit.Division == "Bus" || vm.unit.Division == "Commercial") {
                        var settings = {
                            controller: "app.report.PDISimpleController as vm",
                            templateUrl: "app/report/report.viewer.html",
                            keyboard: false,
                            backdrop: true,
                            size: 'print',
                            resolve: {
                                vin: function () { return vm.vin; }
                            }
                        };
                    }
                    else {
                        var settings = {
                            controller: "app.unit.report.PDIController as vm",
                            templateUrl: "app/unit/unit.report.pdi.html",
                            keyboard: false,
                            backdrop: true,
                            size: 'print',
                            resolve: {
                                vin: function () { return vm.vin; }
                            }
                        };
                    }
                    var modalInstance = this.$modal.open(settings);
                };
                WarrantyRegisterController.prototype.save = function (print) {
                    var vm = this;
                    if (vm.warrantyform.$invalid || vm.retailSoldDateInvalid) {
                        vm.showError = true;
                        return;
                    }
                    var oneYearAgo = new Date(new Date().setFullYear(new Date().getFullYear() - 1));
                    if (vm.mileageInKilometers) {
                        vm.WarrantyMileage = Number(vm.MilesToKM(vm.WarrantyMileageInKM, false).toFixed(1));
                    }
                    if (vm.WarrantySoldDate <= oneYearAgo) {
                        vm.showWarrantyAlert(print, vm.WarrantySoldDate);
                    }
                    else {
                        vm.showTerms(print);
                    }
                };
                WarrantyRegisterController.prototype.saveRegistration = function (print) {
                    var _this = this;
                    var vm = this;
                    vm.warrantyService.getWarranty(vm.vin).then(function (result) {
                        if (result) {
                            vm.warrantyAlreadyActive = true;
                        }
                        else if (vm.ValidateOwnershipAddress()) {
                            var warr = new app.services.IWarranty();
                            warr.Mileage = _this.WarrantyMileage;
                            for (var index = 0; index < _this.contactpeople.length; index++) {
                                if (_this.contactpeople[index].Display == _this.ContactPersonDisplay) {
                                    warr.ContactPerson = _this.contactpeople[index].Email;
                                }
                                if (_this.contactpeople[index].Display == _this.SalesPersonDisplay) {
                                    warr.SalesPersonNumber = _this.contactpeople[index].SalesPersonNumber;
                                    warr.DealerSalesPerson = _this.contactpeople[index].Email;
                                }
                            }
                            warr.WarrantyType = _this.WarrantyTypeDisplay;
                            warr.RetailSoldDate = _this.WarrantySoldDate;
                            _this.ownershipItem.Phone = _this.ownershipItem.Phone.substring(0, 14);
                            warr.Ownership = _this.ownershipItem;
                            warr.Ownership.FirstName = _this.ownershipItem.FirstName;
                            warr.Ownership.MiddleName = _this.ownershipItem.MiddleName;
                            warr.Ownership.LastName = _this.ownershipItem.LastName;
                            warr.Ownership.FirstName2 = _this.ownershipItem.FirstName2;
                            warr.Ownership.MiddleName2 = _this.ownershipItem.MiddleName2;
                            warr.Ownership.LastName2 = _this.ownershipItem.LastName2;
                            warr.Ownership.Name = _this.ownershipItem.FirstName + " " + _this.ownershipItem.LastName;
                            warr.RegisteredDealer = _this.RegisteredDealer.DealerNumber;
                            warr.isRental = _this.isRental;
                            if (_this.InstallAddressSame) {
                                _this.SetInstallAddress();
                            }
                            else {
                                _this.installAddressItem.Phone = _this.installAddressItem.Phone.substring(0, 14);
                            }
                            warr.InstallAddress = _this.installAddressItem;
                            _this.saveMessage = "Saving retail registration..";
                            _this.showSaveMessage = true;
                            _this.controllerReady = false;
                            _this.warrantyService.updateWarranty(_this.vin, warr, false).then(function (warranty) {
                                warranty.RegisteredDealer = _this.RegisteredDealer.DealerNumber;
                                _this.saveMessage = "Retail registration complete.";
                                _this.controllerReady = true;
                                _this.warrantyService.getWarrantyTerm(_this.vin, warranty).then(function (warrantyTerm) {
                                    if (warrantyTerm.IsAged) {
                                        vex.dialog.alert("This units model year is over " + warrantyTerm.AgedYears.toString() + " years old.The warranty dates will be " + vm.$filter('date')(warrantyTerm.StartDate, "MM-dd-yyyy") + " to " + vm.$filter('date')(warrantyTerm.EndDate, "MM-dd-yyyy") + ".");
                                    }
                                });
                                if (_this.rootScope.VIN) {
                                    _this.rootScope.VIN.ForceExpire();
                                }
                                if (print) {
                                    _this.downloadPDI();
                                }
                            });
                        }
                        else {
                            alert("Invalid address supplied. If the address was auto-populated, please manually re-enter the address. If this issue persists, please contact Forest River.");
                        }
                    });
                };
                WarrantyRegisterController.prototype.openDatePicker = function ($event, control) {
                    $event.preventDefault();
                    $event.stopPropagation();
                    if (control == "solddate") {
                        this.solddateopen = true;
                    }
                };
                WarrantyRegisterController.prototype.registrationValidDateCheck = function (minRegistrationDate, maxRegistrationDate) {
                    var vm = this;
                    var formattedDate = vm.$filter('date')(vm.WarrantySoldDate, 'yyyy-MM-dd HH:mm:ss');
                    if (minRegistrationDate <= new Date("1/1/1900")) {
                        if (maxRegistrationDate >= new Date("12/31/9999")) {
                            vm.retailSoldDateInvalid = false;
                        }
                        else if (formattedDate > maxRegistrationDate) {
                            vm.retailSoldDateInvalid = true;
                            vm.retailSoldDateErrorMessage = "Registration date must be before " + vm.$filter('date')(maxRegistrationDate, 'MM-dd-yyyy');
                        }
                        else {
                            vm.retailSoldDateInvalid = false;
                        }
                    }
                    else if (maxRegistrationDate >= new Date("12/31/9999")) {
                        if (formattedDate < minRegistrationDate) {
                            vm.retailSoldDateInvalid = true;
                            vm.retailSoldDateErrorMessage = "Invalid Retail Sold date. The Retail Date of Purchase has exceeded the allowed time period to enter a registration. Please email a copy of the signed Forest River Customer Delivery and Warranty Registration Form to the brand's Warranty Representative you are working with or to DCWarrantyReg@forestriverinc.com.";
                        }
                        else {
                            vm.retailSoldDateInvalid = false;
                        }
                    }
                    else if (formattedDate < minRegistrationDate) {
                        vm.retailSoldDateInvalid = true;
                        vm.retailSoldDateErrorMessage = "Invalid Retail Sold date. The Retail Date of Purchase has exceeded the allowed time period to enter a registration. Please email a copy of the signed Forest River Customer Delivery and Warranty Registration Form to the brand's Warranty Representative you are working with or to DCWarrantyReg@forestriverinc.com.";
                    }
                    else if (formattedDate > maxRegistrationDate) {
                        vm.retailSoldDateInvalid = true;
                        vm.retailSoldDateErrorMessage = "Registration date must be before " + vm.$filter('date')(maxRegistrationDate, 'MM-dd-yyyy') + ".";
                    }
                    else {
                        vm.retailSoldDateInvalid = false;
                    }
                };
                WarrantyRegisterController.prototype.SetInstallAddress = function () {
                    if (this.ownershipItem.AddressName) {
                        this.installAddressItem.Name = this.ownershipItem.AddressName;
                    }
                    if (this.ownershipItem.Address) {
                        this.installAddressItem.Street = this.ownershipItem.Address;
                    }
                    if (this.ownershipItem.City) {
                        this.installAddressItem.City = this.ownershipItem.City;
                    }
                    if (this.ownershipItem.State) {
                        this.installAddressItem.State = this.ownershipItem.State;
                    }
                    if (this.ownershipItem.PostalCode) {
                        this.installAddressItem.PostalCode = this.ownershipItem.PostalCode;
                    }
                    if (this.ownershipItem.Country) {
                        this.installAddressItem.Country = this.ownershipItem.Country;
                    }
                    if (this.ownershipItem.Phone) {
                        this.installAddressItem.Phone = this.ownershipItem.Phone;
                    }
                };
                WarrantyRegisterController.prototype.ValidateOwnershipAddress = function () {
                    var vm = this;
                    if (!vm.ownershipItem.Address || vm.ownershipItem.Address.length == 0) {
                        return false;
                    }
                    if (!vm.ownershipItem.City || vm.ownershipItem.City.length == 0) {
                        return false;
                    }
                    if (!vm.ownershipItem.State || vm.ownershipItem.State.length == 0) {
                        return false;
                    }
                    if (!vm.ownershipItem.PostalCode || vm.ownershipItem.PostalCode.length == 0) {
                        return false;
                    }
                    if (!vm.ownershipItem.Country || vm.ownershipItem.Country.length == 0) {
                        return false;
                    }
                    if (!vm.ownershipItem.Phone || vm.ownershipItem.Phone.length == 0) {
                        return false;
                    }
                    if (!vm.InstallAddressSame) {
                        if (!vm.installAddressItem.Name || vm.installAddressItem.Name.length == 0) {
                            return false;
                        }
                        if (!vm.installAddressItem.City || vm.installAddressItem.City.length == 0) {
                            return false;
                        }
                        if (!vm.installAddressItem.State || vm.installAddressItem.State.length == 0) {
                            return false;
                        }
                        if (!vm.installAddressItem.PostalCode || vm.installAddressItem.PostalCode.length == 0) {
                            return false;
                        }
                        if (!vm.installAddressItem.Country || vm.installAddressItem.Country.length == 0) {
                            return false;
                        }
                        if (!vm.installAddressItem.Phone || vm.installAddressItem.Phone.length == 0) {
                            return false;
                        }
                    }
                    return true;
                };
                WarrantyRegisterController.prototype.OwnershipPostalCodeChanged = function () {
                    var _this = this;
                    if (this.ownershipItem.PostalCode && this.ownershipItem.PostalCode.length >= 3) {
                        this.ziplookupService.getZip(this.ownershipItem.PostalCode).then(function (results) {
                            if (results && results.length > 0) {
                                _this.ownershipItem.City = results[0].City;
                                _this.ownershipItem.State = results[0].State;
                                _this.ownershipItem.Country = results[0].Country;
                                _this.ownerShipCities = results.map(function (x) { return x.City; });
                                _this.invalidPostal = false;
                                if (_this.ownershipItem.Country.toUpperCase() == 'USA' || _this.ownershipItem.Country.toUpperCase() == 'CAN') {
                                    _this.overseePostal = false;
                                }
                                else {
                                    _this.overseePostal = true;
                                    _this.ownershipItem.Country = _this.ownershipItem.Country.toUpperCase();
                                }
                            }
                            else {
                                _this.invalidPostal = true;
                                _this.ownerShipCities = null;
                                _this.overseePostal = false;
                            }
                        });
                    }
                    else {
                        this.ownerShipCities = null;
                    }
                };
                WarrantyRegisterController.prototype.MilesToKM = function (distance, distanceIsMiles) {
                    if (distanceIsMiles) {
                        return distance / 0.62137;
                    }
                    else {
                        return distance * 0.62137;
                    }
                };
                WarrantyRegisterController.prototype.InstallPostalCodeChanged = function () {
                    var _this = this;
                    if (this.installAddressItem.PostalCode && this.installAddressItem.PostalCode.length >= 5) {
                        this.ziplookupService.getZip(this.installAddressItem.PostalCode).then(function (results) {
                            if (results && results.length > 0) {
                                _this.installAddressItem.City = results[0].City;
                                _this.installAddressItem.State = results[0].State;
                                _this.installAddressItem.Country = results[0].Country;
                                _this.installCities = results.map(function (x) { return x.City; });
                            }
                            else {
                                _this.installCities = null;
                            }
                        });
                    }
                    else {
                        this.installCities = null;
                    }
                };
                WarrantyRegisterController.$inject = ["$scope", "$uibModal", "$state", "app.services.VINService", "app.services.WarrantyService", "app.services.SalesPersonService", "app.services.ZipLookupService", "$rootScope", "app.services.UserService", "app.services.CampaignService", "app.services.CountryService", "app.services.LoginService", "$filter", "app.services.DealerService"];
                return WarrantyRegisterController;
            }());
            angular.module("app.unit")
                .controller("app.unit.warranty.WarrantyRegisterController", WarrantyRegisterController);
        })(register = warranty_1.register || (warranty_1.register = {}));
    })(warranty = unit.warranty || (unit.warranty = {}));
})(unit || (unit = {}));
//# sourceMappingURL=unit.warranty.register.controller.js.map
var unit;
(function (unit) {
    var warranty;
    (function (warranty_1) {
        var register;
        (function (register) {
            "use strict";
            var WarrantyViewController = (function () {
                function WarrantyViewController($state, vinService, warrantyService, salesPersonService, ziplookupService, countryService, dealerService, loginService) {
                    var _this = this;
                    this.$state = $state;
                    this.warrantyService = warrantyService;
                    this.salesPersonService = salesPersonService;
                    this.ziplookupService = ziplookupService;
                    this.countryService = countryService;
                    this.dealerService = dealerService;
                    this.loginService = loginService;
                    var vm = this;
                    vm.cities = [];
                    countryService.GetCountries().then(function (response) {
                        vm.countries = response;
                    });
                    vm.vin = $state.params["vin"];
                    vinService.getVIN(vm.vin, true).then(function (vinData) {
                        vm.unit = vinData;
                        vm.allowRegistration = false;
                        vm.allowRegistration = vm.loginService.UserInfo.Dealers.map(function (d) { return d.DealerNumber; }).indexOf(vm.unit.DealerNumber) > -1;
                        if (!vm.allowRegistration) {
                            _this.dealerService.checkIfDealerInCompanyChain(vm.loginService.selectedDealer.DealerNumber, vm.unit.DealerNumber).then(function (result) {
                                vm.allowRegistration = result;
                            });
                        }
                        vm.isReadOnly = true;
                        vm.hasWarranty = false;
                        salesPersonService.getSalesPeople().then(function (data) {
                            vm.salespeople = data;
                            warrantyService.getWarrantyByOwner(vm.vin, $state.params.name, $state.params.address).then(function (result) {
                                vm.warranty = result;
                                vm.warranty.Ownership = result.Ownership;
                                vm.hasWarranty = true;
                                _this.controllerReady = true;
                                vm.selectedSalesPerson = vm.salespeople.filter(function (v) {
                                    return v.Email == vm.warranty.DealerSalesPerson;
                                })[0];
                                vm.selectedContactPerson = vm.salespeople.filter(function (v) {
                                    return v.Email == vm.warranty.ContactPerson;
                                })[0];
                                if (_this.warranty.InstallAddress.PostalCode && _this.warranty.InstallAddress.PostalCode.length >= 5) {
                                    _this.ziplookupService.getZip(_this.warranty.InstallAddress.PostalCode).then(function (results) {
                                        if (results) {
                                            _this.cities = results.map(function (x) { return x.City; });
                                        }
                                    });
                                }
                            });
                        });
                    });
                }
                WarrantyViewController.prototype.InstallPostalCodeChanged = function () {
                    var _this = this;
                    if (this.warranty.InstallAddress.PostalCode && this.warranty.InstallAddress.PostalCode.length >= 5) {
                        this.ziplookupService.getZip(this.warranty.InstallAddress.PostalCode).then(function (results) {
                            if (results && results.length > 0) {
                                _this.warranty.InstallAddress.City = results[0].City;
                                _this.warranty.InstallAddress.State = results[0].State;
                                _this.warranty.InstallAddress.Country = results[0].Country;
                                _this.cities = results.map(function (x) { return x.City; });
                            }
                            else {
                                _this.cities = null;
                            }
                        });
                    }
                    else {
                        this.cities = null;
                    }
                };
                WarrantyViewController.prototype.save = function () {
                    var _this = this;
                    this.saveMessage = "Saving retail registration..";
                    this.showSaveMessage = true;
                    this.controllerReady = false;
                    this.warrantyService.updateWarranty(this.vin, this.warranty, true).then(function (warranty) {
                        _this.saveMessage = "Warranty updated.";
                        _this.controllerReady = true;
                    });
                };
                WarrantyViewController.$inject = ["$state", "app.services.VINService", "app.services.WarrantyService", "app.services.SalesPersonService", "app.services.ZipLookupService", "app.services.CountryService", "app.services.DealerService", "app.services.LoginService"];
                return WarrantyViewController;
            }());
            angular.module("app.unit")
                .controller("app.unit.warranty.WarrantyViewController", WarrantyViewController);
        })(register = warranty_1.register || (warranty_1.register = {}));
    })(warranty = unit.warranty || (unit.warranty = {}));
})(unit || (unit = {}));
//# sourceMappingURL=unit.warranty.view.controller.js.map
var unit;
(function (unit) {
    var home;
    (function (home) {
        "use strict";
        var VendorCheckModal = (function () {
            function VendorCheckModal($modalInstance, $state, vendorService, checkNum) {
                this.$modalInstance = $modalInstance;
                this.$state = $state;
                this.vendorService = vendorService;
                var vm = this;
                vm.checkID = checkNum;
            }
            VendorCheckModal.prototype.getRequiresDisclaimer = function () {
                return this.Warranty.Ownership.State == 'NY';
            };
            VendorCheckModal.prototype.close = function () {
                this.$modalInstance.dismiss();
            };
            VendorCheckModal.prototype.print = function () {
                var divContents = $(".print").clone();
                var body = $("body").detach();
                document.body = document.createElement("body");
                divContents.appendTo($("body"));
                window.print();
                $("html body").remove();
                body.appendTo($("html"));
            };
            VendorCheckModal.$inject = ["$uibModalInstance", "$state", "app.services.IInquiryService", "checkNum"];
            return VendorCheckModal;
        }());
        angular.module("app.vendor")
            .controller("app.vendor.VendorCheckModal", VendorCheckModal);
    })(home = unit.home || (unit.home = {}));
})(unit || (unit = {}));
//# sourceMappingURL=vendor.check.modal.js.map
var Inquiry;
(function (Inquiry) {
    var home;
    (function (home) {
        "use strict";
        var InquiryVendorCheckInqController = (function () {
            function InquiryVendorCheckInqController($state, InquiryService, loginService, $modal) {
                this.$state = $state;
                this.InquiryService = InquiryService;
                this.loginService = loginService;
                this.$modal = $modal;
                var vm = this;
                vm.InvoiceAmountTotal = 0;
                vm.CashDiscTotal = 0;
                vm.PaymentAmountTotal = 0;
                if (!vm.invoice) {
                    vm.invoice = new app.core.PageData(InquiryService, this.search);
                    vm.invoice.SearchText = $state.params["search"];
                    vm.invoice.Results = [];
                    vm.invoice.SortField = 'Date';
                    vm.invoice.SortDesc = true;
                    var checkSearch = $state.params["checkNumber"];
                    if (checkSearch) {
                        vm.invoice.SearchField.CheckNum = checkSearch;
                        this.invoice.Search();
                    }
                }
                else {
                    var newsearch = $state.params["checkNumber"];
                    if (newsearch) {
                    }
                    else {
                        this.invoice.SearchIfExpired();
                    }
                }
            }
            InquiryVendorCheckInqController.prototype.search = function (searchService, pageData) {
                var vm = this;
                var invalidLengthForSearch = true;
                var query = new app.services.SearchQuery();
                query.PageSize = pageData.PageSize;
                query.CurrentPage = pageData.CurrentPage;
                query.SortField = pageData.SortField;
                query.SortAscending = !pageData.SortDesc;
                var filter = new app.services.InquirySearchCheckQueryFilter();
                filter.CheckNumber = pageData.SearchField.CheckNum;
                filter.Description = pageData.SearchField.Description;
                filter.InvoiceNumber = pageData.SearchField.InvoiceNumber;
                filter.StartDate = pageData.SearchField.StartDate;
                filter.EndDate = pageData.SearchField.EndDate;
                query.Filter = filter;
                searchService.searchCheckAdvanced(query).then(function (data) {
                    vm.InvoiceAmountTotal = 0;
                    vm.CashDiscTotal = 0;
                    vm.PaymentAmountTotal = 0;
                    pageData.Update(data);
                    data.Results.forEach(function (item) {
                        vm.InvoiceAmountTotal = vm.InvoiceAmountTotal + item.InvoiceAmount;
                        vm.CashDiscTotal = vm.CashDiscTotal + item.CashDisc;
                        vm.PaymentAmountTotal = vm.PaymentAmountTotal + item.PaymentAmount;
                    });
                });
            };
            InquiryVendorCheckInqController.prototype.openInvoice = function (invoiceRecID, invoice) {
                var vm = this;
                var settings = {
                    controller: "app.vendor.VendorInvoiceController as vm",
                    templateUrl: "app/vendorportal/vendor.invoice.details.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'print',
                    resolve: {
                        invoiceID: function () { return invoiceRecID; },
                        invoice: function () { return invoiceRecID; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
            };
            InquiryVendorCheckInqController.prototype.exportSearchAsCSV = function (pageData) {
                var vm = this;
                var query = new app.services.SearchQuery();
                query.PageSize = 10000;
                query.CurrentPage = 1;
                query.SortField = "";
                query.SortAscending = true;
                var filter = new app.services.InquirySearchCheckQueryFilter();
                filter.CheckNumber = vm.invoice.SearchField.CheckNum;
                filter.InvoiceNumber = vm.invoice.SearchField.InvoiceNumber;
                filter.StartDate = vm.invoice.SearchField.StartDate;
                filter.EndDate = vm.invoice.SearchField.EndDat;
                filter.Description = vm.invoice.SearchField.Description;
                query.Filter = filter;
                vm.InquiryService.checkSearchResultExport(query).then(function (result) {
                    vm.saveAsCSV(result);
                });
            };
            InquiryVendorCheckInqController.prototype.saveAsCSV = function (arr) {
                var saving = document.createElement('a');
                var currentDate = new Date();
                saving.href = 'data:attachment/csv,' + encodeURIComponent(this.convertListToCSV(arr));
                saving.download = 'CheckInq' + currentDate.toDateString() + '.csv';
                document.body.appendChild(saving);
                saving.click();
            };
            InquiryVendorCheckInqController.prototype.convertListToCSV = function (arr) {
                var ret = [];
                var tempDate = "";
                ret.push('"' + Object.keys(arr[0]).join('","') + '"');
                for (var i = 0, len = arr.length; i < len; i++) {
                    var line = [];
                    for (var key in arr[i]) {
                        if (arr[i].hasOwnProperty(key)) {
                            if (key != "InvoiceDate") {
                                line.push('"' + arr[i][key] + '"');
                            }
                            else {
                                tempDate = arr[i][key].toString().replace("T00:00:00", "");
                                line.push('"' + tempDate + '"');
                            }
                        }
                    }
                    ret.push(line.join(','));
                }
                return ret.join('\n');
            };
            InquiryVendorCheckInqController.$inject = ["$state", "app.services.InquiryService", "app.services.LoginService", "$uibModal"];
            return InquiryVendorCheckInqController;
        }());
        angular.module("app.vendor")
            .controller("app.vendor.InquiryVendorCheckInqController", InquiryVendorCheckInqController);
    })(home = Inquiry.home || (Inquiry.home = {}));
})(Inquiry || (Inquiry = {}));
//# sourceMappingURL=vendor.checkinq.controller.js.map
var app;
(function (app) {
    var vendor;
    (function (vendor) {
        "use strict";
        var VendorHomeController = (function () {
            function VendorHomeController($state, vinService, dealerService, folderService, loginService, docService) {
                this.$state = $state;
                this.vinService = vinService;
                this.dealerService = dealerService;
                this.folderService = folderService;
                this.loginService = loginService;
                this.docService = docService;
                var vm = this;
                if (!loginService.IsLoggedIn()) {
                    this.$state.go("vendorlogin");
                }
                vm.unitsearchtext = "";
                dealerService.getDashboard().then(function (result) {
                    vm.dashboard = result;
                    vm.controllerReady = true;
                });
            }
            VendorHomeController.prototype.campaignSearch = function (search) {
                this.$state.go("campaign", { "search": search });
            };
            VendorHomeController.prototype.download = function () {
                this.docService.downloadFileContents("Documents", "test.pdf");
            };
            VendorHomeController.prototype.goToLink = function (button) {
                this.$state.go(button.toLowerCase());
            };
            VendorHomeController.$inject = ["$state", "app.services.VINService", "app.services.DealerService", "app.services.FolderService", "app.services.LoginService", "app.services.DocumentService"];
            return VendorHomeController;
        }());
        angular.module("app.vendor")
            .controller("app.vendor.VendorHomeController", VendorHomeController);
    })(vendor = app.vendor || (app.vendor = {}));
})(app || (app = {}));
//# sourceMappingURL=vendor.home.controller.js.map
var Inquiry;
(function (Inquiry) {
    var home;
    (function (home) {
        "use strict";
        var InquiryVendorInvController = (function () {
            function InquiryVendorInvController($state, InquiryService, loginService, $modal) {
                this.$state = $state;
                this.InquiryService = InquiryService;
                this.loginService = loginService;
                this.$modal = $modal;
                var vm = this;
                if (!vm.invoice) {
                    vm.invoice = new app.core.PageData(InquiryService, this.search);
                    vm.invoice.SearchText = $state.params["search"];
                    vm.invoice.Results = [];
                    vm.invoice.SortField = 'Date';
                    vm.invoice.SortDesc = true;
                }
                else {
                    var newsearch = $state.params["search"];
                    if (newsearch) {
                        if (newsearch != vm.invoice.SearchText) {
                            vm.invoice.SearchText = newsearch;
                            this.invoice.Search();
                        }
                    }
                    else {
                        this.invoice.SearchIfExpired();
                    }
                }
            }
            InquiryVendorInvController.prototype.search = function (searchService, pageData) {
                var invalidLengthForSearch = true;
                var query = new app.services.SearchQuery();
                query.PageSize = pageData.PageSize;
                query.CurrentPage = pageData.CurrentPage;
                query.SortField = pageData.SortField;
                query.SortAscending = !pageData.SortDesc;
                var filter = new app.services.InquirySearchQueryFilter();
                filter.InvoiceDescription = pageData.SearchField.InvoiceDesc;
                filter.SalesOrderNumber = pageData.SearchField.PurchaseOrder;
                filter.InvoiceNumber = pageData.SearchField.InvoiceNumber;
                filter.StartDate = pageData.SearchField.StartDate;
                filter.EndDate = pageData.SearchField.EndDate;
                query.Filter = filter;
                searchService.searchVendorAdvanced(query).then(function (data) {
                    pageData.Update(data);
                });
            };
            InquiryVendorInvController.prototype.openInvoice = function (invoiceRecID, invoice) {
                var vm = this;
                var settings = {
                    controller: "app.vendor.VendorInvoiceController as vm",
                    templateUrl: "app/vendorportal/vendor.invoice.details.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'print',
                    resolve: {
                        invoiceID: function () { return invoiceRecID; },
                        invoice: function () { return invoice; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
            };
            InquiryVendorInvController.prototype.openCheck = function (checkNumber) {
                checkNumber = checkNumber.trim();
                this.$state.go("vendorcheckinq", { "checkNumber": checkNumber });
            };
            InquiryVendorInvController.$inject = ["$state", "app.services.InquiryService", "app.services.LoginService", "$uibModal"];
            return InquiryVendorInvController;
        }());
        angular.module("app.vendor")
            .controller("app.vendor.InquiryVendorInvController", InquiryVendorInvController);
    })(home = Inquiry.home || (Inquiry.home = {}));
})(Inquiry || (Inquiry = {}));
//# sourceMappingURL=vendor.invoice.controller.js.map
var unit;
(function (unit) {
    var home;
    (function (home) {
        "use strict";
        var VendorInvoiceController = (function () {
            function VendorInvoiceController($modalInstance, $state, vendorService, invoiceRecID, invoice) {
                this.$modalInstance = $modalInstance;
                this.$state = $state;
                this.vendorService = vendorService;
                var vm = this;
                vm.invoiceRecID = invoiceRecID;
                vm.invoice = invoice;
                this.vendorService.getVendorInvoiceHeader(invoiceRecID).then(function (data) {
                    vm.data = data;
                    vm.vendorService.getVendorInvoiceLines(invoice).then(function (result) {
                        vm.order = result;
                    });
                });
            }
            VendorInvoiceController.prototype.close = function () {
                this.$modalInstance.dismiss();
            };
            VendorInvoiceController.prototype.print = function () {
                var divContents = $(".print").clone();
                var body = $("body").detach();
                document.body = document.createElement("body");
                divContents.appendTo($("body"));
                window.print();
                $("html body").remove();
                body.appendTo($("html"));
            };
            VendorInvoiceController.$inject = ["$uibModalInstance", "$state", "app.services.InquiryService", "invoiceID", "invoice"];
            return VendorInvoiceController;
        }());
        angular.module("app.vendor")
            .controller("app.vendor.VendorInvoiceController", VendorInvoiceController);
    })(home = unit.home || (unit.home = {}));
})(unit || (unit = {}));
//# sourceMappingURL=vendor.invoice.details.controller.js.map
var users;
(function (users) {
    var home;
    (function (home) {
        "use strict";
        var VendorProfileController = (function () {
            function VendorProfileController($state, userService, $modal, mv360api, loginService, $scope, $timeout) {
                this.$state = $state;
                this.userService = userService;
                this.$modal = $modal;
                this.mv360api = mv360api;
                this.loginService = loginService;
                this.$scope = $scope;
                this.$timeout = $timeout;
                var vm = this;
                vm.searchText = "";
                vm.alerts = new Array();
                vm.data = new app.services.ISalesPerson();
                vm.MINIMUM_PASSWORD_LENGTH = 10;
                vm.MINIMUM_PASSWORD_UPPPERCASE = 1;
                vm.MINIMUM_PASSWORD_LOWERCASE = 1;
                vm.MINIMUM_PASSWORD_NUMBER_OR_SPECIAL_CHAR = 1;
                vm.MINIMUM_PASSWORD_NUMBER = 1;
                this.load();
            }
            VendorProfileController.prototype.load = function () {
                var _this = this;
                var vm = this;
                this.controllerReady = false;
                this.userService.GetVendorProfile().then(function (data) {
                    vm.data.FirstName = data.FirstName;
                    vm.data.Email = data.Email;
                    setTimeout(function () {
                        vm.profileform.$setPristine();
                    }, 500);
                    _this.controllerReady = true;
                });
            };
            VendorProfileController.prototype.save = function () {
                var vm = this;
                var passwordChange = (vm.data.ConfirmPassword);
                vm.controllerReady = false;
                this.data.LastUpdatedByConnector = false;
                if (passwordChange) {
                    if (vm.validateNewPassword()) {
                        vm.validateCurrentPassword();
                    }
                }
                else {
                    this.userService.UpdateVendorProfile(this.data).then(function (result) {
                        vm.controllerReady = true;
                        vm.profileform.$setPristine();
                    })["catch"](function (error) {
                        console.log(error);
                        vm.addAlert("danger", "Error saving profile changes.");
                        vm.controllerReady = true;
                    });
                }
            };
            VendorProfileController.prototype.addAlert = function (type, message) {
                this.alerts.push({ type: type, msg: message });
            };
            VendorProfileController.prototype.closeAlert = function (index) {
                this.alerts.splice(index, 1);
            };
            VendorProfileController.prototype.newPasswordIsValid = function () {
                var vm = this;
                var newpass = angular.element(document.getElementById("newpassword")).val();
                var confirmpass = angular.element(document.getElementById("confirmpassword")).val();
                vm.invalidpassword = false;
                vm.newpasswordoesntmatch = false;
                vm.newpasswordlength = false;
                vm.newpassworduppercount = false;
                vm.newpasswordlowercount = false;
                vm.newpasswordnumericspecial = false;
                vm.newpasswordnumeric = false;
                var meetsComplexityRequirements;
                meetsComplexityRequirements = true;
                if (newpass.length < vm.MINIMUM_PASSWORD_LENGTH) {
                    meetsComplexityRequirements = false;
                    vm.newpasswordlength = true;
                }
                var numberOfUppercase = newpass.replace(/[^A-Z]/g, "").length;
                if (numberOfUppercase < vm.MINIMUM_PASSWORD_UPPPERCASE) {
                    meetsComplexityRequirements = false;
                    vm.newpassworduppercount = true;
                }
                var numberOfLowercase = newpass.replace(/[^a-z]/g, "").length;
                if (numberOfLowercase < vm.MINIMUM_PASSWORD_LOWERCASE) {
                    meetsComplexityRequirements = false;
                    vm.newpasswordlowercount = true;
                }
                var numberOfNumeric = newpass.replace(/[^0-9]/g, "").length;
                var numberOfSpecialCharacters = newpass.replace(/[^\s\!\@\#\$\%\^\&\*\(\)\-\_\+\=\|\.\,\?]/g, "").length;
                if (numberOfSpecialCharacters < vm.MINIMUM_PASSWORD_NUMBER_OR_SPECIAL_CHAR) {
                    meetsComplexityRequirements = false;
                    vm.newpasswordnumericspecial = true;
                }
                if (numberOfNumeric < vm.MINIMUM_PASSWORD_NUMBER) {
                    meetsComplexityRequirements = false;
                    vm.newpasswordnumeric = true;
                }
                if ((!newpass) && (!confirmpass)) {
                    return;
                }
                if (!meetsComplexityRequirements) {
                    vm.invalidpassword = true;
                }
                else if (newpass != confirmpass) {
                    vm.newpasswordoesntmatch = true;
                    vm.invalidpassword = true;
                }
                else {
                    vm.currentPasswordIsValid();
                }
            };
            VendorProfileController.prototype.currentPasswordIsValid = function () {
                var vm = this;
                var newpass = angular.element(document.getElementById("newpassword")).val();
                var currentpass = angular.element(document.getElementById("currentpassword")).val();
                vm.currentpasswordrequired = newpass.length > 0 && currentpass.length < 1;
            };
            VendorProfileController.prototype.validateCurrentPassword = function () {
                var vm = this;
                var newpass = angular.element(document.getElementById("newpassword")).val();
                var currentpass = angular.element(document.getElementById("currentpassword")).val();
                var isValid;
                var UserName = vm.data.Email;
                this.userService.UpdateVendorProfile(this.data).then(function (result) {
                    if (result != null) {
                        vm.addAlert("success", "Password has been changed. You will be logged out in 5 seconds and required to log in with your new password.");
                        vm.controllerReady = true;
                        vm.loginService.Logout(true);
                        vm.$timeout(function () {
                            vm.profileform.$setPristine();
                        }, 500);
                        vm.$timeout(function () {
                            vm.profileform.$setPristine();
                            vm.$state.go('vendorlogin');
                        }, 5000);
                    }
                    else {
                        vm.addAlert("danger", "An error has occurred.");
                    }
                })["catch"](function (error) {
                    console.log(error);
                    vm.addAlert("danger", "An error has occurred.");
                    vm.controllerReady = true;
                });
                return;
            };
            VendorProfileController.prototype.validateNewPassword = function () {
                var vm = this;
                var newpass = angular.element(document.getElementById("newpassword")).val();
                var confirmpass = angular.element(document.getElementById("confirmpassword")).val();
                var currentpass = angular.element(document.getElementById("currentpassword")).val();
                var meetsComplexityRequirements;
                if (newpass == currentpass) {
                    vm.addAlert("danger", "New password cannot be the same as the current password.");
                    vm.controllerReady = true;
                    return false;
                }
                if (newpass != confirmpass) {
                    vm.addAlert("danger", "The new password and the confirmation password do not match.");
                    vm.controllerReady = true;
                    return false;
                }
                meetsComplexityRequirements = true;
                if (newpass.length < vm.MINIMUM_PASSWORD_LENGTH) {
                    vm.addAlert("danger", "Password must contain at least " + vm.MINIMUM_PASSWORD_LENGTH.toString() + " characters.");
                    meetsComplexityRequirements = false;
                }
                var numberOfUppercase = newpass.replace(/[^A-Z]/g, "").length;
                if (numberOfUppercase < vm.MINIMUM_PASSWORD_UPPPERCASE) {
                    vm.addAlert("danger", "Password must contain at least " + vm.MINIMUM_PASSWORD_UPPPERCASE.toString() + " upper case character(s).");
                    meetsComplexityRequirements = false;
                }
                var numberOfLowercase = newpass.replace(/[^a-z]/g, "").length;
                if (numberOfLowercase < vm.MINIMUM_PASSWORD_LOWERCASE) {
                    vm.addAlert("danger", "Password must contain at least " + vm.MINIMUM_PASSWORD_LOWERCASE.toString() + " lower case character(s).");
                    meetsComplexityRequirements = false;
                }
                var numberOfNumeric = newpass.replace(/[^0-9]/g, "").length;
                var numberOfSpecialCharacters = newpass.replace(/[^\s\!\@\#\$\%\^\&\*\(\)\-\_\+\=\|\.\,\?]/g, "").length;
                if (numberOfNumeric < vm.MINIMUM_PASSWORD_NUMBER || numberOfSpecialCharacters < vm.MINIMUM_PASSWORD_NUMBER_OR_SPECIAL_CHAR) {
                    vm.addAlert("danger", "Password must contain at least " + vm.MINIMUM_PASSWORD_NUMBER_OR_SPECIAL_CHAR.toString() + " special character(s) and " + vm.MINIMUM_PASSWORD_NUMBER + " number.");
                    meetsComplexityRequirements = false;
                }
                vm.controllerReady = true;
                return meetsComplexityRequirements;
            };
            VendorProfileController.$inject = ["$state", "app.services.UserService", "$uibModal", "mv360api", "app.services.LoginService", "$scope", "$timeout"];
            return VendorProfileController;
        }());
        angular.module("app.vendor")
            .controller("app.vendor.VendorProfileController", VendorProfileController);
    })(home = users.home || (users.home = {}));
})(users || (users = {}));
//# sourceMappingURL=vendor.profile.controller.js.map
var users;
(function (users) {
    var home;
    (function (home) {
        "use strict";
        var VendorUserModalController = (function () {
            function VendorUserModalController($state, userService, $modalInstance, user) {
                this.$state = $state;
                this.userService = userService;
                this.$modalInstance = $modalInstance;
                var vm = this;
                vm.isNewRecord = true;
                vm.showError = false;
                vm.errorMessage = "";
                if (user) {
                    vm.isNewRecord = false;
                    userService.GetVendorUser(user).then(function (response) {
                        vm.data = response;
                        vm.controllerReady = true;
                        if (user) {
                            vm.isNewRecord = false;
                        }
                    });
                }
                else {
                    vm.controllerReady = true;
                }
            }
            VendorUserModalController.prototype.save = function () {
                var _this = this;
                var vm = this;
                if (vm.isNewRecord) {
                    vm.showError = false;
                    vm.errorMessage = "";
                    if (!vm.data.FirstName || vm.data.FirstName.length == 0) {
                        vm.showError = true;
                        vm.errorMessage += "A Name is required. ";
                    }
                    if (!vm.data.Username || vm.data.Username.length == 0) {
                        vm.showError = true;
                        vm.errorMessage += "A User ID is required. ";
                    }
                    else if (!vm.data.Username || vm.data.Username.length < 6) {
                        vm.showError = true;
                        vm.errorMessage += "A User ID must be at least 6 characters long. ";
                    }
                    if (!vm.data.Email || vm.data.Email.length == 0) {
                        vm.showError = true;
                        vm.errorMessage += "An email is required. ";
                    }
                    if (!vm.showError) {
                        this.userService.GetVendorUser(vm.data.Username).then(function (userReturn) {
                            if (userReturn) {
                                vm.showError = true;
                                vm.errorMessage += "This User ID is already in use. Please use a different User ID. ";
                                var myEl = document.getElementById('userID');
                                var angularEl = angular.element(myEl);
                                angularEl.focus();
                            }
                            else {
                                _this.userService.InviteVendorUser(vm.data.FirstName, vm.data.LastName, vm.data.Email, vm.data.Username).then(function (response) {
                                    _this.$modalInstance.close(response);
                                });
                            }
                            _this.controllerReady = true;
                        });
                    }
                }
                else {
                }
            };
            VendorUserModalController.prototype.close = function () {
                this.$modalInstance.dismiss();
            };
            VendorUserModalController.prototype.addTemplate = function () {
                console.log("Add template");
                console.log(this.SelectedTemplate);
                var vm = this;
                vm.userService.GetTemplatePrivileges(vm.SelectedTemplate.TemplateName).then(function (result) {
                    var privs = result;
                    for (var index = 0; index < privs.length; index++) {
                        var priv = privs[index];
                        var userpriv = vm.getUserPriv(priv.PrivilegeName);
                        if (userpriv) {
                            if ((priv.PrivilegeLevel == "Read") && (userpriv.PrivilegeLevel != "Read")) {
                                userpriv.PrivilegeLevel = priv.PrivilegeLevel;
                            }
                            else if ((priv.PrivilegeLevel == "Write") && (userpriv.PrivilegeLevel != "Write")) {
                                userpriv.PrivilegeLevel = priv.PrivilegeLevel;
                            }
                            else if ((priv.PrivilegeLevel == "None") && (userpriv.PrivilegeLevel != "None")) {
                                userpriv.PrivilegeLevel = priv.PrivilegeLevel;
                            }
                        }
                    }
                });
            };
            VendorUserModalController.prototype.getUserPriv = function (privilegeName) {
                var vm = this;
                for (var index = 0; index < vm.data.DealerPrivileges.length; index++) {
                    if (vm.data.DealerPrivileges[index].PrivilegeName == privilegeName) {
                        return vm.data.DealerPrivileges[index];
                    }
                }
                return null;
            };
            VendorUserModalController.$inject = ["$state", "app.services.UserService", "$uibModalInstance", "user"];
            return VendorUserModalController;
        }());
        angular.module("app.vendor")
            .controller("app.vendor.VendorUserModalController", VendorUserModalController);
    })(home = users.home || (users.home = {}));
})(users || (users = {}));
//# sourceMappingURL=vendor.user.modal.controller.js.map
var users;
(function (users) {
    var home;
    (function (home) {
        "use strict";
        var VendorUsersController = (function () {
            function VendorUsersController($state, userService, loginService, $modal) {
                this.$state = $state;
                this.userService = userService;
                this.loginService = loginService;
                this.$modal = $modal;
                var vm = this;
                vm.searchText = "";
                vm.alerts = new Array();
                this.search("");
            }
            VendorUsersController.prototype.search = function (searchText) {
                var _this = this;
                var vm = this;
                this.data = null;
                this.controllerReady = false;
                this.userService.GetVendorUsers().then(function (data) {
                    vm.data = data;
                    _this.controllerReady = true;
                });
            };
            VendorUsersController.prototype.addUser = function () {
                var vm = this;
                var settings = {
                    controller: "app.vendor.VendorUserModalController as vm",
                    templateUrl: "app/vendorportal/vendor.user.modal.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'lg',
                    resolve: {
                        user: function () { return null; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
                modalInstance.result.then(function (resultdata) {
                    vm.search(vm.searchText);
                    vm.addAlert("success", "User successfully invited");
                });
            };
            VendorUsersController.prototype.editUser = function (user) {
                var vm = this;
                var settings = {
                    controller: "app.vendor.VendorUserModalController as vm",
                    templateUrl: "app/vendorportal/vendor.users.modal.html",
                    keyboard: false,
                    backdrop: true,
                    size: 'lg',
                    resolve: {
                        user: function () { return user.Email; }
                    }
                };
                var modalInstance = this.$modal.open(settings);
                modalInstance.result.then(function (resultdata) {
                    vm.search(vm.searchText);
                });
            };
            VendorUsersController.prototype.deleteUser = function (user) {
                var vm = this;
                vex.dialog.confirm({
                    message: "Are you sure you want to delete user " + user.FirstName + "?",
                    callback: function (value) {
                        if (value) {
                            vm.userService.DeleteVendorUser(user).then(function (result) {
                                vm.search(vm.searchText);
                                vm.addAlert("success", user.FirstName + " " + user.LastName + " successfully deleted");
                            });
                        }
                    }
                });
            };
            VendorUsersController.prototype.resendEmail = function (user) {
                var vm = this;
                vm.userService.InviteVendorUser(user.FirstName, user.LastName, user.Email, user.Username).then(function (result) {
                    vm.search(vm.searchText);
                    vm.addAlert("success", "Invitation email resent to " + user.Email);
                });
            };
            VendorUsersController.prototype.addAlert = function (type, message) {
                this.alerts.push({ type: type, msg: message });
            };
            VendorUsersController.prototype.closeAlert = function (index) {
                this.alerts.splice(index, 1);
            };
            VendorUsersController.$inject = ["$state", "app.services.UserService", "app.services.LoginService", "$uibModal"];
            return VendorUsersController;
        }());
        angular.module("app.vendor")
            .controller("app.vendor.VendorUsersController", VendorUsersController);
    })(home = users.home || (users.home = {}));
})(users || (users = {}));
//# sourceMappingURL=vendor.users.controller.js.map
