Date | 3/31/2024 | 12/31/2023 | 9/30/2023 | 6/30/2023 | 3/31/2023 | 12/31/2022 | 9/30/2022 | 6/30/2022 | 3/31/2022 | 12/31/2021 | 9/30/2021 | 6/30/2021 | 3/31/2021 | 12/31/2020 | 9/30/2020 | 6/30/2020 | 3/31/2020 | 12/31/2019 | 9/30/2019 | 6/30/2019 | 3/31/2019 | 12/31/2018 | 9/30/2018 | 6/30/2018 | 3/31/2018 | 12/31/2017 | 9/30/2017 | 6/30/2017 | 3/31/2017 | 12/31/2016 | 9/30/2016 | 6/30/2016 | 3/31/2016 | 12/31/2015 | 9/30/2015 | 6/30/2015 | 3/31/2015 | 12/31/2014 | 9/30/2014 | 6/30/2014 | 3/31/2014 | 12/31/2013 | 9/30/2013 | 6/30/2013 | 3/31/2013 | 12/31/2012 | 9/30/2012 | 6/30/2012 | 3/31/2012 | 12/31/2011 | 9/30/2011 | 6/30/2011 | 3/31/2011 | 12/31/2010 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Cash and Cash Equivalents | $7,482,722.00 | $4,710,715.00 | $5,861,228.00 | $6,384,988.00 | $6,493,454.00 | $9,166,375.00 | $10,927,279.00 | $10,602,232.00 | $9,742,601.00 | $8,987,690.00 | $5,124,651.00 | $13,361,604.00 | $9,608,950.00 | $9,230,173.00 | $9,592,913.00 | $8,947,580.00 | $9,153,665.00 | $14,111,142.00 | $12,534,095.00 | $14,750,058.00 | $12,242,139.00 | $14,604,941.00 | $11,968,551.00 | $10,526,443.00 | $11,703,326.00 | $19,471,076.00 | $7,754,183.00 | $17,881,517.00 | $14,313,438.00 | $11,314,010.00 | $14,904,668.00 | $14,261,676.00 | $17,205,802.00 | $9,672,026.00 | $10,572,897.00 | $12,427,506.00 | $18,967,896.00 | $18,990,245.00 | $11,904,519.00 | $4,871,030.00 | $10,759,329.00 | $4,135,215.00 | $7,277,597.00 | $6,482,318.00 | $7,104,921.00 | $2,226,883.00 | $6,386,623.00 | $10,424,519.00 | $7,214,696.00 | $10,849,407.00 | -- | -- | -- | $7,727,993.00 |
Accounts Receivable Net Current | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Inventory | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Prepaid Expenses and Other Current Assets | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Total Current Assets | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Property Plant and Equipement | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Intangible Assets Net | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Goodwill | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Other Assets | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Total Assets | $124,917,691.00 | $119,138,311.00 | $138,693,227.00 | $126,340,168.00 | $121,900,140.00 | $136,464,322.00 | $142,879,614.00 | $136,009,613.00 | $127,010,307.00 | $120,319,070.00 | $120,819,971.00 | $129,786,297.00 | $122,381,517.00 | $122,175,026.00 | $126,700,859.00 | $130,384,477.00 | $132,512,275.00 | $160,896,066.00 | $155,359,385.00 | $158,293,803.00 | $163,570,151.00 | $168,554,568.00 | $165,625,091.00 | $165,312,562.00 | $159,617,195.00 | $179,641,197.00 | $173,971,398.00 | $176,951,869.00 | $165,916,215.00 | $159,463,437.00 | $169,039,817.00 | $162,015,396.00 | $153,261,458.00 | $136,803,236.00 | $139,263,526.00 | $132,186,780.00 | $145,700,295.00 | $131,749,622.00 | $126,009,408.00 | $123,413,302.00 | $117,547,772.00 | $122,148,063.00 | $125,083,469.00 | $133,020,050.00 | $149,782,060.00 | $149,072,747.00 | $152,747,601.00 | $158,925,381.00 | $156,974,073.00 | $161,640,222.00 | -- | -- | -- | $166,151,307.00 |
Accounts Payable | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Accrued Liabilities | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Total Current Liabilities | $1,776,282.00 | $2,460,667.00 | $2,601,585.00 | $2,903,732.00 | $1,330,908.00 | $4,418,249.00 | $3,048,788.00 | $2,752,618.00 | $2,708,245.00 | $1,958,472.00 | $4,004,041.00 | $4,012,097.00 | $3,909,609.00 | $3,626,097.00 | $4,149,491.00 | $3,769,792.00 | $5,835,181.00 | $5,969,116.00 | $2,906,811.00 | $4,900,471.00 | $1,729,581.00 | $3,632,952.00 | $3,248,048.00 | $5,416,620.00 | $2,734,281.00 | $12,325,929.00 | $7,081,562.00 | $16,918,673.00 | $4,188,951.00 | $3,915,127.00 | $8,747,204.00 | $3,452,816.00 | $5,107,481.00 | $1,895,273.00 | $5,512,768.00 | $2,069,473.00 | $6,223,953.00 | $5,369,818.00 | $2,786,219.00 | $1,772,593.00 | $1,412,034.00 | $4,792,419.00 | $4,908,557.00 | $3,807,672.00 | $6,341,558.00 | $6,029,390.00 | $5,436,289.00 | $8,787,078.00 | $6,612,515.00 | $5,021,926.00 | -- | -- | -- | $3,629,419.00 |
Long Term Debt | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Additional Paid-in Capital | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Accumulated Other Comprehensive Loss | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Accumulated Deficit | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Total Stockholders' Equity | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Controlling Interest in Subsidiaries | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Total Liabilities and Equity | $124,917,691.00 | $119,138,311.00 | $138,693,227.00 | $126,340,168.00 | $121,900,140.00 | $136,464,322.00 | $142,879,614.00 | $136,009,613.00 | $127,010,307.00 | $120,319,070.00 | $120,819,971.00 | $129,786,297.00 | $122,381,517.00 | $122,175,026.00 | $126,700,859.00 | $130,384,477.00 | $132,512,275.00 | $160,896,066.00 | $155,359,385.00 | $158,293,803.00 | $163,570,151.00 | $168,554,568.00 | $165,625,091.00 | $165,312,562.00 | $159,617,195.00 | $179,641,197.00 | $173,971,398.00 | $176,951,869.00 | $165,916,215.00 | $159,463,437.00 | $169,039,817.00 | $162,015,396.00 | $153,261,458.00 | $136,803,236.00 | $139,263,526.00 | $132,186,780.00 | $145,700,295.00 | $131,749,622.00 | $126,009,408.00 | $123,413,302.00 | $117,547,772.00 | $122,148,063.00 | $125,083,469.00 | $133,020,050.00 | $149,782,060.00 | $149,072,747.00 | $152,747,601.00 | $158,925,381.00 | $156,974,073.00 | $161,640,222.00 | -- | -- | -- | $166,151,307.00 |
Date | 3/31/2024 | 12/31/2023 | 9/30/2023 | 6/30/2023 | 3/31/2023 | 12/31/2022 | 9/30/2022 | 6/30/2022 | 3/31/2022 | 12/31/2021 | 9/30/2021 | 6/30/2021 | 3/31/2021 | 12/31/2020 | 9/30/2020 | 6/30/2020 | 3/31/2020 | 12/31/2019 | 9/30/2019 | 6/30/2019 | 3/31/2019 | 12/31/2018 | 9/30/2018 | 6/30/2018 | 3/31/2018 | 12/31/2017 | 9/30/2017 | 6/30/2017 | 3/31/2017 | 12/31/2016 | 9/30/2016 | 6/30/2016 | 3/31/2016 | 12/31/2015 | 9/30/2015 | 6/30/2015 | 3/31/2015 | 12/31/2014 | 9/30/2014 | 6/30/2014 | 3/31/2014 | 12/31/2013 | 9/30/2013 | 6/30/2013 | 3/31/2013 | 12/31/2012 | 9/30/2012 | 6/30/2012 | 3/31/2012 | 12/31/2011 | 9/30/2011 | 6/30/2011 | 3/31/2011 | 12/31/2010 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Total Revenues | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Cost of Revenues | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Gross Profit | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Research and Development | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Selling, General, and Administrative | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Total Operating Expenses | $696,182.00 | $2,874,001.00 | $725,133.00 | $693,459.00 | $726,441.00 | $3,045,216.00 | $766,084.00 | $776,458.00 | $722,527.00 | $3,114,503.00 | $2,324,346.00 | $1,553,747.00 | $758,020.00 | $3,430,797.00 | $2,685,714.00 | $1,841,072.00 | $982,849.00 | $4,171,263.00 | $3,173,253.00 | $1,073,499.00 | $1,076,387.00 | $4,190,914.00 | $3,113,125.00 | $1,032,783.00 | $1,040,741.00 | $4,316,285.00 | $3,221,474.00 | $2,128,921.00 | $1,039,584.00 | $4,052,744.00 | $1,058,034.00 | $1,941,724.00 | $949,367.00 | $3,513,215.00 | $2,635,729.00 | $880,784.00 | $866,643.00 | $3,157,265.00 | $783,802.00 | $781,582.00 | $790,692.00 | $3,780,194.00 | $888,763.00 | $1,018,256.00 | $1,030,001.00 | $4,149,017.00 | $3,117,398.00 | $2,082,087.00 | $1,005,339.00 | $3,799,534.00 | $971,168.00 | $1,872,691.00 | $946,229.00 | $3,699,987.00 |
Loss from Operations | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Loss Before Income Taxes | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Earnings Per Share Basic | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Weighted Average Shares Basic | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Earnings Per Share Diluted | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Weighted Average Shares Diluted | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Common Stock Shares Authorized | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Common Stock Shares Outstanding | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Common Stock Value | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Common Stock Par Or Stated Value Per Share | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Payments Of Dividends Common Stock | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Preferred Stock Shares Authorized | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Preferred Stock Shares Outstanding | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Preferred Stock Value | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Preferred Stock Par Or Stated Value Per Share | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
Share Price | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |