XML 44 R29.htm IDEA: XBRL DOCUMENT
v3.25.0.1

SUMMARY OF SIGNIFICANT ACCOUNTING POLICIES (Tables) | 12 Months Ended
--- | ---
Dec. 31, 2024
Summary of Significant Accounting Policies |
Schedule of restructuring and other charges | Costs incurred for restructuring and other chargers were as follows (in thousands): ​
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ | ​ | Year Ended December 31,
​ | ​ | 2024 |  | 2023 |  | 2022
Employee separations | ​ | $ | 415 | ​ | $ | 2,416 | ​ | $ | —
Other charges | ​ |  | — | ​ |  | 271 | ​ |  | —
Total restructuring and other charges | ​ | $ | 415 | ​ | $ | 2,687 | ​ | $ | —
Computation of basic and diluted earnings per share | The following table sets forth the computation of basic and diluted earnings per share (in thousands, except per share data): ​
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ |  | 2024 |  | 2023 |  | 2022 |
Numerator: | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
Net income | ​ | $ | 87,095 | ​ | $ | 83,271 | ​ | $ | 89,219 | ​
Denominator: | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
Denominator for basic earnings per share | ​ |  | 26,322 | ​ |  | 26,287 | ​ |  | 26,279 | ​
Dilutive effect of employee stock awards | ​ |  | 186 | ​ |  | 142 | ​ |  | 164 | ​
Denominator for diluted earnings per share | ​ |  | 26,508 | ​ |  | 26,429 | ​ |  | 26,443 | ​
Earnings per share: | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
Basic | ​ | $ | 3.31 | ​ | $ | 3.17 | ​ | $ | 3.40 | ​
Diluted | ​ | $ | 3.29 | ​ | $ | 3.15 | ​ | $ | 3.37 | ​

X
- References No definition available. + Details
Name: | us-gaap_AccountingPoliciesAbstract
Namespace Prefix: | us-gaap_
Data Type: | xbrli:stringItemType
Balance Type: | na
Period Type: | duration

X
- Definition Tabular disclosure of an entity's basic and diluted earnings per share calculations, including a reconciliation of numerators and denominators of the basic and diluted per-share computations for income from continuing operations. + References Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef -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 + Details
Name: | us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- Definition Tabular disclosure of costs incurred for restructuring including, but not limited to, exit and disposal activities, remediation, implementation, integration, asset impairment, and charges against earnings from the write-down of assets. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Topic 420 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1 -Subparagraph (SAB Topic 5.P.3) -Publisher FASB -URI https://asc.fasb.org/1943274/2147479823/420-10-S99-1 Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef -Topic 420 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 2 -Subparagraph (SAB Topic 5.P.4) -Publisher FASB -URI https://asc.fasb.org/1943274/2147479823/420-10-S99-2 Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 420 -SubTopic 10 -Section 50 -Paragraph 1 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482017/420-10-50-1 + Details
Name: | us-gaap_ScheduleOfRestructuringAndRelatedCostsTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration