XML 45 R29.htm IDEA: XBRL DOCUMENT
v3.24.0.1

Stock Options and Restricted Stock Units (Tables) | 12 Months Ended
--- | ---
Dec. 31, 2023
Stock Options and Restricted Stock Units |
Summary of stock options issued |
|  | Number of Options Outstanding |  |  | Range of Exercise Price |  |  | Weighted Average Exercise Price |  |  | Aggregate Intrinsic Value |
Balance on December 31, 2021 |  |  | 47,167 |  |  | $ | 6.80 – 17.40 |  |  | $ | 11.81 |  |  | $ | 832,254 |
Options granted |  |  | 50,250 |  |  |  | 26.00 – 27.71 |  |  |  | 26.69 |  |  |  | — |
Options exercised |  |  | (10,000 | ) |  |  | 7.76 – 13.21 |  |  |  | 9.12 |  |  |  | 185,500 |
Options forfeited/cancelled |  |  | (6,167 | ) |  |  | 9.26 – 27.71 |  |  |  | 27.71 |  |  |  | — |
Balance on December 31, 2022 |  |  | 81,250 |  |  | $ | 6.80 – 27.71 |  |  | $ | 20.17 |  |  | $ | 462,390 |
Options granted |  |  | 30,000 |  |  |  | 26.98 |  |  |  | 26.98 |  |  |  | — |
Options exercised |  |  | (2,500 | ) |  |  | 7.76 |  |  |  | 7.76 |  |  |  | 19,400 |
Options forfeited/cancelled |  |  | (2,000 | ) |  |  | 9.26 – 27.71 |  |  |  | 23.10 |  |  |  | — |
Balance on December 31, 2023 |  |  | 106,750 |  |  | $ | 6.80 – 27.71 |  |  | $ | 22.32 |  |  |  | 176,360 |
Schedule of unvested stock options |
|  | Number of Options Outstanding |  |  | Weighted Average Exercise Price |  |  | Weighted Average Grant Date Fair Value |
Balance on December 31, 2021 |  |  | — |  |  | $ | 12.87 |  |  | $ | 5.47 |
Options granted |  |  | 50,250 |  |  |  | 26.69 |  |  |  | 12.54 |
Options vested |  |  | — |  |  |  | — |  |  |  | — |
Options forfeited/cancelled |  |  | (6,000 | ) |  |  | 27.71 |  |  |  | 13.53 |
Balance on December 31, 2022 |  |  | 44,250 |  |  |  | 26.55 |  |  |  | 12.41 |
Options granted |  |  | 30,000 |  |  |  | 26.98 |  |  |  | 13.89 |
Options vested |  |  | (7,500 | ) |  |  | 27.71 |  |  |  | 13.53 |
Options forfeited/cancelled |  |  | (1,500 | ) |  |  | 26.00 |  |  |  | 11.87 |
Balance on December 31, 2023 |  |  | 65,250 |  |  |  | 26.78 |  |  |  | 13.12 |
Schedule of information about stock options outstanding and exercisable |
|  | Options Outstanding |  |  | Options Exercisable |
Exercise Price Range |  | Number |  |  | Weighted Average Remaining Contractual Life (in Years) |  |  | Weighted Average Exercise Price |  |  | Number |
$0.01 - 8.00 |  |  | 5,000 |  |  |  | 1.89 |  |  |  | 6.80 |  |  |  | 5,000 |
$8.01 - 11.00 |  |  | 3,000 |  |  |  | 4.00 |  |  |  | 10.25 |  |  |  | 3,000 |
$11.01 - 16.00 |  |  | 18,000 |  |  |  | 4.53 |  |  |  | 13.12 |  |  |  | 18,000 |
$16.01 - 27.00 |  |  | 68,000 |  |  |  | 8.05 |  |  |  | 25.42 |  |  |  | 15,500 |
$27.01 – 27.71 |  |  | 12,750 |  |  |  | 8.05 |  |  |  | 27.71 |  |  |  | — |
Total |  |  | 106,750 |  |  |  | 7.06 |  |  |  | 22.32 |  |  |  | 41,500 |
Schedule of Assumptions |
|  | Year Ended December 31, 2023 |
Expected dividend yield |  |  | 0 | %
Expected stock price volatility |  |  | 47.6 | %
Weighted-average risk-free interest rate |  |  | 3.87 | %
Weighted-average expected life of options (in years) |  |  | 6.25 |
Summary of restricted stock units |
|  | Number of RSUs Outstanding |  |  | Weighted Average Grant Date Fair Value |  |  | Aggregate Intrinsic Value |
Balance on December 31, 2021 |  |  | 17,765 |  |  | $ | 25.92 |  |  | $ | 523,197 |
Units granted |  |  | 48,240 |  |  |  | 24.99 |  |  |  | 1,205,525 |
Units vested/issued |  |  | (15,265 | ) |  |  | 26.05 |  |  |  | 377,981 |
Units forfeited |  |  | — |  |  |  | — |  |  |  | — |
Balance on December 31, 2022 |  |  | 50,740 |  |  | $ | 25.00 |  |  | $ | 1,268,500 |
Units granted |  |  | 74,832 |  |  |  | 26.08 |  |  |  | 1,951,619 |
Units vested/issued |  |  | (21,490 | ) |  |  | 25.24 |  |  |  | (542,408 | )
Units forfeited |  |  | (9,250 | ) |  |  | 23.87 |  |  |  | (220,798 | )
Balance on December 31, 2023 |  |  | 94,832 |  |  |  | 25.90 |  |  |  | 2,456,149 |

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

