/* Widget Name: Button Description: Create a custom button with flexible styling, icon support, and click tracking functionality. Author: SiteOrigin Author URI: https://siteorigin.com Documentation: https://siteorigin.com/widgets-bundle/button-widget-documentation/ Keywords: event, icon, link */ class SiteOrigin_Widget_Button_Widget extends SiteOrigin_Widget { public function __construct() { parent::__construct( 'sow-button', __( 'SiteOrigin Button', 'so-widgets-bundle' ), array( 'description' => __( 'Create a custom button with flexible styling, icon support, and click tracking functionality.', 'so-widgets-bundle' ), 'help' => 'https://siteorigin.com/widgets-bundle/button-widget-documentation/', ), array( ), false, plugin_dir_path( __FILE__ ) ); } public function get_settings_form() { return array( 'responsive_breakpoint' => array( 'type' => 'measurement', 'label' => __( 'Responsive Breakpoint', 'so-widgets-bundle' ), 'default' => '780px', 'description' => __( 'This setting controls when the Mobile Align setting will be used. The default value is 780px.', 'so-widgets-bundle' ), ), ); } public function initialize() { $this->register_frontend_styles( array( array( 'sow-button-base', plugin_dir_url( __FILE__ ) . 'css/style.css', array(), SOW_BUNDLE_VERSION, ), ) ); } public function get_widget_form() { return array( 'text' => array( 'type' => 'text', 'label' => __( 'Button Text', 'so-widgets-bundle' ), ), 'url' => array( 'type' => 'link', 'label' => __( 'Destination URL', 'so-widgets-bundle' ), 'allow_shortcode' => true, ), 'new_window' => array( 'type' => 'checkbox', 'default' => false, 'label' => __( 'Open in a new window', 'so-widgets-bundle' ), ), 'download' => array( 'type' => 'checkbox', 'default' => false, 'label' => __( 'Download', 'so-widgets-bundle' ), 'description' => __( 'The Destination URL will be downloaded when a user clicks on the button.', 'so-widgets-bundle' ), ), 'button_icon' => array( 'type' => 'section', 'label' => __( 'Icon', 'so-widgets-bundle' ), 'fields' => array( 'icon_selected' => array( 'type' => 'icon', 'label' => __( 'Icon', 'so-widgets-bundle' ), ), 'icon_color' => array( 'type' => 'color', 'label' => __( 'Icon Color', 'so-widgets-bundle' ), ), 'icon' => array( 'type' => 'media', 'label' => __( 'Image Icon', 'so-widgets-bundle' ), 'description' => __( 'Replaces the icon with your own image icon.', 'so-widgets-bundle' ), ), 'icon_placement' => array( 'type' => 'select', 'label' => __( 'Icon Placement', 'so-widgets-bundle' ), 'default' => 'left', 'options' => array( 'top' => __( 'Top', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'bottom' => __( 'Bottom', 'so-widgets-bundle' ), 'left' => __( 'Left', 'so-widgets-bundle' ), ), ), ), ), 'design' => array( 'type' => 'section', 'label' => __( 'Design and Layout', 'so-widgets-bundle' ), 'hide' => true, 'fields' => array( 'width' => array( 'type' => 'measurement', 'label' => __( 'Width', 'so-widgets-bundle' ), 'description' => __( 'Leave blank to let the button resize according to content.', 'so-widgets-bundle' ), ), 'align' => array( 'type' => 'select', 'label' => __( 'Align', 'so-widgets-bundle' ), 'default' => 'center', 'options' => array( 'left' => __( 'Left', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'center' => __( 'Center', 'so-widgets-bundle' ), 'justify' => __( 'Full Width', 'so-widgets-bundle' ), ), ), 'mobile_align' => array( 'type' => 'select', 'label' => __( 'Mobile Align', 'so-widgets-bundle' ), 'default' => 'center', 'options' => array( 'left' => __( 'Left', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'center' => __( 'Center', 'so-widgets-bundle' ), 'justify' => __( 'Full Width', 'so-widgets-bundle' ), ), ), 'theme' => array( 'type' => 'select', 'label' => __( 'Button Theme', 'so-widgets-bundle' ), 'default' => 'flat', 'options' => array( 'atom' => __( 'Atom', 'so-widgets-bundle' ), 'flat' => __( 'Flat', 'so-widgets-bundle' ), 'wire' => __( 'Wire', 'so-widgets-bundle' ), ), ), 'button_color' => array( 'type' => 'color', 'label' => __( 'Button Color', 'so-widgets-bundle' ), ), 'text_color' => array( 'type' => 'color', 'label' => __( 'Text Color', 'so-widgets-bundle' ), ), 'hover' => array( 'type' => 'checkbox', 'default' => true, 'label' => __( 'Use hover effects', 'so-widgets-bundle' ), 'state_emitter' => array( 'callback' => 'conditional', 'args' => array( 'hover[show]: val', 'hover[hide]: ! val', ), ), ), 'hover_background_color' => array( 'type' => 'color', 'label' => __( 'Hover Background Color', 'so-widgets-bundle' ), 'state_handler' => array( 'hover[show]' => array( 'show' ), 'hover[hide]' => array( 'hide' ), ), ), 'hover_text_color' => array( 'type' => 'color', 'label' => __( 'Hover Text Color', 'so-widgets-bundle' ), 'state_handler' => array( 'hover[show]' => array( 'show' ), 'hover[hide]' => array( 'hide' ), ), ), 'font' => array( 'type' => 'font', 'label' => __( 'Font', 'so-widgets-bundle' ), 'default' => 'default', ), 'font_size' => array( 'type' => 'measurement', 'label' => __( 'Font Size', 'so-widgets-bundle' ), 'default' => '1em', ), 'icon_size' => array( 'type' => 'measurement', 'label' => __( 'Icon Size', 'so-widgets-bundle' ), 'default' => '1.3em', ), 'padding' => array( 'type' => 'measurement', 'label' => __( 'Padding', 'so-widgets-bundle' ), 'default' => '1em', ), 'rounding' => array( 'type' => 'multi-measurement', 'label' => __( 'Rounding', 'so-widgets-bundle' ), 'default' => '0.25em 0.25em 0.25em 0.25em', 'measurements' => array( 'top' => array( 'label' => __( 'Top', 'so-widgets-bundle' ), ), 'right' => array( 'label' => __( 'Right', 'so-widgets-bundle' ), ), 'bottom' => array( 'label' => __( 'Bottom', 'so-widgets-bundle' ), ), 'left' => array( 'label' => __( 'Left', 'so-widgets-bundle' ), ), ), ), ), ), 'attributes' => array( 'type' => 'section', 'label' => __( 'Other Attributes and SEO', 'so-widgets-bundle' ), 'hide' => true, 'fields' => array( 'id' => array( 'type' => 'text', 'label' => __( 'Button ID', 'so-widgets-bundle' ), 'description' => __( 'An ID attribute allows you to target this button in JavaScript.', 'so-widgets-bundle' ), ), 'classes' => array( 'type' => 'text', 'label' => __( 'Button Classes', 'so-widgets-bundle' ), 'description' => __( 'Additional CSS classes added to the button link.', 'so-widgets-bundle' ), ), 'title' => array( 'type' => 'text', 'label' => __( 'Title Attribute', 'so-widgets-bundle' ), 'description' => __( 'Adds a title attribute to the button link.', 'so-widgets-bundle' ), ), 'on_click' => array( 'type' => 'text', 'label' => __( 'Onclick', 'so-widgets-bundle' ), 'description' => __( 'Run this JavaScript when the button is clicked. Ideal for tracking.', 'so-widgets-bundle' ), 'onclick' => true, ), 'rel' => array( 'type' => 'text', 'label' => __( 'Rel Attribute', 'so-widgets-bundle' ), 'description' => __( 'Adds a rel attribute to the button link.', 'so-widgets-bundle' ), ), ), ), ); } public function get_style_name( $instance ) { if ( empty( $instance['design']['theme'] ) ) { return 'atom'; } return $instance['design']['theme']; } /** * Get the variables for the Button Widget. * * @return array */ public function get_template_variables( $instance, $args ) { $button_attributes = array(); $attributes = $instance['attributes']; $classes = ! empty( $attributes['classes'] ) ? $attributes['classes'] : ''; if ( ! empty( $classes ) ) { $classes .= ' '; } $classes .= 'sowb-button ow-icon-placement-' . $instance['button_icon']['icon_placement']; if ( ! empty( $instance['design']['hover'] ) ) { $classes .= ' ow-button-hover'; } $button_attributes['class'] = implode( ' ', array_map( 'sanitize_html_class', explode( ' ', $classes ) ) ); if ( ! empty( $instance['new_window'] ) ) { $button_attributes['target'] = '_blank'; $button_attributes['rel'] = 'noopener noreferrer'; } if ( ! empty( $instance['download'] ) ) { $button_attributes['download'] = null; } if ( ! empty( $attributes['id'] ) ) { $button_attributes['id'] = $attributes['id']; } if ( ! empty( $attributes['title'] ) ) { $button_attributes['title'] = $attributes['title']; } if ( ! empty( $attributes['rel'] ) ) { if ( isset( $button_attributes['rel'] ) ) { $button_attributes['rel'] .= " $attributes[rel]"; } else { $button_attributes['rel'] = $attributes['rel']; } } $icon_image_url = ''; if ( ! empty( $instance['button_icon']['icon'] ) ) { $attachment = wp_get_attachment_image_src( $instance['button_icon']['icon'] ); if ( ! empty( $attachment ) ) { $icon_image_url = $attachment[0]; } } return array( 'button_attributes' => apply_filters( 'siteorigin_widgets_button_attributes', $button_attributes, $instance ), 'href' => ! empty( $instance['url'] ) ? $instance['url'] : '', 'on_click' => ! empty( $attributes['on_click'] ) ? $attributes['on_click'] : '', 'align' => $instance['design']['align'], 'icon_image_url' => $icon_image_url, 'icon' => $instance['button_icon']['icon_selected'], 'icon_color' => $instance['button_icon']['icon_color'], 'text' => $instance['text'], ); } /** * Get the variables that we'll be injecting into the less stylesheet. * * @return array */ public function get_less_variables( $instance ) { if ( empty( $instance ) || empty( $instance['design'] ) ) { return array(); } $text_color = isset( $instance['design']['text_color'] ) ? $instance['design']['text_color'] : ''; $button_color = isset( $instance['design']['button_color'] ) ? $instance['design']['button_color'] : ''; $less_vars = array( 'button_width' => isset( $instance['design']['width'] ) ? $instance['design']['width'] : '', 'button_color' => $button_color, 'text_color' => $text_color, 'icon_size' => ! empty( $instance['design']['icon_size'] ) ? $instance['design']['icon_size'] : '1.3em', 'hover_text_color' => ! empty( $instance['design']['hover_text_color'] ) ? $instance['design']['hover_text_color'] : $text_color, 'hover_background_color' => ! empty( $instance['design']['hover_background_color'] ) ? $instance['design']['hover_background_color'] : $button_color, 'font_size' => isset( $instance['design']['font_size'] ) ? $instance['design']['font_size'] : '', 'rounding' => isset( $instance['design']['rounding'] ) ? $instance['design']['rounding'] : '', 'padding' => isset( $instance['design']['padding'] ) ? $instance['design']['padding'] : '', 'has_text' => empty( $instance['text'] ) ? 'false' : 'true', 'responsive_breakpoint' => $this->get_global_settings( 'responsive_breakpoint' ), 'align' => ! empty( $instance['design']['align'] ) ? $instance['design']['align'] : 'center', 'mobile_align' => ! empty( $instance['design']['mobile_align'] ) ? $instance['design']['mobile_align'] : 'center', 'has_button_icon' => empty( $instance['button_icon']['icon_selected'] ) ? 'false' : 'true', ); if ( ! empty( $instance['design']['font'] ) ) { $font = siteorigin_widget_get_font( $instance['design']['font'] ); $less_vars['button_font'] = $font['family']; if ( ! empty( $font['weight'] ) ) { $less_vars['button_font_weight'] = $font['weight_raw']; $less_vars['button_font_style'] = $font['style']; } } return $less_vars; } /** * Make sure the instance is the most up to date version. * * @return mixed */ public function modify_instance( $instance ) { if ( empty( $instance ) ) { return array(); } $migrate_props = array( 'button_icon' => array( 'icon_selected', 'icon_color', 'icon', ), 'design' => array( 'align', 'theme', 'button_color', 'text_color', 'hover', 'hover_text_color', 'hover_background_color', 'font_size', 'rounding', 'padding', ), 'attributes' => array( 'id', ), ); foreach ( $migrate_props as $prop => $sub_props ) { if ( empty( $instance[ $prop ] ) ) { $instance[ $prop ] = array(); foreach ( $sub_props as $sub_prop ) { if ( isset( $instance[ $sub_prop ] ) ) { $instance[ $prop ][ $sub_prop ] = $instance[ $sub_prop ]; unset( $instance[ $sub_prop ] ); } } } } // Migrate onclick setting to prevent Wordfence flag. if ( ! empty( $instance['attributes'] ) && ! empty( $instance['attributes']['onclick'] ) ) { $instance['attributes']['on_click'] = $instance['attributes']['onclick']; } // If the mobile_align setting isn't set, set it to the same value as the align value. if ( ! empty( $instance['design'] ) && ! empty( $instance['design']['align'] ) && empty( $instance['design']['mobile_align'] ) ) { $instance['design']['mobile_align'] = $instance['design']['align']; } // Migrate predefined settings to more customizable settings. if ( ! empty( $instance['design']['font_size'] ) && is_numeric( $instance['design']['font_size'] ) ) { $instance['design']['font_size'] .= 'em'; } if ( ! empty( $instance['design']['padding'] ) && is_numeric( $instance['design']['padding'] ) ) { $instance['design']['padding'] .= 'em'; } if ( ! empty( $instance['design']['rounding'] ) && is_numeric( $instance['design']['rounding'] ) ) { $instance['design']['rounding'] = $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em'; } if ( empty( $instance['design']['icon_size'] ) ) { $instance['design']['icon_size'] = '1.3em'; } return $instance; } public function get_form_teaser() { if ( class_exists( 'SiteOrigin_Premium' ) ) { return false; } return array( sprintf( __( 'Add a beautiful tooltip to the Button Widget with %sSiteOrigin Premium%s', 'so-widgets-bundle' ), '', '' ), ); } } siteorigin_widget_register( 'sow-button', __FILE__, 'SiteOrigin_Widget_Button_Widget' );{"id":79182,"date":"2026-05-22T22:34:04","date_gmt":"2026-05-22T22:34:04","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=79182"},"modified":"2026-05-22T22:34:05","modified_gmt":"2026-05-22T22:34:05","slug":"por-las-bonos-de-recarga-incluso-los-giros-regalado-ocurriendo-para-las-bonos-falto-tanque","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/por-las-bonos-de-recarga-incluso-los-giros-regalado-ocurriendo-para-las-bonos-falto-tanque\/","title":{"rendered":"Por las bonos de recarga incluso los giros regalado, ocurriendo para las bonos falto tanque"},"content":{"rendered":"

Como continuamente, y para impedir acudir el frente del manillar con la oportunidad sobre asentir algun bono carente deposito en un casino sobre Portugal sobre 2024, te recomendamos que leas ahora las palabras asi\ufffd como caracteristicas asociados dentro del exacto para obtener de este modo el maximum bando dentro del bono movernos, incluso, nunca correr nuestro peligro de perder la rebaja. Importa encontrarse en tu pensamiento diferentes angulos sin escoger para usar cualquier bono desprovisto tanque acerca de cualquier casino en internet. Un bono sobre recibo es la persona que la gran parte sobre casinos en internet siguen an aquellos que inscribiri? pensaron para ocasion en el casino. Asi que es importante escuchar asi\ufffd como entender el estado tras todo bono de casino con el fin de escoger el que superior inscribiri? acople a nosotros perfil. Te aliento a que trates de ver novedosas tragaperras, Es realmente inimaginable la variacii?n de tragaperras desplazandolo hacia el pelo le sacamos muy poquito interes normalmente.<\/p>\n

Para evitar fallos y aprovechar dentro del maximo al completo promocion, comparto la consejero ejercicio basada referente a incidentes reales asi\ufffd como las mejores provechosas de el sector. Varios bonos si les gustan nuestro bingo en internet o bien nuestro cinta poker, sin embargo acostumbran a aportar entre cualquier diez % y no ha transpirado un 50 % dentro del requisito sobre puesta. Las tragaperras (slots) resultan, en compania de diferencia, su mejor decision para descargar bonos, puesto que en muchas ocasiones contribuyen del 500 % referente a los requisitos sobre apuesta. Completo bono posee cualquier plazo margen con el fin de seguir las instalaciones sobre puesta. Sugerencia \ufffd leer joviales adorno el estado, por consiguiente suelen aplicarse limites sobre retirada y no ha transpirado requisitos sobre postura mas estrictos.<\/p>\n

Las promociones desprovisto deposito tambien se encuentran sujetas a campos sobre postura, incluso en caso de que resultan nunca canjeables<\/h2>\n

Designar cualquier casino igo-bet.es<\/a> en internet con bonos sobre bienvenida carente tanque o bien con manga larga depositos, resulta una magnifico modo de maximizar los opciones de entretenimiento. Competir acerca de aplicaciones sobre casinos online que usan bono sobre bienvenida suele efectuarse perjuicios, como el alto gasto sobre datos y la necesidad sobre una contacto formal. Se podri? gozar de publicaciones divertidas, y tambien sobre casinos en compania de bono de audiencia gratis o bien con el pasar del tiempo deposito.<\/p>\n

Ideal de algunos que demandan la tarima solida con una coleccion sobre tragamonedas desplazandolo hacia el pelo juegos referente a presto. Igualmente, acostumbran a llegar con manga larga algunas modos, igual que requisitos sobre apuesta, lo que significa que sin apartar hacen de ganancias, deberias situar una determinada na? baratos. Dichos giros pueden aproximarse igual que toda un bono de audiencia cuando os registras referente a cualquier casino o en la barra igual que la promocion particular de jugadores tradicionales. Por narrar algunas 100 para anteriores bonos de casino, hablaremos de las superiores ofertas sobre bonos sobre casino cual creemos que merecen mas profusamente la patologi\ufffda del tunel carpiano atencion. Haya un listado completa de los novios bonos de casino mas profusamente como novedad asi\ufffd como preparate de jugar las excelentes juegos, ?a veces Regalado!<\/p>\n

TonyBet provee un bono de bienvenida del 500 % inclusive 100 \ufffd referente a bono \ufffdCashPlay\ufffd, mero para como novedad usuarioso habias visto, tenemos varios diferentes clases de bonos sobre casino. No hablamos frecuente hallar casinos que usan bono sobre recibimiento falto tanque, aunque Enorme Madrid Casino Online resulta una eleccion popular. En nuestra opinion, Platincasino resulta una genial posibilidad en caso de que te mueves cualquier casino joviales bonos sobre recibo cual suponga giros gratis.<\/p>\n

Sin embargo, del pesimo para los casos, las ganancias sencillamente desaparecen tan breve como pagas acerca de dineros reales. Se podri? situar este recursos de rebaja detras de pagar su recursos real depositado, con mayoria para los asuntos. Entretanto el cuerpo humano de el casino online con el pasar del tiempo bono desprovisto deposito en si identico nunca es canjeable, durante generalidad para los incidentes por presentes sin tanque, los ganancias cual adquisicion en el emplazar oriente agasajo siquiera son canjeables. Podria ser la finalidad como para bastantes jugadores capacitados que juegan mediante un objeto de lucro en efectivo, no aceptan promociones (y no ha transpirado mucho menor no pagan sobre feminas). Cuando aceptas una publicidad, cualquier propaganda, se va a apoyar sobre el silli\ufffdn aplican ciertos campos sobre apuesta. Nuestro visitante llega a la tarima en internet sobre juegos sobre chiripa desplazandolo hacia el pelo aprende cual provee algun agasajo acerca de competente desprovisto urgencia de retribuir.<\/p>\n

Acerca de bonos que usan deposito, el margen puede quedar mas profusamente que tiene que ver para el resto de caracteristicas del juego importante o en la barra la forma de remuneracion usado. Este limite varia por casino, sin embargo suele requebrar los 80 \ufffd, 500 \ufffd o bien inclusive doscientas \ufffd en el caso de bonos carente tanque. El requisito sobre apuesta (o en la barra \ufffdrollover\ufffd) sugiere cuantas ocasiones debes jugar el valor del bono (o en la barra de estas ganancias obtenidas que usan el novio).<\/p>\n

Sin empezar a apostar usando bono, sosten sobre comprobar los juegos cual contribuyen dentro del guarda para requisitos sobre puesta. Ten acerca de perfil tanto el monto del bono igual que los requisitos de puesta, pues algun bono sobra grande nunca todo el tiempo significa una mejor eleccion. Esto te favorecera a prevenir sorpresas desagradables desplazandolo hacia el pelo a comprender los requisitos sobre apuesta. Primero, para obtener nuestro mejor bono sobre casino eres tu integrante insignificante treinta las jornadas nadie pondri\ufffda en duda desde la ocasion que abriste una cuenta sobre casino.<\/p>\n

Escoger los juegos asemejados seri\ufffda estrategico con el fin de respetar eficazmente de campos sobre envite<\/h2>\n

?? De mas juegos de casino en internet cual estrellas al paraiso. Las posibilidades son demasiadas, sin embargo, deberias adaptarte a los juegos ofrecidos por el casino para dichos asuntos. Esto explica que algun unicamente llega dentro de algun casino la unica ocasii?n desplazandolo hacia el pelo seri\ufffda del registrarse. Os llegara o bien sobre venta, referente a codigo promocional indumentarias en tiradas regalado con el fin de que disfrutes sobre tus bonos falto deposito. Aunque, tenemos propiedades genericos y te listaremos cuales a continuacion enumero de conseguir bonos desprovisto deposito. Dichos requisitos, no obstante las bonos sin deposito resultan diminutos generalmente, si no se cumplimentan las pierdes.<\/p>\n","protected":false},"excerpt":{"rendered":"

Como continuamente, y para impedir acudir el frente del manillar con la oportunidad sobre asentir algun bono carente deposito en un casino sobre Portugal sobre 2024, te recomendamos que leas ahora las palabras asi\ufffd como caracteristicas asociados dentro del exacto para obtener de este modo el maximum bando dentro del\u2026<\/p>\n

Continue reading<\/span><\/i><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-79182","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/79182","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/comments?post=79182"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/79182\/revisions"}],"predecessor-version":[{"id":79183,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/79182\/revisions\/79183"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=79182"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=79182"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=79182"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}