From c1f269c2a66fb8ec9ded48bde50bf93b8caa265e Mon Sep 17 00:00:00 2001 From: ditatompel Date: Tue, 11 Jun 2024 17:07:27 +0700 Subject: [PATCH 1/5] chore: Prettier formatting --- .../index.md | 122 +++++++++--------- 1 file changed, 59 insertions(+), 63 deletions(-) diff --git a/content/blog/public-api-monero-remote-node-list/index.md b/content/blog/public-api-monero-remote-node-list/index.md index f457774..f937544 100644 --- a/content/blog/public-api-monero-remote-node-list/index.md +++ b/content/blog/public-api-monero-remote-node-list/index.md @@ -7,24 +7,14 @@ draft: false noindex: false featured: false pinned: false -# comments: false series: -# - +# - categories: -# - +# - tags: - Monero - API images: -# - -# menu: -# main: -# weight: 100 -# params: -# icon: -# vendor: bs -# name: book -# color: '#e24d0e' authors: - ditatompel --- @@ -45,43 +35,47 @@ Since my main site that displays list of Monero remote nodes **MAY** contains Go The default response will display 10 records, sorted from `last_checked` node. Optional query string parameters: + - `host`: Filter nodes based on hostname or IP address. - `protocol`: Possible values: - - `any` or _empty string_ or _not set_: Return nodes using any protocol. - - `http`: Return node using http RPC (excluding Tor network). - - `https`: Return nodes using https RPC. - - `tor`: Return nodes on Tor network. + - `any` or _empty string_ or _not set_: Return nodes using any protocol. + - `http`: Return node using http RPC (excluding Tor network). + - `https`: Return nodes using https RPC. + - `tor`: Return nodes on Tor network. - `nettype`: Possible values: - - `mainnet`: Return mainnet nodes. - - `stagenet`: Return stagenet nodes. - - `testnet`: Return testnet nodes. - - `any` or _empty string_ or _not set_: No filtering based on nettype is applied. + - `mainnet`: Return mainnet nodes. + - `stagenet`: Return stagenet nodes. + - `testnet`: Return testnet nodes. + - `any` or _empty string_ or _not set_: No filtering based on nettype is applied. - `cc`: Filter nodes from specific country. Please use two-letter [ISO 3166-1](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code. - `sort_by`: Default sorted by last check time. Possible values: - - `last_checked`: sorted by last check time (default). - - `uptime`: sorted by percentage of uptime. + - `last_checked`: sorted by last check time (default). + - `uptime`: sorted by percentage of uptime. - `sort_direction`: Possible values: - - `desc`: descending (default). - - `asc`: ascending. + - `desc`: descending (default). + - `asc`: ascending. - `status` Node status. Possible values : - - `-1` or not set: both online and offline (default). - - `1`: only online nodes. - - `0`: only offline nodes. + - `-1` or not set: both online and offline (default). + - `1`: only online nodes. + - `0`: only offline nodes. - `limit`: How many records should be displayed. - `page`: For paging porpose. - `cors`: Filter nodes that have `Access-Control-Allow-Origin` header or not. Options: - - `1`: Return nodes that have `Access-Control-Allow-Origin` header. - - `-1`: No CORS filter is applied (default). + - `1`: Return nodes that have `Access-Control-Allow-Origin` header. + - `-1`: No CORS filter is applied (default). For example, if you want to **list CORS enabled Monero nodes using https from United States sorted from recently checked node**: + ```shell curl -sL 'https://xmr.ditatompel.com/api/v1/nodes?cors=1&protocol=https&country=us&sort_by=last_checked&sort_direction=desc' | jq ``` ## Response Header + The response header includes the **HTTP status code** and the `content-type`. Clients that receive a HTTP status code other than `200` and `content-type` other than `application/json` must back-off. ## Response Body + The response body includes the information of the query result, query status, and response message. In the example below, the response body of: ```shell @@ -134,43 +128,44 @@ curl -sL 'https://xmr.ditatompel.com/api/v1/nodes?country=SG' | jq }, } ``` -- `status`: *string*, `ok` means everything looks good. -- `message`: *string*, Information related to your query, *success* or *error* message if any. -- `data`: *object*, Information related to your query. - - `total_rows`: *unsigned int*; Total number of nodes found. - - `rows_per_page`: *unsigned int*; Number of nodes per page. - - `items`: *array* of nodes or null if no nodes found. Each node has the structure as follows: - - `id`: *unsigned int*; ID of the node. - - `hostname`: *string*; The hostname / nodes IP address. - - `ip`: *string*; The IP address of node, empty string if hostname is not resolveable (Eg.: TOR nodes) - - `port`: *unsigned int*; TCP port the nodes is using to listen to RPC calls. - - `protocol`: *string*; The protocol used by nodes to listen RPC calls. This can be `http`, `https` or `empty string`. - - `is_tor`: *boolean*; whether the node is accessed through the Tor network. - - `is_available`: *boolean*; whether the node is online or not. False may means node wasn't ready or my bots can't connect to nodes RPC daemon. - - `nettype`: *string*; Network type (one of `mainnet`, `stagenet` or `testnet`). - - `height`: *unsigned int*; Current length of longest chain known to daemon. - - `adjusted_time`: *unsigned int*; Current time approximated from chain data, as Unix time. - - `database_size`: *unsigned int*; The size of the blockchain database, in bytes. - - `difficulty`: *unsigned int*; Least-significant 64 bits of the 128-bit network difficulty. - - `version`: *string*; Vesion of remote monero node is running. - - `uptime`: *float*; Uptime percentage of nodes for last 1 month. This likely **not** the real uptime value since my bots may experiencing network problems (I set connection timeout for 60 seconds). - - `estimate_fee`: *unsigned int*; Amount of fees estimated per byte in atomic units. This just fee estimation, Malicious actors who running remote nodes [still can return high fee only when you about to create a transactions](monero-tx-fee-node.jpg). - - `asn`: *unsigned int*; The AS number that owns nodes IP address, `0` if no information available. - - `asn_name`: *string*; The AS name that owns nodes IP addres. - - `cc`: *string*; two-letter ISO 3166-1 country code nodes location, empty string if no information available. - - `country_name`: *string*; Country name based on nodes IP address, empty string if no information available. - - `city`: *string*; City location based on nodes IP address, empty string if no information available. - - `latitude`: *float*; Approx. latitude (geographic coordinate). - - `longitude`: *float*; Approx. longitude (geographic coordinate). - - `date_entered`: *unsigned int*, The Unix time when my bots start monitoring the node. - - `last_checked`: *unsigned int*, The Unix time when was the last time my bot checked into a monero node. - - `last_check_statuses`: *array* (size: `5`); last node avaibility status. Possible values: + +- `status`: _string_, `ok` means everything looks good. +- `message`: _string_, Information related to your query, _success_ or _error_ message if any. +- `data`: _object_, Information related to your query. + - `total_rows`: _unsigned int_; Total number of nodes found. + - `rows_per_page`: _unsigned int_; Number of nodes per page. + - `items`: _array_ of nodes or null if no nodes found. Each node has the structure as follows: + - `id`: _unsigned int_; ID of the node. + - `hostname`: _string_; The hostname / nodes IP address. + - `ip`: _string_; The IP address of node, empty string if hostname is not resolveable (Eg.: TOR nodes) + - `port`: _unsigned int_; TCP port the nodes is using to listen to RPC calls. + - `protocol`: _string_; The protocol used by nodes to listen RPC calls. This can be `http`, `https` or `empty string`. + - `is_tor`: _boolean_; whether the node is accessed through the Tor network. + - `is_available`: _boolean_; whether the node is online or not. False may means node wasn't ready or my bots can't connect to nodes RPC daemon. + - `nettype`: _string_; Network type (one of `mainnet`, `stagenet` or `testnet`). + - `height`: _unsigned int_; Current length of longest chain known to daemon. + - `adjusted_time`: _unsigned int_; Current time approximated from chain data, as Unix time. + - `database_size`: _unsigned int_; The size of the blockchain database, in bytes. + - `difficulty`: _unsigned int_; Least-significant 64 bits of the 128-bit network difficulty. + - `version`: _string_; Vesion of remote monero node is running. + - `uptime`: _float_; Uptime percentage of nodes for last 1 month. This likely **not** the real uptime value since my bots may experiencing network problems (I set connection timeout for 60 seconds). + - `estimate_fee`: _unsigned int_; Amount of fees estimated per byte in atomic units. This just fee estimation, Malicious actors who running remote nodes [still can return high fee only when you about to create a transactions](monero-tx-fee-node.jpg). + - `asn`: _unsigned int_; The AS number that owns nodes IP address, `0` if no information available. + - `asn_name`: _string_; The AS name that owns nodes IP addres. + - `cc`: _string_; two-letter ISO 3166-1 country code nodes location, empty string if no information available. + - `country_name`: _string_; Country name based on nodes IP address, empty string if no information available. + - `city`: _string_; City location based on nodes IP address, empty string if no information available. + - `latitude`: _float_; Approx. latitude (geographic coordinate). + - `longitude`: _float_; Approx. longitude (geographic coordinate). + - `date_entered`: _unsigned int_, The Unix time when my bots start monitoring the node. + - `last_checked`: _unsigned int_, The Unix time when was the last time my bot checked into a monero node. + - `last_check_statuses`: _array_ (size: `5`); last node avaibility status. Possible values: - `0`: Offline - `1`: Online - `2`: not yet checked. - - `cors`: *boolean*, whether the node return with `Access-Control-Allow-Origin` header or not. + - `cors`: _boolean_, whether the node return with `Access-Control-Allow-Origin` header or not. -> You will get `200` response code, `ok` status, and even if your query return no nodes (`null` value in `data.items` field). +> You will get `200` response code, `ok` status, and even if your query return no nodes (`null` value in `data.items` field). > _**NOTE**: My API endpoint is behind Cloudflare reverse proxy, so it's still cost your privacy. Monero community suggests to always run your own node to obtain the maximum possible privacy and to help decentralize the network._ @@ -220,11 +215,12 @@ Diff: [013aa7d](https://github.com/ditatompel/insights/commit/013aa7db35edd28e72 Because I [refactoring my backend]({{< ref "/blog/rewriting-ditatompel-site-to-svelte-tailwind-and-go/index.md" >}}), there will most likely be another breaking changes in the near future. ### Update 2023-05-24 + - I've add `cors` and `last_check_statuses` to nodes data record. ### Update 2022-05-10 + - I've add `estimate_fee` to nodes data record which I get from [get_fee_estimate](https://www.getmonero.org/resources/developer-guides/daemon-rpc.html#get_fee_estimate) daemon RPC. This just fee estimation, moneromooo explain that malicious actors who running remote nodes [still can return high fee only when you about to create a transactions](monero-tx-fee-node.jpg). - [selsta](https://github.com/selsta) create [pull request](https://github.com/monero-project/monero-gui/pull/3897) to add warning about high fee on official GUI conformation dialog. - **The best and safest way is running your own node!** - Nodes with 0% uptime within 1 month with more than 500 check attempt will be removed. You can always add your node again latter. - From 91c748b63e842ec78716b1b819f81b9b3662e4d6 Mon Sep 17 00:00:00 2001 From: ditatompel Date: Tue, 11 Jun 2024 17:10:26 +0700 Subject: [PATCH 2/5] fix: `country` query param API call --- content/blog/public-api-monero-remote-node-list/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/blog/public-api-monero-remote-node-list/index.md b/content/blog/public-api-monero-remote-node-list/index.md index f937544..da164cf 100644 --- a/content/blog/public-api-monero-remote-node-list/index.md +++ b/content/blog/public-api-monero-remote-node-list/index.md @@ -67,7 +67,7 @@ Optional query string parameters: For example, if you want to **list CORS enabled Monero nodes using https from United States sorted from recently checked node**: ```shell -curl -sL 'https://xmr.ditatompel.com/api/v1/nodes?cors=1&protocol=https&country=us&sort_by=last_checked&sort_direction=desc' | jq +curl -sL 'https://xmr.ditatompel.com/api/v1/nodes?cors=1&protocol=https&cc=us&sort_by=last_checked&sort_direction=desc' | jq ``` ## Response Header @@ -79,7 +79,7 @@ The response header includes the **HTTP status code** and the `content-type`. Cl The response body includes the information of the query result, query status, and response message. In the example below, the response body of: ```shell -curl -sL 'https://xmr.ditatompel.com/api/v1/nodes?country=SG' | jq +curl -sL 'https://xmr.ditatompel.com/api/v1/nodes?cc=SG' | jq ``` ```json From 1cf8b5110a76dba923e455318cee068c011ded78 Mon Sep 17 00:00:00 2001 From: ditatompel Date: Tue, 11 Jun 2024 17:11:47 +0700 Subject: [PATCH 3/5] chore: Use Front matter summary --- content/blog/public-api-monero-remote-node-list/index.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/content/blog/public-api-monero-remote-node-list/index.md b/content/blog/public-api-monero-remote-node-list/index.md index da164cf..33723f7 100644 --- a/content/blog/public-api-monero-remote-node-list/index.md +++ b/content/blog/public-api-monero-remote-node-list/index.md @@ -1,6 +1,7 @@ --- title: "Public API Monero Remote Node List" description: "API documentation to search for monitored Monero remote nodes on xmr.ditatompel.com. You can filter based on nettype, countries and more." +summary: "API documentation to search for monitored Monero remote nodes on xmr.ditatompel.com. You can filter based on nettype, countries and more." date: 2022-01-29T23:40:26+07:00 lastmod: draft: false @@ -21,8 +22,6 @@ authors: Since my main site that displays list of Monero remote nodes **MAY** contains Google AdSense (where very likely track users behavior and interests), I decided create dedicated subdomain for my Monero Remote Node pages and it's API endpoint. No Ads, no user tracking. - - - Web interface: [https://xmr.ditatompel.com/](https://xmr.ditatompel.com/). - Source Code: Available for public soon. From f00e053f69a56940146ec2b439e406aba7d609b8 Mon Sep 17 00:00:00 2001 From: ditatompel Date: Tue, 11 Jun 2024 17:13:26 +0700 Subject: [PATCH 4/5] chore: Add the source code URL --- content/blog/public-api-monero-remote-node-list/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/blog/public-api-monero-remote-node-list/index.md b/content/blog/public-api-monero-remote-node-list/index.md index 33723f7..3274806 100644 --- a/content/blog/public-api-monero-remote-node-list/index.md +++ b/content/blog/public-api-monero-remote-node-list/index.md @@ -23,7 +23,7 @@ authors: Since my main site that displays list of Monero remote nodes **MAY** contains Google AdSense (where very likely track users behavior and interests), I decided create dedicated subdomain for my Monero Remote Node pages and it's API endpoint. No Ads, no user tracking. - Web interface: [https://xmr.ditatompel.com/](https://xmr.ditatompel.com/). -- Source Code: Available for public soon. +- Source Code: [https://github.com/ditatompel/xmr-remote-nodes](https://github.com/ditatompel/xmr-remote-nodes) ## API Endpoint and Query Parameters From 1cf54a760acc3abc48ddcc4e89d521c06b38e6fd Mon Sep 17 00:00:00 2001 From: ditatompel Date: Tue, 11 Jun 2024 17:13:49 +0700 Subject: [PATCH 5/5] chore(deps): go mod tidy --- go.mod | 57 -------------------------- go.sum | 124 ++------------------------------------------------------- 2 files changed, 3 insertions(+), 178 deletions(-) diff --git a/go.mod b/go.mod index a9a279e..ee1dfd8 100644 --- a/go.mod +++ b/go.mod @@ -6,91 +6,34 @@ require ( github.com/GoogleChrome/workbox v7.1.0+incompatible // indirect github.com/KaTeX/KaTeX v0.16.10 // indirect github.com/gohugoio/hugo-mod-bootstrap-scss/v5 v5.20300.20200 // indirect - github.com/gohugoio/hugo-mod-jslibs-dist/popperjs/v2 v2.21100.20000 // indirect - github.com/hbstack/back-to-top v0.2.0 // indirect github.com/hbstack/base v0.6.0 // indirect - github.com/hbstack/bigger-picture v0.10.1 // indirect - github.com/hbstack/blog v0.35.1 // indirect - github.com/hbstack/blog/modules/breadcrumb v0.1.23 // indirect github.com/hbstack/blog/modules/content-panel v0.1.21 // indirect - github.com/hbstack/blog/modules/featured-image v0.2.21 // indirect - github.com/hbstack/blog/modules/heading-sign v0.1.23 // indirect - github.com/hbstack/blog/modules/post-nav v0.4.0 // indirect - github.com/hbstack/blog/modules/related-posts v0.4.0 // indirect github.com/hbstack/blog/modules/toc-scrollspy v0.2.0 // indirect - github.com/hbstack/bootstrap v0.2.2 // indirect - github.com/hbstack/breadcrumb v0.7.1 // indirect github.com/hbstack/carousel v0.2.5 // indirect - github.com/hbstack/code-block-panel v0.1.2 // indirect - github.com/hbstack/content-panel v0.10.1 // indirect - github.com/hbstack/docs v0.17.2 // indirect - github.com/hbstack/docs/modules/breadcrumb v0.1.10 // indirect - github.com/hbstack/docs/modules/doc-nav v0.3.7 // indirect - github.com/hbstack/docs/modules/featured-image v0.2.8 // indirect github.com/hbstack/docs/modules/giscus v0.1.10 // indirect - github.com/hbstack/docs/modules/heading-sign v0.1.9 // indirect github.com/hbstack/featured-image v0.2.1 // indirect - github.com/hbstack/footer v0.4.1 // indirect - github.com/hbstack/footer/modules/socials v0.3.0 // indirect github.com/hbstack/gallery v0.13.0 // indirect github.com/hbstack/gallery/modules/breadcrumb v0.1.1 // indirect - github.com/hbstack/giscus v0.1.1 // indirect - github.com/hbstack/hb v0.12.2 // indirect - github.com/hbstack/header v0.14.5 // indirect - github.com/hbstack/header/modules/language-picker v0.1.25 // indirect - github.com/hbstack/header/modules/search v0.1.36 // indirect - github.com/hbstack/header/modules/socials v0.2.0 // indirect - github.com/hbstack/header/modules/theme-toggle v0.5.1 // indirect github.com/hbstack/heading-sign v0.2.0 // indirect - github.com/hbstack/mermaid v0.2.2 // indirect github.com/hbstack/meta/recommended v0.2.10 // indirect - github.com/hbstack/noscript v0.7.0 // indirect github.com/hbstack/pagination v0.8.0 // indirect - github.com/hbstack/progress-bar v0.1.0 // indirect - github.com/hbstack/pwa v0.1.2 // indirect - github.com/hbstack/scrollbar v0.1.0 // indirect - github.com/hbstack/search v0.2.2 // indirect - github.com/hbstack/slide v0.4.0 // indirect github.com/hbstack/snackbar v0.1.2 // indirect github.com/hbstack/socials v0.16.0 // indirect - github.com/hbstack/syntax-highlighting v0.2.0 // indirect - github.com/hbstack/syntax-highlighting/styles/gruvbox v0.1.1 // indirect - github.com/hbstack/toc-scrollspy v0.1.0 // indirect github.com/henrygd/bigger-picture v1.1.17 // indirect github.com/hugomods/ascii v0.1.0 // indirect github.com/hugomods/base v0.7.0 // indirect github.com/hugomods/bootstrap v0.22.2 // indirect github.com/hugomods/code-block-panel v0.7.0 // indirect - github.com/hugomods/font-awesome v6.5.2+incompatible // indirect - github.com/hugomods/fuse-js v0.1.0 // indirect github.com/hugomods/giscus v0.1.1 // indirect github.com/hugomods/google-adsense v0.1.0 // indirect github.com/hugomods/gravatar v0.2.0 // indirect github.com/hugomods/hugopress v0.4.0 // indirect - github.com/hugomods/i18n-js v0.2.1 // indirect - github.com/hugomods/icons v0.6.4 // indirect github.com/hugomods/icons/vendors/bootstrap v0.5.6 // indirect github.com/hugomods/icons/vendors/font-awesome v0.6.6 // indirect - github.com/hugomods/icons/vendors/simple-icons v1.0.41 // indirect github.com/hugomods/idb-js v0.1.0 // indirect github.com/hugomods/images v0.10.1 // indirect - github.com/hugomods/katex v0.3.1 // indirect github.com/hugomods/mermaid v0.1.1 // indirect github.com/hugomods/pwa v0.9.0 // indirect github.com/hugomods/search v0.14.0 // indirect - github.com/hugomods/seo/modules/alternatives v0.1.0 // indirect - github.com/hugomods/seo/modules/base v0.1.2 // indirect - github.com/hugomods/seo/modules/favicons v0.2.1 // indirect - github.com/hugomods/seo/modules/open-graph v0.1.0 // indirect - github.com/hugomods/seo/modules/schema v0.1.2 // indirect - github.com/hugomods/seo/modules/translations v0.1.0 // indirect - github.com/hugomods/seo/modules/twitter-cards v0.1.0 // indirect - github.com/hugomods/shortcodes v0.21.0 // indirect github.com/hugomods/simple-icons v12.2.0+incompatible // indirect - github.com/hugomods/snackbar v0.1.2 // indirect - github.com/hugomods/workbox v0.1.0 // indirect - github.com/jakearchibald/idb v8.0.0+incompatible // indirect - github.com/krisk/Fuse v7.0.0+incompatible // indirect - github.com/twbs/bootstrap v5.3.3+incompatible // indirect - github.com/twbs/icons v1.11.3 // indirect ) diff --git a/go.sum b/go.sum index 9c06937..0f7fbbe 100644 --- a/go.sum +++ b/go.sum @@ -4,109 +4,34 @@ github.com/KaTeX/KaTeX v0.16.10 h1:Q7Zw1aTBezZ0y7zYkipTq9Z+Gkkohyk7xBaiZKO8yZs= github.com/KaTeX/KaTeX v0.16.10/go.mod h1:VI+aE+CVs/VqtbHnuhstfQST46GmrwpXH7LQAzYIouw= github.com/gohugoio/hugo-mod-bootstrap-scss/v5 v5.20300.20200 h1:SmpwwN3DNzJWbV+IT8gaFu07ENUFpCvKou5BHYUKuVs= github.com/gohugoio/hugo-mod-bootstrap-scss/v5 v5.20300.20200/go.mod h1:kx8MBj9T7SFR8ZClWvKZPmmUxBaltkoXvnWlZZcSnYA= -github.com/gohugoio/hugo-mod-jslibs-dist/popperjs/v2 v2.21100.20000 h1:GZxx4Hc+yb0/t3/rau1j8XlAxLE4CyXns2fqQbyqWfs= github.com/gohugoio/hugo-mod-jslibs-dist/popperjs/v2 v2.21100.20000/go.mod h1:mFberT6ZtcchrsDtfvJM7aAH2bDKLdOnruUHl0hlapI= -github.com/hbstack/back-to-top v0.2.0 h1:oVGYYL34PL4OX2O725YmRL9kHjZuxBuyT33/ZG1Zze0= -github.com/hbstack/back-to-top v0.2.0/go.mod h1:lVnZhVZ8pabJJ/M27APUyayelJO5yr9jkwsVnxk1O4k= github.com/hbstack/base v0.6.0 h1:kIMI5C7X1aTWffKnG9N5Db20O6DhjyztN5yAPIFFDbY= github.com/hbstack/base v0.6.0/go.mod h1:4A2bxdXMjpj4HSEnugN7hlFECiap4zUX56jOqtu4YPY= -github.com/hbstack/bigger-picture v0.10.1 h1:EgUYZgSGhl4KwKVqryf6ncB2QY4YYgOqTpDW6+5tq14= -github.com/hbstack/bigger-picture v0.10.1/go.mod h1:wZpRrOlTFrt2lO3tl9Y7cIAJbAJN1MdvRu0UsbCnkaE= -github.com/hbstack/blog v0.35.1 h1:2fHcVrZwMuJI6sD1WgvInWfTkakIwpf4SGXxiNd0sKo= -github.com/hbstack/blog v0.35.1/go.mod h1:/A1EQoCCs9zlcn7dWecP0YMUmH2n1juv3DO4e/mfQ+o= -github.com/hbstack/blog/modules/breadcrumb v0.1.23 h1:MgUR88vv4cs/M1/cVBKUInFw3DcRw0W2AlmmcdhxewY= -github.com/hbstack/blog/modules/breadcrumb v0.1.23/go.mod h1:smQySqXDtUv2pP7bb+XBr+QGNFxhDGN0fLmQkOIWa5g= github.com/hbstack/blog/modules/content-panel v0.1.21 h1:g43IVjn3O6QCQSvCbgr9iYCgZcI5XG8YAiuVPb269Ok= github.com/hbstack/blog/modules/content-panel v0.1.21/go.mod h1:fVnvVtnfo3R78jnGLgckfC43j7rYMMN+l1PhU9E6Jas= -github.com/hbstack/blog/modules/featured-image v0.2.21 h1:G4nwll995EsnEAJOBUKJMjH12HtJ0YFPL0nH8m7qneI= -github.com/hbstack/blog/modules/featured-image v0.2.21/go.mod h1:+gxtGAEh7aXDDKQA0wWzdi9HPLcqCSRtRp63F+NN8QU= -github.com/hbstack/blog/modules/heading-sign v0.1.23 h1:Z6QZvCKER/O3Y0eXQtRtkICEzYllFZW0m5fkT5OXrTE= -github.com/hbstack/blog/modules/heading-sign v0.1.23/go.mod h1:fBpZ5ifaLbAVClB/cXGQCD45wFc7bU/GBuNyTwTMjJ8= -github.com/hbstack/blog/modules/post-nav v0.4.0 h1:oc90hYrFTQXXAgbi73xeaD+BxYjDwCvpCAxKJRDx4UE= -github.com/hbstack/blog/modules/post-nav v0.4.0/go.mod h1:tgP0PtW87TQPYz52S6rAjwusQcBheJLBC8US/bwxy0Q= -github.com/hbstack/blog/modules/related-posts v0.4.0 h1:FujQXAfdqixHGJibxkO3wSBhidElq/kM0XxfoSAJVus= -github.com/hbstack/blog/modules/related-posts v0.4.0/go.mod h1:h+O7tmtrhKImBt6/RS0GYDnOgDXCE632yyzlVVHTtN0= github.com/hbstack/blog/modules/toc-scrollspy v0.2.0 h1:UgA7UxoHTOzFDRp1XxhCmCNiSZlfpXqyEBnkPMCMjsM= github.com/hbstack/blog/modules/toc-scrollspy v0.2.0/go.mod h1:61D0fK0cilgwUzQm4fhVqfAc0cFYkvTE4pVSP6+FvHI= -github.com/hbstack/bootstrap v0.2.2 h1:Kiy+XEiyDvH9KVfuS7uWYTDoTLbiww0PWTheEXO/fdM= -github.com/hbstack/bootstrap v0.2.2/go.mod h1:2Qd2g72fKgje8fCMSaz8KlKIv60c6PAak59Zg2FJHs0= -github.com/hbstack/breadcrumb v0.7.1 h1:PntlY/kcdivpQ6/ae13qaR5RsTinYo3gtF1Xv2jGeK4= -github.com/hbstack/breadcrumb v0.7.1/go.mod h1:iLp0/AKYRVTNo+Sae1V55hX7CfhX9i0F/nMZ0SnicLQ= github.com/hbstack/carousel v0.2.5 h1:+N4U9wvCvd8gWI0anyNVqelkrDqsWI/jDc8LG/KvB1E= github.com/hbstack/carousel v0.2.5/go.mod h1:37ffr9r5ilAS4b7KrplyCeOcTPmFd2PMygLo+VPe3oY= -github.com/hbstack/code-block-panel v0.1.2 h1:7ZW54ZA7tBNr5oQSWrBrAvEyXfm0Usk9+Nsp7X7Xhko= -github.com/hbstack/code-block-panel v0.1.2/go.mod h1:VK2kn+hD3pr5HPz8izFAUyFG0lB/nXybe8ix5uc/LLs= -github.com/hbstack/content-panel v0.10.1 h1:DB0sg3nNWD4oy7RMCxe3xXYjAzhy3G58r6QlM324bEA= -github.com/hbstack/content-panel v0.10.1/go.mod h1:lEyMXJYCNHL6fkT260oX2FnXF6gD5Vd3EytifVuz3iQ= -github.com/hbstack/docs v0.17.2 h1:qGUhtRykmndetii9LcFLF0jFuXrNrJWHd2sGX6BDhFs= -github.com/hbstack/docs v0.17.2/go.mod h1:8nM1YwlDGfIkb51arJR8Viy35NFkytHfKqKUjdjLb8w= -github.com/hbstack/docs/modules/breadcrumb v0.1.10 h1:Ryp68WkRdOxL2UlGNYtN5ZJUxbbHv7bWe0NdzDt2Obg= -github.com/hbstack/docs/modules/breadcrumb v0.1.10/go.mod h1:pTh43gl04dPERZZVDQ70KVU0j0Z4hmPK7GrxUfLw15s= -github.com/hbstack/docs/modules/doc-nav v0.3.7 h1:K0U0EAsYYsnOV4AGYMbbkMEJe2HrBSmuWipbpBg4V4A= -github.com/hbstack/docs/modules/doc-nav v0.3.7/go.mod h1:EoYAPHmhHmM7hDgDvIJIRNRiy6G+n/Eeto6HUgsw5ww= -github.com/hbstack/docs/modules/featured-image v0.2.8 h1:5sYRhNxVa/EYGCsgS5SKiZMIAdhZQJxam4CEyTFWL8Q= -github.com/hbstack/docs/modules/featured-image v0.2.8/go.mod h1:zg3OOJK2GXuggE0w/Ov2M0FDzyCHs8BRoWiD7Nz5o58= github.com/hbstack/docs/modules/giscus v0.1.10 h1:rSZKSrgiZeuf4nizv2A9BJGikm7PSsQy7T6u/6u+/Yw= github.com/hbstack/docs/modules/giscus v0.1.10/go.mod h1:6MTfPyydWOJ2hH/9vhQw1r6Z5lvNTgDN7zpAfgjIQz0= -github.com/hbstack/docs/modules/heading-sign v0.1.9 h1:gwqg3R5YGwqCHFXrnV1ligZ2wFHbOj9chFS6bmqh2f8= -github.com/hbstack/docs/modules/heading-sign v0.1.9/go.mod h1:64D1dr+tmjfQh0F1PtYa+cs9PiZttR6LCoXaiBXD4bI= github.com/hbstack/featured-image v0.2.1 h1:sRIzjV6YPVG7Ah0Hxjiuxd9bQnEV+62McOgXZjGNV7g= github.com/hbstack/featured-image v0.2.1/go.mod h1:hux3nYqQUVnQHPttJxVrvwfTsULGuVGRGFk3lO2Si54= -github.com/hbstack/footer v0.4.1 h1:dGEIcqCM6K/s9bygnFQlPcVMJn+BblAjaESied8H7ug= -github.com/hbstack/footer v0.4.1/go.mod h1:EvignAN0ShrWDbPAlf9+lrRfJSha9G4wYPDUed4wPzg= -github.com/hbstack/footer/modules/socials v0.3.0 h1:m8d8o9j+3BQUfxpONEaGP4tL8WSgnrA50bM4ux6twg8= -github.com/hbstack/footer/modules/socials v0.3.0/go.mod h1:clVl77mC1//pSZuHEr8aHqDk8Ylggk+I+XOQoBiim8w= github.com/hbstack/gallery v0.13.0 h1:xIS5vK0g4wlxgNjxBOdn+9E5n1VsQiZNjBUX5IcPBpQ= github.com/hbstack/gallery v0.13.0/go.mod h1:FeLNZqjpKCj1ryfPoTJVk59Bph2N1BfDcNBHyudWT4o= github.com/hbstack/gallery/modules/breadcrumb v0.1.1 h1:hPP+FuHcBo2nieDA3eY/f7714JBe/egECb6TRnmPHTo= github.com/hbstack/gallery/modules/breadcrumb v0.1.1/go.mod h1:LdbDrxkgYlIOn/x9HFrde+mpIagFayRuLjIDXL1zCHw= -github.com/hbstack/giscus v0.1.1 h1:jKbA17XjAcbD59QIDUVoFOdbi9P2WzQMtOcIpG/Znuo= -github.com/hbstack/giscus v0.1.1/go.mod h1:XElW8oNLnS0dRVFzoo9Gq8xknvz3D2PuTHC7yw9h3EE= -github.com/hbstack/hb v0.12.2 h1:zFIPi39iB68P9y5o5ckVqK4qCc/6cl7oYRvfEpQucPs= -github.com/hbstack/hb v0.12.2/go.mod h1:gwKZN1bsmMuSjEkI/l/9zJCG0Xz96h0r7Cv/WOjjNjc= -github.com/hbstack/header v0.14.5 h1:TGjaudDop6df38A0K8hjMOdmcD1WpUN03xenpgR7tJw= -github.com/hbstack/header v0.14.5/go.mod h1:W7eolpYJctsTD8GVFEj09Ogbqqy8OAqcxBEbW3ZTYIg= -github.com/hbstack/header/modules/language-picker v0.1.25 h1:F8ervz2fAJa2PaCaexmQaVRqkcVb7/dHK1ZSiHCcu6A= -github.com/hbstack/header/modules/language-picker v0.1.25/go.mod h1:kkNF76Y6HJUA+sCAVVlhAR9UoKJirpnZSIT2z/9tyoo= -github.com/hbstack/header/modules/search v0.1.36 h1:SqQjKXX46dABksZp9UR/QH9eayxAkRD5CAbBenOUGJQ= -github.com/hbstack/header/modules/search v0.1.36/go.mod h1:enMXYMhDd+V2OQ0e2xzD9qbkktwK5DzbpP5UxvdALXo= -github.com/hbstack/header/modules/socials v0.2.0 h1:ztbnGhgFrgViU8+TlvFpOajVWcQztqc+C0wPNp7iyJo= -github.com/hbstack/header/modules/socials v0.2.0/go.mod h1:OoJfwBEicrezWzSF+F/mKuqCoo9FfP1nb8Oo4vmGWG8= -github.com/hbstack/header/modules/theme-toggle v0.5.1 h1:CXognO+rbqUVXCJ/Udc3frntSu15mY1ZH15I/H20aF4= -github.com/hbstack/header/modules/theme-toggle v0.5.1/go.mod h1:EHXmyYT45ZhcUIXdL45lRG3HpxodbHSr4KpD9Ynhzfg= github.com/hbstack/heading-sign v0.2.0 h1:yXKZQEjPn/+jKyQxCJh34X+wXbiG4Bnr1VVF6lgMhi8= github.com/hbstack/heading-sign v0.2.0/go.mod h1:SXJWIr9C/7phTOXfWMzNSVZCeimKbYualuwIOHDeOu0= -github.com/hbstack/mermaid v0.2.2 h1:TtGzO04if+jgnLXdFDiI2opnzvcTDJqoaQAQvNgG0xs= -github.com/hbstack/mermaid v0.2.2/go.mod h1:gVO/itIHv07hiGqzmUtLw78vkcTU8RMnOl72GVSUUrA= github.com/hbstack/meta/recommended v0.2.10 h1:RzRe2LT/lJxlsfGv5UzYC3onl7lp1VWbCm1jAb69kSw= github.com/hbstack/meta/recommended v0.2.10/go.mod h1:OdGN+zqdgFbet5A6XrfjaTNUTd5L91rOUNRJxgq38fo= -github.com/hbstack/noscript v0.7.0 h1:PxHaeCInP9SFofMOS+QUmAxujwP+Nh2D1kO5C0IlZIE= -github.com/hbstack/noscript v0.7.0/go.mod h1:F0qU9/caEaqa45OfHiL+8nTCohs2rg97Hek2KQUzK8M= github.com/hbstack/pagination v0.8.0 h1:xnrLD6c7HalpQFQKN9pcQi1M8H0o8b3yrjbjBFs/03o= github.com/hbstack/pagination v0.8.0/go.mod h1:XaYSS/iReEFQo+fbVAx2YfjP4muWEraVNGeaTcVA35o= -github.com/hbstack/progress-bar v0.1.0 h1:2ZiGS3RFZbZYBUbT2nFCoU9SJsbD9jtV4A7ab41B4jg= -github.com/hbstack/progress-bar v0.1.0/go.mod h1:JZt160XK62FxThzt+RmokjOww3De8ZL0ITcxMJLVE7g= -github.com/hbstack/pwa v0.1.2 h1:zJhLf5Uf+jO9aCBKvFcASlw7sULK2i0qUJZxscBo0HM= -github.com/hbstack/pwa v0.1.2/go.mod h1:8x01rczLrSw1aCWD+yrn6v5FRQPtaEh/PYCtFDICEWo= -github.com/hbstack/scrollbar v0.1.0 h1:uQMNbkWbLxnjQMiD3zdt33RG48sY2a0XWyGQkK2HsyY= -github.com/hbstack/scrollbar v0.1.0/go.mod h1:BEDha5gOjQfXBKZfwT+4vn8hCE88qElocjEI2SY1eAs= -github.com/hbstack/search v0.2.2 h1:OcGCw2cVzZlB48wogNatcbaHk2BB7Boc/ESt9txI4Gw= -github.com/hbstack/search v0.2.2/go.mod h1:sVNCCvokrCfydqCNF/q7kcAd+U73a7Y/0P+v8vJaC0I= -github.com/hbstack/slide v0.4.0 h1:rWrbEmL1bKW1VF1coMtMblDUwzMvVcm1MgvauFX6vMg= -github.com/hbstack/slide v0.4.0/go.mod h1:5LOWGyawNzSWFlW+3kuUBSrK15kottNvolEc7FVcYVg= github.com/hbstack/snackbar v0.1.2 h1:/9R2CdWnLcOBobxzdpe30cgM1gcKJAXtbVbZtp2pgmY= github.com/hbstack/snackbar v0.1.2/go.mod h1:4uZSGpI9ZtR9by0bA8yJW2y61sRks2W4a8VvyMluXuo= -github.com/hbstack/socials v0.15.0 h1:Nyn+7S9B1BJ0CsRYmJTds/TfoquLK3gae7gKyKnCWyQ= -github.com/hbstack/socials v0.15.0/go.mod h1:Bu1TdfuxLKtpEImsmuvB8OwbYJaGzOriQbOh3u7gTtc= +github.com/hbstack/socials v0.16.0 h1:gR7NL/EBLQzqO31Tp/ITU7jtDuyDXfNskJyLtnpU0VM= github.com/hbstack/socials v0.16.0/go.mod h1:9pfExMNoBMnQ0JV2ODURqUQsEC/HlgUo9b3jXdrHNM4= -github.com/hbstack/syntax-highlighting v0.2.0 h1:BP5SR/AbVlJyAFtVdgYjeqVZKmncEmuplTR5R2AUbw8= -github.com/hbstack/syntax-highlighting v0.2.0/go.mod h1:6IoaM+tSIkKZblIrT1i5L3zVH68nt4UScU9JB30FQsc= -github.com/hbstack/syntax-highlighting/styles/gruvbox v0.1.1 h1:IzJlnkHGS8XhibNjUFvyV3YE7rc7WMsAhdxWZTbORI4= -github.com/hbstack/syntax-highlighting/styles/gruvbox v0.1.1/go.mod h1:ar5ZFplNyVZCVG6rvo69co1hNZwptxtrDz3zproGLPg= -github.com/hbstack/toc-scrollspy v0.1.0 h1:sr9HidxHVYeSZR1FVOGQzphONSsct/OscbWPSV+vMlo= -github.com/hbstack/toc-scrollspy v0.1.0/go.mod h1:wIqdWFRjqGGKX6Y5XVRQzaBBeZ91kZBKgovQp8IPvtk= -github.com/henrygd/bigger-picture v1.1.16 h1:S7xIGHnzUSpRnSzSMVvs4Cs8oWc+Pongjggdzs3GInQ= -github.com/henrygd/bigger-picture v1.1.16/go.mod h1:LayqbjDNNsZH+ZXklmjBe5T02qxpH9Cah/ygAraOBIk= +github.com/henrygd/bigger-picture v1.1.17 h1:X41lEdmfYbLLgMdkH4F3Mdhipy8EQjA2w16u1y+BgM8= github.com/henrygd/bigger-picture v1.1.17/go.mod h1:LayqbjDNNsZH+ZXklmjBe5T02qxpH9Cah/ygAraOBIk= github.com/hugomods/ascii v0.1.0 h1:c7E0nV3z7PiNchGXkIuFBWsKym17k0iOo+o6Bp6bw30= github.com/hugomods/ascii v0.1.0/go.mod h1:vvC2YaCuNBWl/8F/mfk9vMxVpwXluH80cROV9TDpmLk= @@ -116,10 +41,6 @@ github.com/hugomods/bootstrap v0.22.2 h1:wdZbyx/kLs3WH33pdDBmo/MH+42TTZzMtF0bH7o github.com/hugomods/bootstrap v0.22.2/go.mod h1:daEkGLSsmfI8vQ1SjKR7KELPSrm1G+yUnTptKdRxFN0= github.com/hugomods/code-block-panel v0.7.0 h1:7y8wbXMPvaFpqNIRUb8ykOQtz+E8lVcYd3yWGv2gMGw= github.com/hugomods/code-block-panel v0.7.0/go.mod h1:3J9yUxaShbhYvFFZbGVHcBoHPl6TUKLL3f2fTsnVNNg= -github.com/hugomods/font-awesome v6.5.2+incompatible h1:sDSRuMLUK7N7u/PTpNngqoqbfUI/UP9Rcb+885kV4Wk= -github.com/hugomods/font-awesome v6.5.2+incompatible/go.mod h1:C2wW6xDvHkcMlJMVTPQ+Npt+rO0OGv13xT1iyll2z2Q= -github.com/hugomods/fuse-js v0.1.0 h1:CmWHBZANvjOP44RDNQNLntqlLf9GLqeM29jekxTNcPE= -github.com/hugomods/fuse-js v0.1.0/go.mod h1:srCqvtBQR02HS/abTraDU4oINv1D3PljNPdexdoHhpo= github.com/hugomods/giscus v0.1.1 h1:Kb8137Cp2nQJPFb6e+CdXy8nyIAJ2dFIymG4bDdaXWI= github.com/hugomods/giscus v0.1.1/go.mod h1:tCRkqNi/sMsLh3kjDesXZNzf4R/w+b5oc5boS/l8Jtw= github.com/hugomods/google-adsense v0.1.0 h1:eykHVCF+JjJRpEQ/b+EkH9aQLQxIdGI8m06qsq1iybA= @@ -128,59 +49,20 @@ github.com/hugomods/gravatar v0.2.0 h1:642HNhGN7Mw7qefNcUFJKzLoT2zJKt4IQkrS53mIU github.com/hugomods/gravatar v0.2.0/go.mod h1:oATWuh5u2XUK/ZKzOD0VEP5I/TZfVZwplTyhT61Q4Fc= github.com/hugomods/hugopress v0.4.0 h1:ZNORTaUTdw3/AJdu3F280r9aM84c+tZyDQpcJOQJ7Ks= github.com/hugomods/hugopress v0.4.0/go.mod h1:CRYvr60xOkZOf4Atkuj+uEj2EH5pjJ39Ws3aJAkoMkA= -github.com/hugomods/i18n-js v0.2.1 h1:uIUl4LiYdwo8IK08oq7OmluYLedL21Wc9Rig1taDTSI= -github.com/hugomods/i18n-js v0.2.1/go.mod h1:eJfxjgI2CQsNA1/ReIVvr5127DftUKcbHd2A2SQmDvU= -github.com/hugomods/icons v0.6.3 h1:2Ra6NU2GOeVvz8vowLq/OZCTzxqhq84MA0TICRBVxeY= -github.com/hugomods/icons v0.6.3/go.mod h1:cIkSvK6W0q6N4U6n9KGz+QfRWQXAW0INd+1P31gPNGg= -github.com/hugomods/icons v0.6.4/go.mod h1:cIkSvK6W0q6N4U6n9KGz+QfRWQXAW0INd+1P31gPNGg= github.com/hugomods/icons/vendors/bootstrap v0.5.6 h1:4Vj7u52gFUnO+Jj/CqmGfsLroify2aysRpIvgHRNjjI= github.com/hugomods/icons/vendors/bootstrap v0.5.6/go.mod h1:Sw1RhQvFcsQlJ5a4SKpp7A0XHDYQ0DK0pQwnnx+l+Ao= github.com/hugomods/icons/vendors/font-awesome v0.6.6 h1:rb12roByF9LZfUxBpyhyqenkcX2+VGkYf5jJ/55OPHo= github.com/hugomods/icons/vendors/font-awesome v0.6.6/go.mod h1:2IVdmnq+IWCnPFYsvbxq59dTuW3+prPLerpu8Ezobro= -github.com/hugomods/icons/vendors/simple-icons v1.0.40 h1:esnu84uFnWGhDMqBJF9qBHTXKAC170lwqZlRA9FjXeA= -github.com/hugomods/icons/vendors/simple-icons v1.0.40/go.mod h1:594XsVTJ2lgbzAUy/4OopxsZEeAOKmg8GfOBwiBiCe8= -github.com/hugomods/icons/vendors/simple-icons v1.0.41/go.mod h1:LppcJG9cNDKHw5NRGmyGPBsZoqo+I18HegEgmo2/LVg= github.com/hugomods/idb-js v0.1.0 h1:mA6hEGtR0aFEdmq9zYMGpfSpCU6SMilx9RzC4uK3DqY= github.com/hugomods/idb-js v0.1.0/go.mod h1:GPfnmr+BQpP4s6Epd4Yu+RlUog8q/Djw8qy8BZFWZ04= github.com/hugomods/images v0.10.1 h1:ok3ZUZ63MAcmFuTx2kC5JJ3Sffd420RRW9yO57SFeQA= github.com/hugomods/images v0.10.1/go.mod h1:U6Gwj16LKvk66rOMyGFrnF6f0aV8lT89lqOsckOAjYY= -github.com/hugomods/katex v0.3.1 h1:uxaETvO5zIMQeNYjTCOulfGGb7EPBlMhNI/jUujg35M= -github.com/hugomods/katex v0.3.1/go.mod h1:EBY1YQTN6F8FDQz+mWp3EzEh8vDN31YjL9luVni+Wm0= github.com/hugomods/mermaid v0.1.1 h1:12b8DbdiKOTtPmkWOMXsBz3LKkAWVqa5tGkbEboj0a4= github.com/hugomods/mermaid v0.1.1/go.mod h1:7sKIZLAeYsXXnKRh4KR70UQx27xnzf0mSQ2o99zTLS0= github.com/hugomods/pwa v0.9.0 h1:bEKFkP7xkow6IadY9hKEwPbdKeLC0XZfVT31gGP7CPc= github.com/hugomods/pwa v0.9.0/go.mod h1:KpYK2Ffn969+Py5SzV3+iXYase4UoUeRAsd9jY7Q2Us= github.com/hugomods/search v0.14.0 h1:mN52YGIaIBr2pv5NWGJiQhAVFt+lOUHDNcpbz9T4CxA= github.com/hugomods/search v0.14.0/go.mod h1:xPnDGjP/HCdEWJrJBwwdI2mEtdxFxp+wHBwSl/r2m00= -github.com/hugomods/seo/modules/alternatives v0.1.0 h1:G5IjM7j7ExgXEMyxQj1Z/5JwwRW8DEmL0nDJYxA3NhE= -github.com/hugomods/seo/modules/alternatives v0.1.0/go.mod h1:ff9uz+f5yii9k2jbwt/HKM3RpLR3EYZrNQBAOabNxMA= -github.com/hugomods/seo/modules/base v0.1.2 h1:Md3RgadMJpGnM1w/9Advmn4Gp406kNsA/AsKT3olzZs= -github.com/hugomods/seo/modules/base v0.1.2/go.mod h1:qfm1Vga0eGxL+Szgz8Jopm+NtJ5PGov2a2dikTg1qSg= -github.com/hugomods/seo/modules/favicons v0.2.1 h1:9FP4DIbdmBhmUpBuJVJYo60iwv9Xc/XNQX1mT8zCNj0= -github.com/hugomods/seo/modules/favicons v0.2.1/go.mod h1:xFDhrpWUZR4NMMVkilzT6xFBHiF5eyCQ8PlzOS2K9lY= -github.com/hugomods/seo/modules/open-graph v0.1.0 h1:Whveal1j1n2xZWcAlNAd2rdfKp7Fh5apol36wLGLb54= -github.com/hugomods/seo/modules/open-graph v0.1.0/go.mod h1:G7mXf7D1QtRN/i7A9v+cUF5P55H/QaxRqxJ8tp9fVq4= -github.com/hugomods/seo/modules/schema v0.1.2 h1:IAz1sG31S/jtEufb47+hpwKLp/rjPATT2Yd616Mom/4= -github.com/hugomods/seo/modules/schema v0.1.2/go.mod h1:R6hRr2FIJITcMnFA/3V3dPAZgGQLNWGS7v1PLsmVRxU= -github.com/hugomods/seo/modules/translations v0.1.0 h1:wPDuPKGx/x+otHn2HfAankKCGQxSrC3gLHhRHpNjC18= -github.com/hugomods/seo/modules/translations v0.1.0/go.mod h1:yU2p2hk2dK86YNRU9zfoWRoCrYmrjEmf3oN7cCTbzcM= -github.com/hugomods/seo/modules/twitter-cards v0.1.0 h1:jH9WfmFZ3kCndUkATM/D/BYL+TQYoXA7/IxgQJbifKQ= -github.com/hugomods/seo/modules/twitter-cards v0.1.0/go.mod h1:QYs7SWbhXSQrsn/RHZSD7DwzaCHFpoLQdVPxEI3j63k= -github.com/hugomods/shortcodes v0.21.0 h1:h8Vulwd3Kiff5FERe3KaAXsI9GWW3msNof6XjNgGGEo= -github.com/hugomods/shortcodes v0.21.0/go.mod h1:EnVopbZMNI/HeteM3Lp3phBTCRLvPSe7l142qhRFFPY= -github.com/hugomods/simple-icons v12.1.0+incompatible h1:ovp83b4IfedZnVSq8S8OvnWW54L9kEn1m73ndjgqlTE= -github.com/hugomods/simple-icons v12.1.0+incompatible/go.mod h1:1Lvymol7AMVY7ji/o88jMoDHHZIJ5Wc+WwNe5hjmk+U= +github.com/hugomods/simple-icons v12.2.0+incompatible h1:Atj+h4st6qB8I9p7jdMdf1/tw7pqtWBFL6L4SCaWEFI= github.com/hugomods/simple-icons v12.2.0+incompatible/go.mod h1:1Lvymol7AMVY7ji/o88jMoDHHZIJ5Wc+WwNe5hjmk+U= -github.com/hugomods/snackbar v0.1.2 h1:SLpfH9jlYwf81epH7DvM2XTZHo+3fXXpk6XKtxmo964= -github.com/hugomods/snackbar v0.1.2/go.mod h1:ykFm0IFibeQPuPAm8Gaa27xJS/bNZcSez4omVSl2gQ0= -github.com/hugomods/workbox v0.1.0 h1:yxuTj3gT1BNf6OitxrjxSJXfmbFBj2UTwdWr142eYFQ= -github.com/hugomods/workbox v0.1.0/go.mod h1:RpFcIcltqYsiHWJV6PHPOdMagFZxO7nrO5XUpn/TMoc= -github.com/jakearchibald/idb v8.0.0+incompatible h1:sTNGHgh+JoyQ4Eqey+1ScX4F03uTsYGhs2MbVSJNfF4= -github.com/jakearchibald/idb v8.0.0+incompatible/go.mod h1:AuDoW54s2DKfbclM+ScrnPp8ahUQ9rHph9bb8sZTEXc= -github.com/krisk/Fuse v7.0.0+incompatible h1:jVyg6No+Joc51Rn97QQYJZIpCxzd4ywACn/4+FKWjvo= -github.com/krisk/Fuse v7.0.0+incompatible/go.mod h1:3moWv8rDjwoKic9nwiPLgZjldkbdTAbtzJHCu/Vsj4A= github.com/twbs/bootstrap v5.3.2+incompatible/go.mod h1:fZTSrkpSf0/HkL0IIJzvVspTt1r9zuf7XlZau8kpcY0= -github.com/twbs/bootstrap v5.3.3+incompatible h1:goFoqinzdHfkeegpFP7pvhbd0g+A3O2hbU3XCjuNrEQ= -github.com/twbs/bootstrap v5.3.3+incompatible/go.mod h1:fZTSrkpSf0/HkL0IIJzvVspTt1r9zuf7XlZau8kpcY0= -github.com/twbs/icons v1.11.3 h1:XhvrQ1XDom9ggBbQx3wQCFGEr8qAQwQP/dAcw8OXMtA= -github.com/twbs/icons v1.11.3/go.mod h1:GnRlymgVWp5iVJCMa0Me5b6tFyGpVc2bSxPMRGIJmyA=