X
- Definition Tabular disclosure of assumption used to determine benefit obligation and net periodic benefit cost of defined benefit plan. Includes, but is not limited to, discount rate, rate of compensation increase, expected long-term rate of return on plan assets and interest crediting rate. + References Reference 1: http://www.xbrl.org/2003/role/disclosureRef -Topic 715 -SubTopic 20 -Name Accounting Standards Codification -Section 50 -Paragraph 1 -Subparagraph (k) -Publisher FASB -URI https://asc.fasb.org//1943274/2147480506/715-20-50-1 + Details
Name: | us-gaap_ScheduleOfAssumptionsUsedTableTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- Definition Tabular disclosure of the changes in outstanding nonvested shares. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 718 -SubTopic 10 -Section 50 -Paragraph 2 -Subparagraph (c)(2) -Publisher FASB -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2 + Details
Name: | us-gaap_ScheduleOfNonvestedShareActivityTableTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- Definition Tabular disclosure of the number and weighted-average grant date fair value for restricted stock units that were outstanding at the beginning and end of the year, and the number of restricted stock units that were granted, vested, or forfeited during the year. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 718 -SubTopic 10 -Section 50 -Paragraph 2 -Subparagraph (c)(1) -Publisher FASB -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2 + Details
Name: | us-gaap_ScheduleOfShareBasedCompensationRestrictedStockUnitsAwardActivityTableTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- Definition Tabular disclosure of option exercise prices, by grouped ranges, including the upper and lower limits of the price range, the number of shares under option, weighted average exercise price and remaining contractual option terms. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 718 -SubTopic 10 -Section 50 -Paragraph 2 -Publisher FASB -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2 + Details
Name: | us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- Definition Tabular disclosure for stock option plans. Includes, but is not limited to, outstanding awards at beginning and end of year, grants, exercises, forfeitures, and weighted-average grant date fair value. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 718 -SubTopic 10 -Section 50 -Paragraph 2 -Subparagraph (c)(1) -Publisher FASB -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2 Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Section 50 -Paragraph 2 -Subparagraph (d) -SubTopic 10 -Topic 718 -Publisher FASB -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2 Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Section 50 -Paragraph 2 -Subparagraph (e) -SubTopic 10 -Topic 718 -Publisher FASB -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2 + Details
Name: | us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration