|
IoTivity-Lite
|
#include "oc_acl.h"
#include "oc_api.h"
#include "oc_cred.h"
#include "oc_pki.h"
#include "oc_uuid.h"
Macros | |
| #define | DISCOVERY_CB_PERIOD (60) |
| The amount of time the stack will wait for a response from a discovery request. More... | |
Typedefs | |
| typedef void(* | oc_obt_acl_cb_t) (oc_sec_acl_t *acl, void *data) |
| Callback containing the Access Control List (ACL) owned by a remote device. More... | |
| typedef void(* | oc_obt_creds_cb_t) (struct oc_sec_creds_t *creds, void *data) |
| Callback containing the credentials owned by a remote device. More... | |
| typedef void(* | oc_obt_device_status_cb_t) (oc_uuid_t *uuid, int status, void *data) |
| Callback invoked to report the status resulting from many of the onboarding tools actions on a device. More... | |
| typedef void(* | oc_obt_discovery_cb_t) (oc_uuid_t *uuid, oc_endpoint_t *eps, void *data) |
| Callback invoked in response to device discovery. More... | |
| typedef void(* | oc_obt_status_cb_t) (int status, void *data) |
| Callback invoked to report the status resulting from many of the onboarding tools actions. More... | |
Functions | |
| void | oc_obt_ace_add_permission (oc_sec_ace_t *ace, oc_ace_permissions_t permission) |
| Set the access permissions the ACE will grant. More... | |
| oc_ace_res_t * | oc_obt_ace_new_resource (oc_sec_ace_t *ace) |
Add an ACE resource (oc_ace_res_t ) to the ACE. More... | |
| void | oc_obt_ace_resource_set_href (oc_ace_res_t *resource, const char *href) |
| Set the href on the ACE resource. More... | |
| void | oc_obt_ace_resource_set_wc (oc_ace_res_t *resource, oc_ace_wildcard_t wc) |
| Set the wildcard type on the ACE resource. More... | |
| oc_role_t * | oc_obt_add_roleid (oc_role_t *roles, const char *role, const char *authority) |
| Build a linked list of roles to provision a role certificate. More... | |
| int | oc_obt_delete_ace_by_aceid (oc_uuid_t *uuid, int aceid, oc_obt_status_cb_t cb, void *data) |
| Remove an Access Control Entry (ACE) from a remote device's Access Control List (ACL) More... | |
| int | oc_obt_delete_cred_by_credid (oc_uuid_t *uuid, int credid, oc_obt_status_cb_t cb, void *data) |
| Delete a credential identified by its credid off a remote device. More... | |
| int | oc_obt_delete_own_cred_by_credid (int credid) |
| Delete a one of the onboarding tools credentials by credid. More... | |
| int | oc_obt_device_hard_reset (oc_uuid_t *uuid, oc_obt_device_status_cb_t cb, void *data) |
| RESET the remote device back to the ready for ownership transfer method (RFOTM) state. More... | |
| int | oc_obt_discover_all_resources (oc_uuid_t *uuid, oc_discovery_all_handler_t handler, void *data) |
| Discover all resources on the device identified by its uuid. More... | |
| int | oc_obt_discover_owned_devices (oc_obt_discovery_cb_t cb, void *data) |
| Discover all devices owned by the onboarding tool. More... | |
| int | oc_obt_discover_owned_devices_realm_local_ipv6 (oc_obt_discovery_cb_t cb, void *data) |
| Discover all devices owned by the onboarding tool using the realm-local address scope. More... | |
| int | oc_obt_discover_owned_devices_site_local_ipv6 (oc_obt_discovery_cb_t cb, void *data) |
| Discover all devices owned by the onboarding tool using the site-local address scope. More... | |
| int | oc_obt_discover_unowned_devices (oc_obt_discovery_cb_t cb, void *data) |
| Discover all unowned devices. More... | |
| int | oc_obt_discover_unowned_devices_realm_local_ipv6 (oc_obt_discovery_cb_t cb, void *data) |
| Discover all unowned devices using the realm-local address scope. More... | |
| int | oc_obt_discover_unowned_devices_site_local_ipv6 (oc_obt_discovery_cb_t cb, void *data) |
| Discover all unowned devices using the site-local address scope. More... | |
| void | oc_obt_free_ace (oc_sec_ace_t *ace) |
| Free the memory associated with the ACE object. More... | |
| void | oc_obt_free_acl (oc_sec_acl_t *acl) |
| Free an Access Control List (ACL) More... | |
| void | oc_obt_free_creds (oc_sec_creds_t *creds) |
| Free a list of credentials. More... | |
| void | oc_obt_free_roleid (oc_role_t *roles) |
| Free the oc_role_t list. More... | |
| int | oc_obt_init (void) |
| Initialize the IoTivity stack so it can be used as an onboarding tool (OBT) More... | |
| oc_sec_ace_t * | oc_obt_new_ace_for_connection (oc_ace_connection_type_t conn) |
| Create a new Access Control Entry (ACE) with connection type as the subject. More... | |
| oc_sec_ace_t * | oc_obt_new_ace_for_role (const char *role, const char *authority) |
| Create a new Access Control Entry (ACE) with a role as the subject. More... | |
| oc_sec_ace_t * | oc_obt_new_ace_for_subject (oc_uuid_t *uuid) |
| Create a new Access Control Entry (ACE) with device UUID as subject. More... | |
| int | oc_obt_perform_cert_otm (oc_uuid_t *uuid, oc_obt_device_status_cb_t cb, void *data) |
| Perform ownership transfer method (OTM) using Manufacturer Certificate. More... | |
| int | oc_obt_perform_just_works_otm (oc_uuid_t *uuid, oc_obt_device_status_cb_t cb, void *data) |
| Perform ownership transfer method (OTM) on the device using Just-Works. More... | |
| int | oc_obt_perform_random_pin_otm (oc_uuid_t *uuid, const unsigned char *pin, size_t pin_len, oc_obt_device_status_cb_t cb, void *data) |
| Perform ownership transfer method (OTM) using Random PIN based OTM. More... | |
| int | oc_obt_post_d2dserverlist (oc_uuid_t *uuid, char *device_uuid, const char *url, oc_response_handler_t cb, void *user_data) |
| int | oc_obt_provision_ace (oc_uuid_t *subject, oc_sec_ace_t *ace, oc_obt_device_status_cb_t cb, void *data) |
| Provision an ACE to a device. More... | |
| int | oc_obt_provision_auth_wildcard_ace (oc_uuid_t *subject, oc_obt_device_status_cb_t cb, void *data) |
| Provision auth-crypt ACE for the wildcard "*" resource with RW permissions. More... | |
| int | oc_obt_provision_identity_certificate (oc_uuid_t *uuid, oc_obt_status_cb_t cb, void *data) |
| Provision identity certificates. More... | |
| int | oc_obt_provision_pairwise_credentials (oc_uuid_t *uuid1, oc_uuid_t *uuid2, oc_obt_status_cb_t cb, void *data) |
| Provision pairwise 128-bit pre-shared key (PSK) credentials to a Client and Server so they may establish a secure (D)TLS session. More... | |
| int | oc_obt_provision_role_certificate (oc_role_t *roles, oc_uuid_t *uuid, oc_obt_status_cb_t cb, void *data) |
| Provision a role certificate to a Client application. More... | |
| int | oc_obt_provision_role_wildcard_ace (oc_uuid_t *subject, const char *role, const char *authority, oc_obt_device_status_cb_t cb, void *data) |
| Provision a role ACE for the wildcard "*" resource with RW permissions. More... | |
| int | oc_obt_provision_trust_anchor (char *certificate, size_t certificate_size, char *subject, oc_uuid_t *uuid, oc_obt_status_cb_t cb, void *data) |
| Provision a trust anchor for an cloud enabled server. More... | |
| int | oc_obt_request_random_pin (oc_uuid_t *uuid, oc_obt_device_status_cb_t cb, void *data) |
| Ask device being onboarded to produce a random PIN for PIN ownership transfer method (OTM). More... | |
| int | oc_obt_retrieve_acl (oc_uuid_t *uuid, oc_obt_acl_cb_t cb, void *data) |
| Retrieve an Access Control List (ACL) from a remote device. More... | |
| int | oc_obt_retrieve_cloud_conf_device (oc_uuid_t *uuid, const char *url, oc_response_handler_t cb, void *user_data) |
| sets the data (POST) for the oic.r.coapcloudconf resource More... | |
| int | oc_obt_retrieve_creds (oc_uuid_t *subject, oc_obt_creds_cb_t cb, void *data) |
| Retrieve a list of credentials from a remote device owned by the onboarding tool. More... | |
| int | oc_obt_retrieve_d2dserverlist (oc_uuid_t *uuid, oc_response_handler_t cb, void *data) |
| oc_sec_creds_t * | oc_obt_retrieve_own_creds (void) |
| Retrieve a list of the onboarding tools own credentials. More... | |
| void | oc_obt_set_sd_info (char *name, bool priv) |
| sets the secure domain info More... | |
| void | oc_obt_shutdown (void) |
| Free all resources associated with the onboarding tool. More... | |
| int | oc_obt_update_cloud_conf_device (oc_uuid_t *uuid, const char *url, const char *at, const char *apn, const char *cis, const char *sid, oc_response_handler_t cb, void *user_data) |
| sets the data (POST) for the oic.r.coapcloudconf resource More... | |
Collection of functions to onboard and provision clients and servers.
This collection of functions is intended to be used by an onboarding tool (OBT)
| #define DISCOVERY_CB_PERIOD (60) |
The amount of time the stack will wait for a response from a discovery request.
| typedef void(* oc_obt_acl_cb_t) (oc_sec_acl_t *acl, void *data) |
Callback containing the Access Control List (ACL) owned by a remote device.
This callback is invoked in response to the oc_obt_retrieve_acl() function. If there was a failure obtaining the ACL, the acl
parameter will be NULL.
| [in] | acl | A struct containing ACL installed on a remote device |
| [in] | data | context pointer |
| typedef void(* oc_obt_creds_cb_t) (struct oc_sec_creds_t *creds, void *data) |
Callback containing the credentials owned by a remote device.
This callback is invoked in response to the oc_obt_retrieve_creds() function. If there was a failure obtaining the credentials the creds
parameter will be NULL.
| [in] | creds | A struct containing a linked list of oc_sec_cred_t credentials owned by a remote device |
| [in] | data | context pointer |
| typedef void(* oc_obt_device_status_cb_t) (oc_uuid_t *uuid, int status, void *data) |
Callback invoked to report the status resulting from many of the onboarding tools actions on a device.
| [in] | uuid | of the device status is being reported on |
| [in] | status | number indicating success or failure of action that invoked this callback. Typically status >= 0 indicates success |
| [in] | data | context pointer |
| typedef void(* oc_obt_discovery_cb_t) (oc_uuid_t *uuid, oc_endpoint_t *eps, void *data) |
Callback invoked in response to device discovery.
Example:
| [in] | uuid | the uuid of the discovered device |
| [in] | eps | list of endpoints that can be used to connect with the discovered device |
| [in] | data | context pointer |
| typedef void(* oc_obt_status_cb_t) (int status, void *data) |
Callback invoked to report the status resulting from many of the onboarding tools actions.
| [in] | status | number indicating success or failure of action that invoked this callback. Typically status >= 0 indicates success |
| [in] | data | context pointer |
| void oc_obt_ace_add_permission | ( | oc_sec_ace_t * | ace, |
| oc_ace_permissions_t | permission | ||
| ) |
Set the access permissions the ACE will grant.
The function oc_obt_ace_add_permission can be called multiple times to add additional permissions.
calling:
will set the same permissions as calling:
The possible values for the oc_ace_permissions_t bitmask are:
| [in,out] | ace | the ACE the permissions are being added to |
| [in] | permission | the permissions granted to the ace |
| oc_ace_res_t* oc_obt_ace_new_resource | ( | oc_sec_ace_t * | ace | ) |
Add an ACE resource (oc_ace_res_t
) to the ACE.
| [in,out] | ace | the ACE that the ACE resource will be added to |
| void oc_obt_ace_resource_set_href | ( | oc_ace_res_t * | resource, |
| const char * | href | ||
| ) |
Set the href on the ACE resource.
| [in,out] | resource | the ACE resource that the href URL will be added to |
| [in] | href | the URL being added to the ACE resource |
| void oc_obt_ace_resource_set_wc | ( | oc_ace_res_t * | resource, |
| oc_ace_wildcard_t | wc | ||
| ) |
Set the wildcard type on the ACE resource.
Provisioning of Device Configuration Resources (DCRs) are not affected by the wildcard ACE. Only Non-Configuration Resources (NCRs) are affected by the wildcard resource.
The following resources are DCRs
The possible values for oc_ace_wildcard_t are:
| [in,out] | resource | the ACE resource to set the wildcard value on |
| [in] | wc | the wildcard value |
| oc_role_t* oc_obt_add_roleid | ( | oc_role_t * | roles, |
| const char * | role, | ||
| const char * | authority | ||
| ) |
Build a linked list of roles to provision a role certificate.
This function will add a single role (role name and authroity) to a list of rules. If the provided list of roles is empty, it will create a new list with the added role.
Example:
| [in] | roles | head of the oc_role_t linked list. NULL if the list has not yet been created |
| [in] | role | the role for the role id |
| [in] | authority | the role authority for the role id. The role authority is optional if no authority is provided pass in NULL |
| int oc_obt_delete_ace_by_aceid | ( | oc_uuid_t * | uuid, |
| int | aceid, | ||
| oc_obt_status_cb_t | cb, | ||
| void * | data | ||
| ) |
Remove an Access Control Entry (ACE) from a remote device's Access Control List (ACL)
| [in] | uuid | the uuid of the remote device |
| [in] | aceid | the id of the Access Control Entry |
| [in] | cb | callback invoked to indicate the success or failure of the ACE delete request |
| [in] | data | context pointer that is passed to the oc_obt_status_cb_t. The pointer must remain valid till the end of the oc_obt_status_cb_t function |
0
on success-1
on failure | int oc_obt_delete_cred_by_credid | ( | oc_uuid_t * | uuid, |
| int | credid, | ||
| oc_obt_status_cb_t | cb, | ||
| void * | data | ||
| ) |
Delete a credential identified by its credid off a remote device.
| [in] | uuid | the uuid of the device the credential is being deleted from |
| [in] | credid | the credid of the credential being deleted |
| [in] | cb | callback invoked to indicate the success or failure of the oc_obt_delete_cred_by_credid call |
| [in] | data | context pointer that is passed to the oc_obt_status_cb_t. The pointer must remain valid till the end of the oc_obt_status_cb_t function |
0
on success-1
on failure | int oc_obt_delete_own_cred_by_credid | ( | int | credid | ) |
Delete a one of the onboarding tools credentials by credid.
| [in] | credid | number identifying the credential to delete |
0
on success-1
on failure | int oc_obt_device_hard_reset | ( | oc_uuid_t * | uuid, |
| oc_obt_device_status_cb_t | cb, | ||
| void * | data | ||
| ) |
RESET the remote device back to the ready for ownership transfer method (RFOTM) state.
Example:
| [in] | uuid | the device being reset |
| [in] | cb | callback invoked to indicate the success or failure of the hard reset action |
| [in] | data | context pointer that is passed to the oc_obt_device_status_cb_t. The pointer must remain valid till the end of the oc_obt_device_status_cb_t function |
0
on success-1
on failure | int oc_obt_discover_all_resources | ( | oc_uuid_t * | uuid, |
| oc_discovery_all_handler_t | handler, | ||
| void * | data | ||
| ) |
Discover all resources on the device identified by its uuid.
| [in] | uuid | the uuid of the device the resources are being discovered on |
| [in] | handler | the oc_discovery_all_handler_t invoked in responce to this discovery request |
| [in] | data | context pointer that is passed to the oc_discovery_all_handler_t callback function. The pointer must remain valid till the more parameter of the oc_discovery_all_handler_t invoked in response to this discover request is false. |
0
on success-1
on failure | int oc_obt_discover_owned_devices | ( | oc_obt_discovery_cb_t | cb, |
| void * | data | ||
| ) |
Discover all devices owned by the onboarding tool.
The discovery request will make a muli-cast request to the IPv6 link-local multicast address scope and over IPv4.
Multicast discovery over IPv4 will only happen if the stack is built with the OC_IPV4 build flag.
Read RFC4291 and RFC7346 for more information about IPv6 Reference Scopes.
| [in] | cb | the oc_obt_discovery_cb_t that will be called for each discovered device |
| [in] | data | context pointer that is passed to the oc_obt_discovery_cb_t the pointer must be a valid pointer till after oc_main_init() call completes. The context pointer must be valid for DISCOVERY_CB_PERIOD seconds after oc_obt_discover_unowned_devices returns. |
0
on success-1
on failure | int oc_obt_discover_owned_devices_realm_local_ipv6 | ( | oc_obt_discovery_cb_t | cb, |
| void * | data | ||
| ) |
Discover all devices owned by the onboarding tool using the realm-local address scope.
The discovery request will make a muli-cast request to the IPv6 realm-local multicast address scope. The address scope is the domain in which the multicast discovery packet should be propagated.
Read RFC4291 and RFC7346 for more information about IPv6 Reference Scopes.
| [in] | cb | the oc_obt_discovery_cb_t that will be called for each discovered device |
| [in] | data | context pointer that is passed to the oc_obt_discovery_cb_t the pointer must be a valid pointer till after oc_main_init() call completes. The context pointer must be valid for DISCOVERY_CB_PERIOD seconds after oc_obt_discover_unowned_devices returns. |
0
on success-1
on failure | int oc_obt_discover_owned_devices_site_local_ipv6 | ( | oc_obt_discovery_cb_t | cb, |
| void * | data | ||
| ) |
Discover all devices owned by the onboarding tool using the site-local address scope.
The discovery request will make a muli-cast request to the IPv6 site-local multicast address scope. The address scope is the domain in which the multicast discovery packet should be propagated.
Read RFC4291 and RFC7346 for more information about IPv6 Reference Scopes.
| [in] | cb | the oc_obt_discovery_cb_t that will be called for each discovered device |
| [in] | data | context pointer that is passed to the oc_obt_discovery_cb_t the pointer must be a valid pointer till after oc_main_init() call completes. The context pointer must be valid for DISCOVERY_CB_PERIOD seconds after oc_obt_discover_unowned_devices returns. |
0
on success-1
on failure | int oc_obt_discover_unowned_devices | ( | oc_obt_discovery_cb_t | cb, |
| void * | data | ||
| ) |
Discover all unowned devices.
The discovery request will make a muli-cast request to the IPv6 link-local multicast address scope and over IPv4.
Multicast discovery over IPv4 will only happen if the stack is built with the OC_IPV4 build flag.
Read RFC4291 and RFC7346 for more information about IPv6 Reference Scopes.
| [in] | cb | the oc_obt_discovery_cb_t that will be called for each discovered device |
| [in] | data | context pointer that is passed to the oc_obt_discovery_cb_t the pointer must be a valid pointer till after oc_main_init() call completes. The context pointer must be valid for DISCOVERY_CB_PERIOD seconds after the oc_obt_discover_unowned_devices function returns. |
0
on success-1
on failure | int oc_obt_discover_unowned_devices_realm_local_ipv6 | ( | oc_obt_discovery_cb_t | cb, |
| void * | data | ||
| ) |
Discover all unowned devices using the realm-local address scope.
The discovery request will make a muli-cast request to the IPv6 realm-local multicast address scope. The address scope is the domain in which the multicast discovery packet should be propagated.
Read RFC4291 and RFC7346 for more information about IPv6 Reference Scopes.
| [in] | cb | the oc_obt_discovery_cb_t that will be called for each discovered device |
| [in] | data | context pointer that is passed to the oc_obt_discovery_cb_t the pointer must be a valid pointer till after oc_main_init() call completes. The context pointer must be valid for DISCOVERY_CB_PERIOD seconds after oc_obt_discover_unowned_devices returns. |
0
on success-1
on failure | int oc_obt_discover_unowned_devices_site_local_ipv6 | ( | oc_obt_discovery_cb_t | cb, |
| void * | data | ||
| ) |
Discover all unowned devices using the site-local address scope.
The discovery request will make a muli-cast request to the IPv6 site-local multicast address scope. The address scope is the domain in which the multicast discovery packet should be propagated.
Read RFC4291 and RFC7346 for more information about IPv6 Reference Scopes.
| [in] | cb | the oc_obt_discovery_cb_t that will be called for each discovered device |
| [in] | data | context pointer that is passed to the oc_obt_discovery_cb_t the pointer must be a valid pointer till after oc_main_init() call completes. The context pointer must be valid for DISCOVERY_CB_PERIOD seconds after oc_obt_discover_unowned_devices returns. |
0
on success-1
on failure | void oc_obt_free_ace | ( | oc_sec_ace_t * | ace | ) |
Free the memory associated with the ACE object.
| ace | the ACE that will be freed |
| void oc_obt_free_acl | ( | oc_sec_acl_t * | acl | ) |
Free an Access Control List (ACL)
This will free all Access Control Entries (ACE) in the ACL as well as the ACL itself
| acl | pointer to the head of an ACL |
| void oc_obt_free_creds | ( | oc_sec_creds_t * | creds | ) |
Free a list of credentials.
| creds | the list of credentials to free |
| void oc_obt_free_roleid | ( | oc_role_t * | roles | ) |
Free the oc_role_t list.
| roles | the head of the oc_role_t list |
| int oc_obt_init | ( | void | ) |
Initialize the IoTivity stack so it can be used as an onboarding tool (OBT)
Call once at startup for OBT initialization
Persistent storage must be initialized before calling oc_obt_init()
example:
0
on success-1
on failure | oc_sec_ace_t* oc_obt_new_ace_for_connection | ( | oc_ace_connection_type_t | conn | ) |
Create a new Access Control Entry (ACE) with connection type as the subject.
| [in] | conn | the connection type for the ACE |
| oc_sec_ace_t* oc_obt_new_ace_for_role | ( | const char * | role, |
| const char * | authority | ||
| ) |
Create a new Access Control Entry (ACE) with a role as the subject.
| [in] | role | the role associated with the ACE |
| [in] | authority | the role authority for the ACE. The role authority is optional if no authority is provided pass in NULL |
| oc_sec_ace_t* oc_obt_new_ace_for_subject | ( | oc_uuid_t * | uuid | ) |
Create a new Access Control Entry (ACE) with device UUID as subject.
| [in] | uuid | the uuid of the device |
| int oc_obt_perform_cert_otm | ( | oc_uuid_t * | uuid, |
| oc_obt_device_status_cb_t | cb, | ||
| void * | data | ||
| ) |
Perform ownership transfer method (OTM) using Manufacturer Certificate.
The manufacturer certificate-based OTM uses a certificate embedded into the device by the manufacturer to perform the OTM.
| [in] | uuid | the device to certificate based OTM is being done on |
| [in] | cb | callback invoked to indicate the success or failure of the Manufacturer Certificate Based OTM |
| [in] | data | context pointer that is passed to the oc_obt_device_status_cb_t. The pointer must remain valid till the end of the oc_obt_device_status_cb_t function |
0
on success-1
on failure | int oc_obt_perform_just_works_otm | ( | oc_uuid_t * | uuid, |
| oc_obt_device_status_cb_t | cb, | ||
| void * | data | ||
| ) |
Perform ownership transfer method (OTM) on the device using Just-Works.
Just-Works OTM creates a symmetric key credential that is a pre-shared key used to establish a secure connection.
OTM using this method is subject to a man-in-the-middle attacker. This method assumes onboarding happens in a relatively safe environment absent of an attack device.
Example:
| [in] | uuid | the uuid of the device the OTM is being run on. The uuid is typically obtained in response to an oc_obt_discover_unowned_devices* call. |
| [in] | cb | callback invoked to indicate the success or failure of the OTM |
| [in] | data | context pointer that is passed to the oc_obt_device_status_cb_t. The pointer must remain valid till the end of the oc_obt_device_status_cb_t function. |
0
on success-1
on failure | int oc_obt_perform_random_pin_otm | ( | oc_uuid_t * | uuid, |
| const unsigned char * | pin, | ||
| size_t | pin_len, | ||
| oc_obt_device_status_cb_t | cb, | ||
| void * | data | ||
| ) |
Perform ownership transfer method (OTM) using Random PIN based OTM.
Since the Random PIN establishes physical proximity between the new device and the onboarding tool (OBT) it helps prevent man-in-the-middle attacks.
Example:
| [in] | uuid | the device the Random PIN based OTM is being done on |
| [in] | pin | the PIN obtained from the remote device in response to the oc_obt_request_random_pin |
| [in] | pin_len | the length of the PIN |
| [in] | cb | callback invoked to indicate the success or failure of the Random PIN OTM operation |
| [in] | data | context pointer that is passed to the oc_obt_device_status_cb_t. The pointer must remain valid till the end of the oc_obt_device_status_cb_t function |
0
on success-1
on failure| int oc_obt_provision_ace | ( | oc_uuid_t * | subject, |
| oc_sec_ace_t * | ace, | ||
| oc_obt_device_status_cb_t | cb, | ||
| void * | data | ||
| ) |
Provision an ACE to a device.
Example:
| [in] | subject | the uuid of the device being provisioned |
| [in] | ace | the ACE being added to the subject |
| [in] | cb | callback invoked to indicate the success or failure of the provisioning |
| [in] | data | context pointer that is passed to the oc_obt_status_cb_t. The pointer must remain valid till the end of the oc_obt_status_cb_t function |
0
on success-1
on failure | int oc_obt_provision_auth_wildcard_ace | ( | oc_uuid_t * | subject, |
| oc_obt_device_status_cb_t | cb, | ||
| void * | data | ||
| ) |
Provision auth-crypt ACE for the wildcard "*" resource with RW permissions.
This is a helper function to quickly provision an ACE for wildcard access over secure connections.
| [in] | subject | the uuid or the device being provisioned |
| [in] | cb | callback invoked to indicate the success or failure of the provisioning |
| [in] | data | context pointer that is passed to the oc_obt_status_cb_t. The pointer must remain valid till the end of the oc_obt_status_cb_t function |
0
on success-1
on failure| int oc_obt_provision_identity_certificate | ( | oc_uuid_t * | uuid, |
| oc_obt_status_cb_t | cb, | ||
| void * | data | ||
| ) |
Provision identity certificates.
To provision identity certificates the IoTivity stack must be built with OC_PKI defined.
Example:
| [in] | uuid | the uuid of the device to provision |
| [in] | cb | callback invoked to indicate the success or failure of the provisioning |
| [in] | data | context pointer that is passed to the oc_obt_status_cb_t. The pointer must remain valid till the end of the oc_obt_status_cb_t function |
0
on success-1
on failure | int oc_obt_provision_pairwise_credentials | ( | oc_uuid_t * | uuid1, |
| oc_uuid_t * | uuid2, | ||
| oc_obt_status_cb_t | cb, | ||
| void * | data | ||
| ) |
Provision pairwise 128-bit pre-shared key (PSK) credentials to a Client and Server so they may establish a secure (D)TLS session.
Example:
| [in] | uuid1 | uuid of the first device to pair |
| [in] | uuid2 | uuid of the second device to pair |
| [in] | cb | callback invoked to indicate the success or failure of the pairwise credentials provisioning |
| [in] | data | context pointer that is passed to the oc_obt_status_cb_t. The pointer must remain valid till the end of the oc_obt_status_cb_t function |
0
on success-1
on failure | int oc_obt_provision_role_certificate | ( | oc_role_t * | roles, |
| oc_uuid_t * | uuid, | ||
| oc_obt_status_cb_t | cb, | ||
| void * | data | ||
| ) |
Provision a role certificate to a Client application.
Example:
| roles | the role(s) to provision |
| uuid | the uuid of the device to provision |
| cb | callback invoked to indicate the success or failure of the provisioning |
| data | context pointer that is passed to the oc_obt_status_cb_t. The pointer must remain valid till the end of the oc_obt_status_cb_t function |
0
on success-1
on failure| int oc_obt_provision_role_wildcard_ace | ( | oc_uuid_t * | subject, |
| const char * | role, | ||
| const char * | authority, | ||
| oc_obt_device_status_cb_t | cb, | ||
| void * | data | ||
| ) |
Provision a role ACE for the wildcard "*" resource with RW permissions.
This is a helper function to quickly provision a role ACE for wildcard access.
| [in] | subject | the uuid or the device being provisioned |
| [in] | role | the role for the ACE |
| [in] | authority | the role authority for the ACE. The role authority is optional if no authority is provided pass in NULL |
| [in] | cb | callback invoked to indicate the success or failure of the provisioning |
| [in] | data | context pointer that is passed to the oc_obt_status_cb_t. The pointer must remain valid till the end of the oc_obt_status_cb_t function |
0
on success-1
on failure| int oc_obt_provision_trust_anchor | ( | char * | certificate, |
| size_t | certificate_size, | ||
| char * | subject, | ||
| oc_uuid_t * | uuid, | ||
| oc_obt_status_cb_t | cb, | ||
| void * | data | ||
| ) |
Provision a trust anchor for an cloud enabled server.
| certificate | the certificate data |
| certificate_size | the certificate data size |
| subject | id (the uuid of the cloud) |
| uuid | the uuid of the device to provision |
| cb | callback invoked to indicate the success or failure of the provisioning |
| data | context pointer that is passed to the oc_obt_status_cb_t. The pointer must remain valid till the end of the oc_obt_status_cb_t function |
0
on success-1
on failure| int oc_obt_request_random_pin | ( | oc_uuid_t * | uuid, |
| oc_obt_device_status_cb_t | cb, | ||
| void * | data | ||
| ) |
Ask device being onboarded to produce a random PIN for PIN ownership transfer method (OTM).
This will cause the oc_random_pin_cb_t to be invoked on the remote device. The remote device is expected to generate and communicate a random PIN using an Out-of-Band communication channel. For example display the pin on a screen that the user can read. The Out-of-band communication is an implementation detail that is left up to the developer.
The Random PIN establishes physical proximity between the new device and the onboarding tool (OBT).
| [in] | uuid | the uuid of the device the oc_random_pin_cb_t is being run on. The uuid is typically obtained in response to an oc_obt_discover_unowned_devices* call |
| [in] | cb | callback invoked to indicate the success or failure of the random PIN request |
| [in] | data | context pointer that is passed to the oc_obt_device_status_cb_t. The pointer must remain valid till the end of the oc_obt_device_status_cb_t function |
0
on success-1
on failure| int oc_obt_retrieve_acl | ( | oc_uuid_t * | uuid, |
| oc_obt_acl_cb_t | cb, | ||
| void * | data | ||
| ) |
Retrieve an Access Control List (ACL) from a remote device.
| [in] | uuid | the uuid of the remote device |
| [in] | cb | callback that will deliver the requested ACL |
| [in] | data | context pointer that is passed to the oc_obt_acl_cb_t. The pointer must remain valid till after the oc_obt_acl_cb_t has completed. |
0
on success-1
on failure | int oc_obt_retrieve_cloud_conf_device | ( | oc_uuid_t * | uuid, |
| const char * | url, | ||
| oc_response_handler_t | cb, | ||
| void * | user_data | ||
| ) |
sets the data (POST) for the oic.r.coapcloudconf resource
| [in] | uuid | the uuid of the remote device |
| [in] | url | of the resource |
| [in] | cb | callback invoked to indicate the success or failure of the request |
| [in] | user_data | context pointer that is passed to the oc_obt_status_cb_t. The pointer must remain valid till the end of the oc_obt_status_cb_t function |
0
on success-1
on failure | int oc_obt_retrieve_creds | ( | oc_uuid_t * | subject, |
| oc_obt_creds_cb_t | cb, | ||
| void * | data | ||
| ) |
Retrieve a list of credentials from a remote device owned by the onboarding tool.
| [in] | subject | uuid of the device the credentials will be fetched from |
| [in] | cb | callback that will contain the list of credentials from the remote device |
| [in] | data | context pointer that is passed to the oc_obt_creds_cb_t. The pointer must remain valid till after the oc_obt_creds_cb_t has completed. |
0
on success-1
on failure | oc_sec_creds_t* oc_obt_retrieve_own_creds | ( | void | ) |
Retrieve a list of the onboarding tools own credentials.
The credentials returned by oc_obt_retrieve_own_creds() point to an internal data structures that store the security context of the OBT. DO NOT free them. Use oc_obt_delete_own_cred_by_credid() to remove credentials from the OBT.
| void oc_obt_set_sd_info | ( | char * | name, |
| bool | priv | ||
| ) |
sets the secure domain info
| [in] | name | the name of the secure domain |
| [in] | priv | privacy indicator |
| void oc_obt_shutdown | ( | void | ) |
Free all resources associated with the onboarding tool.
Called when the OBT terminates.
| int oc_obt_update_cloud_conf_device | ( | oc_uuid_t * | uuid, |
| const char * | url, | ||
| const char * | at, | ||
| const char * | apn, | ||
| const char * | cis, | ||
| const char * | sid, | ||
| oc_response_handler_t | cb, | ||
| void * | user_data | ||
| ) |
sets the data (POST) for the oic.r.coapcloudconf resource
| [in] | uuid | the uuid of the remote device |
| [in] | url | of the resource |
| [in] | at | Access Token |
| [in] | apn | Auth Provider Name |
| [in] | cis | OCF Cloud interface URL |
| [in] | sid | OCF Cloud UUID |
| [in] | cb | callback invoked to indicate the success or failure of the request |
| [in] | user_data | context pointer that is passed to the oc_obt_status_cb_t. The pointer must remain valid till the end of the oc_obt_status_cb_t function |
0
on success-1
on failure


In this example we're doing the same thing as in "three.hbs" but we're using the "include" helper to pull in content from an external file rather than writing it inline.
Partial README.md not found.


--- layout: archive title: Zulip Chat Archive permalink: /stream/113489-new-members/topic/vscode.20very.20slow.html ---
I have roughly 20 lines of lean code and my vscode gets stuck on checking it. Are there some tricks to speed it up or some tactics I need to avoid to be able to use the interactive mode?
Have you precompiled the library?
Otherwise it will be checking lots of stuff in the background as soon as you do anything
Useful info to provide in this chat: how did you install Lean? Did you install mathlib? If so, how?
The recommended way is here. If you already followed that, then probably we need to see your code to be able to say anything useful.
Lambert are you at Imperial? These things are often not hard to debug if I can actually get my hands on the machine you're using. It shouldn't be slow with 20 lines of code.
I am, but I am in class. Thanks for offering! I will check if I precombiled mathlib later.
I recreated the project, following all the steps on the tutorial and that seems to have helped.
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


1 Name
mq_copy - Command line interface to Linux, POSIX, message queues.
2 Description
Provides a command line interface, usable by scripting languages, to the Linux system of POSIX message queues.
The Linux system provides the POSIX message queues as a modified file descriptor. The default location is under the directory:
/dev/mqueue .
POSIX message queues have kernel persistence. If not removed by
unlink, the queue will exist until the system is shut down. The action:
“unlink on close” is a
mq_copy command line option.
POSIX message queues allow processes to exchange data in the form of messages.
mq_copy supports line oriented, string messages. That is, lines terminated by the new-line character.
mq_copy provides two basic functions:
copy_in and
copy_out.
- The copy-in function copies line oriented strings on stdin as messages to a specified queue.
- The copy-out function copies messages from the specified queue as line oriented strings to stdout.
3 Arguments
mq_copy [ ‑‑in | ‑‑out ] [ options ]
/queue_name
The minimum command arguments are the function, either ‑‑in (copy_in) or ‑‑out (copy_out) and the name of an existing queue. The GLIBC library requires that the queue name begin with the path separator character '/'.
3.1 Function
[ ‑‑ci | ‑‑in | ‑i ] copy stdin to queue
[ ‑‑co | ‑‑out | ‑o ] copy queue to stdout
3.2 Options
[ ‑‑create | ‑‑cr | ‑c ] Create queue if not already present on open
[ ‑‑exclusive | ‑‑ex | ‑x ] Create queue on open, queue must not exist.
Default Open existing queue
[ ‑‑ro | ‑r ] Open queue as read-only
[ ‑‑wo | ‑w ] Open queue as write-only
Default Open queue as read-write
[ ‑‑mode | ‑‑md | ‑m ] <perm> Set user and group permissions. Permissions must be either three or four octal digits (not symbols).
[ ‑‑attributes | ‑‑at | ‑a ] <at-list> One or more, comma separated, name=value pairs or feature.
Example, showing default values:
-a maxmsgs=10,msgsize=256,noblock
where:
maxmsgs: The maximum number of messages the queue will hold.
msgsize: The maximum byte length of any single message.
noblock: Disable the default blocking behavior (disabled).
[ ‑‑no-block | ‑‑nb | ‑n ] Open descriptor as non-blocking.
Default Blocking (Non-blocking operation is disabled.)
[ ‑‑time | ‑t ] <tenths second> Set maximum time to block in tenths of a second.
Copy-in will block if no space on queue for a new message.
Copy-out will block if no message on queue to be read.
Default No time limit for condition to clear.
[ ‑‑priority | ‑‑pri | ‑p ] <0 .. 31> Set the message priority during Copy-in.
Lower value is a higher priority. The mqueue delivers the oldest message of the highest priority first.
[ ‑‑unlink | ‑‑ul | ‑u ] Unlink (delete name) queue name prior to close. Like a file descriptor, the queue remains available to any queue descriptor that has it open at the time of the unlink.


Marvel's 2099 Event Foreshadows the Future God of Thunder's Arrival
by Tim AdamsWARNING: The following article contains spoilers for 2099 Alpha #1 by Nick Spencer, Viktor Bogdanovic, Marte Gracia and Joe Caramagna, on sale Wednesday, Nov. 20.
The next Marvel Comics crossover event series begins next week with the release of 2099 Alpha #1. Seeds for the story arc were set up by writer Nick Spencer in his Amazing Spider-Man run, when Spider-Man 2099 (Miguel O'Hara) crashed down from the sky in Amazing Spider-Man #25.
Unconscious and disoriented, Amazing Spider-Man #32-33 follows Spider-Man 2099 while he is in the clutches of the seedy Roxxon Corporation. Small flashbacks to the future show the Year 2099 in turmoil, which is what forces Miguel O'Hara to travel to the past in search of Peter Parker. The solicit for 2099 Alpha #1 teases a future in peril, as well as appearances by 2099 versions of familiar Marvel heroes and villains, along with some surprising returns.
Click the button below to start this article in quick view.
As an example, a preview of 2099 Alpha #1 foreshadows the arrival of the Marvel's future God of Thunder. The Asgardian hammer Mjolnir gets the spotlight as a mystery character picks it up to deliver a beatdown to the Public Eye police taskforce.
This Asgardian-clad gentleman gets a couple of good shots in, but he also falls victim to a red laser shot that takes out one of his fellow soldiers. We're led to believe this person is the new Thor of 2099, but the real God of Thunder wouldn't let a simple laser blast defeat him. Obviously, there is more that meets the eye with Mjolnir and the real identity of the future's Thor Odinson.
Marvel released an uncolored preview of 2099 Alpha #1 in October, which featured a young child attempting to lift up Mjolnir. It gets as far as showing the child grasp the hammer's handle, leaving us to wonder if the attempt is successful. If we consider both previews, it appears Mjolnir is a hot commodity in this dying future.
However, whoever is picking up the God of Thunder mantle in 2099 may not be as friendly as the Thor readers are used to. The final page of Wednesday's preview reveals a possibly deceased person strung up by their arms. That image alone can be considered creepy, but Mjolnir is also tied around the person's neck, almost as a warning to whoever comes across it.
The mystery of 2099's Thor will be one of the many secrets heading into 2099 Alpha #1. Characters such as Punisher, Conan the Barbarian, Ghost Rider, the Fantastic Four and Venom will be featured in one-shots expanding on the main story, with the Alpha and Omega issues acting as bookends to the event. Issues of Amazing Spider-Man written by Nick Spencer will also tie-in as well.
We have to wait and see if Cecil MacAdam of the 2099 Church of Thor makes a surprise appearance.
https://schema.orgBreadcrumbListListItem1Homehttps://www.cbr.com/ListItem2Comicshttps://www.cbr.com/category/comics/ListItem3Comic Newshttps://www.cbr.com/category/comics/news/ListItem4Marvel's 2099 Event Foreshadows the Future God of Thunder's Arrivalhttps://www.cbr.com/marvel-2099-future-god-of-thunder/


Szopen Xiao
全部
{% for category in site.categories %} {% if category[0] != "category" %}
{{ category | first }}
{% endif %} {% endfor %}
{% include themes/nav.html %}
{{page.title}}
{{ page.date | date: "%Y-%m-%d" }}
{{ content }}
Please enable JavaScript to view the
comments powered by Disqus.
comments powered by
Disqus


MyChessGrade allows you to calculate your chess grade after every game.
All you need to do is enter in your current grade and your recent game results.
Your grade is calculated from your grade, your opponents grade and the result of the game (win, loss or draw).
Once you've added these just click on the calculate button to see what your new grade is.
There are a number of different grading systems used by chess federations.
The most common grading system is ELO. This is the grading system used by FIDE, the international chess federation.
However, other chess federations, such as the US chess federation, use a different implementation of the ELO grading system.
We currently support the ELO FIDE grading system and the English Chess Federation Grading system.
Different implementations of ELO are used worldwide to compare the ability of players of many games (not just chess).
The English Chess Federation has a grading system that is not based on ELO.
We support that too.


Local Group Policy Editor
Location
- Press Start or Windows button
- Type gpedit.msc
Settings
-
Computer Configuration
-
Administrative Templates
-
System
-
Remote Assistance
- Solicited Remote Assistance - Disabled
- Offer Remote Assistance - Disabled
- Turn on session logging - Enabled
-
Windows Components
-
Autoplay Policies
- Turn off AutoPlay - Enabled:All Drives
- Turn off Autoplay for non-volume devices: Enabled
- Default behavior for AutoRun - Enabled:Do not execute any autorun commands


@main("Disclaimer", "Optionometer Data Disclaimer") {
All calculations are performed using delayed data and should be re-calculated using real time quotes prior to making any trade decision. Optionometer assumes no liability for losses incurred on trades placed based on information contained within this site, nor does Optionometer guarantee the accuracy of any quotes, data, calculations, or other information.
All data is provided "as is" and solely for informational purposes. No display of quotes, data, or calculations in this web site are to be construed as a recommendation to purchase or sell a security, or to provide investment advice. Options involve risk and are not suitable for all investors.


exploring_mars v0.1.0 ExploringMars.Mission.Instruction
This module defines functions that operate on the probe's instructions.
This module - and only this module - should change if new instructions are added, instructions are removed or if the meaning of instructions is changed.
Link to this section Summary
Types
A single instruction, one of :L, :R, :M, representing "Turn left",
"Turn right", and "Move forward", respectively. Use as Instruction.t
.
Functions
Takes a string
and tries to parse it as an instruction.
Takes a probe position and an instruction and returns the next position of the probe.
Link to this section Types
A single instruction, one of :L, :R, :M, representing "Turn left",
"Turn right", and "Move forward", respectively. Use as Instruction.t
.
Link to this section Functions
Takes a string
and tries to parse it as an instruction.
Examples
iex> Instruction.from_string("L")
:L
iex> Instruction.from_string("")
{:no_parse, ""}
run(position, instruction)
run(ExploringMars.Mission.Position.t(), t()) :: ExploringMars.Mission.Position.t() | :invalid_instruction
Takes a probe position and an instruction and returns the next position of the probe.
Examples
iex> Instruction.run({{0, 0}, :N}, :M)
{{0, 1}, :N}
iex> Instruction.run({{0, 0}, :N}, :L)
{{0, 0}, :W}
iex> Instruction.run({{0, 0}, :N}, :K)
:invalid_instruction


Grid sematic layout
Article grid 1
Article grid 2
This is the first set of article elements
2
3
4
This is the second set of article elements
2
3
4
5
6


Island and AJ's podcast for your Monday.
Most wonderful show is
Keeping up with the Joneses.
Mrs. Jones.
Yes, Mr. Jones.
And your messy bun.
Yes.

Mom life.
I wanna redeem at least one of them later, one hugs.
Yeah.
(laughing)
Well, the only other things to redeem are
coffee and mom life. Yeah. Episode 257. Yeah. We got a lot to
catch up on. We do. Because it feels like our life is picked up
to a pace that I remember being pre pandemic. Yes. Tell us
what's been happening last week. I went and did a women's retreat
with like my favorite ladies up in St. Louis. They're my St. Louis
family. Haven't you done that that women's retreat like 149
times in a row? No, no.  But I did like seven years in a row or something. And it was so great. What did
you do? To be back with them. We did the father heart. They wanted me to come and just,
you know, go back to what we did the very first time and talk about the father heart.
And it was, it was wonderful. You took a team of ladies with you? I did. Wonderful team.
a great profit set up a little storm and but I mean mostly it was just I love those ladies.
They're so they're so great. That's wonderful. Yeah. While you were away,
Abby and Tia were away on a youth retreat to your Coe River, is that right? Yeah.
Yeah. They went white water rafts. We're Tia dumped out of the raft and Shailie saved her.
Thank you Shailie for that. Appreciate it. We love you. Yeah. And so while you just
just spent all the girls in the house for a way.
- Yeah.
- So me and MJ were very excited.
We might mention this on the podcast before.
Wednesday night is "Bro Night" at the Jones household.
- Yes.
- Because you're often teaching away
- And MJ lives for "Bro Night".
- Yeah.
- And the girls have used their Wednesday night.
So when MJ figured out,
me and him were gonna be home all weekend,
he wanted a bro we can.
So I thought this was gonna be great.
I said, "Son, write down everything you want to do."
And he came up with an amazing list, a killer list.
But my favorite one was that he wanted to sit shirtless,
watch a movie and drink beer.
Which is funny 'cause neither was drink beer.
So I don't know where he got that idea from.
- Yeah.
- So he inquired when he's like,
can I actually drink beer?
I was like, probably not till you're 21.
So we could drink root beer.
He's like, oh yeah, that would work.
So I went and got a four pack of Virgil's root beer,
which he'd never had before.
And he liked it.
And then, true to his words, we took off her shirts
and watched a movie while drinking root beer.
But then it was so cold.
Yeah.
He got under a blanket.
And I was like, can I just put my shirt back on?
He's like, yeah.
We had so much fun.

We had a gaming marathon set up.
We had he had.
He went to Desanos.
Oh, yeah.
Well, he already knew all the food places he went to.
He had me clean out the garage and I paid him.
And he said, this was a valuable lesson, Daddy.
I learned that you can do manual labor for money.
I was like, yes, yes, you can.
Which he immediately spent on V-Bucks
because he's in the Fortnite at the moment.
And then Mr. Bill taught him how to shoot.
He went out and Mr. Bill had a BB gun
and taught MJ how to shoot.
Anyway, it was great weekend, boy.
- Do you know why you said BB gun?
You were like BB gun.
Like I thought you were gonna say like BB-8.
- How should I say?
- Like BB instead of BB.
You're like, I don't know.
(laughs)
- Was it my intonation?
I should have gone down.
BB.
- You have BB.
Rather than BB.
You had a BB gun.
That was last weekend.
- Yeah.
- And then this weekend, we've, you know,
it's often been said about me that I'm a man of the woods.
- Okay.
- Yes, it has.
- And I just lived in my natural habitat.
- Man of the derailleur video games of the woods.
- This week we as a family went spent a week
in one of our state parks.
- Yes.
- We rented an RV.
I should back up, it started out as camping.
- It did.
- Do you remember?
We would camp in the rustic spots.
- We did.
- Yeah.
we realized, oh, that's all I knew about.
We're camping in rustic spots, no electricity,
no running water, nothing.
- Right.
- Then we realized--
- Which does, it is lovely, but it's so much more work.
- So much more work.

- Well, then we realized there's spots
that you can just park at.
- Yes.

- Yeah.
- And there's electricity.
And that changed the game for us camping.
- Yeah, we're like, oh, we can do,
like one night even if we just have one night because you know drive up drive out
and then when we realized that we were those lots of people in RVs and we were
like huh whenever you get RVs from and you discovered outdoorsy.com yes just
basically like Airbnb where you rent other people's RVs and so the last couple
of times we've just gone to RVing yes which at that point you're not really
camping yeah you might not be I spend the whole day outside where did you spend
into the nighttime in an air-conditioned queen side bed.
Yes.
That is not a queen side bed, my friend.
Was it not?
Well, no, it's more like a full.
If that's a queen, I'll eat my left foot.

I'm partial.
My acquaintance with your knee in my back
or your elbow in my face all night long, that's no queen.
But our being is weird.
Like at one point, I thought, it's a weird concept
because you leave your house to go stay in a place
that's way less nice than your house.
- Yes.
- With none of the easy comforts that you have at home,
like say fast internet,
and you eat not as well as you do.
Like it's basically at one point I woke up.
- I beg your pardon, we had Philly,
Manuel, we were away.
We sous vide it.
We brought our sous vide and had really good steak.
- Which did you want?
Did you want to?
Like other people, they probably don't camp the way we camp.
The reason we need to bring two vehicles
is 'cause we bring things like our sous vide with us.
- At least at one point, we need comment to don't.
How's embracing the rustic nature of camping?
As I think at that point,
MJ and I had stayed indoors all day,
just played on the Nintendo Switch on a flat screen TV.
- Yeah.
- Where I was going to is at some point,
So you've got a family of five in a room, in a space.
I don't think there's a room in our house
that's as small as this space.
- No, it's true.
It's true. - That's why people are in.
- Yeah. - And at one point.
- And we would never sign up to be five days in that room.
- And after day two, I'm looking around going,
this feels like a college dormitory.
Like it's just everywhere. - There's stuff everywhere.
- Empty chip packets.
But anyway, on paper, that as a vacation doesn't sound
No. Did you want to talk about your iPhone controlled fire?
Oh, I think we've covered that before.
I think we've talked about that before.
Yeah.
Bluetooth control fires.
Amazing.
Yeah.
And we also brought our son on a side door speaker.
And yeah, my point is you wouldn't think on paper that camping would be
restful.
Yeah, but actually is highly rested.
Oh, I love it.
It's a lot of work, though, loading and unloading.
The loading and unloading.
Yes.
But then once you get there, there's not a house to clean or anything
that's yelling at you. It's just like nothing.
There's kids yelling all the time.
Well, yeah, but I mean, like that's different.
You've got no sense in headphones and you're getting more of it.
So, yeah, I loved it.
You stayed in a hammock for most of the time.
I spent a couple days in a hammock spent one whole morning.
I brought my chair right down by the water.
I saw that.
Yeah, I spent a lot of time outside.
I think what I love about that is all everybody
as soon as they get to the campsite know what they want to do.
So MG goes down and throws rocks in water.
You go to hammock.
I spent most of her time in a hammock, too.
Just to do this in hammock.
And then I'll sit by fire.
Yeah.
Yeah, it's nice.
Really nice.
Yeah.
Last night was cold, though.
We were like dedicated, like we were going to spend time
by this fire.
And I ended up wrapping up in a sleeping bag and it was.
Yeah.
Pardon?
But we went through so much wood last night.
Yes.
Anyway, just call me a light weight.
Light weight.
Yeah, like come on. That was a Scottish heat wave last night.
You're like, oh, it's so cool.
Cold. I'm like, it's like breeze of bears.
It was cold. You had to put the heat on.
It was like 40 degrees.
I don't know what that means.
OK, cool.
I got a new video game.
I don't know if you've noticed a new video game.
I had noticed. Yeah.
Yeah. Tell the people of what it makes you feel when I'm playing that video.
Stressed, so stressed.
So stressed.
Just even just the sound like you can tell when you're in sections
where there's this robot that's trying to kill you.
Yeah, my mind is different.
And I'm literally like, oh, like I will put on my my headphones
and just put in like block out sound just to not hear that.
It's a game called Metroid Dread, which I know nothing about.
I just there was another two games I really loved,
Ori and the Blind Forest and Ori and the Will of the Wisp,
which I loved.
And that is genre of game.
The Metroid series kind of pioneered it.
So I thought, well, if I like this, I'll like that.
It is unforgiving actually I think met right to prime means just die over and over again over again
I don't think I've ever died so many times in a video game and it is ruthless and it's only been out for a week and somebody's already
100% of it. I think in like two and a half hours. They completed it in one and a half hours
I still haven't finished it. I'm nowhere near close to 100%
Yeah, but that's a good thing. I don't even I like watch it and go there's no part of me with I want to play this game
it stresses me out. Yeah, well, we're back, relaxed, not stressed out.
Yeah, so we had a great time camping. Indeed, we did. We did.
When this episode comes out, yes, it comes out on a Monday, which means you only got about
three days to sign up for something called the Boundaries Academy.
So you've heard us talk about boundaries before the podcast episode 25 and 236 I think for memory
I'll put link in the show notes the proper ones but boundaries of this incredibly effective tool
At helping you manage your limitations like every human has limitations
That is impossible for you to meet everybody's needs
And so if you don't have boundaries the only way
to prevent yourself from being burned out is avoid people who are needy or
just say yes to the people that you're too scared of saying no to.
Both scary.
All scary options.
So actually understanding boundaries gives you back some of that power to manage
your limitations really well and to help you honor other people's limitations.
Yeah.
In a nutshell, boundaries help you say no and hear no without entering a paralyzing
fears.
So good.
I'm not even wearing a weird shirt and you're tuning out.
What are you?
It's it's that you're wearing the gray shirt that matches your gray hair.
And I just kind of want to jump you that's all.
It's a different course.
But anyway, the Boundaries Academy, it's built on the Boundaries course that we've done.
You you watch the videos during the week, you meet with me on Saturdays for about an hour for five weeks in a row.
I'm going to help you apply all that teaching.
And with Thanksgiving coming up, with Christmas coming up, these are usually
times of the year.
I want to help lower your anxiety in relationships and increase the health of your relationship.
So if you'd like to do that, you've only got a couple of days.
Wednesday, 27th of October is when the Boundaries Academy closes.
Good.
But what about the master class?
The master class.
Probably.
Am I into trouble for saying this?
Probably my favorite thing I've done this year is run the boundaries master class.
Yeah.
I know that because you would get so excited when it was about to start.
It's such a privilege to create space for people to explore the story.
Yeah.
And that's what I did.
We did the masterclass in July of this year, in the summer.
Yeah, in the summer.
We did the boundaries masterclass.
I loved it.
I can only take five students at a time.
I've decided to run it again in the fall.
And it's a pretty big commitment, some intense work.
It basically takes everything I just told you about boundaries.
It takes all the work that we've talked about last year about feelings,
put them together and helps you explore your story.

Like having no boundaries.
Like, where is having no boundaries shown up?
Where is it stolen thing from you?
Can you get in touch with it?
How do you want to live life differently?
Yeah.
The reason I'm limited to five students is I want to give plenty of space
for people to process their story.
So good.
We're using group dynamics.
I love it.
If you would like to be part of this year's cohort,
five students, again, applications for the Boundaries
Masterclass closes Wednesday, October 27th.
I'd love you to do with me.
It's such a joy.
You remember how goody I was.
Yes.

Yeah.
I love it.
And I would love you to come do it with me too.
Perfect.
All right.
Our main topic for this week-- last week,
We talked about five things we didn't know about marriage.
And I had a lot of fun doing that.
This week we're going to talk about five things
we didn't know about having kids.
- Okay.
Are you going to go first?
'Cause I went first last week.
- Okay, that seems fair.
Five things.
- Yes, are yours written down?
Are you just pulling five things out of your head?
- No, I've written them down.
I'm asking to look at my notes to remember
which order they came in.
Number one was I once heard a prophet say this cryptic phrase,
every baby arrives with a loaf of bread under their arm.
- Oh, that's good.
- Do you remember that?
- Yeah.
- Yeah, so Jimmy Galloway, friend of ours,
wonderful prophet,
who's prophesying over some friends of ours,
Richard and Michelle.
And he said that phrase and I asked him,
"Jimmy, what does it mean every baby arrives
with a loaf of bread under their arm?"
- 'Cause I have to say, having given birth to three babies,
I didn't see any loaves of bread.
- He was talking about every baby
arrives with the provision it needs.
- Yeah.
- And I would say, again, before we discuss this,
we are not saying that we're experts of parenting.
- Oh yes, we're not.
- And we have a 14 year old, a 12 year old,
and an eight year old.
- Yes.
- So there's a whole of parenting we haven't even
- We haven't done yet.
- You can stand into yet.
- Yep, yep, yep.
- But with that said, I would absolutely agree
with that statement that every child arrives
with a loaf of bread.
- Yeah.
- And so the finances, the emotional capacity,
the mental energy, the physical sustenance
you need as a parent, I did not know
that that would be provided.
And I remember, I was thinking about this this week.
- Yeah.
- What were you gonna say?
- I was just thinking, I was thinking,
I remember when we used to be stressed about,
like we had Abigail, then we found out you're pregnant
with Tia, and I was like,
am I gonna have enough love for Tia?
- Serious question.
- Like, you know, like, is it possible
to love another human being as much as I love Abigail?
- Yeah, and then--
- And then-- - And then--
- Tia gonna take away love from Abby.
- Right, or like, yeah.
And then, you know, by the time MJ comes along,
you're just like, "Hey, the more the merrier,
"your heart just expands."
But yeah.
- I was gonna say about,
I remember when we found out you were pregnant,
we didn't yet know Abigail was gonna be a girl.
And I remember having somewhat crippling fear
it was gonna be a boy and I wouldn't know what to do.
'Cause I was the only boy I grew up with three sisters.
I was like, I actually know how it would be with girls.
I don't know how it would be with boys.
It's not that I wasn't confident in my masculinity
my manhood, there was just so many things I hadn't worked out yet in my head about
me as a man and can I pass on those lessons to a son? Do you remember that? I remember
I had that. And again, you know, Abigail was there and then Atia was there and I don't
know if I had more inner healing or whether the Lord just spoke peace to my heart or I
realized that the first two went well with, but I remember when MJ came, I remember being
settled in my heart. But I remember not being settled in my heart when Abigail was coming
I'm like, what if I can?
And of course I didn't know that a loaf of bread comes.
That was number one.
- Love it.
- This is where I have to look at my notes
'cause I thought I could remember them,
but I chopped them down.
See, I'm a firm believer that your mind
is for having ideas not holding on to them.
So I write down everything so I don't have to remember them.
Number two, praise God for this one,
is kids are incredibly resilient.
- Yes.
- I don't think I was aware of that,
but emotionally, even physically, they're super resilient.
- Yep.
- They're robust.
- I've got one of the scariest videos ever.
We had some friends who will remain nameless,
staying at our house, and they had a very small child.
- Oh, I can't.
- Under two, maybe one, one and a half.
- Yeah, probably. - It was walking.
But we have a flight of stairs with cameras all over our house.
And I just hear this scream as an older sister screams
watching her younger sister literally car wheel down--
down the flight stairs to the hardwood floors.
Yeah.
And I've got all in video and I watched it.
And I'm amazed that she was OK, because--
Just perfectly fine.
Horrible to watch it.
Horrible.
Horrible.
It was terrifying.
But--
It still makes me sick.

And you sent it to them.
And I can't watch it.
Yeah.
But in the same way that your kids are more resilient
than I would imagine, I'm just so grateful that kids
a really emotionally resilient.
As in, I think about the times,
like my saddest regret as a parent,
is times where I've said the wrong thing,
been impatient, snapped,
but what I've realized and what I've learned from history
is that if you hunger yourself, if you go your kids,
if you own your mistake, if you apologize,
if you ask for forgiveness,
don't think we ever taught them,
like, no, forgiveness is good and you need to.
- Then you have to.
- Even before we ever explained why forgiveness was important,
they were so generous in their forgiveness
and in their giving nature.
- Yeah, that's one of mine too, on my list.
- Did you see all my notes?
- No.
- No, I'm just kidding.
That's what we said to me last week.
So yeah, just the resilience of kids I love.
- So good.
- Number three, I love this.
I remember once watching an interview with Grim Cook,
and he was asked a question about parenting.
I don't really remember the answer,
But I remember him saying this phrase about, you know,
one of the things he's loved about parenting
is that you need different parenting skills
for different seasons of your kid's lives.
Like just in the natural ages.
And I've loved every age of parenting.
Again, we have 14, 12 and eight year old.
- Yeah.
- And I've loved that it requires different things.
I love that we are navigating,
how do you parent a 14 year old?
'Cause you certainly don't parent them like an eight year old
and you don't parent them like a 12 year old.
Sometimes they need something in one season of the day
and sometimes they need--
Yeah, 14 feels tricky because they're not really,
she's still a little girl in some ways and in some ways,
she's not.
No, she's an adult and just leave me alone.
Yeah, I mean--
So learning that is fun.
I mean, I was gonna say my favorite stage is four-year-old.
I don't think it is.
I think my favorite stages
will ever age your kids are at the moment,
but I loved when kids were four.
or our kids were four.
There's just such a cute face,
but I've loved all the different sides
of having to be a parent.
And I wasn't prepared for that.
I just thought you're a parent.
Like it's a flat one-dimensional thing.
- Yeah.
- And it's not.
It requires completely different scales
and completely different things.
- And really each kid is different.
Like in many ways you're parenting them the same way
or with the same values,
But they, because they're different human beings
and they respond differently, they actually require.
- And they all turn out differently.
- Yeah.
- Number four.
I knew this.
I understood this in a concept,
but I didn't know it in experience.
'Cause I hadn't had kids.
Chip,
which chip is the boundaries person?
Chip Judd.
- Yes.
- Thank you.
Chip Dodd is the feelings person,
Chip Judd is boundaries.
- Thank you.
- I remember Chip Judd saying,
Parenting is the hardest job you'll ever have.
And I remember it was before we were married,
we didn't have kids, I thought,
okay, I really trust you,
I'll make a mental note of that,
don't quite know what that means.

In many ways, parenting is like the most rewarding job
I've ever had, like it's amazing.
- But it's 24/7.
- It's 24/7 and it's hard
because you're not your best self 24/7.
Like I think even today,
I would say we had a great weekend,
like from a parenting perspective, this whole week being away was absolutely wonderful.
I really enjoyed being with the kids, seeing all my nerves.
It was great.
I felt like I showed up really, really well.
I'm tearing everything down and packing everything today.
And I forget what I'm trying to do.
Oh, I'm trying to put one of the tables in the back of the minivan.
I've overextended my back.
The bit, the flattened down table is not going in because it's taking something.
I'm trying to do that without putting my back out.

And I just remember like, I've ruined everything.
You know, his whole week will be moored by,
I would say the most mental energy,
I expand pushing away negative thoughts,
all has to do with parenting.
- Mm.
- Like I don't often battle negative thoughts.
- Right.
- Like I have a fairly positive outlook on life.
But probably the area where I do the most mental warfare
is regarding parenting.
Like the constant, not constant fear
like I'm awake at night,
but if I allow my mind to settle on parenting,
I'm just like, oh my God, what if I'm just going out my kids?
- Right.
- Like, oh my God, what if, you know.
- Right.
Because here's the thing, you don't have a clue what you're doing.
No.
You literally don't have a clue what you're doing.
No.
I mean, you have more of a clue with, we have more of a clue with Tia and with MJ
than we do with Abigail.
Like Abigail.
So you don't know what you're doing, how it's going to end up.
Yeah, that's true.

So like my mom invested so much stuff on us,
which I've actually deliberately chosen
to go in an opposite direction.
What I mean by that is my mom would invest so much time
in taking us to museums and try to instill love of culture
and all those things.
And I loathed every single bit of it.
So I think it's point number five I'm gonna come to,
but I've moved in the opposite direction and even then.
Who knows?
Who knows?
Am I like parenting in a reactionary way
or an intentional way?
- But I think that's where you have to do the very best you can
and trust that the Holy Spirit's gonna take care of the rest.
- But that's a scary bore, like the very best I can.
- Wow.
- Do you know how much time I spent watching YouTube today
that I could have been doing something with the kids?
- The best you can.
(laughing)
- The best, but again, like what is the best?
Like, I think it's hard because there's no check marks,
there's no grades, there's nothing you can evaluate yourself on.
- Right.
- And you and I know, 'cause we've spent years
with young adults who might've been high achieving
eyes of the world, but their parents messed them up because they pushed them.
So like, I don't know.

So I started saving up for an inner healing.
Yeah.

Yeah.
And he was just like, Hey guys, even the most well-intentioned parents are
still going to screw up their kids.
Right.
Like it's going to happen.
And I'm like, yeah, okay.
So not, not that that's a license to not care, but it is a
license to give yourself some grace.
Yeah.
And that's where I lie on that one.
Okay.
Number five.
Number five was all about your kids are a gift.
Yeah.
Like parenting is a gift.
You were talking about that whole thing of like we've parent
and all of our kids the same way.
I mean, I guess, right?
It's at least the same parents and they've all turned out completely
differently.
Yes.
And I was talking about- - Well, they're all lovely kids,
but yeah, they've all got different personalities.
- Yeah, yeah, but they're all very different children.
- Right.

Like, my mom was always like incentivizing
and being intentional with parenting.
And I'm not sure how much of it,
it certainly didn't work with me.
Like I had a bad reaction,
'cause it just felt like being shepherded
or managed way for it there is, ladies and gentlemen.
Can we have a play back on that one, please?
- I just did the spectacular yawn,
where to sleep a yawn.
- I cut it short though, that's not gonna serve me well
'cause it means I'm gonna, ah, ah, Chris, there it is.
- No, now you, now you.
- Play back Chris, play back.
- Now you've cursed me.
- Wait, wait, here it is.
- Stop.
Anyway, with like, I think that one of the things
I'm most happy about in my parenting,
or my approach to parenting, which again,
I can't even be happy about it
because I don't know if it's produced good dividends or not,
is the amount of space I've given my kids.
As in, I haven't tried to steer my kids into anything,
but I've tried to support them wherever they've entered
wandering into.
So we didn't get Abby music lessons or singing lessons.
We didn't say, "Hey, you know what would be good for you
"to do, you should do this, you should do that."
But she just ended up loving music,
and she taught herself this.
And as we realized, okay, you've gravitated towards this,
you spent some time here, let's do some resources.
Yeah, so you really like music?
Okay, I know how to use logic.
I'll show you how to use logic and GarageBand.
And hey, there's a sale, let's pick up some microphones
and I'm trying to feed what I see is interesting to her.
Same with Tia, we weren't like,
you know what, you'd be a great artist.
Tia spends hours just drawing,
so let's get you an iPad and an Apple pencil.
And she figured out how to use procreate.

But that's what he wants to do, by the way.

Oh, I'm aware.
But look at the joy in our kids and look at the creativity that's come out with them.
And I don't think either of us planned that for them.
We just created space for them and try to meet them wherever they were at.
And they're a total source of joy.
So there's my five things.
All right.
Well, hang on, but I also want to say before I had my own kids, other people's
kids were just super annoying.

Is it just like more annoying, more of the time?
But it's not.
It's totally joyful having kids.
Yeah.
I, I, uh, I would say I didn't enjoy other people's children as much as I enjoy my own.
Because there was kids that I did like being around, but there was also kids I didn't.
Yeah, just kids in general.
I was like, um, all right.
Are you ready for my number one?
I'm so ready.
So when we, when we had babies, we did baby wise.
- Yeah.
- And the very first chapter of that book,
the guy makes a statement and he says,
"The best thing you can do for your parenting
is to have a great marriage."
- Really?

I remember my aunt, Joan and uncle Paul,
they had eight kids and they still always had a date night
on Thursday nights.
- Right.
- They just prioritize their marriage
'cause they're like, hey, actually having a stable home
where your kids can tell that mommy and daddy love each other
actually goes a long way for all of the parenting stuff.
- I guess that makes sense,
but I would never have thought about that for babies.
Like I could see like childhood development for sure,
but babies like it.
- Well, they pick up everything.
They're feeling everything.
So it makes sense. - Limit presence.
- Yeah, yep.
So that was my number one.
- Whoa, that's something you didn't know, but now you know.
- Yes. - How does that show up today?
Well, I mean, I think we have an amazing marriage.
And I think the kids are they feel safe and confident.
And you know, like there's not any kind of iffyness about their situation or our
home life or any of that.
And they I I'm hoping that they're seeing a healthy marriage and that's going to be
what they want.
I modeled that for MJ today.
I was teaching them how to French kiss.

He did. He's cheering me on. Go, daddy.
And you were a very willing participant.
Thank you. Thank you.
Go strong marriages.
So concerning.
Number two is the Holy Spirit knows the answers.
So there's been so many times, particularly before the kids can actually speak in sentences,
where you're like, I have no idea why this child is crying or what is happening right now.
or do you like do I take them to the doctors or is this just gas or you know like all the you know of
Parenting especially when they can't tell you anything
But the Holy Spirit always knows what's going on so Jeff dollars. That's like this
He's like the Lord's got your kids.  Yeah, like okay. God you've you've you've got this. Yeah
- Right?
- But even in like, you know, even in, okay,
baby is crying, I don't know what's going on.
I remember the Lord saying stop eating broccoli.
Like, and I was like, that's random.
Like never thought of that.
- With what? - With Abby.
I had to stop eating broccoli and she stopped having gas.

Like, you know what I mean?
So it's things like as little as that.
- Yeah.

You know, that kind of stuff.
So yeah, the Holy Spirit knows the answers.
All right, number three.
- All right, number three, take it away, baby.
- Get used to saying the same thing
over and over and over again.
- Over the long of holes, holy.
And it just doesn't feel like that stopped,
even though the four G, we have a 14 year old.
- But we have a new tactic now.
Instead of repeating ourselves.
- We're doing a taser.
- No, not taser darling.
We have a new tactic, which is like,
did you hear my answer?
Did you understand my answer?
Do you need clarification on the answer?
- Yeah.
- Because that will be like, hey, can we do this?
No, but what about this?
What about this?
Oh, did you hear my answer?
Yeah.

- Well, I don't even mean those kinds of things
'cause that's more like the negotiating anything.
- Oh, you just mean just the general practice
like clean your teeth.
- Hey, brush your teeth.
Hey, did you brush your teeth?
Hey, you need to brush your teeth.
Why am I still telling my 14 year old
they have to brush their teeth?
I have no idea.
- Well, tell them what new rule
and you instituted this week.
- If they've forgotten to brush their teeth,
I charge them $5 'cause I'm done.
Mummy's done.
- Mummy's making bang.
- So they're feeding my latte habit.
It's not for like other things, it's for things that are like, you know,
duh, brush your teeth.
And we've tried everything.
We have checklists that they have to check out and fill in.
Yeah.
The greatest one, and by greatest one, I mean, the most recent one on an example is,
are the youth retreat that our kids went on.
I don't want to shame my kids, but let's just say some of the children in my household
were going on our youth retreat.
We're not saying which ones.
are youth leaders who are brilliant sent out a color-coded checklist of what they'd need.
I mean, it was perfect.
Like, you know, from the administration and anticipation perspective.
Perfect.
From the execution.
And I even printed out a copy.
I sent PDFs to the kids electronically.
Yes.
And I printed out stuff so they could check them off.
Yeah.
And I had the foolishness to ask them, have you followed the checklist to which
theoretically the children replied, yes.
and perhaps theoretically I said, well, let's check that and they haven't.
And I don't believe they were lying to me.
I think they had the main things that she did, but stuff must have just fallen out of her bag.
So like parents are more experienced than us.
And help us with that one because.
Yeah, so you didn't think that you would have to say things over and over again.
No, not as many times.
No, like no.
The writing was kind of on the wall, though, because one of the things that has amazed me in leading people.
Yes.
And leading a school in young adults, young adults specifically.
As a general rule of thumb question mark, people don't listen.
Yeah, you repeat yourself all day long.
It's what pastoring feels like.
It's just parenting older people.
Like it's video announcements, emails, spoken word.
Like you've tried to hit the auditory visual and still people go,
I don't know that event was happening or I didn't know it was due today.
Yeah.
And I don't think people are lying.
I think I don't know what it is.

Yeah. Yeah.
So maybe I started with children.
Anyway, parents out there who know how to fix that.
Please let us know.
- My number four, you already covered.
- No, but tell me, I wanna hear your perspective.
- So it was just, you will make mistakes
and just get good at apologizing when you do.
Basically, kids are resilient,
but own your, like own when you've made a mistake
or you've snapped at them
or you've missed their hearts in something
and that makes you a safe person to come to
with their hearts.
- I've also modeling that as grownups as well.
Like times when we have, you know,
either disrespecting one another or being short with one another and the kids have seen it,
like going out in the home.
We apologize in front of them, yeah.
Yeah.
Yeah.
Unapologizing that.
Yeah.
We, it's not like we deliberately made a decision to not argue or to argue in front of the kids.
I think we just try and live our life out loud anyway.
Yeah.
You know, otherwise you end up with this weird fraudulent versions of yourself.
Yeah.

Yeah.
Right?
- Yeah. - Yeah, okay.
Number five?
- Well, kids love to laugh.
- Wait, did you just make it up off the top here?
- No, look, kids love to laugh.
- Kids love to laugh.
- Like I was just thinking like--
- Well, you didn't know that about parenting?
- Please remember my testimony.
So like obviously, my heart's desire
is that my testimony is not my children's
and it hasn't been, thank you Jesus.
But I think I'm often, I'm aware that I don't have a silliness gene.

I mean, they, they, at the table, he decided to lift up his shirt and rub
Red John is nipples. I don't even remember why. But oh my gosh.
No idea why.
They literally fell out of their chairs laughing.
They're laughing so hard.
I forget the point I'm front of illustrate, but it was overshadow.
But I had my name.
It was so funny, but just like, hey, actually laughter goes a long way.
You know what I mean? Like, and I was thinking that tonight, like, I can't
remember what they were all like defying about tonight, but I can't.

I don't know. You like often do stuff like put your shirt over their faces while
they're sitting at the table and things like that. Yeah. Yeah.
That's called suffocation.
But just, you know, like I think I don't know. Like I think, Oh, yeah.
Like, what does it do for your heart as a mother watching your kids?
Oh, I love it. I love it.
I think dad, you're so sexy.
You're such a great dad.
You've got to stop at the table because it reverberates at the microphone.
But you do have to keep talking about how I'm sexy.
We went from ranch to nipples.
Okay.
That was not sexy.
Not the ranch nipples.
So you watching me make the kids laugh.
Yes.
Makes you want to jump me.
Yeah.
Okay.
We should do five things we didn't know about each other.
What?
Yeah.
Anyway, that could be for a whole
- That might be terrifying.
- Wow.
- Yeah.
- Yeah, parenting's been a wild ride.
- It's been great.
- It's been an absolute wild ride.
- Yeah.
- On the topic of kids parenting,
I've got a listening question for you.
- Oh.
- This one is from Jesse.
- Hi, Jesse.
- I have a question about the listeners question
regarding Halloween at the end of your kindness episode.
We don't participate in anything to do with Halloween,
but now that both kids are in school
and there's a Halloween party,
We're not sure what to do with that.
How have you handled your kids school parties?
Do you keep them home from school that day?
Let them dress up just for the school party?
What do you do?
- We have, so the school that my kids are at now,
like the elementary school doesn't allow
celebrating Halloween.
So there are no Halloween parties.
- So they do fall themed parties?
- No, they don't even, they don't.
- They do, like, they don't do parties per se,
but they do.
- Like they do fall themed things.
- Yeah, exercises and stuff like that.
- Yeah, but they don't do like ghost stories
and all that kind of stuff.
The previous school that we were at before this one,
they did do Halloween parties.
And so we just let the teachers know like,
"Hey, we actually as a family, we don't celebrate Halloween."
So we would, yeah, keep them home on Halloween
if Halloween was--
- Did we do that while we were in the room?
- Yeah, we did. - Yeah, we did.
- Yeah? - Okay, well this is why
Age is good at answering these questions.
- And we just tried to make it like a special thing,
like I took the girls out for lunch or--
- But also now that they're older,
I don't even know what they're doing at Abbey School,
but now that they're older,
if there's things happening around that,
we know why we don't celebrate it.
They've got a value for that.
Again, what we found with our kids
is all they wanted was the chocolate.
- Yeah, so we buy them a bag
of whatever their favorite chocolate is.

And what I mean by that is,
We're, we've made a stand to the ground
that we're not gonna celebrate Halloween.
- Yes.
- But we're not super religious about it.
As in, it's not like a taboo topic.
We don't not talk about it in the house.
- Right.
- We've taught the kids to self-sensor.
If there's TV shows that they like
and there happens to be a Halloween episode,
they automatically skip it.
But we've, like, our value is not,
don't celebrate Halloween.
Our value is, isn't God good.
- Yes.
- Like we've majored on, God is good.
And you know, the other thing, it's just,
it's not a major focus of our life,
not celebrating Halloween.
- Yes.
- Is that right?
- I can care.
- All right.
If you want to show notes for this week's episode,
go to lnag.com/257.
- 257.
- If you want to ask us a question,
go to lnag.com/ask.
Just a quick reminder that in a couple of days,
the Boundaries Masterclass and the Boundaries Academy,
application for those and enrollment
those will be closing Wednesday October 27th. Anything else Jones?
I think that's it. Then we pray that you have an amazing week and we'll be back
same time same place next week. Yep.


Previous: Extensions to Similarity Rules, Up: Literal Objects in Compiled Files
If two literal objects appearing in the source code for a single file processed with the file compiler are the identical, the corresponding objects in the compiled code must also be the identical.
With the exception of symbols and packages, any two literal objects in code being processed by the file compiler may be coalesced if and only if they are similar; if they are either both symbols or both packages, they may only be coalesced if and only if they are identical.
Objects containing circular references can be externalizable objects. The file compiler is required to preserve eqlness of substructures within a file. Preserving eqlness means that subobjects that are the same in the source code must be the same in the corresponding compiled code.
In addition, the following are constraints on the handling of literal objects by the file compiler:
array: If an array in the source code is a simple array, then the corresponding array in the compiled code will also be a simple array. If an array in the source code is displaced, has a fill pointer, or is actually adjustable, the corresponding array in the compiled code might lack any or all of these qualities. If an array in the source code has a fill pointer, then the corresponding array in the compiled code might be only the size implied by the fill pointer.
packages: The loader is required to find the corresponding package object as if by calling find-package with the package name as an argument. An error of type package-error is signaled if no package of that name exists at load time.
random-state: A constant random state object cannot be used as the state argument to the function random because random modifies this data structure.
structure, standard-object: Objects of type structure-object and standard-object may appear in compiled constants if there is an appropriate make-load-form method defined for that type.
The file compiler calls make-load-form on any object that is referenced as a literal object if the object is a generalized instance of standard-object, structure-object, condition, or any of a (possibly empty) implementation-dependent set of other classes. The file compiler only calls make-load-form once for any given object within a single file.
symbol: In order to guarantee that compiled files can be loaded correctly, users must ensure that the packages referenced in those files are defined consistently at compile time and load time. Conforming programs must satisfy the following requirements:
The current package when a top level form in the file is processed by compile-file must be the same as the current package when the code corresponding to that top level form in the compiled file is executed by load. In particular:
Any top level form in a file that alters the current package must change it to a package of the same name both at compile time and at load time.
If the first non-atomic top level form in the file is not an in-package form, then the current package at the time load is called must be a package with the same name as the package that was the current package at the time compile-file was called.
For all symbols appearing lexically within a top level form that were accessible in the package that was the current package during processing of that top level form at compile time, but whose home package was another package, at load time there must be a symbol with the same name that is accessible in both the load-time current package and in the package with the same name as the compile-time home package.
For all symbols represented in the compiled file that were external symbols in their home package at compile time, there must be a symbol with the same name that is an external symbol in the package with the same name at load time.
If any of these conditions do not hold, the package in which the loader looks for the affected symbols is unspecified. Implementations are permitted to signal an error or to define this behavior.
Previous: Extensions to Similarity Rules, Up: Literal Objects in Compiled Files


The next planned set of non-bugfix work includes some big changes to the API, so we’re going to bump the version up to 2.0.0.
Princely
class pdf generation responsibilities will be moved toPrincely::Pdf
.Princely
will be changed to a module and used for global princely configuration.Princely::Pdf
will accept a template or html string (egPrincely::Pdf.new('<html></html>').render
)- HTML used for PDF generation will be accessible on the class.
PdfHelper
will becomePrincely::PdfHelper
.
I want to also keep developing the test suite. Some examples of unique behaviour that you’ve experienced would go a long way to bedding down a functional suite. Please send me an email or open a pull request.
Please leave a comment if you have any queries or concerns.


|
Tainted
Love
(Marilyn Manson) |
|
Sometimes
I feel I've got to
Run away I've got to Get away From the pain that you drive into the heart of me The love we share Seems to go nowhere I've lost my lights I toss and turn I can't sleep at night Once I ran to you (I ran) Now I'll run from you This tainted love you've given I give you all a boy could give you Take my tears and that's not nearly all Tainted love Tainted love Now I know I've got to Run away I've got to Get away You don't really want any more from me To make things right You need someone to hold you tight You think love is to pray But I'm sorry I don't pray that way Once I ran to you (I ran) Now I'll run from you This tainted love you've given I give you all a boy could give you Take my tears and that's not nearly all Tainted love Tainted love Don't touch me please I cannot stand the way you tease I love you though you hurt me so Now I'm going to pack my things and go Touch me baby, tainted love Touch me baby, tainted love Touch me baby, tainted love Once I ran to you (I ran) Now I'll run from you This tainted love you've given I give you all a boy could give you Take my tears and that's not nearly all Tainted love Tainted love Tainted love |


--- layout: default title: "404: Page not found" permalink: /404.html ---
Sorry, we've misplaced that URL or it's pointing to something that doesn't exist. Head back home to try finding it again.
| Loading game... |
Game controls: use the Arrow keys (or W, S, A, D), space (or X), and Z and R for undo/redo
To play more of these types of games, or embed this on your 404 page, check out puzzlescript-cli on GitHub


Toastify returns a set of public methods you can use to modify the toast instance you created with create method (the first in the following list):
toastify.create(params) //Create a new toast instance
toastify.done(toast) //Apply to toast done options specified in create method
toastify.closeToast(toast) //Close the toast instance passed as parameter
toastify.closeAllToasts() //Close all toasts instances
{
toastCustomClass: null,
appendTo: 'body', //Id of html tag where to append toasts
closeByClick: false,
showClose: true,
autoclose: true,
timeout: 4000,
message : '',
callback: null, //Callback when toast is closed
onclick: null, //Methods to call when click on entire toast is performed
template: null,
controller: null,
gravity: 'top', //Possible values are 'top' or 'bottom'
doneMessage: '',
doneClass: 'done', //Css class to apply on done method
doneAutoclose: true,
}
toastify.create({
timeout: 2000,
message: 'Autoclosing toast',
});
function alertCallback({
alert('Toast closure callback')
});
toastify.create({
toastCustomClass: 'error',
autoclose: false,
message: 'Error message',
callback: alertCallback,
});
/*CSS*/
.onDone {
background-color: #0091FF;
border-color: #0270c3;
}
//Javascript
var toast = toastify.create({
autoclose: false, // if autoclose set to false, timeout refers to done duration
timeout: 2000,
showClose: false,
message: 'Waiting for done...',
doneClass: 'onDone',
doneMessage: 'Done!'
});
setTimeout(function() {
tostify.done(toast);
}, 2000);
toastify.create({
timeout: 4000,
template: This is a template
});
toastify.create({
showClose: false,
autoClose: false,
gravity: 'bottom',
template:
Click here to close the toast

});
Each toast created by create method comes with a set of methods attached to its scope.
closeThisToast() //Close the toast instance. See example at previous point
getToast() //Return toast object
closeAllToasts() //Close all toasts instances
Anytime a new toast has been created, is removing or has been removed, the following messages are broadcasted all over the web app
//On new toast creation
$scope.$on('toastify.toast-created', function(event, args){
//args.toast to get the toast instance
});
//When toast is removed (not considering animation duration)
$scope.$on('toastify.toast-removing', function(event, args){
//args.toast to get the toast instance
});
//When toast is removed and animation is concluded
$scope.$on('toastify.toast-removed', function(event, args){
//args.toast to get the toast instance
});


This brings us to the question, then, of which groups of people have access to those things. Although the ECOA banned discrimination in the loaning of money in 1974, access to credit tends to be passed down through generations. If your grandparents did not have access to credit, they may not have been able to support your parents when they needed to borrow money for education or a first home - in which case, your parents would be unable to offer the same opportunities to you.
in-context


Before Change
author="F. Alexander Wolf, P. Angerer",
<EMAIL_ADDRESS>license="BSD-3-Clause",
entry_points={
"console_scripts": [
"scanpy = scanpy.__main__:main",
],
},
install_requires=requires,
packages=find_packages(exclude=["scripts", "scripts.*"]),
include_dirs=[numpy.get_include()],
After Change
["scanpy/cython/utils_cy.c"]),
]
req_path = Path("requires.txt")
if not req_path.is_file():
req_path = Path("scanpy.egg-info") / req_path
with req_path.open() as requirements:
requires = [l.strip() for l in requirements]


Overview
Package
Class
Tree
Deprecated
Index
Help
PREV NEXT
FRAMES
NO FRAMES
All Classes
A
D
E
F
G
I
M
N
O
P
S
T
V
A
AnnotNormalizeMode
- Enum in
gate.metamap
D
doCoreferenceAnnots(HashMap<Integer, ArrayList<Integer>>, AnnotationSet, AnnotationSet)
- Method in class gate.metamap.
MetaMapPR
Requires Tokenizer and POS tagger to have been run on text
E
execute()
- Method in class gate.metamap.
MetaMapPR
F
filter(String)
- Method in interface info.olteanu.interfaces.
StringFilter
filter(String)
- Method in class info.olteanu.utils.
TextNormalizer.Java5Normalizer
filter(String)
- Method in class info.olteanu.utils.
TextNormalizer.Java6Normalizer
filterNonAscii(String)
- Method in class gate.metamap.
MetaMapPR
G
gate.metamap
- package gate.metamap
getAnnotateNegEx()
- Method in class gate.metamap.
MetaMapPR
getAnnotatePhrases()
- Method in class gate.metamap.
MetaMapPR
getAnnotNormalize()
- Method in class gate.metamap.
MetaMapPR
getExcludeIfContains()
- Method in class gate.metamap.
MetaMapPR
getExcludeIfWithin()
- Method in class gate.metamap.
MetaMapPR
getInputASName()
- Method in class gate.metamap.
MetaMapPR
getInputASTypeFeature()
- Method in class gate.metamap.
MetaMapPR
getInputASTypes()
- Method in class gate.metamap.
MetaMapPR
getMetaMapOptions()
- Method in class gate.metamap.
MetaMapPR
getNormalizationStringFilter()
- Static method in class info.olteanu.utils.
TextNormalizer
getOutputASName()
- Method in class gate.metamap.
MetaMapPR
getOutputASType()
- Method in class gate.metamap.
MetaMapPR
getOutputMode()
- Method in class gate.metamap.
MetaMapPR
getTaggerMode()
- Method in class gate.metamap.
MetaMapPR
I
info.olteanu.interfaces
- package info.olteanu.interfaces
info.olteanu.utils
- package info.olteanu.utils
init()
- Method in class gate.metamap.
MetaMapPR
INVALID
- Static variable in interface info.olteanu.interfaces.
StringFilter
M
MetaMapPR
- Class in
gate.metamap
This class is the implementation of the resource METAMAP.
MetaMapPR()
- Constructor for class gate.metamap.
MetaMapPR
N
normalizeString(String)
- Method in class gate.metamap.
MetaMapPR
O
OutputMode
- Enum in
gate.metamap
P
processCandidates(PCM, List<Negation>, Long, Long)
- Method in class gate.metamap.
MetaMapPR
processEvents(List<Ev>, List<Negation>, String, Long, Long)
- Method in class gate.metamap.
MetaMapPR
processMappings(PCM, List<Negation>, Long, Long)
- Method in class gate.metamap.
MetaMapPR
processPhrase(PCM, Long)
- Method in class gate.metamap.
MetaMapPR
processUtterances(Result, Long, Long)
- Method in class gate.metamap.
MetaMapPR
processWithMetaMap(MetaMapApi, String, Long, Long)
- Method in class gate.metamap.
MetaMapPR
S
setAnnotateNegEx(Boolean)
- Method in class gate.metamap.
MetaMapPR
setAnnotatePhrases(Boolean)
- Method in class gate.metamap.
MetaMapPR
setAnnotNormalize(AnnotNormalizeMode)
- Method in class gate.metamap.
MetaMapPR
setExcludeIfContains(ArrayList<String>)
- Method in class gate.metamap.
MetaMapPR
setExcludeIfWithin(ArrayList<String>)
- Method in class gate.metamap.
MetaMapPR
setInputASName(String)
- Method in class gate.metamap.
MetaMapPR
setInputASTypeFeature(String)
- Method in class gate.metamap.
MetaMapPR
setInputASTypes(ArrayList<String>)
- Method in class gate.metamap.
MetaMapPR
setMetaMapOptions(String)
- Method in class gate.metamap.
MetaMapPR
setOutputASName(String)
- Method in class gate.metamap.
MetaMapPR
setOutputASType(String)
- Method in class gate.metamap.
MetaMapPR
setOutputMode(OutputMode)
- Method in class gate.metamap.
MetaMapPR
setTaggerMode(TaggerMode)
- Method in class gate.metamap.
MetaMapPR
setUpApi()
- Method in class gate.metamap.
MetaMapPR
StringFilter
- Interface in
info.olteanu.interfaces
stripDeterminers(AnnotationSet, Annotation, String, AnnotNormalizeMode)
- Method in class gate.metamap.
MetaMapPR
T
TaggerMode
- Enum in
gate.metamap
TextNormalizer
- Class in
info.olteanu.utils
TextNormalizer()
- Constructor for class info.olteanu.utils.
TextNormalizer
TextNormalizer.Java5Normalizer
- Class in
info.olteanu.utils
TextNormalizer.Java5Normalizer()
- Constructor for class info.olteanu.utils.
TextNormalizer.Java5Normalizer
TextNormalizer.Java6Normalizer
- Class in
info.olteanu.utils
TextNormalizer.Java6Normalizer()
- Constructor for class info.olteanu.utils.
TextNormalizer.Java6Normalizer
V
valueOf(String)
- Static method in enum gate.metamap.
AnnotNormalizeMode
Returns the enum constant of this type with the specified name.
valueOf(String)
- Static method in enum gate.metamap.
OutputMode
Returns the enum constant of this type with the specified name.
valueOf(String)
- Static method in enum gate.metamap.
TaggerMode
Returns the enum constant of this type with the specified name.
values()
- Static method in enum gate.metamap.
AnnotNormalizeMode
Returns an array containing the constants of this enum type, in the order they are declared.
values()
- Static method in enum gate.metamap.
OutputMode
Returns an array containing the constants of this enum type, in the order they are declared.
values()
- Static method in enum gate.metamap.
TaggerMode
Returns an array containing the constants of this enum type, in the order they are declared.
VOID
- Static variable in interface info.olteanu.interfaces.
StringFilter
A
D
E
F
G
I
M
N
O
P
S
T
V
Overview
Package
Class
Tree
Deprecated
Index
Help
PREV NEXT
FRAMES
NO FRAMES
All Classes


Stats - Languages
Overview
This interface will show you the browser languages for the overall in, out, and click stats. At the top of the interface you can click the In, Out, or Clicks
boxes to view the languages for that particular statistic. The languages will be listed in the table below, with a numerical and percentage value.