CDP Configuration support is provided by a common framework to load and manage configuration properties from multiple sources. The basic concept is to load a set of default properties from a known resource file located on the class path, and then override these defaults with optional settings that can be provided by a user through either additional property files or via the command line (as VM arguments). The loading of defaults from a resource property file (named com/att/cdp/default.properties) ensures that values are defined for properties the application needs in order to operate.
One of these default values that can be set is the name of the property file that allows the user to supply settings, as well as the path where the file can be found. In general, the default name of the property file will be "cdp.properties", and the path that will be searched is "${user.home};etc;../etc". However, these values can be changed through the use of the default.properties resource file. The property that specifies the property file name is named com.att.cdp.bootstrap.file, while the property named com.att.cdp.bootstrap.path specifies the search path.
After the default.properties are loaded, but prior to searching for the application configuration file, the configuration factory checks for properties com.att.cdp.bootstrap.path and com.att.cdp.bootstrap.file in the System properties object (meaning they were set by the command line). If these values are defined in the system properties object, they are used. If not, these values are obtained from the default properties just loaded. This allows the specification of either the file name or path, or both, to be overridden during start up by using command-line arguments.
The search path is scanned for the first occurrence of the specified property file. The first occurrence is loaded and scanning is stopped at that point. The configuration factory does not load all occurrences it finds, only the first occurrence it finds.
The configuration properties are loaded and processed according to a defined precedence order, such that properties defined with a higher precedence override the same property at a lower precedence. The precedence order is defined as follows:
The configuration support allows for variables to be inserted into any property that is defined. Variables are named using the format ${name}, where the "name" is the name of a property that is defined in the configuration, or a system property (such as user.home). Variables can nest, such that a variable can be replaced with another variable, which is then reevaluated to obtain the value. This allows for indirection as well as variable substitution, if needed.
The configuration support was designed to be easy to use. The configuration implementation is abstracted away from the application so that it could be changed easily in the future if needed, or if we needed to load different implementations for different reasons. This means that the application always accesses the configuration through an interface, named Configuration. The implementation of that configuration interface is obtained by a static method on the ConfigurationFactory class. The configuration factory will both create the configuration if not already created on the first access, as well as return the current configuration if already created. Additionally, the ConfigurationFactory provides mechanisms to recreate the configuration after the application is initialized should the need arise to update its configuration.
An example of the code needed to obtain access to the configuration is:
Configuration config = ConfigurationFactory.getConfiguration();
Please refer to the javadoc or the source code in cdp-common for other ways that the configuration and configuration factory can be used.
The configuration support allows for properties to be re-loaded and re-evaluated after the application is running. This is designed to allow a configuration to be refreshed should the need arise. This could allow on-demand refresh (via a command, for example), or automatically based on sensing a change in the configuration file.
When the ConfigurationFactory method getConfiguration(Properties) is called, the current configuration is cleared and rebuilt using the process defined above. The supplied property object is used in step #2 of the process. While the properties are being re-built, no access to the properties are allowed. Any attempt to access properties while the re-build operation is in effect will block the caller until completed. This is accomplished using read and write shared locks.


Instance segmentation of videos with PixelLib¶
Instance segmentation with PixelLib is based on MaskRCNN framework.
Download the mask rcnn model from here
Code to implement instance segmentation of videos:
import pixellib
from pixellib.instance import instance_segmentation
segment_video = instance_segmentation()
segment_video.load_model("mask_rcnn_coco.h5")
segment_video.process_video("video_path", frames_per_second= 20, output_video_name="path_to_outputvideo")
import pixellib
from pixellib.instance
segment_video = instance_segmentation()
We imported in the class for performing instance segmentation and created an instance of the class.
segment_video.load_model("mask_rcnn_coco.h5")
We loaded the maskrcnn model trained on coco dataset to perform instance segmentation and it can be downloaded from here.
segment_video.process_video("sample_video2.mp4", frames_per_second = 20, output_video_name = "output_video.mp4")
We called the function to perform segmentation on the video file.
It takes the following parameters:-
video_path: the path to the video file we want to perform segmentation on.
frames_per_second: this is parameter to set the number.of frames per second for the output video file. In this case it is set to 15 i.e the saved video file will have 15 frames per second.
output_video_name: the saved segmented video. The output video will be saved in your current working directory.
Sample video2
import pixellib
from pixellib.instance import instance_segmentation
segment_video = instance_segmentation()
segment_video.load_model("mask_rcnn_coco.h5")
segment_video.process_video("sample_video2.mp4", frames_per_second= 15, output_video_name="output_video.mp4")
Output video
We can perform instance segmentation with object detection by setting the parameter show_bboxes to true.
import pixellib
from pixellib.instance import instance_segmentation
segment_video = instance_segmentation()
segment_video.load_model("mask_rcnn_coco.h5")
segment_video.process_video("sample_video2.mp4", show_bboxes = True, frames_per_second= 15, output_video_name="output_video.mp4")
Output video with bounding boxes
Extraction of objects in videos¶
PixelLib supports the extraction of objects in videos and camera feeds.
segment_video.process_video("sample.mp4", show_bboxes=True, extract_segmented_objects=True,save_extracted_objects=True, frames_per_second= 5, output_video_name="output.mp4")
It still the same code except we introduced new parameters in the process_video which are:
extract_segmented_objects: this is the parameter that tells the function to extract the objects segmented in the image. It is set to true.
save_extracted_objects: this is an optional parameter for saving the extracted segmented objects.
Extracted objects from the video
Segmentation of Specific Classes in Videos¶
The pre-trained coco model used detects 80 classes of objects. PixelLib has made it possible to filter out unused detections and detect the classes you want.
target_classes = segment_video.select_target_classes(person=True)
segment_video.process_video("sample.mp4", show_bboxes=True, segment_target_classes= target_classes, extract_segmented_objects=True,save_extracted_objects=True, frames_per_second= 5, output_video_name="output.mp4")
The target class for detection is set to person and we were able to segment only the people in the video.
target_classes = segment_video.select_target_classes(car = True)
segment_video.process_video("sample.mp4", show_bboxes=True, segment_target_classes= target_classes, extract_segmented_objects=True,save_extracted_objects=True, frames_per_second= 5, output_video_name="output.mp4")
The target class for detection is set to car and we were able to segment only the cars in the video.
Full code for filtering classes and object Extraction
Instance Segmentation of Live Camera with Mask R-cnn.¶
We can use the same model to perform semantic segmentation on camera. This can be done by few modifications to the code used to process video file.
import pixellib
from pixellib.instance import instance_segmentation
import cv2
capture = cv2.VideoCapture(0)
segment_video = instance_segmentation()
segment_video.load_model("mask_rcnn_coco.h5")
segment_video.process_camera(capture, frames_per_second= 15, output_video_name="output_video.mp4", show_frames= True,
frame_name= "frame")
import cv2
capture = cv2.VideoCapture(0)
We imported cv2 and included the code to capture camera frames.
segment_video.process_camera(capture, show_bboxes = True, frames_per_second = 15, output_video_name = "output_video.mp4", show_frames = True, frame_name = "frame")
In the code for performing segmentation, we replaced the video filepath to capture i.e we are going to process a stream camera frames instead of a video file.We added extra parameters for the purpose of showing the camera frames.
show_frames this parameter handles showing of segmented camera frames and press q to exist.
frame_name this is the name given to the shown camera’s frame.
A demo showing the output of pixelLib’s instance segmentation of camera’s feeds using Mask-RCNN. Good work! It was able to successfully detect me and my phone.
Detection of Target Classes in Live Camera Feeds
This is the modified code below to filter unused detections and detect a target class in a live camera feed.
import pixellib
from pixellib.instance import instance_segmentation
import cv2
capture = cv2.VideoCapture(0)
segment_video = instance_segmentation()
segment_video.load_model("mask_rcnn_coco.h5")
target_classes = segment_video.select_target_classes(person=True)
segment_video.process_camera(capture, segment_target_classes=target_classes, frames_per_second= 10, output_video_name="output_video.mp4", show_frames= True,frame_name= "frame")
Full code for Filtering classes and object Extraction in Camera feeds
import pixellib
from pixellib.instance import instance_segmentation
import cv2
capture = cv2.VideoCapture(0)
segment_video = instance_segmentation()
segment_video.load_model("mask_rcnn_coco.h5")
target_classes = segment_video.select_target_classes(person=True)
segment_video.process_camera(capture, segment_target_classes=target_classes, frames_per_second= 10, extract_segmented_objects=True,
save_extracted_objects=True,output_video_name="output_video.mp4", show_frames= True,frame_name= "frame")
Speed Adjustments for Faster Inference
PixelLib now supports the ability to adjust the speed of detection according to a user’s needs. The inference speed with a minimal reduction in the accuracy of detection. There are three main parameters that control the speed of detection.
1 average
2 fast
3 rapid
By default the detection speed is about 1 second for a processing a single image using Nvidia GeForce 1650.
Using Average Detection Mode
import pixellib
from pixellib.instance import instance_segmentation
import cv2
capture = cv2.VideoCapture(0)
segment_video = instance_segmentation(infer_speed = "average")
segment_video.load_model("mask_rcnn_coco.h5")
segment_video.process_camera(capture, frames_per_second= 10, output_video_name="output_video.mp4", show_frames= True,
frame_name= "frame")
In the modified code above within the class instance_segmentation we introduced a new parameter infer_speed which determines the speed of detection and it was set to average. The average value reduces the detection to half of its original speed, the detection speed would become 0.5 seconds for processing a single image.
Using fast Detection Mode
import pixellib
from pixellib.instance import instance_segmentation
import cv2
capture = cv2.VideoCapture(0)
segment_video = instance_segmentation(infer_speed = "fast")
segment_video.load_model("mask_rcnn_coco.h5")
segment_video.process_camera(capture, frames_per_second= 10, output_video_name="output_video.mp4", show_frames= True,
frame_name= "frame")
In the code above we replaced the infer_speed value to fast and the speed of detection is about 0.35 seconds for processing a single image.
Using rapid Detection Mode
import pixellib
from pixellib.instance import instance_segmentation
import cv2
capture = cv2.VideoCapture(0)
segment_video = instance_segmentation(infer_speed = "rapid")
segment_video.load_model("mask_rcnn_coco.h5")
segment_video.process_camera(capture, frames_per_second= 10, output_video_name="output_video.mp4", show_frames= True,
frame_name= "frame")
In the code above we replaced the infer_speed value to rapid the fastest the detection mode. The speed of detection becomes 0.25 seconds for processing a single image. The rapid detection speed mode achieves 4fps.


Written by: Perry Rein and Gigi McCreey
Transcribed by: Aaron D. Howard-Miller
[Scene: Joey and Janines, Chandler knocks on the front door. Joey answers the door.]
Joey: Hey.
Chandler: Hi, my names Chandler. I just moved in next door and I was wondering if you would be interested in battling me in a post-apoplectic world for control of the galaxies last remaining energy source?
Joey: Sure, neighbor come on in.
Chandler: So, is Janine around?
Joey: Uh, no, shes at dance class.
Chandler: Can I check out what she did to my room?
Joey: Yeah, but, hey look, dont go through her stuff. She gets really mad.(Chandler gives him a look and walks to the door of his old room.)
Chandler: (The room is filled with flowers and a floral print sheet on the bed.) Oh my God. What is th its like a guy never lived in here. Look, youve got to be careful. This girl thing is dangerous. (Looking around the living room.) Its spreading already.
Joey: (Looking around the room.) It is???
Chandler: (Picking up a pillow.) Yeah, is this your pretty pink pillow on the couch?
Joey: No.
Chandler: (Pointing to the table and picking up the box.) Is that your tiny little box, thats too small to put anything in?
Joey: No.
Chandler: No! Ok, this is not good.  Ok? This is a guys place.
Joey: (With Big Eyes.) All right, youre right. Ill talk to her.
Chandler: Yes talk to her. Be a man.
Joey: Im a man.
Chandler: Defend yourself.
Joey: (Grunting) Hmm. (Monica opens the front door and comes in.)
Monica: Chandler come on. We have to hem the new dust ruffle.
Chandler: Be right there sweetums. (Monica leaves. To Joey.) A totally different situation.
Opening Credits
[Scene: Central Perk, The gangs all here. Monica is walking in.]
Monica: Hey guys.
Chandler: Hey, how was your breakfast with Hillary?
Monica: It was okay. Shes still kind of depressed because she broke up with her boyfriend.
Chandler: Ohh, yeah.
Ross: Well, is this Hillary your HOT assistant chef Hillary?
Monica: Yeah.
Ross: The one that always stares at me when I come in?
Monica: No, the one who looked at you once because you got in her way.
Ross: Still I could tell. She was into me. (Joey rolls his eyes.) Well, why dont you set us up?
Rachel: Ohh, are you setting Ross up with someone? Does she have a wedding dress?
Phoebe: (Walking over and Sitting down.) Hey.
Rachel: Hey.
Phoebe: Rachel?
Rachel: Yeah.
Phoebe: Im, uhh, making up flyers trying to get new massage clients. So, can I come to Bloomingdales and use the copy machine.
Rachel: Well, sure, but they might think its kinda weird considering I dont work there anymore.
Phoebe: Oh my God. What happened?
Rachel: I-I, got a job at Ralph Lauren.
Phoebe: Well thats great! Congratulations!! (She hugs Rachel.)
Rachel: Yeah. (chuckling) A year ago..
Phoebe: (Hugging her again.) Youve lasted a whole year. Good for you.
Rachel: But, Pheebs, you can still use the copy machine where I actually work. But, just come by at lunch so my boss doesnt see you. Cause Kim will just freak out and she already doesnt like me very much.
Chandler: Thats weird. I dont think my boss likes me either.
Monica: I dont think mine likes me either.
Ross: Maybe its a universal thing?
 (Everybody gets up.)
Chandler: Yeah lets head off to work.
Monica: We should go.
[Scene: Rachels office, Phoebe hands Rachel a key card.]
Phoebe: Thank you.
Rachel: Sure.
Phoebe: Now you will not believe this. But, I was in the copy room, making copies, and Ralph Lauren came in.
Rachel: Oh my God. Did you talk to him?
Phoebe: Yeah a little. He seems really nice. Good kisser.
Rachel: What? What!?! You kissed him?
Phoebe: Totally.
Rachel: (Gasps) Phoebe are you serious?
Phoebe: Yeah. I was just in there. He introduced himself and the next thing I know, were making out. You know.

Phoebe: No!
Rachel: Phoebe
Phoebe: What am I supposed to do? Ask every guy I make out with if hes married? (Rachel looks at her.) No, yeah, I should.
[Scene: Joey and Janines apartment, Joey stares at a picture of a bay on the wall. Janine comes out of her room.]
Janine: Hey Joey.
Joey: Hey. Uh, can I talk to you for a second? This, uh, kid in this picture.  Is that like a relative or something?
Janine: No, I just thought it was cute.
Joey: Yeah, thats what I was afraid of.. Okay, uhh Look Janine I really want you to feel at home here, but some of this new stuff. Its too girly.
Janine: Ohh. Like what?
Joey: Like this. (pointing to the picture) Pictures of cute babies we dont know. We..we cant have that.
Janine: Joey, its Anne Geddes. Shes a famous artist.
Joey: Look I dont know this baby. I dont know if shes a famous artist or not.
Janine: Well, Im sorry. I just thought Id try to make the place a little nicer.
Joey: Yeah but its too much stuff.
Janine: Well I just thought
Joey: Im sure its a famous watering can, okay. But, come on and what is with the really hot stick in the bathroom?
Janine: Its a curling iron.
Joey: Ohh, well, thats ok then. But, okay my towels for instance. I come in to the bathroom here and my towel is not on the floor where keep it. Its up here on some hook..and smells different.
Janine: Its clean.
Joey: Yeah, well, it feels different.
Janine: Its dry.
Joey: Alright, I can make my peace with the clean dry towels Also what is with these chips you bought?
Janine: No no no no, its potpourri. Youre supposed to smell it. (Joey takes a big whiff of the potpourri.)
Joey: (Voice cracking) Well thats like summer in a bowl.
[Scene: Elevator at the Ralph Lauren offices, Rachel gets on her boss Kim is there.]
Rachel: Oh, Kim, Hi. (Kim doesnt even look up from her report.)
Kim: Uhh-huh.
Rachel: So you know, I I handed in that marketing report and I never got to hear what you thought.
Kim: I didnt read it.
Rachel: Ahh .So Wow The spring line, its really going to be great this year, huh?
Kim: Yeah.
Rachel: So I hear the Ralph Lauren fooled around with someone in the copy room. (Kim stops the elevator and turns to Rachel.)
Kim: Tell me everything.
[Scene; Central Perk, Monica and Chandler are on the couch. Ross walks in.]
Ross: Hey guys.
Chandler and Monica: Hey.
Ross: Whats up? (He smiles. His teeth are freakishly white.)
Chandler: You know Oh My God.
Monica: What happened to your teeth.
Ross: I whitened them.
Chandler: (Sarcastically) Really.
Ross: Yeah. What do you think.
Monica: Well, I think I shouldnt look directly at them.
Ross: Come on, seriously.
Monica: Ross theyre really, really, really white.
Chandler: Yeah, what was wrong with your old human teeth.
Ross: Ahh, I-I did leave the gel on a little longer then it said to.
Monica: How much longer?
Ross: A-A day.
Monica: Ross you know that tonight is your date with Hillary?
Ross: I know. Thats why I did it.
Chandler: No, no no no. Youll be fine. (turning to Monica) Hillarys bind, right?
Monica: She will be after tonight.
Chandler: Yeah. (Rachel walks in.)
Ross: Oh, hey, hey Rach, do you notice anything..ahh
Rachel: Yeah. Your teeth? Yes, I saw them from outside. (Sitting down on the couch.) You guys are never going to believe this. But, Phoebe made out with Ralph Lauren.
Chandler: What???
Monica: Oh my god.
Rachel: Yeah I know. She ran into him at my office and they just made out. And the craziest thing is, now my boss likes me because I told her about it and she said it was the best gossip shed heard all year.
Chandler: I am proud of all my friends today.
Monica: My God, Rachel, I cant believe Phoebe made out with Ralph Lauren. Ohh, Im so jealous. (Chandler looks at her.)
Chandler: Hi, Im Chandler.  Look at him. (Pointing to a picture of Ralph on a magazine,.)
Chandler: Oh, I am no women, but that is one tasty dish. (Phoebe walks in.)
Phoebe: Hey. Here. (Hands Chandler a copy of her flyer and sees the picture of Ralph.) Ohh, whos the silver fox?
Rachel: That-that is your make out buddy. Dont you recognize him?  Oh wait. Ohh, Phoebe I love you. Kiss me please.
Phoebe: Thats not Ralph Lauren. Sounds like him though.
Rachel: What?
Phoebe: Yeah, no, Ralph doesnt look anything like that guy. Hes-hes young and hes got long hair and a beard and a hacky sack.
Rachel: Oh My God, Phoebe, thats not Ralph Lauren. Thats Kenny the copy guy.
Phoebe: What?
Rachel: Oh..Go..Oh..and I told my boss that someone made out with Ralph Lauren. If she finds out that I lied to her, she is going to hate me even more. Phoebe!!
Phoebe: Why would the copy guy say he was Ralph Lauren?
Rachel: To get you to make out with him!!!
Phoebe: Ohhh.
[Scene: Rosss Apartment, Ross and Monica are there.]
 Okay, maybe this will make your teeth look less white. (Ross has a big smile.) Nope. Okay, colors that dont work are blue, yellow, green, red, black, white, orange, and purple.
Ross: I dont know what Im going to do. That date starts in like an hour.
Monica: Hey Ross, maybe if your skin was lighter. Your teeth wouldnt look so bright.
Ross: Oh great. So all I need to do is get some new skin. Thank you.
Monica: Im just saying, if we put just a little bit of makeup on you.
Ross: Whoa. Whoa. Whoa. Were not 13 anymore.
Monica: Ross this is the only thing left that has a shot at working.
Ross: But, wont she notice I have makeup on?
Monica: Please. Half the guys out there have makeup on.
Ross: What??
Monica: All right, half the people.
Ross: No. I am not putting on makeup. (Knock at the door. Phoebe enters.)
Phoebe: Hello. Oh good. Ross could you put up some of these flyers for me? (He smiles at her.) OH!! Demon!! Demon!!
[Scene: Chandlers and Monicas apartment, Chandler and Monica are sitting at the kitchen table making potpourri sachets.]
Monica: Now are drawers will smell nice and we didnt waste these pantyhose.
 You-you know what? Im going to go over to Joeys.
Monica: Wait, were supposed to organize the wrapping paper drawer.
Chandler: Yes, but I feel like Ive really gotten in touch with my feminine side enough today. You know. In fact I think were two sachets away from becoming a lesbian couple.
Monica: You know what? This has been kind of a girlie day. Youre right, Im sorry.
Chandler: Nah, Nah, its okay. I feel like I need to be in guy place.
Monica: Yeah. Go over to Joeys. Go over to Joeys and drink some beer and hammer up some drywall.
Chandler: You know when guys hang out they dont just drink some beer and hammer up drywall?
Monica: When girls hang out, we dont have pillow fights in our underwear. (Chandler gets a hurt look on his face.) Im sorry. We do. We do. I dont know why I said that.
[Scene: Joey and Janines apartment, Chandler walks in. Joey and Janine are knitting at the kitchen counter.]
Joey: Hey Chandler. Come on in. Were knitting pot holders.
Chandler: No thanks, Josephine.
[Scene: Rosss apartment, Chandler enters. Ross is putting on makeup.]
Chandler: Hey Ross, I was wondering if Oh my God!! Where are all the men???
[Scene: Elevator at the Ralph Lauren offices, Kims waiting for it. The door opens and Rachel is inside.]
Rachel: Ohh, hi, Kim.
Kim: Hi Rachel.
Rachel: Yeah, remember that thing I told you that happened yesterday? Well it didnt happen.
Kim: You didnt cancel the fabric order from Taiwan?
Rachel: Okay, two things didnt happen. Remember I told you that someone made out with Ralph Lauren in the copy room? Well, it turns out thats not true.
Kim: Thats not true?
Rachel: No.
Kim: Oh thats interesting? Because I checked and only one keycard was used to access the copy machine yesterday during lunch and that keycard belonged to you, Rachel.
Rachel: Oh no, no, no. Oh God, you think I made out with him.
Kim: Listen to me. If you think sleeping with Ralph is going to get you my job. You are sadly mistaken.
Rachel: I-I dont want your job. I-I dont. Ohh this is such a mistake. I did not make out with him. Nobody made out with him. I did not use my keycard yesterday. I dont even know how to use my keycard. (The elevator stops. Ralph steps on.)
Kim: Hi Ralph.
Ralph Lauren:: Hi Kim. (Dead silence until Ralph gets off the elevator.)
Kim: Yeah, nothing happen. You could cut the sexual tension in here with a knife.
[Scene: Hillarys apartmen,. Hillary and Ross are having dinner. He is avoiding opening his mouth.]
Hillary: And after that, what could I do except become a chef.
Ross: Mmm-Hmm.
Hillary: And someday soon, I hope to open my own restaurant.
Ross: Mmm.
 Most guys I go out with, they just talk and talk.
Ross: Mm-Hmm.

Ross: (Chuckling) Hmm-Hmm.
Hillary: Ive probably been talking too much.
Ross: Mmm-Unmm.
Hillary: Come on. I want to know.
Ross: Hmm-Hmm-Hmm. (Putting his hand up to block his mouth.) Okay. I, uh, am from Long Island. I-I came to the city for college. Um, I, um, have a 5 year old son and in my spare time I like to read spy novels. But, but, lets talk more about you. Hmm.
[Scene: Joey and Janines apartment, Joey and Monica are arranging flowers. Chandler walks in.]
Joey: So whats really neat. If you sear the stems of the flowers first in a frying pan, your arrangement will look fresh much longer.
Monica: Oh my God, Joey, that is such a great tip.
Chandler: Monica, could you excuse us for a second? I need to talk to the girl with the flowers.
Monica: Okay. Oh but Joey, come over later because Im going to teach you to make a bird feeder out of just a pine cone and some peanut butter.
Joey: Ohh, I love birds. (Monica leaves. Chandler shuts the door.)
Chandler: What is the matter with you ?!?
Joey: What?
Chandler: Youre arranging flowers! (Pointing to the dish on the table.) You got dead flowers! You got a picture, a picture, of a baby dressed like flowers! This is not Joey!!
Joey: Hey. Hey look I am still Joey, okay.  And that happens to be a picture by a famous artist. Of a famous baby.
Chandler: Youre turning into a women.
Joey: No Im not. Why would you say that? Thats just mean.
Chandler: Now Ive upset you? What did I say?
Joey: Its not what you said. Its the way you said it .Oh My God, Im a women!!!
[Scene: Central Perk, Phoebe and Rachel are there.]
Rachel: Now, she thinks that I made out with him and I did it to get her job.
Phoebe: But why didnt you just tell her the truth.

Phoebe: Well, hey, what if Kenny were the real brains behind the whole company? You know. What if Kenny hired that Ralph Lauren guy to be the pretty front man? Huh, did she ever think of that?
Rachel: You were with Kenny today, werent you?
Phoebe: Just for a second.
Rachel: Ohh, Phoebe, what am I going to do?
Phoebe: Well, the only thing you can do. Sleep with Ralph Lauren.
Rachel: Im not going to sleep with Ralph Lauren. I mean, I could, but I wouldnt.
Phoebe: Ohh, sleep with Kenny.
Rachel: That wouldnt help me.
Phoebe: Ohh, yes it would.
[Scene: Hillarys apartment, Hillary and Ross are finishing up their date.]
Hillary: Ive had a really good time tonight.
Ross: Mmm.
Hillary: You know, I rarely connect with someone this much on the first date.
Ross: (Giggling) Hmm-Hmm-Hmm. (Picking up a piece of bread and covering his mouth.) Me, neither. Ive had a really good time too, you know. (Putting the bread down.)

Ross: (Putting the bread up to his nose.) Ohh, I just like the smell. (Sniffing it.) Mmmm.

Ross: Hmm-Hmm.
Hillary: Would you like to move over to the couch?
Ross: Mmm-Hmm. (Picking up their wine glasses.)
Hillary: Maybe Ill just turn the lights down a little.
Ross: (Covering his mouth with the glass.) How about all the way.
Hillary: Okay. (She goes to turn the lights off and Ross sits on the couch.
Ross: (Looking at the posters.) Wow, cool poster. Or should I say groovy poster? (They sit down on the couch. Ross smiles and the black light fluoresces his teeth.) So, ahh, where were we?
Hillary: Are those your teeth??
Ross: Ohh, you can see them, huh?
Hillary: Yes. Theyre insanely white.
Ross: I-I, did that for you.
Hillary: Whats a matter with you?
Ross: Whats a matter with me? Youve got a black light. Its 1999!
[Scene: Elevator at the Ralph Lauren Offices, Rachel gets in . Kim is there.]
Rachel: Kim, hi.
Kim: Hi Rachel. Ohh, Ive been meaning to ask you. Have you seen the new Ralph Lauren sheets? Ohh, what am I thinking. Of course you have.
Rachel: Okay..Okay.. Look. Im sorry that I lied to you before. You were right. Ralph and I were an item but were not anymore.
Kim: Oh, really?
Rachel: (Faking crying.) Yeah, he dumped me. He said, "Rachel, I cant do this. Even though you are a very, very, very beautiful women. I cant do this. Im married and Im sorry." And then I dont know why but he said, "and you will never get promoted. Especially not above Kim, who is an integral cog in the Ralph Lauren machine."
Kim: You expect me to believe..(Doors open, Ralph steps in.) Hi Ralph.
Ralph Lauren:: Hi Kim. (Dead silence again until he gets off.)
Kim: Oh my God.   Then it is true.
Rachel: Of course its true and it hurts so bad.
Kim: Ohh honey come here. (Hugging Rachel.) Ohh it will be ok. Weve all been there.
Rachel: You and Ralph?
Kim: Kenny the copyboy.
Ending Credits
[Scene: Joey and Janines apartment, Joey paces the floor waiting for Janine. She walks in.]
Janine: Hey.
Joey: Hey, uhh, I need to talk to you.
Janine: Whats the matter? Are you upset?
Joey: Im sorry but weve got to get rid of all this girlie stuff in here. I, uh, I got to be a man! Okay. The living room has to remain a guy place, okay? Thats just the way it has to be.
Janine: Well, if thats what you want. Ill just put it all in my room.
Joey: Great Great and thanks for being so understanding.  (She starts to collect all the girlie stuff up.) You could, uh, put the picture of the famous baby in my room. I mean, if you want to.
Janine: Okay.
Joey: And, uhh, maybe the watering can there.
Janine: Sure.
Joey: And a couple of these little tiny boxes.
Janine: Joey? Do you want me to put it all in your room?
Joey: (Smiling) Okay.
End


Need a question answered? Not to worry! Your queries are important to us and we would like to help answer any questions you may have. If you would like to reach a care representative about a recent visit or with any feedback about our products on the menu, email us or give us a call.


Overdose
BLACK&WHITE
COLORS
Snoh Aalegra - Whoa
Kina - Can We Kiss Forever?
Best vintage stores in Lisbon
For your aesthetic enjoyment!


Let's find a neighborhood just for you!
We'll start with a few basic questions.
| What is your current median household income? | {{userIncome | currency}} |
| How much property value can you afford? | {{userProperty | currency}} |
| How far do you want you dollar to go? (Cost of living index) | {{userLiving}} |
| How much can you afford to spend on rent per month? | {{userRent | currency}} |


Romeo and Juliet
by William Shakespeare
Act 1, Scene 5
Additional Information
- Year Published: 1597
- Language: English
- Country of Origin: United States of America
- Source: Shakespeare, W. Romeo and Juliet New York: Sully and Kleinteich
-
Readability:
- Flesch–Kincaid Level: 11.0
- Word Count: 1,301
- Genre: Tragedy
- Keywords: 16th century literature, british literature, drama, romance, tragedy
- ✎ Cite This
Downloads
SCENE. A hall in Capulet's house.
(Musicians waiting. Enter Servingmen with napkins)
First Servant
Where's Potpan, that he helps not to take away? He
shift a trencher? he scrape a trencher!
Second Servant
When good manners shall lie all in one or two men's
hands and they unwashed too, 'tis a foul thing.
First Servant
Away with the joint-stools, remove the
court-cupboard, look to the plate. Good thou, save
me a piece of marchpane; and, as thou lovest me, let
the porter let in Susan Grindstone and Nell.
Antony, and Potpan!
Second Servant
Ay, boy, ready.
First Servant
You are looked for and called for, asked for and
sought for, in the great chamber.
Second Servant
We cannot be here and there too. Cheerly, boys; be
brisk awhile, and the longer liver take all.
(Enter CAPULET, with JULIET and others of his house, meeting the Guests and Maskers)
CAPULET
Welcome, gentlemen! ladies that have their toes
Unplagued with corns will have a bout with you.
Ah ha, my mistresses! which of you all
Will now deny to dance? she that makes dainty,
She, I'll swear, hath corns; am I come near ye now?
Welcome, gentlemen! I have seen the day
That I have worn a visor and could tell
A whispering tale in a fair lady's ear,
Such as would please: 'tis gone, 'tis gone, 'tis gone:
You are welcome, gentlemen! come, musicians, play.
A hall, a hall! give room! and foot it, girls.
(Music plays, and they dance)
More light, you knaves; and turn the tables up,
And quench the fire, the room is grown too hot.
Ah, sirrah, this unlook'd-for sport comes well.
Nay, sit, nay, sit, good cousin Capulet;
For you and I are past our dancing days:
How long is't now since last yourself and I
Were in a mask?
Second Capulet
By'r lady, thirty years.
CAPULET
What, man! 'tis not so much, 'tis not so much:
'Tis since the nuptials of Lucentio,
Come pentecost as quickly as it will,
Some five and twenty years; and then we mask'd.
Second Capulet
'Tis more, 'tis more, his son is elder, sir;
His son is thirty.
CAPULET
Will you tell me that?
His son was but a ward two years ago.
ROMEO
[To a Servingman] What lady is that, which doth
enrich the hand
Of yonder knight?
Servant
I know not, sir.
ROMEO
O, she doth teach the torches to burn bright!
It seems she hangs upon the cheek of night
Like a rich jewel in an Ethiope's ear;
Beauty too rich for use, for earth too dear!
So shows a snowy dove trooping with crows,
As yonder lady o'er her fellows shows.
The measure done, I'll watch her place of stand,
And, touching hers, make blessed my rude hand.
Did my heart love till now? forswear it, sight!
For I ne'er saw true beauty till this night.
TYBALT
This, by his voice, should be a Montague.
Fetch me my rapier, boy. What dares the slave
Come hither, cover'd with an antic face,
To fleer and scorn at our solemnity?
Now, by the stock and honour of my kin,
To strike him dead, I hold it not a sin.
CAPULET
Why, how now, kinsman! wherefore storm you so?
TYBALT
Uncle, this is a Montague, our foe,
A villain that is hither come in spite,
To scorn at our solemnity this night.
CAPULET
Young Romeo is it?
TYBALT
'Tis he, that villain Romeo.
CAPULET
Content thee, gentle coz, let him alone;
He bears him like a portly gentleman;
And, to say truth, Verona brags of him
To be a virtuous and well-govern'd youth:
I would not for the wealth of all the town
Here in my house do him disparagement:
Therefore be patient, take no note of him:
It is my will, the which if thou respect,
Show a fair presence and put off these frowns,
And ill-beseeming semblance for a feast.
TYBALT
It fits, when such a villain is a guest:
I'll not endure him.
CAPULET
He shall be endured:
What, goodman boy! I say, he shall: go to;
Am I the master here, or you? go to.
You'll not endure him! God shall mend my soul!
You'll make a mutiny among my guests!
You will set cock-a-hoop! you'll be the man!
TYBALT
Why, uncle, 'tis a shame.

This trick may chance to scathe you, I know what:
You must contrary me! marry, 'tis time.
Well said, my hearts!  For shame!
I'll make you quiet. What, cheerly, my hearts!
TYBALT
Patience perforce with wilful choler meeting
Makes my flesh tremble in their different greeting.
I will withdraw: but this intrusion shall
Now seeming sweet convert to bitter gall.
(Exit)
ROMEO
[To JULIET] If I profane with my unworthiest hand
This holy shrine, the gentle fine is this:
My lips, two blushing pilgrims, ready stand
To smooth that rough touch with a tender kiss.
JULIET
Good pilgrim, you do wrong your hand too much,
Which mannerly devotion shows in this;
For saints have hands that pilgrims' hands do touch,
And palm to palm is holy palmers' kiss.
ROMEO
Have not saints lips, and holy palmers too?
JULIET
Ay, pilgrim, lips that they must use in prayer.
ROMEO
O, then, dear saint, let lips do what hands do;
They pray, grant thou, lest faith turn to despair.
JULIET
Saints do not move, though grant for prayers' sake.
ROMEO
Then move not, while my prayer's effect I take.
Thus from my lips, by yours, my sin is purged.
JULIET
Then have my lips the sin that they have took.
ROMEO
Sin from thy lips? O trespass sweetly urged!
Give me my sin again.
JULIET
You kiss by the book.

ROMEO
What is her mother?
Nurse
Marry, bachelor,
Her mother is the lady of the house,
And a good lady, and a wise and virtuous
I nursed her daughter, that you talk'd withal;
I tell you, he that can lay hold of her
Shall have the chinks.
ROMEO
Is she a Capulet?
O dear account! my life is my foe's debt.
BENVOLIO
Away, begone; the sport is at the best.
ROMEO
Ay, so I fear; the more is my unrest.
CAPULET
Nay, gentlemen, prepare not to be gone;
We have a trifling foolish banquet towards.
Is it e'en so? why, then, I thank you all
I thank you, honest gentlemen; good night.
More torches here! Come on then, let's to bed.
Ah, sirrah, by my fay, it waxes late:
I'll to my rest.
(Exeunt all but JULIET and Nurse)
JULIET
Come hither, nurse. What is yond gentleman?
Nurse
The son and heir of old Tiberio.
JULIET
What's he that now is going out of door?
Nurse
Marry, that, I think, be young Petrucio.
JULIET
What's he that follows there, that would not dance?
Nurse
I know not.
JULIET
Go ask his name: if he be married.
My grave is like to be my wedding bed.

JULIET
My only love sprung from my only hate!
Too early seen unknown, and known too late!
Prodigious birth of love it is to me,
That I must love a loathed enemy.
Nurse
What's this? what's this?
JULIET
A rhyme I learn'd even now
Of one I danced withal.
(One calls within 'Juliet.')
Nurse
Anon, anon!
Come, let's away; the strangers all are gone.
(Exeunt)


Introduction
The Halider Edgar API is organized around REST. Our API has predictable resource-oriented URLs, accepts form-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.
The Halider Edgar API is designed to provide read only access to all data within the SEC.gov Edgar system https://www.sec.gov/edgar/searchedgar/accessing-edgar-data.htm
We have language bindings in Shell, Python, R, Julia, and Javascript! You can view code examples in the dark area to the right, and you can switch the programming language of the examples with the tabs in the top right.
Subscribe to Halider Edgar API announce mailing list for updates.
What's a REST API, anyway?
An API is an application programming interface - in short, it’s a set of rules that lets programs talk to each other, exposing data and functionality across the internet in a consistent format.
REST stands for Representational State Transfer. This is an architectural pattern that describes how distributed systems can expose a consistent interface. When people use the term ‘REST API,’ they are generally referring to an API accessed via HTTP protocol at a predefined set of URLs.
These URLs represent various resources - any information or content accessed at that location, which can be returned as JSON, HTML, audio files, or images. Often, resources have one or more methods that can be performed on them over HTTP, like GET, POST, PUT and DELETE.
Twilio, for example, provides many separate REST APIs for sending text messages, making phone calls, looking up phone numbers, managing your accounts, and a whole lot more. In Twilio’s ecosystem, each product is its own API, but you will work with each of them in roughly the same way, whether over HTTP or using Twilio’s helper libraries for several different programming languages.
Authentication
To authorize, use this code:
import requests
ploads = {'X-Api-Key':'yourkey'}
r =requests.get('url',headers=ploads)
# With shell, you can just pass the correct header with each request
curl "api_endpoint_here"
-H "Authorization: yourkey"
fetch('url', {
headers: {
'X-Api-Key':'yourkey'}
})
.then(response => response.json())
.then(data => console.log(data));
>library(httr)
>library(jsonlite)
>res=GET("url", add_headers('x-api-key':'yourkey'))
>rawToChar(res$content)
pkg add JSON
pkg add HTTP
using JSON, HTTP
r = HTTP.request("GET", "url", ["x-api-key" => "yourkey"])
Make sure to replace
yourkey
with your API key.
The Halider Edgar API uses API keys to authenticate requests. Please reach out to<EMAIL_ADDRESS>to request an API key.
Your API keys carry many privileges, so be sure to keep them secure! Do not share your secret API keys in publicly accessible areas such as GitHub, client-side code, and so forth.
Authentication to the API is performed via an HTTP header called 'X-'.
All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.
Authorization: yourkey
API Reference
API Requests
To make a REST API request, you combine the HTTP GET
,POST
, PUT
,PATCH
, or DELETE
method, the URL to the API service, the URI to a resource to query, submit data to, update, or delete, and one or more HTTP request headers.
The URL to the API service is either:
- Sandbox.
https://api.sandbox.paypal.com
- Live.
https://api.paypal.com
Optionally, you can include query parameters on GET
calls to filter, limit the size of, and sort the data in the responses.
Most GET
,POST
, PUT
, and PATCH
calls require a JSON request body.
A basic example in Shell (Make sure you are on the Shell tab to see it):
curl --location --request GET "https://edgar.halider.io/abs" --header "yourkey"
Query Parameters
For most REST GET
calls, you can include one or more query parameters on the request URI to filter, limit the size of, and sort the data in an API response. For filter parameters, see the individual GET
calls.
To limit, or page, and sort the data that is returned in some API responses, use these, or similar, query parameters:
| Parameter | Type | Description |
|---|---|---|
count |
Integer | The number of items to list in the response. |
end_time |
Integer | The end date and time for the range to show in the response, in Internet date and time format. For example, end_time=2016-03-06T11:00:00Z . |
page |
Integer | The page number indicating which set of items will be returned in the response. So, the combination of page=1 and page_size=20 returns the first 20 items. The combination of page=2 and page_size=20 returns items 21 through 40. |
page_size |
Integer | The number of items to return in the response. |
total_count_required |
Boolean | Indicates whether to show the total count in the response. |
sort_by |
String | Sorts the documents in the response by a specified value, such as the create time or update time. |
sort_order |
String | Sorts the items in the response in ascending or descending order. |
start_id |
String | The ID of the starting resource in the response. When results are paged, you can use the next_id value as the start_id to continue with the next set of results. |
start_index |
Integer | The start index of the documents to list. Typically, you use the start_index to jump to a specific position in the resource history based on its PLACEHOLDER. For example, to start at the second item in a list of results, specify ?start_index=2 . |
start_time |
String | The start date and time for the range to show in the response, in Internet date and time format. For example, start_time=2016-03-06T11:00:00Z . |
For example, this shell code calls for a subcatagory (CMBS) within a larger catagory (ABS) within the database.
curl --location --request GET "https:edgar.halider.io/abs/cmbs" --header "yourkey"
HTTP Request Headers
The commonly used headers are:
Accept
The response format, which is required for operations with a response body. The syntax is:
Accept: application/format
Where format
is JSON
.
Authorization
See the section of the same name above for information on Authorization and how to be authorized in Edgar API.
Content-Type
The request format, which is required for operations with a request body. The syntax is:
Content-Type: application/format
Where format
is JSON
.
API Responses
Edgar API calls return HTTP status codes. Some API calls also return JSON response bodies that include information about the resource including one or more contextual HATEOAS links. Use these links to request more information about and construct an API flow that is relative to a specific request. Each REST API request returns an HTTP status code.
HTTP status codes
For successful requests, Edgar returns HTTP 2XX
status codes.
For failed requests, Edgar returns HTTP 4XX
or 5XX
status codes.
Edgar API returns these HTTP status codes:
| Code | Meaning |
|---|---|
200 OK |
The request suceeded. |
201 Created |
A POST method successfully created a resource. If the resource was already created by a previous execution of the same method, for example, the server returns the HTTP 200 OK status code. |
202 Accepted |
The server accepted the request and will execute it later. |
204 No Content |
The server successfully executed the method but returns no response body. |
400 Bad Request |
INVALID_REQUEST . Request is not well-formed, syntactically incorrect, or violates schema. |
401 Unauthorized |
AUTHENTICATION_FAILURE . Authentication failed due to invalid authentication credentials. |
403 Forbidden |
NOT_AUTHORIZED . Authorization failed due to insufficient permissions. |
404 Not Found |
RESOURCE_NOT_FOUND . The specified resource does not exist. |
405 Method Not Allowed |
METHOD_NOT_SUPPORTED . The server does not implement the requested HTTP method. |
406 Not Acceptable |
MEDIA_TYPE_NOT_ACCEPTABLE . The server does not implement the media type that would be acceptable to the client. |
415 Unsupported Media |
UNSUPPORTED_MEDIA_TYPE . The server does not support the request payload’s media type. |
422 Unprocessable Entity |
UNPROCESSABLE_ENTITY . The API cannot complete the requested action, or the request action is semantically incorrect or fails business validation. |
429 Unprocessable Entity |
RATE_LIMIT_REACHED . Too many requests. Blocked due to rate limiting. |
500 Internal Server Error |
INTERNAL_SERVER_ERROR . An internal server error has occurred. |
503 Service Unavailable |
SERVICE_UNAVAILABLE . Service Unavailable. |
For all errors except Identity errors, Edgar returns an error response body that includes additional error details in this format.
Validation Errors
For validation errors, Edgar returns the HTTP 400 Bad Request
status code.
To prevent validation errors, ensure that parameters are the right type and conform to constraints:
| Parameter | Description |
|---|---|
| Character | Names, addresses, and phone numbers have maximum character limits. |
| Numeric | PLACEHOLDER |
| Monetary | Use the right currency. |
| Format | Properly format the JSON sent in the body of your request. For example, no trailing commas. |
Authorization Errors
For authorization errors, Edgar returns the HTTP 401 Unauthorized
status code. See OAuth 2.0 authorization protocol.
Access token-related issues often cause authorization errors.
Ensure that the access token is valid and present and not expired.
Filing
Ticker Start
One of the filing starts is ticker, which gives a list of companies stock tickers and their ciks.
curl --location --request GET "https:edgar.halider.io/ticker" --header "yourkey"
import requests
ploads = {'X-Api-Key':'yourkey'}
r =requests.get('https://edgar.halider.io/ticker',headers=ploads)
fetch('https://edgar.halider.io/ticker', {
headers: {
'X-Api-Key':'yourkey'}
})
.then(response => response.json())
.then(data => console.log(data));
>library(httr)
>library(jsonlite)
>res=GET("https://edgar.halider.io/ticker",add_headers('x-api-key':'yourkey'))
>rawToChar(res$content)
pkg add JSON
pkg add HTTP
using JSON, HTTP
r = HTTP.request("GET", "https://edgar.halider.io/ticker", ["x-api-key" => "yourkey"])
Example Response.
{
"ticker": "a",
"cik": 1090872
}
| Parameter | Description |
|---|---|
| ticker | 1. |
| filing | 2. |
JSON Attributes:
| Attributes | Description |
|---|---|
| ticker | 1. |
| cik | 2. |
Ticker
Select a specific company by their stock ticker.
curl --location --request GET "https:edgar.halider.io/ticker/stockTicker" --header "yourkey"
import requests
ploads = {'X-Api-Key':'yourkey'}
r =requests.get('https://edgar.halider.io/ticker/stockTicker',headers=ploads)
fetch('https://edgar.halider.io/ticker/stockTicker', {
headers: {
'X-Api-Key':'yourkey'}
})
.then(response => response.json())
.then(data => console.log(data));
>library(httr)
>library(jsonlite)
>res=GET("https://edgar.halider.io/ticker/stockTicker",add_headers('x-api-key':'yourkey'))
>rawToChar(res$content)
pkg add JSON
pkg add HTTP
using JSON, HTTP
r = HTTP.request("GET", "https://edgar.halider.io/ticker/stockTicker", ["x-api-key" => "yourkey"])
Example Response
{
"dateFiled": "2020-08-05",
"type": "4",
"filing": "0001127602-20-022974"
}
JSON Attributes:
| Attributes | Description |
|---|---|
| dateFiled | 3. |
| type | 4. |
| filing | 5. |
| companyNames | 6. |
| filingCounts | 7. |
| Supported Document Types |
|---|
| 10-K |
| 8-K |
| 10-D |
| ABS-EE |
| ABS-15G |
See here for the complete list.
Filing
Select a specific filing from the previously specified company.
curl --location --request GET "https:edgar.halider.io/ticker/stockTicker/filing" --header "yourkey"
import requests
ploads = {'X-Api-Key':'yourkey'}
r =requests.get('https://edgar.halider.io/ticker/stockTicker/filing',headers=ploads)
fetch('https://edgar.halider.io/ticker/stockTicker/filing', {
headers: {
'X-Api-Key':'yourkey'}
})
.then(response => response.json())
.then(data => console.log(data));
>library(httr)
>library(jsonlite)
>res=GET("https://edgar.halider.io/ticker/stockTicker/filing",add_headers('x-api-key':'yourkey'))
>rawToChar(res$content)
pkg add JSON
pkg add HTTP
using JSON, HTTP
r = HTTP.request("GET", "https://edgar.halider.io/ticker/stockTicker/filing", ["x-api-key" => "yourkey"])
Example Response
{
"filingDate": "20200805",
"filingNumber": "0001127602-20-022974",
"filingFile": "0001127602-20-022974.nc",
"documents": [
{
"documentType": "4",
"documentName": "form4.xml",
"documentDescription": "PRIMARY DOCUMENT",
"documentText": "\n<XML>\n<?xml version=\"1.0\"?>\n<ownershipDocument>\n\n <schemaVersion>X0306</schemaVersion>\n\n <documentType>4</documentType>\n\n <periodOfReport>2020-08-03</periodOfReport>\n\n.......
etc.
}
]
}
JSON Attributes:
| Attributes | Description |
|---|---|
| filingDate | 43. |
| filingNumber | 44. |
| filingFile | 45. |
| documents | 46. |
| documentType | 47. |
| documentName | 48. |
| documentDescription | 49. |
| documentText | 50. |
File
Select a specific file from the previously specified filing.
curl --location --request GET "https:edgar.halider.io/ticker/stockTicker/filing/file" --header "yourkey"
import requests
ploads = {'X-Api-Key':'yourkey'}
r =requests.get('https://edgar.halider.io/ticker/stockTicker/filing/file',headers=ploads)
fetch('https://edgar.halider.io/ticker/stockTicker/filing/file', {
headers: {
'X-Api-Key':'yourkey'}
})
.then(response => response.json())
.then(data => console.log(data));
pkg add JSON
pkg add HTTP
using JSON, HTTP
r = HTTP.request("GET", "https://edgar.halider.io/ticker/stockTicker/filing/file", ["x-api-key" => "yourkey"])
Example XML Response
<XML>
<?xml version="1.0"?>
<ownershipDocument>
<schemaVersion>X0306</schemaVersion>
<documentType>4</documentType>
<periodOfReport>2020-08-03</periodOfReport>
<issuer>
<issuerCik>0001090872</issuerCik>
<issuerName>AGILENT TECHNOLOGIES, INC.</issuerName>
<issuerTradingSymbol>A</issuerTradingSymbol>
</issuer>
etc.
Regular Start
The main path for filing.
curl --location --request GET "https:edgar.halider.io/filing/filingDate/filingNumber" --header "yourkey"
import requests
ploads = {'X-Api-Key':'yourkey'}
r =requests.get('https://edgar.halider.io/filing/filingDate/filingNumber',headers=ploads)
fetch('https://edgar.halider.io/filing/filingDate/filingNumber', {
headers: {
'X-Api-Key':'yourkey'}
})
.then(response => response.json())
.then(data => console.log(data));
>library(httr)
>library(jsonlite)
>res=GET("https://edgar.halider.io/filing/filingDate/filingNumber",add_headers('x-api-key':'yourkey'))
>rawToChar(res$content)
pkg add JSON
pkg add HTTP
using JSON, HTTP
r = HTTP.request("GET", "https://edgar.halider.io/filing/filingDate/filingNumber", ["x-api-key" => "yourkey"])
Example response.
{
"filingDate": "20200630",
"filingNumber": "0001539497-20-000910",
"filingFile": "0001539497-20-000910.nc",
"documents": [
{
"documentType": "ABS-15G",
"documentName": "n2235_x1-abs15g.htm",
"documentDescription": "FROM ABS-15G"
},
{
"documentType": "EX-99.1",
"documentName": "exh99-1.htm",
"documentDescription": "REPORT OF INDEPENDENT ACCOUNTANTS ON APPLYING AGREED-UPON PROCEDURES, DATED JUNE 30, 2020"
},
{
"documentType": "GRAPHIC",
"documentName": "image_001.jpg",
"documentDescription": "GRAPHIC"
},
{
"documentType": "GRAPHIC",
"documentName": "image_002.jpg",
"documentDescription": "GRAPHIC"
}
]
}
Unlike ABS and CMBS, Filing starts and requires two parameters to use it. It also has a third parameter that can be used optionally.
| Parameter | Description |
|---|---|
| filingDate | 1. |
| filingNumber | 2. |
| documentType | 3. |
JSON Attributes:
| Attributes | Description |
|---|---|
| filingDate | 1. |
| filingNumber | 2. |
| filingFile | 3. |
| documents | 4. |
| documentName | 5. |
| documentDescription | 6. |
documentType
curl --location --request GET "https:edgar.halider.io/filing/filingDate/filingNumber/documentType" --header "yourkey"
import requests
ploads = {'X-Api-Key':'yourkey'}
r =requests.get('https://edgar.halider.io/filing/filingDate/filingNumber/documentType',headers=ploads)
print(r.text)
fetch('https://edgar.halider.io/filing/filingDate/filingNumber/documentType', {
headers: {
'X-Api-Key':'yourkey'}
})
.then(response => response.txt())
.then(data => console.log(data));
pkg add JSON
pkg add HTTP
using JSON, HTTP
r = HTTP.request("GET", "https://edgar.halider.io/filing/filingDate/filingNumber/documentType", ["x-api-key" => "yourkey"])
Start of an HTML Example.

<TITLE></TITLE>

UNITED STATES

SECURITIES AND EXCHANGE COMMISSION

etc.
Here is an example of the extra option for Filings.
ABS
Start
An asset-backed security (ABS) is a security whose income payments and hence value are derived from and collateralized (or "backed") by a specified pool of underlying assets.
The pool of assets is typically a group of small and illiquid assets which are unable to be sold individually. Pooling the assets into financial instruments allows them to be sold to general investors, a process called securitization, and allows the risk of investing in the underlying assets to be diversified because each security will represent a fraction of the total value of the diverse pool of underlying assets. The pools of underlying assets can include common payments from credit cards, auto loans, and mortgage loans, to esoteric cash flows from aircraft leases, royalty payments, or movie revenues.
This endpoint returns the asset classes available from data filed in Edgar SEC.gov as part of the Reg AB Schedule AL asset-level disclosures. More information here: https://www.sec.gov/oit/announcement/regabii-asset-level-requirements-compliance.html
curl --location --request GET "https://edgar.halider.io/abs" --header "yourkey"
import requests
ploads = {'X-Api-Key':'yourkey'}
r =requests.get('https://edgar.halider.io/abs',headers=ploads)
fetch('https://edgar.halider.io/abs', {
headers: {
'X-Api-Key':'yourkey'}
})
.then(response => response.json())
.then(data => console.log(data));
>library(httr)
>library(jsonlite)
>res=GET("https://edgar.halider.io/abs",add_headers('x-api-key':'yourkey'))
>rawToChar(res$content)
pkg add JSON
pkg add HTTP
using JSON, HTTP
r = HTTP.request("GET", "https://edgar.halider.io/abs", ["x-api-key" => "yourkey"])
This returns a list of options, choose one and put it into the URL to proceed.
The list of options, Null isn't a real option.
{
"types": [
null,
"autoLoan",
"cmbs",
"autoLease"
]
}
Options in ABS
assetType lets you select either CMBS, autoLoan, or autoLease, and the Id's let you specify within those catagories.
| Parameter | Description and Placement |
|---|---|
| assetType | Either the cmbs, autoLoan, or autoLease sections of abs, 1. |
| dealId | Either the ID, CIK, or Name of a specific deal, 2. |
| assetId | A specific File within the deal, 3. |
CMBS
curl --location --request GET "https:edgar.halider.io/abs/cmbs" --header "yourkey"
import requests
ploads = {'X-Api-Key':'yourkey'}
r =requests.get('https://edgar.halider.io/abs/cmbs',headers=ploads)
fetch('https://edgar.halider.io/abs/cmbs', {
headers: {
'X-Api-Key':'yourkey'}
})
.then(response => response.json())
.then(data => console.log(data));
>library(httr)
>library(jsonlite)
>res=GET("https://edgar.halider.io/abs/cmbs",add_headers('x-api-key':'yourkey'))
>rawToChar(res$content)
pkg add JSON
pkg add HTTP
using JSON, HTTP
r = HTTP.request("GET", "https://edgar.halider.io/abs/cmbs", ["x-api-key" => "yourkey"])
This returns the document with all of the CMBS on it.
An Example.
{
"id": "1",
"cik": 1710798,
"assetType": "cmbs",
"names": [
"Wells Fargo Commercial Mortgage Trust 2017-C39"
]
}
CMBS Options
Options availible while under abs/cmbs
JSON Attributes:
| Attribute | Description |
|---|---|
| Id | Edgar form submission identifier. |
| Date | Edgar CIK code. The Central Index Key (CIK) is used on the SEC's computer systems to identify corporations and individual people who have filed disclosure with the SEC. |
| assetType | CMBS. |
| Extracted | One or more names for the CMBS deal. |
curl --location --request GET "https:edgar.halider.io/abs/cmbs/dealId" --header "yourkey"
import requests
ploads = {'X-Api-Key':'yourkey'}
r =requests.get('https://edgar.halider.io/abs/cmbs/dealId',headers=ploads)
fetch('https://edgar.halider.io/abs/cmbs/dealId', {
headers: {
'X-Api-Key':'yourkey'}
})
.then(response => response.json())
.then(data => console.log(data));
>library(httr)
>library(jsonlite)
>res=GET("https://edgar.halider.io/abs/cmbs/dealId",add_headers('x-api-key':'yourkey'))
>rawToChar(res$content)
pkg add JSON
pkg add HTTP
using JSON, HTTP
r = HTTP.request("GET", "https://edgar.halider.io/abs/cmbs/dealId", ["x-api-key" => "yourkey"])
A sample response.
{
"id": "2110",
"date": "2019-07-31",
"type": "ABS-EE",
"extracted": true
}
etc.
curl --location --request GET "https:edgar.halider.io/abs/cmbs/dealId/file" --header "yourkey"
import requests
ploads = {'X-Api-Key':'yourkey'}
r =requests.get('https://edgar.halider.io/abs/cmbs/dealId/file',headers=ploads)
fetch('https://edgar.halider.io/abs/cmbs/dealId/file', {
headers: {
'X-Api-Key':'yourkey'}
})
.then(response => response.json())
.then(data => console.log(data));
>library(httr)
>library(jsonlite)
>res=GET("https://edgar.halider.io/abs/cmbs/dealId/file",add_headers('x-api-key':'yourkey'))
>rawToChar(res$content)
pkg add JSON
pkg add HTTP
using JSON, HTTP
r = HTTP.request("GET", "https://edgar.halider.io/abs/cmbs/dealId/file", ["x-api-key" => "yourkey"])
JSON Attributes:
| Attribute | Description &nsbp; &nsbp; &nsbp; &nsbp; &nsbp; &nsbp; &nsbp; &nsbp; &nsbp; &nsbp; &nsbp; &nsbp; |
|---|---|
| assetId | A |
| dealId | Y |
| dealCik | L |
| dealNames | M |
| assetType | A |
| data | O |
| assetTypeNumber | Used to Indentify the source of the Asset number. For all securitizations this should be "Prospectus Loan ID" |
| assetNumber | The identification number(s) assigned to each asset in the annex of the prospectus supplement. For a partial defeasance where the loan is bifurcated, the Prospectus Loan ID for the original/non-defeased loan is appended with an "A", and the new/defeased loan is appended with a "B". If there is no Prospectus Loan ID assigned, for example in a single asset deal, the default should be 1. In Schedule AL, this field is named Asset Number. |
| reportingPeriodBeginningDate | Reporting period begin date for the first reporting cycle is equal to Closing Date, otherwise it should be populated as the prior month Determination Date plus 1 day. SS reporting period should follow same as MS. |
| reportingPeriodEndDate | Reporting period end date should be the determination date. SS reporting period should follow same as MS. |
| originatorName | Name of entity ultimately responsible for the representations and warranties of the loan contributed. For Schedule AL reporting, this entity shall be the originator. |
| originationDate | Date the loan was originated as presented in the Annex. |
| originalLoanAmount | The amount of the loan at origination. For split loans/notes, this amount is the Original Note Amount for the split loan/note piece. |
| originalTermLoanNumber | The number of months from the loan origination date until the Maturity Date of the loan. |
| maturityDate | Date final scheduled payment is due per the loan documents. Not the same as anticipated repayment date related to hyper-amortization loans. If the loan has been defeased and the loan agreement provided for, or the servicer has consented to, prepayment prior to maturity in connection with a defeasance, this represents the date the Trust can expect full repayment. The borrower may have the right to pre-pay the defeased loan prior to the final scheduled payment date in accordance with the loan documents. |
| originalInterestRatePercentage | The rate at which the note earned interest, as of the origination date. |
| interestRateSecuritizationPercentage | The annual gross rate used to calculate interest for the loan at the closing date of the transaction. |
| interestAccrualMethodCode | Code indicating the 'number of days' convention used to calculate interest. See Interest Accrual Method Legend. |
| originalInterestRateTypeCode | Code indicating the type of interest payable by a borrower on the securitized portion of a loan. See Interest Rate Type Legend. |
| originalInterestOnlyTermNumber | Number of months the loan is interest only, calculated from the origination date to the end of the IO term. |
| firstLoanPaymentDueDate | Date on which the borrower must pay the first full interest and/or principal payment due on the mortgage in accordance with the loan documents. |
| underwritingIndicator | Y or N field, to be provided by issuer, defined as whether the loan or asset met the criteria for the first level of solicitation, credit-granting, or underwriting criteria used to originate the pool asset. |
| lienPositionSecuritizationCode | A lien is a claim placed on property to make sure debt is repaid. Lien Position at Contribution is the position as of the closing date of the transaction. The lien position determines the repayment of debt upon asset resolution. First lien paid first, second lien paid second, etc. See Lien Position at Contribution Legend. |
| loanStructureCode | Code indicating type of loan structure including the seniority of participated mortgage loan components. Code relates to loan within the securitization. See Loan Structure Legend. |
| paymentTypeCode | Code indicating the type or method of payment for a loan. See Payment Type Legend. |
| periodicPrincipalAndInterest PaymentSecuritizationAmount |
The total amount of principal and interest due on the loan in effect as of the closing date of the transaction. Amount should equal the sum of the Scheduled Principal Amount (L24) and Scheduled Interest Amount (L23) as of the initial determination date. |
| scheduledPrincipalBalanceSecuritizationAmount | The scheduled principal balance of the mortgage loan at the closing date for the transaction, as disclosed in the final prospectus. For split loans/notes, this amount is the scheduled beginning balance for the split loan/note piece at the closing date for the transaction. |
| paymentFrequencyCode | Code representing the frequency mortgage loan payments are required to be made. See Payment Frequency Legend. |
| NumberPropertiesSecuritization | The number of properties which serve as mortgage collateral as of the closing date of the transaction. |
| NumberProperties | The current number of properties which serve as mortgage collateral for the loan. This number should not include defeasance collateral, therefore if a loan is fully defeased, field should be populated with zero. |
| interestOnlyIndicator | Flag indicating if, at contribution, this is a loan for which scheduled interest only is payable, whether for a temporary basis or until the full loan balance is due. For field A28, populate True of False. |
| balloonIndicator | Indicator = Y if the loan documents require a lump-sum payment of principal at maturity. If not required = N. If data not yet available = empty. Field A29 should populate either True or False. |
| prepaymentLockOutEndDate | The effective date after which the lender allows prepayment of a loan. |
| property | |
| propertyName | The name of the property which serves as mortgage collateral. If the property has been defeased, populate with "Defeased". For loan level reporting, if multiple properties, print "Various". For substituted properties, populate with the new property name. |
| propertyAddress | The address of the property which serves as mortgage collateral. If the property has been defeased, then leave field empty. For loan level reporting, if multiple properties, then print "Various". For substituted properties, populate with the new property information. |
| propertyCity | The city name where the property or properties which serve as mortgage collateral are located. If the property has been defeased, then leave field empty. For loan level reporting, if multiple properties have the same city then print the city, otherwise print "Various". If missing information, print "Incomplete". For substituted properties, populate with the new property information. |
| propertyState | The 2 character abbreviated code representing the state in which the property or properties which serve as mortgage collateral are located. If the property has been defeased, then leave field empty. For loan level reporting, if multiple properties have the same state then print the state's 2 character abbreviated code, otherwise print "XX" for various. If missing information, print "ZZ". For substituted properties, populate with the new property state code. |
| propertyZip | The zip (or postal) code for the property or properties which serve as mortgage collateral. If the property has been defeased, then leave field empty. For loan level reporting, if multiple properties have the same zip code then print the zip code, otherwise print "Various". If missing information, print "Incomplete". For substituted properties, populate with the new property zip code. |
| propertyCounty | The county in which the property or properties which serve as mortgage collateral are located. If the property has been defeased, then leave field empty. For loan level reporting, if multiple properties have the same county then print the county, otherwise print "Various". If missing information, print "Incomplete". For substituted properties, populate with the new property information. |
| propertyTypeCode | Code assigned to a property from the Property Type Legend based on how the property is used. If the property has been defeased, populated with "SE". For loan level reporting, if multiple property types, print "XX". If missing information, print "ZZ". For Schedule AL purposes code "SF" should be reported as "MF". For substituted properties, populate with the new property type. |
| netRentableSquareFeetNumber | The current net rentable square feet area of a property as of the determination date. This field should be utilized for Office, Retail, Industrial, Warehouse, and Mixed Use properties. If there are multiple properties, and all the same Property Type, sum the values. If not all the same Property Type or if any are missing, then leave field empty. |
| netRentableSquareFeetSecuritizationNumber | The net rentable square feet area of a property as determined at the time the property is contributed to the mortgage pool as collateral. This field should be utilized for Office, Retail, Industrial, Warehouse, and Mixed Use properties. For multiple properties, if all the same Property Type, sum the values. If missing any, leave empty. |
| yearBuiltNumber | The year the property was built. For multiple properties, if all the same print the year, else leave empty. |
| yearLastRenovated | Year that last major renovation/new construction was completed on the property. |
| valuationSecuritizationAmount | The valuation amount of the property as of the Valuation Date at Contribution. For the Loan Setup File, if multiple properties, sum the values. If missing any, leave empty. |
| valuationSourceSecuritizationCode | Code used to identify the source of property valuation at securitization (as reported in Value Amount at Contribution S67, P49). See Most Recent Valuation Source Legend. If multiple properties and all the same then print the type. If missing any, then leave empty. |
| valuationSecuritizationDate | The date the Valuation Amount at Contribution was determined. For the Loan Setup File, if multiple properties and missing any or not the same date, leave empty. |
| physicalOccupancySecuritizationPercentage | The percentage of rentable space occupied by tenants as of the closing date of the transaction. Should be derived from a rent roll or other document indicating occupancy. If multiple properties, populate with the weighted average based on square feet or units. If missing any, leave empty at the loan level. |
| mostRecentPhysicalOccupancyPercentage | The most recent available percentage of rentable space occupied. Should be derived from a rent roll or other document indicating occupancy consistent with most recent documentation. If property is vacant, input zero. If multiple properties, populate with the weighted average based on square feet or units. If missing any, leave empty at the loan level. |
| propertyStatusCode | Code showing status of property. See Property Status Legend. |
| defeasanceOptionStartDate | Date when defeasance option becomes available. If mortgagor opts to repay principal amount, mortgagee may elect to have mortgagor replace loan cash flow by purchasing securities which are equivalent to the scheduled cash flow of the loan. This serves as a disincentive to early prepayment of the loan by the mortgagor. Defeasance is allowed only if in accordance with the loan documents. |
| DefeasedStatusCode | A code indicating if a loan has or is able to be defeased. See Defeasance Status Legend. When a loan becomes “Full Defeasance”, at a minimum populate Property Status (P18) with 3, populate Property Type (P13) with SE, populate Property Name with "Defeased", and preceding year, second preceding year and most recent operating performance related data fields, lease and tenant related data fields and property condition related data fields should be left empty. For Schedule AL map code P to code IP. |
| largestTenant | At a property level the name of the tenant that leases the largest square feet of the property based on the most recent annual lease rollover review. If tenant is not occupying the space but is still paying rent, the servicer may print "Dark" after tenant name. If tenant has sub-leased space, may print "Sub-leased/name" after tenant name. For Office, Retail, Industrial, Other or Mixed Use property types as applicable. |
| squareFeetLargestTenantNumber | Total square feet leased by the largest tenant in field P37. Based on the most recent annual lease roll over review. |
| leaseExpirationLargestTenantDate | Lease term expiration. Companion field for P37 & P38. |
| secondLargestTenant | At a property level the name of the tenant that leases the second largest square feet of the property based on the most recent annual lease rollover review. If tenant is not occupying the space but is still paying rent, the servicer may print "Dark" after tenant name. If tenant has sub-leased space, may print "Sub-leased/name" after tenant name. For Office, Retail, Industrial, Other or Mixed Use property types as applicable. |
| squareFeetSecondLargestTenantNumber | Total square feet leased by the 2nd largest tenant in P39. Based on the most recent annual lease roll over review. |
| leaseExpirationSecondLargestTenantDate | Lease term expiration. Companion field for P39 & P40. |
| thirdLargestTenant | At a property level the name of the tenant that leases the third largest square feet of the property based on the most recent annual lease rollover review. If tenant is not occupying the space but is still paying rent, the servicer may print "Dark" after tenant name. If tenant has sub-leased space, may print "Sub-leased/name" after tenant name. For Office, Retail, Industrial, Other or Mixed Use property types as applicable. |
| squareFeetThirdLargestTenantNumber | Total square feet leased by the 3rd largest tenant in P41. Based on the most recent annual lease roll over review. |
| leaseExpirationThirdLargestTenantDate | Lease term expiration. Companion field for P41 & P42. |
| financialsSecuritizationDate | The date of the underwritten operating statements for the property. If available, use most recent ending financial date provided, else should equal transaction closing date. If multiple properties and all the same, print the date. If missing any, leave empty. |
| mostRecentFinancialsStartDate | The first day of the period for the most recent, hard copy operating statement (e.g. year to date or trailing 12 months) after the preceding fiscal year end statement. (Note - the beginning and end date of the operating statement from the borrower used to annualize should be reported.) If multiple properties and all the same start and end date, print start date. If missing any, leave empty. |
| mostRecentFinancialsEndDate | The last day of the period for the most recent, hard copy operating statement (e.g. year to date or trailing 12 months) after the preceding fiscal year end statement. (Note - the beginning and end date of the operating statement from the borrower used to annualize should be reported.) If multiple properties and all the same start and end date, print the end date. If missing any, leave empty. |
| revenueSecuritizationAmount | The sum of all income produced by the property or properties securing a loan, based on the final prospectus or as provided by depositor at closing of transaction. It is often derived by calculating the maximum rental income achievable at market rates, net of adjustments that reflects vacancies, credit loss and other such deductions. The Effective Gross income also includes other income, such as parking and laundry fee, typically calculated based on historical collection adjusted to reflect actual occupancy or use. If missing data or if all received/consolidated, use the DSCR Indicator Legend rule. |
| mostRecentRevenueAmount | Total revenues for the most recent operating statement reported by the servicer (e.g. year to date, year to date annualized, or trailing 12 months, but all normalized) after the preceding fiscal year end statement. If multiple properties exist and the related data is comparable (same financial indicators and same financial start and end dates), total the revenue of the underlying properties. If multiple properties exist and comparable data is not available for all properties or if received/consolidated, populate using the DSCR Indicator Legend rule. |
| operatingExpensesSecuritizationAmount | The sum of all expenses incurred in performing normal business operation for the property or properties securing a loan, based on the final prospectus or as provided by the issuer or depositor at closing date of the transaction. Such expenses typically include employee salaries, utilities, maintenance and repairs, marketing, insurance and real estate taxes, but exclude capital expenditures, tenant improvements, and leasing commissions. It may also include expenses for the previous 12 months as well as adjustments to reflect inflation, occupancy changes or other major changes. If missing date or if all received/consolidated, use DSCR Indicator Legend Rule. |
| operatingExpensesAmount | Total operating expenses for the most recent operating statement reported by the servicer (e.g. year to date, year to date annualized, or trailing 12 months, but all normalized) after the preceding fiscal year end statement. Included are real estate taxes, insurance, management fees, utilities and repairs and maintenance. Excluded are capital expenditures, tenant improvements, and leasing commissions. If multiple properties exist and the related data is comparable (same financial indicators and same financial start and end dates), total the operating expenses of the underlying properties. If multiple properties exist and comparable data is not available for all properties or if received/consolidated, populate using the DSCR Indicator Legend rule. |
| netOperatingIncomeSecuritizationAmount | Net Operating Income (NOI) is the total underwritten revenues less total underwritten operating expenses prior to application of mortgage payments and capital items for all properties per the final prospectus or as provided by the issuer or depositor at the closing date of the transaction. If multiple properties, sum the values. If missing data or if all received/consolidated, use the DSCR Indicator Legend rule. |
| mostRecentNetOperatingIncomeAmount | Total revenues less total operating expenses before capital items and debt service per the most recent operating statement reported by the servicer (e.g. year to date, year to date annualized, or trailing 12 months, but all normalized) after the preceding fiscal year end statement. If multiple properties exist and the related data is comparable (same financial indicators and same financial start and end dates), total the NOI of the underlying properties. If multiple properties exist and comparable data is not available for all properties or if received/consolidated, populate using the DSCR Indicator Legend rule. |
| netCashFlowFlowSecuritizationAmount | Net Cash Flow (NCF) is Effective Gross Income (EGI) less Total Operating Expenses (TOE) and Capital Expenditures, and prior to the application of Debt Service payments, per the final prospectus or as provided by the issuer or depositor as of the closing date of the transaction. If missing data or if all received/consolidated, populate using DSCR Indicator Legend. |
| mostRecentNetCashFlowAmount | Total revenues less total operating expenses and capital items but before debt service per the most recent operating statement reported by the servicer (e.g. year to date, year to date annualized, or trailing 12 months, but all normalized) after the preceding fiscal year end statement. If multiple properties exist and the related data is comparable (same financial indicators and same financial start and end dates), total the NCF of the underlying properties. If multiple properties exist and comparable data is not available for all properties or if received/consolidated, populate using the DSCR Indicator Legend rule. |
| netOperatingIncomeNetCashFlow SecuritizationCode |
Guess Code indicating the method used to calculate net operating income or net cash flow at contribution. See NOI/NCF Indicator Legend rule. If multiple properties are all the same, print the value. If missing any or the values are not the same, leave empty. |
| netOperatingIncomeNetCashFlowCode | Code indicating the method used to calculate net operating income or net cash flow. See NOI/NCF Indicator Legend rule. If multiple properties and all the same, print the value. If missing any or the values are not the same, leave empty. |
| mostRecentDebtServiceAmount | Total scheduled or actual payments that cover the same number of months as the most recent financial operating statement reported by the servicer (e.g. year to date, year to date annualized, or trailing 12 months, but all normalized) after the preceding fiscal year end statement. Payments include scheduled or actual principal and or interest as required by the loan documents. Calculate using the current allocated percentage (P20) to get the allocated amount for each property. If multiple properties covering the same period (same financial statement as of start and end dates), sum the value. If missing any or all received/consolidated then populate using the DSCR Indicator Legend rule. |
| debtServiceCoverageNet OperatingIncomeSecuritizationPercentage |
A ratio of underwritten net operating income (NOI) to debt service as shown in the final prospectus or as provided by the issuer or depositor at the closing date of the transaction. If multiple properties, populate using the DSCR Indicator Legend rule. |
| mostRecentDebtServiceCoverageNet OperatingIncomePercentage |
A ratio of net operating income (NOI) to debt service for the most recent operating statement reported by the servicer (e.g. year to date, year to date annualized, or trailing 12 months, but all normalized) after the preceding fiscal year end statement. If multiple properties exist and the related data is comparable (same financial indicators and same financial start and end dates), calculate the DSCR of the underlying properties. If multiple properties exist and comparable data is not available for all properties or if received/consolidated, populate using the DSCR Indicator Legend rule. |
| debtServiceCoverageNetCashFlow SecuritizationPercentage |
The Debt Service Coverage Ratio (DSCR) is calculated by dividing the Net Cash Flow (NCF) by the required Debt Service payments. A DSCR of 1.0x implies that the property generates just enough cash flow to service the debt. A higher DSCR means the property is generating more cash than needed to cover the debt service payments and therefore represents less risk of payment default. The higher the DSCR, the more Term Risk is mitigated. If multiple properties, populate using DSCR Indicator Legend. |
| mostRecentDebtService CoverageNetCashFlowpercentage |
A ratio of net cash flow (NCF) to debt service for the most recent financial operating statement reported by the servicer (e.g. year to date, year to date annualized, or trailing 12 months, but all normalized) after the preceding fiscal year end statement. If multiple properties exist and the related data is comparable (same financial indicators and same financial start and end dates), calculate the DSCR of the underlying properties. If multiple properties exist and comparable data is not available for all properties or if received/consolidated, populate using the DSCR Indicator Legend rule. |
| debtServiceCoverageSecuritizationCode | Code used to explain how DSCR was calculated when there are multiple properties. Specific codes apply. See DSCR Indicator Legend. |
| mostRecentDebtServiceCoverageCode | Code describing how DSCR is calculated for the most recent financial operating statement, as reported by the servicer, after the preceding fiscal year end statement. See DSCR Indicator Legend. |
| reportPeriodBeginningSchedule LoanBalanceAmount |
The scheduled or stated principal balance for a loan (defined in the servicing agreement) as of the beginning of the reporting period, which is usually the preceding determination date. This balance should be equal to the Current Ending Scheduled Balance in the previous reporting period. For full and partial defeasances, the balance should reflect the appropriate allocation of the balance of the non-defeased and defeased loans based on the provisions of the loan documents. |
| totalScheduledPrincipalInterestDueAmount | The total amount of principal and interest due on the loan in the month corresponding to the current distribution date and should equal the sum of fields L23 and L24. |
| reportPeriodInterestRatePercentage | Annualized gross rate used to calculate the current period Scheduled Interest Amount. For split loans/notes, this is the gross rate used to calculate the Scheduled Interest Amount for the split loan/note included in the related trust. |
| servicerTrusteeFeeRatePercentage | Sum of annual fee rates payable to the servicer(s)) and trustee (should not include any fees represented in fields L13 through L17 of the Loan Periodic Update File or fields S47 through S51 of the Loan Setup File in order to avoid double counting). |
| scheduledInterestAmount | The amount of gross interest scheduled to be paid to the trust for the current distribution period based on the trust's beginning scheduled principal balance and a full month's interest accrual amount. This amount may not be the same as the amount of gross interest scheduled to be paid by the borrower for the related payment date. If loan has been deemed non-recoverable, then populate with zero. |
| reportPeriodEndActualBalanceAmount | Outstanding actual balance of the loan as of the determination date. This figure represents the legal remaining outstanding principal balance related to the borrower’s mortgage note. For partial defeasances, the balance should reflect the appropriate allocation of the balance prior to the defeasance between the non-defeased and defeased loans based on the provisions of the loan documents. |
| reportPeriodEndScheduledLoanBalanceAmount | The scheduled or stated principal balance for a loan (defined in the servicing agreement) as of the end of the reporting period, which is usually the current determination date. This balance is usually determined by considering scheduled and unscheduled principal payments received during the collection period relating to the Distribution Date. A realized loss will also have an impact on this balance during the period it is reported. For split note/loans, this should include the balance in the related trust. For full and partial defeasances, the balance should reflect the appropriate allocation of the balance prior to the defeasance between the non-defeased and defeased loans based on the provisions of the loan documents. |
| paidThroughDate | Date the loan's scheduled principal and interest is paid through as of the determination date. One frequency less than the due date for the loan's next scheduled payment. For split loans/notes, this is the date the scheduled principal and interest for the split loan/note piece has been paid through. |
| servicingAdvanceMethodCode | Indicate the code that describes the manner in which principal and/or interest are advanced by the servicer. See Servicer Advance Methodology Legend. Amounts are assumed Net, otherwise use 99. |
| primaryServicerName | The entity responsible for collection of the mortgage payments and accounting for the securitization as well as for remitting all collections and reporting all data to the Trustee/Certificate Administrator so that it can be forwarded to the certificateholders. This entity also protects the interests of CMBS certificateholders by actively administering the mortgage loans and collateral that are the security for the bondholders’ investment. See Master Servicer Legend. For Schedule AL, the master servicer is used to populate the Primary Servicer field. |
A sample response.
{
"assetTypeNumber": "Prospectus Loan ID",
"assetNumber": 1,
"reportingPeriodBeginningDate": "02-12-2019",
"reportingPeriodEndDate": "03-11-2019",
"originatorName": "Barclays Bank PLC",
"originationDate": "05-31-2017",
"originalLoanAmount": 70000000,
"originalTermLoanNumber": 120,
"maturityDate": "06-06-2027",
"originalInterestRatePercentage": 0.036514,
"interestRateSecuritizationPercentage": 0.036514,
"interestAccrualMethodCode": 3,
"originalInterestRateTypeCode": 1,
"originalInterestOnlyTermNumber": 120,
"firstLoanPaymentDueDate": "07-06-2017",
"underwritingIndicator": true,
"lienPositionSecuritizationCode": 1,
"loanStructureCode": "PP",
"paymentTypeCode": 3,
"periodicPrincipalAndInterestPaymentSecuritizationAmount": 220098.28,
"scheduledPrincipalBalanceSecuritizationAmount": 70000000,
"paymentFrequencyCode": 1,
"NumberPropertiesSecuritization": 1,
"NumberProperties": 1,
"interestOnlyIndicator": true,
"balloonIndicator": true,
"prepaymentLockOutEndDate": "02-05-2027",
"property": {
"propertyName": "225 & 233 PARK AVENUE SOUTH",
"propertyAddress": "225 & 233 PARK AVENUE SOUTH",
"propertyCity": "New York",
"propertyState": "NY",
"propertyZip": 10003,
"propertyCounty": "New York",
"propertyTypeCode": "OF",
"netRentableSquareFeetNumber": 675756,
"netRentableSquareFeetSecuritizationNumber": 675756,
"yearBuiltNumber": 1909,
"yearLastRenovated": 2017,
"valuationSecuritizationAmount": 750000000,
"valuationSourceSecuritizationCode": "MAI",
"valuationSecuritizationDate": "04-01-2017",
"physicalOccupancySecuritizationPercentage": 0.98,
"mostRecentPhysicalOccupancyPercentage": 0.98,
"propertyStatusCode": 6,
"defeasanceOptionStartDate": "09-06-2019",
"DefeasedStatusCode": "N",
"largestTenant": "Facebook",
"squareFeetLargestTenantNumber": 266460,
"leaseExpirationLargestTenantDate": "10-31-2027",
"secondLargestTenant": "BuzzFeed Inc.",
"squareFeetSecondLargestTenantNumber": 194123,
"leaseExpirationSecondLargestTenantDate": "05-31-2026",
"thirdLargestTenant": "STV Incorportated",
"squareFeetThirdLargestTenantNumber": 133200,
"leaseExpirationThirdLargestTenantDate": "05-31-2024",
"financialsSecuritizationDate": "03-31-2017",
"mostRecentFinancialsStartDate": "01-01-2018",
"mostRecentFinancialsEndDate": "09-30-2018",
"revenueSecuritizationAmount": 48106941.84,
"mostRecentRevenueAmount": 30296697,
"operatingExpensesSecuritizationAmount": 18601103.14,
"operatingExpensesAmount": 16697070,
"netOperatingIncomeSecuritizationAmount": 29505838.7,
"mostRecentNetOperatingIncomeAmount": 13599627,
"netCashFlowFlowSecuritizationAmount": 28439582.54,
"mostRecentNetCashFlowAmount": 12799935,
"netOperatingIncomeNetCashFlowSecuritizationCode": "UW",
"netOperatingIncomeNetCashFlowCode": "CREFC",
"mostRecentDebtServiceAmount": 6530934,
"debtServiceCoverageNetOperatingIncomeSecuritizationPercentage": 3.39,
"mostRecentDebtServiceCoverageNetOperatingIncomePercentage": 2.0823,
"debtServiceCoverageNetCashFlowSecuritizationPercentage": 3.27,
"mostRecentDebtServiceCoverageNetCashFlowpercentage": 1.9598,
"debtServiceCoverageSecuritizationCode": "C",
"mostRecentDebtServiceCoverageCode": "F"
},
"reportPeriodBeginningScheduleLoanBalanceAmount": 70000000,
"totalScheduledPrincipalInterestDueAmount": 198798.44,
"reportPeriodInterestRatePercentage": 0.036514,
"servicerTrusteeFeeRatePercentage": 0.0001285,
"scheduledInterestAmount": 198798.44,
"reportPeriodEndActualBalanceAmount": 70000000,
"reportPeriodEndScheduledLoanBalanceAmount": 70000000,
"paidThroughDate": "03-06-2019",
"servicingAdvanceMethodCode": 1,
"primaryServicerName": "Wells Fargo Bank, NA"
},
autoLoan
This shows all autoLoan documents.
JSON Attributes:
| Attribute | Description |
|---|---|
| deals | 1. |
| id | 2. |
| cik | 3. |
| assetType | 4. |
| names | 5. |
curl --location --request GET "https:edgar.halider.io/abs/autoLoan" --header "yourkey"
import requests
ploads = {'X-Api-Key':'yourkey'}
r =requests.get('https://edgar.halider.io/abs/autoLoan',headers=ploads)
fetch('https://edgar.halider.io/abs/autoLoan', {
headers: {
'X-Api-Key':'yourkey'}
})
.then(response => response.json())
.then(data => console.log(data));
>library(httr)
>library(jsonlite)
>res=GET("https://edgar.halider.io/abs/autoLoan",add_headers('x-api-key':'yourkey'))
>rawToChar(res$content)
pkg add JSON
pkg add HTTP
using JSON, HTTP
r = HTTP.request("GET", "https://edgar.halider.io/abs/autoLoan", ["x-api-key" => "yourkey"])
A sample response.
{
"id": "291",
"cik": 1131131,
"assetType": "autoLoan",
"names": [
"TOYOTA AUTO FINANCE RECEIVABLES LLC"
]
}
autoLease
This shows all autoLease documents, very similar to autoLoan.
JSON attributes:
| Attribute | Description |
|---|---|
| deals | 1. |
| id | 2. |
| cik | 3. |
| assetType | 4. |
| names | 5. |
curl --location --request GET "https:edgar.halider.io/abs/autoLease" --header "yourkey"
import requests
ploads = {'X-Api-Key':'yourkey'}
r =requests.get('https://edgar.halider.io/abs/autoLease',headers=ploads)
fetch('https://edgar.halider.io/abs/autoLease', {
headers: {
'X-Api-Key':'yourkey'}
})
.then(response => response.json())
.then(data => console.log(data));
>library(httr)
>library(jsonlite)
>res=GET("https://edgar.halider.io/abs/autoLease",add_headers('x-api-key':'yourkey'))
>rawToChar(res$content)
pkg add JSON
pkg add HTTP
using JSON, HTTP
r = HTTP.request("GET", "https://edgar.halider.io/abs/autoLease", ["x-api-key" => "yourkey"])
A sample response.
{
"id": "17",
"cik": 1771786,
"assetType": "autoLease",
"names": [
"GM Financial Automobile Leasing Trust 2019-2"
]
}
CMBS
Start
curl --location --request GET "https:edgar.halider.io/cmbs" --header "yourkey"
import requests
ploads = {'X-Api-Key':'yourkey'}
r =requests.get('https://edgar.halider.io/cmbs',headers=ploads)
fetch('https://edgar.halider.io/cmbs', {
headers: {
'X-Api-Key':'yourkey'}
})
.then(response => response.json())
.then(data => console.log(data));
>library(httr)
>library(jsonlite)
>res=GET("https://edgar.halider.io/cmbs",add_headers('x-api-key':'yourkey'))
>rawToChar(res$content)
pkg add JSON
pkg add HTTP
using JSON, HTTP
r = HTTP.request("GET", "https://edgar.halider.io/cmbs", ["x-api-key" => "yourkey"])
This returns all CMBS documents.
JSON Attributes:
| Attributes | Description |
|---|---|
| deals | 1. |
| name | 2. |
A sample response.
{
"name": "BMARK 2018-B2"
}
Options
Similar to the other CMBS above, there are several options within CMBS.
| Parameters | Description and Placement |
|---|---|
| dealName | Name of a specific deal, 1. |
| file | 2. |
| fileType | 3. |
JSON Attributes:
| Attributes | Description |
|---|---|
| dealname | 1. |
| cik | 2. |
| companyName | 3. |
| filing | 4. |
| filenameFull | 5. |
| dateFiled | 6. |
| dateFiledString | 7. |
| createdAt | 8. |
| createdBy | 9. |
curl --location --request GET "https:edgar.halider.io/cmbs/dealName" --header "yourkey"
import requests
ploads = {'X-Api-Key':'yourkey'}
r =requests.get('https://edgar.halider.io/cmbs/dealName',headers=ploads)
fetch('https://edgar.halider.io/cmbs/dealName', {
headers: {
'X-Api-Key':'yourkey'}
})
.then(response => response.json())
.then(data => console.log(data));
>library(httr)
>library(jsonlite)
>res=GET("https://edgar.halider.io/cmbs/dealName",add_headers('x-api-key':'yourkey'))
>rawToChar(res$content)
pkg add JSON
pkg add HTTP
using JSON, HTTP
r = HTTP.request("GET", "https://edgar.halider.io/cmbs/dealName", ["x-api-key" => "yourkey"])
Example Response.
{
"dealName": "BMARK 2018-B2",
"cik": 1728339,
"companyName": "BENCHMARK 2018-B2 Mortgage Trust",
"filing": "0001539497-18-000154",
"filenameFull": "edgar/data/1728339/0001539497-18-000154.txt",
"dateFiled": "2018-02-06",
"dateFiledString": "20180206",
"createdAt": "2018-11-24T03:03:53.706Z",
"createdBy": "edgarmaster"
}
Sample Code
This is an example of plugging in variables into the URL to get further into what you specifically want. It is in Python so you will have to switch to that tab to see it.
import json
import requests
Docs = input("Document Type? ")
Tick = input("Ticker? ")
Url = 'https://edgar.halider.io/ticker/' + (Tick)
ploads = {'X-Api-Key':'yourkey'}
r =requests.get(Url,headers=ploads)
json_object = json.loads(r.text)
print(json.dumps(json_object, indent=2))
Url2 = 'https://edgar.halider.io/ticker/' + (Tick) + '/0001144370-03-000002/' + (Docs)
ploads = {'X-Api-Key':'yourkey'}
r =requests.get(Url2,headers=ploads)
print(r.text)
Which Outputs all of these:
{
"dateFiled": "2013-06-03",
"type": "S-8",
"filing": "0001090872-13-000014"
},
And the beginning of an HTML document specificed by the second URL

<TITLE>
</TITLE>

SEC Form 4

FORM 4

[ ] Check this box if no longer
subject to Section 16. Form 4 or Form
5 obligations may continue.
See Instruction 1(b).

(Print or Type Responses)

etc. a


‘No evidence' that banning junk food adverts before 9pm will work
There is not enough evidence that a Government ban on junk food adverts before 9pm to tackle obesity would work, according to a committee of peers.
The Department of Health and Social Care announced in March that high fat, salt and sugar products could be banished from TV screens before a watershed to reduce childhood obesity.
But a Lord committee said proposals to bring in a 9pm cut-off could damage revenues despite a lack of proof that it could help children.
We are concerned that such a blanket ban could undermine the funding model of commercial broadcasting in the UK without delivering significant benefits to children’s healthHouse of Lords Communications and Digital Committee
A report published by the House of Lords Communications and Digital Committee said: “We do not think that there is sufficient evidence that the proposed ban on high in fat, salt and sugar advertising before the 9pm watershed would significantly reduce childhood obesity.
“We are concerned that such a blanket ban could undermine the funding model of commercial broadcasting in the UK without delivering significant benefits to children’s health.
“A ban might also be counterproductive if manufacturers divert advertising spending to fund price promotions.”
Plans for the new watershed, put out for public consultation in March, have been criticised in the committee report on the impact of Netflix and other streaming giants on public service broadcasters.
It has been argued that advertising is vital for commercial public broadcasters to compete.
A Government spokesman said: “As part of the Government’s strategy to tackle childhood obesity, we have consulted on further advertising restrictions for sugary and fatty products on TV and online.
“We will respond to that consultation in due course.”


My wall of things I love about you
- I love the way your smile looks and how bright it is.
- I love how special you make me feel.
- I love how comfortable I can be around you
- I love how you listen to my interests, sometimes I feel lonely because no one is willing to lend an ear to my rants and you're always there <3
- It feels like everything will be ok in the end because of you.
- You make all this hard work feel worth it.
- I don't think anyone has ever understood me more than you do.
- I love how I feel in your arms and when you play with my hair.
- I love how you carry me in genshin.
- I love how every day you become a better person.
- I love how much I love you.


Rocket Elevators Residential
Leading the world, keeping it personal. We are the world’s leading maker of people-moving products, driven by the desire to innovate and rooted in a unique 44-year history. We’re proud of our dedication to personal service and solutions shaped by individual needs.
Creating industry-defining elevators that change the way people move is our passion.We’ve always innovated. Our latest systems are living proof.
With Rocket Elevators, your house will be equipped with a new elevator for your existing or brand new house.


Depending on the caret location, Dart Analysis Server suggests different source code changes that may be useful in the current context.