0001558370-24-005763.txt : 20240425 0001558370-24-005763.hdr.sgml : 20240425 20240425160538 ACCESSION NUMBER: 0001558370-24-005763 CONFORMED SUBMISSION TYPE: 10-Q PUBLIC DOCUMENT COUNT: 69 CONFORMED PERIOD OF REPORT: 20240331 FILED AS OF DATE: 20240425 DATE AS OF CHANGE: 20240425 FILER: COMPANY DATA: COMPANY CONFORMED NAME: COMFORT SYSTEMS USA INC CENTRAL INDEX KEY: 0001035983 STANDARD INDUSTRIAL CLASSIFICATION: ELECTRICAL WORK [1731] ORGANIZATION NAME: 05 Real Estate & Construction IRS NUMBER: 760526487 FISCAL YEAR END: 1231 FILING VALUES: FORM TYPE: 10-Q SEC ACT: 1934 Act SEC FILE NUMBER: 001-13011 FILM NUMBER: 24876217 BUSINESS ADDRESS: STREET 1: 675 BERING DRIVE STREET 2: SUITE 400 CITY: HOUSTON STATE: TX ZIP: 77057 BUSINESS PHONE: 7138309600 MAIL ADDRESS: STREET 1: 675 BERING DRIVE STREET 2: SUITE 400 CITY: HOUSTON STATE: TX ZIP: 77057 10-Q 1 fix-20240331x10q.htm 10-Q
00http://fasb.org/us-gaap/2023#OtherLiabilitiesCurrent0001035983--12-312024Q1falseP47MP35MP3Yhttp://fasb.org/us-gaap/2023#OtherLiabilitiesCurrent0001035983srt:MaximumMemberfix:StockRepurchaseProgram2007Member2024-01-012024-03-310001035983fix:StockRepurchaseProgram2007Member2007-03-292024-03-310001035983fix:StockRepurchaseProgram2007Member2024-03-310001035983fix:StockRepurchaseProgram2007Member2007-03-290001035983us-gaap:TreasuryStockCommonMember2024-03-310001035983us-gaap:RetainedEarningsMember2024-03-310001035983us-gaap:AdditionalPaidInCapitalMember2024-03-310001035983us-gaap:TreasuryStockCommonMember2023-12-310001035983us-gaap:RetainedEarningsMember2023-12-310001035983us-gaap:AdditionalPaidInCapitalMember2023-12-310001035983us-gaap:TreasuryStockCommonMember2023-03-310001035983us-gaap:RetainedEarningsMember2023-03-310001035983us-gaap:AdditionalPaidInCapitalMember2023-03-310001035983us-gaap:TreasuryStockCommonMember2022-12-310001035983us-gaap:RetainedEarningsMember2022-12-310001035983us-gaap:AdditionalPaidInCapitalMember2022-12-310001035983fix:SubordinateDebtAndPromissoryNoteMember2024-01-012024-03-310001035983fix:SummitIndustrialConstructionLlcMember2024-01-012024-03-310001035983fix:JSMechanicalContractorsIncMember2024-01-012024-03-310001035983srt:MinimumMember2024-04-012024-03-310001035983srt:MaximumMember2024-04-012024-03-3100010359832024-04-012024-03-310001035983fix:StockRepurchaseProgram2007Member2024-01-012024-03-310001035983fix:MaturityYearTwoMemberfix:SubordinateDebtAndPromissoryNoteMember2024-03-310001035983fix:MaturityYearThreeMemberfix:SubordinateDebtAndPromissoryNoteMember2024-03-310001035983fix:SubordinateDebtAndPromissoryNoteMember2023-12-310001035983srt:MinimumMemberus-gaap:RevolvingCreditFacilityMember2024-01-012024-03-310001035983srt:MaximumMemberus-gaap:RevolvingCreditFacilityMember2024-01-012024-03-310001035983us-gaap:LetterOfCreditMember2024-03-310001035983fix:SeniorRevolvingCreditFacilityMember2024-03-310001035983us-gaap:RevolvingCreditFacilityMember2023-12-310001035983us-gaap:RevolvingCreditFacilityMember2024-03-310001035983srt:MinimumMember2024-03-310001035983srt:MaximumMember2024-03-3100010359832023-09-012023-09-300001035983us-gaap:OperatingSegmentsMemberfix:MechanicalSegmentMember2024-01-012024-03-310001035983us-gaap:OperatingSegmentsMemberfix:ElectricalSegmentMember2024-01-012024-03-310001035983us-gaap:OperatingSegmentsMemberfix:MechanicalSegmentMember2023-01-012023-03-310001035983us-gaap:OperatingSegmentsMemberfix:ElectricalSegmentMember2023-01-012023-03-310001035983fix:MechanicalSegmentMember2024-01-012024-03-310001035983fix:ElectricalSegmentMember2024-01-012024-03-310001035983fix:MechanicalSegmentMember2023-01-012023-12-310001035983fix:ElectricalSegmentMember2023-01-012023-12-3100010359832023-01-012023-12-310001035983fix:MechanicalSegmentMember2024-03-310001035983fix:ElectricalSegmentMember2024-03-310001035983fix:MechanicalSegmentMember2023-12-310001035983fix:ElectricalSegmentMember2023-12-310001035983fix:MechanicalSegmentMember2022-12-310001035983fix:ElectricalSegmentMember2022-12-310001035983us-gaap:SellingGeneralAndAdministrativeExpensesMemberfix:DisputeWithCustomerMember2023-01-012023-03-310001035983us-gaap:InterestIncomeMemberfix:DisputeWithCustomerMember2023-01-012023-03-310001035983fix:GrossProfitMemberfix:DisputeWithCustomerMember2023-01-012023-03-310001035983fix:BusinessCombinationContingentConsiderationChangeInContingentConsiderationLiabilityMemberfix:DisputeWithCustomerMember2023-01-012023-03-310001035983fix:DisputeWithCustomerMember2023-01-012023-03-310001035983us-gaap:FairValueInputsLevel3Memberus-gaap:FairValueMeasurementsRecurringMember2024-03-310001035983fix:ContingentConsiderationObligationsMember2024-03-310001035983us-gaap:FairValueInputsLevel3Memberus-gaap:FairValueMeasurementsRecurringMember2023-12-310001035983fix:ContingentConsiderationObligationsMember2023-12-310001035983fix:ContingentConsiderationObligationsMember2022-12-310001035983fix:ContingentConsiderationObligationsMember2024-01-012024-03-310001035983fix:ContingentConsiderationObligationsMember2023-01-012023-12-310001035983us-gaap:RetainedEarningsMember2024-01-012024-03-310001035983us-gaap:RetainedEarningsMember2023-01-012023-03-310001035983fix:MaturityYearTwoMembersrt:MinimumMemberfix:SubordinateDebtAndPromissoryNoteMember2024-03-310001035983fix:MaturityYearTwoMembersrt:MaximumMemberfix:SubordinateDebtAndPromissoryNoteMember2024-03-310001035983fix:MaturityYearThreeMembersrt:MinimumMemberfix:SubordinateDebtAndPromissoryNoteMember2024-03-310001035983fix:MaturityYearThreeMembersrt:MaximumMemberfix:SubordinateDebtAndPromissoryNoteMember2024-03-310001035983fix:MaturityYearOneMemberfix:SubordinateDebtAndPromissoryNoteMember2024-03-310001035983fix:MaturityYearFourMemberfix:SubordinateDebtAndPromissoryNoteMember2024-03-310001035983fix:MaturityYearFiveMemberfix:SubordinateDebtAndPromissoryNoteMember2024-03-310001035983fix:DebtCovenantRatioRangeTwoMemberus-gaap:RevolvingCreditFacilityMemberfix:DebtInstrumentVariableRateBaseRateMember2024-01-012024-03-310001035983fix:DebtCovenantRatioRangeTwoMemberfix:DebtInstrumentVariableRateSecuredOvernightFinancingRateMemberus-gaap:RevolvingCreditFacilityMember2024-01-012024-03-310001035983fix:DebtCovenantRatioRangeThreeMemberus-gaap:RevolvingCreditFacilityMemberfix:DebtInstrumentVariableRateBaseRateMember2024-01-012024-03-310001035983fix:DebtCovenantRatioRangeThreeMemberfix:DebtInstrumentVariableRateSecuredOvernightFinancingRateMemberus-gaap:RevolvingCreditFacilityMember2024-01-012024-03-310001035983fix:DebtCovenantRatioRangeOneMemberus-gaap:RevolvingCreditFacilityMemberfix:DebtInstrumentVariableRateBaseRateMember2024-01-012024-03-310001035983fix:DebtCovenantRatioRangeOneMemberfix:DebtInstrumentVariableRateSecuredOvernightFinancingRateMemberus-gaap:RevolvingCreditFacilityMember2024-01-012024-03-310001035983fix:DebtCovenantRatioRangeFourMemberus-gaap:RevolvingCreditFacilityMemberfix:DebtInstrumentVariableRateBaseRateMember2024-01-012024-03-310001035983fix:DebtCovenantRatioRangeFourMemberfix:DebtInstrumentVariableRateSecuredOvernightFinancingRateMemberus-gaap:RevolvingCreditFacilityMember2024-01-012024-03-310001035983fix:DebtCovenantRatioRangeFiveMemberus-gaap:RevolvingCreditFacilityMemberfix:DebtInstrumentVariableRateBaseRateMember2024-01-012024-03-310001035983fix:DebtCovenantRatioRangeFiveMemberfix:DebtInstrumentVariableRateSecuredOvernightFinancingRateMemberus-gaap:RevolvingCreditFacilityMember2024-01-012024-03-310001035983us-gaap:CommonStockMember2024-03-310001035983us-gaap:CommonStockMember2023-12-310001035983us-gaap:CommonStockMember2023-03-310001035983us-gaap:CommonStockMember2022-12-310001035983us-gaap:FairValueInputsLevel2Memberus-gaap:FairValueMeasurementsRecurringMember2024-03-310001035983us-gaap:FairValueInputsLevel2Memberus-gaap:FairValueMeasurementsRecurringMember2023-12-3100010359832023-03-3100010359832022-12-310001035983us-gaap:FairValueInputsLevel1Memberus-gaap:FairValueMeasurementsRecurringMember2024-03-310001035983us-gaap:EstimateOfFairValueFairValueDisclosureMemberus-gaap:FairValueMeasurementsRecurringMember2024-03-310001035983us-gaap:FairValueInputsLevel1Memberus-gaap:FairValueMeasurementsRecurringMember2023-12-310001035983us-gaap:EstimateOfFairValueFairValueDisclosureMemberus-gaap:FairValueMeasurementsRecurringMember2023-12-310001035983fix:SummitIndustrialConstructionLlcMemberus-gaap:TradeNamesMember2024-02-010001035983fix:SummitIndustrialConstructionLlcMemberus-gaap:OrderOrProductionBacklogMember2024-02-010001035983fix:SummitIndustrialConstructionLlcMemberus-gaap:CustomerRelationshipsMember2024-02-010001035983fix:JSMechanicalContractorsIncMemberus-gaap:TradeNamesMember2024-02-010001035983fix:JSMechanicalContractorsIncMemberus-gaap:OrderOrProductionBacklogMember2024-02-010001035983fix:JSMechanicalContractorsIncMemberus-gaap:CustomerRelationshipsMember2024-02-010001035983fix:DeccoIncMember2023-10-022023-10-020001035983fix:EldecoincMember2023-02-012023-02-010001035983us-gaap:AdditionalPaidInCapitalMember2024-01-012024-03-310001035983us-gaap:AdditionalPaidInCapitalMember2023-01-012023-03-310001035983us-gaap:TreasuryStockCommonMember2024-01-012024-03-310001035983us-gaap:TreasuryStockCommonMember2023-01-012023-03-310001035983fix:SummitIndustrialConstructionLlcMemberus-gaap:TradeNamesMember2024-02-012024-02-010001035983fix:SummitIndustrialConstructionLlcMemberus-gaap:OrderOrProductionBacklogMember2024-02-012024-02-010001035983fix:SummitIndustrialConstructionLlcMemberus-gaap:CustomerRelationshipsMember2024-02-012024-02-010001035983fix:JSMechanicalContractorsIncMemberus-gaap:TradeNamesMember2024-02-012024-02-010001035983fix:JSMechanicalContractorsIncMemberus-gaap:OrderOrProductionBacklogMember2024-02-012024-02-010001035983fix:JSMechanicalContractorsIncMemberus-gaap:CustomerRelationshipsMember2024-02-012024-02-010001035983srt:MaximumMember2024-01-012024-03-310001035983us-gaap:OtherCustomerMember2024-01-012024-03-310001035983fix:TechnologyMember2024-01-012024-03-310001035983fix:ServiceProjectsMember2024-01-012024-03-310001035983fix:ServiceCallsMaintenanceAndMonitoringMember2024-01-012024-03-310001035983fix:RetailRestaurantsAndEntertainmentMember2024-01-012024-03-310001035983fix:OfficeBuildingCustomerMember2024-01-012024-03-310001035983fix:NewConstructionMember2024-01-012024-03-310001035983fix:MultiFamilyAndResidentialMember2024-01-012024-03-310001035983fix:MechanicalSegmentMember2024-01-012024-03-310001035983fix:ManufacturingCustomerMember2024-01-012024-03-310001035983fix:HealthcareSectorCustomerMember2024-01-012024-03-310001035983fix:GovernmentCustomerMember2024-01-012024-03-310001035983fix:ExistingBuildingConstructionMember2024-01-012024-03-310001035983fix:ElectricalSegmentMember2024-01-012024-03-310001035983fix:EducationMember2024-01-012024-03-310001035983us-gaap:OtherCustomerMember2023-01-012023-03-310001035983fix:TechnologyMember2023-01-012023-03-310001035983fix:ServiceProjectsMember2023-01-012023-03-310001035983fix:ServiceCallsMaintenanceAndMonitoringMember2023-01-012023-03-310001035983fix:RetailRestaurantsAndEntertainmentMember2023-01-012023-03-310001035983fix:OfficeBuildingCustomerMember2023-01-012023-03-310001035983fix:NewConstructionMember2023-01-012023-03-310001035983fix:MultiFamilyAndResidentialMember2023-01-012023-03-310001035983fix:MechanicalSegmentMember2023-01-012023-03-310001035983fix:ManufacturingCustomerMember2023-01-012023-03-310001035983fix:HealthcareSectorCustomerMember2023-01-012023-03-310001035983fix:GovernmentCustomerMember2023-01-012023-03-310001035983fix:ExistingBuildingConstructionMember2023-01-012023-03-310001035983fix:ElectricalSegmentMember2023-01-012023-03-310001035983fix:EducationMember2023-01-012023-03-310001035983srt:MinimumMemberus-gaap:SuretyBondMember2024-01-012024-03-310001035983srt:MaximumMemberus-gaap:SuretyBondMember2024-01-012024-03-3100010359832023-12-310001035983srt:MinimumMember2024-01-012024-03-3100010359832023-09-300001035983srt:MaximumMemberfix:SeniorRevolvingCreditFacilityMember2024-03-310001035983srt:MinimumMemberus-gaap:LetterOfCreditMember2024-01-012024-03-310001035983srt:MaximumMemberus-gaap:LetterOfCreditMember2024-01-012024-03-3100010359832024-03-310001035983fix:SubordinateDebtAndPromissoryNoteMember2024-03-3100010359832023-01-012023-03-310001035983srt:MinimumMemberfix:SummitIndustrialConstructionLlcMemberfix:ContingentConsiderationObligationsMemberus-gaap:MeasurementInputInceptionDiscountRateMember2024-02-012024-02-010001035983srt:MinimumMemberfix:JSMechanicalContractorsIncMemberfix:ContingentConsiderationObligationsMemberus-gaap:MeasurementInputInceptionDiscountRateMember2024-02-012024-02-010001035983srt:MaximumMemberfix:SummitIndustrialConstructionLlcMemberfix:ContingentConsiderationObligationsMemberus-gaap:MeasurementInputInceptionDiscountRateMember2024-02-012024-02-010001035983srt:MaximumMemberfix:JSMechanicalContractorsIncMemberfix:ContingentConsiderationObligationsMemberus-gaap:MeasurementInputInceptionDiscountRateMember2024-02-012024-02-010001035983srt:MinimumMemberfix:SummitIndustrialConstructionLlcMemberus-gaap:MeasurementInputInceptionDiscountRateMember2024-02-012024-02-010001035983srt:MinimumMemberfix:JSMechanicalContractorsIncMemberus-gaap:MeasurementInputInceptionDiscountRateMember2024-02-012024-02-010001035983srt:MaximumMemberfix:SummitIndustrialConstructionLlcMemberus-gaap:MeasurementInputInceptionDiscountRateMember2024-02-012024-02-010001035983srt:MaximumMemberfix:JSMechanicalContractorsIncMemberus-gaap:MeasurementInputInceptionDiscountRateMember2024-02-012024-02-010001035983fix:SummitIndustrialConstructionLlcMemberfix:ContingentConsiderationObligationsMember2024-02-012024-02-010001035983fix:JSMechanicalContractorsIncMemberfix:ContingentConsiderationObligationsMember2024-02-012024-02-010001035983fix:SummitIndustrialConstructionLlcMember2024-02-010001035983fix:JSMechanicalContractorsIncMember2024-02-010001035983fix:SummitIndustrialConstructionLlcMemberfix:ContingentConsiderationObligationsMember2024-02-010001035983fix:JSMechanicalContractorsIncMemberfix:ContingentConsiderationObligationsMember2024-02-010001035983srt:MinimumMemberfix:SummitIndustrialConstructionLlcMemberfix:ContingentConsiderationObligationsMember2024-02-012024-02-010001035983srt:MinimumMemberfix:JSMechanicalContractorsIncMemberfix:ContingentConsiderationObligationsMember2024-02-012024-02-010001035983srt:MaximumMemberfix:SummitIndustrialConstructionLlcMemberfix:ContingentConsiderationObligationsMember2024-02-012024-02-010001035983srt:MaximumMemberfix:JSMechanicalContractorsIncMemberfix:ContingentConsiderationObligationsMember2024-02-012024-02-010001035983fix:SummitIndustrialConstructionLlcMember2024-02-012024-02-010001035983fix:JSMechanicalContractorsIncMember2024-02-012024-02-0100010359832024-04-1900010359832024-01-012024-03-31fix:segmentxbrli:sharesiso4217:USDfix:Milestonexbrli:purefix:itemfix:employeefix:leasefix:Optioniso4217:USDxbrli:shares

UNITED STATES

SECURITIES AND EXCHANGE COMMISSION

Washington, D.C. 20549

Form 10-Q

(Mark One)

QUARTERLY REPORT PURSUANT TO SECTION 13 OR 15(d) OF THE SECURITIES EXCHANGE ACT OF 1934

For the quarterly period ended March 31, 2024

OR

TRANSITION REPORT PURSUANT TO SECTION 13 OR 15(d) OF THE SECURITIES EXCHANGE ACT OF 1934

For the transition period from to

Commission file number: 1-13011

COMFORT SYSTEMS USA, INC.

(Exact name of registrant as specified in its charter)

Delaware
(State or other jurisdiction of
Incorporation or Organization)

76-0526487
(I.R.S. Employer
Identification No.)

675 Bering Drive
Suite 400
Houston, Texas 77057
(Address of Principal Executive Offices) (Zip Code)

Registrant’s telephone number, including area code: (713830-9600

Securities registered pursuant to Section 12(b) of the Act:

Title of each class

Trading Symbol(s)

Name of each exchange on which registered

Common Stock, $0.01 par value

FIX

New York Stock Exchange

Indicate by check mark whether the registrant (1) has filed all reports required to be filed by Section 13 or 15(d) of the Securities Exchange Act of 1934 during the preceding 12 months (or for such shorter period that the registrant was required to file such reports), and (2) has been subject to such filing requirements for the past 90 days. Yes  No 

Indicate by check mark whether the registrant has submitted electronically every Interactive Data File required to be submitted pursuant to Rule 405 of Regulation S-T (Section 232.405 of this chapter) during the preceding 12 months (or for such shorter period that the registrant was required to submit such files). Yes  No 

Indicate by check mark whether the registrant is a large accelerated filer, an accelerated filer, a non-accelerated filer, a smaller reporting company, or an emerging growth company. See the definitions of “large accelerated filer,” “accelerated filer,” “smaller reporting company,” and “emerging growth company” in Rule 12b-2 of the Exchange Act.

Large accelerated filer 

Accelerated filer 

Non-accelerated filer 

Smaller reporting company 

Emerging growth company 

If an emerging growth company, indicate by check mark if the registrant has elected not to use the extended transition period for complying with any new or revised financial accounting standards provided pursuant to Section 13(a) of the Exchange Act.

Indicate by check mark whether the registrant is a shell company (as defined in Exchange Act Rule 12b-2). Yes  No 

The number of shares outstanding of the issuer’s common stock as of April 19, 2024 was 35,721,909 (excluding treasury shares of 5,401,456).

COMFORT SYSTEMS USA, INC.

INDEX TO FORM 10-Q

FOR THE QUARTER ENDED MARCH 31, 2024

    

Page

Part I—Financial Information

2

Item 1—Financial Statements

2

Consolidated Balance Sheets

2

Consolidated Statements of Operations

3

Consolidated Statements of Stockholders’ Equity

4

Consolidated Statements of Cash Flows

5

Condensed Notes to Consolidated Financial Statements

6

Item 2—Management’s Discussion and Analysis of Financial Condition and Results of Operations

22

Item 3—Quantitative and Qualitative Disclosures about Market Risk

31

Item 4—Controls and Procedures

31

Part II—Other Information

33

Item 1—Legal Proceedings

33

Item 1A—Risk Factors

33

Item 2—Unregistered Sales of Equity Securities and Use of Proceeds

33

Item 5—Other Information

34

Item 6—Exhibits

34

Signatures

36

PART I—FINANCIAL INFORMATION

Item 1. Financial Statements

COMFORT SYSTEMS USA, INC.

CONSOLIDATED BALANCE SHEETS

(In Thousands, Except Share Amounts)

March 31,

December 31,

    

2024

    

2023

 

(Unaudited)

ASSETS

CURRENT ASSETS:

Cash and cash equivalents

$

100,792

$

205,150

Billed accounts receivable, less allowance for credit losses of $11,949 and $11,926, respectively

 

1,570,643

 

1,318,926

Unbilled accounts receivable, less allowance for credit losses of $929 and $850, respectively

 

76,975

 

72,774

Other receivables, less allowance for credit losses of $519 and $522, respectively

 

136,100

 

166,319

Inventories

 

71,061

 

65,538

Prepaid expenses and other

 

62,500

 

54,309

Costs and estimated earnings in excess of billings, less allowance for credit losses of $108 and $79, respectively

 

30,118

 

28,084

Total current assets

 

2,048,189

 

1,911,100

PROPERTY AND EQUIPMENT, NET

 

226,197

 

208,568

LEASE RIGHT-OF-USE ASSET

227,157

205,712

GOODWILL

 

862,934

 

666,834

IDENTIFIABLE INTANGIBLE ASSETS, NET

 

489,884

 

280,397

DEFERRED TAX ASSETS

31,928

17,723

OTHER NONCURRENT ASSETS

 

16,540

 

15,245

Total assets

$

3,902,829

$

3,305,579

LIABILITIES AND STOCKHOLDERS’ EQUITY

CURRENT LIABILITIES:

Current maturities of long-term debt

$

12,885

$

4,867

Accounts payable

557,859

419,962

Accrued compensation and benefits

 

153,859

 

169,136

Billings in excess of costs and estimated earnings and deferred revenue

 

1,131,928

 

909,538

Accrued self-insurance

 

29,712

 

27,774

Other current liabilities

 

253,416

 

189,928

Total current liabilities

 

2,139,659

 

1,721,205

LONG-TERM DEBT

 

77,004

 

39,345

LEASE LIABILITIES

209,717

 

188,136

DEFERRED TAX LIABILITIES

 

1,120

 

1,120

OTHER LONG-TERM LIABILITIES

 

102,793

 

77,944

Total liabilities

 

2,530,293

 

2,027,750

COMMITMENTS AND CONTINGENCIES

STOCKHOLDERS’ EQUITY:

Preferred stock, $.01 par, 5,000,000 shares authorized, none issued and outstanding

 

 

Common stock, $.01 par, 102,969,912 shares authorized, 41,123,365 and 41,123,365 shares issued, respectively

 

411

 

411

Treasury stock, at cost, 5,428,501 and 5,438,625 shares, respectively

 

(211,518)

 

(209,807)

Additional paid-in capital

 

348,582

 

339,562

Retained earnings

 

1,235,061

 

1,147,663

Total stockholders’ equity

 

1,372,536

 

1,277,829

Total liabilities and stockholders’ equity

$

3,902,829

$

3,305,579

The accompanying notes are an integral part of these consolidated financial statements.

2

COMFORT SYSTEMS USA, INC.

CONSOLIDATED STATEMENTS OF OPERATIONS

(In Thousands, Except Per Share Data)

(Unaudited)

Three Months Ended

March 31,

    

2024

    

2023

 

REVENUE

$

1,537,016

$

1,174,640

COST OF SERVICES

 

1,239,653

 

969,235

Gross profit

 

297,363

 

205,405

SELLING, GENERAL AND ADMINISTRATIVE EXPENSES

 

162,723

 

135,032

GAIN ON SALE OF ASSETS

 

(820)

 

(512)

Operating income

 

135,460

 

70,885

OTHER INCOME (EXPENSE):

Interest income

 

1,603

 

1,397

Interest expense

 

(1,633)

 

(4,076)

Changes in the fair value of contingent earn-out obligations

 

(12,491)

 

(2,382)

Other

 

117

 

1

Other income (expense)

 

(12,404)

 

(5,060)

INCOME BEFORE INCOME TAXES

 

123,056

 

65,825

PROVISION FOR INCOME TAXES

 

26,737

 

8,609

NET INCOME

$

96,319

$

57,216

INCOME PER SHARE:

Basic

$

2.70

$

1.60

Diluted

$

2.69

$

1.59

SHARES USED IN COMPUTING INCOME PER SHARE:

Basic

 

35,739

 

35,812

Diluted

 

35,828

 

35,907

The accompanying notes are an integral part of these consolidated financial statements.

3

COMFORT SYSTEMS USA, INC.

CONSOLIDATED STATEMENTS OF STOCKHOLDERS’ EQUITY

(In Thousands, Except Share Amounts)

(Unaudited)

Three Months Ended

March 31, 2023

Additional

Total

 

    

Common Stock

    

Treasury Stock

    

Paid-In

Retained

    

Stockholders’

 

    

Shares

    

Amount

    

Shares

    

Amount

    

Capital

    

Earnings

    

Equity

 

BALANCE AT DECEMBER 31, 2022

 

41,123,365

$

411

 

(5,362,224)

$

(187,212)

$

332,080

$

854,644

 

$

999,923

Net income

 

57,216

 

57,216

Issuance of Stock:

Issuance of shares for options exercised

 

1,000

36

(18)

 

18

Issuance of restricted stock & performance stock

 

31,960

1,131

3,384

 

4,515

Shares received in lieu of tax withholding on vested stock

 

(12,728)

(1,798)

 

(1,798)

Stock-based compensation

 

3,438

 

3,438

Dividends ($0.175 per share)

 

(6,254)

 

(6,254)

Share repurchase

 

(29,400)

(3,568)

 

(3,568)

BALANCE AT MARCH 31, 2023

41,123,365

$

411

(5,371,392)

$

(191,411)

$

338,884

$

905,606

$

1,053,490

Three Months Ended

March 31, 2024

Additional

Total

    

Common Stock

    

Treasury Stock

    

Paid-In

Retained

    

Stockholders’

 

    

Shares

    

Amount

    

Shares

    

Amount

    

Capital

    

Earnings

    

Equity

 

BALANCE AT DECEMBER 31, 2023

 

41,123,365

$

411

(5,438,625)

$

(209,807)

$

339,562

$

1,147,663

$

1,277,829

Net income

 

96,319

 

96,319

Issuance of Stock:

Issuance of shares for options exercised

 

1,369

53

(26)

 

27

Issuance of restricted stock & performance stock

 

17,018

657

4,696

 

5,353

Shares received in lieu of tax withholding on vested stock

 

(6,763)

(2,126)

 

(2,126)

Stock-based compensation

 

4,350

 

4,350

Dividends ($0.25 per share)

 

(8,921)

 

(8,921)

Share repurchase

 

(1,500)

(295)

 

(295)

BALANCE AT MARCH 31, 2024

 

41,123,365

$

411

 

(5,428,501)

$

(211,518)

$

348,582

$

1,235,061

$

1,372,536

The accompanying notes are an integral part of these consolidated financial statements.

4

COMFORT SYSTEMS USA, INC.

CONSOLIDATED STATEMENTS OF CASH FLOWS

(In Thousands)

(Unaudited)

Three Months Ended

March 31,

    

2024

    

2023

 

CASH FLOWS FROM OPERATING ACTIVITIES:

Net income

$

96,319

$

57,216

Adjustments to reconcile net income to net cash provided by operating activities—

Amortization of identifiable intangible assets

 

23,913

 

10,331

Depreciation expense

 

11,254

 

9,187

Change in right-of-use assets

7,981

5,357

Bad debt expense

 

356

 

946

Deferred tax provision (benefit)

 

(14,205)

 

(27,537)

Amortization of debt financing costs

 

171

 

169

Gain on sale of assets

 

(820)

 

(512)

Changes in the fair value of contingent earn-out obligations

 

12,491

 

2,382

Stock-based compensation

 

7,414

 

6,141

Changes in operating assets and liabilities, net of effects of acquisitions and divestitures—

(Increase) decrease in—

Receivables, net

 

(125,582)

 

(125,937)

Inventories

 

(5,293)

 

(1,386)

Prepaid expenses and other current assets

 

(4,499)

 

(911)

Costs and estimated earnings in excess of billings and unbilled accounts receivable

 

(4,822)

 

(2,281)

Other noncurrent assets

 

(280)

 

(298)

Increase (decrease) in—

Accounts payable and accrued liabilities

 

118,757

 

28,652

Billings in excess of costs and estimated earnings and deferred revenue

 

23,307

 

159,140

Other long-term liabilities

 

95

 

6,250

Net cash provided by operating activities

 

146,557

 

126,909

CASH FLOWS FROM INVESTING ACTIVITIES:

Purchases of property and equipment

 

(24,952)

 

(16,520)

Proceeds from sales of property and equipment

 

1,014

 

622

Cash paid for acquisitions, net of cash acquired

 

(196,670)

 

(53,047)

Payments for investments

(1,040)

Net cash used in investing activities

 

(221,648)

 

(68,945)

CASH FLOWS FROM FINANCING ACTIVITIES:

Proceeds from revolving credit facility

 

162,000

 

85,000

Payments on revolving credit facility

 

(162,000)

 

(140,000)

Proceeds from other debt

640

Payments on other debt

 

(22)

 

(16)

Payments of dividends to stockholders

 

(8,921)

 

(6,254)

Share repurchase

 

(295)

 

(3,568)

Shares received in lieu of tax withholding

 

(2,126)

 

(1,798)

Proceeds from exercise of options

 

27

 

18

Payments for contingent consideration arrangements

 

(18,570)

 

Net cash used in financing activities

 

(29,267)

 

(66,618)

NET DECREASE IN CASH AND CASH EQUIVALENTS

 

(104,358)

 

(8,654)

CASH AND CASH EQUIVALENTS, beginning of period

 

205,150

 

57,214

CASH AND CASH EQUIVALENTS, end of period

$

100,792

$

48,560

The accompanying notes are an integral part of these consolidated financial statements.

5

COMFORT SYSTEMS USA, INC.

CONDENSED NOTES TO CONSOLIDATED FINANCIAL STATEMENTS

March 31, 2024

(Unaudited)

1. Business and Organization

Comfort Systems USA, Inc., a Delaware corporation, provides comprehensive mechanical and electrical contracting services, which principally includes heating, ventilation and air conditioning (“HVAC”), plumbing, electrical, piping and controls, as well as off-site construction, monitoring and fire protection. We build, install, maintain, repair and replace mechanical, electrical and plumbing (“MEP”) systems throughout the United States. The terms “Comfort Systems,” “we,” “us,” or the “Company,” refer to Comfort Systems USA, Inc. or Comfort Systems USA, Inc. and its consolidated subsidiaries, as appropriate in the context.

2. Summary of Significant Accounting Policies and Estimates

Basis of Presentation

These interim statements should be read in conjunction with the historical Consolidated Financial Statements and related notes of Comfort Systems included in the Annual Report on Form 10-K as filed with the Securities and Exchange Commission (“SEC”) for the year ended December 31, 2023 (the “Form 10-K”).

The accompanying unaudited consolidated financial statements were prepared using generally accepted accounting principles for interim financial information and the instructions to Form 10-Q and applicable rules of Regulation S-X of the SEC. Accordingly, these financial statements do not include all the footnotes required by generally accepted accounting principles for complete financial statements and should be read in conjunction with the Form 10-K. We believe all adjustments necessary for a fair presentation of these interim statements have been included and are of a normal and recurring nature. The results of operations for interim periods are not necessarily indicative of the results for the full fiscal year.

Use of Estimates

The preparation of financial statements in conformity with generally accepted accounting principles requires the use of estimates and assumptions by management in determining the reported amounts of assets and liabilities, revenue and expenses and disclosures regarding contingent assets and liabilities. Actual results could differ from those estimates. The most significant estimates used in our financial statements affect revenue and cost recognition for construction contracts, self-insurance accruals, accounting for income taxes, fair value accounting for acquisitions and the quantification of fair value for reporting units in connection with our goodwill impairment testing.

Recent Accounting Pronouncements

Recent Accounting Pronouncements Not Yet Adopted

In November 2023, the Financial Accounting Standards Board (“FASB”) issued ASU 2023-07, “Segment Reporting (Topic 280): Improvements to Reportable Segment Disclosures.” This standard requires entities to disclose, on an annual and interim basis, significant segment expenses that are regularly provided to the chief decision maker and included within each reported measure of segment profit and loss. ASU 2023-07 is effective for fiscal years beginning after December 15, 2023, and interim periods within fiscal years beginning after December 15, 2024. Early adoption is permitted. We are currently evaluating the impact ASU 2023-07 will have on our disclosures; however, the standard will not have an impact on our consolidated financial position, results of operations or cash flows.

In December 2023, the FASB issued ASU 2023-09, “Income Taxes (Topic 740): Improvements to Income Tax Disclosures.” This standard requires entities to disclose more detailed information in the reconciliation of their statutory

6

tax rate to their effective tax rate. The standard also requires entities to make additional disclosures on income taxes paid as well as on certain income statement-related disclosures. ASU 2023-09 is effective for fiscal years beginning after December 15, 2024. Early adoption is permitted. We are currently evaluating the impact ASU 2023-09 will have on our disclosures; however, the standard will not have an impact on our consolidated financial position, results of operations or cash flows.

Revenue Recognition

We recognize revenue over time for all of our services as we perform them because (i) control continuously transfers to that customer as work progresses, and (ii) we have the right to bill the customer as costs are incurred. The customer typically controls the work in process, as evidenced either by contractual termination clauses or by our rights to payment for work performed to date, plus a reasonable profit, for delivery of products or services that do not have an alternative use to the Company.

For the reasons listed above, revenue is recognized based on the extent of progress towards completion of the performance obligation. The selection of the method to measure progress towards completion requires judgment and is based on the nature of the products or services to be provided. We generally use a cost-to-cost input method to measure our progress towards satisfaction of the performance obligation for our contracts, as it best depicts the transfer of assets to the customer that occurs as we incur costs on our contracts. Under the cost-to-cost input method, the extent of progress towards completion is measured based on the ratio of costs incurred to date to the total estimated costs at completion of the performance obligation. Revenue, including estimated fees or profits, is recorded proportionally as costs are incurred. Costs to fulfill include labor, materials, subcontractors’ costs, other direct costs and an allocation of indirect costs.

For a small portion of our business in which our services are delivered in the form of service maintenance agreements for existing systems to be repaired and maintained, as opposed to constructed, our performance obligation is to maintain the customer’s mechanical system for a specific period of time. Similar to construction jobs, we recognize revenue over time; however, for service maintenance agreements in which the full cost to provide services may not be known, we generally use an input method to recognize revenue, which is based on the amount of time we have provided our services out of the total time we have been contracted to perform those services. Our revenue recognition policy is further discussed in Note 3 “Revenue from Contracts with Customers.”

Accounts Receivable and Allowance for Credit Losses

We are required to estimate and record the expected credit losses over the contractual life of our financial assets measured at amortized cost, including billed and unbilled accounts receivable, other receivables and contract assets. Accounts receivable include amounts from work completed in which we have billed or have an unconditional right to bill our customers. Our trade receivables are contractually due in less than a year.

We estimate our credit losses using a loss-rate method for each of our identified portfolio segments. Our portfolio segments are construction, service and other. While our construction and service financial assets are often with the same subset of customers and industries, our construction financial assets will generally have a lower loss-rate than service financial assets due to lien rights, which we are more likely to have on construction jobs. These lien rights result in lower credit loss expenses on average compared to receivables that do not have lien rights. Financial assets classified as other include receivables that are not related to our core revenue producing activities, such as receivables related to our acquisition activity from former owners, our vendor rebate program or receivables for estimated losses in excess of our insurance deductible, which are accrued with a corresponding accrued insurance liability.

Loss rates for our portfolios are based on numerous factors, including our history of credit loss expense by portfolio, the financial strength of our customers and counterparties in each portfolio, the aging of our receivables, our expectation of likelihood of payment, macroeconomic trends in the U.S. and the current and forecasted nonresidential construction market trends in the U.S.

In addition to the loss-rate calculations discussed above, we also record allowance for credit losses for specific receivables that are deemed to have a higher risk profile than the rest of the respective pool of receivables (e.g., when we hold concerns about a specific customer going bankrupt and no longer being able to pay the receivables due to us).

7

Unbilled Accounts Receivable

Unbilled accounts receivable are amounts due to us that we have earned under a contract where our right to payment is unconditional. A right to consideration is unconditional if only the passage of time is required before payment of the consideration is due.

Income Taxes

We conduct business throughout the United States in virtually all fifty states. Our effective tax rate changes based upon our relative profitability, or lack thereof, in the federal and various state jurisdictions with differing tax rates and rules. In addition, discrete items such as tax law changes, judgments and legal structures, can impact our effective tax rate. These items can also include the tax treatment for impairment of goodwill and other intangible assets, changes in fair value of acquisition-related assets and liabilities, uncertain tax positions, and accounting for losses associated with underperforming operations.

The Inflation Reduction Act was enacted on August 16, 2022. This law, among other provisions, provides a corporate alternative minimum tax on adjusted financial statement income over $1 billion, which is effective for tax years beginning after December 31, 2022, and a 1% excise tax on net corporate stock repurchases after December 31, 2022. The impact of the excise tax is recorded in “Treasury Stock” within our Consolidated Balance Sheet. These provisions were not material to our current year overall financial results, financial position and cash flows.

In early September 2023, the IRS issued interim guidance addressing, together with other topics, the treatment of research and experimental (“R&E”) expenditures for taxpayers using the percentage of completion method to account for taxable income from long-term contracts. We have chosen to rely on such guidance beginning with the 2022 tax year, and the resultant reduction in taxable revenue offsets the deferral of tax deductions for R&E expenditures pursuant to the Tax Cuts and Jobs Act (2017) for the 2022 tax year. We filed our 2022 federal tax return in October 2023 requesting a refund of our $107.1 million overpayment, which has not been received as of March 31, 2024.

Financial Instruments

Our financial instruments consist of cash and cash equivalents, accounts receivable, other receivables, accounts payable and life insurance policies, for which we deem the carrying values approximate their fair value due to the short-term nature of these instruments, as well as notes to former owners and a revolving credit facility.

Investments

We have a $5.4 million investment in a construction-focused technology fund with a fair value that is not readily determinable and is recorded at cost. This investment is included in “Other Noncurrent Assets” in our Consolidated Balance Sheet and is reviewed quarterly for impairment. We did not recognize any impairments in the current year related to this investment.

3. Revenue from Contracts with Customers

Revenue is recognized when control of the promised goods or services is transferred to our customers, in an amount that reflects the consideration to which we expect to be entitled in exchange for those goods or services. Sales-based taxes are excluded from revenue.

We provide mechanical and electrical contracting services. Our mechanical segment principally includes HVAC, plumbing, piping and controls, as well as off-site construction, monitoring and fire protection. Our electrical segment includes installation and servicing of electrical systems. We build, install, maintain, repair and replace products and systems throughout the United States. All of our revenue is recognized over time as we deliver goods and services to our customers. Revenue can be earned based on an agreed-upon fixed price or based on actual costs incurred, marked up at an agreed-upon percentage.

8

We account for a contract when: (i) it has approval and commitment from both parties, (ii) the rights of the parties are identified, (iii) payment terms are identified, (iv) the contract has commercial substance, and (v) collectability of consideration is probable. We consider the start of a project to be when the above criteria have been met and we either have written authorization from the customer to proceed or an executed contract.

We generally do not incur significant incremental costs related to obtaining or fulfilling a contract prior to the start of a project. On rare occasions, when significant pre-contract costs are incurred, they are capitalized and amortized over the life of the contract using a cost-to-cost input method to measure progress towards contract completion. We do not currently have any capitalized obtainment or fulfillment costs in our Consolidated Balance Sheet and have not incurred any impairment loss on such costs in the current year.

Due to the nature of the work required to be performed on many of our performance obligations, the estimation of total revenue and cost at completion (the process described below in more detail) is complex, subject to many variables and requires significant judgment. The consideration to which we are entitled on our long-term contracts may include both fixed and variable amounts. Variable amounts can either increase or decrease the transaction price. A common example of variable amounts that can either increase or decrease contract value are pending change orders that represent contract modifications for which a change in scope has been authorized or acknowledged by our customer, but the final adjustment to contract price is yet to be negotiated. Other examples of positive variable revenue include amounts awarded upon achievement of certain performance metrics, program milestones or cost of completion date targets and can be based upon customer discretion. Variable amounts can result in a deduction from contract revenue if we fail to meet stated performance requirements, such as complying with the construction schedule.

We include estimated amounts of variable consideration in the contract price to the extent it is probable that a significant reversal of cumulative revenue recognized will not occur when the uncertainty associated with the variable consideration is resolved. Our estimates of variable consideration and determination of whether to include estimated amounts in the contract price are based largely on an assessment of our anticipated performance and all information (historical, current and forecasted) that is reasonably available to us. We reassess the amount of variable consideration each accounting period until the uncertainty associated with the variable consideration is resolved. Changes in the assessed amount of variable consideration are accounted for prospectively as a cumulative adjustment to revenue recognized in the current period.

Contracts are often modified to account for changes in contract specifications and requirements. We consider contract modifications to exist when the modification either creates new, or changes the existing, enforceable rights and obligations. Most of our contract modifications are for goods or services that are not distinct from the existing performance obligation(s). The effect of a contract modification on the transaction price, and our measure of progress for the performance obligation to which it relates, is recognized as an adjustment to revenue (either as an increase or decrease) on a cumulative catch-up basis.

We have a Company-wide policy requiring periodic review of the Estimate at Completion in which management reviews the progress and execution of our performance obligations and estimated remaining obligations. As part of this process, management reviews information including, but not limited to, any outstanding key contract matters, progress towards completion and the related program schedule, identified risks and opportunities and the related changes in estimates of revenue and costs. The risks and opportunities include management's judgment about the ability and cost to achieve the schedule (e.g., the number and type of milestone events), technical requirements (e.g., a newly developed product versus a mature product) and other contract requirements. Management must make assumptions and estimates regarding labor productivity and availability, the complexity of the work to be performed, the availability of materials, the length of time to complete the performance obligation (e.g., to estimate increases in wages and prices for materials and related support cost allocations), execution by our subcontractors, the availability and timing of funding from our customer, and overhead cost rates, among other variables.

Based on this analysis, any adjustments to revenue, cost of services, and the related impact to operating income are recognized as necessary in the quarter when they become known. These adjustments may result from positive program performance if we determine we will be successful in mitigating risks surrounding the technical, schedule and cost aspects of those performance obligations or realizing related opportunities and may result in an increase in operating income during the performance of individual performance obligations. Likewise, if we determine we will not be

9

successful in mitigating these risks or realizing related opportunities, these adjustments may result in a decrease in operating income. Changes in estimates of revenue, cost of services and the related impact to operating income are recognized quarterly on a cumulative catch-up basis, meaning we recognize in the current period the cumulative effect of the changes on current and prior periods based on our progress towards complete satisfaction of a performance obligation. A significant change in one or more of these estimates could affect the profitability of one or more of our performance obligations. For projects in which estimates of total costs to be incurred on a performance obligation exceed total estimates of revenue to be earned, a provision for the entire loss on the performance obligation is recognized in the period the loss is determined.

In the first three months of 2024 and 2023, net revenue recognized from our performance obligations partially satisfied in the previous period positively impacted revenue by 4.1% and 2.2%, respectively, as a result of changes in estimates associated with performance obligations on contracts.

Disaggregation of Revenue

Our consolidated 2024 revenue was derived from contracts to provide service activities in the mechanical and electrical segments we serve. Refer to Note 11 “Segment Information” for additional information on our reportable segments. We disaggregate our revenue from contracts with customers by activity, customer type and service provided, as we believe it best depicts how the nature, amount, timing and uncertainty of our revenue and cash flows are affected by economic factors. See details in the following tables (dollars in thousands):

Three Months Ended March 31,

Revenue by Service Provided

   

2024

   

2023

   

Mechanical Segment

$

1,185,009

   

77.1

%

$

918,615

   

78.2

%

Electrical Segment

352,007

22.9

%

256,025

21.8

%

Total

$

1,537,016

100.0

%

$

1,174,640

100.0

%

Three Months Ended March 31,

Revenue by Type of Customer

2024

2023

 

Manufacturing

$

461,400

30.0

%

$

366,356

31.2

%

Technology

464,814

30.2

%

226,249

19.3

%

Healthcare

133,729

8.7

%

159,815

13.5

%

Education

133,983

8.7

%

110,253

9.4

%

Office Buildings

101,892

6.6

%

98,195

8.4

%

Retail, Restaurants and Entertainment

80,585

5.2

%

76,194

6.5

%

Government

87,801

5.7

%

64,415

5.5

%

Multi-Family and Residential

40,851

2.7

%

45,007

3.8

%

Other

31,961

2.2

%

28,156

2.4

%

Total

$

1,537,016

100.0

%

$

1,174,640

100.0

%

Three Months Ended March 31,

Revenue by Activity Type

2024

2023

 

New Construction

$

898,976

58.5

%

$

627,952

53.5

%

Existing Building Construction

390,369

25.4

%

309,483

26.3

%

Service Projects

104,114

6.8

%

103,105

8.8

%

Service Calls, Maintenance and Monitoring

143,557

9.3

%

134,100

11.4

%

Total

$

1,537,016

100.0

%

$

1,174,640

100.0

%

Contract Assets and Liabilities

Contract assets include unbilled amounts typically resulting from sales under long term contracts when the cost-to-cost method of revenue recognition is used, revenue recognized exceeds the amount billed to the customer and right to payment is conditional or subject to completing a milestone, such as a phase of the project. Contract assets are not considered to have a significant financing component, as they are intended to protect the customer in the event that we do not perform our obligations under the contract.

10

Contract liabilities consist of advance payments and billings in excess of revenue recognized. Advanced payments from customers related to work not yet started are classified as deferred revenue. Contract liabilities are not considered to have a significant financing component, as they are used to meet working capital requirements that are generally higher in the early stages of a contract and are intended to protect us from the other party failing to meet its obligations under the contract. Our contract assets and liabilities are reported in a net position on a contract-by-contract basis at the end of each reporting period.

Contract assets and liabilities in the Consolidated Balance Sheet consisted of the following amounts as of March 31, 2024 and December 31, 2023 (in thousands):

March 31, 2024

December 31, 2023

Contract assets:

Costs and estimated earnings in excess of billings, less allowance for credit losses

$

30,118

$

28,084

Contract liabilities:

Billings in excess of costs and estimated earnings and deferred revenue

$

1,131,928

$

909,538

In the first three months of 2024 and 2023, we recognized revenue of $547.5 million and $341.9 million related to our contract liabilities at January 1, 2024 and January 1, 2023, respectively.

We did not have any impairment losses recognized on our receivables or contract assets in the first three months of 2024 and 2023.

Remaining Performance Obligations

Remaining construction performance obligations represent the remaining transaction price of firm orders for which work has not been performed and exclude unexercised contract options. As of March 31, 2024, the aggregate amount of the transaction price allocated to remaining performance obligations was $5.91 billion. The Company expects to recognize revenue on approximately 65-75% of the remaining performance obligations over the next 12 months, with the remaining recognized thereafter. Our service maintenance agreements are generally one-year renewable agreements. We have adopted the practical expedient that allows us to not include service maintenance contracts with a total term of one year or less; therefore, we do not report unfulfilled performance obligations for service maintenance agreements.

4. Fair Value Measurements

Interest Rate Risk Management and Derivative Instruments

At times, we use derivative instruments to manage exposure to market risk, including interest rate risk. Unsettled amounts under our interest rate swaps, if any, are recorded in the Consolidated Balance Sheet at fair value in “Other Receivables” or “Other Current Liabilities.” Gains and losses on our interest rate swaps are recorded in the Consolidated Statement of Operations in “Interest Expense.” We currently do not have any derivatives that are accounted for as hedges under ASC 815.

Fair Value Measurement

We classify and disclose assets and liabilities carried at fair value in one of the following three categories:

Level 1—quoted prices in active markets for identical assets and liabilities;
Level 2—observable market-based inputs or unobservable inputs that are corroborated by market data; and
Level 3—significant unobservable inputs in which little or no market data exists, therefore requiring an entity to develop its own assumptions.

11

The following table summarizes the fair values, and levels within the fair value hierarchy in which the fair value measurements are included, for assets and liabilities measured on a recurring basis as of March 31, 2024 and December 31, 2023 (in thousands):

Fair Value Measurements at March 31, 2024

    

Level 1

    

Level 2

    

Level 3

    

Total

Cash and cash equivalents

$

100,792

$

$

$

100,792

Life insurance—cash surrender value

$

$

7,721

$

$

7,721

Contingent earn-out obligations

$

$

$

71,296

$

71,296

Fair Value Measurements at December 31, 2023

    

Level 1

    

Level 2

    

Level 3

    

Total

Cash and cash equivalents

$

205,150

$

$

$

205,150

Life insurance—cash surrender value

$

$

7,473

$

$

7,473

Contingent earn-out obligations

$

$

$

44,222

$

44,222

Cash and cash equivalents consist primarily of highly rated money market funds at a variety of well-known institutions with original maturities of three months or less. The original cost of these assets approximates fair value due to their short-term maturity. We believe the carrying value of our debt associated with our revolving credit facility approximates its fair value due to the variable rate on such debt. We believe the carrying values of our notes to former owners approximate their fair values due to the relatively short remaining terms on these notes.

We have life insurance policies covering 127 employees with a combined face value of $86.7 million. The policies are invested in several investment vehicles, and the fair value measurement of the cash surrender balance associated with these policies is determined using Level 2 inputs within the fair value hierarchy and will vary with investment performance. The cash surrender value of these policies is included in “Other Noncurrent Assets” in our Consolidated Balance Sheets.

We value contingent earn-out obligations using a probability weighted discounted cash flow method. This fair value measurement is based on significant unobservable inputs in the market and thus represents a Level 3 measurement within the fair value hierarchy. This analysis reflects the contractual terms of the purchase agreements (e.g., minimum and maximum payments, length of earn-out periods, manner of calculating any amounts due, etc.) and utilizes assumptions with regard to future cash flows and operating income, probabilities of achieving such future cash flows and operating income and a weighted average cost of capital. Significant changes in any of these assumptions could result in a significantly higher or lower potential liability. The contingent earn-out obligations are measured at fair value each reporting period, and changes in estimates of fair value are recognized in earnings. As of March 31, 2024, cash flows were discounted using a weighted average cost of capital ranging from 15.0% to 19.0%.

The table below presents a reconciliation of the fair value of our contingent earn-out obligations that use significant unobservable inputs (Level 3) (in thousands):

    

Three Months Ended

Year Ended

 

    

March 31, 2024

December 31, 2023

 

Balance at beginning of period

    

$

44,222

    

$

32,317

 

 

Issuances

 

51,784

 

4,315

Settlements

(37,201)

(16,017)

Adjustments to fair value

 

12,491

 

23,607

Balance at end of period

$

71,296

$

44,222

5. Acquisitions

Summit Industrial Construction, LLC Acquisition

On February 1, 2024, we acquired Summit Industrial Construction, LLC (“Summit”). Summit is headquartered in Houston, Texas and is a specialty industrial contractor offering engineering, design-assist and turnkey, direct hire

12

construction services of systems serving the advanced technology, power, and industrial sectors. As a result of the acquisition, Summit is a wholly owned subsidiary of the Company reported in our mechanical segment.

The following summarizes the acquisition date fair value of consideration transferred and the acquisition date fair value of the identifiable assets acquired and liabilities assumed, including an amount for goodwill (in thousands):

Consideration transferred:

Cash paid at closing

$

267,500

Working capital adjustment

14,595

Notes issued to former owners

35,000

Estimated fair value of contingent earn-out payments

42,732

$

359,827

Recognized amounts of identifiable assets acquired and liabilities assumed:

Cash and cash equivalents

$

171,027

Billed and unbilled accounts receivable

59,921

Prepaid expenses and other

1,476

Cost and estimated earnings in excess of billings

578

Property and equipment

2,528

Lease right-of-use asset

2,365

Goodwill

155,220

Identifiable intangible assets

170,100

Other noncurrent assets

136

Accounts payable

(15,138)

Billings in excess of costs and estimated earnings and deferred revenue

(179,895)

Current operating lease liabilities

(1,495)

Accrued expenses and other current liabilities

(6,243)

Long-term operating lease liabilities

(753)

$

359,827

The allocation of the purchase price to the assets acquired and liabilities assumed is preliminary and, therefore, subject to change pending the completion of the final valuation of intangible assets and accrued liabilities. Goodwill represents the future economic benefits arising from other assets acquired that cannot be individually identified and separately recognized. The goodwill recognized as a result of the Summit acquisition is deductible for tax purposes.

In estimating the fair value of the acquired intangible assets, we utilized the valuation methodology determined to be the most appropriate for the individual intangible asset. In order to estimate the fair value of the backlog and customer relationships, we utilized an excess earnings methodology, which consisted of the projected cash flows attributable to these assets discounted to present value using a risk-adjusted discount rate that represented the required rate of return. The trade name value was determined based on the relief-from-royalty method, which applies a royalty rate to the revenue stream attributable to this asset, and the resulting royalty payment is tax effected and discounted to present value. Some of the more significant estimates and assumptions inherent in determining the fair value of the identifiable intangible assets are associated with forecasting cash flows and profitability, which represent Level 3 inputs. The primary assumptions used were generally based upon the present value of anticipated cash flows discounted at rates ranging from 18.5% to 20.5%. Estimated years of projected earnings generally follow the range of estimated remaining useful lives for each intangible asset class.

The acquired intangible assets include the following (dollars in thousands):

Valuation Method

Estimated Useful Life

Estimated Fair Value

Backlog

Excess earnings

1.8 years

$

35,800

Trade Name

Relief-from-royalty

22.9 years

11,300

Customer Relationships

Excess earnings

10 years

123,000

Total

$

170,100

13

The contingent earn-out obligation is associated with the achievement of four earnings milestones over a 47-month period, and the range of each estimated milestone payment is $2.6 million to $20.5 million. We determined the initial fair value of the contingent earn-out obligation based on the Monte Carlo Simulation method, which represents a Level 3 measurement.  Cash flows were discounted using discount rates ranging from 18.2% to 19.5%, which we believe is appropriate and representative of a market participant assumption.  Subsequent to the acquisition date, the contingent earn-out obligation is remeasured at fair value each reporting period.  Changes in the estimated fair value of the contingent payments subsequent to the acquisition date are recognized immediately in earnings.

J & S Mechanical Contractors, Inc. Acquisition

On February 1, 2024, we acquired all of the issued and outstanding shares of capital stock of J & S Mechanical Contractors, Inc. (“J&S”). J&S is headquartered in West Jordan, Utah, and provides mechanical construction services to commercial and industrial sectors, specializing in data center HVAC systems and hospital medical gas systems. As a result of the acquisition, J&S is a wholly owned subsidiary of the Company reported in our mechanical segment.

The following summarizes the acquisition date fair value of consideration transferred and the acquisition date fair value of the identifiable assets acquired and liabilities assumed, including an amount for goodwill (in thousands):

Consideration transferred:

Cash paid at closing

$

100,000

Working capital adjustment

1,531

Notes issued to former owners

10,000

Estimated fair value of contingent earn-out payments

9,052

$

120,583

Recognized amounts of identifiable assets acquired and liabilities assumed:

Cash and cash equivalents

$

14,802

Billed and unbilled accounts receivable

38,411

Inventory

230

Prepaid expenses and other

326

Costs and estimated earnings in excess of billings

728

Property and equipment

2,674

Lease right-of-use asset

4,552

Goodwill

40,680

Identifiable intangible assets

63,300

Other noncurrent assets

10

Accounts payable

(20,612)

Billings in excess of costs and estimated earnings and deferred revenue

(19,188)

Current operating lease liabilities

(133)

Accrued expenses and other current liabilities

(826)

Long-term debt

(59)

Long-term operating lease liabilities

(4,312)

$

120,583

The allocation of the purchase price to the assets acquired and liabilities assumed is preliminary and, therefore, subject to change pending the completion of the final valuation of intangible assets and accrued liabilities. Goodwill represents the future economic benefits arising from other assets acquired that cannot be individually identified and separately recognized. The goodwill recognized as a result of the J&S acquisition is deductible for tax purposes.

In estimating the fair value of the acquired intangible assets, we utilized the valuation methodology determined to be the most appropriate for the individual intangible asset. In order to estimate the fair value of the backlog and customer relationships, we utilized an excess earnings methodology, which consisted of the projected cash flows attributable to these assets discounted to present value using a risk-adjusted discount rate that represented the required rate of return. The trade name value was determined based on the relief-from-royalty method, which applies a royalty rate to the revenue stream attributable to this asset, and the resulting royalty payment is tax effected and discounted to

14

present value. Some of the more significant estimates and assumptions inherent in determining the fair value of the identifiable intangible assets are associated with forecasting cash flows and profitability, which represent Level 3 inputs. The primary assumptions used were generally based upon the present value of anticipated cash flows discounted at rates ranging from 15.5% to 17.0%. Estimated years of projected earnings generally follow the range of estimated remaining useful lives for each intangible asset class.

The acquired intangible assets include the following (dollars in thousands):

    

    

Estimated

    

Estimated

    

Valuation Method

    

Useful Life

    

Fair Value

Backlog

 

Excess earnings

 

1.8 years

$

12,900

Trade Name

 

Relief-from-royalty

 

22 years

 

10,600

Customer Relationships

 

Excess earnings

 

9 years

39,800

Total

$

63,300

The contingent earn-out obligation is associated with the achievement of three earnings milestones over a 35-month period, and the range of each estimated milestone payment is $1.1 million to $4.7 million. We determined the initial fair value of the contingent earn-out obligation based on the Monte Carlo Simulation method, which represents a Level 3 measurement.  Cash flows were discounted using a range of discount rates ranging from 15.4% to 16.5%, which we believe is appropriate and representative of a market participant assumption.  Subsequent to the acquisition date, the contingent earn-out obligation is remeasured at fair value each reporting period.  Changes in the estimated fair value of the contingent payments subsequent to the acquisition date are recognized immediately in earnings.

Other Acquisitions

On October 2, 2023, we acquired all of the issued and outstanding shares of capital stock of DECCO, Inc. (“DECCO”), headquartered in Nashua, New Hampshire, for a total preliminary purchase price of $59.8 million, which included $48.8 million of cash paid on the closing date, $7.0 million in notes payable to the former owners, an earn-out that will be paid if certain financial targets are met after the acquisition date and a working capital adjustment. DECCO operates in the Northeastern United States and performs mechanical and plumbing services with specialties in piping systems, steam, power, biotechnical processes and conveying systems, in addition to turnkey tool and equipment installation, critical equipment handling services and associated maintenance and support services. As a result of the acquisition, DECCO is a wholly owned subsidiary of the Company reported in our mechanical segment.

On February 1, 2023, we acquired all of the issued and outstanding shares of capital stock of Eldeco, Inc. (“Eldeco”), headquartered in South Carolina, for a total purchase price of $74.0 million, which included $60.8 million of cash paid on the closing date, $8.0 million in notes payable to the former owners, an earn-out that will be paid if certain financial targets are met after the acquisition date and a working capital adjustment. Eldeco performs electrical design and construction services in the Southeastern region of the United States. As a result of the acquisition, Eldeco is a wholly owned subsidiary of the Company reported in our electrical segment.

The results of operations of acquisitions are included in our consolidated financial statements from their respective acquisition dates. Our Consolidated Balance Sheet includes preliminary allocations of the purchase price to the assets acquired and liabilities assumed for the applicable acquisitions pending the completion of the final valuation of intangible assets and accrued liabilities. The acquisitions completed in the current and prior year were not material, individually or in the aggregate. Additional contingent purchase price (“earn-out”) has been or will be paid if certain acquisitions achieve predetermined profitability targets. Such earn-outs, when they are not subject to the continued employment of the sellers, are estimated as of the purchase date and included as part of the consideration paid for the acquisition. If we have an earn-out under which continued employment is a condition to receipt of payment, then the earn-out is recorded as compensation expense over the period earned.

15

6. Goodwill and Identifiable Intangible Assets, Net

Goodwill

The changes in the carrying amount of goodwill are as follows (in thousands):

    

Mechanical Segment

    

Electrical Segment

Total

 

Balance at December 31, 2022

$

363,929

$

247,860

$

611,789

Acquisitions and purchase price adjustments (See Note 5)

 

29,347

25,698

55,045

Balance at December 31, 2023

393,276

273,558

666,834

Acquisitions and purchase price adjustments (See Note 5)

195,900

200

196,100

Balance at March 31, 2024

$

589,176

$

273,758

$

862,934

Identifiable Intangible Assets, Net

At March 31, 2024, future amortization expense of identifiable intangible assets is as follows (in thousands):

Year ending December 31—

    

    

2024 (remainder of the year)

$

71,121

2025

 

63,532

2026

 

52,948

2027

 

50,967

2028

50,806

Thereafter

 

200,510

Total

$

489,884

7. Debt Obligations

Debt obligations consist of the following (in thousands):

March 31,

December 31,

    

2024

    

2023

 

Revolving credit facility

$

$

Notes to former owners

89,070

 

44,070

Other debt

819

142

Total debt

89,889

44,212

Less—current portion

(12,885)

 

(4,867)

Total long-term portion of debt

$

77,004

$

39,345

Revolving Credit Facility

We have an $850.0 million senior credit facility (the “Facility”) provided by a syndicate of banks, which is composed of a revolving credit line guaranteed by certain of our subsidiaries. The Facility also provides for an accordion or increase option not to exceed the greater of (a) $250 million and (b) 1.0x Credit Facility Adjusted EBITDA (as defined below), as well as a sublimit of up to $175.0 million issuable in the form of letters of credit. The Facility expires in July 2027 and is secured by a first lien on substantially all of our personal property except for assets related to projects subject to surety bonds and the equity of, and assets held by, certain unrestricted subsidiaries and our wholly owned captive insurance company, and a second lien on our assets related to projects subject to surety bonds. As of March 31, 2024, we had no outstanding borrowings on the revolving credit facility, $81.2 million in letters of credit outstanding and $768.8 million of credit available.

There are two interest rate options for borrowings under the Facility, the Base Rate Loan (as defined in the Facility) option and the Secured Overnight Financing Rate (“SOFR”) Loan option. These rates are floating rates

16

determined by the broad financial markets, meaning they can and do move up and down from time to time. Additional margins are then added to these two rates:

Net Leverage Ratio

    

Less than 
1.00

    

1.00 to less than 1.75

    

1.75 to less than 2.50

    

2.50 to less than 3.00

 

3.00 or greater

Additional Per Annum Interest Margin Added Under:

Base Rate Loan Option

0.00

%

0.25

%  

0.50

%  

0.75

%

1.00

%

SOFR Loan Option

1.00

%

1.25

%

1.50

%

1.75

%

2.00

%

There were no outstanding borrowings on the revolving credit facility as of March 31, 2024 and December 31, 2023.

Certain of our vendors require letters of credit to ensure reimbursement for amounts they are disbursing on our behalf, such as to beneficiaries under our self-funded insurance programs. We have also occasionally used letters of credit to guarantee performance under our contracts and to ensure payment to our subcontractors and vendors under those contracts. Our lenders issue such letters of credit through the Facility. A letter of credit commits the lenders to pay specified amounts to the holder of the letter of credit if the holder demonstrates that we have failed to perform specified actions. If this were to occur, we would be required to reimburse the lenders for amounts they fund to honor the letter of credit holder’s claim. Absent a claim, there is no payment or reserving of funds by us in connection with a letter of credit. However, because a claim on a letter of credit would require immediate reimbursement by us to our lenders, letters of credit are treated as a use of Facility capacity. The letter of credit fees range from 1.00% to 2.00% per annum, based on the Net Leverage Ratio.

Commitment fees are payable on the portion of the revolving loan capacity not in use for borrowings or letters of credit at any given time. These fees range from 0.15% to 0.25% per annum, based on the Net Leverage Ratio.

The Facility contains financial covenants defining various financial measures and the levels of these measures with which we must comply. Covenant compliance is assessed as of each quarter end. We were in compliance with all of our financial covenants as of March 31, 2024.

Notes to Former Owners

As part of the consideration used to acquire ten companies, we have outstanding notes to the former owners. Together, these notes had an outstanding balance of $89.1 million as of March 31, 2024. At March 31, 2024, future principal payments of notes to former owners by maturity year are as follows (dollars in thousands):

Balance at

Range of Stated

    

March 31, 2024

Interest Rates

2024

$

4,800

2.5

%

2025

 

21,645

2.3 - 3.0

%

2026

 

31,625

2.5 - 5.5

%

2027

26,000

5.5

%

2028

5,000

5.5

%

Total

$

89,070

F

8. Leases

We lease certain facilities, vehicles and equipment primarily under noncancelable operating leases. The most significant portion of these noncancelable operating leases is for the facilities occupied by our corporate office and our operating locations. Leases with an initial term of 12 months or less are not recorded in the Consolidated Balance Sheet. We do not separate lease components from their associated non-lease components pursuant to lease accounting guidance. We have certain leases with variable payments based on an index as well as short-term leases on equipment and facilities. Variable lease expense and short-term lease expense aggregated to $17.9 million and $10.2 million in the first

17

three months of 2024 and 2023, respectively. These expenses were primarily related to short-term equipment rentals. Lease right-of-use assets and liabilities are recognized at commencement date based on the present value of lease payments over the lease term. As most of our leases do not provide an implicit rate, we generally use our incremental borrowing rate based on the information available at commencement date in determining the present value of lease payments. The weighted average discount rate for our operating leases as of March 31, 2024 and December 31, 2023 was 6.0% and 5.8%, respectively. We recognize operating lease expense, including escalating lease payments and lease incentives, on a straight-line basis over the lease term. Operating lease expense for the three months ended March 31, 2024 and 2023 was $28.2 million and $17.3 million, respectively.

The lease terms generally range from three to ten years. Some leases include one or more options to renew, which may be exercised to extend the lease term. We include the exercise of lease renewal options in the lease term when it is reasonably certain that we will exercise the option and such exercise is at our sole discretion. In the third quarter of 2023, we commenced two large real estate leases to support our expected growth in off-site construction, with lease terms longer than our typical terms. The weighted average remaining lease term for our operating leases was 11.5 years at March 31, 2024 and 10.9 years at December 31, 2023.

A majority of the Company’s real property leases are with individuals or entities with whom we have no other business relationship. However, in certain instances the Company enters into real property leases with current or former employees. Rent paid to related parties for the three months ended March 31, 2024 and 2023 was approximately $2.1 million and $2.0 million, respectively.

If we decide to cancel or terminate a lease before the end of its term, we would typically owe the lessor the remaining lease payments under the term of the lease. Our lease agreements do not contain any material residual value guarantees or material restrictive covenants. On rare occasions, we rent or sublease certain real estate assets that we no longer use to third parties.

The following table summarizes the operating lease assets and liabilities included in the Consolidated Balance Sheet as follows (in thousands):

March 31, 2024

December 31, 2023

Operating lease right-of-use assets

$

227,157

$

205,712

Operating lease liabilities:

Other current liabilities

$

26,130

$

24,426

Long-term operating lease liabilities

209,717

188,136

Total operating lease liabilities

$

235,847

$

212,562

The maturities of operating lease liabilities are as follows (in thousands):

Year ending December 31—

2024 (excluding the three months ended March 31, 2024)

$

29,282

2025

36,864

2026

33,144

2027

28,915

2028

25,252

Thereafter

183,669

Total lease payments

337,126

Less—present value discount

(101,279)

Present value of operating lease liabilities

$

235,847

18

Supplemental information related to operating leases was as follows (in thousands):

Three Months Ended March 31,

2024

2023

Cash paid for amounts included in the measurement of operating lease liabilities

$

9,466

$

7,024

Operating lease right-of-use assets obtained in exchange for lease liabilities

$

29,426

$

9,446

9. Commitments and Contingencies

Claims and Lawsuits

We are subject to certain legal and regulatory claims, including lawsuits arising in the normal course of business. We maintain various insurance coverages to minimize financial risk associated with these claims. We have estimated and provided accruals for probable losses and related legal fees associated with certain litigation in the accompanying consolidated financial statements. While we cannot predict the outcome of these proceedings, in management’s opinion and based on reports of counsel, any liability arising from these matters individually and in the aggregate will not have a material effect on our operating results, cash flows or financial condition, after giving effect to provisions already recorded.

In the first quarter of 2023, we recorded a pre-tax gain of $6.8 million from legal developments and settlements that primarily relate to disputes with customers regarding the outcome of completed projects as well as an obligation to perform subcontract work under two executed letters of intent for subsequent projects that we believed were not enforceable. The pre-tax gain of $6.8 million was recorded as an increase in gross profit of $6.6 million, a reduction in SG&A of $0.7 million, an increase in interest income of $1.3 million and an increase in the change in fair value of contingent earn-out obligations expense of $1.8 million in our Consolidated Statements of Operations.

As of March 31, 2024, we recorded an accrual for unresolved matters, which is not material to our financial statements, based on our analysis of likely outcomes related to the respective matters; however, it is possible that the ultimate outcome and associated costs will deviate from our estimates and that, in the event of an unexpectedly adverse outcome, we may experience additional costs and expenses in future periods.

Surety

Many customers, particularly in connection with new construction, require us to post performance and payment bonds issued by a financial institution known as a surety. If we fail to perform under the terms of a contract or to pay subcontractors and vendors who provided goods or services under a contract, the customer may demand that the surety make payments or provide services under the bond. We must reimburse the surety for any expenses or outlays it incurs.

Current market conditions for surety markets and bonding capacity are adequate, with acceptable terms and conditions. Historically, approximately 10% to 20% of our business has required bonds. While we currently have strong surety relationships to support our bonding needs, future market conditions or changes in the sureties’ assessment of our operating and financial risk could cause the sureties to decline to issue bonds for our work. If that were to occur, the alternatives include doing more business that does not require bonds, posting other forms of collateral for project performance, such as letters of credit or cash, and seeking bonding capacity from other sureties. We would likely also encounter concerns from customers, suppliers and other market participants as to our creditworthiness. While we believe our general operating and financial characteristics would enable us to ultimately respond effectively to an interruption in the availability of bonding capacity, such an interruption would likely cause our revenue and profits to decline in the near term.

Self-Insurance

We are substantially self-insured for workers’ compensation, employer’s liability, auto liability, general liability and employee group health claims, in view of the relatively high per-incident deductibles we absorb under our insurance arrangements for these risks. Losses are estimated and accrued based upon known facts, historical trends and industry averages. Estimated losses in excess of our deductible, which have not already been paid, are included in our accrual with a corresponding receivable from our insurance carrier. Loss estimates associated with the larger and

19

longer-developing risks, such as workers’ compensation, auto liability and general liability, are reviewed by a third-party actuary quarterly.

10. Stockholders’ Equity

Earnings Per Share

Basic earnings per share (“EPS”) is computed by dividing net income by the weighted average number of shares of common stock outstanding during the year. Diluted EPS is computed considering the dilutive effect of stock options, restricted stock, restricted stock units and performance stock units. The vesting of unvested, contingently issuable performance stock units is based on the achievement of certain earnings per share targets and total shareholder return. These shares are considered contingently issuable shares for purposes of calculating diluted earnings per share. These shares are not included in the diluted earnings per share denominator until the performance criteria are met, if it is assumed that the end of the reporting period was the end of the contingency period.

Unvested restricted stock, restricted stock units and performance stock units are included in diluted earnings per share, weighted outstanding until the shares and units vest. Upon vesting, the vested restricted stock, restricted stock units and performance stock units are included in basic earnings per share weighted outstanding from the vesting date.

There were zero anti-dilutive stock options excluded from the calculation of diluted EPS for the three months ended March 31, 2024 and 2023.

The following table reconciles the number of shares outstanding with the number of shares used in computing basic and diluted earnings per share for each of the periods presented (in thousands):

Three Months Ended

March 31,

    

2024

    

2023

 

Common shares outstanding, end of period

35,695

 

35,752

Effect of using weighted average common shares outstanding

44

 

60

Shares used in computing earnings per share—basic

35,739

 

35,812

Effect of shares issuable under stock option plans based on the treasury stock method

29

 

26

Effect of restricted and contingently issuable shares

60

 

69

Shares used in computing earnings per share—diluted

35,828

 

35,907

Share Repurchase Program

On March 29, 2007, our Board of Directors (the “Board”) approved a stock repurchase program to acquire up to 1.0 million shares of our outstanding common stock. Subsequently, the Board has from time to time increased the number of shares that may be acquired under the program and approved extensions of the program. Since the inception of the repurchase program, the Board has approved 10.9 million shares to be repurchased. As of March 31, 2024, we have repurchased a cumulative total of 10.3 million shares at an average price of $26.29 per share under the repurchase program.

The share repurchases will be made from time to time at our discretion in the open market or privately negotiated transactions, as permitted by securities laws and other legal requirements, and subject to market conditions and other factors. The Board may modify, suspend, extend or terminate the program at any time. During the three months ended March 31, 2024, we repurchased less than 0.1 million shares for approximately $0.3 million at an average price of $196.89 per share.

11. Segment Information

Our activities are within the mechanical services industry and the electrical services industry, which represent our two reportable segments. We aggregate our operating segments into two reportable segments, as the operating

20

segments meet all of the aggregation criteria. The following tables present information about our reportable segments (in thousands):

Three Months Ended March 31, 2024

    

Mechanical Segment

    

Electrical Segment

    

Corporate

    

Consolidated

Revenue

$

1,185,009

$

352,007

$

$

1,537,016

Gross Profit

$

217,712

$

79,651

$

$

297,363

Three Months Ended March 31, 2023

    

Mechanical Segment

    

Electrical Segment

    

Corporate

    

Consolidated

Revenue

$

918,615

$

256,025

$

$

1,174,640

Gross Profit

$

164,067

$

41,338

$

$

205,405

21

Item 2. Management’s Discussion and Analysis of Financial Condition and Results of Operations

The following discussion and analysis should be read in conjunction with our historical Consolidated Financial Statements and related notes included elsewhere in this Form 10-Q and the Annual Report on Form 10-K filed with the Securities and Exchange Commission for the year ended December 31, 2023 (the “Form 10-K”). This discussion contains “forward-looking statements” regarding our business and industry within the meaning of applicable securities laws and regulations. These statements are based on our current plans and expectations and involve risks and uncertainties that could cause our actual future activities and results of operations to be materially different from those set forth in the forward-looking statements. Important factors that could cause actual results to differ include risks set forth in “Item 1A. Risk Factors” included in our Form 10-K. We undertake no obligation to revise or publicly release the results of any revision to these forward-looking statements, except as required by law. Given these risks and uncertainties, readers are cautioned not to place undue reliance on such forward-looking statements. The terms “Comfort Systems,” “we,” “us,” or the “Company,” refer to Comfort Systems USA, Inc. or Comfort Systems USA, Inc. and its consolidated subsidiaries, as appropriate in the context.

Introduction and Overview

We are a national provider of comprehensive mechanical and electrical installation, renovation, maintenance, repair and replacement services within the mechanical and electrical services industries. We operate primarily in the commercial, industrial and institutional markets and perform most of our work in manufacturing, healthcare, education, office, technology, retail and government facilities. We operate our business in two business segments: mechanical and electrical.

Nature and Economics of Our Business

In our mechanical business segment, customers hire us to ensure HVAC systems deliver specified or generally expected heating, cooling, conditioning and circulation of air in a facility. This entails installing core system equipment such as packaged heating and air conditioning units, or in the case of larger facilities, separate core components such as chillers, boilers, air handlers, and cooling towers. We also typically install connecting and distribution elements such as piping and ducting.

In our electrical business segment, our principal business activity is electrical construction and engineering in the commercial and industrial field. We also perform electrical logistics services, electrical service work, and electrical construction and engineering services.

In both our mechanical and electrical business segments, our responsibilities usually require conforming the systems to pre-established engineering drawings and equipment and performance specifications, which we frequently participate in establishing. Our project management responsibilities include staging equipment and materials to project sites, deploying labor to perform the work, and coordinating with other service providers on the project, including any subcontractors we might use to deliver our portion of the work.

Approximately 90.7% of our revenue is earned on a project basis for installation services in newly constructed facilities or for replacement of systems in existing facilities. When competing for project business, we usually estimate the costs we will incur on a project, and then propose a bid to the customer that includes a contract price and other performance and payment terms. Our bid price and terms are intended to cover our estimated costs on the project and provide a profit margin to us commensurate with the value of the installed system to the customer, the risk that project costs or duration will vary from estimate, the schedule on which we will be paid, the opportunities for other work that we might forego by committing capacity to this project, and other costs that we incur to support our operations but which are not specific to the project. Typically, customers will seek pricing from competitors for a given project. While the criteria on which customers select a provider vary widely and include factors such as quality, technical expertise, on-time performance, post-project support and service, and company history and financial strength, we believe that price for value is the most influential factor for most customers in choosing a mechanical or electrical installation and service provider.

22

After a customer accepts our bid, we generally enter into a contract with the customer that specifies what we will deliver on the project, what our related responsibilities are and how much and when we will be paid. Our overall price for the project is typically set at a fixed amount in the contract, although changes in project specifications or work conditions that result in unexpected additional work are usually subject to additional payment from the customer via what are commonly known as change orders. Project contracts typically provide for periodic billings to the customer as we meet progress milestones or incur cost on the project. Project contracts in our industry also frequently allow for a small portion of progress billings or contract price to be withheld by the customer until after we have completed the work. Amounts withheld under this practice are known as retention or retainage.

Labor, materials and overhead costs account for the majority of our cost of service. Accordingly, labor management and utilization have the most impact on our project performance. Given the fixed price nature of much of our project work, if our initial estimate of project costs is wrong or we incur cost overruns that cannot be recovered in change orders, we can experience reduced profits or even significant losses on fixed price project work. We also perform some project work on a cost-plus or a time and materials basis, under which we are paid our costs incurred plus an agreed-upon profit margin, and such projects are sometimes subject to a guaranteed maximum cost. These margins are frequently less than fixed-price contract margins because there is less risk of unrecoverable cost overruns in cost-plus or time and materials work.

As of March 31, 2024, we had 8,668 projects in process. Our average project takes six to nine months to complete, with an average contract price of approximately $1.6 million. Our projects generally require working capital funding of equipment and labor costs. Customer payments on periodic billings generally do not recover these costs until late in the job. Our average project duration, together with typical retention terms as discussed above, generally allow us to complete the realization of revenue and earnings in cash within one year. We have what we consider to be a well-diversified distribution of revenue across end-use sectors that we believe reduces our exposure to negative developments in any given sector. Because of the integral nature of our services to most buildings, we have the legal right in almost all cases to attach liens to buildings or related funding sources when we have not been fully paid for installing systems, except with respect to some government buildings. The service work that we do, which is discussed further below, usually does not give rise to lien rights.

We also perform larger projects. Taken together, projects with contract prices of $2 million or more totaled $12.1 billion of aggregate contract value as of March 31, 2024, or approximately 88% of a total contract value for all projects in progress, totaling $13.7 billion. Generally, projects closer in size to $2 million will be completed in one year or less. It is unusual for us to work on a project that exceeds two years in length.

A stratification of projects in progress as of March 31, 2024, by contract price, is as follows:

    

    

Aggregate

 

Contract

 

No. of

Price Value

 

Contract Price of Project

Projects

(millions)

 

Under $2 million

 

7,639

$

1,608.7

$2 million - $10 million

 

739

 

3,359.5

$10 million - $20 million

 

134

 

1,902.9

$20 million - $40 million

 

97

 

2,773.7

Greater than $40 million

 

59

 

4,023.4

Total

 

8,668

$

13,668.2

In addition to project work, approximately 9.3% of our revenue represents maintenance and repair service on already installed HVAC, electrical, and controls systems. This kind of work usually takes from a few hours to a few days to perform. Prices to the customer are based on the equipment and materials used in the service as well as technician labor time. We usually bill the customer for service work when it is complete, typically with payment terms of up to thirty days. We also provide maintenance and repair service under ongoing contracts. Under these contracts, we are paid regular monthly or quarterly amounts and provide specified service based on customer requirements. These agreements typically are for one or more years and frequently contain thirty- to sixty-day cancellation notice periods.

23

A relatively small portion of our revenue comes from national and regional account customers. These customers typically have multiple sites and contract with us to perform maintenance and repair service. These contracts may also provide for us to perform new or replacement systems installation. We operate a national call center to dispatch technicians to sites requiring service. We perform the majority of this work with our own employees, with the balance being subcontracted to third parties that meet our performance qualifications.

Profile and Management of Our Operations

We manage our 47 operating units based on a variety of factors. Financial measures we emphasize include profitability and use of capital as indicated by cash flow and by other measures of working capital principally involving project cost, billings and receivables. We also monitor selling, general, administrative and indirect project support expense, backlog, workforce size and mix, growth in revenue and profits, variation of actual project cost from original estimate, and overall financial performance in comparison to budget and updated forecasts. Operational factors we emphasize include project selection, estimating, pricing, safety, management and execution practices, labor utilization, training, and the make-up of both existing backlog as well as new business being pursued, in terms of project size, technical application, facility type, end-use customers and industries and location of the work.

Most of our operations compete on a local or regional basis. Attracting and retaining effective operating unit managers is an important factor in our business, particularly in view of the relative uniqueness of each market and operation, the importance of relationships with customers and other market participants, such as architects and consulting engineers, and the high degree of competition and low barriers to entry in most of our markets. Accordingly, we devote considerable attention to operating unit management quality, stability, and contingency planning, including related considerations of compensation and non-competition protection where applicable.

Economic and Industry Factors

As a mechanical and electrical services provider, we operate in the broader nonresidential construction services industry and are affected by trends in this sector. While we do not have operations in all major cities of the United States, we believe our national presence is sufficiently large that we experience trends in demand for and pricing of our services that are consistent with trends in the national nonresidential construction sector. As a result, we monitor the views of major construction sector forecasters along with macroeconomic factors they believe drive the sector, including trends in gross domestic product, interest rates, business investment, employment, demographics and the fiscal condition of federal, state and local governments.

Spending decisions for building construction, renovation and system replacement are generally made on a project basis, usually with some degree of discretion as to when and if projects proceed. With larger amounts of capital, time, and discretion involved, spending decisions are affected to a significant degree by uncertainty, particularly concerns about economic and financial conditions and trends. We have experienced periods of time when economic weakness caused a significant slowdown in decisions to proceed with installation and replacement project work.

Operating Environment and Management Emphasis

In 2020, the advent of a global pandemic led to some delays in service and construction, including delayed project starts and air pockets or pauses during 2020 and 2021. We experienced increasing demand in 2022 and 2023, and we expect that the demand environment, especially for industrial and technology customers, will remain at high levels in 2024. Although we have largely recovered from negative impacts caused by the COVID-19 pandemic, we continue to experience increased labor costs, supply constraints and cost increases, and delays in delivery of various materials and equipment. We expect that constraints and delays will continue to abate in 2024; however, we anticipate that pressure on cost and availability, especially for skilled labor, will continue throughout 2024.

We have a credit facility in place with terms we believe are favorable that does not expire until July 2027. As of March 31, 2024, we had $768.8 million of credit available to borrow under our credit facility. We have strong surety relationships to support our bonding needs, and we believe our relationships with the surety markets are strong and benefit from our operating history and financial position. We have generated positive free cash flow in each of the last twenty-five calendar years and will continue our emphasis in this area. We believe that the relative size and strength of

24

our Balance Sheet and surety relationships, as compared to most companies in our industry, represent competitive advantages for us.

As discussed at greater length in “Results of Operations” below, we expect price competition to continue as local and regional industry participants compete for customers. We will continue to invest in our service business, to pursue the more active sectors in our markets, and to emphasize our regional and national account business.

Cyclicality and Seasonality

The construction industry is subject to business cycle fluctuation. As a result, our volume of business, particularly in new construction projects and renovation, may be adversely affected by declines in new installation and replacement projects in various geographic regions of the United States during periods of economic weakness.

The mechanical and electrical contracting industries are also subject to seasonal variations. The demand for new installation and replacement is generally lower during the winter months (the first quarter of the year) due to reduced construction activity during inclement weather and less use of air conditioning during the colder months. Demand for our services is generally higher in the second and third calendar quarters due to increased construction activity and increased use of air conditioning during the warmer months. Accordingly, we expect our revenue and operating results generally will be lower in the first calendar quarter.

Critical Accounting Estimates

Management believes that there have been no significant changes during the three months ended March 31, 2024, to the items that we disclosed as our "Critical Accounting Estimates" in Management's Discussion and Analysis of Financial Condition and Results of Operations in our Annual Report on Form 10-K for the fiscal year ended December 31, 2023. A summary of significant accounting policies and a summary of recent accounting pronouncements applicable to our Consolidated Financial Statements are included in Note 2 “Summary of Significant Accounting Policies and Estimates.”

Results of Operations (dollars in thousands):

Three Months Ended March 31,

2024

    

2023

 

Revenue

$

1,537,016

    

100.0

%  

$

1,174,640

    

100.0

%

Cost of services

 

1,239,653

 

80.7

%

 

969,235

 

82.5

%

Gross profit

 

297,363

 

19.3

%

 

205,405

 

17.5

%

Selling, general and administrative expenses

 

162,723

 

10.6

%

 

135,032

 

11.5

%

Gain on sale of assets

 

(820)

 

(0.1)

%

 

(512)

 

Operating income

 

135,460

 

8.8

%

 

70,885

 

6.0

%

Interest income

 

1,603

 

0.1

%

 

1,397

 

0.1

%

Interest expense

 

(1,633)

 

(0.1)

%

 

(4,076)

 

(0.3)

%

Changes in the fair value of contingent earn-out obligations

 

(12,491)

 

(0.8)

%

 

(2,382)

 

(0.2)

%

Other income (expense)

 

117

 

 

1

 

Income before income taxes

 

123,056

 

8.0

%

 

65,825

 

5.6

%

Provision for income taxes

 

26,737

 

8,609

Net income

$

96,319

6.3

%

$

57,216

4.9

%

We had 44 operating locations as of December 31, 2023. In the first quarter of 2024, we split one of our operating locations into two separate operating locations. Additionally, we completed the acquisitions of Summit Industrial Construction, LLC (“Summit”) and J & S Mechanical Contractors, Inc. (“J&S”), which both report as separate operating locations. We had 47 operating locations as of March 31, 2024. Acquisitions are included in our results of operations from the respective acquisition date. The same-store comparison from 2024 to 2023, as described below, excludes Summit, which was acquired on February 1, 2024, J&S, which was acquired on February 1, 2024, DECCO, Inc. (“DECCO”), which was acquired on October 2, 2023, and one month of results for Eldeco, Inc (“Eldeco”), which was acquired on February 1, 2023. An operating location is included in the same-store comparison on the first day it has

25

comparable prior year operating data, except for immaterial acquisitions that are often absorbed and integrated with existing operations.

Revenue—Revenue for the first quarter of 2024 increased $362.4 million, or 30.8%, to $1.54 billion compared to the same period in 2023. The increase included a 22.7% increase in revenue related to same-store activity and an 8.1% increase related to the Summit, J&S, DECCO, and Eldeco acquisitions. The same-store revenue growth was largely driven by strong market conditions, including the increase in our backlog. The increase in demand has been particularly strong in the technology and manufacturing sectors, particularly for data centers, chip plants, food and pharmaceuticals.

The following table presents our operating segment revenue (in thousands, except percentages):

 

Three Months Ended March 31,

 

    

2024

    

2023

    

Revenue:

    

Mechanical Segment

$

1,185,009

    

77.1

%  

$

918,615

 

78.2

%

Electrical Segment

 

352,007

 

22.9

%

 

256,025

 

21.8

%

Total

$

1,537,016

 

100.0

%

$

1,174,640

 

100.0

%

Revenue for our mechanical segment increased $266.4 million, or 29.0%, to $1,185.0 million for the first quarter of 2024 compared to the same period in 2023. Of this increase, $87.5 million resulted from the acquisition of Summit, J&S, and DECCO, and $178.9 million was attributable to same-store activity. The same-store revenue increase primarily resulted from an increase in activity in the technology sector at one of our Texas operations ($44.0 million), at another one of our Texas operations ($41.2 million), at our North Carolina operation ($24.5 million) and in the Technology and Manufacturing sectors at one of our Virginia operations ($24.8 million).

Revenue for our electrical segment increased $96.0 million, or 37.5%, to $352.0 million for the first quarter of 2024 compared to the same period in 2023. The increase primarily resulted from an increase in activity in the technology sector at our Texas electrical operation ($38.8 million) and in the manufacturing sector at our North Carolina electrical operation ($29.9 million).

Backlog reflects revenue still to be recognized under contracted or committed installation and replacement project work. Project work generally lasts less than one year. Service agreement revenue, service work and short duration projects, which are generally billed as performed, do not flow through backlog. Accordingly, backlog represents only a portion of our revenue for any given future period, and it represents revenue that is likely to be reflected in our operating results over the next six to twelve months. As a result, we believe the predictive value of backlog information is limited to indications of general revenue direction over the near term, and should not be interpreted as indicative of ongoing revenue performance over several quarters.

The following table presents our operating segment backlog (in thousands, except percentages):

    

March 31, 2024

    

December 31, 2023

    

March 31, 2023

    

Backlog:

    

    

Mechanical Segment

$

4,627,294

    

78.3

%  

$

4,027,927

 

78.1

%

$

3,423,767

 

77.0

%

Electrical Segment

 

1,284,354

 

21.7

%

 

1,129,449

 

21.9

%

 

1,021,177

 

23.0

%

Total

$

5,911,648

 

100.0

%

$

5,157,376

 

100.0

%

$

4,444,944

 

100.0

%

Backlog as of March 31, 2024 was $5.91 billion, a 14.6% increase from December 31, 2023 backlog of $5.16 billion, and a 33.0% increase from March 31, 2023 backlog of $4.44 billion. The sequential backlog increase included the acquisitions of Summit ($440.9 million) and J&S ($171.7 million) as well as a same-store increase of $141.7 million, or 2.7%. The same-store sequential backlog increase was primarily a result of an increase in project bookings at our Texas electrical operation ($170.0 million). The sequential backlog increase was partially offset by completion of project work at one of our Texas operations ($136.1 million). The year-over-year backlog increase included the acquisitions of Summit ($440.9 million), J&S ($171.7 million) and DECCO ($52.1 million) as well as a same-store increase of $802.0 million, or 18.0%. Same-store year-over-year backlog growth was primarily attributable to increased project bookings at one of our Virginia operations ($185.0 million), our Texas electrical operation ($164.3

26

million), our North Carolina operations ($101.9 million), one of our Tennessee operations ($79.4 million) and one of our South Carolina operations ($78.8 million).

Gross Profit—Gross profit increased $92.0 million, or 44.8%, to $297.4 million for the first quarter of 2024 as compared to the same period in 2023. The increase included a $4.8 million, or 2.4%, increase related to the Summit, J&S, DECCO, and Eldeco acquisitions, as well as a 42.4% increase in same-store activity. The same-store increase in gross profit was driven by both higher revenues in the current year as well as improved execution in our operations. We had increased volumes at our North Carolina operations ($15.4 million) and we achieved improvements in project execution at our Texas electrical operation ($22.8 million) and another one of our Texas operations ($18.3 million). These increases were partially offset by an increase in the first quarter of 2023 of $6.6 million in gross profit related to positive developments on legal matters, which did not recur in 2024. As a percentage of revenue, gross profit for the first quarter increased from 17.5% in 2023 to 19.3% in 2024, primarily due to the factors discussed above and improvements in our electrical segment gross profit margin.

Selling, General and Administrative Expenses (“SG&A”)—SG&A increased $27.7 million, or 20.5%, to $162.7 million for the first quarter of 2024 as compared to 2023. On a same-store basis, excluding amortization expense, SG&A increased $18.7 million, or 14.9%. The same-store increase is primarily due to higher same-store revenue and increased compensation costs ($13.7 million), largely attributable to increased headcount. Amortization expense increased $3.3 million during the period, primarily as a result of the Summit, J&S, DECCO and Eldeco acquisitions. As a percentage of revenue, SG&A for the first quarter decreased from 11.5% in 2023 to 10.6% in 2024 due to leverage resulting from the increase in revenue.

We have included same-store SG&A, excluding amortization, because we believe it is an effective measure of comparative results of operations. However, same-store SG&A, excluding amortization, is not considered under generally accepted accounting principles to be a primary measure of an entity’s financial results, and accordingly, should not be considered an alternative to SG&A as shown in our consolidated statements of operations.

 

Three Months Ended

 

March 31,

    

2024

    

2023

 

 

(in thousands)

SG&A

$

162,723

$

135,032

Less: SG&A from companies acquired

 

(5,684)

 

Less: Amortization expense

 

(12,609)

 

(9,295)

Same-store SG&A, excluding amortization expense

$

144,430

$

125,737

Interest Expense—Interest expense decreased $2.4 million, or 59.9%, to $1.6 million for the first quarter of 2024 as compared to the same period in 2023. The decrease in interest expense for the first quarter of 2024 is due to a decrease in our average outstanding debt balance compared to the prior year.

Changes in the Fair Value of Contingent Earn-out Obligations—The contingent earn-out obligations are measured at fair value each reporting period, and changes in estimates of fair value are recognized in earnings. Expense from changes in the fair value of contingent earn-out obligations for the first quarter of 2024 increased $10.1 million as compared to the same period in 2023. The increase in earn-out expense was primarily driven by higher actual and projected earning at Summit and J&S. Expense or income from changes in earn-out valuations may be more volatile in future periods due to large earn-out agreements for acquisitions that closed in the first quarter of 2024.

Provision for Income Taxes—Our provision for income taxes for the three months ended March 31, 2024 was $26.7 million with an effective tax rate of 21.7% as compared to a provision for income taxes of $8.6 million with an effective tax rate of 13.1% for the same period in 2023. The effective tax rate for 2024 was slightly higher than the 21% federal statutory rate primarily due to net state income taxes (3.7%) and nondeductible expenses (1.6%) partially offset by the credit for increasing research activities (the “R&D tax credit”) (4.4%). The effective tax rate for 2023 was lower than the 21% federal statutory rate primarily due to the R&D tax credit (9.7%) and an increase in the R&D tax credit for the 2022 tax year (5.1%). These R&D tax credit benefits were partially offset by net state income taxes (4.3%) and nondeductible expenses, including nondeductible expenses related to the TAS Energy Inc. acquisition (2.6%).

27

As a result of conforming amendments made to the R&D tax credit in connection with the deferral of tax deductions for research and experimental (“R&E”) expenditures pursuant to the Tax Cuts and Jobs Act (2017), our provision for income taxes for the three months ended March 31, 2024 benefited from a $1.1 million increase in the R&D tax credit.

Outlook

We experienced strong ongoing demand in the first quarter of 2024, and, although we have largely recovered from negative impacts caused by the COVID-19 pandemic, we continue to experience increased labor costs, supply constraints, and delays in delivery of various materials and equipment. We are recognizing these challenges in our job planning and pricing, and we are ordering materials on an earlier timeline and seeking to collaborate with customers to share supply risks and to mitigate the effects of these challenges. We have been generally successful in maintaining productivity and in procuring needed materials despite ongoing challenges.

We have a good pipeline of opportunities and potential backlog. Considering our substantial advance bookings, we currently anticipate solid earnings and cash flow for 2024. Although we are preparing for a wide range of challenges and economic circumstances, including an eventual recession, we currently expect that supportive conditions for our industry, especially for our industrial and technology customers, are likely to continue throughout 2024.

Liquidity and Capital Resources (in thousands):

Three Months Ended

March 31,

    

2024

    

2023

 

Cash provided by (used in):

Operating activities

$

146,557

$

126,909

Investing activities

 

(221,648)

 

(68,945)

Financing activities

 

(29,267)

 

(66,618)

Net increase (decrease) in cash and cash equivalents

$

(104,358)

$

(8,654)

Free cash flow:

Cash provided by operating activities

$

146,557

$

126,909

Purchases of property and equipment

 

(24,952)

 

(16,520)

Proceeds from sales of property and equipment

 

1,014

 

622

Free cash flow

$

122,619

$

111,011

Cash Flow

Our business does not require significant amounts of investment in long-term fixed assets. The substantial majority of the capital used in our business is working capital that funds our costs of labor and installed equipment deployed in project work until our customer pays us. Customary terms in our industry allow customers to withhold a small portion of the contract price until after we have completed the work, typically for six months. Amounts withheld under this practice are known as retention or retainage. Our average project duration, together with typical retention terms, generally allow us to complete the realization of revenue and earnings in cash within one year.

Cash Provided (Used in) by Operating Activities—Cash flow from operations is primarily influenced by demand for our services and operating margins but can also be influenced by working capital needs associated with the various types of services that we provide. In particular, working capital needs may increase when we commence large volumes of work under circumstances where project costs, primarily associated with labor, equipment and subcontractors, are required to be paid before the receivables resulting from the work performed are billed and collected. Working capital needs are generally higher during the late winter and spring months as we prepare and plan for the increased project demand when favorable weather conditions exist in the summer and fall months. Conversely, working capital assets are typically converted to cash during the late summer and fall months as project completion is underway. These seasonal trends are sometimes offset by changes in the timing of major projects, which can be impacted by the weather, project delays or accelerations and other economic factors that may affect customer spending.

28

Cash provided by operating activities was $146.6 million during the first three months of 2024 compared to $126.9 million during the same period in 2023. The $19.6 million increase in cash provided was primarily driven by higher pre-tax income and a $90.1 million benefit from increases in accounts payable and accrued liabilities driven by the size and timing of payments. This increase was partially offset by a $135.8 million change in billing in excess of costs and deferred revenue due to more advance payments received in the prior year. We have received large advanced payments in the current and prior year that will reverse when project costs are incurred, except to the extent that additional advanced payments are received.

Cash Provided by (Used in) Investing Activities—During the first three months of 2024, cash used in investing activities was $221.6 million compared to $68.9 million during the same period in 2023. The $152.7 million increase in cash used primarily relates to an increase in cash paid (net of cash acquired) for acquisitions in the current year compared to the same period in 2023.

Cash Provided by (Used in) Financing Activities—Cash used in financing activities was $29.3 million for the first three months of 2024 compared to cash used of $66.6 million during the same period in 2023. The $37.4 million decrease in cash used is primarily due to higher repayments of debt in the prior year as operating cash flows were used to pay down outstanding debt. This decrease was partially offset by $18.6 million payments for contingent consideration related to acquisitions in the current year.

Free Cash Flow—We define free cash flow as cash provided by operating activities, less customary capital expenditures, plus the proceeds from asset sales. We believe free cash flow, by encompassing both profit margins and the use of working capital over our approximately one year working capital cycle, is an effective measure of operating effectiveness and efficiency. We have included free cash flow information here for this reason, and because we are often asked about it by third parties evaluating us. However, free cash flow is not considered under generally accepted accounting principles to be a primary measure of an entity’s financial results, and accordingly free cash flow should not be considered an alternative to operating income, net income, or amounts shown in our consolidated statements of cash flows as determined under generally accepted accounting principles. Free cash flow may be defined differently by other companies.

Share Repurchase Program

On March 29, 2007, our Board of Directors (the “Board”) approved a stock repurchase program to acquire up to 1.0 million shares of our outstanding common stock. Subsequently, the Board has from time to time increased the number of shares that may be acquired under the program and approved extensions of the program. Since the inception of the repurchase program, the Board has approved 10.9 million shares to be repurchased. As of March 31, 2024, we have repurchased a cumulative total of 10.3 million shares at an average price of $26.29 per share under the repurchase program.

The share repurchases will be made from time to time at our discretion in the open market or privately negotiated transactions, as permitted by securities laws and other legal requirements, and subject to market conditions and other factors. The Board may modify, suspend, extend or terminate the program at any time. During the three months ended March 31, 2024, we repurchased less than 0.1 million shares for approximately $0.3 million at an average price of $196.89 per share.

Debt

Revolving Credit Facility

We have an $850.0 million senior credit facility (the “Facility”) provided by a syndicate of banks, which is composed of a revolving credit line guaranteed by certain of our subsidiaries. The Facility also provides for an accordion or increase option not to exceed the greater of (a) $250 million and (b) 1.0x Credit Facility Adjusted EBITDA (as defined below), as well as a sublimit of up to $175.0 million issuable in the form of letters of credit. The Facility expires in July 2027 and is secured by a first lien on substantially all of our personal property except for assets related to projects subject to surety bonds and the equity of, and assets held by, certain unrestricted subsidiaries and our wholly owned captive insurance company, and a second lien on our assets related to projects subject to surety bonds. As of March 31,

29

2024, we had no outstanding borrowings on the revolving credit facility, $81.2 million in letters of credit outstanding and $768.8 million of credit available.

There are two interest rate options for borrowings under the Facility, the Base Rate Loan (as defined in the Facility) option and the Secured Overnight Financing Rate (“SOFR”) Loan option. These rates are floating rates determined by the broad financial markets, meaning they can and do move up and down from time to time. Additional margins are then added to these two rates.

Certain of our vendors require letters of credit to ensure reimbursement for amounts they are disbursing on our behalf, such as to beneficiaries under our self-funded insurance programs. We have also occasionally used letters of credit to guarantee performance under our contracts and to ensure payment to our subcontractors and vendors under those contracts. Our lenders issue such letters of credit through the Facility. A letter of credit commits the lenders to pay specified amounts to the holder of the letter of credit if the holder demonstrates that we have failed to perform specified actions. If this were to occur, we would be required to reimburse the lenders for amounts they fund to honor the letter of credit holder’s claim. Absent a claim, there is no payment or reserving of funds by us in connection with a letter of credit. However, because a claim on a letter of credit would require immediate reimbursement by us to our lenders, letters of credit are treated as a use of Facility capacity. The letter of credit fees range from 1.00% to 2.00% per annum, based on the Net Leverage Ratio.

As of March 31, 2024, we have $81.2 million in letter of credit commitments, of which $55.1 million will expire in 2024, $26.0 million will expire in 2025 and $0.1 million will expire in 2026. The substantial majority of these letters of credit are posted with insurers who disburse funds on our behalf in connection with our workers’ compensation, auto liability and general liability insurance program. These letters of credit provide additional security to the insurers that sufficient financial resources will be available to fund claims on our behalf, many of which develop over long periods of time, should we ever encounter financial duress. Posting of letters of credit for this purpose is a common practice for entities that manage their self-insurance programs through third-party insurers as we do. While some of these letter of credit commitments expire in the next twelve months, we expect nearly all of them, particularly those supporting our insurance programs, will be renewed annually.

Commitment fees are payable on the portion of the revolving loan capacity not in use for borrowings or letters of credit at any given time. These fees range from 0.15% to 0.25% per annum, based on the Net Leverage Ratio.

The Facility contains financial covenants defining various financial measures and the levels of these measures with which we must comply. Covenant compliance is assessed as of each quarter end. We were in compliance with all of our financial covenants as of March 31, 2024.

Notes to Former Owners

As part of the consideration used to acquire ten companies, we have outstanding notes to the former owners. Together, these notes had an outstanding balance of $89.1 million as of March 31, 2024. At March 31, 2024, future principal payments of notes to former owners by maturity year are as follows (dollars in thousands):

Balance at

Range of Stated

    

March 31, 2024

Interest Rates

2024

$

4,800

2.5

%

2025

 

21,645

2.3 - 3.0

%

2026

 

31,625

2.5 - 5.5

%

2027

26,000

5.5

%

2028

5,000

5.5

%

Total

$

89,070

Outlook

We have generated positive net free cash flow for the last twenty-five calendar years, much of which occurred during challenging economic and industry conditions. We also continue to have significant borrowing capacity under our

30

credit facility, and we maintain what we feel are reasonable cash balances. We believe these factors will provide us with sufficient liquidity to fund our operations for the foreseeable future.

Other Commitments

Many customers, particularly in connection with new construction, require us to post performance and payment bonds issued by a financial institution known as a surety. If we fail to perform under the terms of a contract or to pay subcontractors and vendors who provided goods or services under a contract, the customer may demand that the surety make payments or provide services under the bond. We must reimburse the sureties for any expenses or outlays they incur.

Under standard terms in the surety market, sureties issue bonds on a project-by-project basis, and can decline to issue bonds at any time. Historically, approximately 10% to 20% of our business has required bonds. While we currently have strong surety relationships to support our bonding needs, future market conditions or changes in our sureties’ assessment of our operating and financial risk could cause our sureties to decline to issue bonds for our work. If that were to occur, our alternatives include doing more business that does not require bonds, posting other forms of collateral for project performance, such as letters of credit or cash, and seeking bonding capacity from other sureties. We would likely also encounter concerns from customers, suppliers and other market participants as to our creditworthiness. While we believe our general operating and financial characteristics would enable us to ultimately respond effectively to an interruption in the availability of bonding capacity, such an interruption would likely cause our revenue and profits to decline in the near term.

Item 3. Quantitative and Qualitative Disclosures about Market Risk

We are exposed to market risk primarily related to potential adverse changes in interest rates, as discussed below. We are actively involved in monitoring exposure to market risk and continue to develop and utilize appropriate risk management techniques. We are not exposed to any other significant financial market risks, including commodity price risk, or foreign currency exchange risk from the use of derivative financial instruments. At times, we use derivative financial instruments to manage our interest rate risk.

We have exposure to changes in interest rates under our revolving credit facility. There were no outstanding borrowings on the revolving credit facility as of March 31, 2024 and December 31, 2023. Our debt with fixed interest rates consists of notes to former owners of acquired companies and acquired notes payable.

We measure certain assets at fair value on a nonrecurring basis. These assets are recognized at fair value when they are deemed to be other-than-temporarily impaired. We did not recognize any impairments in the current year on those assets required to be measured at fair value on a nonrecurring basis.

The valuation of the Company’s contingent earn-out payments is determined using a probability weighted discounted cash flow method. This analysis reflects the contractual terms of the purchase agreements (e.g., minimum and maximum payment, length of earn-out periods, manner of calculating any amounts due, etc.) and utilizes assumptions with regard to future cash flows, probabilities of achieving such future cash flows and a discount rate.

Item 4. Controls and Procedures

Evaluation of Disclosure Controls and Procedures

Our executive management is responsible for ensuring the effectiveness of the design and operation of our disclosure controls and procedures. We carried out an evaluation under the supervision and with the participation of our management, including our Chief Executive Officer and Chief Financial Officer, of the effectiveness of the design and operation of our disclosure controls and procedures (as defined in Rules 13a-15(e) and 15d-15(e) under the Securities Exchange Act of 1934) as of the end of the period covered by this report. Based on that evaluation, our Chief Executive Officer and Chief Financial Officer have concluded that our disclosure controls and procedures (as defined in Rules 13a-15(e) and 15d-15(e) of the Securities Exchange Act of 1934) are effective as of the end of the period covered by this report.

31

Changes in Internal Control over Financial Reporting

There have not been any changes in our internal control over financial reporting (as such term is defined in Rules 13a-15(f) and 15d-15(f) under the Securities Exchange Act of 1934) during the three months ended March 31, 2024 that have materially affected, or are reasonably likely to materially affect, our internal control over financial reporting.

32

PART II—OTHER INFORMATION

Item 1. Legal Proceedings

We are subject to certain legal and regulatory claims, including lawsuits arising in the normal course of business. We maintain various insurance coverages to minimize financial risk associated with these claims. We have estimated and provided accruals for probable losses and related legal fees associated with certain litigation in our consolidated financial statements. While we cannot predict the outcome of these proceedings, in management’s opinion and based on reports of counsel, any liability arising from these matters individually and in the aggregate will not have a material effect on our operating results, cash flows or financial condition, after giving effect to provisions already recorded.

In the first quarter of 2023, we recorded a pre-tax gain of $6.8 million from legal developments and settlements that primarily relate to disputes with customers regarding the outcome of completed projects as well as an obligation to perform subcontract work under two executed letters of intent for subsequent projects that we believed were not enforceable. The pre-tax gain of $6.8 million was recorded as an increase in gross profit of $6.6 million, a reduction in SG&A of $0.7 million, an increase in interest income of $1.3 million and an increase in the change in fair value of contingent earn-out obligations expense of $1.8 million in our Consolidated Statements of Operations.

As of March 31, 2024, we recorded an accrual for unresolved matters, which is not material to our financial statements, based on our analysis of likely outcomes related to the respective matters; however, it is possible that the ultimate outcome and associated costs will deviate from our estimates and that, in the event of an unexpectedly adverse outcome, we may experience additional costs and expenses in future periods.

Item 1A. Risk Factors

In addition to the other information set forth in this report, you should carefully consider the factors discussed in Part 1, “Item 1A. Risk Factors” in our Annual Report on Form 10-K for the year ended December 31, 2023, which could materially affect our business, financial condition, or future results. Additional risks and uncertainties not currently known to us or that we currently deem to be immaterial also may materially adversely affect our business, financial condition, or future results.

Item 2. Unregistered Sales of Equity Securities and Use of Proceeds

Recent Sales of Unregistered Securities

None.

Issuer Purchases of Equity Securities

On March 29, 2007, our Board of Directors (the “Board”) approved a stock repurchase program to acquire up to 1.0 million shares of our outstanding common stock. Subsequently, the Board has from time to time increased the number of shares that may be acquired under the program and approved extensions of the program. Since the inception of the repurchase program, the Board has approved 10.9 million shares to be repurchased. As of March 31, 2024, we have repurchased a cumulative total of 10.3 million shares at an average price of $26.29 per share under the repurchase program.

The share repurchases will be made from time to time at our discretion in the open market or privately negotiated transactions, as permitted by securities laws and other legal requirements, and subject to market conditions and other factors. The Board may modify, suspend, extend or terminate the program at any time. During the three months ended March 31, 2024, we repurchased less than 0.1 million shares for approximately $0.3 million at an average price of $196.89 per share.

33

During the quarter ended March 31, 2024, we purchased our common shares in the following amounts at the following average prices:

    

    

    

Total Number of Shares

    

Maximum Number of

 

Purchased as Part of

Shares that May Yet Be

 

Total Number of

Average Price

Publicly Announced Plans

Purchased Under the Plans

 

Period

Shares Purchased

Paid Per Share

or Programs (1)

or Programs

 

January 1 - January 31

 

1,500

$

196.89

 

10,257,824

 

686,301

February 1 - February 29

 

$

 

10,257,824

 

686,301

March 1 - March 31

 

$

 

10,257,824

 

686,301

 

1,500

$

196.89

 

10,257,824

 

686,301

________________________________________

(1)Purchased as part of a program announced on March 29, 2007 under which, since the inception of this program, 10.9 million shares have been approved for repurchase.

Under our stock incentive plans, employees may elect to have us withhold common shares to satisfy statutory federal, state and local tax withholding obligations arising on the vesting of restricted stock awards and exercise of options. When we withhold these shares, we are required to remit to the appropriate taxing authorities the market price of the shares withheld, which could be deemed a purchase of the common shares by us on the date of withholding.

ITEM 5. Other Information

Securities Trading Plans of Directors and Officers

During the three months ended March 31, 2024, no directors or officers of the Company adopted or terminated a “Rule 10b5-1 trading arrangement” or “non-Rule 10b5-1 trading arrangement,” as defined in Item 408(a) and (c) of Regulation S-K.

34

Item 6. Exhibits

Incorporated by Reference
to the Exhibit Indicated Below
and to the Filing with the
Commission Indicated Below

Exhibit
Number

    

Description of Exhibits

    

Exhibit
Number

    

Filing or
File Number

3.1

Second Amended and Restated Certificate of Incorporation of the Registrant

3.1

333-24021

3.2

Certificate of Amendment dated May 21, 1998

3.2

1998 Form 10-K

3.3

Certificate of Amendment dated July 9, 2003

3.3

2003 Form 10-K

3.4

Certificate of Amendment dated May 20, 2016

3.1

May 20, 2016

Form 8-K

3.5

Amended and Restated Bylaws of Comfort Systems USA, Inc.

3.1

March 25, 2016

Form 8-K

31.1*

Certification of Chief Executive Officer pursuant to Section 302 of the Sarbanes-Oxley Act of 2002

31.2*

Certification of Chief Financial Officer pursuant to Section 302 of the Sarbanes-Oxley Act of 2002

32.1**

Certification of Chief Executive Officer pursuant to Section 906 of the Sarbanes-Oxley Act of 2002

32.2**

Certification of Chief Financial Officer pursuant to Section 906 of the Sarbanes-Oxley Act of 2002

101.INS*

Inline XBRL Instance Document

101.SCH*

Inline XBRL Taxonomy Extension Schema Document

101.CAL*

Inline XBRL Taxonomy Extension Calculation Linkbase Document

101.DEF*

Inline XBRL Taxonomy Extension Definition Linkbase Document

101.LAB*

Inline XBRL Taxonomy Extension Label Linkbase Document

101.PRE*

Inline XBRL Taxonomy Extension Presentation Linkbase

104

Cover Page Interactive Data File (the cover page XBRL tags are embedded in the Inline XBRL document)

* Filed herewith.

** Furnished herewith.

35

SIGNATURES

Pursuant to the requirements of the Securities Exchange Act of 1934, the Registrant has duly caused this report to be signed on its behalf by the undersigned thereunto duly authorized.

Comfort Systems USA, Inc.

April 25, 2024

By:

/s/ Brian E. Lane

Brian E. Lane

President, Chief Executive Officer and Director

April 25, 2024

By:

/s/ William George

William George

Executive Vice President and Chief Financial Officer

April 25, 2024

By:

/s/ Julie S. Shaeff

Julie S. Shaeff

Senior Vice President and Chief Accounting Officer

36

EX-31.1 2 fix-20240331xex31d1.htm EX-31.1

Exhibit 31.1

CERTIFICATION OF CHIEF EXECUTIVE OFFICER

Pursuant to Section 302 of the Sarbanes Oxley Act of 2002

I, Brian E. Lane, certify that:

1.           I have reviewed this quarterly report on Form 10-Q of Comfort Systems USA, Inc.;

2.           Based on my knowledge, this report does not contain any untrue statement of a material fact or omit to state a material fact necessary to make the statements made, in light of the circumstances under which such statements were made, not misleading with respect to the period covered by this report;

3.           Based on my knowledge, the financial statements, and other financial information included in this report, fairly present in all material respects the financial condition, results of operations and cash flows of the registrant as of, and for, the periods presented in this report;

4.           The registrant’s other certifying officer(s) and I are responsible for establishing and maintaining disclosure controls and procedures (as defined in Exchange Act Rules 13a-15(e) and 15d-15(e)) and internal control over financial reporting (as defined in Exchange Act Rules 13a-15(f) and 15d-15(f)) for the registrant and have:

a)           designed such disclosure controls and procedures, or caused such disclosure controls and procedures to be designed under our supervision, to ensure that material information relating to the registrant, including its consolidated subsidiaries, is made known to us by others within those entities, particularly during the period in which this report is being prepared;

b)           designed such internal control over financial reporting, or caused such internal control over financial reporting to be designed under our supervision, to provide reasonable assurance regarding the reliability of financial reporting and the preparation of financial statements for external purposes in accordance with generally accepted accounting principles;

c)           evaluated the effectiveness of the registrant’s disclosure controls and procedures and presented in this report our conclusions about the effectiveness of the disclosure controls and procedures, as of the end of the period covered by this report based on such evaluation; and

d)           disclosed in this report any change in the registrant’s internal control over financial reporting that occurred during the registrant’s most recent fiscal quarter (the registrant’s fourth fiscal quarter in the case of an annual report) that has materially affected, or is reasonably likely to materially affect, the registrant’s internal control over financial reporting; and

5.           The registrant’s other certifying officer(s) and I have disclosed, based on our most recent evaluation of internal control over financial reporting, to the registrant’s auditors and the audit committee of the registrant’s board of directors (or persons performing the equivalent functions):

a)           all significant deficiencies and material weaknesses in the design or operation of internal control over financial reporting which are reasonably likely to adversely affect the registrant’s ability to record, process, summarize and report financial information; and

b)           any fraud, whether or not material, that involves management or other employees who have a significant role in the registrant’s internal control over financial reporting.

Date: April 25, 2024

/s/ Brian E. Lane

Brian E. Lane
President and Chief Executive Officer


EX-31.2 3 fix-20240331xex31d2.htm EX-31.2

Exhibit 31.2

CERTIFICATION OF CHIEF FINANCIAL OFFICER

Pursuant to Section 302 of the Sarbanes-Oxley Act of 2002

I, William George, certify that:

1.           I have reviewed this quarterly report on Form 10-Q of Comfort Systems USA, Inc.;

2.           Based on my knowledge, this report does not contain any untrue statement of a material fact or omit to state a material fact necessary to make the statements made, in light of the circumstances under which such statements were made, not misleading with respect to the period covered by this report;

3.           Based on my knowledge, the financial statements, and other financial information included in this report, fairly present in all material respects the financial condition, results of operations and cash flows of the registrant as of, and for, the periods presented in this report;

4.           The registrant’s other certifying officer(s) and I are responsible for establishing and maintaining disclosure controls and procedures (as defined in Exchange Act Rules 13a-15(e) and 15d-15(e)) and internal control over financial reporting (as defined in Exchange Act Rules 13a-15(f) and 15d-15(f)) for the registrant and have:

a.           designed such disclosure controls and procedures, or caused such disclosure controls and procedures to be designed under our supervision, to ensure that material information relating to the registrant, including its consolidated subsidiaries, is made known to us by others within those entities, particularly during the period in which this report is being prepared;

b.           designed such internal control over financial reporting, or caused such internal control over financial reporting to be designed under our supervision, to provide reasonable assurance regarding the reliability of financial reporting and the preparation of financial statements for external purposes in accordance with generally accepted accounting principles;

c.           evaluated the effectiveness of the registrant’s disclosure controls and procedures and presented in this report our conclusions about the effectiveness of the disclosure controls and procedures, as of the end of the period covered by this report based on such evaluation; and

d.           disclosed in this report any change in the registrant’s internal control over financial reporting that occurred during the registrant’s most recent fiscal quarter (the registrant’s fourth fiscal quarter in the case of an annual report) that has materially affected, or is reasonably likely to materially affect, the registrant’s internal control over financial reporting; and

5.           The registrant’s other certifying officer(s) and I have disclosed, based on our most recent evaluation of internal control over financial reporting, to the registrant’s auditors and the audit committee of the registrant’s board of directors (or persons performing the equivalent functions):

a.           all significant deficiencies and material weaknesses in the design or operation of internal control over financial reporting which are reasonably likely to adversely affect the registrant’s ability to record, process, summarize and report financial information; and

b.           any fraud, whether or not material, that involves management or other employees who have a significant role in the registrant’s internal control over financial reporting.

/s/ William George

Date: April 25, 2024

William George
Executive Vice President and Chief Financial Officer


EX-32.1 4 fix-20240331xex32d1.htm EX-32.1

Exhibit 32.1

CERTIFICATION PURSUANT TO

18 U.S.C. SECTION 1350

AS ADOPTED PURSUANT TO

SECTION 906 OF THE SARBANES-OXLEY ACT OF 2002*

In connection with the Quarterly Report of Comfort Systems USA, Inc. (the “Company”) on Form 10-Q for the quarter ended March 31, 2024, as filed with the Securities and Exchange Commission on the date hereof (the “Report”), I, Brian E. Lane, President and Chief Executive Officer of the Company, certify, pursuant to 18 U.S.C. §1350, as adopted pursuant to Section 906 of the Sarbanes-Oxley Act of 2002, that:

1.           The Report fully complies with the requirements of Section 13(a) or 15(d), as applicable, of the Securities Exchange Act of 1934; and

2.           The information contained in the Report fairly presents, in all material respects, the financial condition and result of operations of the Company.

Date: April 25, 2024

/s/ Brian E. Lane

Brian E. Lane
President and Chief Executive Officer


*            A signed original of this written statement required by Section 906 has been provided to the Company and will be retained by the Company and furnished to the Securities and Exchange Commission or its staff upon request.


EX-32.2 5 fix-20240331xex32d2.htm EX-32.2

Exhibit 32.2

CERTIFICATION PURSUANT TO

18 U.S.C. SECTION 1350

AS ADOPTED PURSUANT TO

SECTION 906 OF THE SARBANES-OXLEY ACT OF 2002*

In connection with the Quarterly Report of Comfort Systems USA, Inc. (the “Company”) on Form 10-Q for the quarter ended March 31, 2024, as filed with the Securities and Exchange Commission on the date hereof (the “Report”), I, William George, Executive Vice President and Chief Financial Officer of the Company, certify, pursuant to 18 U.S.C. §1350, as adopted pursuant to Section 906 of the Sarbanes-Oxley Act of 2002, that:

1.           The Report fully complies with the requirements of Section 13(a) or 15(d), as applicable, of the Securities Exchange Act of 1934; and

2.           The information contained in the Report fairly presents, in all material respects, the financial condition and result of operations of the Company.

Date: April 25, 2024

/s/ William George

William George
Executive Vice President and Chief Financial Officer


*            A signed original of this written statement required by Section 906 has been provided to the Company and will be retained by the Company and furnished to the Securities and Exchange Commission or its staff upon request.


EX-101.SCH 6 fix-20240331.xsd EX-101.SCH 99900 - Disclosure - Standard And Custom Axis Domain Defaults link:presentationLink link:calculationLink link:definitionLink 00100 - Statement - CONSOLIDATED BALANCE SHEETS link:presentationLink link:calculationLink link:definitionLink 00200 - Statement - CONSOLIDATED STATEMENTS OF OPERATIONS link:presentationLink link:calculationLink link:definitionLink 00400 - Statement - CONSOLIDATED STATEMENTS OF CASH FLOWS link:presentationLink link:calculationLink link:definitionLink 40501 - Disclosure - Acquisitions (Details) link:presentationLink link:calculationLink link:definitionLink 40602 - Disclosure - Goodwill and Identifiable Intangible Assets, Net - Identifiable Intangible Assets, Net (Details) link:presentationLink link:calculationLink link:definitionLink 40701 - Disclosure - Debt Obligations (Details) link:presentationLink link:calculationLink link:definitionLink 40802 - Disclosure - Leases - Summary of Operating Lease Assets and Liabilities (Details) link:presentationLink link:calculationLink link:definitionLink 40803 - Disclosure - Leases - Maturities of Lease Liabilities (Details) link:presentationLink link:calculationLink link:definitionLink 41001 - Disclosure - Stockholders' Equity - Number of Shares (Details) link:presentationLink link:calculationLink link:definitionLink 00090 - Document - Document and Entity Information link:presentationLink link:calculationLink link:definitionLink 00105 - Statement - CONSOLIDATED BALANCE SHEETS (Parenthetical) link:presentationLink link:calculationLink link:definitionLink 00300 - Statement - CONSOLIDATED STATEMENTS OF STOCKHOLDERS' EQUITY link:presentationLink link:calculationLink link:definitionLink 10101 - Disclosure - Business and Organization link:presentationLink link:calculationLink link:definitionLink 10201 - Disclosure - Summary of Significant Accounting Policies and Estimates link:presentationLink link:calculationLink link:definitionLink 10301 - Disclosure - Revenue from Contracts with Customers link:presentationLink link:calculationLink link:definitionLink 10401 - Disclosure - Fair Value Measurements link:presentationLink link:calculationLink link:definitionLink 10501 - Disclosure - Acquisitions link:presentationLink link:calculationLink link:definitionLink 10601 - Disclosure - Goodwill and Identifiable Intangible Assets, Net link:presentationLink link:calculationLink link:definitionLink 10701 - Disclosure - Debt Obligations link:presentationLink link:calculationLink link:definitionLink 10801 - Disclosure - Leases link:presentationLink link:calculationLink link:definitionLink 10901 - Disclosure - Commitments and Contingencies link:presentationLink link:calculationLink link:definitionLink 11001 - Disclosure - Stockholders' Equity link:presentationLink link:calculationLink link:definitionLink 20202 - Disclosure - Summary of Significant Accounting Policies and Estimates (Policies) link:presentationLink link:calculationLink link:definitionLink 30303 - Disclosure - Revenue from Contracts with Customers (Tables) link:presentationLink link:calculationLink link:definitionLink 30403 - Disclosure - Fair Value Measurements (Tables) link:presentationLink link:calculationLink link:definitionLink 30503 - Disclosure - Acquisitions (Tables) link:presentationLink link:calculationLink link:definitionLink 30603 - Disclosure - Goodwill and Identifiable Intangible Assets, Net (Tables) link:presentationLink link:calculationLink link:definitionLink 30703 - Disclosure - Debt Obligations (Tables) link:presentationLink link:calculationLink link:definitionLink 30803 - Disclosure - Leases (Tables) link:presentationLink link:calculationLink link:definitionLink 31003 - Disclosure - Stockholders' Equity (Tables) link:presentationLink link:calculationLink link:definitionLink 40201 - Disclosure - Summary of Significant Accounting Policies and Estimates - Income Taxes (Details) link:presentationLink link:calculationLink link:definitionLink 40302 - Disclosure - Revenue from Contracts with Customers - Disaggregation of Revenue (Details) link:presentationLink link:calculationLink link:definitionLink 40304 - Disclosure - Revenue from Contracts with Customers - Remaining Performance Obligations (Details) link:presentationLink link:calculationLink link:definitionLink 40304 - Disclosure - Revenue from Contracts with Customers - Remaining Performance Obligations Default (Details) link:presentationLink link:calculationLink link:definitionLink 40401 - Disclosure - Fair Value Measurements (Details) link:presentationLink link:calculationLink link:definitionLink 40502 - Disclosure - Acquisitions - Acquired Intangible Assets (Details) link:presentationLink link:calculationLink link:definitionLink 40503 - Disclosure - Acquisitions - Other Acquisitions (Details) link:presentationLink link:calculationLink link:definitionLink 40601 - Disclosure - Goodwill and Identifiable Intangible Assets, Net - Changes in Carrying Amount of Goodwill (Details) link:presentationLink link:calculationLink link:definitionLink 40701 - Disclosure - Debt Obligations (Details) link:presentationLink link:calculationLink link:definitionLink 40702 - Disclosure - Debt Obligations - Other (Details) link:presentationLink link:calculationLink link:definitionLink 40703 - Disclosure - Debt Obligations - Notes to Former Owners (Details) link:presentationLink link:calculationLink link:definitionLink 40801 - Disclosure - Leases (Details) link:presentationLink link:calculationLink link:definitionLink 40901 - Disclosure - Commitments and Contingencies (Details) link:presentationLink link:calculationLink link:definitionLink 41002 - Disclosure - Stockholders' Equity - Incentive and Other (Details) link:presentationLink link:calculationLink link:definitionLink 41101 - Disclosure - Segment Information (Details) link:presentationLink link:calculationLink link:definitionLink 00305 - Statement - CONSOLIDATED STATEMENTS OF STOCKHOLDERS' EQUITY (Parenthetical) link:presentationLink link:calculationLink link:definitionLink 11101 - Disclosure - Segment Information link:presentationLink link:calculationLink link:definitionLink 31103 - Disclosure - Segment Information (Tables) link:presentationLink link:calculationLink link:definitionLink 40202 - Disclosure - Summary of Significant Accounting Policies and Estimates - Investments (Details) link:presentationLink link:calculationLink link:definitionLink 40301 - Disclosure - Revenue from Contracts with Customers - Narratives (Details) link:presentationLink link:calculationLink link:definitionLink 40303 - Disclosure - Revenue from Contracts with Customers - Contract Assets and Liabilities (Details) link:presentationLink link:calculationLink link:definitionLink EX-101.CAL 7 fix-20240331_cal.xml EX-101.CAL EX-101.DEF 8 fix-20240331_def.xml EX-101.DEF EX-101.LAB 9 fix-20240331_lab.xml EX-101.LAB EX-101.PRE 10 fix-20240331_pre.xml EX-101.PRE XML 12 R1.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Document and Entity Information - shares
3 Months Ended
Mar. 31, 2024
Apr. 19, 2024
Cover [Abstract]    
Document Type 10-Q  
Document Quarterly Report true  
Document Period End Date Mar. 31, 2024  
Document Transition Report false  
Entity File Number 1-13011  
Entity Registrant Name COMFORT SYSTEMS USA, INC.  
Entity Incorporation, State or Country Code DE  
Entity Tax Identification Number 76-0526487  
Entity Address, Address Line One 675 Bering Drive  
Entity Address, Address Line Two Suite 400  
Entity Address, City or Town Houston  
Entity Address, State or Province TX  
Entity Address, Postal Zip Code 77057  
City Area Code 713  
Local Phone Number 830-9600  
Title of 12(b) Security Common Stock, $0.01 par value  
Trading Symbol FIX  
Security Exchange Name NYSE  
Entity Current Reporting Status Yes  
Entity Interactive Data Current Yes  
Entity Filer Category Large Accelerated Filer  
Entity Small Business false  
Entity Emerging Growth Company false  
Entity Shell Company false  
Entity Common Stock, Shares Outstanding   35,721,909
Entity Central Index Key 0001035983  
Document Fiscal Year Focus 2024  
Document Fiscal Period Focus Q1  
Current Fiscal Year End Date --12-31  
Amendment Flag false  
XML 13 R2.htm IDEA: XBRL DOCUMENT v3.24.1.u1
CONSOLIDATED BALANCE SHEETS - USD ($)
$ in Thousands
Mar. 31, 2024
Dec. 31, 2023
CURRENT ASSETS:    
Cash and cash equivalents $ 100,792 $ 205,150
Billed accounts receivable, less allowance for credit losses of $11,949 and $11,926, respectively 1,570,643 1,318,926
Unbilled accounts receivable, less allowance for credit losses of $929 and $850, respectively 76,975 72,774
Other receivables, less allowance for credit losses of $519 and $522, respectively 136,100 166,319
Inventories 71,061 65,538
Prepaid expenses and other 62,500 54,309
Costs and estimated earnings in excess of billings, less allowance for credit losses of $108 and $79, respectively 30,118 28,084
Total current assets 2,048,189 1,911,100
PROPERTY AND EQUIPMENT, NET 226,197 208,568
LEASE RIGHT-OF-USE ASSET 227,157 205,712
GOODWILL 862,934 666,834
IDENTIFIABLE INTANGIBLE ASSETS, NET 489,884 280,397
DEFERRED TAX ASSETS 31,928 17,723
OTHER NONCURRENT ASSETS 16,540 15,245
Total assets 3,902,829 3,305,579
CURRENT LIABILITIES:    
Current maturities of long-term debt 12,885 4,867
Accounts payable 557,859 419,962
Accrued compensation and benefits 153,859 169,136
Billings in excess of costs and estimated earnings and deferred revenue 1,131,928 909,538
Accrued self-insurance 29,712 27,774
Other current liabilities 253,416 189,928
Total current liabilities 2,139,659 1,721,205
LONG-TERM DEBT 77,004 39,345
LEASE LIABILITIES 209,717 188,136
DEFERRED TAX LIABILITIES 1,120 1,120
OTHER LONG-TERM LIABILITIES 102,793 77,944
Total liabilities 2,530,293 2,027,750
COMMITMENTS AND CONTINGENCIES
STOCKHOLDERS' EQUITY:    
Preferred stock, $.01 par, 5,000,000 shares authorized, none issued and outstanding
Common stock, $.01 par, 102,969,912 shares authorized, 41,123,365 and 41,123,365 shares issued, respectively 411 411
Treasury stock, at cost, 5,428,501 and 5,438,625 shares, respectively (211,518) (209,807)
Additional paid-in capital 348,582 339,562
Retained earnings 1,235,061 1,147,663
Total stockholders' equity 1,372,536 1,277,829
Total liabilities and stockholders' equity $ 3,902,829 $ 3,305,579
XML 14 R3.htm IDEA: XBRL DOCUMENT v3.24.1.u1
CONSOLIDATED BALANCE SHEETS (Parenthetical) - USD ($)
$ in Thousands
Mar. 31, 2024
Dec. 31, 2023
CONSOLIDATED BALANCE SHEETS    
Billed accounts receivable, allowance for credit losses (in dollars) $ 11,949 $ 11,926
Unbilled accounts receivable, allowance for credit losses (in dollars) 929 850
Other receivables, allowance for credit losses (in dollars) 519 522
Costs and estimated earnings in excess of billings, allowance for credit losses (in dollars) $ 108 $ 79
Preferred stock, par value (in dollars per share) $ 0.01 $ 0.01
Preferred stock, shares authorized 5,000,000 5,000,000
Preferred stock, shares issued 0 0
Preferred stock, shares outstanding 0 0
Common stock, par value (in dollars per share) $ 0.01 $ 0.01
Common stock, shares authorized 102,969,912 102,969,912
Common stock, shares issued 41,123,365 41,123,365
Treasury stock, shares 5,428,501 5,438,625
XML 15 R4.htm IDEA: XBRL DOCUMENT v3.24.1.u1
CONSOLIDATED STATEMENTS OF OPERATIONS - USD ($)
shares in Thousands, $ in Thousands
3 Months Ended
Mar. 31, 2024
Mar. 31, 2023
CONSOLIDATED STATEMENTS OF OPERATIONS    
REVENUE $ 1,537,016 $ 1,174,640
COST OF SERVICES 1,239,653 969,235
Gross profit 297,363 205,405
SELLING, GENERAL AND ADMINISTRATIVE EXPENSES 162,723 135,032
GAIN ON SALE OF ASSETS (820) (512)
Operating income 135,460 70,885
OTHER INCOME (EXPENSE):    
Interest income 1,603 1,397
Interest expense (1,633) (4,076)
Changes in the fair value of contingent earn-out obligations (12,491) (2,382)
Other 117 1
Other income (expense) (12,404) (5,060)
INCOME BEFORE INCOME TAXES 123,056 65,825
PROVISION FOR INCOME TAXES 26,737 8,609
NET INCOME $ 96,319 $ 57,216
INCOME PER SHARE:    
Basic $ 2.70 $ 1.60
Diluted $ 2.69 $ 1.59
SHARES USED IN COMPUTING INCOME PER SHARE:    
Basic 35,739 35,812
Diluted 35,828 35,907
XML 16 R5.htm IDEA: XBRL DOCUMENT v3.24.1.u1
CONSOLIDATED STATEMENTS OF STOCKHOLDERS' EQUITY - USD ($)
$ in Thousands
Common Stock
Treasury Stock
Additional Paid-In Capital
Retained Earnings
Total
BALANCE at Dec. 31, 2022 $ 411 $ (187,212) $ 332,080 $ 854,644 $ 999,923
BALANCE (in shares) at Dec. 31, 2022 41,123,365        
BALANCE (in shares) at Dec. 31, 2022   (5,362,224)      
Increase (Decrease) in Stockholders' Equity          
Net income       57,216 57,216
Issuance of Stock:          
Issuance of shares for options exercised   $ 36 (18)   18
Issuance of shares for options exercised (in shares)   1,000      
Issuance of restricted stock & performance stock   $ 1,131 3,384   4,515
Issuance of restricted stock & performance stock (in shares)   31,960      
Shares received in lieu of tax withholding on vested stock   $ (1,798)     (1,798)
Shares received in lieu of tax withholding on vested stock (in shares)   (12,728)      
Stock-based compensation     3,438   3,438
Dividends       (6,254) (6,254)
Share repurchase   $ (3,568)     (3,568)
Share repurchase (in shares)   (29,400)      
BALANCE at Mar. 31, 2023 $ 411 $ (191,411) 338,884 905,606 1,053,490
BALANCE (in shares) at Mar. 31, 2023 41,123,365        
BALANCE (in shares) at Mar. 31, 2023   (5,371,392)      
BALANCE at Dec. 31, 2023 $ 411 $ (209,807) 339,562 1,147,663 $ 1,277,829
BALANCE (in shares) at Dec. 31, 2023 41,123,365       41,123,365
BALANCE (in shares) at Dec. 31, 2023   (5,438,625)     5,438,625
Increase (Decrease) in Stockholders' Equity          
Net income       96,319 $ 96,319
Issuance of Stock:          
Issuance of shares for options exercised   $ 53 (26)   27
Issuance of shares for options exercised (in shares)   1,369      
Issuance of restricted stock & performance stock   $ 657 4,696   5,353
Issuance of restricted stock & performance stock (in shares)   17,018      
Shares received in lieu of tax withholding on vested stock   $ (2,126)     (2,126)
Shares received in lieu of tax withholding on vested stock (in shares)   (6,763)      
Stock-based compensation     4,350   4,350
Dividends       (8,921) (8,921)
Share repurchase   $ (295)     (295)
Share repurchase (in shares)   (1,500)      
BALANCE at Mar. 31, 2024 $ 411 $ (211,518) $ 348,582 $ 1,235,061 $ 1,372,536
BALANCE (in shares) at Mar. 31, 2024 41,123,365       41,123,365
BALANCE (in shares) at Mar. 31, 2024   (5,428,501)     5,428,501
XML 17 R6.htm IDEA: XBRL DOCUMENT v3.24.1.u1
CONSOLIDATED STATEMENTS OF STOCKHOLDERS' EQUITY (Parenthetical) - $ / shares
3 Months Ended
Mar. 31, 2024
Mar. 31, 2023
CONSOLIDATED STATEMENTS OF STOCKHOLDERS' EQUITY    
Dividends (per share) $ 0.25 $ 0.175
XML 18 R7.htm IDEA: XBRL DOCUMENT v3.24.1.u1
CONSOLIDATED STATEMENTS OF CASH FLOWS - USD ($)
$ in Thousands
3 Months Ended
Mar. 31, 2024
Mar. 31, 2023
CASH FLOWS FROM OPERATING ACTIVITIES:    
Net income $ 96,319 $ 57,216
Adjustments to reconcile net income to net cash provided by operating activities-    
Amortization of identifiable intangible assets 23,913 10,331
Depreciation expense 11,254 9,187
Change in right-of-use assets 7,981 5,357
Bad debt expense 356 946
Deferred tax provision (benefit) (14,205) (27,537)
Amortization of debt financing costs 171 169
Gain on sale of assets (820) (512)
Changes in the fair value of contingent earn-out obligations 12,491 2,382
Stock-based compensation 7,414 6,141
(Increase) decrease in-    
Receivables, net (125,582) (125,937)
Inventories (5,293) (1,386)
Prepaid expenses and other current assets (4,499) (911)
Costs and estimated earnings in excess of billings and unbilled accounts receivable (4,822) (2,281)
Other noncurrent assets (280) (298)
Increase (decrease) in-    
Accounts payable and accrued liabilities 118,757 28,652
Billings in excess of costs and estimated earnings and deferred revenue 23,307 159,140
Other long-term liabilities 95 6,250
Net cash provided by operating activities 146,557 126,909
CASH FLOWS FROM INVESTING ACTIVITIES:    
Purchases of property and equipment (24,952) (16,520)
Proceeds from sales of property and equipment 1,014 622
Cash paid for acquisitions, net of cash acquired (196,670) (53,047)
Payments for investments (1,040)  
Net cash used in investing activities (221,648) (68,945)
CASH FLOWS FROM FINANCING ACTIVITIES:    
Proceeds from revolving credit facility 162,000 85,000
Payments on revolving credit facility (162,000) (140,000)
Proceeds from other debt 640  
Payments on other debt (22) (16)
Payments of dividends to stockholders (8,921) (6,254)
Share repurchase (295) (3,568)
Shares received in lieu of tax withholding (2,126) (1,798)
Proceeds from exercise of options 27 18
Payments for contingent consideration arrangements (18,570)  
Net cash used in financing activities (29,267) (66,618)
NET INCREASE (DECREASE) IN CASH AND CASH EQUIVALENTS (104,358) (8,654)
CASH AND CASH EQUIVALENTS, beginning of period 205,150 57,214
CASH AND CASH EQUIVALENTS, end of period $ 100,792 $ 48,560
XML 19 R8.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Business and Organization
3 Months Ended
Mar. 31, 2024
Business and Organization  
Business and Organization

1. Business and Organization

Comfort Systems USA, Inc., a Delaware corporation, provides comprehensive mechanical and electrical contracting services, which principally includes heating, ventilation and air conditioning (“HVAC”), plumbing, electrical, piping and controls, as well as off-site construction, monitoring and fire protection. We build, install, maintain, repair and replace mechanical, electrical and plumbing (“MEP”) systems throughout the United States. The terms “Comfort Systems,” “we,” “us,” or the “Company,” refer to Comfort Systems USA, Inc. or Comfort Systems USA, Inc. and its consolidated subsidiaries, as appropriate in the context.

XML 20 R9.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Summary of Significant Accounting Policies and Estimates
3 Months Ended
Mar. 31, 2024
Summary of Significant Accounting Policies and Estimates  
Summary of Significant Accounting Policies and Estimates

2. Summary of Significant Accounting Policies and Estimates

Basis of Presentation

These interim statements should be read in conjunction with the historical Consolidated Financial Statements and related notes of Comfort Systems included in the Annual Report on Form 10-K as filed with the Securities and Exchange Commission (“SEC”) for the year ended December 31, 2023 (the “Form 10-K”).

The accompanying unaudited consolidated financial statements were prepared using generally accepted accounting principles for interim financial information and the instructions to Form 10-Q and applicable rules of Regulation S-X of the SEC. Accordingly, these financial statements do not include all the footnotes required by generally accepted accounting principles for complete financial statements and should be read in conjunction with the Form 10-K. We believe all adjustments necessary for a fair presentation of these interim statements have been included and are of a normal and recurring nature. The results of operations for interim periods are not necessarily indicative of the results for the full fiscal year.

Use of Estimates

The preparation of financial statements in conformity with generally accepted accounting principles requires the use of estimates and assumptions by management in determining the reported amounts of assets and liabilities, revenue and expenses and disclosures regarding contingent assets and liabilities. Actual results could differ from those estimates. The most significant estimates used in our financial statements affect revenue and cost recognition for construction contracts, self-insurance accruals, accounting for income taxes, fair value accounting for acquisitions and the quantification of fair value for reporting units in connection with our goodwill impairment testing.

Recent Accounting Pronouncements

Recent Accounting Pronouncements Not Yet Adopted

In November 2023, the Financial Accounting Standards Board (“FASB”) issued ASU 2023-07, “Segment Reporting (Topic 280): Improvements to Reportable Segment Disclosures.” This standard requires entities to disclose, on an annual and interim basis, significant segment expenses that are regularly provided to the chief decision maker and included within each reported measure of segment profit and loss. ASU 2023-07 is effective for fiscal years beginning after December 15, 2023, and interim periods within fiscal years beginning after December 15, 2024. Early adoption is permitted. We are currently evaluating the impact ASU 2023-07 will have on our disclosures; however, the standard will not have an impact on our consolidated financial position, results of operations or cash flows.

In December 2023, the FASB issued ASU 2023-09, “Income Taxes (Topic 740): Improvements to Income Tax Disclosures.” This standard requires entities to disclose more detailed information in the reconciliation of their statutory

tax rate to their effective tax rate. The standard also requires entities to make additional disclosures on income taxes paid as well as on certain income statement-related disclosures. ASU 2023-09 is effective for fiscal years beginning after December 15, 2024. Early adoption is permitted. We are currently evaluating the impact ASU 2023-09 will have on our disclosures; however, the standard will not have an impact on our consolidated financial position, results of operations or cash flows.

Revenue Recognition

We recognize revenue over time for all of our services as we perform them because (i) control continuously transfers to that customer as work progresses, and (ii) we have the right to bill the customer as costs are incurred. The customer typically controls the work in process, as evidenced either by contractual termination clauses or by our rights to payment for work performed to date, plus a reasonable profit, for delivery of products or services that do not have an alternative use to the Company.

For the reasons listed above, revenue is recognized based on the extent of progress towards completion of the performance obligation. The selection of the method to measure progress towards completion requires judgment and is based on the nature of the products or services to be provided. We generally use a cost-to-cost input method to measure our progress towards satisfaction of the performance obligation for our contracts, as it best depicts the transfer of assets to the customer that occurs as we incur costs on our contracts. Under the cost-to-cost input method, the extent of progress towards completion is measured based on the ratio of costs incurred to date to the total estimated costs at completion of the performance obligation. Revenue, including estimated fees or profits, is recorded proportionally as costs are incurred. Costs to fulfill include labor, materials, subcontractors’ costs, other direct costs and an allocation of indirect costs.

For a small portion of our business in which our services are delivered in the form of service maintenance agreements for existing systems to be repaired and maintained, as opposed to constructed, our performance obligation is to maintain the customer’s mechanical system for a specific period of time. Similar to construction jobs, we recognize revenue over time; however, for service maintenance agreements in which the full cost to provide services may not be known, we generally use an input method to recognize revenue, which is based on the amount of time we have provided our services out of the total time we have been contracted to perform those services. Our revenue recognition policy is further discussed in Note 3 “Revenue from Contracts with Customers.”

Accounts Receivable and Allowance for Credit Losses

We are required to estimate and record the expected credit losses over the contractual life of our financial assets measured at amortized cost, including billed and unbilled accounts receivable, other receivables and contract assets. Accounts receivable include amounts from work completed in which we have billed or have an unconditional right to bill our customers. Our trade receivables are contractually due in less than a year.

We estimate our credit losses using a loss-rate method for each of our identified portfolio segments. Our portfolio segments are construction, service and other. While our construction and service financial assets are often with the same subset of customers and industries, our construction financial assets will generally have a lower loss-rate than service financial assets due to lien rights, which we are more likely to have on construction jobs. These lien rights result in lower credit loss expenses on average compared to receivables that do not have lien rights. Financial assets classified as other include receivables that are not related to our core revenue producing activities, such as receivables related to our acquisition activity from former owners, our vendor rebate program or receivables for estimated losses in excess of our insurance deductible, which are accrued with a corresponding accrued insurance liability.

Loss rates for our portfolios are based on numerous factors, including our history of credit loss expense by portfolio, the financial strength of our customers and counterparties in each portfolio, the aging of our receivables, our expectation of likelihood of payment, macroeconomic trends in the U.S. and the current and forecasted nonresidential construction market trends in the U.S.

In addition to the loss-rate calculations discussed above, we also record allowance for credit losses for specific receivables that are deemed to have a higher risk profile than the rest of the respective pool of receivables (e.g., when we hold concerns about a specific customer going bankrupt and no longer being able to pay the receivables due to us).

Unbilled Accounts Receivable

Unbilled accounts receivable are amounts due to us that we have earned under a contract where our right to payment is unconditional. A right to consideration is unconditional if only the passage of time is required before payment of the consideration is due.

Income Taxes

We conduct business throughout the United States in virtually all fifty states. Our effective tax rate changes based upon our relative profitability, or lack thereof, in the federal and various state jurisdictions with differing tax rates and rules. In addition, discrete items such as tax law changes, judgments and legal structures, can impact our effective tax rate. These items can also include the tax treatment for impairment of goodwill and other intangible assets, changes in fair value of acquisition-related assets and liabilities, uncertain tax positions, and accounting for losses associated with underperforming operations.

The Inflation Reduction Act was enacted on August 16, 2022. This law, among other provisions, provides a corporate alternative minimum tax on adjusted financial statement income over $1 billion, which is effective for tax years beginning after December 31, 2022, and a 1% excise tax on net corporate stock repurchases after December 31, 2022. The impact of the excise tax is recorded in “Treasury Stock” within our Consolidated Balance Sheet. These provisions were not material to our current year overall financial results, financial position and cash flows.

In early September 2023, the IRS issued interim guidance addressing, together with other topics, the treatment of research and experimental (“R&E”) expenditures for taxpayers using the percentage of completion method to account for taxable income from long-term contracts. We have chosen to rely on such guidance beginning with the 2022 tax year, and the resultant reduction in taxable revenue offsets the deferral of tax deductions for R&E expenditures pursuant to the Tax Cuts and Jobs Act (2017) for the 2022 tax year. We filed our 2022 federal tax return in October 2023 requesting a refund of our $107.1 million overpayment, which has not been received as of March 31, 2024.

Financial Instruments

Our financial instruments consist of cash and cash equivalents, accounts receivable, other receivables, accounts payable and life insurance policies, for which we deem the carrying values approximate their fair value due to the short-term nature of these instruments, as well as notes to former owners and a revolving credit facility.

Investments

We have a $5.4 million investment in a construction-focused technology fund with a fair value that is not readily determinable and is recorded at cost. This investment is included in “Other Noncurrent Assets” in our Consolidated Balance Sheet and is reviewed quarterly for impairment. We did not recognize any impairments in the current year related to this investment.

XML 21 R10.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Revenue from Contracts with Customers
3 Months Ended
Mar. 31, 2024
Revenue from Contracts with Customers  
Revenue from Contracts with Customers

3. Revenue from Contracts with Customers

Revenue is recognized when control of the promised goods or services is transferred to our customers, in an amount that reflects the consideration to which we expect to be entitled in exchange for those goods or services. Sales-based taxes are excluded from revenue.

We provide mechanical and electrical contracting services. Our mechanical segment principally includes HVAC, plumbing, piping and controls, as well as off-site construction, monitoring and fire protection. Our electrical segment includes installation and servicing of electrical systems. We build, install, maintain, repair and replace products and systems throughout the United States. All of our revenue is recognized over time as we deliver goods and services to our customers. Revenue can be earned based on an agreed-upon fixed price or based on actual costs incurred, marked up at an agreed-upon percentage.

We account for a contract when: (i) it has approval and commitment from both parties, (ii) the rights of the parties are identified, (iii) payment terms are identified, (iv) the contract has commercial substance, and (v) collectability of consideration is probable. We consider the start of a project to be when the above criteria have been met and we either have written authorization from the customer to proceed or an executed contract.

We generally do not incur significant incremental costs related to obtaining or fulfilling a contract prior to the start of a project. On rare occasions, when significant pre-contract costs are incurred, they are capitalized and amortized over the life of the contract using a cost-to-cost input method to measure progress towards contract completion. We do not currently have any capitalized obtainment or fulfillment costs in our Consolidated Balance Sheet and have not incurred any impairment loss on such costs in the current year.

Due to the nature of the work required to be performed on many of our performance obligations, the estimation of total revenue and cost at completion (the process described below in more detail) is complex, subject to many variables and requires significant judgment. The consideration to which we are entitled on our long-term contracts may include both fixed and variable amounts. Variable amounts can either increase or decrease the transaction price. A common example of variable amounts that can either increase or decrease contract value are pending change orders that represent contract modifications for which a change in scope has been authorized or acknowledged by our customer, but the final adjustment to contract price is yet to be negotiated. Other examples of positive variable revenue include amounts awarded upon achievement of certain performance metrics, program milestones or cost of completion date targets and can be based upon customer discretion. Variable amounts can result in a deduction from contract revenue if we fail to meet stated performance requirements, such as complying with the construction schedule.

We include estimated amounts of variable consideration in the contract price to the extent it is probable that a significant reversal of cumulative revenue recognized will not occur when the uncertainty associated with the variable consideration is resolved. Our estimates of variable consideration and determination of whether to include estimated amounts in the contract price are based largely on an assessment of our anticipated performance and all information (historical, current and forecasted) that is reasonably available to us. We reassess the amount of variable consideration each accounting period until the uncertainty associated with the variable consideration is resolved. Changes in the assessed amount of variable consideration are accounted for prospectively as a cumulative adjustment to revenue recognized in the current period.

Contracts are often modified to account for changes in contract specifications and requirements. We consider contract modifications to exist when the modification either creates new, or changes the existing, enforceable rights and obligations. Most of our contract modifications are for goods or services that are not distinct from the existing performance obligation(s). The effect of a contract modification on the transaction price, and our measure of progress for the performance obligation to which it relates, is recognized as an adjustment to revenue (either as an increase or decrease) on a cumulative catch-up basis.

We have a Company-wide policy requiring periodic review of the Estimate at Completion in which management reviews the progress and execution of our performance obligations and estimated remaining obligations. As part of this process, management reviews information including, but not limited to, any outstanding key contract matters, progress towards completion and the related program schedule, identified risks and opportunities and the related changes in estimates of revenue and costs. The risks and opportunities include management's judgment about the ability and cost to achieve the schedule (e.g., the number and type of milestone events), technical requirements (e.g., a newly developed product versus a mature product) and other contract requirements. Management must make assumptions and estimates regarding labor productivity and availability, the complexity of the work to be performed, the availability of materials, the length of time to complete the performance obligation (e.g., to estimate increases in wages and prices for materials and related support cost allocations), execution by our subcontractors, the availability and timing of funding from our customer, and overhead cost rates, among other variables.

Based on this analysis, any adjustments to revenue, cost of services, and the related impact to operating income are recognized as necessary in the quarter when they become known. These adjustments may result from positive program performance if we determine we will be successful in mitigating risks surrounding the technical, schedule and cost aspects of those performance obligations or realizing related opportunities and may result in an increase in operating income during the performance of individual performance obligations. Likewise, if we determine we will not be

successful in mitigating these risks or realizing related opportunities, these adjustments may result in a decrease in operating income. Changes in estimates of revenue, cost of services and the related impact to operating income are recognized quarterly on a cumulative catch-up basis, meaning we recognize in the current period the cumulative effect of the changes on current and prior periods based on our progress towards complete satisfaction of a performance obligation. A significant change in one or more of these estimates could affect the profitability of one or more of our performance obligations. For projects in which estimates of total costs to be incurred on a performance obligation exceed total estimates of revenue to be earned, a provision for the entire loss on the performance obligation is recognized in the period the loss is determined.

In the first three months of 2024 and 2023, net revenue recognized from our performance obligations partially satisfied in the previous period positively impacted revenue by 4.1% and 2.2%, respectively, as a result of changes in estimates associated with performance obligations on contracts.

Disaggregation of Revenue

Our consolidated 2024 revenue was derived from contracts to provide service activities in the mechanical and electrical segments we serve. Refer to Note 11 “Segment Information” for additional information on our reportable segments. We disaggregate our revenue from contracts with customers by activity, customer type and service provided, as we believe it best depicts how the nature, amount, timing and uncertainty of our revenue and cash flows are affected by economic factors. See details in the following tables (dollars in thousands):

Three Months Ended March 31,

Revenue by Service Provided

   

2024

   

2023

   

Mechanical Segment

$

1,185,009

   

77.1

%

$

918,615

   

78.2

%

Electrical Segment

352,007

22.9

%

256,025

21.8

%

Total

$

1,537,016

100.0

%

$

1,174,640

100.0

%

Three Months Ended March 31,

Revenue by Type of Customer

2024

2023

 

Manufacturing

$

461,400

30.0

%

$

366,356

31.2

%

Technology

464,814

30.2

%

226,249

19.3

%

Healthcare

133,729

8.7

%

159,815

13.5

%

Education

133,983

8.7

%

110,253

9.4

%

Office Buildings

101,892

6.6

%

98,195

8.4

%

Retail, Restaurants and Entertainment

80,585

5.2

%

76,194

6.5

%

Government

87,801

5.7

%

64,415

5.5

%

Multi-Family and Residential

40,851

2.7

%

45,007

3.8

%

Other

31,961

2.2

%

28,156

2.4

%

Total

$

1,537,016

100.0

%

$

1,174,640

100.0

%

Three Months Ended March 31,

Revenue by Activity Type

2024

2023

 

New Construction

$

898,976

58.5

%

$

627,952

53.5

%

Existing Building Construction

390,369

25.4

%

309,483

26.3

%

Service Projects

104,114

6.8

%

103,105

8.8

%

Service Calls, Maintenance and Monitoring

143,557

9.3

%

134,100

11.4

%

Total

$

1,537,016

100.0

%

$

1,174,640

100.0

%

Contract Assets and Liabilities

Contract assets include unbilled amounts typically resulting from sales under long term contracts when the cost-to-cost method of revenue recognition is used, revenue recognized exceeds the amount billed to the customer and right to payment is conditional or subject to completing a milestone, such as a phase of the project. Contract assets are not considered to have a significant financing component, as they are intended to protect the customer in the event that we do not perform our obligations under the contract.

Contract liabilities consist of advance payments and billings in excess of revenue recognized. Advanced payments from customers related to work not yet started are classified as deferred revenue. Contract liabilities are not considered to have a significant financing component, as they are used to meet working capital requirements that are generally higher in the early stages of a contract and are intended to protect us from the other party failing to meet its obligations under the contract. Our contract assets and liabilities are reported in a net position on a contract-by-contract basis at the end of each reporting period.

Contract assets and liabilities in the Consolidated Balance Sheet consisted of the following amounts as of March 31, 2024 and December 31, 2023 (in thousands):

March 31, 2024

December 31, 2023

Contract assets:

Costs and estimated earnings in excess of billings, less allowance for credit losses

$

30,118

$

28,084

Contract liabilities:

Billings in excess of costs and estimated earnings and deferred revenue

$

1,131,928

$

909,538

In the first three months of 2024 and 2023, we recognized revenue of $547.5 million and $341.9 million related to our contract liabilities at January 1, 2024 and January 1, 2023, respectively.

We did not have any impairment losses recognized on our receivables or contract assets in the first three months of 2024 and 2023.

Remaining Performance Obligations

Remaining construction performance obligations represent the remaining transaction price of firm orders for which work has not been performed and exclude unexercised contract options. As of March 31, 2024, the aggregate amount of the transaction price allocated to remaining performance obligations was $5.91 billion. The Company expects to recognize revenue on approximately 65-75% of the remaining performance obligations over the next 12 months, with the remaining recognized thereafter. Our service maintenance agreements are generally one-year renewable agreements. We have adopted the practical expedient that allows us to not include service maintenance contracts with a total term of one year or less; therefore, we do not report unfulfilled performance obligations for service maintenance agreements.

XML 22 R11.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Fair Value Measurements
3 Months Ended
Mar. 31, 2024
Fair Value Measurements  
Fair Value Measurements

4. Fair Value Measurements

Interest Rate Risk Management and Derivative Instruments

At times, we use derivative instruments to manage exposure to market risk, including interest rate risk. Unsettled amounts under our interest rate swaps, if any, are recorded in the Consolidated Balance Sheet at fair value in “Other Receivables” or “Other Current Liabilities.” Gains and losses on our interest rate swaps are recorded in the Consolidated Statement of Operations in “Interest Expense.” We currently do not have any derivatives that are accounted for as hedges under ASC 815.

Fair Value Measurement

We classify and disclose assets and liabilities carried at fair value in one of the following three categories:

Level 1—quoted prices in active markets for identical assets and liabilities;
Level 2—observable market-based inputs or unobservable inputs that are corroborated by market data; and
Level 3—significant unobservable inputs in which little or no market data exists, therefore requiring an entity to develop its own assumptions.

The following table summarizes the fair values, and levels within the fair value hierarchy in which the fair value measurements are included, for assets and liabilities measured on a recurring basis as of March 31, 2024 and December 31, 2023 (in thousands):

Fair Value Measurements at March 31, 2024

    

Level 1

    

Level 2

    

Level 3

    

Total

Cash and cash equivalents

$

100,792

$

$

$

100,792

Life insurance—cash surrender value

$

$

7,721

$

$

7,721

Contingent earn-out obligations

$

$

$

71,296

$

71,296

Fair Value Measurements at December 31, 2023

    

Level 1

    

Level 2

    

Level 3

    

Total

Cash and cash equivalents

$

205,150

$

$

$

205,150

Life insurance—cash surrender value

$

$

7,473

$

$

7,473

Contingent earn-out obligations

$

$

$

44,222

$

44,222

Cash and cash equivalents consist primarily of highly rated money market funds at a variety of well-known institutions with original maturities of three months or less. The original cost of these assets approximates fair value due to their short-term maturity. We believe the carrying value of our debt associated with our revolving credit facility approximates its fair value due to the variable rate on such debt. We believe the carrying values of our notes to former owners approximate their fair values due to the relatively short remaining terms on these notes.

We have life insurance policies covering 127 employees with a combined face value of $86.7 million. The policies are invested in several investment vehicles, and the fair value measurement of the cash surrender balance associated with these policies is determined using Level 2 inputs within the fair value hierarchy and will vary with investment performance. The cash surrender value of these policies is included in “Other Noncurrent Assets” in our Consolidated Balance Sheets.

We value contingent earn-out obligations using a probability weighted discounted cash flow method. This fair value measurement is based on significant unobservable inputs in the market and thus represents a Level 3 measurement within the fair value hierarchy. This analysis reflects the contractual terms of the purchase agreements (e.g., minimum and maximum payments, length of earn-out periods, manner of calculating any amounts due, etc.) and utilizes assumptions with regard to future cash flows and operating income, probabilities of achieving such future cash flows and operating income and a weighted average cost of capital. Significant changes in any of these assumptions could result in a significantly higher or lower potential liability. The contingent earn-out obligations are measured at fair value each reporting period, and changes in estimates of fair value are recognized in earnings. As of March 31, 2024, cash flows were discounted using a weighted average cost of capital ranging from 15.0% to 19.0%.

The table below presents a reconciliation of the fair value of our contingent earn-out obligations that use significant unobservable inputs (Level 3) (in thousands):

    

Three Months Ended

Year Ended

 

    

March 31, 2024

December 31, 2023

 

Balance at beginning of period

    

$

44,222

    

$

32,317

 

 

Issuances

 

51,784

 

4,315

Settlements

(37,201)

(16,017)

Adjustments to fair value

 

12,491

 

23,607

Balance at end of period

$

71,296

$

44,222

XML 23 R12.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Acquisitions
3 Months Ended
Mar. 31, 2024
Acquisitions  
Acquisitions

5. Acquisitions

Summit Industrial Construction, LLC Acquisition

On February 1, 2024, we acquired Summit Industrial Construction, LLC (“Summit”). Summit is headquartered in Houston, Texas and is a specialty industrial contractor offering engineering, design-assist and turnkey, direct hire

construction services of systems serving the advanced technology, power, and industrial sectors. As a result of the acquisition, Summit is a wholly owned subsidiary of the Company reported in our mechanical segment.

The following summarizes the acquisition date fair value of consideration transferred and the acquisition date fair value of the identifiable assets acquired and liabilities assumed, including an amount for goodwill (in thousands):

Consideration transferred:

Cash paid at closing

$

267,500

Working capital adjustment

14,595

Notes issued to former owners

35,000

Estimated fair value of contingent earn-out payments

42,732

$

359,827

Recognized amounts of identifiable assets acquired and liabilities assumed:

Cash and cash equivalents

$

171,027

Billed and unbilled accounts receivable

59,921

Prepaid expenses and other

1,476

Cost and estimated earnings in excess of billings

578

Property and equipment

2,528

Lease right-of-use asset

2,365

Goodwill

155,220

Identifiable intangible assets

170,100

Other noncurrent assets

136

Accounts payable

(15,138)

Billings in excess of costs and estimated earnings and deferred revenue

(179,895)

Current operating lease liabilities

(1,495)

Accrued expenses and other current liabilities

(6,243)

Long-term operating lease liabilities

(753)

$

359,827

The allocation of the purchase price to the assets acquired and liabilities assumed is preliminary and, therefore, subject to change pending the completion of the final valuation of intangible assets and accrued liabilities. Goodwill represents the future economic benefits arising from other assets acquired that cannot be individually identified and separately recognized. The goodwill recognized as a result of the Summit acquisition is deductible for tax purposes.

In estimating the fair value of the acquired intangible assets, we utilized the valuation methodology determined to be the most appropriate for the individual intangible asset. In order to estimate the fair value of the backlog and customer relationships, we utilized an excess earnings methodology, which consisted of the projected cash flows attributable to these assets discounted to present value using a risk-adjusted discount rate that represented the required rate of return. The trade name value was determined based on the relief-from-royalty method, which applies a royalty rate to the revenue stream attributable to this asset, and the resulting royalty payment is tax effected and discounted to present value. Some of the more significant estimates and assumptions inherent in determining the fair value of the identifiable intangible assets are associated with forecasting cash flows and profitability, which represent Level 3 inputs. The primary assumptions used were generally based upon the present value of anticipated cash flows discounted at rates ranging from 18.5% to 20.5%. Estimated years of projected earnings generally follow the range of estimated remaining useful lives for each intangible asset class.

The acquired intangible assets include the following (dollars in thousands):

Valuation Method

Estimated Useful Life

Estimated Fair Value

Backlog

Excess earnings

1.8 years

$

35,800

Trade Name

Relief-from-royalty

22.9 years

11,300

Customer Relationships

Excess earnings

10 years

123,000

Total

$

170,100

The contingent earn-out obligation is associated with the achievement of four earnings milestones over a 47-month period, and the range of each estimated milestone payment is $2.6 million to $20.5 million. We determined the initial fair value of the contingent earn-out obligation based on the Monte Carlo Simulation method, which represents a Level 3 measurement.  Cash flows were discounted using discount rates ranging from 18.2% to 19.5%, which we believe is appropriate and representative of a market participant assumption.  Subsequent to the acquisition date, the contingent earn-out obligation is remeasured at fair value each reporting period.  Changes in the estimated fair value of the contingent payments subsequent to the acquisition date are recognized immediately in earnings.

J & S Mechanical Contractors, Inc. Acquisition

On February 1, 2024, we acquired all of the issued and outstanding shares of capital stock of J & S Mechanical Contractors, Inc. (“J&S”). J&S is headquartered in West Jordan, Utah, and provides mechanical construction services to commercial and industrial sectors, specializing in data center HVAC systems and hospital medical gas systems. As a result of the acquisition, J&S is a wholly owned subsidiary of the Company reported in our mechanical segment.

The following summarizes the acquisition date fair value of consideration transferred and the acquisition date fair value of the identifiable assets acquired and liabilities assumed, including an amount for goodwill (in thousands):

Consideration transferred:

Cash paid at closing

$

100,000

Working capital adjustment

1,531

Notes issued to former owners

10,000

Estimated fair value of contingent earn-out payments

9,052

$

120,583

Recognized amounts of identifiable assets acquired and liabilities assumed:

Cash and cash equivalents

$

14,802

Billed and unbilled accounts receivable

38,411

Inventory

230

Prepaid expenses and other

326

Costs and estimated earnings in excess of billings

728

Property and equipment

2,674

Lease right-of-use asset

4,552

Goodwill

40,680

Identifiable intangible assets

63,300

Other noncurrent assets

10

Accounts payable

(20,612)

Billings in excess of costs and estimated earnings and deferred revenue

(19,188)

Current operating lease liabilities

(133)

Accrued expenses and other current liabilities

(826)

Long-term debt

(59)

Long-term operating lease liabilities

(4,312)

$

120,583

The allocation of the purchase price to the assets acquired and liabilities assumed is preliminary and, therefore, subject to change pending the completion of the final valuation of intangible assets and accrued liabilities. Goodwill represents the future economic benefits arising from other assets acquired that cannot be individually identified and separately recognized. The goodwill recognized as a result of the J&S acquisition is deductible for tax purposes.

In estimating the fair value of the acquired intangible assets, we utilized the valuation methodology determined to be the most appropriate for the individual intangible asset. In order to estimate the fair value of the backlog and customer relationships, we utilized an excess earnings methodology, which consisted of the projected cash flows attributable to these assets discounted to present value using a risk-adjusted discount rate that represented the required rate of return. The trade name value was determined based on the relief-from-royalty method, which applies a royalty rate to the revenue stream attributable to this asset, and the resulting royalty payment is tax effected and discounted to

present value. Some of the more significant estimates and assumptions inherent in determining the fair value of the identifiable intangible assets are associated with forecasting cash flows and profitability, which represent Level 3 inputs. The primary assumptions used were generally based upon the present value of anticipated cash flows discounted at rates ranging from 15.5% to 17.0%. Estimated years of projected earnings generally follow the range of estimated remaining useful lives for each intangible asset class.

The acquired intangible assets include the following (dollars in thousands):

    

    

Estimated

    

Estimated

    

Valuation Method

    

Useful Life

    

Fair Value

Backlog

 

Excess earnings

 

1.8 years

$

12,900

Trade Name

 

Relief-from-royalty

 

22 years

 

10,600

Customer Relationships

 

Excess earnings

 

9 years

39,800

Total

$

63,300

The contingent earn-out obligation is associated with the achievement of three earnings milestones over a 35-month period, and the range of each estimated milestone payment is $1.1 million to $4.7 million. We determined the initial fair value of the contingent earn-out obligation based on the Monte Carlo Simulation method, which represents a Level 3 measurement.  Cash flows were discounted using a range of discount rates ranging from 15.4% to 16.5%, which we believe is appropriate and representative of a market participant assumption.  Subsequent to the acquisition date, the contingent earn-out obligation is remeasured at fair value each reporting period.  Changes in the estimated fair value of the contingent payments subsequent to the acquisition date are recognized immediately in earnings.

Other Acquisitions

On October 2, 2023, we acquired all of the issued and outstanding shares of capital stock of DECCO, Inc. (“DECCO”), headquartered in Nashua, New Hampshire, for a total preliminary purchase price of $59.8 million, which included $48.8 million of cash paid on the closing date, $7.0 million in notes payable to the former owners, an earn-out that will be paid if certain financial targets are met after the acquisition date and a working capital adjustment. DECCO operates in the Northeastern United States and performs mechanical and plumbing services with specialties in piping systems, steam, power, biotechnical processes and conveying systems, in addition to turnkey tool and equipment installation, critical equipment handling services and associated maintenance and support services. As a result of the acquisition, DECCO is a wholly owned subsidiary of the Company reported in our mechanical segment.

On February 1, 2023, we acquired all of the issued and outstanding shares of capital stock of Eldeco, Inc. (“Eldeco”), headquartered in South Carolina, for a total purchase price of $74.0 million, which included $60.8 million of cash paid on the closing date, $8.0 million in notes payable to the former owners, an earn-out that will be paid if certain financial targets are met after the acquisition date and a working capital adjustment. Eldeco performs electrical design and construction services in the Southeastern region of the United States. As a result of the acquisition, Eldeco is a wholly owned subsidiary of the Company reported in our electrical segment.

The results of operations of acquisitions are included in our consolidated financial statements from their respective acquisition dates. Our Consolidated Balance Sheet includes preliminary allocations of the purchase price to the assets acquired and liabilities assumed for the applicable acquisitions pending the completion of the final valuation of intangible assets and accrued liabilities. The acquisitions completed in the current and prior year were not material, individually or in the aggregate. Additional contingent purchase price (“earn-out”) has been or will be paid if certain acquisitions achieve predetermined profitability targets. Such earn-outs, when they are not subject to the continued employment of the sellers, are estimated as of the purchase date and included as part of the consideration paid for the acquisition. If we have an earn-out under which continued employment is a condition to receipt of payment, then the earn-out is recorded as compensation expense over the period earned.

XML 24 R13.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Goodwill and Identifiable Intangible Assets, Net
3 Months Ended
Mar. 31, 2024
Goodwill and Identifiable Intangible Assets, Net  
Goodwill and Identifiable Intangible Assets, Net

6. Goodwill and Identifiable Intangible Assets, Net

Goodwill

The changes in the carrying amount of goodwill are as follows (in thousands):

    

Mechanical Segment

    

Electrical Segment

Total

 

Balance at December 31, 2022

$

363,929

$

247,860

$

611,789

Acquisitions and purchase price adjustments (See Note 5)

 

29,347

25,698

55,045

Balance at December 31, 2023

393,276

273,558

666,834

Acquisitions and purchase price adjustments (See Note 5)

195,900

200

196,100

Balance at March 31, 2024

$

589,176

$

273,758

$

862,934

Identifiable Intangible Assets, Net

At March 31, 2024, future amortization expense of identifiable intangible assets is as follows (in thousands):

Year ending December 31—

    

    

2024 (remainder of the year)

$

71,121

2025

 

63,532

2026

 

52,948

2027

 

50,967

2028

50,806

Thereafter

 

200,510

Total

$

489,884

XML 25 R14.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Debt Obligations
3 Months Ended
Mar. 31, 2024
Debt Obligations  
Debt Obligations

7. Debt Obligations

Debt obligations consist of the following (in thousands):

March 31,

December 31,

    

2024

    

2023

 

Revolving credit facility

$

$

Notes to former owners

89,070

 

44,070

Other debt

819

142

Total debt

89,889

44,212

Less—current portion

(12,885)

 

(4,867)

Total long-term portion of debt

$

77,004

$

39,345

Revolving Credit Facility

We have an $850.0 million senior credit facility (the “Facility”) provided by a syndicate of banks, which is composed of a revolving credit line guaranteed by certain of our subsidiaries. The Facility also provides for an accordion or increase option not to exceed the greater of (a) $250 million and (b) 1.0x Credit Facility Adjusted EBITDA (as defined below), as well as a sublimit of up to $175.0 million issuable in the form of letters of credit. The Facility expires in July 2027 and is secured by a first lien on substantially all of our personal property except for assets related to projects subject to surety bonds and the equity of, and assets held by, certain unrestricted subsidiaries and our wholly owned captive insurance company, and a second lien on our assets related to projects subject to surety bonds. As of March 31, 2024, we had no outstanding borrowings on the revolving credit facility, $81.2 million in letters of credit outstanding and $768.8 million of credit available.

There are two interest rate options for borrowings under the Facility, the Base Rate Loan (as defined in the Facility) option and the Secured Overnight Financing Rate (“SOFR”) Loan option. These rates are floating rates

determined by the broad financial markets, meaning they can and do move up and down from time to time. Additional margins are then added to these two rates:

Net Leverage Ratio

    

Less than 
1.00

    

1.00 to less than 1.75

    

1.75 to less than 2.50

    

2.50 to less than 3.00

 

3.00 or greater

Additional Per Annum Interest Margin Added Under:

Base Rate Loan Option

0.00

%

0.25

%  

0.50

%  

0.75

%

1.00

%

SOFR Loan Option

1.00

%

1.25

%

1.50

%

1.75

%

2.00

%

There were no outstanding borrowings on the revolving credit facility as of March 31, 2024 and December 31, 2023.

Certain of our vendors require letters of credit to ensure reimbursement for amounts they are disbursing on our behalf, such as to beneficiaries under our self-funded insurance programs. We have also occasionally used letters of credit to guarantee performance under our contracts and to ensure payment to our subcontractors and vendors under those contracts. Our lenders issue such letters of credit through the Facility. A letter of credit commits the lenders to pay specified amounts to the holder of the letter of credit if the holder demonstrates that we have failed to perform specified actions. If this were to occur, we would be required to reimburse the lenders for amounts they fund to honor the letter of credit holder’s claim. Absent a claim, there is no payment or reserving of funds by us in connection with a letter of credit. However, because a claim on a letter of credit would require immediate reimbursement by us to our lenders, letters of credit are treated as a use of Facility capacity. The letter of credit fees range from 1.00% to 2.00% per annum, based on the Net Leverage Ratio.

Commitment fees are payable on the portion of the revolving loan capacity not in use for borrowings or letters of credit at any given time. These fees range from 0.15% to 0.25% per annum, based on the Net Leverage Ratio.

The Facility contains financial covenants defining various financial measures and the levels of these measures with which we must comply. Covenant compliance is assessed as of each quarter end. We were in compliance with all of our financial covenants as of March 31, 2024.

Notes to Former Owners

As part of the consideration used to acquire ten companies, we have outstanding notes to the former owners. Together, these notes had an outstanding balance of $89.1 million as of March 31, 2024. At March 31, 2024, future principal payments of notes to former owners by maturity year are as follows (dollars in thousands):

Balance at

Range of Stated

    

March 31, 2024

Interest Rates

2024

$

4,800

2.5

%

2025

 

21,645

2.3 - 3.0

%

2026

 

31,625

2.5 - 5.5

%

2027

26,000

5.5

%

2028

5,000

5.5

%

Total

$

89,070

F

XML 26 R15.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Leases
3 Months Ended
Mar. 31, 2024
Leases  
Leases

8. Leases

We lease certain facilities, vehicles and equipment primarily under noncancelable operating leases. The most significant portion of these noncancelable operating leases is for the facilities occupied by our corporate office and our operating locations. Leases with an initial term of 12 months or less are not recorded in the Consolidated Balance Sheet. We do not separate lease components from their associated non-lease components pursuant to lease accounting guidance. We have certain leases with variable payments based on an index as well as short-term leases on equipment and facilities. Variable lease expense and short-term lease expense aggregated to $17.9 million and $10.2 million in the first

three months of 2024 and 2023, respectively. These expenses were primarily related to short-term equipment rentals. Lease right-of-use assets and liabilities are recognized at commencement date based on the present value of lease payments over the lease term. As most of our leases do not provide an implicit rate, we generally use our incremental borrowing rate based on the information available at commencement date in determining the present value of lease payments. The weighted average discount rate for our operating leases as of March 31, 2024 and December 31, 2023 was 6.0% and 5.8%, respectively. We recognize operating lease expense, including escalating lease payments and lease incentives, on a straight-line basis over the lease term. Operating lease expense for the three months ended March 31, 2024 and 2023 was $28.2 million and $17.3 million, respectively.

The lease terms generally range from three to ten years. Some leases include one or more options to renew, which may be exercised to extend the lease term. We include the exercise of lease renewal options in the lease term when it is reasonably certain that we will exercise the option and such exercise is at our sole discretion. In the third quarter of 2023, we commenced two large real estate leases to support our expected growth in off-site construction, with lease terms longer than our typical terms. The weighted average remaining lease term for our operating leases was 11.5 years at March 31, 2024 and 10.9 years at December 31, 2023.

A majority of the Company’s real property leases are with individuals or entities with whom we have no other business relationship. However, in certain instances the Company enters into real property leases with current or former employees. Rent paid to related parties for the three months ended March 31, 2024 and 2023 was approximately $2.1 million and $2.0 million, respectively.

If we decide to cancel or terminate a lease before the end of its term, we would typically owe the lessor the remaining lease payments under the term of the lease. Our lease agreements do not contain any material residual value guarantees or material restrictive covenants. On rare occasions, we rent or sublease certain real estate assets that we no longer use to third parties.

The following table summarizes the operating lease assets and liabilities included in the Consolidated Balance Sheet as follows (in thousands):

March 31, 2024

December 31, 2023

Operating lease right-of-use assets

$

227,157

$

205,712

Operating lease liabilities:

Other current liabilities

$

26,130

$

24,426

Long-term operating lease liabilities

209,717

188,136

Total operating lease liabilities

$

235,847

$

212,562

The maturities of operating lease liabilities are as follows (in thousands):

Year ending December 31—

2024 (excluding the three months ended March 31, 2024)

$

29,282

2025

36,864

2026

33,144

2027

28,915

2028

25,252

Thereafter

183,669

Total lease payments

337,126

Less—present value discount

(101,279)

Present value of operating lease liabilities

$

235,847

Supplemental information related to operating leases was as follows (in thousands):

Three Months Ended March 31,

2024

2023

Cash paid for amounts included in the measurement of operating lease liabilities

$

9,466

$

7,024

Operating lease right-of-use assets obtained in exchange for lease liabilities

$

29,426

$

9,446

XML 27 R16.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Commitments and Contingencies
3 Months Ended
Mar. 31, 2024
Commitments and Contingencies  
Commitments and Contingencies

9. Commitments and Contingencies

Claims and Lawsuits

We are subject to certain legal and regulatory claims, including lawsuits arising in the normal course of business. We maintain various insurance coverages to minimize financial risk associated with these claims. We have estimated and provided accruals for probable losses and related legal fees associated with certain litigation in the accompanying consolidated financial statements. While we cannot predict the outcome of these proceedings, in management’s opinion and based on reports of counsel, any liability arising from these matters individually and in the aggregate will not have a material effect on our operating results, cash flows or financial condition, after giving effect to provisions already recorded.

In the first quarter of 2023, we recorded a pre-tax gain of $6.8 million from legal developments and settlements that primarily relate to disputes with customers regarding the outcome of completed projects as well as an obligation to perform subcontract work under two executed letters of intent for subsequent projects that we believed were not enforceable. The pre-tax gain of $6.8 million was recorded as an increase in gross profit of $6.6 million, a reduction in SG&A of $0.7 million, an increase in interest income of $1.3 million and an increase in the change in fair value of contingent earn-out obligations expense of $1.8 million in our Consolidated Statements of Operations.

As of March 31, 2024, we recorded an accrual for unresolved matters, which is not material to our financial statements, based on our analysis of likely outcomes related to the respective matters; however, it is possible that the ultimate outcome and associated costs will deviate from our estimates and that, in the event of an unexpectedly adverse outcome, we may experience additional costs and expenses in future periods.

Surety

Many customers, particularly in connection with new construction, require us to post performance and payment bonds issued by a financial institution known as a surety. If we fail to perform under the terms of a contract or to pay subcontractors and vendors who provided goods or services under a contract, the customer may demand that the surety make payments or provide services under the bond. We must reimburse the surety for any expenses or outlays it incurs.

Current market conditions for surety markets and bonding capacity are adequate, with acceptable terms and conditions. Historically, approximately 10% to 20% of our business has required bonds. While we currently have strong surety relationships to support our bonding needs, future market conditions or changes in the sureties’ assessment of our operating and financial risk could cause the sureties to decline to issue bonds for our work. If that were to occur, the alternatives include doing more business that does not require bonds, posting other forms of collateral for project performance, such as letters of credit or cash, and seeking bonding capacity from other sureties. We would likely also encounter concerns from customers, suppliers and other market participants as to our creditworthiness. While we believe our general operating and financial characteristics would enable us to ultimately respond effectively to an interruption in the availability of bonding capacity, such an interruption would likely cause our revenue and profits to decline in the near term.

Self-Insurance

We are substantially self-insured for workers’ compensation, employer’s liability, auto liability, general liability and employee group health claims, in view of the relatively high per-incident deductibles we absorb under our insurance arrangements for these risks. Losses are estimated and accrued based upon known facts, historical trends and industry averages. Estimated losses in excess of our deductible, which have not already been paid, are included in our accrual with a corresponding receivable from our insurance carrier. Loss estimates associated with the larger and

longer-developing risks, such as workers’ compensation, auto liability and general liability, are reviewed by a third-party actuary quarterly.

XML 28 R17.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Stockholders' Equity
3 Months Ended
Mar. 31, 2024
Stockholders' Equity  
Stockholders' Equity

10. Stockholders’ Equity

Earnings Per Share

Basic earnings per share (“EPS”) is computed by dividing net income by the weighted average number of shares of common stock outstanding during the year. Diluted EPS is computed considering the dilutive effect of stock options, restricted stock, restricted stock units and performance stock units. The vesting of unvested, contingently issuable performance stock units is based on the achievement of certain earnings per share targets and total shareholder return. These shares are considered contingently issuable shares for purposes of calculating diluted earnings per share. These shares are not included in the diluted earnings per share denominator until the performance criteria are met, if it is assumed that the end of the reporting period was the end of the contingency period.

Unvested restricted stock, restricted stock units and performance stock units are included in diluted earnings per share, weighted outstanding until the shares and units vest. Upon vesting, the vested restricted stock, restricted stock units and performance stock units are included in basic earnings per share weighted outstanding from the vesting date.

There were zero anti-dilutive stock options excluded from the calculation of diluted EPS for the three months ended March 31, 2024 and 2023.

The following table reconciles the number of shares outstanding with the number of shares used in computing basic and diluted earnings per share for each of the periods presented (in thousands):

Three Months Ended

March 31,

    

2024

    

2023

 

Common shares outstanding, end of period

35,695

 

35,752

Effect of using weighted average common shares outstanding

44

 

60

Shares used in computing earnings per share—basic

35,739

 

35,812

Effect of shares issuable under stock option plans based on the treasury stock method

29

 

26

Effect of restricted and contingently issuable shares

60

 

69

Shares used in computing earnings per share—diluted

35,828

 

35,907

Share Repurchase Program

On March 29, 2007, our Board of Directors (the “Board”) approved a stock repurchase program to acquire up to 1.0 million shares of our outstanding common stock. Subsequently, the Board has from time to time increased the number of shares that may be acquired under the program and approved extensions of the program. Since the inception of the repurchase program, the Board has approved 10.9 million shares to be repurchased. As of March 31, 2024, we have repurchased a cumulative total of 10.3 million shares at an average price of $26.29 per share under the repurchase program.

The share repurchases will be made from time to time at our discretion in the open market or privately negotiated transactions, as permitted by securities laws and other legal requirements, and subject to market conditions and other factors. The Board may modify, suspend, extend or terminate the program at any time. During the three months ended March 31, 2024, we repurchased less than 0.1 million shares for approximately $0.3 million at an average price of $196.89 per share.

XML 29 R18.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Segment Information
3 Months Ended
Mar. 31, 2024
Segment Information  
Segment Information

11. Segment Information

Our activities are within the mechanical services industry and the electrical services industry, which represent our two reportable segments. We aggregate our operating segments into two reportable segments, as the operating

segments meet all of the aggregation criteria. The following tables present information about our reportable segments (in thousands):

Three Months Ended March 31, 2024

    

Mechanical Segment

    

Electrical Segment

    

Corporate

    

Consolidated

Revenue

$

1,185,009

$

352,007

$

$

1,537,016

Gross Profit

$

217,712

$

79,651

$

$

297,363

Three Months Ended March 31, 2023

    

Mechanical Segment

    

Electrical Segment

    

Corporate

    

Consolidated

Revenue

$

918,615

$

256,025

$

$

1,174,640

Gross Profit

$

164,067

$

41,338

$

$

205,405

XML 30 R19.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Summary of Significant Accounting Policies and Estimates (Policies)
3 Months Ended
Mar. 31, 2024
Summary of Significant Accounting Policies and Estimates  
Basis of Presentation

Basis of Presentation

These interim statements should be read in conjunction with the historical Consolidated Financial Statements and related notes of Comfort Systems included in the Annual Report on Form 10-K as filed with the Securities and Exchange Commission (“SEC”) for the year ended December 31, 2023 (the “Form 10-K”).

The accompanying unaudited consolidated financial statements were prepared using generally accepted accounting principles for interim financial information and the instructions to Form 10-Q and applicable rules of Regulation S-X of the SEC. Accordingly, these financial statements do not include all the footnotes required by generally accepted accounting principles for complete financial statements and should be read in conjunction with the Form 10-K. We believe all adjustments necessary for a fair presentation of these interim statements have been included and are of a normal and recurring nature. The results of operations for interim periods are not necessarily indicative of the results for the full fiscal year.

Use of Estimates

Use of Estimates

The preparation of financial statements in conformity with generally accepted accounting principles requires the use of estimates and assumptions by management in determining the reported amounts of assets and liabilities, revenue and expenses and disclosures regarding contingent assets and liabilities. Actual results could differ from those estimates. The most significant estimates used in our financial statements affect revenue and cost recognition for construction contracts, self-insurance accruals, accounting for income taxes, fair value accounting for acquisitions and the quantification of fair value for reporting units in connection with our goodwill impairment testing.

Recent Accounting Pronouncements

Recent Accounting Pronouncements

Recent Accounting Pronouncements Not Yet Adopted

In November 2023, the Financial Accounting Standards Board (“FASB”) issued ASU 2023-07, “Segment Reporting (Topic 280): Improvements to Reportable Segment Disclosures.” This standard requires entities to disclose, on an annual and interim basis, significant segment expenses that are regularly provided to the chief decision maker and included within each reported measure of segment profit and loss. ASU 2023-07 is effective for fiscal years beginning after December 15, 2023, and interim periods within fiscal years beginning after December 15, 2024. Early adoption is permitted. We are currently evaluating the impact ASU 2023-07 will have on our disclosures; however, the standard will not have an impact on our consolidated financial position, results of operations or cash flows.

In December 2023, the FASB issued ASU 2023-09, “Income Taxes (Topic 740): Improvements to Income Tax Disclosures.” This standard requires entities to disclose more detailed information in the reconciliation of their statutory

tax rate to their effective tax rate. The standard also requires entities to make additional disclosures on income taxes paid as well as on certain income statement-related disclosures. ASU 2023-09 is effective for fiscal years beginning after December 15, 2024. Early adoption is permitted. We are currently evaluating the impact ASU 2023-09 will have on our disclosures; however, the standard will not have an impact on our consolidated financial position, results of operations or cash flows.

Revenue Recognition

Revenue Recognition

We recognize revenue over time for all of our services as we perform them because (i) control continuously transfers to that customer as work progresses, and (ii) we have the right to bill the customer as costs are incurred. The customer typically controls the work in process, as evidenced either by contractual termination clauses or by our rights to payment for work performed to date, plus a reasonable profit, for delivery of products or services that do not have an alternative use to the Company.

For the reasons listed above, revenue is recognized based on the extent of progress towards completion of the performance obligation. The selection of the method to measure progress towards completion requires judgment and is based on the nature of the products or services to be provided. We generally use a cost-to-cost input method to measure our progress towards satisfaction of the performance obligation for our contracts, as it best depicts the transfer of assets to the customer that occurs as we incur costs on our contracts. Under the cost-to-cost input method, the extent of progress towards completion is measured based on the ratio of costs incurred to date to the total estimated costs at completion of the performance obligation. Revenue, including estimated fees or profits, is recorded proportionally as costs are incurred. Costs to fulfill include labor, materials, subcontractors’ costs, other direct costs and an allocation of indirect costs.

For a small portion of our business in which our services are delivered in the form of service maintenance agreements for existing systems to be repaired and maintained, as opposed to constructed, our performance obligation is to maintain the customer’s mechanical system for a specific period of time. Similar to construction jobs, we recognize revenue over time; however, for service maintenance agreements in which the full cost to provide services may not be known, we generally use an input method to recognize revenue, which is based on the amount of time we have provided our services out of the total time we have been contracted to perform those services. Our revenue recognition policy is further discussed in Note 3 “Revenue from Contracts with Customers.”

Accounts Receivable and Allowance for Credit Losses

Accounts Receivable and Allowance for Credit Losses

We are required to estimate and record the expected credit losses over the contractual life of our financial assets measured at amortized cost, including billed and unbilled accounts receivable, other receivables and contract assets. Accounts receivable include amounts from work completed in which we have billed or have an unconditional right to bill our customers. Our trade receivables are contractually due in less than a year.

We estimate our credit losses using a loss-rate method for each of our identified portfolio segments. Our portfolio segments are construction, service and other. While our construction and service financial assets are often with the same subset of customers and industries, our construction financial assets will generally have a lower loss-rate than service financial assets due to lien rights, which we are more likely to have on construction jobs. These lien rights result in lower credit loss expenses on average compared to receivables that do not have lien rights. Financial assets classified as other include receivables that are not related to our core revenue producing activities, such as receivables related to our acquisition activity from former owners, our vendor rebate program or receivables for estimated losses in excess of our insurance deductible, which are accrued with a corresponding accrued insurance liability.

Loss rates for our portfolios are based on numerous factors, including our history of credit loss expense by portfolio, the financial strength of our customers and counterparties in each portfolio, the aging of our receivables, our expectation of likelihood of payment, macroeconomic trends in the U.S. and the current and forecasted nonresidential construction market trends in the U.S.

In addition to the loss-rate calculations discussed above, we also record allowance for credit losses for specific receivables that are deemed to have a higher risk profile than the rest of the respective pool of receivables (e.g., when we hold concerns about a specific customer going bankrupt and no longer being able to pay the receivables due to us).

Unbilled Accounts Receivable

Unbilled Accounts Receivable

Unbilled accounts receivable are amounts due to us that we have earned under a contract where our right to payment is unconditional. A right to consideration is unconditional if only the passage of time is required before payment of the consideration is due.

Income Taxes

Income Taxes

We conduct business throughout the United States in virtually all fifty states. Our effective tax rate changes based upon our relative profitability, or lack thereof, in the federal and various state jurisdictions with differing tax rates and rules. In addition, discrete items such as tax law changes, judgments and legal structures, can impact our effective tax rate. These items can also include the tax treatment for impairment of goodwill and other intangible assets, changes in fair value of acquisition-related assets and liabilities, uncertain tax positions, and accounting for losses associated with underperforming operations.

The Inflation Reduction Act was enacted on August 16, 2022. This law, among other provisions, provides a corporate alternative minimum tax on adjusted financial statement income over $1 billion, which is effective for tax years beginning after December 31, 2022, and a 1% excise tax on net corporate stock repurchases after December 31, 2022. The impact of the excise tax is recorded in “Treasury Stock” within our Consolidated Balance Sheet. These provisions were not material to our current year overall financial results, financial position and cash flows.

In early September 2023, the IRS issued interim guidance addressing, together with other topics, the treatment of research and experimental (“R&E”) expenditures for taxpayers using the percentage of completion method to account for taxable income from long-term contracts. We have chosen to rely on such guidance beginning with the 2022 tax year, and the resultant reduction in taxable revenue offsets the deferral of tax deductions for R&E expenditures pursuant to the Tax Cuts and Jobs Act (2017) for the 2022 tax year. We filed our 2022 federal tax return in October 2023 requesting a refund of our $107.1 million overpayment, which has not been received as of March 31, 2024.

Financial Instruments

Financial Instruments

Our financial instruments consist of cash and cash equivalents, accounts receivable, other receivables, accounts payable and life insurance policies, for which we deem the carrying values approximate their fair value due to the short-term nature of these instruments, as well as notes to former owners and a revolving credit facility.

Investments

Investments

We have a $5.4 million investment in a construction-focused technology fund with a fair value that is not readily determinable and is recorded at cost. This investment is included in “Other Noncurrent Assets” in our Consolidated Balance Sheet and is reviewed quarterly for impairment. We did not recognize any impairments in the current year related to this investment.

Leases

We lease certain facilities, vehicles and equipment primarily under noncancelable operating leases. The most significant portion of these noncancelable operating leases is for the facilities occupied by our corporate office and our operating locations. Leases with an initial term of 12 months or less are not recorded in the Consolidated Balance Sheet. We do not separate lease components from their associated non-lease components pursuant to lease accounting guidance. We have certain leases with variable payments based on an index as well as short-term leases on equipment and facilities. Variable lease expense and short-term lease expense aggregated to $17.9 million and $10.2 million in the first

three months of 2024 and 2023, respectively. These expenses were primarily related to short-term equipment rentals. Lease right-of-use assets and liabilities are recognized at commencement date based on the present value of lease payments over the lease term. As most of our leases do not provide an implicit rate, we generally use our incremental borrowing rate based on the information available at commencement date in determining the present value of lease payments. The weighted average discount rate for our operating leases as of March 31, 2024 and December 31, 2023 was 6.0% and 5.8%, respectively. We recognize operating lease expense, including escalating lease payments and lease incentives, on a straight-line basis over the lease term. Operating lease expense for the three months ended March 31, 2024 and 2023 was $28.2 million and $17.3 million, respectively.

The lease terms generally range from three to ten years. Some leases include one or more options to renew, which may be exercised to extend the lease term. We include the exercise of lease renewal options in the lease term when it is reasonably certain that we will exercise the option and such exercise is at our sole discretion. In the third quarter of 2023, we commenced two large real estate leases to support our expected growth in off-site construction, with lease terms longer than our typical terms. The weighted average remaining lease term for our operating leases was 11.5 years at March 31, 2024 and 10.9 years at December 31, 2023.

A majority of the Company’s real property leases are with individuals or entities with whom we have no other business relationship. However, in certain instances the Company enters into real property leases with current or former employees. Rent paid to related parties for the three months ended March 31, 2024 and 2023 was approximately $2.1 million and $2.0 million, respectively.

If we decide to cancel or terminate a lease before the end of its term, we would typically owe the lessor the remaining lease payments under the term of the lease. Our lease agreements do not contain any material residual value guarantees or material restrictive covenants. On rare occasions, we rent or sublease certain real estate assets that we no longer use to third parties.

XML 31 R20.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Revenue from Contracts with Customers (Tables)
3 Months Ended
Mar. 31, 2024
Revenue from Contracts with Customers  
Schedule of disaggregation of revenue See details in the following tables (dollars in thousands):

Three Months Ended March 31,

Revenue by Service Provided

   

2024

   

2023

   

Mechanical Segment

$

1,185,009

   

77.1

%

$

918,615

   

78.2

%

Electrical Segment

352,007

22.9

%

256,025

21.8

%

Total

$

1,537,016

100.0

%

$

1,174,640

100.0

%

Three Months Ended March 31,

Revenue by Type of Customer

2024

2023

 

Manufacturing

$

461,400

30.0

%

$

366,356

31.2

%

Technology

464,814

30.2

%

226,249

19.3

%

Healthcare

133,729

8.7

%

159,815

13.5

%

Education

133,983

8.7

%

110,253

9.4

%

Office Buildings

101,892

6.6

%

98,195

8.4

%

Retail, Restaurants and Entertainment

80,585

5.2

%

76,194

6.5

%

Government

87,801

5.7

%

64,415

5.5

%

Multi-Family and Residential

40,851

2.7

%

45,007

3.8

%

Other

31,961

2.2

%

28,156

2.4

%

Total

$

1,537,016

100.0

%

$

1,174,640

100.0

%

Three Months Ended March 31,

Revenue by Activity Type

2024

2023

 

New Construction

$

898,976

58.5

%

$

627,952

53.5

%

Existing Building Construction

390,369

25.4

%

309,483

26.3

%

Service Projects

104,114

6.8

%

103,105

8.8

%

Service Calls, Maintenance and Monitoring

143,557

9.3

%

134,100

11.4

%

Total

$

1,537,016

100.0

%

$

1,174,640

100.0

%

Schedule of contract assets and liabilities

Contract assets and liabilities in the Consolidated Balance Sheet consisted of the following amounts as of March 31, 2024 and December 31, 2023 (in thousands):

March 31, 2024

December 31, 2023

Contract assets:

Costs and estimated earnings in excess of billings, less allowance for credit losses

$

30,118

$

28,084

Contract liabilities:

Billings in excess of costs and estimated earnings and deferred revenue

$

1,131,928

$

909,538

XML 32 R21.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Fair Value Measurements (Tables)
3 Months Ended
Mar. 31, 2024
Fair Value Measurements  
Summary of fair values and levels within the fair value hierarchy in which the fair value measurements fall for assets and liabilities measured on a recurring basis

The following table summarizes the fair values, and levels within the fair value hierarchy in which the fair value measurements are included, for assets and liabilities measured on a recurring basis as of March 31, 2024 and December 31, 2023 (in thousands):

Fair Value Measurements at March 31, 2024

    

Level 1

    

Level 2

    

Level 3

    

Total

Cash and cash equivalents

$

100,792

$

$

$

100,792

Life insurance—cash surrender value

$

$

7,721

$

$

7,721

Contingent earn-out obligations

$

$

$

71,296

$

71,296

Fair Value Measurements at December 31, 2023

    

Level 1

    

Level 2

    

Level 3

    

Total

Cash and cash equivalents

$

205,150

$

$

$

205,150

Life insurance—cash surrender value

$

$

7,473

$

$

7,473

Contingent earn-out obligations

$

$

$

44,222

$

44,222

Schedule of reconciliation of the fair value of contingent earn-out obligations that use significant unobservable inputs (Level 3)

The table below presents a reconciliation of the fair value of our contingent earn-out obligations that use significant unobservable inputs (Level 3) (in thousands):

    

Three Months Ended

Year Ended

 

    

March 31, 2024

December 31, 2023

 

Balance at beginning of period

    

$

44,222

    

$

32,317

 

 

Issuances

 

51,784

 

4,315

Settlements

(37,201)

(16,017)

Adjustments to fair value

 

12,491

 

23,607

Balance at end of period

$

71,296

$

44,222

XML 33 R22.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Acquisitions (Tables)
3 Months Ended
Mar. 31, 2024
Summit Texas  
Acquisitions  
Schedule of acquisition date fair value of consideration transferred and the acquisition date fair value of the identifiable assets acquired and liabilities assumed, including an amount for goodwill

The following summarizes the acquisition date fair value of consideration transferred and the acquisition date fair value of the identifiable assets acquired and liabilities assumed, including an amount for goodwill (in thousands):

Consideration transferred:

Cash paid at closing

$

267,500

Working capital adjustment

14,595

Notes issued to former owners

35,000

Estimated fair value of contingent earn-out payments

42,732

$

359,827

Recognized amounts of identifiable assets acquired and liabilities assumed:

Cash and cash equivalents

$

171,027

Billed and unbilled accounts receivable

59,921

Prepaid expenses and other

1,476

Cost and estimated earnings in excess of billings

578

Property and equipment

2,528

Lease right-of-use asset

2,365

Goodwill

155,220

Identifiable intangible assets

170,100

Other noncurrent assets

136

Accounts payable

(15,138)

Billings in excess of costs and estimated earnings and deferred revenue

(179,895)

Current operating lease liabilities

(1,495)

Accrued expenses and other current liabilities

(6,243)

Long-term operating lease liabilities

(753)

$

359,827

Schedule of acquired intangible assets

The acquired intangible assets include the following (dollars in thousands):

Valuation Method

Estimated Useful Life

Estimated Fair Value

Backlog

Excess earnings

1.8 years

$

35,800

Trade Name

Relief-from-royalty

22.9 years

11,300

Customer Relationships

Excess earnings

10 years

123,000

Total

$

170,100

J&S West Jordan  
Acquisitions  
Schedule of acquisition date fair value of consideration transferred and the acquisition date fair value of the identifiable assets acquired and liabilities assumed, including an amount for goodwill

Consideration transferred:

Cash paid at closing

$

100,000

Working capital adjustment

1,531

Notes issued to former owners

10,000

Estimated fair value of contingent earn-out payments

9,052

$

120,583

Recognized amounts of identifiable assets acquired and liabilities assumed:

Cash and cash equivalents

$

14,802

Billed and unbilled accounts receivable

38,411

Inventory

230

Prepaid expenses and other

326

Costs and estimated earnings in excess of billings

728

Property and equipment

2,674

Lease right-of-use asset

4,552

Goodwill

40,680

Identifiable intangible assets

63,300

Other noncurrent assets

10

Accounts payable

(20,612)

Billings in excess of costs and estimated earnings and deferred revenue

(19,188)

Current operating lease liabilities

(133)

Accrued expenses and other current liabilities

(826)

Long-term debt

(59)

Long-term operating lease liabilities

(4,312)

$

120,583

Schedule of acquired intangible assets

The acquired intangible assets include the following (dollars in thousands):

    

    

Estimated

    

Estimated

    

Valuation Method

    

Useful Life

    

Fair Value

Backlog

 

Excess earnings

 

1.8 years

$

12,900

Trade Name

 

Relief-from-royalty

 

22 years

 

10,600

Customer Relationships

 

Excess earnings

 

9 years

39,800

Total

$

63,300

XML 34 R23.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Goodwill and Identifiable Intangible Assets, Net (Tables)
3 Months Ended
Mar. 31, 2024
Goodwill and Identifiable Intangible Assets, Net  
Schedule of changes in the carrying amount of goodwill

The changes in the carrying amount of goodwill are as follows (in thousands):

    

Mechanical Segment

    

Electrical Segment

Total

 

Balance at December 31, 2022

$

363,929

$

247,860

$

611,789

Acquisitions and purchase price adjustments (See Note 5)

 

29,347

25,698

55,045

Balance at December 31, 2023

393,276

273,558

666,834

Acquisitions and purchase price adjustments (See Note 5)

195,900

200

196,100

Balance at March 31, 2024

$

589,176

$

273,758

$

862,934

Schedule of future amortization expense of identifiable intangible assets

At March 31, 2024, future amortization expense of identifiable intangible assets is as follows (in thousands):

Year ending December 31—

    

    

2024 (remainder of the year)

$

71,121

2025

 

63,532

2026

 

52,948

2027

 

50,967

2028

50,806

Thereafter

 

200,510

Total

$

489,884

XML 35 R24.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Debt Obligations (Tables)
3 Months Ended
Mar. 31, 2024
Schedule of components of debt obligations

Debt obligations consist of the following (in thousands):

March 31,

December 31,

    

2024

    

2023

 

Revolving credit facility

$

$

Notes to former owners

89,070

 

44,070

Other debt

819

142

Total debt

89,889

44,212

Less—current portion

(12,885)

 

(4,867)

Total long-term portion of debt

$

77,004

$

39,345

Summary of additional margins

Net Leverage Ratio

    

Less than 
1.00

    

1.00 to less than 1.75

    

1.75 to less than 2.50

    

2.50 to less than 3.00

 

3.00 or greater

Additional Per Annum Interest Margin Added Under:

Base Rate Loan Option

0.00

%

0.25

%  

0.50

%  

0.75

%

1.00

%

SOFR Loan Option

1.00

%

1.25

%

1.50

%

1.75

%

2.00

%

Notes to Former Owners  
Schedule of future principal payments of notes to former owners At March 31, 2024, future principal payments of notes to former owners by maturity year are as follows (dollars in thousands):

Balance at

Range of Stated

    

March 31, 2024

Interest Rates

2024

$

4,800

2.5

%

2025

 

21,645

2.3 - 3.0

%

2026

 

31,625

2.5 - 5.5

%

2027

26,000

5.5

%

2028

5,000

5.5

%

Total

$

89,070

XML 36 R25.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Leases (Tables)
3 Months Ended
Mar. 31, 2024
Leases  
Schedule of operating lease assets and liabilities

The following table summarizes the operating lease assets and liabilities included in the Consolidated Balance Sheet as follows (in thousands):

March 31, 2024

December 31, 2023

Operating lease right-of-use assets

$

227,157

$

205,712

Operating lease liabilities:

Other current liabilities

$

26,130

$

24,426

Long-term operating lease liabilities

209,717

188,136

Total operating lease liabilities

$

235,847

$

212,562

Schedule of maturities of lease liabilities

The maturities of operating lease liabilities are as follows (in thousands):

Year ending December 31—

2024 (excluding the three months ended March 31, 2024)

$

29,282

2025

36,864

2026

33,144

2027

28,915

2028

25,252

Thereafter

183,669

Total lease payments

337,126

Less—present value discount

(101,279)

Present value of operating lease liabilities

$

235,847

Schedule of supplemental information related to leases

Supplemental information related to operating leases was as follows (in thousands):

Three Months Ended March 31,

2024

2023

Cash paid for amounts included in the measurement of operating lease liabilities

$

9,466

$

7,024

Operating lease right-of-use assets obtained in exchange for lease liabilities

$

29,426

$

9,446

XML 37 R26.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Stockholders' Equity (Tables)
3 Months Ended
Mar. 31, 2024
Stockholders' Equity  
Reconciliation of number of shares outstanding with the number of shares used in computing basic and diluted earnings per share

The following table reconciles the number of shares outstanding with the number of shares used in computing basic and diluted earnings per share for each of the periods presented (in thousands):

Three Months Ended

March 31,

    

2024

    

2023

 

Common shares outstanding, end of period

35,695

 

35,752

Effect of using weighted average common shares outstanding

44

 

60

Shares used in computing earnings per share—basic

35,739

 

35,812

Effect of shares issuable under stock option plans based on the treasury stock method

29

 

26

Effect of restricted and contingently issuable shares

60

 

69

Shares used in computing earnings per share—diluted

35,828

 

35,907

XML 38 R27.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Segment Information (Tables)
3 Months Ended
Mar. 31, 2024
Segment Information  
Summary of information about reportable segments The following tables present information about our reportable segments (in thousands):

Three Months Ended March 31, 2024

    

Mechanical Segment

    

Electrical Segment

    

Corporate

    

Consolidated

Revenue

$

1,185,009

$

352,007

$

$

1,537,016

Gross Profit

$

217,712

$

79,651

$

$

297,363

Three Months Ended March 31, 2023

    

Mechanical Segment

    

Electrical Segment

    

Corporate

    

Consolidated

Revenue

$

918,615

$

256,025

$

$

1,174,640

Gross Profit

$

164,067

$

41,338

$

$

205,405

XML 39 R28.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Summary of Significant Accounting Policies and Estimates - Income Taxes (Details)
$ in Millions
1 Months Ended
Sep. 30, 2023
USD ($)
Summary of Significant Accounting Policies and Estimates  
Refund claim for overpayment $ 107.1
XML 40 R29.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Summary of Significant Accounting Policies and Estimates - Investments (Details)
$ in Millions
Mar. 31, 2024
USD ($)
Summary of Significant Accounting Policies and Estimates  
Investment fair value $ 5.4
XML 41 R30.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Revenue from Contracts with Customers - Narratives (Details)
3 Months Ended
Mar. 31, 2024
Mar. 31, 2023
Revenue from Contracts with Customers    
Percentage impact on revenue from performance obligations satisfied in previous period 4.10% 2.20%
XML 42 R31.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Revenue from Contracts with Customers - Disaggregation of Revenue (Details) - USD ($)
$ in Thousands
3 Months Ended
Mar. 31, 2024
Mar. 31, 2023
Disaggregation of Revenue    
Revenue $ 1,537,016 $ 1,174,640
Percentage of revenue from contract with customer (as a percent) 100.00% 100.00%
New Construction    
Disaggregation of Revenue    
Revenue $ 898,976 $ 627,952
Percentage of revenue from contract with customer (as a percent) 58.50% 53.50%
Existing Building Construction    
Disaggregation of Revenue    
Revenue $ 390,369 $ 309,483
Percentage of revenue from contract with customer (as a percent) 25.40% 26.30%
Service Projects    
Disaggregation of Revenue    
Revenue $ 104,114 $ 103,105
Percentage of revenue from contract with customer (as a percent) 6.80% 8.80%
Service Calls, Maintenance and Monitoring    
Disaggregation of Revenue    
Revenue $ 143,557 $ 134,100
Percentage of revenue from contract with customer (as a percent) 9.30% 11.40%
Manufacturing    
Disaggregation of Revenue    
Revenue $ 461,400 $ 366,356
Percentage of revenue from contract with customer (as a percent) 30.00% 31.20%
Technology    
Disaggregation of Revenue    
Revenue $ 464,814 $ 226,249
Percentage of revenue from contract with customer (as a percent) 30.20% 19.30%
Healthcare    
Disaggregation of Revenue    
Revenue $ 133,729 $ 159,815
Percentage of revenue from contract with customer (as a percent) 8.70% 13.50%
Education    
Disaggregation of Revenue    
Revenue $ 133,983 $ 110,253
Percentage of revenue from contract with customer (as a percent) 8.70% 9.40%
Office Buildings    
Disaggregation of Revenue    
Revenue $ 101,892 $ 98,195
Percentage of revenue from contract with customer (as a percent) 6.60% 8.40%
Retail, Restaurants and Entertainment    
Disaggregation of Revenue    
Revenue $ 80,585 $ 76,194
Percentage of revenue from contract with customer (as a percent) 5.20% 6.50%
Government    
Disaggregation of Revenue    
Revenue $ 87,801 $ 64,415
Percentage of revenue from contract with customer (as a percent) 5.70% 5.50%
Multi-Family and Residential    
Disaggregation of Revenue    
Revenue $ 40,851 $ 45,007
Percentage of revenue from contract with customer (as a percent) 2.70% 3.80%
Other    
Disaggregation of Revenue    
Revenue $ 31,961 $ 28,156
Percentage of revenue from contract with customer (as a percent) 2.20% 2.40%
Mechanical Segment    
Disaggregation of Revenue    
Revenue $ 1,185,009 $ 918,615
Percentage of revenue from contract with customer (as a percent) 77.10% 78.20%
Electrical Segment    
Disaggregation of Revenue    
Revenue $ 352,007 $ 256,025
Percentage of revenue from contract with customer (as a percent) 22.90% 21.80%
XML 43 R32.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Revenue from Contracts with Customers - Contract Assets and Liabilities (Details) - USD ($)
3 Months Ended
Mar. 31, 2024
Mar. 31, 2023
Dec. 31, 2023
Contract Assets      
Costs and estimated earnings in excess of billings, less allowance for credit losses $ 30,118,000   $ 28,084,000
Costs and estimated earnings in excess of billings, less allowance for credit losses 30,118,000   28,084,000
Contract Liabilities      
Billings in excess of costs and estimated earnings and deferred revenue 1,131,928,000   $ 909,538,000
Impairment losses 0 $ 0  
Revenue related to our contract liabilities $ 547,500,000 $ 341,900,000  
XML 44 R33.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Revenue from Contracts with Customers - Remaining Performance Obligations (Details)
$ in Millions
3 Months Ended
Mar. 31, 2024
USD ($)
Remaining Performance Obligations  
The term of the renewable service maintenance agreements (in years) 1 year
Practical Expedient true
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]: 2024-04-01  
Remaining Performance Obligations  
Remaining performance obligations $ 5,910
Expected timing of performance obligations 12 months
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]: 2024-04-01 | Minimum  
Remaining Performance Obligations  
Expected percentage of remaining performance obligations 65.00%
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]: 2024-04-01 | Maximum  
Remaining Performance Obligations  
Expected percentage of remaining performance obligations 75.00%
XML 45 R34.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Fair Value Measurements (Details)
$ in Thousands
3 Months Ended 12 Months Ended
Mar. 31, 2024
USD ($)
employee
Dec. 31, 2023
USD ($)
Fair Value Measurements    
Number of employees covered under life insurance policies | employee 127  
Combined face value of life insurance policies $ 86,700  
Minimum    
Fair Value Measurements    
Weighted average cost of capital 15.00%  
Maximum    
Fair Value Measurements    
Weighted average cost of capital 19.00%  
Contingent earn-out obligations    
Fair Value Measurements    
Contingent earn-out obligations $ 71,296 $ 44,222
Reconciliation of the fair value of contingent earn-out obligations that use significant unobservable inputs (Level 3)    
Balance at beginning of period 44,222 32,317
Issuances 51,784 4,315
Settlements (37,201) (16,017)
Adjustments to fair value 12,491 23,607
Balance at end of period 71,296 44,222
Recurring basis | Total    
Fair Value Measurements    
Cash and cash equivalents 100,792 205,150
Life insurance-cash surrender value 7,721 7,473
Contingent earn-out obligations 71,296 44,222
Reconciliation of the fair value of contingent earn-out obligations that use significant unobservable inputs (Level 3)    
Balance at beginning of period 44,222  
Balance at end of period 71,296 44,222
Recurring basis | Quoted Market Prices In Active Markets for Identical Assets (Level 1)    
Fair Value Measurements    
Cash and cash equivalents 100,792 205,150
Recurring basis | Significant Other Observable Inputs (Level 2)    
Fair Value Measurements    
Life insurance-cash surrender value 7,721 7,473
Recurring basis | Significant Unobservable Inputs (Level 3)    
Fair Value Measurements    
Contingent earn-out obligations 71,296 44,222
Reconciliation of the fair value of contingent earn-out obligations that use significant unobservable inputs (Level 3)    
Balance at beginning of period 44,222  
Balance at end of period $ 71,296 $ 44,222
XML 46 R35.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Acquisitions (Details) - USD ($)
$ in Thousands
Feb. 01, 2024
Mar. 31, 2024
Dec. 31, 2023
Dec. 31, 2022
Recognized amounts of identifiable assets acquired and liabilities assumed:        
Goodwill   $ 862,934 $ 666,834 $ 611,789
Summit Texas        
Consideration transferred:        
Cash paid at closing $ 267,500      
Working capital adjustment 14,595      
Notes issued to former owners 35,000      
Estimated fair value of contingent earn-out payments 42,732      
Consideration transferred 359,827      
Recognized amounts of identifiable assets acquired and liabilities assumed:        
Cash and cash equivalents 171,027      
Billed and unbilled accounts receivable 59,921      
Prepaid expenses and other 1,476      
Cost and estimated earnings in excess of billings 578      
Property and equipment 2,528      
Lease right-of-use asset 2,365      
Goodwill 155,220      
Identifiable intangible assets 170,100      
Other noncurrent assets 136      
Accounts payable (15,138)      
Billings in excess of costs and estimated earnings (179,895)      
Current operating lease liabilities (1,495)      
Accrued expenses and other current liabilities (6,243)      
Long-term operating lease liabilities (753)      
Total assets acquired and liabilities assumed 359,827      
J&S West Jordan        
Consideration transferred:        
Cash paid at closing 100,000      
Working capital adjustment 1,531      
Notes issued to former owners 10,000      
Estimated fair value of contingent earn-out payments 9,052      
Consideration transferred 120,583      
Recognized amounts of identifiable assets acquired and liabilities assumed:        
Cash and cash equivalents 14,802      
Billed and unbilled accounts receivable 38,411      
Inventory 230      
Prepaid expenses and other 326      
Cost and estimated earnings in excess of billings 728      
Property and equipment 2,674      
Lease right-of-use asset 4,552      
Goodwill 40,680      
Identifiable intangible assets 63,300      
Other noncurrent assets 10      
Accounts payable (20,612)      
Billings in excess of costs and estimated earnings (19,188)      
Current operating lease liabilities (133)      
Accrued expenses and other current liabilities (826)      
Long-term debt (59)      
Long-term operating lease liabilities (4,312)      
Total assets acquired and liabilities assumed $ 120,583      
XML 47 R36.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Acquisitions - Acquired Intangible Assets (Details)
$ in Thousands
Feb. 01, 2024
USD ($)
Milestone
Summit Texas  
Acquisitions  
Estimated Fair Value $ 170,100
Summit Texas | Minimum | Measurement Input, Inception Discount Rate  
Acquisitions  
Cash flow discount rate 18.50%
Summit Texas | Maximum | Measurement Input, Inception Discount Rate  
Acquisitions  
Cash flow discount rate 20.50%
Summit Texas | Contingent earn-out obligations  
Acquisitions  
Number of earnings milestones | Milestone 4
Term of earnings milestones 47 months
Summit Texas | Contingent earn-out obligations | Minimum  
Acquisitions  
Estimated milestone payment $ 2,600
Summit Texas | Contingent earn-out obligations | Minimum | Measurement Input, Inception Discount Rate  
Acquisitions  
Cash flow discount rate 18.20%
Summit Texas | Contingent earn-out obligations | Maximum  
Acquisitions  
Estimated milestone payment $ 20,500
Summit Texas | Contingent earn-out obligations | Maximum | Measurement Input, Inception Discount Rate  
Acquisitions  
Cash flow discount rate 19.50%
Summit Texas | Backlog  
Acquisitions  
Estimated Useful Life 1 year 9 months 18 days
Estimated Fair Value $ 35,800
Summit Texas | Trade Name  
Acquisitions  
Estimated Useful Life 22 years 10 months 24 days
Estimated Fair Value $ 11,300
Summit Texas | Customer Relationships  
Acquisitions  
Estimated Useful Life 10 years
Estimated Fair Value $ 123,000
J&S West Jordan  
Acquisitions  
Estimated Fair Value $ 63,300
J&S West Jordan | Minimum | Measurement Input, Inception Discount Rate  
Acquisitions  
Cash flow discount rate 15.50%
J&S West Jordan | Maximum | Measurement Input, Inception Discount Rate  
Acquisitions  
Cash flow discount rate 17.00%
J&S West Jordan | Contingent earn-out obligations  
Acquisitions  
Number of earnings milestones | Milestone 3
Term of earnings milestones 35 months
J&S West Jordan | Contingent earn-out obligations | Minimum  
Acquisitions  
Estimated milestone payment $ 1,100
J&S West Jordan | Contingent earn-out obligations | Minimum | Measurement Input, Inception Discount Rate  
Acquisitions  
Cash flow discount rate 15.40%
J&S West Jordan | Contingent earn-out obligations | Maximum  
Acquisitions  
Estimated milestone payment $ 4,700
J&S West Jordan | Contingent earn-out obligations | Maximum | Measurement Input, Inception Discount Rate  
Acquisitions  
Cash flow discount rate 16.50%
J&S West Jordan | Backlog  
Acquisitions  
Estimated Useful Life 1 year 9 months 18 days
Estimated Fair Value $ 12,900
J&S West Jordan | Trade Name  
Acquisitions  
Estimated Useful Life 22 years
Estimated Fair Value $ 10,600
J&S West Jordan | Customer Relationships  
Acquisitions  
Estimated Useful Life 9 years
Estimated Fair Value $ 39,800
XML 48 R37.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Acquisitions - Other Acquisitions (Details) - USD ($)
$ in Millions
Oct. 02, 2023
Feb. 01, 2023
DECCO    
Acquisitions    
Fair value of consideration transferred $ 59.8  
Cash paid at closing 48.8  
Notes issued to former owners $ 7.0  
Eldeco Inc    
Acquisitions    
Fair value of consideration transferred   $ 74.0
Cash paid at closing   60.8
Notes issued to former owners   $ 8.0
XML 49 R38.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Goodwill and Identifiable Intangible Assets, Net - Changes in Carrying Amount of Goodwill (Details) - USD ($)
$ in Thousands
3 Months Ended 12 Months Ended
Mar. 31, 2024
Dec. 31, 2023
Changes in the carrying amount of goodwill    
Balance at beginning of year $ 666,834 $ 611,789
Acquisitions and purchase price adjustments (See Note 5) 196,100 55,045
Balance at end of period 862,934 666,834
Mechanical Segment    
Changes in the carrying amount of goodwill    
Balance at beginning of year 393,276 363,929
Acquisitions and purchase price adjustments (See Note 5) 195,900 29,347
Balance at end of period 589,176 393,276
Electrical Segment    
Changes in the carrying amount of goodwill    
Balance at beginning of year 273,558 247,860
Acquisitions and purchase price adjustments (See Note 5) 200 25,698
Balance at end of period $ 273,758 $ 273,558
XML 50 R39.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Goodwill and Identifiable Intangible Assets, Net - Identifiable Intangible Assets, Net (Details)
$ in Thousands
Mar. 31, 2024
USD ($)
Future amortization expense of identifiable intangible assets  
2024 (remainder of the year) $ 71,121
2025 63,532
2026 52,948
2027 50,967
2028 50,806
Thereafter 200,510
Total $ 489,884
XML 51 R40.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Debt Obligations (Details) - USD ($)
$ in Thousands
Mar. 31, 2024
Dec. 31, 2023
Debt Obligations    
Other debt $ 819 $ 142
Total debt 89,889 44,212
Less-current portion (12,885) (4,867)
Total long-term portion of debt 77,004 39,345
Notes to Former Owners    
Debt Obligations    
Notes to former owners $ 89,070 $ 44,070
XML 52 R41.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Debt Obligations - Other (Details)
$ in Thousands
3 Months Ended
Mar. 31, 2024
USD ($)
item
Dec. 31, 2023
USD ($)
Revolving Credit Facility    
Debt Obligations    
Outstanding borrowings $ 0 $ 0
Letters of credit amount outstanding 81,200  
Credit available $ 768,800  
Revolving Credit Facility | Minimum    
Debt Instrument, Interest Rate, Effective Percentage [Abstract]    
Commitment fees payable on unused portion of the facility (as a percent) 0.15%  
Revolving Credit Facility | Maximum    
Debt Instrument, Interest Rate, Effective Percentage [Abstract]    
Commitment fees payable on unused portion of the facility (as a percent) 0.25%  
Revolving Credit Facility | Base rate | Consolidated Total Indebtedness to Credit Facility Adjusted EBITDA: Less than 1.00    
Debt Instrument, Interest Rate, Effective Percentage [Abstract]    
Additional per annum interest margin (as a percent) 0.00%  
Revolving Credit Facility | Base rate | Consolidated Total Indebtedness to Credit Facility Adjusted EBITDA: 1.00 to less than 1.75    
Debt Instrument, Interest Rate, Effective Percentage [Abstract]    
Additional per annum interest margin (as a percent) 0.25%  
Revolving Credit Facility | Base rate | Consolidated Total Indebtedness to Credit Facility Adjusted EBITDA: 1.75 to less than 2.50    
Debt Instrument, Interest Rate, Effective Percentage [Abstract]    
Additional per annum interest margin (as a percent) 0.50%  
Revolving Credit Facility | Base rate | Consolidated Total Indebtedness to Credit Facility Adjusted EBITDA: 2.50 to less than 3.00    
Debt Instrument, Interest Rate, Effective Percentage [Abstract]    
Additional per annum interest margin (as a percent) 0.75%  
Revolving Credit Facility | Base rate | Consolidated Total Indebtedness to Credit Facility Adjusted EBITDA: 3.00 or Greater    
Debt Instrument, Interest Rate, Effective Percentage [Abstract]    
Additional per annum interest margin (as a percent) 1.00%  
Senior Revolving Credit Facility    
Debt Obligations    
Borrowing capacity $ 850,000  
Senior Revolving Credit Facility | Maximum    
Debt Obligations    
Line of credit borrowing capacity accordion option $ 250,000  
Notes to Former Owners    
Other disclosures    
Cumulative number of companies acquired | item 10  
Notes to former owners $ 89,070 $ 44,070
Letter of Credit    
Debt Obligations    
Borrowing capacity $ 175,000  
Letter of Credit | Minimum    
Debt Instrument, Interest Rate, Effective Percentage [Abstract]    
Letter of credit fees (as a percent) 1.00%  
Letter of Credit | Maximum    
Debt Instrument, Interest Rate, Effective Percentage [Abstract]    
Letter of credit fees (as a percent) 2.00%  
SOFR | Revolving Credit Facility | Consolidated Total Indebtedness to Credit Facility Adjusted EBITDA: Less than 1.00    
Debt Instrument, Interest Rate, Effective Percentage [Abstract]    
Additional per annum interest margin (as a percent) 1.00%  
SOFR | Revolving Credit Facility | Consolidated Total Indebtedness to Credit Facility Adjusted EBITDA: 1.00 to less than 1.75    
Debt Instrument, Interest Rate, Effective Percentage [Abstract]    
Additional per annum interest margin (as a percent) 1.25%  
SOFR | Revolving Credit Facility | Consolidated Total Indebtedness to Credit Facility Adjusted EBITDA: 1.75 to less than 2.50    
Debt Instrument, Interest Rate, Effective Percentage [Abstract]    
Additional per annum interest margin (as a percent) 1.50%  
SOFR | Revolving Credit Facility | Consolidated Total Indebtedness to Credit Facility Adjusted EBITDA: 2.50 to less than 3.00    
Debt Instrument, Interest Rate, Effective Percentage [Abstract]    
Additional per annum interest margin (as a percent) 1.75%  
SOFR | Revolving Credit Facility | Consolidated Total Indebtedness to Credit Facility Adjusted EBITDA: 3.00 or Greater    
Debt Instrument, Interest Rate, Effective Percentage [Abstract]    
Additional per annum interest margin (as a percent) 2.00%  
XML 53 R42.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Debt Obligations - Notes to Former Owners (Details) - Notes to Former Owners - USD ($)
$ in Thousands
Mar. 31, 2024
Dec. 31, 2023
Future principal payments of long-term debt    
Notes issued to former owners $ 89,070 $ 44,070
2024    
Future principal payments of long-term debt    
Notes issued to former owners $ 4,800  
Stated interest rate (as a percent) 2.50%  
2025    
Future principal payments of long-term debt    
Notes issued to former owners $ 21,645  
2025 | Minimum    
Future principal payments of long-term debt    
Stated interest rate (as a percent) 2.30%  
2025 | Maximum    
Future principal payments of long-term debt    
Stated interest rate (as a percent) 3.00%  
2026    
Future principal payments of long-term debt    
Notes issued to former owners $ 31,625  
2026 | Minimum    
Future principal payments of long-term debt    
Stated interest rate (as a percent) 2.50%  
2026 | Maximum    
Future principal payments of long-term debt    
Stated interest rate (as a percent) 5.50%  
2027    
Future principal payments of long-term debt    
Notes issued to former owners $ 26,000  
Stated interest rate (as a percent) 5.50%  
2028    
Future principal payments of long-term debt    
Notes issued to former owners $ 5,000  
Stated interest rate (as a percent) 5.50%  
XML 54 R43.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Leases (Details)
$ in Millions
3 Months Ended
Mar. 31, 2024
USD ($)
Option
Mar. 31, 2023
USD ($)
Dec. 31, 2023
Sep. 30, 2023
lease
Leases        
Variable lease expense and short-term lease expenses $ 17.9 $ 10.2    
Weighted average discount rate for operating leases 6.00%   5.80%  
Operating lease expense $ 28.2 17.3    
Weighted average remaining lease term 11 years 6 months   10 years 10 months 24 days  
Rent paid to related parties $ 2.1 $ 2.0    
Existence of option to extend true      
Number of off-site construction real estate leases commenced | lease       2
Minimum        
Leases        
Lease term for operating lease 3 years      
Number of options to renew | Option 1      
Maximum        
Leases        
Lease term for operating lease 10 years      
XML 55 R44.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Leases - Summary of Operating Lease Assets and Liabilities (Details) - USD ($)
$ in Thousands
Mar. 31, 2024
Dec. 31, 2023
Summary of lease asset and liabilities    
Operating lease right-of-use assets $ 227,157 $ 205,712
Operating lease liabilities:    
Other current liabilities $ 26,130 $ 24,426
Operating Lease, Liability, Current, Statement of Financial Position [Extensible List] Other Liabilities, Current Other Liabilities, Current
Long-term operating lease liabilities $ 209,717 $ 188,136
Total operating lease liabilities $ 235,847 $ 212,562
XML 56 R45.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Leases - Maturities of Lease Liabilities (Details) - USD ($)
$ in Thousands
3 Months Ended
Mar. 31, 2024
Mar. 31, 2023
Dec. 31, 2023
Maturities of lease liabilities:      
2024 (excluding the three months ended March 31, 2024) $ 29,282    
2025 36,864    
2026 33,144    
2027 28,915    
2028 25,252    
Thereafter 183,669    
Total Lease Payments 337,126    
Less-Present Value Discount (101,279)    
Present Value of Operating Lease Liabilities 235,847   $ 212,562
Supplemental information related to leases:      
Cash paid for amounts included in the measurement of operating lease liabilities 9,466 $ 7,024  
Operating lease right-of-use assets obtained in exchange for lease liabilities $ 29,426 $ 9,446  
XML 57 R46.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Commitments and Contingencies (Details) - USD ($)
$ in Millions
3 Months Ended
Mar. 31, 2024
Mar. 31, 2023
Dispute With Customer    
Commitments and Contingencies    
Gain (loss) related to settlement agreements   $ 6.8
Surety | Minimum    
Surety    
Percentage of business which has required bonds 10.00%  
Surety | Maximum    
Surety    
Percentage of business which has required bonds 20.00%  
Gross Profit. | Dispute With Customer    
Commitments and Contingencies    
Gain (loss) related to settlement agreements   6.6
Selling, General and Administrative Expenses | Dispute With Customer    
Commitments and Contingencies    
Gain (loss) related to settlement agreements   (0.7)
Interest Income | Dispute With Customer    
Commitments and Contingencies    
Gain (loss) related to settlement agreements   1.3
Change in Fair Value of Contingent Earn-Out Obligations | Dispute With Customer    
Commitments and Contingencies    
Gain (loss) related to settlement agreements   $ (1.8)
XML 58 R47.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Stockholders' Equity - Number of Shares (Details) - shares
shares in Thousands
3 Months Ended
Mar. 31, 2024
Mar. 31, 2023
Reconciliation of the number of shares outstanding with the number of shares used in computing basic and diluted earnings per share    
Common shares outstanding, end of period 35,695 35,752
Effect of using weighted average common shares outstanding 44 60
Shares used in computing earnings per share-basic 35,739 35,812
Effect of shares issuable under stock option plans based on the treasury stock method 29 26
Effect of restricted and contingently issuable shares 60 69
Shares used in computing earnings per share-diluted 35,828 35,907
XML 59 R48.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Stockholders' Equity - Incentive and Other (Details) - USD ($)
$ / shares in Units, $ in Thousands, shares in Millions
3 Months Ended 204 Months Ended
Mar. 31, 2024
Mar. 31, 2023
Mar. 31, 2024
Mar. 29, 2007
Share Repurchase Program        
Share repurchase $ 295 $ 3,568    
Anti-dilutive securities excluded from computation of earnings per share amount (in shares) 0.0 0.0    
Stock Repurchase Program 2007        
Share Repurchase Program        
Number of shares of outstanding common stock authorized to be acquired under a stock repurchase program 10.9   10.9 1.0
Share repurchase (in shares)     10.3  
Share repurchase $ 300      
Average price (in dollars per share) $ 196.89   $ 26.29  
Maximum | Stock Repurchase Program 2007        
Share Repurchase Program        
Share repurchase (in shares) 0.1      
XML 60 R49.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Segment Information (Details)
$ in Thousands
3 Months Ended
Mar. 31, 2024
USD ($)
segment
Mar. 31, 2023
USD ($)
Segment Information    
Number of reportable segments | segment 2  
Revenue $ 1,537,016 $ 1,174,640
Gross Profit 297,363 205,405
Operating | Mechanical Segment    
Segment Information    
Revenue 1,185,009 918,615
Gross Profit 217,712 164,067
Operating | Electrical Segment    
Segment Information    
Revenue 352,007 256,025
Gross Profit $ 79,651 $ 41,338
XML 61 R50.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Pay vs Performance Disclosure - USD ($)
$ in Thousands
3 Months Ended
Mar. 31, 2024
Mar. 31, 2023
Pay vs Performance Disclosure    
Net Income (Loss) $ 96,319 $ 57,216
XML 62 R51.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Insider Trading Arrangements
3 Months Ended
Mar. 31, 2024
Trading Arrangements, by Individual  
Rule 10b5-1 Arrangement Adopted false
Non-Rule 10b5-1 Arrangement Adopted false
Rule 10b5-1 Arrangement Terminated false
Non-Rule 10b5-1 Arrangement Terminated false
EXCEL 63 Financial_Report.xlsx IDEA: XBRL DOCUMENT begin 644 Financial_Report.xlsx M4$L#!!0 ( +& F5@'04UB@0 +$ 0 9&]C4')O<',O87!P+GAM M;$V./0L",1!$_\IQO;=!P4)B0-!2L+(/>QLOD&1#LD)^OCG!CVX>;QA&WPIG M*N*I#BV&5(_C(I(/ !47BK9.7:=N')=HI6-Y #OGDK7A.YNJQ<&4GPZ4A!0W_J=0U[R;UEA_6\#MI7E!+ P04 M " "Q@)E8 X54XN\ K @ $0 &1O8U!R;W!S+V-O&ULS9+/ M:L,P#(=?9?B>R$G_'$SJ2T=/'0Q6V-C-V&IK%L?&UDCZ]DN\-F5L#["CI9\_ M?0(U.@CM(SY''S"2Q?0PN+9+0H<-.Q,% 9#T&9U*Y9CHQN;11Z=H?,83!*4_ MU FAYGP-#DD910HF8!%F(I.-T4)'5.3C%6_TC ^?LG_4M>M[!= M(M5I''\E*^@2<,-NDU\7V\?#CLF:U\N"+XMZ=:BYX"M1K=\GUQ]^=V'GC3W: M?VQ\$Y0-_+H+^0502P,$% @ L8"96)E&UL[5I;<]HX%'[OK]!X9_9M"\8V@;:T$W-I=MNTF83M M3A^%$5B-;'EDD81_OTV23;J;/ 0LZ?O.14?GZ#AY\^XN8NB&B)3R M> +]O6N[!3+ MUES@6QHO(];JM-O=5H1I;*$81V1@?5XL:$#05%%:;U\@M.4?,_@5RU2-9:,! M$U=!)KF(M/+Y;,7\VMX^9<_I.ATR@6XP&U@@?\YOI^1.6HCA5,+$P&IG/U9K MQ]'22(""R7V4!;I)]J/3%0@R#3LZG5C.=GSVQ.V?C,K:=#1M&N#C\7@XMLO2 MBW A(5M>5 TR M6'!VULS2 Y9>*?IUE!K9';O=05SP6.XYB1'^QL4$UFG2&98T1G*=D 4. #?$ MT4Q0?*]!MHK@PI+27)#6SRFU4!H(FLB!]4>"(<7K;YH] M5Z%82=J$^!!&&N*<<^9ST6S[!Z5&T?95O-RCEU@5 9<8WS2J-2S%UGB5P/&M MG#P=$Q+-E L&08:7)"82J3E^34@3_BNEVOZKR2.FJW"$2M"/F(9 M-AIRM1:!MG&IA&!:$L;1>$[2M!'\6:PUDSY@R.S-D77.UI$.$9)>-T(^8LZ+ MD!&_'H8X2IKMHG%8!/V>7L-)P>B"RV;]N'Z&U3-L+([W1]072N0/)J<_Z3(T M!Z.:60F]A%9JGZJ'-#ZH'C(*!?&Y'C[E>G@*-Y;&O%"N@GL!_]':-\*K^(+ M.7\N?<^E[[GT/:'2MSAD6R4)RU3393>* M$IY"&V[I4_5*E=?EK[DHN#Q;Y.FOH70^+,_Y/%_GM,T+,T.WF)&Y M"M-2D&_#^>G%>!KB.=D$N7V85VWGV-'1^^?!4;"C[SR6'<>(\J(A[J&&F,_# M0X=Y>U^89Y7&4#04;6RL)"Q&MV"XU_$L%.!D8"V@!X.O40+R4E5@,5O& RN0 MHGQ,C$7H<.>77%_CT9+CVZ9EM6ZO*7<9;2)2.<)IF!-GJ\K>9;'!51W/55OR ML+YJ/;053L_^6:W(GPP13A8+$DACE!>F2J+S&5.^YRM)Q%4XOT4SMA*7&+SC MYL=Q3E.X$G:V#P(RN;LYJ7IE,6>F\M\M# DL6XA9$N)-7>W5YYNTB42%(JP# 4A M%W+C[^^3:G>,U_HL@6V$5#)DU1?*0XG!/3-R0]A4)?.NVB8+A=OB5,V[&KXF M8$O#>FZ=+2?_VU[4/;07/4;SHYG@'K.' MYA,L0Z1^P7V*BH 1JV*^NJ]/^26<.[1[\8$@F_S6VZ3VW> ,?-2K6J5D*Q$_ M2P=\'Y(&8XQ;]#1?CQ1BK::QK<;:,0QY@%CS#*%F.-^'19H:,]6+K#F-"F]! MU4#E/]O4#6CV#30,9FV-J/D3@H\W/[O#;#"Q([A[8N_ 5!+ P04 M" "Q@)E8D6A$.?$% #,'P & 'AL+W=O1[\R>O83^SAEHMOR8HQB5ZB,$XN6RLIUQ\L*_%6+*+) M.5^S6'VSX"*B4AV*I96L!:-^)HI"B]AVSXIH$+=&P^S<3(R&/)5A$+.90$D: M152\7K&0;R];N+4_\1@L5U*?L$;#-5TRE\FOZYE01U;AX@<1BY. QTBPQ65K MC#],'$<+LBM^#]@V.?B,-,HSY]_TP=2_;-FZ12QDGM065/W;L D+0^VDVO'O MSK15_*86'G[>N]]F\ KFF29LPL,_ E^N+EL7+>2S!4U#^!TLG1-?=2516):.RCFU@& M\A5-X[Q[Z-O<1LF*"I8,+:E^36LL;^=\E3N3"F<'W?%8KA+EZC/_K=Y2K2R: M2O9-O2*@X1T5Y\C!9XC8I&-HSP26C]=*C@P82)#6N-?OH!]^Q?37C?R>P-;*> M[4#N93>9OZZ9B1268[O]Q80$JAHB=0ND;CVD+RD5DHGP%3VR-1?2A =;29&: M;LH$5#7$ZQ5XO7IX,R8"KI]M'ZD1PE@\V*EX[BH?/%#?D+-?22 M#5K5=82]%C1,C(4$90T!+PK "[!1NT'Y-@@9ND^C9R9,8+ ';F/'QMB$!@H; MH@T*M$$=M$>V#/0@JHIX3R-C#X5])@]WMP^/<^0^N?.;.Q=]=<=G>2.G]Y-S M$S7HUY :V^6<:]?AGL8>%ZJG9C/M&7*E>CP1%VC"TUB*5_7?-]Z,(^[7-R9B M6-04^2!FX#K(<_J"IKYZ7(-%X.4)H[I/'['L]]IVE_0Z%WTC+RANRDM*7E*' M=^S[RCTYVW] G]5UZ"$VUQ6V[/6[Z$H-YO$270N5?8W4H$53ZC(283"$P-3S M+3=2PY9N&DB6-[%CVT;F4P0C7"8C#&>;]\P3?:2>XCG?QD9>V.X3UZ'?I)S MRJ:@95["<,IY#UJ,5S/!-T'LF?LT[#G_TPAZBN"$R^2$X<#S'G3&$TE#]%>P MKAZ28<=^W^Z:1ZE31"=<9B<,!YZLKX[5ZW\U&&S0QXX1ZQ2!"9>)"<-QYS/W M5+UF*QY#D>F(R85CMP>]BB'G%*D)E[$)PWEG'D@5!OD"8?+S\R_(95XJ5"6- MD$>2$X\B-0>[DGO?SM"/]KF-T9H*M*&A^94&]FM(3LKD1.!LHT*^KR= ]S5Z MYJ$)^(C![=0XXL"JIEAE.B)PE-E7$-V\>"L:+UEE$#YB=/_D&M,?+&O*5Z8A M4BL-35(A]*M:_GZ6U5'-(:EQ<>F(XY-Q26H"JYIREOF'U,H_TU@RD2]0ZG=N MN@4T;*QL\M MC<2G"#^D##^D5OAQ(QJ&Z"I-U->)N=_"/I5+#+"N*5^9>4BMS',3,;'4#^9' MY2!7*A9$:QJ;2PL;5H.>(O*0,O(0.+'L"[EBJI 07L.E(EC7%*^,/J36:M'; M>=W-EO#10RI5D(WU!&HD_DZA9G& /AM;&Q%C&'U)K MV6BB1E2AHKXXQSLB,%A9:PJZ>?5#*EQC#EB4#FJPKK_ M"V8=[)?J"2_;1DZ0I]==\ZW3XFRQ53W.-FBM\O)\G_N.ZODR02%;**E]WE<# MGLBWCO,#R=?9[NLSEY)'V<<5HSX3^@+U_8)SN3_0/U!LX(_^ U!+ P04 M" "Q@)E8<,\,!]T' T( & 'AL+W=OGBC1Z^-F34$7 G5!#( MD9^:C R*XVMB,;9+N^?5[ M90,&^UID:O*A$]NYNCY'NM(YDOOZ+4Z^I6LI,_)]$T;I36N=9=LOG4ZZ6,N- MGWZ.MS*"OZSB9.-G<)N\=-)M(OUEWF@3=CBE5F?C!U&K>YT_>TRZU_$N"X-( M/B8DW6TV?O+C5H;QVTV+M0X/IL'+.E,/.MWKK?\B9S)[VCXF<-_";!J_ MW]Y\1J[(TVQ _O/I9_*)!!&9K^-=ZD?+]+J3P9M5 M^\YB_Y;;XBV\X2T/?O*9"-8FG'(#:=[7-Q_(Q;&Y.&_> ;Y'TOQ(FN?Y1!/I MI^G4&\]);S8#GE\P/D4" T^@YM:7=.LOY$T+)D\JDU?9ZO[[7\RBOV#L/BC9 M&5=QY"ITV;M]/UT3R4!?RSUWPZH2JU +QV&:6VRZ\[KZ=\ MZF&AN$H5S"Q%[$.\ 'B\1" MCG4+9)*-.4^"$L.GZT MD 26+[)(Y#+(2!BGJ4Q)O"*?&&N[AIN3S:^YU88DZ5;F2T7X V-<0#)/&9LV MM0Q1H8S$">; *W#.YI&SJ>7\%#W_4]8NWU-V3'J9KUGC85NN;5;8(E'\D:+(]09/SRP0M9* LJ.(*0R3,L@1S<8KVD:*MI3B, M7F%JQ4D@T>EEU[N548M5H-6C+-,4#H[,.2)SM,@>$[GU@R61W\$ J)Y5/1JK M$<& .G4(W*SU83W*- 1MZ$+W"-35KU=QFA7H9)H%H-,P.:2?1$'TDBH5DM\7 MJFB@,-3,44_?NSI0IR@CV[U<16Z-FJ",.94.J$=QASH-TX314I*IM@OF<>:' M(/Y) L5$?&" K];[-&?OIX8#RU(%)Q+(7,9.9\4YU!/WP/1E-9T\>M/Y'Z0W M'A#OOT_#QP<0UC89>W,4,:LCYA9S[2I@)(XZIM4P"5@I_$RKM=V1UYMY9#J\ MNY]?3;Y>/<%-;@)0L!P!:X,\5,$B<=2T&6\ 6RHWTTOWW60R^&TX&J'@1.VE MCL5=853!U>,LRW)$4Y&68LWT:CTD M2QEE%W1T+Q^@H+LDR()"!<,X>KG*9+*!K>YSAG9"7=08=YRJ0T3"#,=JF)V\ ME#ZNE[[>P09O_1_*(Z);L[J:094X9K6@D#B#N:[5L"[S4O2X7O0 9+(#6[*( M-\I,^<5Y!%B+9QG)58#/ UZ7- :NKHX:B;-<\+ -J$_VO'KIN]W;I7,3M=#9 M+?5X*5<2*FD)E@F\[0X?D;H",H8METB@2]U&<\M+J>1ZJ3P,22K#U540I;M$ M.4$4:UT0N7LJUGND2)C=N 7BI6QRO6P6FZ"#MPL#'UQL/CM1K(@(FL)@5A4L MLCMUW-/N/T=;BB77B^6Y$[V$MJZ%G G7JI],',O!N4?_!ZS)HVY16[0<2)L!<-0$LU9+KU;+PGR="A&*L*R&G4*-5XXG$ M,<=I7BI*P>3ZS>*91[H$MKX+9#"45:@7HLZ!EB+']2)7V*1RU"]A1;2->-^0\?J\^%>AV"FZ0,2G7,NY5'HSX1G\TG_U_O):.!- M9S_E6]GY'ZA+%!]Z-/Q1VYK%BV]M\NDS96"^DC8QVY12 M]8^D:S]1)T:[;!TGP5]RV291'$D2I*G2W/PD:9>E&5R ;4#[3(OB[]3'/T]T MWE.E< N]'%X+.J9<,;-VT(8&4M>A#1L.43H&H7<,O>4R4/X=UF5U/@K>D2S\;0#K- H8 ML06&8SJU#R1(G'#-IJV'*/V#T/N'J%1Z=!0EX@NX,.LGS5@@,VS+:CB_ M$*6#$'H'42A=7B_K.%S*)/TI__:4X76 N -A@^I5C2X6"(IW>IAP#KAT$D+O M)&K2G)?TNPFXM2]B^"$'%H@>3$B)7:7IFF#&-(J;SD6\CPS9J+ ME"ILBHTIMP)H5#BEB>E8EF^FE&7&=%P\6XCIF.G='!>Z^"6#FXA]$!6R)I31:=CP?=$:&N,IF^*L2F\ M40W+]#0NE<"W#/W4=';W=7GW^=/\^OYV3FZN/U]_G=V2Y#X%2#X!3QW)\?A"YMAV"#[F!ZWUW)+0UA M8N#&DB!V8$Q__\WVK3^ZE/Y'P1JZW4JWVQ=]>L.2!"+<2B'/,R5Q6X; =G25 MP 6A">YPFH5 \*P@H8"(*9)P*4&2,YS]B"<)%?*\:X .O?I%K_H,2IP(/"P)2,3Q]<8: BHQE&ZG/ M$G@*04K"UT1/GW[Z-IG^\=JR1BV9QS;#H%OEL%(Y[%6YP!0$ D$)GMOAXP79 M4D%V-,FA#DRV.*$RQK.U$_W0Q;"&95U:=HO]A%&#?E31CWZ.OF#$6C7F#;)7_*QW9^0.\E_O)3+:'64@6T[KNM[;>A76#:9 M7Q*NW9]Q[_'K0>;B>Y.Z$_F_P)0 M2P,$% @ L8"96 )Q77(/!0 F1, !@ !X;"]W;W)K'!/N;W"D*9:0HAASY02P-^_F]13+LDR,-@Q@O M$I >H\A/?HUQ2$X#"4H?-Y;!;D^S&_*P?_!WV,/T^;!(V)5<1=D$$8[3@,0@ MP=N!-(*W$Z1E#KG%2X!/Z=DYR%)Y)>1G=C';#"0E(\(A7M,LA,\.;WB"PS"+ MQ#C^*8-*U3,SQ_/SC^AW>?(LF5<_Q1,2_AULZ'X@61+8X*U_#.F2G!YPF9"> MQ5N3,,U_P:FT522P/J:41*4S(XB"N#CZ[^5 G#FP.'P'5#J@IH/6X:"6#FJ> M:$&6IS7UJ3_L)^0$DLR:1]^>-L.EHY M4^"MV.')<5<>F-^!^<)9CE8S9@!NP+,W!5??OH-T[R.K_&63>L!5A-7[8[ V_30_^&@\D]@JG.'G# MTO#//Z"A_,7+^8N"78R 5HV )HH^7#HOCOOL\'(L'(W<,5MTWH905TT%&GWY M[1R?8P=-S="4RNZ"3*_(="'99.ZMLHGPG.7+;.)PIZ&(H)\_&JFVH:L-Q+:= M;=A(U?F$1D5H" GO$Y*FX)"0;4!Y=$;KJ<@V5:,)QS%3=$WI@#,K.%,(YSF/ MCS/W_AK<.RZKY$SKXIVF?>9<$+AS,QBBEE<*IB8,L)E=2O-VN99J;;9,2^H MYD.?X\/OK.=+^8"H7;+04%N$'#--,8T.Q%H6H5!SAI.]'^^*;H+N,=CZ00+> M_/"( =F"-6L)6-WCF&7@)_$-ZT$!>0V#G9_U?_PN0^6D@S0;-O/AV"'5ZGA5 M82UR4*QR;!HX=H9NH:Y% MKU8]*):]Q7+^,O-8VP88[G_3MN4+&:;:*H"VF64H=@=K+7)0K'*NLRH)N6Q6 MJZ^R#17:3;:VF6XBV+4$U/(&;:%ZE$/'NF#@/8R6#E\WA!KYV[KQ1=$NOTQJ MO41"71J._318\[(L_UR M*&JM1&*M["Z;MIBINJFV9HAG9G6UIZC6/"36/%'IM 6-/1)933*>F:TT&R#Y M;),CPLDNW_M)69MPC&FQ,U#=K?:71OFN2N/^&-Y.BEVB.DRQ:<6^^W=!G((0 M;UE(I6$T(^+[ '5;MSP7U!+ M P04 " "Q@)E8&=]B#TP( ?0P & 'AL+W=OI6H(E^9F=H6J"K=JIS69RP^3>NA\=T RN M@,W:9B;Y]RL;@M'# F\Z^9#!T'W:ZF,]^DAP]5R4GZL5YS7ZLEGGU?5H5=?; MUY-)M5CQ35J]*K8\%Y\\%.4FK<5E^3BIMB5/EZW39CTACN-/-FF6CZ97[7OO MR^E5L:O76<[?EZC:;39I^?4-7Q?/UR,\^O;&A^QQ53=O3*97V_21SWG]3(\HRV_"\RHHG2#7S,:-0ZMQ7\S_ER=O$9-4SX5Q>?FXG9Y/7*: M.^)KOJ@;B%3\>>(SOEXW2.(^_CZ CHXQ&\?3U]_06=MXT9A/:<5GQ?I_V;)> M78_"$5KRAW2WKC\4SW_P0X.\!F]1K*OV?_2\MPWH""UV55UL#L[B#C99OO^; M?CDDXL0!]SF0@P-1';P>!WIPH(H#"7HQR\@X-W:1O\@X/?YGZ? MK#;3<5JGTZNR>$9E8RW0FASNW?SN[>W\_]_-$8?YS%Z\?-+]#/* M5TL/AN\9W;O>]&-JEWY MM=<_MOO?+)=9\VBG:_0^S9;CVQS-TFU6IVL#5F+'^L!KT87Y$B5IF6?YHRD9 M[$QS"BWR1#!YI),O9(?HO4 M#$!/4Q?CJ\G3*0FZS1B' <%$MHMU.TJ)$SJR6:*;A9[KNZYLQG2S2/PC]&@F MY88>0\$4I]3TF6-7PS1;RNMNF"7X_$'%#Q M\HF/IK_\A'WG=]/C"PF60((Q(#")0_?(H?M#.+2B#DS S-4>B+%'?4*(\AS' MD%$32# &!"9QZ!TY]%ITVL/A;;YH!F^.7@C:VE5QEB^*#3>Q:?4=RB8D6 P) MEOC:D.&)6=17YKUS5E+^@V/^ WMWJZI=FB\X*A[V?>RUB8< D@=(L!@2+($$ M8T!@$JOAD=70VJM.6=U/A$B4F:C8-HO:"O$OO%QD%5^:N+8B#^4ZU%=^RF,= MA_I\B4-E90AY3TP/>!)/2G=T3'<$DN[3A8DI]=8H0U,?Z MT$Z[$\94JM@S=RM\(C]@=)H'MHL1\/V"6?,&S)T&N8&^=\5U#>9U^0<]9O6K6 M_5G^B(H;U-D&GKY!)LUTO^ M/6UG.RBD'C'#ND SQB0@&H>@D@HH&H-"DZGN5!5LEU7:NF#<*/1+)"JU+<^K MM%G9&,D#U5) T6*L2S/4I>I:$S0F.Q=3IJ032;"U*)_&V5.VY'W*.J@( HH6 M@Z(E!S2I<_O$4Q7CLV8R"YUV@>WB13L&BB%PNRL7*]$]C&2 :A@'-&E"HIZO M#6:@\@0H&L.ZCB$W02:C$S*PM:+6R#@[S8"*&@A[R3FC =J6A9X?C?+YT-:!GF\I^ X.'>U"! 12-0:')6[&= MQ$#L$L._I=(..W3<(GKA/O9H@&FD;>)"QDU T1@4FDQE)U,0NTS1LZ]NI@]? MLK&N&XV)$X5.H))BD!]HY/D*>8G!#F,W\'VJ#%V&R*):"D(2F8]?H.-G=* X4_S'"NH]E##F6$ZBH$#ASU&% ,&C0! M16-0:#+'G01![1($["ZZ/=A@=DUJ!E:GJ1@T: **QJBNG\A-D&GK1!'ZHPX_ MG.V@H 8L FNAUJ,'>PWSPQ?.&% M>NI7>4!CLG,Q94HZ$87:SS58-]'MOH,Y )5(0-$2JA]1&(<1431I=M9,9J$3 M-:A=U+AD$]T.,9@,71<8DT@5%D%C)J!HC!H.-)RV0*:B$S;HL/,,9^<84(F# M&@X&8$_;00<-FH"B,2@TF;].NZ!V[:)G!]TUK"_H^E,%(+'NPIZ_,=4/J MAEZH[D,9[# 10[FOC38&0QH0C_8MN3JI@5YVS,"R[VI.F"X&]'W3$[*$CT'1 M$E T=DE.9)HZZ8!^]TD',TV@4@'5*_*QYY+0<]0S)*!Q$U T9FB%VH@]2Y.3 MGPIH?CI"9/LQRRNTY@_"TWD5"(AR_VL,^XNZV+:_'O"IJ.MBT[Y<\73)R\9 M?/Y0%/6WB^8'"8Z_B3']!U!+ P04 " "Q@)E8C'Q&\6(" #,!0 & M 'AL+W=OTT%%30/O"E]IWO>>Z>:^[BK9 /*@?0 MY+$LN.IYN=;5N>^K-(>2JI:H@./+4LB2:C3ERE>5!)I94%GX81"<^B5EW$MB MZYO))!9K73 .,TG4NBRI_-N'0FQ[7MO;.6[9*M?&X2=Q15=]$^'W1,O WXR6"K]N[$*+D7XL$8XZSG!:8@*"#5AH'BL8$! M%(4APC+^U)Q>D]( ]^\[]DNK';7<4P4#4?QBFP#D.0P(:T#X$M!Y!1#5@,@* M=95964.J:1)+L2721".;N=C>6#2J8=S\BW,M\94A3B>#ZCT>7BQ&0S)? MX#$9W2SF9'J)UG3P_6IZ/1S=SC^3T8^[\>(W.9I1"5SGH%E*BV/RE7PD/E$Y M>E7L:ZS(\/IIG;WOLH>O9(_(1""9(B.>0?8<[Z.21DZXD],/WR2<4-DB4?L+ M"8.PP?_#HS?*B9KN1I8O>I_N'FJ@2] YG,#,^+FJ: H]#X=8@=R EWSZ MT#X-OAU2_TYDSWK1:7K1>8L]&;(-RX!GBAQ5(-TG?HER)_MY@E"!7=E\HDHHUU^ZC:KS-2KJPD_C"W\=5Y3;+ M$XW;<_C)K!A7I( E4@:M+@ZZ=+O#&5I4=OSNA<9AMM<_ -02P,$% @ L8"96""Z-BF5" \R0 !@ !X;"]W;W)KCV9+>@RE5_YBA;PRYR+95K"K7CNR96@Z4P/6N8]XGE1;YFRHG-Y MKI\]B,MSOBYS5M '@>1ZN4S%VQ7-^ SX9!J 9HB1^,OLB#:Z14F7+^4]V,9Q<=3R&B M./O*7/^A6(0TPX[G4?]'+5M;KH&PM2[[<#@8$2U94_]/7K2$.!L \ M]@%D.X T!P0M _SM %\K6B'3:EVG97IY+O@+$DH:9E,7VC9Z-&C#"K6,DU+ MKPS&E9?#^[O)_;?Q]>!I=(TF3_#O=G3W-$'W-V@XF/R!;K[=_SE!7?1]X:\/]QUP_+T]?3V?WV;/VF@WC_>WZ/YA M]#AX&M_]C@;#I_&/\=-X-#FSF:V:-K!/JYSY3*[2C%YTP%LE%1O:N?SG/W#D M_+2/P$^XVE-J6PY_O8OM3]/?B^ M$_PU!8MDK )/7X'SI'4W]LV78Q(BF5(+COAUAO$<8.Q$.%V! 94@D%-%T M^;R[EBYKQ@:(?A+C!E)3*/3#%J3)'FGB1'J5SH 7IZ7+CHGQ7C^,&MA,F21H M\6CLU>SEO;/017 (8XBFHNA"4HOX-&?/>B'LROBF,4F0WQ8@?MVE3$REV,^FDY-G/ MKDI29P!^J;Q/0[4B#SEZ@J6 MP,J/^%,)\K-F.]:[IDCLYLA'FE&V48PHOZB\P:JP27!=X)CP8'ML=;$+)JWQ MIB9#[&;#<;&!3<\%Y"Q6A":_=4.2-(G:)H;]N"V$UT2(W4SX(.@J9;,=O4@$ MA07BX+X"ZA^([>"NCFAC,EXW"))F/FD32W#;OJ^9$;NI<:@BM<9+9:Z?*N%UH6Y!-LTROE;IJ-AO)*N2)G5V@Y@8&\@B M1DCKT4!R?*[RT%LE!DW@[]5*HE;<-:T2K S"NV"$#K9!:'3 MMBA$G 3]T2CT6;,=ZUUS,W%S\V"WBU;IF\[.U1Z#K276L,5R2-A9KNL5JR%, M'L:0VQ[DC%L533D21V$+Q9&:L(F;L*]V?G'D+9G+K]3CV2[M$Q1"V]KJ-<1& MRKYG:&:A^##!@=>B6LW>Q,W>E=ODO'CNEE0LWUT)DYJ39D9JD8E(V(:TIF_B MI$E=L?]2Q6O%'9KV"Z+0W$$6.1(E7DMJ2FH2)M&'.B[CNQ^CR:]T7(B3W#\< M!#YIMF,KU!Q/W!S_L!;9(E7T"?X#ZPBK5[Y5+O37FJU4U\-J PNI0X(;-KG% M)H?!_]OV7LW^Y#WVYQFE,XGF@B]U>?%1#4QJQYZ1^%JD(M(6O6K^)^_POW8: ME;S,N0 _ 9R2Z6)"IX,ZE"D1_8MHMCNW^"VLC9,HZANL:1$,?2]H20_]FM]] M-[\_I&]54TPIP2!7W#;)K%U*6^WL!4VL[C?^36?PZTS =Q?8^X"V5J434$NE MU?O!S#>+9TBAL45-N3@\%#N& M7M.^[Z;]O3?ISUP? 6Z2>]>.W"88>.W8ZT3 =R<"QV:O:C#5G++"-?D\,N/ M_Z,^]^O4P'?7YX=K\8XVEN+;*+!L0FT?)?R:N?UWF'L/["R<'*;)"0REL@B%T51ZS+5O!JX>?5N] 3UT?!Q-)B,T,GUJ+HZA6?5U_[!W75U M,?KW]_&/P3=U%,"JB$F>*@WTPV:>9!.,H[;@$QQ\8W:S;"O:+VA*GUFA6@6Z MCJ""<6O>'9@L2KP0A\9>,^74M^@V#6JN#=QI.HBQ?[H_N3/0YU4:SZ_PV; Z?U-/4QT' MNDT%K(I$.9W#E-[7/B 3U0F;ZJ;D*WU(9&PO=V]R:W-H M965T&ULK55M;]LV$/XK!Q4H-D"S9-G-@L0V$*<=V@_!@GII M/]/2V2+*%XVDK*2_?G>4K'A%;6# /M@BCWA,:# M*#5&$SEI^% VP=&JI+BP6K>>+-Z#,!7\Z?;"R.^"\[7( L&S4U8.4.L>JC@# M-8,':T+MX8.IL/IW?$:T1F[%D=NZN CX(-P$9M,4BKR87\";C5IG$6_V?VCM MH>8_A^)2N?&-*'&94"UX= =,5F_?3*_RVPM$YR/1^27T_T;T,M1T F?1X.V; MZR*?W<*]U53> 38O/J#V\+2Y2^&3*2)NL?AX^#J>WOQ)#U>IM!'AE M05;9< CC1$94/B320T=]@;]VM_O-R\!JC0^N+7NYFG8*UAU#=Y+R02D(?6^9 MP%>$;2M5E1)_'T@(A5!'#/1+J7=#GR'F4]?'@\J@(_ MG%"HG6WW-759&B(\$3NL8!-$0#^!O\@4T)'? /'# :<#WG&YPQ\M[:N/=7&+ M5Z1&F)=QE7HHDH,]?X<8X/PB*Y;!QW1;)2O!.GR[];*2PDGL3T=]$6-;A^[/^_5FM"WR-$Z/C!W?5]]=>]?)^I%>SI: M4+BCT'SR^[L$7-_Q^TFP3>RR6QNH9\ *'3O0^L[2;1DFO,'X[*[^ 5!+ M P04 " "Q@)E8]4KYL601 !!, & 'AL+W=OANZ[DY-0K\W>L#'?G42NM[HFB=MVI/ST].O3S;:NJ/7 M+_F[]_WKEWX<6NO,^UZ%<;/1_>Z-:?WVU='94?KBVJ[6 WUQ\OIEIU=F888/ MW?L>GT[R*K7=&!>L=ZHWS:NCR[/OWES0>![P7]9L0_&WHI,LO;^A#^_J5T>G M))!I3370"AK_W)HKT[:T$,3X):YYE+>DB>7?:?4?^.PXRU('<^7;C[8>UJ^. MOCE2M6GTV [7?OLW$\_SC-:K?!OX?]56QCY[?J2J,0Q^$R=#@HUU\J^^BWHH M)GQS^LB$\SCAG.66C5C*[_6@7[_L_5;U-!JKT1]\5)X-X:PCHRR&'K]:S!M> M+\08RC=J85?.-K;2;E"75>5'-UBW4N]]:RMK@M*N5F_#8*$*$UZ>#-B=UCBI MXDYO9*?S1W9ZJG[T;E@']=;5IMZ??P*IL^CG2?0WYY]=\$?=S]73LYDZ/SV_ M^,QZ3[,JGO)Z3_\/5"$[71S>B0+MN]#IRKPZ0B0%T]^:H]=?_N7LZ],7GSG' M13['Q>=6_U//\?F=SN?J?[N9^O(OWYR?/GVAWNA@ TU_3YIP@^9@3;_^O,:7 MRKK!]':C GXU0(0AJ+#V8UNKI5$$11BA*N\^C4YB?6N'M1K61JTM(JB'3*VZ M\BY E!I+U.H'Z[2K++Y>3&N2@+UI>8#S)"3$NO(;0-^@%KN <0$[5>T(!Z8M M:8=+YT8LGQ?RH=5&-;#,WB+$PU]G;(VKBKUMJM#&VRL8&! M[@D=_?STQ>+M%?]U]N(K!0%X^L[H7AD*'_6]JXQ9 PT?V6S5G5^QKR-+N9O0M_.G@V6I/1D_V53@1 MK]%X/X@S].:7T=*YE[O?=VA2=FN&1_:E(_U&;\YFG:N/!J-;:VY%4EU_0JZ0 M!1U<(P0*2MIW-.! MG1[&WLS9N; 1,B);!=2AUV+%TOCXUOHZ\)JD\B2PA3JMJV%;RM3)B&F]% 3- MB/,V-E!,4T!,KOTA\*2'&$-BB=?F\Q\TA>B=_-$..U'[;S9T]([ ,HXBB)\ /A;7$!Q&-1@WZCC3'H7&KV]'<'Z*."8-K+ROMQ9N;('"MF^ _$V/^ WU_6GATX37SG\-.MI!%*(3,!F6R> M8D5D25?#?X)ZX_%/SE(_7"[>Y#2%##9B^S9+-JX/'I"XBC9[UKJ8J[>LB(TN14= M&:)U!&(#SL49BA1&*0*'PCA#<:*'A'#D^XCX\FP<$YR O$!% 6 OU-IO@0Z] M>&FV.L^A+,+S8.&X;ESA$4[3>8GMV2/IBI!&A[5J4+2&>1DQ60U%Q" ('CK_ MM]GYWPGF_$R8D_S^^<4AOY]&_E%_!QA#^<@JFAEHR;(B<25DA3* ^P4G )H1 M*(\@S3L"206%F.CA^&WRO/2;('^6"9#K#PM&\0!7J5GML$"9FUBH"9<50)'2 M)>@F41O^O3+ YO'YR _I:,!=4VDB2D_L5Y+) M?1NYR>C' $TBM[L RA'$ 8' TA A7 W<[2&H7.%H@9(Y =L3B\6P$6N)O9RZ M,C1_:2.A+]<@BB$\%'Y%%JS%G_.88==1\0AAHH3"[WAO>".V)^HZH[4,90/D M7' PH"GF+G>9H%#*$7XGP5:U='+6/T:1HEA./FBG=YP%2)-R1E&:9!JR\$QU M[0BQJ5@(""9*DY(S9CRK1F$ @W!1CN]KL"7>*AN#=1GKG>1/NH6 3I@W625F MM2LI%"??^"'2<-D[@#<&IJE+^,!$16V8O*3FMEE-KDH3S=U QQ/9V'C8:\O< M(A9*$QRELS.G\\O6KEA_$71R:R\.WAC04M922JJ?VR&CU*>QEKS+F3'L2RN5 M31;GH#8]%6Z)#C B3%4#J5*SGQT/_I@IK77=.!P0EMS@@< !!PZ-KGY=*6SZ MB 6)%<,M0226H)9P"GCR(.Z; JLH*A*)R8Y/+N(K!$6*78Z0&#$3ZLA.<_7! MU48"3MH.CI\3SP/7S++I3Q'B>,PSESQ=Y 7!6W#Q4#L/+2()< _ M;=1;KF'"N$RJ]GV@2#Q[_D(6!:]EL*GARM60-J)JDT*Z]5.I0I7U-&8_H+4* M&T+M*'9"[R5U>,A"@+KMVE;K>YC.#(.Q9NJ',;XSF>51BBX&8'&IRF#O2';( M6=0D^1HUXKA-*++$UDGH0.=1$T2BS"Z#+#=7"[NQ* /VY*#-/ODE3++];(XL M4GPSXL>0#AW>.+]U+,@]*'(/X.>!I+.XX7TH ME$Y$TD'.LKD.VO,-/PXIP"06]^9P?RFYM)ASH@;$7M,Z<_43)<>HPK(9T%%; M>4="-F,?0R# L+'1@)K7J*>)@2="P[V+JX1:4I!?16>8:':*C%C_!JZP[2WG M6?+)2\35ENU$]KN"JP)D_^Z)A90T2@K08R(4 RNT:4/Z:1]/FD"ENF; M$+LR(DW<=#YI:1HY-5%C\XKUSF0F]4+KR;&S4X@L4&GB)"/(OLL5PSZ5X_R3 M3<=N KEJLR]POZ<^!$%-Y,2IEO/.FD#R7A/QX]36DCWVC"(M;\T?C[DVBH'$ M>$:%?30.<4%J%5$Z@"4:>*M/!7X4]^'W2=Z,)[.,#J1Z-@CXQ1HE76;]&7JX MCQQ'/W -:=\"7J9FK3?Y!XG-!V]H;0Y6!S_73 _B=QTNC8J58_;#A M6:C"J%./AW2(F-,KPUZJ8]B6_O2 .!>;S(O.63P3:'X(X@24NSB>4F@\6#9U MPU-!BZU%\_V40X1_L@M2/1O[OV&$EG386_+>*D4[,TW=251R:0$FN(7UHK&Q M5\W-S"69C6F:WBB_CP7L\)D/Q?"@[M8=540Y#')'%AF"C,3((G:E W.?-MV0 M$4\&-PH=!3V?47Z<%DE-ZJ(>(=SE3D3(!#@'EOA]3F)NQ$E16JI&B%2)BC1/ M+@NY;#K@(%2IY96%RY:=;%3_JR&'_WXT,4":'B[%W9#4 [RWFEZQ(+) H6HQ MBF2)S.8X$.S:"RF)-2.1QJKWU-CQ&[ 6$JH.B9E]F"_FN94=^Q7\&7I#*1[D MVM/! )>NMT/KHWN;X 5!Q8MVF.IPY.(^!3^(%=5O*,+1:Z.A2,%N?2.."_J MO12[C\%,FA(Q.QA&-9&G.J.$AF57G,MLN!'*WD8XBA=,F:N0]\564><]MS'* M'9Z8^6I._DM BK3E6TZ(%2KG0"Z'E+H/D90'@P[D=PF_F)_S#J+#E)&1&!W=\W)M MIZ?4C_/'>C7GY-2U !_;R]K@!],@_.LL;I3F.ZH:-NQY0'<^?XL6M5 MND"3IC,)E5JIL=%X[[HP0A.6\L@'0\IH'#FQLF%PSZW7_0<9[UP37R]<2YK$ M7Y<4:-17=%(CT5?C"I"BSK[FUO3Y7"X$8*,913*MSPKABBR(K+$Z"Y)Q N5[<;[33DK_298^O5\ZC M4M797XE V&"2/,X,A># 4P1&;[JQAXE9XX?7DPYA?3>$Z(WNN4$M:"W=\FS)]7+6QDB=*F1DQE=3+W\FH=T M*4"2U!T[];,#;7PA$X?OI0Q?4BSHB<*]ZZEWUXMT.Y7N_58C#L&-AKJF%APL M@[%^9=A_Y)Z:_QSHLBK,8MGFI2H9^NAJ^_U)ONQ=M\ M.\PT"I##-S[1/0#AQ)&DJHK-.+K,CLA?-.NF?D6,O+1$JC?),9G04EH]IF9[ MV9[\&#-:1=T%)[0>ZL+"C'99'Y.CYCJ)W"F[\BP3*#$371;W.60%*N1E4NKZ M-(WT5]=$2P#)A.#DD%BP3A-%'U%A^XJ"IP=Z=9#X%%T-7HT1KOX#Y0[CQ)/S MT[/GTSNQ/9'Y\/(.C;R/?TNIA('98">6_2>PXN0ZG&WE20)?-#2CJQ,W_>+L M]/G\#,C!X<\NG FH0 %B,W:BJ#QBSA%KH$;]R&Z3WFT6?'#79>I"NGBBT;IW^4BE5BG M,!'=]_RTCM-.H =KO;^3EH+N'8(I#SPK;T;E91HU MDI!J4EYXYV_S^_A+>18^#9?' M]0@Z !NX@FDP]73^_-F1T/+T 4#/C\27?D#-PG^N8273TP#\3L\@TP?:(/^_ M!E[_&U!+ P04 " "Q@)E8>K8X2&,2 "]-P &0 'AL+W=OO>!G'^I7+TS;E$6E/]2);;=;51_>Z-+L7UY,+OR#C\5ZT]"#JU&_Q2Z+V-/B>TDCMC MOM"7G_.7%V,22)3-YN7%\B+)]4JU9?/1['_2;CT+&B\SI>7_)WMI.T/CK+6-V;K.D&!; M5/)7/3@]1!V6XS,=IJ[#E.66B5C*'U2C7KVHS3ZIJ35&HP^\5.X-X8J*-N53 M4^-M@7[-JX_Z7E>M3E:UV29O3=74T).%$,TF>% M?G388:%GH^2;IDO^_*?E=#Q[WK4N+(PU,^NJ^%WGR7ZCJR2COH"V627-1B<[ MC%=8O%P;D]O$@",P9Y%I2YTQ2V57NJ[1H#&):6MG!Y@L30H8,O[;FK9J,)AJ MB!G(Q"T/C9ELD>M:LG2'+U53-"4FP'#Z(=NH:HUE M0I!F8ZP^E6N4?%*EMI=D_Y!*/4!45=.@6=D"X**B6C0PZE3R3U[K/01*MIIF M*3)50OX\85:J^6OF%%M4ZVB^]UAVU,?J-9BPP7!%E14[598'R,Z3V^2G7UZ_ M39-=V6[O, @^%3L:C.9QFH?B%#8.W$=_S6IUF=BB$74U=YEZN0H,!@D$]W3"+(<&@\['_<\V$9OL4HHZ*XMRCSU?2$$ M'$F#?RG4N5-%S0/A8PE\DC1Y2WO-H\LHV+/:M.L-/ Y#X!]8!';D4Z,:4N3K MDG%',*H'$6KN-?8=CD94!$HO"WHD( C+P */X1A,) ,H"5>JKC"DP,0(5->U MUOEEN\/75?& Y]A#+,744;.L:1D)MB$M9BV!GU11?T&#=I< YD=#[72=0?GP MFSVXJ2QCRR LJPY:;(7/DB?%TZ1HD@W6J78$3 ?&S&RW1<-[R3B^,S#PG:J; M0@,X3PIT(\76Y.!L9\3RGLT (=!K0H2&LW1?J<./%ZCZ^U0F_NGWEQ%0)*) MQ,"J"@)(>P2HF_KV%0LZ4[=E9IQY=_R/!BL M;JB/HD:_!B)@>J(6Z@XX2+(:V*D+!7GP[4[CY58W+ -1"(@/ _*[/5HV>*U: M4$9=_"Y"L/IX80XB- UFS#1M-&$9E*&SE@#JU][;O[6NL""R[MPDE6D$#3!6 M@'4%VQ%SJS4IMT-,K6%SCBWOR';8XNIDU9:KHBS9GH.J 3_#<@TK!F:.:(MV MS&29HM@+&& UQ4+ 3UQV(XH4O,D==C'X@1]E:E= 5#8UTB.H&\ )A@2L_#>J), FGSB4II7R MT-T>UKQ^L/:66(T'*PTD!FIL"Q?5C2SP8?F2@Z:PQ^/C!Q"-V[=*-;1NIS0* M?(&"W]K".4T@&P1!(;L0S)9F=BSH7K"PYJXLU@Q=RUN6: LF%"S3V(9 YFE3 MJ *[H&*U)D^<2\](_W #L*$[XD"*]VD]V&\B56BT?$I6*ET?4C)R;XDLW[V" MY<%\K:-\7H[MP>[7-F>?,TH^/^KLV3=['V]DMTI3K2^)CSIP6,S;N5%A/6%H MFM]+XV(-K-?:!24N$!#7 MSO-VKB O8!N.B@:QA-U!+LDA+O8XE[!,?$JGK6ZI*\+Y"D8E/ C=V8:)*%Z0 M,R):LTV%9Y2SP .AA$-Y'S?[0#"AS#]ORWYDX77K&$+GG>@Q?(]\'HL8E=MR!5]8R>EEQ;Q6%S61WT%5!N<$Q"-CK0C%%)34<)NU-82G41S2>=MZ& M@WZP-=P^QG@J>\%*4-946"NT=P_$R489N&CVJ?3:LO/=>#P_HA^M"(02IA($ M(6D!9T[?RC]LL]XR>W4J%?DZ53^V>W470VM6!B'34N8(R-'Z+7%C &&?TP8@ M>>309;7!L$)6S1'7BD)*(65QY'$\GX5%=1@AT2(&CQPGVWP_$CY#^YA&/P . MP5[B]]X!DC["N&12)E MT))/"P3"#[4$5CE/FS4A[O:2G(ERGMBG$CKHU8I"#PY\!V4@*QOTWY*1&$[/ M)?@DE^3C3ZDAZ#/3AQBE:%S43B6-7CI*"*O.X.J)VPMI,Q02/&5VB!&*Y60; MY(Q$(H7M4;K$OL @0M+J<+FG.L4. 6UV<" *]EED) 0565W(^:.C+PH&WP9_ M"&S* K%TY*:\ .EH?>E'%,5%$$Z%'$4^$II*XXXO@6V?X\2P>FTY)Q4!Q:50 M2)H.B1)3H1 RHY?B%<)566P+2:A2CME-VU ZRH'5%^0U 3$*26#M X9^ M+I MA*3G_-FE:3ZX\&XVC7)C&(W]XFQFMT.FU%:%I-E'@T1DT/-*Q\&Z%;R?&]9[ MHZ"C_[)=E$U)L8O@?-K=Y0#,31Q021[IU@*(CM8CR26J=GNGI7[3''9L)UT\ ME9"8C7V*ECK;2(TK)BX_CB*^H6P8[4O$H;DO 244$[3$QEM)A=SSI[)(H:P0 M-,64^"[@80LCPP!?V$6TV]TIW,@VU]A1VGHX/G$(')K=>WTXG\@*2IT+YQ3' MU2FZ#.TH,9.V<6]6D>(*1.D2LE)7:S@^&H9*5!PX,[+T8SSC=\%TZ^C8@B&S M5VN'*>8TX:UN9N=&!&BV9<"XS*\LC>-H;%VP7Q?Y(Z/S.C>U'5@?8P'&)17! M52LFQ>S=SQQX$['%&ZT^)(:4P VNCR ]<2* Z?: MB%33+JSW/B8],3;*V251!00I4H (T*?92GC69^]*$^VH^N!]_V\M:$F'])16NJ2 =9-E_%XZHBW73(!'W)J^L)Q,*"&@)]D6;4E)^(8 M8RW""QW >]7&[0'[.F^*:;#GD/1S%.3*?U0D/T?6A@JM5$CAB9P&3\DL6J/4 M]#MW1M658S7G;>VE[,V[0H,T991'K/Z:PAO=( MU/;U!::N_9D]=0G>^>7V M@A>C\%[;^!68=/EUF?(X(Q_Q99A KMR$9H4,HRRG* MVW9Y<%O&$8Y,"5J=CR;?BT"CZ?<)'8J$;"25=,2ABK+C(=0OL5[">-#)91UZ)>P5U04K"%OWJ]D6%<:Y],QAV(YH_>1 MB:0B9\_-W/$3G]GPF26=QJPDR?Z[ 3(F$Y9Q.G[^R9U4_1S"/GXS>2X')7E> MT#/5SY$=]&I-ELT9C9]22LE!,[IWO'2T3%9Z=V1$>^I6>4BC8P(*D**S)J^9 MW!W<43F5@ZV"> K S?6NH-$W9A\5A%.7X:;>R]*0<4)]=!(F%2N[25:EV4O: MI=A2I9H'Q%=FB]A_)1X]P.(__? M :MO2$;??7D7D.?QXU]]ETS2R7*1CL>WR+*8:\">),1[?1"-WCQ74ZGB["]\EH&37[S$7[6-3%["8=3ZZ[ M9Y/Q>#3NR8SEW,S3Z_GX;)O_]-]_=<,_N\S#WU>(]WI^JMH> %35$O E] C* MFE]/TODXJ&IVK,W9]74Z6P1]SR8])'RF,,N49GTXF7]^/4^7DWD\]'0( =/K M=#J_#9MU.YI%S7Y"=-)L,K+FXYZ3V2R]F8:>R]'-P/B3Q2W$6$2]1HL8RLA_ M^CXU'OYV.?O:\)-Q.EV$5K>C>=3J_6I%%OJ&[@5 \?:T^WB2+F^GW??KT?7 M)+?+='*[B"2)Y_C(QU$I_B*O;VM5N3K5CU4C5#EHG\MQNEB&(1>#>W-SC7GG MD7"QYOY*.=Q"_V)O(/J:]O?E__HKYZ[6O M-#"1?3MY_5WO^7RZ.]0)REK"-&YO@CH7RQZ,ODNNIS?I[2(8V.+(_'V-U9OH M\$0=(F['Z>PZ4,YTT=ON0'6WZ3RBCNEUC],BQ_TKYZ&GK#!/)Y/8\)9#U#.> MI9-Q3 O+@4G>(G1'NO..8B9==8')VZ=^<,O;L=[E9'5,-T&9<_WFDMA<,#Z9A^H/LUO?,G)ZH[:NS" M;"YLT;$$)Q_NCA+?2:BZ%,#4\.IL9<%,TK&R[4,"9SZ>]NY_47Z3(GKK#*>Q[Z2P+594S1]28NH](Z#G+>7?/Y*=TR*J%GJ:!SPNGNCW8W,@?7 M\,?M26MUWIW#DY#<5FX4]>O:W?E5N.FU 2"C;5-4B;$-5VC[YU-<;#Z#@-:& M0S"ICE(-XL W!+B Y80KJ(3WE8U_'Q_,J< 6Q[J3S%A*&XIK)5+,D-PY"'YY M=PB7Q;B41*=&O-B*#9[/A&6T<.0T , SLCC-/7(=RZ%5Y]Y.5Z9$QLM6[>^* ML+:#3^XJ03_H3/-!AGLZ2Y[PA*:U>&V?/ONW8X.C2?WCTXF/%/'M,[^5&WJ] M8S2ZJWIJH=YNTZ3D8SI2$RN23Z!A(H7<6X/:D>B,X7*7D3="8#=>S@>M[=N% M?3-('=EC2Y!+%WVC%^=(\>@T%O$6<<9B%I[\;\J!^Y[;\?.@W7>+^0UBI"U) M[D[\OIO-)TC?_:/XCF9L7CV;:I+_1LY)1PU,EW2XKHTM):13%B*O 5KFKN4<7GF+MKU^F_9:?I(5FLL/VX"6=0%12KU" MU_'H9G$A0:C_TI@=_T#KSC0(>?@CG7OJFAK@_&ULS5EM;]LX$OXKA-LK6D#UB^S$2?,")-F7*]#L%DEWB_M(2V.;5TE4 M22J.]]??,Z0DRTD%?:LMW2N?#<8 MV&1)N;1]75*!+W-MN>G?NVC.3_5E2[.^I$ROSGJC7K-PHQ9+QPN#\]-2+NB6W!_E1X-?@Y9+JG(JK-*% M,#0_ZUV,WEU.F-X3_*EH93OO@C69:?V%?[Q/SWI#%H@R2AQSD'CE*9Y]5ZI9GO:.>2&DNJ\S=Z-4_J=;G@/DE M.K/^KU@%VGC2$TEEG<[KS9 @5T5XROO:#IT-1\,=&^)Z0^SE#@=Y*7^23IZ? M&KT2AJG!C5^\JGXWA%,%.^76&7Q5V.?.?Y'*B#]E5I&X)FDK0["XLZ<#!^9, M,DAJ1I>!4;R#T5A]\U(E7+X[BX?A$O"\<00,G;J0C<:/L%W$M"^0BDPE9I.(G,NI. M&O??%'8FK24K@$8[%-@O M]ZW#P_M'S\7O)6$OT,UV9&Z]^O,]H-M2*\=G J)X,;.U2+4HM!-+"9?!8AT/ MPFU+V(,ED4G"5L>Q@'\AK5A2NJ#&"1>W5^)H=-!OX^GI>&L_\_F9M%;-U]X: MJ;()+()C8!576VAC/Y%(8Q2[_J%S=$&L/=MFKC/4%0X?MS2$ V"=A<8V^ZX] M]]6+X\/I\8GX0'>4B1$OC^*3KY5FQ4JC$O+F"P6BCD[K-58IY%>)S':(^)!W M7//6,X8%#IB:W5NN'.S0L@(7<*Z*#DV]W)H=[C=ZIHUW^&S=) P"0)YX$;9/ M'=>G6K4HU!SBPN9/\8>.JZ5*EM" :I\M)'XB8$T M93GL$6S7?'!;CVIP3"B?(1'JU;%X[676E<5G^Z8;@?^;YZX"@#A[H$^SH\Z1 M)IZ;"!.?M$,67$F[]*HG_,*A ;-OE9278C0<1M/CN+-2A^>S*\VN#VKN2TAE M&)UK.G^:]=#%N!-<_1RW:32-1]] 61U<#2#%$E3O$77*O0L4XL:5+]/A^DH MBH\/=R_\'WG_<>C^N "(AP?1Z&#XG<9K=OVH )A,Q]] \6,#8#*)XCC>O;#; M>@D. _1R-6)X1'T&Y"PQ4> ME($<1:^M!',48.]'"5N@V#E/O\)L\_9+P7C, M39AR55""P11@KQ:J@ LQR50FX)ZOH5PU\]"Z R'1X@#!&;G;#8FVKBZWG5I= MED;?0U@'/AT 3BO?XH$62W:IC7N+;B1O3EWWN0N84:805AZ\N4KD6^Z /BV M @[R>7M$LXUL:)O(M[8\$G,ONBK(;%FD5K]3W+H2&,I\GP77>@-A@:=G7R-A M*M\>!EO[D[Q8ODW+ME)#E.@)$]\GZ3OR]6H43P7E9:;71+7;);[F,XP&*5N* M-E9^>738GV*BS#+$2/!XRS 43G2"+C2A%A8QB(2PYGNZ.T+YS9JJO;L*-WW: M@PR>U=WW0Q<'O5M!4'U38J-X!2K+2C; 5#/(9W>Z7/CJF0/0@6C M2""'GH6.!EKZNP@*'7;=P'O%YNC%X!VT*"FKJ^PNK^%+Z%@Y0?:WE6S]&II" M.%064>VG8U]PVBK2/6./YVH!,3YF:V[#T)#R54[H&]DJ!@U[A:BLDR;$65EA MKV2<6@#80KU[3?U%/^+;$Y57N9E2.Y^'6 M+Z$MU6&B\^,P,A=<-XZM(5LFL)&'0 ]=W\;'+\I-9$C.Z 6UX)[(4J' ]\5M MQ]NP9+&HAZ-BO54#6JT07UD*M6R5.4_8C1= '!9MR?0&93:1GU[)"28A.,-8,H:![\%9.JH@)ROJP,4Z>QN1FY(_5=(9SX? MC)".%T_T_E'7UE")NFG6I.,^0Z/\% LFG1N="PS1PW]P4(R.\;(]086Y:<;7 MIZ*342QQP:7/FZ<=AS=JU=5JGUG]T,E7./O2_'6=PV_^:U/.)]^;=*\5VT__ M@BX/EIKGCL%F=\?;0##L,"/XQ%=B6"^$T::+>RG&<30>3<5[A#_OV+2'!Z-H M>K0Y:P*R@T>"W?J;K.T;N.;Y>CR-XN'HS>,/H\-H.)H^_G"1_KL*12ST(AO' M-Q2C.)H<;Z:@>!P=#J>/^'2T)\:-5N]GYIH';>V#YU.7H(/.#35ZIH6_A_?@ M4;AP6=VNME?]%^&&>T,>_D\ _R[X/BVC.;8.^].#GC#A[CW\<+KT]]TS[9S. M_>N2)*HY$^#[7 ."ZA]\0/L/D//_ %!+ P04 " "Q@)E8,M[E?"\+ !R M)P &0 'AL+W=O/S+&#!?+%ELCN MJNHZ7KTB]7QC[&>W4JH07]=IYE[T5D61/ST[<_%*K:7KFUQEN+,P=BT+?+7+ M,Y=;)1/>M$[/PL%@RMKDJZ,+9Q?-<+M6U*G[-WUM\.VND)'JM,J=-)JQ:O.C].'QZ.:+UO."3 M5AO7^2SH)'-C/M.75\F+WH ,4JF*"Y(@\>]&7:DT)4$PXTLEL]>HI(W=S[7T MG_GL.,M<.G5ETM]T4JQ>]&8]D:B%+-/B@]G\HJKSC$E>;%+'?\7&KQU&/1&7 MKC#K:C,L6.O,_Y=?*S]T-LP&MVP(JPTAV^T5L94_R4)>/+=F(RRMAC3ZP$?E MW3!.9Q24Z\+BKL:^XN+'^$NIG28/N>=G!232];.XVGWI=X>W[([$&Y,5*R=> M9HE*=O>?P9+&G+ VYS*\4^ ;:?LB&@8B'(2C.^1%S?$BEA?]P>/YW:/CNZD@ MGKIV^[90DRRFJ9BBO<+FS)I1&(UZ^ONAN;?7%GE2 =.E9.F(5P6U>H MM?/7LJ4H5DK(Y$9FL4I$H>)59E*SW 8B-QME R&S1.A6NT--&NM@K1,2M>U0 M0R26Q;1V!+7AFI9M5B9-M\)L,NAPY=SI1 -'ZGU79IW+; MIN;&%(GW"E%:L M88W,=,QJE\"3HM^<[[[_Y"6=*"O9 865F5LH:U7R]'"I="N12YT(68@X-8[< MTNLBA7V MD!&U3)A]'@[%>X2> J"^HF4Y,@("#'+#MCX.1M,)PNH*OJD:]Y&7X#!'6:.^ M(LOYR*2;KS::IC.H04NTQ=9+P 'RG3"&P3B-5UMLX*F2UUQ^_-\ND@&"(/WO$I,Y/%)=(3UNRO MBR8H\,J#2(0=]ST>CH-A-'O"?C]T0@QON=O<19?1!+DH$)H;E95=P5,DU/GX MB;BJS"+/2546[26-GIT6:MB91*& M37B4#->91X"YXJ5KSMH\1_H!1 M%R, W *SZ1B5R=3#VRS*F7[W$KG>_;+)DN:=.@< FM7.EYQ#]&.DJ92@P/\#OQ7 M%00LP L1VP*=85X6G)@P%0M=D^V)=IRZWAW<[A!\;WO)0(LFHMWG4X^J6%;O M$-8?%Y@,Q?H&%2\Z@RQA,I+T2_TZJW*!=&UK82F@)J+5F [8!0HS*3LEV3=XQI4,PW)/#'O]7_?_4@.,;+J?F1NO+7_WI7^N%.MC>KOJ9$O(3 MQ_"R KEFT1Z"-1VS/ZL"U6T*P0S-]B.#PUL"A_K>AR,0T'3ZL'^^)ZI1,@PB M"+RJP?9#%VSO-W%PF]@P8G;XT1#5?*BW3QHVT4V28TS2S%.]]('QT+13N+X% MKC2JD!$)>;L@(MXV"9TBD4U&H\0-3BW%:'JZID&RT?QO\4BN[E^H,[J#[R8#(,_PZJ?QX,9[-O9?I1],=Y M_BR<=%E^HN:MOQ^/S[]Y A@%$7GFL&B^SP#?9X#O,\#W&>#[#/ /S "MR]I/ MM\X'W6G@".??)]+'./XP#,YW.?XQ;A^&>QM!VB:W,_E]Q;?- ]&Y'S"^D;=7 MQ. OI^W%RBIU%V^/QGN\W7.3H^\@WF7B';C['/=#?K\3<2=I>29X48T4GB$S M#T#U(C$32CVW D9XGE(Q;5@3?Z8+/[V\NGI7#06/26,X>,;7^//PV9- K)1, MOI32 J;\RX&W*-U2!N*MVHA?,&T@5%8%7#X2&$GR.+CH*S!"+'"&+*97+X6TRQINT:"$7!3* M[K]X89,\W/-;U>/33=^[O6)7JH($5(VQ^ ?85C83OV::4NRZ:#H(5M,Q7/?- M#%]/R_6T"'"1)=XRO MFF5=8P35A:(H>,>Z,J?W5,WZ^]^%>6?_7:_"4)X_J[DM2EN-TU%;083E.!M]6CK/_OW+T#FT+C'_[8#G> MB2)*5Q?"D9>Z5>VRR^O:M6I9.8MN[53R_>E:&?-G\K5C_T&^?FP8,&=<->%1 MPR&&UFU Y-HF#2K)Y ,D5>*?KS31<'0V_R2%&1N,TS3^$ ;1KT<.@@(_O(.X MJZZX2YERE5_SCVHJS6ZGEZ"63-R:RRQS-Y^K!'O@PYAF#.0A(_;/<;H^P&2= MU,P\AK=3570B2PY(.V,H/1(ZY.<9/ZOA4;UC0K^ED;6R2H'W-FNL'U0P;]>P ME>B/I]VH*T&LCGX7$'3&6$H76PN0RR5R$:N0=A5@P^ .Q]GS7HTP=376& .8 M=JA'1?/PK<6YFSR>$5'T.J/?SO!1US#&J!*(4^ND07FEV/XMYR"=%+E/;+\. MKS\!/_R R\RV)5X8P52:>E3!WI;TR\.,:="AR7))2&4;4?'.HTX^;Y,P[6'[ MXM6"$'\E*=$[4%9F].R@F>0/+>8:QYVVE?*SO)P-J(;2@-3Y:#:"-3_THT<3 M;#+EC_67PN3\JZJY*<#X^2/U+V5I M >XO#!I&]844-#^SN_@O4$L#!!0 ( +& F5@#/?Y$H0, '(* 9 M>&PO=V]R:W-H965T4;(F=4P,%,F!?1/)X+\\=[TXWWPOY M66T1-3PV=:L6SE;KW;7GJ6*+#5-78H=B^7<]'IFK=X+T%U3=?%DSA>]$_0#W&P!#+_.P+A02#L M<0^&>I3OF6;+N11[D(:;M)E-[VHO3>!X:Q[E04NZY22GES\+4>YY70-K2[@M ML=6\XFQ=(]RVFK4;;K8KI5 K%SZBGGN:K!I9KSA8N!DLA-^Q$,&=:/56P8>V MQ/);>8_0CI##(^2;\*S".R:O( I<"/TP/J,O&D,0]?JB_S $@X7X>0NFL*[5 MCA6X<*AR%,JOZ"Q?OPI2_^T9_/&(/SZG_47PG[>07L&/&H'7K[+0C]Y.@D?" MKUN$8DLBJ("WH,V12?G$VPVP1G2M!E'!9K0G$9B"2M34/Q2\Z45$IPB'NKP> MM?[?USLT/O."U?" &^IJ&CZ8SB2_(8TQ$IJH-ZQF;4'N:WB/!39KE,>\#T?6 M"XC2R,W#W**$\NW U4M6Z)_()&!;FGY@98>Y#L)3]CZ(;R2: :0D3H)K6LH3:;FT M C<+W" ,;*DI':E^DBBT[Z9'2"C><6;?34F?^&Z>SNR[9S+?=S-_4D?-CT:G M2A-0*WW<))A29:C]"7E,:9%E)T_^W(_#L^: !N6FGW84%*:I#B/!2!T'JM4P M1TSLPS1&&;+A5# U5B3J7\T2!^0PX0P'+7;]5+$6FF:4?KNEH1"E8:#[2E 9 M'0[&P#AF+O\!4$L#!!0 ( +& F5CY@-8A*PD *,8 9 >&PO=V]R M:W-H965T^^!NKFP9Y4;M?7G4&G'GC4BV6@@?.;JY5PT(HFP_5YSOV?;8O7:YK_K-"RO.[..2%4F MRSP\VO4OJK)G0OP2FWO^%>NX=C#MB*3TP185,30HM(E/^;7R0XM@UO\&P; B M&++>41!K^48&>7/E[%HX6@UN],*F,C64TX8VY6-PF-6@"S=OU#R(AWFN%Y*\ MY*_. [C2W'E2<;B+'(;?X# 2[ZT)2R]^-JE*=^G/H4VCTK!6Z6[X+,/WTO7$ M:- 5P_YP_ R_46/BB/F-_H6)D^6>5.?FIQ\&%_W+ M9_0;-_J-G^/^/^GW/(=I3^PS$3_],!OV1Y=QPK8F$OQHC[%,A*42FP?E(4T,](/*HGFS^1JHE3 MJ0XBDXG.==@T:T_X;3"\?&;D5QN4%\$*0C3(M&NCG#\0.WO9[4_[S>=XO//Y M -T X>'DP-A@/F_=/-LC\&Z0ON[/9(35DPX+F\YWROC(J*9U3)HB5 M=8QQ^Y2G@R$X3LZV ^/N[&)ZMJ=,;LWB15"N:!@A.'8T/!'3:;??'[<&1B^[ MH_'D0.1VDU['3;K?WZ3?E5C*)R6D$2>S2;_7!Z[E.4GURFCK#G;WE.*4J(?] MRYH;?PXNS\3*V2<-X!'SC9#";TRJ$QD463"7YK/OBO52(]XT17ZQLAY+,2=1 M4?:BB;)*+$KII DJ,DR4"RAL1&!+*F5SKU,MG5:^)SY!J\8XF7M;Z^(IM,@\ MF236I>Q/)[2!'-0/85?L8F,#1:'ZFI P,G&!^4 1F8E3>29.AI.M:Y"3XG1^ M)@:]_M<#S]ZF?Z!2@,O/=V\_O;D%M:?*!'M@!=7=LZ[ T!JUCYZ2#,EUH1D$ MRA6I<3*83EH[H;TOY3Q7@C%!<:[0XER%0-F"U^BU/3>HKRL-A"2R_Y3YAO)V MRKK#_5XA7.N-RK3SY'(%WQAV;(#;M>WP%8=8@1.%:O+.$1*U"]+#W M*GAL9"[)^, ;\ ?*O2>&]$)C'D)!-[= -5:%[%%?2E+79ET>JC@M54[J=9M] M+PV,"4XGQ+^]^TQ%"JZ7EE0F$$E%(E?48\!Z")4F41QRTFPJ*>0"J-&830S^ MOA$]<55BK@"WT#N3"FXY]8YQG=/$LGV@\"O$ZV+?!STAML@ M,(?[O<.;C#J97LQZLX9FNU ^29U3#/6V: /01-[C+ZPMV(,UW"L^X]5'#X\*6>H:1/W MVF"WR"+F>%IAS<>'^\<&9UA,Y,0Q#_&DMV=SLMRBNH(^#J6*P#2FWX9ESIW% MUF11#L(9#?!G;'M7%$H:(L0BP(V,6J96%!9QA-2,GVLC,F<+$= /4SC0$V&0 MPL^:TP/\%HBZZ-LEHDNF:8RFP*J2OUFW[U?6_^KY*TX8[Q1\CEZ?_*SMP1*J M;% 87@#,]>,/3,A;P]-)_-D9'O: E/RS,SPB>OY!3-7@6LMJ.>\#AF^-*0OQ MM@[)]^Q/6@0O_D8Q^/TEK$.$PI8F^)A.E RI]K2"E*T =ZZ6,@?N^Q)*2NX$ MY\H .Y(*VB/D<+U7>?8BH^^TA>G YX63!7"XZ62H^-LDD9X#"O6@I#;CJ.I- M@T&UC0_5Q',K$P4B.$GPSWC5V+J2&[8RV+H5J5>2MVAM[;D:,M'J;+GUQ .H M/9Z@M5;6,7FQ+Y/,^+'Y+S+2/ M41UXATK'=7)M2ZKTJHXRYM1$TXY!!U%%\4#+E]98=]R*J#[WZ--+])VYU 4\ M./>T@3)^,#E@,Q;FJ8B4W%-A.TUUG;'6 >%[(+LG?K%K M0MDNS$LDXK 62/%_N+YR19UMNB@P2EBTFUM1@RKV*M=TC\0.UQ]&VC1VFJ0 MIIL&$2T27BF@/AWS7*:PT\@/E @N>(1@/Y+<(;]@LQ'J0.HN7\6D-2(=UI86 MOG"41H105;V&N[F[KRWQM,V$@"^7]FY$X33DDOJ1O8]AL)V@F\AZI+(MN>@'8X[+>;$AQ/ M2J>V77(.:;FOW +%FP4B&&*"G M)$B_ II^Q%.C*6 M>KX<07#S74E$<9#*)&9'4*;JZ%$GN@T8M:NEJ<75IZ;FA@&[;Q>*DKY;N3.N MI9Z=6LMVR94Y6P^E3F8O>X/M*?"HJ;?AX"R0E8&+AL.I4Z_H_!0!ANG-\1L0 MY'@A048AM%'2<:9(7]T0>7&:XD4Z+[[S/=%=9;W<7C\\7P*HD[ MC7JX:>,>N7+LS)V(<7?6W][DH&VD;J@_W%YE# ?=B];-QK W$B^HCXSK+IH) MR+UHDX'3"S&I^4T/;[(NNOV6Y&;E[&#EY,C">%6S-6/O@NJOGO?';BK/6Q?' MB(0%7X_310G*7;Q#;D:;&_C;>/&\71ZO[]]7)Y!<92"E!K4C7+P2CQ_!KO@: M>FY#L 6_+I5$KM$"S&<685E]D(#F_R5N_@102P,$% @ L8"96+*E,&=H M!P @Q0 !D !X;"]W;W)K&ULQ5AKC]LV%OTK MA#LM$D#Q0WY.,C- )NVB!5(D2-(&^Y&6:8M;251)RA[OK^^YEY(L/V8R7>QB MO]@6R?L^]UQ:-SMC_W"I4EX\Y%GA;GNI]^7KP< EJ[ M&;C2*KEBH3P;Q,/A;)!+7?3N;GCMH[V[,97/=*$^6N&J/)=V?Z\RL[OMC7K- MPB>]23TM#.YN2KE1GY7_K?QH\31HM:QTK@JG32&L6M_VWHY>WT_H/!_X7:N= MZ_P6%,G2F#_HX9?5;6](#JE,)9XT2'QMU3N59:0(;OQ9Z^RU)DFP^[O1_@^. M';$LI5/O3/95KWQZVUOTQ$JM997Y3V;WLZKCF9*^Q&2./\4NG!V->R*IG#=Y M+0P/AC7YPJ"P-YW1! M1?GL+78UY/S=>X60W,W 0Q>M#)):[C[(Q8_(C<6OIO"I$S\5*[4ZEA_ A]:1 MN''D/GY2X:_2]L5X%(EX&$^>T#=N QNSOO'?#BS(32[+41.\=J5,U&T/*'?* M;E7O[H?O1K/AFR>\FK1>39[2_H173\LM^B*(BA^^6\3#\1OQ58F,5D2BK$?S MB;5,=*:]5BX26Y7J),-I6:R$^K/2)?K(B])J=)[.]J)"U:PH3)'((E&97&9* MH-&M]+K8!,6N+[ZD2N3&>>'TIM!KC<-08BSWDUD+GR)!W] BM!/@#CK;<5&8 M)*E*K59BN1>FLB(Q%HJEAX(U#"GVG#8Z^DPBR;)K<['3/L5!H0LHE9GPRN;D MURB&VXQ.&$8:D =+?GK0" P!L!!AC]Y!GF22F*K@V#85 M?(!MMIK*[:&L62?4+8K'22[E/F>E1$C(4Q&RL%(/<$/LP''T[5*4ZA4GI=:" M@PF+WQOMP3OU .)WH1"GF@Z;FXU5&PX:85V-YOUKL%26,>%"\&HT M[,?M2IWTM;; E$^M4FV=UMSW+(,?XPB5JK939JM $89T\[(NW+O07CA/6ZRK5J"NMV>J5XM+F M9:83C4A@-T+X8J,*]$5&K0QM)*R+Q+)S:(2EL2 F I8]'8L=SL[ZP^]Y>]I??'^*F*^=^IU::H 44=*R:D4;RB5H_\Z9 MMG(,#5["::S "B6LB>N R,H"9:K9C%QI1-[BLO$O8[7?UX0/RLQ+6>SI MP&C^QL$4 >L(D(<:BJ)]F'* BEIH+A"^Q$94_JXOWASE\+>KB:\P@@#_;AD M50[9="ZT-1%^JLN^^-GL%%)+-6O)41?.$VVZKF=D1%D,G@)\<-$[-IY4EGB! MO**&@&&%+C-[15SXB<>EU,PI#;U@"+#O_V'19 D_'L!9'D5!"?NCXPK&_>&W M"OC+FM*U4@GQ CP+:LX(U&Q5(9EN/N"O 8$-]PE)?Q0[Q_1T4OOWL_*!J:?AA&Z58'@6C<;#KB>3:!+/ MVH7W@$VXM7PQ-\JW-SO?&T6C">^?EB1?1]6A*>XOSO6D43V/*,?AE M#21<*.XXFLVNZZ*>T.FY&X ^W'L/*JYS=7SM:J]3IY(O1L-1%,^O7XJ/I_>T MYT#S'%#-]^>J++/F=MF]07:NWF?7.1YZ_SOB^L*0Z+Z&Z$#B"$N=A[%X)UT: M1CO-<9E3(L^Y.$<(5;A/?RM[5^(ZFLQFG2S.([+Z')XS2QI+P2P GX9KF+&7 MN_WZB';8[J1]OO1V8M!Y,80;SH9??SG!X GOB-K5]@W;V_!BZ7 \O)Y#:C>X M;L&Q-42'_?FT%R)J'KPI^373TGAO&PO=V]R:W-H965TAVK MECH=5[XGAU\:'SJ=\!BVZ]@'TK4(=79]?GKZ=MUIXQ:WU_+N2[B]]D.RQM&7 MH.+0=3H[VE>TK_[+\$/*TG+;7IR$7CG0K4 MW"P^G+W_>,GGY<"_#.WC[&_%D6R\?^"'3_7-XI0=(DM58@T:_^WHCJQE17#C M:]&YF$RRX/SO4?M?)7;$LM&1[KS]P]2IO5F\6ZB:&CW8]+O?_THEGI]87^5M ME'_5/I^].%VH:HC)=T48'G3&Y?_U8\%A)O#N>P+G1>!<_,Z&Q,N_Z*1OKX/? MJ\"GH8W_D%!%&LX9QTFY3P&_&LBEVSO?=28!Y125=K6Z\RX9MR57&8K7ZP03 M?'!=%74?L[KS[ZB[4)^AH(WJ%U=3_51^#=OZKPLPXK=7&V5.>G MYY>OZ+N8XKT0?1?_KWBSNLMOJ^.6>1][7='- CT1*>QHO.'LY M.7OYFO;_W=G7U?UYI5[5J-[\\.[\].)*W5EMNGS@-[V/@TG'W_X@I0.AB3?_ M1F.IY%5%(:'[E:6MMB(4:#M8G7PXJ$I4+95QE1UJF%)VU*B#B?P"HJDEY;C) MK*K\$"(IWZC-@)\IQA7;9'X1*SN(^2%"*@Y!NXH@L:, HGL#%K$=.8_I!KC M\*N!1IAY4#I&CZ=$-1HLM6P15K)W8J#5.U(4D^GD$(?1![\S-3]451BTC0HD MR&\W>F-)61\CQ1*P%:D,04/\^IG!"263S%8+(Y7 H=UWO78'!J/R+GIK:A$\ MQA 37DC:X&QK8'T/[[5S/L$AJ@VG KI NU F\.4(X6U%Q,!+$H"C U2LB1-Z M]O-55+X'9DR0"(0)KE;"M[T/2!(4(2,.-+K$@0/( Z@&O(+!8 =H+7R 1E> M3>7]*7O:F!"3^CKHP*H NCG8LF@CR)P&L"?)/VHMIQ7G/GQ[>H="M!:1E-@ MR?50TP[#KS]V7:24;$XGK&E.( MJ1IR7>?$P@K:$'Y+)T RTM>!'R>+$@Y@VI U"!O%3X$DT^0@4Q&WSDK]HZ77 MX=OK.(-:W >%(&LH,QS?!C0?6VU,*K)O1UD4 $3KH1J;[/YO;W377WV0@Z>K MGV<'GVKEV%!HB5\64'\\6UU,3G'NGHEP#JI6@T+YJ=$F@*'L4!)2R!7!Z^!. MD*M9#B+@Q6H51S/'V$TN_KLY%=Q/!,#'_Y[[ @>.E?M!?L&\K-II8#ZK6#J]7L430!3)7:B1Y(-4ZU4%0N! X2@I[J7E!RIMO(Q MQ:F@C/SH.O..<% L'5Y2&Z4HAC2@!UC U[.$W>,M>'1\_,ST.K7Y4O7@'E-AC@;X M 36H)E=666$$AXV7IT4*N=*70/3K8&!ID$D(\-+8Y#(G9:3I Z=-;<"6<"[& M :!M$.E/C4, BK=SEFDD :P1"8[R;]6$Z^@ MVO@L@)NQC0\9*V!?\]_[UA]'[M8#*Y;CG.* 8B)IN(_O(3!WW#N=JRC&>^;JC#U'JUE60 M.*;Y;@B!(0?!/^"2-<5(NLO(3FL(BCMTA$O$0$@F4SC MV)FB';MIV5:XU^%G5]KUZ8[ &#Q;^["[6 "CAWD*35X5:ZIX0^8_I1%*4S22 MSB"S4*J]C+0@)WT%%'+I:0OHG68&BV6_)55[]J3S.#V!*@IJ3YE5QRX5:TMI M4Q;Q4!G8>%>6+LML&0I7E_DZ[^15",G")LO%R\(SNN)T8^27GLY:2X(SDQFL MN'DE*>,D^PJ84SON^6.EE>U!CF%^"@S?RS,*AND [ H@JUB\)R?-D:EPG!JR M7\7>,T'+6HC4X1U.Z#+\P] _64KR3,(QQP\DWX"8"X^CB3PF!EH MO%LT? F:U>%X#\*N($T]FQ1DFY-/TX7GY54,\QBKAJS;D<_*Y8@O$#[7,=(R M-A!OB: MG4<&867T!PK396#:[U$[ YR;/8^)F%T!&,BL@7@E&WK5$MJBG5W[ MU(X_S>3[2"$) ;TUVY;+&;Y6X&+TU[>@7$;#UL>JXYC :;AI-Q6 MQ P#>N295ROI:;6(PA<%DR-%&Z DQKT#S1_J$Z:( W^BPXWK,-Z[[&%J@6]] M3%G/OGJ!@[;R;2_*=37E#V#3V^GSX8?\U>QX/'][Q-:\!7Y@T@:BN"+\M$#P M\CTO/R3?RS>TC4\@//D3E8[*Y /XO?$^C0]L8/JH>OM?4$L#!!0 ( +& MF5BVW(YA;08 ,(1 9 >&PO=V]R:W-H965TN4!7=&6&;LI1F\,5L-62J9*JJS2E3"TN.Z]&U__9M>]$0.B@E+'$B0>*WI/1<&" .-;E-EK53)C]WTK_6=O M.VR92TOO=?&'REQ^W3OOB8P6LBG<9[W^A:(]IRPOU87UOV(=:!-H3!OK=!F9 ML2Y5%9[R,?JAPW ^.L*01(;$XPZ*/,H/TLF;*Z/7PC UI/&+-]5S YRJ^%#N MG<&N I^[N7\@^!J(65;&'=)B\*_"3-0$S&?9&,DI,7Y$U:,R=>WN0[S0Q23@Y+X02Y ML+5,Z;J'#+!D5M2[>?W#>#JZ? 'C28OQY"7I_QKCBU(.8QR/!J(K_O4/Y\GX M[#(J$;P<3;"4IE+5THH[,N(^EX;:K5MI52IH2U"#P'J"-TR1C"X_WMW[M_'E M6Z&L2'59-XXR,=^(3*U4!C91HO+H@O>9:8?NH-]89E3*SWWG^1325[>0'R!KA7X6"]T M-!4O*.LS(/Y(E2LV0&H;.2_HF!PVA2M/)N %AB_37-&*4!L]])2,0_D]=#I. MFB5%E$X[683O(0Q@DFM,Y6%:VCJ9U$V0G6^VOH:V()MQ#L37&B$5([3O"?]/_/-C1>0@^(71 M90O)1Y1TM',U8LASXNPGZ2SH,8)H9;:1"OMQKEFG<'!0,XG+ M#2%V0F,C;FP";2G-V[[D;Y]? MO/NZ<\%1TIU;]W>\F]G%XGUL L]\UM_F9LS8+>ODM#^=G?+C[#39M;BVX#?6 M.WR_ :7']+0B3D[$=-2N[H\=S_/#\%TWN0SGUH%Y-IGQXWQ\"&8$TE;>IN+* MW0UO41>RVNL0#@.Z;Q8/82CY3&@Z:0Z#Q9W12R/+EN"W*D93,N,D'9WU<89&W&II M?)!\4$A'M TKWK"?XO#BM]OQ1=:UT2MV0G2?V>FKHSZ'@I-B>@*:IN;5>##" M?%X4JA,\"Z^[&T/=408C63.W]*WQ#@[5-^"$IEBI?U/JRNW- A;/2'%D:1-Z0OWBN)$ TZHF>RK@3=D MU:9UC;@F)GV53 >(_UV%W+GHN5U/"WN@WU%9E.NB8&-*F=&!$P,$#H!,69R< M]V <;?A.#2;S@(&81RBC5NAMR+**EMHIR0GA#+):IG$>E3YS2N7B3&TIQ?#K M%$ 4^D#X]PNP: M3I2#JM296B!(;6.!'1.L#YV,T3O&A5F,GL89NW_C_8"Y?#>H_V-7]>?>/7(T M3A_=E1@-QONGS/W-1]NC*H,+7W5CX5@0C&?3P?FL.Y(>NL -._?JDC!)\[\' M?*W 7!6NV.W7]@^*=^%>OB,/_V[ QJ6"HPM:@'4T.#OM"1/^,0@+IVM_2Y]K MASN_?\T)8668 /L+K=UVP0K:OVUN_@902P,$% @ L8"96*E+0 T] P M\0D !D !X;"]W;W)K&ULW59M;]LV$/XK!W4H M-D"P1+W926P#3=9U_1 L2+KV,RV=):(2Z9%TW/[['2E+40#'&S"T*/9%(H]W M#Y][(7G+@]*?38-HX4O72K,*&FMWEU%DR@8[;F9JAY)6MDIWW-)4UY'9:>25 M-^K:*(GC(NJXD,%ZZ65W>KU4>]L*B7<:S+[KN/YZC:TZK (6#()[43?6":+U M!!S,9@_-DH]1G-WE? MK8+8$<(62^L0./T>\0;;U@$1C;^.F,&XI3.V-5=S0F!IV0_9]_.<9A8K!X MR2 Y&B2>=[^19_DKMWR]U.H VFD3FAMX5[TUD1/2)>7!:EH59&?7#UA3B"V\ MEWV"*5++R!*P6X[*(\AU#Y*\ )+"K9*V,?!65E@]MX^(T,@J&5A=)V M0U!.8G2EF]:)"O/R\S@$P*O M:XTUM^@UZ8K11%36HQ)!6_420@C<>$XG[#IWD?&V!;7U*L-&+@JE%A:UX#/X M0"M;U=*-Y(P]NH&!NY@$CF_H(O,<3_" GWT U=Y0D,POE_#ZU2*)TZO__?]# MHQ&?G7F@$TL%,!S94?/VJ;2&NGS[5$B#Z$9I"JZKAALEC6I%1>,*[O$1Y1Y' ML)^ A6R1AW%\,9&E>4*2^43B1BRY>F:7I_,P9@6\T\H8N--J*^Q$(6'S<,Z2 MB61^$18Y.XN:7,S#M$A_V#2DWRH-%VP1%BR?AB(OPCC)_R$);)Z%11:_E 16 M9&%<3#.9L3!-%^>3$.=A%N??._BG;OQH\@QWJ&O?;!@HU5[:_D4>I6,_\Z9_ MQI_4^V:(\E@+::#%+9G&LWD>@.X;C'YBUOKT9*M,??3F%7_WL7WSRO9=96K]L12F&VNG;&UEFKR]='YXN?WB[.Z %>\2^C=R[Y.Z.C MK*S]0A_>%Z^/3HDC7>F\(Q(*_USK"UU51 E\_.&)'L4]Z<'T[T#]%SX\#K-2 M3E_8ZG=3=)O71\^/LD*7JJ^Z2[O[N_8'>D+TN\YN_$$D#SP_O>>!I7]@R7S+1LSESZI3;UZU=I>UM!K4Z \^*C\-YDQ- M6KGJ6OQJ\%SWYDJTD=DRNS+KVI0F5W67G>>Y[>O.U.OLHZU,;K3+5%UD[UQG M( I\>AB^?_3JI ,C1.XD]YN^E4V7]VQZEOUJZV[CLG=UH8OQ\R;I\?(#>693*&=,[^XNE,B4*V>GQ]$[D=#^Y1N7Z]1&\ MRNGV6A^]^?%OBZ>G+P^>^%B?= MF6Z3=1N=;0Q,OX78J^S"U@[2+D"BR'XQM:IS@Z^O!IJD@U97O*"V9)U@Z\)N M$;2Z[&KOL,YAI[SJ86ZT)>UP7M<]R%SJAE9A;_+R;'%Z_)^9C+TY=7[R[XK\7+1QD8X,?W6K69)F//?M:Y MWJYT&\SU+'M(*_S#D8= 8IY*%#$LM]M&U7LRP;Y6?6'HS'DJH3)**)'Z3KHIH'3J%4%W?>5:.E2K_M*B%P=_S=]P^)^=S%G;VL+ M\%+M9_0M[&GR;(4EI0?]9C@1TRBM[<086OU';^CGNGGWI2-]H MS5&M\^QWC=65T=?"J2H^(\@+P1JFX1S%'=I<9:4R;=:DWB7BF7:LC;HFTKH> M+)V%#L7C,04905N5]Q58:?] W M@'[.[UA ;Y5U?-IRF2%W<49H,QY.POA2E+A,"RM5NP:''$ M>#ZQQ:UU7>:2U#N<'P)A1[-]>X]?@G;>C8Z2$SE8O05!5IMX]Q"M^"0M(")D M ,A8'B.2]2UH<\QM<0+\D&A+O +Q06>=NB')L;->JZK7M]>I'.IT1K05(N4? M/4[%AXMF-!"@IT1K$N=--*A:)Y&%)+"VMM@9.)9!7C MVT!'PJK7!_WK:?2O MIP?]ZQ(N?@OYM+;&W[E(>\K?_AS%Z&I?7?A/A*#_0>%R7ECVIO#@^QH_74N6 MI0P[DQ@<;26A"!!1%S!FE[VU^"GCW[*WF^;ECAA=I$/91EGP/#DSX-CS?V.\ @*^=9 M&\(!E@L$ 27OCWJ69'SFT;7[C:JXW#>FYHBF2IQN0%&+)S.OX_3H(5%YSKZ+ MU.-Y]HX%H-_$8W_O03 WR@ !KM_]GC*[H>5?];>D1D@?*0XQ0 ]!:$> MUU.8AS"0A!+(A-!*&:)'3;&GB)U!(-I;.'X;+"_\)FDH\H3X;Z<9(W^ J10L M=F@@393,U) D,D1HRMU XX3\^/=<(QZ8N"ZFL>-0SR3T4H=Y\2<=YG'V5YOY MB__W9GX@'3Z+Z?#95Y*7@(K+ 4M,9<#O)A(]\7<=<,J_=80P<"5 :+,5/5/9 M0,>%> BMFIP@&AD5J8_<@22,\*]S1>#QH7DDZ,96'J_UMG=0*/!.[0##G/@! M$H'TFRB\.VZF4<1>0\*. [%UX<&Q+ 1*XN=C9I>]/S*^+(KI4&P2ZH%F#<9 M4B%N%==T^X9*?##C.13,RWO#*; ]%1@SHJ4I*2'U YD4"G +(%G5H#;, I8 M;9I[K08ACWGG7V'>J'&KQ8 M;ED/!U!Z6A@);AM<(YRCLQU<+M1D17#T[CM,S ?!F8>1E%8&>J46[Q6W@Z2] MP;<$-_$E@VU*MY2_IN/,!7\'?LN^*KE \OVA"KZ$+$0;M8;K.M>O@JAMZ\@3 M%\]>"E' :PXV!4PY[\)&5(&32U=V*-^H_S&L&3NTRMR6HK9G.T3O%?7A2$,( M=;N-R3>W8CH#'8XU0]>2XSMC:EZ5T<4+-"Z5*O3M,1<9J[XQ7 =FSG= Q9.H M><'=,#H&/X[_=,'6;!MD5E%WK([I)_:=:;TF2K5&[E)NYPHMO M<+D&505*$X_7V620Y>;9E=D:5",C/FBSSW8%E>P.YL@$:91#'+E/4%'TL4/% MCD6)0B+.H(^MVG-(APR_U'97,R.W0E%])_S_V$)OTRAM+]\DQ3%25'M&\]00 ANH0&+6.8#-IR 8ZA0 MJH22F#/'^P'C5*;4(7@,8-BGF!C0J:+?4J3YMX_,:8PEG.9]OZ_#AW#2-IXT MQ+WA&^<;:<*-WW2>G=]]=NC$^WXCFP5CK=!0+P:_BS8KO$"D 3+U*(GJ6%>- MD2:GQVA9;,7@J]!CAMN1^."C!6&G.JLX+6XHAOM.=**XJ"C>8Z04N3=1_/&8 M*TCOYQQNJ?WAE4-0E;I[E*V@B1+.9$,;Q+-[]_O ;PQWLQB\2/2L$,"?#0K? M6!O%R,B7$7[U'=.0.P!$O^%&PBFJ-OL5?N=T'V3IVR@%/K?<$;ZSTQWJ7,(- M<5#4!QGM8#^#I%C<]W)(BH%N*P,>!:O/!OL@]KGLK\P7386+C57FG>PP]S>/ M"25?([+BF:E$J4,GC&0(GU-KS5:JO-NF]G0'UR>;S)/^HC\3JA#GQ @HM;(_ M!=>X0S9?>@'N -%6S1#6(3'0F,E,211?1* M!^;6>KAF)1@/Z.8:>E49&>DQMGKNHF#(0*R4A9H'9Z^=#J>MU%]Q][$P=(W<*DN&<4.J6WJ*DU M,R($$E&+4B1+1+#)CF V5C"3+VD)T^:MI?:7W0)4$5.%"\#QT_QJ'F\??%>' M/T-N.E=.[LYK*$""EZK&SK55[1?$B@FB21,Q],%"G3"X/[!?[B]Z70(E?%U+ M3BX=-LZ+:I1BQS&8,5W C9-N5!"V*V*44-#LFG.9<5^DHJA\./*WE!%*D?7Y MAEIC+7=9TAT>ZOEZ3O9+@11IRU:<$',4]HY. DR68-I8ZZTM)UY5?VG[1F1> M(]39>DU=#,VV3FE3FA.AAQEW]:&Q=X^^I9'U(D*H%X?O34/RGX Y4UCI(+5[ M[E /;!&-YM,!$"(QPH.(* 91=( -R-XU331P?:P&? (E^9H_ H?0^0&F'4$+ M@)AA$=D\'*"-QROOWQ% S1V1$ AE*UVR"&KC=DZQP :AY X5D(:"YEGH:R&4>KEJ9 M#%?1(=_2@Y7:!?9GL='E+\'U6C(#Q$<-\!E"X-#=GI1$P"ZR3\XM!@3%@!FX MV,-2AQ1YFT$?2 E MJHHS^!6-I@;+'D0O$VF$>$,C+D)>CTUX9HYD M*8$DB-M?^,PF;H,$;4U?;VJ^Z[JBL9M;MYSO+Z_")6>X/E[W. 0WBHJ"6JC0 M#-;:M6;[D=D+_K.C.T\W\UW?X)8,&QQVI$#A!VE:&F6F1DV8,+C\46V;E^_B MD 'C3(0%'EX@8T%!4MW-$D3 "?=,%_T/ES]!^I!CA,/ MEZ>+9\,TYHAE/KQ,>Y+U\6\AE7!@UMB)>?^ LB&8#F=Z&;/ABZ*RKXL WA\L M3I_-%X@<[/YLPA&A2RB ;_I.(M6/C'=\D5AFO[+9A%GF^2%PD,QX+PYF]Z$T M?<^(_M[)G<-TIF'>)/'H>A]&K2J3K& P)-B;?38Z+V$H9"1:-/O&WE2R#J*. MK3KNEPWU8^-GMJ4Q'-L+5"\(/%-MRY.UG \=S:NV]D::03(GD&1+CT>YE[)! M*2<^-;K/#)_'$T?1.7DO^H44%Y7-J<1_DZG6]J6]GU/F,O M\LV 1-0,^(WS_1%5T+AI&'*,NDYSEI);& \ 4B[&8^ ^%']@<_JGK4/J.6?( M$S+<5[/;L/^UT3O\^D>/6E]3PADC-(XUA2G\2<+%@*KWR:)87(\28=+1Z<:' M.A@BAA<>%@??0WCS#ZWNZ9)_Y4&"5S /=# M)[(9:3HZF3N.$D?^M[6.+7:)40G(AD2.[RQ-4Z;\F(#UD.D32.#56B5'I?)* MQB(DKR4W62R%0M^DP2Z)CYX*%@[6P$VHJ)%Y]J] 7;@+#3@_;C^B-/RX7M-4 MLO>0!XMG\Q^)=',%Y+WNK"1:B4KY1".RY7)^X_I>F+K.7! M[LJVB$1D6.T=1D?OCUPK(VX[><")H?:O'%-BQH[?R2.Q^6)H00SSY@^7SQ*W$T9[- MS\(WMV61UO0#5RXQHI;?JO+1C%@)CYRC3OQL6[JX\/6J'YV*0P9 !A7/AB!@ M[:,FX3XY@N M,.GT)@TTYOZ5#<\9;4*@#E6EG>:.-P]IGB8X!0QJ>)G=:XJ%EYPN:6Q4:C(. M+^$FX?^HM 360N(/EDFMPAI7P&RBGTK ME%L,4B31ZPRTC@/(CE\(&08!(5UOM1TE5=:Z2+D\/'4-KPE2X*.;YF MS5'#2&^)QU1$L:Y?C4$2FX.6]F08$?-M[>%N(,X)FC8J?1+MG23O_\* UOR6 MLY.+)WD5.'X;WZ0^E_>'A^7R&C8,!R6^@^1*/'HZ?_;D2/)4^-#9AM\F7MFN MLUO^_^5]02P,$% @ L8"96+3DF/%A!0 ML!$ !D !X;"]W;W)K&UL[5C;C0]M[)K.3T7C>:LIM<2J::JB'R:42X>+D;^:"^X8:NU M-H+)]'Q#5O26ZE\WUQ)&DQ:E9!6M%1,UDG1Y,;KTSV:QF6\G_,;H@W+^([.2 MA1!?S>#G\F+D&4*4TT(;! */>SJGG!L@H/'G#G/4FC2*[O\]^B>[=EC+@B@Z M%_QW5NKUQ2@;H9(N26T.6Y0>BR?1$M M ST]O:'WM&XH6DI1H;FHM00_*2"AUVANS5.IT.D=67"JWIU/--@TFI-BAS_; MX@AC%'A!= 0O;!T06KSP MGSA@:-U;V&@8UN32F=J0@EZ,(%D4E?=T-'W[QD^\]T=(1RWIZ!CZ]!9RLVPX M16*)2J;(:B7IBM@P!XG<+FF(]#=@*86(UH1QA5B-]!K<(CCD+:M72-L00*G/.]GW]WP^^>-C9_]DGN[G5TZ-I> )"Z M64*9:*1)C,Y94>+CR.M<%3[W9I@D.(P[?X=^+Q+N(+!JP<7JZU8/YF7DXSCK(>'!OT@3L1@XY MUW,_B7LJ7P!/<>;Y#OB0YR \(M]EX()?08O"?OQ$*L:?[&I@=5#C:LV<>M!& MFH>SN#,7#)J+XEX]"GMUY@L<'/) !=(Q3US0]&J:?;0:80R=P*>903.(P&XKYB7.+AGYP9;\5*+ , ;*]4+?2 M]G/$Y?86WDW??LN +5VQ6H$3EZ#JC5.(<+G]/K =:+&Q=_*%T-!\VK]K2DHJ MS01XOQ1"[P?&0/N19OH74$L#!!0 ( +& F5B &(&S$ 0 .4- 9 M>&PO=V]R:W-H965TPC+8TM;BG2):FXW5^_0^J(X\3:9)$]7D1J./-QAG-P.%DK M_]O1ECDS<*'$K[RPY30X"D@!"U8+ M^UFM/T!KCU&I7CTCGEVFI8MXWB#2'8@IN532EH;\(@LH[LM'J%VO(NU4/*>#@)=, M'Y T"0F-Z6@ +^U-3CU>^CR3'[.T 1H]#N3RY<2L6 [3 !/"@+Z%8/;F57(8 MGPZH.>K5' VASZZ;-"%J019.XUNGL2%,%D3 +0B#D6)++HDM88.#E!PTTWGY MD^#:NN1YN=LS@6W'/=KF0OB4@C3,*^UYG+I4H$_ M>F;#5MTX593 6N! K NRMB#P/W"W^YJ:\,7-91J0,1>72[=Q M'YH>XAWD4,U!=]24['F=56UPV>R?D#>OCFB4W"C+!+E@IO2FYVX"WVN.Q^X1._G7)(GC,#NF&Q0W2^CI(*63^L07SFFH M*I,YM'Q^-R1IP#+3N7H(+0LSFCR!XP*K%SH:+2# M'R+-QE1<\&7S%TCYIDV M9$E(CP]W$_Y'WG\8NB\7 #0>A\DX?N;A=5(O%0"C+'T"Q\L&P&@44DIW$@8N MBG%_48R'+PILU(H:ZRA6)*Q32N98P[RNCK)5#)&2_X5]ML1@J W69;Z4?,%S MAIRU5'-WP_F"S>6J=CU"&P>/-@G#.KMKH"G^<]<7$G]_^CA\D@FJUO^ &?]: MJ;XI-<"]-JE?^@UMV2)UXX[JO#MMSYEP^>)R>PY++J6[O_#T5J"Y*NY"\35) M:9@F&?EH3.TD[F)\G(39T=U>(V0;/U ,.WQLTJS8=WW$D-!P=WY5RFH:'!=@RXOE#*=C]N@_YE-_L34$L#!!0 ( +& F5@Z M>*2JR 4 .H5 9 >&PO=V]R:W-H965TQ-CIH?]OLXF4#)](*<@\,M( MJI(9?%7COIXJ8+ES*HL^]?VD7S(N>B=';NQ"G1S)RA1$*S.?IA<*W?HN2\Q*$YE(0!:/CWMO@\#3PK8.S M^,)AII>>B0WE1LIO]N5]?MSS+2,H(#,6@N'?+9Q!45@DY/&] >VU(KS\WDN)?V2 XC5A7F4LY^AR:@V.)ELM#NE\P:6[]'LDH; M63;.R*#DHOYG=TTBMG&@C0-UO.N)',M?F&$G1TK.B++6B&8?7*C.&\EQ85?E MRBC\RM'/G+S-OE=<N^H;Q#:&O2S!N:TAJ$;8$)R+H69:/*K MR"%_Z-]'2BTO.N=U2CL!SYDZ(&'@$>K3J ,O;.,,'5ZT >\*JXX;<@UW3*\+ MK]/;;HU#/649'/>P]C6H6^B=O'X5)/Z;#FY1RRURZ.$6:[".6_0"W.*66]R= M-VP#>54 D2/<02U/DC,#9,2X(K>LJ-SG#.GS'!1S!D8QH4>@%.2$B9R8"3P% M8$T00!@^XK80"=,:C*[=YC@%?N(%8H"VWZL2SA G# MQ OTST"[D.W<;K2=:9#B-'AJ*G-?(V TP?+2+V8IN0CX&%"E#TU]N5HO])- MRI;,PB0FOS4EO" 8QQZE/GF_G&PN#!-COI3WUGS@>P'6P1\N2B%%5F%Y(IO' M=F%"WLXSB(7P('V[0>P%8;KG\KZ:A RSI3>ERP[C,5EW @6W(*IEX $6U##> M(V<-+9LY9BN3%"Y!RR6S\/(BZX-\E=T#:Y9S'N5:]\2C4;A'/DHQWC>@RNTF M'<3HL[(5.GILTO;8Y'D]UF9J9477];!NW.MYRUV+US1-<&UW) O49S8!NSD^ M,N56V$QDI3&G>F]UE_Y3_U^P(=7-\QQPOKS]L&AH)G^JG*?J;8&GH^ONU MM(?%MMG>F?>#CK(=M&4[Z"RO#Z]9.7US1;[BIBCG2 _J%[2EF+Z M4\HJ?0%NPY;;\'^JK+KC?GE%A>7MML8VBLJ+PV!+017X/R^HAIX?+^NI@/I> MG(;_GIZ*L-O19\NI,/6B("#O!9[F1JJE/ACZVXBLD-82:Z-HZ-98 [J%QDH& MT=,:"P4UKL>*QHI\+TFWEEA)Z#K\DPK+[Q!86 =)0%]"8 V]($V?JZ_"\,?5 M54J396V5P\TBW[OQ\-FZ*_)"FYG53=.,=/3BP%]<@_@OI,&> /Y/B+!%3UL\ M;11HRW)LC>AZK&36B:R >L.'(FN=N*+TD2-VX&2SE'H\\29!%@YKA?=,X53O M\G7%UE^Z?D-:8W?)J(G;ZO5-7#O:7F2^K:_O%N;U+>@Y4V,N-&Z'$;KZ!X.X M5[>O^8N14W>9=R,-YL ]3@"SJ*P!?A])/,N:%SM!>[U[\C=02P,$% @ ML8"96'&DP@>Y P O0H !D !X;"]W;W)K&UL MS59M;]LX#/XK@E<,+6#4[V]=$B#==G?]T*%8NAWNHV+3L6ZVE4GRTMZO/TI. M;&_)@@'7#_2_-+=KUN$EHD[Z3BS=X8 M&32L[;_T:7\/$X/4_8F!OS?P#>_>D6'YCBJZF F^(T)K(YI>F%"--9)CK7Z4 ME1)XRM!.+7[GO-BQNB:T+JDN1]6T#QO;V#M ?N_H'[K7\6\)Z*:Q)X M-O%=/SR#%PQW$1B\X(7NXM05]!["TQYTA=W(+/.__]Z#CIGEM"8KV&!? M4N2][BWB.]%!^Y$KE-[2FK8YAJ_(.\BA68,X)*P_J%Z0( [LS,\F$C],[#1V M)Y+8\^PD'766^=>.2:9;FS0)N^T$$I1 ML@(719_8_?0G/#*5P#D U= HJL! MP,_L($R.PO0C.\[2(W$4V6X8#=LS@05'MD$6V'X2'[M* CN*CGW%<6RG0?AR MH1Z^7A;9F>L>$SDA\[+8]B;R2<38=_)J:#R3-XK2S/8F@5Z8$)-)B!\%*!GF0(UD:[N;<^(6/.]DUH9!YB?J9I^"/RJ1QT)B-% V)C!B=)&ULM5=M;^,V#/XK@G<;6B"-7V([:2\)D%ROV 'M MI4CNML^*S23&V9(GRUWC"L7R21(A]2-$7*_0T7/^0*0)&?1<[D MP%DI53ZXKDQ64%#9YB4PW%EP45"%I%BZLA1 4Z-4Y&[@>;%;T(PYP[[AO8IA MGU/U'OW)G!W/,J<2/O'\SRQ5JX'3%!FS,_VYB\.10L][0R'8*03&;VO(>/E(%1WV M!=\0H:4132_,48TV.I0[RMN\J MA-=";K*#&ENHX VH#GGA3*TD^$ M#7B=^JP=@Q>^@3?#C$ZK' A?D(07)6? E-14JJ/ #U&X=OAF[,8_YG;$EN,H8<7DG*4GG[0'[[I1=XG8__^XS12U8F?'O.(R10S$&< M,/>SCK$>.F0*:YZOM:N)@#139$&3+,_4MI;]8%9^\+&!\Y4KD$1QH@L'VN0; M!D)>F.W=M[RN5Y-A>$).,'3"?IT+1?_^@N>'0;W^QA7-WU"];_5ZE]IH&T]0 MD\\@Y>Y0224$I@HIN3"EY%SSQ@\0,;H],,)6+^[>GCF3<[:\4R"*&FB?>H

,]HR&6Q#6MR!LO@6V_&K;-,7/BWZ@;\A:9M<3OQGNO=+W MG^:OV+">80T"6P>9ZDMW(:*_(%XURHC?]CP[8$+F1^QN9(<3=M"./#N[]V/L43H@ M0)XY>CTI3U+6T_[_BE,0F2FR5%=3OMV;39ZF5W5W^[[5]:VN;W4#L]>0GE&= MGE%C/M5UX\G6C8FI&]?RLA%'/V8>9$D3&#CX6I$@UN!@LOJQUW2)XMK+^%^W MDD6E*@&D%!E+LA(3H*3;8M]9V-4R>.TXS09'ZJB@ZUK=^B]VR7R+-QW5=#7? M A6$(@*5N_:$W3_%!47!=VY28YI3EJ#I0^V;4K8T\9PI3-[T2A\S+6K/KN^6 M3G5YNO>!8/WU#FT$[[).42^(#BR_%8='9+M#[O3EMG)QO8%VXV,U1+HCT1ZO M>]E&8ZS?!\NU9.]",KHB:/O$X1AGW?%LOI;'[M%3$+_[TCQX]6ND8LJ^"FMN M_:8>V:?D0=P^R&W1DE@!%ZBJ:X1#A'WD6D+QTCPLYUSA,]4L5_A? $(+X/Z" M8Q+N"&V@_M,8_@U02P,$% @ L8"96!Q$?% 1! 9@P !D !X;"]W M;W)K&ULQ5=M;]LV$/XKA%H4":!$$O5B.[4--.F* M#4C1H,DV[",MG2VBE.B15)SNU^](V8H<.ZH';-@72^3QGGONC3I/-U)]TR6 M(4^5J/7,*XU97P6!SDNHF+Z4:ZA1LI2J8@:7:A7HM0)6.*5*!#0,LZ!BO/;F M4[=WI^93V1C!:[A31#=5Q=3W:Q!R,_,B;[?QE:]*8S>"^73-5G /YM?UG<)5 MT*$4O():7?@-PX;W7LGUI.%E-_LXI=BYH66$ C(C45@ M^'B$&Q#" B&-/[>87F?2*O;?=^B?G._HRX)IN)'B=UZ8B1OM)'55AD95+QNG^QI&X>>PCA\18%N%:CCW1IR M+#\RP^93)3=$V=.(9E^*)1RU#/S6T"7-#E[8 L!^GP:& 2U MHB#? ERW /05@)A\EK4I-?FI+J#8UP^03,>([AA=TT' STQ=DCCR"0UI,H 7 M=Q[&#B\>]/"88ZU> MNZMH!!"Y)-AABAE>KXBP7 G3&HPFK"Z(X&S!!3?\N ?#-AY*($LIL.\LMK$9 MWC8?_PMS;E!\FFG"ZUPTF%Y\<6HWLM92\((9W+MF@M4YD'MWB3"]M8E%Y4[+ M1B.6%EYV956M_T11$=95O\0BXOFN=0 MO264COPH'75:N!.F_BBBK^+T0OO/H_(%$Z#P:E *:K.7)32<^5$<]IDD?D*S M;N-6UJL+ ZHZ2'P?9W>:AA-T8W3 (!J/T+)-ZUH?N9M2 7K0WM5@[^H7_7#>S\W$IV-JM],#\#CSQUEB M9=FA+/:CQ,D.JX:._4F46MGX4);Z-*4$8XR#Q1(+]$C-Q7Z63;:UU@9\S;[C M>&#T$1K8D4CO%K3>QLI=X=@OCTPT0 JN<]G@\J7F611&/AU-SLG=GL(/TMV+ M7%OG ]6<==6M[-8.Q8)=P<;V;(Z6MC#=G;<[T^P\2(& MFFRPR/_#&__!%6U_P.@5[5ZU]Q8QN6&ZQ.K@!1)3A%4VU8!V])B=[][6SFW3K8U45]&:_ M"M3*3;B:N/)NQ\!NMQNB/[2SX_/Q=@+'T*YXK9'8$E7#RQ'>B*J=:MN%D6LW M22ZDP;G4O9;X1P"4/8#RI91FM[ &NK\6\[\!4$L#!!0 ( +& F5CS[^>. M-0, %4( 9 >&PO=V]R:W-H965TS=F/M6UDT+!C6&V+DMNGB] ZO4LZ 6;C5NQ*AQMA/-I MQ5>P />CNC&X"CN43)2@K-"*&2_P4\#:;LT9>;+4^IX6W[-9 M$!$AD) Z0N X/,(E2$E 2..AQ0PZDZ2X/=^@?_6^HR]+;N%2RU\B<\4L& 4L M@YS7TMWJ]3=H_1D07JJE]5^V;F6C@*6U=;ILE9%!*50S\J?= M&/(LOW#'YU.CU\R0-*+1Q+OJM9&<4'0I"V?P5*">FR^<3N\++3,P]A.[>JB% M>V9'=WPIP7Z>A@Y-D&"8MG 7#5S\#ES"KK5RA657*H/LM7Z(U#I^\8;?1;P7 M\)J;$Y;TCED$GG;^+QDG_P=Y>;#4I_-PI5RL16/(59@*5@P3Q",#\\ MZ VCLST<^QW'_C[T^2VD6J5""NX35^=,U>42#,ULP=$@P_*RCJM,J!4FC"N8 M*^"M5&TA8T*Q5)=5[4@6$UBD#!59)F3M\!BX47AB686J7F]7./83OD/CN998 MX&3#4?)@P39.((V=W/ZG!TC&X'9:$!+AXHG0&4K092E2.D)05^C:(I+]/&&' M!Z,X2LX^/-X5!N!5$;PKBJF-#"FW_SRA7*=/PBYU66(*O(W9,0,, ;K7N-:I M)H/CX7A P^D@[G:O\AQ?01*OK0^X?ZR0&W\$@V\OQ7>WG0ZBWV?#J%LMWKN> MMY=!*KWXK+FW+9JGR9B&46\7S9:(L+;VV51C)!&/BI?IRI=%);FR_D7&."A_ MS0[;DJW-3S"X&6T$8;0S$< M?R :F]S=BLDG#KJ2_!K'Q#LVBR5JYY];O=KF>>-ZWB1;QI MN)A_*X$AE)"C:G1R.@B8:9I8LW"Z\HUCJ1VV(3\ML.^#(0$\S[5VFP49Z/XD MYK\!4$L#!!0 ( +& F5@>_5&-X ( .\( 9 >&PO=V]R:W-H965T M /4RJU@'/;G)I MK"5VL-UU_/?821M2T15>0(B7^'R^^]V7+^?I5L@G50)H]%)77,V<4NMFXGDJ M*Z&FZE(TP,U)(61-M=G*M:<:"31OE>K*\S&.O9HR[J33EK>0Z51L=,4X+"12 MF[JF\ML<*K&=.<39,Q[8NM26X:73AJYA"?I3LY!FY_4H.:N!*R8XDE#,G&LR MF8=6OA7XS&"K!C2RD:R$>+*;NWSF8.L05)!IBT#-\@PW4%46R+CQ=8?I]":M MXI#>H[]O8S>QK*B"&U%]8;DN9\[(03D4=%/I![']"+MX(HN7B4JU7[3M9,.Q M@[*-TJ+>*1L/:L:[E;[L\C!0&.%7%/R=@M_ZW1EJO7Q'-4VG4FR1M-(&S1)M MJ*VV<8YQ6Y2EEN:4&3V=+F%M4JS1'>\*;#-U\4A7%:BW4T\;"U;.RW9H\P[- M?P4M0/>"ZU*A6YY#?JCO&<]Z]_R]>W/_). ]E9P OZ<(,6+_C] M<(]%V8&$QT%LGTQ40S.8.:81%,AG<-+S,Q+CJQ,NAKV+X2GT=-FU!Q(%8H.B MT)5I*=,&C9#:E@>I+A1US/_3%AY+0(6H3#\ROD8MFD)M)"8S/]L4&WG,+KI@ M'.E2;!3EN7H[0>=G(Q\'5__]^EA*@(.+CLPUSL&Z$-,FE&@S%E:A8;N@#WA!Y!M.,N!8BOA7 M!WI1D+B8Q.B#%$JAA10%TP,!GR1N0OP!)QF[<41.HOKCQ WBX)\M0_"GRC F M(SQB/_I%$4@2NG&(7RL"B4,7Q\-*AL0-@M'I(N#(#7'TMY-_[#?G M#890#7+=CEJ%,K'ANIM'/;>?YM?=$/LAWCT%3!W7C"M406%4\642.4AVX[7; M:-&T(VTEM!F0+5F:%PE(*V#."R'T?F,-]&^<]#M02P,$% @ L8"96#7F M"M%& @ _00 !D !X;"]W;W)K&ULK53+;MLP M$/R5!1L4"=!:LNPDK2L+B/- E5%I0ZT)=1:;12(L M$CQ*XO@J$I1)DJ5A;Z6S5&TM9Q)7&LQ6"*I?%\A5.R=C*\E[0HA.4O"-H#$LE;6W@7A98_(N/G+G!87)PN$A.$JZQ&<$D M_@1)G$S@>7T'YV<7)W@G0^!C>HH]>\)RZ_3EG#(!;LI![5 W]-5-GGU+:\?V-;#YD=]E MX_AZ-$ZCW;&(Z.A("M15&#P#H3?=Z1QVA]F^Z8[TW_3N8EA273%I@&/IH/'H M^I* [H:M"ZQJP@'?*.O&)2QK=S^A]@GN>ZF4/02^P'#C97\ 4$L#!!0 ( M +& F5AT)JW"$@( &<$ 9 >&PO=V]R:W-H965TOFEII"X0DW98!4M-L6A\J18VZ/3MP@%5C,]M ^^]G&\(R M*>W37L!GWWWW?><[Q[U43[I"-/!<%%+5U%A3 ME8%N%-+&!E M9=Q&D,8-+7&/YK'9*6L%$TK.:A2:20$*BX3;A?/W#C\9]OID#4[)028&8= [:_#6^3< 5D:OT=,,J5T@:?K(_IWK]UJ.5"-MY+_8KFI M$O*90(X%;;EYD/T/'/6L'%XFN?9?Z$??D$#6:B/K,=@RJ)D8_O1YK,-)0!2] M$A"- 9'G/23R++?4T#16L@?EO"V:6WBI/MJ28\)=RMXH>\ILG$GWPV6 +&#/ M2L$*EE%AX";+9"L,$R7L)&<90PU4Y/!-&V9+8:V/<"D-%PN45#&==7 M< %,P#WCW-94S!D6I[/Y*9HK1N:84+LF&A4'9+T_;OY=?CU#1V+28.3OK&C: M?LF$!HZ%C0IG MGU8$U-#6@V%DXUOI((UM3+^L[$N RCG8\T)*&PO=V]R:W-H965T326'/L8#OM]M]S=M+0 M35F%!%_B'[GW[MTE][*#TG>F1K1PWPAIED%M;;L(0U/4V# S4RU*>E,IW3!+ M1[T+3:N1E1[4B#".HHNP85P&>>;O-CK/5&<%E[C18+JF8?IAA4(=EL$\.%[< M\%UMW4689RW;X2W:[^U&TRD<64K>H#1<2=!8+8/+^6*=NG@?\(/CP9SLP56R M5>K.';Z6RR!R@E!@81T#HV6/:Q3"$9&,7P-G,*9TP-/]D?VSKYUJV3*#:R5^ M\M+6R^!# "56K!/V1AV^X%#/.\=7*&'\$PY#;!1 T1FKF@%,"AHN^Y7=#WTX M 1#/-" > /%30/H,(!D B2^T5^;+NF*6Y9E6!] NFMC O?F-;,==S JRNTC OS.@LM M*7 \83%D6_79XF>R)7!-*6H#GV2)Y6-\2,I'^?%1_BH^2WC-] R2^1N(HSB= MT+/^>WAR1DXR=C/Q?,F_='.J;3UM.DWK)GEA6E;@,J!1-:CW&.0O7\POHH]3 M-?\GLD<=2,<.I.?8\PWJ J4E P#>4!8+?MI/VM*B]N8C"P2U%7S'W#P;,+2: MBF,)7 (IVW/5&1?-53G5LE['//)"G%GM\V@6I?,LW)\V8SHLCL>POLSP9(3H M(^V\LQ@H5"=M_SN.MZ-Y7?J9?7*_(E/K/>@/3>^(]+/M.!4JL"+*:/:>+$'W M+M,?K&K]H&Z5I3_%;VLR9M0N@-Y72MGCP248K3[_#5!+ P04 " "Q@)E8 M"IYMC[(' V.0 &0 'AL+W=OR'Q,;W'N[!NN+H !>/1?F]6G$N@A_K+*\N1RLA-N?C<35;\36KSHH-S^4W MBZ)<,R$_ELMQM2DYFS=)ZVP,PY".URS-1Y.+9MM=.;DHMB)+%8^7(S!ZVO Y7:Y$O6$\N=BP);_GXNOFKI2?QGN4>;KF>946>5#RQ>7H M/3B?4E(G-!%_I?RQZKP/:BK?BN)[_>&/^>4HK"OB&9^)&H+)?P]\RK.L1I)U M_-N"CO;[K!.[[Y_0/S3D)9EOK.+3(OL[G8O5Y2@>!7.^8-M,?"X>/_*64%/@ MK,BJYF_PV,:&HV"VK42Q;I-E!>LTW_UG/]H#T4F0..8$V"; ?@*V)* V 35$ M=Y4UM*Z98).+LG@,RCI:HM5OFF/39$LV:5[_C/>BE-^F,D],/O,'GF]YL"B+ M=3 MOY8,MS3A$\TKZ 3\):59P$";P,80FRH9_K_TY&C'+0_ZJC!0Q8\Z]$T':H= M%#9#U6U^7FW8C%^.9!]7O'S@H\FOOP :_F;BZ0E,8XWWK+$+?>+@N$ND36(] M\SQ, $%1".C%^*%;OB$.1)CB\G/%6],E'9[!*!;:X^-,T0C0O=$J)/(GW+>E%UGF1UJ)-%\&5]LTF]=O MGNLM-^"AP\P7FDZ_(PV O_YJL7PQ]X2F,X>*.3RVQ]K,;O>@)$0TZ8U)4UR8 MX!A9!J62#L!YCGZ1/FMWV>L@2'"?E#F.VD@I90#_H3IC =W9?&/%/AF MR>B$.'B$>4+3"2O! 8C'WG*JEX.9>T+3F2N% MP2Q<63#N5=B $8#$-3' *A M;<)7@@(XS]POTUN1J6="&O=)F>/B*-%>%HI*/0"W?'CJM"G+LNIM<"M7^H+G M+)>;Y%JM7G>EHBCEN<[(Q8E]\$#TA*8?":570.*Q!9WBYV#FGM#TM;#2-="M M:QP\VTRMM3 B).J-5E,6I_D19L=]EOK03U21GCNO./3DKI M">C6$[OM!TMDJA0(_N!O1J;_A"TYDK&0./=CC@T+K M%.!.P[0,AG&(4D2H90PJQ0%/[W% @X,1G@W:BIC:"@'+@A,J*0'=4N(+GZWR M(BN6/XW%>34Z?*'I5)4R@1Z]#NC5[/"%IC-7@@4>[7? H9.!*8X'>M$0!R&% MV"*FH)(0\/2>!S2Z&2B$?5+&.)!8UF)(J0/D5@'PA:93 M56(#>70XD%>'PQ>:SEPI$G2TPX&&S@5 *()]A\,41Y(86%9AJ'-QY/0.!S(Z M%V%,+:NKEJ(Q"]B<1:2$ G(+A9OY=L9L)J([]^"!]A)&!U*R WDT.I!7H\,7 MFLY*;%S%F)95E6+!1_L9V.!3 MA"!.^FK*$"=/98EEHL=*8>#3VQG8;&?0P<5RK[ M/][*T58)MBU9+JK&2KS)!2_E5_E:$C'R\&IZ^$+3CX(2+=BCZ8&]FAZ^T'3F MG;LZCK^M8VAFQ.'P^JTA+*+ =@K 2GO@TUL>V&AFA&0PH9CCJ&U&4;("NV7% M[\4#+^T]Y=7T\(6F4U4J!7LT/;!7T\,7FLY'@HH,MSD*** %!W +B=IN)]-T'MDZSG\VY2Y[+TKDL M-V69\=XNKR:(+S2=O)(HQ*,)0KR:(+[0=.9*N9"C31 R-#=P&)/!'7R&,!*& MD65 *C5!3F^!$+,% OM=9HE#L864$@K$+10^B14OC95Y-3Q\H>DL.[>2>C0\ MB%?#PQ>:SEPI$W*TX4&&1@8""1VTTS ,QL!V[8LH(4%.;W<0LW$!^T+0%F=1 MMT1I!.+6"+=\MF)Y.F-9<,^7-D'H!CEXA+V$Q4&4^" >+0[BU>+PA:;?UJT4 M"CW:XJ &BP/$\BS4M]H,@0F(J4T34J4@Z.E-#FHT+Z*H/V58XF++Q66JQ %U MBX.;^DFC\KGVC1'@8UW)!!8%?C MM0R&<9#0$-JZ2PD*>GH7@QK="3BXQF>) WTM..X\@28K6#8/YE6ROFTN=D]I M[;?N'_Y[WSSRUMM^!7N(;W=!U%L MFN?RE^J[7 (:\E%SHJ; MB6.N3Q3 M#0O)O['"K*=>ZI$"EG3+S:/<_P%U/@/+ETNNW2?9U[&!1_*M-K*LP:B@9*+Z MIB^U#T< Y.D&1#4@.@(;%&B7\?-:S+P2$UT0$Y,O MN,Q:DT^B@.(4[V-B37;1(;MYU$OXA:H;$H>Q>OA<0<\ZX=GD%^" MGV03-WL5.[[X M_9'G3Y6Q$DW03V"KG5&YK#U,,[0H/:@3?[]5TX#'[O,N>: M9-F5R$Z,2QKCDCYV-$[7)0O:,+PL )^H$DRL-&&"P$L.6A.Y)%C/W,Y^)-S. M4([7(A4YG@^I2*Z@8(9PB?9WNE^I&#H5]K[=S>(@#-,@"";^[MC97KEO=;:] M:I0&:7*\ZHEK@\:UP?_"M4K%X+]=ZY7[5M?:J_:[-FQ<&[[ND![=CEU9#Z]Y M4J])EEV)[,2]4>/>J+?FYG4EG=97WE>)=AI_Z$%AG6$CXG[.N@P?M38\#.-P M''446J_&M]HY:AW/<3 >Q.G%2DL;K])>K^[+#64*6["^PY6VLCY/-FWI.XO( M>F7\9$&,FR3'O4D>^A,%W&V[D41N\5(YG#+>?\K&K>0&R6@0!.T];T?&23CN MB,QZ!;_5#O^H=<-6:^5:8(WY;86I^IQFMNFR[UQS>38_#V\75;/\+TW5NF,7 MLV)"X]V\1,K@9H35H*IVN!H8N7$-XK,TV.^YQS7^@P!E _#]4DIS&-@%FO\D MLW\ 4$L#!!0 ( +& F5AT7P!2:0, $4- 9 >&PO=V]R:W-H965T MB M#[0TMHB51)6D+POTXW=(R;);*$P;)$4!PR8ISIDSY!G/:+*5ZHO.$0WLRJ+2 MTR WIKX.0YWF6')]+FNLZ,E2JI(;FJI5J&N%/'-&91'&430.2RZJ()FXM9E* M)G)M"E'A3(%>ER577V^QD-MIP(+]PJ-8Y<8NA,FDYBN(=% M89&(QQ\M:-#YM(;'XSWZCRYX"F;!-=[)XE>1F7P:7 :0X9*O"_,HMS]A&Y C MF,I"NV_8MGNC -*U-K)LC8E!*:KFE^_:@S@RB.,G#.+6(':\&T>.Y3TW/)DH MN05E=Q.:';A0G361$Y6]E;E1]%20G4D><8/5&F&I9 EWLC**SDD3"9/#G7./ M2L-[>$1[Q:):P0R5$T.5(GQ<%&+%[?%J.+E'PT6A3^$=B H>1%'8]4EHB*9U M%J8MI=N&4OP$I0$\$(]3=Z<>W$%W=@.'.WCR[)XYD[[8&\AA/Z3-P6M=\Q2G 2691K7!(/G^.S:. M?O 0'G:$AS[TY%..8%"5()=@:*RPPBU?% C6DR#R-B"#E0N$KQ0B)2#)X80N M]"MRI4_[0O([9<[2PW[4L1]Y@696FB+E!7S8U9@)8M;'Q@]BU!H]7,8=E[$7 MIDV;LV?SXLR130UF\$F4=A^=_9P>Z25/FPUSPY4!REZ$WVYV0O]^[83Z/J(/ MZXO02^V%$KKH K]X?FT\&_8.3'9C&4[C_3HE.="Z8NPH"Z+S\:@_ M"]BA:#)OB?MOU<5W3ZKK+0HQ.U1B-GP#=7DK[4LY'^HO\]?.5U77J$]=%W]7 M5WC4V5(GNG+]NX94KBO3-+G=:O>.<--TQH?MS0L&=8$K07UJ@4LRM;X"4$W/ MWDR,K%V?O)"&VEXWS.D]!Y7=0,^74IK]Q#KHWIR2;U!+ P04 " "Q@)E8 M9/>Q#SX& #D)0 &0 'AL+W=OBBTG>%DVRM(A#(+Q,,,T'\QGY;,[/I^Q0J8T)W<4Y8"3U?G@(GQS M%06Z06GQF9('T;@&FLJ"L:_ZYF9Y/@BT1R0EB=006/W;D2N2IAI)^?%O!3JH M^]0-F]>/Z&]+\HK, @MRQ=(O="DWYX/) "S)"A>I_, >_B05H9'&2U@JRK_@ MH;(-!B IA&19U5AYD-%\_Q]_JP:BT0"%/0U@U0 >-("PIP&J&J"2Z-ZSDM8U MEG@^X^P!<&VMT/1%.39E:\6&YCJ,]Y*K7ZEJ)^=O,>7@,TX+ FX)%@4G*D92 M@)?71&*:BE?@!: Y^+AAA<#Y4LR&4O6JVPZ3JH?+?0^PIP<$;EDN-P+\D2_) MTM+^RMT^A Z H:);.@1S^$GJF.#2EQT7&QL(=@#178@O12\$5N@)K<8YJSI$+??Y7D2T(!VQ5QT. A.T()TM0J/ASD-(542FIA@/G M"0%;EM*$*JO_7!&\W/G.7E?L6RA'BW! M2O4 =F70U2#TD+4QW../&PPGXS@(#C@ZO3B1X[CF.'9RO*4YS8K,YKRSX;'Y MZPFLQ3&N.<:^YFSLD[,GL!;G2Q.\I1*G M-O)[Q#!LI&MP%HX.LM79[XFLIC6KJ3M;\;>^;'4V/#9RGL!:',/ E/_ 5[Y6 M2)YH^T)K\V[(GM![SE:0ATD[/4A:=\^G,H.&&7RBDN22YFL514 PSU\K[0[8 M(J5KK'6S/;).Q*,CZPFMS=^(IM";:@J]RB9?:&W>1CB%;N5T2MRCCF:(0S@= M'R9TURR*((2U6=MC(WG"D3-2'TC"\H2FM/103SZY(4H J?C5 BAQLU(ML 2% M($#0=4Y7-,'*LLC90@\P7J1:/6T+_4+SCNQ("M KZT!XDD75>#V'R J-R@K= M,NL2IZ585 .S(&N:YVK\]%!N":?,]@)V60&.>@-<\>J:(8C"N"ID M?B-$H3VVYVCN680:>J+MFE$VH5O:W!,I4\<",NGT^AK%, @/ MO;/8J7CW#IW1**%;I%PL_RF$W+^R2]:8.U9OIY:7H&C:<;9K!M$XZ/$5&JD! MG26]F9VIZW6KQ!=:>S?> M"!CD;:\$>=TK\876YFW4$'*KH:.J8X7U9'6TV+FJ(S(:!KGW/[K9?=]8?-^K M19R#]V8!OFDMP-":Q>X>CX[FFD+CY 2'A[NWH>#['-@>Q50/E":_,V M @JY!=0)2AIU%91-;UC,''H#&6F$)C^)DD:>/BA5X_40D7'(+>..5]*H MN[-C4]+N?D\] &!D5N1OGZB">FH'VV)FR^QAXQQ-1OBZ/%ZDSQ\4N=P?J:F? MUD>8+LJ#.T-COC__I"2S"HD *5FIIL%9K :=[X\4[6\DVY:G=SF174YNJOKW=O)I$KOY%94;]1.%OJ;C2JWHM9O MR]M)M2NE6+>#MOF$!4$\V8JL&"TNVL^NRL6%VM=Y5LBKDE3[[5:43^]EKAXN M1W3T_,''[/:N;CZ8+"YVXE9>R_KWW56IWTV.*NML*XLJ4P4IY>9R](Z^3:)V M0+O%?S+Y4)V\)LU/N5'JS^;-A_7E*&CV2.8RK1L)H?^[ETN9YXV2WH\OG>CH M&+,9>/KZ6?VG]L?K'W,C*KE4^>=L7=]=CF8CLI8;L<_KC^KAG[+[05&CEZJ\ M:O\E#X=MI_&(I/NJ5MMNL-Z#;58<_A>/G1$G VAX9@#K!K#7#N#= /[: 6$W M('SM@*@;T/[TR>&WM\:M1"T6%Z5Z(&6SM59K7K3NMZ.U7UG1'"C7=:F_S?2X M>O$N_;+/JJQ)6D6^7\E:9'GU QF3WZ]7Y/MO?R#?DJP@G^[4OA+%NKJ8U#IH M,W22=@'>'P*P,P%^DC=O2$#_05C PH'A2WCX;Z)\0_CYX2MX^$JFQ^%\8'CR M^N','C[11A_=9D>W6:O'S^A]E*FZ+;+_RC416[4OZHJH#5CN1RLN1GE,J M6=[+T>*[;V@<_#B4%TRQ%:98@B1F99 ?,\@A]<7/2JT?LCP?LA\S6I2BJC2S+,Q-$ MA)D03+$5IEB")&8E)#XF) ;/B:6H[LA.9'KFKDF:JRHK;H=2$3MG)(NG41#8 M)^X2#.9K,J98@B1FF3P]FCP%3?ZLBT_M*TG%+JM%3L3Z#UTJZ?JU'K+ZH!6= M6$W#:![UG 8C^CJ-*98@B5E.SXY.ST"G_Z5J771DNNC0M4BM2(,FLB3JH9#E MX)P_<\SF^JCN']9@4%^S,<42)#'+[/G1[#EH=E+5F68?[?1&9"6Y%_E>-@5B MJG1]6-SJPYM(419C#7QZBGEJCO?!',R='(1LREDO!^"^^.8 4RQ!$K-R0 -# M1 $\@Y^[I ["3S!PO,]G;-HS&X[IZS:J6H*E9OM]0J#T[X2B+CI2T8.JMD)5 M2[#4[#P:MJ4@>!TJGR8S:?-"ZE3I">S<%-5I61?E*0W<\P850U'5$BPUVV]# MHA1&T?<:0[MS85_<=&_2]' &E3*5VG]]\@RZSQWWH_F+JIF"=!I4?2?+0;_#@1)T&O?M1D5<5+4$2\VVVU N M!9E-7Y.KNK58'DNDIA+215'5W)^4CZFLVLM&^KK@8:--OE6\;C/M[" ;W-1@5<+#7;;(.X%&9TXCR_B41#N5M,RI>8JG9-I\LG<)X M^;ZK[.QZ+]6%876F,AQ,A,N=8SJ=SYS;P?#>>&<"=P'T_P&>S( G@\%SV4TI M334HFAN3)&_+E9,[,H/6N] YIJ%K/"ITHJHE6&JV\08Z&0R=>J8IF_OP+G22 MYVG^I1RX(#J.6,\ M*GZBJB58:K;S!C\9C)^?5+O4][I;P8,9<*ET\%X]O!_>.4#E4BPU.P>&2QG, MI;]\)[:['Z_)9WVU);^HU32!L '2#P%TNA\-Y6XT*NEAJ=CN> 5T.@ZY?*P@? M8-V(]]<]X)"^=J.J)5AJMMT&=CD,N][](-PE7SIPA,-AO2U'!5\L-=MR [X< M!E^LKA#NHN\\B/I=(?#.>"<"E7NQU.Q$G+3^OL"]/HTAW*5=RH)HUB_XX9C> M?J/B+I::[;?!71[^G8TA'!-+EZAJ*U2U!$O-SJ-!9O["XJU/8PAW,9F&L\"9 MIE Y&54MP5*S[3:H95:IQ)"I5U4M01+S3;7T"Z'%VK]FF[X0"LRZZ]KP1&]W4:%6"PU MVVT#L?P%B,7HN>$NX4Z=1A!X1[R3@(JW6&KV'U@9O UAO'U]STWHHBV+I[T_ M!%O"X;S_C H5;;'4;*L-VH8PVOKTW(0NU8:1PU)P0&^S4:$62\TVVT!M"$,M MU',3NJ :!O&L?Z&$(WB[BTJJ6&JVNX940YA4_5MN0A=78\Z=VS1P7&_/46D5 M2\WV_.1O8>'%68^.F]!=A:6.TZ@\B:J68*G93AN>#&&>?$W#33BPVLJ"F#I3 M-"I'HJHE6&JVS88CPY&>]$H#(EEIJ=",.4(X&<*X^?7M-J&+H..9PZ#P;GBG )5! ML=3L%!@$&-=TV:WDS7(F[@#F.YGV'40$352W!4K,?'V$ ,X(!\R_W,T4N M;XY#[EQ@X?"^UJ.J)5AJMO4&.",8.+^ZH:G3/WV(Q. :$[P?WCE Y5 LM4,. M)B=/PFH>=/:;*&^SHM)']$;+!V^F^G M#\\..[RIU:Y].-:-JFNU;5_>2;&6 M9;.!_GZC5/W\IGG>UO$);HO_ 5!+ P04 " "Q@)E8.R&I>[@& !P,@ M&0 'AL+W=O>$+),NR1 2#Q>&:8 MQS-.)O=1_%.OE4K(0^"'^GRP3I+-V^%0S]#?4F M5G*1#PK\(;,L,0RD%PZFD_R]K_%T$J6)[X7J:TQT&@0R?KQ0?G1_/J"#IS>N MO=4ZR=X83B<;N5(W*OFV^1J;J^%.RL(+5*B]*"2Q6IX/WM.W%R[/!N3?^.ZI M>UUZ3;*ES*+H9W;Q<7$^L#*-E*_F229"FG]WZE+Y?B;)Z/&K$#K8S9D-++]^ MDOXA7[Q9S$QJ=1GY/[Q%LCX?C 9DH98R]9/KZ/YO52PH5W >^3K_2^Z+[UH# M,D]U$@7%8*-!X(7;__*A,$1I@,UJ!K!B ,OUWDZ4:WDE$SF=Q-$]B;-O&VG9 MBWRI^6BCG!=F7KE)8O.I9\8ET_?S7ZFGO;*_+JQ9_DL^9*5^ MZ.CLA_!6;^1P>='-VNCFH MW?[2B6Y!-VI!KK=.Y?%"TC.7,ZO&Y;3$&WJ,TR^C,/'" M5>9I)>/PC=DXD&CF>RM9:T-\@K9&!+10ULG%M ^X4* +10$Q_9(&,Q63:)G; MTYA6FVU#0=9M5JW$;*'[5C8O.=VI<3@@A>),N55Q4*-.I0JX-,.:/2H#6#$<5L]"XT+.?_K1JE(% M5%!;8P'/V*B;+_O #@/L,)0;I5_Z-ZV6J4_^\9;5GL3E4/)H?I-D7&S]"!V1 MA7S$MH VL,?&V=.TY5&(*:*?)%!M1)]@,4&L-C= MP&+WTE;R;.K*>(8\[!B /PV*=ILMD5739JUT8< , ^ MKNC)F\RF9+Q6_I9U:V]3[=X^R& #&>QN%8[=1X5C S3LIA7.H>C#Y9B@RZ,/ M4PH 8>,%3^-8&^W'&C.Q5A=L@ ;3]V?7LI@\^Z&_# ;/?(IBAX_1R(%,ZD<%I<<1^N)#T?#_,:_;##A##P8E1X_\3U4/XY&T-#%AQNF'% MZ0,K#F#%.=DI32&)TM_][]:X'R#BX!"I=G^+SCT^3UM3 HN<;ETPIP\(<8 0 MQRN13IW[0G:YDV?QPYYX#DG@;)'5JX.,SMG4_<(AW MXQ#O@T,<.,2;5BV-NG:\JGBIO4&@=(= &Q+]?WU\7+VV3@!6\6ZLXGVPB@.K M^,E8Q:MO*> UQXT<8,5[@!7>SL=G;&M5P!;OABW>![8$8$LT;: U2@QBOX_F MN'6)00"K!$Z7CF[OG!AP]=HZ 7 HNG7F1!]L$\ V@7?4CD@,A:3GB4'4%#$" M "9P@%5'"-+;Q^6UM1F@3G0[IQ&]W-=6NK$-/Z=IW.XZ(.?XWKX 'HFF+3F\ M;R+V[S:@;%R;E(!%H@V+\!8_+K*M6P$VHAML1!^P<0$V;E/8'(BZ W*>6OR8 M4L >]S3M.7>_/4>MVKM:7$C^;JM:J'%?'Q??UJ< ![=;X>/V4?BXP VW:>%S M*.1P.>/#$0=L6P]/Q ]BS&9QFO/+,]\M72C+/.,C'Q M]O&&[442;?)'"F918F(L?[E6)JO%V1?,Y\LH2IXNLJ<4=@^93/\#4$L#!!0 M ( +& F5@AGU-CZ ( /P+ 9 >&PO=V]R:W-H965T,/(@:0Z"FAJ9A9L939J6V+,(8$BQ[+(%4S M:\83+%67;VR1<<"1$274]AS'MQ-,4BN8FK$;'DS95E*2P@U'8ILDF/\^!\KV M,\NUG@=NR2:6>L .IAG>P!W(^^R&JYY=ND0D@500EB(.ZYEUYI[.72,P*WX2 MV(M*&VF4%6,/NG,9S2Q'[P@HA%);8/6W@SE0JIW4/AX+4ZN,J875]K/[TL K MF!46,&?T%XED/+/&%HI@C;=4WK+]=RB AMHO9%287[3/U_IJ<;@5DB6%6.T@ M(6G^CY^*@Z@(W,$; J\0>.\5] M!WX#F.S-8"RQQ,.5LC[A>K=QTPYR-42L: MDNIKO)-@KNI8Q<%0;/%Z Q(2*$S5]?[= QT8<+3#= N(K5&H<$D$')N,(3E. MQ1HXAZCI#'+CB3'6R6\7#">]\=3>5=E:HW^0;5BR#5O9YEC$*,,D0EBBD#)! MTDT32.[B>A62P?@526NL#Y+X)8G?2O*#21"("+&%"$F&]-=(I1VV3X$W/I^Y MG5\A&KW :0WX09Q1B3-JQ;F@$80,7:9AT]Y;M8>^6QV9U3#')>;XGY+(N$O0 MCLQJH),2=/*_DDBK\:%G,'G]U _*Q[Y&YCI_/_=.)TFDW>90DL*MEI-\IY*3 MZC25XL7M-I&T^QV,Y;ZZH9=(=J4TTW7Q%>8;HJHJ"FNE<7HCE8=Y7FKF'H^353S$5'%X!EP1_\ 5!+ P04 " "Q@)E8[_-9 MUM@# #=#P &0 'AL+W=O!)([O.6 O9@79P1K4Y^))Z#N[04EH#DQ2SI" [=Q:XML5#DQ"&?$7A8,\N49& MRH;S+^;F(9E;CF$$&<3*0!#]\PPKR#*#I'E\K4&MYILF\?3Z%?WW4KP6LR$2 M5CS[FR8JG5NAA1+8DGVF/O+#GU +\@U>S#-9_D6'.M:Q4+R7BN=ULF:04U;] MDF^U$2<)&J<_P:T3W/.$X$*"5R=XI="*62GKGBBRF E^0,)$:S1S47I39FLU ME)EE7"NAWU*=IQ9_<)X<:)8APA+TD !3=$O))@/TP!1A.VHNEU*"DF_1![VM MWJ%5JI^#1)2A%1'BA;(=6N9\SQ3B6]0 7MV#(C23USKE\_H>7;VY1F],TJ>4 M[Z7^G)S92BLP/.RX9GM7L74OL/70(V@]2R#IR5\-YV-W ,#6UC7^N:_^ MW;F#B(]$W" /OT6NXT[Z" VGWT/:/$O0$2?\ HM*-%,X7M>!$$0>GI!GT\E]81A/ VC)JQ% MUF_(^H-DE_'7/9745#59'L-B+^)4ER94"&I$)/_H.J!+IY+H:@V /G %R+_N M$U)]R3]AB*, .\Z9D&Z8[SL3OU]'T.@(_J_IH%5HNPL0E/<=T[N@0R ,W*AC M>#?L;%U:1*<-T>D@T4?0]C(:DPRM86>,[:,XB/&]AV$DL);%WGN-#C;HCUA@1>Y%VH"=H[_EYV?5A7J3[7+@A]U MRD)/G#F4TPM:3GH,/%IEJ*%:M2F,<,?WGKBS]6F3=8]DW4&R[TV'*?ZK.@R# M?.^Y& NM+?G8-. ?V37@4=N&L=#:5AP;!SQNYU##M8[,U//]\'R[]L1-IF'@ M7-BNQ^8!_[SN 7?[ K=;)'J"_" *+P@Y=@]XO/:AA@K:KD^[KO?&G:Y.1=8^ M&:!R$+MRKI0H-MN_FJ6:I\WLNBPG-OL87@V^>B#0VT:B#+8ZU;F9:J-$-4M6 M-XH7Y3BVX4H/=^5EJN=O$"9 O]]RO4#UC?E ,]$O_@502P,$% @ L8"9 M6$-MT-ZB @ '0< !D !X;"]W;W)K&ULC95= M;YLP&(7_BL6JJ96Z\A$@T!&D?FA;+S95_=BNG? 2K!K,;!/:_?K9AK)L<9/= M!!O\GN<<8K]D/>-/H@*0Z+FFC5@XE93MN>N*504U%F>LA48]*1FOL513OG9% MRP$7IJBF;N!YL5MCTCAY9N[=\CQCG:2D@5N.1%?7F+]< F7]PO&=UQMW9%U) M?7J5YO%GPGT(NM,=))EHP] MZBE%A?E$_KO4<99C[A>K=3TP$0UUDI4G#@:#-PQ^Q?P,S?Q3%'A!B![OK]'QT1SWP_\S-U83(23B?"0B<@&&ZJB+5@\BV:!'19-L.@0++;!HAU8 M%*1A8H?%$RP^!)O;8/$NS$OCN1TVGV#S0[#$!IM;8(D7VV')!$OVPAXJ4*V\ ME,!MR&0'J7I]Y'MV9CHQT_U,)C&UX=*=71DF:9*$_^#)A(UIH&N&12M5,SK-3W"[A>H)Z7C,G7B>ZITQ&ULK59K;YLP%/TK%JNF5EK*^]41I#71M$G;6O6Q?7;(): :S&PG=/]^ M-E"4!!)E6KZ '_<"U+RJ98)4=WH.D\R*#"_IA64LB>E MK,!"5ME*YQ4#O&Q !=$MP_#T N>E%D=-VSV+([H6)"_AGB&^+@K,_MP"H?54 M,[6WAH=\E0G5H,=1A5?P".*YNF>RIOT1 S2J?;)O)F%*KX)^)E# MS;?*2#E94/JB*E^74\U0@H! (A0#EK\-S( 0121E_.XXM7Y(!=PNO[%_;KQ+ M+PO,84;)KWPILJD6:&@)*5X3\4#K+]#Y<15?0@EOOJAN8UU+0\F:"UIT8*F@ MR,OVCU^[>=@"F,X!@-4!K%,!=@>P&Z.MLL;6' L<1XS6B*EHR:8*S=PT:.DF M+]4J/@HF>W.)$_$<%@+=+4B^PFI:.;J<@\ YX5=H@IX?Y^CRX@I=H+Q$3QE= M:0+.;""ZTDWR&T[B'5@D.^872/;_( LPW)&X+/C\#DD/=S>A>O2;N_9 MZCU;#9]]HN'0YL UK\_IWI&1_'[)V);,>LW9NU MC[''=R(#)C?V0HS9;+%>@U4'?A,'9ACIFVWUPQC3L?J8'5%.+\HY*NJ)"DP. MBFJQ[K:H, CV90VC',V'N46'?@/-)LF8,2H$JRM3^&)/H#@:?F%80 MN'L:1\*

NW(EW=0EL],@=Y?G7(W[/A:>N;MNM+#ZYO.+QK0L,W]C;A,,IQMJ-:D?I6QE.O#9EA5KG,7@12 MB3.N?;F+69O!VXJ@59,$%U3(E-H4,_GH :8"9']*I8^NHO)J_XR*_P)02P,$ M% @ L8"96$E6<;3J!P 64( !D !X;"]W;W)K&ULO9QM_RHV:Z20SJ04'2+)K:\8/29N9N/;82?NBTQ_& MM4H0QC3)0I:@E"[/1N?VR>4$RP'%'G^&]"G;V$;2E05C7^2;#\'9R)(6T8CZ M7$H0\?)(+VD4225AQ]=*=%3/*0=N;C^KOR^<%\XL2$8O6?17&/#5V6@V0@%= MDCSB=^SI=UHYY$D]GT59\1<]5?M:(^3G&6=Q-5A8$(=)^4J^58'8&("G6P;@ M:@!^.0!O&>!4 YS"T=*RPJTKPLG\-&5/*)5["S6Y4<2F&"V\"1-Y&.]Y*OX; MBG%\?D47'-TLHO"!R+!FZ!=TPU?[*_3ZU1L4>(AO13?3F01T38OIHUP3B>S6<,-<*(#W9C5;LP.^X) M_Z'K, GCO.W;[ (4[5H]AL0T_X]K_X]W?U5\2#*>YH(*^%NQ+1*69AS=$4[? MHG?+)2V6>'1+4U_L(: "_7V^$ /$TO]/6VR.3<;&D)@6&]M2J[(%)SF+XY#+ MP* EI1E:D^\RUY$ GSS),QJ@-4L+#A(%+M9KM'S.GMGQ491EPYC5:YTX[76"&W72!W+9BKELD'+ .KD09S@H%:DBMB\%D+$H#,2[ M 'UBG$0BFP*18#1(:)8ASAH"Y\&_XA1$[/[NXL.GJ_,3]+'8<4429!_)Y;0E M:D;YSI2:'EI%>+8W>/F!4-DY/H;4]/@HR+1ARCP/1+J(ZA*I)"H)D23)8W&V M6,4H)NF#.'7(8*L0 M]\'#M@)B>S9XL1G%95-J>GP4,-L@8D78V!ZZXK!1^C:EIL='T3<&Z=54Q56S-"KN9<'!UASJ MK6)I?. ERQX*3I:77G#.%IZ$C>Z<4'V@.E:HCO>X/FJXX(SRMBDU/3Z*MS%\ M2=54P7GM!3=M5%P?^(P5/F,8GX>L.%E?B*7HMY0*F;0U;(80NXIM'\".%;#C MZ>"E9I2V3:GI\5&TC>'KSZ9*;=9RZG9DV2\+K0]TQ@J=,8S.]S0)1>YWNBD' M2W8^VGW M*-@VK%^^,:<8Q1M3:GI#BNT=>"+QQ?/-^203\0TVVZ\VHT;13// MLAHWBN#)#G5&<:@#<^BN](4OB,/BG8]K'Y#J;-Q6=WX\D3^\#&1V%C Y\ M=?>C>+]Q%W?1R&M$?)^E07&->RUCTAH2MY'HN#71^^ _1_&? _/?'XS3 F=D MBXY8E6Z>$IJV'V.CEU%-J>EN*PYT)F!2EQTW09CY$GQ45SKP?>>395:>\NFW>AM@4I4VIZ?%1+.T-TK59S=(HMD:M]4'& MGB)C#R;C@6IM_XX6V-[.N=0'F7N*S+W!FS8]HXQM2DV/CV)L;Y"F3:^]:=-N M=+3 YASH[D0A\P1&YH&*;8]F%MC0KEED2DT/JX+SR>"-FA.C>&U*38^/PNO) M((V:U2R[+H; QG1U=KSQX_V8I@_%,PTRY,M?ZY:_XZ\_K9^;<%X\+6"L=B\? MNG!=.)J)-6@IAEJ"_D8H+9]C4+[A;%T\"F#!.&=QL;FB)*"IW$'\?\D8?WXC M)ZB?)C'_'U!+ P04 " "Q@)E8%%A/4)$$ 2(0 &0 'AL+W=O(M9 M]MX37\S8048T(4\@]_;&5[K;2_V&OYBE>$>>B?R6/G%U MYY/<0ACH@:_$W)4=1N0;:RHJQ[_KFS\W<"_2(2$36 M4DM@]?)"'D@4:24UCG\+4:_L4P=6K]_4/V7FE9D5%N2!1?_0C=S/O8D'-F2+ M#Y'\RHY_D,+04.NM622RO^!8M T\L#X(R>(B6(T@IDG^BE^+1%0"X.!$ "H" MT,\&A$5 ECD_'UEF:XDE7LPX.P*N6RLU?9'E)HM6;FBBI_%9$< &NED1B&HGKTTUNP+?G);CZ< T^ M )J O_;L('"R$3-?JJ'J#OUU,:S[?%CHQ+ >,;\%(?P(4( &+>$/]O E69?A M83W<5PDJLX3*+*%,+SRA]^D@#YR E--D35,<@13_4+4L!6!;$+%D=R,)CU7Y MK&2;UUQ\T"ZN%^J=2/&:S#VU$@7A+\1;_/H+' 6_M3EW)%;+0UCF(;2I+_)Y MIT(DGRLMB,@W&P;!D5@M#Z,R#R.W13EJEMLD>%^3UCX[ M.AJ7CL961\\22^6%)FH"B9" JUMPA07 ("5\K>;XNLU7+@J#BK'@-D##=\ZL M?7=T-BF=38&# (G"[+ N] MZKI$<#1X7[[V;KO:JO 2/%O!X#_P2!,:'^)6'U:!2R?1E5K=K@$?V"OY0*?H MXTJMG@L#/]!./QT?RX5JX[DH).\J]DI?[E2J^?"$!BT@DT'\)@VP".$HP8WV[OM: L9GD)VGM)U M; JM\(^#1YV@8LGLP_.0H:ST*#7PG8*8:[4ZKDP$(:L8-.YL(>MA3UL%'8? M6(4,5B$[5JG"'K<.WQ$0%2;[P"MD\ J->RUGIQ3F2JV>"T-AR+Z[=3%Y%'JU M+8]1T-B+M'?;U98!*F0'JJZK=/J3J[0/K@H-5X5GN6K2>G3AE*9Z6IT"E-N5*KY\+05&BGJ:U=7E9.Y7C:GPO;-J<8BM?=^ MJ3N_/&<6 MD I)M2N5[6A&;3\;WWC\9[0 M'VP+P-&AR$LV\;:<5_>^SU9;*##KD I*<6=-:(&Y.*4;GU44<*J,BMR/@F#@ M%S@KO>E877N@TS'9\3PKX8$BMBL*3%]FD)/]Q N]XX7';+/E\H(_'5=X T_ MOU8/5)SY#4J:%5"RC)2(PGKB?0SODW H#=2(;QGLV=DQDH^R).2'//DKG7B! M] AR6'$)@<7?,\PASR62\..?&M1KYI2&Y\=']$_JX<7#+#&#.,L9^_0&Y25:)'EN9"1C7TN MYI C_56--]-XT16\+EJ0DF\92LH4TK:]+WQK'(R.#LXB*^ "TP[JAN]1%$0] M]/4I1F_?O$-?*AEF!O?FOX[6/:(98&([3 RK$XS!/+&;/T$ES(/:BUQ*8&&J MVTC95:A=JY0FR;1=SVPG4]$]J_ *)I[(-0SH,WC3WW\+!\$?)H)=@L4NP1)' M8"WR>PWY/1OZ]!NF&5[FH-5$2? MI^&P) S/6 LZP>""6JLKMT9W/670GK(_:L^9 M.)JS1>Z@(7=@)?=+F[EC;)H('/P4=='H,NKF>E 8M0.X>Q&;5I]NC4U'8"WZ MA@U]P]MBDX)G6>'8$UJ+OKJ'OSDI?4$D',3%U,2? M'8[3G2F5S*U6MX:N2[#$$5B+_# X+<8#*U]_[XHE4,7]>OV!9:*\K<0R7-"H MVRK1"N8(&)=U3UTDJS7[-9I;UT!.D6+G:(E-5K?^+*V53EK MD4*K*@N1T(N=,8W;+6\FUB5:[!0M<876UB Z:1"]LKFI#5U)X!(M=HJ6N$)K M2W!J+T-K Z4E4 L:TYK;*(T=L*L7%489G':93M$25VAM&4Z-9FCO-,]JA*K/ M3*]T2MB+"G#UN\BL1CU/C)?K'/O$-Y/NM %UA=8F_=2"AO8>=($/5TN RY9Q M[A0M=HJ6N$)K:W#J5,/!:TN RWYR[A0M=HJ6N$)K2W#J=D-['_B*$O!KC:51 M!Z<-KE.TQ!6:UL$_^WY? -VHC1.YM-^57'\I;ZXVFS,?U9;$Q?59>#_76RPG M&+WCL\!TDXE:D<-:0 :=H7B7J=Y$T2><5&J78$DX)X4ZW ).@PD !D !X;"]W;W)K M&ULK59=;]HP%/TK5E9-K03-]\<81&IAU29U&BKM M]C#MP80+L9K$S#;0_OO93D@##;23> $[ON?DW'-MW_0WE#WR%$"@ISPK^,!( MA5CV3),G*>287](E%')E3EF.A9RRA!_PDL.&-,5*93"E]5)-OLX%A*4&002(4 Y9_:QA"EBDB M*>-OQ6G4KU3 YGC+?J-SE[E,,8=\4 M4J)ZD9E4KYU7'7^($!H8\>QS8&HSXXP<[L#ZW)7TB MLAT+W-H"]QA[_+(92@>8.A==.N^NMG:TYE^2!II4W23KV'%"VP_[YKJ964N8 MY8>V4X?M:/9JS=[1LNUK;M2JUR;6.V6Q3D2VD[A?)^X?+Y9(@^6Y@X:E^@Z:""P@5XG(XW=# M"EPD!&=H3#G1'>#WER>AVLDT XGGXD];DF_HT'XU+K7Z]6V5/0W7CF%A;5AX ME/R6%HNN )8C>GAOM^4?MARP3Z&]?PY?A]E19+L'RAS5JJ.CJN^ID 7[3\71 M:\6N'WG[BEO";,);# +4G I92Z!UF4H]S&PO=V]R:W-H965T9MHXMHI*HD92=_ON1E"-;ER@QH")(+-(\ M+WD>4LQ+SHZ,_Q 1@$3/29R*N15)F4UM6VPC2(BX8QFDZIL=XPF1JLCWML@X MD- $);'M.DY@)X2FUF)FZM9\,6.YC&D*:XY$GB2$_[R'F!WG%K9>*K[0?21U MA;V8960/3R"_96NN2G:I$M($4D%9BCCLYM8G/%WAH0XP+;Y3.(J+9Z13V3#V M0Q?^">>6HT<$,6REEB#JXP!+B&.MI,;QWTG4*OO4@9?/+^I_F>15,ALB8,GB M?VDHH[DUME (.Y+'\@L[_@VGA,P MRP6YB\ZGMHZ%MKF0K+D%*Q&D-"T^"3/ M)Q 7 4JG/< ]!;CU /^5 .\4X+TWP#\%^(9,D8KAL"*2+&:<'1'7K96:?C P M3;1*GZ9ZWI\D5]]2%2<7#Z"@"31 CT3FG$JJ"FR'3#5ZH&1#XZ+R9@62T%C< MJK;?GE;HYL,M^H!HBKY&+!GCJ_+SIW7^G<0X\LE9% ?Z8A MA-5X6R529N.^9'/O=@H^$GZ'//P1N8[KMXQG^?YPKR5\U1V^@NUKX95LO')N M/*/GO3JA*K@!N6X(9O@1NV82BBAA<8O& < M^#4,G=K78NA)K((A*#$$;V$(VC $30P>]NL8.K6OQ="36 7#J,0P>@O#J W# MJ('!'4_PL(:A4_M:##V)53",2PSCMS",VS",FQB&ZJ>&H5/[6@P]B54P3$H, MDTX,7R-03G,G@;?!F#1@X+$7!),:C82IHNKN[EDU?:E4X%S83=\)Y "$&:ZV<2O2=Q#F@%15; MEJ>RE1%N,!I@![NC^OKI[O9J2#VI52&Y9TAN)Z0J'^7Y/F? B=2.I6'(6ZFY MS1W(&X[]41U:YS"NAN8V/1%VA\%YXZOB.-M?W.U_G_(LBT&_1^J]HFEQR"W. MFS&1RJ])5KCB=BN,>_7"O:JM^E*KDCW;8=SMAY=$1"@C-$0**B*)?@V%0JS] ML>*J3G7:(2>*;<[-!.C%R,K%V#B*M.+W&XMQX@>-3:YIJ$?F[':HX/H5'AB? M33#N=L&?:YES?9DP8+M!K@I$"%#PV$8=C],"GCIH1"3=@Z'[/EC#EG.%W_R7 MT&PV\?V@3JM7JVQ?7"XDP/?FDD8@LW47)_.RMKP(^F2N/VKU]WBZ+*YSSC+% M[9(Z=^UI*A2JG9)T[D8J 5Y@. MRFNSQ?]02P,$% @ L8"96)O=B'Q4! /1@ !D !X;"]W;W)K&ULM5EM;YLZ%/XK%G>ZZJ0UQ$Z:OBR)U*;=;C]4BQ9M M^^R $ZR!G=FFZ:3]^'L,%$)'K*9UOS08.(_/JG3A@SZ"%+A9X$ MB3&;BS#44<(RJGMRPP1<64F540-+M0[U1C$:%T99&I)^?Q1FE(M@.B[.S=5T M+'.3YXFD(6]#@TX(2%"J-J MPZMR0[)GPP&Z@RT2C6Y$S.*V?0C.UPS((X,KX@2\HZJ'!O@#(GTR[/!G]GSS M@<.=01W008$WW(-WS?4F-PS]X"9!LR*!3'6%R0ECN_=";VC$)@&TIV;JG@73 M?__!H_['+HZ>P%J,AS7C88$^>$D)=3$?^F3N":S%_*1F?N+,]6=X3**C5&IH M$,52:EB,C$2:&9,R&Q!$UXH51YV!<*(?&H@2[+P LP_O^^FH=S8.[SOXC6I^ M(R>_1:Z8^8W^0+L+GN59%P#TCN4++7,-UK=$VX5&"$JJAB'_E7$$5+Z6(.TNVW #CG3+K M]W!=9B5'IQP%ID<;]Y??=?6+65H2>6OM#: M-'=4"G[KRJUV>%*ZY$GINOUX*4_2\"3N-XJ"EPF:*[GBI@=%_&PUX<8].-N> MT-I1:"04'OA5%-BKF/*%UF;?R"GLU"RO5A5N^(.#4:)ATA(6HVYA@1OEA-W2 M:0$?;I#2#^@S$TS1M,CS90Q?.%P;1>VW';IY@(]5#9\AA_2!5TWE"ZT=I$9^ MX9'G/O"JQGRAM=DW>@P[M=#K^\"K;JO06GUPW.^=[FF$1I)AMR:[%8;!]@;= MB@B*^J!:]Z2S*H)OH=IP(]OPN>=:]ZKB?*&U1QB-C"-._?3J6G?#'QJ,"JU5 MZ[@WZ"YUTH@XXA9QLX1"0NWXZ!/E"GVG:5[(N3K5!MU0)8Z_Y 9]6:9\3>VD M[Z#'O]N#@^/P%F*0-&*0$+\M0;R*0%]H;?:-""3N0=JK6\*K)JS0=L/";E#_QV#Z/U!+ M P04 " "Q@)E88+1BTV # 7"@ &0 'AL+W=O2 MD_;O1\F.ER9*T(>]V)9$4N<= %@R%/)A9X%A3'551CJK("2ZDM9 M@<"5E50E-3A4ZU!7"FCNG$H>QE$T#$O*1)!.W=R=2J>R-IP)N%-$UV5)U?,- M<+F=!;U@-W'/UH6Q$V$ZK>@:%F!^57<*1V$7)66#'7S+9T%D 0&'S-@(%%\;F /G-A#">&QC!MV6UG'_>Q?] MB^..7)94PUSR/RPWQ2P8!R2'%:VYN9?;K]#R&=AXF>3:/R(8)>XH+HW"5H9])%T9F#X7D.2C]CMP^ULP\DX_D1UTN01&Y(HN"*M#D M_6_#,7^^>G(&3=/HF+EYR(MX]9%)D MC#/JLA8%-040T\ M-K@,5 E']V PNIIC]C/RT=D< 2QWS]@ M<6PRC/P4AAV%X5D*BU,Y>9R!'UV:^I /?>(FDP/P/JMQ[\01C#K\HU<>P:Z0 M:5W3)0=28RE"Y+8R$EFY_[;B5&AW7V!."?=W&KPT=:V>6\,23.%/L]$1^OB0 MH,=DZ&'S89_X\B8>'\#W64VBT0&#<.^.+4&M7>NA$5HM3',[=;-==W/M M+O6#^1OL>IHFY5^8IF7"NV?-,,TXK#!D=#E"3*II0YJ!D96[R9?28%_@/@OL MW$!9 UQ?26EV [M!UPNF?P%02P,$% @ L8"96" VC7QG! 1< !D M !X;"]W;W)K&ULK5A=V9)-#I/KC-)$W[K(!L- '$2L+.=OKC>P4$@X-)F-6++0G=HZMSI:,K+0^, M/XN($(E>DC@5*R.2,KLR31%$),%BQ#*2PI4QDVRZ_HOQ63A\D\84%N6?P/#66T,N8& M"LD6Y[&\9X??236AB<(+6"R*7W2H^EH&"G(A65(9@P<)37G3>FG<\9/%VU8*B.!_#0D88>]UV_O6.,>!!-8JZES M7JF[<7HA-YB/D&M_1H[EC#L\NOVXN=LUH1\;W?^ N;-0YM:LAPRW7D=N@>>> M6T9#D/(MBXZ(ZS'<=)5Z1+I'$WDE+&*Y'A@*P,D#Y!^)X8ZY]_LJ?6 MKUTDZP3S=(+YFL!:X1C7X1CWH5?AX'4XNL)0(DP+!'6>[-?.8K(T]TUVW_9Q M)]-YNY/7Z\I0UC2!M5B;U*Q->EF[!LG[$M(X+Y1/D"#G5%*0+O(2Q#FH!MIR MEJ" )5DN<7'0L2TBF*PDG,N(O^T+!]:$A__D8A[;I'B^1%3?)BT,GYGHCWH@U=]SK!O$4G@>X)@9J& M;'%M6\?;A_7#>4H%T4I"K-.3LG^].@ M7,XABV/,&PE+Y\JN8&?-];.8CN:GN[Y_^,'4OQW5F8Z7 MTPU^H4F>H/_0X+RE'WFH8FA%\[2B^;K0VC$ZWDAM?5=26^N=5"N:IQ7-UX76 M#LKQ7FH/NYB^=[Q6<*U3S!K9IQ*D\PKJ:47S=:&5A)N-I[Z$\%WQQBH@]8/[ M9OET5;?6[[C7Q>OE2?N-?75;OL8>8J]_A]02P,$% @ L8"96"W( M*O=> P :0T !D !X;"]W;W)K&ULK5=M;YLP M$/XK%INF39H*YC7I$J2FW=N';E6S;I\=<@FH8#/;23II/WXV$)(00E_&EP2; MN\?/<[[#Y]&&\7L1 TCTD*54C(U8ROS<-$440T;$&T9:RHRQ M>SWX.A\;EF8$*4120Q#UMX9+2%.-I'C\KD"->DWMN/^\1?]4B%=B9D3 )4M_ M)7,9CXV!@>:P(*M4WK+-%Z@$>1HO8JDH?M&FM'4] T4K(5E6.2L&64++?_)0 M!6+/P;%..-B5@]UPL.T3#D[EX!1"2V:%K"LB23CB;(.XME9H^J&(3>&MU"14 M;^-4A?EME,^"(+51EYXQ+,DMANRL"_>W8H$D) M[!7 ^INS#NV1N=X7UKGT"X5YM3"O4]@MK(&NH(UXZ>CO$<>>$UC8;]!OL<.! MZ[M6;7? S*^9^9W,/G,F!+KA;)&TQM4_CNLP<'RGP:[%S/),\MA9[ #J0/:NF#/DI_T*?>GL .] YK MO<.75LCP*+HQ0ZK M^O6#$P3WSE[\Y#+YJ!L;_EB9= ,^-V_Z0CN4;^_DVWV42H72E^:>T XU[QH# MW'D.=Y5+Y;F?9HZGVO&@F8['=K;G6_:I>MD=XKC[%'^T7MRCHRP8^AYN\CLV M<['C#!KTS+VF-0.^+'IY@2*VHK)L".O9^KYP473)C?F)OD<4S? .IKR$J/9N MF5"!4E@H2.LL4#'C95]?#B3+B]9XQJ1JM(O'6-V%@&L#]7[!F-P.] +U[2K\ M!U!+ P04 " "Q@)E82>=&5TD" "A!0 &0 'AL+W=O)1%@ */54EDQ.O4*H>8RRS BHB M![P&IF_67%1$:5-LL*P%D-R"JA*'OC_"%:',2Q/K6X@TX8TJ*8.%0+*I*B*> MIU#R=N(%WLYQ3S>%,@Z<)C79P!+40[T0VL(]2TXK8))RA@2L)]YU,)[%)MX& M?*?0RKTS,DI6G#\:XS:?>+XI"$K(E&$@^K.%&92E(=)E_.PXO3ZE >Z?=^PW M5KO6LB(29KS\07-53+P/'LIA39I2W?/V,W1ZAH8OXZ6TOZAUL<.AA[)&*EYU M8%U!19G[DJ>N#WN X!@@[ #A:T!\!!!U@,@*=95967.B2)H(WB)AHC6;.=C> M6+160YGY%Y=*Z%NJ<2I=D&>TE6@!PKX(E@&:4YF57#8"T'OTL)RC\[,+=(8H M0]\*WDC":8N3W@D3X3N.%.%1)]8#OE+/-8U]X6'N\*GX4G" M.R(&* K>H= /XP/US/X>'ITH)^K[&%F^Z%_Z>*A=CBX^3&=F=RQKDL'$T\,I M06S!2]^^"4;^QT-:_Q/9"^5QKSP^Q9Y^U:OFEF6\ G3^A4MY<4BMHQA9"K-8 MMNG5* JN$KS=E_%GU/ R#$9]E*L/[[WV"L3&+@&),MXPY=Y/[^WWS+4=KU?^ MJ=X_;EW\IG'+2[^.#642E;#6E/[@4D^O< O!&8K7=J967.D)M<="[U 0)D#? MKSE7.\,DZ+=R^@M02P,$% @ L8"96";:+PY$ @ B@8 !D !X;"]W M;W)K&ULG95=;YLP%$#_BL6D/;6%0#ZV#)"2;M/R MT"E*N^W9P1>P:FQFF]#^^]F&L&Q*J)278)M[C\]UY$O<"OFL2@"-7BK&5>*5 M6M=+WU=9"156=Z(&;M[D0E98FZDL?%5+P,0E5

)-O./"CA:EM@M^&M>X@$?0/^JM-#-_H!!: 5=4<"0A M3[S59+E>V'@7\)-"JT[&R%:R%^+93C8D\0(K! PR;0G8/ YP#XQ9D-'XW3.] M84N;>#H^TK^ZVDTM>ZS@7K!?E.@R\3YXB$".&Z9WHOT&?3TSR\L$4^X7M5UL M]-%#6:.TJ/ID8U!1WCWQ2W\.)PF&4I.GTXTY7@(2/4E,*"_02DK,"S#'KE7L:[.#C?.SGK;N M:.$%6H0>!->E0E\X ?)OOF_,!KWPJ+<.1X$/6-ZA:'*#PB"LV>Z%-[W+#TGPL M0-H \SX70A\G=H/A\Y/^ 5!+ P04 " "Q@)E8SLDW0S\# F% #0 M 'AL+W-T>6QED6[1XA>M7!=BV'2\7'2![51\=Y1X@>D,>'^KO#:R+F5:ER=8^3$ M0]XP,5JOY(" MHT%!C6%:WMA.-;@*/H."NGV_*JS#F::K=J=+-H3J9I-,E$Z9;M*TR3HT&@B6 M@1W-9W.X&U6$ !JCF39\NAWYK6EQSY9F74[+ M#/?<.4'/_W:=9TPR3<6V:5O[;WF57^PXZKV6Y>I;9=^PUV/]SG[K)KNG8#(^ M!9,G49/]4S"9G(#)WJM]:QXT&=:GC*VCS,Y!IHD&<& 9HR^>P\8^4-G=@_@G;T[?B4970AS'T##LFF_9VE?)$GS:A;6(AZU*;] M#:;7CIO3JLW%9/6!3'^WUOANXQ5RN ZP/3U4(=A,\4K$9HJO-2#^=0-&DOAW M&\L##&P7L-J!_/X\4%-^3A3!KF+>L"<81Y($0Z 6_34:Q\CJQ/#Q[P_VE$11 MDO@1P/P.H@A#X&G$$,"0**K>@WOOHW#]G@HW_QD<_0%02P,$% @ ML8"96)>*NQS $P( L !?3T\$MP>:4#M.*2VBZD8_1!2 M:5K5N %(MB6/:(7->= MI3W;+T]!;X"O.DQQ0FE(2S,.\,W2?S+W\PPU1>5*(Y5;&GC3Y?YVX$G1H2)8 M%II%R=.B':5_'P=CCG?]ODX.+*?Z'WED O;L MI,JI@:+:]_51,9KJ V,FS_K^8##JYY2+WI?/Y[;6JF\7I&&)X5) 95GQS-FK M_KF_+)(3UWS+,V[>QKWJ=\9Z).>"Y_R=I>/>H$?T0;X^2,7?I3 TBQ,ELVS< M\^H=STP9GEQ4QR7DAFYU56/H]HD"R+@W&D"#.ZZTJ8ZHVJ? >&)P<%TJC+SG MF6%J1@W[IF1QY&)?-@-7T;L)E,BIP)4_>C8ED) M*/2!'W6/")JS<>]\"*$B)7-AH)/(0M1-P;'EE<)?+]+ZJ@W@6GVH[CCL4(NT M G<'.8U6<;1YRL C.Y)M)X_69 A AEV!AEOHJD%.40@AQU"?OH,07PO-!=.Z"C^1VE/!WW\-/!\1O(]N\>(BSZEZ(W)'8KX7'$ZC$"LG M22(+B)46Y"<$\I-;R"=V8J)@9*=D3J8@, 6VT>25FP.9%MH.X0,LA@_<8MY3 MKL@SS8#TD5%=*%:>T,!#%>/8,9/DWP+^M*JWF3"K>(ZU\DW*])5G634Z%BD< M#$\@!090M*$-.6->\1R+9<:VAD3;C._I1?=A*O$#C)+F=)_D3D,"?-FLV&J\!R[(F;[ M*E/]37J*:<+KTA.-A,##1.%U:8H&IH^9PN_&%.1F4\8^>ZSXF#'\*QKCS/:W M#8=.2+I41_-68^KPKZR.UG[$'.)?Q2&M6)A,?,!8-3CFR,9$5[\ : >&PO7W)E;',O=V]R:V)O;VLN>&UL+G)E;'/-V;EN MPD 4A>%707X AKN8+()4:=)&O(!%AD4LMCP3!=X^" IRK!1IHCF5-;9\_X_[)F_;8]ILNS0Z'?;'-*\V.7?/(:3E)AZ:-&Z[>+Q<6;7]HL8=#*9AO[GC.IE]G/F:''NXE\FMJO5=AE?V^7G(1[S+X/#5]OOTB;& M7(T63;^.>5Z%T_Y^.H7K0<:7R=7H[6->]6\?4H7200I!6C[((,C*!SD$>?F@ M&H+J\D%3")J6#WJ H(?R08\0]%@^Z F"GLH'R01EG! D#; FT%J0:R'P6A!L M(1!;D&PA,%L0;2%06Y!M(7!;$&XAD%N0;B&P6Q!O(=!;46\ET%M1;R706PBOJK01Z*^JM!'HKZJT$>BOJK01Z*^JM!'H;ZFT$>AOJ M;01Z&^IM!'K;8+.$0&]#O8U ;T.]C4!O0[V-0&]#O8U ;T.]C4!O0[V-0&]' MO9U ;T>]G4!O1[V=0&]'O9U ;Q]L=A/H[:BW$^CMJ+<3Z.VHMQ/H[:BW$^CM MJ+<3Z%VCWC6!WC7J7?^GWBF?]S'=>VYK?/Y_4ITO]\;[XZ_+V\G!2[CB'."' M],LW4$L#!!0 ( +& F5@HM&@3PP$ (D> 3 6T-O;G1E;G1?5'EP M97-=+GAM;,W9R6[",!0%T%]!V5;$>( . C9MMRV+_H";/" BB2W;4/C[.F&0 M6M&HB$J]FT2)[7=?;.EL,G[;6?*];576?I(L0[ /C/EL297VJ;%4QY&Y<94. M\=$MF-792B^(B<%@Q#)3!ZI#/S0UDNGXB>9Z78;>\S:^]H6I)XFCTB>]Q_W$ M)FN2:&O+(M,ACK--G7]+Z1\2TKBRG>.7A?4W<4+"SB8T(S\''-:];LBY(J?> M3+OPHJLXBVU+YL.N))]VESC3HYG/BXQRDZVKN"3UUI'._9(H5&6Z+WK3G1SB M#M/^RJ_.;\MT!<:9,V>LCR?FZ/*XXY$TJ_LV%B(7BNY//"7&TE=_'S6GG5/^ MR^RXO1_&K=KS\*R]7;_'7\_X5/_"/@1('Q*D#P72QQ"DCQ%('[<@?=R!]'$/ MT@&UL4$L! A0#% @ L8"96)%H1#GQ!0 S!\ M !@ ("!#@@ 'AL+W=O&PO=V]R:W-H965T&UL4$L! A0#% @ L8"96 )Q77(/!0 F1, !@ ("! M,!H 'AL+W=O&PO=V]R:W-H965T&UL4$L! A0#% @ ML8"96""Z-BF5" \R0 !@ ("!CRH 'AL+W=O&PO=V]R M:W-H965T&UL4$L! A0#% @ L8"96'JV.$AC$@ O3< M !D ("!<$@ 'AL+W=O&PO=V]R:W-H965TYC !X;"]W;W)K&UL4$L! A0#% @ L8"96 ,]_D2A P <@H !D M ("!5&\ 'AL+W=O&PO=V]R:W-H965T M&UL4$L! A0# M% @ L8"96-%>(*41"0 8!4 !D ("!+80 'AL+W=O M&PO=V]R:W-H965T&UL4$L! A0#% @ L8"96-3+ M$\8>%0 :SX !D ("!C9< 'AL+W=O&PO=V]R:W-H965T&UL4$L! A0#% @ L8"96#IXI*K(!0 ZA4 !D M ("!P;8 'AL+W=O&PO M=V]R:W-H965TR^,00 M '4, 9 " @;# !X;"]W;W)K&UL4$L! A0#% @ L8"96!Q$?% 1! 9@P !D ("! M&,4 'AL+W=O&PO=V]R:W-H965T_5&-X ( .\( 9 M " @&UL4$L! A0#% M @ L8"96#7F"M%& @ _00 !D ("!X\\ 'AL+W=O&PO=V]R:W-H965T&UL4$L! A0#% @ L8"96&3WL0\^!@ Y"4 !D M ("!9>8 'AL+W=O&PO=V]R M:W-H965T&UL M4$L! A0#% @ L8"96"&?4V/H @ _ L !D ("![?P M 'AL+W=O&PO=V]R:W-H965TH@( !T' 9 M " @1L$ 0!X;"]W;W)K&UL4$L! A0#% @ ML8"96!(FD=+& @ 4@D !D ("!] 8! 'AL+W=O&PO=V]R:W-H965T&UL4$L! A0#% @ L8"96(![):RM! MUAH !D ("!VA8! 'AL+W=O&PO=V]R:W-H965T 0!X;"]W;W)K&UL4$L! A0#% @ L8"96)O=B'Q4! /1@ !D M ("!=R,! 'AL+W=O&PO=V]R:W-H M965T&UL4$L! M A0#% @ L8"96"W(*O=> P :0T !D ("!-S ! 'AL M+W=O=&5TD" M "A!0 &0 @(',,P$ >&PO=V]R:W-H965T&UL4$L! A0#% @ L8"9 M6,[)-T,_ P )A0 T ( !QS@! 'AL+W-T>6QE&PO=V]R:V)O;VLN>&UL4$L! A0#% @ L8"96*&7 MZI3) 0 H!X !H ( !GT$! 'AL+U]R96QS+W=O XML 64 Show.js IDEA: XBRL DOCUMENT // Edgar(tm) Renderer was created by staff of the U.S. Securities and Exchange Commission. Data and content created by government employees within the scope of their employment are not subject to domestic copyright protection. 17 U.S.C. 105. var Show={};Show.LastAR=null,Show.showAR=function(a,r,w){if(Show.LastAR)Show.hideAR();var e=a;while(e&&e.nodeName!='TABLE')e=e.nextSibling;if(!e||e.nodeName!='TABLE'){var ref=((window)?w.document:document).getElementById(r);if(ref){e=ref.cloneNode(!0); e.removeAttribute('id');a.parentNode.appendChild(e)}} if(e)e.style.display='block';Show.LastAR=e};Show.hideAR=function(){Show.LastAR.style.display='none'};Show.toggleNext=function(a){var e=a;while(e.nodeName!='DIV')e=e.nextSibling;if(!e.style){}else if(!e.style.display){}else{var d,p_;if(e.style.display=='none'){d='block';p='-'}else{d='none';p='+'} e.style.display=d;if(a.textContent){a.textContent=p+a.textContent.substring(1)}else{a.innerText=p+a.innerText.substring(1)}}} XML 65 report.css IDEA: XBRL DOCUMENT /* Updated 2009-11-04 */ /* v2.2.0.24 */ /* DefRef Styles */ ..report table.authRefData{ background-color: #def; border: 2px solid #2F4497; font-size: 1em; position: absolute; } ..report table.authRefData a { display: block; font-weight: bold; } ..report table.authRefData p { margin-top: 0px; } ..report table.authRefData .hide { background-color: #2F4497; padding: 1px 3px 0px 0px; text-align: right; } ..report table.authRefData .hide a:hover { background-color: #2F4497; } ..report table.authRefData .body { height: 150px; overflow: auto; width: 400px; } ..report table.authRefData table{ font-size: 1em; } /* Report Styles */ ..pl a, .pl a:visited { color: black; text-decoration: none; } /* table */ ..report { background-color: white; border: 2px solid #acf; clear: both; color: black; font: normal 8pt Helvetica, Arial, san-serif; margin-bottom: 2em; } ..report hr { border: 1px solid #acf; } /* Top labels */ ..report th { background-color: #acf; color: black; font-weight: bold; text-align: center; } ..report th.void { background-color: transparent; color: #000000; font: bold 10pt Helvetica, Arial, san-serif; text-align: left; } ..report .pl { text-align: left; vertical-align: top; white-space: normal; width: 200px; white-space: normal; /* word-wrap: break-word; */ } ..report td.pl a.a { cursor: pointer; display: block; width: 200px; overflow: hidden; } ..report td.pl div.a { width: 200px; } ..report td.pl a:hover { background-color: #ffc; } /* Header rows... */ ..report tr.rh { background-color: #acf; color: black; font-weight: bold; } /* Calendars... */ ..report .rc { background-color: #f0f0f0; } /* Even rows... */ ..report .re, .report .reu { background-color: #def; } ..report .reu td { border-bottom: 1px solid black; } /* Odd rows... */ ..report .ro, .report .rou { background-color: white; } ..report .rou td { border-bottom: 1px solid black; } ..report .rou table td, .report .reu table td { border-bottom: 0px solid black; } /* styles for footnote marker */ ..report .fn { white-space: nowrap; } /* styles for numeric types */ ..report .num, .report .nump { text-align: right; white-space: nowrap; } ..report .nump { padding-left: 2em; } ..report .nump { padding: 0px 0.4em 0px 2em; } /* styles for text types */ ..report .text { text-align: left; white-space: normal; } ..report .text .big { margin-bottom: 1em; width: 17em; } ..report .text .more { display: none; } ..report .text .note { font-style: italic; font-weight: bold; } ..report .text .small { width: 10em; } ..report sup { font-style: italic; } ..report .outerFootnotes { font-size: 1em; } XML 67 FilingSummary.xml IDEA: XBRL DOCUMENT 3.24.1.u1 html 175 284 1 false 62 0 false 10 false false R1.htm 00090 - Document - Document and Entity Information Sheet http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation Document and Entity Information Cover 1 false false R2.htm 00100 - Statement - CONSOLIDATED BALANCE SHEETS Sheet http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets CONSOLIDATED BALANCE SHEETS Statements 2 false false R3.htm 00105 - Statement - CONSOLIDATED BALANCE SHEETS (Parenthetical) Sheet http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheetsParenthetical CONSOLIDATED BALANCE SHEETS (Parenthetical) Statements 3 false false R4.htm 00200 - Statement - CONSOLIDATED STATEMENTS OF OPERATIONS Sheet http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations CONSOLIDATED STATEMENTS OF OPERATIONS Statements 4 false false R5.htm 00300 - Statement - CONSOLIDATED STATEMENTS OF STOCKHOLDERS' EQUITY Sheet http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquity CONSOLIDATED STATEMENTS OF STOCKHOLDERS' EQUITY Statements 5 false false R6.htm 00305 - Statement - CONSOLIDATED STATEMENTS OF STOCKHOLDERS' EQUITY (Parenthetical) Sheet http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquityParenthetical CONSOLIDATED STATEMENTS OF STOCKHOLDERS' EQUITY (Parenthetical) Statements 6 false false R7.htm 00400 - Statement - CONSOLIDATED STATEMENTS OF CASH FLOWS Sheet http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows CONSOLIDATED STATEMENTS OF CASH FLOWS Statements 7 false false R8.htm 10101 - Disclosure - Business and Organization Sheet http://www.comfortsystemsusa.com/role/DisclosureBusinessAndOrganization Business and Organization Notes 8 false false R9.htm 10201 - Disclosure - Summary of Significant Accounting Policies and Estimates Sheet http://www.comfortsystemsusa.com/role/DisclosureSummaryOfSignificantAccountingPoliciesAndEstimates Summary of Significant Accounting Policies and Estimates Notes 9 false false R10.htm 10301 - Disclosure - Revenue from Contracts with Customers Sheet http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomers Revenue from Contracts with Customers Notes 10 false false R11.htm 10401 - Disclosure - Fair Value Measurements Sheet http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurements Fair Value Measurements Notes 11 false false R12.htm 10501 - Disclosure - Acquisitions Sheet http://www.comfortsystemsusa.com/role/DisclosureAcquisitions Acquisitions Notes 12 false false R13.htm 10601 - Disclosure - Goodwill and Identifiable Intangible Assets, Net Sheet http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNet Goodwill and Identifiable Intangible Assets, Net Notes 13 false false R14.htm 10701 - Disclosure - Debt Obligations Sheet http://www.comfortsystemsusa.com/role/DisclosureDebtObligations Debt Obligations Notes 14 false false R15.htm 10801 - Disclosure - Leases Sheet http://www.comfortsystemsusa.com/role/DisclosureLeases Leases Notes 15 false false R16.htm 10901 - Disclosure - Commitments and Contingencies Sheet http://www.comfortsystemsusa.com/role/DisclosureCommitmentsAndContingencies Commitments and Contingencies Notes 16 false false R17.htm 11001 - Disclosure - Stockholders' Equity Sheet http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquity Stockholders' Equity Notes 17 false false R18.htm 11101 - Disclosure - Segment Information Sheet http://www.comfortsystemsusa.com/role/DisclosureSegmentInformation Segment Information Notes 18 false false R19.htm 20202 - Disclosure - Summary of Significant Accounting Policies and Estimates (Policies) Sheet http://www.comfortsystemsusa.com/role/DisclosureSummaryOfSignificantAccountingPoliciesAndEstimatesPolicies Summary of Significant Accounting Policies and Estimates (Policies) Policies http://www.comfortsystemsusa.com/role/DisclosureSummaryOfSignificantAccountingPoliciesAndEstimates 19 false false R20.htm 30303 - Disclosure - Revenue from Contracts with Customers (Tables) Sheet http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersTables Revenue from Contracts with Customers (Tables) Tables http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomers 20 false false R21.htm 30403 - Disclosure - Fair Value Measurements (Tables) Sheet http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsTables Fair Value Measurements (Tables) Tables http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurements 21 false false R22.htm 30503 - Disclosure - Acquisitions (Tables) Sheet http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsTables Acquisitions (Tables) Tables http://www.comfortsystemsusa.com/role/DisclosureAcquisitions 22 false false R23.htm 30603 - Disclosure - Goodwill and Identifiable Intangible Assets, Net (Tables) Sheet http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetTables Goodwill and Identifiable Intangible Assets, Net (Tables) Tables http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNet 23 false false R24.htm 30703 - Disclosure - Debt Obligations (Tables) Sheet http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsTables Debt Obligations (Tables) Tables http://www.comfortsystemsusa.com/role/DisclosureDebtObligations 24 false false R25.htm 30803 - Disclosure - Leases (Tables) Sheet http://www.comfortsystemsusa.com/role/DisclosureLeasesTables Leases (Tables) Tables http://www.comfortsystemsusa.com/role/DisclosureLeases 25 false false R26.htm 31003 - Disclosure - Stockholders' Equity (Tables) Sheet http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityTables Stockholders' Equity (Tables) Tables http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquity 26 false false R27.htm 31103 - Disclosure - Segment Information (Tables) Sheet http://www.comfortsystemsusa.com/role/DisclosureSegmentInformationTables Segment Information (Tables) Tables http://www.comfortsystemsusa.com/role/DisclosureSegmentInformation 27 false false R28.htm 40201 - Disclosure - Summary of Significant Accounting Policies and Estimates - Income Taxes (Details) Sheet http://www.comfortsystemsusa.com/role/DisclosureSummaryOfSignificantAccountingPoliciesAndEstimatesIncomeTaxesDetails Summary of Significant Accounting Policies and Estimates - Income Taxes (Details) Details 28 false false R29.htm 40202 - Disclosure - Summary of Significant Accounting Policies and Estimates - Investments (Details) Sheet http://www.comfortsystemsusa.com/role/DisclosureSummaryOfSignificantAccountingPoliciesAndEstimatesInvestmentsDetails Summary of Significant Accounting Policies and Estimates - Investments (Details) Details http://www.comfortsystemsusa.com/role/DisclosureSummaryOfSignificantAccountingPoliciesAndEstimatesPolicies 29 false false R30.htm 40301 - Disclosure - Revenue from Contracts with Customers - Narratives (Details) Sheet http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersNarrativesDetails Revenue from Contracts with Customers - Narratives (Details) Details 30 false false R31.htm 40302 - Disclosure - Revenue from Contracts with Customers - Disaggregation of Revenue (Details) Sheet http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersDisaggregationOfRevenueDetails Revenue from Contracts with Customers - Disaggregation of Revenue (Details) Details 31 false false R32.htm 40303 - Disclosure - Revenue from Contracts with Customers - Contract Assets and Liabilities (Details) Sheet http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersContractAssetsAndLiabilitiesDetails Revenue from Contracts with Customers - Contract Assets and Liabilities (Details) Details 32 false false R33.htm 40304 - Disclosure - Revenue from Contracts with Customers - Remaining Performance Obligations (Details) Sheet http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersRemainingPerformanceObligationsDetails Revenue from Contracts with Customers - Remaining Performance Obligations (Details) Details 33 false false R34.htm 40401 - Disclosure - Fair Value Measurements (Details) Sheet http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails Fair Value Measurements (Details) Details http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsTables 34 false false R35.htm 40501 - Disclosure - Acquisitions (Details) Sheet http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails Acquisitions (Details) Details http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsTables 35 false false R36.htm 40502 - Disclosure - Acquisitions - Acquired Intangible Assets (Details) Sheet http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails Acquisitions - Acquired Intangible Assets (Details) Details 36 false false R37.htm 40503 - Disclosure - Acquisitions - Other Acquisitions (Details) Sheet http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsOtherAcquisitionsDetails Acquisitions - Other Acquisitions (Details) Details 37 false false R38.htm 40601 - Disclosure - Goodwill and Identifiable Intangible Assets, Net - Changes in Carrying Amount of Goodwill (Details) Sheet http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetChangesInCarryingAmountOfGoodwillDetails Goodwill and Identifiable Intangible Assets, Net - Changes in Carrying Amount of Goodwill (Details) Details 38 false false R39.htm 40602 - Disclosure - Goodwill and Identifiable Intangible Assets, Net - Identifiable Intangible Assets, Net (Details) Sheet http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetIdentifiableIntangibleAssetsNetDetails Goodwill and Identifiable Intangible Assets, Net - Identifiable Intangible Assets, Net (Details) Details 39 false false R40.htm 40701 - Disclosure - Debt Obligations (Details) Sheet http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsDetails Debt Obligations (Details) Details http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsTables 40 false false R41.htm 40702 - Disclosure - Debt Obligations - Other (Details) Sheet http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails Debt Obligations - Other (Details) Details 41 false false R42.htm 40703 - Disclosure - Debt Obligations - Notes to Former Owners (Details) Notes http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsNotesToFormerOwnersDetails Debt Obligations - Notes to Former Owners (Details) Details 42 false false R43.htm 40801 - Disclosure - Leases (Details) Sheet http://www.comfortsystemsusa.com/role/DisclosureLeasesDetails Leases (Details) Details http://www.comfortsystemsusa.com/role/DisclosureLeasesTables 43 false false R44.htm 40802 - Disclosure - Leases - Summary of Operating Lease Assets and Liabilities (Details) Sheet http://www.comfortsystemsusa.com/role/DisclosureLeasesSummaryOfOperatingLeaseAssetsAndLiabilitiesDetails Leases - Summary of Operating Lease Assets and Liabilities (Details) Details 44 false false R45.htm 40803 - Disclosure - Leases - Maturities of Lease Liabilities (Details) Sheet http://www.comfortsystemsusa.com/role/DisclosureLeasesMaturitiesOfLeaseLiabilitiesDetails Leases - Maturities of Lease Liabilities (Details) Details 45 false false R46.htm 40901 - Disclosure - Commitments and Contingencies (Details) Sheet http://www.comfortsystemsusa.com/role/DisclosureCommitmentsAndContingenciesDetails Commitments and Contingencies (Details) Details http://www.comfortsystemsusa.com/role/DisclosureCommitmentsAndContingencies 46 false false R47.htm 41001 - Disclosure - Stockholders' Equity - Number of Shares (Details) Sheet http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityNumberOfSharesDetails Stockholders' Equity - Number of Shares (Details) Details 47 false false R48.htm 41002 - Disclosure - Stockholders' Equity - Incentive and Other (Details) Sheet http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityIncentiveAndOtherDetails Stockholders' Equity - Incentive and Other (Details) Details 48 false false R49.htm 41101 - Disclosure - Segment Information (Details) Sheet http://www.comfortsystemsusa.com/role/DisclosureSegmentInformationDetails Segment Information (Details) Details http://www.comfortsystemsusa.com/role/DisclosureSegmentInformationTables 49 false false R50.htm 995410 - Disclosure - Pay vs Performance Disclosure Sheet http://xbrl.sec.gov/ecd/role/PvpDisclosure Pay vs Performance Disclosure Uncategorized 50 false false R51.htm 995445 - Disclosure - Insider Trading Arrangements Sheet http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements Insider Trading Arrangements Cover 51 false false All Reports Book All Reports [ix-0514-Hidden-Fact-Eligible-For-Transform] WARN: 5 fact(s) appearing in ix:hidden were eligible for transformation: fix:BusinessCombinationTermOfEarningsMilestones, us-gaap:LesseeOperatingLeaseTermOfContract, us-gaap:PreferredStockSharesOutstanding - fix-20240331x10q.htm 9 [ix-0514-Hidden-Fact-Not-Referenced] WARN: 3 fact(s) appearing in ix:hidden were not referenced by any -sec-ix-hidden style property: us-gaap:CommitmentsAndContingencies, us-gaap:OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList - fix-20240331x10q.htm 9 [dq-0712-Presentation-Base-Set-Order] Role '41101 - Disclosure - Segment Information (Details)', a level 4, Detail role, appears before '995410 - Disclosure - Pay vs Performance Disclosure', a level 1, Note role. fix-20240331.xsd 279, https://xbrl.sec.gov/ecd/2023/ecd-2023.xsd 30 fix-20240331.xsd fix-20240331_cal.xml fix-20240331_def.xml fix-20240331_lab.xml fix-20240331_pre.xml fix-20240331x10q.htm http://fasb.org/us-gaap/2023 http://xbrl.sec.gov/dei/2023 http://xbrl.sec.gov/ecd/2023 true true JSON 70 MetaLinks.json IDEA: XBRL DOCUMENT { "version": "2.2", "instance": { "fix-20240331x10q.htm": { "nsprefix": "fix", "nsuri": "http://www.comfortsystemsusa.com/20240331", "dts": { "schema": { "local": [ "fix-20240331.xsd" ], "remote": [ "http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd", "http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd", "http://www.xbrl.org/2003/xl-2003-12-31.xsd", "http://www.xbrl.org/2003/xlink-2003-12-31.xsd", "http://www.xbrl.org/2005/xbrldt-2005.xsd", "http://www.xbrl.org/2006/ref-2006-02-27.xsd", "http://www.xbrl.org/lrr/arcrole/esma-arcrole-2018-11-21.xsd", "http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd", "http://www.xbrl.org/lrr/role/reference-2009-12-16.xsd", "https://www.xbrl.org/2020/extensible-enumerations-2.0.xsd", "https://www.xbrl.org/dtr/type/2020-01-21/types.xsd", "https://www.xbrl.org/dtr/type/2022-03-31/types.xsd", "https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd", "https://xbrl.fasb.org/srt/2023/elts/srt-roles-2023.xsd", "https://xbrl.fasb.org/srt/2023/elts/srt-types-2023.xsd", "https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd", "https://xbrl.fasb.org/us-gaap/2023/elts/us-roles-2023.xsd", "https://xbrl.fasb.org/us-gaap/2023/elts/us-types-2023.xsd", "https://xbrl.sec.gov/country/2023/country-2023.xsd", "https://xbrl.sec.gov/dei/2023/dei-2023.xsd", "https://xbrl.sec.gov/ecd/2023/ecd-2023.xsd", "https://xbrl.sec.gov/ecd/2023/ecd-sub-2023.xsd" ] }, "calculationLink": { "local": [ "fix-20240331_cal.xml" ] }, "definitionLink": { "local": [ "fix-20240331_def.xml" ] }, "labelLink": { "local": [ "fix-20240331_lab.xml" ] }, "presentationLink": { "local": [ "fix-20240331_pre.xml" ] }, "inline": { "local": [ "fix-20240331x10q.htm" ] } }, "keyStandard": 252, "keyCustom": 32, "axisStandard": 19, "axisCustom": 3, "memberStandard": 23, "memberCustom": 37, "hidden": { "total": 16, "http://fasb.org/us-gaap/2023": 9, "http://www.comfortsystemsusa.com/20240331": 2, "http://xbrl.sec.gov/dei/2023": 5 }, "contextCount": 175, "entityCount": 1, "segmentCount": 62, "elementCount": 550, "unitCount": 10, "baseTaxonomies": { "http://fasb.org/us-gaap/2023": 560, "http://xbrl.sec.gov/dei/2023": 30, "http://xbrl.sec.gov/ecd/2023": 4 }, "report": { "R1": { "role": "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation", "longName": "00090 - Document - Document and Entity Information", "shortName": "Document and Entity Information", "isDefault": "true", "groupType": "document", "subGroupType": "", "menuCat": "Cover", "order": "1", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "dei:DocumentType", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "p", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "dei:DocumentType", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "p", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R2": { "role": "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets", "longName": "00100 - Statement - CONSOLIDATED BALANCE SHEETS", "shortName": "CONSOLIDATED BALANCE SHEETS", "isDefault": "false", "groupType": "statement", "subGroupType": "", "menuCat": "Statements", "order": "2", "firstAnchor": { "contextRef": "As_Of_3_31_2024_Yae6FzRgw02ex68xsHZSaQ", "name": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "span", "p", "td", "tr", "table", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "As_Of_3_31_2024_Yae6FzRgw02ex68xsHZSaQ", "name": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "span", "p", "td", "tr", "table", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R3": { "role": "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheetsParenthetical", "longName": "00105 - Statement - CONSOLIDATED BALANCE SHEETS (Parenthetical)", "shortName": "CONSOLIDATED BALANCE SHEETS (Parenthetical)", "isDefault": "false", "groupType": "statement", "subGroupType": "parenthetical", "menuCat": "Statements", "order": "3", "firstAnchor": { "contextRef": "As_Of_3_31_2024_Yae6FzRgw02ex68xsHZSaQ", "name": "us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "span", "p", "td", "tr", "table", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "As_Of_3_31_2024_Yae6FzRgw02ex68xsHZSaQ", "name": "us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "span", "p", "td", "tr", "table", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R4": { "role": "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations", "longName": "00200 - Statement - CONSOLIDATED STATEMENTS OF OPERATIONS", "shortName": "CONSOLIDATED STATEMENTS OF OPERATIONS", "isDefault": "false", "groupType": "statement", "subGroupType": "", "menuCat": "Statements", "order": "4", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:Revenues", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "p", "td", "tr", "table", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:CostOfRevenue", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "p", "td", "tr", "table", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "unique": true } }, "R5": { "role": "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquity", "longName": "00300 - Statement - CONSOLIDATED STATEMENTS OF STOCKHOLDERS' EQUITY", "shortName": "CONSOLIDATED STATEMENTS OF STOCKHOLDERS' EQUITY", "isDefault": "false", "groupType": "statement", "subGroupType": "", "menuCat": "Statements", "order": "5", "firstAnchor": { "contextRef": "As_Of_12_31_2022_us-gaap_StatementEquityComponentsAxis_us-gaap_CommonStockMember_1ku_HoNK00CQ2iJPqGKvow", "name": "us-gaap:StockholdersEquity", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "p", "td", "tr", "table", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "As_Of_12_31_2022_us-gaap_StatementEquityComponentsAxis_us-gaap_CommonStockMember_1ku_HoNK00CQ2iJPqGKvow", "name": "us-gaap:StockholdersEquity", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "p", "td", "tr", "table", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R6": { "role": "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquityParenthetical", "longName": "00305 - Statement - CONSOLIDATED STATEMENTS OF STOCKHOLDERS' EQUITY (Parenthetical)", "shortName": "CONSOLIDATED STATEMENTS OF STOCKHOLDERS' EQUITY (Parenthetical)", "isDefault": "false", "groupType": "statement", "subGroupType": "parenthetical", "menuCat": "Statements", "order": "6", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:CommonStockDividendsPerShareDeclared", "unitRef": "Unit_Divide_USD_shares_tON83XbEJEqEHQ6EkUfnJw", "xsiNil": "false", "lang": null, "decimals": "2", "ancestors": [ "p", "td", "tr", "table", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:CommonStockDividendsPerShareDeclared", "unitRef": "Unit_Divide_USD_shares_tON83XbEJEqEHQ6EkUfnJw", "xsiNil": "false", "lang": null, "decimals": "2", "ancestors": [ "p", "td", "tr", "table", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R7": { "role": "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows", "longName": "00400 - Statement - CONSOLIDATED STATEMENTS OF CASH FLOWS", "shortName": "CONSOLIDATED STATEMENTS OF CASH FLOWS", "isDefault": "false", "groupType": "statement", "subGroupType": "", "menuCat": "Statements", "order": "7", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:ProfitLoss", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "p", "td", "tr", "table", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:AmortizationOfIntangibleAssets", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "p", "td", "tr", "table", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "unique": true } }, "R8": { "role": "http://www.comfortsystemsusa.com/role/DisclosureBusinessAndOrganization", "longName": "10101 - Disclosure - Business and Organization", "shortName": "Business and Organization", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "8", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:NatureOfOperations", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:NatureOfOperations", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R9": { "role": "http://www.comfortsystemsusa.com/role/DisclosureSummaryOfSignificantAccountingPoliciesAndEstimates", "longName": "10201 - Disclosure - Summary of Significant Accounting Policies and Estimates", "shortName": "Summary of Significant Accounting Policies and Estimates", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "9", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:BasisOfPresentationAndSignificantAccountingPoliciesTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:BasisOfPresentationAndSignificantAccountingPoliciesTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R10": { "role": "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomers", "longName": "10301 - Disclosure - Revenue from Contracts with Customers", "shortName": "Revenue from Contracts with Customers", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "10", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:RevenueFromContractWithCustomerTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:RevenueFromContractWithCustomerTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R11": { "role": "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurements", "longName": "10401 - Disclosure - Fair Value Measurements", "shortName": "Fair Value Measurements", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "11", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:FairValueDisclosuresTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:FairValueDisclosuresTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R12": { "role": "http://www.comfortsystemsusa.com/role/DisclosureAcquisitions", "longName": "10501 - Disclosure - Acquisitions", "shortName": "Acquisitions", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "12", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:BusinessCombinationDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:BusinessCombinationDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R13": { "role": "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNet", "longName": "10601 - Disclosure - Goodwill and Identifiable Intangible Assets, Net", "shortName": "Goodwill and Identifiable Intangible Assets, Net", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "13", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R14": { "role": "http://www.comfortsystemsusa.com/role/DisclosureDebtObligations", "longName": "10701 - Disclosure - Debt Obligations", "shortName": "Debt Obligations", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "14", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:DebtDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:DebtDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R15": { "role": "http://www.comfortsystemsusa.com/role/DisclosureLeases", "longName": "10801 - Disclosure - Leases", "shortName": "Leases", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "15", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:LesseeOperatingLeasesTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:LesseeOperatingLeasesTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R16": { "role": "http://www.comfortsystemsusa.com/role/DisclosureCommitmentsAndContingencies", "longName": "10901 - Disclosure - Commitments and Contingencies", "shortName": "Commitments and Contingencies", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "16", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:CommitmentsAndContingenciesDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:CommitmentsAndContingenciesDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R17": { "role": "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquity", "longName": "11001 - Disclosure - Stockholders' Equity", "shortName": "Stockholders' Equity", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "17", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:StockholdersEquityNoteDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:StockholdersEquityNoteDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R18": { "role": "http://www.comfortsystemsusa.com/role/DisclosureSegmentInformation", "longName": "11101 - Disclosure - Segment Information", "shortName": "Segment Information", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "18", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:SegmentReportingDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:SegmentReportingDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R19": { "role": "http://www.comfortsystemsusa.com/role/DisclosureSummaryOfSignificantAccountingPoliciesAndEstimatesPolicies", "longName": "20202 - Disclosure - Summary of Significant Accounting Policies and Estimates (Policies)", "shortName": "Summary of Significant Accounting Policies and Estimates (Policies)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "policies", "menuCat": "Policies", "order": "19", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:BasisOfAccountingPolicyPolicyTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "us-gaap:BasisOfPresentationAndSignificantAccountingPoliciesTextBlock", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:BasisOfAccountingPolicyPolicyTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "us-gaap:BasisOfPresentationAndSignificantAccountingPoliciesTextBlock", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R20": { "role": "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersTables", "longName": "30303 - Disclosure - Revenue from Contracts with Customers (Tables)", "shortName": "Revenue from Contracts with Customers (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "20", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:DisaggregationOfRevenueTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "p", "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:DisaggregationOfRevenueTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "p", "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R21": { "role": "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsTables", "longName": "30403 - Disclosure - Fair Value Measurements (Tables)", "shortName": "Fair Value Measurements (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "21", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R22": { "role": "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsTables", "longName": "30503 - Disclosure - Acquisitions (Tables)", "shortName": "Acquisitions (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "22", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_us-gaap_BusinessAcquisitionAxis_fix_SummitIndustrialConstructionLlcMember_xJw_e9Mrvk2zLxy6UnMbQw", "name": "us-gaap:ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_us-gaap_BusinessAcquisitionAxis_fix_SummitIndustrialConstructionLlcMember_xJw_e9Mrvk2zLxy6UnMbQw", "name": "us-gaap:ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R23": { "role": "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetTables", "longName": "30603 - Disclosure - Goodwill and Identifiable Intangible Assets, Net (Tables)", "shortName": "Goodwill and Identifiable Intangible Assets, Net (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "23", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:ScheduleOfGoodwillTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:ScheduleOfGoodwillTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R24": { "role": "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsTables", "longName": "30703 - Disclosure - Debt Obligations (Tables)", "shortName": "Debt Obligations (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "24", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:ScheduleOfDebtTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "us-gaap:DebtDisclosureTextBlock", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:ScheduleOfDebtTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "us-gaap:DebtDisclosureTextBlock", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R25": { "role": "http://www.comfortsystemsusa.com/role/DisclosureLeasesTables", "longName": "30803 - Disclosure - Leases (Tables)", "shortName": "Leases (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "25", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "fix:ScheduleOfLeaseAssetsAndLiabilitiesTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "fix:ScheduleOfLeaseAssetsAndLiabilitiesTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R26": { "role": "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityTables", "longName": "31003 - Disclosure - Stockholders' Equity (Tables)", "shortName": "Stockholders' Equity (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "26", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:ScheduleOfWeightedAverageNumberOfSharesTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "us-gaap:StockholdersEquityNoteDisclosureTextBlock", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:ScheduleOfWeightedAverageNumberOfSharesTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "us-gaap:StockholdersEquityNoteDisclosureTextBlock", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R27": { "role": "http://www.comfortsystemsusa.com/role/DisclosureSegmentInformationTables", "longName": "31103 - Disclosure - Segment Information (Tables)", "shortName": "Segment Information (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "27", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:ScheduleOfSegmentReportingInformationBySegmentTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "p", "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:ScheduleOfSegmentReportingInformationBySegmentTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "p", "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R28": { "role": "http://www.comfortsystemsusa.com/role/DisclosureSummaryOfSignificantAccountingPoliciesAndEstimatesIncomeTaxesDetails", "longName": "40201 - Disclosure - Summary of Significant Accounting Policies and Estimates - Income Taxes (Details)", "shortName": "Summary of Significant Accounting Policies and Estimates - Income Taxes (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "28", "firstAnchor": { "contextRef": "Duration_9_1_2023_To_9_30_2023_EK9durwl2EivaAnDF69IKw", "name": "us-gaap:IncreaseDecreaseInIncomeTaxesReceivable", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-5", "ancestors": [ "p", "us-gaap:IncomeTaxPolicyTextBlock", "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_9_1_2023_To_9_30_2023_EK9durwl2EivaAnDF69IKw", "name": "us-gaap:IncreaseDecreaseInIncomeTaxesReceivable", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-5", "ancestors": [ "p", "us-gaap:IncomeTaxPolicyTextBlock", "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R29": { "role": "http://www.comfortsystemsusa.com/role/DisclosureSummaryOfSignificantAccountingPoliciesAndEstimatesInvestmentsDetails", "longName": "40202 - Disclosure - Summary of Significant Accounting Policies and Estimates - Investments (Details)", "shortName": "Summary of Significant Accounting Policies and Estimates - Investments (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "29", "firstAnchor": { "contextRef": "As_Of_3_31_2024_Yae6FzRgw02ex68xsHZSaQ", "name": "us-gaap:EquitySecuritiesWithoutReadilyDeterminableFairValueAmount", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-5", "ancestors": [ "p", "us-gaap:EquitySecuritiesWithoutReadilyDeterminableFairValuePolicyTextBlock", "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "As_Of_3_31_2024_Yae6FzRgw02ex68xsHZSaQ", "name": "us-gaap:EquitySecuritiesWithoutReadilyDeterminableFairValueAmount", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-5", "ancestors": [ "p", "us-gaap:EquitySecuritiesWithoutReadilyDeterminableFairValuePolicyTextBlock", "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R30": { "role": "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersNarrativesDetails", "longName": "40301 - Disclosure - Revenue from Contracts with Customers - Narratives (Details)", "shortName": "Revenue from Contracts with Customers - Narratives (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "30", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "fix:ContractWithCustomerPerformanceObligationSatisfiedInPreviousPeriodPercentage", "unitRef": "Unit_Standard_pure_859jGBUYu0aL7idM5N2a0w", "xsiNil": "false", "lang": null, "decimals": "3", "ancestors": [ "p", "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "fix:ContractWithCustomerPerformanceObligationSatisfiedInPreviousPeriodPercentage", "unitRef": "Unit_Standard_pure_859jGBUYu0aL7idM5N2a0w", "xsiNil": "false", "lang": null, "decimals": "3", "ancestors": [ "p", "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R31": { "role": "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersDisaggregationOfRevenueDetails", "longName": "40302 - Disclosure - Revenue from Contracts with Customers - Disaggregation of Revenue (Details)", "shortName": "Revenue from Contracts with Customers - Disaggregation of Revenue (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "31", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:Revenues", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "p", "td", "tr", "table", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "fix:PercentageOfRevenueFromContractWithCustomer", "unitRef": "Unit_Standard_pure_859jGBUYu0aL7idM5N2a0w", "xsiNil": "false", "lang": null, "decimals": "3", "ancestors": [ "p", "td", "tr", "table", "ix:continuation", "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "unique": true } }, "R32": { "role": "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersContractAssetsAndLiabilitiesDetails", "longName": "40303 - Disclosure - Revenue from Contracts with Customers - Contract Assets and Liabilities (Details)", "shortName": "Revenue from Contracts with Customers - Contract Assets and Liabilities (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "32", "firstAnchor": { "contextRef": "As_Of_3_31_2024_Yae6FzRgw02ex68xsHZSaQ", "name": "us-gaap:ContractWithCustomerAssetNet", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "p", "td", "tr", "table", "us-gaap:ContractWithCustomerAssetAndLiabilityTableTextBlock", "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "As_Of_3_31_2024_Yae6FzRgw02ex68xsHZSaQ", "name": "us-gaap:ContractWithCustomerAssetNet", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "p", "td", "tr", "table", "us-gaap:ContractWithCustomerAssetAndLiabilityTableTextBlock", "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R33": { "role": "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersRemainingPerformanceObligationsDetails", "longName": "40304 - Disclosure - Revenue from Contracts with Customers - Remaining Performance Obligations (Details)", "shortName": "Revenue from Contracts with Customers - Remaining Performance Obligations (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "33", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "fix:RenewableServiceMaintenanceAgreementsTerm", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "p", "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "fix:RenewableServiceMaintenanceAgreementsTerm", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "p", "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R34": { "role": "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails", "longName": "40401 - Disclosure - Fair Value Measurements (Details)", "shortName": "Fair Value Measurements (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "34", "firstAnchor": { "contextRef": "As_Of_3_31_2024_Yae6FzRgw02ex68xsHZSaQ", "name": "fix:LifeInsuranceContractsNumberOfEmployeesCovered", "unitRef": "Unit_Standard_employee_wTQ5MG8Pz0q8vTKYn8UhLg", "xsiNil": "false", "lang": null, "decimals": "INF", "ancestors": [ "p", "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "As_Of_3_31_2024_Yae6FzRgw02ex68xsHZSaQ", "name": "fix:LifeInsuranceContractsNumberOfEmployeesCovered", "unitRef": "Unit_Standard_employee_wTQ5MG8Pz0q8vTKYn8UhLg", "xsiNil": "false", "lang": null, "decimals": "INF", "ancestors": [ "p", "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R35": { "role": "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails", "longName": "40501 - Disclosure - Acquisitions (Details)", "shortName": "Acquisitions (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "35", "firstAnchor": { "contextRef": "As_Of_3_31_2024_Yae6FzRgw02ex68xsHZSaQ", "name": "us-gaap:Goodwill", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "span", "p", "td", "tr", "table", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true }, "uniqueAnchor": { "contextRef": "Duration_2_1_2024_To_2_1_2024_us-gaap_BusinessAcquisitionAxis_fix_SummitIndustrialConstructionLlcMember_ZNo6UiY1AEiPvL0-wIKFjA", "name": "us-gaap:PaymentsToAcquireBusinessesGross", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "p", "td", "tr", "table", "div", "us-gaap:ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock", "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "unique": true } }, "R36": { "role": "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails", "longName": "40502 - Disclosure - Acquisitions - Acquired Intangible Assets (Details)", "shortName": "Acquisitions - Acquired Intangible Assets (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "36", "firstAnchor": { "contextRef": "As_Of_2_1_2024_us-gaap_BusinessAcquisitionAxis_fix_SummitIndustrialConstructionLlcMember_3F3BqQl5VUm-71Zh9d7v1g", "name": "us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "p", "td", "tr", "table", "div", "us-gaap:ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock", "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true }, "uniqueAnchor": { "contextRef": "Duration_2_1_2024_To_2_1_2024_srt_RangeAxis_srt_MinimumMember_us-gaap_BusinessAcquisitionAxis_fix_SummitIndustrialConstructionLlcMember_us-gaap_MeasurementInputTypeAxis_us-gaap_MeasurementInputInceptionDiscountRateMember_eEoxY8awW0OA4VkcBRE8TQ", "name": "fix:CashFlowDiscountRate", "unitRef": "Unit_Standard_pure_859jGBUYu0aL7idM5N2a0w", "xsiNil": "false", "lang": null, "decimals": "3", "ancestors": [ "p", "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "unique": true } }, "R37": { "role": "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsOtherAcquisitionsDetails", "longName": "40503 - Disclosure - Acquisitions - Other Acquisitions (Details)", "shortName": "Acquisitions - Other Acquisitions (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "37", "firstAnchor": { "contextRef": "Duration_10_2_2023_To_10_2_2023_us-gaap_BusinessAcquisitionAxis_fix_DeccoIncMember_1a0rmC51CkCxGB_41xIgnA", "name": "us-gaap:BusinessCombinationConsiderationTransferred1", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-5", "ancestors": [ "p", "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_10_2_2023_To_10_2_2023_us-gaap_BusinessAcquisitionAxis_fix_DeccoIncMember_1a0rmC51CkCxGB_41xIgnA", "name": "us-gaap:BusinessCombinationConsiderationTransferred1", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-5", "ancestors": [ "p", "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R38": { "role": "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetChangesInCarryingAmountOfGoodwillDetails", "longName": "40601 - Disclosure - Goodwill and Identifiable Intangible Assets, Net - Changes in Carrying Amount of Goodwill (Details)", "shortName": "Goodwill and Identifiable Intangible Assets, Net - Changes in Carrying Amount of Goodwill (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "38", "firstAnchor": { "contextRef": "As_Of_12_31_2023_pRz9LXcXIEurYGMw7vbnTw", "name": "us-gaap:Goodwill", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "span", "p", "td", "tr", "table", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:GoodwillAcquiredDuringPeriod", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "p", "td", "tr", "table", "us-gaap:ScheduleOfGoodwillTextBlock", "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "unique": true } }, "R39": { "role": "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetIdentifiableIntangibleAssetsNetDetails", "longName": "40602 - Disclosure - Goodwill and Identifiable Intangible Assets, Net - Identifiable Intangible Assets, Net (Details)", "shortName": "Goodwill and Identifiable Intangible Assets, Net - Identifiable Intangible Assets, Net (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "39", "firstAnchor": { "contextRef": "As_Of_3_31_2024_Yae6FzRgw02ex68xsHZSaQ", "name": "us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "p", "td", "tr", "table", "us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock", "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "As_Of_3_31_2024_Yae6FzRgw02ex68xsHZSaQ", "name": "us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "p", "td", "tr", "table", "us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock", "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R40": { "role": "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsDetails", "longName": "40701 - Disclosure - Debt Obligations (Details)", "shortName": "Debt Obligations (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "40", "firstAnchor": { "contextRef": "As_Of_3_31_2024_Yae6FzRgw02ex68xsHZSaQ", "name": "fix:OtherDebtLongTermAndShortTermCombinedAmount", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "p", "td", "tr", "table", "us-gaap:ScheduleOfDebtTableTextBlock", "us-gaap:DebtDisclosureTextBlock", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "As_Of_3_31_2024_Yae6FzRgw02ex68xsHZSaQ", "name": "fix:OtherDebtLongTermAndShortTermCombinedAmount", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "p", "td", "tr", "table", "us-gaap:ScheduleOfDebtTableTextBlock", "us-gaap:DebtDisclosureTextBlock", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R41": { "role": "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails", "longName": "40702 - Disclosure - Debt Obligations - Other (Details)", "shortName": "Debt Obligations - Other (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "41", "firstAnchor": { "contextRef": "As_Of_3_31_2024_us-gaap_DebtInstrumentAxis_us-gaap_RevolvingCreditFacilityMember_asU9Ci-4AkS6efiSbC5n7A", "name": "us-gaap:LineOfCredit", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-5", "ancestors": [ "p", "us-gaap:DebtDisclosureTextBlock", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "As_Of_3_31_2024_us-gaap_DebtInstrumentAxis_us-gaap_RevolvingCreditFacilityMember_asU9Ci-4AkS6efiSbC5n7A", "name": "us-gaap:LineOfCredit", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-5", "ancestors": [ "p", "us-gaap:DebtDisclosureTextBlock", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R42": { "role": "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsNotesToFormerOwnersDetails", "longName": "40703 - Disclosure - Debt Obligations - Notes to Former Owners (Details)", "shortName": "Debt Obligations - Notes to Former Owners (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "42", "firstAnchor": { "contextRef": "As_Of_3_31_2024_us-gaap_DebtInstrumentAxis_fix_SubordinateDebtAndPromissoryNoteMember_3jM-gcxrhkql-FkHypBWWA", "name": "us-gaap:NotesAndLoansPayable", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "p", "td", "tr", "table", "us-gaap:ScheduleOfDebtTableTextBlock", "us-gaap:DebtDisclosureTextBlock", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true }, "uniqueAnchor": { "contextRef": "As_Of_3_31_2024_fix_DebtMaturityDateAxis_fix_MaturityYearOneMember_us-gaap_DebtInstrumentAxis_fix_SubordinateDebtAndPromissoryNoteMember_ZsAl0qsbOkufvARnLtBoLg", "name": "us-gaap:NotesAndLoansPayable", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "p", "td", "tr", "table", "ix:continuation", "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "unique": true } }, "R43": { "role": "http://www.comfortsystemsusa.com/role/DisclosureLeasesDetails", "longName": "40801 - Disclosure - Leases (Details)", "shortName": "Leases (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "43", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "fix:VariableLeaseAndShortTermLeaseCost", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-5", "ancestors": [ "p", "us-gaap:LesseeLeasesPolicyTextBlock", "us-gaap:LesseeOperatingLeasesTextBlock", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "fix:VariableLeaseAndShortTermLeaseCost", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-5", "ancestors": [ "p", "us-gaap:LesseeLeasesPolicyTextBlock", "us-gaap:LesseeOperatingLeasesTextBlock", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R44": { "role": "http://www.comfortsystemsusa.com/role/DisclosureLeasesSummaryOfOperatingLeaseAssetsAndLiabilitiesDetails", "longName": "40802 - Disclosure - Leases - Summary of Operating Lease Assets and Liabilities (Details)", "shortName": "Leases - Summary of Operating Lease Assets and Liabilities (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "44", "firstAnchor": { "contextRef": "As_Of_3_31_2024_Yae6FzRgw02ex68xsHZSaQ", "name": "us-gaap:OperatingLeaseRightOfUseAsset", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "span", "p", "td", "tr", "table", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true }, "uniqueAnchor": { "contextRef": "As_Of_3_31_2024_Yae6FzRgw02ex68xsHZSaQ", "name": "us-gaap:OperatingLeaseLiabilityCurrent", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "p", "td", "tr", "table", "fix:ScheduleOfLeaseAssetsAndLiabilitiesTableTextBlock", "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "unique": true } }, "R45": { "role": "http://www.comfortsystemsusa.com/role/DisclosureLeasesMaturitiesOfLeaseLiabilitiesDetails", "longName": "40803 - Disclosure - Leases - Maturities of Lease Liabilities (Details)", "shortName": "Leases - Maturities of Lease Liabilities (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "45", "firstAnchor": { "contextRef": "As_Of_3_31_2024_Yae6FzRgw02ex68xsHZSaQ", "name": "us-gaap:LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "p", "td", "tr", "table", "us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock", "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "As_Of_3_31_2024_Yae6FzRgw02ex68xsHZSaQ", "name": "us-gaap:LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "p", "td", "tr", "table", "us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock", "ix:continuation", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R46": { "role": "http://www.comfortsystemsusa.com/role/DisclosureCommitmentsAndContingenciesDetails", "longName": "40901 - Disclosure - Commitments and Contingencies (Details)", "shortName": "Commitments and Contingencies (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "46", "firstAnchor": { "contextRef": "Duration_1_1_2023_To_3_31_2023_us-gaap_LossContingenciesByNatureOfContingencyAxis_fix_DisputeWithCustomerMember_HgAGXFHAFEqmwwRs05e1Dw", "name": "us-gaap:GainLossRelatedToLitigationSettlement", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-5", "ancestors": [ "p", "us-gaap:CommitmentsAndContingenciesDisclosureTextBlock", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2023_To_3_31_2023_us-gaap_LossContingenciesByNatureOfContingencyAxis_fix_DisputeWithCustomerMember_HgAGXFHAFEqmwwRs05e1Dw", "name": "us-gaap:GainLossRelatedToLitigationSettlement", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-5", "ancestors": [ "p", "us-gaap:CommitmentsAndContingenciesDisclosureTextBlock", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R47": { "role": "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityNumberOfSharesDetails", "longName": "41001 - Disclosure - Stockholders' Equity - Number of Shares (Details)", "shortName": "Stockholders' Equity - Number of Shares (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "47", "firstAnchor": { "contextRef": "As_Of_3_31_2024_Yae6FzRgw02ex68xsHZSaQ", "name": "us-gaap:CommonStockSharesOutstanding", "unitRef": "Unit_Standard_shares_sJR3tF2gskCYOtlIlZ3Ymg", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "p", "td", "tr", "table", "us-gaap:ScheduleOfWeightedAverageNumberOfSharesTableTextBlock", "us-gaap:StockholdersEquityNoteDisclosureTextBlock", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "As_Of_3_31_2024_Yae6FzRgw02ex68xsHZSaQ", "name": "us-gaap:CommonStockSharesOutstanding", "unitRef": "Unit_Standard_shares_sJR3tF2gskCYOtlIlZ3Ymg", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "p", "td", "tr", "table", "us-gaap:ScheduleOfWeightedAverageNumberOfSharesTableTextBlock", "us-gaap:StockholdersEquityNoteDisclosureTextBlock", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R48": { "role": "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityIncentiveAndOtherDetails", "longName": "41002 - Disclosure - Stockholders' Equity - Incentive and Other (Details)", "shortName": "Stockholders' Equity - Incentive and Other (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "48", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:PaymentsForRepurchaseOfCommonStock", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "p", "td", "tr", "table", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount", "unitRef": "Unit_Standard_shares_sJR3tF2gskCYOtlIlZ3Ymg", "xsiNil": "false", "lang": null, "decimals": "-5", "ancestors": [ "us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount", "p", "us-gaap:StockholdersEquityNoteDisclosureTextBlock", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "unique": true } }, "R49": { "role": "http://www.comfortsystemsusa.com/role/DisclosureSegmentInformationDetails", "longName": "41101 - Disclosure - Segment Information (Details)", "shortName": "Segment Information (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "49", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:NumberOfReportableSegments", "unitRef": "Unit_Standard_segment_MA5LSXd9KUqW7AkH_6Q6ng", "xsiNil": "false", "lang": null, "decimals": "INF", "ancestors": [ "p", "us-gaap:SegmentReportingDisclosureTextBlock", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:NumberOfReportableSegments", "unitRef": "Unit_Standard_segment_MA5LSXd9KUqW7AkH_6Q6ng", "xsiNil": "false", "lang": null, "decimals": "INF", "ancestors": [ "p", "us-gaap:SegmentReportingDisclosureTextBlock", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } }, "R50": { "role": "http://xbrl.sec.gov/ecd/role/PvpDisclosure", "longName": "995410 - Disclosure - Pay vs Performance Disclosure", "shortName": "Pay vs Performance Disclosure", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Uncategorized", "order": "50", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "us-gaap:NetIncomeLoss", "unitRef": "Unit_Standard_USD_J_IyHLrmS0C7s_eOa0oXpw", "xsiNil": "false", "lang": null, "decimals": "-3", "ancestors": [ "p", "td", "tr", "table", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true }, "uniqueAnchor": null }, "R51": { "role": "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements", "longName": "995445 - Disclosure - Insider Trading Arrangements", "shortName": "Insider Trading Arrangements", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Cover", "order": "51", "firstAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "ecd:Rule10b51ArrAdoptedFlag", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ecd:NonRule10b51ArrAdoptedFlag", "p", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "Duration_1_1_2024_To_3_31_2024_VMVJdGJOQk-iLdsewrv-JQ", "name": "ecd:Rule10b51ArrAdoptedFlag", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ecd:NonRule10b51ArrAdoptedFlag", "p", "div", "div", "body", "html" ], "reportCount": 1, "baseRef": "fix-20240331x10q.htm", "first": true, "unique": true } } }, "tag": { "us-gaap_AccountingPoliciesAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AccountingPoliciesAbstract", "lang": { "en-us": { "role": { "label": "Summary of Significant Accounting Policies and Estimates" } } }, "auth_ref": [] }, "us-gaap_AccountsPayableCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AccountsPayableCurrent", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_LiabilitiesCurrent", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Accounts Payable, Current", "terseLabel": "Accounts payable", "documentation": "Carrying value as of the balance sheet date of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer)." } } }, "auth_ref": [ "r20", "r633" ] }, "us-gaap_AcquiredFiniteLivedIntangibleAssetsLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AcquiredFiniteLivedIntangibleAssetsLineItems", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails" ], "lang": { "en-us": { "role": { "label": "Acquired Finite-Lived Intangible Assets [Line Items]", "terseLabel": "Acquisitions", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [] }, "us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife": { "xbrltype": "durationItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails", "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetIdentifiableIntangibleAssetsNetDetails" ], "lang": { "en-us": { "role": { "label": "Acquired Finite-lived Intangible Assets, Weighted Average Useful Life", "terseLabel": "Estimated Useful Life", "documentation": "Weighted average amortization period of finite-lived intangible assets acquired either individually or as part of a group of assets, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days." } } }, "auth_ref": [ "r103" ] }, "ecd_Additional402vDisclosureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "Additional402vDisclosureTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Additional 402(v) Disclosure [Text Block]", "terseLabel": "Additional 402(v) Disclosure" } } }, "auth_ref": [ "r684" ] }, "us-gaap_AdditionalPaidInCapitalCommonStock": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AdditionalPaidInCapitalCommonStock", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_StockholdersEquity", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Additional Paid in Capital, Common Stock", "terseLabel": "Additional paid-in capital", "documentation": "Value received from shareholders in common stock-related transactions that are in excess of par value or stated value and amounts received from other stock-related transactions. Includes only common stock transactions (excludes preferred stock transactions). May be called contributed capital, capital in excess of par, capital surplus, or paid-in capital." } } }, "auth_ref": [ "r80" ] }, "us-gaap_AdditionalPaidInCapitalMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AdditionalPaidInCapitalMember", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquity" ], "lang": { "en-us": { "role": { "label": "Additional Paid-In Capital", "documentation": "Excess of issue price over par or stated value of the entity's capital stock and amounts received from other transactions involving the entity's stock or stockholders." } } }, "auth_ref": [ "r406", "r407", "r408", "r536", "r734", "r735", "r736", "r790", "r813" ] }, "ecd_AdjToCompAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AdjToCompAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Adjustment to Compensation Amount", "terseLabel": "Adjustment to Compensation, Amount" } } }, "auth_ref": [ "r690" ] }, "ecd_AdjToCompAxis": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AdjToCompAxis", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Adjustment to Compensation [Axis]", "terseLabel": "Adjustment to Compensation:" } } }, "auth_ref": [ "r690" ] }, "ecd_AdjToNonPeoNeoCompFnTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AdjToNonPeoNeoCompFnTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Adjustment to Non-PEO NEO Compensation Footnote [Text Block]", "terseLabel": "Adjustment to Non-PEO NEO Compensation Footnote" } } }, "auth_ref": [ "r690" ] }, "ecd_AdjToPeoCompFnTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AdjToPeoCompFnTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Adjustment To PEO Compensation, Footnote [Text Block]", "terseLabel": "Adjustment To PEO Compensation, Footnote" } } }, "auth_ref": [ "r690" ] }, "us-gaap_AdjustmentsRelatedToTaxWithholdingForShareBasedCompensation": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AdjustmentsRelatedToTaxWithholdingForShareBasedCompensation", "crdr": "debit", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquity" ], "lang": { "en-us": { "role": { "label": "Adjustments Related to Tax Withholding for Share-based Compensation", "negatedLabel": "Shares received in lieu of tax withholding on vested stock", "documentation": "Amount of decrease to equity for grantee's tax withholding obligation for award under share-based payment arrangement." } } }, "auth_ref": [] }, "us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquity" ], "lang": { "en-us": { "role": { "label": "Adjustments to Additional Paid in Capital, Share-based Compensation, Requisite Service Period Recognition", "terseLabel": "Stock-based compensation", "documentation": "Amount of increase to additional paid-in capital (APIC) for recognition of cost for award under share-based payment arrangement." } } }, "auth_ref": [ "r56", "r57", "r377" ] }, "us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Adjustments to Reconcile Net Income (Loss) to Cash Provided by (Used in) Operating Activities [Abstract]", "terseLabel": "Adjustments to reconcile net income to net cash provided by operating activities-" } } }, "auth_ref": [] }, "ecd_AggtErrCompAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AggtErrCompAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "label": "Aggregate Erroneous Compensation Amount", "terseLabel": "Aggregate Erroneous Compensation Amount" } } }, "auth_ref": [ "r655", "r666", "r676", "r701" ] }, "ecd_AggtErrCompNotYetDeterminedTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AggtErrCompNotYetDeterminedTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "label": "Aggregate Erroneous Compensation Not Yet Determined [Text Block]", "terseLabel": "Aggregate Erroneous Compensation Not Yet Determined" } } }, "auth_ref": [ "r658", "r669", "r679", "r704" ] }, "ecd_AllAdjToCompMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AllAdjToCompMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "All Adjustments to Compensation [Member]", "terseLabel": "All Adjustments to Compensation" } } }, "auth_ref": [ "r690" ] }, "ecd_AllExecutiveCategoriesMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AllExecutiveCategoriesMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "All Executive Categories [Member]", "terseLabel": "All Executive Categories" } } }, "auth_ref": [ "r697" ] }, "ecd_AllIndividualsMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AllIndividualsMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure", "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure", "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements", "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "All Individuals [Member]", "terseLabel": "All Individuals" } } }, "auth_ref": [ "r662", "r670", "r680", "r697", "r705", "r709", "r717" ] }, "ecd_AllTradingArrangementsMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AllTradingArrangementsMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "label": "All Trading Arrangements [Member]", "terseLabel": "All Trading Arrangements" } } }, "auth_ref": [ "r715" ] }, "us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AllowanceForDoubtfulAccountsReceivableCurrent", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheetsParenthetical" ], "lang": { "en-us": { "role": { "label": "Accounts Receivable, Allowance for Credit Loss, Current", "verboseLabel": "Billed accounts receivable, allowance for credit losses (in dollars)", "documentation": "Amount of allowance for credit loss on accounts receivable, classified as current." } } }, "auth_ref": [ "r147", "r236", "r245" ] }, "us-gaap_AllowanceForDoubtfulOtherReceivablesCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AllowanceForDoubtfulOtherReceivablesCurrent", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheetsParenthetical" ], "lang": { "en-us": { "role": { "label": "Allowance for Credit Loss, Receivable, Other, Current", "terseLabel": "Other receivables, allowance for credit losses (in dollars)", "documentation": "Amount of allowance for credit loss on receivable, classified as other and current." } } }, "auth_ref": [ "r146" ] }, "dei_AmendmentFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "AmendmentFlag", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Amendment Flag", "documentation": "Boolean flag that is true when the XBRL content amends previously-filed or accepted submission." } } }, "auth_ref": [] }, "us-gaap_AmortizationOfFinancingCosts": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AmortizationOfFinancingCosts", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 12.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Amortization of Financing Costs", "terseLabel": "Amortization of debt financing costs", "documentation": "Amount of amortization expense attributable to debt issuance costs." } } }, "auth_ref": [ "r87", "r325", "r465", "r730" ] }, "us-gaap_AmortizationOfIntangibleAssets": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AmortizationOfIntangibleAssets", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 17.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Amortization of Intangible Assets", "terseLabel": "Amortization of identifiable intangible assets", "documentation": "The aggregate expense charged against earnings to allocate the cost of intangible assets (nonphysical assets not used in production) in a systematic and rational manner to the periods expected to benefit from such assets. As a noncash expense, this element is added back to net income when calculating cash provided by or used in operations using the indirect method." } } }, "auth_ref": [ "r9", "r45", "r49" ] }, "us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityIncentiveAndOtherDetails" ], "lang": { "en-us": { "role": { "label": "Antidilutive Securities Excluded from Computation of Earnings Per Share, Amount", "terseLabel": "Anti-dilutive securities excluded from computation of earnings per share amount (in shares)", "documentation": "Securities (including those issuable pursuant to contingent stock agreements) that could potentially dilute basic earnings per share (EPS) or earnings per unit (EPU) in the future that were not included in the computation of diluted EPS or EPU because to do so would increase EPS or EPU amounts or decrease loss per share or unit amounts for the period presented." } } }, "auth_ref": [ "r199" ] }, "us-gaap_Assets": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "Assets", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Assets", "totalLabel": "Total assets", "documentation": "Sum of the carrying amounts as of the balance sheet date of all assets that are recognized. Assets are probable future economic benefits obtained or controlled by an entity as a result of past transactions or events." } } }, "auth_ref": [ "r115", "r143", "r166", "r206", "r221", "r227", "r239", "r290", "r291", "r293", "r294", "r295", "r297", "r299", "r301", "r302", "r430", "r434", "r457", "r495", "r560", "r633", "r646", "r759", "r760", "r796" ] }, "us-gaap_AssetsAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AssetsAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Assets [Abstract]", "terseLabel": "ASSETS" } } }, "auth_ref": [] }, "us-gaap_AssetsAndLiabilitiesLesseeAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AssetsAndLiabilitiesLesseeAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesSummaryOfOperatingLeaseAssetsAndLiabilitiesDetails" ], "lang": { "en-us": { "role": { "label": "Assets and Liabilities, Lessee [Abstract]", "terseLabel": "Summary of lease asset and liabilities" } } }, "auth_ref": [] }, "us-gaap_AssetsCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AssetsCurrent", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_Assets", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Assets, Current", "totalLabel": "Total current assets", "documentation": "Sum of the carrying amounts as of the balance sheet date of all assets that are expected to be realized in cash, sold, or consumed within one year (or the normal operating cycle, if longer). Assets are probable future economic benefits obtained or controlled by an entity as a result of past transactions or events." } } }, "auth_ref": [ "r138", "r149", "r166", "r239", "r290", "r291", "r293", "r294", "r295", "r297", "r299", "r301", "r302", "r430", "r434", "r457", "r633", "r759", "r760", "r796" ] }, "us-gaap_AssetsCurrentAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AssetsCurrentAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Assets, Current [Abstract]", "terseLabel": "CURRENT ASSETS:" } } }, "auth_ref": [] }, "ecd_AwardExrcPrice": { "xbrltype": "perShareItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AwardExrcPrice", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "label": "Award Exercise Price", "terseLabel": "Exercise Price" } } }, "auth_ref": [ "r712" ] }, "ecd_AwardGrantDateFairValue": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AwardGrantDateFairValue", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "label": "Award Grant Date Fair Value", "terseLabel": "Fair Value as of Grant Date" } } }, "auth_ref": [ "r713" ] }, "ecd_AwardTmgDiscLineItems": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AwardTmgDiscLineItems", "lang": { "en-us": { "role": { "label": "Award Timing Disclosures [Line Items]", "terseLabel": "Award Timing Disclosures" } } }, "auth_ref": [ "r708" ] }, "ecd_AwardTmgHowMnpiCnsdrdTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AwardTmgHowMnpiCnsdrdTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "label": "Award Timing, How MNPI Considered [Text Block]", "terseLabel": "Award Timing, How MNPI Considered" } } }, "auth_ref": [ "r708" ] }, "ecd_AwardTmgMethodTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AwardTmgMethodTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "label": "Award Timing Method [Text Block]", "terseLabel": "Award Timing Method" } } }, "auth_ref": [ "r708" ] }, "ecd_AwardTmgMnpiCnsdrdFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AwardTmgMnpiCnsdrdFlag", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "label": "Award Timing MNPI Considered [Flag]", "terseLabel": "Award Timing MNPI Considered" } } }, "auth_ref": [ "r708" ] }, "ecd_AwardTmgMnpiDiscTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AwardTmgMnpiDiscTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "label": "Award Timing MNPI Disclosure [Text Block]", "terseLabel": "Award Timing MNPI Disclosure" } } }, "auth_ref": [ "r708" ] }, "ecd_AwardTmgPredtrmndFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AwardTmgPredtrmndFlag", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "label": "Award Timing Predetermined [Flag]", "terseLabel": "Award Timing Predetermined" } } }, "auth_ref": [ "r708" ] }, "us-gaap_AwardTypeAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AwardTypeAxis", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "label": "Award Type [Axis]", "terseLabel": "Award Type", "documentation": "Information by type of award under share-based payment arrangement." } } }, "auth_ref": [ "r380", "r381", "r382", "r383", "r384", "r385", "r386", "r387", "r388", "r389", "r390", "r391", "r392", "r393", "r394", "r395", "r396", "r397", "r398", "r399", "r400", "r401", "r402", "r403", "r404", "r405" ] }, "ecd_AwardUndrlygSecuritiesAmt": { "xbrltype": "decimalItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AwardUndrlygSecuritiesAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "label": "Award Underlying Securities Amount", "terseLabel": "Underlying Securities" } } }, "auth_ref": [ "r711" ] }, "ecd_AwardsCloseToMnpiDiscIndName": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AwardsCloseToMnpiDiscIndName", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "label": "Awards Close in Time to MNPI Disclosures, Individual Name", "terseLabel": "Name" } } }, "auth_ref": [ "r710" ] }, "ecd_AwardsCloseToMnpiDiscTable": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AwardsCloseToMnpiDiscTable", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "label": "Awards Close in Time to MNPI Disclosures [Table]", "terseLabel": "Awards Close in Time to MNPI Disclosures" } } }, "auth_ref": [ "r709" ] }, "ecd_AwardsCloseToMnpiDiscTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AwardsCloseToMnpiDiscTableTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "label": "Awards Close in Time to MNPI Disclosures [Table Text Block]", "terseLabel": "Awards Close in Time to MNPI Disclosures, Table" } } }, "auth_ref": [ "r709" ] }, "us-gaap_BasisOfAccountingPolicyPolicyTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BasisOfAccountingPolicyPolicyTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureSummaryOfSignificantAccountingPoliciesAndEstimatesPolicies" ], "lang": { "en-us": { "role": { "label": "Basis of Accounting, Policy [Policy Text Block]", "terseLabel": "Basis of Presentation", "documentation": "Disclosure of accounting policy for basis of accounting, or basis of presentation, used to prepare the financial statements (for example, US Generally Accepted Accounting Principles, Other Comprehensive Basis of Accounting, IFRS)." } } }, "auth_ref": [] }, "us-gaap_BasisOfPresentationAndSignificantAccountingPoliciesTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BasisOfPresentationAndSignificantAccountingPoliciesTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureSummaryOfSignificantAccountingPoliciesAndEstimates" ], "lang": { "en-us": { "role": { "label": "Basis of Presentation and Significant Accounting Policies [Text Block]", "terseLabel": "Summary of Significant Accounting Policies and Estimates", "documentation": "The entire disclosure for the basis of presentation and significant accounting policies concepts. Basis of presentation describes the underlying basis used to prepare the financial statements (for example, US Generally Accepted Accounting Principles, Other Comprehensive Basis of Accounting, IFRS). Accounting policies describe all significant accounting policies of the reporting entity." } } }, "auth_ref": [ "r100" ] }, "us-gaap_BilledContractReceivables": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BilledContractReceivables", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_AssetsCurrent", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Billed Contracts Receivable", "verboseLabel": "Billed accounts receivable, less allowance for credit losses of $11,949 and $11,926, respectively", "documentation": "Amounts due for billed services rendered or to be rendered, actions taken or to be taken, or a promise to refrain from taking certain actions in accordance with the terms of a legally binding agreement between the Company and, at a minimum, one other party. An example would be amounts billed to customers under contracts or programs but not paid as of the balance sheet date." } } }, "auth_ref": [ "r487" ] }, "us-gaap_BusinessAcquisitionAcquireeDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessAcquisitionAcquireeDomain", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails", "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails", "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsOtherAcquisitionsDetails", "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsTables" ], "lang": { "en-us": { "role": { "label": "Business Acquisition, Acquiree [Domain]", "documentation": "Identification of the acquiree in a material business combination (or series of individually immaterial business combinations), which may include the name or other type of identification of the acquiree." } } }, "auth_ref": [ "r423", "r627", "r628" ] }, "us-gaap_BusinessAcquisitionAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessAcquisitionAxis", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails", "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails", "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsOtherAcquisitionsDetails", "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsTables" ], "lang": { "en-us": { "role": { "label": "Business Acquisition [Axis]", "documentation": "Information by business combination or series of individually immaterial business combinations." } } }, "auth_ref": [ "r58", "r59", "r423", "r627", "r628" ] }, "us-gaap_BusinessAcquisitionLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessAcquisitionLineItems", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails", "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsOtherAcquisitionsDetails", "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsTables" ], "lang": { "en-us": { "role": { "label": "Business Acquisition [Line Items]", "terseLabel": "Acquisitions", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [ "r423" ] }, "us-gaap_BusinessCombinationConsiderationTransferred1": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationConsiderationTransferred1", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsOtherAcquisitionsDetails" ], "lang": { "en-us": { "role": { "label": "Business Combination, Consideration Transferred", "terseLabel": "Fair value of consideration transferred", "documentation": "Amount of consideration transferred, consisting of acquisition-date fair value of assets transferred by the acquirer, liabilities incurred by the acquirer, and equity interest issued by the acquirer." } } }, "auth_ref": [ "r1", "r2", "r13" ] }, "us-gaap_BusinessCombinationConsiderationTransferredAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationConsiderationTransferredAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails" ], "lang": { "en-us": { "role": { "label": "Business Combination, Consideration Transferred [Abstract]", "terseLabel": "Consideration transferred:" } } }, "auth_ref": [] }, "us-gaap_BusinessCombinationConsiderationTransferredLiabilitiesIncurred": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationConsiderationTransferredLiabilitiesIncurred", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails", "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsOtherAcquisitionsDetails" ], "lang": { "en-us": { "role": { "label": "Business Combination, Consideration Transferred, Liabilities Incurred", "verboseLabel": "Notes issued to former owners", "documentation": "Amount of liabilities incurred by the acquirer as part of consideration transferred in a business combination." } } }, "auth_ref": [ "r1", "r2", "r65", "r426" ] }, "fix_BusinessCombinationConsiderationTransferredWorkingCapitalAdjustment": { "xbrltype": "monetaryItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "BusinessCombinationConsiderationTransferredWorkingCapitalAdjustment", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails" ], "lang": { "en-us": { "role": { "documentation": "Amount of working capital settlement under business combination.", "label": "Business Combination Consideration Transferred Working Capital Adjustment", "terseLabel": "Working capital adjustment" } } }, "auth_ref": [] }, "us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations": { "parentTag": "us-gaap_NonoperatingIncomeExpense", "weight": -1.0, "order": 3.0 }, "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 10.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows", "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations" ], "lang": { "en-us": { "role": { "label": "Business Combination, Contingent Consideration Arrangements, Change in Amount of Contingent Consideration, Liability", "negatedLabel": "Changes in the fair value of contingent earn-out obligations", "terseLabel": "Changes in the fair value of contingent earn-out obligations", "documentation": "Amount of increase (decrease) in the value of a contingent consideration liability, including, but not limited to, differences arising upon settlement." } } }, "auth_ref": [ "r428", "r729" ] }, "fix_BusinessCombinationContingentConsiderationChangeInContingentConsiderationLiabilityMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "BusinessCombinationContingentConsiderationChangeInContingentConsiderationLiabilityMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureCommitmentsAndContingenciesDetails" ], "lang": { "en-us": { "role": { "documentation": "Primary financial statement caption encompassing change in the value of a contingent consideration liability.", "label": "Business Combination, Contingent Consideration, Change in Contingent Consideration, Liability", "terseLabel": "Change in Fair Value of Contingent Earn-Out Obligations" } } }, "auth_ref": [] }, "us-gaap_BusinessCombinationContingentConsiderationLiability": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationContingentConsiderationLiability", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails" ], "lang": { "en-us": { "role": { "label": "Business Combination, Contingent Consideration, Liability", "terseLabel": "Estimated fair value of contingent earn-out payments", "documentation": "Amount of liability recognized arising from contingent consideration in a business combination." } } }, "auth_ref": [ "r3", "r66", "r427" ] }, "us-gaap_BusinessCombinationDisclosureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationDisclosureTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitions" ], "lang": { "en-us": { "role": { "label": "Business Combination Disclosure [Text Block]", "terseLabel": "Acquisitions", "documentation": "The entire disclosure for a business combination (or series of individually immaterial business combinations) completed during the period, including background, timing, and recognized assets and liabilities. The disclosure may include leverage buyout transactions (as applicable)." } } }, "auth_ref": [ "r113", "r424" ] }, "fix_BusinessCombinationEstimatedMilestonePayment": { "xbrltype": "monetaryItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "BusinessCombinationEstimatedMilestonePayment", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails" ], "lang": { "en-us": { "role": { "documentation": "The amount of consideration recognized during the period for the estimated milestones.", "label": "Business Combination Estimated Milestone Payment", "terseLabel": "Estimated milestone payment" } } }, "auth_ref": [] }, "fix_BusinessCombinationNumberOfEarningsMilestones": { "xbrltype": "integerItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "BusinessCombinationNumberOfEarningsMilestones", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails" ], "lang": { "en-us": { "role": { "documentation": "The number of earnings milestone.", "label": "Business Combination Number of Earnings Milestones", "terseLabel": "Number of earnings milestones" } } }, "auth_ref": [] }, "fix_BusinessCombinationRecognizedIdentifiableAssetAcquiredAndLiabilityAssumedOperatingLeaseObligation": { "xbrltype": "monetaryItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "BusinessCombinationRecognizedIdentifiableAssetAcquiredAndLiabilityAssumedOperatingLeaseObligation", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails": { "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet", "weight": -1.0, "order": 16.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails" ], "lang": { "en-us": { "role": { "documentation": "Amount of operating lease obligation assumed in business combination.", "label": "Business Combination, Recognized Identifiable Asset Acquired and Liability Assumed, Operating Lease Obligation", "negatedLabel": "Long-term operating lease liabilities" } } }, "auth_ref": [] }, "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails": { "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails" ], "lang": { "en-us": { "role": { "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Cash and Equivalents", "terseLabel": "Cash and cash equivalents", "documentation": "Amount of currency on hand as well as demand deposits with banks or financial institutions, acquired at the acquisition date. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates." } } }, "auth_ref": [ "r61" ] }, "fix_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsCostsInExcessOfBillings": { "xbrltype": "monetaryItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsCostsInExcessOfBillings", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails": { "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet", "weight": 1.0, "order": 9.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails" ], "lang": { "en-us": { "role": { "documentation": "Amount of costs in excess of billings.", "label": "Business Combination Recognized Identifiable Assets Acquired And Liabilities Assumed Current Assets Costs in Excess of Billings", "terseLabel": "Cost and estimated earnings in excess of billings" } } }, "auth_ref": [] }, "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails": { "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet", "weight": 1.0, "order": 5.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails" ], "lang": { "en-us": { "role": { "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Current Assets, Prepaid Expense and Other Assets", "terseLabel": "Prepaid expenses and other", "documentation": "Amount of asset related to consideration paid in advance for costs that provide economic benefits in future periods, and amount of other assets that are expected to be realized or consumed within one year or the normal operating cycle, if longer, acquired at the acquisition date." } } }, "auth_ref": [ "r61" ] }, "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails": { "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails" ], "lang": { "en-us": { "role": { "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Current Assets, Receivables", "terseLabel": "Billed and unbilled accounts receivable", "documentation": "Amount due from customers or clients for goods or services, including trade receivables, that have been delivered or sold in the normal course of business, and amounts due from others, including related parties expected to be converted to cash, sold or exchanged within one year or the normal operating cycle, if longer, acquired at the acquisition date." } } }, "auth_ref": [ "r61" ] }, "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails": { "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet", "weight": -1.0, "order": 6.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails" ], "lang": { "en-us": { "role": { "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Current Liabilities, Accounts Payable", "negatedLabel": "Accounts payable", "documentation": "Amount of liabilities incurred for goods and services received that are used in an entity's business and related party payables, assumed at the acquisition date." } } }, "auth_ref": [ "r61" ] }, "fix_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesBillingsInExcessOfCostsAndEstimatedEarnings": { "xbrltype": "monetaryItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesBillingsInExcessOfCostsAndEstimatedEarnings", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails": { "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet", "weight": -1.0, "order": 1.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails" ], "lang": { "en-us": { "role": { "documentation": "Business Combination Recognized Identifiable Assets Acquired And Liabilities Assumed Current Liabilities Billings In Excess of Costs And Estimated Earnings", "label": "Business Combination Recognized Identifiable Assets Acquired And Liabilities Assumed Current Liabilities Billings In Excess Of Costs And Estimated Earnings", "negatedLabel": "Billings in excess of costs and estimated earnings" } } }, "auth_ref": [] }, "fix_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesOperatingLeaseLiabilities": { "xbrltype": "monetaryItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesOperatingLeaseLiabilities", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails": { "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet", "weight": -1.0, "order": 15.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails" ], "lang": { "en-us": { "role": { "documentation": "Amount of current operating lease liabilities due within one year or within the normal operating cycle, if longer, assumed at the acquisition date.", "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Current Liabilities, Operating Lease Liabilities", "negatedLabel": "Current operating lease liabilities" } } }, "auth_ref": [] }, "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesOther": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesOther", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails": { "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet", "weight": -1.0, "order": 7.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails" ], "lang": { "en-us": { "role": { "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Current Liabilities, Other", "negatedLabel": "Accrued expenses and other current liabilities", "documentation": "Amount of other liabilities due within one year or within the normal operating cycle, if longer, assumed at the acquisition date." } } }, "auth_ref": [ "r61" ] }, "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails": { "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet", "weight": 1.0, "order": 12.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails", "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails" ], "lang": { "en-us": { "role": { "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Finite-Lived Intangibles", "terseLabel": "Identifiable intangible assets", "verboseLabel": "Estimated Fair Value", "documentation": "The amount of identifiable intangible assets recognized as of the acquisition date." } } }, "auth_ref": [ "r60", "r61" ] }, "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails": { "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails" ], "lang": { "en-us": { "role": { "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Inventory", "terseLabel": "Inventory", "documentation": "The amount of inventory recognized as of the acquisition date." } } }, "auth_ref": [ "r60", "r61" ] }, "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesLongTermDebt": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesLongTermDebt", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails": { "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet", "weight": -1.0, "order": 8.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails", "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsDetails", "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Noncurrent Liabilities, Long-term Debt", "negatedLabel": "Long-term debt", "verboseLabel": "Acquired debt", "documentation": "Amount of long-term debt due after one year or the normal operating cycle, if longer, assumed at the acquisition date." } } }, "auth_ref": [ "r61" ] }, "fix_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets": { "xbrltype": "monetaryItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails": { "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet", "weight": 1.0, "order": 14.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails" ], "lang": { "en-us": { "role": { "documentation": "The amount of right of use assets from operating leases recognized as of the acquisition date.", "label": "Business Combination, Recognized Identifiable Assets Acquired And Liabilities Assumed, Operating Lease Right Of Use Assets", "terseLabel": "Lease right-of-use asset" } } }, "auth_ref": [] }, "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails": { "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet", "weight": 1.0, "order": 10.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails" ], "lang": { "en-us": { "role": { "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Other Noncurrent Assets", "terseLabel": "Other noncurrent assets", "documentation": "Amount of other assets expected to be realized or consumed after one year or the normal operating cycle, if longer, acquired at the acquisition date." } } }, "auth_ref": [ "r61" ] }, "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails": { "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet", "weight": 1.0, "order": 13.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails" ], "lang": { "en-us": { "role": { "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Property, Plant, and Equipment", "terseLabel": "Property and equipment", "documentation": "The amount of property, plant, and equipment recognized as of the acquisition date." } } }, "auth_ref": [ "r60", "r61" ] }, "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails" ], "lang": { "en-us": { "role": { "label": "Business Combination, Recognized Identifiable Assets Acquired, Goodwill, and Liabilities Assumed, Net", "totalLabel": "Total assets acquired and liabilities assumed", "verboseLabel": "Consideration transferred", "documentation": "Amount recognized for assets, including goodwill, in excess of (less than) the aggregate liabilities assumed." } } }, "auth_ref": [ "r61" ] }, "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNetAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNetAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails" ], "lang": { "en-us": { "role": { "label": "Business Combination, Recognized Identifiable Assets Acquired, Goodwill, and Liabilities Assumed, Net [Abstract]", "terseLabel": "Recognized amounts of identifiable assets acquired and liabilities assumed:" } } }, "auth_ref": [] }, "fix_BusinessCombinationTermOfEarningsMilestones": { "xbrltype": "durationItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "BusinessCombinationTermOfEarningsMilestones", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails" ], "lang": { "en-us": { "role": { "documentation": "The term of earnings milestones.", "label": "Business Combination Term of Earnings Milestones", "terseLabel": "Term of earnings milestones" } } }, "auth_ref": [] }, "us-gaap_BusinessCombinationsAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationsAbstract", "lang": { "en-us": { "role": { "label": "Acquisitions" } } }, "auth_ref": [] }, "us-gaap_CashAndCashEquivalentsAtCarryingValue": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CashAndCashEquivalentsAtCarryingValue", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_AssetsCurrent", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Cash and Cash Equivalents, at Carrying Value", "terseLabel": "Cash and cash equivalents", "documentation": "Amount of currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates. Excludes cash and cash equivalents within disposal group and discontinued operation." } } }, "auth_ref": [ "r35", "r140", "r603" ] }, "us-gaap_CashAndCashEquivalentsFairValueDisclosure": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CashAndCashEquivalentsFairValueDisclosure", "crdr": "debit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "label": "Cash and Cash Equivalents, Fair Value Disclosure", "terseLabel": "Cash and cash equivalents", "documentation": "Fair value portion of currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates." } } }, "auth_ref": [] }, "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents", "crdr": "debit", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Cash, Cash Equivalents, Restricted Cash and Restricted Cash Equivalents", "periodEndLabel": "CASH AND CASH EQUIVALENTS, end of period", "periodStartLabel": "CASH AND CASH EQUIVALENTS, beginning of period", "documentation": "Amount of cash and cash equivalents, and cash and cash equivalents restricted to withdrawal or usage. Excludes amount for disposal group and discontinued operations. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates." } } }, "auth_ref": [ "r35", "r97", "r163" ] }, "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Cash, Cash Equivalents, Restricted Cash and Restricted Cash Equivalents, Period Increase (Decrease), Including Exchange Rate Effect", "totalLabel": "NET INCREASE (DECREASE) IN CASH AND CASH EQUIVALENTS", "documentation": "Amount of increase (decrease) in cash, cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; including effect from exchange rate change. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates." } } }, "auth_ref": [ "r4", "r97" ] }, "fix_CashFlowDiscountRate": { "xbrltype": "percentItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "CashFlowDiscountRate", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails" ], "lang": { "en-us": { "role": { "documentation": "Amount of probable cash flows discount rate.", "label": "Cash Flow Discount Rate", "terseLabel": "Cash flow discount rate" } } }, "auth_ref": [] }, "us-gaap_CashSurrenderValueFairValueDisclosure": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CashSurrenderValueFairValueDisclosure", "crdr": "debit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "label": "Cash Surrender Value, Fair Value Disclosure", "terseLabel": "Life insurance-cash surrender value", "documentation": "Fair value portion of the amount that could be realized under a life insurance contract or contracts owned by the entity, commonly known as corporate-owned life insurance (COLI) or bank-owned life insurance (BOLI)." } } }, "auth_ref": [] }, "us-gaap_ChangeInContractWithCustomerAssetAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ChangeInContractWithCustomerAssetAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersContractAssetsAndLiabilitiesDetails" ], "lang": { "en-us": { "role": { "label": "Change in Contract with Customer, Asset [Abstract]", "terseLabel": "Contract Assets" } } }, "auth_ref": [] }, "us-gaap_ChangeInContractWithCustomerLiabilityAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ChangeInContractWithCustomerLiabilityAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersContractAssetsAndLiabilitiesDetails" ], "lang": { "en-us": { "role": { "label": "Change in Contract with Customer, Liability [Abstract]", "terseLabel": "Contract Liabilities" } } }, "auth_ref": [] }, "fix_ChangeInRightOfUseAssets": { "xbrltype": "monetaryItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "ChangeInRightOfUseAssets", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 15.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "documentation": "Amount of change in right-of-use assets.", "label": "Change in Right of Use Assets", "terseLabel": "Change in right-of-use assets" } } }, "auth_ref": [] }, "ecd_ChangedPeerGroupFnTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "ChangedPeerGroupFnTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Changed Peer Group, Footnote [Text Block]", "terseLabel": "Changed Peer Group, Footnote" } } }, "auth_ref": [ "r688" ] }, "dei_CityAreaCode": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "CityAreaCode", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "City Area Code", "documentation": "Area code of city" } } }, "auth_ref": [] }, "ecd_CoSelectedMeasureAmt": { "xbrltype": "decimalItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "CoSelectedMeasureAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Company Selected Measure Amount", "terseLabel": "Company Selected Measure Amount" } } }, "auth_ref": [ "r689" ] }, "ecd_CoSelectedMeasureName": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "CoSelectedMeasureName", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Company Selected Measure Name", "terseLabel": "Company Selected Measure Name" } } }, "auth_ref": [ "r689" ] }, "us-gaap_CommitmentsAndContingencies": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CommitmentsAndContingencies", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Commitments and Contingencies.", "terseLabel": "COMMITMENTS AND CONTINGENCIES", "documentation": "Represents the caption on the face of the balance sheet to indicate that the entity has entered into (1) purchase or supply arrangements that will require expending a portion of its resources to meet the terms thereof, and (2) is exposed to potential losses or, less frequently, gains, arising from (a) possible claims against a company's resources due to future performance under contract terms, and (b) possible losses or likely gains from uncertainties that will ultimately be resolved when one or more future events that are deemed likely to occur do occur or fail to occur." } } }, "auth_ref": [ "r28", "r74", "r498", "r547" ] }, "us-gaap_CommitmentsAndContingenciesDisclosureAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CommitmentsAndContingenciesDisclosureAbstract", "lang": { "en-us": { "role": { "label": "Commitments and Contingencies" } } }, "auth_ref": [] }, "us-gaap_CommitmentsAndContingenciesDisclosureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CommitmentsAndContingenciesDisclosureTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureCommitmentsAndContingencies" ], "lang": { "en-us": { "role": { "label": "Commitments and Contingencies Disclosure [Text Block]", "terseLabel": "Commitments and Contingencies", "documentation": "The entire disclosure for commitments and contingencies." } } }, "auth_ref": [ "r106", "r282", "r283", "r598", "r753" ] }, "us-gaap_CommonStockDividendsPerShareDeclared": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CommonStockDividendsPerShareDeclared", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquityParenthetical" ], "lang": { "en-us": { "role": { "label": "Common Stock, Dividends, Per Share, Declared", "verboseLabel": "Dividends (per share)", "documentation": "Aggregate dividends declared during the period for each share of common stock outstanding." } } }, "auth_ref": [ "r111" ] }, "us-gaap_CommonStockMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CommonStockMember", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquity" ], "lang": { "en-us": { "role": { "label": "Common Stock", "documentation": "Stock that is subordinate to all other stock of the issuer." } } }, "auth_ref": [ "r636", "r637", "r638", "r640", "r641", "r642", "r643", "r734", "r735", "r790", "r811", "r813" ] }, "us-gaap_CommonStockParOrStatedValuePerShare": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CommonStockParOrStatedValuePerShare", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheetsParenthetical" ], "lang": { "en-us": { "role": { "label": "Common Stock, Par or Stated Value Per Share", "terseLabel": "Common stock, par value (in dollars per share)", "documentation": "Face amount or stated value per share of common stock." } } }, "auth_ref": [ "r79" ] }, "us-gaap_CommonStockSharesAuthorized": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CommonStockSharesAuthorized", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheetsParenthetical" ], "lang": { "en-us": { "role": { "label": "Common Stock, Shares Authorized", "terseLabel": "Common stock, shares authorized", "documentation": "The maximum number of common shares permitted to be issued by an entity's charter and bylaws." } } }, "auth_ref": [ "r79", "r548" ] }, "us-gaap_CommonStockSharesIssued": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CommonStockSharesIssued", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheetsParenthetical", "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquity" ], "lang": { "en-us": { "role": { "label": "Common Stock, Shares, Issued", "periodEndLabel": "BALANCE (in shares)", "periodStartLabel": "BALANCE (in shares)", "terseLabel": "Common stock, shares issued", "documentation": "Total number of common shares of an entity that have been sold or granted to shareholders (includes common shares that were issued, repurchased and remain in the treasury). These shares represent capital invested by the firm's shareholders and owners, and may be all or only a portion of the number of shares authorized. Shares issued include shares outstanding and shares held in the treasury." } } }, "auth_ref": [ "r79" ] }, "us-gaap_CommonStockSharesOutstanding": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CommonStockSharesOutstanding", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityNumberOfSharesDetails" ], "lang": { "en-us": { "role": { "label": "Common Stock, Shares, Outstanding", "terseLabel": "Common shares outstanding, end of period", "documentation": "Number of shares of common stock outstanding. Common stock represent the ownership interest in a corporation." } } }, "auth_ref": [ "r14", "r79", "r548", "r566", "r813", "r814" ] }, "us-gaap_CommonStockValue": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CommonStockValue", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_StockholdersEquity", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Common Stock, Value, Issued", "verboseLabel": "Common stock, $.01 par, 102,969,912 shares authorized, 41,123,365 and 41,123,365 shares issued, respectively", "documentation": "Aggregate par or stated value of issued nonredeemable common stock (or common stock redeemable solely at the option of the issuer). This item includes treasury stock repurchased by the entity. Note: elements for number of nonredeemable common shares, par value and other disclosure concepts are in another section within stockholders' equity." } } }, "auth_ref": [ "r79", "r500", "r633" ] }, "ecd_CompActuallyPaidVsCoSelectedMeasureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "CompActuallyPaidVsCoSelectedMeasureTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Compensation Actually Paid vs. Company Selected Measure [Text Block]", "terseLabel": "Compensation Actually Paid vs. Company Selected Measure" } } }, "auth_ref": [ "r694" ] }, "ecd_CompActuallyPaidVsNetIncomeTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "CompActuallyPaidVsNetIncomeTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Compensation Actually Paid vs. Net Income [Text Block]", "terseLabel": "Compensation Actually Paid vs. Net Income" } } }, "auth_ref": [ "r693" ] }, "ecd_CompActuallyPaidVsOtherMeasureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "CompActuallyPaidVsOtherMeasureTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Compensation Actually Paid vs. Other Measure [Text Block]", "terseLabel": "Compensation Actually Paid vs. Other Measure" } } }, "auth_ref": [ "r695" ] }, "ecd_CompActuallyPaidVsTotalShareholderRtnTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "CompActuallyPaidVsTotalShareholderRtnTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Compensation Actually Paid vs. Total Shareholder Return [Text Block]", "terseLabel": "Compensation Actually Paid vs. Total Shareholder Return" } } }, "auth_ref": [ "r692" ] }, "srt_ConsolidationItemsAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/srt/2023", "localname": "ConsolidationItemsAxis", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureSegmentInformationDetails" ], "lang": { "en-us": { "role": { "label": "Consolidation Items [Axis]" } } }, "auth_ref": [ "r167", "r208", "r219", "r220", "r221", "r222", "r223", "r225", "r229", "r290", "r291", "r292", "r293", "r295", "r296", "r298", "r300", "r301", "r759", "r760" ] }, "srt_ConsolidationItemsDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/srt/2023", "localname": "ConsolidationItemsDomain", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureSegmentInformationDetails" ], "lang": { "en-us": { "role": { "label": "Consolidation Items [Domain]" } } }, "auth_ref": [ "r167", "r208", "r219", "r220", "r221", "r222", "r223", "r225", "r229", "r290", "r291", "r292", "r293", "r295", "r296", "r298", "r300", "r301", "r759", "r760" ] }, "fix_ContingentConsiderationObligationsMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "ContingentConsiderationObligationsMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails", "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "documentation": "Represents the information pertaining to the contingent consideration obligations that have been provided in a business combination.", "label": "Contingent earn-out obligations" } } }, "auth_ref": [] }, "us-gaap_ContractWithCustomerAssetAccumulatedAllowanceForCreditLossCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ContractWithCustomerAssetAccumulatedAllowanceForCreditLossCurrent", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheetsParenthetical" ], "lang": { "en-us": { "role": { "label": "Contract with Customer, Asset, Allowance for Credit Loss, Current", "terseLabel": "Costs and estimated earnings in excess of billings, allowance for credit losses (in dollars)", "documentation": "Amount of allowance for credit loss for right to consideration in exchange for good or service transferred to customer when right is conditioned on something other than passage of time, classified as current." } } }, "auth_ref": [ "r245", "r346" ] }, "us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ContractWithCustomerAssetAndLiabilityTableTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersTables" ], "lang": { "en-us": { "role": { "label": "Contract with Customer, Asset and Liability [Table Text Block]", "terseLabel": "Schedule of contract assets and liabilities", "documentation": "Tabular disclosure of receivable, contract asset, and contract liability from contract with customer. Includes, but is not limited to, change in contract asset and contract liability." } } }, "auth_ref": [ "r762" ] }, "us-gaap_ContractWithCustomerAssetCreditLossExpense": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ContractWithCustomerAssetCreditLossExpense", "crdr": "debit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersContractAssetsAndLiabilitiesDetails" ], "lang": { "en-us": { "role": { "label": "Contract with Customer, Asset, Credit Loss Expense", "terseLabel": "Impairment losses", "documentation": "Amount of expense (reversal of expense) for expected credit loss on right to consideration in exchange for good or service transferred to customer when right is conditioned on something other than passage of time." } } }, "auth_ref": [ "r248", "r363", "r616" ] }, "us-gaap_ContractWithCustomerAssetNet": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ContractWithCustomerAssetNet", "crdr": "debit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersContractAssetsAndLiabilitiesDetails" ], "lang": { "en-us": { "role": { "label": "Contract with Customer, Asset, after Allowance for Credit Loss", "terseLabel": "Costs and estimated earnings in excess of billings, less allowance for credit losses", "documentation": "Amount, after allowance for credit loss, of right to consideration in exchange for good or service transferred to customer when right is conditioned on something other than passage of time." } } }, "auth_ref": [ "r344", "r346", "r365" ] }, "us-gaap_ContractWithCustomerAssetNetCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ContractWithCustomerAssetNetCurrent", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_AssetsCurrent", "weight": 1.0, "order": 6.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersContractAssetsAndLiabilitiesDetails", "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Contract with Customer, Asset, Net, Current", "terseLabel": "Costs and estimated earnings in excess of billings, less allowance for credit losses of $108 and $79, respectively", "verboseLabel": "Costs and estimated earnings in excess of billings, less allowance for credit losses", "documentation": "Amount, after allowance for credit loss, of right to consideration in exchange for good or service transferred to customer when right is conditioned on something other than passage of time, classified as current." } } }, "auth_ref": [ "r344", "r346", "r365" ] }, "us-gaap_ContractWithCustomerLiabilityCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ContractWithCustomerLiabilityCurrent", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_LiabilitiesCurrent", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersContractAssetsAndLiabilitiesDetails", "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Contract with Customer, Liability, Current", "terseLabel": "Billings in excess of costs and estimated earnings and deferred revenue", "documentation": "Amount of obligation to transfer good or service to customer for which consideration has been received or is receivable, classified as current." } } }, "auth_ref": [ "r344", "r345", "r365" ] }, "us-gaap_ContractWithCustomerLiabilityRevenueRecognized": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ContractWithCustomerLiabilityRevenueRecognized", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersContractAssetsAndLiabilitiesDetails" ], "lang": { "en-us": { "role": { "label": "Contract with Customer, Liability, Revenue Recognized", "terseLabel": "Revenue related to our contract liabilities", "documentation": "Amount of revenue recognized that was previously included in balance of obligation to transfer good or service to customer for which consideration from customer has been received or is due." } } }, "auth_ref": [ "r366" ] }, "fix_ContractWithCustomerPerformanceObligationSatisfiedInPreviousPeriodPercentage": { "xbrltype": "percentItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "ContractWithCustomerPerformanceObligationSatisfiedInPreviousPeriodPercentage", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersNarrativesDetails" ], "lang": { "en-us": { "role": { "documentation": "Percentage of revenue attributable to performance obligation satisfied or partially satisfied in previous reporting periods. Includes, but is not limited to, change in transaction price.", "label": "Contract with Customer, Performance Obligation Satisfied in Previous Period, Percentage", "terseLabel": "Percentage impact on revenue from performance obligations satisfied in previous period" } } }, "auth_ref": [] }, "us-gaap_CostOfRevenue": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CostOfRevenue", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations": { "parentTag": "us-gaap_GrossProfit", "weight": -1.0, "order": 2.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations" ], "lang": { "en-us": { "role": { "label": "Cost of Revenue", "terseLabel": "COST OF SERVICES", "documentation": "The aggregate cost of goods produced and sold and services rendered during the reporting period." } } }, "auth_ref": [ "r89", "r166", "r239", "r290", "r291", "r293", "r294", "r295", "r297", "r299", "r301", "r302", "r457", "r759" ] }, "dei_CoverAbstract": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "CoverAbstract", "lang": { "en-us": { "role": { "label": "Cover [Abstract]", "documentation": "Cover page." } } }, "auth_ref": [] }, "us-gaap_CreditLossFinancialInstrumentPolicyTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CreditLossFinancialInstrumentPolicyTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureSummaryOfSignificantAccountingPoliciesAndEstimatesPolicies" ], "lang": { "en-us": { "role": { "label": "Credit Loss, Financial Instrument [Policy Text Block]", "verboseLabel": "Accounts Receivable and Allowance for Credit Losses", "documentation": "Disclosure of accounting policy for credit loss on financial instrument measured at amortized cost basis, net investment in lease, off-balance sheet credit exposure, and available-for-sale debt security. Includes, but is not limited to, methodology used to estimate allowance for credit loss, how writeoff of uncollectible amount is recognized, and determination of past due status and nonaccrual status." } } }, "auth_ref": [ "r131", "r242", "r243", "r244", "r246", "r247", "r249", "r250", "r251", "r252", "r253", "r254", "r255", "r256", "r257", "r258", "r259", "r260" ] }, "fix_CumulativeNumberOfCompaniesAcquiredOutstandingNotesToFormerOwners": { "xbrltype": "integerItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "CumulativeNumberOfCompaniesAcquiredOutstandingNotesToFormerOwners", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "documentation": "The cumulative number of companies acquired by the entity whereby there are outstanding notes to former owners.", "label": "Cumulative Number Of Companies Acquired Outstanding, Notes To Former Owners", "terseLabel": "Cumulative number of companies acquired" } } }, "auth_ref": [] }, "dei_CurrentFiscalYearEndDate": { "xbrltype": "gMonthDayItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "CurrentFiscalYearEndDate", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Current Fiscal Year End Date", "documentation": "End date of current fiscal year in the format --MM-DD." } } }, "auth_ref": [] }, "us-gaap_CustomerRelationshipsMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CustomerRelationshipsMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails", "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetIdentifiableIntangibleAssetsNetDetails" ], "lang": { "en-us": { "role": { "label": "Customer Relationships", "documentation": "Customer relationship that exists between an entity and its customer, for example, but not limited to, tenant relationships." } } }, "auth_ref": [ "r64" ] }, "fix_DebtCovenantRatioAxis": { "xbrltype": "stringItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "DebtCovenantRatioAxis", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "documentation": "Information by different ratios applicable to debt covenants.", "label": "Debt Covenant Ratio [Axis]" } } }, "auth_ref": [] }, "fix_DebtCovenantRatioDomain": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "DebtCovenantRatioDomain", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "documentation": "Groups of debt covenant ratio ranges.", "label": "Debt Covenant Ratio [Domain]" } } }, "auth_ref": [] }, "fix_DebtCovenantRatioRangeFiveMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "DebtCovenantRatioRangeFiveMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "documentation": "Represents activity related to range five of specified debt covenant.", "label": "Debt Covenant Ratio Range Five [Member]", "terseLabel": "Consolidated Total Indebtedness to Credit Facility Adjusted EBITDA: 3.00 or Greater" } } }, "auth_ref": [] }, "fix_DebtCovenantRatioRangeFourMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "DebtCovenantRatioRangeFourMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "documentation": "Represents activity related to range four of specified debt covenant.", "label": "Consolidated Total Indebtedness to Credit Facility Adjusted EBITDA: 2.50 to less than 3.00" } } }, "auth_ref": [] }, "fix_DebtCovenantRatioRangeOneMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "DebtCovenantRatioRangeOneMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "documentation": "Represents activity related to range one of specified debt covenant.", "label": "Consolidated Total Indebtedness to Credit Facility Adjusted EBITDA: Less than 1.00" } } }, "auth_ref": [] }, "fix_DebtCovenantRatioRangeThreeMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "DebtCovenantRatioRangeThreeMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "documentation": "Represents activity related to range three of specified debt covenant.", "label": "Consolidated Total Indebtedness to Credit Facility Adjusted EBITDA: 1.75 to less than 2.50" } } }, "auth_ref": [] }, "fix_DebtCovenantRatioRangeTwoMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "DebtCovenantRatioRangeTwoMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "documentation": "Represents activity related to range two of specified debt covenant.", "label": "Consolidated Total Indebtedness to Credit Facility Adjusted EBITDA: 1.00 to less than 1.75" } } }, "auth_ref": [] }, "us-gaap_DebtDisclosureAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DebtDisclosureAbstract", "lang": { "en-us": { "role": { "label": "Debt Obligations" } } }, "auth_ref": [] }, "us-gaap_DebtDisclosureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DebtDisclosureTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligations" ], "lang": { "en-us": { "role": { "label": "Long-term Debt [Text Block]", "terseLabel": "Debt Obligations", "documentation": "The entire disclosure for information about short-term and long-term debt arrangements, which includes amounts of borrowings under each line of credit, note payable, commercial paper issue, bonds indenture, debenture issue, own-share lending arrangements and any other contractual agreement to repay funds, and about the underlying arrangements, rationale for a classification as long-term, including repayment terms, interest rates, collateral provided, restrictions on use of assets and activities, whether or not in compliance with debt covenants, and other matters important to users of the financial statements, such as the effects of refinancing and noncompliance with debt covenants." } } }, "auth_ref": [ "r107", "r164", "r303", "r309", "r310", "r311", "r312", "r313", "r314", "r319", "r326", "r327", "r329" ] }, "us-gaap_DebtInstrumentAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DebtInstrumentAxis", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsDetails", "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsNotesToFormerOwnersDetails", "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails", "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsTables" ], "lang": { "en-us": { "role": { "label": "Debt Instrument [Axis]", "documentation": "Information by type of debt instrument, including, but not limited to, draws against credit facilities." } } }, "auth_ref": [ "r19", "r76", "r77", "r116", "r117", "r167", "r304", "r305", "r306", "r307", "r308", "r310", "r315", "r316", "r317", "r318", "r320", "r321", "r322", "r323", "r324", "r325", "r466", "r610", "r611", "r612", "r613", "r614", "r731" ] }, "us-gaap_DebtInstrumentBasisSpreadOnVariableRate1": { "xbrltype": "percentItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DebtInstrumentBasisSpreadOnVariableRate1", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "label": "Debt Instrument, Basis Spread on Variable Rate", "terseLabel": "Additional per annum interest margin (as a percent)", "documentation": "Percentage points added to the reference rate to compute the variable rate on the debt instrument." } } }, "auth_ref": [] }, "us-gaap_DebtInstrumentInterestRateEffectivePercentageAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DebtInstrumentInterestRateEffectivePercentageAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "label": "Debt Instrument, Interest Rate, Effective Percentage [Abstract]" } } }, "auth_ref": [] }, "us-gaap_DebtInstrumentInterestRateStatedPercentage": { "xbrltype": "percentItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DebtInstrumentInterestRateStatedPercentage", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsNotesToFormerOwnersDetails" ], "lang": { "en-us": { "role": { "label": "Debt Instrument, Interest Rate, Stated Percentage", "terseLabel": "Stated interest rate (as a percent)", "documentation": "Contractual interest rate for funds borrowed, under the debt agreement." } } }, "auth_ref": [ "r25", "r305" ] }, "us-gaap_DebtInstrumentLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DebtInstrumentLineItems", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsDetails", "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsNotesToFormerOwnersDetails", "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "label": "Debt Instrument [Line Items]", "terseLabel": "Debt Obligations", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [ "r167", "r304", "r305", "r306", "r307", "r308", "r310", "r315", "r316", "r317", "r318", "r320", "r321", "r322", "r323", "r324", "r325", "r328", "r466", "r610", "r611", "r612", "r613", "r614", "r731" ] }, "us-gaap_DebtInstrumentNameDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DebtInstrumentNameDomain", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsDetails", "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsNotesToFormerOwnersDetails", "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails", "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsTables" ], "lang": { "en-us": { "role": { "label": "Debt Instrument, Name [Domain]", "documentation": "The name for the particular debt instrument or borrowing that distinguishes it from other debt instruments or borrowings, including draws against credit facilities." } } }, "auth_ref": [ "r26", "r167", "r304", "r305", "r306", "r307", "r308", "r310", "r315", "r316", "r317", "r318", "r320", "r321", "r322", "r323", "r324", "r325", "r466", "r610", "r611", "r612", "r613", "r614", "r731" ] }, "us-gaap_DebtInstrumentTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DebtInstrumentTable", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsDetails", "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsNotesToFormerOwnersDetails", "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "label": "Schedule of Long-term Debt Instruments [Table]", "documentation": "A table or schedule providing information pertaining to long-term debt instruments or arrangements, including identification, terms, features, collateral requirements and other information necessary to a fair presentation. These are debt arrangements that originally required repayment more than twelve months after issuance or greater than the normal operating cycle of the company, if longer." } } }, "auth_ref": [ "r26", "r51", "r52", "r70", "r71", "r73", "r75", "r109", "r110", "r167", "r304", "r305", "r306", "r307", "r308", "r310", "r315", "r316", "r317", "r318", "r320", "r321", "r322", "r323", "r324", "r325", "r328", "r466", "r610", "r611", "r612", "r613", "r614", "r731" ] }, "fix_DebtInstrumentVariableRateBaseRateMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "DebtInstrumentVariableRateBaseRateMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "documentation": "The base rate used to calculate the variable interest rate of the debt instrument.", "label": "Base rate" } } }, "auth_ref": [] }, "fix_DebtInstrumentVariableRateSecondaryClassificationAxis": { "xbrltype": "stringItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "DebtInstrumentVariableRateSecondaryClassificationAxis", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "documentation": "The secondary classification of alternative reference rates that may be used to calculate the variable interest rate of the debt instrument.", "label": "Debt Instrument Variable Rate Secondary Classification [Axis]" } } }, "auth_ref": [] }, "fix_DebtInstrumentVariableRateSecondaryClassificationDomain": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "DebtInstrumentVariableRateSecondaryClassificationDomain", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "documentation": "Identification of the secondary classification of alternative reference rate that is used to calculate the variable interest rate of the debt instrument.", "label": "Debt Instrument Variable Rate Secondary Classification [Domain]" } } }, "auth_ref": [] }, "fix_DebtInstrumentVariableRateSecuredOvernightFinancingRateMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "DebtInstrumentVariableRateSecuredOvernightFinancingRateMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "documentation": "The secured overnight financing rate (SOFR) used to calculate the variable interest rate of the debt instrument.", "label": "Debt Instrument Variable Rate Secured Overnight Financing Rate [Member]", "terseLabel": "SOFR" } } }, "auth_ref": [] }, "fix_DebtMaturityDateAxis": { "xbrltype": "stringItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "DebtMaturityDateAxis", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsNotesToFormerOwnersDetails" ], "lang": { "en-us": { "role": { "documentation": "It represents the information pertaining to debt maturity date.", "label": "Debt Maturity Date [Axis]" } } }, "auth_ref": [] }, "fix_DebtMaturityDateDomain": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "DebtMaturityDateDomain", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsNotesToFormerOwnersDetails" ], "lang": { "en-us": { "role": { "documentation": "It represents debt maturity date.", "label": "Debt Maturity Date [Domain]" } } }, "auth_ref": [] }, "fix_DeccoIncMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "DeccoIncMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsOtherAcquisitionsDetails" ], "lang": { "en-us": { "role": { "documentation": "Represents the information pertaining to DECCO, Inc and each of its related subsidiary[ies].", "label": "DECCO, Inc [Member]", "terseLabel": "DECCO" } } }, "auth_ref": [] }, "us-gaap_DeferredIncomeTaxAssetsNet": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DeferredIncomeTaxAssetsNet", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_Assets", "weight": 1.0, "order": 6.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Deferred Income Tax Assets, Net", "verboseLabel": "DEFERRED TAX ASSETS", "documentation": "Amount, after allocation of valuation allowances and deferred tax liability, of deferred tax asset attributable to deductible differences and carryforwards, with jurisdictional netting." } } }, "auth_ref": [ "r411", "r412" ] }, "us-gaap_DeferredIncomeTaxExpenseBenefit": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DeferredIncomeTaxExpenseBenefit", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 13.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Deferred Income Tax Expense (Benefit)", "terseLabel": "Deferred tax provision (benefit)", "documentation": "Amount of deferred income tax expense (benefit) pertaining to income (loss) from continuing operations." } } }, "auth_ref": [ "r9", "r112", "r130", "r421", "r422", "r733" ] }, "us-gaap_DeferredIncomeTaxLiabilitiesNet": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DeferredIncomeTaxLiabilitiesNet", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_Liabilities", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Deferred Income Tax Liabilities, Net", "verboseLabel": "DEFERRED TAX LIABILITIES", "documentation": "Amount, after deferred tax asset, of deferred tax liability attributable to taxable differences with jurisdictional netting." } } }, "auth_ref": [ "r411", "r412", "r496" ] }, "us-gaap_Depreciation": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "Depreciation", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 16.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Depreciation", "terseLabel": "Depreciation expense", "documentation": "The amount of expense recognized in the current period that reflects the allocation of the cost of tangible assets over the assets' useful lives. Includes production and non-production related depreciation." } } }, "auth_ref": [ "r9", "r50" ] }, "us-gaap_DisaggregationOfRevenueLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DisaggregationOfRevenueLineItems", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersDisaggregationOfRevenueDetails" ], "lang": { "en-us": { "role": { "label": "Disaggregation of Revenue [Line Items]", "terseLabel": "Disaggregation of Revenue", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [ "r364", "r617", "r618", "r619", "r620", "r621", "r622", "r623" ] }, "us-gaap_DisaggregationOfRevenueTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DisaggregationOfRevenueTable", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersDisaggregationOfRevenueDetails" ], "lang": { "en-us": { "role": { "label": "Disaggregation of Revenue [Table]", "documentation": "Disclosure of information about disaggregation of revenue into categories depicting how nature, amount, timing, and uncertainty of revenue and cash flows are affected by economic factor." } } }, "auth_ref": [ "r364", "r617", "r618", "r619", "r620", "r621", "r622", "r623" ] }, "us-gaap_DisaggregationOfRevenueTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DisaggregationOfRevenueTableTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersTables" ], "lang": { "en-us": { "role": { "label": "Disaggregation of Revenue [Table Text Block]", "terseLabel": "Schedule of disaggregation of revenue", "documentation": "Tabular disclosure of disaggregation of revenue into categories depicting how nature, amount, timing, and uncertainty of revenue and cash flows are affected by economic factor." } } }, "auth_ref": [ "r763" ] }, "us-gaap_DisclosureOfRepurchaseAgreementsAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DisclosureOfRepurchaseAgreementsAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityIncentiveAndOtherDetails" ], "lang": { "en-us": { "role": { "label": "Shares Repurchase Program [Abstract]", "terseLabel": "Share Repurchase Program" } } }, "auth_ref": [] }, "fix_DisputeWithCustomerMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "DisputeWithCustomerMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureCommitmentsAndContingenciesDetails" ], "lang": { "en-us": { "role": { "documentation": "The risk of loss pertaining to dispute with customer.", "label": "Dispute With Customer" } } }, "auth_ref": [] }, "us-gaap_DividendsCommonStockCash": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DividendsCommonStockCash", "crdr": "debit", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquity" ], "lang": { "en-us": { "role": { "label": "Dividends, Common Stock, Cash", "negatedLabel": "Dividends", "documentation": "Amount of paid and unpaid common stock dividends declared with the form of settlement in cash." } } }, "auth_ref": [ "r111" ] }, "dei_DocumentFiscalPeriodFocus": { "xbrltype": "fiscalPeriodItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "DocumentFiscalPeriodFocus", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Document Fiscal Period Focus", "documentation": "Fiscal period values are FY, Q1, Q2, and Q3. 1st, 2nd and 3rd quarter 10-Q or 10-QT statements have value Q1, Q2, and Q3 respectively, with 10-K, 10-KT or other fiscal year statements having FY." } } }, "auth_ref": [] }, "dei_DocumentFiscalYearFocus": { "xbrltype": "gYearItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "DocumentFiscalYearFocus", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Document Fiscal Year Focus", "documentation": "This is focus fiscal year of the document report in YYYY format. For a 2006 annual report, which may also provide financial information from prior periods, fiscal 2006 should be given as the fiscal year focus. Example: 2006." } } }, "auth_ref": [] }, "dei_DocumentPeriodEndDate": { "xbrltype": "dateItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "DocumentPeriodEndDate", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Document Period End Date", "documentation": "For the EDGAR submission types of Form 8-K: the date of the report, the date of the earliest event reported; for the EDGAR submission types of Form N-1A: the filing date; for all other submission types: the end of the reporting or transition period. The format of the date is YYYY-MM-DD." } } }, "auth_ref": [] }, "dei_DocumentQuarterlyReport": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "DocumentQuarterlyReport", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Document Quarterly Report", "documentation": "Boolean flag that is true only for a form used as an quarterly report." } } }, "auth_ref": [ "r650" ] }, "dei_DocumentTransitionReport": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "DocumentTransitionReport", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Document Transition Report", "documentation": "Boolean flag that is true only for a form used as a transition report." } } }, "auth_ref": [ "r683" ] }, "dei_DocumentType": { "xbrltype": "submissionTypeItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "DocumentType", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Document Type", "documentation": "The type of document being provided (such as 10-K, 10-Q, 485BPOS, etc). The document type is limited to the same value as the supporting SEC submission type, or the word 'Other'." } } }, "auth_ref": [] }, "us-gaap_EarningsPerShareAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EarningsPerShareAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations" ], "lang": { "en-us": { "role": { "label": "Earnings Per Share [Abstract]", "terseLabel": "INCOME PER SHARE:" } } }, "auth_ref": [] }, "us-gaap_EarningsPerShareBasic": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EarningsPerShareBasic", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations" ], "lang": { "en-us": { "role": { "label": "Earnings Per Share, Basic", "terseLabel": "Basic", "documentation": "The amount of net income (loss) for the period per each share of common stock or unit outstanding during the reporting period." } } }, "auth_ref": [ "r158", "r173", "r174", "r175", "r176", "r177", "r181", "r183", "r196", "r197", "r198", "r200", "r444", "r445", "r492", "r507", "r605" ] }, "us-gaap_EarningsPerShareDiluted": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EarningsPerShareDiluted", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations" ], "lang": { "en-us": { "role": { "label": "Earnings Per Share, Diluted", "terseLabel": "Diluted", "documentation": "The amount of net income (loss) for the period available to each share of common stock or common unit outstanding during the reporting period and to each share or unit that would have been outstanding assuming the issuance of common shares or units for all dilutive potential common shares or units outstanding during the reporting period." } } }, "auth_ref": [ "r158", "r173", "r174", "r175", "r176", "r177", "r183", "r196", "r197", "r198", "r200", "r444", "r445", "r492", "r507", "r605" ] }, "fix_EducationMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "EducationMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersDisaggregationOfRevenueDetails" ], "lang": { "en-us": { "role": { "documentation": "This members stands for education.", "label": "Education" } } }, "auth_ref": [] }, "fix_EffectOfUsingWeightedAverageCommonSharesOutstanding": { "xbrltype": "sharesItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "EffectOfUsingWeightedAverageCommonSharesOutstanding", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityNumberOfSharesDetails" ], "lang": { "en-us": { "role": { "documentation": "Represents the effect of using weighted average common shares outstanding.", "label": "Effect of Using Weighted Average Common Shares, Outstanding", "terseLabel": "Effect of using weighted average common shares outstanding" } } }, "auth_ref": [] }, "fix_EldecoincMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "EldecoincMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsOtherAcquisitionsDetails" ], "lang": { "en-us": { "role": { "documentation": "Represents information pertaining to Eldeco Inc", "label": "EldecoInc [Member]", "terseLabel": "Eldeco Inc" } } }, "auth_ref": [] }, "fix_ElectricalSegmentMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "ElectricalSegmentMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetChangesInCarryingAmountOfGoodwillDetails", "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersDisaggregationOfRevenueDetails", "http://www.comfortsystemsusa.com/role/DisclosureSegmentInformationDetails" ], "lang": { "en-us": { "role": { "documentation": "Electrical Segment [Member]", "label": "Electrical Segment" } } }, "auth_ref": [] }, "us-gaap_EmployeeRelatedLiabilitiesCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EmployeeRelatedLiabilitiesCurrent", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_LiabilitiesCurrent", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Employee-related Liabilities, Current", "terseLabel": "Accrued compensation and benefits", "documentation": "Total of the carrying values as of the balance sheet date of obligations incurred through that date and payable for obligations related to services received from employees, such as accrued salaries and bonuses, payroll taxes and fringe benefits. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer)." } } }, "auth_ref": [ "r23" ] }, "us-gaap_EmployeeStockOptionMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EmployeeStockOptionMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "label": "Employee Stock Option [Member]", "terseLabel": "Employee Stock Option", "documentation": "Share-based payment arrangement granting right, subject to vesting and other restrictions, to purchase or sell certain number of shares at predetermined price for specified period of time." } } }, "auth_ref": [] }, "dei_EntityAddressAddressLine1": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityAddressAddressLine1", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Entity Address, Address Line One", "documentation": "Address Line 1 such as Attn, Building Name, Street Name" } } }, "auth_ref": [] }, "dei_EntityAddressAddressLine2": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityAddressAddressLine2", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Entity Address, Address Line Two", "documentation": "Address Line 2 such as Street or Suite number" } } }, "auth_ref": [] }, "dei_EntityAddressCityOrTown": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityAddressCityOrTown", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Entity Address, City or Town", "documentation": "Name of the City or Town" } } }, "auth_ref": [] }, "dei_EntityAddressPostalZipCode": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityAddressPostalZipCode", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Entity Address, Postal Zip Code", "documentation": "Code for the postal or zip code" } } }, "auth_ref": [] }, "dei_EntityAddressStateOrProvince": { "xbrltype": "stateOrProvinceItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityAddressStateOrProvince", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Entity Address, State or Province", "documentation": "Name of the state or province." } } }, "auth_ref": [] }, "dei_EntityCentralIndexKey": { "xbrltype": "centralIndexKeyItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityCentralIndexKey", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Entity Central Index Key", "documentation": "A unique 10-digit SEC-issued value to identify entities that have filed disclosures with the SEC. It is commonly abbreviated as CIK." } } }, "auth_ref": [ "r648" ] }, "dei_EntityCommonStockSharesOutstanding": { "xbrltype": "sharesItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityCommonStockSharesOutstanding", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Entity Common Stock, Shares Outstanding", "documentation": "Indicate number of shares or other units outstanding of each of registrant's classes of capital or common stock or other ownership interests, if and as stated on cover of related periodic report. Where multiple classes or units exist define each class/interest by adding class of stock items such as Common Class A [Member], Common Class B [Member] or Partnership Interest [Member] onto the Instrument [Domain] of the Entity Listings, Instrument." } } }, "auth_ref": [] }, "dei_EntityCurrentReportingStatus": { "xbrltype": "yesNoItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityCurrentReportingStatus", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Entity Current Reporting Status", "documentation": "Indicate 'Yes' or 'No' whether registrants (1) have filed all reports required to be filed by Section 13 or 15(d) of the Securities Exchange Act of 1934 during the preceding 12 months (or for such shorter period that registrants were required to file such reports), and (2) have been subject to such filing requirements for the past 90 days. This information should be based on the registrant's current or most recent filing containing the related disclosure." } } }, "auth_ref": [] }, "dei_EntityEmergingGrowthCompany": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityEmergingGrowthCompany", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Entity Emerging Growth Company", "documentation": "Indicate if registrant meets the emerging growth company criteria." } } }, "auth_ref": [ "r648" ] }, "dei_EntityFileNumber": { "xbrltype": "fileNumberItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityFileNumber", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Entity File Number", "documentation": "Commission file number. The field allows up to 17 characters. The prefix may contain 1-3 digits, the sequence number may contain 1-8 digits, the optional suffix may contain 1-4 characters, and the fields are separated with a hyphen." } } }, "auth_ref": [] }, "dei_EntityFilerCategory": { "xbrltype": "filerCategoryItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityFilerCategory", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Entity Filer Category", "documentation": "Indicate whether the registrant is one of the following: Large Accelerated Filer, Accelerated Filer, Non-accelerated Filer. Definitions of these categories are stated in Rule 12b-2 of the Exchange Act. This information should be based on the registrant's current or most recent filing containing the related disclosure." } } }, "auth_ref": [ "r648" ] }, "dei_EntityIncorporationStateCountryCode": { "xbrltype": "edgarStateCountryItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityIncorporationStateCountryCode", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Entity Incorporation, State or Country Code", "documentation": "Two-character EDGAR code representing the state or country of incorporation." } } }, "auth_ref": [] }, "dei_EntityInteractiveDataCurrent": { "xbrltype": "yesNoItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityInteractiveDataCurrent", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Entity Interactive Data Current", "documentation": "Boolean flag that is true when the registrant has submitted electronically every Interactive Data File required to be submitted pursuant to Rule 405 of Regulation S-T during the preceding 12 months (or for such shorter period that the registrant was required to submit such files)." } } }, "auth_ref": [ "r722" ] }, "dei_EntityRegistrantName": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityRegistrantName", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Entity Registrant Name", "documentation": "The exact name of the entity filing the report as specified in its charter, which is required by forms filed with the SEC." } } }, "auth_ref": [ "r648" ] }, "dei_EntityShellCompany": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityShellCompany", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Entity Shell Company", "documentation": "Boolean flag that is true when the registrant is a shell company as defined in Rule 12b-2 of the Exchange Act." } } }, "auth_ref": [ "r648" ] }, "dei_EntitySmallBusiness": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntitySmallBusiness", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Entity Small Business", "documentation": "Indicates that the company is a Smaller Reporting Company (SRC)." } } }, "auth_ref": [ "r648" ] }, "dei_EntityTaxIdentificationNumber": { "xbrltype": "employerIdItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityTaxIdentificationNumber", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Entity Tax Identification Number", "documentation": "The Tax Identification Number (TIN), also known as an Employer Identification Number (EIN), is a unique 9-digit value assigned by the IRS." } } }, "auth_ref": [ "r648" ] }, "us-gaap_EquityComponentDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EquityComponentDomain", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquity" ], "lang": { "en-us": { "role": { "label": "Equity Component [Domain]", "documentation": "Components of equity are the parts of the total Equity balance including that which is allocated to common, preferred, treasury stock, retained earnings, etc." } } }, "auth_ref": [ "r14", "r135", "r153", "r154", "r155", "r168", "r169", "r170", "r172", "r178", "r180", "r201", "r240", "r241", "r343", "r406", "r407", "r408", "r418", "r419", "r436", "r437", "r438", "r439", "r440", "r441", "r443", "r458", "r459", "r460", "r461", "r462", "r463", "r480", "r527", "r528", "r529", "r536", "r587" ] }, "us-gaap_EquitySecuritiesWithoutReadilyDeterminableFairValueAmount": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EquitySecuritiesWithoutReadilyDeterminableFairValueAmount", "crdr": "debit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureSummaryOfSignificantAccountingPoliciesAndEstimatesInvestmentsDetails" ], "lang": { "en-us": { "role": { "label": "Equity Securities without Readily Determinable Fair Value, Amount", "terseLabel": "Investment fair value", "documentation": "Amount of investment in equity security without readily determinable fair value." } } }, "auth_ref": [ "r237" ] }, "us-gaap_EquitySecuritiesWithoutReadilyDeterminableFairValuePolicyTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EquitySecuritiesWithoutReadilyDeterminableFairValuePolicyTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureSummaryOfSignificantAccountingPoliciesAndEstimatesPolicies" ], "lang": { "en-us": { "role": { "label": "Equity Securities without Readily Determinable Fair Value [Policy Text Block]", "terseLabel": "Investments", "documentation": "Disclosure of accounting policy for investment in equity security without readily determinable fair value, which does not qualify for practical expedient to estimate fair value using net asset value per share. Includes, but is not limited to, information considered for determining upward and downward adjustment from observable price change." } } }, "auth_ref": [ "r238" ] }, "ecd_EquityValuationAssumptionDifferenceFnTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "EquityValuationAssumptionDifferenceFnTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Equity Valuation Assumption Difference, Footnote [Text Block]", "terseLabel": "Equity Valuation Assumption Difference, Footnote" } } }, "auth_ref": [ "r691" ] }, "ecd_ErrCompAnalysisTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "ErrCompAnalysisTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "label": "Erroneous Compensation Analysis [Text Block]", "terseLabel": "Erroneous Compensation Analysis" } } }, "auth_ref": [ "r655", "r666", "r676", "r701" ] }, "ecd_ErrCompRecoveryTable": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "ErrCompRecoveryTable", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "label": "Erroneously Awarded Compensation Recovery [Table]", "terseLabel": "Erroneously Awarded Compensation Recovery" } } }, "auth_ref": [ "r652", "r663", "r673", "r698" ] }, "us-gaap_EstimateOfFairValueFairValueDisclosureMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EstimateOfFairValueFairValueDisclosureMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "label": "Total", "documentation": "Measured as an estimate of fair value." } } }, "auth_ref": [ "r317", "r456", "r611", "r612" ] }, "ecd_ExecutiveCategoryAxis": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "ExecutiveCategoryAxis", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Executive Category [Axis]", "terseLabel": "Executive Category:" } } }, "auth_ref": [ "r697" ] }, "fix_ExistingBuildingConstructionMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "ExistingBuildingConstructionMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersDisaggregationOfRevenueDetails" ], "lang": { "en-us": { "role": { "documentation": "This member stands for existing building construction.", "label": "Existing Building Construction" } } }, "auth_ref": [] }, "us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "label": "Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]", "terseLabel": "Fair Value Measurements", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [ "r447", "r448", "r453" ] }, "us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "label": "Fair Value Measurements, Recurring and Nonrecurring [Table]", "documentation": "Disclosure of information about asset and liability measured at fair value on recurring and nonrecurring basis." } } }, "auth_ref": [ "r447", "r448", "r453" ] }, "us-gaap_FairValueAssetsMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FairValueAssetsMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsTables" ], "lang": { "en-us": { "role": { "label": "Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation [Table Text Block]", "terseLabel": "Schedule of reconciliation of the fair value of contingent earn-out obligations that use significant unobservable inputs (Level 3)", "documentation": "Tabular disclosure of the fair value measurement of assets using significant unobservable inputs (Level 3), a reconciliation of the beginning and ending balances, separately presenting changes during the period attributable to the following: (1) total gains or losses for the period (realized and unrealized), segregating those gains or losses included in earnings (or changes in net assets) and gains or losses recognized in other comprehensive income (loss), and a description of where those gains or losses included in earnings (or changes in net assets) are reported in the statement of income (or activities); (2) purchases, sales, issues, and settlements (each type disclosed separately); and (3) transfers in and transfers out of Level 3 (for example, transfers due to changes in the observability of significant inputs), by class of asset." } } }, "auth_ref": [ "r15", "r69" ] }, "us-gaap_FairValueByFairValueHierarchyLevelAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FairValueByFairValueHierarchyLevelAxis", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "label": "Fair Value, Hierarchy [Axis]", "documentation": "Information by level within fair value hierarchy and fair value measured at net asset value per share as practical expedient." } } }, "auth_ref": [ "r317", "r369", "r370", "r371", "r372", "r373", "r374", "r448", "r481", "r482", "r483", "r611", "r612", "r624", "r625", "r626" ] }, "us-gaap_FairValueByLiabilityClassAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FairValueByLiabilityClassAxis", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails", "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "label": "Liability Class [Axis]", "documentation": "Information by class of liability." } } }, "auth_ref": [ "r69", "r114" ] }, "us-gaap_FairValueByMeasurementBasisAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FairValueByMeasurementBasisAxis", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "label": "Measurement Basis [Axis]", "documentation": "Information by measurement basis." } } }, "auth_ref": [ "r17", "r67", "r317", "r611", "r612" ] }, "us-gaap_FairValueByMeasurementFrequencyAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FairValueByMeasurementFrequencyAxis", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "label": "Measurement Frequency [Axis]", "documentation": "Information by measurement frequency." } } }, "auth_ref": [ "r447", "r448", "r450", "r451", "r454" ] }, "us-gaap_FairValueDisclosuresAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FairValueDisclosuresAbstract", "lang": { "en-us": { "role": { "label": "Fair Value Measurements" } } }, "auth_ref": [] }, "us-gaap_FairValueDisclosuresTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FairValueDisclosuresTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurements" ], "lang": { "en-us": { "role": { "label": "Fair Value Disclosures [Text Block]", "terseLabel": "Fair Value Measurements", "documentation": "The entire disclosure for the fair value of financial instruments (as defined), including financial assets and financial liabilities (collectively, as defined), and the measurements of those instruments as well as disclosures related to the fair value of non-financial assets and liabilities. Such disclosures about the financial instruments, assets, and liabilities would include: (1) the fair value of the required items together with their carrying amounts (as appropriate); (2) for items for which it is not practicable to estimate fair value, disclosure would include: (a) information pertinent to estimating fair value (including, carrying amount, effective interest rate, and maturity, and (b) the reasons why it is not practicable to estimate fair value; (3) significant concentrations of credit risk including: (a) information about the activity, region, or economic characteristics identifying a concentration, (b) the maximum amount of loss the entity is exposed to based on the gross fair value of the related item, (c) policy for requiring collateral or other security and information as to accessing such collateral or security, and (d) the nature and brief description of such collateral or security; (4) quantitative information about market risks and how such risks are managed; (5) for items measured on both a recurring and nonrecurring basis information regarding the inputs used to develop the fair value measurement; and (6) for items presented in the financial statement for which fair value measurement is elected: (a) information necessary to understand the reasons for the election, (b) discussion of the effect of fair value changes on earnings, (c) a description of [similar groups] items for which the election is made and the relation thereof to the balance sheet, the aggregate carrying value of items included in the balance sheet that are not eligible for the election; (7) all other required (as defined) and desired information." } } }, "auth_ref": [ "r446" ] }, "us-gaap_FairValueInputsLevel1Member": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FairValueInputsLevel1Member", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "label": "Quoted Market Prices In Active Markets for Identical Assets (Level 1)", "documentation": "Quoted prices in active markets for identical assets or liabilities that the reporting entity can access at the measurement date." } } }, "auth_ref": [ "r317", "r369", "r374", "r448", "r481", "r624", "r625", "r626" ] }, "us-gaap_FairValueInputsLevel2Member": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FairValueInputsLevel2Member", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "label": "Significant Other Observable Inputs (Level 2)", "documentation": "Inputs other than quoted prices included within level 1 that are observable for an asset or liability, either directly or indirectly, including, but not limited to, quoted prices for similar assets or liabilities in active markets, or quoted prices for identical or similar assets or liabilities in inactive markets." } } }, "auth_ref": [ "r317", "r369", "r374", "r448", "r482", "r611", "r612", "r624", "r625", "r626" ] }, "us-gaap_FairValueInputsLevel3Member": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FairValueInputsLevel3Member", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "label": "Significant Unobservable Inputs (Level 3)", "documentation": "Unobservable inputs that reflect the entity's own assumption about the assumptions market participants would use in pricing." } } }, "auth_ref": [ "r317", "r369", "r370", "r371", "r372", "r373", "r374", "r448", "r483", "r611", "r612", "r624", "r625", "r626" ] }, "us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationByLiabilityClassDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationByLiabilityClassDomain", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails", "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "label": "Fair Value by Liability Class [Domain]", "documentation": "Represents classes of liabilities measured and disclosed at fair value." } } }, "auth_ref": [ "r15" ] }, "us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "label": "Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]", "terseLabel": "Reconciliation of the fair value of contingent earn-out obligations that use significant unobservable inputs (Level 3)", "documentation": "A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period." } } }, "auth_ref": [] }, "us-gaap_FairValueMeasurementFrequencyDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FairValueMeasurementFrequencyDomain", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "label": "Fair Value, Measurement Frequency [Domain]", "documentation": "Measurement frequency." } } }, "auth_ref": [] }, "us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "label": "Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Liability, Gain (Loss) Included in Earnings", "terseLabel": "Adjustments to fair value", "documentation": "Amount of gain (loss) recognized in income from liability measured at fair value on recurring basis using unobservable input (level 3)." } } }, "auth_ref": [ "r452" ] }, "us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "label": "Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Liability, Issuances", "terseLabel": "Issuances", "documentation": "Amount of issuances of financial instrument classified as a liability measured using unobservable inputs that reflect the entity's own assumption about the assumptions market participants would use in pricing." } } }, "auth_ref": [ "r68" ] }, "us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySettlements": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySettlements", "crdr": "debit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "label": "Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Liability, Settlements", "negatedLabel": "Settlements", "documentation": "Amount of settlements of financial instrument classified as a liability measured using unobservable inputs that reflect the entity's own assumption about the assumptions market participants would use in pricing." } } }, "auth_ref": [ "r68" ] }, "us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "label": "Fair Value, Measurement with Unobservable Inputs Reconciliations, Recurring Basis, Liability Value", "periodEndLabel": "Balance at end of period", "periodStartLabel": "Balance at beginning of period", "terseLabel": "Contingent earn-out obligations", "documentation": "Fair value of financial instrument classified as a liability measured using unobservable inputs that reflect the entity's own assumption about the assumptions market participants would use in pricing." } } }, "auth_ref": [ "r15" ] }, "us-gaap_FairValueMeasurementsFairValueHierarchyDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FairValueMeasurementsFairValueHierarchyDomain", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "label": "Fair Value Hierarchy [Domain]", "documentation": "Categories used to prioritize the inputs to valuation techniques to measure fair value." } } }, "auth_ref": [ "r317", "r369", "r370", "r371", "r372", "r373", "r374", "r481", "r482", "r483", "r611", "r612", "r624", "r625", "r626" ] }, "us-gaap_FairValueMeasurementsRecurringMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FairValueMeasurementsRecurringMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "label": "Recurring basis", "documentation": "Frequent fair value measurement. Includes, but is not limited to, fair value adjustment for impairment of asset, liability or equity, frequently measured at fair value." } } }, "auth_ref": [ "r446", "r454" ] }, "us-gaap_FairValueOfFinancialInstrumentsPolicy": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FairValueOfFinancialInstrumentsPolicy", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureSummaryOfSignificantAccountingPoliciesAndEstimatesPolicies" ], "lang": { "en-us": { "role": { "label": "Fair Value of Financial Instruments, Policy [Policy Text Block]", "terseLabel": "Financial Instruments", "documentation": "Disclosure of accounting policy for determining the fair value of financial instruments." } } }, "auth_ref": [ "r12", "r18" ] }, "us-gaap_FiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTable", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails" ], "lang": { "en-us": { "role": { "label": "Finite-Lived Intangible Assets Acquired as Part of Business Combination [Table]", "documentation": "A table containing detailed characteristics of finite-lived intangible assets acquired during a business combination. Finite-lived intangible assets are assets that have no physical form, but have expected future economic benefit, and are expected to be used over a defined period. Acquired finite-lived intangible assets are disclosed by major class (assets that can be grouped together because they are similar, either by their nature or by their use in operations of the Entity) and in total. Additionally, any significant residual value (the expected value of the asset at the end of its useful life) and the weighted-average amortization period are also disclosed." } } }, "auth_ref": [ "r46" ] }, "fix_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFour": { "xbrltype": "monetaryItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFour", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetIdentifiableIntangibleAssetsNetDetails": { "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetIdentifiableIntangibleAssetsNetDetails" ], "lang": { "en-us": { "role": { "documentation": "Amount of amortization for asset, excluding financial asset and goodwill, lacking physical substance with finite life expected to be recognized after fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).", "label": "Finite Lived Intangible Assets Amortization Expense After Year Four", "terseLabel": "Thereafter" } } }, "auth_ref": [] }, "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetIdentifiableIntangibleAssetsNetDetails": { "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetIdentifiableIntangibleAssetsNetDetails" ], "lang": { "en-us": { "role": { "label": "Finite-Lived Intangible Assets, Amortization Expense, Next Twelve Months", "terseLabel": "2025", "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in next fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [ "r105" ] }, "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetIdentifiableIntangibleAssetsNetDetails": { "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet", "weight": 1.0, "order": 6.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetIdentifiableIntangibleAssetsNetDetails" ], "lang": { "en-us": { "role": { "label": "Finite-Lived Intangible Assets, Amortization Expense, Remainder of Fiscal Year", "terseLabel": "2024 (remainder of the year)", "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in remainder of current fiscal year." } } }, "auth_ref": [] }, "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearFour", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetIdentifiableIntangibleAssetsNetDetails": { "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetIdentifiableIntangibleAssetsNetDetails" ], "lang": { "en-us": { "role": { "label": "Finite-Lived Intangible Assets, Amortization Expense, Year Four", "terseLabel": "2028", "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [ "r105" ] }, "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearThree", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetIdentifiableIntangibleAssetsNetDetails": { "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetIdentifiableIntangibleAssetsNetDetails" ], "lang": { "en-us": { "role": { "label": "Finite-Lived Intangible Assets, Amortization Expense, Year Three", "terseLabel": "2027", "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [ "r105" ] }, "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetIdentifiableIntangibleAssetsNetDetails": { "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet", "weight": 1.0, "order": 5.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetIdentifiableIntangibleAssetsNetDetails" ], "lang": { "en-us": { "role": { "label": "Finite-Lived Intangible Assets, Amortization Expense, Year Two", "terseLabel": "2026", "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in second fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [ "r105" ] }, "us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FiniteLivedIntangibleAssetsByMajorClassAxis", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails", "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetIdentifiableIntangibleAssetsNetDetails" ], "lang": { "en-us": { "role": { "label": "Finite-Lived Intangible Assets by Major Class [Axis]", "documentation": "Information by major type or class of finite-lived intangible assets." } } }, "auth_ref": [ "r273", "r274", "r275", "r276", "r489", "r490" ] }, "us-gaap_FiniteLivedIntangibleAssetsFutureAmortizationExpenseAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FiniteLivedIntangibleAssetsFutureAmortizationExpenseAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetIdentifiableIntangibleAssetsNetDetails" ], "lang": { "en-us": { "role": { "label": "Finite-Lived Intangible Assets, Net, Amortization Expense, Fiscal Year Maturity [Abstract]", "terseLabel": "Future amortization expense of identifiable intangible assets" } } }, "auth_ref": [] }, "us-gaap_FiniteLivedIntangibleAssetsLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FiniteLivedIntangibleAssetsLineItems", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetIdentifiableIntangibleAssetsNetDetails" ], "lang": { "en-us": { "role": { "label": "Finite-Lived Intangible Assets [Line Items]", "terseLabel": "Identifiable Intangible Assets, Net", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [ "r489" ] }, "us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FiniteLivedIntangibleAssetsMajorClassNameDomain", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails", "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetIdentifiableIntangibleAssetsNetDetails" ], "lang": { "en-us": { "role": { "label": "Finite-Lived Intangible Assets, Major Class Name [Domain]", "documentation": "The major class of finite-lived intangible asset (for example, patents, trademarks, copyrights, etc.) A major class is composed of intangible assets that can be grouped together because they are similar, either by their nature or by their use in the operations of a company." } } }, "auth_ref": [ "r46", "r48" ] }, "us-gaap_FiniteLivedIntangibleAssetsNet": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FiniteLivedIntangibleAssetsNet", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetIdentifiableIntangibleAssetsNetDetails": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetIdentifiableIntangibleAssetsNetDetails" ], "lang": { "en-us": { "role": { "label": "Finite-Lived Intangible Assets, Net", "totalLabel": "Total", "documentation": "Amount after amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life." } } }, "auth_ref": [ "r104", "r489" ] }, "ecd_ForgoneRecoveryDueToDisqualificationOfTaxBenefitsAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "ForgoneRecoveryDueToDisqualificationOfTaxBenefitsAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "label": "Forgone Recovery due to Disqualification of Tax Benefits, Amount", "terseLabel": "Forgone Recovery due to Disqualification of Tax Benefits, Amount" } } }, "auth_ref": [ "r659", "r670", "r680", "r705" ] }, "ecd_ForgoneRecoveryDueToExpenseOfEnforcementAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "ForgoneRecoveryDueToExpenseOfEnforcementAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "label": "Forgone Recovery due to Expense of Enforcement, Amount", "terseLabel": "Forgone Recovery due to Expense of Enforcement, Amount" } } }, "auth_ref": [ "r659", "r670", "r680", "r705" ] }, "ecd_ForgoneRecoveryDueToViolationOfHomeCountryLawAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "ForgoneRecoveryDueToViolationOfHomeCountryLawAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "label": "Forgone Recovery due to Violation of Home Country Law, Amount", "terseLabel": "Forgone Recovery due to Violation of Home Country Law, Amount" } } }, "auth_ref": [ "r659", "r670", "r680", "r705" ] }, "ecd_ForgoneRecoveryExplanationOfImpracticabilityTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "ForgoneRecoveryExplanationOfImpracticabilityTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "label": "Forgone Recovery, Explanation of Impracticability [Text Block]", "terseLabel": "Forgone Recovery, Explanation of Impracticability" } } }, "auth_ref": [ "r659", "r670", "r680", "r705" ] }, "ecd_ForgoneRecoveryIndName": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "ForgoneRecoveryIndName", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "label": "Forgone Recovery, Individual Name", "terseLabel": "Name" } } }, "auth_ref": [ "r659", "r670", "r680", "r705" ] }, "us-gaap_GainLossOnDispositionOfAssets": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "GainLossOnDispositionOfAssets", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations": { "parentTag": "us-gaap_OperatingIncomeLoss", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations" ], "lang": { "en-us": { "role": { "label": "Gain (Loss) on Disposition of Property Plant Equipment, Excluding Oil and Gas Property and Timber Property", "negatedLabel": "GAIN ON SALE OF ASSETS", "documentation": "Amount of gain (loss) on sale or disposal of property, plant and equipment assets, excluding oil and gas property and timber property." } } }, "auth_ref": [ "r730", "r750", "r751" ] }, "us-gaap_GainLossOnSaleOfPropertyPlantEquipment": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "GainLossOnSaleOfPropertyPlantEquipment", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": -1.0, "order": 11.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Gain (Loss) on Disposition of Property Plant Equipment", "negatedTerseLabel": "Gain on sale of assets", "documentation": "Amount of gain (loss) on sale or disposal of property, plant and equipment assets, including oil and gas property and timber property." } } }, "auth_ref": [ "r9" ] }, "us-gaap_GainLossRelatedToLitigationSettlement": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "GainLossRelatedToLitigationSettlement", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureCommitmentsAndContingenciesDetails" ], "lang": { "en-us": { "role": { "label": "Gain (Loss) Related to Litigation Settlement", "terseLabel": "Gain (loss) related to settlement agreements", "documentation": "Amount of gain (loss) recognized in settlement of litigation and insurance claims. Excludes claims within an insurance entity's normal claims settlement process." } } }, "auth_ref": [ "r754" ] }, "us-gaap_Goodwill": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "Goodwill", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_Assets", "weight": 1.0, "order": 4.0 }, "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails": { "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet", "weight": 1.0, "order": 11.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails", "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetChangesInCarryingAmountOfGoodwillDetails", "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Goodwill", "periodEndLabel": "Balance at end of period", "periodStartLabel": "Balance at beginning of year", "terseLabel": "GOODWILL", "documentation": "Amount after accumulated impairment loss of an asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized." } } }, "auth_ref": [ "r141", "r261", "r491", "r609", "r633", "r740", "r747" ] }, "us-gaap_GoodwillAcquiredDuringPeriod": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "GoodwillAcquiredDuringPeriod", "crdr": "debit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetChangesInCarryingAmountOfGoodwillDetails" ], "lang": { "en-us": { "role": { "label": "Goodwill, Acquired During Period", "terseLabel": "Acquisitions and purchase price adjustments (See Note 5)", "documentation": "Amount of increase in asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized resulting from a business combination." } } }, "auth_ref": [ "r264", "r609" ] }, "us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "GoodwillAndIntangibleAssetsDisclosureAbstract", "lang": { "en-us": { "role": { "label": "Goodwill and Identifiable Intangible Assets, Net" } } }, "auth_ref": [] }, "us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "GoodwillAndIntangibleAssetsDisclosureTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNet" ], "lang": { "en-us": { "role": { "label": "Goodwill and Intangible Assets Disclosure [Text Block]", "terseLabel": "Goodwill and Identifiable Intangible Assets, Net", "documentation": "The entire disclosure for goodwill and intangible assets." } } }, "auth_ref": [ "r102" ] }, "us-gaap_GoodwillLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "GoodwillLineItems", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetChangesInCarryingAmountOfGoodwillDetails" ], "lang": { "en-us": { "role": { "label": "Goodwill [Line Items]", "terseLabel": "Goodwill", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [ "r262", "r263", "r264", "r265", "r266", "r267", "r268", "r269", "r270", "r271", "r272", "r609" ] }, "us-gaap_GoodwillRollForward": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "GoodwillRollForward", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetChangesInCarryingAmountOfGoodwillDetails" ], "lang": { "en-us": { "role": { "label": "Goodwill [Roll Forward]", "terseLabel": "Changes in the carrying amount of goodwill", "documentation": "A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period." } } }, "auth_ref": [] }, "fix_GovernmentCustomerMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "GovernmentCustomerMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersDisaggregationOfRevenueDetails" ], "lang": { "en-us": { "role": { "documentation": "Organization that is the governing authority of a community.", "label": "Government" } } }, "auth_ref": [] }, "us-gaap_GrossProfit": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "GrossProfit", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations": { "parentTag": "us-gaap_OperatingIncomeLoss", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureSegmentInformationDetails", "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations" ], "lang": { "en-us": { "role": { "label": "Gross Profit", "totalLabel": "Gross profit", "verboseLabel": "Gross Profit", "documentation": "Aggregate revenue less cost of goods and services sold or operating expenses directly attributable to the revenue generation activity." } } }, "auth_ref": [ "r88", "r166", "r206", "r220", "r226", "r229", "r239", "r290", "r291", "r293", "r294", "r295", "r297", "r299", "r301", "r302", "r457", "r607", "r759" ] }, "fix_GrossProfitMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "GrossProfitMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureCommitmentsAndContingenciesDetails" ], "lang": { "en-us": { "role": { "documentation": "Primary financial statement caption encompassing gross profit.", "label": "Gross Profit." } } }, "auth_ref": [] }, "fix_HealthcareSectorCustomerMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "HealthcareSectorCustomerMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersDisaggregationOfRevenueDetails" ], "lang": { "en-us": { "role": { "documentation": "Sector of the economy consisting of companies engaged in healthcare-related business activities.", "label": "Healthcare" } } }, "auth_ref": [] }, "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations": { "parentTag": "us-gaap_NetIncomeLoss", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations" ], "lang": { "en-us": { "role": { "label": "Income (Loss) from Continuing Operations before Income Taxes, Noncontrolling Interest", "totalLabel": "INCOME BEFORE INCOME TAXES", "documentation": "Amount of income (loss) from continuing operations, including income (loss) from equity method investments, before deduction of income tax expense (benefit), and income (loss) attributable to noncontrolling interest." } } }, "auth_ref": [ "r0", "r85", "r119", "r206", "r220", "r226", "r229", "r493", "r504", "r607" ] }, "us-gaap_IncomeStatementAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncomeStatementAbstract", "lang": { "en-us": { "role": { "label": "CONSOLIDATED STATEMENTS OF OPERATIONS" } } }, "auth_ref": [] }, "us-gaap_IncomeStatementLocationAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncomeStatementLocationAxis", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureCommitmentsAndContingenciesDetails" ], "lang": { "en-us": { "role": { "label": "Income Statement Location [Axis]", "documentation": "Information by location in the income statement." } } }, "auth_ref": [ "r277", "r279", "r571" ] }, "us-gaap_IncomeStatementLocationDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncomeStatementLocationDomain", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureCommitmentsAndContingenciesDetails" ], "lang": { "en-us": { "role": { "label": "Income Statement Location [Domain]", "documentation": "Location in the income statement." } } }, "auth_ref": [ "r279", "r571" ] }, "us-gaap_IncomeTaxExpenseBenefit": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncomeTaxExpenseBenefit", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations": { "parentTag": "us-gaap_NetIncomeLoss", "weight": -1.0, "order": 2.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations" ], "lang": { "en-us": { "role": { "label": "Income Tax Expense (Benefit)", "verboseLabel": "PROVISION FOR INCOME TAXES", "documentation": "Amount of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations." } } }, "auth_ref": [ "r122", "r132", "r179", "r180", "r214", "r413", "r420", "r508" ] }, "us-gaap_IncomeTaxPolicyTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncomeTaxPolicyTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureSummaryOfSignificantAccountingPoliciesAndEstimatesPolicies" ], "lang": { "en-us": { "role": { "label": "Income Tax, Policy [Policy Text Block]", "terseLabel": "Income Taxes", "documentation": "Disclosure of accounting policy for income taxes, which may include its accounting policies for recognizing and measuring deferred tax assets and liabilities and related valuation allowances, recognizing investment tax credits, operating loss carryforwards, tax credit carryforwards, and other carryforwards, methodologies for determining its effective income tax rate and the characterization of interest and penalties in the financial statements." } } }, "auth_ref": [ "r152", "r409", "r410", "r414", "r415", "r416", "r417", "r533" ] }, "us-gaap_IncreaseDecreaseInAccountsPayableAndAccruedLiabilities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncreaseDecreaseInAccountsPayableAndAccruedLiabilities", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Increase (Decrease) in Accounts Payable and Accrued Liabilities", "terseLabel": "Accounts payable and accrued liabilities", "documentation": "The increase (decrease) during the reporting period in the amounts payable to vendors for goods and services received and the amount of obligations and expenses incurred but not paid." } } }, "auth_ref": [ "r8" ] }, "us-gaap_IncreaseDecreaseInAccountsReceivable": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncreaseDecreaseInAccountsReceivable", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": -1.0, "order": 8.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Increase (Decrease) in Accounts Receivable", "negatedLabel": "Receivables, net", "documentation": "The increase (decrease) during the reporting period in amount due within one year (or one business cycle) from customers for the credit sale of goods and services." } } }, "auth_ref": [ "r8" ] }, "us-gaap_IncreaseDecreaseInContractWithCustomerAsset": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncreaseDecreaseInContractWithCustomerAsset", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": -1.0, "order": 5.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Increase Decrease in Contract with Customer Assets", "negatedLabel": "Costs and estimated earnings in excess of billings and unbilled accounts receivable", "documentation": "Amount of increase (decrease) in right to consideration in exchange for good or service transferred to customer when right is conditioned on something other than passage of time." } } }, "auth_ref": [ "r729" ] }, "us-gaap_IncreaseDecreaseInContractWithCustomerLiability": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncreaseDecreaseInContractWithCustomerLiability", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Increase Decrease in Contract with Customer Liability", "terseLabel": "Billings in excess of costs and estimated earnings and deferred revenue", "documentation": "Amount of increase (decrease) in obligation to transfer good or service to customer for which consideration has been received or is receivable." } } }, "auth_ref": [ "r486", "r729" ] }, "us-gaap_IncreaseDecreaseInIncomeTaxesReceivable": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncreaseDecreaseInIncomeTaxesReceivable", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureSummaryOfSignificantAccountingPoliciesAndEstimatesIncomeTaxesDetails" ], "lang": { "en-us": { "role": { "label": "Increase (Decrease) in Income Taxes Receivable", "terseLabel": "Refund claim for overpayment", "documentation": "The increase (decrease) during the reporting period in income taxes receivable, which represents the amount due from tax authorities for refunds of overpayments or recoveries of income taxes paid." } } }, "auth_ref": [ "r8" ] }, "us-gaap_IncreaseDecreaseInInventories": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncreaseDecreaseInInventories", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": -1.0, "order": 7.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Increase (Decrease) in Inventories", "negatedLabel": "Inventories", "documentation": "The increase (decrease) during the reporting period in the aggregate value of all inventory held by the reporting entity, associated with underlying transactions that are classified as operating activities." } } }, "auth_ref": [ "r8" ] }, "us-gaap_IncreaseDecreaseInOperatingAssetsAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncreaseDecreaseInOperatingAssetsAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Increase (Decrease) in Operating Assets [Abstract]", "terseLabel": "(Increase) decrease in-" } } }, "auth_ref": [] }, "us-gaap_IncreaseDecreaseInOperatingCapitalAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncreaseDecreaseInOperatingCapitalAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Increase (Decrease) in Operating Capital [Abstract]", "terseLabel": "Changes in operating assets and liabilities, net of effects of acquisitions and divestitures-" } } }, "auth_ref": [] }, "us-gaap_IncreaseDecreaseInOperatingLiabilitiesAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncreaseDecreaseInOperatingLiabilitiesAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Increase (Decrease) in Operating Liabilities [Abstract]", "terseLabel": "Increase (decrease) in-" } } }, "auth_ref": [] }, "us-gaap_IncreaseDecreaseInOtherOperatingAssets": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncreaseDecreaseInOtherOperatingAssets", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": -1.0, "order": 4.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Increase (Decrease) in Other Operating Assets", "negatedLabel": "Other noncurrent assets", "documentation": "Amount of increase (decrease) in operating assets classified as other." } } }, "auth_ref": [ "r8" ] }, "us-gaap_IncreaseDecreaseInOtherOperatingLiabilities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncreaseDecreaseInOtherOperatingLiabilities", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Increase (Decrease) in Other Operating Liabilities", "terseLabel": "Other long-term liabilities", "documentation": "Amount of increase (decrease) in operating liabilities classified as other." } } }, "auth_ref": [ "r8" ] }, "us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": -1.0, "order": 6.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Increase (Decrease) in Prepaid Expense and Other Assets", "negatedLabel": "Prepaid expenses and other current assets", "documentation": "Amount of increase (decrease) in prepaid expenses, and assets classified as other." } } }, "auth_ref": [ "r8" ] }, "us-gaap_IncreaseDecreaseInStockholdersEquityRollForward": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncreaseDecreaseInStockholdersEquityRollForward", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquity" ], "lang": { "en-us": { "role": { "label": "Increase (Decrease) in Stockholders' Equity [Roll Forward]", "terseLabel": "Increase (Decrease) in Stockholders' Equity", "documentation": "A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period." } } }, "auth_ref": [] }, "us-gaap_IncrementalCommonSharesAttributableToContingentlyIssuableShares": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncrementalCommonSharesAttributableToContingentlyIssuableShares", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityNumberOfSharesDetails": { "parentTag": "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityNumberOfSharesDetails" ], "lang": { "en-us": { "role": { "label": "Incremental Common Shares Attributable to Dilutive Effect of Contingently Issuable Shares", "terseLabel": "Effect of restricted and contingently issuable shares", "documentation": "Additional shares included in the calculation of diluted EPS as a result of the potentially dilutive effect of contingently issuable shares. Contingently issuable shares are those shares that are issuable for little or no cash contingent on certain conditions being met." } } }, "auth_ref": [ "r185", "r186", "r188", "r189", "r190", "r191", "r192", "r193", "r194", "r198" ] }, "us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncrementalCommonSharesAttributableToShareBasedPaymentArrangements", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityNumberOfSharesDetails": { "parentTag": "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityNumberOfSharesDetails" ], "lang": { "en-us": { "role": { "label": "Incremental Common Shares Attributable to Dilutive Effect of Share-based Payment Arrangements", "terseLabel": "Effect of shares issuable under stock option plans based on the treasury stock method", "documentation": "Additional shares included in the calculation of diluted EPS as a result of the potentially dilutive effect of share based payment arrangements using the treasury stock method." } } }, "auth_ref": [ "r184", "r185", "r187", "r198", "r379" ] }, "ecd_IndividualAxis": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "IndividualAxis", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure", "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure", "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements", "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Individual [Axis]", "terseLabel": "Individual:" } } }, "auth_ref": [ "r662", "r670", "r680", "r697", "r705", "r709", "r717" ] }, "ecd_InsiderTradingArrLineItems": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "InsiderTradingArrLineItems", "lang": { "en-us": { "role": { "label": "Insider Trading Arrangements [Line Items]", "terseLabel": "Insider Trading Arrangements:" } } }, "auth_ref": [ "r715" ] }, "ecd_InsiderTradingPoliciesProcLineItems": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "InsiderTradingPoliciesProcLineItems", "lang": { "en-us": { "role": { "label": "Insider Trading Policies and Procedures [Line Items]", "terseLabel": "Insider Trading Policies and Procedures:" } } }, "auth_ref": [ "r651", "r721" ] }, "ecd_InsiderTrdPoliciesProcAdoptedFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "InsiderTrdPoliciesProcAdoptedFlag", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingPoliciesProc" ], "lang": { "en-us": { "role": { "label": "Insider Trading Policies and Procedures Adopted [Flag]", "terseLabel": "Insider Trading Policies and Procedures Adopted" } } }, "auth_ref": [ "r651", "r721" ] }, "ecd_InsiderTrdPoliciesProcNotAdoptedTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "InsiderTrdPoliciesProcNotAdoptedTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingPoliciesProc" ], "lang": { "en-us": { "role": { "label": "Insider Trading Policies and Procedures Not Adopted [Text Block]", "terseLabel": "Insider Trading Policies and Procedures Not Adopted" } } }, "auth_ref": [ "r651", "r721" ] }, "us-gaap_IntangibleAssetsNetExcludingGoodwill": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IntangibleAssetsNetExcludingGoodwill", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_Assets", "weight": 1.0, "order": 5.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Intangible Assets, Net (Excluding Goodwill)", "terseLabel": "IDENTIFIABLE INTANGIBLE ASSETS, NET", "documentation": "Sum of the carrying amounts of all intangible assets, excluding goodwill, as of the balance sheet date, net of accumulated amortization and impairment charges." } } }, "auth_ref": [ "r44", "r47" ] }, "us-gaap_InterestExpense": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "InterestExpense", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations": { "parentTag": "us-gaap_NonoperatingIncomeExpense", "weight": -1.0, "order": 2.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations" ], "lang": { "en-us": { "role": { "label": "Interest Expense", "negatedLabel": "Interest expense", "documentation": "Amount of the cost of borrowed funds accounted for as interest expense." } } }, "auth_ref": [ "r72", "r121", "r156", "r210", "r464", "r572", "r644", "r812" ] }, "us-gaap_InterestIncomeMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "InterestIncomeMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureCommitmentsAndContingenciesDetails" ], "lang": { "en-us": { "role": { "label": "Interest Income", "documentation": "Primary financial statement caption in which reported facts about interest income have been included." } } }, "auth_ref": [] }, "us-gaap_InventoryNet": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "InventoryNet", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_AssetsCurrent", "weight": 1.0, "order": 5.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Inventory, Net", "terseLabel": "Inventories", "documentation": "Amount after valuation and LIFO reserves of inventory expected to be sold, or consumed within one year or operating cycle, if longer." } } }, "auth_ref": [ "r148", "r604", "r633" ] }, "us-gaap_InvestmentIncomeInterest": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "InvestmentIncomeInterest", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations": { "parentTag": "us-gaap_NonoperatingIncomeExpense", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations" ], "lang": { "en-us": { "role": { "label": "Investment Income, Interest", "terseLabel": "Interest income", "documentation": "Amount before accretion (amortization) of purchase discount (premium) of interest income on nonoperating securities." } } }, "auth_ref": [ "r91", "r209" ] }, "fix_JSMechanicalContractorsIncMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "JSMechanicalContractorsIncMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails", "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails", "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsTables" ], "lang": { "en-us": { "role": { "documentation": "Represents information relating to J&S Mechanical Contractors, Inc in West Jordan, Utah.", "label": "J&S Mechanical Contractors, Inc [Member]", "terseLabel": "J&S West Jordan" } } }, "auth_ref": [] }, "us-gaap_LeasesAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LeasesAbstract", "lang": { "en-us": { "role": { "label": "Leases" } } }, "auth_ref": [] }, "us-gaap_LesseeLeaseDescriptionLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LesseeLeaseDescriptionLineItems", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesDetails" ], "lang": { "en-us": { "role": { "label": "Lessee, Lease, Description [Line Items]", "terseLabel": "Leases", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [ "r473" ] }, "us-gaap_LesseeLeaseDescriptionTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LesseeLeaseDescriptionTable", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesDetails" ], "lang": { "en-us": { "role": { "label": "Lessee, Lease, Description [Table]", "documentation": "Disclosure of information about lessee's leases." } } }, "auth_ref": [ "r473" ] }, "us-gaap_LesseeLeasesPolicyTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LesseeLeasesPolicyTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureSummaryOfSignificantAccountingPoliciesAndEstimatesPolicies" ], "lang": { "en-us": { "role": { "label": "Lessee, Leases [Policy Text Block]", "terseLabel": "Leases", "documentation": "Disclosure of accounting policy for leasing arrangement entered into by lessee." } } }, "auth_ref": [ "r472" ] }, "us-gaap_LesseeOperatingLeaseExistenceOfOptionToExtend": { "xbrltype": "booleanItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LesseeOperatingLeaseExistenceOfOptionToExtend", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesDetails" ], "lang": { "en-us": { "role": { "label": "Lessee, Operating Lease, Existence of Option to Extend [true false]", "terseLabel": "Existence of option to extend", "documentation": "Indicates (true false) whether lessee has option to extend operating lease." } } }, "auth_ref": [ "r474" ] }, "us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LesseeOperatingLeaseLiabilityMaturityTableTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesTables" ], "lang": { "en-us": { "role": { "label": "Lessee, Operating Lease, Liability, Maturity [Table Text Block]", "terseLabel": "Schedule of maturities of lease liabilities", "documentation": "Tabular disclosure of undiscounted cash flows of lessee's operating lease liability. Includes, but is not limited to, reconciliation of undiscounted cash flows to operating lease liability recognized in statement of financial position." } } }, "auth_ref": [ "r795" ] }, "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LesseeOperatingLeaseLiabilityPaymentsDue", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureLeasesMaturitiesOfLeaseLiabilitiesDetails": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesMaturitiesOfLeaseLiabilitiesDetails" ], "lang": { "en-us": { "role": { "label": "Lessee, Operating Lease, Liability, Payments, Due", "totalLabel": "Total Lease Payments", "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease." } } }, "auth_ref": [ "r479" ] }, "fix_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFour": { "xbrltype": "monetaryItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFour", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureLeasesMaturitiesOfLeaseLiabilitiesDetails": { "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesMaturitiesOfLeaseLiabilitiesDetails" ], "lang": { "en-us": { "role": { "documentation": "Amount of lessee's undiscounted obligation for lease payments for operating lease, due after fourth fiscal year following latest fiscal year.", "label": "Lessee Operating Lease Liability Payments Due After Year Four", "terseLabel": "Thereafter" } } }, "auth_ref": [] }, "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureLeasesMaturitiesOfLeaseLiabilitiesDetails": { "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesMaturitiesOfLeaseLiabilitiesDetails" ], "lang": { "en-us": { "role": { "label": "Lessee, Operating Lease, Liability, Payments, Due Next Twelve Months", "terseLabel": "2025", "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in next fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [ "r479" ] }, "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearFour", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureLeasesMaturitiesOfLeaseLiabilitiesDetails": { "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesMaturitiesOfLeaseLiabilitiesDetails" ], "lang": { "en-us": { "role": { "label": "Lessee, Operating Lease, Liability, Payments, Due Year Four", "terseLabel": "2028", "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [ "r479" ] }, "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearThree", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureLeasesMaturitiesOfLeaseLiabilitiesDetails": { "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue", "weight": 1.0, "order": 5.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesMaturitiesOfLeaseLiabilitiesDetails" ], "lang": { "en-us": { "role": { "label": "Lessee, Operating Lease, Liability, Payments, Due Year Three", "terseLabel": "2027", "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [ "r479" ] }, "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearTwo", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureLeasesMaturitiesOfLeaseLiabilitiesDetails": { "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue", "weight": 1.0, "order": 6.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesMaturitiesOfLeaseLiabilitiesDetails" ], "lang": { "en-us": { "role": { "label": "Lessee, Operating Lease, Liability, Payments, Due Year Two", "terseLabel": "2026", "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in second fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [ "r479" ] }, "us-gaap_LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureLeasesMaturitiesOfLeaseLiabilitiesDetails": { "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesMaturitiesOfLeaseLiabilitiesDetails" ], "lang": { "en-us": { "role": { "label": "Lessee, Operating Lease, Liability, Payments, Remainder of Fiscal Year", "terseLabel": "2024 (excluding the three months ended March 31, 2024)", "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease having initial or remaining lease term in excess of one year to be paid in remainder of current fiscal year." } } }, "auth_ref": [ "r795" ] }, "us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LesseeOperatingLeaseLiabilityUndiscountedExcessAmount", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesMaturitiesOfLeaseLiabilitiesDetails" ], "lang": { "en-us": { "role": { "label": "Lessee, Operating Lease, Liability, Undiscounted Excess Amount", "negatedLabel": "Less-Present Value Discount", "documentation": "Amount of lessee's undiscounted obligation for lease payments in excess of discounted obligation for lease payments for operating lease." } } }, "auth_ref": [ "r479" ] }, "us-gaap_LesseeOperatingLeaseTermOfContract": { "xbrltype": "durationItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LesseeOperatingLeaseTermOfContract", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesDetails" ], "lang": { "en-us": { "role": { "label": "Lessee, Operating Lease, Term of Contract", "verboseLabel": "Lease term for operating lease", "documentation": "Term of lessee's operating lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days." } } }, "auth_ref": [ "r794" ] }, "us-gaap_LesseeOperatingLeasesTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LesseeOperatingLeasesTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeases" ], "lang": { "en-us": { "role": { "label": "Lessee, Operating Leases [Text Block]", "terseLabel": "Leases", "documentation": "The entire disclosure for operating leases of lessee. Includes, but is not limited to, description of operating lease and maturity analysis of operating lease liability." } } }, "auth_ref": [ "r467" ] }, "fix_LetterOfCreditFeesPercentage": { "xbrltype": "percentItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "LetterOfCreditFeesPercentage", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "documentation": "Represents the fees for the letter of credit facility, expressed as a percent based on the ratio of consolidated total indebtedness to credit facility adjusted EBITDA, as defined in the credit agreement.", "label": "Letter of Credit Fees Percentage", "terseLabel": "Letter of credit fees (as a percent)" } } }, "auth_ref": [] }, "us-gaap_LetterOfCreditMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LetterOfCreditMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "label": "Letter of Credit", "documentation": "A document typically issued by a financial institution which acts as a guarantee of payment to a beneficiary, or as the source of payment for a specific transaction (for example, wiring funds to a foreign exporter if and when specified merchandise is accepted pursuant to the terms of the letter of credit)." } } }, "auth_ref": [] }, "us-gaap_LettersOfCreditOutstandingAmount": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LettersOfCreditOutstandingAmount", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "label": "Letters of Credit Outstanding, Amount", "terseLabel": "Letters of credit amount outstanding", "documentation": "The total amount of the contingent obligation under letters of credit outstanding as of the reporting date." } } }, "auth_ref": [] }, "us-gaap_Liabilities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "Liabilities", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Liabilities", "totalLabel": "Total liabilities", "documentation": "Sum of the carrying amounts as of the balance sheet date of all liabilities that are recognized. Liabilities are probable future sacrifices of economic benefits arising from present obligations of an entity to transfer assets or provide services to other entities in the future." } } }, "auth_ref": [ "r22", "r166", "r239", "r290", "r291", "r293", "r294", "r295", "r297", "r299", "r301", "r302", "r431", "r434", "r435", "r457", "r546", "r606", "r646", "r759", "r796", "r797" ] }, "us-gaap_LiabilitiesAndStockholdersEquity": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LiabilitiesAndStockholdersEquity", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Liabilities and Equity", "totalLabel": "Total liabilities and stockholders' equity", "documentation": "Amount of liabilities and equity items, including the portion of equity attributable to noncontrolling interests, if any." } } }, "auth_ref": [ "r84", "r118", "r502", "r633", "r732", "r738", "r792" ] }, "us-gaap_LiabilitiesAndStockholdersEquityAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LiabilitiesAndStockholdersEquityAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Liabilities and Equity [Abstract]", "terseLabel": "LIABILITIES AND STOCKHOLDERS' EQUITY" } } }, "auth_ref": [] }, "us-gaap_LiabilitiesCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LiabilitiesCurrent", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_Liabilities", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Liabilities, Current", "totalLabel": "Total current liabilities", "documentation": "Total obligations incurred as part of normal operations that are expected to be paid during the following twelve months or within one business cycle, if longer." } } }, "auth_ref": [ "r24", "r139", "r166", "r239", "r290", "r291", "r293", "r294", "r295", "r297", "r299", "r301", "r302", "r431", "r434", "r435", "r457", "r633", "r759", "r796", "r797" ] }, "us-gaap_LiabilitiesCurrentAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LiabilitiesCurrentAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Liabilities, Current [Abstract]", "terseLabel": "CURRENT LIABILITIES:" } } }, "auth_ref": [] }, "fix_LifeInsuranceContractsFaceAmount": { "xbrltype": "monetaryItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "LifeInsuranceContractsFaceAmount", "crdr": "debit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "documentation": "Represents the face amount of life insurance policies taken by the entity for their employees.", "label": "Life Insurance Contracts Face Amount", "terseLabel": "Combined face value of life insurance policies" } } }, "auth_ref": [] }, "fix_LifeInsuranceContractsNumberOfEmployeesCovered": { "xbrltype": "integerItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "LifeInsuranceContractsNumberOfEmployeesCovered", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "documentation": "Represents the number of employees covered under life insurance policy contracts.", "label": "Life Insurance Contracts Number of Employees Covered", "terseLabel": "Number of employees covered under life insurance policies" } } }, "auth_ref": [] }, "us-gaap_LineOfCredit": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LineOfCredit", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "label": "Line of Credit Facility, Amount Outstanding", "terseLabel": "Outstanding borrowings", "documentation": "The carrying value as of the balance sheet date of the current and noncurrent portions of long-term obligations drawn from a line of credit, which is a bank's commitment to make loans up to a specific amount. Examples of items that might be included in the application of this element may consist of letters of credit, standby letters of credit, and revolving credit arrangements, under which borrowings can be made up to a maximum amount as of any point in time conditional on satisfaction of specified terms before, as of and after the date of drawdowns on the line. Includes short-term obligations that would normally be classified as current liabilities but for which (a) postbalance sheet date issuance of a long term obligation to refinance the short term obligation on a long term basis, or (b) the enterprise has entered into a financing agreement that clearly permits the enterprise to refinance the short-term obligation on a long term basis and the following conditions are met (1) the agreement does not expire within 1 year and is not cancelable by the lender except for violation of an objectively determinable provision, (2) no violation exists at the BS date, and (3) the lender has entered into the financing agreement is expected to be financially capable of honoring the agreement." } } }, "auth_ref": [ "r19", "r117", "r804" ] }, "fix_LineOfCreditBorrowingCapacityAccordionOption": { "xbrltype": "monetaryItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "LineOfCreditBorrowingCapacityAccordionOption", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "documentation": "Accordion option on credit facility per terms of the agreement.", "label": "Line of Credit, Borrowing Capacity Accordion Option", "verboseLabel": "Line of credit borrowing capacity accordion option" } } }, "auth_ref": [] }, "us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LineOfCreditFacilityMaximumBorrowingCapacity", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "label": "Line of Credit Facility, Maximum Borrowing Capacity", "terseLabel": "Borrowing capacity", "documentation": "Maximum borrowing capacity under the credit facility without consideration of any current restrictions on the amount that could be borrowed or the amounts currently outstanding under the facility." } } }, "auth_ref": [ "r21" ] }, "us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LineOfCreditFacilityRemainingBorrowingCapacity", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "label": "Line of Credit Facility, Remaining Borrowing Capacity", "terseLabel": "Credit available", "documentation": "Amount of borrowing capacity currently available under the credit facility (current borrowing capacity less the amount of borrowings outstanding)." } } }, "auth_ref": [ "r21" ] }, "us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage": { "xbrltype": "percentItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "label": "Line of Credit Facility, Unused Capacity, Commitment Fee Percentage", "terseLabel": "Commitment fees payable on unused portion of the facility (as a percent)", "documentation": "The fee, expressed as a percentage of the line of credit facility, for available but unused credit capacity under the credit facility." } } }, "auth_ref": [] }, "dei_LocalPhoneNumber": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "LocalPhoneNumber", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Local Phone Number", "documentation": "Local phone number for entity." } } }, "auth_ref": [] }, "us-gaap_LongTermDebtAndCapitalLeaseObligations": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LongTermDebtAndCapitalLeaseObligations", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsDetailss": { "parentTag": "us-gaap_LongTermDebtAndCapitalLeaseObligationsIncludingCurrentMaturities", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsDetails" ], "lang": { "en-us": { "role": { "label": "Long-Term Debt and Lease Obligation", "terseLabel": "Total long-term portion of debt", "documentation": "Amount of long-term debt and lease obligation, classified as noncurrent." } } }, "auth_ref": [ "r19", "r497" ] }, "us-gaap_LongTermDebtAndCapitalLeaseObligationsCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LongTermDebtAndCapitalLeaseObligationsCurrent", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsDetailss": { "parentTag": "us-gaap_LongTermDebtAndCapitalLeaseObligationsIncludingCurrentMaturities", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsDetails" ], "lang": { "en-us": { "role": { "label": "Long-Term Debt and Lease Obligation, Current", "negatedLabel": "Less-current portion", "documentation": "Amount of long-term debt and lease obligation, classified as current." } } }, "auth_ref": [ "r23" ] }, "us-gaap_LongTermDebtAndCapitalLeaseObligationsIncludingCurrentMaturities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LongTermDebtAndCapitalLeaseObligationsIncludingCurrentMaturities", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsDetailss": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsDetails" ], "lang": { "en-us": { "role": { "label": "Long-Term Debt and Lease Obligation, Including Current Maturities", "totalLabel": "Total debt", "documentation": "Amount of long-term debt and lease obligation, including portion classified as current." } } }, "auth_ref": [] }, "us-gaap_LongTermDebtByMaturityAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LongTermDebtByMaturityAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsNotesToFormerOwnersDetails" ], "lang": { "en-us": { "role": { "label": "Long-term Debt, Fiscal Year Maturity [Abstract]", "terseLabel": "Future principal payments of long-term debt" } } }, "auth_ref": [] }, "us-gaap_LongTermDebtCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LongTermDebtCurrent", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_LiabilitiesCurrent", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Long-Term Debt, Current Maturities", "terseLabel": "Current maturities of long-term debt", "documentation": "Amount, after deduction of unamortized premium (discount) and debt issuance cost, of long-term debt classified as current. Excludes lease obligation." } } }, "auth_ref": [ "r144" ] }, "us-gaap_LongTermDebtNoncurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LongTermDebtNoncurrent", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_Liabilities", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Long-term Debt, Excluding Current Maturities", "terseLabel": "LONG-TERM DEBT", "documentation": "Amount, after deduction of unamortized premium (discount) and debt issuance cost, of long-term debt classified as noncurrent. Excludes lease obligation." } } }, "auth_ref": [ "r145" ] }, "us-gaap_LongTermDebtOtherDisclosuresAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LongTermDebtOtherDisclosuresAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "label": "Long-term Debt, Other Disclosures [Abstract]", "terseLabel": "Other disclosures" } } }, "auth_ref": [] }, "us-gaap_LossContingenciesByNatureOfContingencyAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LossContingenciesByNatureOfContingencyAxis", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureCommitmentsAndContingenciesDetails" ], "lang": { "en-us": { "role": { "label": "Loss Contingency Nature [Axis]", "documentation": "Information by type of existing condition, situation, or set of circumstances involving uncertainty as to possible loss to an enterprise that will ultimately be resolved when one or more future events occur or fail to occur." } } }, "auth_ref": [ "r284", "r285", "r286", "r289", "r755", "r756" ] }, "us-gaap_LossContingenciesLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LossContingenciesLineItems", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureCommitmentsAndContingenciesDetails" ], "lang": { "en-us": { "role": { "label": "Loss Contingencies [Line Items]", "terseLabel": "Commitments and Contingencies", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [ "r284", "r285", "r286", "r289", "r755", "r756" ] }, "us-gaap_LossContingenciesTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LossContingenciesTable", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureCommitmentsAndContingenciesDetails" ], "lang": { "en-us": { "role": { "label": "Loss Contingencies [Table]", "documentation": "Discloses the specific components (such as the nature, name, and date) of the loss contingency and gives an estimate of the possible loss or range of loss, or states that a reasonable estimate cannot be made. Excludes environmental contingencies, warranties and unconditional purchase obligations." } } }, "auth_ref": [ "r284", "r285", "r286", "r289", "r755", "r756" ] }, "us-gaap_LossContingencyNatureDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LossContingencyNatureDomain", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureCommitmentsAndContingenciesDetails" ], "lang": { "en-us": { "role": { "label": "Loss Contingency, Nature [Domain]", "documentation": "An existing condition, situation, or set of circumstances involving uncertainty as to possible loss to an enterprise that will ultimately be resolved when one or more future events occur or fail to occur. Resolution of the uncertainty may confirm the incurrence of a loss or impairment of an asset or the incurrence of a liability." } } }, "auth_ref": [ "r284", "r285", "r286", "r289", "r755", "r756" ] }, "fix_LossContingencySuretyAbstract": { "xbrltype": "stringItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "LossContingencySuretyAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureCommitmentsAndContingenciesDetails" ], "lang": { "en-us": { "role": { "label": "Loss Contingency Surety [Abstract]", "terseLabel": "Surety" } } }, "auth_ref": [] }, "srt_MajorCustomersAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/srt/2023", "localname": "MajorCustomersAxis", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersDisaggregationOfRevenueDetails" ], "lang": { "en-us": { "role": { "label": "Customer [Axis]" } } }, "auth_ref": [ "r234", "r619", "r763", "r805", "r809" ] }, "fix_ManufacturingCustomerMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "ManufacturingCustomerMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersDisaggregationOfRevenueDetails" ], "lang": { "en-us": { "role": { "documentation": "This members stands for manufacturing.", "label": "Manufacturing" } } }, "auth_ref": [] }, "fix_MaturityYearFiveMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "MaturityYearFiveMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsNotesToFormerOwnersDetails" ], "lang": { "en-us": { "role": { "documentation": "Represents maturity year five.", "label": "Maturity Year Five [Member]", "terseLabel": "2028" } } }, "auth_ref": [] }, "fix_MaturityYearFourMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "MaturityYearFourMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsNotesToFormerOwnersDetails" ], "lang": { "en-us": { "role": { "documentation": "Represents maturity year four.", "label": "Maturity Year Four [Member]", "terseLabel": "2027" } } }, "auth_ref": [] }, "fix_MaturityYearOneMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "MaturityYearOneMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsNotesToFormerOwnersDetails" ], "lang": { "en-us": { "role": { "documentation": "Represents maturity year one.", "label": "Maturity Year One [Member]", "terseLabel": "2024" } } }, "auth_ref": [] }, "fix_MaturityYearThreeMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "MaturityYearThreeMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsNotesToFormerOwnersDetails" ], "lang": { "en-us": { "role": { "documentation": "Represents maturity year three.", "label": "Maturity Year Three [Member]", "terseLabel": "2026" } } }, "auth_ref": [] }, "fix_MaturityYearTwoMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "MaturityYearTwoMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsNotesToFormerOwnersDetails" ], "lang": { "en-us": { "role": { "documentation": "Represents maturity year two.", "label": "Maturity Year Two [Member]", "terseLabel": "2025" } } }, "auth_ref": [] }, "srt_MaximumMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/srt/2023", "localname": "MaximumMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails", "http://www.comfortsystemsusa.com/role/DisclosureCommitmentsAndContingenciesDetails", "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsNotesToFormerOwnersDetails", "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails", "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails", "http://www.comfortsystemsusa.com/role/DisclosureLeasesDetails", "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersRemainingPerformanceObligationsDetails", "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityIncentiveAndOtherDetails" ], "lang": { "en-us": { "role": { "label": "Maximum" } } }, "auth_ref": [ "r285", "r286", "r287", "r288", "r375", "r485", "r526", "r538", "r539", "r592", "r593", "r594", "r595", "r596", "r599", "r600", "r608", "r615", "r629", "r635", "r761", "r798", "r799", "r800", "r801", "r802", "r803" ] }, "ecd_MeasureAxis": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "MeasureAxis", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Measure [Axis]", "terseLabel": "Measure:" } } }, "auth_ref": [ "r689" ] }, "ecd_MeasureName": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "MeasureName", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Measure Name", "terseLabel": "Name" } } }, "auth_ref": [ "r689" ] }, "us-gaap_MeasurementInputInceptionDiscountRateMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "MeasurementInputInceptionDiscountRateMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails" ], "lang": { "en-us": { "role": { "label": "Measurement Input, Inception Discount Rate [Member]", "terseLabel": "Measurement Input, Inception Discount Rate", "documentation": "Measurement input using interest rate at inception of contract to determine present value of future cash flows." } } }, "auth_ref": [ "r791" ] }, "us-gaap_MeasurementInputTypeAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "MeasurementInputTypeAxis", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails" ], "lang": { "en-us": { "role": { "label": "Measurement Input Type [Axis]", "documentation": "Information by type of measurement input used to determine value of asset and liability." } } }, "auth_ref": [ "r449" ] }, "us-gaap_MeasurementInputTypeDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "MeasurementInputTypeDomain", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails" ], "lang": { "en-us": { "role": { "label": "Measurement Input Type [Domain]", "documentation": "Measurement input used to determine value of asset and liability." } } }, "auth_ref": [] }, "fix_MechanicalSegmentMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "MechanicalSegmentMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetChangesInCarryingAmountOfGoodwillDetails", "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersDisaggregationOfRevenueDetails", "http://www.comfortsystemsusa.com/role/DisclosureSegmentInformationDetails" ], "lang": { "en-us": { "role": { "documentation": "Mechanical Segment [Member]", "label": "Mechanical Segment" } } }, "auth_ref": [] }, "srt_MinimumMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/srt/2023", "localname": "MinimumMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails", "http://www.comfortsystemsusa.com/role/DisclosureCommitmentsAndContingenciesDetails", "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsNotesToFormerOwnersDetails", "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails", "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails", "http://www.comfortsystemsusa.com/role/DisclosureLeasesDetails", "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersRemainingPerformanceObligationsDetails" ], "lang": { "en-us": { "role": { "label": "Minimum" } } }, "auth_ref": [ "r285", "r286", "r287", "r288", "r375", "r485", "r526", "r538", "r539", "r592", "r593", "r594", "r595", "r596", "r599", "r600", "r608", "r615", "r629", "r635", "r761", "r798", "r799", "r800", "r801", "r802", "r803" ] }, "ecd_MnpiDiscTimedForCompValFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "MnpiDiscTimedForCompValFlag", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "label": "MNPI Disclosure Timed for Compensation Value [Flag]", "terseLabel": "MNPI Disclosure Timed for Compensation Value" } } }, "auth_ref": [ "r708" ] }, "ecd_MtrlTermsOfTrdArrTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "MtrlTermsOfTrdArrTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "label": "Material Terms of Trading Arrangement [Text Block]", "terseLabel": "Material Terms of Trading Arrangement" } } }, "auth_ref": [ "r716" ] }, "fix_MultiFamilyAndResidentialMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "MultiFamilyAndResidentialMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersDisaggregationOfRevenueDetails" ], "lang": { "en-us": { "role": { "documentation": "This member stands for multi family and residential.", "label": "Multi-Family and Residential" } } }, "auth_ref": [] }, "srt_NameOfMajorCustomerDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/srt/2023", "localname": "NameOfMajorCustomerDomain", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersDisaggregationOfRevenueDetails" ], "lang": { "en-us": { "role": { "label": "Customer [Domain]" } } }, "auth_ref": [ "r234", "r619", "r763", "r805", "r809" ] }, "ecd_NamedExecutiveOfficersFnTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "NamedExecutiveOfficersFnTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Named Executive Officers, Footnote [Text Block]", "terseLabel": "Named Executive Officers, Footnote" } } }, "auth_ref": [ "r690" ] }, "us-gaap_NatureOfOperations": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "NatureOfOperations", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureBusinessAndOrganization" ], "lang": { "en-us": { "role": { "label": "Nature of Operations [Text Block]", "terseLabel": "Business and Organization", "documentation": "The entire disclosure for the nature of an entity's business, major products or services, principal markets including location, and the relative importance of its operations in each business and the basis for the determination, including but not limited to, assets, revenues, or earnings. For an entity that has not commenced principal operations, disclosures about the risks and uncertainties related to the activities in which the entity is currently engaged and an understanding of what those activities are being directed toward." } } }, "auth_ref": [ "r123", "r133" ] }, "us-gaap_NetCashProvidedByUsedInFinancingActivities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "NetCashProvidedByUsedInFinancingActivities", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Net Cash Provided by (Used in) Financing Activities", "totalLabel": "Net cash used in financing activities", "documentation": "Amount of cash inflow (outflow) from financing activities, including discontinued operations. Financing activity cash flows include obtaining resources from owners and providing them with a return on, and a return of, their investment; borrowing money and repaying amounts borrowed, or settling the obligation; and obtaining and paying for other resources obtained from creditors on long-term credit." } } }, "auth_ref": [ "r162" ] }, "us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "NetCashProvidedByUsedInFinancingActivitiesAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Net Cash Provided by (Used in) Financing Activities [Abstract]", "terseLabel": "CASH FLOWS FROM FINANCING ACTIVITIES:" } } }, "auth_ref": [] }, "us-gaap_NetCashProvidedByUsedInInvestingActivities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "NetCashProvidedByUsedInInvestingActivities", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Net Cash Provided by (Used in) Investing Activities", "totalLabel": "Net cash used in investing activities", "documentation": "Amount of cash inflow (outflow) from investing activities, including discontinued operations. Investing activity cash flows include making and collecting loans and acquiring and disposing of debt or equity instruments and property, plant, and equipment and other productive assets." } } }, "auth_ref": [ "r162" ] }, "us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "NetCashProvidedByUsedInInvestingActivitiesAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Net Cash Provided by (Used in) Investing Activities [Abstract]", "terseLabel": "CASH FLOWS FROM INVESTING ACTIVITIES:" } } }, "auth_ref": [] }, "us-gaap_NetCashProvidedByUsedInOperatingActivities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "NetCashProvidedByUsedInOperatingActivities", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Net Cash Provided by (Used in) Operating Activities", "totalLabel": "Net cash provided by operating activities", "documentation": "Amount of cash inflow (outflow) from operating activities, including discontinued operations. Operating activity cash flows include transactions, adjustments, and changes in value not defined as investing or financing activities." } } }, "auth_ref": [ "r97", "r98", "r99" ] }, "us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "NetCashProvidedByUsedInOperatingActivitiesAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Net Cash Provided by (Used in) Operating Activities [Abstract]", "terseLabel": "CASH FLOWS FROM OPERATING ACTIVITIES:" } } }, "auth_ref": [] }, "us-gaap_NetIncomeLoss": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "NetIncomeLoss", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations", "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "totalLabel": "NET INCOME", "label": "Net Income (Loss)", "terseLabel": "Net Income (Loss)", "documentation": "The portion of profit or loss for the period, net of income taxes, which is attributable to the parent." } } }, "auth_ref": [ "r86", "r99", "r120", "r137", "r150", "r151", "r155", "r166", "r171", "r173", "r174", "r175", "r176", "r179", "r180", "r195", "r206", "r220", "r226", "r229", "r239", "r290", "r291", "r293", "r294", "r295", "r297", "r299", "r301", "r302", "r445", "r457", "r506", "r568", "r585", "r586", "r607", "r644", "r759" ] }, "us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "NewAccountingPronouncementsPolicyPolicyTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureSummaryOfSignificantAccountingPoliciesAndEstimatesPolicies" ], "lang": { "en-us": { "role": { "label": "New Accounting Pronouncements, Policy [Policy Text Block]", "terseLabel": "Recent Accounting Pronouncements", "documentation": "Disclosure of accounting policy pertaining to new accounting pronouncements that may impact the entity's financial reporting. Includes, but is not limited to, quantification of the expected or actual impact." } } }, "auth_ref": [] }, "fix_NewConstructionMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "NewConstructionMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersDisaggregationOfRevenueDetails" ], "lang": { "en-us": { "role": { "documentation": "This member stands for new construction.", "label": "New Construction" } } }, "auth_ref": [] }, "ecd_NonGaapMeasureDescriptionTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "NonGaapMeasureDescriptionTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Non-GAAP Measure Description [Text Block]", "terseLabel": "Non-GAAP Measure Description" } } }, "auth_ref": [ "r689" ] }, "ecd_NonNeosMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "NonNeosMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "label": "Non-NEOs [Member]", "terseLabel": "Non-NEOs" } } }, "auth_ref": [ "r659", "r670", "r680", "r697", "r705" ] }, "ecd_NonPeoNeoAvgCompActuallyPaidAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "NonPeoNeoAvgCompActuallyPaidAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Non-PEO NEO Average Compensation Actually Paid Amount", "terseLabel": "Non-PEO NEO Average Compensation Actually Paid Amount" } } }, "auth_ref": [ "r687" ] }, "ecd_NonPeoNeoAvgTotalCompAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "NonPeoNeoAvgTotalCompAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Non-PEO NEO Average Total Compensation Amount", "terseLabel": "Non-PEO NEO Average Total Compensation Amount" } } }, "auth_ref": [ "r686" ] }, "ecd_NonPeoNeoMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "NonPeoNeoMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Non-PEO NEO [Member]", "terseLabel": "Non-PEO NEO" } } }, "auth_ref": [ "r697" ] }, "ecd_NonRule10b51ArrAdoptedFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "NonRule10b51ArrAdoptedFlag", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "label": "Non-Rule 10b5-1 Arrangement Adopted [Flag]", "terseLabel": "Non-Rule 10b5-1 Arrangement Adopted" } } }, "auth_ref": [ "r716" ] }, "ecd_NonRule10b51ArrTrmntdFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "NonRule10b51ArrTrmntdFlag", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "label": "Non-Rule 10b5-1 Arrangement Terminated [Flag]", "terseLabel": "Non-Rule 10b5-1 Arrangement Terminated" } } }, "auth_ref": [ "r716" ] }, "us-gaap_NonoperatingIncomeExpense": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "NonoperatingIncomeExpense", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations": { "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations" ], "lang": { "en-us": { "role": { "label": "Nonoperating Income (Expense)", "totalLabel": "Other income (expense)", "documentation": "The aggregate amount of income or expense from ancillary business-related activities (that is to say, excluding major activities considered part of the normal operations of the business)." } } }, "auth_ref": [ "r92" ] }, "us-gaap_NonoperatingIncomeExpenseAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "NonoperatingIncomeExpenseAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations" ], "lang": { "en-us": { "role": { "label": "Nonoperating Income (Expense) [Abstract]", "terseLabel": "OTHER INCOME (EXPENSE):" } } }, "auth_ref": [] }, "us-gaap_NontradeReceivablesCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "NontradeReceivablesCurrent", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_AssetsCurrent", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Nontrade Receivables, Current", "terseLabel": "Other receivables, less allowance for credit losses of $519 and $522, respectively", "documentation": "The sum of amounts currently receivable other than from customers. For classified balance sheets, represents the current amount receivable, that is amounts expected to be collected within one year or the normal operating cycle, if longer." } } }, "auth_ref": [ "r726" ] }, "us-gaap_NotesAndLoansPayable": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "NotesAndLoansPayable", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsDetails", "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsNotesToFormerOwnersDetails", "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "label": "Notes and Loans Payable", "terseLabel": "Notes to former owners", "verboseLabel": "Notes issued to former owners", "documentation": "Including the current and noncurrent portions, carrying value as of the balance sheet date of all notes and loans payable (with maturities initially due after one year or beyond the operating cycle if longer)." } } }, "auth_ref": [ "r19", "r117", "r804" ] }, "fix_NumberOfOffSiteConstructionRealEstateLeasesCommenced": { "xbrltype": "integerItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "NumberOfOffSiteConstructionRealEstateLeasesCommenced", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesDetails" ], "lang": { "en-us": { "role": { "documentation": "Number of off-site construction real estate leases commenced.", "label": "Number Of Off-site Construction Real Estate Leases Commenced", "terseLabel": "Number of off-site construction real estate leases commenced" } } }, "auth_ref": [] }, "fix_NumberOfOptionsToRenew": { "xbrltype": "integerItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "NumberOfOptionsToRenew", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesDetails" ], "lang": { "en-us": { "role": { "documentation": "Represents the number of options to renew.", "label": "Number of Options to Renew", "terseLabel": "Number of options to renew" } } }, "auth_ref": [] }, "us-gaap_NumberOfReportableSegments": { "xbrltype": "integerItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "NumberOfReportableSegments", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureSegmentInformationDetails" ], "lang": { "en-us": { "role": { "label": "Number of Reportable Segments", "terseLabel": "Number of reportable segments", "documentation": "Number of segments reported by the entity. A reportable segment is a component of an entity for which there is an accounting requirement to report separate financial information on that component in the entity's financial statements." } } }, "auth_ref": [ "r737" ] }, "fix_OfficeBuildingCustomerMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "OfficeBuildingCustomerMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersDisaggregationOfRevenueDetails" ], "lang": { "en-us": { "role": { "documentation": "Building designed primarily for the conduct of business, for example, but not limited to, administration, clerical services, and consultation.", "label": "Office Buildings" } } }, "auth_ref": [] }, "us-gaap_OperatingIncomeLoss": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OperatingIncomeLoss", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations": { "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations" ], "lang": { "en-us": { "role": { "label": "Operating Income (Loss)", "totalLabel": "Operating income", "documentation": "The net result for the period of deducting operating expenses from operating revenues." } } }, "auth_ref": [ "r206", "r220", "r226", "r229", "r607" ] }, "us-gaap_OperatingLeaseExpense": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OperatingLeaseExpense", "crdr": "debit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesDetails" ], "lang": { "en-us": { "role": { "label": "Operating Lease, Expense", "terseLabel": "Operating lease expense", "documentation": "Amount of operating lease expense. Excludes sublease income." } } }, "auth_ref": [ "r793" ] }, "us-gaap_OperatingLeaseLiabilitiesPaymentsDueAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OperatingLeaseLiabilitiesPaymentsDueAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesMaturitiesOfLeaseLiabilitiesDetails" ], "lang": { "en-us": { "role": { "label": "Operating Lease Liabilities, Payments Due [Abstract]", "terseLabel": "Maturities of lease liabilities:" } } }, "auth_ref": [] }, "us-gaap_OperatingLeaseLiability": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OperatingLeaseLiability", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureLeasesSummaryOfOperatingLeaseAssetsAndLiabilitiesDetails": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesMaturitiesOfLeaseLiabilitiesDetails", "http://www.comfortsystemsusa.com/role/DisclosureLeasesSummaryOfOperatingLeaseAssetsAndLiabilitiesDetails" ], "lang": { "en-us": { "role": { "label": "Operating Lease, Liability", "totalLabel": "Total operating lease liabilities", "verboseLabel": "Present Value of Operating Lease Liabilities", "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease." } } }, "auth_ref": [ "r469" ] }, "us-gaap_OperatingLeaseLiabilityAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OperatingLeaseLiabilityAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesSummaryOfOperatingLeaseAssetsAndLiabilitiesDetails" ], "lang": { "en-us": { "role": { "label": "Operating Lease, Liability [Abstract]", "terseLabel": "Operating lease liabilities:" } } }, "auth_ref": [] }, "us-gaap_OperatingLeaseLiabilityCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OperatingLeaseLiabilityCurrent", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureLeasesSummaryOfOperatingLeaseAssetsAndLiabilitiesDetails": { "parentTag": "us-gaap_OperatingLeaseLiability", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesSummaryOfOperatingLeaseAssetsAndLiabilitiesDetails" ], "lang": { "en-us": { "role": { "label": "Operating Lease, Liability, Current", "terseLabel": "Other current liabilities", "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease, classified as current." } } }, "auth_ref": [ "r469" ] }, "us-gaap_OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList": { "xbrltype": "enumerationSetItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesSummaryOfOperatingLeaseAssetsAndLiabilitiesDetails" ], "lang": { "en-us": { "role": { "label": "Operating Lease, Liability, Current, Statement of Financial Position [Extensible List]", "documentation": "Indicates line item in statement of financial position that includes current operating lease liability." } } }, "auth_ref": [ "r470" ] }, "us-gaap_OperatingLeaseLiabilityNoncurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OperatingLeaseLiabilityNoncurrent", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureLeasesSummaryOfOperatingLeaseAssetsAndLiabilitiesDetails": { "parentTag": "us-gaap_OperatingLeaseLiability", "weight": 1.0, "order": 2.0 }, "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_Liabilities", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesSummaryOfOperatingLeaseAssetsAndLiabilitiesDetails", "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Operating Lease, Liability, Noncurrent", "terseLabel": "LEASE LIABILITIES", "verboseLabel": "Long-term operating lease liabilities", "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease, classified as noncurrent." } } }, "auth_ref": [ "r469" ] }, "us-gaap_OperatingLeasePayments": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OperatingLeasePayments", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesMaturitiesOfLeaseLiabilitiesDetails" ], "lang": { "en-us": { "role": { "label": "Operating Lease, Payments", "terseLabel": "Cash paid for amounts included in the measurement of operating lease liabilities", "documentation": "Amount of cash outflow from operating lease, excluding payments to bring another asset to condition and location necessary for its intended use." } } }, "auth_ref": [ "r471", "r475" ] }, "us-gaap_OperatingLeaseRightOfUseAsset": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OperatingLeaseRightOfUseAsset", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_Assets", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesSummaryOfOperatingLeaseAssetsAndLiabilitiesDetails", "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Operating Lease, Right-of-Use Asset", "terseLabel": "LEASE RIGHT-OF-USE ASSET", "verboseLabel": "Operating lease right-of-use assets", "documentation": "Amount of lessee's right to use underlying asset under operating lease." } } }, "auth_ref": [ "r468" ] }, "us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent": { "xbrltype": "percentItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OperatingLeaseWeightedAverageDiscountRatePercent", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesDetails" ], "lang": { "en-us": { "role": { "label": "Operating Lease, Weighted Average Discount Rate, Percent", "verboseLabel": "Weighted average discount rate for operating leases", "documentation": "Weighted average discount rate for operating lease calculated at point in time." } } }, "auth_ref": [ "r478", "r632" ] }, "us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1": { "xbrltype": "durationItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OperatingLeaseWeightedAverageRemainingLeaseTerm1", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesDetails" ], "lang": { "en-us": { "role": { "label": "Operating Lease, Weighted Average Remaining Lease Term", "terseLabel": "Weighted average remaining lease term", "documentation": "Weighted average remaining lease term for operating lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days." } } }, "auth_ref": [ "r477", "r632" ] }, "us-gaap_OperatingSegmentsMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OperatingSegmentsMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureSegmentInformationDetails" ], "lang": { "en-us": { "role": { "label": "Operating Segments [Member]", "terseLabel": "Operating", "documentation": "Identifies components of an entity that engage in business activities from which they may earn revenue and incur expenses, including transactions with other components of the same entity." } } }, "auth_ref": [ "r219", "r220", "r221", "r222", "r223", "r229" ] }, "us-gaap_OrderOrProductionBacklogMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OrderOrProductionBacklogMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails", "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetIdentifiableIntangibleAssetsNetDetails" ], "lang": { "en-us": { "role": { "label": "Backlog", "documentation": "Orders, production or production backlog arising from contracts such as purchase or sales orders acquired in a business combination." } } }, "auth_ref": [ "r63" ] }, "us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OrganizationConsolidationAndPresentationOfFinancialStatementsAbstract", "lang": { "en-us": { "role": { "label": "Business and Organization" } } }, "auth_ref": [] }, "us-gaap_OtherAssetsNoncurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OtherAssetsNoncurrent", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_Assets", "weight": 1.0, "order": 7.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Other Assets, Noncurrent", "terseLabel": "OTHER NONCURRENT ASSETS", "documentation": "Amount of noncurrent assets classified as other." } } }, "auth_ref": [ "r142" ] }, "us-gaap_OtherCustomerMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OtherCustomerMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersDisaggregationOfRevenueDetails" ], "lang": { "en-us": { "role": { "label": "Other", "documentation": "Customer classified as other." } } }, "auth_ref": [ "r725", "r805", "r806", "r807", "r808", "r810" ] }, "fix_OtherDebtLongTermAndShortTermCombinedAmount": { "xbrltype": "monetaryItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "OtherDebtLongTermAndShortTermCombinedAmount", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsDetails" ], "lang": { "en-us": { "role": { "documentation": "Represents the aggregate of other long-term debt, including current maturities and short-term debt.", "label": "Other Debt, Long-term and Short-term, Combined Amount", "terseLabel": "Other debt" } } }, "auth_ref": [] }, "us-gaap_OtherLiabilitiesCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OtherLiabilitiesCurrent", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_LiabilitiesCurrent", "weight": 1.0, "order": 6.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Other Liabilities, Current", "terseLabel": "Other current liabilities", "documentation": "Amount of liabilities classified as other, due within one year or the normal operating cycle, if longer." } } }, "auth_ref": [ "r23", "r633" ] }, "us-gaap_OtherLiabilitiesNoncurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OtherLiabilitiesNoncurrent", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_Liabilities", "weight": 1.0, "order": 5.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Other Liabilities, Noncurrent", "terseLabel": "OTHER LONG-TERM LIABILITIES", "documentation": "Amount of liabilities classified as other, due after one year or the normal operating cycle, if longer." } } }, "auth_ref": [ "r27" ] }, "us-gaap_OtherNonoperatingIncomeExpense": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OtherNonoperatingIncomeExpense", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations": { "parentTag": "us-gaap_NonoperatingIncomeExpense", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations" ], "lang": { "en-us": { "role": { "label": "Other Nonoperating Income (Expense)", "terseLabel": "Other", "documentation": "Amount of income (expense) related to nonoperating activities, classified as other." } } }, "auth_ref": [ "r93" ] }, "ecd_OtherPerfMeasureAmt": { "xbrltype": "decimalItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "OtherPerfMeasureAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Other Performance Measure, Amount", "terseLabel": "Other Performance Measure, Amount" } } }, "auth_ref": [ "r689" ] }, "ecd_OutstandingAggtErrCompAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "OutstandingAggtErrCompAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "label": "Outstanding Aggregate Erroneous Compensation Amount", "terseLabel": "Outstanding Aggregate Erroneous Compensation Amount" } } }, "auth_ref": [ "r657", "r668", "r678", "r703" ] }, "ecd_OutstandingRecoveryCompAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "OutstandingRecoveryCompAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "label": "Outstanding Recovery Compensation Amount", "terseLabel": "Compensation Amount" } } }, "auth_ref": [ "r660", "r671", "r681", "r706" ] }, "ecd_OutstandingRecoveryIndName": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "OutstandingRecoveryIndName", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "label": "Outstanding Recovery, Individual Name", "terseLabel": "Name" } } }, "auth_ref": [ "r660", "r671", "r681", "r706" ] }, "ecd_PayVsPerformanceDisclosureLineItems": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "PayVsPerformanceDisclosureLineItems", "lang": { "en-us": { "role": { "label": "Pay vs Performance Disclosure [Line Items]", "terseLabel": "Pay vs Performance Disclosure" } } }, "auth_ref": [ "r685" ] }, "us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PaymentForContingentConsiderationLiabilityFinancingActivities", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities", "weight": -1.0, "order": 9.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Payment for Contingent Consideration Liability, Financing Activities", "negatedLabel": "Payments for contingent consideration arrangements", "documentation": "Amount of cash outflow, not made soon after acquisition date of business combination, to settle contingent consideration liability up to amount recognized at acquisition date, including, but not limited to, measurement period adjustment and less amount paid soon after acquisition date." } } }, "auth_ref": [ "r6" ] }, "us-gaap_PaymentsForRent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PaymentsForRent", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesDetails" ], "lang": { "en-us": { "role": { "label": "Payments for Rent", "terseLabel": "Rent paid to related parties", "documentation": "Cash payments to lessor's for use of assets under operating leases." } } }, "auth_ref": [ "r7" ] }, "us-gaap_PaymentsForRepurchaseOfCommonStock": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PaymentsForRepurchaseOfCommonStock", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities", "weight": -1.0, "order": 6.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityIncentiveAndOtherDetails", "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Payments for Repurchase of Common Stock", "negatedLabel": "Share repurchase", "terseLabel": "Share repurchase", "documentation": "The cash outflow to reacquire common stock during the period." } } }, "auth_ref": [ "r33" ] }, "us-gaap_PaymentsOfDividendsCommonStock": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PaymentsOfDividendsCommonStock", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities", "weight": -1.0, "order": 5.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Payments of Ordinary Dividends, Common Stock", "negatedLabel": "Payments of dividends to stockholders", "documentation": "Amount of cash outflow in the form of ordinary dividends to common shareholders of the parent entity." } } }, "auth_ref": [ "r33" ] }, "us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PaymentsRelatedToTaxWithholdingForShareBasedCompensation", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities", "weight": -1.0, "order": 7.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Payments Related to Tax Withholding for Share-based Compensation", "negatedLabel": "Shares received in lieu of tax withholding", "documentation": "Amount of cash outflow to satisfy grantee's tax withholding obligation for award under share-based payment arrangement." } } }, "auth_ref": [ "r160" ] }, "us-gaap_PaymentsToAcquireBusinessesGross": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PaymentsToAcquireBusinessesGross", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails", "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsOtherAcquisitionsDetails" ], "lang": { "en-us": { "role": { "label": "Payments to Acquire Businesses, Gross", "verboseLabel": "Cash paid at closing", "documentation": "The cash outflow associated with the acquisition of business during the period. The cash portion only of the acquisition price." } } }, "auth_ref": [ "r31", "r425" ] }, "us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PaymentsToAcquireBusinessesNetOfCashAcquired", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities", "weight": -1.0, "order": 1.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Payments to Acquire Businesses, Net of Cash Acquired", "negatedLabel": "Cash paid for acquisitions, net of cash acquired", "documentation": "The cash outflow associated with the acquisition of a business, net of the cash acquired from the purchase." } } }, "auth_ref": [ "r31" ] }, "us-gaap_PaymentsToAcquireInvestments": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PaymentsToAcquireInvestments", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities", "weight": -1.0, "order": 2.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Payments to Acquire Investments", "negatedLabel": "Payments for investments", "documentation": "The cash outflow associated with the purchase of all investments (debt, security, other) during the period." } } }, "auth_ref": [ "r95" ] }, "us-gaap_PaymentsToAcquirePropertyPlantAndEquipment": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PaymentsToAcquirePropertyPlantAndEquipment", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities", "weight": -1.0, "order": 4.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Payments to Acquire Property, Plant, and Equipment", "negatedLabel": "Purchases of property and equipment", "documentation": "The cash outflow associated with the acquisition of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale; includes cash outflows to pay for construction of self-constructed assets." } } }, "auth_ref": [ "r96" ] }, "ecd_PeerGroupIssuersFnTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "PeerGroupIssuersFnTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Peer Group Issuers, Footnote [Text Block]", "terseLabel": "Peer Group Issuers, Footnote" } } }, "auth_ref": [ "r688" ] }, "ecd_PeerGroupTotalShareholderRtnAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "PeerGroupTotalShareholderRtnAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Peer Group Total Shareholder Return Amount", "terseLabel": "Peer Group Total Shareholder Return Amount" } } }, "auth_ref": [ "r688" ] }, "ecd_PeoActuallyPaidCompAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "PeoActuallyPaidCompAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "PEO Actually Paid Compensation Amount", "terseLabel": "PEO Actually Paid Compensation Amount" } } }, "auth_ref": [ "r687" ] }, "ecd_PeoMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "PeoMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "PEO [Member]", "terseLabel": "PEO" } } }, "auth_ref": [ "r697" ] }, "ecd_PeoName": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "PeoName", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "PEO Name", "terseLabel": "PEO Name" } } }, "auth_ref": [ "r690" ] }, "ecd_PeoTotalCompAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "PeoTotalCompAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "PEO Total Compensation Amount", "terseLabel": "PEO Total Compensation Amount" } } }, "auth_ref": [ "r686" ] }, "fix_PercentageOfBusinessWhichHasRequiredBonds": { "xbrltype": "percentItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "PercentageOfBusinessWhichHasRequiredBonds", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureCommitmentsAndContingenciesDetails" ], "lang": { "en-us": { "role": { "documentation": "Represents the percentage of business which has required bonds.", "label": "Percentage of Business which has Required Bonds", "terseLabel": "Percentage of business which has required bonds" } } }, "auth_ref": [] }, "fix_PercentageOfRevenueFromContractWithCustomer": { "xbrltype": "percentItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "PercentageOfRevenueFromContractWithCustomer", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersDisaggregationOfRevenueDetails" ], "lang": { "en-us": { "role": { "documentation": "The percentage of revenue from contract with customers.", "label": "Percentage of Revenue from Contract With Customer", "terseLabel": "Percentage of revenue from contract with customer (as a percent)" } } }, "auth_ref": [] }, "us-gaap_PlanNameAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PlanNameAxis", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityIncentiveAndOtherDetails" ], "lang": { "en-us": { "role": { "label": "Plan Name [Axis]", "documentation": "Information by plan name for share-based payment arrangement." } } }, "auth_ref": [ "r764", "r765", "r766", "r767", "r768", "r769", "r770", "r771", "r772", "r773", "r774", "r775", "r776", "r777", "r778", "r779", "r780", "r781", "r782", "r783", "r784", "r785", "r786", "r787", "r788", "r789" ] }, "us-gaap_PlanNameDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PlanNameDomain", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityIncentiveAndOtherDetails" ], "lang": { "en-us": { "role": { "label": "Plan Name [Domain]", "documentation": "Plan name for share-based payment arrangement." } } }, "auth_ref": [ "r764", "r765", "r766", "r767", "r768", "r769", "r770", "r771", "r772", "r773", "r774", "r775", "r776", "r777", "r778", "r779", "r780", "r781", "r782", "r783", "r784", "r785", "r786", "r787", "r788", "r789" ] }, "us-gaap_PortionAtFairValueFairValueDisclosureMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PortionAtFairValueFairValueDisclosureMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "label": "Portion at Fair Value Measurement [Member]", "documentation": "Measured at fair value for financial reporting purposes." } } }, "auth_ref": [ "r455" ] }, "us-gaap_PreferredStockParOrStatedValuePerShare": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PreferredStockParOrStatedValuePerShare", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheetsParenthetical" ], "lang": { "en-us": { "role": { "label": "Preferred Stock, Par or Stated Value Per Share", "terseLabel": "Preferred stock, par value (in dollars per share)", "documentation": "Face amount or stated value per share of preferred stock nonredeemable or redeemable solely at the option of the issuer." } } }, "auth_ref": [ "r78", "r331" ] }, "us-gaap_PreferredStockSharesAuthorized": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PreferredStockSharesAuthorized", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheetsParenthetical" ], "lang": { "en-us": { "role": { "label": "Preferred Stock, Shares Authorized", "terseLabel": "Preferred stock, shares authorized", "documentation": "The maximum number of nonredeemable preferred shares (or preferred stock redeemable solely at the option of the issuer) permitted to be issued by an entity's charter and bylaws." } } }, "auth_ref": [ "r78", "r548" ] }, "us-gaap_PreferredStockSharesIssued": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PreferredStockSharesIssued", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheetsParenthetical" ], "lang": { "en-us": { "role": { "label": "Preferred Stock, Shares Issued", "terseLabel": "Preferred stock, shares issued", "documentation": "Total number of nonredeemable preferred shares (or preferred stock redeemable solely at the option of the issuer) issued to shareholders (includes related preferred shares that were issued, repurchased, and remain in the treasury). May be all or portion of the number of preferred shares authorized. Excludes preferred shares that are classified as debt." } } }, "auth_ref": [ "r78", "r331" ] }, "us-gaap_PreferredStockSharesOutstanding": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PreferredStockSharesOutstanding", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheetsParenthetical" ], "lang": { "en-us": { "role": { "label": "Preferred Stock, Shares Outstanding", "terseLabel": "Preferred stock, shares outstanding", "documentation": "Aggregate share number for all nonredeemable preferred stock (or preferred stock redeemable solely at the option of the issuer) held by stockholders. Does not include preferred shares that have been repurchased." } } }, "auth_ref": [ "r78", "r548", "r566", "r813", "r814" ] }, "us-gaap_PreferredStockValue": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PreferredStockValue", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_StockholdersEquity", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Preferred Stock, Value, Issued", "verboseLabel": "Preferred stock, $.01 par, 5,000,000 shares authorized, none issued and outstanding", "documentation": "Aggregate par or stated value of issued nonredeemable preferred stock (or preferred stock redeemable solely at the option of the issuer). This item includes treasury stock repurchased by the entity. Note: elements for number of nonredeemable preferred shares, par value and other disclosure concepts are in another section within stockholders' equity." } } }, "auth_ref": [ "r78", "r499", "r633" ] }, "us-gaap_PrepaidExpenseAndOtherAssetsCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PrepaidExpenseAndOtherAssetsCurrent", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_AssetsCurrent", "weight": 1.0, "order": 7.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Prepaid Expense and Other Assets, Current", "terseLabel": "Prepaid expenses and other", "documentation": "Amount of asset related to consideration paid in advance for costs that provide economic benefits in future periods, and amount of other assets that are expected to be realized or consumed within one year or the normal operating cycle, if longer." } } }, "auth_ref": [ "r727" ] }, "us-gaap_ProceedsFromLongTermLinesOfCredit": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ProceedsFromLongTermLinesOfCredit", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Proceeds from Long-term Lines of Credit", "terseLabel": "Proceeds from revolving credit facility", "documentation": "The cash inflow from a contractual arrangement with the lender, including letter of credit, standby letter of credit and revolving credit arrangements, under which borrowings can be made up to a specific amount at any point in time with maturities due beyond one year or the operating cycle, if longer." } } }, "auth_ref": [ "r32" ] }, "us-gaap_ProceedsFromOtherDebt": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ProceedsFromOtherDebt", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Proceeds from Other Debt", "terseLabel": "Proceeds from other debt", "documentation": "Amount of cash inflow from debt classified as other." } } }, "auth_ref": [ "r32" ] }, "us-gaap_ProceedsFromSaleOfPropertyPlantAndEquipment": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ProceedsFromSaleOfPropertyPlantAndEquipment", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Proceeds from Sale of Property, Plant, and Equipment", "terseLabel": "Proceeds from sales of property and equipment", "documentation": "The cash inflow from the sale of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale." } } }, "auth_ref": [ "r94" ] }, "us-gaap_ProceedsFromStockOptionsExercised": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ProceedsFromStockOptionsExercised", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities", "weight": 1.0, "order": 8.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Proceeds from Stock Options Exercised", "terseLabel": "Proceeds from exercise of options", "documentation": "Amount of cash inflow from exercise of option under share-based payment arrangement." } } }, "auth_ref": [ "r5", "r16" ] }, "srt_ProductOrServiceAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/srt/2023", "localname": "ProductOrServiceAxis", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersDisaggregationOfRevenueDetails" ], "lang": { "en-us": { "role": { "label": "Products and Services [Axis]" } } }, "auth_ref": [ "r231", "r488", "r520", "r521", "r522", "r523", "r524", "r525", "r602", "r617", "r634", "r724", "r757", "r758", "r763", "r805" ] }, "srt_ProductsAndServicesDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/srt/2023", "localname": "ProductsAndServicesDomain", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersDisaggregationOfRevenueDetails" ], "lang": { "en-us": { "role": { "label": "Products and Services [Domain]" } } }, "auth_ref": [ "r231", "r488", "r520", "r521", "r522", "r523", "r524", "r525", "r602", "r617", "r634", "r724", "r757", "r758", "r763", "r805" ] }, "us-gaap_ProfitLoss": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ProfitLoss", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 18.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows", "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquity" ], "lang": { "en-us": { "role": { "label": "Net Income (Loss), Including Portion Attributable to Noncontrolling Interest", "terseLabel": "Net income", "verboseLabel": "Net income", "documentation": "The consolidated profit or loss for the period, net of income taxes, including the portion attributable to the noncontrolling interest." } } }, "auth_ref": [ "r137", "r150", "r151", "r161", "r166", "r171", "r179", "r180", "r206", "r220", "r226", "r229", "r239", "r290", "r291", "r293", "r294", "r295", "r297", "r299", "r301", "r302", "r429", "r432", "r433", "r445", "r457", "r493", "r505", "r535", "r568", "r585", "r586", "r607", "r630", "r631", "r645", "r728", "r759" ] }, "us-gaap_PropertyPlantAndEquipmentNet": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PropertyPlantAndEquipmentNet", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_Assets", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Property, Plant and Equipment, Net", "terseLabel": "PROPERTY AND EQUIPMENT, NET", "documentation": "Amount after accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business to produce goods and services and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures." } } }, "auth_ref": [ "r10", "r494", "r503", "r633" ] }, "us-gaap_ProvisionForDoubtfulAccounts": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ProvisionForDoubtfulAccounts", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 14.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Provision for Doubtful Accounts", "terseLabel": "Bad debt expense", "documentation": "Amount of expense (reversal of expense) for expected credit loss on accounts receivable." } } }, "auth_ref": [ "r159", "r248" ] }, "ecd_PvpTable": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "PvpTable", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Pay vs Performance Disclosure [Table]", "terseLabel": "Pay vs Performance Disclosure" } } }, "auth_ref": [ "r685" ] }, "ecd_PvpTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "PvpTableTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Pay vs Performance [Table Text Block]", "terseLabel": "Pay vs Performance Disclosure, Table" } } }, "auth_ref": [ "r685" ] }, "srt_RangeAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/srt/2023", "localname": "RangeAxis", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails", "http://www.comfortsystemsusa.com/role/DisclosureCommitmentsAndContingenciesDetails", "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsNotesToFormerOwnersDetails", "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails", "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails", "http://www.comfortsystemsusa.com/role/DisclosureLeasesDetails", "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersRemainingPerformanceObligationsDetails", "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityIncentiveAndOtherDetails" ], "lang": { "en-us": { "role": { "label": "Range [Axis]" } } }, "auth_ref": [ "r285", "r286", "r287", "r288", "r368", "r375", "r402", "r403", "r404", "r484", "r485", "r526", "r538", "r539", "r592", "r593", "r594", "r595", "r596", "r599", "r600", "r608", "r615", "r629", "r635", "r638", "r752", "r761", "r799", "r800", "r801", "r802", "r803" ] }, "srt_RangeMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/srt/2023", "localname": "RangeMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails", "http://www.comfortsystemsusa.com/role/DisclosureCommitmentsAndContingenciesDetails", "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsNotesToFormerOwnersDetails", "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails", "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails", "http://www.comfortsystemsusa.com/role/DisclosureLeasesDetails", "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersRemainingPerformanceObligationsDetails", "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityIncentiveAndOtherDetails" ], "lang": { "en-us": { "role": { "label": "Range [Domain]" } } }, "auth_ref": [ "r285", "r286", "r287", "r288", "r368", "r375", "r402", "r403", "r404", "r484", "r485", "r526", "r538", "r539", "r592", "r593", "r594", "r595", "r596", "r599", "r600", "r608", "r615", "r629", "r635", "r638", "r752", "r761", "r799", "r800", "r801", "r802", "r803" ] }, "ecd_RecoveryOfErrCompDisclosureLineItems": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "RecoveryOfErrCompDisclosureLineItems", "lang": { "en-us": { "role": { "label": "Recovery of Erroneously Awarded Compensation Disclosure [Line Items]", "terseLabel": "Recovery of Erroneously Awarded Compensation Disclosure" } } }, "auth_ref": [ "r652", "r663", "r673", "r698" ] }, "fix_RenewableServiceMaintenanceAgreementsTerm": { "xbrltype": "durationItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "RenewableServiceMaintenanceAgreementsTerm", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersRemainingPerformanceObligationsDetails" ], "lang": { "en-us": { "role": { "documentation": "The term of renewable service maintenance agreements in years.", "label": "Renewable Service Maintenance Agreements Term", "terseLabel": "The term of the renewable service maintenance agreements (in years)" } } }, "auth_ref": [] }, "us-gaap_RepaymentsOfLongTermLinesOfCredit": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RepaymentsOfLongTermLinesOfCredit", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities", "weight": -1.0, "order": 2.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Repayments of Long-term Lines of Credit", "negatedLabel": "Payments on revolving credit facility", "documentation": "The cash outflow for the settlement of obligation drawn from a contractual arrangement with the lender, including letter of credit, standby letter of credit and revolving credit arrangements, under which borrowings can be made up to a specific amount at any point in time with maturities due beyond one year or the operating cycle, if longer." } } }, "auth_ref": [ "r34" ] }, "us-gaap_RepaymentsOfOtherDebt": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RepaymentsOfOtherDebt", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities", "weight": -1.0, "order": 4.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Repayments of Other Debt", "negatedLabel": "Payments on other debt", "documentation": "Amount of cash outflow for the payment of debt classified as other." } } }, "auth_ref": [ "r34" ] }, "ecd_RestatementDateAxis": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "RestatementDateAxis", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "label": "Restatement Determination Date [Axis]", "terseLabel": "Restatement Determination Date:" } } }, "auth_ref": [ "r653", "r664", "r674", "r699" ] }, "ecd_RestatementDeterminationDate": { "xbrltype": "dateItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "RestatementDeterminationDate", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "label": "Restatement Determination Date", "terseLabel": "Restatement Determination Date" } } }, "auth_ref": [ "r654", "r665", "r675", "r700" ] }, "ecd_RestatementDoesNotRequireRecoveryTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "RestatementDoesNotRequireRecoveryTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "label": "Restatement Does Not Require Recovery [Text Block]", "terseLabel": "Restatement does not require Recovery" } } }, "auth_ref": [ "r661", "r672", "r682", "r707" ] }, "fix_RetailRestaurantsAndEntertainmentMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "RetailRestaurantsAndEntertainmentMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersDisaggregationOfRevenueDetails" ], "lang": { "en-us": { "role": { "documentation": "This member stands for retail, restaurants and entertainment", "label": "Retail, Restaurants and Entertainment" } } }, "auth_ref": [] }, "us-gaap_RetainedEarningsAccumulatedDeficit": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RetainedEarningsAccumulatedDeficit", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_StockholdersEquity", "weight": 1.0, "order": 5.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Retained Earnings (Accumulated Deficit)", "terseLabel": "Retained earnings", "documentation": "Amount of accumulated undistributed earnings (deficit)." } } }, "auth_ref": [ "r81", "r111", "r501", "r530", "r531", "r534", "r549", "r633" ] }, "us-gaap_RetainedEarningsMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RetainedEarningsMember", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquity" ], "lang": { "en-us": { "role": { "label": "Retained Earnings", "documentation": "Accumulated undistributed earnings (deficit)." } } }, "auth_ref": [ "r135", "r168", "r169", "r170", "r172", "r178", "r180", "r240", "r241", "r406", "r407", "r408", "r418", "r419", "r436", "r438", "r439", "r441", "r443", "r527", "r529", "r536", "r813" ] }, "us-gaap_RevenueFromContractWithCustomerAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RevenueFromContractWithCustomerAbstract", "lang": { "en-us": { "role": { "label": "Revenue from Contracts with Customers" } } }, "auth_ref": [] }, "us-gaap_RevenueFromContractWithCustomerPolicyTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RevenueFromContractWithCustomerPolicyTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureSummaryOfSignificantAccountingPoliciesAndEstimatesPolicies" ], "lang": { "en-us": { "role": { "label": "Revenue from Contract with Customer [Policy Text Block]", "terseLabel": "Revenue Recognition", "documentation": "Disclosure of accounting policy for revenue from contract with customer." } } }, "auth_ref": [ "r134", "r355", "r356", "r357", "r358", "r359", "r360", "r361", "r362", "r601" ] }, "us-gaap_RevenueFromContractWithCustomerTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RevenueFromContractWithCustomerTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomers" ], "lang": { "en-us": { "role": { "label": "Revenue From Contract With Customer [Text Block]", "verboseLabel": "Revenue from Contracts with Customers", "documentation": "The entire disclosure of revenue from contract with customer to transfer good or service and to transfer nonfinancial asset. Includes, but is not limited to, disaggregation of revenue, credit loss recognized from contract with customer, judgment and change in judgment related to contract with customer, and asset recognized from cost incurred to obtain or fulfill contract with customer. Excludes insurance and lease contracts." } } }, "auth_ref": [ "r134", "r347", "r348", "r349", "r350", "r351", "r352", "r353", "r354", "r367" ] }, "us-gaap_RevenuePracticalExpedientRemainingPerformanceObligation": { "xbrltype": "booleanItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RevenuePracticalExpedientRemainingPerformanceObligation", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersRemainingPerformanceObligationsDetails" ], "lang": { "en-us": { "role": { "label": "Revenue, Practical Expedient, Remaining Performance Obligation [true/false]", "terseLabel": "Practical Expedient", "documentation": "Indicates (true false) whether optional exemption was applied not to disclose amount of transaction price allocated to and explanation of expected timing of revenue recognition for remaining performance obligation, when contract has expected duration of one year or less or right to consideration corresponds directly to performance completed." } } }, "auth_ref": [ "r354" ] }, "us-gaap_RevenueRemainingPerformanceObligation": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RevenueRemainingPerformanceObligation", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersRemainingPerformanceObligationsDetails" ], "lang": { "en-us": { "role": { "label": "Revenue, Remaining Performance Obligation", "terseLabel": "Remaining performance obligations", "documentation": "Amount of transaction price allocated to performance obligation that has not been recognized as revenue." } } }, "auth_ref": [ "r128" ] }, "us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersRemainingPerformanceObligationsDetails" ], "lang": { "en-us": { "role": { "label": "Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]", "terseLabel": "Remaining Performance Obligations", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [] }, "us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1": { "xbrltype": "durationItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersRemainingPerformanceObligationsDetails" ], "lang": { "en-us": { "role": { "label": "Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Period", "terseLabel": "Expected timing of performance obligations", "documentation": "Period in which remaining performance obligation is expected to be recognized as revenue, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days." } } }, "auth_ref": [ "r129" ] }, "us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersRemainingPerformanceObligationsDetails" ], "lang": { "en-us": { "role": { "label": "Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]", "documentation": "Start date of time band for expected timing of satisfaction of remaining performance obligation, in YYYY-MM-DD format." } } }, "auth_ref": [ "r129" ] }, "us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionTable", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersRemainingPerformanceObligationsDetails" ], "lang": { "en-us": { "role": { "label": "Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Table]", "documentation": "Disclosure of information about expected timing for satisfying remaining performance obligation." } } }, "auth_ref": [] }, "us-gaap_RevenueRemainingPerformanceObligationPercentage": { "xbrltype": "percentItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RevenueRemainingPerformanceObligationPercentage", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersRemainingPerformanceObligationsDetails" ], "lang": { "en-us": { "role": { "label": "Revenue, Remaining Performance Obligation, Percentage", "terseLabel": "Expected percentage of remaining performance obligations", "documentation": "Percentage of remaining performance obligation to total remaining performance obligation not recognized as revenue." } } }, "auth_ref": [ "r723" ] }, "us-gaap_Revenues": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "Revenues", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations": { "parentTag": "us-gaap_GrossProfit", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersDisaggregationOfRevenueDetails", "http://www.comfortsystemsusa.com/role/DisclosureSegmentInformationDetails", "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations" ], "lang": { "en-us": { "role": { "label": "Revenues", "terseLabel": "REVENUE", "verboseLabel": "Revenue", "documentation": "Amount of revenue recognized from goods sold, services rendered, insurance premiums, or other activities that constitute an earning process. Includes, but is not limited to, investment and interest income before deduction of interest expense when recognized as a component of revenue, and sales and trading gain (loss)." } } }, "auth_ref": [ "r157", "r166", "r207", "r208", "r219", "r224", "r225", "r231", "r233", "r234", "r239", "r290", "r291", "r293", "r294", "r295", "r297", "r299", "r301", "r302", "r457", "r493", "r759" ] }, "us-gaap_RevolvingCreditFacilityMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RevolvingCreditFacilityMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "label": "Revolving Credit Facility", "documentation": "Arrangement in which loan proceeds can continuously be obtained following repayments, but the total amount borrowed cannot exceed a specified maximum amount." } } }, "auth_ref": [] }, "us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability", "crdr": "debit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesMaturitiesOfLeaseLiabilitiesDetails" ], "lang": { "en-us": { "role": { "label": "Right-of-Use Asset Obtained in Exchange for Operating Lease Liability", "terseLabel": "Operating lease right-of-use assets obtained in exchange for lease liabilities", "documentation": "Amount of increase in right-of-use asset obtained in exchange for operating lease liability." } } }, "auth_ref": [ "r476", "r632" ] }, "ecd_Rule10b51ArrAdoptedFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "Rule10b51ArrAdoptedFlag", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "label": "Rule 10b5-1 Arrangement Adopted [Flag]", "terseLabel": "Rule 10b5-1 Arrangement Adopted" } } }, "auth_ref": [ "r716" ] }, "ecd_Rule10b51ArrTrmntdFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "Rule10b51ArrTrmntdFlag", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "label": "Rule 10b5-1 Arrangement Terminated [Flag]", "terseLabel": "Rule 10b5-1 Arrangement Terminated" } } }, "auth_ref": [ "r716" ] }, "fix_ScheduleOfAdditionalMarginsTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "ScheduleOfAdditionalMarginsTableTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsTables" ], "lang": { "en-us": { "role": { "documentation": "Tabular disclosure of the additional margins added to the reference rate to compute the variable rate on the debt instrument.", "label": "Schedule of Additional Margins [Table Text Block]", "terseLabel": "Summary of additional margins" } } }, "auth_ref": [] }, "us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfBusinessAcquisitionsByAcquisitionTable", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails", "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsOtherAcquisitionsDetails", "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsTables" ], "lang": { "en-us": { "role": { "label": "Schedule of Business Acquisitions, by Acquisition [Table]", "documentation": "Schedule reflecting each material business combination (or series of individually immaterial business combinations) completed during the period, including background, timing, and recognized assets and liabilities." } } }, "auth_ref": [ "r58", "r59", "r423" ] }, "us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsTables" ], "lang": { "en-us": { "role": { "label": "Schedule of Business Acquisitions, by Acquisition [Table Text Block]", "terseLabel": "Schedule of acquisition date fair value of consideration transferred and the acquisition date fair value of the identifiable assets acquired and liabilities assumed, including an amount for goodwill", "documentation": "Tabular disclosure of a material business combination completed during the period, including background, timing, and recognized assets and liabilities. This table does not include leveraged buyouts." } } }, "auth_ref": [ "r58", "r59" ] }, "us-gaap_ScheduleOfDebtTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfDebtTableTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsTables" ], "lang": { "en-us": { "role": { "label": "Schedule of Debt [Table Text Block]", "terseLabel": "Schedule of components of debt obligations", "documentation": "Tabular disclosure of information pertaining to short-term and long-debt instruments or arrangements, including but not limited to identification of terms, features, collateral requirements and other information necessary to a fair presentation." } } }, "auth_ref": [] }, "us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsTables" ], "lang": { "en-us": { "role": { "label": "Schedule of Fair Value, Assets and Liabilities Measured on Recurring Basis [Table Text Block]", "terseLabel": "Summary of fair values and levels within the fair value hierarchy in which the fair value measurements fall for assets and liabilities measured on a recurring basis", "documentation": "Tabular disclosure of assets and liabilities, including [financial] instruments measured at fair value that are classified in stockholders' equity, if any, that are measured at fair value on a recurring basis. The disclosures contemplated herein include the fair value measurements at the reporting date by the level within the fair value hierarchy in which the fair value measurements in their entirety fall, segregating fair value measurements using quoted prices in active markets for identical assets (Level 1), significant other observable inputs (Level 2), and significant unobservable inputs (Level 3)." } } }, "auth_ref": [ "r447", "r448" ] }, "us-gaap_ScheduleOfFiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfFiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsTables" ], "lang": { "en-us": { "role": { "label": "Schedule of Finite-Lived Intangible Assets Acquired as Part of Business Combination [Table Text Block]", "terseLabel": "Schedule of acquired intangible assets", "documentation": "Tabular disclosure of finite-lived intangible assets acquired as part of a business combination or through an asset purchase, by major class and in total, including the value of the asset acquired, any significant residual value (the expected value of the asset at the end of its useful life) and the weighted-average amortization period." } } }, "auth_ref": [ "r46" ] }, "us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfFiniteLivedIntangibleAssetsTable", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetIdentifiableIntangibleAssetsNetDetails" ], "lang": { "en-us": { "role": { "label": "Schedule of Finite-Lived Intangible Assets [Table]", "documentation": "Schedule of assets, excluding financial assets and goodwill, lacking physical substance with a finite life." } } }, "auth_ref": [ "r46", "r48", "r489" ] }, "us-gaap_ScheduleOfGoodwillTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfGoodwillTable", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetChangesInCarryingAmountOfGoodwillDetails" ], "lang": { "en-us": { "role": { "label": "Schedule of Goodwill [Table]", "documentation": "Schedule of goodwill and the changes during the year due to acquisition, sale, impairment or for other reasons." } } }, "auth_ref": [ "r262", "r263", "r264", "r265", "r266", "r267", "r268", "r269", "r270", "r271", "r272", "r609" ] }, "us-gaap_ScheduleOfGoodwillTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfGoodwillTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetTables" ], "lang": { "en-us": { "role": { "label": "Schedule of Goodwill [Table Text Block]", "terseLabel": "Schedule of changes in the carrying amount of goodwill", "documentation": "Tabular disclosure of goodwill by reportable segment and in total which includes a rollforward schedule." } } }, "auth_ref": [ "r609", "r739", "r740", "r741", "r742", "r743", "r744", "r745", "r746", "r747", "r748", "r749" ] }, "fix_ScheduleOfLeaseAssetsAndLiabilitiesTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "ScheduleOfLeaseAssetsAndLiabilitiesTableTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesTables" ], "lang": { "en-us": { "role": { "documentation": "Tabular disclosure of lease assets and liabilities.", "label": "Schedule of Lease Assets and Liabilities [Table Text Block]", "terseLabel": "Schedule of operating lease assets and liabilities" } } }, "auth_ref": [] }, "us-gaap_ScheduleOfMaturitiesOfLongTermDebtTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfMaturitiesOfLongTermDebtTableTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsTables" ], "lang": { "en-us": { "role": { "label": "Schedule of Maturities of Long-term Debt [Table Text Block]", "terseLabel": "Schedule of future principal payments of notes to former owners", "documentation": "Tabular disclosure of maturity and sinking fund requirement for long-term debt." } } }, "auth_ref": [ "r11" ] }, "us-gaap_ScheduleOfSegmentReportingInformationBySegmentTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfSegmentReportingInformationBySegmentTable", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureSegmentInformationDetails" ], "lang": { "en-us": { "role": { "label": "Schedule of Segment Reporting Information, by Segment [Table]", "documentation": "A table disclosing the profit or loss and total assets for each reportable segment of the entity. An entity discloses certain information on each reportable segment if the amounts (a) are included in the measure of segment profit or loss reviewed by the chief operating decision maker or (b) are otherwise regularly provided to the chief operating decision maker, even if not included in that measure of segment profit or loss." } } }, "auth_ref": [ "r40", "r41", "r42", "r43" ] }, "us-gaap_ScheduleOfSegmentReportingInformationBySegmentTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfSegmentReportingInformationBySegmentTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureSegmentInformationTables" ], "lang": { "en-us": { "role": { "label": "Schedule of Segment Reporting Information, by Segment [Table Text Block]", "terseLabel": "Summary of information about reportable segments", "documentation": "Tabular disclosure of the profit or loss and total assets for each reportable segment. An entity discloses certain information on each reportable segment if the amounts (a) are included in the measure of segment profit or loss reviewed by the chief operating decision maker or (b) are otherwise regularly provided to the chief operating decision maker, even if not included in that measure of segment profit or loss." } } }, "auth_ref": [ "r40", "r41", "r42", "r43" ] }, "us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityIncentiveAndOtherDetails" ], "lang": { "en-us": { "role": { "label": "Schedule of Share-based Compensation Arrangements by Share-based Payment Award [Table]", "documentation": "Disclosure of information about share-based payment arrangement." } } }, "auth_ref": [ "r376", "r378", "r380", "r381", "r382", "r383", "r384", "r385", "r386", "r387", "r388", "r389", "r390", "r391", "r392", "r393", "r394", "r395", "r396", "r397", "r398", "r399", "r400", "r401", "r402", "r403", "r404", "r405" ] }, "fix_ScheduleOfSupplementalInformationRelatedToLeasesTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "ScheduleOfSupplementalInformationRelatedToLeasesTableTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesTables" ], "lang": { "en-us": { "role": { "documentation": "Tabular disclosure of supplemental information related to leases.", "label": "Schedule of Supplemental Information Related to Leases [Table Text Block]", "terseLabel": "Schedule of supplemental information related to leases" } } }, "auth_ref": [] }, "us-gaap_ScheduleOfWeightedAverageNumberOfSharesTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfWeightedAverageNumberOfSharesTableTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityTables" ], "lang": { "en-us": { "role": { "label": "Schedule of Weighted Average Number of Shares [Table Text Block]", "terseLabel": "Reconciliation of number of shares outstanding with the number of shares used in computing basic and diluted earnings per share", "documentation": "Tabular disclosure of the weighted average number of shares used in calculating basic net earnings per share (or unit) and diluted earnings per share (or unit)." } } }, "auth_ref": [ "r36" ] }, "us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetTables" ], "lang": { "en-us": { "role": { "label": "Schedule of Finite-Lived Intangible Assets, Future Amortization Expense [Table Text Block]", "terseLabel": "Schedule of future amortization expense of identifiable intangible assets", "documentation": "Tabular disclosure of the amount of amortization expense expected to be recorded in succeeding fiscal years for finite-lived intangible assets." } } }, "auth_ref": [ "r48" ] }, "dei_Security12bTitle": { "xbrltype": "securityTitleItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "Security12bTitle", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Title of 12(b) Security", "documentation": "Title of a 12(b) registered security." } } }, "auth_ref": [ "r647" ] }, "dei_SecurityExchangeName": { "xbrltype": "edgarExchangeCodeItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "SecurityExchangeName", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Security Exchange Name", "documentation": "Name of the Exchange on which a security is registered." } } }, "auth_ref": [ "r649" ] }, "us-gaap_SegmentDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "SegmentDomain", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetChangesInCarryingAmountOfGoodwillDetails", "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersDisaggregationOfRevenueDetails", "http://www.comfortsystemsusa.com/role/DisclosureSegmentInformationDetails" ], "lang": { "en-us": { "role": { "label": "Segments [Domain]", "documentation": "Components of an entity that engage in business activities from which they may earn revenue and incur expenses, including transactions with other components of the same entity." } } }, "auth_ref": [ "r203", "r206", "r207", "r208", "r209", "r210", "r211", "r212", "r213", "r214", "r215", "r216", "r217", "r219", "r220", "r221", "r222", "r223", "r224", "r225", "r226", "r227", "r229", "r234", "r262", "r263", "r264", "r265", "r266", "r267", "r268", "r269", "r270", "r280", "r281", "r509", "r510", "r511", "r512", "r513", "r514", "r515", "r516", "r517", "r518", "r519", "r609", "r724", "r805" ] }, "us-gaap_SegmentReportingAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "SegmentReportingAbstract", "lang": { "en-us": { "role": { "label": "Segment Information" } } }, "auth_ref": [] }, "us-gaap_SegmentReportingDisclosureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "SegmentReportingDisclosureTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureSegmentInformation" ], "lang": { "en-us": { "role": { "label": "Segment Reporting Disclosure [Text Block]", "terseLabel": "Segment Information", "documentation": "The entire disclosure for reporting segments including data and tables. Reportable segments include those that meet any of the following quantitative thresholds a) it's reported revenue, including sales to external customers and intersegment sales or transfers is 10 percent or more of the combined revenue, internal and external, of all operating segments b) the absolute amount of its reported profit or loss is 10 percent or more of the greater, in absolute amount of 1) the combined reported profit of all operating segments that did not report a loss or 2) the combined reported loss of all operating segments that did report a loss c) its assets are 10 percent or more of the combined assets of all operating segments." } } }, "auth_ref": [ "r202", "r203", "r204", "r205", "r206", "r218", "r223", "r227", "r228", "r229", "r230", "r231", "r232", "r234" ] }, "us-gaap_SegmentReportingInformationLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "SegmentReportingInformationLineItems", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureSegmentInformationDetails" ], "lang": { "en-us": { "role": { "label": "Segment Reporting Information [Line Items]", "terseLabel": "Segment Information", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [] }, "us-gaap_SelfInsuranceReserveCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "SelfInsuranceReserveCurrent", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_LiabilitiesCurrent", "weight": 1.0, "order": 5.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Self Insurance Reserve, Current", "terseLabel": "Accrued self-insurance", "documentation": "Carrying amount of accrued known and estimated losses incurred as of the balance sheet date for which no insurance coverage exists, and for which a claim has been made or is probable of being asserted, typically arising from workmen's compensation-type of incidents and personal injury to nonemployees from accidents on the entity's property that are expected to be paid within one year (or the normal operating cycle, if longer)." } } }, "auth_ref": [] }, "us-gaap_SellingGeneralAndAdministrativeExpense": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "SellingGeneralAndAdministrativeExpense", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations": { "parentTag": "us-gaap_OperatingIncomeLoss", "weight": -1.0, "order": 2.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations" ], "lang": { "en-us": { "role": { "label": "Selling, General and Administrative Expense", "terseLabel": "SELLING, GENERAL AND ADMINISTRATIVE EXPENSES", "documentation": "The aggregate total costs related to selling a firm's product and services, as well as all other general and administrative expenses. Direct selling expenses (for example, credit, warranty, and advertising) are expenses that can be directly linked to the sale of specific products. Indirect selling expenses are expenses that cannot be directly linked to the sale of specific products, for example telephone expenses, Internet, and postal charges. General and administrative expenses include salaries of non-sales personnel, rent, utilities, communication, etc." } } }, "auth_ref": [ "r90" ] }, "us-gaap_SellingGeneralAndAdministrativeExpensesMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "SellingGeneralAndAdministrativeExpensesMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureCommitmentsAndContingenciesDetails" ], "lang": { "en-us": { "role": { "label": "Selling, General and Administrative Expenses", "documentation": "Primary financial statement caption encompassing selling, general and administrative expense." } } }, "auth_ref": [] }, "fix_SeniorRevolvingCreditFacilityMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "SeniorRevolvingCreditFacilityMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "documentation": "Information pertaining to the senior revolving credit facility.", "label": "Senior Revolving Credit Facility [Member]", "terseLabel": "Senior Revolving Credit Facility" } } }, "auth_ref": [] }, "fix_ServiceCallsMaintenanceAndMonitoringMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "ServiceCallsMaintenanceAndMonitoringMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersDisaggregationOfRevenueDetails" ], "lang": { "en-us": { "role": { "documentation": "This member stands for service calls, maintenance and monitoring.", "label": "Service Calls, Maintenance and Monitoring" } } }, "auth_ref": [] }, "fix_ServiceProjectsMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "ServiceProjectsMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersDisaggregationOfRevenueDetails" ], "lang": { "en-us": { "role": { "documentation": "This member stands for service projects.", "label": "Service Projects" } } }, "auth_ref": [] }, "us-gaap_ShareBasedCompensation": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensation", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 9.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfCashFlows" ], "lang": { "en-us": { "role": { "label": "Share-based Compensation", "terseLabel": "Stock-based compensation", "documentation": "Amount of noncash expense for share-based payment arrangement." } } }, "auth_ref": [ "r8" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityIncentiveAndOtherDetails" ], "lang": { "en-us": { "role": { "label": "Share-based Compensation Arrangement by Share-based Payment Award [Line Items]", "terseLabel": "Stockholders' Equity", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [ "r376", "r378", "r380", "r381", "r382", "r383", "r384", "r385", "r386", "r387", "r388", "r389", "r390", "r391", "r392", "r393", "r394", "r395", "r396", "r397", "r398", "r399", "r400", "r401", "r402", "r403", "r404", "r405" ] }, "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "label": "All Award Types", "terseLabel": "All Award Types", "documentation": "Award under share-based payment arrangement." } } }, "auth_ref": [ "r380", "r381", "r382", "r383", "r384", "r385", "r386", "r387", "r388", "r389", "r390", "r391", "r392", "r393", "r394", "r395", "r396", "r397", "r398", "r399", "r400", "r401", "r402", "r403", "r404", "r405" ] }, "us-gaap_SharesPaidForTaxWithholdingForShareBasedCompensation": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "SharesPaidForTaxWithholdingForShareBasedCompensation", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquity" ], "lang": { "en-us": { "role": { "label": "Shares Paid for Tax Withholding for Share Based Compensation", "negatedLabel": "Shares received in lieu of tax withholding on vested stock (in shares)", "documentation": "Number of shares used to settle grantee's tax withholding obligation for award under share-based payment arrangement." } } }, "auth_ref": [] }, "us-gaap_StatementBusinessSegmentsAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StatementBusinessSegmentsAxis", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetChangesInCarryingAmountOfGoodwillDetails", "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersDisaggregationOfRevenueDetails", "http://www.comfortsystemsusa.com/role/DisclosureSegmentInformationDetails" ], "lang": { "en-us": { "role": { "label": "Segments [Axis]", "documentation": "Information by business segments." } } }, "auth_ref": [ "r136", "r203", "r206", "r207", "r208", "r209", "r210", "r211", "r212", "r213", "r214", "r215", "r216", "r217", "r219", "r220", "r221", "r222", "r223", "r224", "r225", "r226", "r227", "r229", "r234", "r262", "r263", "r264", "r265", "r266", "r267", "r268", "r269", "r270", "r278", "r280", "r281", "r509", "r510", "r511", "r512", "r513", "r514", "r515", "r516", "r517", "r518", "r519", "r609", "r724", "r805" ] }, "us-gaap_StatementEquityComponentsAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StatementEquityComponentsAxis", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquity" ], "lang": { "en-us": { "role": { "label": "Equity Components [Axis]", "documentation": "Information by component of equity." } } }, "auth_ref": [ "r14", "r30", "r135", "r153", "r154", "r155", "r168", "r169", "r170", "r172", "r178", "r180", "r201", "r240", "r241", "r343", "r406", "r407", "r408", "r418", "r419", "r436", "r437", "r438", "r439", "r440", "r441", "r443", "r458", "r459", "r460", "r461", "r462", "r463", "r480", "r527", "r528", "r529", "r536", "r587" ] }, "us-gaap_StatementLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StatementLineItems", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsTables", "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquity" ], "lang": { "en-us": { "role": { "label": "Statement [Line Items]", "terseLabel": "Statement", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [ "r168", "r169", "r170", "r201", "r488", "r532", "r537", "r540", "r541", "r542", "r543", "r544", "r545", "r548", "r551", "r552", "r553", "r554", "r555", "r556", "r557", "r558", "r559", "r561", "r562", "r563", "r564", "r565", "r567", "r569", "r570", "r573", "r574", "r575", "r576", "r577", "r578", "r579", "r580", "r581", "r582", "r583", "r584", "r587", "r639" ] }, "us-gaap_StatementOfCashFlowsAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StatementOfCashFlowsAbstract", "lang": { "en-us": { "role": { "label": "CONSOLIDATED STATEMENTS OF CASH FLOWS" } } }, "auth_ref": [] }, "us-gaap_StatementOfFinancialPositionAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StatementOfFinancialPositionAbstract", "lang": { "en-us": { "role": { "label": "CONSOLIDATED BALANCE SHEETS" } } }, "auth_ref": [] }, "us-gaap_StatementOfStockholdersEquityAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StatementOfStockholdersEquityAbstract", "lang": { "en-us": { "role": { "label": "CONSOLIDATED STATEMENTS OF STOCKHOLDERS' EQUITY" } } }, "auth_ref": [] }, "us-gaap_StatementTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StatementTable", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsTables", "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquity" ], "lang": { "en-us": { "role": { "label": "Statement [Table]", "documentation": "Schedule reflecting a Statement of Income, Statement of Cash Flows, Statement of Financial Position, Statement of Shareholders' Equity and Other Comprehensive Income, or other statement as needed." } } }, "auth_ref": [ "r168", "r169", "r170", "r201", "r488", "r532", "r537", "r540", "r541", "r542", "r543", "r544", "r545", "r548", "r551", "r552", "r553", "r554", "r555", "r556", "r557", "r558", "r559", "r561", "r562", "r563", "r564", "r565", "r567", "r569", "r570", "r573", "r574", "r575", "r576", "r577", "r578", "r579", "r580", "r581", "r582", "r583", "r584", "r587", "r639" ] }, "ecd_StkPrcOrTsrEstimationMethodTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "StkPrcOrTsrEstimationMethodTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "label": "Stock Price or TSR Estimation Method [Text Block]", "terseLabel": "Stock Price or TSR Estimation Method" } } }, "auth_ref": [ "r656", "r667", "r677", "r702" ] }, "us-gaap_StockAppreciationRightsSARSMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StockAppreciationRightsSARSMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "label": "Stock Appreciation Rights (SARs) [Member]", "terseLabel": "Stock Appreciation Rights (SARs)", "documentation": "Right to receive cash or shares equal to appreciation of predetermined number of grantor's shares during predetermined time period." } } }, "auth_ref": [] }, "us-gaap_StockIssuedDuringPeriodSharebasedCompensationAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StockIssuedDuringPeriodSharebasedCompensationAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquity" ], "lang": { "en-us": { "role": { "label": "Stock Issued or Granted During Period, Share-based Compensation [Abstract]", "terseLabel": "Issuance of Stock:" } } }, "auth_ref": [] }, "us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StockIssuedDuringPeriodSharesShareBasedCompensation", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquity" ], "lang": { "en-us": { "role": { "label": "Stock Issued During Period, Shares, Restricted And Performance Stock Award Gross", "terseLabel": "Issuance of restricted stock & performance stock (in shares)", "documentation": "Number, after forfeiture, of shares or units issued under share-based payment arrangement. Excludes shares or units issued under employee stock ownership plan (ESOP)." } } }, "auth_ref": [ "r14", "r78", "r79", "r111" ] }, "us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StockIssuedDuringPeriodSharesStockOptionsExercised", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquity" ], "lang": { "en-us": { "role": { "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercises in Period", "terseLabel": "Issuance of shares for options exercised (in shares)", "documentation": "Number of share options (or share units) exercised during the current period." } } }, "auth_ref": [ "r14", "r78", "r79", "r111", "r388" ] }, "us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StockIssuedDuringPeriodValueShareBasedCompensation", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquity" ], "lang": { "en-us": { "role": { "label": "Stock Issued During Period Value Restricted And Performance Stock Award Gross", "terseLabel": "Issuance of restricted stock & performance stock", "documentation": "Value, after forfeiture, of shares issued under share-based payment arrangement. Excludes employee stock ownership plan (ESOP)." } } }, "auth_ref": [ "r55", "r78", "r79", "r111" ] }, "us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StockIssuedDuringPeriodValueStockOptionsExercised", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquity" ], "lang": { "en-us": { "role": { "label": "Stock Issued During Period, Value, Stock Options Exercised", "terseLabel": "Issuance of shares for options exercised", "documentation": "Value of stock issued as a result of the exercise of stock options." } } }, "auth_ref": [ "r14", "r30", "r111" ] }, "fix_StockRepurchaseProgram2007Member": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "StockRepurchaseProgram2007Member", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityIncentiveAndOtherDetails" ], "lang": { "en-us": { "role": { "documentation": "Information pertaining to the March 2007 stock repurchase program.", "label": "Stock Repurchase Program 2007" } } }, "auth_ref": [] }, "us-gaap_StockRepurchaseProgramNumberOfSharesAuthorizedToBeRepurchased": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StockRepurchaseProgramNumberOfSharesAuthorizedToBeRepurchased", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityIncentiveAndOtherDetails" ], "lang": { "en-us": { "role": { "label": "Stock Repurchase Program, Number of Shares Authorized to be Repurchased", "terseLabel": "Number of shares of outstanding common stock authorized to be acquired under a stock repurchase program", "documentation": "The number of shares authorized to be repurchased by an entity's Board of Directors under a stock repurchase plan." } } }, "auth_ref": [] }, "us-gaap_StockholdersEquity": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StockholdersEquity", "crdr": "credit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets", "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquity" ], "lang": { "en-us": { "role": { "label": "Stockholders' Equity Attributable to Parent", "periodEndLabel": "BALANCE", "periodStartLabel": "BALANCE", "totalLabel": "Total stockholders' equity", "documentation": "Amount of equity (deficit) attributable to parent. Excludes temporary equity and equity attributable to noncontrolling interest." } } }, "auth_ref": [ "r79", "r82", "r83", "r101", "r550", "r566", "r588", "r589", "r633", "r646", "r732", "r738", "r792", "r813" ] }, "us-gaap_StockholdersEquityIncludingPortionAttributableToNoncontrollingInterestAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StockholdersEquityIncludingPortionAttributableToNoncontrollingInterestAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Stockholders' Equity, Including Portion Attributable to Noncontrolling Interest [Abstract]", "verboseLabel": "STOCKHOLDERS' EQUITY:" } } }, "auth_ref": [] }, "us-gaap_StockholdersEquityNoteAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StockholdersEquityNoteAbstract", "lang": { "en-us": { "role": { "label": "Stockholders' Equity" } } }, "auth_ref": [] }, "us-gaap_StockholdersEquityNoteDisclosureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StockholdersEquityNoteDisclosureTextBlock", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquity" ], "lang": { "en-us": { "role": { "label": "Stockholders' Equity Note Disclosure [Text Block]", "terseLabel": "Stockholders' Equity", "documentation": "The entire disclosure for equity." } } }, "auth_ref": [ "r108", "r165", "r330", "r332", "r333", "r334", "r335", "r336", "r337", "r338", "r339", "r340", "r341", "r342", "r343", "r442", "r590", "r591", "r597" ] }, "fix_SubordinateDebtAndPromissoryNoteMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "SubordinateDebtAndPromissoryNoteMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsDetails", "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsNotesToFormerOwnersDetails", "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails", "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsTables" ], "lang": { "en-us": { "role": { "documentation": "This element represents domestic or foreign subordinated debt and promissory note. Subordinated debt has a lower priority of repayment in liquidation of the entity's assets and promissory notes has a borrowing supported by a written promise to pay an obligation.", "label": "Notes to Former Owners" } } }, "auth_ref": [] }, "fix_SummitIndustrialConstructionLlcMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "SummitIndustrialConstructionLlcMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails", "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsDetails", "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsTables" ], "lang": { "en-us": { "role": { "documentation": "Represents information relating to Summit Industrial Construction, LLC Summit Houston Texas.", "label": "Summit Industrial Construction, LLC [Member]", "terseLabel": "Summit Texas" } } }, "auth_ref": [] }, "fix_SupplementalInformationRelatedToLeasesAbstract": { "xbrltype": "stringItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "SupplementalInformationRelatedToLeasesAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesMaturitiesOfLeaseLiabilitiesDetails" ], "lang": { "en-us": { "role": { "documentation": "No definition available.", "label": "Supplemental Information Related to Leases [Abstract]", "terseLabel": "Supplemental information related to leases:" } } }, "auth_ref": [] }, "us-gaap_SuretyBondMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "SuretyBondMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureCommitmentsAndContingenciesDetails" ], "lang": { "en-us": { "role": { "label": "Surety", "documentation": "An obligation arising from a three-party agreement that legally binds together a principal who needs the bond, an obligee who requires the bond and a surety company that sells the bond." } } }, "auth_ref": [] }, "ecd_TabularListTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "TabularListTableTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Tabular List [Table Text Block]", "terseLabel": "Tabular List, Table" } } }, "auth_ref": [ "r696" ] }, "fix_TechnologyMember": { "xbrltype": "domainItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "TechnologyMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureRevenueFromContractsWithCustomersDisaggregationOfRevenueDetails" ], "lang": { "en-us": { "role": { "documentation": "This members stands for technology.", "label": "Technology[Member]", "verboseLabel": "Technology" } } }, "auth_ref": [] }, "ecd_TotalShareholderRtnAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "TotalShareholderRtnAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Total Shareholder Return Amount", "terseLabel": "Total Shareholder Return Amount" } } }, "auth_ref": [ "r688" ] }, "ecd_TotalShareholderRtnVsPeerGroupTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "TotalShareholderRtnVsPeerGroupTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "label": "Total Shareholder Return Vs Peer Group [Text Block]", "terseLabel": "Total Shareholder Return Vs Peer Group" } } }, "auth_ref": [ "r695" ] }, "us-gaap_TradeAndOtherAccountsReceivableUnbilledReceivablesPolicy": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "TradeAndOtherAccountsReceivableUnbilledReceivablesPolicy", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureSummaryOfSignificantAccountingPoliciesAndEstimatesPolicies" ], "lang": { "en-us": { "role": { "label": "Trade and Other Accounts Receivable, Unbilled Receivables, Policy [Policy Text Block]", "terseLabel": "Unbilled Accounts Receivable", "documentation": "Disclosure of accounting policy for treatment of receivables that are billable but have not been billed as of the balance sheet date." } } }, "auth_ref": [ "r235" ] }, "us-gaap_TradeNamesMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "TradeNamesMember", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureAcquisitionsAcquiredIntangibleAssetsDetails", "http://www.comfortsystemsusa.com/role/DisclosureGoodwillAndIdentifiableIntangibleAssetsNetIdentifiableIntangibleAssetsNetDetails" ], "lang": { "en-us": { "role": { "label": "Trade Names [Member]", "terseLabel": "Trade Name", "documentation": "Rights acquired through registration of a business name to gain or protect exclusive use thereof." } } }, "auth_ref": [ "r62" ] }, "ecd_TradingArrAxis": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "TradingArrAxis", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "label": "Trading Arrangement [Axis]", "terseLabel": "Trading Arrangement:" } } }, "auth_ref": [ "r715" ] }, "ecd_TradingArrByIndTable": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "TradingArrByIndTable", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "label": "Trading Arrangements, by Individual [Table]", "terseLabel": "Trading Arrangements, by Individual" } } }, "auth_ref": [ "r717" ] }, "dei_TradingSymbol": { "xbrltype": "tradingSymbolItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "TradingSymbol", "presentation": [ "http://www.comfortsystemsusa.com/role/DocumentDocumentAndEntityInformation" ], "lang": { "en-us": { "role": { "label": "Trading Symbol", "documentation": "Trading symbol of an instrument as listed on an exchange." } } }, "auth_ref": [] }, "ecd_TrdArrAdoptionDate": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "TrdArrAdoptionDate", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "label": "Trading Arrangement Adoption Date", "terseLabel": "Adoption Date" } } }, "auth_ref": [ "r718" ] }, "ecd_TrdArrDuration": { "xbrltype": "durationItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "TrdArrDuration", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "label": "Trading Arrangement Duration", "terseLabel": "Arrangement Duration" } } }, "auth_ref": [ "r719" ] }, "ecd_TrdArrIndName": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "TrdArrIndName", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "label": "Trading Arrangement, Individual Name", "terseLabel": "Name" } } }, "auth_ref": [ "r717" ] }, "ecd_TrdArrIndTitle": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "TrdArrIndTitle", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "label": "Trading Arrangement, Individual Title", "terseLabel": "Title" } } }, "auth_ref": [ "r717" ] }, "ecd_TrdArrSecuritiesAggAvailAmt": { "xbrltype": "sharesItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "TrdArrSecuritiesAggAvailAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "label": "Trading Arrangement, Securities Aggregate Available Amount", "terseLabel": "Aggregate Available" } } }, "auth_ref": [ "r720" ] }, "ecd_TrdArrTerminationDate": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "TrdArrTerminationDate", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "label": "Trading Arrangement Termination Date", "terseLabel": "Termination Date" } } }, "auth_ref": [ "r718" ] }, "us-gaap_TreasuryStockAcquiredAverageCostPerShare": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "TreasuryStockAcquiredAverageCostPerShare", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityIncentiveAndOtherDetails" ], "lang": { "en-us": { "role": { "label": "Treasury Stock Acquired, Average Cost Per Share", "terseLabel": "Average price (in dollars per share)", "documentation": "Total cost of shares repurchased divided by the total number of shares repurchased." } } }, "auth_ref": [ "r53" ] }, "us-gaap_TreasuryStockCommonMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "TreasuryStockCommonMember", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquity" ], "lang": { "en-us": { "role": { "label": "Treasury Stock, Common [Member]", "terseLabel": "Treasury Stock", "documentation": "Previously issued common shares repurchased by the issuing entity and held in treasury." } } }, "auth_ref": [ "r53" ] }, "us-gaap_TreasuryStockCommonShares": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "TreasuryStockCommonShares", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheetsParenthetical", "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquity" ], "lang": { "en-us": { "role": { "label": "Treasury Stock, Shares", "periodEndLabel": "BALANCE (in shares)", "periodStartLabel": "BALANCE (in shares)", "terseLabel": "Treasury stock, shares", "documentation": "Number of previously issued common shares repurchased by the issuing entity and held in treasury." } } }, "auth_ref": [ "r53" ] }, "us-gaap_TreasuryStockSharesAcquired": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "TreasuryStockSharesAcquired", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityIncentiveAndOtherDetails", "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquity" ], "lang": { "en-us": { "role": { "label": "Treasury Stock, Shares, Acquired", "negatedLabel": "Share repurchase (in shares)", "verboseLabel": "Share repurchase (in shares)", "documentation": "Number of shares that have been repurchased during the period and are being held in treasury." } } }, "auth_ref": [ "r14", "r79", "r111" ] }, "us-gaap_TreasuryStockValue": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "TreasuryStockValue", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_StockholdersEquity", "weight": -1.0, "order": 3.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Treasury Stock, Value", "negatedLabel": "Treasury stock, at cost, 5,428,501 and 5,438,625 shares, respectively", "documentation": "The amount allocated to treasury stock. Treasury stock is common and preferred shares of an entity that were issued, repurchased by the entity, and are held in its treasury." } } }, "auth_ref": [ "r29", "r53", "r54" ] }, "us-gaap_TreasuryStockValueAcquiredCostMethod": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "TreasuryStockValueAcquiredCostMethod", "crdr": "debit", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfStockholdersEquity" ], "lang": { "en-us": { "role": { "label": "Treasury Stock, Value, Acquired, Cost Method", "negatedLabel": "Share repurchase", "documentation": "Equity impact of the cost of common and preferred stock that were repurchased during the period. Recorded using the cost method." } } }, "auth_ref": [ "r14", "r53", "r111" ] }, "fix_UnbilledAccountsReceivableAllowanceForCreditLoss": { "xbrltype": "monetaryItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "UnbilledAccountsReceivableAllowanceForCreditLoss", "crdr": "credit", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheetsParenthetical" ], "lang": { "en-us": { "role": { "documentation": "The amount of allowance for credit losses on unbilled receivable.", "label": "Unbilled Accounts Receivable, Allowance for Credit Loss", "terseLabel": "Unbilled accounts receivable, allowance for credit losses (in dollars)" } } }, "auth_ref": [] }, "us-gaap_UnbilledContractsReceivable": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "UnbilledContractsReceivable", "crdr": "debit", "calculation": { "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets": { "parentTag": "us-gaap_AssetsCurrent", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "label": "Unbilled Contracts Receivable", "terseLabel": "Unbilled accounts receivable, less allowance for credit losses of $929 and $850, respectively", "documentation": "Unbilled amounts due for services rendered or to be rendered, actions taken or to be taken, or a promise to refrain from taking certain actions in accordance with the terms of a legally binding agreement between the entity and, at a minimum, one other party. An example would be amounts associated with contracts or programs where the recognized revenue for performance thereunder exceeds the amounts billed under the terms thereof as of the date of the balance sheet." } } }, "auth_ref": [ "r487" ] }, "ecd_UndrlygSecurityMktPriceChngPct": { "xbrltype": "pureItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "UndrlygSecurityMktPriceChngPct", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "label": "Underlying Security Market Price Change, Percent", "terseLabel": "Underlying Security Market Price Change" } } }, "auth_ref": [ "r714" ] }, "us-gaap_UseOfEstimates": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "UseOfEstimates", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureSummaryOfSignificantAccountingPoliciesAndEstimatesPolicies" ], "lang": { "en-us": { "role": { "label": "Use of Estimates, Policy [Policy Text Block]", "terseLabel": "Use of Estimates", "documentation": "Disclosure of accounting policy for the use of estimates in the preparation of financial statements in conformity with generally accepted accounting principles." } } }, "auth_ref": [ "r37", "r38", "r39", "r124", "r125", "r126", "r127" ] }, "fix_VariableLeaseAndShortTermLeaseCost": { "xbrltype": "monetaryItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "VariableLeaseAndShortTermLeaseCost", "crdr": "debit", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureLeasesDetails" ], "lang": { "en-us": { "role": { "documentation": "Amount of variable lease cost and short-term lease cost, excluded from lease liability, recognized when obligation for payment is incurred for finance and operating leases.", "label": "Variable Lease and Short-term Lease, Cost", "terseLabel": "Variable lease expense and short-term lease expenses" } } }, "auth_ref": [] }, "us-gaap_VariableRateAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "VariableRateAxis", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "label": "Variable Rate [Axis]", "documentation": "Information by type of variable rate." } } }, "auth_ref": [] }, "us-gaap_VariableRateDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "VariableRateDomain", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureDebtObligationsOtherDetails" ], "lang": { "en-us": { "role": { "label": "Variable Rate [Domain]", "documentation": "Interest rate that fluctuates over time as a result of an underlying benchmark interest rate or index." } } }, "auth_ref": [] }, "fix_WeightedAverageCostOfCapital": { "xbrltype": "percentItemType", "nsuri": "http://www.comfortsystemsusa.com/20240331", "localname": "WeightedAverageCostOfCapital", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureFairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "documentation": "Percentage of weighted average cost of capital.", "label": "Weighted Average Cost Of Capital", "terseLabel": "Weighted average cost of capital" } } }, "auth_ref": [] }, "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "WeightedAverageNumberOfDilutedSharesOutstanding", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityNumberOfSharesDetails": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityNumberOfSharesDetails", "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations" ], "lang": { "en-us": { "role": { "label": "Weighted Average Number of Shares Outstanding, Diluted", "terseLabel": "Diluted", "totalLabel": "Shares used in computing earnings per share-diluted", "documentation": "The average number of shares or units issued and outstanding that are used in calculating diluted EPS or earnings per unit (EPU), determined based on the timing of issuance of shares or units in the period." } } }, "auth_ref": [ "r182", "r198" ] }, "us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "WeightedAverageNumberOfSharesOutstandingAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations" ], "lang": { "en-us": { "role": { "label": "Weighted Average Number of Shares Outstanding, Diluted [Abstract]", "terseLabel": "SHARES USED IN COMPUTING INCOME PER SHARE:" } } }, "auth_ref": [] }, "us-gaap_WeightedAverageNumberOfSharesOutstandingBasic": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "WeightedAverageNumberOfSharesOutstandingBasic", "calculation": { "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityNumberOfSharesDetails": { "parentTag": "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityNumberOfSharesDetails", "http://www.comfortsystemsusa.com/role/StatementConsolidatedStatementsOfOperations" ], "lang": { "en-us": { "role": { "label": "Weighted Average Number of Shares Outstanding, Basic", "terseLabel": "Basic", "verboseLabel": "Shares used in computing earnings per share-basic", "documentation": "Number of [basic] shares or units, after adjustment for contingently issuable shares or units and other shares or units not deemed outstanding, determined by relating the portion of time within a reporting period that common shares or units have been outstanding to the total time in that period." } } }, "auth_ref": [ "r181", "r198" ] }, "us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract", "presentation": [ "http://www.comfortsystemsusa.com/role/DisclosureStockholdersEquityNumberOfSharesDetails" ], "lang": { "en-us": { "role": { "label": "Weighted Average Number of Shares Outstanding Reconciliation [Abstract]", "terseLabel": "Reconciliation of the number of shares outstanding with the number of shares used in computing basic and diluted earnings per share" } } }, "auth_ref": [] } } } }, "std_ref": { "r0": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "25", "Paragraph": "1", "SubTopic": "20", "Topic": "940", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481913/940-20-25-1" }, "r1": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "30", "Paragraph": "7", "SubTopic": "30", "Topic": "805", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479637/805-30-30-7" }, "r2": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "30", "Paragraph": "8", "SubTopic": "30", "Topic": "805", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479637/805-30-30-8" }, "r3": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "35", "Paragraph": "1", "Subparagraph": "(b)", "SubTopic": "30", "Topic": "805", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479613/805-30-35-1" }, "r4": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "SubTopic": "230", "Topic": "830", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481877/830-230-45-1" }, "r5": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "14", "Subparagraph": "(a)", "SubTopic": "10", "Topic": "230", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-14" }, "r6": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "15", "Subparagraph": "(f)", "SubTopic": "10", "Topic": "230", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-15" }, "r7": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "25", "Subparagraph": "(g)", "SubTopic": "10", "Topic": "230", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-25" }, "r8": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "28", "Subparagraph": "(a)", "SubTopic": "10", "Topic": "230", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-28" }, "r9": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "28", "Subparagraph": "(b)", "SubTopic": "10", "Topic": "230", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-28" }, "r10": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "SubTopic": "10", "Topic": "360", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482099/360-10-50-1" }, "r11": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "SubTopic": "10", "Topic": "470", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481544/470-10-50-1" }, "r12": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "SubTopic": "10", "Topic": "825", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482907/825-10-50-1" }, "r13": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)", "SubTopic": "30", "Topic": "805", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479581/805-30-50-1" }, "r14": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "SubTopic": "10", "Topic": "505", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-2" }, "r15": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)", "SubTopic": "10", "Topic": "820", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-2" }, "r16": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2A", "Subparagraph": "(a)", "SubTopic": "10", "Topic": "718", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2A" }, "r17": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6A", "Subparagraph": "(a)", "SubTopic": "10", "Topic": "820", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-6A" }, "r18": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "60", "Paragraph": "1", "SubTopic": "10", "Topic": "820", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482053/820-10-60-1" }, "r19": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(22))", "SubTopic": "10", "Topic": "210", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r20": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "210", "SubTopic": "10", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02.19(a))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r21": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "210", "SubTopic": "10", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02.19(b),22(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r22": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "210", "SubTopic": "10", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02.19-26)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r23": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "210", "SubTopic": "10", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02.20)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r24": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "210", "SubTopic": "10", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02.21)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r25": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "210", "SubTopic": "10", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02.22(a)(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r26": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "210", "SubTopic": "10", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02.22)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r27": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "210", "SubTopic": "10", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02.24)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r28": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "210", "SubTopic": "10", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02.25)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r29": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "210", "SubTopic": "10", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02.29,30)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r30": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "210", "SubTopic": "10", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02.29-31)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r31": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "230", "SubTopic": "10", "Section": "45", "Paragraph": "13", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-13" }, "r32": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "230", "SubTopic": "10", "Section": "45", "Paragraph": "14", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-14" }, "r33": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "230", "SubTopic": "10", "Section": "45", "Paragraph": "15", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-15" }, "r34": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "230", "SubTopic": "10", "Section": "45", "Paragraph": "15", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-15" }, "r35": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "230", "SubTopic": "10", "Section": "45", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-4" }, "r36": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "260", "SubTopic": "10", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482662/260-10-50-1" }, "r37": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "275", "SubTopic": "10", "Section": "50", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-4" }, "r38": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "275", "SubTopic": "10", "Section": "50", "Paragraph": "8", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-8" }, "r39": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "275", "SubTopic": "10", "Section": "50", "Paragraph": "9", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-9" }, "r40": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "280", "SubTopic": "10", "Section": "50", "Paragraph": "22", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22" }, "r41": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "280", "SubTopic": "10", "Section": "50", "Paragraph": "25", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-25" }, "r42": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "280", "SubTopic": "10", "Section": "50", "Paragraph": "30", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-30" }, "r43": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "350", "SubTopic": "20", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r44": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "350", "SubTopic": "30", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482686/350-30-45-1" }, "r45": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "350", "SubTopic": "30", "Section": "45", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482686/350-30-45-2" }, "r46": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "350", "SubTopic": "30", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-1" }, "r47": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "350", "SubTopic": "30", "Section": "50", "Paragraph": "2", "Subparagraph": "((a)(1),(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-2" }, "r48": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "350", "SubTopic": "30", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-2" }, "r49": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "350", "SubTopic": "30", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-2" }, "r50": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "360", "SubTopic": "10", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482099/360-10-50-1" }, "r51": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "505", "SubTopic": "10", "Section": "50", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-3" }, "r52": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "505", "SubTopic": "10", "Section": "50", "Paragraph": "8", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-8" }, "r53": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "505", "SubTopic": "30", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481549/505-30-45-1" }, "r54": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "505", "SubTopic": "30", "Section": "50", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481520/505-30-50-4" }, "r55": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "718", "SubTopic": "10", "Section": "50", "Paragraph": "2", "Subparagraph": "(d)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r56": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "718", "SubTopic": "20", "Section": "55", "Paragraph": "12", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481089/718-20-55-12" }, "r57": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "718", "SubTopic": "20", "Section": "55", "Paragraph": "13", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481089/718-20-55-13" }, "r58": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "805", "SubTopic": "10", "Section": "50", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479328/805-10-50-2" }, "r59": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "805", "SubTopic": "10", "Section": "50", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479328/805-10-50-3" }, "r60": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "805", "SubTopic": "10", "Section": "55", "Paragraph": "37", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479303/805-10-55-37" }, "r61": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "805", "SubTopic": "20", "Section": "50", "Paragraph": "1", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479907/805-20-50-1" }, "r62": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "805", "SubTopic": "20", "Section": "55", "Paragraph": "14", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479876/805-20-55-14" }, "r63": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "805", "SubTopic": "20", "Section": "55", "Paragraph": "20", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479876/805-20-55-20" }, "r64": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "805", "SubTopic": "20", "Section": "55", "Paragraph": "20", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479876/805-20-55-20" }, "r65": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "805", "SubTopic": "30", "Section": "25", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479668/805-30-25-5" }, "r66": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "805", "SubTopic": "30", "Section": "25", "Paragraph": "6", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479668/805-30-25-6" }, "r67": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "820", "SubTopic": "10", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-2" }, "r68": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "820", "SubTopic": "10", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-2" }, "r69": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "820", "SubTopic": "10", "Section": "50", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-3" }, "r70": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "835", "SubTopic": "30", "Section": "45", "Paragraph": "1A", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482925/835-30-45-1A" }, "r71": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "835", "SubTopic": "30", "Section": "45", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482925/835-30-45-2" }, "r72": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "835", "SubTopic": "30", "Section": "45", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482925/835-30-45-3" }, "r73": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "835", "SubTopic": "30", "Section": "55", "Paragraph": "8", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482949/835-30-55-8" }, "r74": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "942", "SubTopic": "210", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-03.17)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1" }, "r75": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "942", "SubTopic": "470", "Section": "50", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480848/942-470-50-3" }, "r76": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(19))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r77": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(20))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r78": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(28))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r79": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(29))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r80": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(30)(a)(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r81": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(30)(a)(3))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r82": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(30))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r83": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(31))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r84": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(32))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r85": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03(10))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2" }, "r86": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03(20))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2" }, "r87": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03(8))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2" }, "r88": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03.1,2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2" }, "r89": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03.2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2" }, "r90": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03.4)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2" }, "r91": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03.7(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2" }, "r92": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03.7)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2" }, "r93": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03.9)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2" }, "r94": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "12", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-12" }, "r95": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "13", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-13" }, "r96": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "13", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-13" }, "r97": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "24", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-24" }, "r98": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "25", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-25" }, "r99": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "28", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-28" }, "r100": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "235", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org//235/tableOfContent" }, "r101": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "310", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SAB Topic 4.E)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480418/310-10-S99-2" }, "r102": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "350", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org//350/tableOfContent" }, "r103": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-1" }, "r104": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-2" }, "r105": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-2" }, "r106": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "440", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org//440/tableOfContent" }, "r107": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "470", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org//470/tableOfContent" }, "r108": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "505", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org//505/tableOfContent" }, "r109": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-6" }, "r110": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-7" }, "r111": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.3-04)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480008/505-10-S99-1" }, "r112": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 6.I.7)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479360/740-10-S99-1" }, "r113": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "805", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org//805/tableOfContent" }, "r114": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-2" }, "r115": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "942", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-03(11))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1" }, "r116": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "942", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-03(13))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1" }, "r117": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "942", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-03(16))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1" }, "r118": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "942", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-03(23))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1" }, "r119": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "942", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-04(15))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483589/942-220-S99-1" }, "r120": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "942", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-04(22))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483589/942-220-S99-1" }, "r121": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "942", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-04.9)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483589/942-220-S99-1" }, "r122": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "2", "Subparagraph": "(a)", "SubTopic": "20", "Topic": "740", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482659/740-20-45-2" }, "r123": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)", "SubTopic": "10", "Topic": "275", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-1" }, "r124": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)", "SubTopic": "10", "Topic": "275", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-1" }, "r125": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(c)", "SubTopic": "10", "Topic": "275", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-1" }, "r126": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "11", "SubTopic": "10", "Topic": "275", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-11" }, "r127": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "12", "SubTopic": "10", "Topic": "275", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-12" }, "r128": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Subparagraph": "(a)", "SubTopic": "10", "Topic": "606", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-13" }, "r129": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Subparagraph": "(b)(1)", "SubTopic": "10", "Topic": "606", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-13" }, "r130": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "9", "Subparagraph": "(b)", "SubTopic": "10", "Topic": "740", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-9" }, "r131": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 6.M.Q4)", "SubTopic": "20", "Topic": "326", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483530/326-20-S99-1" }, "r132": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.4-08(h))", "SubTopic": "10", "Topic": "235", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1" }, "r133": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Accounting Standards Codification", "Topic": "275", "Publisher": "FASB", "URI": "https://asc.fasb.org//275/tableOfContent" }, "r134": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Accounting Standards Codification", "Topic": "606", "Publisher": "FASB", "URI": "https://asc.fasb.org//606/tableOfContent" }, "r135": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "105", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "6", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479343/105-10-65-6" }, "r136": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "205", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483499/205-20-50-1" }, "r137": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "205", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483499/205-20-50-7" }, "r138": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483467/210-10-45-1" }, "r139": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483467/210-10-45-5" }, "r140": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r141": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(15))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r142": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(17))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r143": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(18))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r144": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(20))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r145": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(22))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r146": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(3)(a)(4))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r147": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(4))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r148": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(6))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r149": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(9))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r150": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1A", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-1A" }, "r151": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1B", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-1B" }, "r152": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482765/220-10-50-1" }, "r153": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482765/220-10-50-4" }, "r154": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482765/220-10-50-5" }, "r155": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482765/220-10-50-6" }, "r156": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(210.5-03(11))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2" }, "r157": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2" }, "r158": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03(25))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2" }, "r159": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03(5))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2" }, "r160": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "15", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-15" }, "r161": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-2" }, "r162": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "24", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-24" }, "r163": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "8", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482913/230-10-50-8" }, "r164": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "235", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.4-08(c))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1" }, "r165": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "235", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.4-08(e)(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1" }, "r166": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "235", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.4-08(g)(1)(ii))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1" }, "r167": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "235", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.12-04(a))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-3" }, "r168": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "23", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483421/250-10-45-23" }, "r169": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "24", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483421/250-10-45-24" }, "r170": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "5", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483421/250-10-45-5" }, "r171": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-1" }, "r172": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-1" }, "r173": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "11", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-11" }, "r174": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "11", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-11" }, "r175": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-3" }, "r176": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-4" }, "r177": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-7" }, "r178": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-7" }, "r179": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "8", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-8" }, "r180": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "9", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-9" }, "r181": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "10", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-10" }, "r182": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "16", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-16" }, "r183": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-2" }, "r184": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "22", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-22" }, "r185": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "23", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-23" }, "r186": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "26", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-26" }, "r187": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "28A", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-28A" }, "r188": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "44", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-44" }, "r189": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "48", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-48" }, "r190": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "48", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-48" }, "r191": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "51", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-51" }, "r192": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "52", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-52" }, "r193": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "53", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-53" }, "r194": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "54", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-54" }, "r195": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "60B", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-60B" }, "r196": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "60B", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-60B" }, "r197": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "7", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-7" }, "r198": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482662/260-10-50-1" }, "r199": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482662/260-10-50-1" }, "r200": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "15", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482635/260-10-55-15" }, "r201": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "272", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483014/272-10-45-1" }, "r202": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org//280/tableOfContent" }, "r203": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "15", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-15" }, "r204": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "21", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-21" }, "r205": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "21", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-21" }, "r206": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22" }, "r207": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22" }, "r208": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22" }, "r209": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22" }, "r210": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22" }, "r211": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22" }, "r212": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22" }, "r213": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(g)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22" }, "r214": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(h)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22" }, "r215": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(j)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22" }, "r216": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "25", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-25" }, "r217": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "25", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-25" }, "r218": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "26", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-26" }, "r219": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "30", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-30" }, "r220": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "30", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-30" }, "r221": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "30", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-30" }, "r222": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "30", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-30" }, "r223": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "31", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-31" }, "r224": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "32", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-32" }, "r225": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "32", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-32" }, "r226": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "32", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-32" }, "r227": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "32", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-32" }, "r228": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "32", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-32" }, "r229": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "32", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-32" }, "r230": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "34", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-34" }, "r231": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "40", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-40" }, "r232": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "41", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-41" }, "r233": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "41", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-41" }, "r234": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "42", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-42" }, "r235": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "310", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org//310/tableOfContent" }, "r236": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "310", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481962/310-10-50-4" }, "r237": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "321", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479536/321-10-50-3" }, "r238": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "321", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479536/321-10-50-3" }, "r239": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "323", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481687/323-10-50-3" }, "r240": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "4", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479654/326-10-65-4" }, "r241": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "5", "Subparagraph": "(c)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479654/326-10-65-5" }, "r242": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "30", "Paragraph": "4A", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479391/326-20-30-4A" }, "r243": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "30", "Paragraph": "5A", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479391/326-20-30-5A" }, "r244": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "35", "Paragraph": "8A", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479366/326-20-35-8A" }, "r245": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479344/326-20-45-1" }, "r246": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479344/326-20-45-5" }, "r247": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "11", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479319/326-20-50-11" }, "r248": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479319/326-20-50-13" }, "r249": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "14", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479319/326-20-50-14" }, "r250": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "17", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479319/326-20-50-17" }, "r251": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "21", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479319/326-20-50-21" }, "r252": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3C", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479319/326-20-50-3C" }, "r253": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3D", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479319/326-20-50-3D" }, "r254": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "30", "Paragraph": "1B", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479175/326-30-30-1B" }, "r255": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "35", "Paragraph": "13A", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479148/326-30-35-13A" }, "r256": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "35", "Paragraph": "7A", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479148/326-30-35-7A" }, "r257": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3A", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479106/326-30-50-3A" }, "r258": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3C", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479106/326-30-50-3C" }, "r259": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3D", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479106/326-30-50-3D" }, "r260": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479106/326-30-50-7" }, "r261": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482598/350-20-45-1" }, "r262": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r263": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r264": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r265": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r266": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r267": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r268": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r269": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(g)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r270": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(h)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r271": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1A", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1A" }, "r272": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-2" }, "r273": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-1" }, "r274": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-1" }, "r275": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-2" }, "r276": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-2" }, "r277": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "360", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482099/360-10-50-3" }, "r278": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "360", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482099/360-10-50-3" }, "r279": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "420", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482017/420-10-50-1" }, "r280": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "420", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482017/420-10-50-1" }, "r281": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "420", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SAB Topic 5.P.4(d))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479823/420-10-S99-2" }, "r282": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "440", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482648/440-10-50-4" }, "r283": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "440", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482648/440-10-50-4" }, "r284": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "450", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483076/450-20-50-1" }, "r285": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "450", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483076/450-20-50-4" }, "r286": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "450", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "9", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483076/450-20-50-9" }, "r287": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "450", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 5.Y.Q2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480102/450-20-S99-1" }, "r288": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "450", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 5.Y.Q4)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480102/450-20-S99-1" }, "r289": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "460", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482425/460-10-50-3" }, "r290": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1A", "Subparagraph": "(SX 210.13-01(a)(4)(i))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1A" }, "r291": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1A", "Subparagraph": "(SX 210.13-01(a)(4)(iii)(A))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1A" }, "r292": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1A", "Subparagraph": "(SX 210.13-01(a)(4)(iii)(B))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1A" }, "r293": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1A", "Subparagraph": "(SX 210.13-01(a)(4)(iv))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1A" }, "r294": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1A", "Subparagraph": "(SX 210.13-01(a)(5))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1A" }, "r295": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1B", "Subparagraph": "(SX 210.13-02(a)(4)(i))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B" }, "r296": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1B", "Subparagraph": "(SX 210.13-02(a)(4)(iii)(A)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B" }, "r297": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1B", "Subparagraph": "(SX 210.13-02(a)(4)(iii)(A))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B" }, "r298": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1B", "Subparagraph": "(SX 210.13-02(a)(4)(iii)(B)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B" }, "r299": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1B", "Subparagraph": "(SX 210.13-02(a)(4)(iii)(B))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B" }, "r300": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1B", "Subparagraph": "(SX 210.13-02(a)(4)(iii)(C))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B" }, "r301": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1B", "Subparagraph": "(SX 210.13-02(a)(4)(iv))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B" }, "r302": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1B", "Subparagraph": "(SX 210.13-02(a)(5))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B" }, "r303": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1B", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1B" }, "r304": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1B", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1B" }, "r305": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1B", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1B" }, "r306": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1B", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1B" }, "r307": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1B", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1B" }, "r308": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1B", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1B" }, "r309": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1B", "Subparagraph": "(g)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1B" }, "r310": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1B", "Subparagraph": "(h)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1B" }, "r311": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1B", "Subparagraph": "(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1B" }, "r312": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1C", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1C" }, "r313": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1C", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1C" }, "r314": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1C", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1C" }, "r315": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1D", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1D" }, "r316": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1D", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1D" }, "r317": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1D", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1D" }, "r318": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1E", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1E" }, "r319": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1E", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1E" }, "r320": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1E", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1E" }, "r321": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1E", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1E" }, "r322": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1F", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1F" }, "r323": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1F", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1F" }, "r324": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1F", "Subparagraph": "(b)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1F" }, "r325": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1F", "Subparagraph": "(b)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1F" }, "r326": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1I", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1I" }, "r327": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1I", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1I" }, "r328": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1I", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1I" }, "r329": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1I", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1I" }, "r330": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-13" }, "r331": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-13" }, "r332": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-13" }, "r333": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Subparagraph": "(g)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-13" }, "r334": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Subparagraph": "(h)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-13" }, "r335": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Subparagraph": "(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-13" }, "r336": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "14", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-14" }, "r337": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "14", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-14" }, "r338": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "14", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-14" }, "r339": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "16", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-16" }, "r340": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "18", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-18" }, "r341": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "18", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-18" }, "r342": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "18", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-18" }, "r343": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.3-04)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480008/505-10-S99-1" }, "r344": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479837/606-10-45-1" }, "r345": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479837/606-10-45-2" }, "r346": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479837/606-10-45-3" }, "r347": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "10", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-10" }, "r348": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "12", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-12" }, "r349": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "12", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-12" }, "r350": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "12", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-12" }, "r351": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "12", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-12" }, "r352": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "12", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-12" }, "r353": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Subparagraph": "(b)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-13" }, "r354": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "15", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-15" }, "r355": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "17", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-17" }, "r356": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "18", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-18" }, "r357": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "18", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-18" }, "r358": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "19", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-19" }, "r359": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "20", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-20" }, "r360": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "20", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-20" }, "r361": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "20", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-20" }, "r362": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "20", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-20" }, "r363": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-4" }, "r364": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-5" }, "r365": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "8", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-8" }, "r366": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "8", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-8" }, "r367": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "9", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-9" }, "r368": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1" }, "r369": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)(iv)(01)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1" }, "r370": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)(iv)(02)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1" }, "r371": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)(iv)(02)(A)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1" }, "r372": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)(iv)(02)(B)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1" }, "r373": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)(iv)(02)(C)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1" }, "r374": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)(iv)(03)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1" }, "r375": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "80", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480576/715-80-50-5" }, "r376": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "35", "Paragraph": "1D", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480483/718-10-35-1D" }, "r377": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "35", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480483/718-10-35-2" }, "r378": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "35", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480483/718-10-35-3" }, "r379": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480454/718-10-45-1" }, "r380": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r381": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r382": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r383": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r384": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(ii)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r385": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iii)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r386": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iv)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r387": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iv)(01)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r388": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iv)(02)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r389": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iv)(03)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r390": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iv)(04)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r391": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r392": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(ii)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r393": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(iii)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r394": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(iii)(01)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r395": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(iii)(02)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r396": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(iii)(03)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r397": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(d)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r398": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(d)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r399": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(e)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r400": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(e)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r401": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)(2)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r402": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)(2)(ii)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r403": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)(2)(iii)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r404": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)(2)(iv)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r405": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)(2)(v)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r406": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "15", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480336/718-10-65-15" }, "r407": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "15", "Subparagraph": "(f)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480336/718-10-65-15" }, "r408": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "15", "Subparagraph": "(f)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480336/718-10-65-15" }, "r409": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "25", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482525/740-10-45-25" }, "r410": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "28", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482525/740-10-45-28" }, "r411": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482525/740-10-45-4" }, "r412": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "6", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482525/740-10-45-6" }, "r413": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "10", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-10" }, "r414": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "17", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-17" }, "r415": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "19", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-19" }, "r416": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "20", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-20" }, "r417": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "9", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-9" }, "r418": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "8", "Subparagraph": "(d)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482615/740-10-65-8" }, "r419": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "8", "Subparagraph": "(d)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482615/740-10-65-8" }, "r420": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB TOPIC 6.I.7)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479360/740-10-S99-1" }, "r421": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 6.I.Fact.1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479360/740-10-S99-1" }, "r422": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 6.I.Fact.2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479360/740-10-S99-1" }, "r423": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479907/805-20-50-5" }, "r424": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479907/805-20-50-5" }, "r425": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479581/805-30-50-1" }, "r426": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479581/805-30-50-1" }, "r427": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(c)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479581/805-30-50-1" }, "r428": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(a)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479581/805-30-50-4" }, "r429": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "810", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "19", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481231/810-10-45-19" }, "r430": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "810", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "25", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481231/810-10-45-25" }, "r431": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "810", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "25", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481231/810-10-45-25" }, "r432": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "810", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1A", "Subparagraph": "(a)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481203/810-10-50-1A" }, "r433": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "810", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1A", "Subparagraph": "(c)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481203/810-10-50-1A" }, "r434": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "810", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(bb)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481203/810-10-50-3" }, "r435": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "810", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481203/810-10-50-3" }, "r436": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "6", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480528/815-20-65-6" }, "r437": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "6", "Subparagraph": "(h)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480528/815-20-65-6" }, "r438": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "6", "Subparagraph": "(h)(1)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480528/815-20-65-6" }, "r439": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "6", "Subparagraph": "(h)(1)(iii)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480528/815-20-65-6" }, "r440": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "6", "Subparagraph": "(h)(1)(iv)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480528/815-20-65-6" }, "r441": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "6", "Subparagraph": "(i)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480528/815-20-65-6" }, "r442": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480237/815-40-50-6" }, "r443": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "1", "Subparagraph": "(e)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480175/815-40-65-1" }, "r444": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "1", "Subparagraph": "(e)(4)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480175/815-40-65-1" }, "r445": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "1", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480175/815-40-65-1" }, "r446": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-2" }, "r447": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-2" }, "r448": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-2" }, "r449": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(bbb)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-2" }, "r450": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(bbb)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-2" }, "r451": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(bbb)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-2" }, "r452": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-2" }, "r453": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-3" }, "r454": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6A", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-6A" }, "r455": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "825", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "2", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482736/825-10-45-2" }, "r456": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "825", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "10", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482907/825-10-50-10" }, "r457": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "825", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "28", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482907/825-10-50-28" }, "r458": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "830", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "17", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481694/830-30-45-17" }, "r459": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "830", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "20", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481694/830-30-45-20" }, "r460": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "830", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "20", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481694/830-30-45-20" }, "r461": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "830", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "20", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481694/830-30-45-20" }, "r462": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "830", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "20", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481694/830-30-45-20" }, "r463": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "830", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481674/830-30-50-1" }, "r464": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "835", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483013/835-20-50-1" }, "r465": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "835", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482925/835-30-45-3" }, "r466": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "835", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482900/835-30-50-1" }, "r467": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org//842-20/tableOfContent" }, "r468": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479041/842-20-45-1" }, "r469": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479041/842-20-45-1" }, "r470": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479041/842-20-45-2" }, "r471": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "5", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479041/842-20-45-5" }, "r472": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-1" }, "r473": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-3" }, "r474": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(a)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-3" }, "r475": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(g)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-4" }, "r476": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(g)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-4" }, "r477": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(g)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-4" }, "r478": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(g)(4)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-4" }, "r479": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-6" }, "r480": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "848", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "2", "Subparagraph": "(a)(3)(iii)(03)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483550/848-10-65-2" }, "r481": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(bb)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3" }, "r482": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(bb)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3" }, "r483": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(bb)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3" }, "r484": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3" }, "r485": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "910", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482546/910-10-50-6" }, "r486": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "912", "SubTopic": "310", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "11", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482312/912-310-45-11" }, "r487": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "912", "SubTopic": "310", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482312/912-310-45-2" }, "r488": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "924", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 11.L)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479941/924-10-S99-1" }, "r489": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "926", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483154/926-20-50-5" }, "r490": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "928", "SubTopic": "340", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483147/928-340-50-1" }, "r491": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "942", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-03(10)(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1" }, "r492": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "942", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-04(27))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483589/942-220-S99-1" }, "r493": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "942", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-05(b)(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479557/942-235-S99-1" }, "r494": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "942", "SubTopic": "360", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480842/942-360-50-1" }, "r495": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(12))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1" }, "r496": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(15)(b)(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1" }, "r497": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(16)(a)(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1" }, "r498": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(19))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1" }, "r499": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(21))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1" }, "r500": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(22))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1" }, "r501": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(23)(a)(4))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1" }, "r502": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(25))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1" }, "r503": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(8))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1" }, "r504": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-04(11))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483586/944-220-S99-1" }, "r505": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-04(16))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483586/944-220-S99-1" }, "r506": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-04(18))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483586/944-220-S99-1" }, "r507": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-04(23))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483586/944-220-S99-1" }, "r508": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-04(9))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483586/944-220-S99-1" }, "r509": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-16(Column A))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1" }, "r510": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-16(Column B))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1" }, "r511": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-16(Column C))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1" }, "r512": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-16(Column D))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1" }, "r513": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-16(Column E))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1" }, "r514": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-16(Column F))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1" }, "r515": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-16(Column G))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1" }, "r516": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-16(Column H))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1" }, "r517": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-16(Column I))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1" }, "r518": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-16(Column J))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1" }, "r519": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-16(Column K))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1" }, "r520": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.12-17(Column A))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-2" }, "r521": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.12-17(Column B))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-2" }, "r522": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.12-17(Column C))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-2" }, "r523": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.12-17(Column D))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-2" }, "r524": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.12-17(Column E))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-2" }, "r525": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.12-17(Column F))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-2" }, "r526": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7A", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480081/944-40-50-7A" }, "r527": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "2", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480016/944-40-65-2" }, "r528": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "2", "Subparagraph": "(f)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480016/944-40-65-2" }, "r529": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "2", "Subparagraph": "(f)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480016/944-40-65-2" }, "r530": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "2", "Subparagraph": "(g)(2)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480016/944-40-65-2" }, "r531": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "2", "Subparagraph": "(h)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480016/944-40-65-2" }, "r532": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.6-03(d))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479886/946-10-S99-3" }, "r533": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.6-03(h)(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479886/946-10-S99-3" }, "r534": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "11", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480990/946-20-50-11" }, "r535": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "205", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "3", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480767/946-205-45-3" }, "r536": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "205", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "4", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480767/946-205-45-4" }, "r537": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480555/946-210-45-4" }, "r538": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-6" }, "r539": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-6" }, "r540": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r541": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(12)(b)(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r542": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(12)(b)(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r543": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(12)(b)(3))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r544": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(13)(a)(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r545": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(13)(a)(3))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r546": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(14))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r547": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(15))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r548": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(16)(a))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r549": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(17))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r550": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(19))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r551": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(2)(a))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r552": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(2)(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r553": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(3)(a))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r554": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(3)(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r555": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(3)(c))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r556": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(6)(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r557": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(6)(c))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r558": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(6)(d))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r559": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(6)(e))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r560": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(8))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r561": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(9)(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r562": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(9)(c))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r563": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(9)(d))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r564": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(9)(e))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r565": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.6-05(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-2" }, "r566": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.6-05(4))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-2" }, "r567": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "3", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483581/946-220-45-3" }, "r568": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "7", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483581/946-220-45-7" }, "r569": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r570": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(2)(a))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r571": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(2)(g)(3))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r572": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(3))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r573": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(a)(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r574": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(a)(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r575": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(a)(3))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r576": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(a)(5))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r577": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(a)(6))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r578": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(a)(7))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r579": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(c)(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r580": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(c)(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r581": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(c)(3))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r582": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(c)(5))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r583": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(c)(6))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r584": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(c)(7))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r585": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(9))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r586": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.6-09(1)(d))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-3" }, "r587": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.6-09(4)(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-3" }, "r588": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.6-09(6))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-3" }, "r589": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.6-09(7))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-3" }, "r590": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481062/946-235-50-2" }, "r591": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481062/946-235-50-2" }, "r592": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-12(Column A)(Footnote 2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-1" }, "r593": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.12-12A(Column A)(Footnote 2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-2" }, "r594": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.12-12B(Column A)(Footnote 4)(a))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-3" }, "r595": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.12-12B(Column A)(Footnote 4)(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-3" }, "r596": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "6", "Subparagraph": "(SX 210.12-14(Column A)(Footnote 2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-6" }, "r597": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "505", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481004/946-505-50-6" }, "r598": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "954", "SubTopic": "440", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480327/954-440-50-1" }, "r599": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "976", "SubTopic": "310", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482856/976-310-50-1" }, "r600": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "978", "SubTopic": "310", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482707/978-310-50-1" }, "r601": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(e)", "SubTopic": "10", "Topic": "235", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483426/235-10-50-4" }, "r602": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "13H", "Subparagraph": "(a)", "SubTopic": "40", "Topic": "944", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480046/944-40-55-13H" }, "r603": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483467/210-10-45-1" }, "r604": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483467/210-10-45-1" }, "r605": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "52", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482635/260-10-55-52" }, "r606": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "30", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-30" }, "r607": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "31", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-31" }, "r608": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "310", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "12A", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481933/310-10-55-12A" }, "r609": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "24", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482548/350-20-55-24" }, "r610": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1B", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1B" }, "r611": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "69B", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481568/470-20-55-69B" }, "r612": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "69C", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481568/470-20-55-69C" }, "r613": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "69E", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481568/470-20-55-69E" }, "r614": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "69F", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481568/470-20-55-69F" }, "r615": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-13" }, "r616": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "10", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-10" }, "r617": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "91", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479777/606-10-55-91" }, "r618": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "91", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479777/606-10-55-91" }, "r619": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "91", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479777/606-10-55-91" }, "r620": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "91", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479777/606-10-55-91" }, "r621": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "91", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479777/606-10-55-91" }, "r622": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "91", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479777/606-10-55-91" }, "r623": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "91", "Subparagraph": "(g)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479777/606-10-55-91" }, "r624": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)(ii)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1" }, "r625": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)(iv)(01)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1" }, "r626": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "17", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480482/715-20-55-17" }, "r627": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "715", "SubTopic": "80", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "11", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480576/715-80-50-11" }, "r628": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "715", "SubTopic": "80", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480576/715-80-50-6" }, "r629": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "715", "SubTopic": "80", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "8", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480547/715-80-55-8" }, "r630": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "810", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "4J", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481175/810-10-55-4J" }, "r631": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "810", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "4K", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481175/810-10-55-4K" }, "r632": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "53", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479589/842-20-55-53" }, "r633": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "852", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "10", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481372/852-10-55-10" }, "r634": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "944", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479401/944-30-55-2" }, "r635": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "29F", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480046/944-40-55-29F" }, "r636": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-1" }, "r637": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(a)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-6" }, "r638": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480493/946-210-55-1" }, "r639": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "310", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480833/946-310-45-1" }, "r640": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-12(Column A)(Footnote 2)(i))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-1" }, "r641": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.12-12A(Column A)(Footnote 2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-2" }, "r642": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.12-12B(Column A)(Footnote 1)(a))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-3" }, "r643": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "6", "Subparagraph": "(SX 210.12-14(Column A)(Footnote 2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-6" }, "r644": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "830", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "10", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480167/946-830-55-10" }, "r645": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "830", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "11", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480167/946-830-55-11" }, "r646": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "830", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "12", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480167/946-830-55-12" }, "r647": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Exchange Act", "Number": "240", "Section": "12", "Subsection": "b" }, "r648": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Exchange Act", "Number": "240", "Section": "12", "Subsection": "b-2" }, "r649": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Exchange Act", "Number": "240", "Section": "12", "Subsection": "d1-1" }, "r650": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 10-Q", "Number": "240", "Section": "308", "Subsection": "a" }, "r651": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "16", "Subsection": "J", "Paragraph": "a" }, "r652": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "1" }, "r653": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "1", "Subparagraph": "i" }, "r654": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "1", "Subparagraph": "i", "Sentence": "A" }, "r655": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "1", "Subparagraph": "i", "Sentence": "B" }, "r656": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "1", "Subparagraph": "i", "Sentence": "C" }, "r657": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "1", "Subparagraph": "i", "Sentence": "D" }, "r658": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "1", "Subparagraph": "i", "Sentence": "E" }, "r659": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "1", "Subparagraph": "ii" }, "r660": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "1", "Subparagraph": "iii" }, "r661": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "2" }, "r662": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Subsection": "F", "Paragraph": "1", "Subparagraph": "ii", "Section": "6" }, "r663": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "a" }, "r664": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "a", "Subparagraph": "1" }, "r665": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "a", "Subparagraph": "1", "Sentence": "i" }, "r666": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "a", "Subparagraph": "1", "Sentence": "ii" }, "r667": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "a", "Subparagraph": "1", "Sentence": "iii" }, "r668": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "a", "Subparagraph": "1", "Sentence": "iv" }, "r669": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "a", "Subparagraph": "1", "Sentence": "v" }, "r670": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "a", "Subparagraph": "2" }, "r671": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "a", "Subparagraph": "3" }, "r672": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "b" }, "r673": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "a" }, "r674": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "a", "Subparagraph": "1" }, "r675": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "a", "Subparagraph": "1", "Sentence": "i" }, "r676": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "a", "Subparagraph": "1", "Sentence": "ii" }, "r677": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "a", "Subparagraph": "1", "Sentence": "iii" }, "r678": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "a", "Subparagraph": "1", "Sentence": "iv" }, "r679": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "a", "Subparagraph": "1", "Sentence": "v" }, "r680": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "a", "Subparagraph": "2" }, "r681": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "a", "Subparagraph": "3" }, "r682": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "b" }, "r683": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Forms 10-K, 10-Q, 20-F", "Number": "240", "Section": "13", "Subsection": "a-1" }, "r684": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v" }, "r685": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "1" }, "r686": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "2", "Subparagraph": "ii" }, "r687": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "2", "Subparagraph": "iii" }, "r688": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "2", "Subparagraph": "iv" }, "r689": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "2", "Subparagraph": "vi" }, "r690": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "3" }, "r691": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "4" }, "r692": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "5", "Subparagraph": "i" }, "r693": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "5", "Subparagraph": "ii" }, "r694": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "5", "Subparagraph": "iii" }, "r695": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "5", "Subparagraph": "iv" }, "r696": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "6" }, "r697": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "6", "Subparagraph": "i" }, "r698": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "1" }, "r699": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "1", "Subparagraph": "i" }, "r700": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "1", "Subparagraph": "i", "Sentence": "A" }, "r701": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "1", "Subparagraph": "i", "Sentence": "B" }, "r702": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "1", "Subparagraph": "i", "Sentence": "C" }, "r703": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "1", "Subparagraph": "i", "Sentence": "D" }, "r704": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "1", "Subparagraph": "i", "Sentence": "E" }, "r705": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "1", "Subparagraph": "ii" }, "r706": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "1", "Subparagraph": "iii" }, "r707": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "2" }, "r708": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "x", "Paragraph": "1" }, "r709": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "x", "Paragraph": "2" }, "r710": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "x", "Paragraph": "2", "Subparagraph": "ii", "Sentence": "A" }, "r711": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "x", "Paragraph": "2", "Subparagraph": "ii", "Sentence": "C" }, "r712": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "x", "Paragraph": "2", "Subparagraph": "ii", "Sentence": "D" }, "r713": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "x", "Paragraph": "2", "Subparagraph": "ii", "Sentence": "E" }, "r714": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "x", "Paragraph": "2", "Subparagraph": "ii", "Sentence": "F" }, "r715": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "408", "Subsection": "a" }, "r716": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "408", "Subsection": "a", "Paragraph": "1" }, "r717": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "408", "Subsection": "a", "Paragraph": "2", "Subparagraph": "A" }, "r718": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "408", "Subsection": "a", "Paragraph": "2", "Subparagraph": "B" }, "r719": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "408", "Subsection": "a", "Paragraph": "2", "Subparagraph": "C" }, "r720": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "408", "Subsection": "a", "Paragraph": "2", "Subparagraph": "D" }, "r721": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "408", "Subsection": "b", "Paragraph": "1" }, "r722": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-T", "Number": "232", "Section": "405" }, "r723": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Subparagraph": "(b)(1)", "SubTopic": "10", "Topic": "606", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-13" }, "r724": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4H", "SubTopic": "40", "Topic": "944", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480081/944-40-50-4H" }, "r725": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "9C", "Subparagraph": "(d)", "SubTopic": "40", "Topic": "944", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480046/944-40-55-9C" }, "r726": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(3)(a)(4))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r727": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(9))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r728": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482765/220-10-50-6" }, "r729": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "28", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-28" }, "r730": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "28", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-28" }, "r731": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "235", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.4-08(f))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1" }, "r732": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "235", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.4-08(g)(1)(ii))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1" }, "r733": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "235", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.4-08(h)(1)(Note 1))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1" }, "r734": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "23", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483421/250-10-45-23" }, "r735": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "24", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483421/250-10-45-24" }, "r736": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "5", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483421/250-10-45-5" }, "r737": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "18", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-18" }, "r738": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "323", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481687/323-10-50-3" }, "r739": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r740": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r741": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r742": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r743": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r744": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r745": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r746": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(g)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r747": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(h)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r748": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1A", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1A" }, "r749": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-2" }, "r750": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "360", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482130/360-10-45-5" }, "r751": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "360", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482099/360-10-50-3" }, "r752": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "410", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "10", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481931/410-30-50-10" }, "r753": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "450", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org//450/tableOfContent" }, "r754": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "450", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483076/450-20-50-1" }, "r755": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "450", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483076/450-20-50-4" }, "r756": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "450", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "9", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483076/450-20-50-9" }, "r757": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "450", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "9", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483076/450-20-50-9" }, "r758": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "450", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 5.Y.Q2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480102/450-20-S99-1" }, "r759": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1A", "Subparagraph": "(SX 210.13-01(a)(4)(ii))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1A" }, "r760": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1A", "Subparagraph": "(SX 210.13-01(a)(4)(iii))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1A" }, "r761": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1B", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1B" }, "r762": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "10", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-10" }, "r763": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-5" }, "r764": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r765": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r766": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r767": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r768": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(ii)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r769": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iii)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r770": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iv)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r771": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iv)(01)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r772": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iv)(02)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r773": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iv)(03)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r774": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iv)(04)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r775": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r776": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(ii)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r777": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(iii)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r778": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(iii)(01)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r779": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(iii)(02)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r780": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(iii)(03)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r781": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(d)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r782": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(d)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r783": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(e)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r784": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(e)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r785": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)(2)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r786": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)(2)(ii)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r787": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)(2)(iii)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r788": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)(2)(iv)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r789": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)(2)(v)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r790": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "815", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "1", "Subparagraph": "(e)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480175/815-40-65-1" }, "r791": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(bbb)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-2" }, "r792": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "825", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "28", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482907/825-10-50-28" }, "r793": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "4", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479041/842-20-45-4" }, "r794": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(a)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-3" }, "r795": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-6" }, "r796": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "852", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481404/852-10-50-7" }, "r797": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "852", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481404/852-10-50-7" }, "r798": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3" }, "r799": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3" }, "r800": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3" }, "r801": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(b)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-4" }, "r802": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(b)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-4" }, "r803": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(b)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-4" }, "r804": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(16)(a)(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1" }, "r805": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2B", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479432/944-30-50-2B" }, "r806": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480081/944-40-50-6" }, "r807": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7A", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480081/944-40-50-7A" }, "r808": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7B", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480081/944-40-50-7B" }, "r809": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "13H", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480046/944-40-55-13H" }, "r810": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "80", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480109/944-80-50-2" }, "r811": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "946", "SubTopic": "205", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "4", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480767/946-205-45-4" }, "r812": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "3", "Subparagraph": "(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483581/946-220-45-3" }, "r813": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.6-09(4)(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-3" }, "r814": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.6-09(7))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-3" } } } ZIP 71 0001558370-24-005763-xbrl.zip IDEA: XBRL DOCUMENT begin 644 0001558370-24-005763-xbrl.zip M4$L#!!0 ( +& F5A8[_6&$1( $O! 0 9FEX+3(P,C0P,S,Q+GAS M9.U=67/C-A)^3]7^!ZQ?-ENULGS-)./*3$J6Y8QW;O"P<]$RXHG1Z?'"'B M6LRF[NSCD2>GG6^/OO_TMZ^^^WNG\_/5Z [9S/(6Q)7(X@1+8J,7*N=HPI9+ M[*)[PCEU''3%J3TC")V>'+\_/CM^ASJ=3YK%%190A;E(\SH[/@T+^@$WYEZB MB^X9_'=R=H&^N3P[NSR]0(_W(=T]]&Q*RPA?A7TIK#E98"0QGQ'Y@!=$++%% M/A[-I5Q>=KLO+R_'%EM,&9=B)219"$]@]40S/#D_/SU"6$I.GSQ);AA?7),I M]AP)2G'_\+"C>P&Z,S:.CDM/OS_=U8]S0B M?N*.+2-Z]6=(_:[K%T:D3H)MG/2\^_,==7\/*1WX;:!5Q4\ S9IQFC[H\NF' M#Q^ZNC0DK:"CM5S4T ?J"HE=:]T'022%["&DJ252&Z '$HC"%ZM>3Y/59(T)4PMD4^K MB]+"Y8J5(++)DA.KBGVN*=>&+*T[,FS9U2W_M3 M*HUT;-D%*K;L1./P=T=X3X7$JM"O\.DKA/2*A%V723TTU*/PX7))W2GSG\ S M-;=>*I5,8#@@]>/'T6V%\:JU>$V%Y3#A<3*&6='&W.ZY=M\3DBUZKU1J@-4/X(^2)@"GRN2+%%OE\43_@WF)6#-U9I4BUQ0.2 Q5+2P8WE._7KK;A56"QZ&P&T' M3M">U-N+/LRFS*&V&E17V%$+WGA.2(AA!3H#<+"@:N B+O"[/WP8#^]NKWN3 MP36ZZMWU'OH#-/X\&$S&+525H8H>BN%TN R710-F!16,X)V9P1M/X)_[P<-D MC(8W:/@X&/4FMT#0PM@(QCX6\QN'O51%<4UO!/&B#HC]WO@SNKD;?FE!+%D% M>]8?'A6Z"^*:2$R=S*J71V* ZN+DWI6+\T!?!US^V8)C!N<'QNP7ZCBP M-;BU07;P%C&X$+>@!7>FG(F>$+!T/1!94ER [-;Y&\WB_@H*9K+&_,Q0OUM=F3[#:D5 MVV\+L2F*6O-+@R&KQWZLQ=8HZAG%/98>UYH;3O63JE90I6()[.>%L*^9*^1] MO%N0&X4IF/7[G#DVX6( FRBY>O 63X0/I^,YYH405ZUF AB2##CJ%;Z5B M/]7,ZS-#,6XM8LTB38]@^*Z<$TE!MJIAIV2EDAC4N^HQ*/1U@G,[#)L%,[+3 M:,6H1DY%([CG=<(;X\FP_Y_/P[OKP6@,D_!_?[R=_-(";%Y'KSQ!72+4]G;( M9]BE?\8GV5(R WBG,#(SZV3(1\^Q<4XM3B7[G= W&=.9"WZ^A6'-L_1[:? < M'F&L6;!_5*N@D!06+)+=^M3G8$3W+&<7M'9J8HV@=2LH;,9?8\.&6O#-X(_( M,W$]YZ%-N"(IL 213S]')Z(:XNC M&<<;3/E/V/'(/3A^\+=>%-/8Y1,9\;K(XJ6X(,T&Q?FT"%6/^YL"_F8\2B+] M+0C;BN\WC]R; 7R?!;!N3+X%N5:,O22V;H:K0DR]A:-*T#0_(FI6_K=9Y?O5 M6I6;5=YGBP65>EE6F5-,[Y")J[;':1Q,I$9P/F3!B?'2839 MB%#58'(+S+;]X_#9YGYRQ,D M$IWSKP-;.HOHZ_#YVT :+VF3F ^)H5T)GS (M(-]_FH&W-=P12/)MQXB]DPVE0H85UFPM95N6,B+JU*J:&PC7&86N1;)'!VI;3$6V)99ST=1RHN91K/WV M),/;6) ^#[TS0TIP?SM["CK2VM5&(;("*S'2&C&OGH#2(M0OESPVG(8N-3RI5;,-K+%G*B5/:!WQ=$713V!OG= M48Y'Q+"ULXV.*E<[J=P>5'XKF/3,6@VK!&D)8)G%.@-8.*FWP#4#[H%)(B9, M?;*0\.&+JZ(VE6 T5"P!M?S]20=I[D@RY/-'?@,MRO7>K!B/A5<\^EV0"]E" ML86LR )\*M0P@E8W1[+%LOF+LEO74KO$9Z(.$AH6P1HU3=B>GN0DW>4?U8_X M^T<3VU6R%M!DI@9+[+1\$:Z%A$88^VQ/^FP[=\C%KSFBO-EA;7.KB4I!D4D1G3#(YS4DRR9M0VQR3G>68 M/!,A36]CML*S),=D>R<2U 8J:KU=B+?VVOB7*I;+#X> M";I8.NI2$OULKB^DF-+73GBKQJ\@Z?'KP@DI%'?#W2C:VM+*"=H-66!N9;AD M;FT!)FQ)N(*H&_;]"'6W)!2@4%>H%'#[)Q-82%V9DD:U?R(Y^*FN2%"%.#N1 MYKMNZA:,X$'BK@Q]4P:(!?,PCU?75))5:#CZ$HE(PZYESQUB2-%Q&8#6%+76571A*ZB_HHNM%*Z.%>Z.#^M9Y*9 MN\(JMA]64 V_BS=92?6QJ[(VT+QZ$E.\OFFGRLUI53NZOM2H6B=#>K^#ZJ:G MQIVK-8.M+P]J,(M!W5SC#:ZJT\U_/(K>A>@ (+6#RT9B+R3OB?KJK;\KA?7C MU^HU_'4HNO+KTM:7_=S"_EGMH$ F[PD\3NFI2C]PYBT_'NG;X2XID!PA#*5J M;_GQ2'(/R%WJ."J $?[MT\**0ID]\9OR>!#S\L4-10V[/IA.B26'TQ\%"/"% MT-D<9IO>,T@PT^^=F.M_V'?H237ZU.6'1X&>FE5-]=A7B-]OH0X;3GFWK_0IV[C&?T>!,X(2\RBN'6;^'NJA3(5<#:Y.0(>E;*"([ M&M3+^#X#UP>[TD<<_-]K6)/4957K(5!"EH!96G3A;H]C^D!L@WK MKR&>?PU7!0%#PCNC:#3ZK91]6]Z)JM>8P_%O2-2 MJB^=]SF!,7A#B'@D7+WTA EI+:*9*BW6TB^K+-6#7A8H2'(]RT%!L 3.3-9@E=RH4G1+840 =N.Y1V#R\E&2P6#IL!6NP HNKZ$@D9J*P@5H6X[;RB9>^N81*JE7'X#O6 M5HM!OI1"+-V]C7W*XJWUF%A,W06\ZCM8"/U*6G7:W_24[>3-E4W>]K9V4#OT MPVN+'>ZK&FHMJE[BHV^X6.PRI#Y>J-R-+CUAP\6!!OQO$"ZGZ3TD0YW<'J('0(^VSQI+ &GB.P_YE+ M_R2)HW7!Z_+@Q&ORM3F4P2BR^QY7R8>Q@BO0"TPDXM8=O%K0"LSG3,AXWHX] MP%P=>H]FLWWJT$&O*>$=RBI106T5U-06*KF@K,2*ZT8#=FBV#^1%A=.AGY;B MEQRO184'.T@'L&"K+?V51QT5*B\6O1+EP>IA3/@SA7TP=AQQC]5.WE5#!D;O M/7.I9&K3DIJZZ]0X6+T,;,_?HZ2,(?/X8"4>(^D-7E!G!<*!J%2OC=A):J*<[& U$(]KYV3]Q9/^CG*BY^55 M#F MQO(E-Y0?K,QA<->/]XD)TS-8M.,O*C7,774#P3L-S"R7_B/LQ$X@C8BC'-() M\X_1K\/X88"F9JW- WYOL>>/LF>T/'E9^V5I-]4K[G/Z3;%BJAE"F98:XV/!23.O\ES-8#?XD$Q0GX36)*."?V M%\9_]]^]4+"-GOV;YQ]U,X3L&K!Z(VUN*]JF/^UUZXY4JJ/*>PPFG"CB5EQ^ MT&;THPN3J4/LX)"D&!&+T&<=GW4<]J*:NH&]EU:R>CD=ZJ-!O8..QF9R8 58 M03 ,0IV4T!R..WH'DP$APZ4>_^Y,SYGALKMZQ"O_E*Y'>E-)^"\$OJLK:/228\G.T[K'T.(SD_#3Q;.E6TA+J)"NE?9NJPN3E=>:5 M;^AS[T*4L)MJ/LA)YBPHWG-!@_#W&["12"6+UJJTT=:A1@YL)L6T8 -=_YS2 MF%@>5!ZJ8+=RG& ##"S![.L=7JK$9@]-I""-'>R\8L)[C'(/Q4LL"CE"%97O MH2CK&2A\3P&#<8E=M?L/?(+8.=BPCMA%ASESELMDKW/ENRA]W/C]SFG5R@0-"/$(V=3*M."Y!3MH0#WV/6F0.?QG R(]5)B(-I'H6!J M@2G?PD[PVRC,P($].3<(4TBPA\)<$\MBM]FE+/U\#[L>I5!,IV-H M)9XX/"+8&0CU56+_';#Z@ >!S7OL1%ZSVONV%(]M/H<[*)CI,$YD A" M883<5.T [%R%"&K+7%PI+G'M)-&-K+R&S(U?UB1?3F9?Z>_BQ519F_L2SPG> M%?T5,&2/=^6_-:8E9OS7=&!? "J;]_.2X7,OQAW#_\64JM?-CYP\4^8)/^*: M]V6=[7+=-/=A)S.,^GPXE;>N[:GH.W;BFZ [)[,GK$A^&(NF80CEC*!5[IRV MMH&FH[514X4 M)5NR19&4;8F6 @PFB<3;=[[#H\/#V]>?/Z:.\08P@\-&EC\%KF=8&)@>L(UWZ+T:8S2;F:[Q M #"&CF/<8&B_ ,,X:1U].3H]NC":S;",&Y/0/,@U@L).CTZ6;[IA>GI] M-[L^/GY_?S]Z/SM"^(7F;YT<__9P/[)>P=1L0I=XIFN!AD'37Y/@X3VR3"^0 M4BS[QS-VH@+.CI=U<5.POYI1LB9[U#PY;9Z=''T0NQ$VD;V6J"1*SM["C/0Q M+(OT&^6',CAIM]O'P=L&E9YA?,7( 4,P,8)GU]Y\!KXU")S.'%96\.P5@\FW MQ@1^-!D!K;,%D+^//,HC4Y$N<@ERH,UHO3$=UHS1*P >:1BL\!_#NT1#+#2= M(.R1.:'9B4],]N28I3R6*3+ )R6YXWT 7#XD@\E@!G"@+3M"RBM;(\A=D[S> M.NA]#XAC11<'N >)Y2#B8]"Q_N=# @.1]X!G0D<=HZ"T,F!]1\A^I[:ZX]IW M-A4T-:GFLP/N7&HN7B#]K4,([5>/P!.\WEXFNV]*&0+M@6=O\.S %S-.[C9R MX998!KQ[0 LD(W\Z-?%\:8;99_:.6_^Z$^? 1Y,1J\FWH4 I&M0AF^9 MCN4[04^[I^]"R*SZG3HI,>&"#P^X-K"73Z''*J.^:*ME-(UEL)4XBQ0A_#![XL.&A7JF,_ "<84B9?'9;2IZV-, MY9K9M##-[U_.KL[;%U=G9V>MB\NS=OOJ)-;HF,YT<++])K:B\NFO&VJ49"A, M<4R8J6.E-2&E/LH_P6BZ*;FP,J32<(1IOZ'CO(;A$]H>-&-UF4[#> ?PY=4+ MWA3,"'/NJ!%G/UA_?C,=YO1UO*Z)\9S:^O^8C@\X3$GEU97!+)XVN^WZQ$-3@ /L%$-V)Y3(60U: M\P(-V?ZBJ]E]PF!F0KO_,0,N =0U''BO(3*!_97(F93(>;M]>76 U.<%&E)_ MJ5%'?\)H!K W?W),UZ-(V!A@QF(#? N=E457?M-95,0AXQ,73%\RYZ/4AD9399BU=U(W)G_Z'Y?ALY8* 'IFL MAT1=;CP:.K0], 'TPVS?N19UU,;FQQ(2ATQ^AD.B4!&%[KYIS,^B@V$KTQM- M37M(W,D#T-"OC$T<4M=JL]J80J(506 &@8:^M.9@^8 #('#%I](&UQAO@HQG ^K M3$Q"@^A_A&:N'OY?SUHARG/#U3#R,0+.Y,XE/F;+RH: /PFL-D9.9*@OU#0 MK4/E6!6EAM&/8"@I;;,YJ2M$J0I"F9A(B8ZR, Z2GEAK,G/XR0)D&GI4R=F+ MY4=#'-<2Y:L"M?E ZCZ]LQ&-C0E&(1*=S%4%NO- E/&@2H]5QW%(!:Q3,U2! M8D5T&CI1TD'LS81)B)=ZC7BD \.2N-26#I>QY"6T-@&>K&T *2GU8U*2E4TZ M9=%I&._OHND4N4+^UI-5B#PI:!IZO6-,'3H?SX7<;2:L$'N2X(3^;+-X CNV M#1?->#(A==BZY@QZIA/31UZ 7YBQ0@3G!*MA5'#(]KVZP.Z;V*7C,=*Q+'_J M!P%NZK5#"_+<67'&"O&=$ZR\E_OU>&T;\5[W%G./!8F1P-UD?)J]R7@TIC\> M^H_CD3&X-09/_6%G?$<3-'3=;LQ.APC&I?>(\!:!K*4I?,UB5/4M56'OTME; MC^3)@)^PJ*2GUH[QH1C,BH (Q::@+WS%M[!-& M$ZYO$$NA'_>RDM_D3 1+0ZZ&X VX/G=Q8_1:/Y9$LD[ST3*P:$A-%Q%O, E; MS8UPQ-)4@20Q(&%0HX1!\0@$)OX[<*GI8*>-=>PI="'QF"%Y ^%&0?XJ"HG, M25FT-1@LY;>36R#6D?WO=.C'T _<'B0SM#B#;S#)/*8H,T^5N%8'JN&"..K) MH:0$LKLT-[U^S);OZ:H)2\.8-CO@@7@LUK%HOG#LG)Y M#2?;EDY6V.X;.D+B1]$XJ1-@KUKM]F6[;'+E NAR2*2^-*OU19?ESZ#%CYF7 MF4 [5YE ZW9&OQBW]X-?]9U 8_C7SA<=4G<"0XL**CQ_-/D@EO()4"K9PE"V M9 +TP.(G_7MQ#D7_PPH,_Y *JS^9 (N[,:G@1A0]0@4>:_,31F_T6V??S'\0 MMIQV.6[O6!Y\R]K&+E^ ?O:E' 5+C&&WDYZ68Y]U@02?V-7"?.'!" HEZ*=2 M6Q*:^HG;2AH'H2*9VR&EU22SE%JJBKI$M R3K<-:VQ+/)@(L"_N)K=/26B-3 M6"V5)[=@- S$BZQHYIR+7.9:ZHBT((2#YA(")'+V,NM(3(42:JD>:M(0KFK5 M0D?"0WRCK8>IA_E*JXM,84E9L5L12P^Z[5]S<@M&N.U>"R6*SG97<51B>6JI M$B+\PM,,M6 ^\JJ$]X[(9*VE'DB*(52'*YW4(;@2+KAPN(NFS*(%XN2M[TI- M7 /*%8"')++<@;F0X83!+7("SO0! N6\S* M7 .MVD(0D5+P0[EE;.N=(NS!/\W%ZLQ;VE%4< M\K.RU(!Y9?@1[3M<9[1Q439]\'ODL:S=@[-.8U;2"M.G##NB3:<3J'I@AH$% MLP:;\205IE,:;D2C3L=W)CV']5MVI+RM]4PUH#J' "+R=;H89;$;,F-__"I! M#4@5@(T(Y ?_2M@+EBZ#Q5Z7+5;:I12@GP)HN]).5GH:KHMY,N=!R&F,.A85 M%@91Q"HX^W2Q?#A\8_-LAD(12;&P.TXO]+0JLI2F6)5MQ2%<;%="A&8#U&IW M'?=3DI&ECFH@@J_C)C8J#@L .]B=FQ)JC-];RW+$S.BT2T<]\S#HKX5 M]:FX$P?"?/JISY;D97^ Y&6@X?:/(9B%IG(P45$"8;ZD ,ZKJ 3Y9*"[?QJL MZ62W\4AT_V7:&K MCUM#6Q]751'!J6EK0+ \;AW=PZ=EVWN0"<2UB?@X]^Q, M-> \AP!TW!@1P;A%F&JQCZE#2P!;[R:K /R,-5("12'HN+DA@A+>7CM&8_.# M[?=AQ^%3T5"$2JN>\Q:7E!>[3NJLJDJS$]'HN%LB$6-CG6 0M(KT/P"V(.%/ M8XCRU4$Y]G; 4@\2RT'$ MQR"(R"Z.D"4]=N6*(W>FTGGKHG5B-(U52?2/>&'&/\/B_M70]12EE'T,0V"A M%Q?^296&^I\>G$!SN2 FFM_\CI#]#AUVRG+\SC]"]1/8_$M']U;;#E8ZYFQ; M:IO"FY]C+VY@<(@MN7/['Q:MA7ESQ&.W)/:)!Z?LBQW=\I.RM%*;MNEG[?:L MP-$J3[T9D%I94.:UM3L5WV)V)3:?LEMK(UEI+;M"B:)5NP#VP%5\82$6*5<[ MF0M1=$[524Z^:'"XZZ&JNXJ =;][?I>"B4YPX!WIMI>Z/M6Z$(EJ>"KRWOIT M>#B-RM$_I;3E4_6UD+C\;:V'W#7B+Y(G!Q;7)?AM^.P*I4I::N*J*F[.IH@" M"U%*-PAJ_E3^$N0K-<%6%95G%WEMR"9:H):Q\*?0-GQV@U(EO8<#V8H*\R]2 M!A';50 W"ND6$\W/;$(M-5L;06$B1+P3Q/[=*#9P>^I&WO*:3.3Q4N5++B,S(+ M7>0?$UH<\OJ)C^Q2Z>S7:CL$OK1.UW<(1"TQ3-_@6'Z0MY]*@PVQA,/(#_"TQ\B_SU^?\M2SMD MG=@'=-T7CZOAY>C,=H4=LLKL ;GN*Z_5H8YIS;S5=CE+JZ?.\*'++',^,*5Y M1[M3F7=44X7A )=9^GLXZC($4Q/201!F]Q81RB6#OA/E22VY?JHD+P;A@MIT MQ2I@&,[6?ZT"!]%V>]G1].7F?GM6H!$K\0#&P?&U96OBD0+T.6,@A9FS5=?KL%D?4)E3L[* A!-R^8JIQJZL%OXND^QR2(53,>J M%E,-5=DI>MWGU51 9DW#*I=37UWAP]=]5DT))7?Z5;&4&BL*![R^WL MV'Z "=O20\?U_O29^>7!"?YJ0^&3UN:<6;R"?QB+*NCC12UL4+RHYP!&PK\& M7 &[\T95X05$:+!;?5%*9BB3'1?XLH1VX:\:)>"EIJA3B^CDIJS MO01RCKK3_)ZOQPN2PF__3_\'4$L#!!0 ( +& F5A=>&&;C#$ -8I P 4 M 9FEX+3(P,C0P,S,Q7V1E9BYX;6SM?6MSX[:2Z/>MNO]!=^Z'W5NU'C\F M.D6$ACC^^@M3.:C9[Q<>O'H'A$21M'H@H3!#(U& MIR+%/OHP8O!?:/;E'?:])&-/I?FW M%Q*5'7PZ7H\EA>"?CDJP(_[5T>G9T:?3C]]H\*% D?]L,$@)SG\-DG6#*O#W MQ_F/5=!0T76%[!R^@4K!KM//GS\?9[]^^.N_C$8_$1RA)S0=95]]259+]/,' M&BZ6$>\J^VY.T/3G#]/PVQ&7U,FGG.3_,TF8O+DB7>*8XB@,N/C77]+Q=))@ M_X\YC@*FF]=_IF&R^C#BH_WZ=%M#S,>+*28)75'6E*;4X]\<<\CCG<;(&& D MA>-V'+@*J1]AFA)T[K.Q:,$UBH-YL1E".ZGA:-+A"B1=&;7C0 M>F2(W'IB,VP8L^7F$1'&@@6?ABJ"'H!KIACL)?>F7AHE$)A81\0!+V^\D/S- MBU)TCSS^.5L#VG-&W:WCU:0]><+>'%.5_4U0[:YI58SC@P!WS85 '5&[UXX"22[Q8A$GFC+%9A?NL M;/I%L1]V09Y)YPYH;H8S;ID7SI![10S-CHS69A 7/$ S+I?;.-N$[=A33I1_/6'81Q%&TFXI50M$\YOU]QH:LM_9(L;\Y4/3S!P/(@A%*R&-79.G)^?NI MGA .4Y*P4;9S4B>&V4#9U93@A1GSL'3 E+(^\9*/Y*VG_<+.=IWF<@HW)'Q1 MH#AZQB,):I@P3^3G#^RO)0DQ8;[GSQ].!I&JAEU+ OE^.14 M.=C.&"_0.N- L]9IH+>40PH]+(D7*0UC1.DE7KR$<>:$K.,A6=X%WSQZN882 M'@W/HB9Y8/PV+N/ADB:E]%>G$I8--+K40@<WJST*8?%@+0U;NI-O&+<0.V[2(JPV M-M=2>NM5DI*DLD*R3QL9L@]_7T\V$Q_%'K-S@0Y*X1I254(.15$Q[*\Q72(_ MR\,5JJ@25DR9"GI7Y35A+C88?S!]5B#,M5J+Z. J?IDNTLCC1S_7TRGRDT?$ M4 O&T_,@9Y=$XTV:"=7$M"$0\J7&8=9P)Q9T8S:6$L*VN UJ4F;$E!9F3D3W MYF:Q[UK/$_D9+'-:ESC.#J2;-F?41KK'T;9R0/T6*D)#4\)*J95"[VI.MLS' M!K@,9CZ&R%>W45*DG9I+OO][]KZ=I\D\VW$]> NDL!5Y ZGJJ)N (5II+*HF MEH1W9SI&LL#F^ QN/BH"JK:C0]RI"3&T\K50834U&*F^-*!<4J,TARTH/47= M*;V,E5@YZN"JO85F59L%Z+E6X$N"@C#)LK&GF+SQ")A2F<7P*C60MX!"L78- MT+2RH[[;E9C,M8@T6CC+HMKB"5KGWW4+'LWZWL M3O#@:]0U]&7+F A,N#[( (?% A0:;19"JLB3 S=9AG4 ML!8;##_H^BC&MUPJE7@.KMWWWN^8K&OQ);K=!!(J@!AL($*XASN>UE"0ZK44 M5DB6$KJ-7BO9B@T&'U2K1=B6.JW$$L9I1YFD4Y1D&9UVB-KH3SMDK5Q0GZ.@ M=,MJ,'+JMJ$Z.]70,!DK<'!WFB%&NNKC-)!U:@97S+]ZS3RKVY@F)+N([2FD M?RBL0-5$JB:Z1DY)+^^?>6:C*4U"U<2 ='&CM@9C* ]LCM'@YJ,FH6H].M2= M&M/ZXIZ+5>7JGAN"_DQ1[(LR!BU:2O7+L*U+?HCP4AJ:04L]/]1MVYJ=G,5:&,\N/!K27V/\0A%YS>^V6J8)^QG'/FN5!5>WJ3(S]K[& MU4NASY$[G%24"B::2_JDR^7\(V*$<-KIDP%0IJK*U)H19+T;6+>RW G4VCG@ MP2,FF24E:_36?VR*O(2GZCOT(.6-91_][ Y$(L0[XPADAU AJFKS4-,J =N7>7H5M2*"E^J* !T)K?F6S.BRL;6=%?Z-E6\/1"T50KJ_$:' 3 MDI(@*K=7HN[4F/CJEQGW,_+GLV0, I07?A:_-5"+;)RO)F=)%-\Q[D M@0.[/F#Q:8.?M@[%LI==^"7KIW5 82XJ1=1P6(-GS M0T_,D54&!.I@BMUQ$] Q69KM_S:@$6E=;OFEG,6ZL1UL\[>1K6_P14BV4>_& M^QCLBZTEI3KHA)_+!A[)SV'#:5'()=#KG?MI:$>KGEQQ1&@2+7KJABOMC:H+ ML>+6V ]FEBW(Y7;;DLQ>#/L2OZ+8BY,G/IC"WH@RNV -VJXDK0[%4Q\RI@MMN_$GM,6GBMR(4M^J;$2'$%+>RHZ5Z1 M5>P5*+0$&V>*+4!?I. 2M %<0K>.@-]AJ;-ET$+J=&O:P*';X"(Z21M;VKN^ MBDXGD,9== J,'%U&)R&A>1N= O7A[QOF=^PCLO2(]/Y&&9CP:$X&.-0-16B9 M$G_N470^(RAC\C9&TC-(X[9"PJU:M[I(6"T*O ,ZP]X=+,1_?5^2#=Z.8[?\ M88O*.[47#+LD):CR8H6RYM&\ T4 U*8+YTPJD-.$@*4M#-G0:-,^&+R#H+ Q M>@[BQ.;TU*/'2CK<6B,C,7\ G*^NJ2IA0 0J5RT), 2U68D!#8FLT/C47,; MF^ PO(4(D:X_HRA#UJD9/$9>K+F&NPHBKQ;9 G)(BE+-ZT!:+2A!&*8\N3'C96U8*=_W-C]( !3>,\_SV^S3)#&X\ MO?9(S!8A^HC(9.X1=+$2=Z"P@AY'E&IASV."D9O6:G7-+#G8K64/HQG8CJC! MIXY>N5"=B4RH=Q 5B2F.PB"C[I:_^B>-BX@ )9$1&:@SHJ2A$!FH(6%=!3HT MO,7Z\0>.;(@17K^#I$#4[?(;_)[2)+_T I,']';N^SSHPBSZD>"8_>DCW=V M5GW()WC;7EP\ <#ZWCQ>I2S<%H%*:90G*0K&2Y33J]H'#3.X:;I.C\.[**RSP5-?=[=;;_*R MO-W[ZSB'JG^EPYV0[3I1JS<^U8H/=^>/VQ+=*M[:6A;#5F;&TU6=2I\\,)]: MC&I5K%JV+O(U%I+,SIU7G1B3(C7%/BI*>GA?6NMJ; -K7 ,1. A"#7*7F^ 6 MQ':]VBKXKGPXV_GRUT1<_6 V$--X))@MD\F*IR[PU?KZSS1<9JNX;H-LT%*> M.6+6%A(_M!MG@Y;V_.AV(VTG,FR-W_"I."8$U3)TS AQ:I)/*&*>=/#(,[.S M)RD]/_-B+U;57Q26:=Z!5"'MNG#,)*59-@&-B.[.Z':2!M9A-;BIV9!1M3@Q M^FX/YOD3Y9K5K08C/UC?AG+QZ%Z6&>11%/#<(2;6W$TGA+^1G9W:7JPV,(_> M*CLDRQYS7V,?!T9YH7T,)>5M7X.U/OB7: ;N'_7A$P/JM-8>'.R)1K?/=PJ) MRKZEA>?^#Q3\&C,4)PGV_QAGLN!$,&JOOR'BAQ0]DM!'ZT?KK4RIU4B6EM1Z MK/V23Y..'::Z5B/U(1_56*V?3.U51;7396OZAW^NM0^&Z>?:E0=I@M MCX+K.)&5WJA -8GE36"'I!EDS6\#&Y/7=>:\E,N-W'D1#HZRY[>1;N;/BY!U MNC94GH/*'F?3+ XR<.ELJ6H A%SE^B!O8$5R=RN$@02P*2Z#KQ%RY*N+A!II MMX\J51(O#.YLDH%+=4?5 BY2G.1-[ BN3MS,9 -L5E^,>3I,C77D]2(MW+ M=7[W_ 8-?L*JOL5O&ZRA RK GM!57M77!#1"N;N+^1044TRTS'-]]@X(9 M"K3W/S7@Y,DN(DC7E&GNPVE FE'7Y@.[LAIH%N_*$>(YI:B_W2\ MQ:T[]C'[H?Y5@4V-F+>WMX\^7DPQ2>B*\EL!4NKQ;XXSDM;)ZM7HQ_I+.IYF M\?,YCAA"E"<)):L/-4&A;PF* Q1LL>+DY-/)R>AHM.Z*_7TY?IB,[VZOSI^O MKT:39_;/_?7#\V0TOF&?QI?_[Y?QW=7UT^1?1]?_]>OM\_^P'A=13&N4K$5S MQ@;(N/+B4?2AU*EA@M5L*X'M1Q*5N:T8QU , M*A6K2D5"C5-I,&P6_(H]-L4I+]H0P/4DA8PK1XMB$+4(E+I4+P-MH.^4[<\D MBQVN,HQRY-3WG,CAAQ3#64LQ*,AP*HY-8=JC%P:W\:6W#!,O4HI$TV9(L7QJ M*18-*4Y%\X02AC4*R@O0E#*1 0\IC.]:"D-&@U,I;&[49ZAE-VOI?*@*8#_< M]Z+(>(5N8"UTE@IW:GN'Q! (DB^\EI1Y^M=1!OKS!YJ_^+SY/<(4!3]_2$@Z MN+-[&_M\8D57*/_W-F[N69YP%-U@PA,N):*S[@7 RF,F86O*EB3,*K,RS7)L M>++-9\/PFH /+0=5;-NGTW*X BHXEGFV7>WE*9(9F-2: "VU(&HI.3!D9? M!\2W@ +EX',E,0"$=JCP1/PX2_CR"+RU8 'A['/#I1 V1%<+=#;@.E,(*,=O KD+! 6J>PR M#T@Z N U#S,12.@'KP:%$G>@!^J>H,\%2@:83P;@U:!R?7A1[?^,G[UOOX7) MG#M'C![F$EFI0ZL>AU2+O_3F*K9B 1S=R'68GS P=-LIQ6Y= 9@D.K"/1KFL M-1_@J$2%'<]8<@HE7DF?$+,<&B9H@LAKZ*-\FJQDV67SKGY.Z6G8(57MAR$F MGI[X!$<5K\+7,$!Q0"LQS$N/SB4J) XSV@A7 M19K*:U Q5K<:% @;"+-[18 5GT;195*;ILNK?1D>C34?L0[6OT;_EO?U?L.FO M_AP%:83&TXN4AC&BM(K^Q:KR29D@:]W-L'8HP$I50BJ#AI,VNZ/8:H67,BJ= MSI@BK/)Y0ETT;M .1JJM1A5U$MJBJ8VLA 5IDW2Q")/;.&#>,@F]B%<2)"3- M;D6\BWQARII%.P KF+&&E35@AJ1U+HK_G-PC?^[%H9^-F45;,>&O DBEH&\" M(,QL+0 ]5="FK#M-:J&ZB;,D0Q-*:C$;ZV5H_Q(2;6AD-%PP+/[HP$O:= 73 M8CO3BPVA<+9M&_QO.,O17?B*@MLX\>)9R-3XG%*4K+\H?FGI)W-ZKT!W]?";^LDO/T M-O/D)*_KJ@#A[ 2U!90B]-V&IVL(Z9]>DX+#V-#)]4@NA2H5/6SA7AC&?%+, MIB%^'S5#.*04D]4#3I!B#V?6$, F3J=#F[V;&4F'BJ1#19+6&>0:E)%A[M>) MF@!PZ UEIR0#HKM>7( 5(CJ>WN%X]HS(8@>IF78#P-FVE:0I:9U)5[Q$K?'9 M',7?>V06%JZR3%26;0%43ZCE8TF/\VU-<0/4#2.Q#,11GJASF=($+Q"A#-2; MS0C*]RGC:='@BA<"1V8;(*8I)V?;&Z"BGQ%G[F@]].B-C3U:#YXWJHP_PM-U MRW\K< "[99*P3K6!4C?I8!+6W'C-?*D@]9,Q*5)C)!=YB\' ;*%,&%_>@2TF M96.79WTLA692H,RY+;"27SNN@'6[F]*ITY8 1 1TODIM3ATFN3\JW3E)(1UN ME8Q4HUR$I 1TSE3FX_L),6&J%-*A VW%5"D!,':;90BU0,[H.C%QF^&GHP,*)C1MI6$TF=BL[GGP?T5CW E\X^$C@ L2^A M+I1SC@3M[J=Q)KXDC&<7:9CEZ!OQU*01A.B(BL$F-'2_7RY2SPG^G2TIXHNC M%' 0XA0JGDK0[HN-EUX4T7N&!]M_\FO\V4)^CQE?,"]2T_'6J#&$P(,!PXUH M&7P_<^_]CLEZ4R_94XJ AG=#),INLZ,4$>)V/\E/4WB@L(*7=#^I@'6_GY0K M4LE\!?K=[R:].)UZ?I*5PI:CR7>4*FC'NTJM@JQWE2HB.F?P,]O#QCC"LY64 MJTT0QWM)8U8V,>^*NCHWOG.4CSUQ+D MGO(VA$./PHJ7#<0[9]YX.F6NR]K]UBFI&MSA!4Q6;%53T3F/LXM;HR=$$R\E M7IS%NJZ9ETCX?:[*H)UQ2X?W&5AQWIB@SH7P%;\BD@VA57(YJ,/J;2LVRRGH MWA%+HR2\\19AM&*R9)+EU<'\&1NY,Z9KX;!0VLXATQ'B-,@Y3N9([74H(1V6 M.!L+04F XTL#A'O6.TU*FKZ9LP0U4XKJ=P6H=N[[E[Q6X"^3WN9G &'77>2U M(:#?A*5'1'PF4V^&UGA5DV"J.3""]<.J-8!@K8TDK.F#G\3TA#BO\@O+6'<+ M'AJM%%_8)C-]MVLRTQJ/4061>AD(]*2F]9.!*HY>?UNR?3<*GL,% QE/)^Q; MRN-&H?K6@:XZ=S(E[X[U)/%((GD&N*]!P"1K=:M0@J6D,Y8-'K=_\N*9+ 6O M\AN89(WN1;E%J1L)"#G?XP=BW0AY>+6[XZ/0@027Q_L MU1%U<(SZ34 SG;>W7.ITX5ZWW?S:LK; M*!:(. [8%4W6:$\&8'WD;\U5X A"$ *$*5(WNF$BK&Y'?8GO:U!JV[!Y ' M!T")C%C5;_SR"<7HC2][1>9?->EO1E#^/CRO!14>Z1JW!?">43_RMN0#N*GB MD8<8>24*ISP(&:9MG C[W@"\7C#(1&#/F7<0#I]Z:90 BHH7&!VBXU"BXX? MY2%P>0A<'@*7A\"E:S_P$+@\!"X/@ I

7D4=5-R5KVH"YHG H'T;$!!A"5=.;$?AKC%\H(J^IF0>5-( M?E/?UE*>59AS!\8L4HO#9&RPCB=66@V_/$@.'QW$$BML<"K:1TPRQB=K--=_ M; X*E"Z;50_@)FV5/E>E:$6E4XE>TR1<> E_8'A7D=IU 6#BWD&+J\*UH_=P MU87F;+^7Z?20-'Y(&C\DC1^2QF&G%-QI\L8['L-9ZG@OO!)ZS>W7D/U+(+_T MZ)P1Q/^Y_C,-7[VH%F;T 0*)Y M;YJP"S]9;V,FT&H3 "GA#D18Y4"_0OL-A;-Y@H)SIB+>C&% MD_'TTEN&2>:L;@M,#>[P_8M!A*6F'N BWOX@Z=*+_#3*_GS"472#R9M'MN?F M <=U^/C'\(M[?VP$J*N6GHS$D;FE5/X"0T]C 3B!&,SBNW!"->Q\M[HY04F2 MQWL&4M#:@)!"+7NLI36>OEM5_HX37)PZDN:KQ(<6- M]EB152QV7FYZ[O^9AC3KR[+*]/MFE6FU,_BEI1-_CH(T0N/I14J9FTAI%?^+ M5>63JH+4OIMA)RP!5HID+BDTF(+07<56M7 IE4Z7%A%6_$^"D#()UZ =C'PL MC2KJ)+1%4^A_S"W;BVS\J6VG M ")+'4T';3D!75%$96OKR):5=FAZ I!,U*M*:,@'K0<\S#F+PW^@X#9@-(33 MD'NTQ:ELO@H&7S$.WL(HJI_2,IAT@8('9.$8=C,:@)2D_O2I&Q:]>YVSWY1T M.RJ@9:[%!J9;GNR]T@E)+%+/*VGGW>J<\: P-UI]&','6FO,U7>JM%F^?))# MLEY0F!UM#J*ZTJ%A;B+W2H&EO'V?:GP;OS)X3"RV(UV,!6AQWU-%K3#S?6IF MS1(?"5IZ8#\?+WT8@?05,FX@X;C3]ZETDHX^S[5M]A\57_P?7X] 7WT5HHBE(%Q&%2M MW^DQDY[+^[,S:1)31@HVL8,LE,"W7L4EK(&DT!$8;H.JNOL#*6#FQ-'I1AY4*5^UR=83=Z^3R7>["\JO]WA M>,8?$+]"+T,< !C@,*ABNS_:1P&XG:3SC<1G*XC>1P&TE7B^_%ZM[[ M'1/M0[^QG7;)B!E3!;_!\\!;JE^B)A^&.-M?:JQ^?KR_5R-DXP+QB$SLI:>'(&2B-8]S];MY'YX&_KP-O3A;>C#V]#]N6:5%Q^R]>.9 MC:5PLN7@PT_!LG<1^_&OY92#DY_2)U8U@.',ZE12)Q408;MMQ&YC'V6H\#P MGO7^Y"7BE76G'@"XK7I-5 E.29U329:3AF)>N=/< &_7A;,;X7>AU#"P;C[S M[M^E\09LVWK>\U>*IFG$'VC=76$470*((+=5I78,>)\IN_\DE "J([% M)J=U<*&MJ_366!1/8IA)3=$Q"!1L;$ B)M9\;! !;>K0147530[O M8@(*<0H\?=G#/J<::9MU =,@;0-,"@+AA"C?Q1.8'3T&-.!;EX=W#GN^2;\' MN]WM0<.^]]F5:OYJ''L[?/" DLLY3TIAN%]ZA*S">':^X/&"\;3LPFY7_I>3 MT^U=>=G1R(N#416;9FG[OX\81JQ)@=0HC$;CKMA)9))X2>9OE%8PR;T.5:*]I@W ?;I0(#4?3DW2QL3/'$_Z!5[*W?@6#(R= MMY&BU412IZ+S7>*FKK<82;I;E$("V'T+]:'<(4H1[V'+C?R$F#!3"@G XUFORWK_-/"+SOH60 S#2&)" MY.%LET ^XZ"Q$('&0']Z8;T9*J_2(&((ZK1.;,OJ[:0;N31E[?SU0?U?0'*X'@GOU#+#K@5K4=@&OZ=JU7,+&L=F_D,RA M9*L[37DOI5H*_&_2A.._Q'GN=>O&V^=5&Z^=Q@T"7LF5ZI$^T(WPN= M$%#PA#AKN=/!)DWJ>]'_($^VL'?2,VSGVMAJ3&N(C?FRKPKTP-;+YS<4O:)[ MMGC.=W YC#J%O=@,H#9-ENRKQG!]?W[#G2C*NB_8"\\ ^K'FQ%ZK!1MYEZ]7(6=%OJ:L=5N?3!!&)R%OW!J" MN2N9M^;%7DP'#VB'O6K6"$"-](#FG9'L_,B>O\Y7N875[N#]AV9V-N]O5.D0 M_I$YQ_@V>_.&QPY59^-"R&'MKHZ"XJQ;! CF2%O!\JKQB&AP.NO5$=*>1?>8Y$6>C8P<^!L*?BD1CD9 MV(OIH[=2.&)B4 Q10LYBVGH=UN?W6#$<2QU@(T_F;,] O\[5SBF25EAI&"1 MM6H-((IG( QKLN"82]6,&<:7WC),O&CKL6M>0QRES(N87>;SP+W'-K'9-" Q MK?;= @C269AA>WKW324*$EK)?]T'@.A$[=ODFTE4A#AM\YE"2_"5BPW M=F&V1GU+(\Q67D]X"+<=PFV'<-LAW-:U+)[0*XY>N0?$-IMA0R"Z=:RB?2 :D+>,DH3G:^;* MHIRBQ*#@@A?JF4E,A%,1_,TC69"2WQ.N<)N:8,,[3483E-1I:E( AN]*9TD$ M",--DJF.C.L]7I5%P&OK95E@PV[3H9_CIR&BU;DQ'+4AT+S+A1-6J)[N^HX3I%%_#F?-#C3<2+QZ)AQ>2K?RH0\OG^\ZGQU> M/C^\?/[/^/*Y="6\Q*^(3W78:B-E)C..U2Z9L@4 ITNA)5(6;Y,Q$*N?W[ EJRLM'$ZOK5E= M(6,H5O-B25MF5]LXC,:W9W>5D($8SJO1+/E=;>(PO-Z:W54ZAN)V^&JKW=4F M#O/QVG.[0@>@5(2[0Z$#^$('3F-Y)+8^+\[W!A>8$/S&3Y.])?LE6HKI2R'6W]IJ57<6D,?N[[_/@9Q^-L1,$4:-<*O?("JG4Q%-4LG69-!YU13]H+U8BH?B?,RW21\JD_KI]]_E>@>7%5@^U)M**>@=WXJ M-F;Y-$.0B_Q5N5?BF! Y!T*=>&DID2W'OEI2J_4@('(*O2 MCI=]IE+6QE$F4$HA :1-6O*SUUS)ZDC*#$D9(("\2#M^]IH,61M(E0(I P20 M^&C)SEZS'?>UN&^W@NA#<=^AN.]0W'KP8==V6%7 M=MB5'79E+F9ZW>Y,V\K9+LV0GGH%E&(N'GS7)HSMEIG]&9+5]W:R+RXQ%;T_ M9-((P&[,0F*F5,'Q_\?,,_"2,)YEV/V&^.5T*#A_9=_.$'<->8D=]WD+;U=B M;_;= -@+[&"*]G1"%77QUK&1/->P I[6PMM30P0TU='D,P;/&8^5L2R# MA@"J?7=>\]24]5L.4:;MY_7X]!D_H1B]"98Q&2" NES+I4M&"1Q+4=OU @LR.EBP%D0.M7M/I)$S8MB,+9/MY[8D7 M75,>PLZCO;Q(:1Y#+K0]"_C< M/ NH]#WRXF!4ZWT/C@@PK[BJH*P\'9 #SO5WL9,Q/GI4G8ZA:4O8!BU@'.8 MH!1%=0Y5TK.QMC/':Z($364UCJ8-C)(< PTT$%=ON?=?"=.D1X*GDE? )# M,@>,-*9D,.9%*R8E! <1OK04DIJ3S64I0[[U>_1+N689!MD=@7\_Y M(=RM[.>RQ%O^.FA_0P$(]5K-F?UQPO%%.5NNT\7J@:>=H3P0FG^]4GB(-AV MJ9XT=QAMR ,DR ))I<.H; '#7;373KGLM@CLO@XVI,LT0;^%R?PRI0F;6117 MWLMA ?B2!JJTKHJ5$^+6HV08)ZL+' =JI[$!!L O-&2_G(9#*9CN8%X[_1_R M#@]YAX>\PT/>X8".=^/H0.=HWT'(-M12H72F][8R["O314[-$XIXJ<8SOF-< MS^\*FZ DR5&6"-*P+3A/1"==0[IZOI6Y[CSESI&D8L\ 'D 4RDP(!K3TR_A- MM=)X6L9*?IN'_OP7CVE$?N,@=U)%=RU9M'5\O8V1>I7RL"#+^4'O),'^'W,< M,<+I-4,M6=W&'/GPE><8Y_>9VASXGIZCU0=@J<#07_ M]'?BSU&01DRRD[E'T(7'[\?&"QZ!ST^T".%^2':Z?;':P!2)..=O'@E4!\8= M]C]P6E7DQ?S6-T7(L X"YA2YP?"9X1;\'FH1_D=S=JFP (^8EU8GU7HY:$GM,)]S7^)/&K M>YEI#B&K=Q"R@AMIL0Q9 8JT:&U,9F*ZB$P7'3N+W'3'E=IA1'SPC*"=:]V6;<'$!HJ!_U,6'(;$9J0"$>2-85;OWJ3%R?R>Q(>$#9AWE/_P1.>98VC,,B&S[88DI"@ M#!#B282MJ,H C(S&GFOVADE%3=\=&%I1)#H;,5X3].P(J@]0Y=9R*D5QBF2RV?P,(&R[JR0V1,#A>^7^"0GK:Q PJN[ MW/DN)$O^O]&W.^ XWOBN">B-#/= MX[$]F9].TXX*!(ET6:199*EAS_]10)\@%4$";) (JF. MV/6HJX!\5>8/KT3BW__/RR8@3S1._"C\C]^\__;[WQ :NI'GAP__\9M=NC[Y MXV_^SY_^GW_[]_]Q7Q(O*"'OO__V]]]^^/9'GY^_??[AVRA^8-V_?__=?W^ZO'4?Z<8Y\<,D=4*7_H:P M]C\G_,/+R'52;AZI^\M]'.0$?OBNX*5L ?\ZR9N=P$#^47QHL"3WI(2ZWSY$3]]YU(=P M_ '^.($_N)W8/_YV%C&(F=\G:>RX:4Z)B_\?OZG[OILU0&B@-8^KDCNQF_-B M?[;8(6OQG1NQ\-^F)T'VP_#NZSC:U$LJV$4U7_XMN._^P^:J5/2(:1+M8I=V M^D5E\566+D1D+0#O:7CR^;:#S'_BU,B7G-[__7?!M[D].C "U\3SH M+SLG9L$2O-[0;137S3'5+?'[E4*[?1?;:X;;VU3"'NUX!6$B*(_GA-KZF;5 M-IA=32'ID>Y64B5 =BR76X9N%#/XY.<_?%U\%NW"-'X]BSRU![;UPNZ06EI7 M_;.Q"V9WU1/\2.^M,)D1SH9$, UEDO?.2]+CTT1_+4OCC5;1FMU>^QN MW*)IU8$5C3&[;IO(1SHM(T^J]$<>[^>>QXR69/^!_ MHY&]\HS]N8KOHN>PS0J5EA/QR$/M:OVQ;#8!;ZP1UI0O FF890+QD?V0SW!7 M\74M:ZY5[;"?BF2F)3#EJL@W(.(WOI=92D3O#_^=O& MU;RB\40\M%;'6O^LM)R =];+:\HW!77"R(^T.@>TGL?44?CBWM=XO:].CR(_ M4OH.IX?52M@[.Y)[%*,VD@M!HGIP_1B%ZA.8FB9X74FE3^Y.^]_C="FEE'W= MBA,DG.)H.S*WU-W%S)W??[B_\].#-%M%$[RNI=(G=ZW][W&ZEE+*OJ[%J9!H M3=Y_>'?_#SM4((: M$>3&PZG%B_O()*:*DV)%,[Q>U:37/F;);7#Z6*.DO=.6,Z(DISKJ2?'9+HYI MF(ID&X@?MK;=[=\+T&B.UP5U]*PN+.O;XG1)+8F/7%QFU$E!G@CZXV4SI!2N M:?E/]-Q)G4P^XD+=6TQ^VB+Q$>G*A34(875R9UVS/S!^,Q) MZ4,4ORIML-\*NT?6:G682%@TP>Q_]8(:2">,24YU+&>[W3A!<+I+_) FZK%Z MOQ5V9ZO5JNILE2:8G:U>T".=C1,E.=6QG&VQH?$#&_0_QM%S^G@6;;9.J$8X M56OLSM>H9=4):YMB=L9F@8]TRIPX$=1)1GXT*'RD0=#FE'N-L/MBG4Y[."BU MP.QYM7(>BX) E76W F[&^KHO+=P M;NB!V4VUY#YV$^(GK!'^E3GS!/JE;N:A;XO6^%NWVKWKN M-'U;93\<0:#>M]46HX!6^L$]>4/V87 MX4?RR&R/L@PR=0F&AJ9X_;%-OR*_2M$.IS>V2ML[[RH[9Y&Q<;R2#',6!QZ/ MLL"I6]/L?X_7[6HUR7VM\B5.!ZL7L:]7%=0(D+-:=VZUOO!#)W1]!N*1*/.@ M**[9L2M.7^RC?VVUNH9^^#RXE_2](7-U=;NZ7)[/[Q;GY'1^.;\Z6Y#;/R\6 M=[)#1-6GSZH!%N[ZW72?;3:@N\'JF0LS>P5RIQCPNO69%]A"+.3"MY]OGF9G%U1T38 M_6PC[LZ>O"?Q3]W_I,3, 63>7KFQ/&K'S[\X@2[_15IU[ZXX[*3!>0X MU>J(-VZ[B=_;Q1EYXK!E+/]#8C0C3DIR7H0SLQ+9(YO!A3]HR^CYD =7%?'=:&R54+B@O:,!% 7PPF"Z!D>V"'K*(8WA#P_)4'$Y@0)7#OZ MG^_?SW[ZW4\\OOG?'WX_8T22+>49J<'19VQ]@OQS>%\Q6%):3&'@YAZX UU# M6SG4&YKC#78=H?N&0$Y[M(!O'9='T;9_R/_T(8OW/_[XO?U@O^)&\JB$BO7W M)+0ZX [U=EWE2%>WQAOH&C+W]?R2(E;_'&Z.U4O9UU(+8C#!R5L)P M$'U\:F5]>QW3K>-[BY HKZ/7$'5\=M)?#3J,;WFCL(GQ? MI\YXD(P)'R'$"+.W5VTE?L>T !5,$FZ""/A8V;G.%@:_^NGCV2Y)HTVF+T.P MYBC7ZXD[RCMH7]FS;N^&-\J["-][HS;C(5Z(SKG,1(SSX=ENG(]C@R05P4V3 MU-_P)ZZI$X=^^) 0/V3Q[\(TFDV581D-G^KNDWW_1S&Q_L-/C?/JL;84IVI, MZP?T.J>DZ"&T=4HTDRNF"=%R*YS=($?ZR?. #R),Y_X1UL#UF;9WR, M(N^9K244-I&^QHU#^WK(D)-_AQ==#B3LZV4YH2%":)L_*-P41,8T.74"OIYU M4D)AYW!-!/_A-+M-G3@=6[=[^N"'L+X'#5_96M\*SIOSO]7J_-?EY:6=L\^4 M">W?!P*Q$S:_7+RXP0Y*9K3 G&97W!#81?_J&6I[/[S0V4GZ_F>4.9/B_(;Q M(>\*3B1G]8VE ]DQC'#.EE;+B^7\]')!EE=W\ZN/2_A37$BPMN8ZIVL:Q]2# M%T@W],YY*4R@,%9C!]PAWJZK'-CJUGC#64/FW@4<,M)$T.:O?TK1;&G5,:3" MBXO%SKJ^JE/7M'<8UG)^CCJZK#X:D;W@C:D^^X7YXN;V]_R M<[J[OUI& ;WJ$8T=)A/I&G4DU*TG$5E:-V5W7:^<5+L.U9'*J&N,.QV8=*ZO, MVI9X@[)%WMZKT/P"=$;7;G+[T$IN!5T;T;?8;(/HE=(;&D *^.' KS")3C_< M,:FMN1R>K9WP1JJ^Z'W].>=P$@L6I&YJ:R6 A]>=Q7*\8RJ[T08NH3E03Y0O MQ^]I2->^G9VHNGLDN>ZOS?&MV15WB'?1O^TVVGX_O('>27K3]]$*1OBNHQFW MP6EV,:IZ70-X MXVCAUI8J,8!NU>O(MB--V@!OS>13-D8><8TZJHYIII#,UR+O48/:SKA#5U]T8U= M0):VC&QGZ ZNO+B'+.4^H+B /(BF!5A'>]>1+4\M#FY!2'.I#C=Y#GKAQC%- MK1OO]%2[X,4P7<%-WNZIK P07?$QK;I\ST<-8U;VQO1N_*@ZX [?=EV;-LDF M,?%HE]G@5IGMB<: RO+[0.62P7*02DJV;V6@#\,:;12[8W@#K4Y( _MAMK?! M#.U_69Z3$-7'3[-/7"'DX:VU;0,97.\X:8C=/\D MC(*V>,M.IOZMI<2+ =5=??JTO(.J>^*JS]GJZFYY]7%Q=69I<#N\UL3FW6)+ M\CJ*^9/2:1K[][L4TCOO(ACF(3$EXGDCRY!9DR9M]X*,,\&-")%G(#U[)Y%(XOPVNZ4X(X5()).)R$*1-")5L4@NU\!7I#36VMCL6W/QT^)6Y\:M!N[]F2_69XD:))V/XE@O-=,DYT)I[290&?)#LZ M2&D]C9 =5M%$*/H_O_W^/=DZ\8S\./O^^^_A_TGRZ,1P/WN7/D:Q_R_JS4@8 MA93XW!KBP9)=FJ3L#X8-ME8>4=@:LC7-<,>K2J_]A87MFQR_AZWP1G"#K+UWKC*2E2@V&KT_";U"^L"O3UE2 M+XM@)^5W+&!X_=V'/\Y^9/$, G_<"<>YX/RP GN'9\;QF> M.5L_=0()X!1&U.J(.W#U=:_P.\C>^UY"P8( #[AWE'&9$7D@MW-) M>E3]X<&_$Z:_*[C8".\;FCI^2+U%=KEK[KJ[S8Y?,#VG:]_U53MZ6AUQA[>^ M[G)XM_?"&]X=9._KWCD+DO,@[R0N)&-CI^SSF.KGMR5Q;.EK[_ZA#UJU;LW; MXWB#LD%6D]O4!WO2U\Y0J2-:+U\,H/;I_')^=;:P^.3%M)1J34T80!V1H9!4 M')1RTAC+G"KLHM$--XKJZMVEG"E>A-66W&SY4MO91,/H>I!BQ#7&$M#S_&'? MBR@^CW;WZ7H7Y"6J;JA+_2>-^FP=:> .]5X6J>QG="& %P3ZJ7%T6;22](S, M*Z].GXE7IR^C9-A[N!K'%>/:!DK.P'EA;J)8,E'3*^?O_)!X41 X<;*_?M3! MEK7_ GCQN^]_^.$]QPSVP=\^A_=[50[O2Q0TWQBS75G>T M$U&\T&1.-=,52[D4MA:8O0J9CFVWAGJFE0/J3X.;0[XT:O;C90Y[6K>N+%H8[R&\M^9YP("P7!2V3H$<:-<'96 MD&5T2V3I>UMFB2>NOX0$9,MLP?/V$& "5SR9%[G 6@:LZ30E#%#IK([]_1Y3 MB7FEW,9B77 @)0L$\3V@UEE<'Z308PED<9NA@Y6*#M,+X*JN;<$K6D\KI;TP'D;O:BSCN3_:<4VMUQ-W8'?07G'Q='I+Z2["F[F>BF\1/:(-$"^? M)2MHKIV;>TPFUG56S0W-)Q';QE>.U9C&L5@>05],R^0#=1O7R.K6$PM4]>I8 MT71" 6IHI5@7G$,6A-"Z[S*4LMG]$#Z2BK@"L#8 5;QOPE38DH+>43U6WQ@VN+5K*T*IHBA=8VP3N7R#XZG9UN3R?WRW. MR>T=^X\H%KRZ(*OKQ+>4P*+"2XUKO:6*MGHQJM;N]@6+Q=W/RR/+-3/?]C'"7)=1RME86R MJBUP1TZ--G+<2%_CC9HZ(?MZ&*=%!#$KU1S,*[,=3!F-\7*DWV:<(EN47Q3X M2$,:.\$\].;>Q@]]6 5 M<[%RY:&B6I U>Z,&R^ZV:!2H$NK)UZ4Z2A_[T)> M@LV,9(SX%98J*Y+QLC*@CV6&Q>7E\NHC,\/BBBV!+_G+.?/S3\NKY>T=+(E_ M69#%?U\OKFXMS0(PQAU\@[H?P,%'206,%-G8]N6QNDKN6;D4UY4:@M;3?*C\2M?8,)' M)RG;PP=W_N:>QL5GEBII#VR^^?**K*[([?QR 0N!^>WMXL[.,Z[Y\]!B5["F M4DQS2]S!WJ!=[8OQ93.\@=TD;.^+\\4CX=FCRB*TK:P&5Y M>76V^K1@>HOY\S=6GEM;AD\TX2]N"E7SA^649V_*YKACN$W/ZHEH?5N\$=LJ M<5]/+0EG83HKGE"T$IL#*IH]#&EO@,U%:-[ .FR%/?!JM:K&6Z4)YC"K%_1H MIQMB)TE_K3B86K16K5&"Z727^"%-DK-H<^^'O,QD\9QTROY*?(\/\5$XCV.F M)D\E2X<]E..>5(%=K19>\U//K>X5%Q^..._A'_A5D4!F)-5ZP&ML O9,? M,SF)).BL?(P^)17&1!:6->/B0B&I>5&\5=5U1@JI+0'M5'X2P9'7YTH?*5D[ M?GYKD)G7+VX M9&C\\3,E:;V2(]XY@9.@"^;'8IJQ8_IFQSIL<#^EZRBFHMV=\T*3Q4L:.U'L ML=E,_+I,Z29AAH(9 K-JP$W5LD\[)$?N;U2_+V^7JBK"8M!Z25S1MS(N MZ-4.KOZLU@=ENULFI#W(X [7OG:1X[@K#;P!WEN3OA&1 M,R091R)80I+!89G[ A1L3XI'-Q.?(=^2S[>+<[9X)6SF?/WY;GGUD:"81>N: MHVEVW97&VT 5Y6R\$X'IXXF9F6U',+$WL1_7+(/IJ;&!/*ZFV:^\2Y@/^"%Q MH\UVQ_,'BG<\B_<#3NYM+8,4)LF&-MT7@KI3F21BMEE% S-5)":'FJV*C#L) MPX2<@YEF2%W;SCW&UK4+>GKV5K)%.54VC$")WL\N-A-_ &*Z][>K<[^Z\^KR_/%S>UOR>(OGY=W?[4: D+U,Q:I M40CW!.8OONH NZW/1%R^2>-:5Z_K, $7;Q2[]SXK)TI*JN0+T-W?1!GG-*"J MX'FTAD+RKT^B#3>UQ^V*KIBWOZF#WS7:1^_KH M_KLZF<]^$>3M'(J,I:V-F)Q['B]+Z 37CN\MPS-GZ[/5>V-OB^9D24[7TJ48P'AZ3L5_E^'A!L]-% 074?SLQ*J4L>Y49=S_ 8VQ66FOR79FO4+,"899SN3+\3FL8$GXLF' MANL\E0:X4>!0%SG RV_QQFZ-C+UO[]"T6C@9JCSFA686C3I#/@UU) M&B:B+E/;$6,_6KA!Z"@+5<]E>A#""VW'J=/[I!ZX9H_5DR@F'V,GA/P-(0(1 M,F2O+9]P,8@LA^WT63M& X8.U@(26,F55>C^"Y16X]^MMKQ Z;%K,<=V8%\/#ZI$)T3! TI!EU,8B\8Z81#:Q4DFM$Y^PV MZ]12F1P>Z>AB?K8C)CODAK*5A^_RQ/C0@^]8H&UX M[(F^')4(?V06$_H,:309?>+2/@FWQ_]R-MO_#4GBA9T26P?VSAL(I*7,$ LNP7@V610:U'!]8,CVA&CN_7TG'H1*;F@ #S#<17?. MRZ]^^@@G9LQP%U'<"9J.HX@;H@Q8JYJ=U)L<7L@RH53_S*:"-\F8PU$;%*^4 M^/.EB6H;VM+3)C:MEEVQBZE+_2=QS2[PZ0Y@+&66>Y8LQQ;&\(!8H<8@<;D!9PB&;=NH! M0(BF3W>1(FNW_@3QAOYSYR=^2F]I_.2[5,Q/;Z@;/82<"E\PMX\60['%#7)C MV5TQ6QN$)U[P'$US$_,^-M_;2W '/,FD5*,G*IVN)%G%:)^Y=. MR0@7U]/RRVJ,NJ4YU_#*6K\QRG%F[C(TB@&ADO0331\CU6&_9E?< =I%?^65 M4D4_O(';27I3%TVS-*"<$X1VDA+!S%),CV('L7:,Z98I\.C8>2B\HJA8R.6: MZICFH,>$@KI>6V4L5YM/)(050IN*W/P\*6> (5H-J[P?I U;%F-=D4"B[MA% M4XKI4%%!G;J!HP8JS:ZX$:N+_HIJ*\I^>#&LD_0F:K) %;48+67W%:7X8/UT$43/B7[MQ;HNN&-;1U]%I<6#]GAC64OJ >HJ MGLUO_TPN+E>_VGK^#[2]CB,(+N_T]7-"O66XRM]ZGKLI"[O4IVT>WHL0;K_O M;YN]UP8[4L$;(T?H%2IRTJ U(VYCC!Y) MS9I?TE*MQ2<_89Y]$<7GT>X^7>^"N>N"YS547VSJ@A.'NNB[5Z%1V1[O0*XE M=5\?+HCS>QDY>9+3MU68<3B%3QV/>/0^/6+<-S!A7M,XAOT"6+3?.2\+(

  • G:5^THMO?"':V:6E=GVHU=\,:LKN#]9[""?K[3!I>L,A;D7<9DD$0;C8GZ M2)K#):EM@5[O[NN5MK"I=>&'3NCZX0,D/>IM:1UTP1W).OJJM[.J[?'&L);4 MIG9U"O(\C1?#1M; "O,Q>%UH[=9H/4KL?G3\$/;S5^&M$]#5FDT^MC1.7Z^9 MGOSIORVL%Q46T^Z,.YZ[V4".;+V>>&.\H_Q]G1_8Y*=AS/W/_60;)7X>"CE3 MPKF2@NV ><%W;5@PIF&8%1+&!$QA;^W=,*&;[I>4Y=]#R.Y*V[A M\U*XT-[SH8:)G^YB2ZDG#;83!P+]L>6@_V2AI=X2FLA2[3Q)8%&H,!BN"'Z( M8<6P0=[EK+XA7L:,&00)'N2'##>\)A,DV&C;J[;KU%! K7\S !SVFU+L-TAO M..QS3J1D9>GN[RA6*$F)&0*.(%^&3S1DC-B\1=LXU3Y3"^L:C9OC6>HPI4"N M$]MP!$LLT$2N6;55^EF*UNN8;AW?RT_]LL/$>>BMTD<:-V:-]R8VM?CN8J/F MP->A-"5$Z*2/8:C(>!?'\K &YFR'R(,[!C]&,5)NC2SK1FP)1-P<[HZQ#5.+ M>_^'-CF#1VK9>@[LK^KLR]9VGAB=--FC9:JSI.244:93?]"8C M'UWWMQK18,<@IA ZA\PI$4XJ"F4ORZ.3_F<.]40F!P4:-M$\?:BA,"EHT-%C ML',(B2GBPXAA3>-)ID%V(G'MO,(4ABW*V"?QCF%M:8G.6[PMQ*8&(5ULI'>. MT41I2I#229^ASCHRYGQZGK&7T08)Q(QBJL(F6\DF3F:30&D31'L@N35>CUHB MRE2FAC9:5NF^'U*0F!*^Z"DRQKY(P14)G QKF=-\RZ.R$>(V;9GP#*S\ZE1, MGVBX0[DATF=>TT1A:O#2:HTN^R,3G;:T*S'P3@F^Z MANA7JU38KA,!W.C0W1;]*KWBQ88>.HQ8V740;(A2)VC"AI%-HE5)$!%00 )+ M8J)4=#.A20*'AFTT *2!RN2 1$>7@0"E8(VH[*D%*^V7BEY>_;*XQ5 J^MIY MS1^?%*_$5&[ SD.O[6YX)P*X\:2[+2I5E[1[X\6/'CKTSI3*6/$W706SXH;X M3%P1G_'E_!CWQ)O08DR;9.\J\7V.;7Y=GF]U*(PP5KTUEU(ON6#14G--7@JY63(*E)7 AAG[ MJ'FZ2_R0)@S-&'RU,SC!*?C/^@@.+ M&;YXL?Q&Y:AVX0KS+'6HA2E?8"\NN//M$*?>)G;@0RS.^&>Z-JQVF1@\U.C; M" =2^PF%?YW4)L-=HH\EL@=1&0+95^J*;*/RZ%T9]-'Y&UG?!B@[[H9K;8+HO,(U;I+D.OTPQWDVIK+0=[:"6^0ZXO>OW93S@$B>IP@U]\\&%[_ M8@HH6K\G$#X-8MK9IP<*/SZ#8P& U :#.V&WW6A MW;D/J_K02\ZBS28*>17[EJ,&92?< :FG<]TA6'T/O"&J*??Q;LPB-?;\T(E? M2<%I1@0OPIE9/A4;P0)>S@#.!1,@_Q@%'AOA;<;U110S",NR_=AD7CNV&SM. M([[;=:^+<74O_'&N(;N1$^"2"5^YX@GS 0W 7XMA2]>VMT-%9FG&%" _* M2LPYC([R&E9W$!W=7IQL7EE2Y!$$/MW!V */TCZ7,MC>(.00N]KR',;%"XU= M/U%G%6OT0PXONIHKKQW4=4(,&-JB&[IB #Q(QH047*SO-(ZA.\WH0I!'@I7% MF0;#-J@PPQ"&_8/]E;"57,S!K2@R4Y/FT(RCO6DB!P43%JN9>/0CB!A,C*AU MY!2$3S-*_J0B0%GD:5:;;V1W&F+7<&*=ZY:6+J M[G9R8\,0/]7;1F[C0/Q&<14+3 X!=5L.1HNPX#>K7N]2[ED]$_$\J"22E6TZ M)]W%=+7.BLDRHZBV*^H:X@X3M6Z5[;6#5G@=N$'6WLL!3I+G1Q9$R9<[^I*2 M4^9R_[!TD=>\HJC"+GL6AHW%UPR$W/9+_HT=<(=ANZYR.*I;XPU+#9E[)Y[L M-AO(66;Q>>L_A/[:=YTP)25'DK,45?^R9T"L[.:>.HF?0*6_R1)W(%APEYRZ!Q##V]P&=&J]Z !S$6-S9(]C[2V:+0^A%JUVY1@ MZT8\C01I1;6/6S[QQKB5U7U\&XH13)Y^H M [2MI2#6Z=DVE+7UF9[_-@Y:C1VFY<'FX%AR88F^_17=:%K;#MQ\J_8LVMS[ MH=C_;1EV6KK@#EL=?2L;/0WM\0:MEM1]O7Y'XK)EE+;ND[*M9OD/_H(2^(C#5'V1ZB1[& [V#]&D??L!\$\])9ARG3P[P,Z3Q*: M)J6Z+0-65QJX0[^7160$Z$0 +Q#T4Z-O'.3<^![ZTF/3-7_M.XPC*9D3P9T_ M\8,V5MH&R,Y$WD"T- Z8W2A,/%[,#1S5@-F/$51#J57+X(02*&RH/;XJ&^.& MAF8=90BH;XDWU%OD[>NX0):L[@/_P;$V'ZRJUC:8J5M/R34;AR=%TZDXISE8 M+:NH&*+R$FW-M^X0'C7#'7+U.3N[[9 ?D8*!D1PL#\R#*ZXK7B% MRJ.^> N4K:6*@CV0>ZB]F.A* W'"8&Q\:HP/5QAPFP]B C5OIW0"XN)Z^7D5IVP#: MV@DW+.CI+,- T&T4\\?G6X8R=7/DD=ZB9R6P%6T1QW&;Q+W= M5! FRW =Q1MK%0/V]>LP5FGUG);OZHY/[=VFX]'#FW 437&/1B!:P'-[9 M;>V].]FOXG\UJR2T=\8=Y-UL4%/YH*4GWE#O*/_1U0Q*1C-Q$?^5?,G^:SOF MQS:%7!_!1N!_AM?1BOH'"J,<-,(=R/4ZR0%;;8$W,!5R]O6ZS^(UF8(@NN@; M6%\[#U$\2V 21R'[TQ5WV[J,L3W(X [2OG:I/DW1C0;>0.^M2?\W&9XKY7 J M+-'APNCFN:$NW2L85.&*L$J*'HYT)H(;1?K9I$/=E,D@2$\]C-8,J98,08,> MEDS#,"1Z"'U;,_NSF'I^>ADE25%->!DF:;P# -,#BXXD<$-%'WM4,BLZ],<+ M$[VTZ)T\P)D1X%8\H.<$I&0X%D1H5%L:U3#9O +>/X87??E%)\BNF =!],R8 M4_$L86D^.VN7N]CQZ#ST5NDCC7.92Y$_A_=^$%"O_"2;C2E,? 0YW-!RK)UD MF.E+"R_D'*U1WRCCC$6];6!-:J)N1G+VTH?XUC_63%A8I\9V-A!I&;ILRG;G MO.A-8!J:XT:4-CUEQ%"UQ8L(K1+W=5=!F##*Z$)X!)WM3!**LF#2LR7ES*EY M1J#;%W>P=K) ;?F[IHYXP[B;^ 8*PT7KVE4$OO%Z),O4V<(&!(CDN5OJ[F+^ MEB_LKD2[](8ZGA^\GE.X@V#&H6]_( MR[)G2QGXSB<3@F12$%D,(D$8%H1"8,1E^$23U!IHB1NGXF*H'AHU]\ -,QK: M'MZ?KFV.%QATA#[VYG1^7QI)& ^KLJT[T^=^XCP\Q/0A>PXQ.U&Y SAJ+6^C MV1=WN':R0*7TC4Y'O"'<3?S>Y6(J7&!9D9_9?>&-JY&E[S"@X4?YN'WJ7OW/L!F[MHH4$_2KBQX0CK5&^*=R:#%S>.4:;_ MU>BZK(>9*%/(CQT*SEAPQ8:99)1QY/ 6X4WL&:*_?"!YW!KH9!I'KCQ:1"+5JY5F62 %].&4=-$&)?[&;.\ M=JT,=[ ?DDM%V&2BD(N(:P](P!"9?0)T-(-A,+Q!:3'Y+TD4HM MR*-/8Q: M$K^-ZM?X'$;W"8WYP?0RW,).%D 54XM/:-L0VCP7W!@]D%5K#[?,L,"+TT,I M>OR!68'.#6@,&3"E8(1+1JJB80%L;(:6A\2X:C'VR1X*9[-?7CLI)=2)PQ,X M+XC*HK6LAY.274))(KU9O)-_'1_42VMB(AASED3F.2/WK_('&:KM0]FHSW5)XLQ? M?-7U6W5KW!'1HF7="UQ[3?'Z=YO 1[^Q5?%4((W&4>'/F-+S:./X80?S[/>; MGO/6:M[FQI5.TW+H>M%-NO:,Y$S(%\&FCYNO_1=PW=]]_\,/[[G[L@_^!@MJ M/UV&WBY)8]\)SB*>).4"V\O _40W]S3>,T:7?CC=M[/FX+[:G>RZKQ>Y/,>- M3Y?[_G(&KO=M1YL\1;,.' ML+9RDF^'6%;5!?UXUM(QQ1?!:]Q%Y>@FX+^P*7#[S]M/U'UT0K9&#/)#G2A. MEJ$:US2ZX(4T77US-&MKCQO(M*4?$,/^\W\YF^W_OB6E)$029<8BVH4=YU]I MDI+_C&+/8<'\.74>1\6PP0VE8P5K\#6:]M*/C&01D]:<<"6^Q]_P8@W8A"1,UC2&@T?(,X 3L18" MT,27G__-TQ3$+I%WD*_ OF=3:6_&YJ)NL/-@\NJ$Q-G 976>Y_"0O2QL.;?, M#_V47OI/]. YY6P#S)LGUTZH@^93@!JUT";\.*>.+^J'U1MVA!XH;.SQV93KQ/$KGQ:).1%K M@6%*%#5AW\4NA:MC1,]&X &F8Q#<0P:<\ZB#%!'S\F&=5R M^)G/C B9B"P4R:3"AGOH;+L6MG-DV]',=NSKRC(4Q5SHG-ZG9:67AH2QVH:X M<4RM6^5V\T$KO)C2(&OO>\N,9*5ZJK6\L*IR5\ZF.1VLH?F4W/)03[5SEFVG MXJ(U$AMRU!D!V@-D>-U'L0>+80H,YZ%WS7X\/TFBF+\:V9#BI=D1IW-VU[U, M\M+IA3LYHJ,.O8O'/OH)H0&_-D?B,E_"BS8T27V71#'L+U/_(21)*9)'//!] MV*;>%F*1D,GU+;D]:/;H),0A0?1,8];("_Y\[WZO< M*X&92?KZVT2^Q;?'+LF(,Y9Q] P+P&2WA8?L&._[5_;%,V.6TC#K1R'G@S&% MW?/R3LK("6FC_+!7W#A,VXLHAE<*5L\AF\+:W=L"?3O>)*_M@A.ONNA;O[UU MV![OH*HEM8GU"Q]DD2WR!E?:C3;;*.1(#%5KP 32%3J[4?S)2;-J>JOU910^ MW-%XTR.RM ?1H3 $5.FIB(FA*EO O8'H"]1V1(H@% V5;06P* M%KK^U@E(-OWB]@KS"<-:3!BBOA.&^D5,H??<\WA>A!-\'[YG_ MTIC"PS0Q).VP3V$@WL&?[-LG)Q;;I/S+2!P\\;'9+_8 QEU*C&92&45*7B1C M9AM<1[9%6<+FT)_,XR6O3UI7L:<#;NK3F )^=K3((8YJ$I@*GG95QRRN!L!= M46?)$AJ.91 9%3E/59DP5/AHPSK1EF?+A@^-[F*O/OHJEX\;IZ@1FPSGHG,GC7N,T M@3O'@4W+3.UVM]V*DQ1X!J>X;WH#UTVI=Q>)2O,=IFT]">*$%'.V.IS0]:$V ME=G=4;J9G>HEDBB'-ZK%,IK'F:V)GQ5;R9@C"T D"0D:F6($X*UO)\B]]LSUN@P[>1C5:> M5\@3*^<>"C/'7 9NGT0PMC+!*IZ-7KPXF_S>9T-9Y:;VN&&E5=/:-\_W&^.% MAG:1^_IQ^0(XD6C;K&]%.[LPA//'/?WL09A%DOILL+*SY&>6B&&_X9R* M_R[#PC8T88L&ZC\UCT^:O=''>QO9?A$DY1O M')1%VTP=%M>]3'I-8[XJ9S&V*NYXW++_3=8^E!"XCNF3'^T2ULZ///:_+IR2 M/.Q//08@CQ-RAK)C?JQLDC;N0^9!-.T;=R4IZ5ENXJ1I[-_OQ X5W-TLQ9-N M1)$D%Q#NJVZ=./6=@"%;^;$/-T"%Y-F>%RPWMER)Y%N8; 4[CT)%3 :,?@*W M(4C@;WQQ]#C+R@WQ:D-0[M'AQ?/A)H5+1SWK1O63J9Z&E@0BI43D5OXUM5,_P$^?A(:9"OM7Z M1BC1M*_;T@7G@-1%WTHEC8;V>&>R6E+WKJA1(0X#04;>^#9O$J>2#[-_E?[+ M_O&WZSCR=FZZBF]I_,1 OJ8,44,SG'[:IA?XIJH-/G]LE;0W NB8@\R(YR8 M+D*DYWZ0H)]+4%MYJ*TM>D=4:[CGC8<-4;MD@[B&_=)PM:'RK97L(%I97DC= M$J?7:6B7+P$5S7"OYMJ$[NMWTJ- 14;%@&\!J58^XZEG*I06 779ZE4CE-0M M\892BW9Y*"F:X0ZE-J%[[\46=*V&TGCJC35?^N3\/8KSI7NBF*S7-L(98,TZ MY5.CPQ8XYT0->LJHC3POAP*/4+I%TDD5/KD<;3_/>[@44IK M.F+2@M&HX6)>OX+@D(N+AFS2@;4R%?9_IDZ0/KI.3&\I/"G<.L2V=L +"7JZ MY@#1W!HW7&C*WCN'F1,M*E0SLT>;5_$B9,)S"K+JK4X(J58T?' >Q('L8R'7 M27ZG^3Y_O0W2"9[&KY@TL*E*\L9VU+R=RW]W]4[:00N\,:G0IM@YJWZ-.^I4 MPIH>HVG.9]1 ,:U=0<]48*S6:]^EISL_\'36BBW-\8:,CIYY_#2UQ1U,6I+W M];V<+/%HXC^$%)Y4\#=.#)G ?!8,K^E%(1PUPEB6CU$S$7XOSF8;4)$FMY\C MYW@;/V2C8)Q=P74#*C:#D^RPZH:FCA_< M4(:!N]@)^<'R(DQIS#X.&P^5]'OBC?>.VN>AK]D--PIT5<+ 4"N/M#%G/V/_ M+03@X4ME$<8,W['L<9,I?K.G^*)!\=[A_1%N.'&*K8-V0U.\ =RF7QZQJG:X M0[15ZMZC2?S %I#9:XWIH\-STF%D?N <^4.WN_2Q>$G)@37G9A>R?XXZI YF M@)*PL=,4-N?P+YP-F^->P8H!8?-F;7-+G%&KH9U\>:"F M&;Z#=QUA>P^10--*^30&1+Q2Y6FV-,YRG>K2CG3[X'9)+8TK!<^:.N!U4SVQ M^Y\<"&(6WS/.1&A\Q'B_#7+7K-.HXHIR \2N5ROF\:YF."7IBCZ?1?RQ([?Q M&$;5#J'#>+;'A*'-)GOKV;?% MQ7:T3EAI=<(;8_HZ%V>@K3UP1U\'^0V'(LTXD_O\O,=:8(Y@A)Q%IRCT&0T6PFWAI=<9?(&KTG$1T M=M%CH)!U0809V91"\(W.32&&C5@>PRYY@)\) WS:,T#)#U$!F]-8K)7.*OM:PM^0!%92Z'K;C<6N;0GNZF1O*R7%4A_05SYKJ26C5(UZTW MSJCM:85\,._0%?=HWD>1_L,YA<)F-04#>84TMU*8SLUO'H\ZB(]ICFKMQ!O9 M%$6-OE_E&GVCE]BS9PT-QR#OG(0XN4-]8V.J<\;K2R[#.H/PMYKG]PG_0C&0 M=.F/$T9[6T*>!6EWQCL=ZJY"[XOK14U352%/SH]\R3G:F2.-:)#<#.)U="LX MH%+RBBI#O[D+\FC7T+<2X WM$<>TCM2FJ_!R!C/BK%F$D7D01,]\60_;'F\HW[$M*".!G*PZ&,1W>G! 0'$<-)+C>&F"05/S%.% 0R3 MFR,G[5L""A6:"I@'E%^\;&F8J*IN=R* '"(ZVT)K=G'0&S$X=-=AH)F'-,L@ M&4MB7;;[ L]%"NTW:L$%- M85KXH*&':8PH6,Z*_-9B07A@AI^!NWDCPVGZD^VIBWJ1.GYPRE&FXX&6?RQD.[UJ9&0[S"X0V' M>KV>]D-^1KAD!$0;N4SU#6R#**J@R]_AC+%:#?*RT\47^#RZ7KS>CLAWW2SX M36W>[>&WR'WG,'-V[RO$_F.JD(WPH/Y7 'OYT"<&FIO=1NE%^]_C]:-:38JW M%^0O=&&>!TZ.%L:73MVO>>QGU*,R:[,U\>[K'F/;MP%=O5%I MXH S'I;@10>#@:]XJAUMX)>I\\<8L$+E#8#!H54ZPT))8N( 4:/("-..DBM> MV#!HF6*6M7_'::JXTC3A8AW\R'L_U'RN)/\&D*B#'8VNIS+:$\>N+AK:7TMQ MU&,RX46\,>Q9&"DMC&0._!0O+H3T&0[KL]H(<@6&AYCR I')'8TW>Z;KVA9NZMQS#UF%HL;,;IG7(NJ))5R) 5CR,1_I<[(UYG'LTG! MB>3%2>2J)"4S MQ&O\ALQS>@]+^V?[S+'<3*3>9LY+B&)$9X_0< W/.98,=L M.?6@AA->#5FI9G+7E13ZN5QOA8Z>NA6<2<&Z?3Y'OJ3QCGZW=H+D(,UOU#G; MZ':K,9<-X+EP_/@7)]A1<7M['GK2O:Q/U$EV,?56X0UU=S%4M&(-KJ(PSO]Y MZB1^TI2T;)(^;G R;DD9KHP1QPM@YE7L&YH@">&BD(POGR( FF7,^$5IF;O- M3.7"<*>ODK@7,?WGCH;N:T/ZL5[/B81=N_:U :7N-H%0T1"^=\I)29@4E"V^ MPE#H7*=QX]L,>CTGXN7MVM=ZN;K;!+Q<0_CCH7Y&%!YO.A/T2)]/BD&H\1$G MS:[3\WJ5_FUNO]]O6GZOE+[_LBV?N=S#Q,GRO*7X\\\^C9F#/+Y>LF59H#=U M:>X\$0_7LH%B M/0KB>_"8 OR".;QB2'!N@\H6FB,9$0Z&*15K17$9A M0'12P\ :5PH+#'.=9;C=I0E'@/=Z4YS:'A-Q>K6VM2Y^V'P"#MT@=%_W_=F2E#_=2E;W<([)#S0%O]R= M/Z!QYQ\ZN_,/$W;G'[JY\P]3=.=]H4VX\^JRCB>GB6%MV7QPQD_*Y/#CT0=%ND*7]>+' MV_N6TEN/#LAW(I$TM.5KHW$HIA.(Z,%5-["^OG\E!QAA^(5IJ,+']&4+'7C! MT_?8@IX_C53F^2K?!>S0%6<,]M$_3[W5[8<[\[:S%OT/#;9,?IXN";F5?LCS MHG@>UY;&:9;IE4;\6[>0BC^B6X@E9Y^SADY*'AVV9+^G-(1'0)]80P^R=1UR MOTO\$&K,N]'FW@^=T=_@'=/\DVJ6V;RC5YQAP1.V<42+WP@DB';5N MSR0INDQ@$&T1W$0&":=J<6I\'<402?.T4+KXX]Q/W" "21OW+;I1P.WE/:PA M>WR'[GB]OX\2O7-]!2_"QKKZW$+R17"R$AN+[,&7U;IW<'0D@3LZ^MA##H\N M_?'&1R\M>M_:B5(GF&KZ^V5+@2O3/'!'SR 6-9T*?XF_TM4P:II(H\F.42$% M7A(I'\X\P@:ZAD3Y;"9X:;GB%5;S5FX<6'D'Q4D>F;+PG\4_=_Z3$U3R4$KH M5QBV2W_<2-;9$I6'3W0[XT6@[BKTWOY@+#A2\#\D9C-YOEPRM//2R?CF<.$/ M6C*SA0>W#/1HZ%'E-+#!9#I]\>. M@7V,:"U(^[XUQ?_*&>#L[4DNJA6G*S-U'*CK\XK;89F6%> MN,%E4 NW94D?S0@O> VKKNGK9OR9M[J,J#WAY"O(7#[Y&=E?:E#"B)VWO"K5 M@BV1)F?P4R<0A5Y2PJ TJX,U4'DP09D_7S-I0]W3!S\,R[)AMJJIX324^:/: MVHP.F! L\_E _LABK'9!M$KIQ' .4[VMT6>X]&M M-^Y,CYZZ&,KW"#D?0 6:)*,Z>AUV$:VR54OA^GW=FL'%+UP7#K?1+LPU391I$?VL')DB<-/BTPG=)ZOR#AI#U"7W@[AF;F\-%-/9/-OLO M(@$!&!HTE1+^@ <13)# G4&MSWAB(D,S[AI\FZ;!,TRAVJ_4?WA,J3=G2.H\ M,,62=+4^<[9^ZM19H:4Y7C33T3-'LJ:VN%%,2_+>F4>54OC/&2OB"%YL,$XX ME+F"W:B0-*C>.7&242= GJS6)&,P.A2-HZWB=YWX9:0S)W!W ?_S)@J"BRA^ M=N+]->^8?'%"YNB6'^@R4CW3"6PU#ZZZB6WG]I2=;&/Y<#MZ;S=Z1B1QR1<0 MF&026\[I0?M#5)GD-W>8-17)G9)90DTFWJG?QC^9AN4W?2PZ>!P1D!&6*GNKU!QG_,, M:W"53::(GKLMPP>;NK-E(@-O(_ZO"W_9? M8D X5C/_:M!9PP0HP1KD9DMF)ODW))<=RE#DTK^%J?& O\W<^_LN2<53:FDD M;6G8 /?3K'#(65DWI%+ XRYVPF1-XYAZ\_N$GPHJ?H!^E' #[A'6D:&S!QF\ M('B,,KU3+O/R-A+3&:FP)1)?\B7G;&=WU8:)JL9(2PX_6RDBXKR*ARJCN?O/ MG1_3W"0T^1@S6%483J,;;L#0U;M2(Z2E#UXHT):\]YE\Q@#&R8P%*7FPF0AP M&2+$GVA\'S4'^>#*\^M>6\?W(-,<;D^QV8>IO)@."/5K%/^#<,NTA$?!8L\FP/DA1;*UF6K?5">ACL53?= M:IAM97+D"4.DE&3TW"$,UOMUS\<AK)>MML#8T$;^!DX"'T_T4]\1+6VH=3@ZSLF5CD>Q^CR'OV@Z!:!HVU8:L@ M[XIVV!TWQ&URN&72RBW89H+5I/#/J,)F,;(4C7F"R3S.8(AGODN"MLI#T[>T*#4_>C6 M,->O"1LDN57-V@-?-1L>/!">$"-ZD>0S"V*""2P@O!ERVL.=E9.OWN: MM]:L62U5J8ZJV=]4G^F;Q/".-C< X9HK ,G MF(L\?;0>[+=@<_K,J+OP/ON'ZXJ)=UPPFCJ"+\,GUCZ*.YP;&N'U]6#T@86' M N6"T=>!PH?J(H/=0L#)@ZPY4ZML,CGGTYD.)%."=^1J9"TF#__C_6*Y M*:F@+EX)C(#!@)<\S-@%2C(FRW#QXC+JJS4L'VKN[UL2 2?JV_P]&NZ:#,I_ MAWM^GOK:ZCJ,MC=/7:V:P-#N*V=9< MKQR;-\Y1U,HO,-1:21YH^'!)F>0W4"I^M?Z!8B /?T"=;D=@,3@6B7(I2 !B\(/((BDPR0N"\_R_Q.<3>8_-%R>[ M_AG8Z,>-B8JESXP44A,N-N%RP^,A3'(;6X(3^U6$T7@(G$3KDR($IKZJ63*@ M"A_\D=*CJMQPCI(C67FX\_:"U=>Q.JE3&-EZY,(/_92>7/I/0**4=_(K$9.V MKYC6+PAG,XUI784;W%CEU>VR?NS4AR)^9'<5B;(9^?;E"+^+BN_7,SPU6GZH M@:J6Z=9\):>>)G6#U08 M;5MK-!3G)8=6R#,!RMP GBH YTGYXD+QW LVV7""/C8K#9U@UD^PK^>LQHR9 M4.93R=_E2I&EG%0C-"/FP7V%/^AJQ!^T?=+PQG[7W-R5)#J1 M1UJ?;C>-Z4;U?$[Z8O1?LTF2KW4JT?KKC#-Q4(KQ-4\3VHUB($\] _Z]5(Y* MG29O1_FK= R8HI"25X8_)(KSCR#%(XSBC1-(1-Q7-Z SXJ])$(4/-)[EQ9[@ MH90WE10RYL\VYH; ?MJ(].6;&^:'^\7.VL/K[>T0\ZUP*QL\.6>\NV&?-18;:9^RQ@*OM5<&5O>!_V!FAZ8M@;X1/KITX7:UKK'S7D*!IAC+.H6L Z\G++ -D M\2Z>3"K7-QP5UZ8.%S^0KACST:@V*^(+%V?__1;;@7OZ^LGY>Q2?!6R8G+_X MJILNW2A,-A!5UM ,N/WNDPPLI1(#!=#]*^$,">=(O@!/;%%26N3*V=#S:./X M^S/F_E0F&RU-5M&,F#H2DXR:1D6&B9Q9)6Z +?DB&%L)GU7LT7@57\>1MW-A MQ#MUW'\$T<,GNKE7GL"V=L(=''HZR['0W .OZVO*W7O9*:C9\-N[V/$H1$_2 MZ*DUS7#[IDHOV1OWV^#U/Z6DO:L* 4&.FFS.(6C:>5MQ0,ULA-/9+DFC#8UO M:,#7/N(-,0ULYWAJ:XPT]':'[IZ0)VJ1"W(;??J).LHLI;(@O MP^TNO6.\&A;$#VR;GK*[JMKB]=56B?LZJD28<,H$2%MPP M/9]5+S?5K:?EMX86D2K/M;A4W-=VR3V H?^YG_!+S#=.2AOG#-TH3,N[-:S1 MY.X-W:?C_SI*& L(>(XL8T=R?@08VET8X+2)#;S(SU@:]M\N_9 N4[I1S=W4$$B6]20-+NU:F@"90'?[D(I!, M!B*$(" %5N09SFQE_0>U&4SF^E[M8-ZU6N<5%S[Y 4W2*-2M)-#8'R>(]+9$ M0SZMNO/D:UY5K%']TGA6ZL=&@!.V7=R"->NB9FW MK-COD_@>O^/!(EYZK\K;Q7#K VH3;6GL1QY91S'_9UEX#0\P#F>N6F0LEWH% M/Y(QQ(",PUECQP_Y1"4BYXNSLQ4_-18%8AWW$3#$3^$ASH"/6LGNGDUW?"=^_>+3 MY/^.BAZ&S2)I:R5'8"B53&'#(O#8;-9O (?#%GC10:%-#@][7^/&!Y6P!@!" M#0Z"*83+F#%O6E5!SVK,#Z-2S0]CJVK>\6A8T<2.#'F M&'NTE%Q3]L=[_-Y+"[/U3BK\B,00RWMSPQF$O^3Y!"]Y'NY0I4I#C (7M^XC M]78!7:T_1I'W[ =!4TT1=6O<(-"BI1SOBJ9X0[M-X+Y.F],%E\TIVRRXD63_*WUV"_3;7B>-76$27 MAX8/"&(P3_4\Y^>4U_R(LL5(BB[3B,HF?>O"LZX]_CAME/K8@)V5E=($?2(8 M6(W<0326+T7PO? MD_\1ZC=N8]^EQ/'^ODO2#=\R>W=+*;F*4DI^_,;NDJHA M:UMOE:5! '>P=[=%_5JLK3=>(.BA@XD56]N5*I2%$]N6=F_BHF'?"X;3OE@X MRM4Y[/<(1S%"I9ATS1VG*]HGLVG(L+_8I;N8SC=1G/K_$OE>XE&>^7V2QHZK M>ISF2)*3A0EM>VG"1RN]2<**OE9#E9)DD<9FZ)( ))-@QH;GQ'4"\E=X:?.3 MPP2%XNY?6BM[FHNGO,B@YI>F=KAXR/"LQDXW% K#0+G' MM?CIX9?O_CMTH#Q9=.MJ/=W"[9ID)XEUG94;"O+JT:Z01:Q,"NC#!G.CF1%R MN\B[6#8+[$S"P\M6MBRZV>2*OJ1WSS1XHI^B,'WLL5K3(_J6($QEL_[HM4_Q MK0"74J]Q,0O$($(.(@29 %H9MQU#BA_Q Q)@\MUS9,2$):VW!#][%NJ/.AFA MMP(V^^J,BS%\^&D[$,&2E_"[A$:1PWSLTH=CQ)0TJ9S90 M4X4?RLP(?7&#G0=9:6L_=$+7=P+Q%4_@>BARV +'_0>TVCZ^)CYL#<.=9J:- M2\FSGSY";Z8E"?PUY4="+MQ[3B-R3^7R+@YHQ]CO8MZ%[S'#?BK[* BB9V#@ M[N(8BG%+WW[+< VDY-FAC("_X<(Y8;AC+42=F(0\/]*P^#[_T(F!_Y;ISKB# MWQ;TF?"I*/O-K%/JOHU$ AOQH SZ._8+!SP+=;N-(\=]_&;4N]LV74?P)LK7 M7VN&'<(EL#3VV+;7W2.-*?=O9%/;*]HC-4-TPCGP=--9DQRZBG+/6"* MQ""A'*5.T',::4+M.^!O(UC/Z7VZ#),TYO.&IB3C^I:XP[)!.SD6:YKA#< F M84TD E]&X<,)KP *G$C)RFH2<%7KRY:\7W7K*?GK@99JG[W$G]#;)G#ODCE5 M+[6?M#NHHJO[P']PK+WU ;=DDGGH749.F%P[KPWCA:(I[@!LTD^.OKIV>$.O M4=K>-="!*%_\1XV>0R;'$/H]T?@^LJ:AGR0[L4'2 MI&COWV H:_1345ZHG-H9IE=+?>.,&EIQ7RW<@. M77'O/O91Q%#)1.?A(:8/L(W&9K@1R$&"8I[K,9%FQ _SW<=\6VXC\NS]#.82 M$+7L,>KNVYBFX[SXY'\F+0; K>%!68D9TH$U]'WU\:W"/SH-N9ZS4#Z4P 4DI@95_0NMGXSB%R;,JT/LJ$)8VW@#I[%ND. M,1F!J>/)OAJ#@D?&S"A._"0L$?+)I7<\4A@S"$V2DWPB"V?.C#A>@#C*9&\$ M$OICP=1!8(SHM[(M-9+Z8@I0KF>S<(>E;L]Y@>*I"7E?^QKX9&,6\JB MP'/BU[/ 21)_[;M:-0=2>4L<672IA*>T-6P*U_.3M(Y8AX_?% M+,%^'-3:Q=1;/;%?W']X3"]$3G#X %\V//5U'+V)(IBNI;1PK(W8A-%,6[4C M)U[ AT0YHSR?/7P0L//N=G5Q\\W;@JK!+=L*6-SFA0BDD$$TL/@ZFDVK@:?9 MV/.ZH4]1\ 2[_4Q#/[UP7#_PT]=:W-;M@Q.;.VDL;VPU=L"[GZ4G=O^1)3M_4A..6AGX4=W%/_5XX';2CUOD40:,+[HE %P5Z+V&4+PV*I0Q(P%8J MN4^[PJ?7F1"CCMYCF$/P(,H@MC<*8]#>RMD335.HPR=$:1Q^%4UQ@IJ.?I53 MI)IV>,?81FG['X<"45A("+(VW%&>_M8:AAL:VO7<<\31-C-/&?>>^Y8'77&Z81_] MVW8F,AG>9]$3#9TPO0$O:$CNJ&N' M.W"5FLE1>M (?TBJ13:QZ+]_)9Z_YB>1/,3\*('B-('O\NAC<$D M(H[]+SQ5:C>T3![+[P?7 -/4BNPW8+]5V#P[;>XQH7"KUU89=M7F$PL_A? & M;I0Z;NH_P99N3&'2R:>@/ Y)%/)Y9K*EKK_VV3>5D+4;I8;M<1:%213X'C> M2$%>AJ N]4*:\(OS^SO@<_[H*FN^.%W>G<]_)I>\X:,3DO???O_]L#%^]QQU MC'&YQ]1B_$#;YA@OFD\QQ@^%'S3&T^<(=XR;LX>)&(?(AH:!%.M_Z/-&2)=8 MA]K@7:.]TF=R\7ZH<4O$EQTF&?,UX@\;]< 0>=P;M(F9R/_#C]7(__#MCP./ M\E _M6/@5[I,+>X/]6T.^[+]%*.^1OI!@QZJ0^..>8,6,1'R$.#5D/]A\(G] MA?_4=:RO=)E1!@8C=O?%#% M36 =(!N)8O(QIHZE4NN7?DCS3*DBH<]Y\3>[S6D4Q_P5@S-GR[Y)7Q6)!AU) MX 3+8^Q1R93KT!]O[D@O+7IGUOEBRW,O7&8DXT@*EB3G::<6PYA&*75VZW7N M/062U3B0>^ZZ4>RQT76U58RQ';OCC/:^=LBG25WZXIXR]=*DKU,7]$BT%9>2 MP_VD?K@'0* &29)GVS@/,:6CY]F,:I#D,2C-:GY4<7Z:V5*8, M.2O/!(CK%DFNF218;:'O#MV01Z"FWH>W<]1]$$>JKN3'W=I)I "6>,QL5)ZV MH7HVB#K9^XE*Q+*VXW!#-^+NYS%[#HU$D$=]+YNT[3NH*2!&A'YZ&!_="YZ8 M=Q\&-$QF$.?)\8.:1UDLO-BUS*YBP!V'Q7I-8?^=7E-F9[:Z?:#S>];0<543 M@[ZT<./&4192OP6F20@OBARGCJ$:.U!K/KL]!)QGI.!-2N;D2\X>P:-XIT[B M)[?;F#K>*I3O%KW7LG-C]RD%4KL=U+&C[CN5<-'0P%B$<%Y$,(/=P,H-4P1O M[PUHB[GG\;>YQ:/?_/WO37G?<./$#WY(WCD)<>![@(MOC!T!5 HD7%":E(!4 MM_'7W!QG9.OJ66SI-[1%OH6O([F!C ?8C%\SZO#(&_]'4)3$V-O$GQ'Z MW@ M;JWLP/S>+8]SZ"YN'T%O^2B=OY?"XJ!ZE+Y_2N!4C])GP,:C:_Z M.\<'0_XF^Z5("-"7YA2C)UN,I&WN!*#MT< XR#[&YQ#ND^>+L+-HL_%3\#UF M$B7"FJ"'$X*-6:IMHT.+&-[IU_$J&=_^$.R+'0_^6%\F :"-+;"Q;S')#AR' MMN(A51C3=L)FTML9?,3,ARP$B"4])B(>/_03-XB2'?N-6K9/-+LBQZ$.^JO> MT%'U0XPN7:3O#23%TS' 9D:R%T!+3NI]CI$08PPK9*]\EI1-+=C.=ALH3N,_ MT:L=9*\R[(LV6R?TF?#N/W<^U$$N3W7XH\QWT05_BWG%GV*NF;29H(DSWHU: M+%\?'DT0]R+2G'K'U&5R"RE(R,40R\-,$.)DDD#=&!A;X0$,-K(^LZBCXJ.8 M$H?]OW3$2<+:1]A'70W:-VXI 1$BD-6:%$*07(KJZ;AXW/TN(D(4LAKL^?K& MU24JZS6YI0FO>0+2/MM<"-GH\2]BV2E)*[NO/G* M6MG\=E'VTOPK@5VTT:\8&=>?'Q3D5,GY475/M6*LL496;4;6-< =4L\@& M#HV*,'IE'*"XU:BA-(QZ11 !6<+HVKOF.HR"$-A#8$)3 2U5NVE@@K)85FVC MZ6#"((6QJIB0/D?6,,&<>E5,8'1Q8((Y!5E@&RNY59&PL="6NN5$<$%=5$O1 M;$+8,$P!K3UT ";V\,&@BGL(P8N!X< (@TJR4/_]$"C16)1+V7 :&*$NP%7? M:CH(,4RQK2I 0($M:_A@4,$J/ !A'.A@4$46X7\8!!R:RGG"3UPG$%%:Q"RBS*%WA71_=YXX:"'#D-=!A4, M;2=2CVB03.'JBWH(DJ+AFA*]I$S&T9X=1G1*)/OG .5FYQUVM\Z8=TF=*-ZIGH]EY3].4#K=O] MN>@R-9\^%'P(OP8NA+.Q-($=7'?V'V.I^ODE<4YU'GJWCU&*$'DF J5A>E=_ MW6LWV'ELJ@4_4/9-P AD5_MBZD8/H?\OUN#YD88DN@_\!Y%7"A>[L^4;\1,V M57-W,62%P^=K/W28$W#&$9NPL1[A@Z ^;C+]"*8OJE!PDESEV]+6&48"I]$W MW\947G@.?=G2,#/"@<-E7UJI$+G*G9"K_BOU'Q[9^F+^Q#Y]H'"["\('5C+9 M&D8QNO0@@Q.(C[6+/$_J2@/OQ*FW)KWO !;8F.%$SI-D3$G.-=L(R!B/7-#9 MFGT*'%/KHL!,YIV;!L.R6 64C).E87@4$T!0\\E[S2!K:OLCOZ(KGH%([J(;&M+GFI6,LB'.Z&S7 M+=_:J&^%>SNC169#Q>/*N]/BQ0Y^*S\&3J-N( RD[%6AW:K4CI,>?9=@< WW M?S_[,_2]E4M1&;M 4E4)VQYD<"+4L7;17O_7T, [M^BMR7#K_[*TO!B2@2^" M9<0(MCE8^\>%*8)B=F(#2ZZSG*6+*+Y1;Q4>ML*-! JMY$#?:X(WCE6"]G7% MG!Z?"]\,M/_6&H&FM0(B9.OXXC7B[&'BK1.GOIU=M+IES>+%3U+*G#>?G]Q% MBQ?V@==A:=1$ W=,]K)(VT)?20!O//=3P_CROV!9SMLA= 1;\B6-=U#!,T@. M\GK&3'T8RTH58T2%,2BG;GR#8+V^]5,*SV@S*[O [(8ZP2*!-$&1D@&U5D&< M?60X@@Q.<#C6+@=;#QUH3&1CHH]&!M:YZ_5)POCR$O4Y8S:P.@&AG'5V0@7% MX 1S.SL9%JRS8GB96T=F3( S$:P%RB:D8&YO)V0J_F-CEC9G@TR:S$/O,LL2 M8K-%,?*T7(/2ZH@3^&.NX,8V M. L6M@-[/,VK2;4LE']&%,MGD+2KF>]8TVF2D;RGLT8@9STF%\?[& *8F-J\R<:7$$-Z6"+6^X,GWOA-<1PE_-)#O^"0^9(+[!S=* M!B _95#H;D=]^-"G/56@Z:'A@)"4W9OF-U38Y+J0B.0BD2^E4 2DLG(A4V'2 M;C_ 5,.N0Q1-+B@&]/%!1EMX3+/':'O\8R[\%<](/6%&<=W!G+[7(L^-_.($ MN^PLJ?([R_L@> ")"9.?0)_OVC;[.I*8(G0UVZ,=S^K[3PWD6K0PA'S5G<$B M'8-QQ+F-,)!5LGI,\(Q0L5EH>U^A[M2Y@,K<""(_S(/#%5'U"HI>=3C&UB:( M&TB.MU5;-;P@8T GXVD?TL(BEV!&"AG$RJ*HY(8F\V,DJT'*!GDGJ@CP M)Z8>J2C#3391F#XFA(907> 3BY)'\L/[&8$.%FLWM1B)H?45?4GOGFGP1#]Q M#8ZQ>3VY-P!2#7;J#%$UM"8.4$T:C0-/,#,"$8B0@0@A\(+3$!;K^0C%:$"3 M/;EQI-E**F\#5O:LT@=-,A+3!Y%]1<;#COQA&M2(8L,%$'DC@%%196S( .;X0<.(B7J^4#$J;,"#' 8,EI%Y.Z AVZ4O M9@"-MP$9%4U&1@S@C1XPC!BHYZ,5M1=C=(6?KYD=%$!P#!V<2'"T9?*[,;V( MX+X<\TD>R M%KNOV0-?01 ]\]9."H7CI2]'O6UCQ]Q9SKSJ].RU>G3&>5M"87LVNGND,>4. MA'GR=N2@A1:B^]JASR1M^I.S\2=E5A*+1C.'R#02H)C318<"GZ4!N->X'74Y?>]]8CXM&U'XI$>N?)\0-X")=;(*LOLB,2/9 RA_DE6 MQ,!25J)MH_B24>+2**)N 8)KC_F<3S%B*!OCQ#\]'=69R'E+O+.=%GF-W:M0 MK 5LI! ;4_+,21Y%>3?81G/X[(8_TR/>^_%#GJNW83QW<7%'2O\2QBC1>P,E M(%?KSPGE=1A6]ZGCA]1;AFS*]LC,0B^BN-OUJ>,HXL8! ]:2P>((+G+[YJKMS< [>S:F@K>VQ#<[QNJR-T7]\5M*7;]3EU MMNYE]#%Y\'D$MUZZV:CH,TDOKFJLX<>BP^0\>4_L 7Q9<.CCS;7;MA]C!OG7 M<;3VTT\4BC[6;-[4M<'IA8T:Y?NK!PUP;Z&JQ>U_U=_GM?W61>V1I' TUQ%5 MDREXX);-9&&.^P BD"V78=2]5/.Z MQ@]]V/A,_:?\*;RD-AC[TL 9K$=91!Y".A' .Z3T4Z/W%KG@-B,9/U[:L\HQ M?R'2ROIT&::463@50V%C."B:XO;Z)OVJ\Z/#=GA]N%':_K,A090(JJ:F/J<[ M-KA16$=O[ME(",->L?1-H'T\C'LF\_G MAN*#>UHXN-:CS2ZSG='L[.?;Z0N-@Z?1UU,HK6XKE@1))L M5F[CI:3"G7U3&%S=QL[6/FHSEV:[O M5U"FB8K7>,7'KPT;J9T(X!R"^MNB\6! V1OOI*R'#H8.$%Z)8&1Q"[:J?*9X MXP9L% QO>=SWWD^TNI;_ZZ>/9+DG9LB96 MKAZ:VN)T1RT-\_F[LB'N"7B[V$=((Q>6:< MB9NQ'G4F/)SJ&64"I$E.V\HV+0OZ]/4T"KWFG=C#9C@CLDVORG[J7AN\0X%2 MTOZ)PT#0_CP%'G1BJZ E6S=K3]'E#KB=L%W7QBEXT1JO8VK(;#)'!Z@33M[2 M*Z_#J0N/&OJIN!\.1Q05-C8"]2,;B4'?\NZ"GV9K_5N:IN+:@<).NGUQAV\G M"\B1K-41;U!W$[_W"37C0MX!GV\J=W@*7J1D9B78QS1#P,T@W=I)"@[$>8@I M[7M;NKZ 375E*28##5<6V]KC#&-M38O",TV-\86KOLC&=KD$?9L7[(95N/>T MN#;,KBG3G"VL'^AJG>_V__KHNX]_=ABH_'/GQ]2#.?W^S+=K7[SAU]D">2AJ M=\2]=])=C=[76^A67'M/^.GBMF ,FROW^<'9,_ FCT["AAK!G=P#^U%W5<8S MRG7%"J>'5LC9$';\'R9CX+M^A\80>A#HQ'%GPXPO1SP9\POX16YBFD?N/ XLK M?K"6+KBA3D=?&<":VN.%)2VIC]ERA&T6H#[+\&4F XP5&!E#Y4,,F,%;21#X M+(C]R#.U!%RLU]3EE[<9CSV S!1M"=;^5'#&[Y%6R1>(/4C@7BH>HY"A12/E M(D 0['C"ZG,^&7&RR8BKBIY1UX\V++4H3,.YDH-Y6HZEED'4OGVZNHZEZ\IQ M5C5+-L@\36/_?I="(8"[B']VRK3SLJI \SB&Q-BF&E9&"./$;?.VV[L=?215 MO',X@[H=<<\Z%Z&*5$26 LZ=^.*,WXDK(IJW/ %"7EZKB\C269DE(C!J::$, MU?PDV7$[[OC;I E,84DD;H)L&9.$""-&X@9(&O/R7Z]9PPU-'WM-/,>!PS+[ M/WA=9HJ*=L?\0HU4WP 0MENM,PJJ24X< C44LX)_LEPD%RSKCQ?[!K1F:1JX MK1K[+I_HL>6S*UNJ0,.DSE+C)+>ZC]3;!33;A.0C ;,87/86]7BDX>#T]7"T M>'9BKZE;BFB.,%0/,J]DYQR"39G]G)TE2F=^3^M7X*"#+9 M+)MVS2QPY6QHP_6^O2:X8ZQ.'SE,Y._Q>GJME+V/K5D_ M0L7JS+%6J\2W?0 M:!JNIKXQ5VV!W]T,W8N3',[P13A^H'%#MTSY1Z@T'4G[KV#*XO[5:W*PE?")_2B/!-AEFPEQ(0J4,P-9QGT; M8FAS< :DY$ R%MP&5I8:;=,ZU:SNLN7ZDQ'".&'"O.TJJXJCJ>(=]0SJUCL" M-=8.+4N'2\NWN3!8$7#L,0H\)NMOR>*?N\-*-*/ 5YF,M5J7J#HO;IZTI%=V MZ(X;BKK:008!1U(W?EO.81S7 C4&L#)WJ9VM5?,WY[OT,8K] M?\$]N%-:-O94V'HD3=PP8<1BEP$ M$EG!FM&,D>N\C7V7DG=^2+PH")Q8NCKQC0U,F(>I[V4'_[?4W<7\M:K%BWBM M[X+%S1F__\'7AZOU(KOPD=NE\85P4[1QHXE1"\I08X0P7APRJU[ON)2D(*48 M))>#P(]-)$E@/I#+4H+7;(@GQW5!#(\E3PI3)J4I:<64;M64AS?(LB=#.4:* M*9@58)32%N@#+(#9)#.*(<='.H\X?FLA>G,E21.I9!B_RK#B?WC;U"R.PI\CPLB;KP>YJTT M-L09#.VZ@:^K6^%S90U9^U\_E,B*HP_3F2V=W; VKZ6EZ91<\3#'I:G=5-S1 M4+Y+K4/VSWPY>L)1O#>7*@:(K/374%[NNIY4O4.6'R M19"VY+>-#%'D LR MI@TDXC:B/#]%$LKRBT$9ABF,T]@!=T2WZRK'L;HUWNC5D/GX8\"2>#'\6@G3 M492-2V630V7__;M2, 8-__C3O^6?9*3^]/\#4$L#!!0 ( +& F5B6A7.3 M648 -45!0 4 9FEX+3(P,C0P,S,Q7W!R92YX;6SM?5ESXSB:[?M$W/^@ MR?LP/1&3E99W573UA+QE>\:V/)9R:N:^9- D)+&;(M5<;*M^_06X2*1(;"1 M@)3OTI6V 1#?.0?[AP]__O>/E3-X WY@>^YO7X:_''T9 -?T+-M=_/8E"N=? M+[_\^U_^SS_]^9^_?OV?JY>'@>69T0JXX<#T@1$":_!NA\O!S%NO#7?P"'S? M=IS!E6];"S 8#(]^.?_E^)>SP=>O?XF+N#("F,5S!W%9Q[\,LS]/P/J25A'] MF>$C67+T5YN0/F=+DKY4?HK!<#0:?8O_^N4O_S08_-GW'/ "YH/X5[^&FS7X M[4M@K]8.*BK^W=('\]^^S.V/KPC^HY/$CO][DXHC^^_8M6[=T XW]^[<\U%FIC>"J8(@TT0@E40!0;ZS3>4\AM;H;&)3.!]:V;C-(1"1?6X M]MS FXP61#ZZBP'9!$,"A9N(O#-?^H^;012]1@773:+4R M_ V4FKUPX6S*-."@:II>!$=5=_$,Z3!M@&IZ&X0V'%\!/[_-/J8 DQ?P!MP( MW/G>"DHR] TS#'Z',]OK* B]%6R*#2!@*%N!Q7>&[?^WX43@$1CHY[CA-; 2 M4YX"R\8F[#8#N]Y C2M&@1W?/<]ZA\LIV#CN+8@F;#W&JP/N73BK7]CP7^,@ M@-.E)Q VL)+G(PHPN &OX>35L1-"M 0=VOO=7*#N-6 M#;6".C+8?P,7]=X-#"*6JF)L;#[A)1>FPB:P0 W6H,3"^O$'";[7:MSF=U' M=9S3S%!/+W5FDWU!E_E-8XN)I2J>ZS0VKJHPK><]C2WF_Y3Z.5!CHS'E*9L/ M-3:H6(P6LX;&-N&+U&(&T=P^;)&=F$W1*BKSL=TQ 0F-18+'R3#UF2>9F@!(-J7=40K M^VTR@8%MX '.;&P'3NY:T133YW7$[06L#-M%W0?PXZ')-4%NLM0"=*PUT&5- MU1P2(6F5)-Y5D1SE&141FM,*7]N$U'6JJC?Z6B."JY ];;%?8-P M XNEJK?RR8.+KIEW!Z4[6DUMW*O'&66;!?9J8>:NXA_ M+V==4?^3RO!Y-,+(C^LRF<>_D0 (TS?T.A-N;CI+X5KL]3Y%JU?8\\RG2\,7 MLAW(^@4MK+^'RU,7[1XAUS8Q@QK/1[38#1=@,KY,61:B @-88EQ: ,Q?%M[; M-V!:Z$;%"?H'LO\DMOW>#6Q(QLPWT+V0L>^C.3G&8:Q47&PIJ01> ]>P#<"< M,4H/\&^I5>@[@N\4Y! $'R%P+6!M?VN'Z'-'1T>CH\'70590_I^&:PV24@?U MW"60M=!>QS,+57'0?13/9V#3 G;")OS'CDWXP\]K[PTN35^#>/\I*\DQ7H'S MVY>*OW^36)4,KQDLL:(F^3__/#^Y/!V=79ZUSWUM5(I1^S6.LM.?#UO#;E^&7013 MNGAK5&ODW=T&TO\5&7X(?&?S M:P@1! WTO9.?Q9ZI]2<:R$BF?@VQ[L>ZP; M(R2IOY"NFYU$[2 2LI>\FZRP M&)%1T^X"O5#-9R\(#>?_V6OB9*PJ<=&B(;3HI .TT$W(2&EWP8X:\=@'!H:& M_)\[ SRUTAG4[:[&4= CYWGIN?C5^'Z2SD#.5/$,]G:7XU-@HI/>S?#X=89. M&"I@WT_2&=B9*I[!WNX:/#V7FFY6KYY3@7GA[YT!G%[K#.UVE]"9$&X_S-B[ M#[/G5)6L,]@S5SZC0,5"^3KRD8')3C!2"L0N"K 3G.KDG:&$VXB,&A5+YGLW M!,@(^PW<&*&1UIJP$5B5O&/4]PQ_%8OBVQ7P%[#G_.Y[[^'R MVENM#1??#BI3=XP/=ALR7MI=%Z>J60+'H=&13]0Q%JA5S\!7<6Z-O%71L95G M_CWQTIQ$(0J_BR;@^ D5(5/'R.$V)2-+Q7'W-4 7+YU[UP(?_PGPC64O7=7.#DS#^5]@^'?P-U5C.29E9YC@J7_&1;N+\6(-$T\M-C9R M:3O*!\V"C)%VU^;INFO=>:2B5EB__G;OA^^*.=\IG#X.>BPKOG#(^2:ORT._OMZ\C2=/-S? MC&>W-X.K\UL^J4%O_RY$;S&Y47!UX5AK-.K%DX89+_922_] MQ<]M]2?S.]N%&-BPW_(2%TZ, S]?UOIMIXXYZ24^/07!PFU9%_4-[KQ.KFS' 586\>@% MF ":GP;\J](&-GV?],!G)/:B$I\&X*3PU=NJ8 U70.B<,K[MT:XD?KBO!?N# M'0 841!R%!$[[;0L>,W$7IZJWSDHE,53;+4%MM),'<' MY7,,3K*]T' 4#1C>&OCAYMDQDF@M['./#9P&"EI JAL4 MBO'@7NS%,IS,?Z21X3 R(.;IA0[X+92Z8#QO6Q59Z%., +(_]X)KHC$]6/.5 MPM'>?IA.A)R(*"RS9.V% FH;VOE%XTU:S>WC)_FG*:LT@<_0"R5PFB=H28C; M/FZ]V\^MA)\\UR1._2O3%E$Z4^8DTVSP9[9,PH)/Q1J/N+CK!:4$4SJ_CLL% M+H8KEG*@5XK+ &MVW710UV6DD;V=7^[EK&?S*,%GT$T0C8@EZH3%\,Y[$SQX M[F(&_!5Z"H"\Z5>14F,ML)!7P3ZCC1)H5[GEF[ST%SP;&W0:2MG[K4S<.R5P MF-GYT>%VM7:\#0 OP$$.PF7L,%*@YNN=*NI9+&&34/T18F;[AO\,<3]K[V12 MVV@)^XZ[<678MFRFP)G?NT'DH_L&+Y!&_XTRN!!R%/$Z5W;Q7YA(>&WM_*YC MO,'"/+A@4O=.!CQV=MX7A9G] R">C_/&FXWJ-JIR:RKJ]G)U8HVY%[+GP&YT MY]<:Q2/V[:2(?NY R]=SC=2SOU_^[*5CNAS&'&>7Q5P]UTT=ZP6M0G#GFQ>J M)YYLAYR5&7JN%D[#.[\DR9E*GXCVG'N:I:(6'\HFHH1G4+&;5]@<18@NE/N] M"!8#K^6==XFH?"DU\05[1N%-(9%AZ-NO48B. V8>ZAG1+I_GP%HLXGB;(*"= MJHK]2,\EV )8@IQ #\2:@9/Y54'Z;.7V1Y :%AN\"Z-7P7 MHA>,33-:1;'WQ0V8VZ:-FVO3,W[JJCY,G=_Y*8/-O&8K G() 3D]/-TPPM+Y M32/:HK:F>[UN&I*WE\AN/O99U89:41E?]3E&?@E"VS2V%RZIP5;/V(.M#OY4 M^,2_?OD,OMK*=-=QO'=$\YWGWWC1:SB/G,QE>!=7BN))S5.&;AU&[="MC8U6 MO_4RMS^0(DZ/3DZ&L2K@+[:AYLK&Y$V^AM6SPP>O]-Q.G2*ZK@EA-G?>*Z:J M5<1GL!&$+AA)Q74P-K.;[$4;4_>LAI'X=+S[3]V MRQZB//8S]5,63%9VWO>_RN;[((BXI)!DZ+,,"!9VWLFFRE[\ZWZ,N?HL!IJ9 MHJ*8*)S";L^O..<1##G[HHRZIHK:4-5!'8S3!T*.'JJ!9^(P++\^UED9$*<- MF-2]I9\^81AV-SQ-P8$F-3VVFL4/*9^^+_3S&9@)0/C.:,MG:MM?!I-Y>A,. M_I7Q/.V8_'CA= ;_\WC[-)L.)G>#R?/MRWAV#Q/H>I*6W.3:FD,Y/,.F;MN- MYPVX$;;99G_6K952L"XZTA!,Z'R8L&LO@#U5:B-VX,VE*W.L^UPN18>II%DAZ@A(F7O2%,1.7-^!"P=%9^Q:8VMENS9" M)+3?0/K:#==4Y\\URO:FCUN1EX24/-UF/QZMG7^ M8 6]KJ939=S M&@SV5U%@NR (KKW5J^W&1&V#-L0[:;:5[IJ-?=^ OXTWTZZ7Z)_W[GB%?"\G M!*=2R8' MIY!:XFCLHZAL#;5;(]Y!.),N-(*F[PZ9KL#<\\$V?!X(;C\@GM!PV%/[FWMT M?E5]H9)X("/EBT6*ALH#E'&LV]I&I?///VV!2)OG%7 !?C. M1C?]< P;0DR5YA:IG7!(PPQ7&;I) M1H@.ZLNKU>%*"VFEG3+KI2W.4@Y;7ERHR'(^5.C2C0^K17'M/N%Q[9[.)M?_ M^=?)P\WMR_1?!K?_]>-^]K^Z.GGGK@=P/^W-F+?M>'MII68H+@>MYG&BHOJ/ ME6^QUT?&'C=MV(N;1ED,\%03^F"W4A,[< M7;%'@(8:K.?^7CIM:6-FH,PBFY&:,%=QS8O((#9]'YGD,[;SES4PH9^)>B#F MZ:,F^ W&>KZH#7!-I+4Z<1_YY+ 4ZZ'2\LYNT=@;;P4-P.WK5J7M(XWLAF)= M213-@.%:%\1>!;1I[S:AMOS5FNN2S>K\H'KOFF@6 6Y \M][M[RF>_$E]T=CNSF^4BGI"X.($ G*F^@"F,9]5?0F3W8*$L :^ M[:%M13\L'>R-NA^RIKT+!#DLJ9!DM] 2%N>BL7/O,%7? G"6;8MF"2 M> 8$1\!=@L.0!,5>J3<86N\N8L"2+O(F\M$;/XDV41M YU066FP!-S"J(DE5 M34QXRSH,38F#IO-QG#%0Q/$GX[]-8I."VP_@FW: G>5PEZ.;TL1I@EEOG.!( M]95L?1)-PCL0H#Q"01V1'J<\^+HY#F0.0G<)V*FSA>($!^II(ZHCUM_9ZTN^-K;]%29B4X 7$C]O,O)GQ@5Z_ M0;-I"!.<0W-IL$&)NFE1SC)#-$!-@UII$,XA:83H%!^:WDQ^=8HJPGJJ7'>B M%5+1&8I"J6EO6"D^/?K#F8=Q,*F>";T V!\$=@BFP'^S39 ,+R_ ]!9N7$H\ MA-$[32F?U4WATGO6]E"4$$A.8;"4&_O-MH!K!;DCFFLC6&)TBTM^&'KCLKYI M^ D-ANG".4S<(L8FA,Y';2D('T&X]'#;,2Q9#T,TM9%H&M)"-P&E+]FDQK/H MIIA#-[G4)I:B$0:K^S8+$^9FHUX5:MQL]G31-&A*-GT5"8_Q MHJ*MX)72%R>;OJJ%SWQ1X13P>LE\;+2ZH_P]N0-4HQ4I]6W0C:$KASO'?6Q^M.>2(<7(^G?QW9' *Q[=_ODR-@,H=Y#&]",XB](X^X!R^1>5$<1%G?^UDAM M[UWUE NBL*P-BLF21X76%R.%HPETKN":M@,*84]GGIA^1L:G#D:6K8'7^=N4 MXQ6<#]E_Q*Q/YO>0?W=AOSJ ^-H<.9-N*FM-#!4ZY >J\\/D#8 U-6V2=T<^ M21&$<^4W:Q6JA0J+ZMYF;G\@OD^/3DZ&,>?P%S^SUVQ>4("\R1R"4=EWD))^ M:H ?'E$/X%8Z+*BX&?=F!]"".\^_\:+70NPS9^+63ZU51\F M40\#:_#T]]1PP&0.,84HAIMGQTB".:T1$1A5L67^U)<(P)JZBQ9==69Z]&17 MA_<4Z4'K7R7BHIYQ4W>WGOLZ"^4JQD%+D0,@06_"Z13 ;HM?>KN!4&)#H_ 9_V?QL/PFV:&"_$9Z)8,E: M!.U"9_DPL,VB'D8,I%P/4"V=>_<-X@]7/%B'7F*>PQ,+S?BF9T1:JN39!VO# MMK+-QNR!=->:A$O@$\^JZQ5V>+JJC4K3@R@M!8<6M0A.=*/^&DY9X>0TP8!9 M9=@2#D]:?% T/7^BW()KW6>L E_4HO9 9I]T5V0^/$DQH]#TK$G+WFEK>+;) M1G#[!Z2C-U8R] -TD(T@"96TUA*0'ASO08!, *[B# M@%?WI_*3Q0?/7>]^1FJ\(UTBY0 013IYNLR/1 M^7.9%[!.A_3)G$C%[8K>]7 MI(=\.Z$II#+MP2B$W7K)JZO6+Z(^;^VN>IN#LC"OSG0PJJD!0P]\Y#*K[SP? M-IO(-Y=& -#=5%;5X#,>G'(XH>C!PW69Y8+>3JQ;7 '>RR,([V6_E28$(+&A M&)0OVWE>QZ;F*P(&^1CU55&UD.A\$(*T(<$&0XO"4 $QN?>J5V819C1"G/=4 M<,)1DO(PF,))/#OTC;>Q#T9U#2$1%L1 V1D)LA[]?^3S\&8XR20"0FB;4//Q MB;5K%7^12YD\!UIV8C6="$T[;C_,.+3-"VP_M_,YP)ZOM%L)W<3->S:C 5JB M0EIV4_8R5'S0HB1IK.GQ<_*2%C3'#S^5A@%[>-!2&PJ+<[G_:IOD%Y9N[,!T MO"#:>9JAZ +^PG#3&)]?"O1A'E8:'L'_._@ZV)4&?\@*'!BN-=@K4LO7E/)U MW#TXA43L6L\YJ+=A3PUG]Q85Q?U#4-DMKQ:,$%(YF:>7.F"U<:N"4L)"&QD= M*1^+A');F/VSF2[+&:&-GF$:K5:&OYG,I_;"M>>VB5R8QL>'9<[C?1; V\^R'UML/O<(/M>W*WDOZAEGU*!$^6)(4*& MEB//&H$=(,_V7&-U+:(&9I#J*P=_L-.D2-UZ%#JSA;"NHBWO8>F#?/%:=A85N!3"\Y![#N;<;?N6 M$*M%ZS)8L^O6/7!R6?0Q:6"RE-?]6NL9[@S;_V_#B M !4WB,L;[!6H9?O?6K\S@C9=(&=IMZ57U876O(EY=&O3+/SD&S*_<5T>U>-; M1X%=6"=2FNQ9NPC%?:&TY;(P M1GF%@=7*+C?A[YYGO=N. Y'!^/6K]) MP%1?6@_"5XAN/4ESRLJ]C0!$NMSK(!?ZR:MC+PR>N<-%N6M!!0V*)6G9=:!Z M,O<1N,1M/]F8KP6MB6-2Z]:6R3P47U1D-ZC+3?$!>7*PML#+<@ORW26U MH[2W_43MMK,'%.L#[(+WQ96A-3=R)MU:734+^=96PYXN-SITF<-.XG3 &<#6 M==6TF5OBJ-P2G MN?E=[BWBFQ3H4@[\.')*V@5D)G<2PZ.*T_9<6?\RV):F9=]0MOO)"VF= 2U3 MR\]35M:&O>$SYR^*_ECYQCD;=X6W)QN9VNGV#1:H;[MW8=(5APO>L,(%+RUK M4"Q,S^:=5/4%K-'[XNZ"UK"QR5MNTGOUX&C,])S:-6,*1X4&7-,\"4UW=]_J M1&NON>QW3.T=*O'H6)3WW.!/V>__5=?^H?N.='L5VB3_R^@R1\FL6T]1RSFN MCHV=#_+U X5S*#G.[HF@F*C;9#/8TOGPR$_@/0>*[[GPGV;B>\33]GF+Z;8P MA%C;^6B1%.<_-N'P%=)MV0BP5=155&6B28(9HN=>MK=7[ET(681:#YMD>(KH MMF :6RKH5FF%BVUK@IGYAK5[1[CTU/D/]]5V'&#M?I-VP1CQU"VN".^)\N!* M?$(2:K6@ZZ-*7Q&$_>W,^&#K;W#)NRT)+JN:!LE23OG6OSEW:W+7E9*[#*:\ MW19#?1,['P,KV;*? C/RX\@W:$;F1>$+,"S;V=P 6+,5A 3VB5N0V+J-Y@5W M6U.2[&\:YTJYX!*7D<13A$U)A!S=E@BO8<("4&EYE7063[R8MM1/CN#_K76A M=/"GY#/:[IZW#2Z.#T[.FT]OAVDSE@L?+!(@SFD-8_9 MH3JMLN35K6MH0DVYZZ@/0>?WX2O10R[X<(&W#1O)I*,:)?5;5:( D74LH.QB M,]?8=%H>FS#7F[4?C3I^SWEJ+H$5H5<_M[5*+NOD] SG:"DEUL1]0=-U'T[? MXH-.IDY$Z#=TZUYX[U'+!Z/SP]<>,#@H?KC>:P#\M^16YQHM')-'X^V8?^;; M^F*^4J3B5/DY0NW[_1+AZ/*@E[_+SS76G97'NGQ9V@]P'0\0L.MOMT$A<^A? M;7(_Q410QS"V8G3K#GB#!@BQES 295Z,QZH"1N0,&'_8.&$Z>4X:W'@KP\:]KT/-IQO_/$2QT4PW%TLX%\=S^P/Q!A>$)\.8._B+ MG\CUUP[O72M"48L-!P4Y#?W(C =RQWP$JU?@[W''G*\+W-'1W['8S'#5BX5* M_O]C^@A0W'W;C$V)!RG/#^Y=//6T+'UDO9;-G?='K4 .3N[!/9J[L_?GVRRZ M":.]H9P,@02=*)P)\*#*O)O%7I1N(N-60[,% LNF@)Q+4J<*]U-MUP[!@_T& M2H&0TI[>&@?/AA_N$,PMSCCV5,5\I]<2E8F1U(YRV.(.%WO /*[]K_/R_A=O MV#SM]\A:CY^GKEO+JLG>095R%)O1&6Q&9]T)@T?N:-AL5;WH$B8'C]2SWD7H M-9'Q"MV93AXKN?U +^VR>;"(_$1O!2<-G"Z?U.R%8.0:K"[*@]5^($;M!Z,. M1F3CG&*@0N(QARBOL$IH"1N/B/';<-[*#@+/C^-/ M$4Y16#+J33*%J_W3D]H&=[FU;WM!VO9Y.:%NY-?JT!G-PDZ%5:W D48Y_2[+ M6;1ED$P&:>W-:&0K0;D4R.(1/=X9^XY.Y@^>NY@!?U5#*FS%]% ^#0R7N@7, M>X11/1G8FCFV+#NIWJ/A+VR7[,+-E;>(S;ERUVQN432W5D+(GK(2V@N>S[5W M.TE*T7['I$8L_=UUH;/CD\NCX[.+H=AV&G^NZF8 1WME+$.W=LN -*[- M-K&X\[OR54\-;.^DI<,;V[6_&B5U6D2B[5;M9$7I6Z;1>NW$(R,*XK$-I_P" M'#A@6C,OU_FS=31U"NRT8"29+ROBGYI8_CRSA^%1>?90%=%?^[E$'T+[;X7] M.[ 72RCA\1OL$1?@*4(;85#O2\.G] ^-RM*M:Z@1\E^8V?T*_\_5)0PKNH3R M(P#Z]P@=?0U@-[SMU2@'_M4F_2-[/\!56K%)7*CO"7A>#1!H\@&_)+ -0PB" M&Q :ML/6?9P>'5>\(5+W38&O@Z0:@[@>@S^E-=&VS^GP"P,0:!_-EV] \M][ M-Z> 7?Q1C!V,N77K5[@C<]8VLM/SB1J=QQL(DO?5>#L/<0^2H,YC6XV#ZCM^ M\FZ*J@C6.5ZAVF-LJUU>=WJ8GY5;86(-ESI_:?.2!#5&XY/AH\W#-][9RDEY MML(6KO'K8/=)_3N7=H(W\A[#5^Z75K[ /QXZNZ:8.<2/(7_&\QMY('][(,W MVXL"F,[V+/B_)E+>8G^V(KIXW3H;#IZ*>ZK203F+W MT:PIRZE])]7AU1,IZBG.C9>0I=B&+I5W+'SK)&[+6O.[#_PPQR;\:<E:RD[:_ <,*E:2#7%!0KC]H4R1GZ0FD-*[&>B@(F MB'!&%:.&GQ@64_2%!A:SL,_[-L=],I_#^>M5!.UB&:5(R8M5A__GXJ*3C'#; MB'U.MSD]+_&FZ0L(0B/R#3=><]RZ(?#AKUWB.HHQ9U](:V(N]N7:YOQ]]^!H M%G^?VK1P2?O"$)=]V)=E!4S+(R>T[XR5[6R@1J!B[#@6G>'@I^;D''TAJ(Z9 MV'=>VST B1^P)K8P0LH^\,=K'O:Y5$71*+( G.FF6-6.$U,>7;@4L %5WU[" MA2)UL9B32A-#"Q72Z,8D/PT55%(-E+@=]03>\R\$8$>[RG3:L4%%LCBVL1LE M\Q $*@6=8F^7%BQTT#-UG9N:%HHY':F^-)NT>U %8TA"RZZ:09U172X;7]<-1R'?F(C1JB27,>LG9($$CQ15(I M(@*NVV!U#0:N4AE%5(?*M[&D#5YLEKV$3!?.T53#*9)_$G#',;U)*\]=6P<-VZ*+YK^!(QT/&A MO,;F3D/##V^,L.K:OYR/Z*8OB8J1($\ZE+H$)WA!BQ_,%=[MWPY2#'0$=+G: M&]>RTN%E[Z^Z\$B'MH(&@@EBW/+JW86' EQ%*RSZA;]KAS^A6D4&Z&:HY,#X M('.0_WNQ\L>P\J.N<$ U0Y.'"1MWSP\4YRYQ']!%#=V\&3" 1M(M&8IG^H3@)=6KWZJ'\:3\*M#68-X6ORG0]69,U1ZN4-@V>TLXT" M]2&,+1N@IWSJ3PQY2SM8-CV;VA47%-(67"FK@OZ#D.=),/)GCR7#_[ M\\WV)7"!D;HO64=/5)M>*[WSPCPBXYH9PK,B0LVCX M"33\7 \%2&&4H"!.B'331E7EB3$Y&')JJPU.K@BLO!MDD0PR2Q9-66 M=TZVV'AGLEXWXJ\VVW_^U08^Q'*Y>8 3:X=M-"!DUI;\]@<$7I0T.<*K%'G9 M%N[1 5N&MI+AIY"QR^!"0K>^X]Y=1V$0XS!D&RO*.;2EO#9+!.89S=>8YV-N MGH\/FV>2^;IU\[EJGW#S?'+8/)/,%Q,%2^2<;W<-S3$"4BA-8AYMN6Y_AL<( MCFY*(.,3 _+#]5X#X,$7!/FBJG=-YUM,BCKN]HJDEDA!)6U"IK$ M()?HQA.L,(0.Q7&TX7>2@$>[>TW8N'VL6;750:L<%@]P&V&GVY2TL'$7P\:] M>[W-I:U8E.Y6PH\1>BFA:8LEG71& V%%T-J7&Y33V%;8P =!()G3!?N MMZFCD@YM!0UZ-J$&]]LTP)^IIV,SHYOWVSK% =4,W79-&_30#Y0K;D*_H8LF ME"]SI(&)?26NOA-IRU&6C& )S4;_N?U'9+\93F&W?#?3P^B5.7\?M4C61EF/ MS<"2<-NM?:U-XR!XT!#3XTU 4K"+3;USBLHRE=I>S4H[J\&+WN( MIYNM<5D<3BZ-OU6DY4P?E^H6]=L>L!*NN#4_*7FPY]"\ #U7:X)MH+BG",V- M)_/;U=KQ-@ $U^C=U%+40_X"#EEQ@M"2<,]-EHSN#!.,5RA>&[-P=ED^I5(# M'PF7S)J+XW=@+Y8AL,90U,8"VA*$D_FUL;9#5+.2,$C)#UT4W-A(6# J#%DA M\)#[VG#,R(G_^>(YSIWGOQL^+JRO].\>LJ[5@HQ]Y/US%:)N%3+40_RM"E'= MTF0H;*]G'4?XB*.2=JHM8 "[#P+\(X]2OJ7M.-#1IL /]L'N2F&@FH(P=!*? M]G8:0NZ#GZVAE=9 0[SIQM4H:1(N>G8T3:O4BT\P?-\-VT5/I=R[IA-9P+IW M;PT?Q89IJ<'@OU]D\WPTNCS^;#_*">A7H*J>+3\^&TG[8 O:M$P6'[>NE9]V MM1$0:VS^([(#.S:>+P[663D.5KXP_8-?746![8(@N/96K[:;\$\)?D7* N5Q M/KHXNAA=7AR?G(XNAL/SMONSJ;D$5N2 R3RK:)Z1JTWN)U+8*]YB=.N%N%DJ M=R!"(-#$W;_" L)M($QJW3@60E"9=Q[K-:87_=,'@'C;E)I/-\IYN&%CEFZN MQ'N>TVBULL-[UXI@SV0;#KIV&/I1$NO3,;&7/)GR=8$[.OK%\\/ZAJOV!JSD M_S^FC\!<&BZ*S9H=D7L^6HAAJ:=E*1I_H7S/203KM6SN_$9H!7(/%&]X4A;= MA-'>Z$V&H# M2[OO#"80?/>] -6%_1>Y=D':\.VT .N;@!@^DFX!'[RM[;'%E)=/IM3 MJX,--Q5:;5RQ'B>)P0H%&PCNW=L/$Y8^F5]!>BLNN:BHPF>C83C4:I\!J2]> M=WIH>O:]-?##S;-C0&"3]>*ZXB"WU6]_MB+90P\?]%)#M\CR7*B-S60=[^N[ MBP=@!. %A;F9S'\$H'**UN['/QN&S.&E!O828K8H'%@R7C!]?_;G3Q56=<]$ M=%*=7#;4B:-<(F*W$T+#7=@M;:KFOO8I8/D[162PT_8PTF)&H56CB)?]3U[B M,96M=5IH'I7?_6PHLAL*.^S92=W19YO![ OD_V":*#)I\&QL"%>C6ZU#D=31 M9UO2A(*L7=4^ J<$%>*-&]#65FKN#]G>V6XW+=Y<0_L"Z5MH%B:0D%9U^VQA M+6R^"J0F:WFU#] I+4^[G:4RA,4MA]P?6F]GV)I\MJIV6Q4?$5D;DA42K],; M#!7@HNFVDME@_.7/MM3^'! /?-9V:A^A4]K.69?;SFY-FOO;@^S,MTOEEXZ*U#!=A9NVA\8NZ%AH-=\;<=:S6#9'?LE4#% M&X/UF!B#-?T1?F>P^] @^=+!!6AM/;JT[=HA7(Z_E5G>CAG!L^&'NRA8N6J3 M K0**+G0U(9'.EX,*G%=B/ L"0+"[39E,?\KKM0V#."J >&R",0/5BR =(5^ M\0%>-9 $#U%L--/-[46 5TVYHZ-?7'?5-_P@ [SVA/5:-G<^<"=A^+O:/!I_ M\_QKQX# XL=YCA)TDTU[8W]3D @Z4_<$%-ZFG45/QHH\.^ LI4,28B*62RK, M@&CR), $56/B/_N>E8R>5X;Y=\=;5(X[;)DZQ#\S6V4-U,! $\IGOF$!9&] M)'D_V6'0RF1UYZ<4UW#:[*V _P*29[."I;TFJX&0HPC14/F^MQQA\ * #5BA MZ-VZJ\WVR(DZ723EZ1#;HB>(W+ ("EKB*'U?M_G[?/MXD2>;LK^KG8"Y9460 M9JN@"=I*J2/ORET43(C>W6%Z]1#'DU5;\;1*?'%7IA%V"C54W44&?ICK'N%/ MNZX1_O#S!8XPH&+L+/Q-.Y5('R/IY@N**-0NT97]Q=Y?=2&;3D$%775:IGSL M'Z%>5]$*BW[A[]KA3ZA6D0&Z&2HY,#[('.3_WF$.J&9@%_OMSL=SSU/'@_<, M?HNPAL,EUX6I]I=O7(@(BNFE9.5692AQR87/H)M:N#ADDX">ZQOA(KAW31#7 M'WD HFO++T98/;VI44(1O>/1Z/)(.YDP+6=$V:[:R:"Q?+*^E] ]/U >&>4I M0C)G* 37]S[5KQOF;!>.7R*T!1E,L\B93S:T,#0 M[?UU8++?7A:X4*BD['VMT%XML:E#U>S206; M_?"TP@>%5L'FJT]AC6!YYWCO^:5RU8EK1;*>D\]LLM20Z!G);5]C39X7^:OR!XB\/[=XJ5-/YZ.+HXO+T>'AV?'1V?M;Z*WE3;W$^D>ZN\Q13;T8ER[U1NELKK&R$0:.)S+.%>JGJ.A1"$7]>R6*\QO1+N MG:JGG(<;-F;IYDJ\=WH#3-,CW3(L)N@"&W0\BY,R!@M5G^944G?K6,#T; )W M>RGZ2!Z+B9V_K%$!%.WLC91%-QVT-XJ2(>B-3G)3SH)#[LPWW""Q9,B^ML 6 MH9N.N EG.E'@,[]?!V'I/E0P\]*..<,'!-]]+\!U/K1L/11.+9,EGRDI"S[# MT'IR!W#W20A0JWF/5%%H#Z4F 1!!1U4X(5ZVN.&8"QN8/P'>W[5] N'U$OD) M0V"N#=_?V.YBO$)[LI-Y5@3?]N3YT7!_>S(K:&"XUB!?FW* O7\;P!K!+&FE M!K8[R*HU2.HU\.:[ K7?ULS3L!^U<+H=2[J=#.'36@]#.X5PQTZ?62<[!8MX7"?L51+SZ,8P#T$5]'*;JF., MO+32Q'W)0AKM2.2FH8)*JH$2=QUW0;S2:F"WL# IM6.$BF9QVXK'+(D\W#K M#'T6'C IN\X#CUF:7 /+^FW:#F IG79<-1J*V,SK_)9>9N:+YSAWGO]N^+AU MTYX5K1E<$66_I'/;&5ONG:N]GVF? =3=/L^$[H%F;3O6]?*4ZK7OB/ES[R[ MCJ5'/6KL.K*D^MQRW"\#ZOCL#&IX>'HQ.CF]')Z>7ZC;A21X*+-M3-(*T+4? MJD\5:?NR%AJ:^.(I#!>N7A8-*2QKHBD6^HNBK4#@ZL71E$LN=3 #HHE")(8$ MUIIY9I[*[/,"H G3TD.^]Y7O&AAHLFLL).1[7VEELEJ7<-[UX_'P7V)43WB; MTSDR")W?;](ZS(YZI=461EECPF'IU\$& 9:[*$2K]I7GA_8?R>7XCS5P ]J^ M39,BBXB?*P]Q*%"(PF'I?"=(BNM6QN(%H%D$FO/!X2=_@8&;.@DHN4-* MK"NF0U_W!&ILU5NP&N8>QF.S]WMHGS)%I4WR!6HOZ,:JC&S1UIUXL2?Z?CR M_')TH6EHR <\; V M=JUG:* =!)Z_>?(PSRNQ9]2;+PKLQ8ET X.U;(,T7PM,:KT9K=^!D@WL_*EA M1K@\O'7AD#Q\=PL%' MAT\Y+D>CRZ'R!LT6QY/5&*DOD^2K\-^&'Z_0T8MI4[AV=RW#W\2WO>#2W4Q M+)]DU"Y'1^98^"@N3<29+B%6JQC2*\]!&I2D"_%BZ6LH"P(TJCH V']9DS?@ MN^@:U9WM&JX)5SKHCX27C!J4UVE=$/CC4$8MB%2_G*3/:7D7!Q%.VS2YZR[E MM%PW^ACZ^EH&:G+:^@+>/.<-;5[!+L(.[PP3';5LB,$+B'GT9I-"2IE3?EME MND$ %\X">2ACS-43TII8J_KL7+W?2[=IKV\PX6!(W2XH"$-T^S:1+[$WKDI: MM',$[3SN(K'<)F+/5MIE+S^A)\QD]Y/IS1K//);),DT"_>3K2IR_EA/J1A@3 M[&2V"(8IV8*X,@)0<[>AF%5GK@B@L^X;,!@K<\41^&&NK<&?=NT,_O#S!3VV M5M$3%OZF&T/\W1_=')D#% L'E9@_S?.\P!U0PQNX?8P.NX88O"!_"66$IG2Z8-S\+ M9#,-Z[DC@0?B\5U%2EVXX$.4PH2ZN6VA&G%[GKCD*2TA1\& XR/E1V2L&%/8 M83"R=99F[QXG2]LG79Y>,T4Q4\P># =7*&(')U6[ M+'UFBF*EF(4C#U'V&V^;VF7I-5%D*U6'-=+P_JU" 8AVR2 ;*,&?NN5C)VA> M=LRR/3--%I17GN][[^A$U5C#OX0;W'$41Q%ZJX3,=<4I55/+I<;2/1?#PR:G M]4%FY"0*@]!PT07)R@O-K-F*8 TUVQ[DED$=:SL?M+5JB$QBS4/#F\PP\(7T M3#;-;>_9 N7>A34! 5J@@=OY')@A7)\] ]]$O"Y8+K]QE]4O28F#@+#\43;7 M*%IW901V,(44&=;$S;M/#)GT@<^NMR2:D$H3#"P?9">4"9U+!D[9F0ZEJ<:F:DA68JAZ/K:!6A1X_? MP%.$#AU@>_%6:\-%D?+2^'FYQ6,<(FWFW7G^"B9]=V&]*L:LQF46L3R&6!XI M54]M_HNCG!QU4#"S89.]=!E_>.1I/.- M$W6!J"J&"-ZP5"<,8:GBSPQ";Y!\:)!\Z2#B5/U,GXZX&)Z,+L\NSL\OAC]; M'Q/%!:_2I#MAQIFV.X2WD"'2D>+-POHQ2#1AD84&&H%8V_3G3TQ $NVXQ#)" MHY)B8$^>[S@^T8PO"NS%%6@#@P4M,QU1L2M0_=-0R)N;ZHOPN&1Z$\K2F7)9 M)F@]*(TYXN6AD4@Q3;5O M(IU#TH6FZH3]XY!LFIZN@<)CRW1R14$W1U O6FJ_C$%V4 )T1G>NX157- -4.3 MQ]6J^US:M@\EERZ\-1]8FA@L=6;..UA5GEMF]^ACN^"B=;J$LW2T!(Y_<>T% M^_-2MDS=H)],7O%PLZ;-4K=[3MKN*B9KX$/:W$5L].\ O1L*K/$;_.T"H#48 M"BB$UJWIBA73=_ 6TR\U"45!%2S=RD:#WJ=-%]:9>\;4++V$^AU+1;T+F5J&ZD^+G<7NI>JG.EB,E!J!JW7RJT;0VP\["(%K@JRSG7FW\8$4Q^P#6T8_A=,< M JE1MLZ$SDCF\ZD= CC#0F>X9A+9PG!N W1ZFYPQH?!BR/)]Q=0MIE^B$8I" M*Y&VVCL.GT:KE>%O4)/)MZ4T2$HA. KOR?DQYN3\ZR#]Z,";#[:?3?XZ2#X\ M,%QKD/MT/T_;6_>XJV(U:5J4BM,S%MO*N09'O?M0EP>1FE:IOFTI>('S@J;D MD_F/M-$SK6;V\NA&?DUB::L7%JLE>]WQ3BP$:R7#D^:E2\EU('IAL[M?4?0P M"%PGX=3XY))FTDTM=4AFE@K)9JFG?;KT+"D L6LJVAN8S.]LUW!-VW">OKNL!&QZ5VZ019=/&'J+Z&Z!!Z-$TV=;<&[R(]\LEHE^^@]$$Q6]#I(&[R M22DJZG:/9/<5 MM$V2;([T?D=$DV$!XIN=3-Q$M+T1GB**S>,"-H\SG79)3MA;.H=]_9JV5IT\ M;+N_#)+D8--"&\YWL'4;#@I:PG&:PU:@;FIJK!2VK:.$NVY8(&B ZE?84HXA>FE@G@L%^3%BCNI MX[W)AWEM9[UVXF-HP[EWYYZ_,A)W70?I4'6]=GU*&M' M3-U$EKB(TB5$Z4*)!@3Q2^LCB&9+W2MO?1#9\]V9:&RD=E2C%CT(T-T2.XP;W=BUT*5I" !P36[7@5$Y,&&N[/C^ M1*%T_?T%2-"POJW*64;;\8[1Z\2Y*A'#'%8FUJ7C:,19,<0QLYDR8XIQL'CO MPF8-MAZ2#^@C"'#\(ZN$'+KQR4%'F4M>.W5\>15C _'Y56(>W1CF)8F99H*Y M$E]D_>Y#Q3[[WMP.L6\BE=)TA!,"HL65()N!VCWVP=$LI\"!Q2V^ Q?.&1TX MU(RME>W::%P)[;=W>)T=!L74(B%ZQ( M+2 N,0@YM.>7CR(:YW3;):XV;NQ@'87@=SM<7D=!"#M,_&NZV+1Z$T;'M]CO M\YG9Z34(A"7<7'FN15YF["7K#]U<%LKL:L4_3:(;+8S#(MTB[,Q=VX=(U%%! M1[,"^3J=G=8/D6B /Z%:10;H9G3S(9).<4 U0\M9-XKP0WN#!)M!%[;DK*G( M9G9^[?T=SG20S3L/!SNT%S%=4Q"&B2\$1A),>;57!YG@LD+J6ZW5<[35=S2* MT^%D;DOP*22F+V!PS&A9P3';<,Z:AI[Y]Z7G0 N"6VAHN,FB!D^7 M$'(^#ZWA4=E#*_^!?QDDGX"_3KZ"PKPDW]'?5ZL"*2^D.6?1,K4[#=A[BJ#( M]"0*@]!P+=B&;FPG@LEV/,;])\54,87KTJOPL9Z?.4C$H?-1>)'O')Q (4Q+ M>!#<&W%9=!.+1.K+.N,&1K5Z*J\@ M)L!*;S&-?1]M7)(N?34O^*"5*@F^SN\H,N&R3\(E\'DW MV$HO3&$VV+8?BN]%QI_ZW&-KPP1S":S( 6F3BF<%L#]&]PS29KZ;&EQMRC.' M=\.W2)O%=@E]C"=8Q-RM1-E(VT4M'E"<=&M4=*8PG.?&! ?#M('P&?MRH6/H=0O:>2ZD1#)UWVAB[H6VALU?[#4R! MF;ZU>OMA.I$%K#L(/)J]1@G!D_FMX;NVNP@R4(AO' @IN^?JDX>15$>-89LG MYF"!D,U%9>8[(!]6W$!)BASDRNS 27A2:2@Z"!D4 >T,'),'?$^4R#R0'RODCE"X/(X^2/CT3=K2;IU*%P\$4^\&R&@RZ$HBH+F M.;85USMQ,*H^Z*Y.J!V[@N@I'NMQV*XOKY5G0J2D>_:-1J-39<>P' S0J",8 MI\GA[/:-@E2FY BSF-1ZLT<@H=SG\EC8^0VM;3#,[!9T9C3AJ)Z81Q5)IXA%](HQW!W#144$DU4.*)_B- S\78IN&DU< >Y&-2:L<( M%G9_@E$6N@@+76P5RSK 00R^<_?$LVEO_O+_P=02P,$ M% @ L8"96.=J1#(0% ( G$P8 !0 !F:7@M,C R-# S,S%X,3!Q+FAT M;>R]:W>JR/8O_/Y\"I_\SSF[]Q@QBXL@K.Y>9Z"BX@T5\?:&@5 J@J!X__^_/__KG_XO'8UH[52_%5$OQQL!T8XH-9!>HL;GF#G_' M&M9D(INQ,K!MS3!B*5M3!V#S"(H\D _8 Q&+QS==I60'/FF9O[+=O+[2Q^P]Z0!XK"X#L3)($] M;RX >Z8I(%:P>C$N\SM& 3DA*[@2!QA-QA-X$HM32E*-)Y(DCO4HFD(H?-W' MT(6T@O0RG=^>$Q_(\N3?NZ'K3G[_^M67G=Z#90]^;7[PQXS?;1H;FJGO6L[G M\X=%SS:"UAB"X+_\GWN0(-OF"T=[TGJ.;]NBO]KEDJ ,P5B.:Z;CRJ;R^!3L M4W5W#^Z_@OBU_G';5%NX<0"73TCV MK.>]V:#XWABWS6W0?Y7 Y"_XZSZ5M".\>$Y5%6A/2;JE$_SAZ8 =*X&AR6-= MKUML'CC$892FZ5\+'V7;7H&B'GX]_.')ZQG]A9> ML#A&/H&H=A"BY!JBVMV??X9 5O_\,P:N'%,LTX6JYM\[%RS<7VO"^ _'P=33 M9O_>;7Z/N\L)N/OUYQ]7Z"9 M<=>:_,:1B?LW?.DO^/.3-JKF3 QY^=NT3. WT!:__=Z O?ZHJ2HP@X^P0=:6 M%7_*,<_4W+H/11%^D 1(056V54D4,E)!XI;YDCT6D'32D0 O(U9[,H>4<7Z; MF@%G:'N0V,&$%NL^&$?B^Q(NX:CDBY#4D0&97=4'>)V<]LS'_Z*1LELVH)33O M(M,,.4H8)458JO/3)^4,91LXDE.HXVX6&SAZNL.[!F=T\0\([7*1A=.Z)C_\#^\.P3V=@ 0[)LA M;&FPF?,Q$F0\.]#&$BIM@-JP]E#;+#<+:J[ U_2X5E(=,+=G\<).IT ;]YN% ML@;G#M]JRP9GJF!1!,OUS!J*1!9;4Q4D^[0("MEDIZHC;V;C3CP/.PF^>*)IW'G-LIOU M89+Z_ ;6=Y[@VU._0XX ?O(!L)4,I M@W$/V+N>LK)F!R-/+1^-A2'#KK?][3P6U^])4\%Z@'S/T ;!)V?3I3:GY'1U M4L;T.)-/+G-*KS,EF2W18%>_M\.&+E$/FA__X0:PQWP?$LB$[W#*F@$<%WJM M3UVC:5=M=:ALFQ?!L)HC"DDE+LO,W9]J(EG^B%Q^F+8%H0R4H6QJ2D!7UT>C M93N<>4&R]E$'T(@WPW4L6;33"6V:*.AG(6N9324[Q11FZN,)] ) M:(H2G! 3]V9]:RVA'\RER5:Q>)9IHWK D^2&OZH.OAL&<0N(O_@V2/*P<%1?N_UZUF7PIV-Y=O!7$,7X MO:%Z,.,W[.4!/,F+/3QM9:YJR&8%,N91$_IJN0XF\,5#R)BJ;0UL>0P7[,G- MDWP#G1CYM-$6><=(\/4,W4?[$#2;,8+ ?=S^!444_MW7@!T+R ,.AJ#27/&I M]_C\X6UW#ACXH%C_J<*7+2:&IFCN>F@Q51O[R+!,2';;_;V;_]T?_\\G!/CG MU\$N3NAY9\CV* =]"UXX2KFR[OIL;^(1Q!(7_ MW_6S^VW'$W6O*1XXO$]_V?Z]?1*ZUZ3))LK):R$/5/A], MBDS$]D-L7P=KW0.D\]E!*\/UC[I;[:Q9W%SR M>*]"J!(BI+NK'L$@ B.'5G1/9/'AN7YO_C*J&BR6X+))UE3.3,L3S96-#9L5 M*DN7"RA:US%+S-;;140^W:(&0PD75#%TH9<;4-MG9C=^=JV-CQTM,^RVTB)6JNDC MUN@5:ME(:[^7RQ=QQ[+**)&K_>7= M6Y?H:RMM[$*>V'O9_(K63LYK268P%P!2Q(LNF0,3L$K?NCA?56N'A<''U3:J M 4T>:MT5ZRT+DJ=PJZPAWSJ?OT)MGXW=;VQX;]F: 3V7"Y)W_-'N)?CT+%OU M$SV WX(QU:IMC37'L>QEQ7+!ANW%8MGH%WK*3"\*,W*1JL\K72^T*^F7<]UL M8)PTV>^Y'7T<'9_/ 5L4YA*@R_9,QU:EQ9(4S7*O%EHC_\I\MS Y8<(12MZ9 MS<;W:WB-;NMU-F['38V=F%W##:WE. J0M^;ZK;#QWHR\1T=Q!DP/U,$8^E#0 M>ZH".S@292K@,2^174R X@*UH8UA$[XOP&^=_CHM5]C.;HCL^6?3&2/!^@&"=5W!D9?"PJ;Q,:7SYLJ<(P,M9Z2_:*D4P?L;POM$9_W] M^8D&6_16*ZY(LB"?I\UQ?\2K4FBW4<.38!P*M]SGL!_4*,NN9\-A/U%3VR_] M4Y6-N?7,H?A<:*B/*F[23C5';#HG#Z92AR\ZX4NR\/%QB#QKY!RDSUN^PRW% MH:YA9D]'X- &X*P85(J9T7@QGMB(QWA$I\DF/*\8.LWU#@P^4BA"X;MV._ S M(2JQ\*Q"CT\V=:TYP(JKL3ZD6J%#5*A9?+9DHOZ]XD7VZO[-&L/ V=%W\*[P]-[S:6$R/9P*RJG:[ MO6+H0O.ATM.7SW$_2?4>YZOLB'1:BR<872!!7Q-Z:<),AL[/#"M?K[DO=TH) MFI"Q[H%R77P+1FTR,;E-S6DLS=$KRPVYR2+BR6PS1TL:Z MP<40+>'(^@^V2*N>/34OU7K\=CR/TB7Y[T!1'KK**]-/. M+$-3@W:<7TCZB2W9%8H2UAAPGBTP=[FOVU2F;;O'F.PNB6GSTW:%R1?UGHO% M"ZS:6=324HG.81(]VZ!4:?7[Q>92XFWCN8>I^J]5G&%#,&D!Q[93U1=:="?MH)I7,99A1?6Q?CIZ,8_TXH?DT7+^ICT*BD54X4BO)GC"I7)T)TQZ'6&+%9D2AR]8 =+.[1!EA#JMC!8Z ^CXC4% MY707=19W"JC(%\LI#%A5,AT^9S'$NB(,J @LWK$2,^]6%J*P )F:@998D*0[ M75-QQZA\R[ (M2/T)"X?!EB\IBU6K6%96,:[-CLN$%W.J"NE$7[+-B34GL65 M8)&?$95\F9XT=*S*I%62HWA[$<98Y=4I]V;%Q7?K5=0HYD:VT.SI<%T@9="< MJ5##2*]^^:;*YU5C;5H:E1LM2/BS=00?-+5>/7U,U\M] *-4\Q MI$3717C<6U46*090C5MF[76%]HJE%-\MM?(PA2!)RZ@@1GC.9,/!>T-'>8]AP7#LK>=#B<.RB1SGLFLN1+BTRQ,%2T\&86'B'H8\#^ M713]?!C_=%:L(?\J+\*Q]K[.WM1[)(2#O=K <==M+R4(TR%;6/2,) B'"!?A/;1X]_&9LR%UJ[;5WQW3.#O0@59T4MU"=X L:XUE M!O16EGGYJ-=%@.[#ZP7%(H2'&N$';AO=$?7I7:;IH9\FR[WV\^ZBS$L)RH!< MU6I#0B^(\2:')%O-)*MSMVD17KGF]2R$C^3M2^7M;'#/#YA<.YMGLNQT/)_7 M'80 :":T=B'"S'NB^WOW2>\^YB']95L9+DM@!HPG'O>N#6="HCE! _R9FMWK MLAS410_43M8&4V\'N!=M]UHZ=:!XM@T9M>FX/6=3Q-#)DFR<&%>6&&T.9V)H MU>UI%'WTQ8^0]/,*] 1>'!C)$6;7$U]KP%-G?AN\/[ 9<@M*;M "]BA7Z^%B/#LQ28HK%)KA.SD8*;E/ M /WRNWYGU'+MH9#Q"*U?9P6RE:QE)IUJ)KP7%(=?RUU^7_",S*][]*3 4K+& M>K9@+E=YCFZ&MSY[^)E_[0L^S@F%>7Q:'!.MG,XG$@.]6<:TKAK:C<600N%F MTJ//"!S/F#E4UE,E<8R:@L"-2"$9WDO=;@$X8NTQ4?N"RLQLPX^-?@> MTE*7R-P1$KF9&5H53C3QZ\_<% M7AD;88@W?J D]2=J>;ZCN*LYX0'?6$JR?6CGT'=BOEMM,GIO&,5'&J4&^;I;$.AZZF-.78__RM4HC[#\I M!'\=S5_(L%:EUE5+"&@5VQ.QP=(R%SJW\\J%XB/='T[\7T+[3Z1VM[3LU'2R M*[16JR4B_$?Z_TOPSYOGO0:DZS &,G5ZO.[U9PQT;=R45;IA=._H$R'P M0@C,6IY]5@@B8F4F9CC)U<=%NB2WA]D^384N GHZ!!\)%&'P4AC49F>^#8ET M#+= B4.VQ;&9=FXTT%NW;.0?"11A\%.1^RTDT]8,F/ -=;_Q8S+H\U\"G^BD MZ^).JV^^;=64;4WN&:"^+Q%/>]UODI*=X+^;7D:FAC8&"EMEI[2(YE,,O9CE M0QO >$'J30+J<5I?!N>?J\Y^\JN?L_=QQJ?P]UOOEIQ5'H]+C0#@0%397N]H M0A0_.WEQ]$D/ H.? =O4!D,W"[6BJ4"X[ GAYW6!D6EG#6O.Z!Y3G[GVI+)4 M!J'UDZXMQ<<%Y@AKWY*U$W@;1MT3R?X:6:==G'E-:UQ3J9%G%-.ZZ'%JFVCI M;&HP">U6VOOD^-*7<$;V^)O)Y$U;Y&43189>P\#$\7(^[1$T-D$:D21'-CF2 M_V/R?U(,^YH6F42,@J3QIJTQXG'5 MEF=,2VRQ,U\E^:$CV][WL,9GD.+(%D>R?P!9I^WF7=,89PFII(%.5]-!/=MW M-->QEK7O$>:Z],Y@9(V_ET3>M#G60(]!Z'*:0W)QM]+ONZW42OL>YO@<PY'RB)2#FV*T]7E.++'MR_];][-H_2>MPB=R+SS5.V+:88]0^_MRSO>R5:\W,5GDU*J MS([Q7!^I:",$**%;F824K6N5"RI=L"XJ]LS!/7O) M0(7-];T6/YWI\7Y:R$LEGJU-0K> /6?)0.Q<;N6ME R\B=J8%P>Z/.HW*&S4 MP1"M3*?R$Q4F11E-^ M9:?319:G<^U^#DVM3"EDL[\%6XY>6L69+4GE*76ZTLEZW#8RF#9%^-!Z@^=0 M<>A/4W'7K'&^-[N4[&A/UR*LXVICZ,[S_=T3NP\9S5$,RW_VXHBO:>PXPTYI M=CS-JW);3E "<0M&_1!M'P'V'N)&V ^5'WMQ)<\VI^ZPS(]K8GJ"%YQ\O\0A MSK=>L/TX)7_5&N\WH.6SPRP_Z+$H$ 7%]IB.[E$U\A8@'VGY+P<_)CUS<+87 ME3'*U-,<[,D-YCG/-U%Q0TF9 Y4PX MR('6,P#C.,!U((WED64_5KW>/M.P9154Y/'NREVMC:&=*D*G12];364[K9P" M5J'=17N%>-N2%R=0[PQ /IWLCX!^3O?+N2C8WK[N-P,O;ZO YNVJ;:GK;E.R MHAO6SAFO+!(M YEFV5:129J%BJ$AX;T9_F:A?)P+$; _ .SMG7UU8*R+\ ^U MR4Y!%QO,M%K#%H@WF.!(TE8(0HY0?6Y4'V'!-X1T02@#92B;FA)PP;5EQ;5L MAS,OXF,T\$4R,>C4V[K7:O!M9YRSI]1M^AAO$2YR+VX2LF]X%EPY4:^E$VE3 MG/;Q=JM/+(;U:@3@R*D(*9R/^1/$?%JHC7-T122;[C@_<]$1.[I-?R*D6+YA M5^(Q0Q^!<-[=L;7[XQ1D9X"B6(\X1F7$'J<)-*VG%[F4E$ 7W,"\3;P]G=DY M>?GLJAL4@0S=]7/\BJS]IFE-FQD?2$%9MK M])@6A^F-;/CNI#F)[\^F=D'&/Q'C-^XXVF\:DKO1&%4-2"<;55F#&C,M3S17 M-C:(J'-H*[E*C1@VWFHFD%R^J??#&T8_,5GTZ)0OAI0PG-[ZU$UIQY%BBHPE M6I:(( MD^@R0?6[H755;U8BKA1Y_0;B<-T-8&J4T1N$B&A(?(#2F4(FM0#.;<8"0[KG M$+E$H=T\EFTF7\@IRP;22JPRGC3LVGJTX18Y0M]1%([Y0 -&GS*CKF2QR\18 MKEO#EM9E0WM6ZA;EX,>Y/X?CRV_=/#VMS,&L0^7*XM2Q!(SUY$$M&SH@?O@2 MY^\0#S[ T37H-PA_9H#=(=C]M&$RUC;$9+N4';-%;CA5RL)"[X0O!K'FZO.) M[5FVES.+^!Z8L094P*8%C?RV@B)FT*!O"%@62<_'6,[EXFV+O1F&^U;E^91^ M$J=?[/AL[:^PGN0CXP5@SS0%0&=O!!1WZURT[ +*ZXFXBPCR+*$;&5I#Z-#I M]!<[/8=FN0FS')IFA(@CB$C+AN&490V^P:_A"1A3+5O0B[+V3G+.%F-+F]/ M0>+]F:MW.]V^HGX#F)PP]Y^$G2-VHPY<63/J X3]N'3TE19V+$-OS9] FR0 MLK1G3:;<1W&QU5HL&H3=G$TJH0M9'3,G)\XTPD6 "[[?AW*4\C1("G/PS)DD MO$H^,>IU*&3::C6$@CY!W57H0CC'P'!L>C\) :=;E0J8[V]M;)# EL?=>H=< MI71/GPZ9'#<3I?!FM9Y@0 Y.\RZ$FG3-DUV:8HJD M%:'=*5J(/ ?L:+ID%-,-'1B.J84W9OC3<+")(//VQJUZ1,(NW+>1H-W!L#9( MC!*+.CLU<'(\*]!P?*%<=!Z:V@8#A^?VTWC_F@Z03:\O*ZYGOW0+VBVEMJ#; ME,&F*;6:*/!R:2K?EOR_/KN(_P'_\T VW*$BV_Y5$:[U/,Q(+XOS"I])BNQ2 MRC%3L=Q$B^&KZGH, L6HG\@:4(?:+_U$80P80B?*%#L=HC5U4&G=3(CP*_:;PW R\32^']QO)IQ<2A]D\0HB M3)?I5=+MM93&30GXU?:;0\CIS^XW%R=-!"\B&4*JN! MI&IY)=5EDZ'S)L*XWQQ2'+Q[OSDA9JQQU8HW=5Y$5[,&'&V'#)TZ"-=^!W.OD MJAK5(,-WZ7T(]YMO"P6O[C=7B]VA/$JVJSI@B&4O/F@LT/ %%$*UWQQ"SI]U MO[G#@[Q:;J_B;(L7A%8G0_3U:>BLPFWL-X<0*Q_:;QZU%Z:+,<.2&"],V?B" M;U5'N5":B?#L-X>4]R?N-Y<4UFJ/>_84P51#R&BYU"PS"B7'OWJ_.0Q\?OO$ MNF;NG5C?VHN2Y3A^O0&H%(&I:,!)+2LR=*8!WW_\^ND%AP+\U5VF+%/=;DG8 MU*1?[0!!Q+A:IMQ64@U5#IVY.'3Z?9\DKZ+C9$-T.BT?M\>?$_-B& U#3L0[ MJRJ<$Z,]H3JJ4AT4!9D"EEVDD^B\CU4+H(']+\ MMXMG6L*1-9QGY:G00ZKJD)VJ W4YKF#C\N3BR_OWPAFAXSCR>3BO)_]^"Y,! M/9<+EH0^H_?2,DS-LNM@9ADS?]5H U5SL[*B&7!6FRZ,=A6TILW^3)Q6^W5M M[/;(-GX3SL]Y#REQ7+!1NYPD?E^$!9V$-]:L2S>GXY2;7" ME]/_IDT_:;*W9M:?14I5'-"3"E*=ZU@YFQ@6%F@ZGPH#VL,3>CQ8,?94=^B, MI?5ES6[*A@=2RY(F]P+/\K&0K-_?+K3A^CU!>J\GP/<,;;"N:_JLRW)P(4ZP MJ\29$\]M+"?@B=5\WH S%3#Q>\IHCF)YIEN7'X6^:,U2J\F20;25LS(1K%AO M77X)%CY'+A27 !S#RGHDIX+E\X-Y#66//L8[8'9)UR-D1:G/H6).+UH=URA?+:D6+YEHKEX'+ZY_@N28T!_8*1 M)UDAG2XCS2+.#)B;\%W.&PB(?)=(Q81&Q7P;WR5?2YFL(;D9=CGN"J-VNJ)[ MW \,,T:^2Z18PK H>I_O0OAF4135U)UE@KG:>7O'R2)1/ & MXA)GE;Z)I71:%(*4V>*8T$8FDB!R[4CZKFV((\&[E77[6:5/Z]E.9U;S+#U= MKT\'/+EL:E3D!D>V[X>)X-?8OEJB0:7P-I[3^;E5P6>U(D4NHA!79/MN0_!" M'9/6YI2-9/#6M&413',>3:'=(J\D9&KIUQQ6T M\Z]7^:X#17*K.'% M H=X##4=CT"K.IZ'+B 8.6ZW N2O<+XF0X RV(J:B[F*:'&DEV?;\=!EQD7. MU[7A&[9]U'.N-\PIM70ZNLZFZ:HV EBEDRF%#O(_8Q1^(5^[_2,DI>T2@S7:/5I$0.N1W4\5AN%+TCP[7=.(Z'[ MVGW3;L4B1:V#,JQ6G960^)PK9D>W&6*]>AC]&X#D3? MB*/T&8-DAPL/-8FLD>;C"F6\SFL*!&SSR/8]VY^V?_LO>NNE M0]D&T(LLU'$WBPTS9A9C8E M'B;N[J%/O'@"VTL408]R*;'C(7(IJ:EEHH+)R,NI;J #/W[BA9H+QA(U':ZX M$0,4$3.9OK$JX:2PEY^_/TF__2=>!\83PUH"(,T;-:*=9F9^^)W! Y]X(1]D#DH$08C8 MG$57")]75-TNY$O))G/PC>LGWO_*C#:#.BP0D8ULNGR%PML]ML!.V7R-9'6Q M;Q8>X:,&#^QW5O'&OL=NV1\4IA?/^U]F@&F-_2).+[L]52L\Z>+7T]$_HO7'FAFW+4FOS'T@9RX M?\.AQX<@Z".!/B0)^-7>B^'3D^VS?:COX_W@EK'?_VE I\F)5< \5K?&LOF? M^_4W\+\.M!+]__P=M':T%8 =^:\)7OP;?HSY_^";#_X+Y-C0!OU_[_ZG82GP M3V&7S^;5KV6#;6W<[7X]U\=?>G(?<,$+/Z,=\=@Y8#\LOO!=)5AO], M#M!7@:)C_^Y9[O#OYZ0^1,'ST," /N66UBC\>\M!. S7&C_YRF>0_[=?8PS8 MNQ8//MD]:OX]U%3H;OS= MDQ5]8%N>J?Z&G?7[L+.[/__W?R@,P?_>T7=R+MKXGD1I(*2!E/H D41Y"[-7"N,['> M 7[X6Q/TR8"? MB"C>(P"%X$!"DS(B)10,2#+2HR1:!AB%]I$>0FQ%=/U$0Y'<66(%3'&EL^E< M)DF..G5GW]W5-[ M[-K;P>V9$O][=?O]#-BN'YS8P R:AFT7^$,"^S_[DKUY70 ^_(&@M^8Y^/C, M=]A[G7_96-^PYEN-N_T[/K?ER>^>#60]/H>D>],?V?TN]Z#=\ESPMV_(D!>3 M7AOPS;]=]JD3J[-5OMZ(5<6Z(#*51JS!QZ!?VX#. MZ]KI0O$87X^AQ%_J?V-\-M;(L[$]OW?G\S+I!OQY\PB-)YZJAT!0?@4.Q]?X M\2]Y'^K_@V4L-.A*B^7<'4-S MAOAH, MBET'I_<=XR1;L#EIHW%RR_*HVRE".Z;(+9:)#(3[YY/_E3>CFLLXT\ MCZMY'@U;-M=<>N9Z4!I.H<@\YXEI6A.K5!%+=AAFLQ1_M^N1^"FN1Z/.5 3. M=S"NZ'ML1 5J:Y_&_]YA=V^+C2][MRDTKY-_/M1<$(/B6U'A M-%_.^AI/Z @-MBS$1(&Y7^LMKI)^^$*G_!F"_V(7LN(&Q/!W&^T=$6*R$W,F M0/%3=-289L8TUXDIPV 9]=]@K.'WED\RI,3-*O_C'I/CPK7DQ+9F/F_/OG)= MRPQG*I8-7:6@+\%_8=HOV&0OTY:Z+T+C)F$9K%BJC@UELBE(&> M]%SVDVP."$O/_O7GK^"-,6C1+&C2[-C(LS5'U8*L5@CFH,V3$?I->7L@F]HJ M^/N_[_*XO@8H7ZX7&_*"V^3J*4%_+ZQ*T1"J_ONC/<"+\Y]15=O/&U[_IZ29 M -WC?4]9Y#N\8U3TL<-P!;H@L^YH_@;OR2012\'QFH-8QH9KY<,(.-)!@(3K M^%$OIX_M3]^IY\O9ICEF^<1$&8_C:F/5'KPQ?<&#KOG:&4@@R U,/@T_\G;# MFIM[4[>Q-&5HMNZP&"'Q4KS>)M*!)8'MZN MPI=IIK)OZCREHY&\32;8HNZ:69.P,$5_R\5N@(7LO)LH5UI);*96;;D\M:MUB?H#5=Z%+SDI7@ATOIK0DGDPCQBN(_!?E_;<;DNZQ5J$<4;2(; M,78!%,^/O<7X/C00P/EO["\XWI@_X.=&XDI;%.0+A_MQF>$O8-'DWT[,!0:8 M#"USNT2\A^ZV8GB^:8A!_T>&3%4!7#<>W:Z]-!9\'<# P3SCOC(S249!1HB. M:=E,4RT5Y&7]3>ZC^+MY_]_K9 :5+.@?5'UFO'!S6J.4/IV1\8$8-\3^PK 0 M:CIY2^%1.!*GR5>T_)E7?!LO 2>?.PD"E M;BJAD%*OWTM*"1SWLYB0I(0I242E M9 65:;#92=F/?#]QW.H93:0:E+(2J2/O)4]B9MWK6_B.- M/231SV[1X.@#3;_JAA(/B8TN"3[]???KI$XQ]-P])EZ/.A_J\3W[%QL*/,L0 MGBP.YP>O ?7:KYL<\M=^7FWS&*E-.[&71!/VSCLBQ1K!?HM=U>;(.4\P733,OL MLINM&X'%##X*DOFK0K9I1P/4TNN"X?*Y.:1-?@6!O@<2G2\>R];4* MB6U[?Q,X3P(.Z]2>ZR7"$Z,J8, 23IV,\YGP]! ML)WC+T'W]B/_0CY0=I]/92X_'6^0'A \O)G-?^]CLJG&_L+VIMR# M<@(;]49P0OY#07OXI#^>36=^$I,3C"08KNRX,1I9]Z#*2^=A$T*Y>,0P[=DV M',HZB\I7TZ[L>LY>*,7L,Q2GSA&,E6>@19IT3TUDYW=_.OZYY*=BM!GSJUE6 MS^&YAC9-TSMH[S_Z2E9,+%:QMO&EEP^]_3XZB=V2*/EP@D@::ZX+ 0@,B"C; M"HJ_&,L8@-9M&>-\;2XK030U([MRS,\G>2YDCWWLQY+JGK';W2!\.:J#@6?( MCU(HQ!NQOY[()89C#YO&[E +\@PF?I[!5:1O/8N=/ 'GOU<3E#TJ^T3>R,V> MH,25-*\D!\4%R\\PJUKARKD:&@G*M00%0E&.&; O$),5!0H*Y#H$C8\2VU?1 M![^-0:;$#_[@C*&$P;?86\4(,36&I%C>^V8)=@VQG;?PCZ<-8GHDAE"&/) ?=.TZG7)I0 ,OE0,+'MYH8U3WW[8ZHUIR75;3''^JCN[IF_)!_Q:#^V!>OU%,)G7?/)CG7Y& MKSW1H^]9,:+D TE<&5OTVRLWYKFJ>+=U>;%Z.J#\3R82_4#BX2-2Y9">_U)" M8>A#@@QCEMHQN1->LSI/!?+KSH>L%5@PS&T5Q?W#W$//-2$ MC2--.Y-@QT(ZGD.[+H.6#EJ_KP'/>S9(;MI-^G3P+,P&_Q.R=@D*?($U#Q<% M;LQ,7X@"-V1QWDN!2Z48GA;BZ!\))?BYA0YZS# M$' LZP(*!XX16G;P+F/IOWRNP5?#U\9,.%'+]_$@&0-7V91-19,-/VKA'QGQ M&SN;(IY.S$_BU=37>D3>:6",,GV09P%[A@=V7JQ#.*#\YZTOD*H M\T5(X!J9GHWA-HG8%Y!UI=>8Y;F!:/DRMA$;S7$\?ZVZR4!6UJD13K"O*0>A M169B:T8,I==51(*@^08PV2!B#9O[-6 #/+RG4O63 BMPJ*KEJD#1X.+J+N9 M4P'I@SQ%VXGUVF.;;IQ_[[A*]L"F5##'8.M6"$;(/Y)E#WV$2!<7DP63U65Q M:.9RR56G *!'CA/W20R]IQ%Z"Z8M'?[$_@*+;;ZV:P?U=)<[VO=CQ'T"0>\3 M!/E?J*#.!X0S%Q,-23W80P5?3TUZ>'W__MID>*;P4>SQQ/CY1JAJSL20ESX4 MP1/"?\C/^0FS?_K MBUP=*@00>ZP!L#M=L:9Z.,;,53)LVZ_1 D=>CCT6N U%U3 XIJ ^S*:P78R% M@\W$RDP]G7]6].P*IO9$;?=5I1+VHV/VSC9\LJC8DT*?-/9 O1K*>*;THN*S M)Q2?/26 ]I!\]0S.%4A^X0+'Q -^(X#Z0*VV]\G.!7SR!RSYPCM]RSFE/^/G MG0G3GR8%=8@2;Q;*V:/-,9NTCA.\_/='2B>O\?]6%OFM4JHJ#\#'S^!\E<2\ MLL-T9#]IYTU7H9?"9;D*4TES3(FK^"X5XQ>^DS ,)XF/>=I5V78WU:2"& [V M=W874.7,=80EN-3HF?\=%F$\3.4]C 7.RN?]KH^*W7O.5WP90;#O+$.QG5YY M+E"<"\;H#NY!(8X@[UVB,"I!4Q\3*+_33:S\A4 ]OB*2I_.Y<9'(7$QDL.3'9,:_1-C7CT'N6THVH+B F# $ M(!*4$P5E;^/)M()MITAVPBP[P35E9;;2$/@L7V7K@1\G2$0")Y)GD*%'0^,' M4?G)YC;W2)J^H33A/U.:]B5(:/#I8IXO9=BZP-9$KM&1""J!H1]TX8Z(4K#I M.X0+4& [FSWO&#OU(.PBT?I^HI7XF:+UFJ%*,T(^6^);@I2@2#+YP8C#$>E* MR\XPEC6L>62HOJ$T$3]6FC)L16 S%;[!^I9J3[IVT3PH9A^6)C@>/Q&R8KEP MPJX5>R)@4?#A9P@7^2.$ZV (#RO+ICQ80SNC.8H7W)0AFRICRL;2T1RKG_UL M+ _;Q/(>7[7+>'Q\97"F>?M2WYX]"I\OINOD9K]-'3B>$:W-OK]48C\CU'%0 M+/&:GVZON<'6.$0]_-/8_.6+C&$YGOU9L<0W8KG_JD#"]EX6V[T-TD;N69X; M*\NV#MQ877/T2.J^G]3AZ,^5NH2?,6E;A@.EH&I;"E!]W$LTC2,D_5EQ2VS$ M;?N.0-0>WQ+)4B1+MR5++_,K.+Z19^O[R154DD2(#XK.7G;%-KV"#\YC1:D5 MWV_Y&T?$,;\Y,%B/%7 M(5E9<2W;D?#D1[=_]T2'VQP43SL1*_(!O L?KK?=C' M*KSGBOGMORH6O,L/W*W?ME_TUU\,B0Y8WR05&*Q(["*Q^S9B%RQ\PR:1&\'9=AO)2R0OWT5> M!"Y781IBG16D)):D/KH2$B!59#>*1W]3X7B>Z'#>VF@AKP'S01R$;1A'Z\U< MIKK,NP[1OU97)*B0L"TOY/=ZP;( 6&)/5WY"!5RI.DX"?;T\#D8_EL?Q2]K< M':!S5![G'2;N:N5QY#Y)],B>!!":E!)HCY9DD*0ED@9DLJ=B"HKYD?['^W+? M/J(Q4Z?Q2K7!8(&-/L36=[J_@B[- MA913#MU_>31A]"IE>UX4.GMO4:3-CNO+RD@GG%Z\#C[?.<7'4<@7A)03A()2$@E(7$H M')=H%,4D$B$3%"8#.=%[<7.WV'8[H#[*=)%BN]U'BID$-1CMW\>]:RF(C?HB MKM=146,JMJM[13!I^2V)YRTK!DN*2H:8B)Y1PY:>,J[2V'QSD=^3EK24ZO4: M4C.#Y+3!8IEEZ I &=CR19^TH58TJ>D"7<#&:-FF;8Y&!Q+^LL^BU26S8R2Y MT(5*O)*<+)BE-9U+B9>WECN-F;2L]/2JGB[P@X:-N5R5FDO$RY::)7H%(4NN MQ%8:JZ;*[F(Q[]0D\F7+53R7QB7**NH>F6RXI?D 8V6_Y8MQSO-]/#.4!P*" M);%:15HDB_1P %N^F'N&'!K92H=QV;B=DT;P,D1XM*7M2HK%QVJME>WX$0.7!C?*VBX/RN+K#T>.7DDQ]M6?67- M>=;O]0#[Q[WF7.%KR[$8%X>V:')>'U_"L1[@%=E>J4G-;8F(Q_IJL<(TD1<&LUH/8X>+*I2] M ]S2)[30&G5P@\TYI:2FD>-&OQ,T?8'5K&,6)K/VL,J2J.KF,^T%P0B,W_0% M6 N.RS57\Q++QO'X*KVDEQ.Y-)"P QC AY+46C4UDYT64_,&UDLJXSX

    N&1:>4U TEA^R/A-7TQ+ M22)3=\KF9CJ?LE>DW8T[)#7PF[Z85ED9+G,#*[/49;%9&"%3;(CZQ#J K()F MI3"AL!+9L9,?.:W\L*,58*\'D)5=U;L9$IM,=$\0(&5[>'^>@[T>4BRXVV6F M52J+@!QFJW*+:HP4.*T#R,HIW9ZV;-9'NL=UA]/A+,L,%-CK 61Y[-QIIU#+ M$]--9)XC2+-8S\!>#R"KJ"X9O;VJ#%A^JNAT%9%;1'(NX0>0576GXGR$4;2X MK.5Y3#V! P^51%AKK)2J:')6D_ #W$JA^26YJ"8$=IF2 MB$S#HXS$!([U +?P0M[KB0;=9Y5B-JZS0+0PP M:32?"R,XUN?2BLJD8R1Q$#*7$ 1],LQ28Y&QM !R8S$ N&6JSPL#@1(Z1$@=P MM"IU.'1,2);N>6PUU>UV^0XT$HD#NJ0MC9*,D%HVD"5M3MK22NV.A('?=*M+ M+E%K,HX\$$F$IOP(ZSL*3*(/:.(,-2:3R /]ZI4ISR('48W)S]28?"NXC#XD M(T:$@Q'XJU?H1(RX)B/P!S02B5!PXB%Y(W5COSTC(MT4"D901^[CBQAQ148@ M48WTLS+BG76VWUP_7&_6?FWE%V'XJ^2%O.6ZWQ8-X#K6__+?.^SNH_1(/"2H MBU<<_\S>3%FVE6%PI<4[RXA_U$/Z<1! 'M#+$N2S$,@ !027N9T1!6\9HQM" M060'0F@'J'^\'^0HE_[%[I+^QVG^7Z8N\_9>96*(I>RHC84V"*RJZ+Z##Q_R>5\!Q'5*M=V@C6IWL,D3B]67B%3(ZK)V+B YKCR-4 M=+CI."G]+A;?_4F+]3I;:<36OL3O[[@LOKIV^VF3?BM1ZWO..C0Q@ C?/R4. M<'6[_)V-\/77_H>*OF G&6G_'BB_G)[B?P!33YO)QO.#R-'R_U;7)^_UV?[W MC2_AG\7!GE>UB>&O5_EX28S8/]K"+YR2M64EN%#&,S6W[M>3$.$'27"AW,BV M*HE"1BI(W#)?LL<"DDXZ$N!EQ&I/YG>QX&#.8OT4XTA\7\+]LV[^IK#4D0&9 M7=4'Q?&[V+I@W[]WVL+];7ICU7(WO]_% M3'D,!^XY\8$L3W[[HLR8JO\?]E&.&3 MCN=6A49%%/(YA!XLNH9:\P\;XW=_4 2Y3]+8/[^>4N)/%+V(M,/-!2EN0#F@ MV$8[X-*DOJ)+;:7-L9[=R97GR5G/;,ROKATJT0Q7!"Y"NF-,, :DQ6E*#&2,P&"H! ZAG@/F8 QXG)AF'- M@QOE(2QCB@U4S8T9EN.LZSAOR?.6DKDIJ\MLYYRU[(SE]=R^9S ;"M5W!$I[ MM@WE[;E\5:#P231G)1=ES$X@ MG)V)Q2ZTT3#+2]Z#V=H%\5KC?4D^_3?R7! M+Z?)/D]Q/-4?=,E^S].%M)(K)Z1Y<Z_ILD]QN)[)Y ][.Q93RVE(%=Z?!\3XJ!>> @T/(N4RN6,TR"$:VT$EQ M3/-(92 %-2_0>R*)W),)_.(+H$B^OY=\7SRR>P/B?3D7X#WR/91<":3R2D7, M]7MLLJ_)8L/V*Z21OGSC*'74YD?A[F\5[A;-7K2(>92G/ASEEB0O7>A]1SL= MT*$$R7#8HR[-A46QQ*%LKF_(N6IAT!W!\?RAL6@!V8':#VX?J&.Q&*^:]6SU2U;OVA/N1SPBWI*HPX0 MB6%8N8:-#+%2';3S XGRUSU)\IY.$M&N3Z07+K8TBM3"U59+[],+0$Z3+7'L M">RXQ\V-5;-@&3@#]0)<+R6Q^V0R$>WW_(S]GO65@8\+).<'KI".;3H$]-D+ M/AS;R1)M[D3!WVASYQ94<25P8U3PMC+P5SE97NWEXT-7!].96NW0 M_N4.2]_@1]RK:VOE66SN<.8,8L6P-1&<7HCA5%+^^/<=N*\'+"CBD MZ_/*K$O566RHZ1"2J+GM8LL(&< M0P>.2-SC2!2V^R%AN[3EN&NO#3@N1)@+X"?9-N$ G9AF0L=.\7,.K'[,3V+Q MO_W!60C;#)Z6Y@[3G@/YOI$U1E&\L6?XU#N<1WQLNWS59+K#!J@4D7BE:&6, M\I*AR(%?_.'U9=2/S4VX# L<<<*9*T_BD3$EMQEUUN[V)>;N3_*CV2%10O<7 MA<&^\(J*K_:T7@^8?S%10NZ=7=]<5(#[NG.&>"4F[R(B([92M>50FHZG)#(( M5.K='QRY1]%+1M>B.'ND8-X=AX_T2\B$F;U[WE MW!^F7U.(ND>H*,7\]L/WU"F ;UBN;,24-51BA=%*7_CD(=1>DO>J#F M+:%>+8JJFV$D<8RISK0C+<:-Y, 7ZJ!("HVB%TZ4CT+R7RO.U3I?9>N-3HRI M9&)L3>2J9;;2N(]5V$84.XQ2Z*)DVIOSXZJV-8$L6E8-V7094_6+_D[&4/V_ MDE)'48R4RC<:HH;:.1',!5-B&0E-!&X=1MZC=#**^D6J(-W;Z"ZQC,#&ZEPNWXCSV;@( M_PAN=(O"=.%>T8=RTE'H[H(N'P^UNNQ":I: [("Z/W6^+SH@6/T?4.REI#)0 MZ8+8$,?=G,7BY;99X."JGUC[?,E[E+B\S_?3). GBGT4W+ND._=>L?Z)-%+7O@4A?J^UI_+\7RFQ95*45PO6KQ'<;V; M<_)REJ7.-<,XH-@GR^:@-*5G$UU0\@4R:4&CT*M):'"3'T5B]S1^R<2:*(;W M<]5 %,.[LM-W1 UX9M_ET1([181"K6/E4Q.AW&!\->"?CB?)>^JB:B"*UWVM M:',9MM+@LAR3*K$QKM)@*CG._Q@$[82+;.G^2 4?(I9'&7:WY,%Q)AS00/.O M_ C2*X?D$/J+6NW@S7[ %+"OFIF17]] >VEE"[RZXJ"Q!T??41=.F MHVC==Y3T*#)WV3)&'Y+TWM"1R8I2!CK?7U9F7<.49Z.Y+^G!^0CD'K]H+D84 MH/M:&<^P6;9>9S.Q!M/>>&U1K.X[+-)#28K<GRO+_=T/%VP MZWK0N,<2E[SE-XHDAJ[4RF5*K(3*[P]7C."IAL2AAE0M MKV> ,-J(_WW]6H#7)TC(;<:%"[L/K M$-+7(3A"W!-':AE'\<P8 M[<6V>4I0#!M0"C-0"(](Y#U%1"D]D:+XSG&L&] 3%\S4.551U.L: M43"&H*=/\W9R7*7-81NM^8K"=QM1^IXF+U\--E0"\G,#>Q TM@=4"-3Q!)B. M' = CO6 R;H:]'5G-\M!! 5#KLEYX\=3PQK"4 =&+(+U)(F!XC5P)&;_69\ MKI6L&RE!%Q!"G[2+DTZ:V1**IP2G)F'!W0$H-!]1 ML;%(242W!WP3%_.#2B*57M@M$6<1=DKAS?RR1EB

    0-K,C.S]Q=YPU MZMRJ*[:F\S@*.HB0X082%EPH@-$7O@8PB@Q^1_F.(H.7=-O>)]^J47$,RYPR M.DAU9XOR1%6J5,V7;_\:@>1],GGY:Z"^LV=V0R'!H%Q<;%,F+F8\1I2C(-\7 M%?'Y4;4B3RT&%M6/O&9AV9,VEDBM99,\,YLC?!73B'G7D+0,7/('-Q!@!'Z? M0"^YL11%!2.M\LGR8)%2N6I1VI.TRAQ/C+/=\<1C^6EGA"(+CM8:@5;QMZLI M^L)[#5$@,71U::_@F_Y(D_&-]7\42[SH.>)3]+AAHBX_;^1:*69: M:=0D++AX +M'C/(+(\F.HH@A^6CW3"3]0) M4>[?%U:3.:H3.F8]6_04ZH4.F$;Q2C M.\'_8QF!W2__&X7CPKUH#^6DHQ#=)7=Q)\"674C-$I =L,O?/GXA8#-/I]MM MG=6G0$+3/5L4IN6Y/T(_8H?X67^7K!,6Q>O"H-NC>-TM.6P?$7.54/*)7G>< M%I>@FG%RQ3K6JS+^"(,-5BHZ#_RM@W<9-LO6ZVPFUF#:E_3A0N6>1TOV*(SW M/1V]S.9H/F%DX%'-+_:#G=J)E:-LY.):J_*-IX%N$'$HYMCO-B ME[\0/M(-/U$W1.&\*WN'[]<-B0+C%N*+"<7F\G3-YJV MU\H[W\BS]=CCYFX4X#NSMO^Y^=A;MS#*O@[#D8ZCX0%&*50:B3)AL/&&8$P% M"6"+%30!Z^L_$.P^2>-1%##2#Y=P#2/U$(K#&4?U UT2BU/.;@_%J=XH&.5X M5S:*@7X@@W00.A$=';[5Z.&'CF=$1X:C.$$40[QE_W!/]1^*"1!3NCF8&DU6 MR[52+%JD2VD_UR>Q/LA!X,@]=@67,-(%/U$71#'#KSL!\4O'$%&,\/O&"--\NWNGD^-:BGX?V\[W^&/_^W@X*Z/--!4$P2QG*-O D5R^0N'M'EM@IVR^1K*Z MV#<+GPYO8\_#5KOI"/YLJK+-VX+K7V35E T/5($M^,/91;20=42K(MNV1*B> MT#"ZLPQ"COI(OFJF]-*<@02\V$S?%;T[YU0IPUDT$X-D1V_E4DQWEAQVY^+\ M[L\#@AZ(V;T2Q'LCWCF1[5/!=&)H=$-?IU#'W2PV?TCX@M,-X[M"RX;S4@S1'E(*7U9#T1!SGT4Z[U1RF,'Y^NX1!/'_.1ONUH2*R;OQW#(*XPY0?%[, M+5MU@'D*(SC'\5YAPKBS2OW_['UI^=4Z5]&5&^IS;58@X M*RKB](5"0$00E$'47_\"FG2ZL=.=1"/J[@_IQ.S 'M:S]IK7AN(8UA2@P4:6 M(6\XZ?R1PUV)!,^[]+)EX/JDI+$BVNUR4&TGK9>-"'W1LK6SD9Z1O#_IE/AW M?^$$OA?O;B0- )MYMFV*UW: ?I)]_)W^SABLD+&%#@?\K9K\)_EAUW$'O?F$ M:ZP*"Q_NST8CK7MR[]YS(LE.'WZ.GQ3M5\0\K,,GH1;/_NFC")N)^0O]<2# M@@_0=FUK_5G!5AY+15*KCEJ<[#:JS2)=]G6+N2^P 7]"ABP'K+-<.O9]F T. M:WF[(KTTO5FOMX51;HV@H\D =]LDEF&;P7O7.8-A7RZ4(->$ECMG1)5V(WG( M (/!&[JI/F_\7^G+UD+7!S3=6II!W6!\I_YB>8S\?56_/VSXW^O&]T#IKVPQ6PEGQJ(Y*XDD1."S#6GLPR \QQ8? M:?I@C,CGHN]76O2 C6;M@-/_'GR;UU:.0%[&)^=EO. KB:AV(B";M:U6NZ=# M'D>:E58M+#J'QOY!&_GE;BLE/ MW."WJDD7'PVK16QA&K50+^-7 M?#G=XJ_0K*F%O:3W!8@SICL=YT=;-103-).'Y@ %.-T2#14R[)PBKPQ?MH"E&9B7@*7YYBS-/P#=B?!- 3$\4J8+ISRVP/X,& 2P/]^8C/@N!C&K,9ZZ M64$R)U2VI8KJ5"8RQ\0,(NX2B-%Y@KPD@P!6Z0R)C#W-EPU;4W.:[-K1K,Y> M*_(QN?[CE@P&)<6O*3 ^P9D[HIE1E& 96'%4:4F;&8IQJG1P88LB9K^Q]T36 MWBSHHDCAY4HHX;&S-493\(9YHX5H=A[*FJEK8-HBX#1 M\=-L"@]\C?S>* FNEJO(H,(+AL EC.#$3=(*S9(%K_8ECL7&G#WSI-5^H4OX ML=LA1L45S"_9[Q:8*0%+>;,9$W"4ZPBK?\521L%H)K&-\HR3I>K>;7)8@ZN% M,4M)A%.4HO(%E :&S9LW;+ZO"4X2"/IYPNIC7B,_\43X:DSAE[@0\XAH-=/Z622S+!E=ENE!)7'?%!L$P=;+EAS&3B/WD>0PF M\@1U>8'RAJ3'__7EB)8O4(])T2)*R\:FR^_R?Z\K00Q=)D-Z:K^7$2SYPFGLR1"\/P_YR/>GZ[^CC^X%EF M/VP%^F+2R=?_>CGW'XH3I#B6XWY[8HDO%C4_E+9"$RSH&C1U-=F$Y%GTWF^R M%SLW=F G_=]]13@(K_O[5&F/]&/@Q_;(Q3X\(]!EG\O>_(-6? M=_K4!GZ>0/1<6>VXQFET3?PM1Y&3NT/2IB@U4V!2PE4$D7!"F4E3FB E B\H MLD8HJBK'^QSOS>5YT$%I?G':TY]>^7*522.Q,M_KYX2QT.=:0DX4F/S!O%9K MLQ'3F;Y<)\NW!;Y9*S%]KB3THZ]) S*^S'>X'M.O1;^-5HP15%:7^F/VN1_3 MS_'EW(\%/*\X8Y/_9\W.]>=.X$5BEI?/<5M%B_ZPH[FY)/\S5Y)]^5^9G;QH MRX$:"3WJOWZA* F'(X(IT+*$4DI!PJ?X3))EG)(0%24PBD!A&4./Y"0_R6E# MH8Y.PG!#PHUE)*:9;F>W'^M2)$?^.C*LUVR8:(>H:0C]\L#HLTM$920T/7)$ M235_U*(;(EH9E&2C##5)/8QTV-3(7A$O%'H%J2BN:XW"V @0U9OKT4CBUY%- M3^QLBIPW%GE1[O -1!*1/KM)EHF MW9V&[TUH 0^I/00MJZM0(M,CR\5) .UM:F:RO;(;QUB4J/G"_Z'H8C MF P'9DF$")W8SHJA5$B/G-91"9(W_2K,,LB.]CC6%R!=HM,CVS(Q4W:$/N(: MM-O;=)L$U1]V)01.#RVMI/&\.M4ZXI I.ANA%*DG5$0B2'HHKH[#HFYM1^:N MO82WS>(&T5T]UDQ20ZN5!3'KNET7#KJ[);^M5%9KC9$0+#VTB=CT=&N3M(A" MC=:@&^Y73C-ZZHG#[^M=C^,[PEX,!O,9)[:[7;00/?7$2<&K%L*[9%@RARV; MLGNK8:WKA1)RZJBLML8-!AL.9J?4W!.&"[4<1$-/G%6+T,)AAQE;\*[&@:47UG[\/P"A:-77LFCY". MXYC=>&B*5*NS=5=7NLQ0U,:.WT,TLE+91S ]<;"H[01HIS=KB4/;1OBR9;@3 M6I?0$P>+JE9-A&<] 1:PNJ.-X&*E,T^&IN8J M@%@K*Y2YX46TLR,5$QTP:RP9FIJ I8I88\G(>WA(=@9=I=,?C[5H B]9 M=C^8-2*YW9)7GO;MZ9N75T@LZ1ZEW%C@4PZ"XI.>DHC5)'5^('"ZEO_9LX(77].X74NR+YSO1,V>6$SX)B$\_0[%& M_^V@J<35\_^H(!Q5MN3%3T/E::0/!KYV8)5]V\X" ^[2"05VMK@(/XI(.@O^* -67A(!!P M"N<[A;>'1;VN/'QXU874HE^SM>42"UMJ6]YAV[ZL*/]YQ%#X@'W_:0\B_3;^ M\/^^$%_>N1\H>6GG;N$O7*BO44Y_[FI:KA7]8N[E.%O5U-RSM?:"_.F&""%S MK.%3,0#XP!GYP!4CRS_*)UJRJ\QS&)('[ &PA\RSA[=)3P?7=_IKBM*?&0'Z M7D: X%\QY*8901S;>RX6<.G<@NR2 ?R5H&^=#+";N G>0P,_+^Q]'/[:&4(] M;L"U1>YLW/K:ZWEWS.H'W2'77O<_SK&2@S_A"DMY-1(]#C)_$3AZ[F#S4N#* M\7,D1#JFI/2=%_DI@]:@KE;J?->$C*;J::&[@>H?*S@14W^'R'FHJT: MCES>%3FV,E-Q7(7&@UX<$I1D01,8E8>14UG09[I@KTW!UT N\NE5&2^#W(.U M_<&!B[T$+B:IF$:OVG G--%6&9_7MPA;+5X$N!HD&M7='L;@H2T/Q7:Y:FIQ M MFQ$ Z%YTD@TF:#KR82T?6T MEO0F/ GL9Y.1KKRX+/'=RPI,K./Y_.S(?4\PWX4Y%C:RS/JB$:+MR50L;U<4 M(Q%/]0KI/$FEDQ*D%>)P'>"=;+;.;&#*\789%5)2EL!M.IH3 2F;2! MHZD\=K*0*S \W;3AZ=R"U&/#][*RT^OP%7W-$V&\.>1X6^?JJ-M?^T$W@F_2 M]XW(X_"E)*=KT_ ]FY\$KMFLM2OY7(5K5B03-LJ+MJVBVYLH68ZN,NC1LP_/=))B= MVZXTVSNEJ:Y#ZYQ-]KKV\#-F1KFT4_VP[T[77^WHS\[-W*_]D MTY-LV,U(?>7MDN$]Y0'R,\;S-/]4.$5=]=9M!-:WHF"T*M55H[['W+@\4"1= M10 XU<$<6*+.;8FZ-B(^V5)U[>5>F0%S,( ;1G_6;5F_>@'YE1:3GZWG#%MQEAHP7@'CU1WJQI>5 MJIY!5$LP%//74TT:5P5SAK&PYNNL.ZKQ4%=>^' ^O)0Z[Y:P-"US_N&%WTS M1H:XUTST@EI5D[PQL0V5EV9D//L??BDI^X M'H\796$4QHA,TM(QF@+&AMLR-OQ6Q-$.@5# Y'#C)H?[SJBZ_4B6)\#]/O"0 MV1/6WB"\-5<9,CMB2[LX)85)*]M$#,+28A (7[EU \I=)U+=?OC)GU';I8B^ M%?8Y562#Z9Q@]>*VOV-BU$:B$IZ'J739+1!S3'[C*SH.\]0M<-\&->-X9AT+S\@LV8SRX@-^OSL-W_2-.0# 2,G M&/C611OC;7?EF48HC MJIM*@^UL&9CU$=Y[7GL<+%0H%O ]%W8,+B(V',!78KD,%U MQQE<=^843"#;=FSGYY#'WVO77L.MF&:OX''&N!-R$U]&JY4P;G<>"V?(9=P0 MP""6+7R ?*X[]4B^F1VP=G?LR,-NEV,)U& ENX;9!W80^R5!G:(;M;,]Y7;% MY'",NM'AF_9=98'OT80[>D M8-*8\I/NC$_B&0[DL@74%#J M^\9,:-$S.SU^4!-J?#L7"7>7D>UNXZR Y>PF+6=W*>)%K/JH;!6$P MKU262&NT@-<#9UMDF>UXUV4D)"D%CI)Y"KN@>_/N(0U,9X^#Z,\0TOX&T=/: MVMC7%9* A^V5U\$0:#+OAC&B(P&KD"=A&J1-WISMK,WUCU(5L)5=.M8,B]B8 MZ@132[L.CSY'/_6_C3.[PEJSQ+,O[,S4_%>KZ;7#5<.'.I.MN.S.%[CK#D<0 M%\E>2:%PFLQCR&58-;",90P29X?_7X:5/3CZ+^SY_ /ZG4X7=KF9:W##,E9? M.QI-];;=&/VQDY/*H\AE[.(W#/T;,(1=@ZT]C'7LWA?Y.2F.V3O)45WJ9AX^@JZG"]G%!E>APH.WWKL4"@[/0G7Z6/N.XLQ+B LM.? M> ??[**SKK/^FM!>E#U# 6KI^X,V[L%^>#)@X[:MA25C8ZA:8BOTYK*K>9+/ MMPO8:,K5N357[9*<*<[L^KD=!N@;+(:<[-K1%GH=S17B*290?+8W!?*,YIK3AQ-21KH0FI:K1KQ3HB'7.B(U[P/.I: T YW=X "X!YVZ1 M+Q?LX0XV*UJS[\_9(F?7$SC'^>1?+]3@[E:P?(-FC5]%JI)A!;ZF LL&B-P MD1LW*XT=47R"@?M]7BLK(BK"PLQIZ%M:\?>V+J'H01XC010'B.( 41SW(\C] MGA/4JNVU01?W$VZG]G9!26_J3BWA!(DH1UPJ]/9FV<"M6<=^6NAA&&1I,S]Y M/PCW .$>V0OW>+V\"(C_ /$?V8[_R!S]WLJYWJ#E)'IF$@4BY$2!*^5J[1S+ MMSIBO]:NY$"D"(@4 9$BP%H (D5 I C0A3.@"X-(D1N/%+EL?8_;-DL^)Y<= MC9)>O8?Y953W3';,^U;-FF#CI7[-[-*A%B]14YGHL&1=:P?+J>;RL\1"Z?&! M[\4KB+;X9[?SC_RSV:A7JX4:M8*%.=Z"ACY&K[>,A"95-,OGT9E2 N5]%DCL".L7C3W6H8DJ()K&%,4SN%,1VBUZO6^A**'F4 MY0IH <2@/%P,RF=WJ0)\XBI"X!OX1,7GQ6)5695A>2P-_?X6DR94&/.)@QA( MPY>I]GC#3"*1#/_7ER.JO@#1*EI<*?EIJLA+L>XP[_YVB+(_IKW96MW$IV_;@1O#_7/"TFT:0.HQR116YFV+*M&-&@B##\ M0W/;K\GZ+KW-R< P(=J(1"SUKP-D5&/S_3_1EZ<'*98FNS&5S8]O>^8X\5N/ M- ;#_W,1OO++$:&I(\)>3#KY^E\OY_Z#\"'%L1SWVQ-K?+&H^6&/T 0)N@9- M74TV(7D6O?>;;(7RSGO2.R).C#SIWM^>V2N6J 'P5Y3^G]R+[^/M2.WE4MY" M+W;LB+Q#$-/QSYX^2SCJ\X>.9\3\X)NK61'/VVCQTW]Z;G(POK/ZAD8*1$P8 MT8_'E>'(5_Q")_6+0H3].)?_R+FY&W/I_^X[RBG23+Z/.%7$?JU_OR36XT<1 M^F+8Q[B*JZ+'P'DF4_EO2/7GG3ZU@7+"F24,HW!:QE")@A%G[6:E\L8_3WP+Z)<=?N1J4\/SHIHW^L7RKS/?Z.6$L M]+E6[-!G\@>!I-9F(_XS/6S@80.$/A,-XMI]@2\+?9YM5/EFB>L)7%>L]<<2 M47; M^LE:(%E'(_UI'CR[F7*XG9'$+].Y>L*%G]:P\=/^]/ MQE;[SYJ=Z\^=P(M$#"^?X[:*%OUA(GKD#IW2O7]E=NZB+0=J1+#JN:?XAROP M,'#UUP&B1Z90F!5F,(;1$CZ=(1*.*;1$3Q55HK&"''%H0B,U^(@)^=FH[U<; M+;FWW7/#^KI(UG=!8#M,+)S^.I+N%*3MJ-=>P)6PH<^%CCA=5B-1,#VR6*!G M_B+0JF9CKV ]=+&A2E@8B;E(:FAAT@\H1M%U>$TV>YM^0U*[XV1HX=>A8M.8 M"BMV718#HE6?=CM\T6\Q$IY^_][%9]V.I:XY@Q)W4T6O4938C492OX[ MY*=M1>2+Y;);YUJTNH]'IF>ZP79F:527-N*R+>C-'=Y?%&9Z/)1(+6K-L.%H MM.B()"^.*QH--Y!Y\M34HCAT5=N'E$&8@3S;^BNK65]ONA*17I1$2W9[12@E M;FCT*%L90^..%T8C\5]'KNKMP-9W'4DTN,I,K'BTV2+CD:GE-Y>.5Z_4NFUN MR.XHHK]M,95%/)+^=61CM=3DT5"8PY"%U)Q)39R)\YX:1KR M2&XQOKSJM/5X:&JC=JV2OX?@>M&,KLWFUO07 Z_"Q$-3&Z6H#;_H+@09WG5< M2B-+HU[H=B522E%TNU3IRNR&D#B#[SBHW*DQA*A'(U,;U6OVC6ZCMEJ;K,O2 MJXW?<_U5_,S4\JM=298'*@V9C5&QM.D$7=LM,-'(]/+#D;JCQGI3Y-;T2ERY M>ZUFP_%#3RS?9DNU:M#BS.76@ BQ#\]",XR'II:OHB6BPXE6!6Y,!0D=5\F] MLPPE*KW\XK:&B^JJ&7!KM#"NK.N0H+/=:&1JIHM2<]#''4[EEHO:%E>W :0/ MF6AD:J*R,V&FI#:KPH(G]]6)B0Q&9OSV%$5U"&>OL"Q.PX'>X*N8MJI/QO'; MD=1$%\69V@I:^M@4,*X2-(GV)A@F0[%?A]9]ZE4HDB[%A-#*U3R5LS(DEMC:&V4G1M?LS=!G:\4B$_'4H M7]%6&$6.AR9D;036;Y!C@]6C;4K/=.7T=J)N#'BN0E%KANH;TU*5B8>FIKI6 M%VT:GQFRR08-O[V7NQ"M)$-3<\5++-;7IJK)K6N[:7_J4Q+O=..AZ1D:&JRG8I--:5> M.^",)=G:=I#:M+-DXJ'IC:TUZ:6Q7M;$Y1Q;].'Z9KJ7DJ>FB:6)>"UB2OD1 MS2MTR^LW1W,S[36 M9N/IVN@PV?0>0&*K66\N!S0L;T4N+.O$AA]%4\!.8*:_5GN675(YOL/[&Y86 M>D1!CX>F]J#2KO#K<9E:BCN[6F&'VQ%=*W;CH:D]V'!#=P*3 P*&YCL&:>W\ M+M-*AJ;VP.=FLK.P^+[)^]IL$ RW]':4#$WOP5"%:K4YW75,HSJ W5%I/J&F M83(V13-0':OW5H:R%-%E8& $ONHVE&[SEJ M,O'0U![TRA.^@.[TF3DL#PHE61ZR2RAY:FH/2%4H\CA=U&&#U['B@!ZL=FCR MU/1DYXKI!$JESHH5:S-HD^5YBV&3QZ8/E]N7-,L1^R681/ 9MEZSXW:'B1NC MIA96,/9EPH2H!;>$_2U/6F8@+9(>JJF+L]/LTK6Q-^R9#5S'UG#9@,IV\M34 MS:DAMEPJE\IK3D"ZU,#H4BYS>&KZZIQTRP-W,$!$CF_XA"-/IRV>3=HRI^_. M<4.@"IP_T3ET+G:+T3'0A'48F[H\U[NB."9V&Q\>HGU;%<,6&NR2LNFI*3!M MC%YWQNLU;$"54CAK=5QM%@T]<2V0?'<8($RQP$';3JTR-4KL?JE+*'QB98AC MF]T.[ @BBZN1++$M$ZC!)&-3LR5'>-^#Y%)3-)KV3FB-P\ZNJO5J5ZYM-=D3F2^$F_JX)!Z>FUJ9WFP-:FUY MNQ3E&CO;E<<[B*DGR8ZI*=B"Q3/&E'5AK6@,Y-IG]&FW&K9 ;I_>IH]H:-5(OZ!GN#,.Y==[-KED!#1TKC0 M)!'/Q(I,/#2U7[(KER9PN*%%UHCH@1QWBDBLQV'I37#\BJ&/&Y,EAVYUH3G# MEY =7:7H*4UN6 _GPZY;+IC&+%(4?*<]JBK)8].;T)B9*VI0$U;BL.',:W54 M6T]'A^>F-J$ "4C1%G9K<3A8NN4ZRK<0-'KN"=:\YZ=;M*'96]%8C%NSW5 N MSETF'IJ:+3S&+<*=*TUX-ZR,O'D(5;M*,C0U6;.'#C2^(35@66B;)D6*VXV6 M3"!%7SU8[:%$S=[#E=G&Z;3*H5F*I-]H:/IZTOM3K5?&-CTQ8*I^A=PTZ&+M M,#;%\8OPQ)QL_;HEKH.J0 G#8&>WPC@8)_58HQ84<:$C"R*)C(;L-B@R<+RU M)Q0E8X?0#;.Q')F[XK!L$YBY4R9,/#2MIN^7)H] F_*(QZKU.1:;[)(W$"I M[>J19KM;">63F^Z2*\QY 1HA 4E:*D(,2F>4&MJ MMKD/ GS9,"L*:YOS*HL-%GH\-#79>I,JC'UNL!>'9IL:+O6!1Q#)4U.37;=& M6Z2AXB*LN8IID$&C3>#=>&AZLK3@FIU:.!7%0-J;8K5ERELSVJX36D@@*$.] M9.^:YA(JK':!MBE[%3T>FIJL'+)>10A9Q81@:H 82EWN%L-X:'IGR^S(=U=K M&.8#!@H-?+@1-\E3TQ3#+\-6%Y6M-;P;;]K^/+0*5) \-KTPFUBB]=VTTA>7 M%MDT&LMYI!1%"SNA-)F6V.C)RKS%D5MUT21J2K.,)4-3"QLLVUVKZU4JIE9! M&;:QLXJ=AAX/32T,Z=4%S&^&"$?J5'2?5B"VMDV>FD(8K&KK2A^K1F10Q="= MJYN>Y"5/32-LVZQLNEI-:(F5(252V'[66'4.8].4N"?GNV 5Z=^&1+"=/3/F M5SM=PDZH8Y46PE7']65#%#KXRK#G_6$72X:F*9&4]_X856Q8&+$$QXUV6-%) MAJ;V8.L6_49]'DAB,&O;<,52PBG)Q$/30O"&J-)UO02)9)LI^0M9M8N-,!Z: MWH.BW1(G@^J*$DG.'E6HLDBVB,/8%,V,#5VLU%?J!#:(R;8ZLPC5W'1CWW3J ML?064MC26-^+C2FUI3OM@LG5PL2-_>M0@>O5W+[<56&R[V #1EZ1.L3$0U-[ MT)]!(]_C4!OFIW(3*NM4O\[K\=#T9%%$8(+J)*QSE2V]X.5M=8M7D\FF#W<] M;:*&V%^A)MMWK8ZR"3T[4G6Q$UI>KUFUBT&9W\)HD[8;_&30EXED:.H>K05N MM=]QCXJ&I>Q2R9KXQ'(YI#JJ5ANA@X!6V7!@/3=^C[-1= MV;.QXW(\C$QI=B&-ZV3RV/0].FK78"@BF8II3/R M#NN6E*3V3[?HXD?^MFU M>(B^4!S+DE>>]NWIFY?FZ=@1=W3"Q?XHY>#'^MGM]\(#?_3YI=VJOOOTUN/3 MD(.Q^^_B)7'X*XV^%@OZPH/VXOE.],R9Y81/UO*GGQ,_T[>#ES2,-N&/SLFC MNSAY\=-0>>HY<>#$A;V29_$(O' N?SAT"7\UV08S4/ AP$0,2C M'03\:KX .(A/.@C\*_QJ\1)P$( U/=9!4%_A5U.MP4$ 1#S60$@ M7JW !4X!\*7'.@CX:P$<1!8.@@ 71#8. K"FC!P$$)DR8@8!H<1 8.@OJ*@8/(PD' ?ZC-#@[B;0?QQ@)+?PP8^+Q54V]8]45OPTPO M67&L^,/_^X(4OKQ78Z2^HM1%-R!>UVOII'_*(.W/74W+M:)?S+T<9ZN:FGO. M)+TLN\GNV0-@ V#_';!_+A:$K+:YI$C)9]0*^BCP6[*KS',8DL_%=7T YF\: M\^\N2W-'3. Z>_"GF+?+%XP M\%UEOQZ9-<=+OE/,52 U!^&Y[T>.@0(X3X9 MP)^\/7>XY,]M!@?H_-(,[UGU0]^K^9%?B#&+Z/<>:_IHB MXF?TXN]%+X(E0972L0\;)/B.8MZ*-)!=FB"^HL1-TT3?U60O<'> M*AY('^C(A@K5[%LYZ!L3\RZN#'ST^'N:+QMVW$3K-LX_LT#/O$"?\/-Y]+WF M>L?:[$"\!^+]_6'Y(YSZAJ6W0S)K_!MT\&A*<6#T\%'/)X]EZ-1^9 M\Z>OYK5.S.CE.S$SGL3/XHXXA][+J'1LFAP_[-#T]@!UUEFN'#MNY]Y MU,$!F!@%6UK<5EE"S$"J.NT&#+-=U*AWUI7&Q@E?]FZNM8&F/C=IAI^;-"OU-;Y2O:T&:])@9(I0CR3+<<I/$R[(Q6X=7YP)MZ MN+_T.QQFX'^)2_!Q'25)N#C2T\5=Q)='M.U1F\[_L#]=^)-AWLPHO]H MOR(8G;@*9QUY2/0FO1;,5J>U;GG7,5?[& C4E^]$= NB>13%4W#XUXWB(7M7 MX2&)X0ZN0O*&N<$G77T?804?OP)_80$_[D)T69UNZPU--8.INVU8(P)>]&(6 M$'?'00I4'D50P $NR $*UY<+SL$!B"NQLAL6AG\DQ\1A<37[:#]_$HP-S9#G MQF3/!;NZ%"BU?=F2F,$;>,%39.23Z^3(!*BP2S%Z*&AP VOX9$5;:7OVPDQ MTHH6MNES-&?XLY N[7?AH)-(!.27[P4"SY-X6B>X429P.17Y4/+Q#L!\*)GX MX&"6%FM^[[)L@^/IRFA608I[6^I>%H=]MS[:]>3M2*SP)7W4*TVW[5J"0_K+ M=YJF\W1<*NG\.#RXV>[D,LY<*.[/&'VBX1R")L]O:W[.L!5GJ=VDW_S,7K8L M<9@DB!T]S\V0I:P54*#H1@L4 0K^S..\>)DA<)R@>M -5P\"Y/OY5N.'6O*? M^AT!"KZIXWQ$!OR'MC@W;S4I!:X>852KF$:OVG G--%6&9_7MPA;+;[?,OHJ M(*>E>;"?CW<=3FYUM@9,=LP"U(T!25\2D(]62/Z:3HM?#:)Q%+=L*UK.F>42 MJ_FW&_4T98_I7B.3(7N[ &CA6C'YV=N%:P3T9V\7 "*N%>*>O5T M'"MP*SL M[<+]! 4 .-QDA[CFWQ.6<5&\>]G+;57,7PXHK,V?=;@7#33!Y+]A@."#<% M%'S;QYF]<-/SE]8X:[C([[/K-::^Y=MTV^$,LMO5993J>2W]_84VDC<BFTDO^0/EROW=+>>*+RAEHC=$EHO%F80H'46F09[3 \E.BZ\ M@>1A^()9M@^%HT<,,[M)OG&5&+./,(VWY_NE><9 M@+M=9;Q(_BECG->4V"@ M/5Q19,YBB)H\%6.6$1?JP$ D&HBLOM'(ZG]?H%;/6=G$ZW4Z;)%Q1,<147A7 M7FMF42Z4Z.H'4_3?R"I^6]RG,<6XA;??.UR#Q)V )[?F%NK&/ .+B_MAP'B4=VCU>I..U@>O M*W_N._9.?((@[/KFPJX!Z6?"PY'Q0P=.C[]R>L1?BW(D"\;SU&PO6>$)KX=8 MLUIE=\Y2G.&L1B'*+7U#ZTH('+L],"1/DZ"Z*(A1O*\@]HQKC[?H,'F=W?Q0 M0\<=Q4%W9K 6&Q)5DFR.E! EC-E-4ML\CV!WT^HC>T #20*/6A7]3GTO?\MU M-K@\XR83N0I7-(86:V[-XOU$R$F*J.>QPMU43\X>WH"0GIRV=%?ON-Y KE((TV047*] MBCP'FT_.U13-V&AJSK!SEJ$%L?/'E[>YT/#G<67[:$*Y"!(;S7OV!=V":Q[D MF&3R6#)YW8(<$T#!-WR4OWPQST:??#7+I:Y MV1_L_([-FPU_Z&ULDY&J?"@A2))9@N8I%$1]@JC/F\PMR7R<^*=Y1QAU$7A^ M/!^OIUG1U-2^\U:6\4.'V[)LTQSA*QZ&"BO5Z@RQ3;?>C5G&P4U"T8!E@.R2 M6\TN 4(CN/1 J@.@8)#J<),2V)F-WN>5G$J+ )I;&,IR['+F,-S0(RL%)I&< MZ$M*3B#9X8KF[UBXAZ8Q=41T_(,\;M2/"1(:@!,:)#2 A 9 ^@^1T .'<2; M/6)0/:![$-T-HKLSYS'YU.CN%[I_W_G-FQ/5?_JKZM_3HD5X$1$(FKLQ%.T0 M*=?3%$>WDZH0$J#8"0$/<:"X]A%BB$ '@7N M9A +_L"'#F+![_R:O9Q9_+.NQ@:^Y@(SK%>X=7-<[[-F?36$PN1JI"]X-8+( M\>N9SDO&QH@6I'JY?_[C=;@<1B9@.4;^^7R[@(VF7)U;<]4NR9GBS*Z?&S-O M@5DUX[VQ3LZALJ-VHAO^7!H:J0_ MG VH?A49A^^V?CWK[R]T>E;VYB>L5LQ.*U.\(BIB( 3D0AGI-!4P$H))"/GE M.YE'B71QGYM0W+,'#A"G?4NX/K-!^@V0-,;,@A7J2YMC=_Y&F5N#06#I"23I M2T(2!&%?N09)SM56@:O,94^[4(L0>/_E57YZTZ'6"J-$ M4SOAI8UD2F^A;90I-ZR+C6!5<(9(8U"K13(E'E=10>D\?J)![_G4O$<'VV\# M]\ ]]<>@^_O@1_==ON6G%R7Q44^LB'4\OZ7Y<^=45S6[.MC;^!)>F5!'05I- M>#D.(29F2DD'X#Q!7K)."V!*O\EX $SI;S(BLLN7@/ ,[O,L[-)O _4!=!X7 M.K\-Y+\R47QRH']V(7#[KI9W2J.E!N[WD&I_"C?@;=\B1D0%M\)$&J4O*8V" M /Y/Q7:1:3)MELLQ_5R+Z;'5'(;DF RGL3/WJVFO_ (']7SOA:PA8#=LB9*J%V^J#;Y.M]]OZWPQ1L.EL)#EXP3 M=L)=02A."LZ^P*&+OJO[B_Y4Y2(F2$CHE^\XDD=0+(^1%VF!\8#@.?JOK@R> MG[;D'^=S.-TA3_A;@>?S&<+;.^7$Y0$UUSO,Y(0\-&AL+9(G'983H!"?[76N M2_EZS J(F!5ZP7B EVJ"_?B3Q& M(7F,1D%@Y5G-DHT: MC$QEE5$^V'3Y3]*U12X5J3.B67B)!L)X0%;;LIPHVDDA+:R0+URRK?*#,84L MH.?\\L'!OP:8PGESL4JT$ZQ:6]@36 Z3 M,-/;2BVK/QD>N 'YY3L-$WD2)@$W.*<'\MZXP='5"+C!,ST]>,!C!W6T *4_QK%?O-X6./8L'OLCEH4!9/Z M9 [J=P%*?X1C?T2&?NDZ7X#2LWCL%Z]@E;TE7[SRU0U0.K L9G^E@(T!RR(X M=F!9!)9%0.G LOB8Q_Z(BB@@\PD\.6]0AOU%:4^LVN&HMF^YOZR(].?7A)J,1.(IFZI MT2_[_/3PA(_4]+3MW:]^DY!(20B24_HJ49T/FGT/G[ M-^&C+/!9U4/?J^F17XE/[2G_9D7N1V&;,REQ@/?='0QNQ!%W$[L"6.:?=JCP M%;^L!/EAH[?CGXU; I/7(RE'%P=_JC#0JX1\Z%*2_IJB[6=0X^\%-8*=J*MX M4Q;O0SW0PP8EE7QN15[*+DT07]%4ZX>;HHFG@K& *AY(8XH+@$(U^U8.^E.O MQ8\?_\5])A\]_J>BC[=R_ID%>N;E_)?U^I(N?E1Z&S(J];_GT']>&Q#O'P?+ M'^'4-RR]';IP #[^03Y.?(5OFPZ8I1/8_H/3P4>\O3=\]H 'G$EI2Q?(ORDZ M #S@C,K[#=/!L:\'((2SJ/$W3 A//1T )9Q%S;]E2DA*]0/-_W7-_W/;C[_6 ME+O$L5RKR/7.WY?[RFM\.JQS:>Z?OII,--E&T+,UU<5:$VRS:A9;W!*KS."V ML8 UY0.=0O^^RW9KO$;J%DV$,-OL5K7A."QO&HP4K>F3NFQ_+O%D+^3KV'C[ MN@SAC*VV[X(7O*W/SZ[\S?>8EVQ2IQ<#T5MJ[JS>?.S>VQS;4_ *[V1 M *,KMCS=\;;4:NHQ@I(>VSA6R)-H^@X]7V/=1P?2L:WF[5^BY VS@T^Z-#_" M"R[86]N")*Z\FRD]KE%#5(0J>UMA%<8\(.ZMC<)TO@!3@ 5>"O4I\ ,_AX+^W6NH5VBM"4A7<-HM.>6=AB1^F7Y0+= M[: 8((7^WJSX&#D;^"U)0!+C6MQ+&\DC.)4G20SP@0LWV+Y]/G!LJ?W8? MV]/-D3*J<8$[KK1":C.U^QW];\G&$KSE*[29?]F1U\66(R2?P\>HZU M92MA!M23NM%Z4H""/]]E H[S3HX3%'L"Y'O#9PGZOP *ONWC?$0&?.ER4M$W'<\[88,I6CL*1SHU'S:D?MF<>4M2]D,I6DIL1J7)/(9O1'Y E'QK M[Z'P0D\025\2D8]6Y.R:GHM?3:)Q"+EL*UK.F>42T_DWX*8Z:WG_1]\%0 O7 MR@?(WBY<(YD@>[L $'&M*/GL[0*@A6L%=F5O%^XG+ # X>:"GK.W"]>(F,[> M+@!$@ OBFF'#V=L%@(AKQN$4";O5T (:77L)\64O;30^9T;(S/.:O8 M..[EM*WF*H87EX/.ON,*!)QF\EBRQW! P"F@X-L^SNP%G)Z_.L=9 T9^GY\_ M:+/(.A3*39-=S6B$\0KSU9IY?ZV.Y V'RE;1"J(SZ41[ZZB'>AW)+_G#YLFE4[Z"Z)&ERAFI9 %NJ5W4274#*NW8'D,1*$EH!(L_L(] #HJOOHM[/6?G$ZZ4^>C5D2.V+"X:#A@,PT1VRL^4#T\"^?$?)"]8&>B@(/:*D-U#<0Q(!)BJ[@&#-"5YO#O4-']TZZ)AV(T[[1..VTG\'5/-\U%%^+%Q.1 M2^[_RO.WYFIT[&2?A^_3Q_>]FIC-'I3!L4!@O5 MKM>?=H1A@]:3RXZ.VY!AEPE, CDEUZO)<[#XY%Q-T8R-IN8,.V<96A"[?GQY MFPL-?QX7N(\FE(L@L=&\9T_0+7CF099))H\ED]#G_,A!9B!PN9 MITYT?@(QGR#F\P9R2S(?)OYIKA%&702>'\_'ZVE6-#6U[[R58[SPD2SWJ+T4 MB@2W*^YA9=Y>RPJCQQPC:2*;1T"8.$@NN=GD$B S@DL/)#H "@:)#CR6EE5@O2JAL48%2!QD6C!"'3?J)K)5D.%Y.<0*;#%:W?L7 /36/JB.CX M!WG8CM99"24/H:"8P0,0L'!W0Q"P<'U#$+!02AX%LSBGW4UJDJK M7BMMNT-Q22SV.R(4A_N*GER-] 6O1A X?CW3>J M_-R675=JZQJBKRK#H;FVO$F;#XI%<:%_^0Y_18D4Q<=5DPZ-&VXBX@8$SV?R M6#(IH(#@>4#!-WR!\<)XMIN.)@;D"\(+ :!Q8""'YH!7SFP./,)-3W- MEPU;4SG9M:-]\8Y^H2:S&6-KBY_"0W4'AYZ 5S:V_F[CU[/Z_D*E9V5O?JJT M3[B=,L2TO3+E_K+:+D/BC"TS$@9+"/GE>R%/HPA(E0%AVB!,^X/VZ#= LNX3 ME;'8+G1@B(!+2%D:%I"]GD"2OB0D00SVE2N0Y%QM%;C*7/:T&_4;7B'V>NJX MJN9"A[__AJRV.<^Q##7WWW#R[Z[%Z3MQ^IP_-ON*1)&]7?IM[#: SN-"Y[>Q MW=DEBK<(@?=?7.6G-QTJK3!*-+433MI(IJ3LG;#4.:;*+05O;(JR+TF('B\R M:<]+P.G0A/-I>8^.M=^&[8%KZH\A]_?!CNZ[>,M/+TJBHYXX$>MX?DOSY\ZI MCFJ;"EL;5995WQR6%NW29%@WE64W7FQ2I85.QXX EG3Q; ? DOXF&R*[7 E( MSN VS\(N_39('T#G<:'SVR#^*Q/%)P?Y9Q<"M^]G>:TL&0\B9^]6]5^X=0]JMB56;&I#^J5$"9Y2Z@&!7,: M;/7WF_M>O.%@[#NTN3AAZAMTU^3,;@]T4:",3;ED-72ZR4@8*J%?ON-('D&Q M/$:F&=HM@""3(@UR??#\M"7_.)_/Z YYPM^*+9_/$-[>ZB8N\*>YWF$F)Z2: M 3)SUPA;*G*:&NRZ< ^1NJ_ M-S//]WIMAPWMJ2C,6T.M-8/A4#B7R^N(L&25$>E'VQ4AZ-1UN.VAH\UHW>&6 M,E39!QV-4Y$$ U3L3;2%]I:&RN * MV)?O&!X)" 7T)D7E+#*%+*#G_/+!P=L%F,)YTZ(&.QZ;M@E5@@5VLI\2#"PP MINJ&S\X MNOX /WCF!V-9(\O[GA["J+8E"UNO.A'D#W9Z_A.4QYNZ792-32B2ZJ:HM=NM M_H0Z0)F.H8Q1:)[ T@TM0"[5__IR1*>7G^9?3NP\TW@!!R6Z@33W:6((_"(A MZS#+_ES+R4K<#4.V=W'?9]OQHY?%25K1[(WHKW57MG(KV?63+M%SS=-B^D\< M^7$3EMS,L&5;,:)!WM,5Z'T]XVH^O*G_JQJ;[_^)OCS]G6)ILAM3]OSX\&?. M%;_DR*]A^'_.1[^_/Q$T=2+XBTDG7__KY=Q_^- AQ;$<]]L3BWVQJ+D6,\%O M:()&78.FKB:;D#R+WOM-MD)YYSUQ;_HK_NS4^?;,IN-MR"'P5Y3^G]R+[^/M M2.WE4MY"+W;LB'[(TF;^M^.?/7V6L.;G#QTOT8Z^N7$O'V.CQ4__Z;G)P?C. MZAN*?"5C.HA^/*X,CP2("YW4+YF+V(]S^8^)CN\:,(;#&SB6'$QA=(A)-G,I7_AE1_WNE3&R@G-X(T13$-PS1*TK I M+N'X%),BNE&D J868!G3"AI*?SF\]<+T_;2/Y(]MG/[TQN,63:,;+OHER[?* M?*^?$\9"GVL).5%@\@>O1ZW-1DQE>MBFPS)9OBWPS5J)Z7,EH1]];7'MOL"7 M64:HEIO\4)#P DE21$97^F/RN1^SS_'E7#S_7+* YP5G:^[_K-FY_MP)O$A4 M\OZ5U4F*MARHD=2B_NL7NI$P&(,I!<,EFE1D"9\JFC155%3"45J9P81*4C)Y M)!KY2<0JMN%%'ZM5))%LR'-"+S5L9]N- [U^'2DR]B0DE]L17!&93:D2,5=B MJ4MH>B0YV!(C*^( 9J7>41O%#8JM*WHD2Z9&%B6=%72:(6&RM7*+*ZHR&D/= M:"3QZTA?LCV9'BQPSJBSM#F MYHDP/MS2<:ML5L;XN._+0U$)=8E,OYUANU6+G\%[3C"W#AKV-ST%9R0J/7+1 M"F>>34^WHH:N:E.260O5!B,5TB-5%._/Z.5N;O+EY6R\52!HXW=# MM(**2W&X=G=#9=%2&"C/J,[.F:N&8.$FM.2'5"AA" GUN1WNWNH ML)S#K,G4O%:1&.U874+0]- 2(FPE1)CB(LJI90\9UTP=BX9B)X:6!*K"C"9PXO#78<_%W6FG+D(<3!A&M15N.M%33YQ^K>'"Q1)KAIP0 M:M1*+AE6M$ ).7%496\FKYWV3H>A$EYIV8V.!<4[<.*L!K.9@.T=V1>%J598 M+>?[Y2Z>P(G#(B!RV"^*8D=$'2QD>VP?*L;0.W5:*Q&'BQ4ZY!H3J=U 2H%" MMR+LG3BM)4&2<7H1J- 3I]4=2!'P]1W!02/=*OJF-'7Q: (G M3JM*5)>D,@QWYJZO[]36N*"($:C1$Z=%K5D#MTU\PT'5NN0&=*&_PJ*YGC@M M;\2/9-RK,=RZ/O :J^Y :TC14T^6-\'8=PM,3UT MC"TT;MH<TX"V2)DR=WHXP; B/-$&W;C^1YH( M]X.27^_1KF@,V[M^QUTBI6(2MIH>2JP\KQE:#KV-\(QJR&7C>>B6.(QZ(G3A8O-\D MR\::B)XZW2Q7BX"ONIU(&S]QL#VO2/M"-]S"D+@2.FRA6MD&T5-/'*PBU(I\ M;VHH8D- %PMM:6 =*5K6B8-%[!(^5!L&!$.]H"ZOBMQ.+49//7&P]*:_Z>Q: M PC>V;4AT2%T?C0-XZ&I'0CX]J0P\]I5V/#7PQY2\*I3+AIZ"K$([V['UGXH MHCV),LV*5MQ$UP!V@@9:A*S .M1FN$:UYQ,*"5.>$]U7)VA V/4KXXK5H4RC M1,TGV%2H31%&PD_00!'UA7)7A&5S[;4:7:LJ-0=Z&%WP)[AVH='OF'!]: I5 MMS[5.L7IA.Y*^(F#50J-F-JO>PPDUXC!]KJ%. M;5C8%4**B99U@@9F3> $#926*E;J378#&-6'^ZY7 MW&A4HQL/3=WO:+VQ7Z(T9W&-NC#AMRN1=*GDJ4\7?&)/>596#W;!2%&UY)6G M?7OZYJ7,%ZMV1[4NUG"4@V;TI)@G>J0<^,[3!PGI.":MR_ON MT\2.+T0.8N3?Q7%3Q%?\U=I0+]2V%\]WHF?.+"=\,E$\_0S%1K1O!]4\C/;I MCQKQT4:1O/AIJ#SU'"OPM0NKPK\WNB%O,+K]L&A\T.:(?D5?K=\+#N+,!W'T M8+Q>\A#L^B>1/_65>K4 .S@(P(?N\R">^-"KSF.PZX //=9!(%_15Q,,P4&\ M[2#>F.#Y1\7@\U9=B'Z9LH5_2GS+G^["V]J#2%&-/_R_+\27]^X'_)6^+%$4 M_N L^9.#I#]W-2W7BGXQ]W*Q^(_M]H1_>LJ?T21Y*LGY%&6_+KY[]%WX3')/[LE'@'Y?^HN M'&[O.]F%S*ERJ4N]K?DYPU:]7.,NO7$B:Q MBZ9+?FZ1U([KS R_Z7C>B:Q)>([, LTV/9BT=_V!4#![3! 'JV-?OM-D'D/H M2R1,/@#J+IO;#5#W<=1A+U&'22JFT:LVW E-M%7&Y_4MPE:+%T+=;&*7E7W= M$3AH34<3[ @#=!DGDY!?OA-4'D4NDJ:<'8/SYP@E5S8^,.HB\/PD%3CG.SE7 MBXA1,2PM9S\+,/'G\4^*[,US*]>)NX:JN>DNYZRTF%AM/1T82DP#IA J@1 MNZ$IE*LT71V6!U4WD..,>NS+=Q3+TP@&#!^W8/@ <,RB]>/-<&Q-5M">TQV> M"^HN2DALU][!NI2D8"-P'L,N5(,16$2N)0J5M)4;$<]!%-*V*\WVSN?0N1/I M-KNVC4OSX<]?3798\V4EI9>X.\&(9;PQ*ROZCC:U&LGNN?:DP*YTJ1#+10B2 M1PG\@7C;58FH01:B/QBIRTM.=@/;&#$GL/)*H8Y-1+B%[R)E!@0?L1MFQ&V7/[OM@"NYEI*A9-.D# M]FIV+UX@/Q.]WZNUN<2;PX9(4:93UZ95)L)N'*23QX@+RE2W2-NW;Y$J MRFI$4E,?6*. -0KHM9\6G!R38#1]QRTYP=2?!1:C*-%6G^3)R#2@:BNBI9H" M8HW\;4L<2,LPKD0=-V\C+A(V^9@8!K:I.\+PQ4.=WX+A1L];DC-OR,'\9M2% MZUPIL/M,C.'86(5?,/3Y3C!\8Z:JDC;37%=3<[Z\/00YQ[22^^=4L[69X9^C MX>X#:+P@RNE]G/;?%VB7_=D.NP-^:DG*0%_><@?UI'C SVLML*$!/&"(JK@Q M&X7NCB_;6Z''Z7$WCMB;A^=1F+A( ^P'P",(<\HN'B_MBGLW'LD>4ZZ7T5U5 M7'=[W3%:8HIS..F.$XD^*)4GL+11Z3P-Z8%5*2LAWXF%Z=@OTM8C.O;.Z+"[ M$PD76)H>44O]S CQ\A, V1A_IT0GI3R=^E.UR>WD!C>'=+Z]&S!Q=[)8=*(N MZ+A[- P#2],=8?@SP\K_B.$RC14[ZWH(F0(]D^E&>U#J%!(,QU'EY$5*6P!+ MT_5$K8IL1")6M&[YT&$81$,!^](]Z+.7%8QBU,1U2GA;B'##SSIN7'W"WW4L MV?:Y=6"LXAH6IT2D2CC"==,N M5KYY-Q3G)JPO7<9MBKP<$1_6<@IVK1M#,0Y60E!@5;HSJ](ACLV+ \#]N9:; MR8:;V\A6D,@],0%'4XE():?)K@TY@9]SIM&Z$E(&UB9@;0*:ZH6%JF+@&;;F M>:RSG$9J:OQB]AF5T7>>H6J'^3"N&T,YJ1/V%)T:Z;F![?.SW_Q)TY /M(V< M"CE'24NR"8OBAG*W*8RVG?V0BZ0R/#%JZIH%W5]6BTJ &C80CQ%['/%9(BX? $';3AC#!=Q03FLJ>%G=J6<;NZ81, M@/X-3&%WPZXO*\ )<]G5BC&"V!< .L%=2YRZ;:!]IB :0H_<$WO=DP:ZA!"' M'#\/+\GJ9HQB;N@G'0U8&B<2N*]T,YI&\_V/=)XBT=Y=V:_52IXP<$3UA7!TRG M;?&%W4Z$5!2R.CV^5!WK$G(H"XT2>>*$$_E\X;Z/AF(05G+K*+ZL5^2=*%;L M#;LIMG9S>+VPK8&/,E!C',8H)@\HIB^:?WXG*+X5(\=1M*K9&\WV'=?00"94 M!DP:]^MWOD?AZ 5X3O!3GV1V#8878.A96D> =MI&X,N%X9ESB*BG3C.2Q0KJ>(,A]NFUC M4W$W$X*U:VYM DJT.89E>"QD1SCB4H/(_3Z1H=P*H$K$J/ MBNK/%KW>B6H:+?#09F(R\'HZJU8:56.Y6R:HCBL\(^E(7&!CNFT;4U* *1'# MX@C:B-HT-M/]'%GTJ6X)Q?5S:="23;--EMLY.W;+?E5#D M('<5T$MZ\^X:DU"E2X7],NE<;<88J0F@6$4'@T,6H M7-@&!-,M1OIL4@L:+5RRT.&C81C8J&X=PY\M9/TEALF6,YH7O=Z,6Q:+FM)S MNEO2[<88CN4KN@!L4O=BDSHF=SU12NZ?3[E=_P+)75FR+H$LF"QFP3P 68/D MKL2=[%K)_']R(KB!MI/55J T@0,'QE4FNZJK-WO,TCO=\G&@-8P!O4HJVVXHH)PF.+22%/$J!N\+W83(Z26O$I M.N>GF!WEM>B>I'+>4X=W5]MH=@!B=S)@7;G?2($[E\=.!0T\EW<_P:87,,1. M!4_ N26*04UHV6JNV%!"D_K#*);'X O*87<-4!#*SSM,_WTCA5Y6G,.Q@9RL&'9V8;/S=J4UG2;N$UAQC@,B2\4"J]AEK6(! M1_B2'.%]XXY>Y@CW6F$D3Q(Y?6'79+MC;>5J^KX)'($\3L''+@@ /PE3^"B6 MM$B<]%]#%B.)YHQ9&?I&D9',C/?^9RKP(6_>%@Y^Q$/])>SWB=EZP,.O@>HP M368Q238@W)_W^[*68,NYR;"RF:U5%[S*;;129?J??;3+Y5KS*E6D]H=TJU I/.=DJ]4J[FF1CWB<07#2A76J?SY\EGQ#W .9F!T]#2_D&JCAD%%#%34K MK,9 MR"8S,?0E8^(;<0T\]$D0[^W:.X*#9$GS!&!& O*G P=(';TF>'301 M*<27 Z4X,%-];*7XRF:JC&TJ&C)-9-:059\ O3E_D<^P7U0S[]E&-E->K*5F M1D^SD5%,W\)D 5.EXJ%XXI)E'3\U40:6JMLERBM;JGZ-*)/VMH!JC1TOA#=Z M1!STM'$[-H7)8DP4BX38Z"6?I_V(-/D);%7.E2&P2-$VR+3([X$&^UG2Y&[/ M0_\!DVD^(6 K'8C]C"Q8\*G).IP54MWP;)-J:V)D/I]B6< [1J\S.=-!U>U/ MDT@7\(P+6-O>KO9Q8$BZ@\E0*GI:""2P97TL M6]:9E+)\J9:N98.4L@\:8O6!],XOM0M?\_H'*67!]0_L+>^=4G843&V@C:YN MP-@B&4A6+&8B2F3=@586Q.M\FL#)ZT5#5W1MVD'&L@)A O5)EA#5&76*B]J+ M5FS1&2SV0G2:J9;WZUQS.XJ0*M=FKQ>,/-K:7*7'0F] M=5]J">72=B$--JVID)X"3<:__4C&+D62@87C!J)U\/V^/!3Z)(#W=LT=7RKY MY.-[G5IHY=!???):)MU8C^I:++K)"=GFP_*^4.'9E=(<1>(O :<@DN;#F&P" M$OY0..MW2'A87JAX;=W:0MF8R8=N;]I+/$R!A"&%/\I>C(0#L].MF)UT\IZ( MC,9!^:(;L#/=GH'XB^G"U[-/D2K_.4QW9_BRVJK$LJ5^8\K6'Q;E6DMOE;0* MYLND)'3\,H\Z?0':O:P]*J#=:X<)?\3#_%R6F@N@AT\""@/3S)?1ZZYGFGD) M,Y3+B>S ?LBU!=3-5EL/!5,?&\U1)$E#?@-+3&")"2CVZI:8ERAVQ8M%H6S2D!$=XNPOEE(M3M5EX0A_$$N^9TM-"HT'*TLY[G2?!OK%@"H2BL4O4]XA,!^],Z R,:*2D+*A!7I4!=E@ M3;+$';-5K!G8D/"$ O4UL"%];(Y['<340JIH(;FC=\1=_T ^F!$36LM@/BQC M-KQ"FDEF=\Z&/VP\W&<;?9F-UT?:LL&JV8T)SCD>*Y&?V$9N=]FX_=% M@:_4.'F^ZMUOZMM1E-1EYD_K\P=T'!BD CJ^XDMDKZ1C?=:+CO:#$MM%J7ZJ MN\JHB\4P#70,F.L4< 5FJ0]MECIZ9@-N*AX:_PX_FHJ,Z&UE1,,0\>=O^P#' M1SS=H(1T4&;V.N8MK"=G/7+,^JFQHHCTNN853=2DIY5G3[*$P\G=E,O&%X(R M%<-%>]\N\SQFZ*28-)<,Q8('S8):TA^+R(/,M$]E^GGN 8N)R]\N\8#%)X&; M'_?YKW=0*V^7HWU\V/),=?SS&.79ZO@Y+FE/K4WFGEU.![;QN+SG,V,,5J(T ML"G$QR_STN/7Y DW][Q7P!,^E2OP;7C"8-RNK7K%]D-7[!B9V72\B=4C3> ) M$'T>#\7/6*6":*F/998"^"=TF)R0;0GIML"4:@QY02-=R]$?A&:WU$M7A%JG M'>BF@0'J:W/MRR(Y8-GP_\+:5C:8%Y-8#M,R%,E",GFI6Y.//_"U;.#MTC&/ MEPPDFBB'Z'_Q[ZH-IR#LI!E8DENBA83)!$G62YS_H6&EHW&U:0G[^,:2:\.\ M.7_ :) 6]V:CH4@L> =1&[P0GS^5&WT]R:7$^7W:7RVE:+^K994YI FO H#"6"/'<*2H,K(4? MS5KX BA$FGP!./@1C_'WC841S-]DW1ZKZ%W8^?]_KT\DKXV)#Q MU@MYEVEW9H@1)4E?XFGLP3*HZ18>#ZJ9X>4H^ M30U29E6A8I/;&#)F(9#N M-@<)RV[8(6YD6O@#DO1P]WX+>H,+)2N;'__%_[B]2"H2#2">F3.4QT%A2(=T M6/;?;T4+P4Q0> M&TA[J&[%O>E*D=1=U!,CWSUQ =O <.P=G_HWX_L9MN-D+Y?B+NS; M,8?!A%4TL;X[7W,_(R+"^U W%6!SWPW(DUPL^8 6,9H])NMW2ZSD>8.(&? M =E!:@--)G*NJ?B:JWJ\T^1J]8[0 M[M3Q[^UZI91+=X1 M*]R%9=CH0@+AI4WB[IB,;<+#G1AS:C)3-Z:BICR2R5_BUBD:OC'6=Y)"\_RE MN_X=>W9>67V)M5"+:>]-C*U-(GF8DB;=A1B1R6%1O@6H+NG&2J=''F)6-'[8 M9 #5&VB&-!.+>V:)(%8$M$&RTTA%$NBC^%>XAT2+Q/ ?SW&C2,@,,5A+Q"Q@ M92@8W*]$5=UC;0#"3G#',R1"XQ"SP9-65"?I&7*2EB!4;_/\A MJ-@,WK*K0<%?%F,X)63,,MZ^(1W^46=\JB[RPP,N(IF+6)PT#F7C.I+^T)K>QO%8FF&HU M*RU)6/<%9M7 %U?"5[6#)Y!129U91S36FZM=H5ONE=EL9IF>/B0E02RGOSGE M'6PDIZT7VHV@&??N@I2_8]KV$K??@[[HVP'FL 6,NP>$H 734I; E-Y8SAZK M],DGURI,/GD^J_4Y-5G!G%N13E5(1^\G@[&OIY?KW,LGMV]/_SV]@<9#FWOH MKH6$D*T+_>Y.F.;XV*7 V77/Y]L/LA=P*?U4^A%XUS7FU2'V5#"S&LK29T!E M3 P@5)D9PZ,2(DGOQI=T;FO4&P+ECXF G2DF8!\ *%F_<,Y[1MGVH4^*.9Z(V\\[88W;NE/')GW;541_;KC'8)O 9PR+#=P$5+,I,T4:UB=! \#= MHA5\5SP(%4=#4!$MBN3>Y4/OBD;]:*Z2 $>H'! \>13NZ"R;5)=8K3!'(190 MPU;I96VAJ4W5#=JX'1XX7@D&7Z4[(NL,X&[J/N3X*LZN4M:! -R[SN"UD3XF MNFY1PC#0VE9@!\;[7UL^;+N*K&?&A76]DK*/;S=58Y"JH V=KBC/;=.BO6J8 M3$P31#_,0&0FH-*L?-SVX+DYPVEFX@:Z1MJ!],GV&\3R+#+4&NTP#TS91-/2 MB*6!JC-X(%NE#_WIGN'AZ"[0V"+J58)]=R>L$*52QJ<,!FGW)-W^7(8PL?%Z M)PHX20ESN&-N ZC?!M3HPO,)'I8[@-JNVFSW&L94Z*.',<=%^P]UX84 M75KBUH=@ S3A%DBK84'X\H(K!\*,0Y18@=< :,M83#"17 'R&&6JE.\B]@8#,S\ ML#Y&S5<[J(3MC"ACYJ#JIDU?C)B*1 3XR_.=[Q'DA07@QN4X$N',LC(!PPFI MJ&S-=+Q$;WV4X2UUTR)I5JZ*=5B_6XM'MXUG) #)TCI:B@3=8=:JXP[)L3FU M!3T)Z1GH\!Z82)W@"X#7BOLF3,>J2H>/ MQ3.FBO/M+FJJN+8,:"'PR!Q9-XXV\NUY[\],=OX)WY!0^*_R_#1_OHU,#>.U M(<(M9!VD J;80,Z6-+PM&ZJ:@EH:HHC=X_>^W70C%4TFH^/_>)IO/MW.>*HO MUHHQ[3+I=I=T%V83(5?);:,I89LMC^/^U=%7F"GQ2?;O[TQI"=X>YZBP'D6; M$:7)_6;N(!SO7-= 9Z:8()7(U XB';PY1&_'/3DR%848HK;A_R-V .(*<&#] M&"P[H2-):#J#>N+9FHD60]_&!-7-P ##\4_), IQ$LP4-"&1E\0VL!07R'#& M)8E$QKYL@WP\[BC>9043X@JH!0LRG M4IB^U%@2]W0P/7"QD'/&_J6[&HTSLU_J*GK'"&0C1)D^T@!36P$JLO"ZB*9' M?'I8U<*+PNT0"%[B<:.Z,Q:F&$+XUT:$+%'D=(H]?(CH'V:F;S'<,.@M]4Z= M? >T,?(]"/:C_3H]/&,J<,.(0L^H?0!=H"CA1-6W;QH&^&$YA7?\/DZ!B?^4 MZ%,>T9.L >'/I/1$]1^^'EF?I_&A;_,E6$_(_HC*\FA-@W(NO)0;P(K'W M^S3 E>>#0@C( B!,Q!#I+;_1M5Q3W. MA75@_3S[ CS!P%6&56,)YC<6$-9U4)09K*7*1R$G6*]%!H2*N.T\53[L>E)\ M_?D!1^H/ 4?4O6,_W:V[5[=\8]R1NF'<\=9B_D-XM?_SA,8O;LAH43,6/)B2 M=6Q4\'9=UC:Q6$;&H%] MFLZKCUP[YR/R3* 8SAJ,A7NE]DC,'("R,2=P0Q$I0P9.!8 3F E6/9$D@O'Y M+^5O-UC0E8>Z;6+>A>^B9DZ085(9@I50R;F4I#O=6("V.,7,Q"3A:UBW^TO! MG>&!"%\B3P9-YR1]$'& MQ@)E!:\-F31T#H%"K$F8XR%,/OB[X[UG] 6MF]K,J=R65%@YX7BX%6P4F2=9 MZ(H^AD%VDJZ1;AI5MH&GDN!+/&UP/II8'@*PH6ISB'Q+1BH65S2*"'\NVY)% MAO(.@^REXS]U.;BHX@EJU(D'I^(H]DY 8J %'LW+GWVY,E"8Y%]BV9QWW)WT M8$Q&54SB%QEC CGX/A3S0$(R6&#POSK5OO 4X.SIP9&;C0]B2VQ/CE?ZH)2Y M%X,X$?0QUG!$&BU+0!4)>_4U7B)KII,KY!I=7AK!0V%S6Z9V&6(Y,8]G2SW( MWG3.7C4=O.2NN8@ E(.;"NZ92(@0*QMAXD-1M)5MG9DLT,C)A.$557,B2C_? M%$(7#C1QW3"89A4+SPZ/*B-,YA:E;9?K^+Q8KI'+XPI /[J$.8;+V C[<-C) M 031D>Z8+KY4AA-,^\Q:0[]P_/@8G&UY>AO@BAKHSP)[[1SX0VP T)\,5A! <<#CCW/A+/D M,SS?B:U.B/?)"?-0,2T9$/T--CSB-#/ML;O5NF&2=U$2_]!.0XQ..+&,K[)D MN0.!>Q/X'88SGHT#(A@.;2Z /3\FT\N36!1S"1+=.357LH_=E \L!FF:P;&\ M)V8F(H<.<6A$]A-;+VE%8_B11KV@^+JCP[ML:*>8-)G!#T%7P4HG$T#QALKH\A)>-%_.13N"8'-OK<1GE;[X78$+X"(((R MW,-Y+,4]$?=X#Q>:OM7(1)YP8NV$^Y[,U$TI>2H)J.??W0,/@7EN@J.[ 6D5 M#G^AK.CH.R2,R:5H>IP'V @F3+>?.Z8.P,G90K_S?45T%ICDQ#8<#F#B@W4< M^S7=0C0L*^)::UW 3P(&7#6(N@885Q/R3+)!Z)*O:@8F1L6JZ*;IN)'.#/6J>6L/.M[NH"_R7DSQ^HDDZ;D035$FD M; A6!]Z5QN)G2^@9Z)SN(@/;&$1"^31-ZG1TPC@Q(W QAAO)B"&%@YLP,R90 MAFZD2C;28:M.#I.KAZG*!+E"[&";AZO X[D$B??H "0_U %=TI%!MN;^ MXAZTX1VT"S\.GYB'S#@PE]%![YCTZ7+A\$21UIPP2E>LR-<%,\+QD=3]@XVCXL*V2;Y(:I!)W. $K1D,[@ MPAZBS.C>'EU&&H_$DGS (?3:XCW:8KHY[!2Y9L_.$"XDOM.J M@N=([2BA UW ](G34U46"(Q*NF?L/D%G1'4VD;\GQU1-+CR9E.]0#Q$2L(>8 MUXA31*A3=-B5GXY.;"Z^0>Y\<2?.FB05_T O 4!;PD=O,6GYQPV'DLFL85C M.#:BQ(I+1C_F@>3">]JB0QX0&[(#8YI'!EZ ) :0<$B$H])S):6-(&S2S5D! M*P+6',T5,#NR1OK'0R=NS&A@ROH!,(/XWTS/+.(Q%$KO'K;7 #?J-FY(U6N_ M%(3OT=PE8FD\0QA@W/1ZIA8.?T"M@;2IY;&]8RY"!"(RH&:5XMP.8)%/>A.G M3B%\8D(]7#%Z&2DJ\'1\P@"4F4YU-,"DR=>HH)_A./D/2QS"4ZM*NGGV6;,NC2LB<51'RCIP2S M*>:"&K!41_PX:2V>Z@K#S\(_R%[J9WP*] <&)XAM4!N!L2,B!( M>PPZL,^&X)D6ISH!F**V,.P5O6L:%FVZ-@6/ B*\#> A=12X$3O>J(XHM$TG MA^Y@D@@B=($+G:A$Z+\3%M;%PKC23<^US/I226]O;>UQE\><,?L$ M9ATZK^X+%A,*[!V+AR?+J+1V;1R8Y#5(:R8^-?%@3,&2UO$3>E8.UY6NF,=V MD#LF?6@$@ VC-\/S"!R;3!0,+C652MH5ULE QW/-W(H_R1@!)O2&=$#"2>=X M45\Z;8H&.W?$W7.VX81:M2J35:HK*%NC)B=D/1493S\(_?N#O@-Z]ZQB0$]8 M(SKX#%^JKP5JTD8Q'&.C2/+&)]:>1FTZ]J_34%*&%JAPW5+VRO'"N_+?<48[ M-H 0F"14#!9A> /IDY#GHD1 K31'9B,:"NB^9&1F;F.=0%:<>@?$ZD"S3$EL MI3,-IT 'U#JX8WPZ3HBH,084%5"(.],UO, 757'K3C_D!5PXF:YH2E5EO'T0 MD!G"NM$AVO+L3KA&+#J.1%S=6%MRC4?$ZX:;8IU4M+Q (U]R)^9<7LZG9SJ$ MI!D\087P:&*A"GD[#KDSA]12B)HX6(R\"-OG\H$A28T&Y\*D7-CF1',]R7-U ME#KY^-(;.CR)V'83LD9WKE-#/=O ML#$J)G+GHR'+-W&L@F..8*"5;>"[3:[:^?YHB)5+A1/'!>5U[ ]WP1?;<3%W M#.);VF,VAX=QLWNT]*GB! .3:DG/UJ0#F:&G'@SEQ$3"Y*)2-E>MSX"[A8J MP*A>TFGK?\7EZA_!RSLEIE8L9$@NA$,7&(2"'95ZG)PP+K"L.-C5%^9U"/5P M>*W;A>N#!(HDQGXP084AAM4?V-9W,+D$@1D:=7G@[<(=$_GF[<>!0CT?$M"1 M1\,AS\A*[R>DH1H>KZ+"@581<@-F)A,:F3<#$QX6PB"S@1)QA[+[1;H?SH8= M;Q0F<1,*)+BV1TB^R]J.@+K7QR9AD'_Q+).I4OGXN(OR8:QJ@8[C<$L6X^ ML.U2,U9<=HW-4FO"&TB).^[DD10L5(AD(-S-,^-3*8'9MA/F!,XU,JKC09LP MQ_6PS]M';U&MN W%+8\A7@\07GUR)M+GJ15'R7=RVVT^OUR$>=[,QS#TEM7F M!]'B#LY8WP(#=3R'^E$,C7+8+6KXH,X2 BD\;($.CR:%7ADTXVN' MR=T+H2*!/ <'[\HIC$HC)SW_/SAXJ"D&0.",4B3%0*./;DW-*/<&F>QS@.=.-,.G%DZE%_5%8S^^; M7&4PJ-B5CV*Z+6D;Y!3C"TC=L]PX3M&WAB:_\5#CKV"1W[C3:6)T/HM.]&+^ MH5DKM6J+^ER6F^9H4D6CZ;Z!(I,F8A::;I MJC[=,P0(.J$L/CY$+-^*Z43WD.E[Y=<\1NC7-T6:PN H[_Y9')>%=;0)XJ9A M:KKFJHUI8J=QM=.?:J:'\3<*VN*_KFW1P--3]T_,2G6XL>6B MMO>U].(DCC197U"2=;RRUSJZ;Y62WS>]]PD7+QBZO1KIYKPI/H;U[:*@*;&J MU6Q80VW[)#[[I:8W4E ]XB4JO1S8_\;5TV_Z)9QG[V[K;'8BB5]QLW,/B7Y+ M!?@7V(F/T_T@H<;)GS-\@8CN1A,S.UBD:;H(X6Y8"8941?.,OPQ_W<-Q-)C+ M20,BM2%H 1LPO-':U%1-APR1DWG=,6W,ULTP=0[0.A'@:L3?I1R17 _'N/"6 MP5D?1+D@7NX-X^5>@_I^#2;R M5S()]-&1C^,X>%XR@$EP/8Q3EQZB!8<\0J- MF!Y$017M(8;@R15>Y?W;).]&5H$1K-#S"+@#\29P^1UXR$ MM6GP-?KR=)>."@@ C58](7_;&E"/"K-Y&P,RPWD+T*W&[2^DH-,2*C1G300P MAY5VYY4+LO:O",8.Z5"'-RX@?]I7HU4!;XOC&:2RUI^U,P;80<"*X190H XG M[T9AP:T;GH7SY/PQ0M(8@V1^29+H./O);?!/ C"8U^-I%0?BWMS3Q#1Q12QO MC^[#%%YJI9>BZ:9E'EU\-V?N525"SI3,\.;F.CS)Y7=V]5 DS4F6W!_-D^XB M=G]H\O1P:Y@P'^N,H,28'U MYP2/D:]"$LFYT?8N3CY?]L%QO#LI:&ZU$U*)X*2F_W%5E+\<]9?DJ6%% 7/$ M,8G]5/4M')NONBI4A':^NB-%2ER^2N8'H66'A&"OVHZ?NMQ ,*,;TGGQ"MP.'PBN/I94BI*>=G MKW*.8R FF@'$V8+_UD (^8G2<0@. 13?9S]'^".TW7 MJ."\G7/XWE*7O><03)^/2'2_C\_/E/05(N*62#=7?#GB28+*&7B7I_1-(;\" M%<+:G^4EN/F?]G%"C#VV*Q&M;8]<&:NAJ6Z1:#;,=,GRG:TB6(+B,LQ"O$WS M5+\G^>'PB*SL1CZ*4(^;EA@F6, )L?.3 ^:?!HE!<9,T,15CBM U6KN'7/[C M6!%:0@@3J1O(YVB*OHA+3[ [T8Z$XYZ]2X>T6O$0L$$1@K=;WE(G<,\GF*@H MN\=[1Z+&Y*,%.43D>./<^$HR__U1Y,E1AIXIS?#HZIL:?3ZLM\>]4X?D7-^+ M+MX-?((LM6.13:^XP[J=>E:*Y0>@3O+=$;.#HS9,&L,CV4O;"=I]4MR%&"3= MTJ.D_M8!HGJ!I-;^)$(4_O[<]$F&MZYN"/W9AN\=F.?73-ZK0?Z"?K@MGHD3 MV_7"/I[?K4/*K0KD12.HP$H"\:ZF2\4D&1LS>C"L/;W\!%2IQ^^T_75X6##T M3/+JWYZ#R2LEB'=O@RG-33*TJ6T+_FS2R&U_L9]G]H>DZOJ?'J(5DN W]B_A,>\_,R5?(+7Z&J_'&([ M.%<.%2.HS$4G 8:^T'&/%-Q<6/'PCI&?I1^KK<](=2@1 X7##FS!_W<77P"B M +7T)8D KBSH1R+UAT+84R%9RHA*G2IS1!4<>M.' K].70!A*0]0SY_.6=!VYQ#?'\3)N@G1+P<:1:V M5_31DC>-3_X0%':(QW"JLH(%#[G5SBBQ'-@MR7@'K[RK.0E>\22+=.!6DW2+ M"/D>>:-?-%UO'[T0-"09[#.^,H#/:%BTL2?^, V[%@D_^:1-8BBC$Z0(@9;3 M/3.5XZ$'WAJ 0/3M,R_ M0S1LA;B__ S:[4<$ODK"5+ TQ>J4[/JZ&(!XI&[QDFKTSN=_^]*,?-C?S_JK MA_NPA!P5^AZ [XU"_W7SOQ](RH6Z ]'2-00J48CCY()11$8T=<=XZAD:GM@7 MG*HCOF^3+3H4(R66+*^L"?'%$?W/>5#V!7[JGH*OR)G+%6FA1W'JW"G"NRE_ M]D8^>A?:M,F%<0P87IU3.+H#_3H*[''UU#/K(W=!63JN3PA3(NE8(*6.%6!R MB/B(9_ B+GT/D0H%?_*09_?X>MP[J>/+T%W,K_$O!!2(8\+=S% M#*$3IN(D(8'5EZ:]X:UVTC9H\3R_-#X\,NQ 5B=:RX-+>RC*#M\E-4+=M"/_ M[,"*Y.CNY YX!@J71?JO-U7<74V)E/@DZML8JH=),)>)K1*[&>YC2B=/V1Y& M(\0MZ2:P>"PG=.!;!QL= >^.[P7B/YX32J0.%9AWR4#.#IXR;=\::;B*!T_ MYOMTFV7;\*79',:E184WB@S^\&=F=,=4E 7:*O!$VW.;Y51M?::Y40K%XR-I+"93LAQ+),7H-SHJ M_49'&JV6T6126O;N!64J)6=AKI>U4!JB*I^V9-?MW$,B.Q46Y7"QTK?G@^+< M:H[X$?NTY8-=S=3W[=).6$X7&[Z4%289?HI;GO2Y,++5<'.KY;KA03-KB/M= M:AE.XY;)IRVG$B>75IM)95&?M=K[1=$LC3?;4>1T=+1,[VJ]2,T6LA&^VAT6 MTCW%2N.6)Z.G4UQ[L!H6VRS*E.91ULS<#R/0,OZT92J"PMF]UE6ZY=%H.FU6 M\\,1"Z.?S%,A0]75)4RIJQ>C0O=96VM&B*B5HYID]QRY.)=HP6^CP=/M;-=G>U]:;<;AH@V)9EN/,KKBR&K*M[<(U MO$^QTQV5*]4'JU7;5-C]6HNI45MKQ WH\W1)N9JLI<=9OBVT[73GOM<,2Z-E M+WZFES"#1SH078GB2R51RO=*@ M""U/^FPT[,P*+[_:+>@1,S5O/EJI\A2W/%G2;K845-0<31;]7''W\#@7M='] M=I0Z'7U6:B0?S$DLW^6;D?9#+%(JR_DT;GDR>K0V#W?RO6:>+2AJ)KG.#H?A M&O1YLO6U=3^I]32I(Q2LD58JH_JF6X>6)_,,ES.=AK0U.FQ]O!G5Y&)U&\%7 M)'5FZQMR;];NICKJHMYH)>UJ6).:T^F(8T_75$Y$V<&B--FRJ&]F,X^1F+&N MIJ'IR50K\7(FR.PL\%=1K+V%IJ M[I8[PZ"6D:':5&>#Q7)032Q*E79++S6AZKM: ?3 M/FYZ,H-VH\2MK?FLV+4'Q>ZC%M77*97T>H:EB(M1+U\NI-FU)>T&\;XY&/;Q M*9QADT9]VI8&VFK0W;.2FM\OK-6CW(2F)S,PHKUH8M/FX@L[IL:3Q6QN-VR2 M7D]G$'U,<7HV6I#9?8 MT&[=BY5&I4B-%<6DJLY2[4&_B=O&3V?0ERS++I2RS6YYN;?2NE&:J-,M-#V9 MP>-LLV[O%LI]M]Z)"%FVO6\7'IK0]'0&@U1TM7XLC4UVR96D^TGCL5SKX6X3 MIS/8H$CG(9&;QQ=QH8<%5BLJ)T>DZ+++]Z)$U/ M9S!-JGMMLBI,A?J@66AHDK6?E7#;,QPV+F;SED) MF[,UGI/9-MHM1#8W'787>J(Q(+V>KDMN#)>) 3<;LRAFMGL\%V%53 L\>SK9 M9JI9S6:4:7BQ+N:0-C+7K!SE6QFQI KA8;\,^*9K1=/0]/0,1NS0 M#'Y']?2*ZXIK8Y7>/4RZN05I>C+9J5TM M)_JL?=_E)^%:I)^QK'YQ"TU/9Q!.[';KS6RY9O>6D:BG]]U.NX:[/S"#7-^J\*B@]?+1)+KO-6AEUN(6F9Z3=$L5S M(R.^9>-C^V%?4%?:LH5G<(;+K6)27>#ZL>6B'LOUTV+W/C:7T]#T9 :-[5B: MZF)LL[#YSDAFL\-P'C-$_AR7*X4[T6YS6)^R_*Q5D!_*SGU]':59HUPP=J5NWQF6BG<)PM-<4'FZJWKMT)Z^5\- MZ8U<)M?K69L1S<:FEJ.?VWA"3OMGS%I.2,KS%I\CU_,Y2_ZIW>X/S':'A,J7 MW6$A<.+1$BO^%X;.^J:=C[R>#BY$\@=G=22>YQ U0$-&:0>^UW_ "/SS5VN? M<[:@DS?I+/^ &@"#[Q8_G?:#OR M$SDI<"0_)T1C=FE5*,]E"ZXI WFAI2]X'8X=MHK7UKTDI LH6^F:)>6O9[@O M.94!%0.<:#,#052!9LW(H4 F+B$/6A@*"HJ=B1#QW"7/6:9)O@ )^:;TH/A. M SR@4(;0.1;7XJ[N'2Y"_*MTR/&>>66F_LHVT"@92\T+F>[09L5*0I&KL1HO MLL]5$?JU).1#YG[D%8G[$SSILX\/'[:K[NU6V]VADM9P]J9!MJ;A)9)Y>?QA MWI?(OZ]TXOW*8U[OBA%MWHKW^7"\,OWV(WJFR-"_R:%>>C,C_LV,C.0(2JUJ M;&.[X*OYZ.Q^QV6+F1O=3%GL#S++7FG,AJN)[BS5"X\&P_2W'_P=?[J9KTGC M#/DJZJO[$ W#D[E/8\>>=?P?1(R\KA,@(ET5#T4T9C[QQQ<(A0O_TW4;?6SVN.'@^0]M[ M"FI+OX^@^L&$1J3"DX<,Q[EE/]I.PG/I$%3CEOP@N7'RH?RU+^S&*ZD+8)IX M>PZO4I'"'MY=04=9RD^622CU\-H+EEGNLT*AHX>WT=&[5.Y3DDZ*..1FM9'6T6_6Y=7V648J[9/E_#XWQ3K+4^J=_1 M1FYRBW<;)SJ\OD(K(--G3V3\"11E)0VP-,$[:O[]_32->O62,OKLC-Z*RH]= MN+]:^>MCF-"[ ,=V+.@!Q=MB5[+!D3 M$# =Q^]/0PR<7F+<7>K??K;I#.>R4)\'V-<]A X!T;F;YOY.N.IWZN7?XFWZ MJ7/="7<@ [M-Q3'FQK:%+NQ5/R]B2]@A]K#R1=A0__WS>._?:;&Q+E[N)Q-_W- MS0'D5CN&^"49-[/N@CN66KV0&^@,\E+U]@X)M:G24!M!@^)6AR>,7?C!PN?!5^;<'TS1#_OR?K]#AE M]'<9)9>X2W+O?@O^A%%"&$' #S\./[Q%(DC=Q9(?G0@B 1%\52+X/<'ORU20 M)(0FDZLNN'J(Y'/B\=[LW*Z[LE^ZSE>YO<1Y\,['^S]OL X:L'#]A?@8,8D1 M\\?"18X*NKPV1/Z7'RT^'RQI&M:H0:MYU0T'!*=WBCF:*+O1@: <>JJ2-[M' MI>H 1>?174M8JY'X5#.]N/C(-R_AO5ONB?>U26YA MQY24O)WDQ_<\U-J(?/O!A;AD+,2RJ9/P^+>Y\,EWO_'GF/0?KXQ$*'P&"GBK MC)L+D2%>$/)S;PN>)(Y@"ME+Q60WQA6T!<].8\E(-1TV&E Y)O;M M1^+<:]]OAN?>F3C^'0CW0+B?\ZQ_!M[VN]+]2?[;;[&V:#>G+QMZN+>H=[G' M38>/A(?QYB6D>TW;#916)AWMVL-RNSGB=FEE!+PK]>U'BDN&XEPLD.V_[$C_ M#/?_K1) +T0 5Y+MM4$CFU+DLB;L]<*#JL[O,XL]J0K'8>&>/),8&@CW3RK< M;\V#?7)BPB%O\JV-+Q_QO/X0C+V?V?CV=L2QV=R,)?T#&7 .1'DLX=I+E(XM M8M6DL%Z6NETE4^?GT>TE(%Z-??O! M\W<7L8!>W&EW0=#WI0@_0 S/&8(^&S.\AE7H.5XX'^PTBT_/*MWP_5H([^K] MQKQP$9]/CD_7K.(L7%DL6\F'C1BQVZMA$S.[%&9VL7B(Y2]H%?I2=$+-19^- M2JYB._I],KD29."BJTTG$S,6W79F&=[68ZD'U@(J ML1S]TE \SP\3'#1XS2 MZ9!"G(%][\+.NV.V'L%L7=9MJ)#T'E'8%PW=>>^5W@[.^^52HF\%V6+%AY$V M'RT77:706'5M)5)0(_ L"PG3B442(9:+?Q97WNWQ@.=">CX?9=Q>E=T_A&F" M.FF/6KL1+_!Q.SU-U^=S)07/*<4PY;#L'1NX^ (($$" GP7XO/=2;P<#_'(% M[+?" ,7>>"W%K7E_42]N6_ETORGI,\ *1*JFXB&XM&+<+, [P4^O/Y*./V MBL/_(0:(1L75?&^RR6Z9U1XS#_58MAP!# "FF@ $?"D0\'J+SK.,X*:*5WR. MW+K;6_)/JKE]PA7_K-;L)USR%W1)_:1^ZB=<\6TE1P?\.N#7;QJ$\;76_/48 M]D]J-W["%0<,^P,M^=;R)H)*)4'EOZ#RW^U?FR]/.E^F\E\''L;3)XQKH?TH ME?_>AXL&50$#7AGPRHL02% Q\,J!Q'^RUF<*1WYY4OB($8N-4BJ0C8I-Z+W=;&R M%B^2I2 :.1KG0E'V:\8AO0_."^H-7HM^ MKA2N5(G8^VAFJ!?9>*>36PZ*CQ%> _**??L1"8*5 FSP=;!!4''P7-+L;S"W M:6N4;^L9L['(UI32;+1(ITK#BX0II^)2-#?,\,EN6TNMU/A>DU,R<*\4YE[Q M>"@2^YJ)2N\##H*"A=>BGRN!@TBM+V?FBTELP4NLLU-,7A#+'.&" MDH5?!QWQ0CMOZY+XP!>J@UIH+XK&/";Z^%$%_ M/0E^^:CTVQ+AKU:[?+>K ME*S^,JRRZ?LE$>%0\H^/A_CH!1]Y^E+W_]+A^C=ZL]KKR\B&/-[+3R]U+B?LK: MV=8F67RHR>H]!G$<*0(8B802_*=YJ?/V2":(LKDBR5P)^,UBDV)[.+(7K%A: MM'=J.SF=S0A%Q;[]P#PR<*4%<"* $T&4SIN:@7["').QW*2^S3[6NT@<#PL- M)=F)[RYB%*I'A.2ZV1B.%N6D+8_$\6IL9]+ _:"@8"P52GZ>UT%OCV:"P)PK MDLR5\$0B)==B:3&V9>THWQ/GJYKX0/$$,21%[BY"3P&BN!QC^%3A.()L2X0" MO[0=,/#E!=$X?ZK@>I3D2*!1OICL1\W4L-M>S?)6L;Z*%'H7 6V/\9VV>)A. M"@NE_ABY3XQ44:I@T,:[1J!4\B+>BB_HR0N"<=[L]E\)?YFSZKVVKN;S@J(E MMLV*.,SVTDT@CDO;U(OF2Q/IB,N0LPP+!=*IBZ2^!'XSH)8G*L2S)60WW:_,*O# MP:X@B$VMUD7;_!:5TD!/L6\_XG<7J1@1^,T^%5,(H$00B?-K>O"+K+$N\*N& MO=B6V? Z.TI5*NG'1N4B)J%6,UG9Z>U"9K&7HO?-QO Q4V<)[TMAI3<9XE)! M&$X0AG,#=J,_I)/&BMR[+S#HX3&:P2:@Q$I>4DC4H E;HLK MW'Q$3@M9HJ*&F!8R+1'3I6:9#*9G1H!BV?A/VA(3PI>V%@;NOB!:YT]58$IE M/AI+:_(1A3DB;&]L>NGJA(MT^_W=KA,S>IM5[2(%E&LIE(PUTLE5M[_CBXE4 M/U%KR%A&1<%\E&1#L>0%(=^7(HH@B.?B1'$E7!=OI?A)O[8M"7'#0O'AK*Y7 M'@G-Q+[]B 5U=@)I_[56' 3W_"EG:RZ&S6X[+;+(JFRUT4Q*Y3L7R=SN##>; M57[50UUE'WW4FEJN6QZD@76EOOU(Q$-<*BB@%\3\7-1V\W9$<25QG^2L48Z? MM!\QCZ@)D4WROE<6",V &2=^R52J0-[?M('FG:UL!1U/\6T-,Y_$W!:X[H(H MH.M8= XT^,0+D4]L3%26!GIWOQ:UM7+_$!U+%S'A*+/Y8FST34'H5Q[7=6[Y MR-826!V-$1-.(I1DNP$97@"!!$@B"#XYVVM1,^RQ4;Y82;.$X/& J5C^W%XVMEQ]8L$$;=R M#^PJ(D2KB_#$LL5:*3U.# C?2V$--QJ*!O5W@L"?6S >_0&M7*N2WR@;[K'+ M-"O$=QJ2ALK.YMDFD!)8BV)!X9VO@R%N/NBG:JN6$LZ3GDBT3PN9"EZ3I8CJ ME[8&!MZ_(-;GCQ]X!N*BM)769!]E.1(K$T])[<&PK+/B%@GS]3XM:=9%#$3+ MY7JU-2)AM5N62[&NWA:D27,ZXN+DV2PVE(Q=T$#TI8@AB/&Y&#%<";[IV<>F M:)?&2;8^W*G9GL0F]?46:"7V[09,7O0[ M;*99E#(/0N(BQIN%T5YVP]M9K!N.B>V$'ELWMD4BWE-8O,="+'L1KO4%Q7L0 MTW,Q8KA679^IK&\[V\A@(0ZTAMHM<+'N(@VT0AXMOTL&\OWCR_>/&,M3MV;( M" QH%W;"C75#1D:8?OT[M]HQIJXJ,O,OEOSO:VW2LV$^[[A+MX4&7Z??.A!M M1$CXB5N"'ZC=Q*"27PKETFPM5=N[Q7!SD=S]3J/?'?3C8ENHSX8[+F:.FQ$9 M*ZX),/)$N% J'D0!73T*Z--1TH5-17]&2E?"D'VE5ZBA.9@\Q MJ!"4H":B"Z9_!0Z^3\(O GSR1T%$GXZM7M9<]1)7S73RBXB<3$V[A78LN^>: M,M;4+V*F:N?N']-J.)Q=K,>-[;205%O;/0$H\/)[,L3%+E);+0 H+\48?3I* MNK"QZ\](Z4H I;(=Q5.H6EPM4'\9-P5#'PBU*5 :&+GXH.[0UT$H-Q^"U-$M M466^M+GR#U'D$0>/8 XNZ_981==BX4<[\C]O9Y9ZYV7=#L9[HCGWJKU[N7!? M;R["2D4VT=;8A.\O4BN@E^;+(R361VR6E5?YI9XR)E!9.DDJ2X=BD42(Y2Z( MV;X4+5,+TJ>[]&]E+_KYK;\2MC*J/*1(RBUJK&-[8*OYJ.S^QV7+68N(I,W]XO-HEB( MR^RZ@-3=>IQ$RVH3V \\VA7B$M%0/'H1%O0%93(UFGRZ2_]6)I*?W_HKR>35 M?6V44]+9:K?^N$]OTU9,6LZV0!3DL?- *'\.H?QZ6\:S!'UI\\;M\;"/>]Q! ME/;MY&#=WI*_(!RY='+1[:WXXA+V%I<<\.O/O^*+9]7XN?F(D M>\\P(K C(>/)%HZ/!O'OV+?MG[DLCK"<(QP#+C/9.6+&6#MX3I[%?HS6CAT]P#/PN-_BX' MY1)WR9-XEP_%0<%!'S#*@%%>BD!2=[$3Y_-'(Y#(1R&0/UWK__Z+B[/_!++B M,^2DP[>RNF9:ADVM$7W)4-U/4+KVC8)SW?00W*^%H$IMQC85#9EF M&TWAUT/%%+Q6/VDY*21"=?G0&L8?,PM[L9ZE"Z5-=Y2^2$W RC(FC8QB>",@ M*S?,IFJ#3M%*CWB>/!J12H92B2 =*W@UXEKQO9 M[,_Y!S%F;(&NX 6)9%#^.8 '7P8>!*] / V9_%,VMYL.*\(JK"87_06?S\1Z MLVYC?)% 8R%[KS7J#_UD-SYQW@-K-RIYI:XWUK$$EE,14DXPQ88B\5209O8AXKIO M#-F]+WU<">:UY[%[5#6%AL#W)\-)1BG7&Y,FD _4"(Q=L@3/QX1T7XKBOQX& M^.+O2+PIDQO645&N#A[#0K_>;O>'N=ADL;Z($6C4*,=ZF\3,$NQE2S;G?#'^ M*!,NEL(@@$V%HLE( (^1*[ C8& ]Z6/*X& Y"S?,\MU,=EM/\:X_$,K4PWO M"(8F=?CB=Q290:6N8_KNKN]30C"@GY; MQW4(TZ5+1Z+UC7NNOHB&+;8M;J(+-9=2V-1%$-\@O+A/Y-N1'EL?E6*1V+UB M"9'I"*\!:OZQT1#'741U#=Q^05C0NQ#.E:"@J$03?+@PK+%AQ;S_BEWQV+'#Z?1+F$$"+(*3HCU3G\RRRO.JQD3*;BW77PEB=]L/+V?XR M+J5Q,;?*:ADAWPVO(TUNH38M;D1X(-0N9",ACKU(\$. +8*0HGB_#%*%;']6F-?E LXY@ MW.R6NK)-(9,-3S;6XF'X,)'DBUBK(JE]>+D>AH4%ZCVB^FHP&TP66/+%B+4J M&@G%8HG /WFI]RD^ 1F]FYWJ;>CH2@ SI0N]?K:7*7>SLUK4ZNT?UEVM"606 M^_8C%7@Q \@10(Z?O9;Q"9CE>QFL7L,KXY%^9AUN115:)>VLV+A/, 5:L2#3$L<'[&Q=[?^,3D-&[V:_>AHZN MA#DB:BX=[FU0;!$NIF1AE(IWBF&".I, MX+G I\]'&I_N050KKIOUY#Q9%6PYH0K;:"0K3-- .I=_$#5P/WX2^O\R(.#Y M^*7W7NKMH(!W>UR5;W$_ M6/L5D*&Z9PQDVBJI9C7!C(TQ,0LS<7LL61A5QY]:R%@2W@O]FLQVAC3&FB'\ MD6F%+3T,_V66R)KI,J-/<'?TF10#2?H4,W?@]@KNT$1RZ.D?'_&$T X3M&R2 M+NGD&&>JED['<=@K.7(B9^ O*W$/QGSH&L]-)N.(*J,;C&F/(1P5&DGZ;J+HH$83;=@)%/!&T,G M-Q,W>,J,B?F8,L&;B6F%.!ED^GT\G$4FZE^D M0C<7]@G^(EK,%F&Q3H9?(0-D%J/;!J./,?\D%.L>%CT3.O$[YBJ4\-L\YC^R MLOGQ7_R/VY.D(M$ :3!SAO-0#0SK@$&6_??;,?AG'W/@^ -T<> +Q])UD%F3 M?_^/?_('\82)0=6-[R[^\JUJ1OD%3^35%(7'!A(787&"!_XNJEMQ;SJK3*3N MHEYDWG1_J M)J&C[P92\4%M$/1^U"\Y&4M??>>Y.\)[\*_.RJ+<7?1"1^6#E01:'@[FOR(S M,P /_JNC2\^+%0V0GGHD5IR/OOWH@#@&#@!$#^Y![^:*/WRG_MQ=/=[I3*(]&T13/C<2HG!Q)"9F5XA+'2^+D&QU5](IF3S9\*3LQ M[$5Y.=E64M.-4<]/ ?,^;5FT[X>9+9^0!<5L;:119ZL441JWC#YM^9!>R^75 MKO&XV//3UBHF/IIA!2/2$?NT96=J1?/+Y&0D*'7^T1X/2]&ML,4H^Z2E9(L: MBPPNSXHYMI@/2]4H)S1QRY-YSN7>NF:L4JE%(9E]7%=[#;.1G>*6)_.,%=N% M?JPZ+G;KK=1RH*_T@;1.CZ*GH^\P.M^82VLN9,/9ZC2.FOGDH#F*G;84)HVD MNJGUIPL^T\A-\G$V/EU!RY-YIM%\G;8GF^DBGBH/Q4RVM!FMM[BE.\\G+(U\ MKX!YP&JDF_.F^!C6MXN"IL2J5K-A#;7M"%I'WI9[_1P%J >$1(47%M7XJHOR MAH26.T*4HBF0NI@E &8@0MDTSXAS++'OF#3]NGSX/D$.K@PS&7+]J9#;ZL:" M"*\]LO#*10,^!TDHJ5BX8KD)OYI8,9L@ ^2J,YY/!OO7\':"&/ (?'>)\+Q@ MDJ2MN ($BB>QMA4#T;41(0Q?F2(-&00RS3 +\'N_#7G]C$=\;1J1 !2\#UHA$C*!H;S!7C$P477Y3U/$+ M"L0K80A5LVLVOJ**]!8^A6,#VCF3 %%6TIKL:BI[(FTZ>-R,JDN+;SZVL+TV\,,O&MQ,-8AHVNS3Z>N4G.O8<20Q!R1$@](ZJ$ MI;1G<&<=7H-D%UI/=%75MP2(.PJ(2&BEZCTI"CM-1LHAB<3#\^;PKB?L$4=- B_M X]F*QQ L?F*.>D8%/SNZ+GPL7O>.#L[G-LXG< M)8.CN=&C"<[E)L\%V-F+A>J#L_G3L_EYO.^OH;7WW(?DK[O%O<>0^3]X+9Q_ MWT3,Y$LVY6>W\*4G@X]UHS=Z.OAG\N_"QO7?N$N_ZVY[V\O%?[++=:)E']^O MWV-([^BG?V8/GI@ROK\%!=WB.D_IQQTHBUE7 M9-A;J$C!1KX-/P_V,:#J&]A$1U,(-O+3P'K_4:\,1'0WB.=DF*QN.JX!9%K* MDC@!D&AHIRY$U[$88E3X1 1/ /$53'2#D0PD*Q:CZE@^FV]*SN^\C6\2%?\S M0^*;H_7C.%ZZGLA=[.GBWCK4/6V.ZA.?QVTHHGC^L37=LCS:Q9,[L_C0%G\_ MMOU9UUP-66?BW?-:/U5?-"Q56#?B0FXR2.=T#<(9>'C=)<1Q%ZD<>!W-[%>( M_UJ"]Y-0ZF4?<[PI2N5X+]1^U7I,50;2H"38QK!0W28V8ZWS^W5R?Y%46VV. MY$!5L+2%FN;35BF\AG@B>DTN&V.1+Y1 ^G9+K<])_#4TWT%6OS*P_@K89 MZ(O7I8W;U_@"G8WJ;)FS(9[22YHY1*^Y^CR.YWB T^3EF+>6U)JE3L M]4;CBT^-2WG4KT6#NB6*8$.%O(,0L<7\S @V\H&RX."%(1?1E;KJI M(;C=_]Q< :S86]U@)^F_Y:W;N\MQ>I=KHF&,1M)L&LOMFGVA8'4?C%4Z/]Z% MI]]^Q**)N]/'>R 7585M@JV]]-[]>MF0*^\=7F,]W=.4EL!7'_KF/IO.HW'Z MVX](E+M+/;]WOB0CW9_^UV6.'8JNFD*NQ723.2=/>L[>Z.] MN:_D]K5F-_ZX-\9R;F!)I>:W'[?&3ZZY)_G!<+ ;%<9+P9;RR[+03#>;Q>VW M'YI^1B ^^.PWY"-9ADV MY20KW^;[TRH-A+]KTJH+ '/<+Y.L(X<+K0QXHPG??4P12X:$ YK$BXVG(,UH MKNM,-$F*ZA@A;S#(<=5(J0NG& ?:(4-2( 75(SE]1>9QQS#I,YEQ(5H?8SHU M$)ZP5RG#R:X[G2,XV257/!X6\]SBMWC2SAF^-1QY:C-PRW-[V,"9FX\H#C0! M;%+"J\!W!3>I3]KX4W-")]:&9.(<7J-7SUO"QSR"=$0R$AMEN9&X;^^,5&29 M7-2U1VW+3I6"FIT>H9W$KQ=)>WG2'E-/^9AZ#,UFA9H2JPGB>(]&F6EWW^EA MD!.[2W&G&&=,,W9!GBRA;X)+9JJGC-=P?U6?G MW_J8#Y7!3@I_46ASGZGD5XF%R=;%F"#7D_OB0L,G'C_5!\+O<%CB[MT.:[_. M33NUBMKIUF.M0=,T=_7']?9=#VOYL+76I4*V+*R7:QU9JWEMFL+Z6^+TL/[M M2%-,<.WF!<2T&^323Y%O+)M/(-X_WB>#5) @/.=2$.K**@R%^J" M* S:J>34DDMU3#X<[V#0$[//*S!!B-EB3/[D]'RP&,HP(%*4!\MA**I@.N\R M+OT/,F(A[-2&."X+X:*@-R\T\/.#@%*%+3R1+6!YYUT+_Y,6WI0[R%CZ=KF6 MJ9AL+6?U6;Z:Y![BD6$BKN-=UC44WB/1^)U-QAOJ3,2W57@_L;I+E1,98QVZ MV1BMP/EC@B3235:\JE MXUPP1-95)&JD3,-YZFBX:Q7:RA]T351CG%E+"6CN6[^:0Z2&<\BDRD2F6:& ^[BLT7(Y/]+-U9IZG$ MQUN(Y+3U0CM2>8B[4"&1XPU^*>$H>L? :AFR7*:*1%CLDA;<&E^G<.-5%=@G M1O?X>8>=K)@K5=Q_5S15P2QW#.=^=(WA.X[;+4Z_[LSTE^T/)<@90Z;%M$"! M;"GF NN8&D9$Q$1$*Z\8RH9DX#(EHC$OC^JA74FW3V,) %\GS,@V,4,Z3$LY M3(O41R+S!]%!2(=^9"P0YEYX>:'__1<79_^A@@,S6?=79QL,V 9H=\=T-1-9 MEK\\)BVR!":RX_;F5ESAF2D3,+$Y ]#"2A*8 ^17U,;!PFT"A+ AA(#;PQ7D MV7_JI 94ZV"1(Y]S_P"?/FKB^-3\Y4_OW+8%S'Z=@CW4YN<8^LZL@OGIO+T7 MM$"(UC'W=_C]8<[>G7+LF=X\^E#2DDP3XR)'HGB6R<.!^JIKB9($6X^'!7$B MFLP,R5.O$FFZG6627.QZMOE;8!SOR"S.L^IW-?/=D/FQ[Y6OV], *2J]T7,% MLR2,X4BANZ>DC_';:84L:F@'Z]U4-[Q0WEO=[U\H>/5G%!'VU8'PN=?)JF . M84P:NFU]QZH0DOUU(=Q2JG2)QZ%]?FKYC_\/?S3A)Z$H9-/Q7%\(1DF>Q)_\ M[[]2\43JGZ=1+D^"5)[-:_O5*?NXPDO54BM8E5&IV./@,G#\/VM;!ZY-[,Y$ M-HC$D>I(8JH=*'#AB)IWGD(.-^HDN".X7U_T?O'._=+'H%N26T"O5'@LF@2Q MK&R+N"UMS=?&^=C#%1C?&#H^(H)HQGL7(&*$(_X#US"X><'->W+S(L[-\Q>4 M/7?',*^CCC_,Q"PH(FU@G.N_8%@S44S+#!TL+$YI65((4V. *5I[4%MD&%U? MT6*O6PW8I+UT/(+/W] ;49B?6J ^6G5W+JCNCH+J[N?NZJNKNW/C1#01%2>C MB11%HVB"'X]$-AH925Q29,48ST62\M,:X\-RD8U9@^AXD65+4G6Q::D9H0G6 MQ*VUMZ6G< M,O:TY2K?J67NU^.U4"@MUZG1^$( MM.1.RJ8O$HNE-:NJ$]:.ZB8G989S+=4\5S)^L.&V45=AZ4T.3^:8P&X:G M-,?Z22GVP4I?;+M#;5'HLG:B;E7,L>"D>#[9T'QAM=SV)@E63$]+7,?MN3;Z8R=B\6K;+\DY_3-;KU/E*'/D\5GV>7C;L/.PNP^T93*PW4[.RE" M$?S4TY;1F=T7\@548+-\^C'Y4([M^64:BN"?;!,O3A=L-L)7!+NKE9N5Q+:7 MN)^>JVV_F<9*;47NK@61[^S2R66E6UQ RY-M2LCU>JRAY-1%O%QG%R4^4N8? MH%Y^Y&E+@RLEVWNC5^AFX_-H*6OS78Z'/D_O2'^=>ZP(S9G ;U5^/LY/2W88 M^CS9IE5R7$P4P].(L(S7U+EEC0?Q(?1YLDT;@+IEE:+5O"?IM[,,1)38DVIC0% MY+CEI*AG4M-&)]MM+\5>3VT.QP,=DD5.MBG616JW96N[;CFMST?Q=EW.#M(T M0/VXY:BD)V+B=,UVPY5>04JIM;C)02C[R;V+1U"I.\L4QFQ<3TZZXU[G?B?# M/$\V=":D*KW48S/)UH=R$2WME''/PSQ/MTE;F:6MCZZB'7&>;&C4QS ME#A=?+O7FR>BT4F.%;/W\^%DVX]5K.TH>>8VF<;H_G&2&[%E?/:+4B[#M8PT M;GFR>"F7X$I1LV*PO+Q.#WN-6JV&;VCR=$EU)"K522IG+M;59E(M-F:-3!U& M/UV2(H\:VG[,MH1UP9Q%[G=SI&;3H]3IR8^7K=2NTY-6"WZ$[DCI=4H;+[/*-$HHL[/JTU-)3QGJ-H.7) M>0[;Z4[R_[/WILVIZUJW\/?[*ZCUW'-KGZK L0T8L\[SKBH:T_=@NB\N8\M@ M;&SC!@.__I7J.5PXAAKFCAVFHD]E') MD\8SRX2VB&8+0WDPSX)L.059O8Q*G@P0QVA0).A)&M.-.A/&SK9ZAH):=&HF M995C,!HZM-P$I5%:QE*%Q3;#XM@9,8]Y#[Q"?X)%3V<; M0H)NOLIA] ;;V#H<",Y4=(N>C!$XM50ZTTIAR9!) F2I>K6ZA'@/BYX8M09, M@R2(LB O:4;-9(0"S3:GJ.B)K2JE9KD:[RP&]*!L1#E'IVQ&=XN>&"LM--F4 MK8$!0TS4*G#F8W$U=2MP:BV^PA?RPKS?H(F-N!6<2C-76&NC42.027=Z6',UF\]KU0;?DZ:HZ(FUJE*:2J9K MN$J#@IJN9>U$.FNY3SVQ%E9FTTJI-Q 8KMKK+@=,N2O.'%3TQ >-$9.<&]N& M@X',ML;+J9Z8E=QFG1A6+*5665W!)LS JI-"4K>BXYE;])FU6)XGJ#29!BPE M"&DV07 IEDM-X%R&$4!(8"F0PD_XC#0FYO.< R:R)%7)DMF?D'+B+)^IZU6[ MHS/;# :B<9OE;(<<3Y!:S>E0K/*M1(?C&:9;D;8S-1&G(48:T:[I"><<\]D4BHT*5ZLWY6H_FW$H#>-(,G..I'0:'3X])1LCIMBL M51H;<=%@NI_@F5EU*8[*]Z/4:EG..I#3UJ#7O4;6H'!UDL\"1 MD\O$P#DW]TM.=)3M9A,T0_"T,*ZVN^U5].STIV K?:PH!D5OS/& ,ZF6#H0V M2YZ6S!6+[3[6J':8:"^>F&X+2U#!IG"N.'U[OTJR"=PP:"E:A1/5"D_6!M-S MLXI6'>$$':\Y-*2&G1S3TRMM&94,VGY.*^>M[>JK;[UW^1D0; 4TQ=TFO""#7(0'3W_T0FFH'H!TMN*S*(CV4L$WK88,5(96SY$6!4FNMQLRPT5;] M#50\>L>;"EXPRU[ ,O !GM[>?C/"?/)"LB@,X9VB"<[^[_]<0_M"$_^IM[9W1'_6X(G06,$9@YT9^Y!)^1N9$'\1;J[V.=L M2PL^\%;Z[B?75PX)KM9ZXL1I-SGNS\L._M(=BMOE:8^1B; C[J(CL'!$W$-' MI&+IL"/NH2-":+J;C@BAZ2XZ(A7#4F%'W$%'A-!T-QT10M-==$0JAB?#CKB# MC@BAZ6XZ(H2FN^B(<$%WV8YX.]GIW\7ZOJ[5EU &NPXJ/Y8-=NIH./Y1>;1X M.H;?LSR:_N;=1+0#Y!W]=/>!O!\/KRCZ%[TL_R^O"/.%(^H.1Q1U8H+7O,'K MY-/_GR@P?EY9D(JEDP\]<@[O@UQ(H?(G>P/^79R!")WA\\Z0^B[>$ ^]X:=/ M%#V4D>425.F&4A/N,W.<.7//G_#H!W2;9\4IWLV""_GWK5MX Q41-[YRZW9? M(JN\%Z"X04M>S#._3S+_9;(00?:RW<&Z[&;W8RDX1.9.#VY6LI/B9?=ZG5L M?Y:@[N"1!^NS KI5!U1^<_YYARNYW2D^_\'J@!6:E+#@D%$%] ^]AX8S:7[.9,0?U2T!'XX:"UIJMQ9S0:H,\!0Z;1K_]0?'L*=4 MFKB&BD4(.H\/.F@O^=Y!Q[]4&WILZ+'^%F/HL:''/H['AL3N#1;FWHLX8F"T MKR=W<,?B#!6Z.L5K2_0B3R_3]&)9$K@AEZ"ZR4^HE'V"XO',@!EL ^PN5"31#=-GVV@E'<^@KI+9=/-!X>2N;F711XA''0_ M$/J@>'E7X'CIZ3QTO/MTO-]!>8E?G).-7]1;S7RJGY0WR6&7(>#:; +=KDX]I8A328X0 M-;XY:KQ^YC6M9JE$%UE.FP_U^;:;1A,7 M6D"^-7,]Z(:KAE)'3%$:0SM.G+43AW>?=8;B5CN2..\ZPRHMS:EY?M9Q\+R,TIZE(5YM#W_X9;?Z:/>K[:G/HVS^C MS5^SDWI?;0Y]^V>T^8$YR0,<'?UY>2G"3"]WGNGE),=\F.SE[@=5>(<_3/;R M$-X0)GL)G2%,]A)ZP_>;*,)D+^&.<[CC_)UWG''"WW*./U2V%[J_M&;UYJ+- MY/1XQ2R)M3)F?N[ZT4>O O>+494O$)6)G%N71#M!IM@.@R1.X[_^$%CR"4]B MX3F7$'7"DZ.AQSZ^QS["R='08T./#9G=&\SN 0X3%F:%YG1"XX#I\H:=&R%,]_+XV^K?]!IS>'_^ M9SC>STCW*MUP]Y\MT (QYL3V),]&"KI)4N5+I@_O/I.!@MD"O2ZVE MD.$"^PL6V%^%57)KQ3:S33I)2S4J"1_< MPZF"@[ *+OO?$0'^9VFH+/S(G&F&%;6 L0C>NHE%!B R 8H$>0(J!4UA&!OHE?[WX7LT MVX"#8V*A5VF\Y+;>:P+\@P%6FK)"Y7D#"!(T!<>[/7]<(\EZH5:NO9!7NF:- M0)0R;7[FON^-JIE!W50-O0$^#HU98$2@O8%Q9!&_^?L*F(IZ$7(5":JE&=K]TTQUW>O[JO0/6'S9QQLNW)TVB&B:XK$(W?A-3AM MH6J^$^C!0E>T#0"LTVLGZT6JM<66U*I7':D4,ZM-7T_Q->( 6=AVI@Y&@#5) MK M&#:@&[!=>L;-M")58)KEC43EQ]MMAY_^^H,3J1,4C 0-]X<>!QNZF$@J]&/H MK6#OZ?_WRFG2WK9A-/DI$Q9@QM2#JZ&&\GHT4+ M3_>AT2@R=FHU[YX1]&L%_N9!T,[S. ,YY J8" LD.&;A$#4@-'F?H2DPL@(S MB8?H]>0"+!IG!^-_L9\K?22+/#N],^$4U]F?8XXW$'<5D>!(!FB4NKUIFV@T M'%X1A#5"4Z_[74E]7HU9L(QRZ^C IB(XVGAO.FB+#@RW4V"%/$.<.VJTA^3# MVDDJK]B"9R4T!1+8?YNPE!%I0"[@/L"*9%P(=_^*_Q<51*@&^]2]>.4V/>M; MHSL#L.37(=!'9O4O0D;/YOSK(7O?(S@XCVL3GV!%O$MCT*H"Y)QHK "? (B* MYD#7M&::@+I9,E]R6?B7"6?"KZ'I"G)Q281K!_BY?<#Y L_SO@-M_5KR4%6L(%T!3Y45 "$ 6] ^:!@PW'ISV/>2--M M^%T.48UO# MD2%I OP;[%,5S;TB-*7"VVA&1897X=!R\]Z[,HCH M]QSW0V[O'AS"M"G8\2V>TR6+4V*1[D&70TM"]W.[&37VD);M6@6=3!%@LTQ; ML=R"ATX#60?BEF/C&6S8/=]U1[M'[^FP[JU_L5H5AI MMN6H5!-,X!BK:*7]8FC#(RA^@$-HJL>ABY-(QW&@HP?KE%4T7O9#&1,63/,F M$<7R4XR<4&2+==;K%0L]#,#^TN'[+<,&EXV8O6AUA*IN4 0M-.'L?S I&T>M M"";/ U#TEY]O@;(U@TALPRGA+:;PCTL#(O%_1_YQYWS--N&X-/_]^ZY]T+.> M_QT_>0"O*0JGF^!W\,-A-=!;9]Z]?4@QHJ[7JD%%H@H0K=^<;6G!!VZ8T_O$ MCZAZ90Y"K'X9](D?GL5B>/I?J$&6$53-?R7N-?3CR8\)-TO"RW%>05J=>25: MR:+9,#!E\'L4/?KWQ "<''6@\?ZK:Z:$_.9W$)5X]DP_+X/[XJ H-X$K!=L" M09@=P_[U%7L&!P7U]V>%@VW9_?]3,7@B1H8=<0\=$8^]>K(P[(<>N-P M<=@3(33]M(Z@7CV1'G;$5V$3Z:;P#'OBYCV!Q5+QL"/NHB/(5Z\0AAWQ=QUQ M 6&;M]9V/R%1[EOM,_E>#0/1Q2]PZ'T"K:5KQ0ULNK]_IM MP M;FVEB\".MP7TLV&'N ;L=.RT7J$I3J)MHZMNMJ5RNF_=_XW&_I9B"_QHL*5) MCL_KM76<&:\1[)"__L2)ISA^>B?E8NS]U@,J@(D+$?%;-^<2*/H)[=![BG25 M3=-&=/T2Z:)N'9/XDJ7D&\?'[GGPO7GBZO'GKS<.DE]C-G.BR^HB.2C*S41B M*O?KA#06IE\^F[TPF:'A#?2HGFI#ZK*QDV@4AT$G]* M48GKD>AOCA!OG>*Z:XAXZ^#3]X.(.(*(ZRZT;65E4@4;UG&!J]UN>4YV4_S7 M,]Z_Q8CUEFMOK3F>8II]8F4NDK,B4Y]"C(",-P$);_)ZA/>;0\35X]$7;.2W M"4QW@64IW@7B[QD/^CK^^_.:?9=1:#0[_A,RZ*O.C@>H<6:*Q)(X94\&V26] MW+3-]#I.3(E)FTTB&AU//1$8?C)'_CL$GPXQ& U?T;]VX>XIF_72Z7N0DM::99ME/9%=6 M:3_UTYGY,SUP2AS'S1(8-^89HZ6N!\FRPY*(O>/$4R)]RMY#U/DKIOX]8<=G MXR'LA$3]0[A3;]*YZ-HP)W1N/5Z8Z]$,Z[:G$'<@;R?B3R1VQ:,DWQQWPLCZ M;8]\ Y2I\GL?]KYIF/UXTHG#24?0;)32["93ZG7/=]^\K;<_B7E5)H]W^&Q7 M-*#(Z4266?2'F7@!)!L9*\.F$&M/X4]$FOPA MY[]O&W*_^>C\PB/?-V_K[9$HO(IR!HJB.CDWI%(3Q^Q.J3.TM:ZHKA 4D=>\ MBA+&WQ^RW5^J:7104']_DJ)G"D?H=R]?L,UYSGLG]KQR)NDLROD.3#/GZJZX MS]L+?ITFB)[PW)3$&NH":VJ]>F8AIKOM7/N7GVK9!D+&>J4)/[T _^M/UUXL)"M25@7;M PDI(!F2^@'[HSQ%*G5AI:P&D00'T))W*.0D2%Q.%?,Q394&6S@GV K>"LR M@_]$SF._FZKN( ,?KP#.0'/TS#?XC@[OC7C9%'PO9M,(-/$.2"]./$^S]W^. MT@?N2 /*]JX9OP/B?M J/VTAX;*(*?06-SLA)\(7_^84A]N80;[V="R!!_'_ MWSORC^P0@:.-2/\K\;2=)0X MQP5:^*O?L@0>2URIJPZ6(^Z29-\Q_\M%9@::F?^GI_%G28J+CBJB]LH1.OH? M_?K3'$.[/0:^_Y*O'ECYG0,Z=R5D1%Z@41Q(LG^!2;"(] MP=C)A$NR$X(@ 3X1$HD)\L )).6I].EP4>(X=9@ZJ8V\FDYD#N@9V4 M)'"C,!*-@3S(]6L=.=>7B.Z4)4Y+;D2'G64ZQ!(C\MNMF.\+ZWF\#4OBSTMV M*I79UI;C&)935YU1;A"OMI+H3NK),_O+17O3%H@VMBR+2T/AA4%SX+")TY): M8C9/M9/+FDQBS4$W017X5 \=:3PI.:+*=5+()M=,L;S4&NR:%WD-;9^>U+/< M4!2%6AIQNJ@WFAJ5.2RIY MB['3RVH#B^K]VI)>B.WA< I+GKP=1#M5:HB-!"RJ3<9JD?,)%86]BIT7!:%O#6^GA@ 8]H5(6S3J9=ER!TY.B8F?) ME8>KR9H!\4XT/XC6Q/9JBE;4)T6SR8)8FK?(%CU0BM4A@\\V%I=A\3,].C-+ M*9&J@08M3;;YZ9(J,(,9K,"9+L7FZWY1GPH#+)I3RG%V#M\ 8 7.]*E5 XOQ MFE$DNEGILD:!H=-X%A8E3XNFNEAJJ^%:3EY6"BW8HE5_0\(*G.G5+39*)5/; M:1(#N>:(+ALS;HPL<*9;VZT^I43I1!4C>4*HJ9-Q5,_#HF=Z*VY.>-(Q*9RQ MR7I'(K>LGAQE(-$_+5I=3>*)7E3L,KF-&"73U>EDFX1%S_06D>:SV?525&2[ M(Q:JN:J5J4UAT>?#CR53"2PA H%-QU,XD3P_D8I^BK80XF+?14N5YR65TVK%:TA":K%1CM$PK5==3J&3B>4E' M'D*@S%,X'27S+)_4$OEI%T%0ZL01IYM<=+YM4]A@KK#YD<44DV3[' 2Q9F(A M"J64!,E"I9$?F+T)OW5@R9-ZEH54HI<9:DULL%C:FI6BXR45P=I)/8EE2H\* MP^%(+K(:F.5-<9G=0L.B8,EQR=I04LO%NFQ@B_JV;F?T5;I)GH6U?(KEVXF2 M3C"<54E,+7Y1Y? ,+'E23Z);MK5*LI20JXD$J?76VZY51B5/ZEDI)1(SCADT MF&JWACMR"Q^LQM-S4*DJID6,!I(D1P>#A#8#K4E+;,.2)V^O]5/QT*]TH22^@RRX,%BX2NAGO3*=;\MF:_/5%:+"X_(NE M*'&=Q2=_0(\C* 8G\9YNF[DQ+; PO<^0B.T,TFQAA384(5\%_$R%A&T**:N. MU.8\#;@#$FP"1( ]837/?K2![/$Z#SF#G23EH )#Z'(E;PM5,45(Q%/A>/"$*I0<3A8)FW"Z)Z M%=^O- X7&C6%]R.HZXK#@G3=6,G$MK;>D(Q:G[2=YY&-+C\#@JV IGCFC69V M<_#;:9RCU:<.'GZB?ZLK5O/ 5D5#U)-'3L0X$N8.%+7I. MH.,H!7J70'CRI6$]F4Q?)1,%Y"-331-<+=KKR8!=.TKS3H\Z6& <+=@2&-J! M0<^^E+K8NZ7#J'@LGOB<=)CW'"R6HL+T_A^/G%]2C"?4@+F'CL#)6#)4O+A@ M3[S_N-O[(.D*K_# M;M0-X"(<.G\2R2$U;9V37%5OM&T**_5^)UE TRG@:-#HGRC-UZ.<;4\8N]XM=1/I?J?>;7LA,X),/26Q4\'NS\+!'8[]@6;( M:)'(>ZKF$6YW?S/R*0BX75/]#4-1=#<,O],\& +#NX$!OO#*)KC[4MI&"$7-WC#'(Z'5-HNCDR8?@IE[NOU\.\SYP=>DO:L35T"<>"&>7;:59)]91%/X>)86 M4BO\XTD8SB/.N:L;NRL1YZXU\\4-V9Z56S)7VN#Q0FX[F> H'1&$F03QE(J_ M=AOB&S"9BXRJ]]&5FU](^L+PR,W;&B+(AQ $7:V:JM"*0OE@PSGC[C?[416A MZ&\>9]1#*I/Q]IP;X-QZR2&E:H7&2@5Z.4DW<&W07<;5-DMZ9";]1!&O94]X M #:SMYN_S>X>D_G(IOU[=BWN*M3RG8(K7YTCXFZGQ=>W"9#K\N@' 'T9BR!>C"(K\ MJ997LK,;">>PQ%Z9*9E62E-ZL1P)W>W"S-!K=!D&8@EDSVGBM9R'WYF-M S@ M'ED :QVH)O N7VK6#!@/34?"O880=KX$=OSQ0WO#!Y9OHK'C_>T,#N5SPFC) M=]9-NJKDHK6V/(ZNF#:Z:H=(S5,B]5H6IV]#:7*:?S$;[#8G@)\W$ETZ 6L> M=A5:_B.Z@SX-R4U(;NX895XX)G$9A$&#Q2RKM#LHFF+6'Q)GP"5>%,"F-%I' MYKN:0EUZHZ'#C)W4V1,\.)B2!*% M)#?+C"R:6[=RRU+6&&F]*4K[X:)'G/RI9T"#_>%+YK.].]KR.!>S0M)S5[@5 MD)Y@E)Q!%I;:YLMD/]MA-L)6GK#E.6Y'W2Q!*,R23#X1Q(\X_'F(X!%)A9XP ME?8G*4)^$O*3!QCGE^0HY=T8.$=(4LIZ(3M9DI0WU2HCVFMGL+;;*&.8N^6, M/>%7.#-^5Y/RBTCBAK4CL-V\%YNZ!(3<51) 3_Q';09G@-(O.;<*C+/?.2U"775H!^RVFI&'PO SR1G@!50[<]ASUU9ZN<2FI^(4%?:@C[X0S# M]EO1[LXTVB$*AM8KXI]$=\IE>6KNR)MZ2<5R?5-GZFXN9'=IE7ZBSMSX_S1T MW2%.^8:-:$&T/**XVT<'%UE"_A/RGY^&+L>;1P=_.(,E#5-3!N.* !M5)@1A MB67SZL1-ENX=HKL&DMS5U/[:2LI >4-.3_-&@KC-I7#FK@P2JG%5.?KDH/T%R#ZD$]$(OXC>$Q-4Z=1"QB+JS&9 M6Z?0N!.XN=]$(C\1>_Z>"9V!GDHRT>J#5%ZK4& ,5/D]0],9N:JX( MU/NSC 12OWX*]&?ZBM]*&>-N&X.T5C@%%OY?B"7W? -"/P1.2$YHC:4WX5*06-(5O :H0*!OQ MVD)7P&%E1/@8Q\AL25I)0DVAR23 M@C0TOGU,H'-PX@8*$DL*1F(L@LP^W==LG\_F5*/)EV4ZE*V!!A: @+ $60!I MS%C<&G6:KL&5?.S["=C^A3KR"ZN0LAILZP2.=BK[L^O?$_=RI6UM"S9W"SP5 MH;T[+H UTP17@@OV"EKF2*J7CQ6Z!BJZ<*\PZKJAP='D"@ZA#IL=^LW)&V.1 M"*RQ.^6B)P4[4B]4'$W7\/U>JABDCXO2P'JJ&7#6F4GZLP9PNWVOW0;702M@ MV9G$SSPI)1-M@P6H8&AHX (_'PT2[8#N:L'I;6)[PCX>4)B[40EAR=VG].SA MCS^_[K8[RJ"W2Z8<]9)@PV+!-R*&UUPXT'8#US>] ?QN=LX#8&D%JQA![(#19.Y_QL1%AL^[Z W0V!,;HC>K.,B^/"NG5 M@Z$0+MT?-5YR=TP=R9HA!P?012POS?G>56 ]H ]!E/77-H&1=ST^QNL#70*A(OZ=PS M#SZP,>?YG0G_CV2B_4D@P+/W<4H(PX"EDNEY,VW8RXQQ5/B]!#;Y>OPB_LSXA ZW$>?D),$FT%TL\51! T MR0,.@MMSR(SP"OPW%KDI2WHG>WM VT5/@]6 MRZ>:GNG19D&5DO$Z338[%;*](H496J%?1=/S]1[LO=KJ.^.3EW>X>=203,3QU 1W)!!6+IT/1O-UC;ZDCB8<=\94=X5D=B^&A MU>_ _?$8&8IW?KG[XT2,($*S?[G98^G0V4.K_PRKX[%$/#3[YY^6/7#G[V.:C!>%K$DB^$L/>->D_2VZVVWC M'1V7O(4-/)KP+5R^@#8M$?P]\_B/S=RW/LV8]7;S+S9)W[H]7S-OW_2JQ3G? MI8]/6%QL)KZ_EM[@P+L_7]^?*=ZQ8W9EK=W@2:]LA&4W=6ZN&3FT$7FT'=Q$ MDT'3:!F:X#W6QR+_T5&#Y3>K]H9A;OE$3\+\%VT [J\\W MZ8+]MU=J-G 1'@@9Z!#<%'A9$SZSZ3N:O+=H][)/V*^*$VUHF!@BT+]*":2:F5 MAB)AB8O*@%\IVQOHU.:@4>V)&*"L86VCYNCJT('63[GZX-0E<[W=(G[4*S/EW, M1CM)OI3G$YLOYX?93@Z/CAHF+2^3Q70[:\"J\9E??P@BEKXD0?Q."/>M6O0& M40Q9X:UQ0AH2^*B%I7.,76AE"Z-!D0?;^TCN\#H/W#AC2U@N(&U=Y.6T/-.= M$9%UV#CB@3C^%+\"#[SU"BT7W"?J'-XG"H.387 R#$Z&PI,1QYBSS1(=83*!>GGS"^:$RE=BR(:@ *Q)-4-XZ M+7DVG+()-@'G!RP@F\\NNC]DX.Y6T&EM>C'7>VC AZ_T+N)*JO/A*J M69P2!D%O%@2]-;Y^23CT!D?;OE63OE.PZL4#:=\BG=BY0V9A[K#OE#OL R2B MEB6:P\):[-(+?6&*XZ+57:3;;-(E$>^3SOJ*U&&7O]>,ZHE<0U*]@]I!_0]N M3_ *7".B<37S7[<;->BUU[@^\6+0 "?VX\(?&WC\^16)_W-T]6.W+$&7L37C M=S"^#UKE7SDAW*$^!5'O9@DGPA?_YA2'VYA^*U/I6&)W(/_W#B.0'2(X%B/2 M_XH<_(SL<6),=-/[P&1'E[W]KQW?]PX^?..*B]\SEJ;_)B!C0*X!?_5;EH"8 M=Z6N.D M%[GV'?._7&1F(+3YGY[&G[T%@WZ&@P2"@?+?P\.T_D>0^;I7ZC4Q MDO/NQN\S\G*'%V->\M5C2Y\S(.>.?S:%)2DR@6(4=ZT9IM.LT3(A"*54[J>K=O*%$(J]KSD8$M4FVFSEJ,) M0HT.)5EOC))M"+\G)>5!NI*:\PHG<\-<']OB/":6,PBHGY>TAZG<5IDJO-UI;U;L3.^2&#"EPF0S6)=&XS:;/GWFLETW)](\7I%M-=5VYOEI M(=%R6!P[+=IHM,92L\ #>L#,9)#*E;@%["3\3,]7V[V>P\F3-#WH3:O;*H>- MEK,,$I@_*4J)*:E'*-T5LT@FM10591.@Z:I)GQ2-VOQ"S9 %@R:C8R&GF)-< MN>#*PYX4G93BXJ ^EBM,5\\V^U*K4&\77$G(DZ+S"JDODVNBCY%2HF(5N7G'U7$Z*;IQHERZ2YHZUF3+_*C9**JL MW$;"*2=%Q\6E-&G,IDFY&]\4]0[(J%330;H()T7A^[4EWDB7Z>Y*ZT>M!&%4 M6QF4Q/RDZ#2#K[;SC&(RH"S.ARLEU>UF'91Y^*1HW8#O6U+I"3,@2%K(9 2+ MS[OY0T^*5K82EU/KPI2QJVIG&)6YK"I/6>),;XGSW'23[25K\C*S+ (BRX L MQ E(NP)W?38#!UE>)CPW);&&NL":6J^>68CI;CO79E%1PJ-S\!N0[%AOE8Y? M=EY^-1>,5ZTIRG&&-G*BFFU%M%UFZ(B7>^XH,9N7Y7 F@96;\@FA_3O9;EV" M7,[25,#.V6JZOU@5#UL(YRE16;A1.=Q(@EWZVD_!" MOF_(2N%KFF*@>+2SY)X:8P>G5RH-P6:+ Z' + O&D&D:JEV6V[_^B)IMG+#B M@_R-NZ=&T,W="!^2^P^[' N#$548-ADP:Q63E10?Y;C, MV5NT'_7B=Y*/1"JZ@)_/=IS#_2>BPV>B7(R[Y(F[]%LHL]8^!]>N]8?)%/_O MA1=R]Y:O[X)C0%27U,8D.2 :HWS-.5I*)C^>\7YW46OG^BVOEW8# M@#P8 +;>DI,,'DTRS>ZV5"W7MU1^,OWUAXB=*IRBCE=0UUK:[;O[RKG\+MC= MC5IKG&@#/HDM5;P,0+X.;&=ZF^Y64F2N,W&FD&!EK42ACV=GH\[TA0Q_07_' M(@-PE&S7S:8+KO76"RL?!L*ODO(Q7 MM55VJV\RF+0UMRI&5#L#/7/=G)F] M>TE*R@"QHI1(NIO+U;%^-9Z99J[L);W1P.%[*7PC5U?$UJ"VU9XQ<:"7I,]E M1@V0RP&1";I'L +N\N @*3FB6#M<.%ZD#)"*!]J3,TPGR)P MO,8B!]#SE89X]/YHJI$"F!@V2KJ./T40ZKL" GOE#T79I8>'8. GJX>CV41S M#1J?Y@R.&$]7F]-1/\)*P=>C#][9=_\@BQ'8?RMNZ:[[&_[??\!1!DH#=/.3,H %WT5/'C 'R>#EO+01#74$)JS4&D%Z&6!$$(=I+_ M14C"8?=M?)CT+*+9QF&K33!U&6HD' CO5,?9IU*&LQY\!WR?>7Z..)YL^$,B M@F0I5-/7CP^B&6\\X$1\X9WZ.T]^)FA77D.-< MW<8'RD>\49_XYDPSZJKF^ M*]W]6#\8ZG"@^Q2J*;;C[?10[M!1(ZI*M*Z.%2OS?>S MN>2RPZ@+>4/U],U8:79G:>=*F;SO1'?J/C-I$\D+9-*FB%B2#/,<[BG3S5() MQ]V-^K C;MX1>"*&A3UQP9[X6SG4MR#I&O?S7J(9OR]P?N^MD?TEO1@\-@?K M/#$D^)@24%8 M0,]$C8X>OK7-L5B/:]IV&:PSCIE0W+T M\RR%WEN,2^^;]@/-$/V5 J]$(VG0^F>(/C4Z+]=4_V#MZ+H'KS]3E-@B GO MW44ZLRE_1!-[>Y;H#X"ZN@8+(*, MIV0_'P2W-[2)@N$%:PWQH#G&#^W9W2WI"ED<:O%+(\X;;HUB%$F/03ECP]6_6MZ,M%QM/[.,K-K_M^82#D MYFT-L>,:MYJ+_D[YV=O-#7!N>;065SC3-&6,V53-,ELFQ&H<9%C293 $]I2D MXH]-8?9V\\\4N,=[/G)"X3U;$W<55/E.893+M/(;S(BO[P4@U^71#P#Z,B3B MGZ?:X89 .,W=V31W=GI#[@__0._]_LQL5VCDP89LE@%CZU1/&BS':W0MF7)G MN\03A5V>3M\A4F0A1?"G.5N=^+_PO#,\LYANCP';7&%Y/INIM] M!H(.$?\1^PPM [AGG,00G2\Z/=P"\L0G0HH34ISO#%TOG,FZ#&RY ZZL>HHN33'KCZHSB#7? M&,)*SP\9NAIE5\/)7%80*J$[C^N3-6AB/FTJ39QYK)G".FB(V4=#(HQ3;"!NR)I"X?OKVK.?GE M#:/#8UC23G[#/Y$5DI*0E'P':/@ZC1K9:=1*C0F3PYH;6V^7AM.%%,^@#/T0 M:[Y>&N"'P"&PD[X6<+H$G/P,\0J3X-DCA#H+&;@R\N'*)KK>=37U: M+S VSV=ZZVI3Z""MD)1WB>V',I-,P_(:A<8 _G M\ _^0&EYX^0,P.2PU53KK7&9X;*UIC3/ISBG-T4"/R@8"Y<_^&ELY-_?D)4$ M>US'^\G\:SO/Z&,!^ DX#; "JAT>R[UK%O/#,.9*>\0'?PA&S7ZOV-TZ1AM MP7@)-(K.8,^"(!4Z/E<:#(=+15O@FK.&D4&*88CMCQ.F3^K5P+RX'AIB@[DVR2<(5)(7I09\[J_A#F4M/4:12IJ,'NG(1'5T*2 M$L(*$/:1WH._H9'2@P,E#\?)&8#IUU/YI&FV**S9G4]1_C*RAK>1G#$$F&3Z M1["3/9A<;2$49BN[ RN$Z//Q)=(9X-F)C.[N[:&F]IWDLRLQ6X2V03+]K!!J3_98".J MCHD081)_D(.%(YNR.U;Z0]!RGP.*>L(NO!Z?;!G0X2*ET M6'NP4RM]7]HUI"$(&9LB+:#S&.X5*%>6U0#0 \$3$A2< ][50.5=0=6(#CPU M1T\X=:$KX+ R(GR,XB:IW=7QY.2A6Q?.CUL=U"FV.^%\J*;M/M6V; -$H%^K MVD+B(Q.@ E%"3S(D,[46]GC?Y4IC%09CR4\8,6%H" 1"61"9#FGL6M4:_I MF@DN*@_[Z9'PY2JU+RP@7W=/EAZZNV3*44\1 Q8[DJGW1MIN MY/JF-X#?36X16#<#P+&L0I.A806G1P&X,YK_'H/-!/L8U&-1K&D")Y1G8/$QP9\/D4XR7L]OPPF $/A-)XN"XV$%&;^>-E MQ[GVT\%EE=(.F)6G4QL,5)S8LRJ?6>&)YVIH_^=(Y6U''*.^V(C/#@]:Y:O+ M$2Y1G,)YSQ61XT3XXM^E_?N M.^9_NNX(@$,3\=6CG); M?\E7CRU]SH"<2R'9B<#Q'$GR;)SB1#8!>,!.")%GN7B"B),BF0(<$EM%;^4" MTKF9M!<;F9LDF<6H,Y_7\50S8TPA(4\\+TD4F(HT7;!3III*T>-%U>P,T$E+ MEGQ>4DCS;5P9+6R,-+*M,67H77[=]G2.CDO&BQ37Y*9"DEZD.B.KEXS.MF6D MB'3R]DV3-]O$2%DR49#,1>NBFBW9D!R?OKUJUH1J;]A+,V0ERZR+V**0[[39 M.(L]+PEZT65O @I-#.!P!;]" M,BPG];0+_8IMB8F%G..'C%3+3!?,!)4\J>=&Z?7[HZA08Q859M9@HI-9R6BS MB=-ZZIWF)#.0YARSV53C5L%L\[.RX^DT')=LB*12FNOC*F/;PYK%IS:DFG+8 MY.DSMXJQH>/]SA;KSJ9.EHP2)G9CTNVG++1:>6LFIQ+9S(B4W8V!CEE MR=-GRFE.K]$ZI='=J9A9CN MMG-M%A6-WRZX>C0_P^FT"WE$,//F!#8(;>%U-?:41*?>R/NK[MT W(9 M1/;1A*;N)MZ729?TZI4B2,?='S5>9):>R;B2;!#%N^' MO((Y?$<@(C4X7RN1.'R/;ENFSQ@@*UNX"Y6#-MB()#BP&9$I7!@8+K7WF(.M M^]SAF,W UD"K2+RD<\\(TL$4SGFTQH3_AZT,%AD!-KXOT !9/F"I9'I>S#(C M&^-J*4FH)QL$A_V5W(MI6&P'K;[<, /ZK0Y[:6$O_)C"10(3P4/J@#-AM1'+ M*2/+]S:Z]]Z7"L!' +'+]E%*:*$%Z9H<(;!1O5<7$J)-F VO8VUHO*%^I:=0@Z3C"5/ M A3_[-=&>MCDRDJ=)'1 MVL5L>2/DG0SLS53L]/K$O]Z#G+%#49T-9#+N4>']>FFWS-JCB:@IL++>DL"- M@L O[$\40^MQ'FI")!)M):) XF.Z*T? 04A[#I017H'_QB(W77J_,R1P%!L[ M[^3X@9/'V?@E@Z5-L1UOIX=RAXX:456B=76L6)GG,= N/P."K8"F6(#=8($: M-/_!7;YG^[MFBS.LIG@F<-J#3BAWI(]6'IZ&Q0\:JAN@M_!#X<51?7R%VEHO<)[ MZYSC9>'!!H:_)MRONZED#$^YRSG+"-Y[();^ZQ,[+PFXV WEV?>KU<_*LW^X M(X@8$0\[X@XZ D_'L%=/LX0]$0Z)G]41>"*6"GOB'GHB'!)WTA%X+)$*.^(. M.H**D438$9?KB/,T NZCKA5K\ MJ/W+:PIR\?_O%_'KHWV-Q;#T(_9U.+O]9,?_U.QVPSLNGQT,_=WYP[I[7NV' MX]^GYK<'=@/&VQVL22+XX1YPL1GP@;VA@$[7(&0 UYDB;WT[*^N=<[Z8E]^Z M/8$K7VP^N^DE\7/N2A\?,P][[J4IZ.YZ[CW'-,Z>1;KH6:-73E]D-W5NKADY M=/#EZ/A1$^%WTV@9FGM%1E-]V/ ?S1F94J7(;WK8(+'-V^QL;,CSS-$AHZ@) M^-^";:"3/,]/A@2'/EZIV< %92!DH"]P4^#-T6B*/CB#))53(WHTF8ZP95'/ M)J5E;QW-MG_]P6/4\]MCWH&B;S-T;G"CW0WLW[K=E[A4ZT7&[RL7R$->F;TB MOI3KB4X[E\BIS%*,#P=B>U>L >W]" NGZ_/'&U..SNEMO)_>+UWSKY$)*YJR-$+[Y.)::C MSE"V![WFT%P4C27U"/1-YW)*7&V-!*:8XE-;?!(EED6$*8B^84_DE]"W6R^R M)!=?19@-I M3+>_G#!*.=)QT@-CS12W[?005_F91*#+ZY PIJ_,%V\]=.XH8'CKI)@WMLN+ MX<=;VR5DM.]#LZ2SK+07Q72#(?O6HK2R\#D]OX]\R*^36V-08LILTV#I(H@/ MHBR0D[20@?@'R6T\_41]P]BD9G%*N.:_J_CEC5OY,[KR:T*>85=^&8VZ=;K? M:^W"WKI=WXWTW$<:XP^0DWQTNC#91;= W M/2JWLTL.9685@!=4V>?P#UB^/@-XAMA2#E-L,%J9M$OT,.H<#J1RHW :PH"C MZ5D(XP7E >B8\#5-,=!QW!EQ/SBP@Z-.A51N%34K.85>%HDTWAA2]CS1_O7' MFAD G(R,@Y2TN\=&T%W."!V$8OZ,<<1?T__XF74SUY^4Q-AC4!;N X?UIYLC_H\F/ZV[L MKB'MW+[E==#.^9T:K>KM=DC"#SFW&MQW52

    =\\-/77^!M%-1>D'M M]CU]O?QQ%^SIE%;+E'L#,B3,F#K,Q5*P)>TXI) MNYOY]0>N9U[LZ5AD (Z2AKM9P:%=.>5,JLPW)L:CS-9UU/>1'&U(Y M3%9^DA@3Y;<.[O+6F1$? M L.NDFQQVNTW*IWEQ&":XU&E1W6V?6[H7#?98K_A9'-85Y=H8E3E-KB^8C9# M+W5FXL>ESKQW!RFULRJML%:>WBS&W?DPUY#M\O2Z#I)J2+93+5J:3*1*>$6/ MSK5"'67C),_E5@V@RP&1"3HNN +N@N! 70$1JQVPN?D]W.2\$;C.D($%V93A MI>F%Z+3/^.LC7:1K3TRPM!'$!JHG![H; GS^TWN@&%8)6=PUO)OV]P#,79X' M*Z@9;@)CCP\&[\^YBBA^0HE M\*4!^;ZDALCE\SE^>;T.*+]D<8K$G][2_O7'E86-'."#^0C96+^B7DTUTH2( M"!$F0CQ%(.S&73V2O9*0HNS2@<,AZ6M?P#%E(K!'H\2<0;]UD^KRG(ZZ -9: MXV7T09[.Y9I/$0AKL<@_J($$]E_W,_=G_+__?HK, "XQA2#8 60I/4_I?WS$)Y MP//:?L[!.V M0:JD!==B=%,3MKPB4L.6U$:ZI?LK3R<$.8![/Q>M\ ,-[Z\YS)[FARB#J@"S M:&BF>=;8H^I&4@V936/5!%[-Q(OSSK@ 65>">L78WO""+%_GI-U"@ET%#XH]\29WP>BAL2_-N^0^%+)%W1XXGE:6I*[ Y M^BY\'-JJL?PH#-*5DL$&_JAY-4+24[H7C5/AY*1XR^JG"&]([@[200'8$$$Y MJKPOE!&$KE&&=PN@7O ,:]HZ(H6[\K%(YE0.[J!+GGQC(_X+85)#6>61&P@N M#90@JX-3E_\UZ+UPQM_XO-.;!#7;.#2X":9N%X9L18T4P,2PD?GPB],56H% MHSWC*]Z'KQ"6+GSZ#(5S-.A2W#.F\G7LQ%\UQP]6T._#:*^!T@ZDJQR]4%)V M=TL7>Y/,H$S(O<('0K07(R>;?@[GRU3B%4S^.G)R MKW;_$#X,!SP M& -,I;U,[1&K>7OJ]BOSF;G[H/Y7F+L?8JI^CS9/;R>ZZ4[('C5%T1DW+'@0 MK7&];(?EOI&1.Z"CS%X0;N>8)NIF+^;F;FK ?I*0Y"JBIF[(\;E_0I=HPL?E M#A^7Y127_'5G %C!FY^))^^TF_8R_P6> MM=TW(F1"@5E7RDV"=457&[S])J2VC&*A!K3_T['H,BSG/X";3N&PA*5BD4C& M)_*PQH>QTF/S!0PL0*: @T'Z;D)L DB$]T6@.O8>[P *ZKZ#';TC0;H SV*1 MKHTV^_UW(G7>&7 ;L'&=$#7U0"9['^U%)@709MHF..>"_F8"1?$0UC@,&7.G M+K-#RIV;D[GX9B6V_KII[KRN=1U/S389JOB!4\SWGJ^]6\Q5%#$M@PH3%J G')G"2 M9+D4 "PWX5(I*D&222KYZ\^Q BNV9=E*K2.*\K+63W&MEB2PI>DYY=ULJ5.7 MVR.)DFW1+*;?73K)=/%',TQL[GZDL0#..#9USRKN]]H@KY1?3 M*9T3C3B?8 5.KR(]W9-Z;D98L]LCMK#MBI&H9ZK,EHJC9Y[4LZ1,%\5$+U^5 M[9$VK:XI<5"Q6O5?'(%MC+#I1/#:&,FM#AB>DY/E^#J>FU-S5I8=[/E MB*VT8B6V?4XE=U6M-;HE++FA[G&LB]'<_U1/F]L^\G-6>\;)'MU;BTX=6:P*+)X M'E1FN;%SKO^G!;H)ZFUE@BURU0&PC=Y4,S+G^K]&;JQDGAA@]*:;2:9+,RTS M&)_M_R:_[JP(6L@P7->VYF @CQGJ;/]#ZBJV>J,IS9#%M6IVZLET93IEJ3,E M^^9 8\QX$RMBS4EB'.6$?KT-2P96^K#*9+_>KPC%2K,M1Z6:8 +'6$4K[>=K M[Z*F"8@69M23FWGHR(.BH:W_4_5'IEIG]9D/!:_Z:W_$,"^HLE8+/W3\(N* M4=]U,/M=^J#$ZOVI9.Z-0EY?6NS...4E&OQ!4:%#O$[$XE\ V ^AHWF7!.U. MW(2(I;\ *![/3;Z"[=S.*I]WG'2,^@*\O5>_N2\R\>GVANSBUNSBOL0)3WG$ M XL3[J](1[K><<7/*%9^)9>X7Z?P6,,#.P6]/\-Z::<(F<-[F,,#^XZ?(?6O MW.5+",-'\.*C@JV'1.#6B;J#\\R<%=?J18(4[X!QV(W3VA;G!C(+BUX\]W^]0O>X+D_\F_-;0N=Y0M M4RC6L0&;[Y=7Q+RL)CZ>%S,X27$FD:5#LKD&*\\YF:A@.7V4UQ8=!QT]C/_Z M$R?C3VDB_4HFRT\2N%O[_"W&.MJRNW6[+S+6O9VX<*R_=ZSO>>_Q6&_4\$FI MI5:*3'?0R38*]5PWG_NX^M0K8WT0G>FM0G25IT'.22TRLDZ #%+[)'_](1*I M)XI\+6OMX\UOKSC*30:_MZOY'0:_MUEY7UWZ]6.?G2^;6R.7J]+-='$H%O'L M5F7;UQBY>B^?KVZ481_K#C=8;ZG-NYJ CGVG?_TA ME \01\T<71U$UQV/[R7N+RZ;D7^Z *50L8"W5$S^^^["IO?!IK#;!D@O+?IV M9BWU@V66GI\G]Q)%!?@;O\ ZB^FN0;ZMX#4:I-*CL1?HHG3K,(/T+L_#Z0P5UG MW1,RW, (_A(MA) +0,A+R[?M8%;O;J)C@UY4DN.RTN%K\_CG0S7OA! JNNUV M.P4L+0.':RV,)K"6-E( 1DNZY!.9/DVO\X@[+?>T?/O9F.*O_$)(>1%22JMD MHU1/ZSV9:&5R EFFFL;:^2I &":,B08*78;FNBFJ0ZWRI:V.KOW"E6(R^80E M3A-LW]M>VLU7A;=>!+^RJ18/-]7N/.AXZW:'6W"761IVVS:OL(FQA37C]K:Q MSF8 U;O*%EQYU:_EA?P2R)N)/.WT:K8M=U#^#;0%EXX_$2DRW(+[;EMPMUL- MALCPR14?-\MB6$I3&EA5TFJ# LO'F=E5POY\8I[/.$W'H(F*DJ_$&2TO3AV( M#&AUEXH_)9-77-[=EZ/\X V[FRWR[LH!OAXI],XV71ORPS)M&Z-BW4FM)FKO M\PNY,^-\V38BC>8?. MR34F/JFT.8)$6N)P_8>GDT_I5\7$PWW IU=8=4.R2:;4F*ST1&?2",^03[AGP.$< _PB_< ZQQ< M1P8;@(EP _"30ON WB77B;A2+-%E:=F5[FJ$\?Z557HR17&CJ;;8ZQ$&HZ>85-H39BDTD]XN"?X)7N" M-Q] 7WAO[^9M?4RP>&E%V%Y69\-X51*(X5H\SH*@<(YKTZ5YEL6B,F MU^]V6YI>X2M;)(SA;Q.FPFW"VVP3WGQ$?=W%OYLW]9[ 8\0!LK#M3!V, &N2 M6INE<9>[R@D!#**+AA4[(K-9YZ+2QE2KHHV4;N!:CR*)IW2XE8-\WV$XEZJVBMVC<11K][]5,C]"P5QA8Z^9\5CBU7W;L".^J"/P-S+VAQWQ51T1 MCX4CXAXZ HL184=(;%V7T#^X+(::AU.?#@/QE],=U?+ MX7$NG>^G6_/6G'$G-/:Z>/Q87?86J-U3EWT,,&X:V]F)RB.%^?^BXTI$(O*/ M 18<6EX::'&(1#4W$&?^YI3TZW#RL-&L3P+/7;7[H" >!*@O"T'WM3?QZ&'H M5V)59Z)4G6 $-\6"A.+6B"F<2VV7VU;3BK4LR(/X*%W>5@>"$TO#[&0/T>G)D,N?&# M<^,+@W#(?6^'RXCJ]ASM#!Q+VT+?Q-+]&K;DA!4@96VL9_R4GTGB*9VXW$FM MD.W>$(Y3(=L-V6Z(JI='U9D!P!E#FTDMA3 MFKQ<*N60YMX05ZF0YCXXS;W5=E3(AV^+W 7-/A?^C1-%NC$KS2N,;1;B5E>; MD6-JZB6_@,!-89>[YQ02XEL!=V\&#,")%C!"6OQ76'U/>08N'9_XP>D#K@3. M(JSEWP%S!HW)5]"9&2G&Q-&,FMQ,9?')-C&SL++C74,E,.PIB5\NMTC(J[\> MGBD/GCU5Y9!87YI8W_Q2W&7N_[V'2]^\J=\0S]]!MAO .@/;4SZ[EE/"M,XT M[=[ ,"FI7DY.60K!=H)*/U'4IVX%?F=6'=P4O-'EM;\],?SL/N/-[S=^J!7? M^Q;F71KKPI7B7.1A$TD>$S@.KNKY1(I-$"+%KI%QG%G4AD:6K2<6W)A>1OO#6J*1%5/C M*2R9?%X2E.5>N=]1ZUBS74NM$LDI-ILY+''Z3,?DBW1UE-$92>&73GZ#,<,V M.GUV\LQBO5"=9&@"R(,F+_0HD,HMLN@@!?:\I-%7#1'+IY=8L9HT@5P5RQ-7 MK/7D[<-)IF$D1],DUAV5"#Y>[$\[;LGX\Y(Y)3E+RSUN))-3G=GD%EJK'T4R M[2?U'$IVF^\:TSA-*O.Z-;2%5([->"+/QR7%NM+LJ,4A0S=[#:8H4<-T34![ MD2J>89E9+DXKE"9C4[.K"R:S4Y* M=LB53;1 /TF#[:@EU-K#*-UU8,D3RV][\_FT7G0F]'+9'' @/2!H+0-+!O:\ M\@W@/)A8>JSS)@0.\J0G'JL0U)M(&2L5\JQ MJ!A^I:N_Q] Q.7KF\7WQ5"R"VAEI3B!]<&UF_N]_)O>-^5]T\[LI(LN\<)-[ MV>A/)[8N1)F<##%4:6%Z-.G7 MLE-I-VG,I^]EIX@W,MV'=^XN?/G1SZJ(A;?AO]+J+\=>B/ 2]CUT1#J6B(<= M<0<=$4+3G70$'B/384?<0T?\_^R]9Y/B3+(V_/W\"L61 M:'_X58 C^I7+0;Q9F#P=:N&4\:3],!%3^;>M?$]UH)Q7 H?_G^_ K\^;_8B MUSU&CQZ>NPDX2$;:!Q)$NR)QV[S0=7V?'R<"#,DRW+$(' "Q[@7&54V515U7-0N4Q\&Z"DY+OK&PUB:SA>1+S[+6/-%N?Q[KBJ@E M'JNH\HI>Y2VXOW/FFGMN&HT($WK5I2NU9"1D*E.."SK%5**Q)SIRE<=)/T3; M7S^[_ H@K\L].'SC_.^[:#43<-0Z>"&U#JU--3^H1%HSL34.%#;R;!)M?_X= MRSO5.A8S(N%,UNIQB_6H-J\(D5XD,L9JS?[Z$PK]K5K?1=+X^F[4K;W&BC'! M_M00"Y>71OC+-,*M7TK?A4]VAW2YO<&_R@MRHKFP*Q159=Q$FHPM=F.B:@;\ MG%3E@:B@85S&K#CW]+"JTZ,1-RTN4K)H-'*A>30^G=3L0DQ1)G8]A^PG&HP7 MLCAWK!BW(=1+2:([)M37NXSS^B96[ B=7,K4NIG2*K(<*,W5#4Q(9=G1U6AI MK:;D0CK&]$H=MED=8Q."_3\F]%?UBKVTVO77=E+\!ZI+_(4G>+N9'[!H__$/ M?,U+NGE)MSNI#^%:62>43_)S@+\M(EY'>T\O/"_R[3YGCN*&EI6BB6+"*%4Y0%S=/?JK-UAF'D7_MT=TN7U/9+Z]W?T IUMXTG(W9G;>.MLG82% MQF=@J7$=1*CWXZ7P_L(KO'5YU&O=%;_UNFX?\=_8H3MCLIN9-!M'J*73C60B M,@IV2SQ3<\J_1B)/-'V5ZJ\_*'EW>,&6^$?2Q4M<0>6##V% R=!F8_.TOGUG"^3C7DO[9 EYG&0:5!9OLJ MTZGDZ&.BYPE.2CR>?<<-/_\&D12%T[?<^\\$D_8SP;3S3)#Z.:6<7Y]7&U$3 M?HDH/+G_N?&M?:2(JK;EF,TPEU_.W=Z5,AMDJWU.2BWZ@4+.J"U]W//XP+J% M/V+=1 551D?@OAK6U<:QMX\J\IO7%2H^KF@'=X HH MRLIZ5S"U:OS7GVB8]I]>^*4P R4@K$Z6>OQTE?HW%"<%.0C0_[C3(;\R__R' MFFOJ4ARB(36P*)[2+66([:*!(,89\,I,?Z+P/BE,*!'*GYTS>C7>66,B*C!;PZ/':&Z@%Q*G2IJ+UJC);>HCNJB; S83O#0B6;?>0UI M7R9/A##N$KI":'M6)@6KL%(9;)0/@5B<0DIOX]^ _% M^.GUB:V,#Z>F;F#FI1*YYG,<,TW'*QO!?2AJ@"1U]9\G"G^T0I($__(@/Y(H MBZ3@KCD'[M_0MKA_*B(#"YU+6H=QQG)2*H=;LCPSY]E29Z--EZ7%#0T*GTQ7 M$ZE$6DB9TT!FJ8_*N9&(F<=$PJ\9%%'735(OF-0S1F3"0'R)K%F''VWE/])F MM)Z+&M9C_+6\*5D4@ 364D"DR"Y MAF..!U,57@(+@7\F(P@([^#$4!#P#XJ4/@-+0.S(% GX,]PA_ "?06EQ_+V! MJ@QU,A58#UJ8,%UU]$0^\*F<^Z?731NO<[&DZ O%9PT6ZWQCD PKD?@K&N+#5 ,M@8)W>*-[347. MJ@"3,69")#)-SAIZ+Y79CL;Q@FVQ"XA*_LZ'9THW6?$^M4JCW-5#@?)WMEL2':K_^1-BH/_H&3W:,X)>\*,%^X?_Q\0]!^:1X_']CI6*QQ2*+MQ!* M(Z[UW(8/@,UKS[J8N"^-&)CTUI[ ;PEP>NOP17@K>. E.=NRV_X_KF_L[F\- M9Z^M+)&F0 !+I44%[TB@*:3'?SMA0:.2KF]# C*,W1/9U_'P,&^=+&@QPDQ 85ACV2'N0_[:X= "^Z';Q2)=3ACJ//? <9/ M)!K_ZJPLQ/A#5V+546(FN&/,__'41 ,+_-]-57@Y3Z. H90.\C3.1U@/B?N* M3512);@5^M80\'_VN/Z2K!Y2^AP!MR@Z[66(%F.]Q&#&]VK!0EA9F+'Q6>RF M8*VN#9XW&Y9NF/ID& QJ;,(:GT-D&C/#KAD*K>54@RYQRZ+0C 6[-=PR=-PR M%RZL,I/P9)HR._U@,A<.Y",MP&XZ03K*!-60N8XUU13*YU&[JNH-5H*6T>.6 MV8I:2B3JP1#7:-?RH6>KQG5YF"=S C:TR2;XDE0H5.A,)U+6])[8F]9JYP"A M%L%P66G%??59H.)#_62BKOKD\3F@I=:RVEGUELDXG*&+117G,Q;S0@SYHK]9VAY @@UY.9RD6]F*W0C42Q4EF8^F*M"R\AQ M2\DLE4*5BC&AD3RJ=@IAK:,I-=SR!+2+Z>ESJ9C1BS.V+/=&**[*DS6T9)CC MIFJS/V6F2G3#B;.BW)?RDVC#&)_#CJIGUK%R+DL':+Y5&E9&DU;(1Z_LIX.' M+45=:6=Y/6C0;+O(E^MIL=_3H.7)XM?-?CE1GZ-GFH_5-#T6S8^S$VAYLO@% MFQDV?='NG&L/DEB'^7&DT(:'BZ>+;RI:.UGCN5E#KA=8MC.,H1:LZ'3Q5D=9 M-B2+K=-R5Z]G%HM1B-?/*DB\RRC&9%$.T6PORI26B6F^KIP%-ZOUJ@6V9?)* MJBT$P\/VM-2NI<^"FW%I>=/W"^-?(%Q/$Y<+,PG5-]K8:F844V M)792'^3CN;.R_)S*9=/#7,M,63DZ2!O9\+K G04WZV7I86F4RW=H9(0RIE#4 M%O",ZPP0672J6'/%X/)I 5=9X").>9C.I^#D! M[3P;K+VY9[#ENR@ M(BSG6H-/R>8R$)*8^#@0KIT#80M;A<"JTQ3'=$ H%YFT3XL49K4]$#;L.3DP M9N3(ZW7(,P?*["J'-T,$5USLW)M%G,>!IO)#:F0[C+Q$X>8S9.A/E(QXB"R@ MD44)O.UN#E5*5I<(\G+VKRN%&FFJ3!EX#I"[@'_]5!P[)K!0NS\\O.U5XJYP M-\.AG?HPB,\)CC-Q,G]3UT0C@^3H#HEL-[^2/;T78,G6,WZR&$PX+%(K68\' M"[WE(',;6++O@@+F>I5_AP$6#OJ#KQ9Z]Z 6O@[RQ0-C^TI&V &FG_'P7>Y# M_",>Y,L-Q#_L 7[=@_@'_!'/^G^Y^+-^3_H]Z?^!C'"D/^B!#-Z#^'N^SVW$ M/^*)OR?^WX\1'WPW^&8*Z#MA@7TV^_)8--B"1<4^"Q85PD+!/#185!D95!'A M9?-C>*3XP]4_$5IN)*"'+OSH8^L-+;98I@^<:$ M5_8(\=J7_F^@_>^?-ULQ?II^% ORMV2\K$Q!BO&!90H8[\B4:O\K82FC0, H MS,GPQ8 I7\^!/+!9(6FVAY: 2-B5 &K+?/N3@#]\*;/PK24@^.#0HYC-IR) M!1]L4_@H]S_'Z\AC\QJ8"D\HG0>2C\+?#[G.UP\2;EV6;>_J5!5I5%Q13)G* MN2\+[.M*<+\*#2D.GA+\OEAH<.N5?WUI$R=N^''KMG7ZYZW;\>E_W+IM#^WG MK=MVX'_D_?'E;J.7N;:Q5,>(2%_#[+Z MUD7EKR^B]\ZR 7-30_UH.#;-)+BN2?/%B#@LA!P6#R4J#?F&N*'%65_#LRVAH$O ML*T,.-%;*5%E^GS*2O5$+5U(=-;DX5S@UQ^:9+6.JWP\9@[D7Q<+=^Y)]]Y; MK^:6RM=E?%-%9)IC(55-+6(;/3A3.Z=WAL<)DPU%/##ZKA1$-WM@O6AM&I*162,\[, M#3OA]BR5&,]7MU#$47FQ3'.KDL%EYFM?HC&B5T9[93_UIOUG2O5YBOB>F^.> M)I[3Q+1J:O>EB.EPORBB;D^Z%OWUCWE.ZM\XO+.=L%H@ZO&!-8WF562H;HT2T46 MHG ;Y8M%%:2;J6&*5XOQ0&R=J79*H'Q0N8@Y%PP^O/8]X)GV<3H-BM!=)9/V ML G1QSN__FY6=I=P>]T4-DA)7UZSDA*OZ^((BJCCF;S#B#HU&K-K,5=NFM"BF"MW5)E*9Z+QFWB1 :0N:M5B,LQG:[!;I4"YM37M5J 85 MN+9EOK45N%SBSM/K"^;R'EJO3>FYDY;457QFQNM+0YN7+6%\$Y>+UKK)=C8< M7<\LLXR$5%Q+EP4H+A@"O;YF!O [Z/6M[J-\.[7>RPT^M&);+8:>F$TIP,G6 M:C$(QP)SNGF3#;MJJK5FKIR6.#,1CHT7-%-/<7&[?"-SU8SB]U#L&]T\^FZ: MO9=K?&C%%M$@3L=*R1R=\1GETOU[[ >_2[0KO4)]]*.K0 M ICD -8-T(271D^4;F+F8$;A[@9(P5HK.-!X-IP1@?U$TL@W@M^'>YAX.4H690):*-GI[[%&05L0"+GT.=N3% _D#\'ZV^[ MUCEOD57B3QQ$4KUZ\U,5_"T)P=]T H^(; J0$[X/C MR0% DY^*.RWW&@JJ+(LVL;<] _X?;U'Z'.OS2,1$V'*$5,>G)JHTM#NQOW74 MI3C:;S5$L@I&A@ V&1/>L#$",<5'O"@Y:(,V%?='),J+5YR#SD3=WD(,PB%3 M(SB#*]4$I$3D2AGI:2M-!PLZD2J0!V@^4155.[\*>_J@3TSD'YT2)%Z4,04' M.C"0MW\G$%EX7GA^BKKE+NY10UB+B%7!'<)@.N :F 23$K-30;9E7XD&%M^3 ML?U45EU!K:4GO#R!QW+H#@CR?]K>(86K;:(LXT_A8<"A;MDS<&3/( _;P$V!0?,S<;=/)G-"&%.:^!=VQ@,7QP&G$'&%97W(>.^ MBJJ:RLAJ?53-C-R:Q2CPJE-BG8HF)+3?CF9F5YX-R.%@3?+47@IA_@1'#)AR/C[66)T#5MH=Q M6CG-\Q>29->Q=WSD8/MA\VG#I=EDFZN:X0 \'OII$MS1<$T0 >(&D%P='2,: MJMHYVX;_IUC4&(?]B@,*8V,,/K[1>MUG;\5*\3 3:T4X,]&*U^BZ-%#-3Y_5 MG0/]Y!1PF%R@SQV'L:J]I6GJU+(J;:L83%7&%38@(+V5&*S@JB)SF@A\4//V M.GNR^8PUZ2=C\U1#J%I:,]-9%(;P@_F1/;\*?Y,'4*H=[)7@9"P=U%6P?TL[)#%)4QE M27=,)S9NVP;$X5Q-1!PS8 ]:-G42 ,PE[,JYN5'[ Y%$--BO!6AP7;<]0=P? MXO%7%SC\ 9]KQ;ENU2Q[0U/YTPBKF,_0S-F\#R89])L>UYSFZ,)I(F\T@R$2K.'PQD'*:KQ/< 9^VF8+]%)[B"COP;V0+ MO$J&QJZ<.D80D3\Y=L]N.^&Q]5(.\X"\1,P4%H,;XK5?E,D? FTGC,-CP7UG MO6H[WFAH:% M0DD:Y0?"HF&@8-UYOV@\<@SC&C2,Z/E$CTR#) M1$W$.^H<;ZE.XHD0?:L>!ZH!N1_97HY%68C72,3%0V9,DM253OU["+"+FFZ# MNF/W DN]_I_?I^#J\_.HH6\LZF(;Y0X3G/:_9^>$;\(?'QB9,A+SQV*7P*8, M^&,>,,21;-P$H2/HISV0T'M@!../>G"5=\&(F#_L<>(>..'9ICMA!,/ZO=WZ M'A@1](=9CQ&78\1'WPJ_Y;9^)Y"<=YG@QUKP%CPK\%GPK #C#T;N&N EX:23 M>.-"U>T]$3CQ#]E7C?#-18"<#D("IF' Q9E#.?!,WJU-WI6P6BYFW!X8W^,P M/>D9P&L:P <6DQU8"#P=T2]A(.^J?HPM_!<2_%N_9+E%\?#HO6&>[#6T$^W_ M<\'EV@FO;_*"[[-GH^[#.>>DS7K>K_SE?MA%O/:NRM,?. KLZ7&)7NB#RLP< M+>-UI6@DU.+!M5)?\%+'J<%=>4RK6!F/Z@TY51'*-%MBS<'(C ,]?OT)/46O M\S3NQQH4DC_[)@KV[GN,#Z1A'U&PP[FXG@1Y74O"K5=N,$(1B/!^[7<5W>-WH4+\ '#/6($(Z(E6M-4,L./%_UNI:!'KNX:19[1 MR KUUDMND=.?"YM*KK'(0LU4[!H%F"'NKF [OS%^YL/ MZ)8RKZ!*T^KGN':B7!XE)RT9Q5@XBWU9KAZLW8IK^8J0C$9Z M-8L3HQ+=THK+9+*U(C#+UW-DOZ'7>F_)0]:+]1\\>7AI=_>;Y"ZN[P&_#Y+G M Q9?*#Q/Y;4\UV@S;H:[K53(- NU:_O TU4>\=UHMSKV-;YR_CFEEFN]89%&[4)GSC53,3YWBP0B M\;IF;*GPG-D\=V9BG9D,Y!XSE;KC\^G#N_*57^?;-;SE>;_3*UK=VHSM-=J; ME>$;U$(WXUMA';$4?2TCVA)\DWXP$5VW&1SCA+VT[T.G?2->]N=NT[XW6*27 M'WYQ!W@?3-X'##S-E9?<OC/DL2Q.P3?7(+X?_^D&VO-UY^+9:I9.=-M&,<5.BB5+ MSJO"B@:="E_90?J&WM"]I1.C7FK@\NG$&UZ_O0NZO)B7O#5A'M,S>Q>&ZD?2 MEJPN&?DH-TFUY]C3A*S"QH6ZB6C\"GEGX MNH[9#S1-CY"UO"/W[>M5[.O]/HA9^W 0EB!V2HFE#+Z2:NV?]:B76^E%PDZ*Q)SKB); >-H%UDU7?62KE(VL^ M08DTS8?K\2UR]<8_G35T5:IE1]F\I7:S"<6ASI: M:4M?OG92:QW*8Z/*G!015L9%Q.M(/ZH.VASTX^M,-2]6*CK']NC@4(W-T*00 M/RH-^F*[/C1CCFN#7D517GO#'?53]OJVK[>_1%4_\?+^2YANTZ*J2J)@G7*\ M+RRSF4!U.$\%*NW1Y )YR4+T<2#12DGF) M)J(@.;7F 7!H3E \YAIVC3014+,(CD /*#U&]^K11 "8R26R"H,4'((#7SARKYEH[F/)F;0W%5GJL*J>5+4$AP1Z(& M-?A5020=88KX3IK.34TW>1M7S/XC+PB =@5K&YMX#GCL'=*9RU9I;ZE+!]9S M5TMX"]U J#!$:R@7O$*2!/_J$\PJ'R&*TPMNN),&H/".(W[*!0UU9H?6]K]<3S6T)@L&B_KTE6Z/VD%/EAN&RJJNVLG@H7#A 8L&$I)DP^26 ?. M%M[FT[S8YX3V,E59#_J6/GJN5EOC7W^8B#_V2N%M3-%KDRJX3ZI@?QA$L7F9 MKJYF@5(Z-,FOF60V\:6D:J>$ZB8_GH=3[>=")%]YEM,-S*P_#.T/O$PJ1TU' MHH:MT-:E.:AU??P[J6&W5YH/VT%> S]]XM9W=L-T,*37J,WW8@$6%^)@+QAG M(L?U]_[KH*[@-HD'%:Y5[;>;4-A;E5//,$""BS'RV64+^1$>^#)\2$\ME[)#LHC^U\[;!"MOOA&_43'__C3M#7$$NPP4'-^!??#[51=?DM5#2I\C($_4JQ_D!T$!10/],#U@^J%! M8-B/,C3;Y]GPD&?I(!T,QG[9H_)NHB.F- :M5391H!UXBX)9JRVJJ<3BSI0L0WX]GZ3<9VVGF/A1M3LF,_2&+<\&1UW. NW*GJ)YI#%232M-& D[B3ELIX7A\I=+Z?2$88A#/!_N#X"#:#P7843_*!B+]43@4 M##+\D ZRPG'?EB6D-EDU&J7E=;VO3D:^=KD2Q[O,R7S[\U5RLN%X+L56\]4N M&TJ5GKL@4RM+23 E&K3^11ZF,$.VB:GRQ:DU7Y[A:2;:T7*0?CG,9-6^U%K/2E"FO MSG$UE:;9V" 1LF:5T@J5-H%)M<2,^]'3EGD%;^*ZB4")6;$EUH#2-LP>B5@JU:GZ'/-,UDL:64-6Z&]- X)C(I T0:-W5I M?PXYXLV8]P,1,]?WOG;&AP22F[T0I']T:>.? 0Y%D>J#A"QA+TK-TKB M"?2RH.+H:P/H7C82,,*! ND1PI9#]+8Y8-KBORQYR21;C^VN[[!'ELA%TH7/ M889^*J[;49Z# N;$"D[L,]?4I3A$), X#!!Q"O!XQ+SRX0^X!#!#.UD=7>L4P[^QB]RR,VO:F/5W0 K=GH6L_V&ORG M'S8?IL#:#HGB-H6>'0+!V;9SJGW^P48GFA!Z2].G<,E^LTJ'RV*;3F-GGCWS MO/E?A';7H1(3V$8X\_HF5NP(G5S*U+J9TBJR'"C-3[_:OPR9VKVB5DR6GYMT M.YZL5M(ZG>H(<3CWCYZ2Z=C8M/=4_UA(71OT!/HFF00M"W)0TGZ;K=(3JT(^ MPJWQ)W@ _P3>T M.E(V*JDUR8YI_E[MB,I;3T8D70% FVFWZOO1K>L MS(ENA\-A+K!*,1NZDA6&,RV?+49:\8MB7*-*O\!/PDTFA9Z+SYU()4WS]?$G M@2Q=^$I[^GI3K6-!7IU%IVR..R8?I3MA;L%+P5(B$A-'76Q)506=F@F\*5W^ M<&G?^ U4%3-*(><][Y"2%*:E 5ZMN]2FFEKC#X9["ZSH VG.-'J5E&\:T]>^ M2*Z!&M@0RJJ&CF4%^P.$8* B&I#LR<$+EGF+&L#NC-T2T0%*162DDQV]C;9" M!G]RO[+SIDG'V(UWQW)RL;L^\)A8F'$\@)T^J*MB)M[8G%\8$N_,K0!F6 MI%WWT(7=HWVR8.)9;_\(4,8&\C[+Q[F W-]DY8[>>EZ-SSF;L7Z0MC?+96G1&-#5X22U M&(Z'EEP.R*7Y9\%+LU)/-43"VPFP&/,7D1%^0P+KB'ZPY7)RQ__I"B(9C M1]X.\_;$[,5(;2_\>L\.\5(D=68' O]H9B@[DY\NRLP>ZQ927IN-*AWURDS MKD5$V:KY1EELO!AF=P-XJ]MD=P ]..- O[G:=T1$UU\N.TMN^LU(+$0'NJ5$ MH2WTT5*QSWIB+R_W)+S^&ICQ.W+KXMA^3U4"_^I 7]NXSA;,AXG\H]L*.]= M$W C-V&A.5#NN&-Q*0Y-7B(GWQ#JD322 RB/?4(7JUE1*14PF*F!J>/(3]?M M[!78^8DX]U-9=866 -$,@/&./1<50&86P$;L9D:1 R[8',A6=&9V9'#!U"#] M!;-R(&^1/)=4"\'!#%H;V=V5DT "'N7\RP.3G>![8_<-]X2WIL \;B;)5)XDE"N*#BTQLM4!8'7P4R2Q;DV38?+_ON7L?8= M*R>W[[K#V/0ZGA'DS#%Q;9?6L7=^[]ZFZQCO,-[MJR:$C'"%?W= <@[DO3GH MSS/Y4F]4#*53EE[D)Q59&$O*^";7],#+M>';R=F%C5QNRG!DM'%VTN/<[@MG M04ZP]HZK:P>0\<=0\;>X)/VS<=U?>AH0COJ#80^S]-.WZ"\''AL@]Z(\1MR< M$4S0'W@51-3CQ)?A*0<\E;@/1H1>+9KF,>+K;!,3\SAQ!YQXXR&IQX=K0;U_ MVI/]$D*XW2;QI >:B+O)(FF)8"'0):_HOM-^/_HH]FH^ID>BM[T_CT9O^F4> MB=[TF#P2O>W+>#1ZR\OX/A1Z>_^7<1<2NJO-?HMV_O4@[V$_&WUHD/?#<]-# MC/<[WYC>6O;+6G!.;FA<2':^NC+05XK.YZSKK8OW'5_W M/_-8Z6(QT:W7>I$Z<';H\DU*?GZV\MO;3Y4^5+/M\ 9:'597&7'.2?"9XFU2 M)).)#<=JB>H>A5G[X*<*=YH5?>)#H_C7/V'=%Y*YALBQ,CAM%%4A#RW<%Q![N]_A MO'TE>/I=ZAO1=D41T8T6$[Q\W:P2QL])T-X7^S!E51%>M(,) MG5NIFURRG6J$@X)6+V>S 53KL\2-H6-/$>:*YP+?7.(=I^7'JSWQ=WZ\VG^Y M\_.JWJ?5;#HU1T:%6PP#V7(W*LET+VXC)S/1*(Y?KN< /8;$/V96B"#OO>[5 M7"^5W:%_MR)PQ8TS)7 77(S5"!PJ#HARWC'2C @BBX+X$ MPT_1D'>MX2O2,#?7AB_,T]Q\K;?7_"_W9'& "3V'6NQ+Q-F[A/CS,G4ST!G!W6SESH;=?*)Y2FSX76C7.JLX"6KN? MEH(\JH[B-RN>(MNS)9AAH]>ZK0_\BI>MD?V:U4 V#?QMW80NXB'&J<$_&+O91*I ME1KXYP-N\)X!O?6:KA?N[MFK^SJ7_X)5V_;BIKS=PCX"!N3QDO?]./H#>OQY MW;W=PDFIWG^CM0M;\Z[:OO_YG#9_ _9>Q@^YU_S36QOY=\DE72V+_&J@[Q9' MMHNU#P%D("U"CJE+RKV?9)N0F,NO@^4DPZ'EVD#J+*M-1X#*&,1J&WL*1%]+ M-CV@#W'&-(4?T&VX"]OS?1VG-XS7?3E3/\*>/9NHC.?37$$ME!+Q&LY8LU*( MWR0%;J1Q#6$\7^AT<,X$5S#U7W^"[%.4#5WCW1O/M+-C))G@:YN M@<"':J[4,X;'\,D3IFO*.:Y=6)E!Y)OG'ZBV>A:%DM/09JT2?EQLKT=B4QWV66)[P4R#\S?-0 MS0G2$#\RD.:Y41=SHV[]..,^#-L=$N8;VD) +WNO'8R#GK]B#/M&7QFTRD.3 M\QG-8$%H+Z;K9JT? 6/(1(-/+!O[#GY8(#3?/>TXA %\&+_,68/GEWE^V?W8 MHH_Z96=,D(+&LP@3:<;H=JS['$6C7E&,Q_M1.Z$5>6)>+23PR Z9H]% .^=: MT5Q#.I3QL3%$ : >S]%X9#_MEE;K#MV1^S!T=TB8UZ]P4?_^1N:04US%1L/4 M6L!-XS+\=C;9G]7914+NX\%O/5#NVM=ZKKYPKZQ+_?^!X0U-5O=K(31A,N,Q.(ZE]<[(R7> M9VB22WOS\? /?DIWB$#>,.=SB6#,\U).L1F%>Z[# P$T;*J$$2_!D6>"K5"E MT ]PW$*.C.N%0&% %VNVQ(B*B89QXY5V?6C&7.G]W=][.T="<8I<;[\SV'L^ M(>"=0@,S,G'?J[E& J9QC?<3+T)_0(Z2H@], 1,]?B/Q7P=O/[:.&;S84[7? MKCG;6Y7SYB1 +-L8^>RG)22A^YN75KRE[][<[8IF_=Z:Q"!)G]+^0.Q?U-[/ M0(\38L)SP#V2'3SW<[YV^.+/_?"--RX.9PQU_CO ^,G+3/RKL[(0WKNNQ*JC M[3FX8\S_\=1$ [7^[Z8JG'T& S^_4J'UUQ^BG^"U).T'E+OR9_S^RYB79/60 MTN<(R!.5[T=C;$B("M%^E(W2_5!@R/;Y02C0#R(Z% XB;'/9V"][5-ZUU.6J MF6[,:8:96;.!)DZZJ5FV5@/3==QRK6ZFM)AI=NC,AN%:L>8"<=:X'SAM63%' MA9X52V52@?&&KJ>,;Y9B*WTSGAG3:N9YC(TE?=RR M:NF#J9;OT[.,D7E.A@;952 ((!LGHVNM8CY0W*Q[*2L3RBA&01]/ZU#/_V3T M5!Z9FF_*<'0COC8COH'>#.OQ?NAT]#82F?FLSR@S7[R2Y6M1*Y!LP-V:D]&G M7+\_4")*D1-]4C,4YC.M2!KZ=$<_,E2NL8ZO,]6\6*GH'-NC@T,U-D.30IP8 MX<"O%[_UJNG^FL?2^UL4)>[V*$JS-RG*4(^]=9U:\?K7O)E^?>ZW?$3][A?2 MKJ'[\/OH@QI*;,1/WQ*^^/3%(MCX,%Z:H?&*#F+SF_P$0O-O^LF'__2?AWS5 M^/D(QA_SGI?>!2-PG.9!?=\#)P)^^E4X!X\1GFWZ88SP;--E.?'!5/B;?M37 MPA#OQYM_!2\;_BR\;##@CSTV+C&YB4S9#[JHU-$S\$.H64]8_AK$FIQ /ZZP M7!"Z^BWGQA..!Q2.X$<-QKDH_6MO:,2.I23)ZQ-JSF.:X["-S62^;GSK_N>-Z7*AVJ?AFW#XU7/)JYY*?O(\["*'E.X- MLS-GE//23+%RHUEBUDCJ&STX9\,S=FS#-L>>0NQ5BK3;-O^NGML=BLG7W#;R MM/G;:'-P7YN#_6$0Q>9ENKJ:!4KIT"2_9I+9Q!=H=Z<]@E:O./*74U*.]*55[?U7AM)YL2P;Y;22 M\N58L3+6>:-%P\%I@%2!NA)JW/W$8%^\^7JJ>]^J>]UM];*JFUF&S/0Z,#!3 M_*1=%WNJ54Q&0'7#Q),.O?E,P[WJ][49XT]G/$[OFIU\\B4K^<3 MOL8F&MCZ":>J\]JS+FH07$P):,)+O)%W=KT W\ 3$K>+(3$8^^PK/G%44U\(30 M4 16X+Y4T\"=$?+9*\2S%1 "PA,F8#HJF%30$WE7&/D'AXUS3#,\'5C( &_T M0XK@P"IZ1&Y M-(B9L:,0)MR0'$;C><*%9VJ,IX"_Z'2(18.P4\ Q)BYH/O^03"YI(*,PO@G@U^38U!GG&;__E:3]AQ-?I% MK'\'^VO"*@-F#ZJ,=A];\;6H]T?BNH_=C[EIH#96QJ2IXU #:252NK^?'<_< M#WT['C:.$QYL!9ZQAN7',5F@%T.;,+ICIQS:Z&#%,=?<4NE[E@7,E83 0&&5 M@EV 7.5=(:S2<*L7R\1 I-L9!:HY#*;V""6*'57;\@KW/S>&1,B+]@YT$B*$O-G MK.&I )M'HG%#9N44D/:&N^T658%\:\N=#$RS2F;I<.7B;$9B04_T\KTQ;=6: MUC,:;%1E?0LVYVEN@MKAT)0+C"M%@Q$[W58A#FP^C>M=-N-=&'-Y: JNI]/( M_#]>GO\3OU.>NFT:V(IA%F60@CT/"8>P\2&XE+JAD;MPJ?4<86=(OQ;/)RN= M"2>SID);E>+ZN9"?"&+A^CP7QPKN^2SSL[+2:):+H0U727?SZ6HA/:XI>$^B M_:?O-_>8?ZC48,NQ!V? A\XF]%JL7DU1^/9!*]91/#:R+S[, MK?7B-U!O3="C4IJ6!JE L;*I5J=+70]A]6;\P9>M.'@71TP&+\$Y=,*_C7A1 MV[W6%US2X.V9UQ0?]B;VO 0=.P!$K^Y4,("1"2<:3:KR <=\+L5VR(V!!#A98A MI#A^67AN3VJU?(6M@82]XB>(=@B8W ^(M^PA'J*3G\8-+AF_/42X%B<$*!U@ M%1V%:8J;MB NM*E@BZ9*X"@[43IN/A'QUT6=>,W;"!Q>ZYG:V=S#TRX_ $UX MA9?8;<<[J#O\/]1$76''77NBL*.'.YEC M&1,AKT(\>_@2#OA)-F8;>Q"CL\NK"*INZ'8J 4<^\)D=#,'+ M8'D$W!MD*H9X.OIV.$)/F;>(<=)$!+DFR$."Q)&$@^Y$68[Q MTHG9,T%E(>81U>%%Y?*".= ?E^M>=5@B3>-L9_HN8\',*:$J]A M!<#RBW=.!=G[+DD'*'ALFUM8!5K ]JR+B/D7#)"/-%'6ED%B0T@FW_%1N!-J'G0AI/X7@ M9 P N0UI,C$\/+5-*F S!VVQQNZE&E3-5E*L]$/X>351=XG=L8J5%+Z'2;D4 M!4QG>X1=IT^V6^,0C)B#(9)=FT+^:$\9_VFV*QU)V8EB&.6X;_@*$,9.:^.. M,45%>4"RWGO=D8NWBK4S+OAW;)@DWM*)P50$_ T_]>,%.FEJ&L@:_G"&C%T: M6'UWWK:@P1=W7?NI M+(X(50UN+T@6CG;FF-=KLM]@+7JG_SK'4^M'P[%I)L%U39HO1L1A*5P.\/3' M[O3HFM&O@\=)7$/XK01G(*;\>?]R&PP3ZB7PNIV^6"TZ'U6[J,$%'Y80"[ZQ26T4:7*[GQWAXU[5N@S^2Y;&G22S,$ ;>W?3S!?8\RC[>JZ71 MK"72O-)8=!66C5OK%50^.W$H_P5&X?8\X==7XLF@49U61O-E"*7 M(ZL;\$3I2T:L-N=[J8R8S7.U3J 4:Z[@3<09GL![ >RFN6=\U(1D!>TQ['UC M_Z#+UG&L6^2X"&]&*E9@1[?M9XI8*R?BG&Q)NCF'LRN[?T?9%82&>+=SO+-3 M6X%-A1VZZJZ72'K'''&.R<@=2UW?OG4X.)P"ZW!TWBBHIH1-!F_N6W71/J/$ MI)?PJN%'LCS=B)>P45)(/FK[*(,:JC 3 M6<6MMT0E'0Q59'OX[L9-1GLB.S=\1<5=:D1 G-,^"3QWS8D;G'S[_A;_A!># MXP;,L+ULO0"'D&0+A@.Z)^?T ,+N2 MYIPFD&9C.P?X(I^QP( \XST+$U+0G=DCA6P;MG?D1C#DO$6?JQ LD/-(S#K\ M&6[!.\DQS9P?G DOL>?CGK3"6?@1"5T>''W[@("V\,%*- AY3.0>:H_@]'U/ M#MT#>("UANWN)YR&?GD4@J21+^?>6?"BD>/+)#K>@@V17!C0@53D>@>RWY^! M0<3Z[5IB.'[$+C%OAR-(GDNJA;3M=8;M#05LA$PLY7N_NQJ]=XD!--+N <'1 MDSFG)@C;U\G>Q15J*>+EVC MQ6L#Q^T'/=S=6<'[)>PV=JP :[0O4,#6@1>TS#GV]AI MA T1GNQDZY92!MXQA[IS^V*(S:6&5^MQ= MZ<'TP2;=IL1^+N?T%@^%0]<+ SY8&<"85P80>64 /U<&\(4B<:_> MFKU*WES"#CJVC,Z%%*+P8-IVKN.K-OW0;A/5/C'=MLW!G@TVSFYV"?MSVM ' M7A_^33!,'ML\YRZ39-VW5W-Z@=PIZ3B@(['!*#CH1_D8VP\-HN%^C D-^B@4 M9(<,$XPB/GQ<@C"1FLXFA86/Y=A:OV_01=5<)580J1ZW9%OJ0%TM695>\-F4 MW(TFN&472CJ>M+36SUB+J[TY5QD.\YCV<.6(97/#I3P(DWSZDI, M]*Q@9TA*.IZ47V3BS_%\,5 M<)E )B[1J8C6K*[.E5],M ,CJRJ*CW3#3FDYV:% M=&^P'OB/7"997_>AIR[ADS(-!JUWE%BRC!/5, M*A8LK?JQ;3?I'V.IO_ZD>$V!R\=4%?MH#1PQ>[&/,Z\$ MKV,+@%SZS"$9 O2A_@T3"M#_I*H-\A/SSW_@?!2V2')'$F]UY'JUG=?:WJG! M'X,[;),?X@7;V:<4$]*$X'60[ITDCRRK0!2L8'"J -$7Z6]H:NZ%3PM/S4\] MBQ(9%$_F8!*"W^S[W,ND9.Y&N%/X1>$(Y#=#1,XR-)UD_A:+_0#2]D>9=MW\">0]W'3 M>^YE_3/<,2#<<&9I$- P\KEMIO"2#%-3R#1Q..<0'+[FTLLFW9F9.FU)SLW4 ML'?G<(J7X'2.K'?H\.)T5F<&A$#MN&#+RQW@<$]19;C70NX*&'#L-CDDGZ") MY(8 Z5U&<)X^-I9D'W#L),)5\;P:';?,$\_Q4$RPM%,.TU]S?D/ M7C*>9R?O/E'96@ZX3>2)&(%[M0\8WGD^9O.^K^?K02,=&.NS9+=B2#FI%^S* MXTL_9SZ\I.;3D0!'5U"C4D?*L>,;Q_+I[D$-).!M#$X54FM;9-)8 ))DZR)S MJHQN8E^/$-0,@$^[8.Q8$; 4E*VPAL=7J[ M0ZKD<<=PSV%Q$JOX_U#?$7L\4-\1'=5W!-H2VP-R>><7*JX=/6YA9]J.&8W; M3F29^)"5$6'\2V@S5LZPS*61Z*<:*SW=SF]&4R9=NU(D^:9E)S[ M@92#ZHB_]!,1$/8C8,\#3B3AC!^(,>(R[(B _6MG_36?K:\N5? M4CKO+2-\UTO>%F@/?KI >\0?OFZUQ"M .5RH6/];UN9^6?_8>OWI(GW?2-'_ ME@87T_P'AF9X"='EFQB$OQ(1ST+>B'UB9=\V5)\H7$>5@7\RT8E%.Z_NX1LU$0HQ.KEGERT296X>2(VLI!+C% M>E,)C&E3V# @RB$BRI%PX!JB;&_!MQ;E3YOO!XBT4ML;O"8I\'QRHUAX:;-^ M!-_ZCK;BV[G4]V#,O@:J".I:V (-8">8ADR)^?4B?RXEX7JIU9N:D.>"2Q68[V$U; MZ74=7MGA'9T]K>+R" 'US;?N6WLJC9?N+9[>4B1O[ +_D N-WR;H\ +M[[6A MN\'*JS>4]\P<>69W#FUP8^)E%2,QNM"HQF)&:)Y^]JWZK!.(1X(Q+Q#W1/VF M&_NE1#T_%SA.EYJ9F2\<8*H=/+?Q/(Y%W0[4HXP7J#]XH.Z$XMO'I';)H?V7 M,]1Z6TSL&"%Y&4Y,5NF$O6A74GR$Y]OO"J'[%1 MA;VPW9/J*^_>5Y%J,U<6(TL.<5RE7.PF1]/&;)$$J<9;^G5PLKU(_>NV\[T' M\D[AZ1<+1GR;F.2.XG0O:WEOFWYR3P-RC@+8[<[8QM)JO4D\&[S )3.)6KC MQ)8L'^]'8<>_3A;S/C3H^E&]IQCWYC=\2#%\UKB;D,Q9><:O>FMV."DJ= T4 M ]+[5W&%O1S _:7WG2H%CQGHW,=9?1!;OJ%J@A?V0TW?37+[3BVZ]YQD;AJ2 MUF?1 D_(K&M6H#V-IA/Q?LS)[D<#I\!SCZD05SVP]^3\)HG]#\AYOA;/YKJS MQ"+5#JGK5;"4*64,J#=KI_9C]"E(ZT_,!?PO<9?^G-2&OY.)/F9I5R*?5!W- M34V8 9L55/'&B_?]B$%I,CKR1* 1$BHV9) : M>A8U9(/:_1N.<)Q2L>3/VV*Q!(X,D#YYYV1'V_%H;O.(0,\(#I#?_ ,(69^X MK1S NRY>R!;!JBKQ2AG;P2V4+;EQO),C1XS@.R[$U2*=-L+A'C?C!\7T4)GW M:GSK\ZC8Y\<[/%:-F\9$U3#GADTU@7:-AV<+WO6,TJ"?C+3F-)N,AV.L-@F/ M. )P>YIOL-GKHMSN:O(22*F]&F3[-7K]5,,%91Z>+V)&ZK0"E.$ N5(PW$,G=&6$((ZXLH2YBA3=!LL:[3?#%KKR(J2N:U= X6EDM5]$VPY5##YM\I"/M9_F&-!LAGYXK^ M'+LW[T%3?X9"XHA@J3ML,"KE:+ S2.53BU2VQJ9FW$C)OX1^> ,VO ?,\"P7 M7/IO;\7JAEO*=,L2>H\E8S6AQABNGY]E)B;;%'0CO?$!G"'K/W-NO%?K<6=( M3ZV?5W2XZ9:0WJ.. ^(] &3&(3JSG_$VFN-0U 6 "]SAY*ESI+AH?P2M4%S: M<'L*&JN&C11E:+RBVVS2GP![!K-*%@VGE+Z^K7Q+2?QJ'T100F- <[11$QW\ MG'P")+G[^L@&'[9+UMO['6RYLCH41P2_3\=S'S[9&^N0@!?# MO!2 ,3_8A0V" PQT\%//N_K\;Q:U=?#@=U9:_8:VWC %[G>_GK&Q1DQMT,J+W486GU<[\8S"UGZ>ZE"J8FTVN MP*90-AM3Y-&T,NQ_GNK.I0<]K6J[40$#=_L@\2SQ+7.R6+'97INN",G4I/ < MRBZF8R#^Z::Y)?Y--LJOI_^7[9-H."_/ ZMJFV[0.245U8:SL!4'(#O6'WUM MH_2?Q^N[U\WQVK6WT1A4H.["9;R&V53(AXQ@?4+#@]^2IH>0&%TN:[^,"'+Y5R8)A&.?IC?P+P:S$(8SM M#1 T"1$@@LEV*R, B";0FKCS);8:^AZPIF)'VDC"CH%VOI$+HXEW9+OH-W%I MWKL3V[3IE^+A8J,SC!6X13L2GV7[;(U5+GU6DRNG/X(CX,:MMNB2$VA[MOI9 M>U%*K"/ST"I>F[6CL5D^91AT1L7VPEB=8@,XZ#'V?2>G4X(4S8_'.,X%5^D0 MB=MM!+#([\]I?1_B-I]EDV^!JGJ@JF=D]6U0U2VXX\281+E<-N&;F:@=X\K+?KV0. N6F<"&;9JNE*>S M9%(7G]>I:C,KU\Z!9;+IMB$O>K$JS8;FB7"\4QBLPRO<\@34,QEI%:=-W[I! MM^MPR-6XU"^5-1:8#^6ER9 VF/6L HS/,<=/E(#'JL\.D MF$I.0GS&6(VSD]KX' +G+&_V$[FT&$@MV)"OHS9C@<7,*5QSV+*VMNIFL].? M++E03'F94Z-VOX MK'"T4!V)Q4[\'*BH-!AL,M%E8CUK9(=BK]L+]C.5L?WV_XB@626<"24ZV5EF MNHG&M6*EMBGBUJ_4BV,!=JN.7)XMNIE6^2RJX27 &M9N8D&:[.K3%N>;IXNA87D\*@R36: MHA*6P\\1-(;13Y?4F-F+XD!E-F M9S%9F?6U.6ZN[.LAART'K>0L5FN4U!2:R_-.1D=#AO1YLJ1X7\OU1HMXEF[' M6',S,8<^3Q=?YYJ:D2O5+,Y"(R0&$Z5,+S?N,_3IZAO-9;8S[M1#G%SW MA4N5GG07VVC(YZJ6,D$'QDN2>@KG>*LS.A5'T4U^'YG0< M6^Y%6 G+^>-1E)G![M"\7^D43&Y95&7:5/OK33(W6A;<'-,VT'RM*9:HHSCS M##33%@8)>^W;B5'\0#7M&.F,GWH*EW3LH,[/"\8;D[W?],,]8BY%8Q? 7 J& M_+0';++G\=X08282\1AQ%XR@ QXC[H 1#./WX.#N@1&>:;H;1GBFZ2X8P7C0 M5_? !L\PW0TC/,-T%XQ@ OYPR./$'7#"LTUWPPC/-MT%(W \%WT5O]#CQ%4A M0]_,]=W)@[SKVMUOLLC7;=JW6.1;^9^KOWGVY->3WZLE"3SI?5C&_@SI?2N2 M] 3X87G[,P3XK7#CK@7XT7S[7<-;@@+?5G$L7;-L?] <##RWXI=V+)^>. MX =1E'\8N^G'9G=J]W;-8_>;[ [YPX^]K255;:YJO($\+K^FU+';HAC^/9<5 M,E>>5'S]>S_EUJ5\ZVB)%!-=S%._]7IN%7C?>MW_<['D_+V!CWVJ0NF%ZGE M796=QN-V.0/).JDJX9::J+CO>MUGQ$<%6/"4#%+L)@'@STC7W7;;VA0[M]#Y MD]-#ME*8#8R +Y_B1[EV3$GFK#JS^G1M5$?3S]4Q1]'24E?S;#P5:!?+\4TD MU:VR\,0O^.L/\\1$PT\T?25D'\]F/+K-\"S&EUN,761Q:#&TQ'-%;36--A?0 M4^'NNE:/3]FADLT]9S=L'%L,%LHD!["]N$J=9,]> M/+R]L(^@[MMD., .GL!Z NL>.=VWP'[M'G=A<(I7MADV5,YFX[Y<8E8I=N/I M?'ZP&4=([8D >*;A8.2)9EY#YWN PX.,INHZE'H?B<8W.##[KH?=EPNP?ZS= M^$[1--%:6VG/V"VF%YG^+J/AUS:]7:U9HVE0[=#L@9<:F.'H.9Z&T% Z,([$G-GQ:Q=A3_.^M M^#>_='GM\-:3N[N4NYO?E?Q64>KK9G_"K48I=KPIS))S;1&*M'K!:1(_#Y0[.9)KR>]#QV > +L"?!#1S)_ ML^Q'\^V]5U_>JZ\;O/H*>J^^O!<#WJLOC]W>JZ\?Q&[OU==/X++WZLM[]?7- M8M)O=<'UI[_Z"NZ?' 9O>T]MQA7Z8EYBEJGDJAZJ&HM&=M&]RN5:%&#%N+K) M=[@*FC0&J5QA-*P":E;PUY\8$WUBF;#WAL.S&-Z;K[NP%R_=;EO79=0L)X?0)A]H@.>O?#L MA??FRQ/8AQ=8[\W7\1XW#*+8O$Q75[- *1V:Y-=,,INXBEN:F1>[?%"IZK/* M*!M,-Q9<:+,F$*WDS1<3"3VQ(?JQ+]-Y;[X>XJC;>_/U&+[Q%\72KU\!Y@J9 MZ>)YPW0XJUL*9-0H':63!%@9JJBPH2>:O6)-!$_Y[U/Y/=7_%F'QZZJO31:% M0M;(&ERF-S7ZU0X3GL_CH/HX- XQ3\%@U-/\'Z;Y-[]TZ;WZ^I%R=_.[DM\J M3GW=[OO"0;$S64>E67L<,'VS>"==#8W![I-G7W3X*42_EA-]@$C5N[?]7:R+ M]^S+DU]/?A\H>O.DUY/>AXY / 'V!/BA0YF_63;Q[?_7X <2NNA,106/:_P. MLJ\R:.^;\_>#$>- !4(M43%Y)U(Y^>3+5_+.N=^)Q-\ER+0WJ:^=U+7UE"?Y MAWZ4"4=03 CTPZ%1J!^*#MG^(#Q@^X%!),;&0B.>';!XN/_EOXC8GWCO=J_S ML@'9]W#F!0GQ&NQ8$VRP^0954[;?[XF)O51.;2 &RRXZ1;Z A?N;C1WC@W[RTXBW=664DY@]M'W/\ MWK[: #I0#.T/Q/Y%[?T,]#@AILRO?7LD?JCJ(NQ" MOS4DX>UHB:#W@WX)9PQU_CO ^(GBX5^=E848?^A*K-K+?9+\YXXQ6%4G&F0M M_[NI"F=5'W[&;H\F\]+!JU'GHU]_FN!!4.J(2D(25#'TK9SR[Y'50TJ?(Z!M M3>!L+E#B%NX,:\,XPHO6;JHJZ/T%0W*:P]P8'I[CY%>;KKO M3>JJ)__7;XZEKO:(]L3A U4B5)76$C0 T/ MZ[S: M'C/K9 "B';B!HAIX3:(B2"8\5T>2CE83I"$8R<"]4FFLI+94,K2O1KYKX)G' M%>PN2YCG0(*I85%!]NBI-5QF&2,\65D6[66/ M5(TTM;!F4X@\GG]& CGIMOMU']%3_X9FP+4 _<_AL.1#YI__^*DFS'V/J.#A M\Z*BN]_#HZUX;>B35'4&]->WY''ZP!0:XP;P-R#PP#F<)]/'/#5U0[/(^@BA M$"4C7B&-1Q0_GV/A(S9-WZU;XEF9&L'S!/I:&]TBL>T'_ Z7CV>-8R, M.]#P7ZBYQ"MV!V@]1X)A]^#,9ZE*2RPBHCZS/\$"@@-1O& RM#'A#4P!$"2! M-_%XT"\O&,#!D6F8>$@XMUGN&*3M=%G=ZC)EJ""(,IZKAD5*LC"!1R-$9C?2 M5!F/H\)BD ',Q)QW2/,RK?U43@8!XJ$'/ 55.S-99Z+NE/ D[&%=J766?3"L MP^6=267B?JJ.VU%I>QB7RUO)%VUJ'\J3GVHC3,LAT'*&L+)0Z@"[*X0<,!$- M88."R:E1HR"N6W=KYID'X_C)EGC"7!80W65['WUN8 MHH;G.+! BOQ4!F]KBM/%"SQ_(O8":;9 84+"E&U]A^&Q, ED92;,4A*QD4 @ M<+HI3%[E%U@MS'YYJTA8@X'J5,/2X>K+DTM8Y\\K=/R)N6OC:/RN)VR K:>= M @*3\62/AJ"X1OS)YE%.$?S0RQLMB(Y@/@C[IE$W![HX%'F-4 N3&:NMILZQ M9!O(E5SG4-9_F\#I2S>K0P\U>C13'Q,]=0*)(\A^:A_&WHYB:.K0%+;N0V6) MM*6(5H^^-,=#)X/1]Q668V,&UH"G%&+!L%'%$K\4L9D $R5@_=/0!"DZ-B]X M/]N6]"![SJ[D ]Y%\=+M'0S,C*(NG9]E,#X(/ X$?YCSHN;L)L3>@ G!9AIS M6<"+.M@[7QIKV]K9<;F'>HF$Z M*\=?FR''&<*=P6T)2E9U@VQY>"-8J=H,.L54-V%KPMNX,GZB)HB7C(F R8@M M-!9?9^7J:"3"H@V\$@7'GV,+"("-L3WT6,7"K9#UX[Y &(X7*C:JCV983 M?" (."3=-9?P;4'%T[)G1(%/-[)Y2)AV>($[^_*$R33GB74A X-]QSX@!!GND,)$E"1,O2=JH/[_ M[;UIE]O&E3_\?CX%CB+/7YK#A@CNE!R?TY:E1(EM.9(2SSQO^H! L8D(!&@L MO>33/W>I @HD>Q5( NR:.9'9)%"HJKO?NKB_@#_@ V&_??D7KI=W G;V$KXC MK>6&*;BPURND"NE>6B).-()M5'.'\ N4TXPT+JJJ9>79JV!57)C33;;U!)38 MO7A>LX";/(\7@-V#L'ZE_RXC.*!&JM^//F^6:'Z6B.!Q0J YVS2:>GB+?X*D MA'Y)! M606"4!![N1:,[_,T)ZF58252 8E*(KX0A<;$*#$1)R+%\]T@78@J>?S$Q<25 MS$@4RDQSIRBFE/J6_228T>4B /&_A- 7'P]WP$1 20$# 3=SX%4\D53"1^+V M^-^P3/3%9)YR$B<5Y-2 E)K*19$6^*QE\OLK(LOB;-[32NEM \+)(Y? MWL;Y()>2QAEG;N'A7JR86*W'EXNI2@<_@T6'ES4/4-21X#A.GK)]0J<.-Z7( M*5^X82Z49$AZ8EZ'_:NUY74*RM4&=TQ@P6Y@<^7Q2L47'35D&N0X+RU%%32\PNAAQ_%>8RI/5QE MD!&+>"XX@VC+:17 LA5B\U@\H)G:4[H%/3[*2P 7*[\!E2#2AE3]E(>;+"DY@7IRF@', 89@N2VQDH;- [ MBK%0+' OF#^#E%,NA^='*6<6T3"!IM(2'LCO M:*]CW14H;&O5:U!)$S #TMR0.2@<=5>FU1;QI;4D30Y_ M7*(/LV9.V=U 3P+S"Z5NU?T'U+!%*@)/ 5VT)//@"I[L+D$F,_TX!]<)&C[, M%G%^#C:(SJ%)Z18FH1*RH-8ELUUD8:31Y<,]O#&/BO01RI1,,---;E*Z=>#V MT_BXY>5ERKN2!ZC:UE^ K:2M=#EYLXPC&.5K%%]&G+NA$W12$N"6_58X-+Q& M?5.4=T6>)_!6[(/9!V*$%,"M.XHNAR1"D)=TGF!("1P+CE K!9GYI1(T*(_%TL@I/.0+HG,9=!33*"8;9RL>ZY\*HVLNQ A'9)6 ME@/TQRP\B0>L:^%><"HL%$BP(JJR3HE5TG(@.O=5[A=F5SP^/BDHD C4%C33 MA+/]&)[6:79;$8[]C%%S1PNQR4<%D5U@Q0J[J:",2!"5["[=?\<).K@R;O/D MR8OT88 :< -57Z ;RG&Y%OW3<3>0-?@/NS]$U-+- L_-RU3]A!)KS0?43M"E MGF!.BCCA#_,@I23GI@;@1$ PE^P\=P(W7&J\*&8B8L1*N)-RALN9-\V$!B:)7C\1%/'@(D$ X-?*P5_AM07 M[%,8IZF@@$M?IKZ@S=Q>&B^KEW"XZ9'7'.;T(-E?!]%E$#[ M/)+4(U^B2F8JVM)V;\O>U9W8:87B.*73M%]TA)1!AW6T;TTZH]&DI#K;9P^V MG%T"%[?ZO&14K,\!;@BND!.B($)50# LE(E@;=]A_P893MZ]9DFX=DO++3T' M'Q=M7PA*II**3#572N51D88R>,?3-FL.DB KPJK)2%9G) NV]5;9*>D(D+1N M&NGR<7Y,X;MD-UD%Q(+%IB[4"EC^'<^V[Y=*=T#@')\+3DZ0\\=.@V;;9':G MJ*9#+V<&C^YH#:@!) M,Y%B5TXG)N4H.< 6'[PC$88G/OJ@*9_I54Z<].=YU(Q.0'B64X6:5FJF!?"L M4MEE!DT;TS$B\I,X)U\>/-X+$<8KIA,>^D77,N'!0]K6CU)+%&FI3)S#'FFF M!03K47TM6F!['U@2_F.3F+J*RU%"G=)XN[5%$:L0IZ]5+U MDLW0BAR*27#!F'X(5&RZ'ZO3@$#GK7F>$#<"3>++3N$\^S%,&V>*VXU:EPB# MJ^;M29N=[=CYO"@L5GD+6>JC6W5Y.JS4%] %%&94"'^G5&Q$VZIB)#W]O,<5 M=5(=6I2X(OD +@'"/7=ZML.7S-0EH$_/S[&0-M-T+>?%W*W*'WV+B@:>3"BW M[_)CU@>AJ($"PXJ9H)"AP[<@^SYW^O:X,C7P )7RTI;N@;]$4;&%>XX,]KRG MU'\1EI:Q@Z:L<.(A&:Y:YY<.;H&;RO+V]'6C13/C0FV9QV/\%@\F M[JY2\5I]T*>!3Y49+TS^>)PTJE32N'D6JR\XOT;?5-)P>JT/7U/F.<=3>\J9 MO2Q14Y./='BA]^NF,QK9O89 QCWD'=UO?&]\,GQB2P;UUGMJ:P8R3Y[8DAU[ MO(=>0\U:7L!_9ZVY-U A=0J".JZ3U7CM<]^L7J9INO MR9U;4@M^7J,MV?KZ[\+-:R"3[%9%[(E)[@^R>"/##.SN_N7E6W 63U5$7)/( M[-QS$P<*<=NV)L1[-L!X'99VG:%/>RO2;,2G&I!B3TBZ34K4WJP-B+8[,7O^$I#7/)O_ @S=B-A]D->4PD"]2=U95%?44L5?6] MYRVHG"N-[=YJ[9UQ_NKA[@1OF,8L\5Q]18>#]>D78W>VVYV&,=JWZ1P^4#9& M:9]&Z8@8Z(6LQ$A?&G/U0'.U?Y#?1YBD?U+A<%EQ4YME.31.]W:+56KS5+KY'1XPA[ MZC9-1\'>G6FW9]?H5YG8IR'6JE>Q5@,3_+0[^)G6F)\PL4_3F;2EL4^O,Q[W MZ\^DM8-3CSGV^4LBL/<)MUW9A3$YM,.PA]#G@$>[NY'VH3D0VEUD=&ANV7?D M=.CUUBX=@TZWU[=K3!Z8R*H9MO +MBDQ4=1FN5L?A-:/$X[16U$6K,Q/:$2J/Z&.NH*A(OI8K18?YUJ8##8VUCU[*OV2]81 M>_&7FZ!G\I2;AF5:2SQJMAR&^%^)8! L240#1"'$6CEC+%Y6?79V%^LTEV/ M.OL%U(.L;'M9=H*FYFX50 ]J7KJ20!-)=DW+UKK"RM;1=Y"(F[[&T7G,.&>R M^;-M_5,V4>8FE?+K3J4Q+.,A)]RP$^8(2_HC=Q.8'7:6E%V9=9"0$L--/;[8 M_F)C9%/.$K46<5&PS2SW;BQWA)K!(D!')(J6=MR(C1 ?RC:Q$D%:;M,)M3T, MKN 3;!CVYO6$ F.(8NH5S4T\:VU,^.T*JV6H"WV#NB ,ZL(V7FT(ZH*EGH@- M_M>[U^OF#K2QLC8%^JY$@Y=_R!;I!1",4ELE,DRIM:AQZS(/LV"%S0L1R*RT M?P620Z[;KSM4>/$TI:3A^NNJ#2B;6:HA(]C&-3RL$@RKA*>I(-UJZ,,>=;)E M* J"=0<&R+R%9@E35K.X/-;H&C(@C:HCM>E-Y:EM/UO$0"+G8==^L42L-X&P M;P76Q?BI<9O(BSO[T(B,9 $#,8* M94QATY;.F(LH7H%@@93 7;;UO@#16@H7.VP3W @(YL*EKKL*Z8N! %Q>-2,^ M<%]MU5_=)51P%#A!J!_41'R.CX*\Z MCD.G;,'..M,3P05:+LU'!L<5$= 0Q8PA@V5C= A)?##4 3?7O1 *7!7\4J]$ MH%,(9 CM$"%H&7HU80S#X&Q!O2"*)FX,!1/!%0R?Q)>@N\ 7U?NI2QR(#FUZ MB4[L9;D;5I;$1@@T)=!40[#H%+@=J)5+J#-=QP6,8P@/2#GHF^7^N9!X'"N? M>XV#!PVD0+>[D,@"[^QF6O->4#Q';>GEM&@_)>1GZ&Q*S!6V5BL M(&#,A=^AJ$Y%4R6\Z'^$CDL'(7$8*,!X!1:--AVAY&5G^M+6ZT"\TKB'<=F> MV:"!JGG](J%CU@ /&9F0DP>T0O@NL!_!$H47L58DH)^$.RJ!/1G=%B-<4C+618!.TUS"([#SB$-C MG(F Y:\"%:J>WN%BZ0:Y.$*K%W"!U8H MBMC0&YPL+RN\2,2VHGV0D+]I*3,+,,F6+S"8)G4L(2 5#"$JX)F; -#LY2!,44)"ILAIE3@BN%Y%W M;8&?&K$&*"%Y%4A"\4R)^R67%J4EQ&(41R?Z>D'4,U98F'A!4#.6<9CU4Q#, M??M_[X!$\3+PB!8?%*#8>[8L;7/Z&NSBG:95X-$UH/$"O40AC9+DJOA.)CAG M2>QBZ@]$!IROP)>PIQ7(=PUW68'#P9,(')#4+_MU"+7JISQND!9(*XPL2T B M! Q"(;%F @O)>2@T/(D?C.KW7^"YH"Q/VDX&IMJB13FE MVW>3-X:HQ^B$M#;EGA)F,A@?V@:Y+9OW%_X;F8\P5E#G2\30$4H E3<'8UX7 MF^'Q,AX E0A[R<\9(AT?"=U;"5"E<+7#,X6M4\1T9 MO_-GV.+X/'%7B\!+"^,T#U*/-T:>3&#H(7QVQ].,$A#2E0HUQ)JG#A\#C_T, MIHY(Y0L/9H4BA-RKH'PJO-(!_HKB"PU[F$&W]400@A#**"IQOD&6L )80+)GS0"#B$!+I1YP9EO-BA\Q1V";2! M.>Q#'S[=W("**J*#(1U=3TX45%0.PI^@ZX@^1\7A@UV#GW"H69Q#D*=;L#+& MTK!%B9%)6$H K%+#^.I4@509K(>WI!CV4KA?26@(AOHLN@B2.BB!72WB]XP!Z?R[/,?DW MZTA9]ZEP^! AU%&7PR_7OY!91]((<1.5AKXRM M2C5:&DBZFN$\.7N0@1IA=8!9^E7L8<"$,>P*13M%!#^\#^=%5\$'AU2&KBU@ M_$2X*3]@R3D%O+*G;NFS0I1NC$*EPF7*ZT7)AIB4P:-7TM>,$,?Y">DB4JHC M#N/SZS("[3!N5B+P] &1F2EZ#!%'+Y5S&=B6=:KPF!4H':EQ E=4F*A\=**0 M^!CCM=!S$O3W[<=_??CIQ)D6!.E(W$"0J)P O31G3>Z-J R=B@?QXH[I7Q1 M$1,CLJR\14;#)84E%#9E.C'_%N?I&B!N4110T$AM]OJ3Y*BT;_K4W9ETKW'/ MWB!V-NPB^]Z@W"FHSZ17BIXK@1?&##W*;'3A!F$1&:^1,OT:4%E%R&"^:P]? M)$@<-&!$KP.DG(DI7 NV'PQEF3U#<#*T3=)IIA2@;:F !($ M$B!J)V-F_BV'?8"UC#,PX>CYMHE1=5#B1$3FGUBD@05N+2+-0F%+JK MR*L5B?,4?:KSC*;0RDJ(@:F$,)40!ZV$J*AD%,@?Y<'YYX60B>IM>JR#L1N? M&K%S1'E@^B(**/5U@Y8!O4UF'\!2BCSO3=!HF:\44"[I0>H\,_+-#>A.DM-#,3DY$FE M>*5(X.GG"\49#!),*VOY76PZ-YSD4R^#12G.9_!D<:=Q_^ M;O3BFAK'HN%8B&H*MQ!#REC/_BWAN8M4J@NDBU&$;F(PWQ) MYNCF,TP\"J\\N$C&L590N<$.%9'-.&9.4@SH],R^+SQLCYNJ(>^3>:*+58AU M+E0&6$KV]A2_BI6UW-E&QLR8$^2FFP]]5%$<[J->EY#((AB-W5(IV64EBL2! MUPY%[B1WD&K98[!08-C7)K"3&?ZR14RH=:796SN=K,T_B:;FP3TUA71 M,H\XKRSKO7:0/;ZC4*=,8,N /2TB]D2F$F9"X/L3E5,+U$CGI1)'%LH6F%^0 MT@]L)/R-A(U\2R>@8F1U5(ON>(^QF-GIGOR=E(9VHHF: M3"[U)P$Z E;3EE(?0?=_,E+4M5(<#LX>%TDOUE/LIUT]&5]Z3%$5^E'K^%8M[>BHN^5P^_;,V M78T4O^G3+>ABR]BE26_6N%;@__G9V6PTGG>=WNQLUNVZ9X.^/SV;#,>C,[?7 MFXFYZ\SG@]DSCNQW,?';\ 2V,^(+/P83G,BL&CA5L-/IR]<%[,#^T*:G]W>N MZ67+(O?%[]-ZN(Y5*EZK#_H<4!G)+!$F3#Q.M%3*K$^Z=G>,ARB#R6 M8Z6K M;DY7;:8$LT3-1S['X;7>KSO!8&Q/;^TNI25_M/'Q: 03K&JSU-]T;O6:$WR7 ML#UWYM5DJI,>K"YU9R#<>29VG%"[F2$> C]>YD6_^>7SX:UO'AM"[(L0CCT> M&THT@!(]^];&*88.>Z+#V+ZUAY^AP][D83PPA&@ (&#WRSOS2_M;-9YQ;&0G'PN/.WTL M/.Y@8D\/CH[[+6BX7^@(Y!<^ GE7/0*I#6)Y#PU3[]J#W3'1;A19JW?%:!72 M*H/':I5>W^Z.6ZU6\/"T-O5Q>YJDEK7>?V5\6KKY[\9JZV=O9H-\2*_*M M2[V!"XQUJ,DZ'+K!_">N5:JE+_6P 0WS:^E$S?FZI@'./09N;M@?=[K.J,X6 MZX=!T=G26'^;L?KF]5%FZ@@HW^W:W3JICL[*H$0'2)G\E9VWE/O']3G"Q\GJ)BT M-4U&$'N,X>GUIYW1L%^S"FHGC>\XGVTD!2?=.J%0=YZ>VXVUD"ZM43RM8=OI M: JJ9VC43EO53L]N-?'J\U&/V2$]M/_]%VH+RDWLCR976[ME:'T0W)N.._U1 MW3[HT=#Y6%(=4[M6$C0T8BILO5+&A)/Q3?;G9=JJ:.]\D:J9F&?4ZXY[)K+8UQ>%T[5HK M2%J<66TGT[54;?2'G6Z_9]1&6]6&8S*C)C.Z\\PH(B<@/I/+7:+=-!59C6?X MF\L[] '4OK,5AU[O+6KIOJKH!7#\RR,+;H\Y?W%ONG9MIU:Z'GTJ]=#";)37 MPYE\Z/2,\FJ/\GJ,KXP^F=.K\47<1E#YT:ZHR=8V-EM;0O %D1[@>%4U^S=WCH=9FJL,TWID9=4ZEZW&F)KNV8[*HI5&T+NSJ=_K36=P"- M2FHLW!L92FJR7L>.(-Q[^,S<%3[_;H/T-I)M4.G+0YZ MKM\ZI6XRG'OAM4&G.QX9_= R_=!NC6Z2F6U(9KZ5V+H*FAGAH2_<,*="4T3) MA,ISJY^CH>J0I32\.X^3UG^9S*AT_L@3G1W!Q$WEL;[V0 M6@.F;VC8^K_L4N)VT-1KJ M(/0[U(M-[5AD.Y.]']CSG8EYG CE!V?N59V ,<2;CESH^+"R3WSU:I30:=B:]8^O%:712EGOJ-8#"1YKT/;(T[V]) MC"N*(PO\W!VYN2:-TAHUU!MUQOU69WOW'XOO)>ERX#6:K*]15PU45Y/.J#LU MVLIHJZ='1Y,!WO5R?Q7[:%M0U_Q2G^6F M^.K?3\(3RYE(.%G3=SI6K]OKV]8'^9Y@D*29]4?N)IE(\'KX=="Q+H65KF"- M5AS1"X1QGFQ]1A!EL95=QE8J5B[\*K9=95NGP$CXT0W#:QH< I=5*#+ATR1< M[X\<=I6'A*=]SI=+>/:'R,_3+ GOGG]]:+W#/>]TW?"W] MX;QY27AL?[/^VUVNWEB?K5^$MW C% L<(4M<+XN3M ,C>W8QPM_HZL]J")C? M(O 6%DC0PDK$*DXRW,K;%Z@H,;Z%$K^X"0PK*3" 3=%7[7(=3YC[L">($@(; MGH@T#S.Z5XZ*5\Z3>$F[!C^OA$>0<]H&6CY,TK:^P 6INP39S[!$"/?;38(4 MCU+P?IR!!:1#7NC@_'R1>DDP@X?/1!A?=BQQ19-))3'4KES"M?2T!"Z%T=Z+ M60+,A?ZPHOI.<5C^+N[GK,V91">TV@+G:T@K9 PNY$$L2Y[OGMM ;,O MX*&LW_S@XH?OX9_B38Y0N DJ](64_L)30RT@G;MN][N=6&!/8"\9I7:<7FE_ MI0W&P_]BUO3O?^F3+RW,B7PC1?J4VJH6 LW\ZQZ9G'-Q,DN$^_7$G<.#7[OA MI7N=*H]D:@\/6ZY]BDJ>%/N;*!8P]V1"K--R+_2'.. M7&N1B/F?G_WI2^QMM6CX&;R"9.F&/.PE3U=^]>R'+VA?48Y0>0(CI(6!MJT:W8!O=IKVX8U\ M'VQAKR #/>+!KY_$A8AR\?VKX =95"V_(2+O: _1B8 M?TBN -S;[]J3[SIHS9Y#."\OF/$%4NNBGQ$7"MD"(@4QZ6A6YV@LU7-*%>Y: MO9X]_D[_!0P*SYF8F$?55+R+UAA(P:BPD36!"*J\7;L'9Z+L:F$OI1W$>]DN M5?AQPZ2KJ8!VO6WX"\A59LVL@2!(#6P*=OHH,VT"P'P8N$"\3 M>3:KKIY<#U3;87R^L37@)RQQ@FBM9@*> 9L+84<.3PZ+ITG;EX'S%8'./^?] M@/OR.>Q0GN!#4R%=LDFD>A^"Y$46E^A,I*NTUYST5YTML!*+XYP61*\Y3V-BTT(QP M.=( S''Z\G63-!FO37D7G+D"SR)T5ZEXK3[H3\6]DG8839+'IDRY4F3XW3R+ MU1=L]>F;BG.@!<3RFM+[ K]DROY&EJBIR4W;_UAHKS=)JX\

    T],BA DBFD %<)F,.#2!$!!$W KG8 CQ,$(\L(C\SD3? M_E8]@1_UP[]9'/H/:A>XLT#VF_=@LK$%L\J0^HK+MYEFU;5Y<8@+_O,SI_OL MD0L=.?;HL*^:3FX[U+_'WGQ9)$)8OV!916J]B_!TK*AFV=BQW6BD!G"#$?(C M$?+-?V\6^\%CI;XWLMLM]'C\7I-PWY48:"H7-'2U>Y7[>B2AWW91Z!^SG;M+ M%!YG^0Y=72X+C%[79L8.O:!#O*SL-("0F]I-#?L6EC%+ ACFKR*\$+@T'-*- MTI/-<1\2X-60]3.[UGH9:\&N\2FDV;7'N&AFU\RN[<6&-N!MZ;;MFK&ACSSF M.O26W1Q1U&'KFL83^_*,&M"1>U\==O:>-RW>:!O1^-I+HY^Y5KX->=!F\.GM MQ;H-[HS1.F0*I^-,AIUNO1WF]LZCNS46>VBT5C-5QV.[1K"8 R2BOZN9BH?. MI>\Q0C!Z0;3^Q>W8[UH9KWM/!49N;(!\U^^G'SP>] M7IV-Z)J1BJ^C$UTS5G(HI[^!?&_4_3>)^7#4Z=:)B'5HEZ_^D.,),(%C3XXM M_?_-@Z];:[/M Q M0'W!Q+$1N=NM$Q7V$,<"[9SVP:*"0S.PT;[W/80=#SJC08W"V?+CA*.C<+VJ MMP$'#OOJFM^@[IAZIUELAKDL*WQ4-TRMS6QO-+('EMYAMC>UNZK#+)9=V%WU M\QW-:^_5??;C''[CWN$TA8[U?#*VA\4CN(DY#%)T?M?;O1?M\K5.LM@B5>LF M^]P93^QI,1ZU-\^R))CEW$QS>Q/;&QO.%NU@5TD VPST6ILB\(#>,K;HBKO9 M%Y:[P,)L=)R!+^(*&^:7'>]?/!\,RBU_V<'KW2B&L9*[[G/L7O4^O/#7.,D6 MUELWB<,@H-SXE[+5,TWZ2[69[2_;FMFNK>-? ;)@X%:G!$^8%$]X M>DVBUT51E">(6T1Q.BKISKV>03"^ZU06)]O*S^=D7D!ERR6AM/:'O7IEM=(. MN5;^+QA8VQ&=,_L3C6]TSMS65_D&3K]A:%!OTY(EGQI'_LBMKH&&<]R>M-!S M:09;@MPP0]WGQ><1C.A;.0R48"MM@A-!A C\"S5P1K@/:>:&(6\M4BD1JQ#< M .+L51+_&QYA7<;)5]OZ3?O+.A<1$"0$7@K=%"81BI1:T$>D4;"'O6U]%LE% MX(&&/D^$T'LX=X#L_!.-A8]-%XA;XN>2R/+)J8*XP+[VY2.Q63HV/$^1WT%* MEL+O@-]F@8ZUL+\+3"2)\_-%V1;\U// T0.&0SR76; C:^N\XIY<$E&-P*6H.%3^ &?+I6>Z9C^F([IBN;[ M[9A>__;6U4+]WOW152^G;^N.#O9W>"L\M&E:M;_VDJ9[6!,(X=R!LVT(L;?& MAGW3"[H)A#"JJ2&$&-L30X@F$*)G3TU3[F80PJBF1A#">$T-(83QFAI""*.: M&D((\)H,N$\3" $280AA"&$(H7M-QE@W@1#&:VH((8QJ:@@AQO;(P%TU@1 ] MNVOBB!H)\< 7K>X\(6U7Y_G=Q+*-;+!>3Y_][I82[%;UV?]%@6W9]LK%#\)3RQG(E%R41\2Q>WNZ]')Q4'?W6V@7(PW7I5L ME5Q4C$5]0G&[!]M(H7B>!:G 1T2]O^V*)]D-FK=E6&;V22= M$VAFUUHO8RW8-2Z#,KOVF)#-[)J14&-#F[EKQH:V5T)WV'2?ZU<.O<"#M&TQ MZV[&NEN@!KB4PNR:,3E/14)W:G)&38/7VQ-ANPWP)?8%"K;WH^W]@((=]JQN MC_%5ZQK6W55EU\AN98/.J#?N]*:#%I53[#L^V<-JZL>\Z=>=6]MO"[J:J6CT MIM&;->O-+NC-::]6E)8#Z MT*LZ@UZ_,Q[5JQE;VU_^KC<-&DG#\;C>%L8[KI"J$WJD":5.^\%,;,+!4H,* MH X-*+0;]7-C"OS0RZV]KWYO,NCTA[7G,0XM(34G,HZ?$WJ.72]T9@/JBFIR M]!O SD;A&X5?%Y!*;]H9#&I$2&V&A.R^LN;(. $4?KU,T(#3[_HR.X=>R:&2 M/0WD>Z/POTWA=WN(GE5[7NG0$K+[NI8CXX1>O_[LU*&9X)L35@?(3M6.E?MD MSF@/CGFWHZ.*@Z^K9DTS[$P=IS,:U K-W>I3WHW&".TG%XV PZ$P']9ZH MMKR.Y]B(7+OV/7BE3[U@Y>U$JE0 M2[AB/Y2:9%(8-[/A_;48=&8*:QDUW(& M]NB[$HB8D(DW6LD5F)8P,@SCC-:'B7P8JM^WN^M#5>91'6=@#P:5<224N/@C MAQ4&;JBAIQ8PR5Z8^PB<6H4W3TM\Q]I-FZ"/\)LXOD\%?#$:P*W#H7"XM5QB.\&7W?Z(]M9FP," M$I]@G]X3_%0//3NW$%,!VL-/PYXVF_N1>=+MK>&(.Q/@:-OZ7-YPPXK.D_@R M6ZQ3.0-2S7+&426H7X58OI7(=T'".Y-A!=[^;JX8#>R^I;4,UGH@>R%,'U7[ M0FJ1PKRA-ME%$^0;>_@Y/2V]S+JL-UIO=/Q?E0;.1=[^1,*Z2T.LK4HVCNZ1 M/3H7)]P?VIW#@U^[X:5[G2H;/[4'CC+RKPMCWJ=D=]?N3;^SM,^X'QN;B6BW MVI95 &_E;57,6_7E'8VJ)66R>/6ZY]BD\>%/N3+028,=D6HM[=_7_ O76B1B M_N=G?_H2>]O>LM*^47SW[X0N) W#ZVYCP@=/"4+H_W(-7JSN] M;0-WX&]4A>[7. %9?^LF<1A$ZT+:=2JZJJ(SHTBDJ1#5.Y#_JBI,N^=SG-_X MJ/'$GI3Z]C!0TE+\YG,2OP9Y0]\'6]@RR$#_>/#K7Y(X3:W?DG@>9-^_"FB2 M3N\-?[VBKS5M_7P*=H$]%=TX# ;VY+L.*O;GO>G8'E2N(/!ZM&KS($DS!:B. M9"5_#)0VVEHW81#X3#H2$MT>_0!TE]B(;EI+%YVGR9I#,H"Y%)>2/)1CLRDM M+&>'K23[;>]"7WAQQ?IVJO9R@(-7G!3-@KJ(> \4W_"&].O/]8U%(^DG(*P1 MNAPHUM8"5 3LCL2E1]AZFK:7)PDBJI.IU:84+&&H"UB>N!)>3M8.[M#0V&$- MMO6[L!:NK]'Q(@YSY#'I4=TJQL-UH;S$I2X"@8^5SU\2"+SFLY73N8_3UNMI M\LLN= 2;@5QRNZ,U :M>\;/2T)Q#LM=@@LD$N G"!XA#/ #WX(EP@! 6Z;SW\A-79*?SIO7FH: M7/VD:^_>V!YO:N]>%]B$M;%$=:]N,0<*WS!@B]>EFT%F*=+K)VE*O:I=+P<)]OL60/_O!DGQ2 MS@I7#%/FZ7MQFG'0I\5?'2L$RHM;(Y^%<'T///<,Q'[+?NB[T"_5'*PGP2U$ MDK")U.68C%094-]L\&ZR=[>KH()"VYD"1JNH'V==_70YP<*L(PD3PN )/HBG MC6NCN[.JO5>3.)!WUR U0L;\0O.!-)Y6!+I)V#K63'ANCGD/$$L1HA&WT,-+ MT2:*^5QXI&B6L.MY0L1G\6;]PR2BE(3N7OPUOD0B=AXV$W@F6D /A@@@WH2% M0!0+7'3.^@^YV?/$"LTK?$!!P3& UR,O6(6PH< \,X',2NQ_K4\:%P/79]>D M#,=O4N#4R(4;0:_*1LJE6#@C#\HQ=!=I>*U^J!/ Y\J M0W&,2CV.9E4VA6)_-\]B]04'_O1-)3^@)-[@P@V@6*MQO[>!#$MYO188>/!?SKPT+[.U_HMP#Z M?5DD0EB_P ^+U'H7^<*O"=3O+C73(C8W$FXD_ X)/P9(3R/X1O"/5/ ? @7? M>ZPJP"/%=J/[U@@ _[39H-W@YS5".^_<&'R[&R"5_%K,V[TA(JSPR*3@D?+>(\=2,_?=D6?=!TY_#077)4U4%M\GKH!1T"!*S? M@(:F=;QV*P\,#["4NE_"'/4ZXUZ-@#V&MX^!MP\#75DW;_>'G6Z_5Q^-V08? MFL;[ C$\A&O]LTC3UUJI*Q:C4A%D%. ;$U@LFV"BO?DNSG+0AUY8W5F[P: SZ-?8&- P>+V],H^R*\D'+#X0::9:CV@-1HJ?5,.*LOW#\]Y:#RCJVC&< MVE/59\0>[:I'E)H%?ANL3_'VQP2I:DKA5H;!]_I=V:4BSK,T-RWL6<%@.;U2.]W*<6\7;G1>-KYZ[P:)]2\WS(M& M>;#SV&3HG9M$)T -Z^,,M!/W5="X$UG!*Z\6ZNJXO-H" MTE:"),^5JHO5AJ#.&[=/_PYFUIKH=&VG*FZ/;+I6SD,)5+7-9]G+3+;;<;TL MEZV,9&X$[+AN;:GUIRPV*J9]5O-S9]@3A!=6R#=UYRG'<<\3(?MTX*96VJ]F"YBG%\8I$_+&#=]C3X]; MY>>W)$;!ESKU ^_@%_=*Z-+Q$33:JG*AW.H,+RPX*Z/WBY8QO5\D\/VBK=V4 M>Z/UIE&70;:H=I2!@:T$1(6VR[''WZWSH'O;A*@G[;K-N/TA3M]VOBM6=M05$/9.-H.34HIR!19/$)5D0T(\ MMGZ!E\NF89](TGZB!?,(JGV8]6)@#[Y[>=?.]&EGPOCRL?N!UV_.PGHQ+?9C M2X>^+3O0]M4=\,03*%^T M]PV$Y&8!]DM#0)O(MC [M]*L([LRH1D MN(&D:_THOYQ^MMY%(CF_1EFU==UCO>@A]9O=+*AM[93'IIVR,.V4M_'JOMHI MWRZ#I]4.?N #@I);RLSF5%D-!<)JF?L# A7 M2^VD7,G2;$0^J2O0VM@#,"RZ3?*CWA76@G0:/! <+/ "\R3-7?!5E6*#)[R% M8(F=NWB66J<>J/A>UQG+YM&U."!2EZN>@R[&EH[6K_4N&])L[5K/O*IJ8[(V MTQ-GLBF9))VC^Z0RMKR!\#'/PCC^VNB%2 U8-)[;*T%NY@L_2%>A>_TZB,(@ M ML2QM[7RB)+(ZI6Q;/[74B9%9%'G0>3&'0&_"_F3,62^O?>$K]0<-O!/H>+ M.#]?8(-(:C.I&IEB/'M!W1!)T")QSLT0 W#A/1!S:BOI*\_T[<=_??CIQ)F" M=P7S7@9>!P?DB)9]P'*V6J@:NF MN:5JQTKSU2J\IHZ*6>(&D>K9Z(-*OJ9 M$#[!%!+TW" 6!.<^1]T(BP)_CA6/ &^*6C%3$VP]+I=-5$$W0&09AD(%EZB9 M_AW/+"!#Q&$J!:^!1\UY5?]K;#.)9ATO*)^(D36%IV& KC'P %*1;DJ%^$J/ MC"UJH0CK1/>2E+.7I^ @B81:6J8+'%RN/0G2K[P0^ 4B98S]!6TP>^>I[/): M687L]WV!'3XA&B_[:::YYXDTG>$0]>#%/ BP)S@:"29>R!DI!85D"R0S!M&V MO"#Q\B7.TJN&0"@,%S"WG-JN(N]1+K@R:=0#X!A0F@6Y'C-N%Z0J_*!T3F+J MDNZ#H"37'0O83W@/(15A71U:(EA\!75&1 IT\C*+)#*EW$U\7+R<>BX_0Q/ZY M$(M.IS5TT!UW[[WK7'INWG M 51,WS&[;E3,4]CUJ>GP?!!>-WJ]SEU_8$GYG:Y[B]JWU.,UMVO!]^]=Q(L? MVOW=@I'7W[W6>F"CHGNIE191V4BTD>B'E=RSD+>X76%YG&MDW\C^@]\XV;$Z M:&Z?4EBZTVK!K[%=[5VIBR-F X[VIT;@]K:U1HE_S0W MX+O2^T>WXIV;IZ8M^,GQ]%WYY*-;\)./NP[=A^0M%G-1 ;7/19MI M'F-R#[V@_;UM[L:=8;#&CL! M'3KB-2QZEU5L&X?V1IUI=UJWC6P'A[8P0ETW*!^B"^R54X-1;-2RFF(G#^WK MU=<2]V"Q:1TM;WL]IS,:3&IL>FM"UJ-@ZX-%HG5P]6C2F0[J[.3

    T6N!V:R3#WS;;W"'A[-.J,G#J] M2Q,$[WJYOXJL[$'U0O44?DD=NO $M^C+@7UJ+MR0NY:U+BYN5HQP\$;MNTHK M-W&MM0 H=0>=_M#$S48FZHBI#[[4.D1BTAD-Z\3S-#'WKM?V'E]F+'IL/;(* MJQW4:-.1V<'JJXY\E4\H+C[R11ZZ>'F/-5'M6&0+0]WU?.U&>7)<6U54H];9 MF+ST@1V[W0:Y;2M6V4TYU:%IW*!HMG6\W<0#X ;581V:Q$<;EZ[;J]_RQ%NX M*2,J@7T&JRS;]!:-TIL>N#;5!+?S=.SP!?!2Y?N? M8(#'U^N:H]FVQJN_)3%,P4\9VR1UP_HM9*/6VQ2C>>?QS;%4H=SW!+=1E2F/ MBA Z76=@0E\C'KLXS&V]=(QZ/1,[MR1VWCC3;7IDW)C2T6,H+]E:$]VL8I+' M)?!ZG9%38P+O"071!^>%7:6E#[VNNGG<02?4><+!^"N"(&O,Q!H'[,8CX^=; M4&SI#/L]V?T&+^61P?L^T T_YHDUR],@$FD**@5&CN+,2C"/@@BG('G!'*0P MRBQW"?XK@YD&]*8XIEFP2#Z,897 E?,M-4Y&EMO5E(2K F$OWWW&" MB(,,APH^&X,.RJ9HA!!93"5(K%A M82BT/)#EBU487PN%EOIOQ+'$D2U83!#R2!)\TEHA9&T.4W]+W[C)M87K*B!G M%;BE!0^)+ZN0L @2NP"FM%PK7<+O%H%DQE&Q6J!*XL+#$:96R*<3('V!XNO% MRU4H$"8;;\!)=JSL>H5*4()HIL&5!-JVK5-)#WJP@ ?#SB"@[0*V;H5/PL<@ MF.97T),14 6H2D"F."=$$D=<6?=;< 054O7>##<-!)Q%GRRHBGG\*0IT!48$% MPS2V9F)MK'4QCRC'"THD]@(7A8'Y#OA'H4<##W+JMW@NJ89+H:J9;.L#"+N+ M_D,>NDGGAFORQ9_+A8@8_GJY),!KPM2V+N(P7_+3I-9 (:N Z>*M22DY M$AB[W+KUI9"^ZF@JBJ"G\YG2$+%"P95:F'"E8=M6;@ ;)F#3E3AY(KA )P)% M.\U#VG2BHM(?%M "KE^B5H:[@)51.=(+33%\]&!.MO7[=@+ ]:5,+\#HPKI] MQIK&X4-&QL9.XKR %>-LDW9";7.ID(I9PA&JFQ@&;R[!Q M]PQQ%5)B[%W%" M^*R7PB75HP$-BZL@S11(>IHOE_+Y<]2Y2C>^C<%"):D(KS=IS^:)UE%)UZ%V ]$A1KETK\D. G^EL-XX0C.6B$CN;PK6(PN8 MO>8P*Q0';^$JE'-\-OR,TP#V(_.I'H:HTHO 6Y!PGM+C>NH^TOX;&C MH?0\$19"3A)+>UP@1<^9!UFH4$9<@C$OS62Z@A7 K&RKT5J94;@T<#$O!$N" M@<1"#EZ$4_B07:"+W=AT'X]XK&XE;.I-UA'$_JN"C%:D$!&G.$Y>J\!/6Y5$ M9.N1]WHN3AAXC9R,UVX(S)B62,.# IGB=1$\]NGTJ6OWIM]9VF?@0 G*9/%J]<]QR9&@#_ER@:./=@1J=9<^;X6S[K6(A'S M/S_[TY?8NSE(B4#/NF$E2)%?/?OA"VDS$&)03!F_/RKYU+T/KU9W>ML&[D,& M[U4O;%V"1GSN#$;VB \>8"8AJD1-G\Z#)$4P>4S<2C4*6X-8(Z1#76GRGCN] MD3V]<93470JT;T%,OCUB5'#,\=R9VB-+W5$8>.59%BNX='4'QT]@*R-*4K7>C[MVDXQ]@SLXSS(V.:J!Y'J!B7+WCF$%$1[NMWSDAP> M' 8NJ2_"5/-73IADERDFK.%ID M1V%3< 2_0^L"P859X[C SC@LC8.Z",4&/8"->;"WQ9,UH<9#0@WL:EY$&V4' MN:VAQD_W40$=EE*5% BV-*5C'=-#\U#5#A7M,9H\3GD,>_;X9NV1L].JM ;I M8$&AKKM-UZ#+_B("R41)HV8"'OOT+\D7IK]2Z=FN"0.)@+ZB&^=M&/:Q#%NV M7;HY-E:<.-_2HDERXM3N5SE-Q3GWM'0E9\&OST>WV1FE2&, =?S+)-Q8[!3FGSBR-7#/5 ?](38$ 8Q_(QXQ3G&4;( MZ +2@-*"%5.[R8(]=R::_2ZFA7N*(3(,A^(!'U,@*,P8X7H=7A%=E7%Y.**0LHL3_"B58A) M'F(]O>*/ G>N^R,78R;" /R"M)74V;+7<&-5R RF4 >E=G(C>N]:_#7.RA?0&]!X3*X$M82^!R6A$\H MMZ/XF?+L K95LY@7E(57>N[A+L'UV?7Q''C M-ZG2NI1QQA17VE&N-,2N,# FQJOS2Q=Q'OHTQYG0ITD92 B%(XJ:HJW&JO>X; M^ID^.V]>LH+&$-.%65W1D%(U63*/"*4 G985_.7:WZF"E2%Z28)R [KC@ M<0!>@&/;UN=\EHH_84_(5\?_EEENO#+*ES.T*G/UM"*_ MBMI0A@7%(5XY>U)W:I44T:;DVLAS17D9S"W ^%QFUT&Y:&>/FWNR/OGB 4YW M/6I2LR6M78[DV]8I3>*7 AR:P[?+(O@O+@7B>/DR#Y7B)1,[QV?UMSX+P_5( M.Y+$DTSTC'LCNS=%[Y/B\Z?U]P:F-5O%-(^12@Y-+UQ1:> MA:U'$?"#%'B7SS+8A09;&:'[]!6#6"M+W"A%=P_XLT-' M(VC_,GDND0IPPSEL"MU+_>@A%.=DX$D&R)AVU*$897HP"<5/U@Z"RMOE@07' M0KI0A4' M->S[IL8G<1&'%RB+;\% 0N#RWO5HK5:CU]9@YTO%F##9YY-AU^Z6&DI$F.SQ M>*/G:J-U]TOM?N&!Z4$_.&'7H* ]U*R@KF9N]+4XJ8:X$4.46*:Y7$SJ2\+* MYX686CC/7; BF> !/9%@F9+RS+"<+/ #-\$PA]1]P0Q47"+G(G5LI,)$KG@J MLK,Q.T<8(8)EP2,#Z:*=P^\9^V@OW)?@;PS+K4%S\V+V$GW'JPU.//7_G:=H MYM[]^.'+3Z=P=UH$:S,!$=S+#I=$A%A_@-N4S\( 3",^BGW2Y\YXJ%$B2-.< M#HZD^<6HGXK=!)C3A(--FL3:-HBK59#P&=3?GYMK+>8&KJ#4R]P4'K#2I628L>,7M7B<*! M<9+XD@I$XT@&?&O&0QFK#M@TQ^Y5W6FL4EY7G)4'H'9X/AY-[$GUQO)J]\(- M0MQ6$UA^H<0S%=!=QA:5 (*2MA*R^BN.SM \:%0K(_7W!9TH X'V^!/>^',, M:]7MIC1\ZOJ7RFPK"_)96K./$"1%R/[::1Z-^$)Z+)\_OO]4>"OT&!Y)5>8E M=(*+RYF',:>#^2LM?ROK,V9)#,Q9YJ0Y*@479RG<2(:+UUSKB@456#MQ04DG M_O,RVHRXP9B4E0G%\027>$98M5 <_J:\WS2W.IGP9I[;],\;Q(5OJZ[A!03F MF"I4KRYLRCOZ>A&=-"0B6,[R)*5< WLR,M%/],/=]X,4KZ B'/EJ@EBXX1S3 M"6#T79D0P_H?3WHDS.-<#QW.3_!-!6)CY8K(-$-:'O*0SQI[GIL2^<&-R3E[ ML&7JA5^L:GIIS/*9JGI8NEC%6N7Y*1UWL >MU1G3M6KGE(R"AUZ.QF\'A)CU M2%+R2@7OP)9)+L!=.%]4I!:X6UZI78@YU8 WNQA9'ARG*^$%\P!3AHHB7/B MKU;P('S7VI#!7+_*%TO001E+L:H-IQV?@Q*73A[OHOY$3ES9UH(H M_IOT)M8\X3%<05UZH8/*X;EJC%^3F2%#40E '$6"ELW)K.%MXAA4?1E\\!DCR8+>(:\.SA8\;E MU)NSF0LL@J="-]*P$*5UO\/G]NC#BBJWHQQV;T8).NE%(/3'ST)FV3[AJ:JQ M[K=G]6]SKC9$7*9R\8"=4@#/AT/;J=Y,Z6@.6F4]"SP,$_W=NZX;LM.F)U@W M+QK=^1I:NLU4(#N"WUN\LD%*'"^!:%.9!J'>1=/-PS9AHR@U!D7FP*BJ*)3[&,F38NW;#3NBW)?-V\*RO(E/L$*\*1= M'MD#CZ$L4O5&3B^6E+/QL30$=/-O,5<#;DN%E+40JSS!1!,59*@CO.*=.+R* MJ@R"\A .7X3#C0FD\=ZTVIIY"Q+_!(LFKLMMY/==_!AL^P(L#+W9L@I0L! M=[H8795:Q0.E!)\S&74B3=5+AEJ0Q_5)9>XR1(V6EN)=7$#JGK4>R.PR3^5+ M8=?X1AH_B;\(2!H#>LT1U!H[/3"><.'6/\#3ST@-^A0JD!L:1/J=[,256=IM M*W*WV/$CE.Y]'T?]&LMZ[_?X7F5B?;P$2YWNO8*SB0)7-"^T"D\2C9/V!KQ6 ML:O*A55E#E8H%B5LI;^I)^DBM?7J0 1M*FT_J$[YEGI'RB1?BZE$MUJ)/'-# M$B$\39],->=QJ[Q8I]F&*SS/,PJLN5P/CT:TRNEBCI7Y81RT=#-VP;B4&C-H M&"6&5"WXPHJP\ZF9 J,H&- MN5R/<\!O]!-)=#G5%YPNIV\JPJ1+%U]3'EN,I_:4$_59HJ8F'^DP@]ZO_=:P M9T]N;7VKI:BU\=&7) 0GR>_J;VHO\YJ/(<#E]N_,_LL#&7JPNM2=I7&89V+' M:?_MVHBZV?>O9G5TV#0LL.$? MCG;;[/I;6> 3)9'CN?49WU+TJWQ@5-ZA5=YD8[VW$9//0S?_W9#NVI3; ?OZ M?ROG5W-V1@'N4@&VEDUNZDW]054T8AEA6H?6;!2N$$M$3=+06F2+;\S/-6K= MVH6XW(Y"]9^6-1!9]+MUK@1NW1RNUUT76A\-WU\%+,Q6*TQD-:M4I3X%-[SA0V#>E>W;? M.K%@ZVLS"D=H 9H6S8R,.]?R:*9NT]%^][0/UJ17NS4Y-)U-N++5Y@S!Y@SM M>GQ;$XCLQ>:,C8?7V$#D (ML9\0RZG3K3XD=.ZD;%K'W7HA=6LCB;33G=L0J^6A5X'677#PJV'K)DLSBMZ M?[DQ+-C.K@,?\RR,XZ]M7XC^"GKW_LRTSZ;8W'D).S_QFTT7@D"!UD"&%,!; MZ*;4KB?*KD_F>"W(M8A\EP'3L#$D]LHK>B%1)SEL&R<1W;R%&\+UYX0+I?"7 MJ5MSY.=IEEQK@ ?4"X0Z!C(*FH1OPSFGH$>".>@4[+BFVLZ4C6G*)H%M[%/< M[YH^Q<+T*=[&JP?I4[S1;YAPZQ%0):#^0B#JW'!R+D0HD64)^AV72AI$MB"I MHMAQVQ*%O4[MN50?MUQV%M+:M(7!'WG@RX9NU(J-@(M6!:Y[@4 98U](00_G MQB5/H2O4_5\4^4@(,F43L++<_ZC\E=L)]0LV(F-41NK/66DIMZ6C803/]:C# M:NYQ"T/5!Y2;?6+KQ$J;6@)VEJU*&0> .LD64 2J>U4 8P993D_Z&F&_9(F6 M@,WWJ3'K)?=PU3NXEKVEL5USRN 2JH$MH?W(WK(WM[[%MHX%CL5Y3,T)L1-@ M@G1[:IA?_(7FZS/ T(&A1QV8H^PQ)X@KM+7A:(MC " M>X!9@ITUY<+8 H* +H)5RN@5U!"2QX]E-RU$5BVZ62TW\+40!X:@XU,%?*GV M274QY>9UW']XKAL@V5!?ZR4:I%]A;&SRR;V%]>%P@C=LXSQ.BO:ILB\SV=9* M7V8"\2B!/5.%G6KY,!6)#I(F"L._#MB$/,\7[X)FL8L:_943<\+H 4H[*!I;,E\"2,(0BRT38P!4^++JQN@P6UZC& MB:X5^']^=C9RO%E7#/RSKN./S@9]IWLV&XR[(_<9N])\QX=, M+/O_R+$/Z7YP>]M]FW+HCL?G%W1 M]X0X0ML5J]@6[ !*X,F_L"A] J6V:]?U@4MID/W]G1%"P$^)9:='J8'(%I0P M]#KN4HPQ(.H1U[\0Z/IH!J@",\+HD@A2F5/W5,+8X@0)]E54RB2(L%,O8XDL MXRA *XR9%IQ3SC9$GQ39="VWHCI7X_?@DX:P,'MJ=8\W<>]HAE@0WB*" MP$RJ;IP*&AEM"Z@Q-BMY+66SCB=" \,2V8X5*+04[C$4)%Y -48WL%(TAWP M")V+]HPGQV@C)1^F=SKVD= M#08G\13BS?NE%G6^NY&SM6S=C1A'U"DZD9V!'P^5M+7E*7'[3\(3A%8LO^TS M#(@O9AE'@//@BL2J,G-J\)K>V@<58S,%=5QT>Y6([O)KOE.VX#;,\WO17[H MQ9.(=2Y2,DBL"S?,!<XSZ2T3A#1]@2L-,02K+P#H" 2C?2='_C2J9;CD[KC2UA52*]* MQB[<")>8-"YGJ".KS(JUKT_UIM4^>7;!CN>X1:[>L?XM@R"6P#)DY,Z1!D"" MZ 2=FB))$52 KW*"0*)(>*:<;_8X\!0####%(KYV-+(40$\?^0[[FT=N> V$ M ;+.0\)4E)V@*8\"7E:9LZ%.^PK$VSU/!"-!6R^$?6YW%!I(%"QSQD1?NE?T M64X<466B\VS!;=35HAAI@B I(HG X(8>(9%3\')=8/3X.41Q(O/LE[J]IP[M M^5*"FI'J2\0Y)11B%3H72\<(LM@FU&ND[180/044FX.6W;A%XE*JG21-VL1@ M0TPG0V\ZZ9Z-!XYW-A!N_VPV&_;/G*[P9O/)1,R]T4:P,<"T?A*'V,WZMR3V M!*%XG$VG_>YHVM(H8_#H*$-M!I&\W(ZG'$+#I!5@5!R$7P7##6"%F2$[Z]*(E:IL'3?(6Y\51A/9+2)>.@4E?Z@\M%Z?$2 M_O(6%._<>EGA%VBB]_>U_$,_*WCEKJ#M:_CFWY*0\QDXJ*R.F[)\[P MA6#+XPQ]^5>Y)Y\9O@EMRCL5X)UZE'9UIOW!2^G)T]0CO["F9/T($B11&)9$ M>V.7.3=6Y-H]'S,1K6R:,(Q M11.F:.*@11--C9_N[W.\+7,TU!(0@?2DN\%H=J4&_"0DX)KQ.]XH@&BR!I@0 MF E$,L82@^IY8J VU=,W54<@5"AV:!TH?L)HD2/46TS%O&(JY@\RI'[I!&4+ MK/EC$#ZT%O"XM509&3A:)IYH)0%!^+ID:X1/^=E*^<^U.H:BE.G:#9V';4FC M8L2&3*-M-KIG;+2QT8^TT3(M,QS-W+DW&)Z-^E[_;##VG#-W,NZ?S6?>5$S' M[K WZ5;2,K^=?OKRX3<:C[K#>E,RWM&_& M65H?/E#"LO>&9FMITZW9R-XUTSK,;ID4#:>][F#2TGR8 M\^A\&.V#I6W$4\Z$W>LP/.\:4!@F76$R*A M>YGF 1T !9315P4NI+"P-"OA$V)5*,6%B*JD68&BEDC"%"N[YWS&1VEY//!9 MJ_ARTS3V K> T>8:9YX=/8"/15.N"/)53H#+,%W/2W(W3%7-U8Q4:AACT9E< M,%<.\!8P>._: XM= @5Z[JIJ(BIXBB-ZO9VN+:>=(E""/ HO:^W<"-W8%9Z> M>ES>&>>95X%X7I5LW*%R@R(O59RZQ"O8)IG4*I![V:&3969YE(JP0ZZR!@Z&<@@#$55?" F2RD3>G Q W!(?&OZ4@0/ _? MG,]]8 K-@R3-"J1?(#X>LE/-A=HJ.G,3)YE[99TC"R->Z%'"EQ [,^K). MA8_+N,HPRT)Y?$8QRGJY#56W!.DJQZ-VEA15/2C/MU00I#$ZX0\+>C.**R E M[#EP&%9IPQ1GH9(RK3Q;*[NF.DX5C5W&,C=-(EQ430;D+Y'0PYVI^"/'/XLG MR@)0597HJQJ(#"(TN,>C-QWHT/OV[;NDXEJUU2F7#7H8JE'Q'SC>:2H+ ^6] M(W4O,#[#G0O'AY1^+%TF.,,Z\74!/ MM]3$K EFI&P3<6D> 4FYS$SJY8Y\VR_@(N-"Y\I:VVW61L-RIW)F=6P.4Y$Y M RF(J5XPQ]4]Z4KFMN7CWUB+^!*!X,$0T5$/!!!\SE.\G:"*< OQ)LXKC:<7 M8QD/&0]0+E3LQ@7*>* DS;7"0W?IY(53ZA>R%MS% QUD/TR$H&V2]7SR<1U^ M7XK?8D@"0:^(^&Q6R,2D4I$5;SD@[TO893[2;Q1?RF#,Z??]WLB;GHW=?O=L MT'4F9Y.YVSOSQ' Z%",A>OW>QAFYZ;HL_*"D-Z MM+9U6FH8*K#E.I](Q@B4$T9U7;Y9PV^@X3L+Y ,KUZ.\ $OD9)U:L"S4/+VE M@=I-GS@KP&]=0J/=9ZD%9\+I.[/N^&SJS,79P!E-S]S)='HFNCU_,!C-Q*@K M-K1@[Y]@1<^#%/TC_[,;@D6=O_L#(M;K,F/?4KW8>[1:U/?$HDU!V\K;HI]D M(!__D_T\F4UYTJF4^Y/VD\!\7[FUU0TO-MBZ83SQ_C+&:EFKZ(,(BC^0%.@G2^:"?I9_Q MDM^^N:#D2)K%WE=T=U3),/QRGKADC^6[!%:^PK\++Z8R]DXV!-RSO"_*FKW.;&:T_L3\ SY-/(> MT"N8B?)=A_)@6LV> C&U2MA4"'_X;=RY?AG,+<"@";_"#RN]VGMS3]8G7SS MZ=K3K7O#3DTYD@_NTTV!,:46M4OQ1?E\F?-9%8R4X0NC@F>XN_.=]*G='AO#X&H7KBRT\J]7GX3O' MYD#9A\P&E?P>RA?+(ZMK.]8:=U/#ALHK_\\+0;A/J\ B M-WB#E#C3D3W1Q(2\S?VRWE.HU>B;6@U3J]'@>DI-@:E3I1MU5ZFY^"24?1Y6 M5U+_S^,PY"YRZOTHF3G6?M!54?JZ2?E8ZCA9R":WCJ4F'JM4O%8?]*?B=DHN M1H)ZS B5=H5NGL7J"Y89^J8B6MU5MB97F[HK2]3$Y .Y7?-],>E[M[4"U5A4 M&QQ/ZO$@5VV9^ILLS&M60Y>P27=*OU3(]&!UJ3M+XS#/Q([%?GO.@2Y.Q9 MZFYU\C?OP61C"VX[WN8CBLU_BQ/M'4?N!WJWRS#!/IG@CECU*8C]76&BD8,G M( =W!4:U+/=;WL@E,$9>\Z]Y6;$;S_F_G^GTJ#:M\*1H?U<$<'#:_\*=%K=1 MOZ8]N,OW/@C%JVLS[FS3I+@->V"<7,,:QO4UKJ^1CF-SB%79O\_.@BM;D)4O MT-7F'!E^:(.3S!$0DQYK_?G3+^XU?_@_(;_Y41B?V?C,1M0/Z#/O+!=B%/X6 M+O#B$+_\\[/>L\?N1]<>-UOYGW(MM'0!L"#:L,*3\@5G8>"%TM2?1E&,;06D M9_A;Z$:MR8RV@1T:[PJNA0:$1*L<0U$_4QRG(RA?VY!E$<[JRJ)F599ZLZHQ MZ_V-&A(9 :_; 3PP ]05"Q;*P'#(+IW#%G/+;VZ@7 5E)XB!#,/4[4*VF$GB M1 47]/9Z:KUP7AH&J=NI/"(&,<[E;'E881]VGM83F=8;=; M=_;XT(1^5#>0&H[2#[WNY[4=B!\%:U-;FF/C[?J4F'1(CX'2W4YO..Y,>@-# M[3N\RR.@]F@RZO2[3GVD9@?ST*1^M-%J^A'W>S%+;G(UJ[_UINV,)>MV+%LG MDA(EZWBJ$(ZU_K(^#]'P:*L5S_L MJ@.G_6 RA0_)%!XPS]\J^WIH5C"YQ!WD$@WSMX/Y]Y!L/#I6,,G(;TA&'ATW MF&1ENY*5AS#W+0X_M]5)]D%J_3C'_N>M%=N='(L?/2.3WWIH7MB5%WOH=;7D M?+REBFQ;=>91$-DD3.^NLCP&0IN,ZBO"7-G)Q,[N^7\/A7[YMLDI]M6^05@D M8B^7 E?;^"J<)UXTZO>N-*'^-LK_8=OFO :[Q'WPUQOYCZ" M%ZIR')6;5UEZC24W2KH?.UW^$P>Z%;;IMQ)O,+56;L+ \QJ0HGP+$X&H*5%N M*>!)B21(&-,=*[T)23%(2_Q$!$I<1W8CW,.9$%&)IXA@;R4RG%V(RC[$I*G MA/3Z(R%-,60G[G)$T) K? FR8XGE*HRO!3P2IF03J_AG'=+,_BY-J:"WB6&W;H*T&@@6$,G&]E[E4Q$()7Q3,0!5=" M"R:P6?@=0U]=B#2C/^>(NYTE@8>(ACQW]])-? 8C%%XL!&B7\)ZPA$K)""H0O>*4+;R;!%+'$6\ M9,G(B 7^7Z9@'^5&B="OHJ?/!,&4$RQG@9HI;ZSNZ.R:@,YY%WR< URF;5JS M,39++/'A1\2)_!#-45,@86# $FW\;#@>><.AF)WU_,'X;# OU:D6:\1_,B M4%9H=@]#6(UBRR_V.T8<9=YNI;G>QLL5HK=^'UR!1Q#]FB]A'9Y%P'U7V2<$ MA(0'$I^?.?#_..K9E_BL?]:7?_SKEW_]S?_+WS[^X^M)\+.?BLODXN1O_WAF ML7S\^5EPA5P1A\*-YFZ8BF=6Y"YA X3GO_XUCC[EH7"ZLZ%SFB2G/A@ X;\/ MW?-GI#%^=9/D;+CZ^O>SGT(Q_'KR^^?_G<[_NKS\F_\/V(^#3/GN^?Y_OR?_ M=_W[V?F_WRV__N__75Z_^W7VGW^+4__=_Z/]W][_^G+^6D3B+%UNC_^$?Y]\<\?/P7=SP-GL?B+ M^#7Z^.[\V0\%DO'=Y' 5@CH^S,*GG3@(V4Q*#9[A1N<$OBRQU9%\\@88Y>2. MFSKJ+G"]?3$'3> CH;W@5N&;CTP(!+"P,NO8U7[P"7UC;(<3!QR9/F.*C:>C/ICYU"A M#DQ%>]7[YDMO2,B.;.N189):_SZ57L-1K?NVE@Z45_%W=2);HY*XL=X L_)3 M)9_T<2T_NI[BC(M4INW4-FIEOD/';M-TQW:_WZ+I@@&8#!\X\@.K6Q[,<'4I M @J:0B_3GK0^3#;N.S?A1A?%G30S#)(1_T'K@A.J?S$OR[I@>\C9?+($TQ=;)M M!8^M[)2V[Z@93%*^)D)PH^][-M4ZJ.JK>Q]K@C_3;.51L]U/(O62H"@C*.-) MPSG?PCD#TSOMI2>*J?T)QLI@E!X)HNH-N7ON.W( M"1 Y<;WLM6 E7BD__>\_\CA[<^?S^;(WS^2!Q"++5J]?O;J\O+3A ?9Y?/'J M-/$6P85(7PG_W$U>^6[FOG*Z_>%TTG^%JF8R[0Y'HY/I^*3;=?K.U,ZNLAK* M-N\\ ?DLO!C"I-,E5WI@R/1)4'V>;[U%LLXIK$%GJ8P)BR),@:?'00K[%V4; M1R=MDXI;ZLYW+"8/3?\>: M:J^\>DEJJF;0/3I4?:A/Z_?Y);]#M.<:N]^U> M._GA^_]6ZI M5C/6^^Y-0!&VWH/PRT9DW9._&SO>M_OMY'ACQYMFQYWN8#P83<&"=X>3WN25 MVW-ZTT%O]!]Q==(_Z]N+;-D J_ZW7*%<\KN4?6/5C]^JMU3'&:M^]R:@"!NK MOL'Q@W9RO+'JC;/J8-9'PZDSL)Z[ZOM,0LUX&ZUTT MZ\[(F/7C-^LFU7ZT9GV+/-?V'LLW$>2F!DJE"S)!#^3!?2N/U1$9ME-&C2/2 M7$>D.QY)1V3LC"=GSE[]D*U5 #]>A^YERB])+N=QDEF?K]-,+%/KGY]/.ZP6 M/D2>;9P2XY0TG[+&*;G1*2G02GK#@[LE:Q['DW#;12#PI0KAY=1"4+;APLYV:>Y&U$GOL_#P?+P*Q;5UZE''R%ZWVS..Q;$[%KO<@B9R@7%"ZMZ$)^P8 M](QC8!R#>SD&O0,[!N^#R(V\P V-8W!HJV@<@T9R@7$,C&-0DV/0LYW_,9Z! M\0SNX1GTVI0RF'9'QC,PGH'Q#(QG8#R#1WH&/>,9&,_@?IY!BW(&QC,PGH'Q M#(QG8#R#1WH&3M>Q/_SZV?@&;?0-/A#DD_6_/W[ZV?H0I9F+N(D_Q5Y.+Q*T MDZ3&UAE;9VR=L74[LG6?W_[5V+JVV[HO[E4G/QO8=H>U[ZX:>@O/\.8B^SA!0W%A"8PF-)326 MT%C"+9;PIW?OC24\0DOX$R)?!\80&D-H#*$QA,80WFD(?S[]T1C"(S2$/[LS M$1H;:&R@L8'&!AH;>*L-_.W3.V,#C] &_I:(%,A>S8NVD]#& AH+:"R@L8 [ ML8"FM78;C=_;&"9L_>:>"^L#BH'KT;N4/[F9:Q%JZPM\*<*CJU9X%9G)S#U/ M+3<1EEC.A(]]'X.(WI[0;:DOH\67[60,8RR-L33&TAC+'1C+)R$Y3]RP/@D: M&QMI;*2QD<9&&AO9<(MA;&03%(.QD<9&&ANY(QOY*G-GH?CA>S^X^/;9VZ4] M.IG%618O7VO?P-[RG_"Y6)\S%Q8DODM=1'(EB2RTW MSV*K:W7QN:_@P>K?>HA;I=RL,J9LT#*+0__-#SO M7\U^J!$WXKX3A+G\C_4^3Z(@7>QM.H_@](9,@WE(XV,O%&X"6YDMU@2FCP^I MLG\]:[A1C3@]JBY-9(MRO)^X<'OS: M#2_=ZU39VZD]< IA[*I9X3Y8Z)I/O[.TSZ58:O-9NES&%J8DS/>N;!SUIR^QM\:*/ A^OK7O MTQ=4^(PN!5P09>E&AZ9;>;6ZT]LVT+4"_\_/S@:#_GPT&_7/!FZ/_AF<347? M.^M.IY/)8#J8#B>X GPJW_'YPU]^/?WRST_O/I^->^/)<"Q_W3'[WT/5E3.K M6;T]Q+1OS&NO&E"/._NC=97XF]8B# ^T$O%''B0"S['2HD68\/($N 4>^^[* M6[C1N5!]PIQI?]"ABSZ)\R#-$AQJX::6GX?7EN?F*9B8;!&D,/ * ='@,3-A MI;!O\$,<60$\9B86;CBW9M00WT7A@X1=Q BOS[;UMT&-L M!GEFA)8Z#^-+M67J;W*-7K-UN81- MNE.I%[^[LS0.\TQZASM7Y5OEF2^$'Q_D1\A_[QG)#.SNP.SW'O<;&'QB-KRF M#7]()O=.U;+?O.UNTK2@^?'+/S_K/;L[@=FSNS=F<@Z2KZ0[+]PD !/_.@6/ M-#SQP(Y13-OP=JO\BV!+_C?(X 8/$W.)2 /DALZ- MP#]NY%L_!8GPLCCY_E6PJ=[78M6I/:TOUV,$PPB&<;SWP^/&.3\RY_SW( P# M=VG]1<3)N?'.C:(^0N]\G<<-IY<1YEL(I;/&WUNDPC:Z<:\JY#0Z;1MED9K%_#?]99,OPA_\?4$L#!!0 M ( +& F5AWNU(,J @ (E 7 9FEX+3(P,C0P,S,Q>&5X,S%D,2YH M=&W=6FESVS@2_2M8I69B5^F6G4PHQU6)(M>X*HDSCKS'1Y $191)@@. DK6_ M?E\#U.4CMB>.HYVIC"P!#:#1[_4!@D?_:+7&1RWCJ6"LUVV_:O?ZA^UNJW5\A+E&]2!5!.R@ MT\>_;O^ =5\'_5YP>,B^?&)[%Y/1OI/^<#::_.?+V"_[Y>+]Q],1:[0ZG7\- M1IW.A\D'WW'0[O;81//"2"M5P;-.9_RYP1JIM670Z=3"DCVK&-&\='U()/P>/CHUQ8SJ*4:R/LV\;%Y*3U&R2LM)DX/NHL_WK9 M4,6+XZ-8SIBQBTR\;>1<3V71LJH,!MW2#C&R@^YK,E>MN8QM&O2ZW5^&)8]C M64Q;F4@L6MK]-^LV+:?INE'YS05:9-S*F:#9-^:-,L%U$"J;#J\O<=O(6HDNGVF$F93P;YR'?(" M"I]=96+!WD66>OK=;O]';_/N39TV*>H@!HW;[".4:[)(:"N3!33F-OB12FWY M\> 51!P:LHB!1-!R+7;2H-^[/B&D3(%F@O ME09&!3M1.O=#>MW6'X3:2.4)=7Y=&"MRPRZ^OFO6DQ91>[B[=NL_@=W><^.2 M$4NHIF)L M[/)XDR2J# )@@P)D;CGC](FX M25F2J;E94D6+J3164S3GU.CUAI;-#<3-4ID;VNXPZ =/ /IDRT*_OOBMWWL] M-#6L=?(@9U%)(O%SS^P[\YTRKH4#"H:782;(H$R '6$F34HC2"Q'K*!X0;]C M::),F0KC*(IHE7G$2JU05Z/9L#T % L@[E$87Z$.+5!"4VX]KS)AZJ@]X*W> MX9[PJO0.8__+_Y24]PM/%UJ$D2MOL,BC2@H];K5D:[4$J]&.KQ,,$I2$=C+3 MNH[&,=__?M;$PJ#(@MU51H3P&=GTKA( M "E1N'FHPEG'D,TXY,M^(%X'^35@S3I&4:=$/($N1F4R=LRDS:!66>VY8E@COT';">FUNB&V6+"Z=7]8;*2N,,"Z I M4T:1TK%3P!4P4U$@ 6;@%WI$2<0E$11GGD,@N"P1S':91=$3L$C,>%8YOR43 MBR2A8]L,QC&W5 *K//> ..1_WEX<.-)@(&*(\25(J"I[MP8/B91\)2VHODKN MKTM9N*S)/>A(:.*'5&=SVWXO^(F$'I1451I0F MC5A^RZRY,A;M] P"1;72:]]K ME7*S2GP4!QSS1.P"I+-'';P6.$-=BJP^:EV3;WZWB7:6;;Y:/OR9U;)[,K&B M:G/ML11 -NFR=EX"_!')\$9ML]*.H[ZQ2IM5_G$-F#+'R=P*\8WP&"ID..J/ M)?1SD^R!5(A&AJ(=_E*5M?0$\6"M/)E>H("<3I"$ G MBD@*X%/GCE5).A?\DI*!S^,N';@*Q#TD69YB'X5Z73WZH]@M3LYC##1BY>-W M,J2N6S $,*.\:/J,9)".3)7#@H# ;::.K;>>]W?6_Y^P5J6DDF@X4!.V%\[M M@9Y[L%3#W/0Q618SE:"3^OG8[J.%"(O,[40Z)VGRL<&OD4B@/XD6:OM MX' W,-95KS4N(3 6NA6I+..E$<'RRR8$9+3:^G2?0DMA$[6!/0:\LFK9X.]J M7,L63H3D]GT.M6SV+_MN$?V=-EDU[JN43?/[&W\;)]1J$6B;)^V&]5 M6<]X.&B__F7SYJ)>>GF+L7%?M#$WF8^>&06IC,&EU>_67/,R".%;EZTY3';O M'=2JGX;/'CE[NM^&@A>&;_P#3S^%CATK"8O>1*/> X3?$!L M#-@['$8SUC]L,KKO]CM[-*OJR%5CW"NOF'M@PUYTW7\_>:,=TV$W\9YQNI.S M@Y@*%V%TCPC:Z(8"4 MVR& O@?28F<1W3?CY"_)DJ[(&J52)&Q\):**PAL[\Z>)HXZ\SI".R^K+V/#L MT>Q1\>NN5S5<]5#[\^#94N5]KSO\Y6WZSW15PH0\NIQJ514QE5M*!TN";AAA MNZ-6LW]-[>Y6Z56_%+-5?&VWK5["*5%_MGS^Y EV&O"9DG%MYM=OV@>]E2OY MMJY[;\>_W./>%CK^'U!+ P04 " "Q@)E8$TQ49+4( F)0 %P &9I M>"TR,#(T,#,S,7AE>#,Q9#(N:'1M[5I_<]LV$OTJJ#)MG!E1/^W$D1S/.(I] MU4QB^QSE.O_MP E2[)=VXWCNG/7264)6 "+W;=O%P0/ M?@J"XR+E121B]NODRV<6JZC*16%9I 6W:)U+F[*)*DM>L"]":YEE[*.6\50P MUNVTWK:ZO;U6)P@.#S#7J!ZDB@';;??PK]/;99UW@UYWL+?/SK^PG6^3T1LG M_>EL-/GW^;%?]OS;Q\_C$6L$[?9O_5&[_6GRR7?LMCI=-M&\,-)*5?"LW3X^ M;;!&:FTY:+?G\WEKWF\I/6U/+MJIS;/==J:4$:W8QHW# VK!I^#QX4$N+&=1 MRK41]D/CV^0DV(>$E383AP?MY5\O&ZIX<7@0RQDS=I&)#XVO&[Z M%OPU0LOD]=!)&_D?@:FQP4P6(DB%U[/5?3^TXLH&/)-3K$:M0V^2 809_=_M M^2^D0KBAPMS/$JHL1N?Q52I#:7]YU7W;&?:[K=Y!.X0QR^=0/ *RA5[3_#YE M1\<7D_')>'0T&9^=LK,3-OIU?'S"3L:G1Z>C\=%G-*'W^.*OW,.CK']>:5-Q MQ+=5[*N("#RU)SH]IA)F4\&^KI=3H_W%5W;VK<9+^! M>B3/V3\$PETT622TE(:2,@6:"^5AI,*=J)T[H=T.\$_R6TCE2?4^75A MK,@-^_;UJ%E/6D2MX-6+Y@EX6:9R(FY#CSU4:+%399*"0\ M[(;+@O%BP:K"ZDK *LAF+AO"D)SE^*4ESUC"*20T4[ET@>3D;@@4(A+&<+T@ MD9Q?"A=CC>OQ<:%%/ M0AO(I4&B((O[I*V%*1'AM#K-6T(U%6.;,PR+6;A8-\,+QD'_1^) L$06L#0Y M[=JR38 XNC6:_VR0"#!Q:!,?(^R*L:<\-Z:&9OPO*2(+&%\P@WA"073"ABU M3\S6TL!>[!)YDR2J# ) @X++W'+&Z1-QD[(D4W.SA(H64VFL)CKGU.CUAI;- M-8^;I3(WM'W!3M]] J=/-BSTRZO]7O?=T-1NK9,'!8M*$HF?.^:-,]^8<2V< MHV!X&6:"#,H$T!%FTJ0T@L1R< 7Q!?V.I8DR92J,(Q;1*O,>*[5"88UFPW;@ MH%C X]X+QU

    $D&1YG$$D,L2I/;2D10] 9+$C&>5BU\RLT@2.L/-8"!S2U6P MRGD/X"/_\_9"P0$' \$EQIDNZ5AQ%KG"G+3J(%=5*KS=>JY2;51(D/G#H$[$C M2F>/FL06.%-=BJP^>FW)-[_;1,^,N,=6SWM_9?7LGE2LH-J\CEHBD76X7

    I< M\$M*"CZGN[3@JA'WX&1YLGV4Y^MJTA_/;@ET'F.@$:LXOQ,E=0V#(7 U2HVF MSTP&:8K:E9)+HA%(3=A?N/"'!]T#I]K53<_- MLIBI;":(H L^K9^;Z9HQ1%YF:B'0.T^5YPB^ 20X_DFR5\NYQ%W-6%?-UKX) MX6>A@TAE&2^-&"R_K+N!C%9[@"Y::"ELHC:P]P.OK%HV^$LY3_H>&?Y=,ME%[JN42 ?Y1OXV7[C"@7";.^!;"JK&?X,J!%2'IC'3\2G73D\7&_W''CD-#5Z>/80*+^8L-?ZM6?-GZ0 M!W;W6]W^_SWPHSS0MIH"Y&F"X4?>SRUYV8G<;96'VN%QZ*OY+536JASVOF+N M40][U7'_/;])-@S0-FUV$QHS9%J0_,#D*"N""'0,T&5X M,S)D,2YH=&WM67M3VS@0_RI[Z;2EG?B5$ I.8"8-8U!7QPW P/!6:VDW=^N]B$/_K"L<9:0+*01? A.3R#BX7)! M,PFAH$0B=<5D @'/:.[#R2CX=#XVVYY?OC\Y'D'+D=1QQF]6UN9@[P863R$6Z[:2< M%]2.9-0Z&"@*?E(2'0P65!(($R(**O=;E\&1M8L6S=,*1'^C,ND?WN+K\W,JWDQSZ05DP5+ MU_[K@"UH 6=T!1=\0;+7;4/!_P45+'[=U]P%^YOBTJA@RC)J)=3(:7M[?4FO MI452-L?=%+5O(/&1&=2?US$/2H190X25667&TP@'Q]<)FS'YZH6WX_:['=L; M.#,$,W\,P4/T;"IJDM\G[&A\$1P?'8^&P?'D#+WT8GHY/ L@F#QEH;U=N+2G M]LB&Z7BD!#=8>]V>^Y3%'DYA>#@Y#\:'3P7H[_+K!M9[[@Y,CB#X,(;I\.+] M\&P\M29_G8P_P7 4X(CAZKANY^VC*,BR")7SNSOYOYW;XPQ"GF4T5#'%1'Z9 M4/BX) *!2==P07,N)/ 81GP1J\?INI!T4<#E=-@V2AUGH0U;:MZK%[N=CMM' M5DP>:_W-Z[_!Y !'7"Q*IW2MCX KZ8V^F(V HK01G!(1)M#UVJ"R2!M( 3%+ MJY2D^*+H \*\'I;T1L#?XX+A&26HKDKE#>>=>-5 M)=3>7G>[KYSA"0/=^45 LPR/YH+H<("101*4,T*JQJBR F$J-.1X3A3@;35, ML$C$::@K2=$<18X6*-IZ5LPR+#<5'1>,=/6B3Q9R+5,-,,^IT%L6MXZ5K1'7 M59=4UJJ@GW$146&%/$U)7E"_>JBCK' I 58UE%(&I2TQ-#"3I>05P=1GFM(P MA3)6LX93E%I%U@*=2[!HT\E$%9BBDK,RL,DE,JKH5RI8A"0MTQ#6F.6*O1U[ M>_=E/866>U?IM%8DUA;GN&"<\I6?L C]Y>:[M1(D]V=8HW^V5HC9O87GS3B9 M%3Q=2MI7]>]MC7_;(6B6#HJ[L8^9B8-7K,"*,F5R76G<.E AW>WV!XYB-?G5 MU.OEIXP>9('MKMWSGBWPNRS@2*$.R*\Y#(^!P2$&-1^&.;;!T.F9RL2H]GT. M588L[.DD7^ ^*H"C@5D$+US]\Q_KZ10.W+7W%5&UD?2+!09X*\08BZR->JEA M[?^+A1NI5;-\V^\?ZND_Y [J;#\]7V@:>(:V9,THH)Y])E&W$-D?5# /'';; M21R=TZOP\.@![8&&?9;K6:YGN9[END^N6@WWXY+9FUQ4E0J:@E]KPM+%5\K( M9GF8",AXD9 (Q9%B25O8?*5<[+?*#-,"M>-^RVN!GKC?4I?Z+ULW'18)/\\% M7V:1I2?Z569J?JM5P'9L1P6Q] M]U(H(07,*/+G@E\Q=6LF>;UEUCEXI=[9S-2]2-G XTJW>>*ER%B1;!9XR-V: M "8+)6HH]1=^KNHS4T]]U/_TBI5VMJ$G'_B=F \-7# MT[DEMMNXHRC?N*9JTFS=4.9E3R[2:)$9-?7+%653"_&[/WM[4G8;FZI=: MYLV7?I5V\ ]02P,$% @ L8"96+MH68-E!@ !!X !< !F:7@M,C R M-# S,S%X97@S,F0R+FAT;>U9>U/;.!#_*GOIM*6=^!D>Q0G,I"%ZW@[>W!^"EN7_N"5YCX:#?Q/Y\-BVO/+M^]/ M!M R+.MC9V!91_Y1T;!MV@[X@J0YDXRG)+&LX5D+6K&4F6=9B\7"7'1,+J:6 M?V'%XJ"3TK"P]Z,2@)!3$1.Y4'KTC\VWB"'9#*AASVK M^BYX)SQ<'O9"=@6Y7";TH#4C8LI20_+,Z]B9[&)/"YLW>*Z-!0ME[#FV_;R; MD3!DZ=1(:"218KK[:YI@TWA-Y(5RGJ )D>R*JM%KXP8))<*;_*^FU-$C"ICB;HG8+2#QD!O7ON,6+$F'2$&%1C#+A28B-P^N839A\ M\^"?')X.^?S(Z0R^]&%_VSWSP M1X]9:.<-7)IC#A0@A=8.YT=^S&+W1]#_VAT[@^/'@O0W^77#:SW[5T8 M'8/_;@CC_L7;_MEP;(S^?#_\!/V!CRT%EVO;[NL'49"E(2KG=7:S?UJW)RD$ M/$UIH&)*$?EE3.'#G @$)EG"!/'OCNG8763%Y+/4OI_L*DP,<XJ)"6>\4LPIMXZ@XBXJM\ <+*)P+FC,%IIYR$#,: MP3%+,84RDL HBI!)*(34+*7J;4":9!&^9'.1SPGVEAS6ZU1AL:<7J%:3A#Q3 M:;3./"ZLLG:O,Y@GZ:("8)\HE5FXBZ)>MO*R$FIGO[/=5<[PB(%V?Q'0+,6E.B,Z/&"D MD 3E#)&J,:JL0)@*%1FN$P5X6S43+!JQ&^J*:P0;,K1 WM:]HM7:P0%#7*Z"I/*6A7T$RY"*HR )PG)2B"DY1R5D9N,@M M,JSH5RI8!"0ITQ+6G.6(.ZZYM_>\GE++N:OT6BL::X-S'#!*^,*+68C^LOIM M+ 3)O G6[)^-!6)V:R&Z:B>3G"=S2;NJ'M[4^-X60;.44-R->8J>V'C%FH8^[]BX$9FU2S?=ON[.OH/>8-:VH_-%3;L.T%3 MLF8,4.\>DZA:H'?[WU\]]RRVZ3*63O!5K'CPZ'9',S_)]237DUQ/1Z3$,618DY;N*-.N#AHE95# M"]2,!RVG!;KC04O=W#QOK;;-)/@\%7R>AH;NZ%451_-7;5MS4R*]&S%W4=JB MAO%2GM(&T-5^6&V?6_>X8#@\ MUC?Z^(+EL!!,2IJBTKA]T+=MY1%5")/ES9.^F.0PH;!=ZFV7$#]2P-=VJK&X?<6L0?CJXG$WQ+8;!T_EM6#CZ*E)6UU#9F1* MC>+\@$2HJ4>N. M+F/?VS6UGM9LH:+:^N2RN-_5]Z>'?4$L! A0#% @ ML8"96%CO]881$@ 2\$ ! ( ! &9I>"TR,#(T,#,S M,2YX#$P<2YH=&U02P$"% ,4 " "Q@)E8=[M2#*@( " M)0 %P @ $^(@, 9FEX+3(P,C0P,S,Q>&5X,S%D,2YH=&U0 M2P$"% ,4 " "Q@)E8$TQ49+4( F)0 %P @ $;*P, M9FEX+3(P,C0P,S,Q>&5X,S%D,BYH=&U02P$"% ,4 " "Q@)E8RZK.;50& M ?' %P @ $%- , 9FEX+3(P,C0P,S,Q>&5X,S)D,2YH M=&U02P$"% ,4 " "Q@)E8NVA9@V4& $'@ %P @ &. M.@, 9FEX+3(P,C0P,S,Q>&5X,S)D,BYH=&U02P4& H "@"< @ *$$# # end XML 73 fix-20240331x10q_htm.xml IDEA: XBRL DOCUMENT 0001035983 srt:MaximumMember fix:StockRepurchaseProgram2007Member 2024-01-01 2024-03-31 0001035983 fix:StockRepurchaseProgram2007Member 2007-03-29 2024-03-31 0001035983 fix:StockRepurchaseProgram2007Member 2024-03-31 0001035983 fix:StockRepurchaseProgram2007Member 2007-03-29 0001035983 us-gaap:TreasuryStockCommonMember 2024-03-31 0001035983 us-gaap:RetainedEarningsMember 2024-03-31 0001035983 us-gaap:AdditionalPaidInCapitalMember 2024-03-31 0001035983 us-gaap:TreasuryStockCommonMember 2023-12-31 0001035983 us-gaap:RetainedEarningsMember 2023-12-31 0001035983 us-gaap:AdditionalPaidInCapitalMember 2023-12-31 0001035983 us-gaap:TreasuryStockCommonMember 2023-03-31 0001035983 us-gaap:RetainedEarningsMember 2023-03-31 0001035983 us-gaap:AdditionalPaidInCapitalMember 2023-03-31 0001035983 us-gaap:TreasuryStockCommonMember 2022-12-31 0001035983 us-gaap:RetainedEarningsMember 2022-12-31 0001035983 us-gaap:AdditionalPaidInCapitalMember 2022-12-31 0001035983 fix:SubordinateDebtAndPromissoryNoteMember 2024-01-01 2024-03-31 0001035983 fix:SummitIndustrialConstructionLlcMember 2024-01-01 2024-03-31 0001035983 fix:JSMechanicalContractorsIncMember 2024-01-01 2024-03-31 0001035983 srt:MinimumMember 2024-04-01 2024-03-31 0001035983 srt:MaximumMember 2024-04-01 2024-03-31 0001035983 2024-04-01 2024-03-31 0001035983 fix:StockRepurchaseProgram2007Member 2024-01-01 2024-03-31 0001035983 fix:SubordinateDebtAndPromissoryNoteMember fix:MaturityYearTwoMember 2024-03-31 0001035983 fix:SubordinateDebtAndPromissoryNoteMember fix:MaturityYearThreeMember 2024-03-31 0001035983 fix:SubordinateDebtAndPromissoryNoteMember 2023-12-31 0001035983 srt:MinimumMember us-gaap:RevolvingCreditFacilityMember 2024-01-01 2024-03-31 0001035983 srt:MaximumMember us-gaap:RevolvingCreditFacilityMember 2024-01-01 2024-03-31 0001035983 us-gaap:LetterOfCreditMember 2024-03-31 0001035983 fix:SeniorRevolvingCreditFacilityMember 2024-03-31 0001035983 us-gaap:RevolvingCreditFacilityMember 2023-12-31 0001035983 us-gaap:RevolvingCreditFacilityMember 2024-03-31 0001035983 srt:MinimumMember 2024-03-31 0001035983 srt:MaximumMember 2024-03-31 0001035983 2023-09-01 2023-09-30 0001035983 us-gaap:OperatingSegmentsMember fix:MechanicalSegmentMember 2024-01-01 2024-03-31 0001035983 us-gaap:OperatingSegmentsMember fix:ElectricalSegmentMember 2024-01-01 2024-03-31 0001035983 us-gaap:OperatingSegmentsMember fix:MechanicalSegmentMember 2023-01-01 2023-03-31 0001035983 us-gaap:OperatingSegmentsMember fix:ElectricalSegmentMember 2023-01-01 2023-03-31 0001035983 fix:MechanicalSegmentMember 2024-01-01 2024-03-31 0001035983 fix:ElectricalSegmentMember 2024-01-01 2024-03-31 0001035983 fix:MechanicalSegmentMember 2023-01-01 2023-12-31 0001035983 fix:ElectricalSegmentMember 2023-01-01 2023-12-31 0001035983 2023-01-01 2023-12-31 0001035983 fix:MechanicalSegmentMember 2024-03-31 0001035983 fix:ElectricalSegmentMember 2024-03-31 0001035983 fix:MechanicalSegmentMember 2023-12-31 0001035983 fix:ElectricalSegmentMember 2023-12-31 0001035983 fix:MechanicalSegmentMember 2022-12-31 0001035983 fix:ElectricalSegmentMember 2022-12-31 0001035983 us-gaap:SellingGeneralAndAdministrativeExpensesMember fix:DisputeWithCustomerMember 2023-01-01 2023-03-31 0001035983 us-gaap:InterestIncomeMember fix:DisputeWithCustomerMember 2023-01-01 2023-03-31 0001035983 fix:GrossProfitMember fix:DisputeWithCustomerMember 2023-01-01 2023-03-31 0001035983 fix:BusinessCombinationContingentConsiderationChangeInContingentConsiderationLiabilityMember fix:DisputeWithCustomerMember 2023-01-01 2023-03-31 0001035983 fix:DisputeWithCustomerMember 2023-01-01 2023-03-31 0001035983 us-gaap:FairValueInputsLevel3Member us-gaap:FairValueMeasurementsRecurringMember 2024-03-31 0001035983 fix:ContingentConsiderationObligationsMember 2024-03-31 0001035983 us-gaap:FairValueInputsLevel3Member us-gaap:FairValueMeasurementsRecurringMember 2023-12-31 0001035983 fix:ContingentConsiderationObligationsMember 2023-12-31 0001035983 fix:ContingentConsiderationObligationsMember 2022-12-31 0001035983 fix:ContingentConsiderationObligationsMember 2024-01-01 2024-03-31 0001035983 fix:ContingentConsiderationObligationsMember 2023-01-01 2023-12-31 0001035983 us-gaap:RetainedEarningsMember 2024-01-01 2024-03-31 0001035983 us-gaap:RetainedEarningsMember 2023-01-01 2023-03-31 0001035983 srt:MinimumMember fix:SubordinateDebtAndPromissoryNoteMember fix:MaturityYearTwoMember 2024-03-31 0001035983 srt:MaximumMember fix:SubordinateDebtAndPromissoryNoteMember fix:MaturityYearTwoMember 2024-03-31 0001035983 srt:MinimumMember fix:SubordinateDebtAndPromissoryNoteMember fix:MaturityYearThreeMember 2024-03-31 0001035983 srt:MaximumMember fix:SubordinateDebtAndPromissoryNoteMember fix:MaturityYearThreeMember 2024-03-31 0001035983 fix:SubordinateDebtAndPromissoryNoteMember fix:MaturityYearOneMember 2024-03-31 0001035983 fix:SubordinateDebtAndPromissoryNoteMember fix:MaturityYearFourMember 2024-03-31 0001035983 fix:SubordinateDebtAndPromissoryNoteMember fix:MaturityYearFiveMember 2024-03-31 0001035983 us-gaap:RevolvingCreditFacilityMember fix:DebtInstrumentVariableRateBaseRateMember fix:DebtCovenantRatioRangeTwoMember 2024-01-01 2024-03-31 0001035983 us-gaap:RevolvingCreditFacilityMember fix:DebtCovenantRatioRangeTwoMember fix:DebtInstrumentVariableRateSecuredOvernightFinancingRateMember 2024-01-01 2024-03-31 0001035983 us-gaap:RevolvingCreditFacilityMember fix:DebtInstrumentVariableRateBaseRateMember fix:DebtCovenantRatioRangeThreeMember 2024-01-01 2024-03-31 0001035983 us-gaap:RevolvingCreditFacilityMember fix:DebtCovenantRatioRangeThreeMember fix:DebtInstrumentVariableRateSecuredOvernightFinancingRateMember 2024-01-01 2024-03-31 0001035983 us-gaap:RevolvingCreditFacilityMember fix:DebtInstrumentVariableRateBaseRateMember fix:DebtCovenantRatioRangeOneMember 2024-01-01 2024-03-31 0001035983 us-gaap:RevolvingCreditFacilityMember fix:DebtCovenantRatioRangeOneMember fix:DebtInstrumentVariableRateSecuredOvernightFinancingRateMember 2024-01-01 2024-03-31 0001035983 us-gaap:RevolvingCreditFacilityMember fix:DebtInstrumentVariableRateBaseRateMember fix:DebtCovenantRatioRangeFourMember 2024-01-01 2024-03-31 0001035983 us-gaap:RevolvingCreditFacilityMember fix:DebtCovenantRatioRangeFourMember fix:DebtInstrumentVariableRateSecuredOvernightFinancingRateMember 2024-01-01 2024-03-31 0001035983 us-gaap:RevolvingCreditFacilityMember fix:DebtInstrumentVariableRateBaseRateMember fix:DebtCovenantRatioRangeFiveMember 2024-01-01 2024-03-31 0001035983 us-gaap:RevolvingCreditFacilityMember fix:DebtCovenantRatioRangeFiveMember fix:DebtInstrumentVariableRateSecuredOvernightFinancingRateMember 2024-01-01 2024-03-31 0001035983 us-gaap:CommonStockMember 2024-03-31 0001035983 us-gaap:CommonStockMember 2023-12-31 0001035983 us-gaap:CommonStockMember 2023-03-31 0001035983 us-gaap:CommonStockMember 2022-12-31 0001035983 us-gaap:FairValueInputsLevel2Member us-gaap:FairValueMeasurementsRecurringMember 2024-03-31 0001035983 us-gaap:FairValueInputsLevel2Member us-gaap:FairValueMeasurementsRecurringMember 2023-12-31 0001035983 2023-03-31 0001035983 2022-12-31 0001035983 us-gaap:FairValueInputsLevel1Member us-gaap:FairValueMeasurementsRecurringMember 2024-03-31 0001035983 us-gaap:EstimateOfFairValueFairValueDisclosureMember us-gaap:FairValueMeasurementsRecurringMember 2024-03-31 0001035983 us-gaap:FairValueInputsLevel1Member us-gaap:FairValueMeasurementsRecurringMember 2023-12-31 0001035983 us-gaap:EstimateOfFairValueFairValueDisclosureMember us-gaap:FairValueMeasurementsRecurringMember 2023-12-31 0001035983 fix:SummitIndustrialConstructionLlcMember us-gaap:TradeNamesMember 2024-02-01 0001035983 fix:SummitIndustrialConstructionLlcMember us-gaap:OrderOrProductionBacklogMember 2024-02-01 0001035983 fix:SummitIndustrialConstructionLlcMember us-gaap:CustomerRelationshipsMember 2024-02-01 0001035983 fix:JSMechanicalContractorsIncMember us-gaap:TradeNamesMember 2024-02-01 0001035983 fix:JSMechanicalContractorsIncMember us-gaap:OrderOrProductionBacklogMember 2024-02-01 0001035983 fix:JSMechanicalContractorsIncMember us-gaap:CustomerRelationshipsMember 2024-02-01 0001035983 fix:DeccoIncMember 2023-10-02 2023-10-02 0001035983 fix:EldecoincMember 2023-02-01 2023-02-01 0001035983 us-gaap:AdditionalPaidInCapitalMember 2024-01-01 2024-03-31 0001035983 us-gaap:AdditionalPaidInCapitalMember 2023-01-01 2023-03-31 0001035983 us-gaap:TreasuryStockCommonMember 2024-01-01 2024-03-31 0001035983 us-gaap:TreasuryStockCommonMember 2023-01-01 2023-03-31 0001035983 fix:SummitIndustrialConstructionLlcMember us-gaap:TradeNamesMember 2024-02-01 2024-02-01 0001035983 fix:SummitIndustrialConstructionLlcMember us-gaap:OrderOrProductionBacklogMember 2024-02-01 2024-02-01 0001035983 fix:SummitIndustrialConstructionLlcMember us-gaap:CustomerRelationshipsMember 2024-02-01 2024-02-01 0001035983 fix:JSMechanicalContractorsIncMember us-gaap:TradeNamesMember 2024-02-01 2024-02-01 0001035983 fix:JSMechanicalContractorsIncMember us-gaap:OrderOrProductionBacklogMember 2024-02-01 2024-02-01 0001035983 fix:JSMechanicalContractorsIncMember us-gaap:CustomerRelationshipsMember 2024-02-01 2024-02-01 0001035983 srt:MaximumMember 2024-01-01 2024-03-31 0001035983 us-gaap:OtherCustomerMember 2024-01-01 2024-03-31 0001035983 fix:TechnologyMember 2024-01-01 2024-03-31 0001035983 fix:ServiceProjectsMember 2024-01-01 2024-03-31 0001035983 fix:ServiceCallsMaintenanceAndMonitoringMember 2024-01-01 2024-03-31 0001035983 fix:RetailRestaurantsAndEntertainmentMember 2024-01-01 2024-03-31 0001035983 fix:OfficeBuildingCustomerMember 2024-01-01 2024-03-31 0001035983 fix:NewConstructionMember 2024-01-01 2024-03-31 0001035983 fix:MultiFamilyAndResidentialMember 2024-01-01 2024-03-31 0001035983 fix:MechanicalSegmentMember 2024-01-01 2024-03-31 0001035983 fix:ManufacturingCustomerMember 2024-01-01 2024-03-31 0001035983 fix:HealthcareSectorCustomerMember 2024-01-01 2024-03-31 0001035983 fix:GovernmentCustomerMember 2024-01-01 2024-03-31 0001035983 fix:ExistingBuildingConstructionMember 2024-01-01 2024-03-31 0001035983 fix:ElectricalSegmentMember 2024-01-01 2024-03-31 0001035983 fix:EducationMember 2024-01-01 2024-03-31 0001035983 us-gaap:OtherCustomerMember 2023-01-01 2023-03-31 0001035983 fix:TechnologyMember 2023-01-01 2023-03-31 0001035983 fix:ServiceProjectsMember 2023-01-01 2023-03-31 0001035983 fix:ServiceCallsMaintenanceAndMonitoringMember 2023-01-01 2023-03-31 0001035983 fix:RetailRestaurantsAndEntertainmentMember 2023-01-01 2023-03-31 0001035983 fix:OfficeBuildingCustomerMember 2023-01-01 2023-03-31 0001035983 fix:NewConstructionMember 2023-01-01 2023-03-31 0001035983 fix:MultiFamilyAndResidentialMember 2023-01-01 2023-03-31 0001035983 fix:MechanicalSegmentMember 2023-01-01 2023-03-31 0001035983 fix:ManufacturingCustomerMember 2023-01-01 2023-03-31 0001035983 fix:HealthcareSectorCustomerMember 2023-01-01 2023-03-31 0001035983 fix:GovernmentCustomerMember 2023-01-01 2023-03-31 0001035983 fix:ExistingBuildingConstructionMember 2023-01-01 2023-03-31 0001035983 fix:ElectricalSegmentMember 2023-01-01 2023-03-31 0001035983 fix:EducationMember 2023-01-01 2023-03-31 0001035983 srt:MinimumMember us-gaap:SuretyBondMember 2024-01-01 2024-03-31 0001035983 srt:MaximumMember us-gaap:SuretyBondMember 2024-01-01 2024-03-31 0001035983 2023-12-31 0001035983 srt:MinimumMember 2024-01-01 2024-03-31 0001035983 2023-09-30 0001035983 srt:MaximumMember fix:SeniorRevolvingCreditFacilityMember 2024-03-31 0001035983 srt:MinimumMember us-gaap:LetterOfCreditMember 2024-01-01 2024-03-31 0001035983 srt:MaximumMember us-gaap:LetterOfCreditMember 2024-01-01 2024-03-31 0001035983 2024-03-31 0001035983 fix:SubordinateDebtAndPromissoryNoteMember 2024-03-31 0001035983 2023-01-01 2023-03-31 0001035983 srt:MinimumMember fix:SummitIndustrialConstructionLlcMember fix:ContingentConsiderationObligationsMember us-gaap:MeasurementInputInceptionDiscountRateMember 2024-02-01 2024-02-01 0001035983 srt:MinimumMember fix:JSMechanicalContractorsIncMember fix:ContingentConsiderationObligationsMember us-gaap:MeasurementInputInceptionDiscountRateMember 2024-02-01 2024-02-01 0001035983 srt:MaximumMember fix:SummitIndustrialConstructionLlcMember fix:ContingentConsiderationObligationsMember us-gaap:MeasurementInputInceptionDiscountRateMember 2024-02-01 2024-02-01 0001035983 srt:MaximumMember fix:JSMechanicalContractorsIncMember fix:ContingentConsiderationObligationsMember us-gaap:MeasurementInputInceptionDiscountRateMember 2024-02-01 2024-02-01 0001035983 srt:MinimumMember fix:SummitIndustrialConstructionLlcMember us-gaap:MeasurementInputInceptionDiscountRateMember 2024-02-01 2024-02-01 0001035983 srt:MinimumMember fix:JSMechanicalContractorsIncMember us-gaap:MeasurementInputInceptionDiscountRateMember 2024-02-01 2024-02-01 0001035983 srt:MaximumMember fix:SummitIndustrialConstructionLlcMember us-gaap:MeasurementInputInceptionDiscountRateMember 2024-02-01 2024-02-01 0001035983 srt:MaximumMember fix:JSMechanicalContractorsIncMember us-gaap:MeasurementInputInceptionDiscountRateMember 2024-02-01 2024-02-01 0001035983 fix:SummitIndustrialConstructionLlcMember fix:ContingentConsiderationObligationsMember 2024-02-01 2024-02-01 0001035983 fix:JSMechanicalContractorsIncMember fix:ContingentConsiderationObligationsMember 2024-02-01 2024-02-01 0001035983 fix:SummitIndustrialConstructionLlcMember 2024-02-01 0001035983 fix:JSMechanicalContractorsIncMember 2024-02-01 0001035983 fix:SummitIndustrialConstructionLlcMember fix:ContingentConsiderationObligationsMember 2024-02-01 0001035983 fix:JSMechanicalContractorsIncMember fix:ContingentConsiderationObligationsMember 2024-02-01 0001035983 srt:MinimumMember fix:SummitIndustrialConstructionLlcMember fix:ContingentConsiderationObligationsMember 2024-02-01 2024-02-01 0001035983 srt:MinimumMember fix:JSMechanicalContractorsIncMember fix:ContingentConsiderationObligationsMember 2024-02-01 2024-02-01 0001035983 srt:MaximumMember fix:SummitIndustrialConstructionLlcMember fix:ContingentConsiderationObligationsMember 2024-02-01 2024-02-01 0001035983 srt:MaximumMember fix:JSMechanicalContractorsIncMember fix:ContingentConsiderationObligationsMember 2024-02-01 2024-02-01 0001035983 fix:SummitIndustrialConstructionLlcMember 2024-02-01 2024-02-01 0001035983 fix:JSMechanicalContractorsIncMember 2024-02-01 2024-02-01 0001035983 2024-04-19 0001035983 2024-01-01 2024-03-31 fix:segment shares iso4217:USD fix:Milestone pure fix:item fix:employee fix:lease fix:Option iso4217:USD shares 0 0 http://fasb.org/us-gaap/2023#OtherLiabilitiesCurrent 0001035983 --12-31 2024 Q1 false P47M P35M P3Y http://fasb.org/us-gaap/2023#OtherLiabilitiesCurrent 10-Q true 2024-03-31 false 1-13011 COMFORT SYSTEMS USA, INC. DE 76-0526487 675 Bering Drive Suite 400 Houston TX 77057 713 830-9600 Common Stock, $0.01 par value FIX NYSE Yes Yes Large Accelerated Filer false false false 35721909 100792000 205150000 11949000 11926000 1570643000 1318926000 929000 850000 76975000 72774000 519000 522000 136100000 166319000 71061000 65538000 62500000 54309000 108000 79000 30118000 28084000 2048189000 1911100000 226197000 208568000 227157000 205712000 862934000 666834000 489884000 280397000 31928000 17723000 16540000 15245000 3902829000 3305579000 12885000 4867000 557859000 419962000 153859000 169136000 1131928000 909538000 29712000 27774000 253416000 189928000 2139659000 1721205000 77004000 39345000 209717000 188136000 1120000 1120000 102793000 77944000 2530293000 2027750000 0.01 0.01 5000000 5000000 0 0 0.01 0.01 102969912 102969912 41123365 41123365 411000 411000 5428501 5438625 211518000 209807000 348582000 339562000 1235061000 1147663000 1372536000 1277829000 3902829000 3305579000 1537016000 1174640000 1239653000 969235000 297363000 205405000 162723000 135032000 820000 512000 135460000 70885000 1603000 1397000 1633000 4076000 12491000 2382000 117000 1000 -12404000 -5060000 123056000 65825000 26737000 8609000 96319000 57216000 2.70 1.60 2.69 1.59 35739000 35812000 35828000 35907000 41123365 411000 -5362224 -187212000 332080000 854644000 999923000 57216000 57216000 1000 36000 -18000 18000 31960 1131000 3384000 4515000 12728 1798000 1798000 3438000 3438000 0.175 6254000 6254000 29400 3568000 3568000 41123365 411000 -5371392 -191411000 338884000 905606000 1053490000 41123365 411000 -5438625 -209807000 339562000 1147663000 1277829000 96319000 96319000 1369 53000 -26000 27000 17018 657000 4696000 5353000 6763 2126000 2126000 4350000 4350000 0.25 8921000 8921000 1500 295000 295000 41123365 411000 -5428501 -211518000 348582000 1235061000 1372536000 96319000 57216000 23913000 10331000 11254000 9187000 7981000 5357000 356000 946000 -14205000 -27537000 171000 169000 820000 512000 12491000 2382000 7414000 6141000 125582000 125937000 5293000 1386000 4499000 911000 4822000 2281000 280000 298000 118757000 28652000 23307000 159140000 95000 6250000 146557000 126909000 24952000 16520000 1014000 622000 196670000 53047000 1040000 -221648000 -68945000 162000000 85000000 162000000 140000000 640000 22000 16000 8921000 6254000 295000 3568000 2126000 1798000 27000 18000 18570000 -29267000 -66618000 -104358000 -8654000 205150000 57214000 100792000 48560000 <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><b style="font-weight:bold;">1. Business and Organization</b></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">Comfort Systems USA, Inc., a Delaware corporation, provides comprehensive mechanical and electrical contracting services, which principally includes heating, ventilation and air conditioning (“HVAC”), plumbing, electrical, piping and controls, as well as off-site construction, monitoring and fire protection. We build, install, maintain, repair and replace mechanical, electrical and plumbing (“MEP”) systems throughout the United States. The terms “Comfort Systems,” “we,” “us,” or the “Company,” refer to Comfort Systems USA, Inc. or Comfort Systems USA, Inc. and its consolidated subsidiaries, as appropriate in the context.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p> <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><b style="font-weight:bold;">2. Summary of Significant Accounting Policies and Estimates</b></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;padding-left:18pt;text-indent:-18pt;margin:0pt 0pt 0pt 36pt;"><span style="font-style:italic;font-weight:bold;margin-left:0pt;visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;padding-left:18pt;text-indent:-18pt;margin:0pt 0pt 0pt 36pt;"><span style="font-style:italic;font-weight:bold;">Basis of Presentation</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">These interim statements should be read in conjunction with the historical Consolidated Financial Statements and related notes of Comfort Systems included in the Annual Report on Form 10-K as filed with the Securities and Exchange Commission (“SEC”) for the year ended December 31, 2023 (the “Form 10-K”).</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">The accompanying unaudited consolidated financial statements were prepared using generally accepted accounting principles for interim financial information and the instructions to Form 10-Q and applicable rules of Regulation S-X of the SEC. Accordingly, these financial statements do not include all the footnotes required by generally accepted accounting principles for complete financial statements and should be read in conjunction with the Form 10-K. We believe all adjustments necessary for a fair presentation of these interim statements have been included and are of a normal and recurring nature. The results of operations for interim periods are not necessarily indicative of the results for the full fiscal year. </p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;padding-left:18pt;text-indent:-18pt;margin:0pt 0pt 0pt 36pt;"><span style="font-style:italic;font-weight:bold;">Use of Estimates</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">The preparation of financial statements in conformity with generally accepted accounting principles requires the use of estimates and assumptions by management in determining the reported amounts of assets and liabilities, revenue and expenses and disclosures regarding contingent assets and liabilities. Actual results could differ from those estimates. The most significant estimates used in our financial statements affect revenue and cost recognition for construction contracts, self-insurance accruals, accounting for income taxes, fair value accounting for acquisitions and the quantification of fair value for reporting units in connection with our goodwill impairment testing. </p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;padding-left:18pt;text-indent:-18pt;margin:0pt 0pt 0pt 36pt;"><span style="font-style:italic;font-weight:bold;">Recent Accounting Pronouncements</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-style:italic;visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><i style="font-style:italic;">Recent Accounting Pronouncements Not Yet Adopted</i></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">In November 2023, the Financial Accounting Standards Board (“FASB”) issued ASU 2023-07, “Segment Reporting (Topic 280): Improvements to Reportable Segment Disclosures.” This standard requires entities to disclose, on an annual and interim basis, significant segment expenses that are regularly provided to the chief decision maker and included within each reported measure of segment profit and loss. ASU 2023-07 is effective for fiscal years beginning after December 15, 2023, and interim periods within fiscal years beginning after December 15, 2024. Early adoption is permitted. We are currently evaluating the impact ASU 2023-07 will have on our disclosures; however, the standard will not have an impact on our consolidated financial position, results of operations or cash flows.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">In December 2023, the FASB issued ASU 2023-09, “Income Taxes (Topic 740): Improvements to Income Tax Disclosures.” <span style="background:#ffffff;">This standard requires entities to disclose more detailed information in the reconciliation of their statutory </span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="background:#ffffff;">tax rate to their effective tax rate. The standard also requires entities to make additional disclosures on income taxes paid as well as on certain income statement-related disclosures. ASU 2023-09 is effective for fiscal years beginning after December 15, 2024</span><span style="background:#ffffff;">.</span><span style="background:#ffffff;"> Early adoption is permitted. We are currently evaluating the impact ASU 2023-09 will have on our disclosures; however, the standard will not have an impact on our consolidated financial position, results of operations or cash flows.</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;padding-left:18pt;text-indent:-18pt;margin:0pt 0pt 0pt 36pt;"><span style="font-style:italic;font-weight:bold;margin-left:0pt;visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;padding-left:18pt;text-indent:-18pt;margin:0pt 0pt 0pt 36pt;"><span style="font-style:italic;font-weight:bold;">Revenue Recognition</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">We recognize revenue over time for all of our services as we perform them because (i) control continuously transfers to that customer as work progresses, and (ii) we have the right to bill the customer as costs are incurred. The customer typically controls the work in process, as evidenced either by contractual termination clauses or by our rights to payment for work performed to date, plus a reasonable profit, for delivery of products or services that do not have an alternative use to the Company.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="white-space:pre-wrap;"> For the reasons listed above, revenue is recognized based on the extent of progress towards completion of the performance obligation. The selection of the method to measure progress towards completion requires judgment and is based on the nature of the products or services to be provided. We generally use a cost-to-cost input method to measure our progress towards satisfaction of the performance obligation for our contracts, as it best depicts the transfer of assets to the customer that occurs as we incur costs on our contracts. Under the cost-to-cost input method, the extent of progress towards completion is measured based on the ratio of costs incurred to date to the total estimated costs at completion of the performance obligation. Revenue, including estimated fees or profits, is recorded proportionally as costs are incurred. Costs to fulfill include labor, materials, subcontractors’ costs, other direct costs and an allocation of indirect costs.</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">For a small portion of our business in which our services are delivered in the form of service maintenance agreements for existing systems to be repaired and maintained, as opposed to constructed, our performance obligation is to maintain the customer’s mechanical system for a specific period of time. Similar to construction jobs, we recognize revenue over time; however, for service maintenance agreements in which the full cost to provide services may not be known, we generally use an input method to recognize revenue, which is based on the amount of time we have provided our services out of the total time we have been contracted to perform those services. Our revenue recognition policy is further discussed in Note 3 “Revenue from Contracts with Customers.”</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="font-style:italic;font-weight:bold;">Accounts Receivable and Allowance for Credit Losses</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">We are required to estimate and record the expected credit losses over the contractual life of our financial assets measured at amortized cost, including billed and unbilled accounts receivable, other receivables and contract assets. Accounts receivable include amounts from work completed in which we have billed or have an unconditional right to bill our customers. Our trade receivables are contractually due in less than a year.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">We estimate our credit losses using a loss-rate method for each of our identified portfolio segments. Our portfolio segments are construction, service and other. While our construction and service financial assets are often with the same subset of customers and industries, our construction financial assets will generally have a lower loss-rate than service financial assets due to lien rights, which we are more likely to have on construction jobs. These lien rights result in lower credit loss expenses on average compared to receivables that do not have lien rights. Financial assets classified as other include receivables that are not related to our core revenue producing activities, such as receivables related to our acquisition activity from former owners, our vendor rebate program or receivables for estimated losses in excess of our insurance deductible, which are accrued with a corresponding accrued insurance liability.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">Loss rates for our portfolios are based on numerous factors, including our history of credit loss expense by portfolio, the financial strength of our customers and counterparties in each portfolio, the aging of our receivables, our expectation of likelihood of payment, macroeconomic trends in the U.S. and the current and forecasted nonresidential construction market trends in the U.S.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">In addition to the loss-rate calculations discussed above, we also record allowance for credit losses for specific receivables that are deemed to have a higher risk profile than the rest of the respective pool of receivables (e.g., when we hold concerns about a specific customer going bankrupt and no longer being able to pay the receivables due to us).</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="font-style:italic;font-weight:bold;">Unbilled Accounts Receivable</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">Unbilled accounts receivable are amounts due to us that we have earned under a contract where our right to payment is unconditional. A right to consideration is unconditional if only the passage of time is required before payment of the consideration is due. </p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="font-style:italic;font-weight:bold;">Income Taxes</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">We conduct business throughout the United States in virtually all fifty states. Our effective tax rate changes based upon our relative profitability, or lack thereof, in the federal and various state jurisdictions with differing tax rates and rules. In addition, discrete items such as tax law changes, judgments and legal structures, can impact our effective tax rate. These items can also include the tax treatment for impairment of goodwill and other intangible assets, changes in fair value of acquisition-related assets and liabilities, uncertain tax positions, and accounting for losses associated with underperforming operations. </p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">The Inflation Reduction Act was enacted on August 16, 2022. This law, among other provisions, provides a corporate alternative minimum tax on adjusted financial statement income over $1 billion, which is effective for tax years beginning after December 31, 2022, and a 1% excise tax on net corporate stock repurchases after December 31, 2022. The impact of the excise tax is recorded in “Treasury Stock” within our Consolidated Balance Sheet. These provisions were not material to our current year overall financial results, financial position and cash flows. </p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">In early September 2023, the IRS issued interim guidance addressing, together with other topics, the treatment of research and experimental (“R&amp;E”) expenditures for taxpayers using the percentage of completion method to account for taxable income from long-term contracts. We have chosen to rely on such guidance beginning with the 2022 tax year, and the resultant reduction in taxable revenue offsets the deferral of tax deductions for R&amp;E expenditures pursuant to the Tax Cuts and Jobs Act (2017) for the 2022 tax year. We filed our 2022 federal tax return in October 2023 requesting a refund of our $107.1 million overpayment, which has not been received as of March 31, 2024.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="font-style:italic;font-weight:bold;visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="font-style:italic;font-weight:bold;">Financial Instruments</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt 0pt 12pt 0pt;">Our financial instruments consist of cash and cash equivalents, accounts receivable, other receivables, accounts payable and life insurance policies, for which we deem the carrying values approximate their fair value due to the short-term nature of these instruments, as well as notes to former owners and a revolving credit facility. </p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="font-style:italic;font-weight:bold;">Investments</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">We have a $5.4 million investment in a construction-focused technology fund with a fair value that is not readily determinable and is recorded at cost. This investment is included in “Other Noncurrent Assets” in our Consolidated Balance Sheet and is reviewed quarterly for impairment. We did not recognize any impairments in the current year related to this investment.</p> <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;padding-left:18pt;text-indent:-18pt;margin:0pt 0pt 0pt 36pt;"><span style="font-style:italic;font-weight:bold;">Basis of Presentation</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">These interim statements should be read in conjunction with the historical Consolidated Financial Statements and related notes of Comfort Systems included in the Annual Report on Form 10-K as filed with the Securities and Exchange Commission (“SEC”) for the year ended December 31, 2023 (the “Form 10-K”).</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">The accompanying unaudited consolidated financial statements were prepared using generally accepted accounting principles for interim financial information and the instructions to Form 10-Q and applicable rules of Regulation S-X of the SEC. Accordingly, these financial statements do not include all the footnotes required by generally accepted accounting principles for complete financial statements and should be read in conjunction with the Form 10-K. We believe all adjustments necessary for a fair presentation of these interim statements have been included and are of a normal and recurring nature. The results of operations for interim periods are not necessarily indicative of the results for the full fiscal year. </p> <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;padding-left:18pt;text-indent:-18pt;margin:0pt 0pt 0pt 36pt;"><span style="font-style:italic;font-weight:bold;">Use of Estimates</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">The preparation of financial statements in conformity with generally accepted accounting principles requires the use of estimates and assumptions by management in determining the reported amounts of assets and liabilities, revenue and expenses and disclosures regarding contingent assets and liabilities. Actual results could differ from those estimates. The most significant estimates used in our financial statements affect revenue and cost recognition for construction contracts, self-insurance accruals, accounting for income taxes, fair value accounting for acquisitions and the quantification of fair value for reporting units in connection with our goodwill impairment testing. </p> <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;padding-left:18pt;text-indent:-18pt;margin:0pt 0pt 0pt 36pt;"><span style="font-style:italic;font-weight:bold;">Recent Accounting Pronouncements</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-style:italic;visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><i style="font-style:italic;">Recent Accounting Pronouncements Not Yet Adopted</i></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">In November 2023, the Financial Accounting Standards Board (“FASB”) issued ASU 2023-07, “Segment Reporting (Topic 280): Improvements to Reportable Segment Disclosures.” This standard requires entities to disclose, on an annual and interim basis, significant segment expenses that are regularly provided to the chief decision maker and included within each reported measure of segment profit and loss. ASU 2023-07 is effective for fiscal years beginning after December 15, 2023, and interim periods within fiscal years beginning after December 15, 2024. Early adoption is permitted. We are currently evaluating the impact ASU 2023-07 will have on our disclosures; however, the standard will not have an impact on our consolidated financial position, results of operations or cash flows.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">In December 2023, the FASB issued ASU 2023-09, “Income Taxes (Topic 740): Improvements to Income Tax Disclosures.” <span style="background:#ffffff;">This standard requires entities to disclose more detailed information in the reconciliation of their statutory </span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="background:#ffffff;">tax rate to their effective tax rate. The standard also requires entities to make additional disclosures on income taxes paid as well as on certain income statement-related disclosures. ASU 2023-09 is effective for fiscal years beginning after December 15, 2024</span><span style="background:#ffffff;">.</span><span style="background:#ffffff;"> Early adoption is permitted. We are currently evaluating the impact ASU 2023-09 will have on our disclosures; however, the standard will not have an impact on our consolidated financial position, results of operations or cash flows.</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;padding-left:18pt;text-indent:-18pt;margin:0pt 0pt 0pt 36pt;"><span style="font-style:italic;font-weight:bold;margin-left:0pt;visibility:hidden;">​</span></p> <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;padding-left:18pt;text-indent:-18pt;margin:0pt 0pt 0pt 36pt;"><span style="font-style:italic;font-weight:bold;">Revenue Recognition</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">We recognize revenue over time for all of our services as we perform them because (i) control continuously transfers to that customer as work progresses, and (ii) we have the right to bill the customer as costs are incurred. The customer typically controls the work in process, as evidenced either by contractual termination clauses or by our rights to payment for work performed to date, plus a reasonable profit, for delivery of products or services that do not have an alternative use to the Company.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="white-space:pre-wrap;"> For the reasons listed above, revenue is recognized based on the extent of progress towards completion of the performance obligation. The selection of the method to measure progress towards completion requires judgment and is based on the nature of the products or services to be provided. We generally use a cost-to-cost input method to measure our progress towards satisfaction of the performance obligation for our contracts, as it best depicts the transfer of assets to the customer that occurs as we incur costs on our contracts. Under the cost-to-cost input method, the extent of progress towards completion is measured based on the ratio of costs incurred to date to the total estimated costs at completion of the performance obligation. Revenue, including estimated fees or profits, is recorded proportionally as costs are incurred. Costs to fulfill include labor, materials, subcontractors’ costs, other direct costs and an allocation of indirect costs.</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">For a small portion of our business in which our services are delivered in the form of service maintenance agreements for existing systems to be repaired and maintained, as opposed to constructed, our performance obligation is to maintain the customer’s mechanical system for a specific period of time. Similar to construction jobs, we recognize revenue over time; however, for service maintenance agreements in which the full cost to provide services may not be known, we generally use an input method to recognize revenue, which is based on the amount of time we have provided our services out of the total time we have been contracted to perform those services. Our revenue recognition policy is further discussed in Note 3 “Revenue from Contracts with Customers.”</p> <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="font-style:italic;font-weight:bold;">Accounts Receivable and Allowance for Credit Losses</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">We are required to estimate and record the expected credit losses over the contractual life of our financial assets measured at amortized cost, including billed and unbilled accounts receivable, other receivables and contract assets. Accounts receivable include amounts from work completed in which we have billed or have an unconditional right to bill our customers. Our trade receivables are contractually due in less than a year.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">We estimate our credit losses using a loss-rate method for each of our identified portfolio segments. Our portfolio segments are construction, service and other. While our construction and service financial assets are often with the same subset of customers and industries, our construction financial assets will generally have a lower loss-rate than service financial assets due to lien rights, which we are more likely to have on construction jobs. These lien rights result in lower credit loss expenses on average compared to receivables that do not have lien rights. Financial assets classified as other include receivables that are not related to our core revenue producing activities, such as receivables related to our acquisition activity from former owners, our vendor rebate program or receivables for estimated losses in excess of our insurance deductible, which are accrued with a corresponding accrued insurance liability.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">Loss rates for our portfolios are based on numerous factors, including our history of credit loss expense by portfolio, the financial strength of our customers and counterparties in each portfolio, the aging of our receivables, our expectation of likelihood of payment, macroeconomic trends in the U.S. and the current and forecasted nonresidential construction market trends in the U.S.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">In addition to the loss-rate calculations discussed above, we also record allowance for credit losses for specific receivables that are deemed to have a higher risk profile than the rest of the respective pool of receivables (e.g., when we hold concerns about a specific customer going bankrupt and no longer being able to pay the receivables due to us).</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p> <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="font-style:italic;font-weight:bold;">Unbilled Accounts Receivable</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">Unbilled accounts receivable are amounts due to us that we have earned under a contract where our right to payment is unconditional. A right to consideration is unconditional if only the passage of time is required before payment of the consideration is due. </p> <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="font-style:italic;font-weight:bold;">Income Taxes</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">We conduct business throughout the United States in virtually all fifty states. Our effective tax rate changes based upon our relative profitability, or lack thereof, in the federal and various state jurisdictions with differing tax rates and rules. In addition, discrete items such as tax law changes, judgments and legal structures, can impact our effective tax rate. These items can also include the tax treatment for impairment of goodwill and other intangible assets, changes in fair value of acquisition-related assets and liabilities, uncertain tax positions, and accounting for losses associated with underperforming operations. </p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">The Inflation Reduction Act was enacted on August 16, 2022. This law, among other provisions, provides a corporate alternative minimum tax on adjusted financial statement income over $1 billion, which is effective for tax years beginning after December 31, 2022, and a 1% excise tax on net corporate stock repurchases after December 31, 2022. The impact of the excise tax is recorded in “Treasury Stock” within our Consolidated Balance Sheet. These provisions were not material to our current year overall financial results, financial position and cash flows. </p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">In early September 2023, the IRS issued interim guidance addressing, together with other topics, the treatment of research and experimental (“R&amp;E”) expenditures for taxpayers using the percentage of completion method to account for taxable income from long-term contracts. We have chosen to rely on such guidance beginning with the 2022 tax year, and the resultant reduction in taxable revenue offsets the deferral of tax deductions for R&amp;E expenditures pursuant to the Tax Cuts and Jobs Act (2017) for the 2022 tax year. We filed our 2022 federal tax return in October 2023 requesting a refund of our $107.1 million overpayment, which has not been received as of March 31, 2024.</p> 107100000 <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="font-style:italic;font-weight:bold;">Financial Instruments</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt 0pt 12pt 0pt;">Our financial instruments consist of cash and cash equivalents, accounts receivable, other receivables, accounts payable and life insurance policies, for which we deem the carrying values approximate their fair value due to the short-term nature of these instruments, as well as notes to former owners and a revolving credit facility. </p> <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="font-style:italic;font-weight:bold;">Investments</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">We have a $5.4 million investment in a construction-focused technology fund with a fair value that is not readily determinable and is recorded at cost. This investment is included in “Other Noncurrent Assets” in our Consolidated Balance Sheet and is reviewed quarterly for impairment. We did not recognize any impairments in the current year related to this investment.</p> 5400000 <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><b style="font-weight:bold;">3. Revenue from Contracts with Customers</b></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-weight:bold;visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">Revenue is recognized when control of the promised goods or services is transferred to our customers, in an amount that reflects the consideration to which we expect to be entitled in exchange for those goods or services. Sales-based taxes are excluded from revenue.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">We provide mechanical and electrical contracting services. Our mechanical segment principally includes HVAC, plumbing, piping and controls, as well as off-<span style="white-space:pre-wrap;">site construction, monitoring and fire protection. Our electrical segment includes installation and servicing of electrical systems. We build, install, maintain, repair and replace products and systems throughout the United States. All of our revenue is recognized over time as we deliver goods and services to our customers. Revenue can be earned based on an agreed-upon fixed price or based on actual costs incurred, marked up at an agreed-upon percentage.</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">We account for a contract when: (i) it has approval and commitment from both parties, (ii) the rights of the parties are identified, (iii) payment terms are identified, (iv) the contract has commercial substance, and (v) collectability of consideration is probable. We consider the start of a project to be when the above criteria have been met and we either have written authorization from the customer to proceed or an executed contract.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">We generally do not incur significant incremental costs related to obtaining or fulfilling a contract prior to the start of a project. On rare occasions, when significant pre-contract costs are incurred, they are capitalized and amortized over the life of the contract using a cost-to-cost input method to measure progress towards contract completion. We do not currently have any capitalized obtainment or fulfillment costs in our Consolidated Balance Sheet and have not incurred any impairment loss on such costs in the current year.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">Due to the nature of the work required to be performed on many of our performance obligations, the estimation of total revenue and cost at completion (the process described below in more detail) is complex, subject to many variables and requires significant judgment. The consideration to which we are entitled on our long-term contracts may include both fixed and variable amounts. Variable amounts can either increase or decrease the transaction price. A common example of variable amounts that can either increase or decrease contract value are pending change orders that represent contract modifications for which a change in scope has been authorized or acknowledged by our customer, but the final adjustment to contract price is yet to be negotiated. Other examples of positive variable revenue include amounts awarded upon achievement of certain performance metrics, program milestones or cost of completion date targets and can be based upon customer discretion. Variable amounts can result in a deduction from contract revenue if we fail to meet stated performance requirements, such as complying with the construction schedule.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">We include estimated amounts of variable consideration in the contract price to the extent it is probable that a significant reversal of cumulative revenue recognized will not occur when the uncertainty associated with the variable consideration is resolved. Our estimates of variable consideration and determination of whether to include estimated amounts in the contract price are based largely on an assessment of our anticipated performance and all information (historical, current and forecasted) that is reasonably available to us. We reassess the amount of variable consideration each accounting period until the uncertainty associated with the variable consideration is resolved. Changes in the assessed amount of variable consideration are accounted for prospectively as a cumulative adjustment to revenue recognized in the current period.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">Contracts are often modified to account for changes in contract specifications and requirements. We consider contract modifications to exist when the modification either creates new, or changes the existing, enforceable rights and obligations. Most of our contract modifications are for goods or services that are not distinct from the existing performance obligation(s). The effect of a contract modification on the transaction price, and our measure of progress for the performance obligation to which it relates, is recognized as an adjustment to revenue (either as an increase or decrease) on a cumulative catch-up basis. </p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">We have a Company-wide policy requiring periodic review of the Estimate at Completion in which management reviews the progress and execution of our performance obligations and estimated remaining obligations. As part of this process, management reviews information including, but not limited to, any outstanding key contract matters, progress towards completion and the related program schedule, identified risks and opportunities and the related changes in estimates of revenue and costs. The risks and opportunities include management's judgment about the ability and cost to achieve the schedule (e.g., the number and type of milestone events), technical requirements (e.g., a newly developed product versus a mature product) and other contract requirements. Management must make assumptions and estimates regarding labor productivity and availability, the complexity of the work to be performed, the availability of materials, the length of time to complete the performance obligation (e.g., to estimate increases in wages and prices for materials and related support cost allocations), execution by our subcontractors, the availability and timing of funding from our customer, and overhead cost rates, among other variables. </p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">Based on this analysis, any adjustments to revenue, cost of services, and the related impact to operating income are recognized as necessary in the quarter when they become known. These adjustments may result from positive program performance if we determine we will be successful in mitigating risks surrounding the technical, schedule and cost aspects of those performance obligations or realizing related opportunities and may result in an increase in operating income during the performance of individual performance obligations. Likewise, if we determine we will not be </p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">successful in mitigating these risks or realizing related opportunities, these adjustments may result in a decrease in operating income. Changes in estimates of revenue, cost of services and the related impact to operating income are recognized quarterly on a cumulative catch-up basis, meaning we recognize in the current period the cumulative effect of the changes on current and prior periods based on our <span style="background:#ffffff;">progress towards complete satisfaction of a performance obligation</span>. A significant change in one or more of these estimates could affect the profitability of one or more of our performance obligations. For projects in which estimates of total costs to be incurred on a performance obligation exceed total estimates of revenue to be earned, a provision for the entire loss on the performance obligation is recognized in the period the loss is determined. </p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">In the first three months of 2024 and 2023, net revenue recognized from our performance obligations partially satisfied in the previous period positively impacted revenue by 4.1% and 2.2%<span style="white-space:pre-wrap;">, respectively, as a result of changes in estimates associated with performance obligations on contracts. </span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="font-style:italic;font-weight:bold;">Disaggregation of Revenue</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="white-space:pre-wrap;">Our consolidated 2024 revenue was derived from contracts to provide service activities in the mechanical and electrical segments we serve. Refer to Note 11 “Segment Information” for additional information on our reportable segments. We disaggregate our revenue from contracts with customers by activity, customer type and service provided, as we believe it best depicts how the nature, amount, timing and uncertainty of our revenue and cash flows are affected by economic factors. </span>See details in the following tables (dollars in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;padding-left:18pt;text-indent:-18pt;margin:0pt 0pt 0pt 36pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-size:16pt;height:max-content;margin-left:auto;margin-right:auto;padding-left:0pt;padding-right:0pt;width:100%;"><tr style="height:1pt;"><td style="vertical-align:bottom;width:51.9%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;width:51.9%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="10" style="vertical-align:bottom;white-space:nowrap;width:41.66%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Three Months Ended March 31, </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;"><b style="font-weight:bold;">Revenue by Service Provided</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;"><b style="font-weight:bold;">   </b></p></td><td colspan="4" style="vertical-align:bottom;white-space:nowrap;width:17.81%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">2024</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;"><b style="font-weight:bold;">   </b></p></td><td colspan="4" style="vertical-align:bottom;white-space:nowrap;width:19.58%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">2023</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;"><b style="font-weight:bold;">   </b></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Mechanical Segment</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 1,185,009</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">   </p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 77.1</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 918,615</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">   </p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 78.2</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Electrical Segment</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 352,007</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 22.9</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 256,025</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 21.8</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Total </p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 1,537,016</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 100.0</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 1,174,640</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 100.0</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:51.9%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="10" style="vertical-align:bottom;white-space:nowrap;width:41.66%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Three Months Ended March 31, </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;"><b style="font-weight:bold;">Revenue by Type of Customer</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="4" style="vertical-align:bottom;white-space:nowrap;width:17.81%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">2024</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="4" style="vertical-align:bottom;white-space:nowrap;width:19.58%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">2023</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:center;margin:0pt;"><b style="font-weight:bold;"> </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Manufacturing</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 461,400</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 30.0</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 366,356</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 31.2</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Technology</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 464,814</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 30.2</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 226,249</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 19.3</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Healthcare</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 133,729</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 8.7</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 159,815</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 13.5</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Education</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 133,983</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 8.7</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 110,253</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 9.4</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Office Buildings</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 101,892</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 6.6</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 98,195</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 8.4</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Retail, Restaurants and Entertainment</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 80,585</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 5.2</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 76,194</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 6.5</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Government</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 87,801</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 5.7</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 64,415</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 5.5</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Multi-Family and Residential</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 40,851</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 2.7</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 45,007</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 3.8</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Other</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 31,961</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 2.2</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 28,156</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 2.4</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Total </p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 1,537,016</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 100.0</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 1,174,640</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 100.0</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:51.9%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="10" style="vertical-align:bottom;white-space:nowrap;width:41.66%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Three Months Ended March 31, </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;"><b style="font-weight:bold;">Revenue by Activity Type</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="4" style="vertical-align:bottom;white-space:nowrap;width:17.81%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">2024</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="4" style="vertical-align:bottom;white-space:nowrap;width:19.58%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">2023</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:center;margin:0pt;"><b style="font-weight:bold;"> </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">New Construction</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 898,976</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 58.5</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 627,952</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 53.5</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Existing Building Construction</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 390,369</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 25.4</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 309,483</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 26.3</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Service Projects</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 104,114</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 6.8</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 103,105</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 8.8</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Service Calls, Maintenance and Monitoring</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 143,557</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 9.3</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 134,100</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 11.4</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Total </p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 1,537,016</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 100.0</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 1,174,640</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 100.0</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr></table><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="font-style:italic;font-weight:bold;">Contract Assets and Liabilities</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-weight:bold;visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">Contract assets include unbilled amounts typically resulting from sales under long term contracts when the cost-to-cost method of revenue recognition is used, revenue recognized exceeds the amount billed to the customer and right to payment is conditional or subject to completing a milestone, such as a phase of the project. Contract assets are not considered to have a significant financing component, as they are intended to protect the customer in the event that we do not perform our obligations under the contract. </p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">Contract liabilities consist of advance payments and billings in excess of revenue recognized. Advanced payments from customers related to work not yet started are classified as deferred revenue. Contract liabilities are not considered to have a significant financing component, as they are used to meet working capital requirements that are generally higher in the early stages of a contract and are intended to protect us from the other party failing to meet its obligations under the contract. Our contract assets and liabilities are reported in a net position on a contract-by-contract basis at the end of each reporting period. </p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">Contract assets and liabilities in the Consolidated Balance Sheet consisted of the following amounts as of March 31, 2024 and December 31, 2023 (in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-size:16pt;height:max-content;padding-left:0pt;padding-right:0pt;width:100%;"><tr style="height:1pt;"><td style="vertical-align:middle;width:61.69%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="position:absolute;top:50%;transform:translate(0,-50%);width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:3%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:14.23%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:3.83%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:3%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:14.21%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:middle;width:61.69%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="font-size:8pt;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:17.24%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0.05pt 0pt 0.05pt 0pt;"><b style="font-weight:bold;">March 31, 2024</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.83%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0.05pt 0pt 0.05pt 0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:17.22%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0.05pt 0pt 0.05pt 0pt;"><b style="font-weight:bold;">December 31, 2023</b></p></td></tr><tr><td style="vertical-align:middle;width:61.69%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;">Contract assets:</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.23%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.83%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.21%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:middle;width:61.69%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="white-space:pre-wrap;"> Costs and estimated earnings in excess of billings, less allowance for credit losses</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.23%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0.05pt 3.5pt 0.05pt 0pt;"> 30,118</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.83%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.21%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0.05pt 3.5pt 0.05pt 0pt;"> 28,084</p></td></tr><tr><td style="vertical-align:middle;width:61.69%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;">Contract liabilities:</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.23%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.83%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.21%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:middle;width:61.69%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="white-space:pre-wrap;"> Billings in excess of costs and estimated earnings and deferred revenue</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.23%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0.05pt 3.5pt 0.05pt 0pt;"> 1,131,928</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.83%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.21%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0.05pt 3.5pt 0.05pt 0pt;"> 909,538</p></td></tr></table><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="margin-bottom:5pt;margin-top:5pt;visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt 0pt 13.19pt 0pt;">In the first three months of 2024 and 2023, we recognized revenue of $547.5 million and $341.9 million related to our contract liabilities at January 1, 2024 and January 1, 2023, respectively.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">We did not have any impairment losses recognized on our receivables or contract assets in the first three months of 2024 and 2023.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="font-style:italic;font-weight:bold;">Remaining Performance Obligations</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="font-style:italic;font-weight:bold;visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="white-space:pre-wrap;">Remaining construction performance obligations represent the remaining transaction price of firm orders for which work has not been performed and exclude unexercised contract options. As of March 31, 2024, the aggregate amount of the transaction price allocated to remaining performance obligations was </span>$5.91 billion. The Company expects to recognize revenue on approximately 65-75% of the remaining performance obligations over the next 12 months<span style="white-space:pre-wrap;">, with the remaining recognized thereafter. Our service maintenance agreements are generally </span>one-year<span style="white-space:pre-wrap;"> renewable agreements. We have adopted the practical expedient that allows us to not include service maintenance contracts with a total term of </span>one<span style="white-space:pre-wrap;"> year or less; therefore, we do not report unfulfilled performance obligations for service maintenance agreements. </span></p> 0.041 0.022 See details in the following tables (dollars in thousands):<p style="font-family:'Times New Roman','Times','serif';font-size:10pt;padding-left:18pt;text-indent:-18pt;margin:0pt 0pt 0pt 36pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-size:16pt;height:max-content;margin-left:auto;margin-right:auto;padding-left:0pt;padding-right:0pt;width:100%;"><tr style="height:1pt;"><td style="vertical-align:bottom;width:51.9%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;width:51.9%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="10" style="vertical-align:bottom;white-space:nowrap;width:41.66%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Three Months Ended March 31, </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;"><b style="font-weight:bold;">Revenue by Service Provided</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;"><b style="font-weight:bold;">   </b></p></td><td colspan="4" style="vertical-align:bottom;white-space:nowrap;width:17.81%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">2024</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;"><b style="font-weight:bold;">   </b></p></td><td colspan="4" style="vertical-align:bottom;white-space:nowrap;width:19.58%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">2023</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;"><b style="font-weight:bold;">   </b></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Mechanical Segment</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 1,185,009</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">   </p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 77.1</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 918,615</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">   </p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 78.2</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Electrical Segment</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 352,007</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 22.9</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 256,025</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 21.8</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Total </p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 1,537,016</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 100.0</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 1,174,640</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 100.0</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:51.9%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="10" style="vertical-align:bottom;white-space:nowrap;width:41.66%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Three Months Ended March 31, </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;"><b style="font-weight:bold;">Revenue by Type of Customer</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="4" style="vertical-align:bottom;white-space:nowrap;width:17.81%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">2024</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="4" style="vertical-align:bottom;white-space:nowrap;width:19.58%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">2023</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:center;margin:0pt;"><b style="font-weight:bold;"> </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Manufacturing</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 461,400</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 30.0</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 366,356</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 31.2</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Technology</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 464,814</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 30.2</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 226,249</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 19.3</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Healthcare</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 133,729</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 8.7</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 159,815</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 13.5</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Education</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 133,983</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 8.7</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 110,253</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 9.4</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Office Buildings</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 101,892</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 6.6</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 98,195</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 8.4</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Retail, Restaurants and Entertainment</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 80,585</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 5.2</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 76,194</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 6.5</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Government</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 87,801</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 5.7</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 64,415</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 5.5</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Multi-Family and Residential</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 40,851</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 2.7</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 45,007</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 3.8</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Other</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 31,961</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 2.2</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 28,156</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 2.4</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Total </p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 1,537,016</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 100.0</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 1,174,640</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 100.0</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:51.9%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="10" style="vertical-align:bottom;white-space:nowrap;width:41.66%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Three Months Ended March 31, </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;"><b style="font-weight:bold;">Revenue by Activity Type</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="4" style="vertical-align:bottom;white-space:nowrap;width:17.81%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">2024</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="4" style="vertical-align:bottom;white-space:nowrap;width:19.58%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">2023</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:center;margin:0pt;"><b style="font-weight:bold;"> </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;font-weight:bold;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">New Construction</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 898,976</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 58.5</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 627,952</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 53.5</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Existing Building Construction</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 390,369</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 25.4</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 309,483</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 26.3</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Service Projects</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 104,114</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 6.8</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 103,105</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 8.8</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Service Calls, Maintenance and Monitoring</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 143,557</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 9.3</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 134,100</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 11.4</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:51.9%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Total </p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.71%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 1,537,016</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.4%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 100.0</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.3%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.28%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 1,174,640</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.38%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:5.6%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 100.0</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.08%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td></tr></table><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p> 1185009000 0.771 918615000 0.782 352007000 0.229 256025000 0.218 1537016000 1.000 1174640000 1.000 461400000 0.300 366356000 0.312 464814000 0.302 226249000 0.193 133729000 0.087 159815000 0.135 133983000 0.087 110253000 0.094 101892000 0.066 98195000 0.084 80585000 0.052 76194000 0.065 87801000 0.057 64415000 0.055 40851000 0.027 45007000 0.038 31961000 0.022 28156000 0.024 1537016000 1.000 1174640000 1.000 898976000 0.585 627952000 0.535 390369000 0.254 309483000 0.263 104114000 0.068 103105000 0.088 143557000 0.093 134100000 0.114 1537016000 1.000 1174640000 1.000 <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">Contract assets and liabilities in the Consolidated Balance Sheet consisted of the following amounts as of March 31, 2024 and December 31, 2023 (in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-size:16pt;height:max-content;padding-left:0pt;padding-right:0pt;width:100%;"><tr style="height:1pt;"><td style="vertical-align:middle;width:61.69%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="position:absolute;top:50%;transform:translate(0,-50%);width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:3%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:14.23%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:3.83%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:3%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:14.21%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:middle;width:61.69%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="font-size:8pt;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:17.24%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0.05pt 0pt 0.05pt 0pt;"><b style="font-weight:bold;">March 31, 2024</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.83%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0.05pt 0pt 0.05pt 0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:17.22%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0.05pt 0pt 0.05pt 0pt;"><b style="font-weight:bold;">December 31, 2023</b></p></td></tr><tr><td style="vertical-align:middle;width:61.69%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;">Contract assets:</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.23%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.83%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.21%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:middle;width:61.69%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="white-space:pre-wrap;"> Costs and estimated earnings in excess of billings, less allowance for credit losses</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.23%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0.05pt 3.5pt 0.05pt 0pt;"> 30,118</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.83%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.21%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0.05pt 3.5pt 0.05pt 0pt;"> 28,084</p></td></tr><tr><td style="vertical-align:middle;width:61.69%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;">Contract liabilities:</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.23%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.83%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.21%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:middle;width:61.69%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="white-space:pre-wrap;"> Billings in excess of costs and estimated earnings and deferred revenue</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.23%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0.05pt 3.5pt 0.05pt 0pt;"> 1,131,928</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.83%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0.05pt 0pt 0.05pt 0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.21%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0.05pt 3.5pt 0.05pt 0pt;"> 909,538</p></td></tr></table> 30118000 28084000 1131928000 909538000 547500000 341900000 0 0 5910000000 0.65 0.75 P12M P1Y true <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><b style="font-weight:bold;">4. Fair Value Measurements</b></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 6pt 0pt;"><span style="display:inline-block;text-indent:0pt;width:36pt;"></span><span style="font-style:italic;font-weight:bold;">Interest Rate Risk Management and Derivative Instruments</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">At times, we use derivative instruments to manage exposure to market risk, including interest rate risk. Unsettled amounts under our interest rate swaps, if any, are recorded in the Consolidated Balance Sheet at fair value in “Other Receivables” or “Other Current Liabilities.” Gains and losses on our interest rate swaps are recorded in the Consolidated Statement of Operations in “Interest Expense.” We currently do not have any derivatives that are accounted for as hedges under ASC 815.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="display:inline-block;text-indent:0pt;width:36pt;"></span><span style="font-style:italic;font-weight:bold;">Fair Value Measurement</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">We classify and disclose assets and liabilities carried at fair value in one of the following three categories:</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-family:'Times New Roman','Times','serif';font-size:10pt;margin-bottom:0pt;margin-top:0pt;table-layout:fixed;width:100%;border:0pt;"><tr><td style="width:36pt;"></td><td style="font-family:'Times New Roman','Times','serif';font-size:10pt;vertical-align:text-top;white-space:nowrap;width:18pt;padding:0pt;">●</td><td style="padding:0pt;"><span style="font-family:'Times New Roman','Times','serif';font-size:10pt;font-style:normal;font-weight:normal;">Level 1—quoted prices in active markets for identical assets and liabilities;</span></td></tr></table><table style="border-collapse:collapse;font-family:'Times New Roman','Times','serif';font-size:10pt;margin-bottom:0pt;margin-top:0pt;table-layout:fixed;width:100%;border:0pt;"><tr><td style="width:36pt;"></td><td style="font-family:'Times New Roman','Times','serif';font-size:10pt;vertical-align:text-top;white-space:nowrap;width:18pt;padding:0pt;">●</td><td style="padding:0pt;"><span style="font-family:'Times New Roman','Times','serif';font-size:10pt;font-style:normal;font-weight:normal;">Level 2—observable market-based inputs or unobservable inputs that are corroborated by market data; and</span></td></tr></table><table style="border-collapse:collapse;font-family:'Times New Roman','Times','serif';font-size:10pt;margin-bottom:0pt;margin-top:0pt;table-layout:fixed;width:100%;border:0pt;"><tr><td style="width:36pt;"></td><td style="font-family:'Times New Roman','Times','serif';font-size:10pt;vertical-align:text-top;white-space:nowrap;width:18pt;padding:0pt;">●</td><td style="padding:0pt;"><span style="font-family:'Times New Roman','Times','serif';font-size:10pt;font-style:normal;font-weight:normal;">Level 3—significant unobservable inputs in which little or no market data exists, therefore requiring an entity to develop its own assumptions.</span></td></tr></table><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">The following table summarizes the fair values, and levels within the fair value hierarchy in which the fair value measurements are included, for assets and liabilities measured on a recurring basis as of March 31, 2024 and December 31, 2023 (in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-size:16pt;height:max-content;margin-left:auto;margin-right:auto;padding-left:0pt;padding-right:0pt;width:100%;"><tr style="height:1pt;"><td style="vertical-align:bottom;width:59.22%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:7.07%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:7.15%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;width:59.22%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="11" style="vertical-align:bottom;white-space:nowrap;width:39.12%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Fair Value Measurements at March 31, 2024</b></p></td></tr><tr><td style="vertical-align:bottom;width:59.22%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:8.95%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Level 1</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:8.1%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Level 2</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:8.17%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Level 3</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:8.95%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Total</b></p></td></tr><tr><td style="vertical-align:bottom;width:59.22%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Cash and cash equivalents</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 100,792</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.07%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.15%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 100,792</p></td></tr><tr><td style="vertical-align:bottom;width:59.22%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Life insurance—cash surrender value</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.07%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 7,721</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.15%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 7,721</p></td></tr><tr><td style="vertical-align:bottom;width:59.22%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Contingent earn-out obligations</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.07%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.15%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 71,296</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 71,296</p></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:59.22%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.07%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.15%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:59.22%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="11" style="vertical-align:bottom;white-space:nowrap;width:39.12%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Fair Value Measurements at December 31, 2023</b></p></td></tr><tr><td style="vertical-align:bottom;width:59.22%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:8.95%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Level 1</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:8.1%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Level 2</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:8.17%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Level 3</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:8.95%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Total</b></p></td></tr><tr><td style="vertical-align:bottom;width:59.22%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Cash and cash equivalents</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 205,150</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.07%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.15%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 205,150</p></td></tr><tr><td style="vertical-align:bottom;width:59.22%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Life insurance—cash surrender value</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.07%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 7,473</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.15%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 7,473</p></td></tr><tr><td style="vertical-align:bottom;width:59.22%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Contingent earn-out obligations</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.07%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.15%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 44,222</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 44,222</p></td></tr></table><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt 0pt 12pt 0pt;">Cash and cash equivalents consist primarily of highly rated money market funds at a variety of well-known institutions with original maturities of three months or less. The original cost of these assets approximates fair value due to their short-term maturity. We believe the carrying value of our debt associated with our revolving credit facility approximates its fair value due to the variable rate on such debt. We believe the carrying values of our notes to former owners approximate their fair values due to the relatively short remaining terms on these notes.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">We have life insurance policies covering 127 employees with a combined face value of $86.7 million. The policies are invested in several investment vehicles, and the fair value measurement of the cash surrender balance associated with these policies is determined using Level 2 inputs within the fair value hierarchy and will vary with investment performance. The cash surrender value of these policies is included in “Other Noncurrent Assets” in our Consolidated Balance Sheets.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">We value contingent earn-out obligations using a probability weighted discounted cash flow method. This fair value measurement is based on significant unobservable inputs in the market and thus represents a Level 3 measurement within the fair value hierarchy. This analysis reflects the contractual terms of the purchase agreements (e.g., minimum and maximum payments, length of earn-out periods, manner of calculating any amounts due, etc.) and utilizes assumptions with regard to future cash flows and operating income, probabilities of achieving such future cash flows and operating income and a weighted average cost of capital. Significant changes in any of these assumptions could result in a significantly higher or lower potential liability. The contingent earn-out obligations are measured at fair value each reporting period, and changes in estimates of fair value are recognized in earnings. As of March 31, 2024, cash flows were discounted using a weighted average cost of capital ranging from 15.0% to 19.0%.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">The table below presents a reconciliation of the fair value of our contingent earn-out obligations that use significant unobservable inputs (Level 3) (in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-size:16pt;height:max-content;margin-left:auto;margin-right:auto;padding-left:0pt;padding-right:0pt;width:70.19%;"><tr style="height:1pt;"><td style="vertical-align:bottom;white-space:nowrap;width:52.95%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:3.2%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:18.15%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.84%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:16.12%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:0.73%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:0.67%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:52.95%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:21.36%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Three Months Ended </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:18.96%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Year Ended</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.73%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.67%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;"> </b></p></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:52.95%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:21.36%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">March 31, 2024</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:18.96%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">December 31, 2023</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.73%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.67%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;"> </b></p></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:52.95%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Balance at beginning of period</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';">    </span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.2%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:18.15%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 44,222</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';">    </span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.84%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.12%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 32,317</p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.73%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.67%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';"> </span></p></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:52.95%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Issuances</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.2%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:18.15%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 51,784</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.84%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.12%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 4,315</p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.73%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.67%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:52.95%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Settlements</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.2%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:18.15%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (37,201)</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.84%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.12%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;">(16,017)</p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.73%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.67%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:52.95%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Adjustments to fair value</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.2%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:18.15%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 12,491</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.84%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.12%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 23,607</p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.73%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.67%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:52.95%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Balance at end of period</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.2%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:18.15%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 71,296</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.84%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.12%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 44,222</p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.73%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.67%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr></table><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p> <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">The following table summarizes the fair values, and levels within the fair value hierarchy in which the fair value measurements are included, for assets and liabilities measured on a recurring basis as of March 31, 2024 and December 31, 2023 (in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-size:16pt;height:max-content;margin-left:auto;margin-right:auto;padding-left:0pt;padding-right:0pt;width:100%;"><tr style="height:1pt;"><td style="vertical-align:bottom;width:59.22%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:7.07%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:7.15%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;width:59.22%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="11" style="vertical-align:bottom;white-space:nowrap;width:39.12%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Fair Value Measurements at March 31, 2024</b></p></td></tr><tr><td style="vertical-align:bottom;width:59.22%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:8.95%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Level 1</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:8.1%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Level 2</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:8.17%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Level 3</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:8.95%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Total</b></p></td></tr><tr><td style="vertical-align:bottom;width:59.22%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Cash and cash equivalents</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 100,792</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.07%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.15%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 100,792</p></td></tr><tr><td style="vertical-align:bottom;width:59.22%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Life insurance—cash surrender value</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.07%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 7,721</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.15%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 7,721</p></td></tr><tr><td style="vertical-align:bottom;width:59.22%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Contingent earn-out obligations</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.07%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.15%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 71,296</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 71,296</p></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:59.22%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.07%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.15%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:59.22%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="11" style="vertical-align:bottom;white-space:nowrap;width:39.12%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Fair Value Measurements at December 31, 2023</b></p></td></tr><tr><td style="vertical-align:bottom;width:59.22%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:8.95%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Level 1</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:8.1%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Level 2</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:8.17%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Level 3</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:8.95%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Total</b></p></td></tr><tr><td style="vertical-align:bottom;width:59.22%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Cash and cash equivalents</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 205,150</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.07%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.15%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 205,150</p></td></tr><tr><td style="vertical-align:bottom;width:59.22%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Life insurance—cash surrender value</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.07%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 7,473</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.15%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 7,473</p></td></tr><tr><td style="vertical-align:bottom;width:59.22%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Contingent earn-out obligations</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.07%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.15%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 44,222</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.92%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 44,222</p></td></tr></table><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p> 100792000 100792000 7721000 7721000 71296000 71296000 205150000 205150000 7473000 7473000 44222000 44222000 127 86700000 0.150 0.190 <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">The table below presents a reconciliation of the fair value of our contingent earn-out obligations that use significant unobservable inputs (Level 3) (in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-size:16pt;height:max-content;margin-left:auto;margin-right:auto;padding-left:0pt;padding-right:0pt;width:70.19%;"><tr style="height:1pt;"><td style="vertical-align:bottom;white-space:nowrap;width:52.95%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:3.2%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:18.15%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.84%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:16.12%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:0.73%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:0.67%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:52.95%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:21.36%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Three Months Ended </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:18.96%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Year Ended</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.73%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.67%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;"> </b></p></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:52.95%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:21.36%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">March 31, 2024</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:18.96%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">December 31, 2023</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.73%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.67%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;"> </b></p></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:52.95%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Balance at beginning of period</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';">    </span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.2%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:18.15%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 44,222</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';">    </span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.84%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.12%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 32,317</p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.73%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.67%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';"> </span></p></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:52.95%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Issuances</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.2%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:18.15%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 51,784</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.84%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.12%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 4,315</p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.73%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.67%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:52.95%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Settlements</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.2%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:18.15%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (37,201)</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.84%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.12%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;">(16,017)</p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.73%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.67%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:52.95%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Adjustments to fair value</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.2%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:18.15%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 12,491</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.84%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.12%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 23,607</p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.73%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.67%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:52.95%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Balance at end of period</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.2%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:18.15%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 71,296</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.65%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.84%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.12%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 44,222</p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.73%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.67%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr></table><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p> 44222000 32317000 51784000 4315000 37201000 16017000 12491000 23607000 71296000 44222000 <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><b style="font-weight:bold;">5. Acquisitions</b></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="display:inline-block;text-indent:0pt;width:36pt;"></span><span style="font-style:italic;font-weight:bold;">Summit Industrial Construction, LLC Acquisition</span><span style="display:inline-block;width:10.1pt;"></span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="display:inline-block;text-indent:0pt;width:36pt;"></span>On February 1, 2024, we acquired Summit Industrial Construction, LLC (“Summit”). Summit is headquartered in Houston, Texas and is a specialty industrial contractor offering engineering, design-assist and turnkey, direct hire </p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">construction services of systems serving the advanced technology, power, and industrial sectors. As a result of the acquisition, Summit is a wholly owned subsidiary of the Company reported in our mechanical segment. </p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="display:inline-block;text-indent:0pt;width:36pt;"></span>The following summarizes the acquisition date fair value of consideration transferred and the acquisition date fair value of the identifiable assets acquired and liabilities assumed, including an amount for goodwill (in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="display:inline-block;text-indent:0pt;width:36pt;"></span><span style="visibility:hidden;">​</span></p><div style="padding-left:40.5pt;"><table style="border-collapse:collapse;font-size:16pt;height:max-content;padding-left:0pt;padding-right:0pt;width:83.34%;"><tr style="height:1pt;"><td style="vertical-align:bottom;width:80.78%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.64%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;width:80.78%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Consideration transferred:</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Cash paid at closing</span></p></td><td style="vertical-align:middle;width:2.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 267,500</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Working capital adjustment </span></p></td><td style="vertical-align:middle;width:2.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="color:#ff0000;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 14,595</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Notes issued to former owners</span></p></td><td style="vertical-align:middle;width:2.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 35,000</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Estimated fair value of contingent earn-out payments</span></p></td><td style="vertical-align:middle;width:2.64%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 42,732</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:middle;width:2.64%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 359,827</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Recognized amounts of identifiable assets acquired and liabilities assumed:</p></td><td style="vertical-align:middle;width:2.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Cash and cash equivalents</span></p></td><td style="vertical-align:middle;width:2.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 171,027</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Billed and unbilled accounts receivable</span></p></td><td style="vertical-align:middle;width:2.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 59,921</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Prepaid expenses and other</span></p></td><td style="vertical-align:middle;width:2.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 1,476</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Cost and estimated earnings in excess of billings</span></p></td><td style="vertical-align:middle;width:2.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 578</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Property and equipment</span></p></td><td style="vertical-align:middle;width:2.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 2,528</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Lease right-of-use asset</span></p></td><td style="vertical-align:middle;width:2.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 2,365</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Goodwill</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 155,220</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Identifiable intangible assets</span></p></td><td style="vertical-align:middle;width:2.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 170,100</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Other noncurrent assets</span></p></td><td style="vertical-align:middle;width:2.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 136</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Accounts payable</span></p></td><td style="vertical-align:middle;width:2.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (15,138)</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Billings in excess of costs and estimated earnings and deferred revenue</span></p></td><td style="vertical-align:middle;width:2.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (179,895)</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Current operating lease liabilities</span></p></td><td style="vertical-align:middle;width:2.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (1,495)</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Accrued expenses and other current liabilities</span></p></td><td style="vertical-align:middle;width:2.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (6,243)</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Long-term operating lease liabilities</span></p></td><td style="vertical-align:middle;width:2.64%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (753)</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:middle;width:2.64%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 359,827</p></td></tr></table></div><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="display:inline-block;text-indent:0pt;width:36pt;"></span><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="display:inline-block;text-indent:0pt;width:36pt;"></span>The allocation of the purchase price to the assets acquired and liabilities assumed is preliminary and, therefore, subject to change pending the completion of the final valuation of intangible assets and accrued liabilities. Goodwill represents the future economic benefits arising from other assets acquired that cannot be individually identified and separately recognized. The goodwill recognized as a result of the Summit acquisition is deductible for tax purposes.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="white-space:pre-wrap;">In estimating the fair value of the acquired intangible assets, we utilized the valuation methodology determined to be the most appropriate for the individual intangible asset. In order to estimate the fair value of the backlog and customer relationships, we utilized an excess earnings methodology, which consisted of the projected cash flows attributable to these assets discounted to present value using a risk-adjusted discount rate that represented the required rate of return. The trade name value was determined based on the relief-from-royalty method, which applies a royalty rate to the revenue stream attributable to this asset, and the resulting royalty payment is tax effected and discounted to present value. Some of the more significant estimates and assumptions inherent in determining the fair value of the identifiable intangible assets are associated with forecasting cash flows and profitability, which represent Level 3 inputs. The primary assumptions used were generally based upon the present value of anticipated cash flows discounted at rates ranging from </span>18.5% to 20.5%<span style="white-space:pre-wrap;">. Estimated years of projected earnings generally follow the range of estimated remaining useful lives for each intangible asset class. </span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">The acquired intangible assets include the following (dollars in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><div style="padding-left:40.5pt;"><table style="border-collapse:collapse;font-size:16pt;height:max-content;padding-left:0pt;padding-right:0pt;width:84.17%;"><tr style="height:1pt;"><td style="vertical-align:bottom;width:48.39%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.19%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:20.1%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.67%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:12.22%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:1.97%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:1.97%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:11.43%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;width:48.39%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.19%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:20.1%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Valuation Method</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.67%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:12.22%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Estimated Useful Life</b></p></td><td style="vertical-align:bottom;width:1.97%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.97%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:11.43%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Estimated Fair Value</b></p></td></tr><tr><td style="vertical-align:bottom;width:48.39%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Backlog</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.19%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:20.1%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;">Excess earnings</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.67%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:12.22%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;">1.8 years</p></td><td style="vertical-align:bottom;width:1.97%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.97%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.43%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 35,800</p></td></tr><tr><td style="vertical-align:bottom;width:48.39%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Trade Name</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.19%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:20.1%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;">Relief-from-royalty</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.67%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:12.22%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;">22.9 years</p></td><td style="vertical-align:bottom;width:1.97%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.97%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.43%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 11,300</p></td></tr><tr><td style="vertical-align:bottom;width:48.39%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Customer Relationships</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.19%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:20.1%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;">Excess earnings</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.67%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:12.22%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;">10 years</p></td><td style="vertical-align:bottom;width:1.97%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.97%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.43%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 123,000</p></td></tr><tr><td style="vertical-align:bottom;width:48.39%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Total</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.19%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:20.1%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.67%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:12.22%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.97%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.97%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.43%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 170,100</p></td></tr></table></div><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">The contingent earn-out obligation is associated with the achievement of four earnings milestones over a <span style="-sec-ix-hidden:Hidden_qZdWY8FXOUehPG5J7c-aaA;"><span style="font-family:'Times New Roman','Times','serif';font-size:10pt;font-style:normal;font-weight:normal;">47-month</span></span> period, and the range of each estimated milestone payment is $2.6 million to $20.5 million. We determined the initial fair value of the contingent earn-out obligation based on the Monte Carlo Simulation method, which represents a Level 3 measurement.  Cash flows were discounted using discount rates ranging from 18.2% to 19.5%, which we believe is appropriate and representative of a market participant assumption.  Subsequent to the acquisition date, the contingent earn-out obligation is remeasured at fair value each reporting period.  Changes in the estimated fair value of the contingent payments subsequent to the acquisition date are recognized immediately in earnings.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="display:inline-block;text-indent:0pt;width:36pt;"></span><span style="font-style:italic;font-weight:bold;">J &amp; S Mechanical Contractors, Inc. Acquisition</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="display:inline-block;text-indent:0pt;width:36pt;"></span>On February 1, 2024, we acquired all of the issued and outstanding shares of capital stock of J &amp; S Mechanical Contractors, Inc. (“J&amp;S”). J&amp;S is headquartered in West Jordan, Utah, and provides mechanical construction services to commercial and industrial sectors, specializing in data center HVAC systems and hospital medical gas systems. As a result of the acquisition, J&amp;S is a wholly owned subsidiary of the Company reported in our mechanical segment. </p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="display:inline-block;text-indent:0pt;width:36pt;"></span>The following summarizes the acquisition date fair value of consideration transferred and the acquisition date fair value of the identifiable assets acquired and liabilities assumed, including an amount for goodwill (in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="display:inline-block;text-indent:0pt;width:36pt;"></span><span style="visibility:hidden;">​</span></p><div style="padding-left:40.5pt;"><table style="border-collapse:collapse;font-size:16pt;height:max-content;padding-left:0pt;padding-right:0pt;width:84.25%;"><tr style="height:1pt;"><td style="vertical-align:bottom;width:82.56%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:3.41%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;width:82.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Consideration transferred:</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.41%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Cash paid at closing</span></p></td><td style="vertical-align:middle;width:3.41%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 100,000</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Working capital adjustment </span></p></td><td style="vertical-align:middle;width:3.41%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="color:#ff0000;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 1,531</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Notes issued to former owners</span></p></td><td style="vertical-align:middle;width:3.41%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 10,000</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Estimated fair value of contingent earn-out payments</span></p></td><td style="vertical-align:middle;width:3.41%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 9,052</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:middle;width:3.41%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 120,583</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Recognized amounts of identifiable assets acquired and liabilities assumed:</p></td><td style="vertical-align:middle;width:3.41%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Cash and cash equivalents</span></p></td><td style="vertical-align:middle;width:3.41%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 14,802</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Billed and unbilled accounts receivable</span></p></td><td style="vertical-align:middle;width:3.41%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 38,411</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Inventory</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.41%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 230</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Prepaid expenses and other</span></p></td><td style="vertical-align:middle;width:3.41%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 326</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Costs and estimated earnings in excess of billings</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.41%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 728</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Property and equipment</span></p></td><td style="vertical-align:middle;width:3.41%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 2,674</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Lease right-of-use asset</span></p></td><td style="vertical-align:middle;width:3.41%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 4,552</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Goodwill</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.41%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 40,680</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Identifiable intangible assets</span></p></td><td style="vertical-align:middle;width:3.41%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 63,300</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Other noncurrent assets</span></p></td><td style="vertical-align:middle;width:3.41%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 10</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Accounts payable</span></p></td><td style="vertical-align:middle;width:3.41%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (20,612)</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Billings in excess of costs and estimated earnings and deferred revenue</span></p></td><td style="vertical-align:middle;width:3.41%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (19,188)</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Current operating lease liabilities</span></p></td><td style="vertical-align:middle;width:3.41%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (133)</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Accrued expenses and other current liabilities</span></p></td><td style="vertical-align:middle;width:3.41%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (826)</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Long-term debt</span></p></td><td style="vertical-align:middle;width:3.41%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (59)</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Long-term operating lease liabilities</span></p></td><td style="vertical-align:middle;width:3.41%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (4,312)</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:middle;width:3.41%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 120,583</p></td></tr></table></div><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="display:inline-block;text-indent:0pt;width:36pt;"></span>The allocation of the purchase price to the assets acquired and liabilities assumed is preliminary and, therefore, subject to change pending the completion of the final valuation of intangible assets and accrued liabilities. Goodwill represents the future economic benefits arising from other assets acquired that cannot be individually identified and separately recognized. The goodwill recognized as a result of the J&amp;S acquisition is deductible for tax purposes.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="white-space:pre-wrap;">In estimating the fair value of the acquired intangible assets, we utilized the valuation methodology determined to be the most appropriate for the individual intangible asset. In order to estimate the fair value of the backlog and customer relationships, we utilized an excess earnings methodology, which consisted of the projected cash flows attributable to these assets discounted to present value using a risk-adjusted discount rate that represented the required rate of return. The trade name value was determined based on the relief-from-royalty method, which applies a royalty rate to the revenue stream attributable to this asset, and the resulting royalty payment is tax effected and discounted to </span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;">present value. Some of the more significant estimates and assumptions inherent in determining the fair value of the identifiable intangible assets are associated with forecasting cash flows and profitability, which represent Level 3 inputs. The primary assumptions used were generally based upon the present value of anticipated cash flows discounted at rates ranging from </span>15.5% to 17.0%<span style="white-space:pre-wrap;">. Estimated years of projected earnings generally follow the range of estimated remaining useful lives for each intangible asset class. </span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">The acquired intangible assets include the following (dollars in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><div style="padding-left:40.5pt;"><table style="border-collapse:collapse;font-size:16pt;height:max-content;padding-left:0pt;padding-right:0pt;width:85.17%;"><tr style="height:1pt;"><td style="vertical-align:bottom;white-space:nowrap;width:49.4%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:19.06%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:14.73%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.47%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:8.62%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:49.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:19.06%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.73%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Estimated</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:10.09%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Estimated</b></p></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:49.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:19.06%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Valuation Method</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.73%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Useful Life</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:10.09%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Fair Value</b></p></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:49.4%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Backlog</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:19.06%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;">Excess earnings</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.73%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;">1.8 years</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.47%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.62%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 12,900</p></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:49.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Trade Name</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:19.06%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;">Relief-from-royalty</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.73%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;">22 years</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.47%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.62%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 10,600</p></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:49.4%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Customer Relationships</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:19.06%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;">Excess earnings</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.73%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;">9 years</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.47%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.62%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 39,800</p></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:49.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Total</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:19.06%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.73%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.47%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.62%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 63,300</p></td></tr></table></div><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">The contingent earn-out obligation is associated with the achievement of three earnings milestones over a <span style="-sec-ix-hidden:Hidden_MEB7YKB2nkmpPost6RRI2w;"><span style="font-family:'Times New Roman','Times','serif';font-size:10pt;font-style:normal;font-weight:normal;">35-month</span></span> period, and the range of each estimated milestone payment is $1.1 million to $4.7 million. We determined the initial fair value of the contingent earn-out obligation based on the Monte Carlo Simulation method, which represents a Level 3 measurement.  Cash flows were discounted using a range of discount rates ranging from 15.4% to 16.5%, which we believe is appropriate and representative of a market participant assumption.  Subsequent to the acquisition date, the contingent earn-out obligation is remeasured at fair value each reporting period.  Changes in the estimated fair value of the contingent payments subsequent to the acquisition date are recognized immediately in earnings.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="font-style:italic;font-weight:bold;">Other Acquisitions</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">On October 2, 2023, we acquired all of the issued and outstanding shares of capital stock of DECCO, Inc. (“DECCO”), headquartered in Nashua, New Hampshire, for a total preliminary purchase price of $59.8 million, which included $48.8 million of cash paid on the closing date, $7.0 million in notes payable to the former owners, an earn-out that will be paid if certain financial targets are met after the acquisition date and a working capital adjustment. DECCO operates in the Northeastern United States and performs mechanical and plumbing services with specialties in piping systems, steam, power, biotechnical processes and conveying systems, in addition to turnkey tool and equipment installation, critical equipment handling services and associated maintenance and support services. As a result of the acquisition, DECCO is a wholly owned subsidiary of the Company reported in our mechanical segment.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">On February 1, 2023, we acquired all of the issued and outstanding shares of capital stock of Eldeco, Inc. (“Eldeco”), headquartered in South Carolina, for a total purchase price of $74.0 million, which included $60.8 million of cash paid on the closing date, $8.0 million in notes payable to the former owners, an earn-out that will be paid if certain financial targets are met after the acquisition date and a working capital adjustment. Eldeco performs electrical design and construction services in the Southeastern region of the United States. As a result of the acquisition, Eldeco is a wholly owned subsidiary of the Company reported in our electrical segment.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="white-space:pre-wrap;">The results of operations of acquisitions are included in our consolidated financial statements from their respective acquisition dates. Our Consolidated Balance Sheet includes preliminary allocations of the purchase price to the assets acquired and liabilities assumed for the applicable acquisitions pending the completion of the final valuation of intangible assets and accrued liabilities. The acquisitions completed in the current and prior year were not material, individually or in the aggregate. Additional contingent purchase price (“earn-out”) has been or will be paid if certain acquisitions achieve predetermined profitability targets. Such earn-outs, when they are not subject to the continued employment of the sellers, are estimated as of the purchase date and included as part of the consideration paid for the acquisition. If we have an earn-out under which continued employment is a condition to receipt of payment, then the earn-out is recorded as compensation expense over the period earned. </span></p> <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="display:inline-block;text-indent:0pt;width:36pt;"></span>The following summarizes the acquisition date fair value of consideration transferred and the acquisition date fair value of the identifiable assets acquired and liabilities assumed, including an amount for goodwill (in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="display:inline-block;text-indent:0pt;width:36pt;"></span><span style="visibility:hidden;">​</span></p><div style="padding-left:40.5pt;"><table style="border-collapse:collapse;font-size:16pt;height:max-content;padding-left:0pt;padding-right:0pt;width:83.34%;"><tr style="height:1pt;"><td style="vertical-align:bottom;width:80.78%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.64%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;width:80.78%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Consideration transferred:</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Cash paid at closing</span></p></td><td style="vertical-align:middle;width:2.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 267,500</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Working capital adjustment </span></p></td><td style="vertical-align:middle;width:2.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="color:#ff0000;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 14,595</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Notes issued to former owners</span></p></td><td style="vertical-align:middle;width:2.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 35,000</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Estimated fair value of contingent earn-out payments</span></p></td><td style="vertical-align:middle;width:2.64%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 42,732</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:middle;width:2.64%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 359,827</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Recognized amounts of identifiable assets acquired and liabilities assumed:</p></td><td style="vertical-align:middle;width:2.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Cash and cash equivalents</span></p></td><td style="vertical-align:middle;width:2.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 171,027</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Billed and unbilled accounts receivable</span></p></td><td style="vertical-align:middle;width:2.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 59,921</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Prepaid expenses and other</span></p></td><td style="vertical-align:middle;width:2.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 1,476</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Cost and estimated earnings in excess of billings</span></p></td><td style="vertical-align:middle;width:2.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 578</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Property and equipment</span></p></td><td style="vertical-align:middle;width:2.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 2,528</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Lease right-of-use asset</span></p></td><td style="vertical-align:middle;width:2.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 2,365</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Goodwill</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 155,220</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Identifiable intangible assets</span></p></td><td style="vertical-align:middle;width:2.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 170,100</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Other noncurrent assets</span></p></td><td style="vertical-align:middle;width:2.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 136</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Accounts payable</span></p></td><td style="vertical-align:middle;width:2.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (15,138)</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Billings in excess of costs and estimated earnings and deferred revenue</span></p></td><td style="vertical-align:middle;width:2.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (179,895)</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Current operating lease liabilities</span></p></td><td style="vertical-align:middle;width:2.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (1,495)</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Accrued expenses and other current liabilities</span></p></td><td style="vertical-align:middle;width:2.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (6,243)</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Long-term operating lease liabilities</span></p></td><td style="vertical-align:middle;width:2.64%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (753)</p></td></tr><tr><td style="vertical-align:bottom;width:80.78%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:middle;width:2.64%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.57%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 359,827</p></td></tr></table></div> 267500000 14595000 35000000 42732000 359827000 171027000 59921000 1476000 578000 2528000 2365000 155220000 170100000 136000 15138000 179895000 1495000 6243000 753000 359827000 0.185 0.205 <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">The acquired intangible assets include the following (dollars in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><div style="padding-left:40.5pt;"><table style="border-collapse:collapse;font-size:16pt;height:max-content;padding-left:0pt;padding-right:0pt;width:84.17%;"><tr style="height:1pt;"><td style="vertical-align:bottom;width:48.39%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.19%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:20.1%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.67%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:12.22%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:1.97%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:1.97%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:11.43%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;width:48.39%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.19%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:20.1%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Valuation Method</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.67%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:12.22%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Estimated Useful Life</b></p></td><td style="vertical-align:bottom;width:1.97%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.97%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:11.43%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Estimated Fair Value</b></p></td></tr><tr><td style="vertical-align:bottom;width:48.39%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Backlog</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.19%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:20.1%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;">Excess earnings</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.67%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:12.22%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;">1.8 years</p></td><td style="vertical-align:bottom;width:1.97%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.97%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.43%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 35,800</p></td></tr><tr><td style="vertical-align:bottom;width:48.39%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Trade Name</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.19%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:20.1%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;">Relief-from-royalty</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.67%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:12.22%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;">22.9 years</p></td><td style="vertical-align:bottom;width:1.97%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.97%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.43%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 11,300</p></td></tr><tr><td style="vertical-align:bottom;width:48.39%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Customer Relationships</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.19%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:20.1%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;">Excess earnings</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.67%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:12.22%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;">10 years</p></td><td style="vertical-align:bottom;width:1.97%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.97%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.43%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 123,000</p></td></tr><tr><td style="vertical-align:bottom;width:48.39%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Total</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.19%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:20.1%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.67%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:12.22%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.97%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.97%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.43%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 170,100</p></td></tr></table></div> P1Y9M18D 35800000 P22Y10M24D 11300000 P10Y 123000000 170100000 4 2600000 20500000 0.182 0.195 <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="display:inline-block;text-indent:0pt;width:36pt;"></span><span style="visibility:hidden;">​</span></p><div style="padding-left:40.5pt;"><table style="border-collapse:collapse;font-size:16pt;height:max-content;padding-left:0pt;padding-right:0pt;width:84.25%;"><tr style="height:1pt;"><td style="vertical-align:bottom;width:82.56%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:3.41%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;width:82.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Consideration transferred:</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.41%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Cash paid at closing</span></p></td><td style="vertical-align:middle;width:3.41%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 100,000</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Working capital adjustment </span></p></td><td style="vertical-align:middle;width:3.41%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="color:#ff0000;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 1,531</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Notes issued to former owners</span></p></td><td style="vertical-align:middle;width:3.41%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 10,000</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Estimated fair value of contingent earn-out payments</span></p></td><td style="vertical-align:middle;width:3.41%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 9,052</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:middle;width:3.41%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 120,583</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Recognized amounts of identifiable assets acquired and liabilities assumed:</p></td><td style="vertical-align:middle;width:3.41%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Cash and cash equivalents</span></p></td><td style="vertical-align:middle;width:3.41%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 14,802</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Billed and unbilled accounts receivable</span></p></td><td style="vertical-align:middle;width:3.41%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 38,411</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Inventory</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.41%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 230</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Prepaid expenses and other</span></p></td><td style="vertical-align:middle;width:3.41%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 326</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Costs and estimated earnings in excess of billings</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.41%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 728</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Property and equipment</span></p></td><td style="vertical-align:middle;width:3.41%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 2,674</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Lease right-of-use asset</span></p></td><td style="vertical-align:middle;width:3.41%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 4,552</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Goodwill</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.41%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 40,680</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Identifiable intangible assets</span></p></td><td style="vertical-align:middle;width:3.41%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 63,300</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Other noncurrent assets</span></p></td><td style="vertical-align:middle;width:3.41%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 10</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Accounts payable</span></p></td><td style="vertical-align:middle;width:3.41%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (20,612)</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Billings in excess of costs and estimated earnings and deferred revenue</span></p></td><td style="vertical-align:middle;width:3.41%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (19,188)</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Current operating lease liabilities</span></p></td><td style="vertical-align:middle;width:3.41%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (133)</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Accrued expenses and other current liabilities</span></p></td><td style="vertical-align:middle;width:3.41%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (826)</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Long-term debt</span></p></td><td style="vertical-align:middle;width:3.41%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (59)</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Long-term operating lease liabilities</span></p></td><td style="vertical-align:middle;width:3.41%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (4,312)</p></td></tr><tr><td style="vertical-align:bottom;width:82.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:middle;width:3.41%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.01%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 120,583</p></td></tr></table></div><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p> 100000000 1531000 10000000 9052000 120583000 14802000 38411000 230000 326000 728000 2674000 4552000 40680000 63300000 10000 20612000 19188000 133000 826000 59000 4312000 120583000 0.155 0.170 <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">The acquired intangible assets include the following (dollars in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><div style="padding-left:40.5pt;"><table style="border-collapse:collapse;font-size:16pt;height:max-content;padding-left:0pt;padding-right:0pt;width:85.17%;"><tr style="height:1pt;"><td style="vertical-align:bottom;white-space:nowrap;width:49.4%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:19.06%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:14.73%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.47%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:8.62%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:49.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:19.06%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.73%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Estimated</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:10.09%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Estimated</b></p></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:49.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:19.06%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Valuation Method</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.73%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Useful Life</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:10.09%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Fair Value</b></p></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:49.4%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Backlog</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:19.06%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;">Excess earnings</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.73%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;">1.8 years</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.47%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.62%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 12,900</p></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:49.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Trade Name</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:19.06%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;">Relief-from-royalty</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.73%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;">22 years</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.47%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.62%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 10,600</p></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:49.4%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Customer Relationships</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:19.06%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;">Excess earnings</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.73%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;">9 years</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.47%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.62%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 39,800</p></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:49.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Total</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:19.06%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:14.73%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.23%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.47%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:8.62%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 63,300</p></td></tr></table></div> P1Y9M18D 12900000 P22Y 10600000 P9Y 39800000 63300000 3 1100000 4700000 0.154 0.165 59800000 48800000 7000000.0 74000000.0 60800000 8000000.0 <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><b style="font-weight:bold;">6. Goodwill and Identifiable Intangible Assets, Net</b></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="font-style:italic;font-weight:bold;">Goodwill</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="font-style:italic;font-weight:bold;visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">The changes in the carrying amount of goodwill are as follows (in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-size:16pt;height:max-content;margin-left:-1.0288048%;padding-left:0pt;padding-right:0pt;table-layout:auto;width:102.05%;"><tr style="height:1pt;"><td style="vertical-align:bottom;width:57.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:13.29%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.62%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.58%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:11.36%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:0.99%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:8.88%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:0.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:57.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:normal;width:14.31%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.62%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:normal;width:12.94%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:normal;width:9.87%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:0.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:57.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:normal;width:14.31%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Mechanical Segment</b></p></td><td style="vertical-align:bottom;white-space:normal;width:1.62%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:normal;width:12.94%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Electrical Segment</b></p></td><td style="vertical-align:bottom;white-space:normal;width:1.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:normal;width:9.87%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Total</b></p></td><td style="vertical-align:bottom;width:0.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;"> </b></p></td></tr><tr><td style="vertical-align:bottom;width:57.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Balance at December 31, 2022</p></td><td style="vertical-align:bottom;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:normal;width:13.29%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 363,929</p></td><td style="vertical-align:bottom;white-space:normal;width:1.62%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.58%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:normal;width:11.36%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 247,860</p></td><td style="vertical-align:bottom;white-space:normal;width:1.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:0.99%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:normal;width:8.88%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 611,789</p></td><td style="vertical-align:bottom;width:0.4%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:57.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Acquisitions and purchase price adjustments (See Note 5)</p></td><td style="vertical-align:bottom;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.01%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:normal;width:13.29%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 29,347</p></td><td style="vertical-align:bottom;white-space:normal;width:1.62%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.58%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:11.36%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 25,698</p></td><td style="vertical-align:bottom;white-space:normal;width:1.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:0.99%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:8.88%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 55,045</p></td><td style="vertical-align:bottom;width:0.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:57.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Balance at December 31, 2023</p></td><td style="vertical-align:bottom;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:13.29%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 393,276</p></td><td style="vertical-align:bottom;white-space:normal;width:1.62%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.58%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:11.36%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 273,558</p></td><td style="vertical-align:bottom;white-space:normal;width:1.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:0.99%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:8.88%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 666,834</p></td><td style="vertical-align:bottom;width:0.4%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:57.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Acquisitions and purchase price adjustments (See Note 5)</p></td><td style="vertical-align:bottom;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.01%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:13.29%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 195,900</p></td><td style="vertical-align:bottom;white-space:normal;width:1.62%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.58%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:11.36%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 200</p></td><td style="vertical-align:bottom;white-space:normal;width:1.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:0.99%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:8.88%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 196,100</p></td><td style="vertical-align:bottom;width:0.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:57.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Balance at March 31, 2024</p></td><td style="vertical-align:bottom;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.01%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:normal;width:13.29%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 589,176</p></td><td style="vertical-align:bottom;white-space:normal;width:1.62%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.58%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:normal;width:11.36%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 273,758</p></td><td style="vertical-align:bottom;white-space:normal;width:1.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:0.99%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:normal;width:8.88%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 862,934</p></td><td style="vertical-align:bottom;width:0.4%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr></table><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="font-style:italic;font-weight:bold;">Identifiable Intangible Assets, Net</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="font-style:italic;font-weight:bold;visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">At March 31, 2024, future amortization expense of identifiable intangible assets is as follows (in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-size:16pt;height:max-content;margin-left:auto;margin-right:auto;padding-left:0pt;padding-right:0pt;width:60%;"><tr style="height:1pt;"><td style="vertical-align:bottom;width:81.25%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:3.42%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.88%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:13.2%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:0.22%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;width:81.25%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Year ending December 31—</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.42%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">    </p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.88%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.2%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">    </p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.22%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:81.25%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2024 (remainder of the year)</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.42%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.88%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;">$</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.2%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 71,121</p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.22%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:81.25%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2025</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.42%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.88%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.2%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 63,532</p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.22%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:81.25%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2026</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.42%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.88%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.2%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 52,948</p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.22%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:81.25%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2027</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.42%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.88%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.2%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 50,967</p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.22%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:81.25%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2028</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.42%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.88%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.2%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 50,806</p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.22%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:81.25%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">Thereafter</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.42%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.88%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.2%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 200,510</p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.22%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:81.25%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 18pt;">Total</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.42%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.88%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.2%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 489,884</p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.22%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr></table><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p> <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">The changes in the carrying amount of goodwill are as follows (in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-size:16pt;height:max-content;margin-left:-1.0288048%;padding-left:0pt;padding-right:0pt;table-layout:auto;width:102.05%;"><tr style="height:1pt;"><td style="vertical-align:bottom;width:57.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:13.29%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.62%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.58%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:11.36%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:0.99%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:8.88%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:0.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:57.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:normal;width:14.31%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.62%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:normal;width:12.94%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:normal;width:9.87%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:0.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:57.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:normal;width:14.31%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Mechanical Segment</b></p></td><td style="vertical-align:bottom;white-space:normal;width:1.62%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:normal;width:12.94%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Electrical Segment</b></p></td><td style="vertical-align:bottom;white-space:normal;width:1.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:normal;width:9.87%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Total</b></p></td><td style="vertical-align:bottom;width:0.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;"> </b></p></td></tr><tr><td style="vertical-align:bottom;width:57.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Balance at December 31, 2022</p></td><td style="vertical-align:bottom;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:normal;width:13.29%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 363,929</p></td><td style="vertical-align:bottom;white-space:normal;width:1.62%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.58%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:normal;width:11.36%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 247,860</p></td><td style="vertical-align:bottom;white-space:normal;width:1.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:0.99%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:normal;width:8.88%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 611,789</p></td><td style="vertical-align:bottom;width:0.4%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:57.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Acquisitions and purchase price adjustments (See Note 5)</p></td><td style="vertical-align:bottom;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.01%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:normal;width:13.29%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 29,347</p></td><td style="vertical-align:bottom;white-space:normal;width:1.62%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.58%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:11.36%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 25,698</p></td><td style="vertical-align:bottom;white-space:normal;width:1.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:0.99%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:8.88%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 55,045</p></td><td style="vertical-align:bottom;width:0.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:57.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Balance at December 31, 2023</p></td><td style="vertical-align:bottom;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:13.29%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 393,276</p></td><td style="vertical-align:bottom;white-space:normal;width:1.62%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.58%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:11.36%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 273,558</p></td><td style="vertical-align:bottom;white-space:normal;width:1.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:0.99%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:8.88%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 666,834</p></td><td style="vertical-align:bottom;width:0.4%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:57.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Acquisitions and purchase price adjustments (See Note 5)</p></td><td style="vertical-align:bottom;width:2.17%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.01%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:13.29%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 195,900</p></td><td style="vertical-align:bottom;white-space:normal;width:1.62%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.58%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:11.36%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 200</p></td><td style="vertical-align:bottom;white-space:normal;width:1.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:0.99%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:8.88%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 196,100</p></td><td style="vertical-align:bottom;width:0.4%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:57.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Balance at March 31, 2024</p></td><td style="vertical-align:bottom;width:2.17%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.01%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:normal;width:13.29%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 589,176</p></td><td style="vertical-align:bottom;white-space:normal;width:1.62%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:1.58%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:normal;width:11.36%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 273,758</p></td><td style="vertical-align:bottom;white-space:normal;width:1.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:normal;width:0.99%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:normal;width:8.88%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 862,934</p></td><td style="vertical-align:bottom;width:0.4%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr></table> 363929000 247860000 611789000 29347000 25698000 55045000 393276000 273558000 666834000 195900000 200000 196100000 589176000 273758000 862934000 <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">At March 31, 2024, future amortization expense of identifiable intangible assets is as follows (in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-size:16pt;height:max-content;margin-left:auto;margin-right:auto;padding-left:0pt;padding-right:0pt;width:60%;"><tr style="height:1pt;"><td style="vertical-align:bottom;width:81.25%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:3.42%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.88%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:13.2%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:0.22%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;width:81.25%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Year ending December 31—</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.42%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">    </p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.88%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.2%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">    </p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.22%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:81.25%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2024 (remainder of the year)</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.42%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.88%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;">$</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.2%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 71,121</p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.22%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:81.25%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2025</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.42%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.88%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.2%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 63,532</p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.22%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:81.25%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2026</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.42%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.88%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.2%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 52,948</p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.22%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:81.25%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2027</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.42%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.88%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.2%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 50,967</p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.22%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:81.25%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2028</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.42%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.88%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.2%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 50,806</p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.22%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:81.25%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">Thereafter</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.42%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.88%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.2%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 200,510</p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.22%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:81.25%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 18pt;">Total</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.42%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.88%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.2%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 489,884</p></td><td style="vertical-align:bottom;white-space:nowrap;width:0.22%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr></table><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p> 71121000 63532000 52948000 50967000 50806000 200510000 489884000 <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><b style="font-weight:bold;">7. Debt Obligations</b></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">Debt obligations consist of the following (in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-size:16pt;height:max-content;margin-left:auto;margin-right:auto;padding-left:0pt;padding-right:0pt;width:79.99%;"><tr style="height:1pt;"><td style="vertical-align:bottom;width:72.64%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:2.05%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.28%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:9.43%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.05%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.69%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:10.3%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:0.51%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;width:72.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:2.05%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:10.72%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">March 31, </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.05%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:11.99%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">December 31, </b></p></td><td style="vertical-align:bottom;width:0.51%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:72.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:2.05%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:10.72%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">2024 </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.05%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:11.99%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">2023</b></p></td><td style="vertical-align:bottom;width:0.51%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;"> </b></p></td></tr><tr><td style="vertical-align:bottom;width:72.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Revolving credit facility</p></td><td style="vertical-align:bottom;width:2.05%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.28%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:9.43%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.05%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.69%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;width:0.51%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:72.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Notes to former owners</p></td><td style="vertical-align:bottom;width:2.05%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.28%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:9.43%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 89,070</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.05%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.69%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 44,070</p></td><td style="vertical-align:bottom;width:0.51%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:72.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Other debt</p></td><td style="vertical-align:bottom;width:2.05%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.28%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:9.43%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 819</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.05%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.69%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.3%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 142</p></td><td style="vertical-align:bottom;width:0.51%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:72.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">Total debt</p></td><td style="vertical-align:bottom;width:2.05%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.28%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:9.43%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 89,889</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.05%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.69%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 44,212</p></td><td style="vertical-align:bottom;width:0.51%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:72.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">Less—current portion</p></td><td style="vertical-align:bottom;width:2.05%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.28%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:9.43%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (12,885)</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.05%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.69%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.3%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (4,867)</p></td><td style="vertical-align:bottom;width:0.51%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:72.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">Total long-term portion of debt</p></td><td style="vertical-align:bottom;width:2.05%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.28%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:9.43%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 77,004</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.05%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.69%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.3%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 39,345</p></td><td style="vertical-align:bottom;width:0.51%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td></tr></table><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;padding-left:18pt;text-indent:-18pt;margin:0pt 0pt 0pt 36pt;"><span style="font-style:italic;font-weight:bold;">Revolving Credit Facility </span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">We have an $850.0 million senior credit facility (the “Facility”) provided by a syndicate of banks, which is composed of a revolving credit line guaranteed by certain of our subsidiaries. The Facility also provides for an accordion or increase option not to exceed the greater of (a) $250 million and (b) 1.0x Credit Facility Adjusted EBITDA (as defined below), as well as a sublimit of up to $175.0 million issuable in the form of letters of credit. The Facility expires in July 2027 and is secured by a first lien on substantially all of our personal property except for assets related to projects subject to surety bonds and the equity of, and assets held by, certain unrestricted subsidiaries and our wholly owned captive insurance company, and a second lien on our assets related to projects subject to surety bonds. As of March 31, 2024, we had no outstanding borrowings on the revolving credit facility, $81.2 million in letters of credit outstanding and $768.8 million of credit available.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">There are two interest rate options for borrowings under the Facility, the Base Rate Loan (as defined in the Facility) option and the Secured Overnight Financing Rate (“SOFR”) Loan option. These rates are floating rates </p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">determined by the broad financial markets, meaning they can and do move up and down from time to time. Additional margins are then added to these two rates: </p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-size:16pt;height:max-content;margin-left:auto;margin-right:auto;padding-left:0pt;padding-right:0pt;width:100%;"><tr style="height:1pt;"><td style="vertical-align:bottom;width:53.32%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:7.13%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:7.55%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.74%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:6.5%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.74%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:6.39%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:6.79%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;width:53.32%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="9" style="vertical-align:bottom;white-space:nowrap;width:43.31%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Net Leverage Ratio</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="font-size:8pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:53.32%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td style="vertical-align:bottom;width:7.13%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Less than </b><b style="font-weight:bold;"><br/></b><b style="font-weight:bold;">1.00</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td style="vertical-align:bottom;width:7.55%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">1.00 to less than 1.75</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.74%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td style="vertical-align:bottom;width:6.5%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">1.75 to less than 2.50</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.74%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td style="vertical-align:bottom;width:6.39%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">2.50 to less than 3.00</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;"> </b></p></td><td style="vertical-align:bottom;width:6.79%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">3.00 or greater</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:53.32%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Additional Per Annum Interest Margin Added Under:</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.13%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.55%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.74%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.5%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.74%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.39%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.79%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:53.32%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">Base Rate Loan Option</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.13%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;">0.00 </p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.55%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 0.25</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.74%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">%  </p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.5%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 0.50</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.74%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">%  </p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.39%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 0.75</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.79%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 1.00</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">%</p></td></tr><tr><td style="vertical-align:bottom;width:53.32%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">SOFR Loan Option</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.13%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 1.00</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.55%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 1.25</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.74%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.5%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 1.50</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.74%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.39%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 1.75</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.79%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 2.00</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">%</p></td></tr></table><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">There were no outstanding borrowings on the revolving credit facility as of March 31, 2024 and December 31, 2023.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">Certain of our vendors require letters of credit to ensure reimbursement for amounts they are disbursing on our behalf, such as to beneficiaries under our self-funded insurance programs. We have also occasionally used letters of credit to guarantee performance under our contracts and to ensure payment to our subcontractors and vendors under those contracts. Our lenders issue such letters of credit through the Facility. A letter of credit commits the lenders to pay specified amounts to the holder of the letter of credit if the holder demonstrates that we have failed to perform specified actions. If this were to occur, we would be required to reimburse the lenders for amounts they fund to honor the letter of credit holder’s claim. Absent a claim, there is no payment or reserving of funds by us in connection with a letter of credit. However, because a claim on a letter of credit would require immediate reimbursement by us to our lenders, letters of credit are treated as a use of Facility capacity. The letter of credit fees range from 1.00% to 2.00% per annum, based on the Net Leverage Ratio.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">Commitment fees are payable on the portion of the revolving loan capacity not in use for borrowings or letters of credit at any given time. These fees range from 0.15% to 0.25% per annum, based on the Net Leverage Ratio.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">The Facility contains financial covenants defining various financial measures and the levels of these measures with which we must comply. Covenant compliance is assessed as of each quarter end. We were in compliance with all of our financial covenants as of March 31, 2024.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-style:italic;font-weight:bold;visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-style:italic;font-weight:bold;">Notes to Former Owners</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt 0pt 12pt 0pt;">As part of the consideration used to acquire ten companies, we have outstanding notes to the former owners. Together, these notes had an outstanding balance of $89.1 million as of March 31, 2024. At March 31, 2024, future principal payments of notes to former owners by maturity year are as follows (dollars in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;min-height:0.0pt;margin:0pt;"><span style="font-size:0pt;visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-size:16pt;height:max-content;margin-left:auto;margin-right:auto;padding-left:0pt;padding-right:0pt;width:79.99%;"><tr style="height:1pt;"><td style="vertical-align:bottom;width:52.91%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.83%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:19.53%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:16.1%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:3.56%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;width:52.91%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:3.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:21.37%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Balance at</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:19.66%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Range of Stated</b></p></td></tr><tr><td style="vertical-align:bottom;width:52.91%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:3.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:21.37%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">March 31, 2024</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:19.66%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;"> Interest Rates</b></p></td></tr><tr><td style="vertical-align:bottom;width:52.91%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2024</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.83%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;">$</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:19.53%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 4,800</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.1%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 2.5</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;">%</span></p></td></tr><tr><td style="vertical-align:bottom;width:52.91%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2025</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.83%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:19.53%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 21,645</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.1%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;">2.3 - 3.0</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;">%</span></p></td></tr><tr><td style="vertical-align:bottom;width:52.91%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2026</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.83%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:19.53%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 31,625</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.1%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;">2.5 - 5.5</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;">%</span></p></td></tr><tr><td style="vertical-align:bottom;width:52.91%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2027</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.83%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:19.53%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 26,000</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.1%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 5.5</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;">%</span></p></td></tr><tr><td style="vertical-align:bottom;width:52.91%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2028</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.83%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:19.53%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 5,000</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.1%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 5.5</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;">%</span></p></td></tr><tr><td style="vertical-align:bottom;width:52.91%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 18pt;">Total</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.83%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:19.53%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 89,070</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.1%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td></tr></table><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:1pt;text-indent:36pt;margin:0pt;">F</p> <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">Debt obligations consist of the following (in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-size:16pt;height:max-content;margin-left:auto;margin-right:auto;padding-left:0pt;padding-right:0pt;width:79.99%;"><tr style="height:1pt;"><td style="vertical-align:bottom;width:72.64%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:2.05%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.28%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:9.43%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.05%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.69%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:10.3%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:0.51%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;width:72.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:2.05%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:10.72%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">March 31, </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.05%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:11.99%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">December 31, </b></p></td><td style="vertical-align:bottom;width:0.51%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:72.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:2.05%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:10.72%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">2024 </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.05%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:11.99%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">2023</b></p></td><td style="vertical-align:bottom;width:0.51%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;"> </b></p></td></tr><tr><td style="vertical-align:bottom;width:72.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Revolving credit facility</p></td><td style="vertical-align:bottom;width:2.05%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.28%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:9.43%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.05%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.69%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;width:0.51%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:72.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Notes to former owners</p></td><td style="vertical-align:bottom;width:2.05%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.28%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:9.43%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 89,070</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.05%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.69%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 44,070</p></td><td style="vertical-align:bottom;width:0.51%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:72.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Other debt</p></td><td style="vertical-align:bottom;width:2.05%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.28%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:9.43%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 819</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.05%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.69%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.3%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 142</p></td><td style="vertical-align:bottom;width:0.51%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:72.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">Total debt</p></td><td style="vertical-align:bottom;width:2.05%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.28%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:9.43%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 89,889</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.05%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.69%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 44,212</p></td><td style="vertical-align:bottom;width:0.51%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:72.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">Less—current portion</p></td><td style="vertical-align:bottom;width:2.05%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.28%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:9.43%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (12,885)</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.05%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.69%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.3%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (4,867)</p></td><td style="vertical-align:bottom;width:0.51%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:72.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">Total long-term portion of debt</p></td><td style="vertical-align:bottom;width:2.05%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.28%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:9.43%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 77,004</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.05%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.69%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.3%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 39,345</p></td><td style="vertical-align:bottom;width:0.51%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td></tr></table> 89070000 44070000 819000 142000 89889000 44212000 12885000 4867000 77004000 39345000 850000000.0 250000000 175000000.0 0 81200000 768800000 <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-size:16pt;height:max-content;margin-left:auto;margin-right:auto;padding-left:0pt;padding-right:0pt;width:100%;"><tr style="height:1pt;"><td style="vertical-align:bottom;width:53.32%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:7.13%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:7.55%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.74%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:6.5%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.74%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:6.39%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:6.79%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;width:53.32%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="9" style="vertical-align:bottom;white-space:nowrap;width:43.31%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Net Leverage Ratio</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="font-size:8pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:53.32%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td style="vertical-align:bottom;width:7.13%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Less than </b><b style="font-weight:bold;"><br/></b><b style="font-weight:bold;">1.00</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td style="vertical-align:bottom;width:7.55%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">1.00 to less than 1.75</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.74%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td style="vertical-align:bottom;width:6.5%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">1.75 to less than 2.50</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.74%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td style="vertical-align:bottom;width:6.39%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">2.50 to less than 3.00</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;"> </b></p></td><td style="vertical-align:bottom;width:6.79%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">3.00 or greater</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:53.32%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Additional Per Annum Interest Margin Added Under:</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.13%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.55%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.74%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.5%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.74%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.39%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.79%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:53.32%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">Base Rate Loan Option</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.13%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;">0.00 </p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.55%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 0.25</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.74%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">%  </p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.5%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 0.50</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.74%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">%  </p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.39%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 0.75</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.79%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 1.00</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">%</p></td></tr><tr><td style="vertical-align:bottom;width:53.32%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">SOFR Loan Option</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.64%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.13%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 1.00</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.55%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 1.25</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.74%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.5%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 1.50</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.74%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.39%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 1.75</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">%</p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.79%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 2.00</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">%</p></td></tr></table> 0.0000 0.0025 0.0050 0.0075 0.0100 0.0100 0.0125 0.0150 0.0175 0.0200 0 0 0.0100 0.0200 0.0015 0.0025 10 89100000 At March 31, 2024, future principal payments of notes to former owners by maturity year are as follows (dollars in thousands):<p style="font-family:'Times New Roman','Times','serif';font-size:10pt;min-height:0.0pt;margin:0pt;"><span style="font-size:0pt;visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-size:16pt;height:max-content;margin-left:auto;margin-right:auto;padding-left:0pt;padding-right:0pt;width:79.99%;"><tr style="height:1pt;"><td style="vertical-align:bottom;width:52.91%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.83%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:19.53%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:16.1%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:3.56%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;width:52.91%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:3.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:21.37%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Balance at</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:19.66%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Range of Stated</b></p></td></tr><tr><td style="vertical-align:bottom;width:52.91%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:3.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:21.37%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">March 31, 2024</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:19.66%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;"> Interest Rates</b></p></td></tr><tr><td style="vertical-align:bottom;width:52.91%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2024</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.83%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;">$</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:19.53%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 4,800</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.1%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 2.5</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;">%</span></p></td></tr><tr><td style="vertical-align:bottom;width:52.91%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2025</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.83%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:19.53%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 21,645</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.1%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;">2.3 - 3.0</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;">%</span></p></td></tr><tr><td style="vertical-align:bottom;width:52.91%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2026</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.83%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:19.53%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 31,625</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.1%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;">2.5 - 5.5</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;">%</span></p></td></tr><tr><td style="vertical-align:bottom;width:52.91%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2027</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.83%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:19.53%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 26,000</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.1%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 5.5</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;">%</span></p></td></tr><tr><td style="vertical-align:bottom;width:52.91%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2028</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.83%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:19.53%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 5,000</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.1%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 5.5</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.56%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;">%</span></p></td></tr><tr><td style="vertical-align:bottom;width:52.91%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 18pt;">Total</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.83%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:19.53%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 89,070</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:16.1%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.56%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:11pt;visibility:hidden;">​</span></p></td></tr></table> 4800000 0.025 21645000 0.023 0.030 31625000 0.025 0.055 26000000 0.055 5000000 0.055 89070000 <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><b style="font-weight:bold;">8. Leases</b></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-weight:bold;visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">We lease certain facilities, vehicles and equipment primarily under noncancelable operating leases. The most significant portion of these noncancelable operating leases is for the facilities occupied by our corporate office and our operating locations. Leases with an initial term of 12 months or less are not recorded in the Consolidated Balance Sheet. We do not separate lease components from their associated non-lease components pursuant to lease accounting guidance. We have certain leases with variable payments based on an index as well as short-term leases on equipment and facilities. Variable lease expense and short-term lease expense aggregated to $17.9 million and $10.2 million in the first </p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">three months of 2024 and 2023, respectively. These expenses were primarily related to short-term equipment rentals. Lease right-of-use assets and liabilities are recognized at commencement date based on the present value of lease payments over the lease term. As most of our leases do not provide an implicit rate, we generally use our incremental borrowing rate based on the information available at commencement date in determining the present value of lease payments. The weighted average discount rate for our operating leases as of March 31, 2024 and December 31, 2023 was 6.0% and 5.8%, respectively. We recognize operating lease expense, including escalating lease payments and lease incentives, on a straight-line basis over the lease term. Operating lease expense for the three months ended March 31, 2024 and 2023 was $28.2 million and $17.3 million, respectively. </p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">The lease terms generally range from <span style="-sec-ix-hidden:Hidden_y1P2-FAX3kSO66w3iWmoSQ;"><span style="font-family:'Times New Roman','Times','serif';font-size:10pt;font-style:normal;font-weight:normal;">three</span></span> to ten years. Some leases include one or more options to renew, which may be exercised to extend the lease term. We include the exercise of lease renewal options in the lease term when it is reasonably certain that we will exercise the option and such exercise is at our sole discretion. In the third quarter of 2023, we commenced two large real estate leases to support our expected growth in off-site construction, with lease terms longer than our typical terms. The weighted average remaining lease term for our operating leases was 11.5 years at March 31, 2024 and 10.9 years at December 31, 2023.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">A majority of the Company’s real property leases are with individuals or entities with whom we have no other business relationship. However, in certain instances the Company enters into real property leases with current or former employees. Rent paid to related parties for the three months ended March 31, 2024 and 2023 was approximately $2.1 million and $2.0 million, respectively.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">If we decide to cancel or terminate a lease before the end of its term, we would typically owe the lessor the remaining lease payments under the term of the lease. Our lease agreements do not contain any material residual value guarantees or material restrictive covenants. On rare occasions, we rent or sublease certain real estate assets that we no longer use to third parties.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">The following table summarizes the operating lease assets and liabilities included in the Consolidated Balance Sheet as follows (in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-size:16pt;height:max-content;margin-left:auto;margin-right:auto;padding-left:0pt;padding-right:0pt;width:79.99%;"><tr style="height:1pt;"><td style="vertical-align:bottom;white-space:nowrap;width:58.35%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.41%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:13.27%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:3.21%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:3.43%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:13.19%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:6.1%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:58.35%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.41%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.27%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.21%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.43%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.19%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.1%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:middle;width:58.35%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:15.68%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">March 31, 2024</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.21%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:16.62%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">December 31, 2023</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.1%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:middle;width:58.35%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Operating lease right-of-use assets</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.41%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.27%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 227,157</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.21%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.43%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.19%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 205,712</p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.1%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:middle;width:58.35%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Operating lease liabilities:</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.41%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.27%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.21%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.43%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.19%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.1%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:middle;width:58.35%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="-sec-ix-hidden:Hidden_0xHkpRjf30m0gXTOsh-efA;"><span style="font-family:'Times New Roman','Times','serif';font-size:10pt;font-style:normal;font-weight:normal;white-space:pre-wrap;"> Other current liabilities</span></span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.41%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.27%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 26,130</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.21%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.43%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.19%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 24,426</p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.1%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:middle;width:58.35%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Long-term operating lease liabilities</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.41%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.27%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 209,717</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.21%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.43%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.19%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 188,136</p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.1%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:middle;width:58.35%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Total operating lease liabilities</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.41%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.27%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 235,847</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.21%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.43%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.19%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 212,562</p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.1%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr></table><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">The maturities of operating lease liabilities are as follows (in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-size:16pt;height:max-content;margin-left:auto;margin-right:auto;padding-left:0pt;padding-right:0pt;width:79.99%;"><tr style="height:1pt;"><td style="vertical-align:bottom;width:85.37%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:2.44%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:1.45%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:10.72%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;width:85.37%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Year ending December 31—</p></td><td style="vertical-align:bottom;width:2.44%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.45%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:10.72%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:85.37%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2024 (excluding the three months ended March 31, 2024)</p></td><td style="vertical-align:bottom;width:2.44%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.45%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.72%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 29,282</p></td></tr><tr><td style="vertical-align:bottom;width:85.37%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2025</p></td><td style="vertical-align:bottom;width:2.44%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.45%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.72%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 36,864</p></td></tr><tr><td style="vertical-align:bottom;width:85.37%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2026</p></td><td style="vertical-align:bottom;width:2.44%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.45%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.72%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 33,144</p></td></tr><tr><td style="vertical-align:bottom;width:85.37%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2027</p></td><td style="vertical-align:bottom;width:2.44%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.45%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.72%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 28,915</p></td></tr><tr><td style="vertical-align:bottom;width:85.37%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2028</p></td><td style="vertical-align:bottom;width:2.44%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.45%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.72%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 25,252</p></td></tr><tr><td style="vertical-align:bottom;width:85.37%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">Thereafter</p></td><td style="vertical-align:bottom;width:2.44%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.45%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.72%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 183,669</p></td></tr><tr><td style="vertical-align:bottom;width:85.37%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 24pt;">Total lease payments</p></td><td style="vertical-align:bottom;width:2.44%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 24pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.45%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.72%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 337,126</p></td></tr><tr><td style="vertical-align:bottom;width:85.37%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 24pt;">Less—present value discount</p></td><td style="vertical-align:bottom;width:2.44%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 24pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.45%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.72%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (101,279)</p></td></tr><tr><td style="vertical-align:bottom;width:85.37%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 24pt;">Present value of operating lease liabilities</p></td><td style="vertical-align:bottom;width:2.44%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 24pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.45%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.72%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 235,847</p></td></tr></table><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">Supplemental information related to operating leases was as follows (in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-size:16pt;height:max-content;padding-left:0pt;padding-right:0pt;width:100%;"><tr style="height:1pt;"><td style="vertical-align:middle;width:67.01%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="position:absolute;top:50%;transform:translate(0,-50%);width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.92%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:13.51%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.09%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.92%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:13.51%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;width:67.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="5" style="vertical-align:bottom;white-space:nowrap;width:32.98%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Three Months Ended March 31, </b></p></td></tr><tr><td style="vertical-align:bottom;width:67.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:15.44%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">2024</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.09%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:15.44%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">2023</b></p></td></tr><tr><td style="vertical-align:middle;width:67.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Cash paid for amounts included in the measurement of operating lease liabilities</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.92%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.51%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 9,466</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.09%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.92%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.51%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 7,024</p></td></tr><tr><td style="vertical-align:middle;width:67.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Operating lease right-of-use assets obtained in exchange for lease liabilities</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.92%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.51%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 29,426</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.09%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.92%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.51%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 9,446</p></td></tr></table><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;font-weight:bold;visibility:hidden;">​</span></p> <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">We lease certain facilities, vehicles and equipment primarily under noncancelable operating leases. The most significant portion of these noncancelable operating leases is for the facilities occupied by our corporate office and our operating locations. Leases with an initial term of 12 months or less are not recorded in the Consolidated Balance Sheet. We do not separate lease components from their associated non-lease components pursuant to lease accounting guidance. We have certain leases with variable payments based on an index as well as short-term leases on equipment and facilities. Variable lease expense and short-term lease expense aggregated to $17.9 million and $10.2 million in the first </p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">three months of 2024 and 2023, respectively. These expenses were primarily related to short-term equipment rentals. Lease right-of-use assets and liabilities are recognized at commencement date based on the present value of lease payments over the lease term. As most of our leases do not provide an implicit rate, we generally use our incremental borrowing rate based on the information available at commencement date in determining the present value of lease payments. The weighted average discount rate for our operating leases as of March 31, 2024 and December 31, 2023 was 6.0% and 5.8%, respectively. We recognize operating lease expense, including escalating lease payments and lease incentives, on a straight-line basis over the lease term. Operating lease expense for the three months ended March 31, 2024 and 2023 was $28.2 million and $17.3 million, respectively. </p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">The lease terms generally range from <span style="-sec-ix-hidden:Hidden_y1P2-FAX3kSO66w3iWmoSQ;"><span style="font-family:'Times New Roman','Times','serif';font-size:10pt;font-style:normal;font-weight:normal;">three</span></span> to ten years. Some leases include one or more options to renew, which may be exercised to extend the lease term. We include the exercise of lease renewal options in the lease term when it is reasonably certain that we will exercise the option and such exercise is at our sole discretion. In the third quarter of 2023, we commenced two large real estate leases to support our expected growth in off-site construction, with lease terms longer than our typical terms. The weighted average remaining lease term for our operating leases was 11.5 years at March 31, 2024 and 10.9 years at December 31, 2023.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">A majority of the Company’s real property leases are with individuals or entities with whom we have no other business relationship. However, in certain instances the Company enters into real property leases with current or former employees. Rent paid to related parties for the three months ended March 31, 2024 and 2023 was approximately $2.1 million and $2.0 million, respectively.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">If we decide to cancel or terminate a lease before the end of its term, we would typically owe the lessor the remaining lease payments under the term of the lease. Our lease agreements do not contain any material residual value guarantees or material restrictive covenants. On rare occasions, we rent or sublease certain real estate assets that we no longer use to third parties.</p> 17900000 10200000 0.060 0.058 28200000 17300000 P10Y 1 true 2 P11Y6M P10Y10M24D 2100000 2000000.0 <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">The following table summarizes the operating lease assets and liabilities included in the Consolidated Balance Sheet as follows (in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-size:16pt;height:max-content;margin-left:auto;margin-right:auto;padding-left:0pt;padding-right:0pt;width:79.99%;"><tr style="height:1pt;"><td style="vertical-align:bottom;white-space:nowrap;width:58.35%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.41%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:13.27%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:3.21%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:3.43%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:13.19%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:6.1%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;white-space:nowrap;width:58.35%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.41%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.27%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.21%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.43%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.19%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.1%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-family:'Calibri','Helvetica','sans-serif';font-size:11pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:middle;width:58.35%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:15.68%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">March 31, 2024</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.21%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:16.62%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">December 31, 2023</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.1%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:center;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:middle;width:58.35%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Operating lease right-of-use assets</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.41%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.27%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 227,157</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.21%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.43%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.19%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 205,712</p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.1%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:middle;width:58.35%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Operating lease liabilities:</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.41%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.27%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.21%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.43%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.19%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.1%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:middle;width:58.35%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="-sec-ix-hidden:Hidden_0xHkpRjf30m0gXTOsh-efA;"><span style="font-family:'Times New Roman','Times','serif';font-size:10pt;font-style:normal;font-weight:normal;white-space:pre-wrap;"> Other current liabilities</span></span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.41%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.27%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 26,130</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.21%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.43%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.19%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 24,426</p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.1%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:middle;width:58.35%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="white-space:pre-wrap;"> Long-term operating lease liabilities</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.41%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.27%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 209,717</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.21%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.43%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.19%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 188,136</p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.1%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:middle;width:58.35%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Total operating lease liabilities</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.41%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.27%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 235,847</p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.21%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:3.43%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.19%;background:#cceeff;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 212,562</p></td><td style="vertical-align:bottom;white-space:nowrap;width:6.1%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr></table> 227157000 205712000 26130000 24426000 209717000 188136000 235847000 212562000 <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">The maturities of operating lease liabilities are as follows (in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-size:16pt;height:max-content;margin-left:auto;margin-right:auto;padding-left:0pt;padding-right:0pt;width:79.99%;"><tr style="height:1pt;"><td style="vertical-align:bottom;width:85.37%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:2.44%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:1.45%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;width:10.72%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;width:85.37%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Year ending December 31—</p></td><td style="vertical-align:bottom;width:2.44%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.45%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:10.72%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:85.37%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2024 (excluding the three months ended March 31, 2024)</p></td><td style="vertical-align:bottom;width:2.44%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.45%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.72%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 29,282</p></td></tr><tr><td style="vertical-align:bottom;width:85.37%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2025</p></td><td style="vertical-align:bottom;width:2.44%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.45%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.72%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 36,864</p></td></tr><tr><td style="vertical-align:bottom;width:85.37%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2026</p></td><td style="vertical-align:bottom;width:2.44%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.45%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.72%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 33,144</p></td></tr><tr><td style="vertical-align:bottom;width:85.37%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2027</p></td><td style="vertical-align:bottom;width:2.44%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.45%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.72%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 28,915</p></td></tr><tr><td style="vertical-align:bottom;width:85.37%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">2028</p></td><td style="vertical-align:bottom;width:2.44%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.45%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.72%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 25,252</p></td></tr><tr><td style="vertical-align:bottom;width:85.37%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;">Thereafter</p></td><td style="vertical-align:bottom;width:2.44%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 12pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.45%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.72%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 183,669</p></td></tr><tr><td style="vertical-align:bottom;width:85.37%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 24pt;">Total lease payments</p></td><td style="vertical-align:bottom;width:2.44%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 24pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.45%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.72%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 337,126</p></td></tr><tr><td style="vertical-align:bottom;width:85.37%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 24pt;">Less—present value discount</p></td><td style="vertical-align:bottom;width:2.44%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 24pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.45%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.72%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"> (101,279)</p></td></tr><tr><td style="vertical-align:bottom;width:85.37%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 24pt;">Present value of operating lease liabilities</p></td><td style="vertical-align:bottom;width:2.44%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 0pt 24pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:1.45%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:10.72%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 235,847</p></td></tr></table> 29282000 36864000 33144000 28915000 25252000 183669000 337126000 101279000 235847000 <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">Supplemental information related to operating leases was as follows (in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-size:16pt;height:max-content;padding-left:0pt;padding-right:0pt;width:100%;"><tr style="height:1pt;"><td style="vertical-align:middle;width:67.01%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="position:absolute;top:50%;transform:translate(0,-50%);width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.92%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:13.51%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.09%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.92%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:13.51%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;width:67.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="5" style="vertical-align:bottom;white-space:nowrap;width:32.98%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Three Months Ended March 31, </b></p></td></tr><tr><td style="vertical-align:bottom;width:67.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:15.44%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">2024</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.09%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="2" style="vertical-align:bottom;white-space:nowrap;width:15.44%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">2023</b></p></td></tr><tr><td style="vertical-align:middle;width:67.01%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Cash paid for amounts included in the measurement of operating lease liabilities</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.92%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.51%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 9,466</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.09%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.92%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.51%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 7,024</p></td></tr><tr><td style="vertical-align:middle;width:67.01%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">Operating lease right-of-use assets obtained in exchange for lease liabilities</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.92%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.51%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 29,426</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.09%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:9pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.92%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:13.51%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:9pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 9,446</p></td></tr></table><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;font-weight:bold;visibility:hidden;">​</span></p> 9466000 7024000 29426000 9446000 <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><b style="font-weight:bold;">9. Commitments and Contingencies</b></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;padding-left:18pt;text-indent:-18pt;margin:0pt 0pt 0pt 36pt;"><span style="font-style:italic;font-weight:bold;margin-left:0pt;visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;padding-left:18pt;text-indent:-18pt;margin:0pt 0pt 0pt 36pt;"><span style="font-style:italic;font-weight:bold;">Claims and Lawsuits</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">We are subject to certain legal and regulatory claims, including lawsuits arising in the normal course of business. We maintain various insurance coverages to minimize financial risk associated with these claims. We have estimated and provided accruals for probable losses and related legal fees associated with certain litigation in the accompanying consolidated financial statements. While we cannot predict the outcome of these proceedings, in management’s opinion and based on reports of counsel, any liability arising from these matters individually and in the aggregate will not have a material effect on our operating results, cash flows or financial condition, after giving effect to provisions already recorded.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">In the first quarter of 2023, we recorded a pre-tax gain of $6.8 million from legal developments and settlements that primarily relate to disputes with customers regarding the outcome of completed projects as well as an obligation to perform subcontract work under two executed letters of intent for subsequent projects that we believed were not enforceable. The pre-tax gain of $6.8 million was recorded as an increase in gross profit of $6.6 million, a reduction in SG&amp;A of $0.7 million, an increase in interest income of $1.3 million and an increase in the change in fair value of contingent earn-out obligations expense of $1.8 million in our Consolidated Statements of Operations.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">As of March 31, 2024, we recorded an accrual for unresolved matters, which is not material to our financial statements, based on our analysis of likely outcomes related to the respective matters; however, it is possible that the ultimate outcome and associated costs will deviate from our estimates and that, in the event of an unexpectedly adverse outcome, we may experience additional costs and expenses in future periods.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;padding-left:18pt;text-indent:-18pt;margin:0pt 0pt 0pt 36pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;padding-left:18pt;text-indent:-18pt;margin:0pt 0pt 0pt 36pt;"><span style="font-style:italic;font-weight:bold;">Surety</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">Many customers, particularly in connection with new construction, require us to post performance and payment bonds issued by a financial institution known as a surety. If we fail to perform under the terms of a contract or to pay subcontractors and vendors who provided goods or services under a contract, the customer may demand that the surety make payments or provide services under the bond. We must reimburse the surety for any expenses or outlays it incurs. </p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">Current market conditions for surety markets and bonding capacity are adequate, with acceptable terms and conditions. Historically, approximately 10% to 20% of our business has required bonds. While we currently have strong surety relationships to support our bonding needs, future market conditions or changes in the sureties’ assessment of our operating and financial risk could cause the sureties to decline to issue bonds for our work. If that were to occur, the alternatives include doing more business that does not require bonds, posting other forms of collateral for project performance, such as letters of credit or cash, and seeking bonding capacity from other sureties. We would likely also encounter concerns from customers, suppliers and other market participants as to our creditworthiness. While we believe our general operating and financial characteristics would enable us to ultimately respond effectively to an interruption in the availability of bonding capacity, such an interruption would likely cause our revenue and profits to decline in the near term.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;padding-left:18pt;text-indent:-18pt;margin:0pt 0pt 0pt 36pt;"><span style="font-style:italic;font-weight:bold;">Self-Insurance</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">We are substantially self-insured for workers’ compensation, employer’s liability, auto liability, general liability and employee group health claims, in view of the relatively high per-incident deductibles we absorb under our insurance arrangements for these risks. Losses are estimated and accrued based upon known facts, historical trends and industry averages. Estimated losses in excess of our deductible, which have not already been paid, are included in our accrual with a corresponding receivable from our insurance carrier. Loss estimates associated with the larger and </p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">longer-developing risks, such as workers’ compensation, auto liability and general liability, are reviewed by a third-party actuary quarterly.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p> 6800000 6800000 6600000 -700000 1300000 -1800000 0.10 0.20 <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><b style="font-weight:bold;">10. Stockholders’ Equity</b></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;padding-left:18pt;text-indent:-18pt;margin:0pt 0pt 0pt 36pt;"><span style="font-style:italic;font-weight:bold;margin-left:0pt;visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;padding-left:18pt;text-indent:-18pt;margin:0pt 0pt 0pt 36pt;"><span style="font-style:italic;font-weight:bold;">Earnings Per Share</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">Basic earnings per share (“EPS”) is computed by dividing net income by the weighted average number of shares of common stock outstanding during the year. Diluted EPS is computed considering the dilutive effect of stock options, restricted stock, restricted stock units and performance stock units. The vesting of unvested, contingently issuable performance stock units is based on the achievement of certain earnings per share targets and total shareholder return. These shares are considered contingently issuable shares for purposes of calculating diluted earnings per share. These shares are not included in the diluted earnings per share denominator until the performance criteria are met, if it is assumed that the end of the reporting period was the end of the contingency period.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">Unvested restricted stock, restricted stock units and performance stock units are included in diluted earnings per share, weighted outstanding until the shares and units vest. Upon vesting, the vested restricted stock, restricted stock units and performance stock units are included in basic earnings per share weighted outstanding from the vesting date.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">There were zero anti-dilutive stock options excluded from the calculation of diluted EPS for the three months ended March 31, 2024 and 2023. </p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">The following table reconciles the number of shares outstanding with the number of shares used in computing basic and diluted earnings per share for each of the periods presented (in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-size:16pt;height:max-content;margin-left:auto;margin-right:auto;padding-left:0pt;padding-right:0pt;width:90%;"><tr style="height:1pt;"><td style="vertical-align:bottom;width:78.93%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.31%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;width:78.93%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;visibility:hidden;">​</span></p></td><td colspan="3" style="vertical-align:bottom;white-space:nowrap;width:17.59%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Three Months Ended </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.31%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:78.93%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="3" style="vertical-align:bottom;white-space:nowrap;width:17.59%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">March 31, </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.31%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:78.93%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">2024</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">2023</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.31%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;"> </b></p></td></tr><tr><td style="vertical-align:bottom;width:78.93%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Common shares outstanding, end of period</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 35,695</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 35,752</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.31%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:78.93%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Effect of using weighted average common shares outstanding</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 44</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 60</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.31%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:78.93%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Shares used in computing earnings per share—basic</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 35,739</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 35,812</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.31%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:78.93%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Effect of shares issuable under stock option plans based on the treasury stock method</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 29</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 26</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.31%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:78.93%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Effect of restricted and contingently issuable shares</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 60</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 69</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.31%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:78.93%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Shares used in computing earnings per share—diluted</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 35,828</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 35,907</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.31%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr></table><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;padding-left:18pt;text-indent:-18pt;margin:0pt 0pt 0pt 36pt;"><span style="font-style:italic;font-weight:bold;">Share Repurchase Program</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;padding-left:18pt;text-indent:-18pt;margin:0pt 0pt 0pt 36pt;"><span style="margin-left:0pt;visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">On March 29, 2007, our Board of Directors (the “Board”) approved a stock repurchase program to acquire up to 1.0 million shares of our outstanding common stock. Subsequently, the Board has from time to time increased the number of shares that may be acquired under the program and approved extensions of the program. Since the inception of the repurchase program, the Board has approved 10.9 million shares to be repurchased. As of March 31, 2024, we have repurchased a cumulative total of 10.3 million shares at an average price of $26.29 per share under the repurchase program.</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">The share repurchases will be made from time to time at our discretion in the open market or privately negotiated transactions, as permitted by securities laws and other legal requirements, and subject to market conditions and other factors. The Board may modify, suspend, extend or terminate the program at any time. During the three months ended March 31, 2024, we repurchased less than 0.1 million shares for approximately $0.3 million at an average price of $196.89 per share. </p> 0 0 <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">The following table reconciles the number of shares outstanding with the number of shares used in computing basic and diluted earnings per share for each of the periods presented (in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-size:16pt;height:max-content;margin-left:auto;margin-right:auto;padding-left:0pt;padding-right:0pt;width:90%;"><tr style="height:1pt;"><td style="vertical-align:bottom;width:78.93%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:1.31%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;width:78.93%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;visibility:hidden;">​</span></p></td><td colspan="3" style="vertical-align:bottom;white-space:nowrap;width:17.59%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Three Months Ended </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.31%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:78.93%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="3" style="vertical-align:bottom;white-space:nowrap;width:17.59%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">March 31, </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.31%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:78.93%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">2024</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">2023</b></p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.31%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;"> </b></p></td></tr><tr><td style="vertical-align:bottom;width:78.93%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Common shares outstanding, end of period</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 35,695</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 35,752</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.31%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:78.93%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Effect of using weighted average common shares outstanding</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 44</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 60</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.31%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:78.93%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Shares used in computing earnings per share—basic</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 35,739</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 35,812</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.31%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:78.93%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Effect of shares issuable under stock option plans based on the treasury stock method</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 29</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 26</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.31%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:78.93%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Effect of restricted and contingently issuable shares</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 60</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;background:#cceeff;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 69</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.31%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:78.93%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Shares used in computing earnings per share—diluted</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 35,828</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.16%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"> </p></td><td style="vertical-align:bottom;white-space:nowrap;width:7.71%;border-bottom:3px double #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3.5pt 0pt 0pt;"> 35,907</p></td><td style="vertical-align:bottom;white-space:nowrap;width:1.31%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr></table> 35695000 35752000 44000 60000 35739000 35812000 29000 26000 60000 69000 35828000 35907000 1000000.0 10900000 10300000 26.29 100000 300000 196.89 <p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt 0pt 12pt 0pt;"><b style="font-weight:bold;">11. Segment Information</b></p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;">Our activities are within the mechanical services industry and the electrical services industry, which represent our two reportable segments. We aggregate our operating segments into two reportable segments, as the operating </p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">segments meet all of the aggregation criteria. The following tables present information about our reportable segments (in thousands):</p><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-size:16pt;height:max-content;margin-left:auto;margin-right:auto;padding-left:0pt;padding-right:0pt;width:89%;"><tr style="height:1pt;"><td style="vertical-align:bottom;width:34.06%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:11.3%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:11%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:12.54%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:11.89%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;width:34.06%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:12.54%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.89%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:34.06%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="11" style="vertical-align:bottom;white-space:nowrap;width:63.16%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Three Months Ended March 31, 2024</b></p></td></tr><tr><td style="vertical-align:bottom;width:34.06%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;width:13.32%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Mechanical Segment</b></p></td><td style="vertical-align:bottom;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;width:13.02%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Electrical Segment</b></p></td><td style="vertical-align:bottom;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;width:14.56%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Corporate</b></p></td><td style="vertical-align:bottom;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;width:13.91%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Consolidated</b></p></td></tr><tr><td style="vertical-align:bottom;width:34.06%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Revenue</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 1,185,009</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 352,007</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:12.54%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.89%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 1,537,016</p></td></tr><tr><td style="vertical-align:bottom;width:34.06%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Gross Profit</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 217,712</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 79,651</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:12.54%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.89%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 297,363</p></td></tr><tr><td style="vertical-align:bottom;width:34.06%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:12.54%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.89%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:34.06%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="11" style="vertical-align:bottom;white-space:nowrap;width:63.16%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Three Months Ended March 31, 2023</b></p></td></tr><tr><td style="vertical-align:bottom;width:34.06%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;width:13.32%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Mechanical Segment</b></p></td><td style="vertical-align:bottom;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;width:13.02%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Electrical Segment</b></p></td><td style="vertical-align:bottom;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;width:14.56%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Corporate</b></p></td><td style="vertical-align:bottom;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;width:13.91%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Consolidated</b></p></td></tr><tr><td style="vertical-align:bottom;width:34.06%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Revenue</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 918,615</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 256,025</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:12.54%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.89%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 1,174,640</p></td></tr><tr><td style="vertical-align:bottom;width:34.06%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Gross Profit</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 164,067</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 41,338</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:12.54%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.89%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 205,405</p></td></tr><tr><td style="vertical-align:bottom;width:34.06%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:12.54%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.89%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr></table><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p> 2 2 The following tables present information about our reportable segments (in thousands):<p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="visibility:hidden;">​</span></p><table style="border-collapse:collapse;font-size:16pt;height:max-content;margin-left:auto;margin-right:auto;padding-left:0pt;padding-right:0pt;width:89%;"><tr style="height:1pt;"><td style="vertical-align:bottom;width:34.06%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:11.3%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:11%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:12.54%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td><td style="vertical-align:bottom;white-space:nowrap;width:11.89%;margin:0pt;padding:0pt;"><div style="height:1pt;overflow:hidden;overflow-wrap:break-word;position:relative;"><div style="bottom:0pt;position:absolute;width:100%;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p></div></div></td></tr><tr><td style="vertical-align:bottom;width:34.06%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:12.54%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.89%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:34.06%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="11" style="vertical-align:bottom;white-space:nowrap;width:63.16%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Three Months Ended March 31, 2024</b></p></td></tr><tr><td style="vertical-align:bottom;width:34.06%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;width:13.32%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Mechanical Segment</b></p></td><td style="vertical-align:bottom;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;width:13.02%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Electrical Segment</b></p></td><td style="vertical-align:bottom;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;width:14.56%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Corporate</b></p></td><td style="vertical-align:bottom;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;width:13.91%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Consolidated</b></p></td></tr><tr><td style="vertical-align:bottom;width:34.06%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Revenue</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 1,185,009</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 352,007</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:12.54%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.89%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 1,537,016</p></td></tr><tr><td style="vertical-align:bottom;width:34.06%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Gross Profit</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 217,712</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 79,651</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:12.54%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.89%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 297,363</p></td></tr><tr><td style="vertical-align:bottom;width:34.06%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:12.54%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.89%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr><tr><td style="vertical-align:bottom;width:34.06%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td colspan="11" style="vertical-align:bottom;white-space:nowrap;width:63.16%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Three Months Ended March 31, 2023</b></p></td></tr><tr><td style="vertical-align:bottom;width:34.06%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="font-size:8pt;font-weight:bold;visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;width:13.32%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Mechanical Segment</b></p></td><td style="vertical-align:bottom;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;width:13.02%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Electrical Segment</b></p></td><td style="vertical-align:bottom;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;width:14.56%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Corporate</b></p></td><td style="vertical-align:bottom;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;margin:0pt;"><b style="font-weight:bold;">    </b></p></td><td colspan="2" style="vertical-align:bottom;width:13.91%;border-bottom:1px solid #000000;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:8pt;text-align:center;margin:0pt;"><b style="font-weight:bold;">Consolidated</b></p></td></tr><tr><td style="vertical-align:bottom;width:34.06%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Revenue</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.3%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 918,615</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 256,025</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:12.54%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.89%;background:#cceeff;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 1,174,640</p></td></tr><tr><td style="vertical-align:bottom;width:34.06%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">Gross Profit</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 164,067</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 41,338</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:12.54%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> —</p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;">$</p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.89%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt 3pt 0pt 0pt;"> 205,405</p></td></tr><tr><td style="vertical-align:bottom;width:34.06%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.3%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:12.54%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.77%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:2.02%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;margin:0pt;"><span style="visibility:hidden;">​</span></p></td><td style="vertical-align:bottom;white-space:nowrap;width:11.89%;margin:0pt;padding:0pt;"><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-align:right;margin:0pt;"><span style="visibility:hidden;">​</span></p></td></tr></table><p style="font-family:'Times New Roman','Times','serif';font-size:10pt;text-indent:36pt;margin:0pt;"><span style="font-size:1pt;visibility:hidden;">​</span></p> 1185009000 352007000 1537016000 217712000 79651000 297363000 918615000 256025000 1174640000 164067000 41338000 205405000 false false false false